Re: [lng-odp] [PATCH 1/5] Add Jhash and CRC functions
On Oct 8, 2015 10:55 PM, "HePeng" <xnhp0...@icloud.com> wrote: > > We should first added a generic hash API to api-next, and then provide crc and jhash implementations? > > I am not clear about how hash functions can be added into ODP. Should we first present a proposal ? Yes, send a proposal if you have one. A lot of APIs have been initially created as a patch that just contains the new definitions and the doxygen documentation for them. When there is agreement on the api the implimentation and tests have followed. Bringing it up in the Tuesday calls can move it faster with live discussion. > > In fact, jhash, cuckoo hash and fbk hash tables are part of the patches we are preparing for the algorithmic APIs I proposed before. > > See the thread in the maillist > > https://lists.linaro.org/pipermail/lng-odp/2015-August/014665.html > > > >> 在 2015年10月8日,下午3:44,Savolainen, Petri (Nokia - FI/Espoo) < petri.savolai...@nokia.com> 写道: >> >> >> >> From: lng-odp [mailto:lng-odp-boun...@lists.linaro.org] On Behalf Of EXT Ola Liljedahl >> Sent: Wednesday, October 07, 2015 6:12 PM >> To: HePeng >> Cc: 杨馥榕; LNG ODP Mailman List >> Subject: Re: [lng-odp] [PATCH 1/5] Add Jhash and CRC functions >> >> On 7 October 2015 at 16:36, HePeng <xnhp0...@icloud.com> wrote: >>> >>> >>>> >>>> 在 2015年10月7日,下午9:05,Ola Liljedahl <ola.liljed...@linaro.org> 写道: >>>> >>>> We did some talking about this on some ODP architecture call but I don't remember the outcome. >>>> >>>> ODP started out as a networking HW abstraction and does include some CPU abstractions (e.g. atomics). So e.g. CRC support definitively fits into this scheme and could be added to the public API. A function that specifically provides jhash does not fit in IMO as I don't think any HW implements jhash. A generic hash function (with jhash as the default SW-implementation) can be seen as a HW abstraction. The alternative is to put jhash support as an ODP helper (as the patch does). >>>> >>> >>> >>> So you mean that we should split the whole patch into two parts, one is for public APIs, the other is for SW jhash? >> >> This is my suggestion but I want to hear Petri's view on this. >> >> I think it makes sense to add CRC as a proper ODP API. It could be first just a synchronous function call (crypto API style - async completion event option could follow if needed). There could be couple of functions: one for user defined polynomial, and another ones for mostly used polynomials. For example: >> >> odp/include/hash.h >> >> // Calculate CRC using the given polynomial >> uint32_t odp_hash_crc(const void *data, uint32_t data_len, uint32_t init_val, uint32_t polynomial) >> >> // Calculate CRC32 >> uint32_t odp_hash_crc32(const void *data, uint32_t data_len, uint32_t init_val); >> >> // Calculate CRC32C >> uint32_t odp_hash_crc32c(const void *data, uint32_t data_len, uint32_t init_val); >> >> -Petri >> >> >> > > > > ___ > lng-odp mailing list > lng-odp@lists.linaro.org > https://lists.linaro.org/mailman/listinfo/lng-odp > ___ lng-odp mailing list lng-odp@lists.linaro.org https://lists.linaro.org/mailman/listinfo/lng-odp
Re: [lng-odp] [PATCH 1/5] Add Jhash and CRC functions
From: lng-odp [mailto:lng-odp-boun...@lists.linaro.org] On Behalf Of EXT Ola Liljedahl Sent: Wednesday, October 07, 2015 6:12 PM To: HePeng Cc: 杨馥榕; LNG ODP Mailman List Subject: Re: [lng-odp] [PATCH 1/5] Add Jhash and CRC functions On 7 October 2015 at 16:36, HePeng <xnhp0...@icloud.com<mailto:xnhp0...@icloud.com>> wrote: 在 2015年10月7日,下午9:05,Ola Liljedahl <ola.liljed...@linaro.org<mailto:ola.liljed...@linaro.org>> 写道: We did some talking about this on some ODP architecture call but I don't remember the outcome. ODP started out as a networking HW abstraction and does include some CPU abstractions (e.g. atomics). So e.g. CRC support definitively fits into this scheme and could be added to the public API. A function that specifically provides jhash does not fit in IMO as I don't think any HW implements jhash. A generic hash function (with jhash as the default SW-implementation) can be seen as a HW abstraction. The alternative is to put jhash support as an ODP helper (as the patch does). So you mean that we should split the whole patch into two parts, one is for public APIs, the other is for SW jhash? This is my suggestion but I want to hear Petri's view on this. I think it makes sense to add CRC as a proper ODP API. It could be first just a synchronous function call (crypto API style - async completion event option could follow if needed). There could be couple of functions: one for user defined polynomial, and another ones for mostly used polynomials. For example: odp/include/hash.h // Calculate CRC using the given polynomial uint32_t odp_hash_crc(const void *data, uint32_t data_len, uint32_t init_val, uint32_t polynomial) // Calculate CRC32 uint32_t odp_hash_crc32(const void *data, uint32_t data_len, uint32_t init_val); // Calculate CRC32C uint32_t odp_hash_crc32c(const void *data, uint32_t data_len, uint32_t init_val); -Petri ___ lng-odp mailing list lng-odp@lists.linaro.org https://lists.linaro.org/mailman/listinfo/lng-odp
Re: [lng-odp] [PATCH 1/5] Add Jhash and CRC functions
We should first added a generic hash API to api-next, and then provide crc and jhash implementations? I am not clear about how hash functions can be added into ODP. Should we first present a proposal ? In fact, jhash, cuckoo hash and fbk hash tables are part of the patches we are preparing for the algorithmic APIs I proposed before. See the thread in the maillist https://lists.linaro.org/pipermail/lng-odp/2015-August/014665.html > 在 2015年10月8日,下午3:44,Savolainen, Petri (Nokia - FI/Espoo) > <petri.savolai...@nokia.com> 写道: > > > > From: lng-odp [mailto:lng-odp-boun...@lists.linaro.org > <mailto:lng-odp-boun...@lists.linaro.org>] On Behalf Of EXT Ola Liljedahl > Sent: Wednesday, October 07, 2015 6:12 PM > To: HePeng > Cc: 杨馥榕; LNG ODP Mailman List > Subject: Re: [lng-odp] [PATCH 1/5] Add Jhash and CRC functions > > On 7 October 2015 at 16:36, HePeng <xnhp0...@icloud.com > <mailto:xnhp0...@icloud.com>> wrote: > > 在 2015年10月7日,下午9:05,Ola Liljedahl <ola.liljed...@linaro.org > <mailto:ola.liljed...@linaro.org>> 写道: > > We did some talking about this on some ODP architecture call but I don't > remember the outcome. > > ODP started out as a networking HW abstraction and does include some CPU > abstractions (e.g. atomics). So e.g. CRC support definitively fits into this > scheme and could be added to the public API. A function that specifically > provides jhash does not fit in IMO as I don't think any HW implements jhash. > A generic hash function (with jhash as the default SW-implementation) can be > seen as a HW abstraction. The alternative is to put jhash support as an ODP > helper (as the patch does). > > > So you mean that we should split the whole patch into two parts, one is for > public APIs, the other is for SW jhash? > This is my suggestion but I want to hear Petri's view on this. > > I think it makes sense to add CRC as a proper ODP API. It could be first > just a synchronous function call (crypto API style - async completion event > option could follow if needed). There could be couple of functions: one for > user defined polynomial, and another ones for mostly used polynomials. For > example: > > odp/include/hash.h > > // Calculate CRC using the given polynomial > uint32_t odp_hash_crc(const void *data, uint32_t data_len, uint32_t init_val, > uint32_t polynomial) > > // Calculate CRC32 > uint32_t odp_hash_crc32(const void *data, uint32_t data_len, uint32_t > init_val); > > // Calculate CRC32C > uint32_t odp_hash_crc32c(const void *data, uint32_t data_len, uint32_t > init_val); > > -Petri > > > ___ lng-odp mailing list lng-odp@lists.linaro.org https://lists.linaro.org/mailman/listinfo/lng-odp
Re: [lng-odp] [PATCH 1/5] Add Jhash and CRC functions
We did some talking about this on some ODP architecture call but I don't remember the outcome. ODP started out as a networking HW abstraction and does include some CPU abstractions (e.g. atomics). So e.g. CRC support definitively fits into this scheme and could be added to the public API. A function that specifically provides jhash does not fit in IMO as I don't think any HW implements jhash. A generic hash function (with jhash as the default SW-implementation) can be seen as a HW abstraction. The alternative is to put jhash support as an ODP helper (as the patch does). On 27 September 2015 at 16:24, rujiacswrote: > Jhash and CRC are two basic hash functions, and are a part of the hash > library. > Migrated from DPDK's hash library, and: > -- remove its dependence on DPDK library, > -- remove architecture-specific extensions. > > Signed-off-by: rujiacs > --- > helper/include/odp/helper/hash_crc.h | 426 > + > helper/include/odp/helper/hash_jhash.h | 416 > > 2 files changed, 842 insertions(+) > create mode 100644 helper/include/odp/helper/hash_crc.h > create mode 100644 helper/include/odp/helper/hash_jhash.h > > diff --git a/helper/include/odp/helper/hash_crc.h > b/helper/include/odp/helper/hash_crc.h > new file mode 100644 > index 000..552a39b > --- /dev/null > +++ b/helper/include/odp/helper/hash_crc.h > @@ -0,0 +1,426 @@ > +/*- > + * BSD LICENSE > + * > + * Copyright(c) 2010-2014 Intel Corporation. All rights reserved. > + * 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 Intel Corporation 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. > + */ > + > +/** > +* @file > +* > +* ODP Hash CRC > +*/ > + > +#ifndef ODPH_HASH_CRC_H_ > +#define ODPH_HASH_CRC_H_ > + > +#ifdef __cplusplus > +extern "C" { > +#endif > + > +#include > + > +/* Lookup tables for software implementation of CRC32C */ > +static const uint32_t crc32c_tables[8][256] = {{ > + 0x, 0xF26B8303, 0xE13B70F7, 0x1350F3F4, 0xC79A971F, > 0x35F1141C, 0x26A1E7E8, 0xD4CA64EB, > + 0x8AD958CF, 0x78B2DBCC, 0x6BE22838, 0x9989AB3B, 0x4D43CFD0, > 0xBF284CD3, 0xAC78BF27, 0x5E133C24, > + 0x105EC76F, 0xE235446C, 0xF165B798, 0x030E349B, 0xD7C45070, > 0x25AFD373, 0x36FF2087, 0xC494A384, > + 0x9A879FA0, 0x68EC1CA3, 0x7BBCEF57, 0x89D76C54, 0x5D1D08BF, > 0xAF768BBC, 0xBC267848, 0x4E4DFB4B, > + 0x20BD8EDE, 0xD2D60DDD, 0xC186FE29, 0x33ED7D2A, 0xE72719C1, > 0x154C9AC2, 0x061C6936, 0xF477EA35, > + 0xAA64D611, 0x580F5512, 0x4B5FA6E6, 0xB93425E5, 0x6DFE410E, > 0x9F95C20D, 0x8CC531F9, 0x7EAEB2FA, > + 0x30E349B1, 0xC288CAB2, 0xD1D83946, 0x23B3BA45, 0xF779DEAE, > 0x05125DAD, 0x1642AE59, 0xE4292D5A, > + 0xBA3A117E, 0x4851927D, 0x5B016189, 0xA96AE28A, 0x7DA08661, > 0x8FCB0562, 0x9C9BF696, 0x6EF07595, > + 0x417B1DBC, 0xB3109EBF, 0xA0406D4B, 0x522BEE48, 0x86E18AA3, > 0x748A09A0, 0x67DAFA54, 0x95B17957, > + 0xCBA24573, 0x39C9C670, 0x2A993584, 0xD8F2B687, 0x0C38D26C, > 0xFE53516F, 0xED03A29B, 0x1F682198, > + 0x5125DAD3, 0xA34E59D0, 0xB01EAA24, 0x42752927, 0x96BF4DCC, > 0x64D4CECF, 0x77843D3B, 0x85EFBE38, > + 0xDBFC821C, 0x2997011F, 0x3AC7F2EB, 0xC8AC71E8, 0x1C661503, > 0xEE0D9600, 0xFD5D65F4, 0x0F36E6F7, > + 0x61C69362, 0x93AD1061, 0x80FDE395, 0x72966096, 0xA65C047D, > 0x5437877E, 0x4767748A, 0xB50CF789, > + 0xEB1FCBAD, 0x197448AE,
Re: [lng-odp] [PATCH 1/5] Add Jhash and CRC functions
On 7 October 2015 at 16:36, HePengwrote: > > 在 2015年10月7日,下午9:05,Ola Liljedahl 写道: > > We did some talking about this on some ODP architecture call but I don't > remember the outcome. > > ODP started out as a networking HW abstraction and does include some CPU > abstractions (e.g. atomics). So e.g. CRC support definitively fits into > this scheme and could be added to the public API. A function that > specifically provides jhash does not fit in IMO as I don't think any HW > implements jhash. A generic hash function (with jhash as the default > SW-implementation) can be seen as a HW abstraction. The alternative is to > put jhash support as an ODP helper (as the patch does). > > > So you mean that we should split the whole patch into two parts, one is > for public APIs, the other is for SW jhash? > This is my suggestion but I want to hear Petri's view on this. > > > > > On 27 September 2015 at 16:24, rujiacs wrote: > >> Jhash and CRC are two basic hash functions, and are a part of the hash >> library. >> Migrated from DPDK's hash library, and: >> -- remove its dependence on DPDK library, >> -- remove architecture-specific extensions. >> >> Signed-off-by: rujiacs >> --- >> helper/include/odp/helper/hash_crc.h | 426 >> + >> helper/include/odp/helper/hash_jhash.h | 416 >> >> 2 files changed, 842 insertions(+) >> create mode 100644 helper/include/odp/helper/hash_crc.h >> create mode 100644 helper/include/odp/helper/hash_jhash.h >> >> diff --git a/helper/include/odp/helper/hash_crc.h >> b/helper/include/odp/helper/hash_crc.h >> new file mode 100644 >> index 000..552a39b >> --- /dev/null >> +++ b/helper/include/odp/helper/hash_crc.h >> @@ -0,0 +1,426 @@ >> +/*- >> + * BSD LICENSE >> + * >> + * Copyright(c) 2010-2014 Intel Corporation. All rights reserved. >> + * 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 Intel Corporation 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. >> + */ >> + >> +/** >> +* @file >> +* >> +* ODP Hash CRC >> +*/ >> + >> +#ifndef ODPH_HASH_CRC_H_ >> +#define ODPH_HASH_CRC_H_ >> + >> +#ifdef __cplusplus >> +extern "C" { >> +#endif >> + >> +#include >> + >> +/* Lookup tables for software implementation of CRC32C */ >> +static const uint32_t crc32c_tables[8][256] = {{ >> + 0x, 0xF26B8303, 0xE13B70F7, 0x1350F3F4, 0xC79A971F, >> 0x35F1141C, 0x26A1E7E8, 0xD4CA64EB, >> + 0x8AD958CF, 0x78B2DBCC, 0x6BE22838, 0x9989AB3B, 0x4D43CFD0, >> 0xBF284CD3, 0xAC78BF27, 0x5E133C24, >> + 0x105EC76F, 0xE235446C, 0xF165B798, 0x030E349B, 0xD7C45070, >> 0x25AFD373, 0x36FF2087, 0xC494A384, >> + 0x9A879FA0, 0x68EC1CA3, 0x7BBCEF57, 0x89D76C54, 0x5D1D08BF, >> 0xAF768BBC, 0xBC267848, 0x4E4DFB4B, >> + 0x20BD8EDE, 0xD2D60DDD, 0xC186FE29, 0x33ED7D2A, 0xE72719C1, >> 0x154C9AC2, 0x061C6936, 0xF477EA35, >> + 0xAA64D611, 0x580F5512, 0x4B5FA6E6, 0xB93425E5, 0x6DFE410E, >> 0x9F95C20D, 0x8CC531F9, 0x7EAEB2FA, >> + 0x30E349B1, 0xC288CAB2, 0xD1D83946, 0x23B3BA45, 0xF779DEAE, >> 0x05125DAD, 0x1642AE59, 0xE4292D5A, >> + 0xBA3A117E, 0x4851927D, 0x5B016189, 0xA96AE28A, 0x7DA08661, >> 0x8FCB0562, 0x9C9BF696, 0x6EF07595, >> + 0x417B1DBC, 0xB3109EBF, 0xA0406D4B, 0x522BEE48, 0x86E18AA3, >> 0x748A09A0, 0x67DAFA54, 0x95B17957, >> +
[lng-odp] [PATCH 1/5] Add Jhash and CRC functions
Jhash and CRC are two basic hash functions, and are a part of the hash library. Migrated from DPDK's hash library, and: -- remove its dependence on DPDK library, -- remove architecture-specific extensions. Signed-off-by: rujiacs--- helper/include/odp/helper/hash_crc.h | 426 + helper/include/odp/helper/hash_jhash.h | 416 2 files changed, 842 insertions(+) create mode 100644 helper/include/odp/helper/hash_crc.h create mode 100644 helper/include/odp/helper/hash_jhash.h diff --git a/helper/include/odp/helper/hash_crc.h b/helper/include/odp/helper/hash_crc.h new file mode 100644 index 000..552a39b --- /dev/null +++ b/helper/include/odp/helper/hash_crc.h @@ -0,0 +1,426 @@ +/*- + * BSD LICENSE + * + * Copyright(c) 2010-2014 Intel Corporation. All rights reserved. + * 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 Intel Corporation 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. + */ + +/** +* @file +* +* ODP Hash CRC +*/ + +#ifndef ODPH_HASH_CRC_H_ +#define ODPH_HASH_CRC_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* Lookup tables for software implementation of CRC32C */ +static const uint32_t crc32c_tables[8][256] = {{ + 0x, 0xF26B8303, 0xE13B70F7, 0x1350F3F4, 0xC79A971F, 0x35F1141C, 0x26A1E7E8, 0xD4CA64EB, + 0x8AD958CF, 0x78B2DBCC, 0x6BE22838, 0x9989AB3B, 0x4D43CFD0, 0xBF284CD3, 0xAC78BF27, 0x5E133C24, + 0x105EC76F, 0xE235446C, 0xF165B798, 0x030E349B, 0xD7C45070, 0x25AFD373, 0x36FF2087, 0xC494A384, + 0x9A879FA0, 0x68EC1CA3, 0x7BBCEF57, 0x89D76C54, 0x5D1D08BF, 0xAF768BBC, 0xBC267848, 0x4E4DFB4B, + 0x20BD8EDE, 0xD2D60DDD, 0xC186FE29, 0x33ED7D2A, 0xE72719C1, 0x154C9AC2, 0x061C6936, 0xF477EA35, + 0xAA64D611, 0x580F5512, 0x4B5FA6E6, 0xB93425E5, 0x6DFE410E, 0x9F95C20D, 0x8CC531F9, 0x7EAEB2FA, + 0x30E349B1, 0xC288CAB2, 0xD1D83946, 0x23B3BA45, 0xF779DEAE, 0x05125DAD, 0x1642AE59, 0xE4292D5A, + 0xBA3A117E, 0x4851927D, 0x5B016189, 0xA96AE28A, 0x7DA08661, 0x8FCB0562, 0x9C9BF696, 0x6EF07595, + 0x417B1DBC, 0xB3109EBF, 0xA0406D4B, 0x522BEE48, 0x86E18AA3, 0x748A09A0, 0x67DAFA54, 0x95B17957, + 0xCBA24573, 0x39C9C670, 0x2A993584, 0xD8F2B687, 0x0C38D26C, 0xFE53516F, 0xED03A29B, 0x1F682198, + 0x5125DAD3, 0xA34E59D0, 0xB01EAA24, 0x42752927, 0x96BF4DCC, 0x64D4CECF, 0x77843D3B, 0x85EFBE38, + 0xDBFC821C, 0x2997011F, 0x3AC7F2EB, 0xC8AC71E8, 0x1C661503, 0xEE0D9600, 0xFD5D65F4, 0x0F36E6F7, + 0x61C69362, 0x93AD1061, 0x80FDE395, 0x72966096, 0xA65C047D, 0x5437877E, 0x4767748A, 0xB50CF789, + 0xEB1FCBAD, 0x197448AE, 0x0A24BB5A, 0xF84F3859, 0x2C855CB2, 0xDEEEDFB1, 0xCDBE2C45, 0x3FD5AF46, + 0x7198540D, 0x83F3D70E, 0x90A324FA, 0x62C8A7F9, 0xB602C312, 0x44694011, 0x5739B3E5, 0xA55230E6, + 0xFB410CC2, 0x092A8FC1, 0x1A7A7C35, 0xE811FF36, 0x3CDB9BDD, 0xCEB018DE, 0xDDE0EB2A, 0x2F8B6829, + 0x82F63B78, 0x709DB87B, 0x63CD4B8F, 0x91A6C88C, 0x456CAC67, 0xB7072F64, 0xA457DC90, 0x563C5F93, + 0x082F63B7, 0xFA44E0B4, 0xE9141340, 0x1B7F9043, 0xCFB5F4A8, 0x3DDE77AB, 0x2E8E845F, 0xDCE5075C, + 0x92A8FC17, 0x60C37F14, 0x73938CE0, 0x81F80FE3, 0x55326B08, 0xA759E80B, 0xB4091BFF, 0x466298FC, + 0x1871A4D8, 0xEA1A27DB, 0xF94AD42F, 0x0B21572C, 0xDFEB33C7, 0x2D80B0C4, 0x3ED04330, 0xCCBBC033, + 0xA24BB5A6, 0x502036A5, 0x4370C551, 0xB11B4652, 0x65D122B9, 0x97BAA1BA, 0x84EA524E, 0x7681D14D, + 0x2892ED69,