1*993b0882SAndroid Build Coastguard Worker /*
2*993b0882SAndroid Build Coastguard Worker * Copyright (C) 2018 The Android Open Source Project
3*993b0882SAndroid Build Coastguard Worker *
4*993b0882SAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License");
5*993b0882SAndroid Build Coastguard Worker * you may not use this file except in compliance with the License.
6*993b0882SAndroid Build Coastguard Worker * You may obtain a copy of the License at
7*993b0882SAndroid Build Coastguard Worker *
8*993b0882SAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0
9*993b0882SAndroid Build Coastguard Worker *
10*993b0882SAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software
11*993b0882SAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS,
12*993b0882SAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*993b0882SAndroid Build Coastguard Worker * See the License for the specific language governing permissions and
14*993b0882SAndroid Build Coastguard Worker * limitations under the License.
15*993b0882SAndroid Build Coastguard Worker */
16*993b0882SAndroid Build Coastguard Worker
17*993b0882SAndroid Build Coastguard Worker #include "utils/hash/farmhash.h"
18*993b0882SAndroid Build Coastguard Worker
19*993b0882SAndroid Build Coastguard Worker // FARMHASH ASSUMPTIONS: Modify as needed, or use -DFARMHASH_ASSUME_SSE42 etc.
20*993b0882SAndroid Build Coastguard Worker // Note that if you use -DFARMHASH_ASSUME_SSE42 you likely need -msse42
21*993b0882SAndroid Build Coastguard Worker // (or its equivalent for your compiler); if you use -DFARMHASH_ASSUME_AESNI
22*993b0882SAndroid Build Coastguard Worker // you likely need -maes (or its equivalent for your compiler).
23*993b0882SAndroid Build Coastguard Worker
24*993b0882SAndroid Build Coastguard Worker #ifdef FARMHASH_ASSUME_SSE42
25*993b0882SAndroid Build Coastguard Worker #undef FARMHASH_ASSUME_SSE42
26*993b0882SAndroid Build Coastguard Worker #define FARMHASH_ASSUME_SSE42 1
27*993b0882SAndroid Build Coastguard Worker #endif
28*993b0882SAndroid Build Coastguard Worker
29*993b0882SAndroid Build Coastguard Worker #ifdef FARMHASH_ASSUME_AESNI
30*993b0882SAndroid Build Coastguard Worker #undef FARMHASH_ASSUME_AESNI
31*993b0882SAndroid Build Coastguard Worker #define FARMHASH_ASSUME_AESNI 1
32*993b0882SAndroid Build Coastguard Worker #endif
33*993b0882SAndroid Build Coastguard Worker
34*993b0882SAndroid Build Coastguard Worker #if !defined(FARMHASH_CAN_USE_CXX11) && defined(LANG_CXX11)
35*993b0882SAndroid Build Coastguard Worker #define FARMHASH_CAN_USE_CXX11 1
36*993b0882SAndroid Build Coastguard Worker #else
37*993b0882SAndroid Build Coastguard Worker #undef FARMHASH_CAN_USE_CXX11
38*993b0882SAndroid Build Coastguard Worker #define FARMHASH_CAN_USE_CXX11 0
39*993b0882SAndroid Build Coastguard Worker #endif
40*993b0882SAndroid Build Coastguard Worker
41*993b0882SAndroid Build Coastguard Worker // FARMHASH PORTABILITY LAYER: Runtime error if misconfigured
42*993b0882SAndroid Build Coastguard Worker
43*993b0882SAndroid Build Coastguard Worker #ifndef FARMHASH_DIE_IF_MISCONFIGURED
44*993b0882SAndroid Build Coastguard Worker #define FARMHASH_DIE_IF_MISCONFIGURED do { *(char*)(len % 17) = 0; } while (0)
45*993b0882SAndroid Build Coastguard Worker #endif
46*993b0882SAndroid Build Coastguard Worker
47*993b0882SAndroid Build Coastguard Worker // FARMHASH PORTABILITY LAYER: "static inline" or similar
48*993b0882SAndroid Build Coastguard Worker
49*993b0882SAndroid Build Coastguard Worker #ifndef STATIC_INLINE
50*993b0882SAndroid Build Coastguard Worker #define STATIC_INLINE static inline
51*993b0882SAndroid Build Coastguard Worker #endif
52*993b0882SAndroid Build Coastguard Worker
53*993b0882SAndroid Build Coastguard Worker // FARMHASH PORTABILITY LAYER: LIKELY and UNLIKELY
54*993b0882SAndroid Build Coastguard Worker
55*993b0882SAndroid Build Coastguard Worker #if !defined(LIKELY)
56*993b0882SAndroid Build Coastguard Worker #if defined(FARMHASH_OPTIONAL_BUILTIN_EXPECT) && !defined(HAVE_BUILTIN_EXPECT)
57*993b0882SAndroid Build Coastguard Worker #define LIKELY(x) (x)
58*993b0882SAndroid Build Coastguard Worker #else
59*993b0882SAndroid Build Coastguard Worker #define LIKELY(x) (__builtin_expect(!!(x), 1))
60*993b0882SAndroid Build Coastguard Worker #endif
61*993b0882SAndroid Build Coastguard Worker #endif
62*993b0882SAndroid Build Coastguard Worker
63*993b0882SAndroid Build Coastguard Worker #undef UNLIKELY
64*993b0882SAndroid Build Coastguard Worker #define UNLIKELY(x) !LIKELY(!(x))
65*993b0882SAndroid Build Coastguard Worker
66*993b0882SAndroid Build Coastguard Worker // FARMHASH PORTABILITY LAYER: endianness and byteswapping functions
67*993b0882SAndroid Build Coastguard Worker
68*993b0882SAndroid Build Coastguard Worker #ifdef WORDS_BIGENDIAN
69*993b0882SAndroid Build Coastguard Worker #undef FARMHASH_BIG_ENDIAN
70*993b0882SAndroid Build Coastguard Worker #define FARMHASH_BIG_ENDIAN 1
71*993b0882SAndroid Build Coastguard Worker #endif
72*993b0882SAndroid Build Coastguard Worker
73*993b0882SAndroid Build Coastguard Worker #if defined(FARMHASH_LITTLE_ENDIAN) && defined(FARMHASH_BIG_ENDIAN)
74*993b0882SAndroid Build Coastguard Worker #error
75*993b0882SAndroid Build Coastguard Worker #endif
76*993b0882SAndroid Build Coastguard Worker
77*993b0882SAndroid Build Coastguard Worker #if !defined(FARMHASH_LITTLE_ENDIAN) && !defined(FARMHASH_BIG_ENDIAN)
78*993b0882SAndroid Build Coastguard Worker #define FARMHASH_UNKNOWN_ENDIAN 1
79*993b0882SAndroid Build Coastguard Worker #endif
80*993b0882SAndroid Build Coastguard Worker
81*993b0882SAndroid Build Coastguard Worker #if !defined(bswap_32) || !defined(bswap_64)
82*993b0882SAndroid Build Coastguard Worker #undef bswap_32
83*993b0882SAndroid Build Coastguard Worker #undef bswap_64
84*993b0882SAndroid Build Coastguard Worker
85*993b0882SAndroid Build Coastguard Worker #if defined(HAVE_BUILTIN_BSWAP) || defined(__clang__) || \
86*993b0882SAndroid Build Coastguard Worker (defined(__GNUC__) && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 8) || \
87*993b0882SAndroid Build Coastguard Worker __GNUC__ >= 5))
88*993b0882SAndroid Build Coastguard Worker // Easy case for bswap: no header file needed.
89*993b0882SAndroid Build Coastguard Worker #define bswap_32(x) __builtin_bswap32(x)
90*993b0882SAndroid Build Coastguard Worker #define bswap_64(x) __builtin_bswap64(x)
91*993b0882SAndroid Build Coastguard Worker #endif
92*993b0882SAndroid Build Coastguard Worker
93*993b0882SAndroid Build Coastguard Worker #endif
94*993b0882SAndroid Build Coastguard Worker
95*993b0882SAndroid Build Coastguard Worker #if defined(FARMHASH_UNKNOWN_ENDIAN) || !defined(bswap_64)
96*993b0882SAndroid Build Coastguard Worker
97*993b0882SAndroid Build Coastguard Worker #ifdef _MSC_VER
98*993b0882SAndroid Build Coastguard Worker
99*993b0882SAndroid Build Coastguard Worker #undef bswap_32
100*993b0882SAndroid Build Coastguard Worker #undef bswap_64
101*993b0882SAndroid Build Coastguard Worker #define bswap_32(x) _byteswap_ulong(x)
102*993b0882SAndroid Build Coastguard Worker #define bswap_64(x) _byteswap_uint64(x)
103*993b0882SAndroid Build Coastguard Worker
104*993b0882SAndroid Build Coastguard Worker #elif defined(__APPLE__)
105*993b0882SAndroid Build Coastguard Worker
106*993b0882SAndroid Build Coastguard Worker // Mac OS X / Darwin features
107*993b0882SAndroid Build Coastguard Worker #include <libkern/OSByteOrder.h>
108*993b0882SAndroid Build Coastguard Worker #undef bswap_32
109*993b0882SAndroid Build Coastguard Worker #undef bswap_64
110*993b0882SAndroid Build Coastguard Worker #define bswap_32(x) OSSwapInt32(x)
111*993b0882SAndroid Build Coastguard Worker #define bswap_64(x) OSSwapInt64(x)
112*993b0882SAndroid Build Coastguard Worker
113*993b0882SAndroid Build Coastguard Worker #elif defined(__sun) || defined(sun)
114*993b0882SAndroid Build Coastguard Worker
115*993b0882SAndroid Build Coastguard Worker #include <sys/byteorder.h>
116*993b0882SAndroid Build Coastguard Worker #undef bswap_32
117*993b0882SAndroid Build Coastguard Worker #undef bswap_64
118*993b0882SAndroid Build Coastguard Worker #define bswap_32(x) BSWAP_32(x)
119*993b0882SAndroid Build Coastguard Worker #define bswap_64(x) BSWAP_64(x)
120*993b0882SAndroid Build Coastguard Worker
121*993b0882SAndroid Build Coastguard Worker #elif defined(__FreeBSD__)
122*993b0882SAndroid Build Coastguard Worker
123*993b0882SAndroid Build Coastguard Worker #include <sys/endian.h>
124*993b0882SAndroid Build Coastguard Worker #undef bswap_32
125*993b0882SAndroid Build Coastguard Worker #undef bswap_64
126*993b0882SAndroid Build Coastguard Worker #define bswap_32(x) bswap32(x)
127*993b0882SAndroid Build Coastguard Worker #define bswap_64(x) bswap64(x)
128*993b0882SAndroid Build Coastguard Worker
129*993b0882SAndroid Build Coastguard Worker #elif defined(__OpenBSD__)
130*993b0882SAndroid Build Coastguard Worker
131*993b0882SAndroid Build Coastguard Worker #include <sys/types.h>
132*993b0882SAndroid Build Coastguard Worker #undef bswap_32
133*993b0882SAndroid Build Coastguard Worker #undef bswap_64
134*993b0882SAndroid Build Coastguard Worker #define bswap_32(x) swap32(x)
135*993b0882SAndroid Build Coastguard Worker #define bswap_64(x) swap64(x)
136*993b0882SAndroid Build Coastguard Worker
137*993b0882SAndroid Build Coastguard Worker #elif defined(__NetBSD__)
138*993b0882SAndroid Build Coastguard Worker
139*993b0882SAndroid Build Coastguard Worker #include <machine/bswap.h>
140*993b0882SAndroid Build Coastguard Worker #include <sys/types.h>
141*993b0882SAndroid Build Coastguard Worker #if defined(__BSWAP_RENAME) && !defined(__bswap_32)
142*993b0882SAndroid Build Coastguard Worker #undef bswap_32
143*993b0882SAndroid Build Coastguard Worker #undef bswap_64
144*993b0882SAndroid Build Coastguard Worker #define bswap_32(x) bswap32(x)
145*993b0882SAndroid Build Coastguard Worker #define bswap_64(x) bswap64(x)
146*993b0882SAndroid Build Coastguard Worker #endif
147*993b0882SAndroid Build Coastguard Worker
148*993b0882SAndroid Build Coastguard Worker #else
149*993b0882SAndroid Build Coastguard Worker
150*993b0882SAndroid Build Coastguard Worker #undef bswap_32
151*993b0882SAndroid Build Coastguard Worker #undef bswap_64
152*993b0882SAndroid Build Coastguard Worker #include <byteswap.h>
153*993b0882SAndroid Build Coastguard Worker
154*993b0882SAndroid Build Coastguard Worker #endif
155*993b0882SAndroid Build Coastguard Worker
156*993b0882SAndroid Build Coastguard Worker #ifdef WORDS_BIGENDIAN
157*993b0882SAndroid Build Coastguard Worker #define FARMHASH_BIG_ENDIAN 1
158*993b0882SAndroid Build Coastguard Worker #endif
159*993b0882SAndroid Build Coastguard Worker
160*993b0882SAndroid Build Coastguard Worker #endif
161*993b0882SAndroid Build Coastguard Worker
162*993b0882SAndroid Build Coastguard Worker #ifdef FARMHASH_BIG_ENDIAN
163*993b0882SAndroid Build Coastguard Worker #define uint32_in_expected_order(x) (bswap_32(x))
164*993b0882SAndroid Build Coastguard Worker #define uint64_in_expected_order(x) (bswap_64(x))
165*993b0882SAndroid Build Coastguard Worker #else
166*993b0882SAndroid Build Coastguard Worker #define uint32_in_expected_order(x) (x)
167*993b0882SAndroid Build Coastguard Worker #define uint64_in_expected_order(x) (x)
168*993b0882SAndroid Build Coastguard Worker #endif
169*993b0882SAndroid Build Coastguard Worker
170*993b0882SAndroid Build Coastguard Worker namespace NAMESPACE_FOR_HASH_FUNCTIONS {
171*993b0882SAndroid Build Coastguard Worker
Fetch64(const char * p)172*993b0882SAndroid Build Coastguard Worker STATIC_INLINE uint64_t Fetch64(const char *p) {
173*993b0882SAndroid Build Coastguard Worker uint64_t result;
174*993b0882SAndroid Build Coastguard Worker memcpy(&result, p, sizeof(result));
175*993b0882SAndroid Build Coastguard Worker return uint64_in_expected_order(result);
176*993b0882SAndroid Build Coastguard Worker }
177*993b0882SAndroid Build Coastguard Worker
Fetch32(const char * p)178*993b0882SAndroid Build Coastguard Worker STATIC_INLINE uint32_t Fetch32(const char *p) {
179*993b0882SAndroid Build Coastguard Worker uint32_t result;
180*993b0882SAndroid Build Coastguard Worker memcpy(&result, p, sizeof(result));
181*993b0882SAndroid Build Coastguard Worker return uint32_in_expected_order(result);
182*993b0882SAndroid Build Coastguard Worker }
183*993b0882SAndroid Build Coastguard Worker
Bswap32(uint32_t val)184*993b0882SAndroid Build Coastguard Worker STATIC_INLINE uint32_t Bswap32(uint32_t val) { return bswap_32(val); }
Bswap64(uint64_t val)185*993b0882SAndroid Build Coastguard Worker STATIC_INLINE uint64_t Bswap64(uint64_t val) { return bswap_64(val); }
186*993b0882SAndroid Build Coastguard Worker
187*993b0882SAndroid Build Coastguard Worker // FARMHASH PORTABILITY LAYER: bitwise rot
188*993b0882SAndroid Build Coastguard Worker
BasicRotate32(uint32_t val,int shift)189*993b0882SAndroid Build Coastguard Worker STATIC_INLINE uint32_t BasicRotate32(uint32_t val, int shift) {
190*993b0882SAndroid Build Coastguard Worker // Avoid shifting by 32: doing so yields an undefined result.
191*993b0882SAndroid Build Coastguard Worker return shift == 0 ? val : ((val >> shift) | (val << (32 - shift)));
192*993b0882SAndroid Build Coastguard Worker }
193*993b0882SAndroid Build Coastguard Worker
BasicRotate64(uint64_t val,int shift)194*993b0882SAndroid Build Coastguard Worker STATIC_INLINE uint64_t BasicRotate64(uint64_t val, int shift) {
195*993b0882SAndroid Build Coastguard Worker // Avoid shifting by 64: doing so yields an undefined result.
196*993b0882SAndroid Build Coastguard Worker return shift == 0 ? val : ((val >> shift) | (val << (64 - shift)));
197*993b0882SAndroid Build Coastguard Worker }
198*993b0882SAndroid Build Coastguard Worker
199*993b0882SAndroid Build Coastguard Worker #if defined(_MSC_VER) && defined(FARMHASH_ROTR)
200*993b0882SAndroid Build Coastguard Worker
Rotate32(uint32_t val,int shift)201*993b0882SAndroid Build Coastguard Worker STATIC_INLINE uint32_t Rotate32(uint32_t val, int shift) {
202*993b0882SAndroid Build Coastguard Worker return sizeof(unsigned long) == sizeof(val) ?
203*993b0882SAndroid Build Coastguard Worker _lrotr(val, shift) :
204*993b0882SAndroid Build Coastguard Worker BasicRotate32(val, shift);
205*993b0882SAndroid Build Coastguard Worker }
206*993b0882SAndroid Build Coastguard Worker
Rotate64(uint64_t val,int shift)207*993b0882SAndroid Build Coastguard Worker STATIC_INLINE uint64_t Rotate64(uint64_t val, int shift) {
208*993b0882SAndroid Build Coastguard Worker return sizeof(unsigned long) == sizeof(val) ?
209*993b0882SAndroid Build Coastguard Worker _lrotr(val, shift) :
210*993b0882SAndroid Build Coastguard Worker BasicRotate64(val, shift);
211*993b0882SAndroid Build Coastguard Worker }
212*993b0882SAndroid Build Coastguard Worker
213*993b0882SAndroid Build Coastguard Worker #else
214*993b0882SAndroid Build Coastguard Worker
Rotate32(uint32_t val,int shift)215*993b0882SAndroid Build Coastguard Worker STATIC_INLINE uint32_t Rotate32(uint32_t val, int shift) {
216*993b0882SAndroid Build Coastguard Worker return BasicRotate32(val, shift);
217*993b0882SAndroid Build Coastguard Worker }
Rotate64(uint64_t val,int shift)218*993b0882SAndroid Build Coastguard Worker STATIC_INLINE uint64_t Rotate64(uint64_t val, int shift) {
219*993b0882SAndroid Build Coastguard Worker return BasicRotate64(val, shift);
220*993b0882SAndroid Build Coastguard Worker }
221*993b0882SAndroid Build Coastguard Worker
222*993b0882SAndroid Build Coastguard Worker #endif
223*993b0882SAndroid Build Coastguard Worker
224*993b0882SAndroid Build Coastguard Worker } // namespace NAMESPACE_FOR_HASH_FUNCTIONS
225*993b0882SAndroid Build Coastguard Worker
226*993b0882SAndroid Build Coastguard Worker // FARMHASH PORTABILITY LAYER: debug mode or max speed?
227*993b0882SAndroid Build Coastguard Worker // One may use -DFARMHASH_DEBUG=1 or -DFARMHASH_DEBUG=0 to force the issue.
228*993b0882SAndroid Build Coastguard Worker
229*993b0882SAndroid Build Coastguard Worker #if !defined(FARMHASH_DEBUG) && (!defined(NDEBUG) || defined(_DEBUG))
230*993b0882SAndroid Build Coastguard Worker #define FARMHASH_DEBUG 1
231*993b0882SAndroid Build Coastguard Worker #endif
232*993b0882SAndroid Build Coastguard Worker
233*993b0882SAndroid Build Coastguard Worker #undef debug_mode
234*993b0882SAndroid Build Coastguard Worker #if FARMHASH_DEBUG
235*993b0882SAndroid Build Coastguard Worker #define debug_mode 1
236*993b0882SAndroid Build Coastguard Worker #else
237*993b0882SAndroid Build Coastguard Worker #define debug_mode 0
238*993b0882SAndroid Build Coastguard Worker #endif
239*993b0882SAndroid Build Coastguard Worker
240*993b0882SAndroid Build Coastguard Worker // PLATFORM-SPECIFIC FUNCTIONS AND MACROS
241*993b0882SAndroid Build Coastguard Worker
242*993b0882SAndroid Build Coastguard Worker #undef x86_64
243*993b0882SAndroid Build Coastguard Worker #if defined (__x86_64) || defined (__x86_64__)
244*993b0882SAndroid Build Coastguard Worker #define x86_64 1
245*993b0882SAndroid Build Coastguard Worker #else
246*993b0882SAndroid Build Coastguard Worker #define x86_64 0
247*993b0882SAndroid Build Coastguard Worker #endif
248*993b0882SAndroid Build Coastguard Worker
249*993b0882SAndroid Build Coastguard Worker #undef x86
250*993b0882SAndroid Build Coastguard Worker #if defined(__i386__) || defined(__i386) || defined(__X86__)
251*993b0882SAndroid Build Coastguard Worker #define x86 1
252*993b0882SAndroid Build Coastguard Worker #else
253*993b0882SAndroid Build Coastguard Worker #define x86 x86_64
254*993b0882SAndroid Build Coastguard Worker #endif
255*993b0882SAndroid Build Coastguard Worker
256*993b0882SAndroid Build Coastguard Worker #if !defined(is_64bit)
257*993b0882SAndroid Build Coastguard Worker #define is_64bit (x86_64 || (sizeof(void*) == 8))
258*993b0882SAndroid Build Coastguard Worker #endif
259*993b0882SAndroid Build Coastguard Worker
260*993b0882SAndroid Build Coastguard Worker #undef can_use_sse42
261*993b0882SAndroid Build Coastguard Worker #if defined(__SSE4_2__) || defined(FARMHASH_ASSUME_SSE42)
262*993b0882SAndroid Build Coastguard Worker
263*993b0882SAndroid Build Coastguard Worker #include <nmmintrin.h>
264*993b0882SAndroid Build Coastguard Worker #define can_use_sse42 1
265*993b0882SAndroid Build Coastguard Worker // Now we can use _mm_crc32_u{32,16,8}. And on 64-bit platforms, _mm_crc32_u64.
266*993b0882SAndroid Build Coastguard Worker
267*993b0882SAndroid Build Coastguard Worker #else
268*993b0882SAndroid Build Coastguard Worker #define can_use_sse42 0
269*993b0882SAndroid Build Coastguard Worker #endif
270*993b0882SAndroid Build Coastguard Worker
271*993b0882SAndroid Build Coastguard Worker #undef can_use_aesni
272*993b0882SAndroid Build Coastguard Worker #if defined(__AES__) || defined(FARMHASH_ASSUME_AESNI)
273*993b0882SAndroid Build Coastguard Worker
274*993b0882SAndroid Build Coastguard Worker #include <wmmintrin.h>
275*993b0882SAndroid Build Coastguard Worker #define can_use_aesni 1
276*993b0882SAndroid Build Coastguard Worker // Now we can use _mm_aesimc_si128 and so on.
277*993b0882SAndroid Build Coastguard Worker
278*993b0882SAndroid Build Coastguard Worker #else
279*993b0882SAndroid Build Coastguard Worker #define can_use_aesni 0
280*993b0882SAndroid Build Coastguard Worker #endif
281*993b0882SAndroid Build Coastguard Worker
282*993b0882SAndroid Build Coastguard Worker #if can_use_sse42 || can_use_aesni
Load128(const char * s)283*993b0882SAndroid Build Coastguard Worker STATIC_INLINE __m128i Load128(const char* s) {
284*993b0882SAndroid Build Coastguard Worker return _mm_loadu_si128(reinterpret_cast<const __m128i*>(s));
285*993b0882SAndroid Build Coastguard Worker }
286*993b0882SAndroid Build Coastguard Worker #endif
287*993b0882SAndroid Build Coastguard Worker // Building blocks for hash functions
288*993b0882SAndroid Build Coastguard Worker
289*993b0882SAndroid Build Coastguard Worker // std::swap() was in <algorithm> but is in <utility> from C++11 on.
290*993b0882SAndroid Build Coastguard Worker #if !FARMHASH_CAN_USE_CXX11
291*993b0882SAndroid Build Coastguard Worker #include <algorithm>
292*993b0882SAndroid Build Coastguard Worker #endif
293*993b0882SAndroid Build Coastguard Worker
294*993b0882SAndroid Build Coastguard Worker #undef PERMUTE3
295*993b0882SAndroid Build Coastguard Worker #define PERMUTE3(a, b, c) do { std::swap(a, b); std::swap(a, c); } while (0)
296*993b0882SAndroid Build Coastguard Worker
297*993b0882SAndroid Build Coastguard Worker namespace NAMESPACE_FOR_HASH_FUNCTIONS {
298*993b0882SAndroid Build Coastguard Worker
299*993b0882SAndroid Build Coastguard Worker // Some primes between 2^63 and 2^64 for various uses.
300*993b0882SAndroid Build Coastguard Worker static const uint64_t k0 = 0xc3a5c85c97cb3127ULL;
301*993b0882SAndroid Build Coastguard Worker static const uint64_t k1 = 0xb492b66fbe98f273ULL;
302*993b0882SAndroid Build Coastguard Worker static const uint64_t k2 = 0x9ae16a3b2f90404fULL;
303*993b0882SAndroid Build Coastguard Worker
304*993b0882SAndroid Build Coastguard Worker // Magic numbers for 32-bit hashing. Copied from Murmur3.
305*993b0882SAndroid Build Coastguard Worker static const uint32_t c1 = 0xcc9e2d51;
306*993b0882SAndroid Build Coastguard Worker static const uint32_t c2 = 0x1b873593;
307*993b0882SAndroid Build Coastguard Worker
308*993b0882SAndroid Build Coastguard Worker // A 32-bit to 32-bit integer hash copied from Murmur3.
fmix(uint32_t h)309*993b0882SAndroid Build Coastguard Worker STATIC_INLINE uint32_t fmix(uint32_t h)
310*993b0882SAndroid Build Coastguard Worker {
311*993b0882SAndroid Build Coastguard Worker h ^= h >> 16;
312*993b0882SAndroid Build Coastguard Worker h *= 0x85ebca6b;
313*993b0882SAndroid Build Coastguard Worker h ^= h >> 13;
314*993b0882SAndroid Build Coastguard Worker h *= 0xc2b2ae35;
315*993b0882SAndroid Build Coastguard Worker h ^= h >> 16;
316*993b0882SAndroid Build Coastguard Worker return h;
317*993b0882SAndroid Build Coastguard Worker }
318*993b0882SAndroid Build Coastguard Worker
Mur(uint32_t a,uint32_t h)319*993b0882SAndroid Build Coastguard Worker STATIC_INLINE uint32_t Mur(uint32_t a, uint32_t h) {
320*993b0882SAndroid Build Coastguard Worker // Helper from Murmur3 for combining two 32-bit values.
321*993b0882SAndroid Build Coastguard Worker a *= c1;
322*993b0882SAndroid Build Coastguard Worker a = Rotate32(a, 17);
323*993b0882SAndroid Build Coastguard Worker a *= c2;
324*993b0882SAndroid Build Coastguard Worker h ^= a;
325*993b0882SAndroid Build Coastguard Worker h = Rotate32(h, 19);
326*993b0882SAndroid Build Coastguard Worker return h * 5 + 0xe6546b64;
327*993b0882SAndroid Build Coastguard Worker }
328*993b0882SAndroid Build Coastguard Worker
DebugTweak(T x)329*993b0882SAndroid Build Coastguard Worker template <typename T> STATIC_INLINE T DebugTweak(T x) {
330*993b0882SAndroid Build Coastguard Worker if (debug_mode) {
331*993b0882SAndroid Build Coastguard Worker if (sizeof(x) == 4) {
332*993b0882SAndroid Build Coastguard Worker x = ~Bswap32(x * c1);
333*993b0882SAndroid Build Coastguard Worker } else {
334*993b0882SAndroid Build Coastguard Worker x = ~Bswap64(x * k1);
335*993b0882SAndroid Build Coastguard Worker }
336*993b0882SAndroid Build Coastguard Worker }
337*993b0882SAndroid Build Coastguard Worker return x;
338*993b0882SAndroid Build Coastguard Worker }
339*993b0882SAndroid Build Coastguard Worker
DebugTweak(uint128_t x)340*993b0882SAndroid Build Coastguard Worker template <> uint128_t DebugTweak(uint128_t x) {
341*993b0882SAndroid Build Coastguard Worker if (debug_mode) {
342*993b0882SAndroid Build Coastguard Worker uint64_t y = DebugTweak(Uint128Low64(x));
343*993b0882SAndroid Build Coastguard Worker uint64_t z = DebugTweak(Uint128High64(x));
344*993b0882SAndroid Build Coastguard Worker y += z;
345*993b0882SAndroid Build Coastguard Worker z += y;
346*993b0882SAndroid Build Coastguard Worker x = Uint128(y, z * k1);
347*993b0882SAndroid Build Coastguard Worker }
348*993b0882SAndroid Build Coastguard Worker return x;
349*993b0882SAndroid Build Coastguard Worker }
350*993b0882SAndroid Build Coastguard Worker
351*993b0882SAndroid Build Coastguard Worker using namespace std;
352*993b0882SAndroid Build Coastguard Worker namespace farmhashna {
353*993b0882SAndroid Build Coastguard Worker #undef Fetch
354*993b0882SAndroid Build Coastguard Worker #define Fetch Fetch64
355*993b0882SAndroid Build Coastguard Worker
356*993b0882SAndroid Build Coastguard Worker #undef Rotate
357*993b0882SAndroid Build Coastguard Worker #define Rotate Rotate64
358*993b0882SAndroid Build Coastguard Worker
359*993b0882SAndroid Build Coastguard Worker #undef Bswap
360*993b0882SAndroid Build Coastguard Worker #define Bswap Bswap64
361*993b0882SAndroid Build Coastguard Worker
ShiftMix(uint64_t val)362*993b0882SAndroid Build Coastguard Worker STATIC_INLINE uint64_t ShiftMix(uint64_t val) {
363*993b0882SAndroid Build Coastguard Worker return val ^ (val >> 47);
364*993b0882SAndroid Build Coastguard Worker }
365*993b0882SAndroid Build Coastguard Worker
HashLen16(uint64_t u,uint64_t v)366*993b0882SAndroid Build Coastguard Worker STATIC_INLINE uint64_t HashLen16(uint64_t u, uint64_t v) {
367*993b0882SAndroid Build Coastguard Worker return Hash128to64(Uint128(u, v));
368*993b0882SAndroid Build Coastguard Worker }
369*993b0882SAndroid Build Coastguard Worker
HashLen16(uint64_t u,uint64_t v,uint64_t mul)370*993b0882SAndroid Build Coastguard Worker STATIC_INLINE uint64_t HashLen16(uint64_t u, uint64_t v, uint64_t mul) {
371*993b0882SAndroid Build Coastguard Worker // Murmur-inspired hashing.
372*993b0882SAndroid Build Coastguard Worker uint64_t a = (u ^ v) * mul;
373*993b0882SAndroid Build Coastguard Worker a ^= (a >> 47);
374*993b0882SAndroid Build Coastguard Worker uint64_t b = (v ^ a) * mul;
375*993b0882SAndroid Build Coastguard Worker b ^= (b >> 47);
376*993b0882SAndroid Build Coastguard Worker b *= mul;
377*993b0882SAndroid Build Coastguard Worker return b;
378*993b0882SAndroid Build Coastguard Worker }
379*993b0882SAndroid Build Coastguard Worker
HashLen0to16(const char * s,size_t len)380*993b0882SAndroid Build Coastguard Worker STATIC_INLINE uint64_t HashLen0to16(const char *s, size_t len) {
381*993b0882SAndroid Build Coastguard Worker if (len >= 8) {
382*993b0882SAndroid Build Coastguard Worker uint64_t mul = k2 + len * 2;
383*993b0882SAndroid Build Coastguard Worker uint64_t a = Fetch(s) + k2;
384*993b0882SAndroid Build Coastguard Worker uint64_t b = Fetch(s + len - 8);
385*993b0882SAndroid Build Coastguard Worker uint64_t c = Rotate(b, 37) * mul + a;
386*993b0882SAndroid Build Coastguard Worker uint64_t d = (Rotate(a, 25) + b) * mul;
387*993b0882SAndroid Build Coastguard Worker return HashLen16(c, d, mul);
388*993b0882SAndroid Build Coastguard Worker }
389*993b0882SAndroid Build Coastguard Worker if (len >= 4) {
390*993b0882SAndroid Build Coastguard Worker uint64_t mul = k2 + len * 2;
391*993b0882SAndroid Build Coastguard Worker uint64_t a = Fetch32(s);
392*993b0882SAndroid Build Coastguard Worker return HashLen16(len + (a << 3), Fetch32(s + len - 4), mul);
393*993b0882SAndroid Build Coastguard Worker }
394*993b0882SAndroid Build Coastguard Worker if (len > 0) {
395*993b0882SAndroid Build Coastguard Worker uint8_t a = s[0];
396*993b0882SAndroid Build Coastguard Worker uint8_t b = s[len >> 1];
397*993b0882SAndroid Build Coastguard Worker uint8_t c = s[len - 1];
398*993b0882SAndroid Build Coastguard Worker uint32_t y = static_cast<uint32_t>(a) + (static_cast<uint32_t>(b) << 8);
399*993b0882SAndroid Build Coastguard Worker uint32_t z = len + (static_cast<uint32_t>(c) << 2);
400*993b0882SAndroid Build Coastguard Worker return ShiftMix(y * k2 ^ z * k0) * k2;
401*993b0882SAndroid Build Coastguard Worker }
402*993b0882SAndroid Build Coastguard Worker return k2;
403*993b0882SAndroid Build Coastguard Worker }
404*993b0882SAndroid Build Coastguard Worker
405*993b0882SAndroid Build Coastguard Worker // This probably works well for 16-byte strings as well, but it may be overkill
406*993b0882SAndroid Build Coastguard Worker // in that case.
HashLen17to32(const char * s,size_t len)407*993b0882SAndroid Build Coastguard Worker STATIC_INLINE uint64_t HashLen17to32(const char *s, size_t len) {
408*993b0882SAndroid Build Coastguard Worker uint64_t mul = k2 + len * 2;
409*993b0882SAndroid Build Coastguard Worker uint64_t a = Fetch(s) * k1;
410*993b0882SAndroid Build Coastguard Worker uint64_t b = Fetch(s + 8);
411*993b0882SAndroid Build Coastguard Worker uint64_t c = Fetch(s + len - 8) * mul;
412*993b0882SAndroid Build Coastguard Worker uint64_t d = Fetch(s + len - 16) * k2;
413*993b0882SAndroid Build Coastguard Worker return HashLen16(Rotate(a + b, 43) + Rotate(c, 30) + d,
414*993b0882SAndroid Build Coastguard Worker a + Rotate(b + k2, 18) + c, mul);
415*993b0882SAndroid Build Coastguard Worker }
416*993b0882SAndroid Build Coastguard Worker
417*993b0882SAndroid Build Coastguard Worker // Return a 16-byte hash for 48 bytes. Quick and dirty.
418*993b0882SAndroid Build Coastguard Worker // Callers do best to use "random-looking" values for a and b.
WeakHashLen32WithSeeds(uint64_t w,uint64_t x,uint64_t y,uint64_t z,uint64_t a,uint64_t b)419*993b0882SAndroid Build Coastguard Worker STATIC_INLINE pair<uint64_t, uint64_t> WeakHashLen32WithSeeds(
420*993b0882SAndroid Build Coastguard Worker uint64_t w, uint64_t x, uint64_t y, uint64_t z, uint64_t a, uint64_t b) {
421*993b0882SAndroid Build Coastguard Worker a += w;
422*993b0882SAndroid Build Coastguard Worker b = Rotate(b + a + z, 21);
423*993b0882SAndroid Build Coastguard Worker uint64_t c = a;
424*993b0882SAndroid Build Coastguard Worker a += x;
425*993b0882SAndroid Build Coastguard Worker a += y;
426*993b0882SAndroid Build Coastguard Worker b += Rotate(a, 44);
427*993b0882SAndroid Build Coastguard Worker return std::make_pair(a + z, b + c);
428*993b0882SAndroid Build Coastguard Worker }
429*993b0882SAndroid Build Coastguard Worker
430*993b0882SAndroid Build Coastguard Worker // Return a 16-byte hash for s[0] ... s[31], a, and b. Quick and dirty.
WeakHashLen32WithSeeds(const char * s,uint64_t a,uint64_t b)431*993b0882SAndroid Build Coastguard Worker STATIC_INLINE pair<uint64_t, uint64_t> WeakHashLen32WithSeeds(
432*993b0882SAndroid Build Coastguard Worker const char* s, uint64_t a, uint64_t b) {
433*993b0882SAndroid Build Coastguard Worker return WeakHashLen32WithSeeds(Fetch(s),
434*993b0882SAndroid Build Coastguard Worker Fetch(s + 8),
435*993b0882SAndroid Build Coastguard Worker Fetch(s + 16),
436*993b0882SAndroid Build Coastguard Worker Fetch(s + 24),
437*993b0882SAndroid Build Coastguard Worker a,
438*993b0882SAndroid Build Coastguard Worker b);
439*993b0882SAndroid Build Coastguard Worker }
440*993b0882SAndroid Build Coastguard Worker
441*993b0882SAndroid Build Coastguard Worker // Return an 8-byte hash for 33 to 64 bytes.
HashLen33to64(const char * s,size_t len)442*993b0882SAndroid Build Coastguard Worker STATIC_INLINE uint64_t HashLen33to64(const char *s, size_t len) {
443*993b0882SAndroid Build Coastguard Worker uint64_t mul = k2 + len * 2;
444*993b0882SAndroid Build Coastguard Worker uint64_t a = Fetch(s) * k2;
445*993b0882SAndroid Build Coastguard Worker uint64_t b = Fetch(s + 8);
446*993b0882SAndroid Build Coastguard Worker uint64_t c = Fetch(s + len - 8) * mul;
447*993b0882SAndroid Build Coastguard Worker uint64_t d = Fetch(s + len - 16) * k2;
448*993b0882SAndroid Build Coastguard Worker uint64_t y = Rotate(a + b, 43) + Rotate(c, 30) + d;
449*993b0882SAndroid Build Coastguard Worker uint64_t z = HashLen16(y, a + Rotate(b + k2, 18) + c, mul);
450*993b0882SAndroid Build Coastguard Worker uint64_t e = Fetch(s + 16) * mul;
451*993b0882SAndroid Build Coastguard Worker uint64_t f = Fetch(s + 24);
452*993b0882SAndroid Build Coastguard Worker uint64_t g = (y + Fetch(s + len - 32)) * mul;
453*993b0882SAndroid Build Coastguard Worker uint64_t h = (z + Fetch(s + len - 24)) * mul;
454*993b0882SAndroid Build Coastguard Worker return HashLen16(Rotate(e + f, 43) + Rotate(g, 30) + h,
455*993b0882SAndroid Build Coastguard Worker e + Rotate(f + a, 18) + g, mul);
456*993b0882SAndroid Build Coastguard Worker }
457*993b0882SAndroid Build Coastguard Worker
Hash64(const char * s,size_t len)458*993b0882SAndroid Build Coastguard Worker uint64_t Hash64(const char *s, size_t len) {
459*993b0882SAndroid Build Coastguard Worker const uint64_t seed = 81;
460*993b0882SAndroid Build Coastguard Worker if (len <= 32) {
461*993b0882SAndroid Build Coastguard Worker if (len <= 16) {
462*993b0882SAndroid Build Coastguard Worker return HashLen0to16(s, len);
463*993b0882SAndroid Build Coastguard Worker } else {
464*993b0882SAndroid Build Coastguard Worker return HashLen17to32(s, len);
465*993b0882SAndroid Build Coastguard Worker }
466*993b0882SAndroid Build Coastguard Worker } else if (len <= 64) {
467*993b0882SAndroid Build Coastguard Worker return HashLen33to64(s, len);
468*993b0882SAndroid Build Coastguard Worker }
469*993b0882SAndroid Build Coastguard Worker
470*993b0882SAndroid Build Coastguard Worker // For strings over 64 bytes we loop. Internal state consists of
471*993b0882SAndroid Build Coastguard Worker // 56 bytes: v, w, x, y, and z.
472*993b0882SAndroid Build Coastguard Worker uint64_t x = seed;
473*993b0882SAndroid Build Coastguard Worker uint64_t y = seed * k1 + 113;
474*993b0882SAndroid Build Coastguard Worker uint64_t z = ShiftMix(y * k2 + 113) * k2;
475*993b0882SAndroid Build Coastguard Worker pair<uint64_t, uint64_t> v = std::make_pair(0, 0);
476*993b0882SAndroid Build Coastguard Worker pair<uint64_t, uint64_t> w = std::make_pair(0, 0);
477*993b0882SAndroid Build Coastguard Worker x = x * k2 + Fetch(s);
478*993b0882SAndroid Build Coastguard Worker
479*993b0882SAndroid Build Coastguard Worker // Set end so that after the loop we have 1 to 64 bytes left to process.
480*993b0882SAndroid Build Coastguard Worker const char* end = s + ((len - 1) / 64) * 64;
481*993b0882SAndroid Build Coastguard Worker const char* last64 = end + ((len - 1) & 63) - 63;
482*993b0882SAndroid Build Coastguard Worker assert(s + len - 64 == last64);
483*993b0882SAndroid Build Coastguard Worker do {
484*993b0882SAndroid Build Coastguard Worker x = Rotate(x + y + v.first + Fetch(s + 8), 37) * k1;
485*993b0882SAndroid Build Coastguard Worker y = Rotate(y + v.second + Fetch(s + 48), 42) * k1;
486*993b0882SAndroid Build Coastguard Worker x ^= w.second;
487*993b0882SAndroid Build Coastguard Worker y += v.first + Fetch(s + 40);
488*993b0882SAndroid Build Coastguard Worker z = Rotate(z + w.first, 33) * k1;
489*993b0882SAndroid Build Coastguard Worker v = WeakHashLen32WithSeeds(s, v.second * k1, x + w.first);
490*993b0882SAndroid Build Coastguard Worker w = WeakHashLen32WithSeeds(s + 32, z + w.second, y + Fetch(s + 16));
491*993b0882SAndroid Build Coastguard Worker std::swap(z, x);
492*993b0882SAndroid Build Coastguard Worker s += 64;
493*993b0882SAndroid Build Coastguard Worker } while (s != end);
494*993b0882SAndroid Build Coastguard Worker uint64_t mul = k1 + ((z & 0xff) << 1);
495*993b0882SAndroid Build Coastguard Worker // Make s point to the last 64 bytes of input.
496*993b0882SAndroid Build Coastguard Worker s = last64;
497*993b0882SAndroid Build Coastguard Worker w.first += ((len - 1) & 63);
498*993b0882SAndroid Build Coastguard Worker v.first += w.first;
499*993b0882SAndroid Build Coastguard Worker w.first += v.first;
500*993b0882SAndroid Build Coastguard Worker x = Rotate(x + y + v.first + Fetch(s + 8), 37) * mul;
501*993b0882SAndroid Build Coastguard Worker y = Rotate(y + v.second + Fetch(s + 48), 42) * mul;
502*993b0882SAndroid Build Coastguard Worker x ^= w.second * 9;
503*993b0882SAndroid Build Coastguard Worker y += v.first * 9 + Fetch(s + 40);
504*993b0882SAndroid Build Coastguard Worker z = Rotate(z + w.first, 33) * mul;
505*993b0882SAndroid Build Coastguard Worker v = WeakHashLen32WithSeeds(s, v.second * mul, x + w.first);
506*993b0882SAndroid Build Coastguard Worker w = WeakHashLen32WithSeeds(s + 32, z + w.second, y + Fetch(s + 16));
507*993b0882SAndroid Build Coastguard Worker std::swap(z, x);
508*993b0882SAndroid Build Coastguard Worker return HashLen16(HashLen16(v.first, w.first, mul) + ShiftMix(y) * k0 + z,
509*993b0882SAndroid Build Coastguard Worker HashLen16(v.second, w.second, mul) + x,
510*993b0882SAndroid Build Coastguard Worker mul);
511*993b0882SAndroid Build Coastguard Worker }
512*993b0882SAndroid Build Coastguard Worker
513*993b0882SAndroid Build Coastguard Worker uint64_t Hash64WithSeeds(const char *s, size_t len, uint64_t seed0, uint64_t seed1);
514*993b0882SAndroid Build Coastguard Worker
Hash64WithSeed(const char * s,size_t len,uint64_t seed)515*993b0882SAndroid Build Coastguard Worker uint64_t Hash64WithSeed(const char *s, size_t len, uint64_t seed) {
516*993b0882SAndroid Build Coastguard Worker return Hash64WithSeeds(s, len, k2, seed);
517*993b0882SAndroid Build Coastguard Worker }
518*993b0882SAndroid Build Coastguard Worker
Hash64WithSeeds(const char * s,size_t len,uint64_t seed0,uint64_t seed1)519*993b0882SAndroid Build Coastguard Worker uint64_t Hash64WithSeeds(const char *s, size_t len, uint64_t seed0, uint64_t seed1) {
520*993b0882SAndroid Build Coastguard Worker return HashLen16(Hash64(s, len) - seed0, seed1);
521*993b0882SAndroid Build Coastguard Worker }
522*993b0882SAndroid Build Coastguard Worker } // namespace farmhashna
523*993b0882SAndroid Build Coastguard Worker namespace farmhashmk {
524*993b0882SAndroid Build Coastguard Worker #undef Fetch
525*993b0882SAndroid Build Coastguard Worker #define Fetch Fetch32
526*993b0882SAndroid Build Coastguard Worker
527*993b0882SAndroid Build Coastguard Worker #undef Rotate
528*993b0882SAndroid Build Coastguard Worker #define Rotate Rotate32
529*993b0882SAndroid Build Coastguard Worker
530*993b0882SAndroid Build Coastguard Worker #undef Bswap
531*993b0882SAndroid Build Coastguard Worker #define Bswap Bswap32
532*993b0882SAndroid Build Coastguard Worker
Hash32Len13to24(const char * s,size_t len,uint32_t seed=0)533*993b0882SAndroid Build Coastguard Worker STATIC_INLINE uint32_t Hash32Len13to24(const char *s, size_t len, uint32_t seed = 0) {
534*993b0882SAndroid Build Coastguard Worker uint32_t a = Fetch(s - 4 + (len >> 1));
535*993b0882SAndroid Build Coastguard Worker uint32_t b = Fetch(s + 4);
536*993b0882SAndroid Build Coastguard Worker uint32_t c = Fetch(s + len - 8);
537*993b0882SAndroid Build Coastguard Worker uint32_t d = Fetch(s + (len >> 1));
538*993b0882SAndroid Build Coastguard Worker uint32_t e = Fetch(s);
539*993b0882SAndroid Build Coastguard Worker uint32_t f = Fetch(s + len - 4);
540*993b0882SAndroid Build Coastguard Worker uint32_t h = d * c1 + len + seed;
541*993b0882SAndroid Build Coastguard Worker a = Rotate(a, 12) + f;
542*993b0882SAndroid Build Coastguard Worker h = Mur(c, h) + a;
543*993b0882SAndroid Build Coastguard Worker a = Rotate(a, 3) + c;
544*993b0882SAndroid Build Coastguard Worker h = Mur(e, h) + a;
545*993b0882SAndroid Build Coastguard Worker a = Rotate(a + f, 12) + d;
546*993b0882SAndroid Build Coastguard Worker h = Mur(b ^ seed, h) + a;
547*993b0882SAndroid Build Coastguard Worker return fmix(h);
548*993b0882SAndroid Build Coastguard Worker }
549*993b0882SAndroid Build Coastguard Worker
Hash32Len0to4(const char * s,size_t len,uint32_t seed=0)550*993b0882SAndroid Build Coastguard Worker STATIC_INLINE uint32_t Hash32Len0to4(const char *s, size_t len, uint32_t seed = 0) {
551*993b0882SAndroid Build Coastguard Worker uint32_t b = seed;
552*993b0882SAndroid Build Coastguard Worker uint32_t c = 9;
553*993b0882SAndroid Build Coastguard Worker for (size_t i = 0; i < len; i++) {
554*993b0882SAndroid Build Coastguard Worker signed char v = s[i];
555*993b0882SAndroid Build Coastguard Worker b = b * c1 + v;
556*993b0882SAndroid Build Coastguard Worker c ^= b;
557*993b0882SAndroid Build Coastguard Worker }
558*993b0882SAndroid Build Coastguard Worker return fmix(Mur(b, Mur(len, c)));
559*993b0882SAndroid Build Coastguard Worker }
560*993b0882SAndroid Build Coastguard Worker
Hash32Len5to12(const char * s,size_t len,uint32_t seed=0)561*993b0882SAndroid Build Coastguard Worker STATIC_INLINE uint32_t Hash32Len5to12(const char *s, size_t len, uint32_t seed = 0) {
562*993b0882SAndroid Build Coastguard Worker uint32_t a = len, b = len * 5, c = 9, d = b + seed;
563*993b0882SAndroid Build Coastguard Worker a += Fetch(s);
564*993b0882SAndroid Build Coastguard Worker b += Fetch(s + len - 4);
565*993b0882SAndroid Build Coastguard Worker c += Fetch(s + ((len >> 1) & 4));
566*993b0882SAndroid Build Coastguard Worker return fmix(seed ^ Mur(c, Mur(b, Mur(a, d))));
567*993b0882SAndroid Build Coastguard Worker }
568*993b0882SAndroid Build Coastguard Worker
Hash32(const char * s,size_t len)569*993b0882SAndroid Build Coastguard Worker uint32_t Hash32(const char *s, size_t len) {
570*993b0882SAndroid Build Coastguard Worker if (len <= 24) {
571*993b0882SAndroid Build Coastguard Worker return len <= 12 ?
572*993b0882SAndroid Build Coastguard Worker (len <= 4 ? Hash32Len0to4(s, len) : Hash32Len5to12(s, len)) :
573*993b0882SAndroid Build Coastguard Worker Hash32Len13to24(s, len);
574*993b0882SAndroid Build Coastguard Worker }
575*993b0882SAndroid Build Coastguard Worker
576*993b0882SAndroid Build Coastguard Worker // len > 24
577*993b0882SAndroid Build Coastguard Worker uint32_t h = len, g = c1 * len, f = g;
578*993b0882SAndroid Build Coastguard Worker uint32_t a0 = Rotate(Fetch(s + len - 4) * c1, 17) * c2;
579*993b0882SAndroid Build Coastguard Worker uint32_t a1 = Rotate(Fetch(s + len - 8) * c1, 17) * c2;
580*993b0882SAndroid Build Coastguard Worker uint32_t a2 = Rotate(Fetch(s + len - 16) * c1, 17) * c2;
581*993b0882SAndroid Build Coastguard Worker uint32_t a3 = Rotate(Fetch(s + len - 12) * c1, 17) * c2;
582*993b0882SAndroid Build Coastguard Worker uint32_t a4 = Rotate(Fetch(s + len - 20) * c1, 17) * c2;
583*993b0882SAndroid Build Coastguard Worker h ^= a0;
584*993b0882SAndroid Build Coastguard Worker h = Rotate(h, 19);
585*993b0882SAndroid Build Coastguard Worker h = h * 5 + 0xe6546b64;
586*993b0882SAndroid Build Coastguard Worker h ^= a2;
587*993b0882SAndroid Build Coastguard Worker h = Rotate(h, 19);
588*993b0882SAndroid Build Coastguard Worker h = h * 5 + 0xe6546b64;
589*993b0882SAndroid Build Coastguard Worker g ^= a1;
590*993b0882SAndroid Build Coastguard Worker g = Rotate(g, 19);
591*993b0882SAndroid Build Coastguard Worker g = g * 5 + 0xe6546b64;
592*993b0882SAndroid Build Coastguard Worker g ^= a3;
593*993b0882SAndroid Build Coastguard Worker g = Rotate(g, 19);
594*993b0882SAndroid Build Coastguard Worker g = g * 5 + 0xe6546b64;
595*993b0882SAndroid Build Coastguard Worker f += a4;
596*993b0882SAndroid Build Coastguard Worker f = Rotate(f, 19) + 113;
597*993b0882SAndroid Build Coastguard Worker size_t iters = (len - 1) / 20;
598*993b0882SAndroid Build Coastguard Worker do {
599*993b0882SAndroid Build Coastguard Worker uint32_t a = Fetch(s);
600*993b0882SAndroid Build Coastguard Worker uint32_t b = Fetch(s + 4);
601*993b0882SAndroid Build Coastguard Worker uint32_t c = Fetch(s + 8);
602*993b0882SAndroid Build Coastguard Worker uint32_t d = Fetch(s + 12);
603*993b0882SAndroid Build Coastguard Worker uint32_t e = Fetch(s + 16);
604*993b0882SAndroid Build Coastguard Worker h += a;
605*993b0882SAndroid Build Coastguard Worker g += b;
606*993b0882SAndroid Build Coastguard Worker f += c;
607*993b0882SAndroid Build Coastguard Worker h = Mur(d, h) + e;
608*993b0882SAndroid Build Coastguard Worker g = Mur(c, g) + a;
609*993b0882SAndroid Build Coastguard Worker f = Mur(b + e * c1, f) + d;
610*993b0882SAndroid Build Coastguard Worker f += g;
611*993b0882SAndroid Build Coastguard Worker g += f;
612*993b0882SAndroid Build Coastguard Worker s += 20;
613*993b0882SAndroid Build Coastguard Worker } while (--iters != 0);
614*993b0882SAndroid Build Coastguard Worker g = Rotate(g, 11) * c1;
615*993b0882SAndroid Build Coastguard Worker g = Rotate(g, 17) * c1;
616*993b0882SAndroid Build Coastguard Worker f = Rotate(f, 11) * c1;
617*993b0882SAndroid Build Coastguard Worker f = Rotate(f, 17) * c1;
618*993b0882SAndroid Build Coastguard Worker h = Rotate(h + g, 19);
619*993b0882SAndroid Build Coastguard Worker h = h * 5 + 0xe6546b64;
620*993b0882SAndroid Build Coastguard Worker h = Rotate(h, 17) * c1;
621*993b0882SAndroid Build Coastguard Worker h = Rotate(h + f, 19);
622*993b0882SAndroid Build Coastguard Worker h = h * 5 + 0xe6546b64;
623*993b0882SAndroid Build Coastguard Worker h = Rotate(h, 17) * c1;
624*993b0882SAndroid Build Coastguard Worker return h;
625*993b0882SAndroid Build Coastguard Worker }
626*993b0882SAndroid Build Coastguard Worker
Hash32WithSeed(const char * s,size_t len,uint32_t seed)627*993b0882SAndroid Build Coastguard Worker uint32_t Hash32WithSeed(const char *s, size_t len, uint32_t seed) {
628*993b0882SAndroid Build Coastguard Worker if (len <= 24) {
629*993b0882SAndroid Build Coastguard Worker if (len >= 13) return Hash32Len13to24(s, len, seed * c1);
630*993b0882SAndroid Build Coastguard Worker else if (len >= 5) return Hash32Len5to12(s, len, seed);
631*993b0882SAndroid Build Coastguard Worker else return Hash32Len0to4(s, len, seed);
632*993b0882SAndroid Build Coastguard Worker }
633*993b0882SAndroid Build Coastguard Worker uint32_t h = Hash32Len13to24(s, 24, seed ^ len);
634*993b0882SAndroid Build Coastguard Worker return Mur(Hash32(s + 24, len - 24) + seed, h);
635*993b0882SAndroid Build Coastguard Worker }
636*993b0882SAndroid Build Coastguard Worker } // namespace farmhashmk
637*993b0882SAndroid Build Coastguard Worker namespace farmhashsu {
638*993b0882SAndroid Build Coastguard Worker #if !can_use_sse42 || !can_use_aesni
639*993b0882SAndroid Build Coastguard Worker
Hash32(const char * s,size_t len)640*993b0882SAndroid Build Coastguard Worker uint32_t Hash32(const char *s, size_t len) {
641*993b0882SAndroid Build Coastguard Worker FARMHASH_DIE_IF_MISCONFIGURED;
642*993b0882SAndroid Build Coastguard Worker return s == nullptr ? 0 : len;
643*993b0882SAndroid Build Coastguard Worker }
644*993b0882SAndroid Build Coastguard Worker
Hash32WithSeed(const char * s,size_t len,uint32_t seed)645*993b0882SAndroid Build Coastguard Worker uint32_t Hash32WithSeed(const char *s, size_t len, uint32_t seed) {
646*993b0882SAndroid Build Coastguard Worker FARMHASH_DIE_IF_MISCONFIGURED;
647*993b0882SAndroid Build Coastguard Worker return seed + Hash32(s, len);
648*993b0882SAndroid Build Coastguard Worker }
649*993b0882SAndroid Build Coastguard Worker
650*993b0882SAndroid Build Coastguard Worker #else
651*993b0882SAndroid Build Coastguard Worker
652*993b0882SAndroid Build Coastguard Worker #undef Fetch
653*993b0882SAndroid Build Coastguard Worker #define Fetch Fetch32
654*993b0882SAndroid Build Coastguard Worker
655*993b0882SAndroid Build Coastguard Worker #undef Rotate
656*993b0882SAndroid Build Coastguard Worker #define Rotate Rotate32
657*993b0882SAndroid Build Coastguard Worker
658*993b0882SAndroid Build Coastguard Worker #undef Bswap
659*993b0882SAndroid Build Coastguard Worker #define Bswap Bswap32
660*993b0882SAndroid Build Coastguard Worker
661*993b0882SAndroid Build Coastguard Worker // Helpers for data-parallel operations (4x 32-bits).
662*993b0882SAndroid Build Coastguard Worker STATIC_INLINE __m128i Add(__m128i x, __m128i y) { return _mm_add_epi32(x, y); }
663*993b0882SAndroid Build Coastguard Worker STATIC_INLINE __m128i Xor(__m128i x, __m128i y) { return _mm_xor_si128(x, y); }
664*993b0882SAndroid Build Coastguard Worker STATIC_INLINE __m128i Or(__m128i x, __m128i y) { return _mm_or_si128(x, y); }
665*993b0882SAndroid Build Coastguard Worker STATIC_INLINE __m128i Mul(__m128i x, __m128i y) { return _mm_mullo_epi32(x, y); }
666*993b0882SAndroid Build Coastguard Worker STATIC_INLINE __m128i Mul5(__m128i x) { return Add(x, _mm_slli_epi32(x, 2)); }
667*993b0882SAndroid Build Coastguard Worker STATIC_INLINE __m128i Rotate(__m128i x, int c) {
668*993b0882SAndroid Build Coastguard Worker return Or(_mm_slli_epi32(x, c),
669*993b0882SAndroid Build Coastguard Worker _mm_srli_epi32(x, 32 - c));
670*993b0882SAndroid Build Coastguard Worker }
671*993b0882SAndroid Build Coastguard Worker STATIC_INLINE __m128i Rot17(__m128i x) { return Rotate(x, 17); }
672*993b0882SAndroid Build Coastguard Worker STATIC_INLINE __m128i Rot19(__m128i x) { return Rotate(x, 19); }
673*993b0882SAndroid Build Coastguard Worker STATIC_INLINE __m128i Shuffle0321(__m128i x) {
674*993b0882SAndroid Build Coastguard Worker return _mm_shuffle_epi32(x, (0 << 6) + (3 << 4) + (2 << 2) + (1 << 0));
675*993b0882SAndroid Build Coastguard Worker }
676*993b0882SAndroid Build Coastguard Worker STATIC_INLINE __m128i Shuffle2031(__m128i x) {
677*993b0882SAndroid Build Coastguard Worker return _mm_shuffle_epi32(x, (2 << 6) + (0 << 4) + (3 << 2) + (1 << 0));
678*993b0882SAndroid Build Coastguard Worker }
679*993b0882SAndroid Build Coastguard Worker
680*993b0882SAndroid Build Coastguard Worker uint32_t Hash32(const char *s, size_t len) {
681*993b0882SAndroid Build Coastguard Worker const uint32_t seed = 81;
682*993b0882SAndroid Build Coastguard Worker if (len <= 24) {
683*993b0882SAndroid Build Coastguard Worker return len <= 12 ?
684*993b0882SAndroid Build Coastguard Worker (len <= 4 ?
685*993b0882SAndroid Build Coastguard Worker farmhashmk::Hash32Len0to4(s, len) :
686*993b0882SAndroid Build Coastguard Worker farmhashmk::Hash32Len5to12(s, len)) :
687*993b0882SAndroid Build Coastguard Worker farmhashmk::Hash32Len13to24(s, len);
688*993b0882SAndroid Build Coastguard Worker }
689*993b0882SAndroid Build Coastguard Worker
690*993b0882SAndroid Build Coastguard Worker if (len < 40) {
691*993b0882SAndroid Build Coastguard Worker uint32_t a = len, b = seed * c2, c = a + b;
692*993b0882SAndroid Build Coastguard Worker a += Fetch(s + len - 4);
693*993b0882SAndroid Build Coastguard Worker b += Fetch(s + len - 20);
694*993b0882SAndroid Build Coastguard Worker c += Fetch(s + len - 16);
695*993b0882SAndroid Build Coastguard Worker uint32_t d = a;
696*993b0882SAndroid Build Coastguard Worker a = NAMESPACE_FOR_HASH_FUNCTIONS::Rotate32(a, 21);
697*993b0882SAndroid Build Coastguard Worker a = Mur(a, Mur(b, _mm_crc32_u32(c, d)));
698*993b0882SAndroid Build Coastguard Worker a += Fetch(s + len - 12);
699*993b0882SAndroid Build Coastguard Worker b += Fetch(s + len - 8);
700*993b0882SAndroid Build Coastguard Worker d += a;
701*993b0882SAndroid Build Coastguard Worker a += d;
702*993b0882SAndroid Build Coastguard Worker b = Mur(b, d) * c2;
703*993b0882SAndroid Build Coastguard Worker a = _mm_crc32_u32(a, b + c);
704*993b0882SAndroid Build Coastguard Worker return farmhashmk::Hash32Len13to24(s, (len + 1) / 2, a) + b;
705*993b0882SAndroid Build Coastguard Worker }
706*993b0882SAndroid Build Coastguard Worker
707*993b0882SAndroid Build Coastguard Worker #undef Mulc1
708*993b0882SAndroid Build Coastguard Worker #define Mulc1(x) Mul((x), cc1)
709*993b0882SAndroid Build Coastguard Worker
710*993b0882SAndroid Build Coastguard Worker #undef Mulc2
711*993b0882SAndroid Build Coastguard Worker #define Mulc2(x) Mul((x), cc2)
712*993b0882SAndroid Build Coastguard Worker
713*993b0882SAndroid Build Coastguard Worker #undef Murk
714*993b0882SAndroid Build Coastguard Worker #define Murk(a, h) \
715*993b0882SAndroid Build Coastguard Worker Add(k, \
716*993b0882SAndroid Build Coastguard Worker Mul5( \
717*993b0882SAndroid Build Coastguard Worker Rot19( \
718*993b0882SAndroid Build Coastguard Worker Xor( \
719*993b0882SAndroid Build Coastguard Worker Mulc2( \
720*993b0882SAndroid Build Coastguard Worker Rot17( \
721*993b0882SAndroid Build Coastguard Worker Mulc1(a))), \
722*993b0882SAndroid Build Coastguard Worker (h)))))
723*993b0882SAndroid Build Coastguard Worker
724*993b0882SAndroid Build Coastguard Worker const __m128i cc1 = _mm_set1_epi32(c1);
725*993b0882SAndroid Build Coastguard Worker const __m128i cc2 = _mm_set1_epi32(c2);
726*993b0882SAndroid Build Coastguard Worker __m128i h = _mm_set1_epi32(seed);
727*993b0882SAndroid Build Coastguard Worker __m128i g = _mm_set1_epi32(c1 * seed);
728*993b0882SAndroid Build Coastguard Worker __m128i f = g;
729*993b0882SAndroid Build Coastguard Worker __m128i k = _mm_set1_epi32(0xe6546b64);
730*993b0882SAndroid Build Coastguard Worker __m128i q;
731*993b0882SAndroid Build Coastguard Worker if (len < 80) {
732*993b0882SAndroid Build Coastguard Worker __m128i a = Load128(s);
733*993b0882SAndroid Build Coastguard Worker __m128i b = Load128(s + 16);
734*993b0882SAndroid Build Coastguard Worker __m128i c = Load128(s + (len - 15) / 2);
735*993b0882SAndroid Build Coastguard Worker __m128i d = Load128(s + len - 32);
736*993b0882SAndroid Build Coastguard Worker __m128i e = Load128(s + len - 16);
737*993b0882SAndroid Build Coastguard Worker h = Add(h, a);
738*993b0882SAndroid Build Coastguard Worker g = Add(g, b);
739*993b0882SAndroid Build Coastguard Worker q = g;
740*993b0882SAndroid Build Coastguard Worker g = Shuffle0321(g);
741*993b0882SAndroid Build Coastguard Worker f = Add(f, c);
742*993b0882SAndroid Build Coastguard Worker __m128i be = Add(b, Mulc1(e));
743*993b0882SAndroid Build Coastguard Worker h = Add(h, f);
744*993b0882SAndroid Build Coastguard Worker f = Add(f, h);
745*993b0882SAndroid Build Coastguard Worker h = Add(Murk(d, h), e);
746*993b0882SAndroid Build Coastguard Worker k = Xor(k, _mm_shuffle_epi8(g, f));
747*993b0882SAndroid Build Coastguard Worker g = Add(Xor(c, g), a);
748*993b0882SAndroid Build Coastguard Worker f = Add(Xor(be, f), d);
749*993b0882SAndroid Build Coastguard Worker k = Add(k, be);
750*993b0882SAndroid Build Coastguard Worker k = Add(k, _mm_shuffle_epi8(f, h));
751*993b0882SAndroid Build Coastguard Worker f = Add(f, g);
752*993b0882SAndroid Build Coastguard Worker g = Add(g, f);
753*993b0882SAndroid Build Coastguard Worker g = Add(_mm_set1_epi32(len), Mulc1(g));
754*993b0882SAndroid Build Coastguard Worker } else {
755*993b0882SAndroid Build Coastguard Worker // len >= 80
756*993b0882SAndroid Build Coastguard Worker // The following is loosely modelled after farmhashmk::Hash32.
757*993b0882SAndroid Build Coastguard Worker size_t iters = (len - 1) / 80;
758*993b0882SAndroid Build Coastguard Worker len -= iters * 80;
759*993b0882SAndroid Build Coastguard Worker
760*993b0882SAndroid Build Coastguard Worker #undef Chunk
761*993b0882SAndroid Build Coastguard Worker #define Chunk() do { \
762*993b0882SAndroid Build Coastguard Worker __m128i a = Load128(s); \
763*993b0882SAndroid Build Coastguard Worker __m128i b = Load128(s + 16); \
764*993b0882SAndroid Build Coastguard Worker __m128i c = Load128(s + 32); \
765*993b0882SAndroid Build Coastguard Worker __m128i d = Load128(s + 48); \
766*993b0882SAndroid Build Coastguard Worker __m128i e = Load128(s + 64); \
767*993b0882SAndroid Build Coastguard Worker h = Add(h, a); \
768*993b0882SAndroid Build Coastguard Worker g = Add(g, b); \
769*993b0882SAndroid Build Coastguard Worker g = Shuffle0321(g); \
770*993b0882SAndroid Build Coastguard Worker f = Add(f, c); \
771*993b0882SAndroid Build Coastguard Worker __m128i be = Add(b, Mulc1(e)); \
772*993b0882SAndroid Build Coastguard Worker h = Add(h, f); \
773*993b0882SAndroid Build Coastguard Worker f = Add(f, h); \
774*993b0882SAndroid Build Coastguard Worker h = Add(h, d); \
775*993b0882SAndroid Build Coastguard Worker q = Add(q, e); \
776*993b0882SAndroid Build Coastguard Worker h = Rot17(h); \
777*993b0882SAndroid Build Coastguard Worker h = Mulc1(h); \
778*993b0882SAndroid Build Coastguard Worker k = Xor(k, _mm_shuffle_epi8(g, f)); \
779*993b0882SAndroid Build Coastguard Worker g = Add(Xor(c, g), a); \
780*993b0882SAndroid Build Coastguard Worker f = Add(Xor(be, f), d); \
781*993b0882SAndroid Build Coastguard Worker std::swap(f, q); \
782*993b0882SAndroid Build Coastguard Worker q = _mm_aesimc_si128(q); \
783*993b0882SAndroid Build Coastguard Worker k = Add(k, be); \
784*993b0882SAndroid Build Coastguard Worker k = Add(k, _mm_shuffle_epi8(f, h)); \
785*993b0882SAndroid Build Coastguard Worker f = Add(f, g); \
786*993b0882SAndroid Build Coastguard Worker g = Add(g, f); \
787*993b0882SAndroid Build Coastguard Worker f = Mulc1(f); \
788*993b0882SAndroid Build Coastguard Worker } while (0)
789*993b0882SAndroid Build Coastguard Worker
790*993b0882SAndroid Build Coastguard Worker q = g;
791*993b0882SAndroid Build Coastguard Worker while (iters-- != 0) {
792*993b0882SAndroid Build Coastguard Worker Chunk();
793*993b0882SAndroid Build Coastguard Worker s += 80;
794*993b0882SAndroid Build Coastguard Worker }
795*993b0882SAndroid Build Coastguard Worker
796*993b0882SAndroid Build Coastguard Worker if (len != 0) {
797*993b0882SAndroid Build Coastguard Worker h = Add(h, _mm_set1_epi32(len));
798*993b0882SAndroid Build Coastguard Worker s = s + len - 80;
799*993b0882SAndroid Build Coastguard Worker Chunk();
800*993b0882SAndroid Build Coastguard Worker }
801*993b0882SAndroid Build Coastguard Worker }
802*993b0882SAndroid Build Coastguard Worker
803*993b0882SAndroid Build Coastguard Worker g = Shuffle0321(g);
804*993b0882SAndroid Build Coastguard Worker k = Xor(k, g);
805*993b0882SAndroid Build Coastguard Worker k = Xor(k, q);
806*993b0882SAndroid Build Coastguard Worker h = Xor(h, q);
807*993b0882SAndroid Build Coastguard Worker f = Mulc1(f);
808*993b0882SAndroid Build Coastguard Worker k = Mulc2(k);
809*993b0882SAndroid Build Coastguard Worker g = Mulc1(g);
810*993b0882SAndroid Build Coastguard Worker h = Mulc2(h);
811*993b0882SAndroid Build Coastguard Worker k = Add(k, _mm_shuffle_epi8(g, f));
812*993b0882SAndroid Build Coastguard Worker h = Add(h, f);
813*993b0882SAndroid Build Coastguard Worker f = Add(f, h);
814*993b0882SAndroid Build Coastguard Worker g = Add(g, k);
815*993b0882SAndroid Build Coastguard Worker k = Add(k, g);
816*993b0882SAndroid Build Coastguard Worker k = Xor(k, _mm_shuffle_epi8(f, h));
817*993b0882SAndroid Build Coastguard Worker __m128i buf[4];
818*993b0882SAndroid Build Coastguard Worker buf[0] = f;
819*993b0882SAndroid Build Coastguard Worker buf[1] = g;
820*993b0882SAndroid Build Coastguard Worker buf[2] = k;
821*993b0882SAndroid Build Coastguard Worker buf[3] = h;
822*993b0882SAndroid Build Coastguard Worker s = reinterpret_cast<char*>(buf);
823*993b0882SAndroid Build Coastguard Worker uint32_t x = Fetch(s);
824*993b0882SAndroid Build Coastguard Worker uint32_t y = Fetch(s+4);
825*993b0882SAndroid Build Coastguard Worker uint32_t z = Fetch(s+8);
826*993b0882SAndroid Build Coastguard Worker x = _mm_crc32_u32(x, Fetch(s+12));
827*993b0882SAndroid Build Coastguard Worker y = _mm_crc32_u32(y, Fetch(s+16));
828*993b0882SAndroid Build Coastguard Worker z = _mm_crc32_u32(z * c1, Fetch(s+20));
829*993b0882SAndroid Build Coastguard Worker x = _mm_crc32_u32(x, Fetch(s+24));
830*993b0882SAndroid Build Coastguard Worker y = _mm_crc32_u32(y * c1, Fetch(s+28));
831*993b0882SAndroid Build Coastguard Worker uint32_t o = y;
832*993b0882SAndroid Build Coastguard Worker z = _mm_crc32_u32(z, Fetch(s+32));
833*993b0882SAndroid Build Coastguard Worker x = _mm_crc32_u32(x * c1, Fetch(s+36));
834*993b0882SAndroid Build Coastguard Worker y = _mm_crc32_u32(y, Fetch(s+40));
835*993b0882SAndroid Build Coastguard Worker z = _mm_crc32_u32(z * c1, Fetch(s+44));
836*993b0882SAndroid Build Coastguard Worker x = _mm_crc32_u32(x, Fetch(s+48));
837*993b0882SAndroid Build Coastguard Worker y = _mm_crc32_u32(y * c1, Fetch(s+52));
838*993b0882SAndroid Build Coastguard Worker z = _mm_crc32_u32(z, Fetch(s+56));
839*993b0882SAndroid Build Coastguard Worker x = _mm_crc32_u32(x, Fetch(s+60));
840*993b0882SAndroid Build Coastguard Worker return (o - x + y - z) * c1;
841*993b0882SAndroid Build Coastguard Worker }
842*993b0882SAndroid Build Coastguard Worker
843*993b0882SAndroid Build Coastguard Worker #undef Chunk
844*993b0882SAndroid Build Coastguard Worker #undef Murk
845*993b0882SAndroid Build Coastguard Worker #undef Mulc2
846*993b0882SAndroid Build Coastguard Worker #undef Mulc1
847*993b0882SAndroid Build Coastguard Worker
848*993b0882SAndroid Build Coastguard Worker uint32_t Hash32WithSeed(const char *s, size_t len, uint32_t seed) {
849*993b0882SAndroid Build Coastguard Worker if (len <= 24) {
850*993b0882SAndroid Build Coastguard Worker if (len >= 13) return farmhashmk::Hash32Len13to24(s, len, seed * c1);
851*993b0882SAndroid Build Coastguard Worker else if (len >= 5) return farmhashmk::Hash32Len5to12(s, len, seed);
852*993b0882SAndroid Build Coastguard Worker else return farmhashmk::Hash32Len0to4(s, len, seed);
853*993b0882SAndroid Build Coastguard Worker }
854*993b0882SAndroid Build Coastguard Worker uint32_t h = farmhashmk::Hash32Len13to24(s, 24, seed ^ len);
855*993b0882SAndroid Build Coastguard Worker return _mm_crc32_u32(Hash32(s + 24, len - 24) + seed, h);
856*993b0882SAndroid Build Coastguard Worker }
857*993b0882SAndroid Build Coastguard Worker
858*993b0882SAndroid Build Coastguard Worker #endif
859*993b0882SAndroid Build Coastguard Worker } // namespace farmhashsu
860*993b0882SAndroid Build Coastguard Worker namespace farmhashns {
861*993b0882SAndroid Build Coastguard Worker #if !can_use_sse42 || !can_use_aesni || !x86_64
862*993b0882SAndroid Build Coastguard Worker
Hash32(const char * s,size_t len)863*993b0882SAndroid Build Coastguard Worker uint32_t Hash32(const char *s, size_t len) {
864*993b0882SAndroid Build Coastguard Worker FARMHASH_DIE_IF_MISCONFIGURED;
865*993b0882SAndroid Build Coastguard Worker return s == nullptr ? 0 : len;
866*993b0882SAndroid Build Coastguard Worker }
867*993b0882SAndroid Build Coastguard Worker
Hash32WithSeed(const char * s,size_t len,uint32_t seed)868*993b0882SAndroid Build Coastguard Worker uint32_t Hash32WithSeed(const char *s, size_t len, uint32_t seed) {
869*993b0882SAndroid Build Coastguard Worker FARMHASH_DIE_IF_MISCONFIGURED;
870*993b0882SAndroid Build Coastguard Worker return seed + Hash32(s, len);
871*993b0882SAndroid Build Coastguard Worker }
872*993b0882SAndroid Build Coastguard Worker
873*993b0882SAndroid Build Coastguard Worker #else
874*993b0882SAndroid Build Coastguard Worker
875*993b0882SAndroid Build Coastguard Worker uint32_t Hash32(const char *s, size_t len) {
876*993b0882SAndroid Build Coastguard Worker return len <= 256 ?
877*993b0882SAndroid Build Coastguard Worker static_cast<uint32_t>(farmhashna::Hash64(s, len)) :
878*993b0882SAndroid Build Coastguard Worker farmhashsu::Hash32(s, len);
879*993b0882SAndroid Build Coastguard Worker }
880*993b0882SAndroid Build Coastguard Worker
881*993b0882SAndroid Build Coastguard Worker uint32_t Hash32WithSeed(const char *s, size_t len, uint32_t seed) {
882*993b0882SAndroid Build Coastguard Worker return len <= 256 ?
883*993b0882SAndroid Build Coastguard Worker static_cast<uint32_t>(farmhashna::Hash64WithSeed(s, len, seed)) :
884*993b0882SAndroid Build Coastguard Worker farmhashsu::Hash32WithSeed(s, len, seed);
885*993b0882SAndroid Build Coastguard Worker }
886*993b0882SAndroid Build Coastguard Worker
887*993b0882SAndroid Build Coastguard Worker #endif
888*993b0882SAndroid Build Coastguard Worker } // namespace farmhashns
889*993b0882SAndroid Build Coastguard Worker namespace farmhashsa {
890*993b0882SAndroid Build Coastguard Worker #if !can_use_sse42
891*993b0882SAndroid Build Coastguard Worker
Hash32(const char * s,size_t len)892*993b0882SAndroid Build Coastguard Worker uint32_t Hash32(const char *s, size_t len) {
893*993b0882SAndroid Build Coastguard Worker FARMHASH_DIE_IF_MISCONFIGURED;
894*993b0882SAndroid Build Coastguard Worker return s == nullptr ? 0 : len;
895*993b0882SAndroid Build Coastguard Worker }
896*993b0882SAndroid Build Coastguard Worker
Hash32WithSeed(const char * s,size_t len,uint32_t seed)897*993b0882SAndroid Build Coastguard Worker uint32_t Hash32WithSeed(const char *s, size_t len, uint32_t seed) {
898*993b0882SAndroid Build Coastguard Worker FARMHASH_DIE_IF_MISCONFIGURED;
899*993b0882SAndroid Build Coastguard Worker return seed + Hash32(s, len);
900*993b0882SAndroid Build Coastguard Worker }
901*993b0882SAndroid Build Coastguard Worker
902*993b0882SAndroid Build Coastguard Worker #else
903*993b0882SAndroid Build Coastguard Worker
904*993b0882SAndroid Build Coastguard Worker #undef Fetch
905*993b0882SAndroid Build Coastguard Worker #define Fetch Fetch32
906*993b0882SAndroid Build Coastguard Worker
907*993b0882SAndroid Build Coastguard Worker #undef Rotate
908*993b0882SAndroid Build Coastguard Worker #define Rotate Rotate32
909*993b0882SAndroid Build Coastguard Worker
910*993b0882SAndroid Build Coastguard Worker #undef Bswap
911*993b0882SAndroid Build Coastguard Worker #define Bswap Bswap32
912*993b0882SAndroid Build Coastguard Worker
913*993b0882SAndroid Build Coastguard Worker // Helpers for data-parallel operations (4x 32-bits).
914*993b0882SAndroid Build Coastguard Worker STATIC_INLINE __m128i Add(__m128i x, __m128i y) { return _mm_add_epi32(x, y); }
915*993b0882SAndroid Build Coastguard Worker STATIC_INLINE __m128i Xor(__m128i x, __m128i y) { return _mm_xor_si128(x, y); }
916*993b0882SAndroid Build Coastguard Worker STATIC_INLINE __m128i Or(__m128i x, __m128i y) { return _mm_or_si128(x, y); }
917*993b0882SAndroid Build Coastguard Worker STATIC_INLINE __m128i Mul(__m128i x, __m128i y) { return _mm_mullo_epi32(x, y); }
918*993b0882SAndroid Build Coastguard Worker STATIC_INLINE __m128i Mul5(__m128i x) { return Add(x, _mm_slli_epi32(x, 2)); }
919*993b0882SAndroid Build Coastguard Worker STATIC_INLINE __m128i Rotate(__m128i x, int c) {
920*993b0882SAndroid Build Coastguard Worker return Or(_mm_slli_epi32(x, c),
921*993b0882SAndroid Build Coastguard Worker _mm_srli_epi32(x, 32 - c));
922*993b0882SAndroid Build Coastguard Worker }
923*993b0882SAndroid Build Coastguard Worker STATIC_INLINE __m128i Rot17(__m128i x) { return Rotate(x, 17); }
924*993b0882SAndroid Build Coastguard Worker STATIC_INLINE __m128i Rot19(__m128i x) { return Rotate(x, 19); }
925*993b0882SAndroid Build Coastguard Worker STATIC_INLINE __m128i Shuffle0321(__m128i x) {
926*993b0882SAndroid Build Coastguard Worker return _mm_shuffle_epi32(x, (0 << 6) + (3 << 4) + (2 << 2) + (1 << 0));
927*993b0882SAndroid Build Coastguard Worker }
928*993b0882SAndroid Build Coastguard Worker
929*993b0882SAndroid Build Coastguard Worker uint32_t Hash32(const char *s, size_t len) {
930*993b0882SAndroid Build Coastguard Worker const uint32_t seed = 81;
931*993b0882SAndroid Build Coastguard Worker if (len <= 24) {
932*993b0882SAndroid Build Coastguard Worker return len <= 12 ?
933*993b0882SAndroid Build Coastguard Worker (len <= 4 ?
934*993b0882SAndroid Build Coastguard Worker farmhashmk::Hash32Len0to4(s, len) :
935*993b0882SAndroid Build Coastguard Worker farmhashmk::Hash32Len5to12(s, len)) :
936*993b0882SAndroid Build Coastguard Worker farmhashmk::Hash32Len13to24(s, len);
937*993b0882SAndroid Build Coastguard Worker }
938*993b0882SAndroid Build Coastguard Worker
939*993b0882SAndroid Build Coastguard Worker if (len < 40) {
940*993b0882SAndroid Build Coastguard Worker uint32_t a = len, b = seed * c2, c = a + b;
941*993b0882SAndroid Build Coastguard Worker a += Fetch(s + len - 4);
942*993b0882SAndroid Build Coastguard Worker b += Fetch(s + len - 20);
943*993b0882SAndroid Build Coastguard Worker c += Fetch(s + len - 16);
944*993b0882SAndroid Build Coastguard Worker uint32_t d = a;
945*993b0882SAndroid Build Coastguard Worker a = NAMESPACE_FOR_HASH_FUNCTIONS::Rotate32(a, 21);
946*993b0882SAndroid Build Coastguard Worker a = Mur(a, Mur(b, Mur(c, d)));
947*993b0882SAndroid Build Coastguard Worker a += Fetch(s + len - 12);
948*993b0882SAndroid Build Coastguard Worker b += Fetch(s + len - 8);
949*993b0882SAndroid Build Coastguard Worker d += a;
950*993b0882SAndroid Build Coastguard Worker a += d;
951*993b0882SAndroid Build Coastguard Worker b = Mur(b, d) * c2;
952*993b0882SAndroid Build Coastguard Worker a = _mm_crc32_u32(a, b + c);
953*993b0882SAndroid Build Coastguard Worker return farmhashmk::Hash32Len13to24(s, (len + 1) / 2, a) + b;
954*993b0882SAndroid Build Coastguard Worker }
955*993b0882SAndroid Build Coastguard Worker
956*993b0882SAndroid Build Coastguard Worker #undef Mulc1
957*993b0882SAndroid Build Coastguard Worker #define Mulc1(x) Mul((x), cc1)
958*993b0882SAndroid Build Coastguard Worker
959*993b0882SAndroid Build Coastguard Worker #undef Mulc2
960*993b0882SAndroid Build Coastguard Worker #define Mulc2(x) Mul((x), cc2)
961*993b0882SAndroid Build Coastguard Worker
962*993b0882SAndroid Build Coastguard Worker #undef Murk
963*993b0882SAndroid Build Coastguard Worker #define Murk(a, h) \
964*993b0882SAndroid Build Coastguard Worker Add(k, \
965*993b0882SAndroid Build Coastguard Worker Mul5( \
966*993b0882SAndroid Build Coastguard Worker Rot19( \
967*993b0882SAndroid Build Coastguard Worker Xor( \
968*993b0882SAndroid Build Coastguard Worker Mulc2( \
969*993b0882SAndroid Build Coastguard Worker Rot17( \
970*993b0882SAndroid Build Coastguard Worker Mulc1(a))), \
971*993b0882SAndroid Build Coastguard Worker (h)))))
972*993b0882SAndroid Build Coastguard Worker
973*993b0882SAndroid Build Coastguard Worker const __m128i cc1 = _mm_set1_epi32(c1);
974*993b0882SAndroid Build Coastguard Worker const __m128i cc2 = _mm_set1_epi32(c2);
975*993b0882SAndroid Build Coastguard Worker __m128i h = _mm_set1_epi32(seed);
976*993b0882SAndroid Build Coastguard Worker __m128i g = _mm_set1_epi32(c1 * seed);
977*993b0882SAndroid Build Coastguard Worker __m128i f = g;
978*993b0882SAndroid Build Coastguard Worker __m128i k = _mm_set1_epi32(0xe6546b64);
979*993b0882SAndroid Build Coastguard Worker if (len < 80) {
980*993b0882SAndroid Build Coastguard Worker __m128i a = Load128(s);
981*993b0882SAndroid Build Coastguard Worker __m128i b = Load128(s + 16);
982*993b0882SAndroid Build Coastguard Worker __m128i c = Load128(s + (len - 15) / 2);
983*993b0882SAndroid Build Coastguard Worker __m128i d = Load128(s + len - 32);
984*993b0882SAndroid Build Coastguard Worker __m128i e = Load128(s + len - 16);
985*993b0882SAndroid Build Coastguard Worker h = Add(h, a);
986*993b0882SAndroid Build Coastguard Worker g = Add(g, b);
987*993b0882SAndroid Build Coastguard Worker g = Shuffle0321(g);
988*993b0882SAndroid Build Coastguard Worker f = Add(f, c);
989*993b0882SAndroid Build Coastguard Worker __m128i be = Add(b, Mulc1(e));
990*993b0882SAndroid Build Coastguard Worker h = Add(h, f);
991*993b0882SAndroid Build Coastguard Worker f = Add(f, h);
992*993b0882SAndroid Build Coastguard Worker h = Add(Murk(d, h), e);
993*993b0882SAndroid Build Coastguard Worker k = Xor(k, _mm_shuffle_epi8(g, f));
994*993b0882SAndroid Build Coastguard Worker g = Add(Xor(c, g), a);
995*993b0882SAndroid Build Coastguard Worker f = Add(Xor(be, f), d);
996*993b0882SAndroid Build Coastguard Worker k = Add(k, be);
997*993b0882SAndroid Build Coastguard Worker k = Add(k, _mm_shuffle_epi8(f, h));
998*993b0882SAndroid Build Coastguard Worker f = Add(f, g);
999*993b0882SAndroid Build Coastguard Worker g = Add(g, f);
1000*993b0882SAndroid Build Coastguard Worker g = Add(_mm_set1_epi32(len), Mulc1(g));
1001*993b0882SAndroid Build Coastguard Worker } else {
1002*993b0882SAndroid Build Coastguard Worker // len >= 80
1003*993b0882SAndroid Build Coastguard Worker // The following is loosely modelled after farmhashmk::Hash32.
1004*993b0882SAndroid Build Coastguard Worker size_t iters = (len - 1) / 80;
1005*993b0882SAndroid Build Coastguard Worker len -= iters * 80;
1006*993b0882SAndroid Build Coastguard Worker
1007*993b0882SAndroid Build Coastguard Worker #undef Chunk
1008*993b0882SAndroid Build Coastguard Worker #define Chunk() do { \
1009*993b0882SAndroid Build Coastguard Worker __m128i a = Load128(s); \
1010*993b0882SAndroid Build Coastguard Worker __m128i b = Load128(s + 16); \
1011*993b0882SAndroid Build Coastguard Worker __m128i c = Load128(s + 32); \
1012*993b0882SAndroid Build Coastguard Worker __m128i d = Load128(s + 48); \
1013*993b0882SAndroid Build Coastguard Worker __m128i e = Load128(s + 64); \
1014*993b0882SAndroid Build Coastguard Worker h = Add(h, a); \
1015*993b0882SAndroid Build Coastguard Worker g = Add(g, b); \
1016*993b0882SAndroid Build Coastguard Worker g = Shuffle0321(g); \
1017*993b0882SAndroid Build Coastguard Worker f = Add(f, c); \
1018*993b0882SAndroid Build Coastguard Worker __m128i be = Add(b, Mulc1(e)); \
1019*993b0882SAndroid Build Coastguard Worker h = Add(h, f); \
1020*993b0882SAndroid Build Coastguard Worker f = Add(f, h); \
1021*993b0882SAndroid Build Coastguard Worker h = Add(Murk(d, h), e); \
1022*993b0882SAndroid Build Coastguard Worker k = Xor(k, _mm_shuffle_epi8(g, f)); \
1023*993b0882SAndroid Build Coastguard Worker g = Add(Xor(c, g), a); \
1024*993b0882SAndroid Build Coastguard Worker f = Add(Xor(be, f), d); \
1025*993b0882SAndroid Build Coastguard Worker k = Add(k, be); \
1026*993b0882SAndroid Build Coastguard Worker k = Add(k, _mm_shuffle_epi8(f, h)); \
1027*993b0882SAndroid Build Coastguard Worker f = Add(f, g); \
1028*993b0882SAndroid Build Coastguard Worker g = Add(g, f); \
1029*993b0882SAndroid Build Coastguard Worker f = Mulc1(f); \
1030*993b0882SAndroid Build Coastguard Worker } while (0)
1031*993b0882SAndroid Build Coastguard Worker
1032*993b0882SAndroid Build Coastguard Worker while (iters-- != 0) {
1033*993b0882SAndroid Build Coastguard Worker Chunk();
1034*993b0882SAndroid Build Coastguard Worker s += 80;
1035*993b0882SAndroid Build Coastguard Worker }
1036*993b0882SAndroid Build Coastguard Worker
1037*993b0882SAndroid Build Coastguard Worker if (len != 0) {
1038*993b0882SAndroid Build Coastguard Worker h = Add(h, _mm_set1_epi32(len));
1039*993b0882SAndroid Build Coastguard Worker s = s + len - 80;
1040*993b0882SAndroid Build Coastguard Worker Chunk();
1041*993b0882SAndroid Build Coastguard Worker }
1042*993b0882SAndroid Build Coastguard Worker }
1043*993b0882SAndroid Build Coastguard Worker
1044*993b0882SAndroid Build Coastguard Worker g = Shuffle0321(g);
1045*993b0882SAndroid Build Coastguard Worker k = Xor(k, g);
1046*993b0882SAndroid Build Coastguard Worker f = Mulc1(f);
1047*993b0882SAndroid Build Coastguard Worker k = Mulc2(k);
1048*993b0882SAndroid Build Coastguard Worker g = Mulc1(g);
1049*993b0882SAndroid Build Coastguard Worker h = Mulc2(h);
1050*993b0882SAndroid Build Coastguard Worker k = Add(k, _mm_shuffle_epi8(g, f));
1051*993b0882SAndroid Build Coastguard Worker h = Add(h, f);
1052*993b0882SAndroid Build Coastguard Worker f = Add(f, h);
1053*993b0882SAndroid Build Coastguard Worker g = Add(g, k);
1054*993b0882SAndroid Build Coastguard Worker k = Add(k, g);
1055*993b0882SAndroid Build Coastguard Worker k = Xor(k, _mm_shuffle_epi8(f, h));
1056*993b0882SAndroid Build Coastguard Worker __m128i buf[4];
1057*993b0882SAndroid Build Coastguard Worker buf[0] = f;
1058*993b0882SAndroid Build Coastguard Worker buf[1] = g;
1059*993b0882SAndroid Build Coastguard Worker buf[2] = k;
1060*993b0882SAndroid Build Coastguard Worker buf[3] = h;
1061*993b0882SAndroid Build Coastguard Worker s = reinterpret_cast<char*>(buf);
1062*993b0882SAndroid Build Coastguard Worker uint32_t x = Fetch(s);
1063*993b0882SAndroid Build Coastguard Worker uint32_t y = Fetch(s+4);
1064*993b0882SAndroid Build Coastguard Worker uint32_t z = Fetch(s+8);
1065*993b0882SAndroid Build Coastguard Worker x = _mm_crc32_u32(x, Fetch(s+12));
1066*993b0882SAndroid Build Coastguard Worker y = _mm_crc32_u32(y, Fetch(s+16));
1067*993b0882SAndroid Build Coastguard Worker z = _mm_crc32_u32(z * c1, Fetch(s+20));
1068*993b0882SAndroid Build Coastguard Worker x = _mm_crc32_u32(x, Fetch(s+24));
1069*993b0882SAndroid Build Coastguard Worker y = _mm_crc32_u32(y * c1, Fetch(s+28));
1070*993b0882SAndroid Build Coastguard Worker uint32_t o = y;
1071*993b0882SAndroid Build Coastguard Worker z = _mm_crc32_u32(z, Fetch(s+32));
1072*993b0882SAndroid Build Coastguard Worker x = _mm_crc32_u32(x * c1, Fetch(s+36));
1073*993b0882SAndroid Build Coastguard Worker y = _mm_crc32_u32(y, Fetch(s+40));
1074*993b0882SAndroid Build Coastguard Worker z = _mm_crc32_u32(z * c1, Fetch(s+44));
1075*993b0882SAndroid Build Coastguard Worker x = _mm_crc32_u32(x, Fetch(s+48));
1076*993b0882SAndroid Build Coastguard Worker y = _mm_crc32_u32(y * c1, Fetch(s+52));
1077*993b0882SAndroid Build Coastguard Worker z = _mm_crc32_u32(z, Fetch(s+56));
1078*993b0882SAndroid Build Coastguard Worker x = _mm_crc32_u32(x, Fetch(s+60));
1079*993b0882SAndroid Build Coastguard Worker return (o - x + y - z) * c1;
1080*993b0882SAndroid Build Coastguard Worker }
1081*993b0882SAndroid Build Coastguard Worker
1082*993b0882SAndroid Build Coastguard Worker #undef Chunk
1083*993b0882SAndroid Build Coastguard Worker #undef Murk
1084*993b0882SAndroid Build Coastguard Worker #undef Mulc2
1085*993b0882SAndroid Build Coastguard Worker #undef Mulc1
1086*993b0882SAndroid Build Coastguard Worker
1087*993b0882SAndroid Build Coastguard Worker uint32_t Hash32WithSeed(const char *s, size_t len, uint32_t seed) {
1088*993b0882SAndroid Build Coastguard Worker if (len <= 24) {
1089*993b0882SAndroid Build Coastguard Worker if (len >= 13) return farmhashmk::Hash32Len13to24(s, len, seed * c1);
1090*993b0882SAndroid Build Coastguard Worker else if (len >= 5) return farmhashmk::Hash32Len5to12(s, len, seed);
1091*993b0882SAndroid Build Coastguard Worker else return farmhashmk::Hash32Len0to4(s, len, seed);
1092*993b0882SAndroid Build Coastguard Worker }
1093*993b0882SAndroid Build Coastguard Worker uint32_t h = farmhashmk::Hash32Len13to24(s, 24, seed ^ len);
1094*993b0882SAndroid Build Coastguard Worker return _mm_crc32_u32(Hash32(s + 24, len - 24) + seed, h);
1095*993b0882SAndroid Build Coastguard Worker }
1096*993b0882SAndroid Build Coastguard Worker
1097*993b0882SAndroid Build Coastguard Worker #endif
1098*993b0882SAndroid Build Coastguard Worker } // namespace farmhashsa
1099*993b0882SAndroid Build Coastguard Worker namespace farmhashcc {
1100*993b0882SAndroid Build Coastguard Worker // This file provides a 32-bit hash equivalent to CityHash32 (v1.1.1)
1101*993b0882SAndroid Build Coastguard Worker // and a 128-bit hash equivalent to CityHash128 (v1.1.1). It also provides
1102*993b0882SAndroid Build Coastguard Worker // a seeded 32-bit hash function similar to CityHash32.
1103*993b0882SAndroid Build Coastguard Worker
1104*993b0882SAndroid Build Coastguard Worker #undef Fetch
1105*993b0882SAndroid Build Coastguard Worker #define Fetch Fetch32
1106*993b0882SAndroid Build Coastguard Worker
1107*993b0882SAndroid Build Coastguard Worker #undef Rotate
1108*993b0882SAndroid Build Coastguard Worker #define Rotate Rotate32
1109*993b0882SAndroid Build Coastguard Worker
1110*993b0882SAndroid Build Coastguard Worker #undef Bswap
1111*993b0882SAndroid Build Coastguard Worker #define Bswap Bswap32
1112*993b0882SAndroid Build Coastguard Worker
Hash32Len13to24(const char * s,size_t len)1113*993b0882SAndroid Build Coastguard Worker STATIC_INLINE uint32_t Hash32Len13to24(const char *s, size_t len) {
1114*993b0882SAndroid Build Coastguard Worker uint32_t a = Fetch(s - 4 + (len >> 1));
1115*993b0882SAndroid Build Coastguard Worker uint32_t b = Fetch(s + 4);
1116*993b0882SAndroid Build Coastguard Worker uint32_t c = Fetch(s + len - 8);
1117*993b0882SAndroid Build Coastguard Worker uint32_t d = Fetch(s + (len >> 1));
1118*993b0882SAndroid Build Coastguard Worker uint32_t e = Fetch(s);
1119*993b0882SAndroid Build Coastguard Worker uint32_t f = Fetch(s + len - 4);
1120*993b0882SAndroid Build Coastguard Worker uint32_t h = len;
1121*993b0882SAndroid Build Coastguard Worker
1122*993b0882SAndroid Build Coastguard Worker return fmix(Mur(f, Mur(e, Mur(d, Mur(c, Mur(b, Mur(a, h)))))));
1123*993b0882SAndroid Build Coastguard Worker }
1124*993b0882SAndroid Build Coastguard Worker
Hash32Len0to4(const char * s,size_t len)1125*993b0882SAndroid Build Coastguard Worker STATIC_INLINE uint32_t Hash32Len0to4(const char *s, size_t len) {
1126*993b0882SAndroid Build Coastguard Worker uint32_t b = 0;
1127*993b0882SAndroid Build Coastguard Worker uint32_t c = 9;
1128*993b0882SAndroid Build Coastguard Worker for (size_t i = 0; i < len; i++) {
1129*993b0882SAndroid Build Coastguard Worker signed char v = s[i];
1130*993b0882SAndroid Build Coastguard Worker b = b * c1 + v;
1131*993b0882SAndroid Build Coastguard Worker c ^= b;
1132*993b0882SAndroid Build Coastguard Worker }
1133*993b0882SAndroid Build Coastguard Worker return fmix(Mur(b, Mur(len, c)));
1134*993b0882SAndroid Build Coastguard Worker }
1135*993b0882SAndroid Build Coastguard Worker
Hash32Len5to12(const char * s,size_t len)1136*993b0882SAndroid Build Coastguard Worker STATIC_INLINE uint32_t Hash32Len5to12(const char *s, size_t len) {
1137*993b0882SAndroid Build Coastguard Worker uint32_t a = len, b = len * 5, c = 9, d = b;
1138*993b0882SAndroid Build Coastguard Worker a += Fetch(s);
1139*993b0882SAndroid Build Coastguard Worker b += Fetch(s + len - 4);
1140*993b0882SAndroid Build Coastguard Worker c += Fetch(s + ((len >> 1) & 4));
1141*993b0882SAndroid Build Coastguard Worker return fmix(Mur(c, Mur(b, Mur(a, d))));
1142*993b0882SAndroid Build Coastguard Worker }
1143*993b0882SAndroid Build Coastguard Worker
Hash32(const char * s,size_t len)1144*993b0882SAndroid Build Coastguard Worker uint32_t Hash32(const char *s, size_t len) {
1145*993b0882SAndroid Build Coastguard Worker if (len <= 24) {
1146*993b0882SAndroid Build Coastguard Worker return len <= 12 ?
1147*993b0882SAndroid Build Coastguard Worker (len <= 4 ? Hash32Len0to4(s, len) : Hash32Len5to12(s, len)) :
1148*993b0882SAndroid Build Coastguard Worker Hash32Len13to24(s, len);
1149*993b0882SAndroid Build Coastguard Worker }
1150*993b0882SAndroid Build Coastguard Worker
1151*993b0882SAndroid Build Coastguard Worker // len > 24
1152*993b0882SAndroid Build Coastguard Worker uint32_t h = len, g = c1 * len, f = g;
1153*993b0882SAndroid Build Coastguard Worker uint32_t a0 = Rotate(Fetch(s + len - 4) * c1, 17) * c2;
1154*993b0882SAndroid Build Coastguard Worker uint32_t a1 = Rotate(Fetch(s + len - 8) * c1, 17) * c2;
1155*993b0882SAndroid Build Coastguard Worker uint32_t a2 = Rotate(Fetch(s + len - 16) * c1, 17) * c2;
1156*993b0882SAndroid Build Coastguard Worker uint32_t a3 = Rotate(Fetch(s + len - 12) * c1, 17) * c2;
1157*993b0882SAndroid Build Coastguard Worker uint32_t a4 = Rotate(Fetch(s + len - 20) * c1, 17) * c2;
1158*993b0882SAndroid Build Coastguard Worker h ^= a0;
1159*993b0882SAndroid Build Coastguard Worker h = Rotate(h, 19);
1160*993b0882SAndroid Build Coastguard Worker h = h * 5 + 0xe6546b64;
1161*993b0882SAndroid Build Coastguard Worker h ^= a2;
1162*993b0882SAndroid Build Coastguard Worker h = Rotate(h, 19);
1163*993b0882SAndroid Build Coastguard Worker h = h * 5 + 0xe6546b64;
1164*993b0882SAndroid Build Coastguard Worker g ^= a1;
1165*993b0882SAndroid Build Coastguard Worker g = Rotate(g, 19);
1166*993b0882SAndroid Build Coastguard Worker g = g * 5 + 0xe6546b64;
1167*993b0882SAndroid Build Coastguard Worker g ^= a3;
1168*993b0882SAndroid Build Coastguard Worker g = Rotate(g, 19);
1169*993b0882SAndroid Build Coastguard Worker g = g * 5 + 0xe6546b64;
1170*993b0882SAndroid Build Coastguard Worker f += a4;
1171*993b0882SAndroid Build Coastguard Worker f = Rotate(f, 19);
1172*993b0882SAndroid Build Coastguard Worker f = f * 5 + 0xe6546b64;
1173*993b0882SAndroid Build Coastguard Worker size_t iters = (len - 1) / 20;
1174*993b0882SAndroid Build Coastguard Worker do {
1175*993b0882SAndroid Build Coastguard Worker uint32_t a0 = Rotate(Fetch(s) * c1, 17) * c2;
1176*993b0882SAndroid Build Coastguard Worker uint32_t a1 = Fetch(s + 4);
1177*993b0882SAndroid Build Coastguard Worker uint32_t a2 = Rotate(Fetch(s + 8) * c1, 17) * c2;
1178*993b0882SAndroid Build Coastguard Worker uint32_t a3 = Rotate(Fetch(s + 12) * c1, 17) * c2;
1179*993b0882SAndroid Build Coastguard Worker uint32_t a4 = Fetch(s + 16);
1180*993b0882SAndroid Build Coastguard Worker h ^= a0;
1181*993b0882SAndroid Build Coastguard Worker h = Rotate(h, 18);
1182*993b0882SAndroid Build Coastguard Worker h = h * 5 + 0xe6546b64;
1183*993b0882SAndroid Build Coastguard Worker f += a1;
1184*993b0882SAndroid Build Coastguard Worker f = Rotate(f, 19);
1185*993b0882SAndroid Build Coastguard Worker f = f * c1;
1186*993b0882SAndroid Build Coastguard Worker g += a2;
1187*993b0882SAndroid Build Coastguard Worker g = Rotate(g, 18);
1188*993b0882SAndroid Build Coastguard Worker g = g * 5 + 0xe6546b64;
1189*993b0882SAndroid Build Coastguard Worker h ^= a3 + a1;
1190*993b0882SAndroid Build Coastguard Worker h = Rotate(h, 19);
1191*993b0882SAndroid Build Coastguard Worker h = h * 5 + 0xe6546b64;
1192*993b0882SAndroid Build Coastguard Worker g ^= a4;
1193*993b0882SAndroid Build Coastguard Worker g = Bswap(g) * 5;
1194*993b0882SAndroid Build Coastguard Worker h += a4 * 5;
1195*993b0882SAndroid Build Coastguard Worker h = Bswap(h);
1196*993b0882SAndroid Build Coastguard Worker f += a0;
1197*993b0882SAndroid Build Coastguard Worker PERMUTE3(f, h, g);
1198*993b0882SAndroid Build Coastguard Worker s += 20;
1199*993b0882SAndroid Build Coastguard Worker } while (--iters != 0);
1200*993b0882SAndroid Build Coastguard Worker g = Rotate(g, 11) * c1;
1201*993b0882SAndroid Build Coastguard Worker g = Rotate(g, 17) * c1;
1202*993b0882SAndroid Build Coastguard Worker f = Rotate(f, 11) * c1;
1203*993b0882SAndroid Build Coastguard Worker f = Rotate(f, 17) * c1;
1204*993b0882SAndroid Build Coastguard Worker h = Rotate(h + g, 19);
1205*993b0882SAndroid Build Coastguard Worker h = h * 5 + 0xe6546b64;
1206*993b0882SAndroid Build Coastguard Worker h = Rotate(h, 17) * c1;
1207*993b0882SAndroid Build Coastguard Worker h = Rotate(h + f, 19);
1208*993b0882SAndroid Build Coastguard Worker h = h * 5 + 0xe6546b64;
1209*993b0882SAndroid Build Coastguard Worker h = Rotate(h, 17) * c1;
1210*993b0882SAndroid Build Coastguard Worker return h;
1211*993b0882SAndroid Build Coastguard Worker }
1212*993b0882SAndroid Build Coastguard Worker
Hash32WithSeed(const char * s,size_t len,uint32_t seed)1213*993b0882SAndroid Build Coastguard Worker uint32_t Hash32WithSeed(const char *s, size_t len, uint32_t seed) {
1214*993b0882SAndroid Build Coastguard Worker if (len <= 24) {
1215*993b0882SAndroid Build Coastguard Worker if (len >= 13) return farmhashmk::Hash32Len13to24(s, len, seed * c1);
1216*993b0882SAndroid Build Coastguard Worker else if (len >= 5) return farmhashmk::Hash32Len5to12(s, len, seed);
1217*993b0882SAndroid Build Coastguard Worker else return farmhashmk::Hash32Len0to4(s, len, seed);
1218*993b0882SAndroid Build Coastguard Worker }
1219*993b0882SAndroid Build Coastguard Worker uint32_t h = farmhashmk::Hash32Len13to24(s, 24, seed ^ len);
1220*993b0882SAndroid Build Coastguard Worker return Mur(Hash32(s + 24, len - 24) + seed, h);
1221*993b0882SAndroid Build Coastguard Worker }
1222*993b0882SAndroid Build Coastguard Worker
1223*993b0882SAndroid Build Coastguard Worker #undef Fetch
1224*993b0882SAndroid Build Coastguard Worker #define Fetch Fetch64
1225*993b0882SAndroid Build Coastguard Worker
1226*993b0882SAndroid Build Coastguard Worker #undef Rotate
1227*993b0882SAndroid Build Coastguard Worker #define Rotate Rotate64
1228*993b0882SAndroid Build Coastguard Worker
1229*993b0882SAndroid Build Coastguard Worker #undef Bswap
1230*993b0882SAndroid Build Coastguard Worker #define Bswap Bswap64
1231*993b0882SAndroid Build Coastguard Worker
ShiftMix(uint64_t val)1232*993b0882SAndroid Build Coastguard Worker STATIC_INLINE uint64_t ShiftMix(uint64_t val) {
1233*993b0882SAndroid Build Coastguard Worker return val ^ (val >> 47);
1234*993b0882SAndroid Build Coastguard Worker }
1235*993b0882SAndroid Build Coastguard Worker
HashLen16(uint64_t u,uint64_t v)1236*993b0882SAndroid Build Coastguard Worker STATIC_INLINE uint64_t HashLen16(uint64_t u, uint64_t v) {
1237*993b0882SAndroid Build Coastguard Worker return Hash128to64(Uint128(u, v));
1238*993b0882SAndroid Build Coastguard Worker }
1239*993b0882SAndroid Build Coastguard Worker
HashLen16(uint64_t u,uint64_t v,uint64_t mul)1240*993b0882SAndroid Build Coastguard Worker STATIC_INLINE uint64_t HashLen16(uint64_t u, uint64_t v, uint64_t mul) {
1241*993b0882SAndroid Build Coastguard Worker // Murmur-inspired hashing.
1242*993b0882SAndroid Build Coastguard Worker uint64_t a = (u ^ v) * mul;
1243*993b0882SAndroid Build Coastguard Worker a ^= (a >> 47);
1244*993b0882SAndroid Build Coastguard Worker uint64_t b = (v ^ a) * mul;
1245*993b0882SAndroid Build Coastguard Worker b ^= (b >> 47);
1246*993b0882SAndroid Build Coastguard Worker b *= mul;
1247*993b0882SAndroid Build Coastguard Worker return b;
1248*993b0882SAndroid Build Coastguard Worker }
1249*993b0882SAndroid Build Coastguard Worker
HashLen0to16(const char * s,size_t len)1250*993b0882SAndroid Build Coastguard Worker STATIC_INLINE uint64_t HashLen0to16(const char *s, size_t len) {
1251*993b0882SAndroid Build Coastguard Worker if (len >= 8) {
1252*993b0882SAndroid Build Coastguard Worker uint64_t mul = k2 + len * 2;
1253*993b0882SAndroid Build Coastguard Worker uint64_t a = Fetch(s) + k2;
1254*993b0882SAndroid Build Coastguard Worker uint64_t b = Fetch(s + len - 8);
1255*993b0882SAndroid Build Coastguard Worker uint64_t c = Rotate(b, 37) * mul + a;
1256*993b0882SAndroid Build Coastguard Worker uint64_t d = (Rotate(a, 25) + b) * mul;
1257*993b0882SAndroid Build Coastguard Worker return HashLen16(c, d, mul);
1258*993b0882SAndroid Build Coastguard Worker }
1259*993b0882SAndroid Build Coastguard Worker if (len >= 4) {
1260*993b0882SAndroid Build Coastguard Worker uint64_t mul = k2 + len * 2;
1261*993b0882SAndroid Build Coastguard Worker uint64_t a = Fetch32(s);
1262*993b0882SAndroid Build Coastguard Worker return HashLen16(len + (a << 3), Fetch32(s + len - 4), mul);
1263*993b0882SAndroid Build Coastguard Worker }
1264*993b0882SAndroid Build Coastguard Worker if (len > 0) {
1265*993b0882SAndroid Build Coastguard Worker uint8_t a = s[0];
1266*993b0882SAndroid Build Coastguard Worker uint8_t b = s[len >> 1];
1267*993b0882SAndroid Build Coastguard Worker uint8_t c = s[len - 1];
1268*993b0882SAndroid Build Coastguard Worker uint32_t y = static_cast<uint32_t>(a) + (static_cast<uint32_t>(b) << 8);
1269*993b0882SAndroid Build Coastguard Worker uint32_t z = len + (static_cast<uint32_t>(c) << 2);
1270*993b0882SAndroid Build Coastguard Worker return ShiftMix(y * k2 ^ z * k0) * k2;
1271*993b0882SAndroid Build Coastguard Worker }
1272*993b0882SAndroid Build Coastguard Worker return k2;
1273*993b0882SAndroid Build Coastguard Worker }
1274*993b0882SAndroid Build Coastguard Worker
1275*993b0882SAndroid Build Coastguard Worker // Return a 16-byte hash for 48 bytes. Quick and dirty.
1276*993b0882SAndroid Build Coastguard Worker // Callers do best to use "random-looking" values for a and b.
WeakHashLen32WithSeeds(uint64_t w,uint64_t x,uint64_t y,uint64_t z,uint64_t a,uint64_t b)1277*993b0882SAndroid Build Coastguard Worker STATIC_INLINE pair<uint64_t, uint64_t> WeakHashLen32WithSeeds(
1278*993b0882SAndroid Build Coastguard Worker uint64_t w, uint64_t x, uint64_t y, uint64_t z, uint64_t a, uint64_t b) {
1279*993b0882SAndroid Build Coastguard Worker a += w;
1280*993b0882SAndroid Build Coastguard Worker b = Rotate(b + a + z, 21);
1281*993b0882SAndroid Build Coastguard Worker uint64_t c = a;
1282*993b0882SAndroid Build Coastguard Worker a += x;
1283*993b0882SAndroid Build Coastguard Worker a += y;
1284*993b0882SAndroid Build Coastguard Worker b += Rotate(a, 44);
1285*993b0882SAndroid Build Coastguard Worker return std::make_pair(a + z, b + c);
1286*993b0882SAndroid Build Coastguard Worker }
1287*993b0882SAndroid Build Coastguard Worker
1288*993b0882SAndroid Build Coastguard Worker // Return a 16-byte hash for s[0] ... s[31], a, and b. Quick and dirty.
WeakHashLen32WithSeeds(const char * s,uint64_t a,uint64_t b)1289*993b0882SAndroid Build Coastguard Worker STATIC_INLINE pair<uint64_t, uint64_t> WeakHashLen32WithSeeds(
1290*993b0882SAndroid Build Coastguard Worker const char* s, uint64_t a, uint64_t b) {
1291*993b0882SAndroid Build Coastguard Worker return WeakHashLen32WithSeeds(Fetch(s),
1292*993b0882SAndroid Build Coastguard Worker Fetch(s + 8),
1293*993b0882SAndroid Build Coastguard Worker Fetch(s + 16),
1294*993b0882SAndroid Build Coastguard Worker Fetch(s + 24),
1295*993b0882SAndroid Build Coastguard Worker a,
1296*993b0882SAndroid Build Coastguard Worker b);
1297*993b0882SAndroid Build Coastguard Worker }
1298*993b0882SAndroid Build Coastguard Worker
1299*993b0882SAndroid Build Coastguard Worker
1300*993b0882SAndroid Build Coastguard Worker
1301*993b0882SAndroid Build Coastguard Worker // A subroutine for CityHash128(). Returns a decent 128-bit hash for strings
1302*993b0882SAndroid Build Coastguard Worker // of any length representable in signed long. Based on City and Murmur.
CityMurmur(const char * s,size_t len,uint128_t seed)1303*993b0882SAndroid Build Coastguard Worker STATIC_INLINE uint128_t CityMurmur(const char *s, size_t len, uint128_t seed) {
1304*993b0882SAndroid Build Coastguard Worker uint64_t a = Uint128Low64(seed);
1305*993b0882SAndroid Build Coastguard Worker uint64_t b = Uint128High64(seed);
1306*993b0882SAndroid Build Coastguard Worker uint64_t c = 0;
1307*993b0882SAndroid Build Coastguard Worker uint64_t d = 0;
1308*993b0882SAndroid Build Coastguard Worker signed long l = len - 16;
1309*993b0882SAndroid Build Coastguard Worker if (l <= 0) { // len <= 16
1310*993b0882SAndroid Build Coastguard Worker a = ShiftMix(a * k1) * k1;
1311*993b0882SAndroid Build Coastguard Worker c = b * k1 + HashLen0to16(s, len);
1312*993b0882SAndroid Build Coastguard Worker d = ShiftMix(a + (len >= 8 ? Fetch(s) : c));
1313*993b0882SAndroid Build Coastguard Worker } else { // len > 16
1314*993b0882SAndroid Build Coastguard Worker c = HashLen16(Fetch(s + len - 8) + k1, a);
1315*993b0882SAndroid Build Coastguard Worker d = HashLen16(b + len, c + Fetch(s + len - 16));
1316*993b0882SAndroid Build Coastguard Worker a += d;
1317*993b0882SAndroid Build Coastguard Worker do {
1318*993b0882SAndroid Build Coastguard Worker a ^= ShiftMix(Fetch(s) * k1) * k1;
1319*993b0882SAndroid Build Coastguard Worker a *= k1;
1320*993b0882SAndroid Build Coastguard Worker b ^= a;
1321*993b0882SAndroid Build Coastguard Worker c ^= ShiftMix(Fetch(s + 8) * k1) * k1;
1322*993b0882SAndroid Build Coastguard Worker c *= k1;
1323*993b0882SAndroid Build Coastguard Worker d ^= c;
1324*993b0882SAndroid Build Coastguard Worker s += 16;
1325*993b0882SAndroid Build Coastguard Worker l -= 16;
1326*993b0882SAndroid Build Coastguard Worker } while (l > 0);
1327*993b0882SAndroid Build Coastguard Worker }
1328*993b0882SAndroid Build Coastguard Worker a = HashLen16(a, c);
1329*993b0882SAndroid Build Coastguard Worker b = HashLen16(d, b);
1330*993b0882SAndroid Build Coastguard Worker return uint128_t(a ^ b, HashLen16(b, a));
1331*993b0882SAndroid Build Coastguard Worker }
1332*993b0882SAndroid Build Coastguard Worker
CityHash128WithSeed(const char * s,size_t len,uint128_t seed)1333*993b0882SAndroid Build Coastguard Worker uint128_t CityHash128WithSeed(const char *s, size_t len, uint128_t seed) {
1334*993b0882SAndroid Build Coastguard Worker if (len < 128) {
1335*993b0882SAndroid Build Coastguard Worker return CityMurmur(s, len, seed);
1336*993b0882SAndroid Build Coastguard Worker }
1337*993b0882SAndroid Build Coastguard Worker
1338*993b0882SAndroid Build Coastguard Worker // We expect len >= 128 to be the common case. Keep 56 bytes of state:
1339*993b0882SAndroid Build Coastguard Worker // v, w, x, y, and z.
1340*993b0882SAndroid Build Coastguard Worker pair<uint64_t, uint64_t> v, w;
1341*993b0882SAndroid Build Coastguard Worker uint64_t x = Uint128Low64(seed);
1342*993b0882SAndroid Build Coastguard Worker uint64_t y = Uint128High64(seed);
1343*993b0882SAndroid Build Coastguard Worker uint64_t z = len * k1;
1344*993b0882SAndroid Build Coastguard Worker v.first = Rotate(y ^ k1, 49) * k1 + Fetch(s);
1345*993b0882SAndroid Build Coastguard Worker v.second = Rotate(v.first, 42) * k1 + Fetch(s + 8);
1346*993b0882SAndroid Build Coastguard Worker w.first = Rotate(y + z, 35) * k1 + x;
1347*993b0882SAndroid Build Coastguard Worker w.second = Rotate(x + Fetch(s + 88), 53) * k1;
1348*993b0882SAndroid Build Coastguard Worker
1349*993b0882SAndroid Build Coastguard Worker // This is the same inner loop as CityHash64(), manually unrolled.
1350*993b0882SAndroid Build Coastguard Worker do {
1351*993b0882SAndroid Build Coastguard Worker x = Rotate(x + y + v.first + Fetch(s + 8), 37) * k1;
1352*993b0882SAndroid Build Coastguard Worker y = Rotate(y + v.second + Fetch(s + 48), 42) * k1;
1353*993b0882SAndroid Build Coastguard Worker x ^= w.second;
1354*993b0882SAndroid Build Coastguard Worker y += v.first + Fetch(s + 40);
1355*993b0882SAndroid Build Coastguard Worker z = Rotate(z + w.first, 33) * k1;
1356*993b0882SAndroid Build Coastguard Worker v = WeakHashLen32WithSeeds(s, v.second * k1, x + w.first);
1357*993b0882SAndroid Build Coastguard Worker w = WeakHashLen32WithSeeds(s + 32, z + w.second, y + Fetch(s + 16));
1358*993b0882SAndroid Build Coastguard Worker std::swap(z, x);
1359*993b0882SAndroid Build Coastguard Worker s += 64;
1360*993b0882SAndroid Build Coastguard Worker x = Rotate(x + y + v.first + Fetch(s + 8), 37) * k1;
1361*993b0882SAndroid Build Coastguard Worker y = Rotate(y + v.second + Fetch(s + 48), 42) * k1;
1362*993b0882SAndroid Build Coastguard Worker x ^= w.second;
1363*993b0882SAndroid Build Coastguard Worker y += v.first + Fetch(s + 40);
1364*993b0882SAndroid Build Coastguard Worker z = Rotate(z + w.first, 33) * k1;
1365*993b0882SAndroid Build Coastguard Worker v = WeakHashLen32WithSeeds(s, v.second * k1, x + w.first);
1366*993b0882SAndroid Build Coastguard Worker w = WeakHashLen32WithSeeds(s + 32, z + w.second, y + Fetch(s + 16));
1367*993b0882SAndroid Build Coastguard Worker std::swap(z, x);
1368*993b0882SAndroid Build Coastguard Worker s += 64;
1369*993b0882SAndroid Build Coastguard Worker len -= 128;
1370*993b0882SAndroid Build Coastguard Worker } while (LIKELY(len >= 128));
1371*993b0882SAndroid Build Coastguard Worker x += Rotate(v.first + z, 49) * k0;
1372*993b0882SAndroid Build Coastguard Worker y = y * k0 + Rotate(w.second, 37);
1373*993b0882SAndroid Build Coastguard Worker z = z * k0 + Rotate(w.first, 27);
1374*993b0882SAndroid Build Coastguard Worker w.first *= 9;
1375*993b0882SAndroid Build Coastguard Worker v.first *= k0;
1376*993b0882SAndroid Build Coastguard Worker // If 0 < len < 128, hash up to 4 chunks of 32 bytes each from the end of s.
1377*993b0882SAndroid Build Coastguard Worker for (size_t tail_done = 0; tail_done < len; ) {
1378*993b0882SAndroid Build Coastguard Worker tail_done += 32;
1379*993b0882SAndroid Build Coastguard Worker y = Rotate(x + y, 42) * k0 + v.second;
1380*993b0882SAndroid Build Coastguard Worker w.first += Fetch(s + len - tail_done + 16);
1381*993b0882SAndroid Build Coastguard Worker x = x * k0 + w.first;
1382*993b0882SAndroid Build Coastguard Worker z += w.second + Fetch(s + len - tail_done);
1383*993b0882SAndroid Build Coastguard Worker w.second += v.first;
1384*993b0882SAndroid Build Coastguard Worker v = WeakHashLen32WithSeeds(s + len - tail_done, v.first + z, v.second);
1385*993b0882SAndroid Build Coastguard Worker v.first *= k0;
1386*993b0882SAndroid Build Coastguard Worker }
1387*993b0882SAndroid Build Coastguard Worker // At this point our 56 bytes of state should contain more than
1388*993b0882SAndroid Build Coastguard Worker // enough information for a strong 128-bit hash. We use two
1389*993b0882SAndroid Build Coastguard Worker // different 56-byte-to-8-byte hashes to get a 16-byte final result.
1390*993b0882SAndroid Build Coastguard Worker x = HashLen16(x, v.first);
1391*993b0882SAndroid Build Coastguard Worker y = HashLen16(y + z, w.first);
1392*993b0882SAndroid Build Coastguard Worker return uint128_t(HashLen16(x + v.second, w.second) + y,
1393*993b0882SAndroid Build Coastguard Worker HashLen16(x + w.second, y + v.second));
1394*993b0882SAndroid Build Coastguard Worker }
1395*993b0882SAndroid Build Coastguard Worker
CityHash128(const char * s,size_t len)1396*993b0882SAndroid Build Coastguard Worker STATIC_INLINE uint128_t CityHash128(const char *s, size_t len) {
1397*993b0882SAndroid Build Coastguard Worker return len >= 16 ?
1398*993b0882SAndroid Build Coastguard Worker CityHash128WithSeed(s + 16, len - 16,
1399*993b0882SAndroid Build Coastguard Worker uint128_t(Fetch(s), Fetch(s + 8) + k0)) :
1400*993b0882SAndroid Build Coastguard Worker CityHash128WithSeed(s, len, uint128_t(k0, k1));
1401*993b0882SAndroid Build Coastguard Worker }
1402*993b0882SAndroid Build Coastguard Worker
Fingerprint128(const char * s,size_t len)1403*993b0882SAndroid Build Coastguard Worker uint128_t Fingerprint128(const char* s, size_t len) {
1404*993b0882SAndroid Build Coastguard Worker return CityHash128(s, len);
1405*993b0882SAndroid Build Coastguard Worker }
1406*993b0882SAndroid Build Coastguard Worker } // namespace farmhashcc
1407*993b0882SAndroid Build Coastguard Worker
1408*993b0882SAndroid Build Coastguard Worker // BASIC STRING HASHING
1409*993b0882SAndroid Build Coastguard Worker
1410*993b0882SAndroid Build Coastguard Worker // Hash function for a byte array. See also Hash(), below.
1411*993b0882SAndroid Build Coastguard Worker // May change from time to time, may differ on different platforms, may differ
1412*993b0882SAndroid Build Coastguard Worker // depending on NDEBUG.
Hash32(const char * s,size_t len)1413*993b0882SAndroid Build Coastguard Worker uint32_t Hash32(const char* s, size_t len) {
1414*993b0882SAndroid Build Coastguard Worker if (can_use_sse42 & can_use_aesni & x86_64)
1415*993b0882SAndroid Build Coastguard Worker return DebugTweak(farmhashns::Hash32(s, len));
1416*993b0882SAndroid Build Coastguard Worker
1417*993b0882SAndroid Build Coastguard Worker return DebugTweak(
1418*993b0882SAndroid Build Coastguard Worker (can_use_sse42 & can_use_aesni) ?
1419*993b0882SAndroid Build Coastguard Worker farmhashsu::Hash32(s, len) :
1420*993b0882SAndroid Build Coastguard Worker can_use_sse42 ?
1421*993b0882SAndroid Build Coastguard Worker farmhashsa::Hash32(s, len) :
1422*993b0882SAndroid Build Coastguard Worker farmhashmk::Hash32(s, len));
1423*993b0882SAndroid Build Coastguard Worker }
1424*993b0882SAndroid Build Coastguard Worker
1425*993b0882SAndroid Build Coastguard Worker // Hash function for a byte array. For convenience, a 32-bit seed is also
1426*993b0882SAndroid Build Coastguard Worker // hashed into the result.
1427*993b0882SAndroid Build Coastguard Worker // May change from time to time, may differ on different platforms, may differ
1428*993b0882SAndroid Build Coastguard Worker // depending on NDEBUG.
Hash32WithSeed(const char * s,size_t len,uint32_t seed)1429*993b0882SAndroid Build Coastguard Worker uint32_t Hash32WithSeed(const char* s, size_t len, uint32_t seed) {
1430*993b0882SAndroid Build Coastguard Worker if (can_use_sse42 & can_use_aesni & x86_64)
1431*993b0882SAndroid Build Coastguard Worker return DebugTweak(farmhashns::Hash32WithSeed(s, len, seed));
1432*993b0882SAndroid Build Coastguard Worker
1433*993b0882SAndroid Build Coastguard Worker return DebugTweak(
1434*993b0882SAndroid Build Coastguard Worker (can_use_sse42 & can_use_aesni) ?
1435*993b0882SAndroid Build Coastguard Worker farmhashsu::Hash32WithSeed(s, len, seed) :
1436*993b0882SAndroid Build Coastguard Worker can_use_sse42 ?
1437*993b0882SAndroid Build Coastguard Worker farmhashsa::Hash32WithSeed(s, len, seed) :
1438*993b0882SAndroid Build Coastguard Worker farmhashmk::Hash32WithSeed(s, len, seed));
1439*993b0882SAndroid Build Coastguard Worker }
1440*993b0882SAndroid Build Coastguard Worker
1441*993b0882SAndroid Build Coastguard Worker // Hash function for a byte array. For convenience, a 64-bit seed is also
1442*993b0882SAndroid Build Coastguard Worker // hashed into the result. See also Hash(), below.
1443*993b0882SAndroid Build Coastguard Worker // May change from time to time, may differ on different platforms, may differ
1444*993b0882SAndroid Build Coastguard Worker // depending on NDEBUG.
Hash64(const char * s,size_t len)1445*993b0882SAndroid Build Coastguard Worker uint64_t Hash64(const char* s, size_t len) {
1446*993b0882SAndroid Build Coastguard Worker return DebugTweak(farmhashna::Hash64(s, len));
1447*993b0882SAndroid Build Coastguard Worker }
1448*993b0882SAndroid Build Coastguard Worker
1449*993b0882SAndroid Build Coastguard Worker // Hash function for a byte array.
1450*993b0882SAndroid Build Coastguard Worker // May change from time to time, may differ on different platforms, may differ
1451*993b0882SAndroid Build Coastguard Worker // depending on NDEBUG.
Hash(const char * s,size_t len)1452*993b0882SAndroid Build Coastguard Worker size_t Hash(const char* s, size_t len) {
1453*993b0882SAndroid Build Coastguard Worker return sizeof(size_t) == 8 ? Hash64(s, len) : Hash32(s, len);
1454*993b0882SAndroid Build Coastguard Worker }
1455*993b0882SAndroid Build Coastguard Worker
1456*993b0882SAndroid Build Coastguard Worker // Hash function for a byte array. For convenience, a 64-bit seed is also
1457*993b0882SAndroid Build Coastguard Worker // hashed into the result.
1458*993b0882SAndroid Build Coastguard Worker // May change from time to time, may differ on different platforms, may differ
1459*993b0882SAndroid Build Coastguard Worker // depending on NDEBUG.
Hash64WithSeed(const char * s,size_t len,uint64_t seed)1460*993b0882SAndroid Build Coastguard Worker uint64_t Hash64WithSeed(const char* s, size_t len, uint64_t seed) {
1461*993b0882SAndroid Build Coastguard Worker return DebugTweak(farmhashna::Hash64WithSeed(s, len, seed));
1462*993b0882SAndroid Build Coastguard Worker }
1463*993b0882SAndroid Build Coastguard Worker
1464*993b0882SAndroid Build Coastguard Worker // Hash function for a byte array. For convenience, two seeds are also
1465*993b0882SAndroid Build Coastguard Worker // hashed into the result.
1466*993b0882SAndroid Build Coastguard Worker // May change from time to time, may differ on different platforms, may differ
1467*993b0882SAndroid Build Coastguard Worker // depending on NDEBUG.
Hash64WithSeeds(const char * s,size_t len,uint64_t seed0,uint64_t seed1)1468*993b0882SAndroid Build Coastguard Worker uint64_t Hash64WithSeeds(const char* s, size_t len, uint64_t seed0, uint64_t seed1) {
1469*993b0882SAndroid Build Coastguard Worker return DebugTweak(farmhashna::Hash64WithSeeds(s, len, seed0, seed1));
1470*993b0882SAndroid Build Coastguard Worker }
1471*993b0882SAndroid Build Coastguard Worker
1472*993b0882SAndroid Build Coastguard Worker // Hash function for a byte array.
1473*993b0882SAndroid Build Coastguard Worker // May change from time to time, may differ on different platforms, may differ
1474*993b0882SAndroid Build Coastguard Worker // depending on NDEBUG.
Hash128(const char * s,size_t len)1475*993b0882SAndroid Build Coastguard Worker uint128_t Hash128(const char* s, size_t len) {
1476*993b0882SAndroid Build Coastguard Worker return DebugTweak(farmhashcc::Fingerprint128(s, len));
1477*993b0882SAndroid Build Coastguard Worker }
1478*993b0882SAndroid Build Coastguard Worker
1479*993b0882SAndroid Build Coastguard Worker // Hash function for a byte array. For convenience, a 128-bit seed is also
1480*993b0882SAndroid Build Coastguard Worker // hashed into the result.
1481*993b0882SAndroid Build Coastguard Worker // May change from time to time, may differ on different platforms, may differ
1482*993b0882SAndroid Build Coastguard Worker // depending on NDEBUG.
Hash128WithSeed(const char * s,size_t len,uint128_t seed)1483*993b0882SAndroid Build Coastguard Worker uint128_t Hash128WithSeed(const char* s, size_t len, uint128_t seed) {
1484*993b0882SAndroid Build Coastguard Worker return DebugTweak(farmhashcc::CityHash128WithSeed(s, len, seed));
1485*993b0882SAndroid Build Coastguard Worker }
1486*993b0882SAndroid Build Coastguard Worker
1487*993b0882SAndroid Build Coastguard Worker // BASIC NON-STRING HASHING
1488*993b0882SAndroid Build Coastguard Worker
1489*993b0882SAndroid Build Coastguard Worker // FINGERPRINTING (i.e., good, portable, forever-fixed hash functions)
1490*993b0882SAndroid Build Coastguard Worker
1491*993b0882SAndroid Build Coastguard Worker // Fingerprint function for a byte array. Most useful in 32-bit binaries.
Fingerprint32(const char * s,size_t len)1492*993b0882SAndroid Build Coastguard Worker uint32_t Fingerprint32(const char* s, size_t len) {
1493*993b0882SAndroid Build Coastguard Worker return farmhashmk::Hash32(s, len);
1494*993b0882SAndroid Build Coastguard Worker }
1495*993b0882SAndroid Build Coastguard Worker
1496*993b0882SAndroid Build Coastguard Worker // Fingerprint function for a byte array.
Fingerprint64(const char * s,size_t len)1497*993b0882SAndroid Build Coastguard Worker uint64_t Fingerprint64(const char* s, size_t len) {
1498*993b0882SAndroid Build Coastguard Worker return farmhashna::Hash64(s, len);
1499*993b0882SAndroid Build Coastguard Worker }
1500*993b0882SAndroid Build Coastguard Worker
1501*993b0882SAndroid Build Coastguard Worker // Fingerprint function for a byte array.
Fingerprint128(const char * s,size_t len)1502*993b0882SAndroid Build Coastguard Worker uint128_t Fingerprint128(const char* s, size_t len) {
1503*993b0882SAndroid Build Coastguard Worker return farmhashcc::Fingerprint128(s, len);
1504*993b0882SAndroid Build Coastguard Worker }
1505*993b0882SAndroid Build Coastguard Worker
1506*993b0882SAndroid Build Coastguard Worker } // namespace NAMESPACE_FOR_HASH_FUNCTIONS
1507*993b0882SAndroid Build Coastguard Worker
1508*993b0882SAndroid Build Coastguard Worker #if FARMHASHSELFTEST
1509*993b0882SAndroid Build Coastguard Worker
1510*993b0882SAndroid Build Coastguard Worker #ifndef FARMHASH_SELF_TEST_GUARD
1511*993b0882SAndroid Build Coastguard Worker #define FARMHASH_SELF_TEST_GUARD
1512*993b0882SAndroid Build Coastguard Worker #include <string.h>
1513*993b0882SAndroid Build Coastguard Worker #include <cstdio>
1514*993b0882SAndroid Build Coastguard Worker #include <iostream>
1515*993b0882SAndroid Build Coastguard Worker
1516*993b0882SAndroid Build Coastguard Worker using std::cout;
1517*993b0882SAndroid Build Coastguard Worker using std::cerr;
1518*993b0882SAndroid Build Coastguard Worker using std::endl;
1519*993b0882SAndroid Build Coastguard Worker using std::hex;
1520*993b0882SAndroid Build Coastguard Worker
1521*993b0882SAndroid Build Coastguard Worker static const uint64_t kSeed0 = 1234567;
1522*993b0882SAndroid Build Coastguard Worker static const uint64_t kSeed1 = k0;
1523*993b0882SAndroid Build Coastguard Worker static const int kDataSize = 1 << 20;
1524*993b0882SAndroid Build Coastguard Worker static const int kTestSize = 300;
1525*993b0882SAndroid Build Coastguard Worker #define kSeed128 Uint128(kSeed0, kSeed1)
1526*993b0882SAndroid Build Coastguard Worker
1527*993b0882SAndroid Build Coastguard Worker static char data[kDataSize];
1528*993b0882SAndroid Build Coastguard Worker
1529*993b0882SAndroid Build Coastguard Worker static int completed_self_tests = 0;
1530*993b0882SAndroid Build Coastguard Worker static int errors = 0;
1531*993b0882SAndroid Build Coastguard Worker
1532*993b0882SAndroid Build Coastguard Worker // Initialize data to pseudorandom values.
Setup()1533*993b0882SAndroid Build Coastguard Worker void Setup() {
1534*993b0882SAndroid Build Coastguard Worker if (completed_self_tests == 0) {
1535*993b0882SAndroid Build Coastguard Worker uint64_t a = 9;
1536*993b0882SAndroid Build Coastguard Worker uint64_t b = 777;
1537*993b0882SAndroid Build Coastguard Worker for (int i = 0; i < kDataSize; i++) {
1538*993b0882SAndroid Build Coastguard Worker a += b;
1539*993b0882SAndroid Build Coastguard Worker b += a;
1540*993b0882SAndroid Build Coastguard Worker a = (a ^ (a >> 41)) * k0;
1541*993b0882SAndroid Build Coastguard Worker b = (b ^ (b >> 41)) * k0 + i;
1542*993b0882SAndroid Build Coastguard Worker uint8_t u = b >> 37;
1543*993b0882SAndroid Build Coastguard Worker memcpy(data + i, &u, 1); // uint8_t -> char
1544*993b0882SAndroid Build Coastguard Worker }
1545*993b0882SAndroid Build Coastguard Worker }
1546*993b0882SAndroid Build Coastguard Worker }
1547*993b0882SAndroid Build Coastguard Worker
NoteErrors()1548*993b0882SAndroid Build Coastguard Worker int NoteErrors() {
1549*993b0882SAndroid Build Coastguard Worker #define NUM_SELF_TESTS 6
1550*993b0882SAndroid Build Coastguard Worker if (++completed_self_tests == NUM_SELF_TESTS)
1551*993b0882SAndroid Build Coastguard Worker std::exit(errors > 0);
1552*993b0882SAndroid Build Coastguard Worker return errors;
1553*993b0882SAndroid Build Coastguard Worker }
1554*993b0882SAndroid Build Coastguard Worker
IsNonZero(T x)1555*993b0882SAndroid Build Coastguard Worker template <typename T> inline bool IsNonZero(T x) {
1556*993b0882SAndroid Build Coastguard Worker return x != 0;
1557*993b0882SAndroid Build Coastguard Worker }
1558*993b0882SAndroid Build Coastguard Worker
IsNonZero(uint128_t x)1559*993b0882SAndroid Build Coastguard Worker template <> inline bool IsNonZero<uint128_t>(uint128_t x) {
1560*993b0882SAndroid Build Coastguard Worker return x != Uint128(0, 0);
1561*993b0882SAndroid Build Coastguard Worker }
1562*993b0882SAndroid Build Coastguard Worker
1563*993b0882SAndroid Build Coastguard Worker #endif // FARMHASH_SELF_TEST_GUARD
1564*993b0882SAndroid Build Coastguard Worker
1565*993b0882SAndroid Build Coastguard Worker namespace farmhashccTest {
1566*993b0882SAndroid Build Coastguard Worker
CreateSeed(int offset,int salt)1567*993b0882SAndroid Build Coastguard Worker uint32_t CreateSeed(int offset, int salt) {
1568*993b0882SAndroid Build Coastguard Worker uint32_t h = static_cast<uint32_t>(salt & 0xffffffff);
1569*993b0882SAndroid Build Coastguard Worker h = h * c1;
1570*993b0882SAndroid Build Coastguard Worker h ^= (h >> 17);
1571*993b0882SAndroid Build Coastguard Worker h = h * c1;
1572*993b0882SAndroid Build Coastguard Worker h ^= (h >> 17);
1573*993b0882SAndroid Build Coastguard Worker h = h * c1;
1574*993b0882SAndroid Build Coastguard Worker h ^= (h >> 17);
1575*993b0882SAndroid Build Coastguard Worker h += static_cast<uint32_t>(offset & 0xffffffff);
1576*993b0882SAndroid Build Coastguard Worker h = h * c1;
1577*993b0882SAndroid Build Coastguard Worker h ^= (h >> 17);
1578*993b0882SAndroid Build Coastguard Worker h = h * c1;
1579*993b0882SAndroid Build Coastguard Worker h ^= (h >> 17);
1580*993b0882SAndroid Build Coastguard Worker h = h * c1;
1581*993b0882SAndroid Build Coastguard Worker h ^= (h >> 17);
1582*993b0882SAndroid Build Coastguard Worker return h;
1583*993b0882SAndroid Build Coastguard Worker }
1584*993b0882SAndroid Build Coastguard Worker
1585*993b0882SAndroid Build Coastguard Worker #undef SEED
1586*993b0882SAndroid Build Coastguard Worker #undef SEED1
1587*993b0882SAndroid Build Coastguard Worker #undef SEED0
1588*993b0882SAndroid Build Coastguard Worker #define SEED CreateSeed(offset, -1)
1589*993b0882SAndroid Build Coastguard Worker #define SEED0 CreateSeed(offset, 0)
1590*993b0882SAndroid Build Coastguard Worker #define SEED1 CreateSeed(offset, 1)
1591*993b0882SAndroid Build Coastguard Worker
1592*993b0882SAndroid Build Coastguard Worker #undef TESTING
1593*993b0882SAndroid Build Coastguard Worker #define TESTING 1
1594*993b0882SAndroid Build Coastguard Worker #if TESTING
1595*993b0882SAndroid Build Coastguard Worker uint32_t expected[] = {
1596*993b0882SAndroid Build Coastguard Worker 4223616069u,
1597*993b0882SAndroid Build Coastguard Worker 3696677242u,
1598*993b0882SAndroid Build Coastguard Worker 1039179260u, 1690343979u, 1018511555u, 2464489001u,
1599*993b0882SAndroid Build Coastguard Worker 20368522u, 2663783964u, 175201532u, 1619210592u,
1600*993b0882SAndroid Build Coastguard Worker 4081014168u,
1601*993b0882SAndroid Build Coastguard Worker 2576519988u,
1602*993b0882SAndroid Build Coastguard Worker 3285042206u, 502478099u, 739479538u, 1500332790u,
1603*993b0882SAndroid Build Coastguard Worker 13754768u, 3789353455u, 3473868058u, 1909255088u,
1604*993b0882SAndroid Build Coastguard Worker 2212771159u,
1605*993b0882SAndroid Build Coastguard Worker 1112731063u,
1606*993b0882SAndroid Build Coastguard Worker 826915357u, 2893489933u, 118369799u, 1848668220u,
1607*993b0882SAndroid Build Coastguard Worker 1308219822u, 249416982u, 64306364u, 4221800195u,
1608*993b0882SAndroid Build Coastguard Worker 1020067935u,
1609*993b0882SAndroid Build Coastguard Worker 3955445564u,
1610*993b0882SAndroid Build Coastguard Worker 563346294u, 550236731u, 2339016688u, 1826259714u,
1611*993b0882SAndroid Build Coastguard Worker 3872358639u, 2295981050u, 1870005390u, 4015628802u,
1612*993b0882SAndroid Build Coastguard Worker 1451961420u,
1613*993b0882SAndroid Build Coastguard Worker 653440099u,
1614*993b0882SAndroid Build Coastguard Worker 1292493871u, 164377749u, 1717712483u, 463414587u,
1615*993b0882SAndroid Build Coastguard Worker 3924343675u, 1050492084u, 3566618804u, 2046983362u,
1616*993b0882SAndroid Build Coastguard Worker 31917516u,
1617*993b0882SAndroid Build Coastguard Worker 2957164615u,
1618*993b0882SAndroid Build Coastguard Worker 230718965u, 999595115u, 3534822176u, 2175709186u,
1619*993b0882SAndroid Build Coastguard Worker 965707431u, 441796222u, 2481718051u, 1827777486u,
1620*993b0882SAndroid Build Coastguard Worker 2590087362u,
1621*993b0882SAndroid Build Coastguard Worker 3879448744u,
1622*993b0882SAndroid Build Coastguard Worker 3515079898u, 1601433082u, 982764532u, 254808716u,
1623*993b0882SAndroid Build Coastguard Worker 1293372530u, 4205605817u, 947001462u, 1138890052u,
1624*993b0882SAndroid Build Coastguard Worker 176305566u,
1625*993b0882SAndroid Build Coastguard Worker 2447367541u,
1626*993b0882SAndroid Build Coastguard Worker 2973802542u, 4123621138u, 3083865840u, 1706367795u,
1627*993b0882SAndroid Build Coastguard Worker 792114347u, 2880110657u, 440613768u, 195054868u,
1628*993b0882SAndroid Build Coastguard Worker 1359016305u,
1629*993b0882SAndroid Build Coastguard Worker 3363804638u,
1630*993b0882SAndroid Build Coastguard Worker 649488537u, 1624045597u, 1441938215u, 3147758996u,
1631*993b0882SAndroid Build Coastguard Worker 3199173578u, 2597283203u, 2191333609u, 3763129144u,
1632*993b0882SAndroid Build Coastguard Worker 1117290165u,
1633*993b0882SAndroid Build Coastguard Worker 1062549743u,
1634*993b0882SAndroid Build Coastguard Worker 2565615889u, 1046361554u, 1581968261u, 1058773671u,
1635*993b0882SAndroid Build Coastguard Worker 1123053168u, 3807622275u, 1486749916u, 3900816089u,
1636*993b0882SAndroid Build Coastguard Worker 2437877004u,
1637*993b0882SAndroid Build Coastguard Worker 1894455839u,
1638*993b0882SAndroid Build Coastguard Worker 1912520953u, 1914997013u, 561048608u, 1643267444u,
1639*993b0882SAndroid Build Coastguard Worker 3671572006u, 194811086u, 1468911468u, 2179206286u,
1640*993b0882SAndroid Build Coastguard Worker 673206794u,
1641*993b0882SAndroid Build Coastguard Worker 3486923651u,
1642*993b0882SAndroid Build Coastguard Worker 3741426466u, 3292160512u, 697001377u, 1900763774u,
1643*993b0882SAndroid Build Coastguard Worker 3726097344u, 629282039u, 3578723715u, 2868028489u,
1644*993b0882SAndroid Build Coastguard Worker 3269862919u,
1645*993b0882SAndroid Build Coastguard Worker 2303349487u,
1646*993b0882SAndroid Build Coastguard Worker 3643953525u, 2307255916u, 849996280u, 732080434u,
1647*993b0882SAndroid Build Coastguard Worker 909961480u, 3542445214u, 2628347095u, 4236856917u,
1648*993b0882SAndroid Build Coastguard Worker 1380660650u,
1649*993b0882SAndroid Build Coastguard Worker 2631821908u,
1650*993b0882SAndroid Build Coastguard Worker 2007289004u, 3509705198u, 3788541675u, 789457322u,
1651*993b0882SAndroid Build Coastguard Worker 3090670546u, 638977894u, 3503881773u, 947102987u,
1652*993b0882SAndroid Build Coastguard Worker 1525325287u,
1653*993b0882SAndroid Build Coastguard Worker 1816697045u,
1654*993b0882SAndroid Build Coastguard Worker 2706647405u, 288763142u, 3505438495u, 481308609u,
1655*993b0882SAndroid Build Coastguard Worker 2882636782u, 3745162621u, 3503467033u, 428247823u,
1656*993b0882SAndroid Build Coastguard Worker 176408838u,
1657*993b0882SAndroid Build Coastguard Worker 333551502u,
1658*993b0882SAndroid Build Coastguard Worker 1001068721u, 1681483651u, 75380831u, 4191469679u,
1659*993b0882SAndroid Build Coastguard Worker 3627361839u, 2736617386u, 3120737438u, 1297502456u,
1660*993b0882SAndroid Build Coastguard Worker 864896482u,
1661*993b0882SAndroid Build Coastguard Worker 85674920u,
1662*993b0882SAndroid Build Coastguard Worker 2886047255u, 4119881331u, 2496990525u, 3442502055u,
1663*993b0882SAndroid Build Coastguard Worker 1806582817u, 3186345024u, 4099591287u, 2560171465u,
1664*993b0882SAndroid Build Coastguard Worker 3489229104u,
1665*993b0882SAndroid Build Coastguard Worker 3065015872u,
1666*993b0882SAndroid Build Coastguard Worker 2755089808u, 3098442882u, 378524719u, 2664097023u,
1667*993b0882SAndroid Build Coastguard Worker 1771960725u, 2901182183u, 55258521u, 1266621443u,
1668*993b0882SAndroid Build Coastguard Worker 581644891u,
1669*993b0882SAndroid Build Coastguard Worker 37790450u,
1670*993b0882SAndroid Build Coastguard Worker 1800731704u, 3601350920u, 53428754u, 2759476837u,
1671*993b0882SAndroid Build Coastguard Worker 3391093099u, 1496510311u, 2511119507u, 2636877410u,
1672*993b0882SAndroid Build Coastguard Worker 631613207u,
1673*993b0882SAndroid Build Coastguard Worker 1573846064u,
1674*993b0882SAndroid Build Coastguard Worker 260484875u, 1088212603u, 2369525206u, 322522428u,
1675*993b0882SAndroid Build Coastguard Worker 3191396600u, 2076543340u, 1552496658u, 2739811558u,
1676*993b0882SAndroid Build Coastguard Worker 3867875546u,
1677*993b0882SAndroid Build Coastguard Worker 2051584261u,
1678*993b0882SAndroid Build Coastguard Worker 2126250818u, 901517871u, 3651631165u, 1323139145u,
1679*993b0882SAndroid Build Coastguard Worker 1521111765u, 477802997u, 3508559783u, 383954241u,
1680*993b0882SAndroid Build Coastguard Worker 3804516756u,
1681*993b0882SAndroid Build Coastguard Worker 4250206331u,
1682*993b0882SAndroid Build Coastguard Worker 2655954340u, 2484996477u, 1417544845u, 1520282298u,
1683*993b0882SAndroid Build Coastguard Worker 2745204366u, 2869345147u, 1872738335u, 2592877343u,
1684*993b0882SAndroid Build Coastguard Worker 1619744564u,
1685*993b0882SAndroid Build Coastguard Worker 1804962124u,
1686*993b0882SAndroid Build Coastguard Worker 3458679890u, 423948620u, 273645618u, 4187865426u,
1687*993b0882SAndroid Build Coastguard Worker 376057175u, 2943431463u, 3581950599u, 1035398331u,
1688*993b0882SAndroid Build Coastguard Worker 1088213445u,
1689*993b0882SAndroid Build Coastguard Worker 861988903u,
1690*993b0882SAndroid Build Coastguard Worker 1323370244u, 777069428u, 506235917u, 369720851u,
1691*993b0882SAndroid Build Coastguard Worker 2789995854u, 230915180u, 1505086948u, 940361236u,
1692*993b0882SAndroid Build Coastguard Worker 3727873235u,
1693*993b0882SAndroid Build Coastguard Worker 1159167499u,
1694*993b0882SAndroid Build Coastguard Worker 1860302871u, 3456858862u, 3923555152u, 2131072714u,
1695*993b0882SAndroid Build Coastguard Worker 2910461068u, 3671950363u, 2010742682u, 4088068851u,
1696*993b0882SAndroid Build Coastguard Worker 3616470388u,
1697*993b0882SAndroid Build Coastguard Worker 2087714788u,
1698*993b0882SAndroid Build Coastguard Worker 221675509u, 1230154072u, 3450704646u, 1463226695u,
1699*993b0882SAndroid Build Coastguard Worker 1998357699u, 266026801u, 619568740u, 3560427266u,
1700*993b0882SAndroid Build Coastguard Worker 4148162586u,
1701*993b0882SAndroid Build Coastguard Worker 3150417316u,
1702*993b0882SAndroid Build Coastguard Worker 1356375822u, 2056097622u, 627905802u, 3881675638u,
1703*993b0882SAndroid Build Coastguard Worker 2309738053u, 971916703u, 3447805361u, 1673575328u,
1704*993b0882SAndroid Build Coastguard Worker 673084328u,
1705*993b0882SAndroid Build Coastguard Worker 3317849401u,
1706*993b0882SAndroid Build Coastguard Worker 2836362782u, 2377208890u, 3275350588u, 158350552u,
1707*993b0882SAndroid Build Coastguard Worker 2553241779u, 2497264995u, 3262882649u, 3897937187u,
1708*993b0882SAndroid Build Coastguard Worker 1598963653u,
1709*993b0882SAndroid Build Coastguard Worker 3068514414u,
1710*993b0882SAndroid Build Coastguard Worker 601541505u, 374517071u, 3380795976u, 235752573u,
1711*993b0882SAndroid Build Coastguard Worker 284670003u, 2990192160u, 904937105u, 2306579150u,
1712*993b0882SAndroid Build Coastguard Worker 2117362589u,
1713*993b0882SAndroid Build Coastguard Worker 1635274830u,
1714*993b0882SAndroid Build Coastguard Worker 3355572906u, 170799903u, 1226685528u, 664567688u,
1715*993b0882SAndroid Build Coastguard Worker 413219134u, 878324258u, 4026159448u, 3620649295u,
1716*993b0882SAndroid Build Coastguard Worker 1823625377u,
1717*993b0882SAndroid Build Coastguard Worker 3175888439u,
1718*993b0882SAndroid Build Coastguard Worker 1759344347u, 2640637095u, 3549558u, 2192984935u,
1719*993b0882SAndroid Build Coastguard Worker 978623493u, 804017880u, 3877562323u, 3843116489u,
1720*993b0882SAndroid Build Coastguard Worker 1641748342u,
1721*993b0882SAndroid Build Coastguard Worker 1853539444u,
1722*993b0882SAndroid Build Coastguard Worker 3001178468u, 3443560727u, 2685426077u, 1653064722u,
1723*993b0882SAndroid Build Coastguard Worker 349231508u, 2726789654u, 3136215581u, 768402830u,
1724*993b0882SAndroid Build Coastguard Worker 269384321u,
1725*993b0882SAndroid Build Coastguard Worker 531936536u,
1726*993b0882SAndroid Build Coastguard Worker 2592883487u, 1343156334u, 3628619802u, 1477143570u,
1727*993b0882SAndroid Build Coastguard Worker 4269458419u, 3285611028u, 959104925u, 2712290710u,
1728*993b0882SAndroid Build Coastguard Worker 3480237248u,
1729*993b0882SAndroid Build Coastguard Worker 835796333u,
1730*993b0882SAndroid Build Coastguard Worker 2020636251u, 1191914589u, 126521603u, 4288023938u,
1731*993b0882SAndroid Build Coastguard Worker 3731699932u, 2136758855u, 985780142u, 193807575u,
1732*993b0882SAndroid Build Coastguard Worker 1850544433u,
1733*993b0882SAndroid Build Coastguard Worker 653947619u,
1734*993b0882SAndroid Build Coastguard Worker 3929316796u, 381871169u, 950486363u, 1787262279u,
1735*993b0882SAndroid Build Coastguard Worker 360480382u, 1800636585u, 1039258631u, 3682073259u,
1736*993b0882SAndroid Build Coastguard Worker 1262819303u,
1737*993b0882SAndroid Build Coastguard Worker 1786000319u,
1738*993b0882SAndroid Build Coastguard Worker 1570627191u, 893065837u, 301304916u, 1478469809u,
1739*993b0882SAndroid Build Coastguard Worker 623018819u, 2742232545u, 2058913014u, 1706060059u,
1740*993b0882SAndroid Build Coastguard Worker 2421125401u,
1741*993b0882SAndroid Build Coastguard Worker 1315829592u,
1742*993b0882SAndroid Build Coastguard Worker 3208766775u, 1805586156u, 575853086u, 3085025513u,
1743*993b0882SAndroid Build Coastguard Worker 4010908260u, 2344058256u, 3814407434u, 1458485673u,
1744*993b0882SAndroid Build Coastguard Worker 2474514786u,
1745*993b0882SAndroid Build Coastguard Worker 3581895658u,
1746*993b0882SAndroid Build Coastguard Worker 2710719679u, 190812706u, 2135454262u, 2620080728u,
1747*993b0882SAndroid Build Coastguard Worker 3400757986u, 1669914857u, 1559978393u, 1629811331u,
1748*993b0882SAndroid Build Coastguard Worker 3096616493u,
1749*993b0882SAndroid Build Coastguard Worker 1391424435u,
1750*993b0882SAndroid Build Coastguard Worker 4158376003u, 1015657076u, 794783832u, 479952178u,
1751*993b0882SAndroid Build Coastguard Worker 1150290207u, 2497437906u, 231815090u, 755078067u,
1752*993b0882SAndroid Build Coastguard Worker 3832053281u,
1753*993b0882SAndroid Build Coastguard Worker 63649475u,
1754*993b0882SAndroid Build Coastguard Worker 2415822606u, 4105027719u, 1706992318u, 1106598740u,
1755*993b0882SAndroid Build Coastguard Worker 3941945667u, 1271300761u, 505882259u, 760186809u,
1756*993b0882SAndroid Build Coastguard Worker 2657183368u,
1757*993b0882SAndroid Build Coastguard Worker 1925422058u,
1758*993b0882SAndroid Build Coastguard Worker 1039773764u, 880219458u, 4275949176u, 1556833823u,
1759*993b0882SAndroid Build Coastguard Worker 925882132u, 4216310340u, 757497522u, 461833914u,
1760*993b0882SAndroid Build Coastguard Worker 3884002070u,
1761*993b0882SAndroid Build Coastguard Worker 2790957660u,
1762*993b0882SAndroid Build Coastguard Worker 2100050089u, 651959176u, 1380301291u, 1289124125u,
1763*993b0882SAndroid Build Coastguard Worker 452314403u, 226156280u, 3306924715u, 1750807758u,
1764*993b0882SAndroid Build Coastguard Worker 2290180542u,
1765*993b0882SAndroid Build Coastguard Worker 1953760569u,
1766*993b0882SAndroid Build Coastguard Worker 2253069096u, 3960924806u, 1786291620u, 60736185u,
1767*993b0882SAndroid Build Coastguard Worker 2569018293u, 3870479674u, 2247005661u, 2239850953u,
1768*993b0882SAndroid Build Coastguard Worker 4261808536u,
1769*993b0882SAndroid Build Coastguard Worker 3282975782u,
1770*993b0882SAndroid Build Coastguard Worker 780945879u, 3349849383u, 1579362556u, 2265045884u,
1771*993b0882SAndroid Build Coastguard Worker 905088740u, 725212379u, 3156479246u, 2501620391u,
1772*993b0882SAndroid Build Coastguard Worker 3062836263u,
1773*993b0882SAndroid Build Coastguard Worker 4070422690u,
1774*993b0882SAndroid Build Coastguard Worker 996797869u, 4082582315u, 976105756u, 303983602u,
1775*993b0882SAndroid Build Coastguard Worker 1862104804u, 3864508254u, 3383979677u, 2835500286u,
1776*993b0882SAndroid Build Coastguard Worker 2798364010u,
1777*993b0882SAndroid Build Coastguard Worker 519359476u,
1778*993b0882SAndroid Build Coastguard Worker 3447342725u, 194373889u, 3313466630u, 232399983u,
1779*993b0882SAndroid Build Coastguard Worker 2841787856u, 1672751454u, 3345183154u, 1805381384u,
1780*993b0882SAndroid Build Coastguard Worker 2226129336u,
1781*993b0882SAndroid Build Coastguard Worker 2847829057u,
1782*993b0882SAndroid Build Coastguard Worker 2350774567u, 2838540121u, 2757948482u, 1017002062u,
1783*993b0882SAndroid Build Coastguard Worker 2329150951u, 2171488196u, 3668619047u, 3874977844u,
1784*993b0882SAndroid Build Coastguard Worker 3287966998u,
1785*993b0882SAndroid Build Coastguard Worker 262346753u,
1786*993b0882SAndroid Build Coastguard Worker 2493054715u, 2298644430u, 2926101182u, 1528457638u,
1787*993b0882SAndroid Build Coastguard Worker 598656233u, 2615845874u, 989110727u, 820441411u,
1788*993b0882SAndroid Build Coastguard Worker 253617372u,
1789*993b0882SAndroid Build Coastguard Worker 2201077208u,
1790*993b0882SAndroid Build Coastguard Worker 2047569338u, 3114356329u, 3335563734u, 2967673540u,
1791*993b0882SAndroid Build Coastguard Worker 768438341u, 1417708203u, 3873718246u, 1538441843u,
1792*993b0882SAndroid Build Coastguard Worker 1279167650u,
1793*993b0882SAndroid Build Coastguard Worker 3917966776u,
1794*993b0882SAndroid Build Coastguard Worker 2218481734u, 1015935150u, 1957845042u, 1318150213u,
1795*993b0882SAndroid Build Coastguard Worker 3146423971u, 4218994877u, 1162470863u, 1519718292u,
1796*993b0882SAndroid Build Coastguard Worker 2594658906u,
1797*993b0882SAndroid Build Coastguard Worker 665870414u,
1798*993b0882SAndroid Build Coastguard Worker 3430347817u, 3933868731u, 1597041394u, 3138684682u,
1799*993b0882SAndroid Build Coastguard Worker 3398212027u, 1064647658u, 1576321132u, 14792918u,
1800*993b0882SAndroid Build Coastguard Worker 224938029u,
1801*993b0882SAndroid Build Coastguard Worker 3706456050u,
1802*993b0882SAndroid Build Coastguard Worker 847274786u, 2645698692u, 1743374687u, 2343133224u,
1803*993b0882SAndroid Build Coastguard Worker 3066596790u, 2857270120u, 200596308u, 452055528u,
1804*993b0882SAndroid Build Coastguard Worker 2319312082u,
1805*993b0882SAndroid Build Coastguard Worker 3488655402u,
1806*993b0882SAndroid Build Coastguard Worker 4146865894u, 608206438u, 2699777051u, 3687240713u,
1807*993b0882SAndroid Build Coastguard Worker 327957508u, 3664730153u, 568134564u, 2993484554u,
1808*993b0882SAndroid Build Coastguard Worker 4159860363u,
1809*993b0882SAndroid Build Coastguard Worker 4274533921u,
1810*993b0882SAndroid Build Coastguard Worker 1079994063u, 2360220210u, 3609597760u, 3639708902u,
1811*993b0882SAndroid Build Coastguard Worker 2836180437u, 1069910270u, 1892427666u, 1874729790u,
1812*993b0882SAndroid Build Coastguard Worker 1267712826u,
1813*993b0882SAndroid Build Coastguard Worker 121886940u,
1814*993b0882SAndroid Build Coastguard Worker 3572289214u, 2475945610u, 783779452u, 588827737u,
1815*993b0882SAndroid Build Coastguard Worker 1531395014u, 2085084212u, 2219189792u, 3981444548u,
1816*993b0882SAndroid Build Coastguard Worker 2218885336u,
1817*993b0882SAndroid Build Coastguard Worker 1691622694u,
1818*993b0882SAndroid Build Coastguard Worker 2053232885u, 1386558530u, 2182946189u, 2365247285u,
1819*993b0882SAndroid Build Coastguard Worker 1871081313u, 2935751853u, 38413723u, 543465863u,
1820*993b0882SAndroid Build Coastguard Worker 900691890u,
1821*993b0882SAndroid Build Coastguard Worker 2899905665u,
1822*993b0882SAndroid Build Coastguard Worker 575120562u, 93133904u, 457154948u, 2983705792u,
1823*993b0882SAndroid Build Coastguard Worker 4232229200u, 2038565963u, 614693984u, 3405328302u,
1824*993b0882SAndroid Build Coastguard Worker 4083090010u,
1825*993b0882SAndroid Build Coastguard Worker 2088004171u,
1826*993b0882SAndroid Build Coastguard Worker 244031209u, 1861889294u, 2417109253u, 3299562328u,
1827*993b0882SAndroid Build Coastguard Worker 4158642443u, 4199064449u, 3161611046u, 885015950u,
1828*993b0882SAndroid Build Coastguard Worker 3677904099u,
1829*993b0882SAndroid Build Coastguard Worker 2969861785u,
1830*993b0882SAndroid Build Coastguard Worker 772348805u, 1712263832u, 3219357614u, 484271305u,
1831*993b0882SAndroid Build Coastguard Worker 3645706114u, 2059620251u, 409557488u, 2278896731u,
1832*993b0882SAndroid Build Coastguard Worker 224475749u,
1833*993b0882SAndroid Build Coastguard Worker 3523022952u,
1834*993b0882SAndroid Build Coastguard Worker 2057140088u, 449131785u, 1149879244u, 4255363996u,
1835*993b0882SAndroid Build Coastguard Worker 3602720135u, 1690010854u, 2503998822u, 2750828466u,
1836*993b0882SAndroid Build Coastguard Worker 3340671802u,
1837*993b0882SAndroid Build Coastguard Worker 1447583863u,
1838*993b0882SAndroid Build Coastguard Worker 2649684943u, 2764747249u, 3046070595u, 3441726138u,
1839*993b0882SAndroid Build Coastguard Worker 3840332559u, 3156747501u, 1288666680u, 1472744459u,
1840*993b0882SAndroid Build Coastguard Worker 3452391933u,
1841*993b0882SAndroid Build Coastguard Worker 1617542784u,
1842*993b0882SAndroid Build Coastguard Worker 217869690u, 3718469527u, 348639731u, 590532355u,
1843*993b0882SAndroid Build Coastguard Worker 43789787u, 22606314u, 1621559290u, 2231743261u,
1844*993b0882SAndroid Build Coastguard Worker 2234620879u,
1845*993b0882SAndroid Build Coastguard Worker 544748955u,
1846*993b0882SAndroid Build Coastguard Worker 3169387920u, 203343594u, 3272552527u, 1078282365u,
1847*993b0882SAndroid Build Coastguard Worker 809576321u, 854207584u, 3625491053u, 1193737267u,
1848*993b0882SAndroid Build Coastguard Worker 1628966807u,
1849*993b0882SAndroid Build Coastguard Worker 2661421060u,
1850*993b0882SAndroid Build Coastguard Worker 2433442061u, 3886639039u, 2149304418u, 303000565u,
1851*993b0882SAndroid Build Coastguard Worker 1432830882u, 137378235u, 1135974068u, 318705754u,
1852*993b0882SAndroid Build Coastguard Worker 2491227157u,
1853*993b0882SAndroid Build Coastguard Worker 2627534472u,
1854*993b0882SAndroid Build Coastguard Worker 3520352233u, 2488397682u, 3969194920u, 3843962181u,
1855*993b0882SAndroid Build Coastguard Worker 2135981459u, 2611933220u, 799460731u, 2300968851u,
1856*993b0882SAndroid Build Coastguard Worker 3412851628u,
1857*993b0882SAndroid Build Coastguard Worker 3070914013u,
1858*993b0882SAndroid Build Coastguard Worker 3555224260u, 4125937572u, 240359903u, 722496673u,
1859*993b0882SAndroid Build Coastguard Worker 2061023600u, 3843919221u, 2759960043u, 1191155322u,
1860*993b0882SAndroid Build Coastguard Worker 1504041490u,
1861*993b0882SAndroid Build Coastguard Worker 3735253656u,
1862*993b0882SAndroid Build Coastguard Worker 1773124736u, 101110011u, 1627699578u, 2645634551u,
1863*993b0882SAndroid Build Coastguard Worker 263603947u, 1388368439u, 677146538u, 1644201982u,
1864*993b0882SAndroid Build Coastguard Worker 2625699644u,
1865*993b0882SAndroid Build Coastguard Worker 2403862553u,
1866*993b0882SAndroid Build Coastguard Worker 2426069017u, 3613511705u, 915141802u, 2981654265u,
1867*993b0882SAndroid Build Coastguard Worker 3474818167u, 2611101773u, 627891434u, 762754924u,
1868*993b0882SAndroid Build Coastguard Worker 2143021902u,
1869*993b0882SAndroid Build Coastguard Worker 51067670u,
1870*993b0882SAndroid Build Coastguard Worker 4017746573u, 2269879853u, 3037857950u, 2388899692u,
1871*993b0882SAndroid Build Coastguard Worker 582729171u, 1886116725u, 2281219772u, 264704948u,
1872*993b0882SAndroid Build Coastguard Worker 3509984037u,
1873*993b0882SAndroid Build Coastguard Worker 4078683368u,
1874*993b0882SAndroid Build Coastguard Worker 2172959411u, 1807195632u, 3357092302u, 2253764928u,
1875*993b0882SAndroid Build Coastguard Worker 2320369390u, 3076335959u, 2623583210u, 168378015u,
1876*993b0882SAndroid Build Coastguard Worker 1435562650u,
1877*993b0882SAndroid Build Coastguard Worker 1100977467u,
1878*993b0882SAndroid Build Coastguard Worker 3160490319u, 2550328495u, 2396855930u, 1347823908u,
1879*993b0882SAndroid Build Coastguard Worker 1617990918u, 3849653099u, 3224111576u, 1681539821u,
1880*993b0882SAndroid Build Coastguard Worker 4171542880u,
1881*993b0882SAndroid Build Coastguard Worker 552200045u,
1882*993b0882SAndroid Build Coastguard Worker 3562947778u, 1676237880u, 3747732307u, 2453332913u,
1883*993b0882SAndroid Build Coastguard Worker 865530667u, 3566636849u, 3485502777u, 336779723u,
1884*993b0882SAndroid Build Coastguard Worker 2535942410u,
1885*993b0882SAndroid Build Coastguard Worker 1685000184u,
1886*993b0882SAndroid Build Coastguard Worker 820545711u, 1893670486u, 1273910461u, 1193758569u,
1887*993b0882SAndroid Build Coastguard Worker 970365241u, 381205962u, 3612810852u, 1160577445u,
1888*993b0882SAndroid Build Coastguard Worker 541488143u,
1889*993b0882SAndroid Build Coastguard Worker 4005031080u,
1890*993b0882SAndroid Build Coastguard Worker 2333965236u, 2419855455u, 3484533538u, 3073937876u,
1891*993b0882SAndroid Build Coastguard Worker 908466956u, 661391539u, 2342122412u, 1467049112u,
1892*993b0882SAndroid Build Coastguard Worker 1785800827u,
1893*993b0882SAndroid Build Coastguard Worker 135343033u,
1894*993b0882SAndroid Build Coastguard Worker 139643209u, 2438375667u, 974654058u, 3216478230u,
1895*993b0882SAndroid Build Coastguard Worker 3807620420u, 779043363u, 2812846449u, 333254784u,
1896*993b0882SAndroid Build Coastguard Worker 1025244024u,
1897*993b0882SAndroid Build Coastguard Worker 2242303095u,
1898*993b0882SAndroid Build Coastguard Worker 2476683742u, 350018683u, 174652916u, 933097576u,
1899*993b0882SAndroid Build Coastguard Worker 826905896u, 559603581u, 2777181260u, 164915169u,
1900*993b0882SAndroid Build Coastguard Worker 4070353203u,
1901*993b0882SAndroid Build Coastguard Worker 1459055748u,
1902*993b0882SAndroid Build Coastguard Worker 297303985u, 3103837241u, 3812514233u, 232265137u,
1903*993b0882SAndroid Build Coastguard Worker 2032819099u, 1523091376u, 3531238208u, 1403510182u,
1904*993b0882SAndroid Build Coastguard Worker 2886832080u,
1905*993b0882SAndroid Build Coastguard Worker 2599705941u,
1906*993b0882SAndroid Build Coastguard Worker 2789695716u, 68437968u, 3823813791u, 1040994569u,
1907*993b0882SAndroid Build Coastguard Worker 3024194990u, 2461740520u, 3735391266u, 2042207153u,
1908*993b0882SAndroid Build Coastguard Worker 2461678616u,
1909*993b0882SAndroid Build Coastguard Worker 3519231840u,
1910*993b0882SAndroid Build Coastguard Worker 1344224923u, 411442756u, 1179779351u, 7661528u,
1911*993b0882SAndroid Build Coastguard Worker 778352196u, 3288808867u, 589356197u, 2627504511u,
1912*993b0882SAndroid Build Coastguard Worker 3374744599u,
1913*993b0882SAndroid Build Coastguard Worker 3312172905u,
1914*993b0882SAndroid Build Coastguard Worker 357423007u, 3539567796u, 4044452215u, 1445118403u,
1915*993b0882SAndroid Build Coastguard Worker 2937983820u, 184089910u, 346201845u, 2427295202u,
1916*993b0882SAndroid Build Coastguard Worker 1345448010u,
1917*993b0882SAndroid Build Coastguard Worker 2884434843u,
1918*993b0882SAndroid Build Coastguard Worker 3085001879u, 2640105409u, 315310640u, 3530289798u,
1919*993b0882SAndroid Build Coastguard Worker 3362974764u, 963602652u, 75228477u, 3509381180u,
1920*993b0882SAndroid Build Coastguard Worker 4012777756u,
1921*993b0882SAndroid Build Coastguard Worker 2380345941u,
1922*993b0882SAndroid Build Coastguard Worker 1073137836u, 2083960378u, 1220315185u, 3628720934u,
1923*993b0882SAndroid Build Coastguard Worker 3508867818u, 67148343u, 3558085158u, 1753943368u,
1924*993b0882SAndroid Build Coastguard Worker 863309561u,
1925*993b0882SAndroid Build Coastguard Worker 2844713625u,
1926*993b0882SAndroid Build Coastguard Worker 441921850u, 854732254u, 816793316u, 2555428747u,
1927*993b0882SAndroid Build Coastguard Worker 3440623414u, 1707304366u, 3189874375u, 1623229221u,
1928*993b0882SAndroid Build Coastguard Worker 1220335976u,
1929*993b0882SAndroid Build Coastguard Worker 806745430u,
1930*993b0882SAndroid Build Coastguard Worker 3909262947u, 1680369031u, 2926179486u, 3410391660u,
1931*993b0882SAndroid Build Coastguard Worker 3991630434u, 2876458763u, 1179167079u, 536360759u,
1932*993b0882SAndroid Build Coastguard Worker 1592117159u,
1933*993b0882SAndroid Build Coastguard Worker 1514343977u,
1934*993b0882SAndroid Build Coastguard Worker 1032622306u, 2057494855u, 784938958u, 178402996u,
1935*993b0882SAndroid Build Coastguard Worker 1152907972u, 2326185495u, 2939973666u, 4181120253u,
1936*993b0882SAndroid Build Coastguard Worker 552831733u,
1937*993b0882SAndroid Build Coastguard Worker 664251856u,
1938*993b0882SAndroid Build Coastguard Worker 1297139539u, 1969357631u, 1474065957u, 3055419017u,
1939*993b0882SAndroid Build Coastguard Worker 3395829380u, 3316562752u, 2168409017u, 614624786u,
1940*993b0882SAndroid Build Coastguard Worker 3585854336u,
1941*993b0882SAndroid Build Coastguard Worker 668291094u,
1942*993b0882SAndroid Build Coastguard Worker 1162889217u, 3773171307u, 2263271126u, 355089668u,
1943*993b0882SAndroid Build Coastguard Worker 3195850578u, 3396793277u, 3519870267u, 527857605u,
1944*993b0882SAndroid Build Coastguard Worker 3972392320u,
1945*993b0882SAndroid Build Coastguard Worker 2224315010u,
1946*993b0882SAndroid Build Coastguard Worker 4047225561u, 3271434798u, 3192704713u, 2798505213u,
1947*993b0882SAndroid Build Coastguard Worker 3932215896u, 3792924012u, 3796843756u, 453872975u,
1948*993b0882SAndroid Build Coastguard Worker 4050552799u,
1949*993b0882SAndroid Build Coastguard Worker 1056432676u,
1950*993b0882SAndroid Build Coastguard Worker 928166947u, 121311642u, 930989547u, 2087070683u,
1951*993b0882SAndroid Build Coastguard Worker 1288978057u, 1556325239u, 1812435626u, 1682385724u,
1952*993b0882SAndroid Build Coastguard Worker 1214364933u,
1953*993b0882SAndroid Build Coastguard Worker 904760776u,
1954*993b0882SAndroid Build Coastguard Worker 3957045528u, 3949822847u, 2411065880u, 3716420732u,
1955*993b0882SAndroid Build Coastguard Worker 3424837835u, 3833550693u, 1799375326u, 2012368921u,
1956*993b0882SAndroid Build Coastguard Worker 2768764136u,
1957*993b0882SAndroid Build Coastguard Worker 1786111037u,
1958*993b0882SAndroid Build Coastguard Worker 4055479315u, 3751639533u, 2808224623u, 3492656387u,
1959*993b0882SAndroid Build Coastguard Worker 1306824780u, 2624000170u, 3134795218u, 1778409297u,
1960*993b0882SAndroid Build Coastguard Worker 3900821801u,
1961*993b0882SAndroid Build Coastguard Worker 593336325u,
1962*993b0882SAndroid Build Coastguard Worker 2772069220u, 2980873673u, 3574497158u, 3994780459u,
1963*993b0882SAndroid Build Coastguard Worker 4246519854u, 3482758570u, 4228015183u, 33101083u,
1964*993b0882SAndroid Build Coastguard Worker 1769887734u,
1965*993b0882SAndroid Build Coastguard Worker 4158035314u,
1966*993b0882SAndroid Build Coastguard Worker 3690638998u, 1119035482u, 4134969651u, 2483207353u,
1967*993b0882SAndroid Build Coastguard Worker 3932823321u, 285829887u, 3485140138u, 1304815138u,
1968*993b0882SAndroid Build Coastguard Worker 995608264u,
1969*993b0882SAndroid Build Coastguard Worker 3133997465u,
1970*993b0882SAndroid Build Coastguard Worker 1195477617u, 2147693728u, 3506673112u, 4234467492u,
1971*993b0882SAndroid Build Coastguard Worker 1183174337u, 1395340482u, 769199343u, 193262308u,
1972*993b0882SAndroid Build Coastguard Worker 2798920256u,
1973*993b0882SAndroid Build Coastguard Worker 3827889422u,
1974*993b0882SAndroid Build Coastguard Worker 3399695609u, 3036045724u, 2999477386u, 3567001759u,
1975*993b0882SAndroid Build Coastguard Worker 2682864314u, 1414023907u, 3699872975u, 3369870701u,
1976*993b0882SAndroid Build Coastguard Worker 2662284872u,
1977*993b0882SAndroid Build Coastguard Worker 2179640019u,
1978*993b0882SAndroid Build Coastguard Worker 2485080099u, 3234415609u, 3755915606u, 1339453220u,
1979*993b0882SAndroid Build Coastguard Worker 1567403399u, 2076272391u, 293946298u, 3861962750u,
1980*993b0882SAndroid Build Coastguard Worker 1291949822u,
1981*993b0882SAndroid Build Coastguard Worker 2916864995u,
1982*993b0882SAndroid Build Coastguard Worker 132642326u, 2215117062u, 2205863575u, 2488805750u,
1983*993b0882SAndroid Build Coastguard Worker 405632860u, 3248129390u, 2952606864u, 896734759u,
1984*993b0882SAndroid Build Coastguard Worker 2047417173u,
1985*993b0882SAndroid Build Coastguard Worker 3865951392u,
1986*993b0882SAndroid Build Coastguard Worker 657296855u, 1328547532u, 3966511825u, 3959682388u,
1987*993b0882SAndroid Build Coastguard Worker 4171801020u, 2981416957u, 1868896247u, 790081075u,
1988*993b0882SAndroid Build Coastguard Worker 3143666398u,
1989*993b0882SAndroid Build Coastguard Worker 2950766549u,
1990*993b0882SAndroid Build Coastguard Worker 2065854887u, 2737081890u, 995061774u, 1510712611u,
1991*993b0882SAndroid Build Coastguard Worker 2865954809u, 565044286u, 1565631102u, 1500654931u,
1992*993b0882SAndroid Build Coastguard Worker 494822108u,
1993*993b0882SAndroid Build Coastguard Worker 2803515503u,
1994*993b0882SAndroid Build Coastguard Worker 1058154996u, 3506280187u, 856885925u, 4204610546u,
1995*993b0882SAndroid Build Coastguard Worker 800905649u, 1130711562u, 558146282u, 2053400666u,
1996*993b0882SAndroid Build Coastguard Worker 449794061u,
1997*993b0882SAndroid Build Coastguard Worker 2643520245u,
1998*993b0882SAndroid Build Coastguard Worker 2101248725u, 3123292429u, 3583524041u, 983372394u,
1999*993b0882SAndroid Build Coastguard Worker 1587743780u, 672870813u, 444833475u, 100741452u,
2000*993b0882SAndroid Build Coastguard Worker 366232251u,
2001*993b0882SAndroid Build Coastguard Worker 1717951248u,
2002*993b0882SAndroid Build Coastguard Worker 524144122u, 1362432726u, 1304947719u, 674306020u,
2003*993b0882SAndroid Build Coastguard Worker 405665887u, 4081931036u, 1580408204u, 2343242778u,
2004*993b0882SAndroid Build Coastguard Worker 3901654006u,
2005*993b0882SAndroid Build Coastguard Worker 2627173567u,
2006*993b0882SAndroid Build Coastguard Worker 3015148205u, 814686701u, 1327920712u, 1346494176u,
2007*993b0882SAndroid Build Coastguard Worker 2468632605u, 2259795544u, 2519278184u, 2129281928u,
2008*993b0882SAndroid Build Coastguard Worker 2860266380u,
2009*993b0882SAndroid Build Coastguard Worker 4001619412u,
2010*993b0882SAndroid Build Coastguard Worker 1154910973u, 2841022216u, 1199925485u, 1372200293u,
2011*993b0882SAndroid Build Coastguard Worker 2713179055u, 3609776550u, 2896463880u, 1056406892u,
2012*993b0882SAndroid Build Coastguard Worker 177413841u,
2013*993b0882SAndroid Build Coastguard Worker 40180172u,
2014*993b0882SAndroid Build Coastguard Worker 3274788406u, 660921784u, 1686225028u, 4003382965u,
2015*993b0882SAndroid Build Coastguard Worker 2532691887u, 4256809101u, 1186018983u, 667359096u,
2016*993b0882SAndroid Build Coastguard Worker 2375266493u,
2017*993b0882SAndroid Build Coastguard Worker 2760222015u,
2018*993b0882SAndroid Build Coastguard Worker 745187078u, 312264012u, 396822261u, 2588536966u,
2019*993b0882SAndroid Build Coastguard Worker 2026998998u, 1766454365u, 3218807676u, 3915487497u,
2020*993b0882SAndroid Build Coastguard Worker 2630550356u,
2021*993b0882SAndroid Build Coastguard Worker 4130063378u,
2022*993b0882SAndroid Build Coastguard Worker 4231937074u, 752212123u, 3085144349u, 3267186363u,
2023*993b0882SAndroid Build Coastguard Worker 4103872100u, 4193207863u, 1306401710u, 3014853131u,
2024*993b0882SAndroid Build Coastguard Worker 1067760598u,
2025*993b0882SAndroid Build Coastguard Worker 2306188342u,
2026*993b0882SAndroid Build Coastguard Worker 2437881506u, 4258185052u, 2506507580u, 130876929u,
2027*993b0882SAndroid Build Coastguard Worker 1076894205u, 4106981702u, 2799540844u, 945747327u,
2028*993b0882SAndroid Build Coastguard Worker 1436722291u,
2029*993b0882SAndroid Build Coastguard Worker 2499772225u,
2030*993b0882SAndroid Build Coastguard Worker 2571537041u, 2038830635u, 2066826058u, 2892892912u,
2031*993b0882SAndroid Build Coastguard Worker 524875858u, 3392572161u, 2869992096u, 1308273341u,
2032*993b0882SAndroid Build Coastguard Worker 923668994u,
2033*993b0882SAndroid Build Coastguard Worker 1980407857u,
2034*993b0882SAndroid Build Coastguard Worker 2275009652u, 240598096u, 2658376530u, 3505603048u,
2035*993b0882SAndroid Build Coastguard Worker 1022603789u, 582423424u, 846379327u, 4092636095u,
2036*993b0882SAndroid Build Coastguard Worker 4177298326u,
2037*993b0882SAndroid Build Coastguard Worker 1004173023u,
2038*993b0882SAndroid Build Coastguard Worker 2154027018u, 2993634669u, 1098364089u, 3035642175u,
2039*993b0882SAndroid Build Coastguard Worker 1335688126u, 1376393415u, 1252369770u, 3815033328u,
2040*993b0882SAndroid Build Coastguard Worker 1999309358u,
2041*993b0882SAndroid Build Coastguard Worker 1234054757u,
2042*993b0882SAndroid Build Coastguard Worker 1388595255u, 2859334775u, 366532860u, 3453410395u,
2043*993b0882SAndroid Build Coastguard Worker 4226967708u, 1321729870u, 2078463405u, 156766592u,
2044*993b0882SAndroid Build Coastguard Worker 3157683394u,
2045*993b0882SAndroid Build Coastguard Worker 3549293384u,
2046*993b0882SAndroid Build Coastguard Worker 3348214547u, 2879648344u, 1144813399u, 2758966254u,
2047*993b0882SAndroid Build Coastguard Worker 647753581u, 813615926u, 2035441590u, 1961053117u,
2048*993b0882SAndroid Build Coastguard Worker 600168686u,
2049*993b0882SAndroid Build Coastguard Worker 2192833387u,
2050*993b0882SAndroid Build Coastguard Worker 3156481401u, 3627320321u, 383550248u, 81209584u,
2051*993b0882SAndroid Build Coastguard Worker 2339331745u, 1284116690u, 1980144976u, 2955724163u,
2052*993b0882SAndroid Build Coastguard Worker 789301728u,
2053*993b0882SAndroid Build Coastguard Worker 3842040415u,
2054*993b0882SAndroid Build Coastguard Worker 1115881490u, 965249078u, 4098663322u, 1870257033u,
2055*993b0882SAndroid Build Coastguard Worker 2923150701u, 4217108433u, 183816559u, 2104089285u,
2056*993b0882SAndroid Build Coastguard Worker 2640095343u,
2057*993b0882SAndroid Build Coastguard Worker 3173757052u,
2058*993b0882SAndroid Build Coastguard Worker 927847464u, 2383114981u, 4287174363u, 1886129652u,
2059*993b0882SAndroid Build Coastguard Worker 70635161u, 1182924521u, 1121440038u, 4246220730u,
2060*993b0882SAndroid Build Coastguard Worker 3890583049u,
2061*993b0882SAndroid Build Coastguard Worker 975913757u,
2062*993b0882SAndroid Build Coastguard Worker 2436253031u, 1074894869u, 1301280627u, 992471939u,
2063*993b0882SAndroid Build Coastguard Worker 735658128u, 244441856u, 1541612456u, 3457776165u,
2064*993b0882SAndroid Build Coastguard Worker 3503534059u,
2065*993b0882SAndroid Build Coastguard Worker 1931651133u,
2066*993b0882SAndroid Build Coastguard Worker 349142786u, 3669028584u, 1828812038u, 99128389u,
2067*993b0882SAndroid Build Coastguard Worker 1364272849u, 1963678455u, 3971963311u, 2316950886u,
2068*993b0882SAndroid Build Coastguard Worker 1308901796u,
2069*993b0882SAndroid Build Coastguard Worker 2789591580u,
2070*993b0882SAndroid Build Coastguard Worker 1460494965u, 2380227479u, 1577190651u, 1755822080u,
2071*993b0882SAndroid Build Coastguard Worker 2911014607u, 859387544u, 13023113u, 2319243370u,
2072*993b0882SAndroid Build Coastguard Worker 2522582211u,
2073*993b0882SAndroid Build Coastguard Worker 2299110490u,
2074*993b0882SAndroid Build Coastguard Worker 3342378874u, 2589323490u, 1884430765u, 3739058655u,
2075*993b0882SAndroid Build Coastguard Worker 2419330954u, 355389916u, 273950915u, 3670136553u,
2076*993b0882SAndroid Build Coastguard Worker 410946824u,
2077*993b0882SAndroid Build Coastguard Worker 3174041420u,
2078*993b0882SAndroid Build Coastguard Worker 2609010298u, 3059091350u, 2300275014u, 725729828u,
2079*993b0882SAndroid Build Coastguard Worker 2548380995u, 1738849964u, 1257081412u, 79430455u,
2080*993b0882SAndroid Build Coastguard Worker 810321297u,
2081*993b0882SAndroid Build Coastguard Worker 3246190593u,
2082*993b0882SAndroid Build Coastguard Worker 1007937684u, 912115394u, 40880059u, 3450073327u,
2083*993b0882SAndroid Build Coastguard Worker 4289832174u, 2253485111u, 1065639151u, 2953189309u,
2084*993b0882SAndroid Build Coastguard Worker 124779113u,
2085*993b0882SAndroid Build Coastguard Worker 654299738u,
2086*993b0882SAndroid Build Coastguard Worker 115760833u, 1250932069u, 884995826u, 3998908281u,
2087*993b0882SAndroid Build Coastguard Worker 1382882981u, 1134187162u, 3202324501u, 487502928u,
2088*993b0882SAndroid Build Coastguard Worker 3032756345u,
2089*993b0882SAndroid Build Coastguard Worker 4057517628u,
2090*993b0882SAndroid Build Coastguard Worker 933197381u, 2319223127u, 2044528655u, 2554572663u,
2091*993b0882SAndroid Build Coastguard Worker 4049450620u, 1620812836u, 2832905391u, 2273005481u,
2092*993b0882SAndroid Build Coastguard Worker 1913090121u,
2093*993b0882SAndroid Build Coastguard Worker 1055456023u,
2094*993b0882SAndroid Build Coastguard Worker 510593296u, 3285343192u, 2912822536u, 1645225063u,
2095*993b0882SAndroid Build Coastguard Worker 638418430u, 452701300u, 1025483165u, 1639370512u,
2096*993b0882SAndroid Build Coastguard Worker 167948643u,
2097*993b0882SAndroid Build Coastguard Worker 2809842730u,
2098*993b0882SAndroid Build Coastguard Worker 2983135664u, 407521332u, 1543756616u, 3949773145u,
2099*993b0882SAndroid Build Coastguard Worker 4283462892u, 659962275u, 3878013463u, 1000748756u,
2100*993b0882SAndroid Build Coastguard Worker 4053212051u,
2101*993b0882SAndroid Build Coastguard Worker 4099239406u,
2102*993b0882SAndroid Build Coastguard Worker 3467581965u, 354635541u, 21301844u, 3831212473u,
2103*993b0882SAndroid Build Coastguard Worker 3189450571u, 2264401966u, 4096484849u, 1736448515u,
2104*993b0882SAndroid Build Coastguard Worker 3976926096u,
2105*993b0882SAndroid Build Coastguard Worker 3727194724u,
2106*993b0882SAndroid Build Coastguard Worker 2243487039u, 585209095u, 3143046007u, 969558123u,
2107*993b0882SAndroid Build Coastguard Worker 3037113502u, 3594170243u, 2835860223u, 3775493975u,
2108*993b0882SAndroid Build Coastguard Worker 2787220812u,
2109*993b0882SAndroid Build Coastguard Worker 2274252217u,
2110*993b0882SAndroid Build Coastguard Worker 2915380701u, 3077533278u, 1252871826u, 1519790952u,
2111*993b0882SAndroid Build Coastguard Worker 205297661u, 2950557658u, 3956882191u, 2724439401u,
2112*993b0882SAndroid Build Coastguard Worker 3694608025u,
2113*993b0882SAndroid Build Coastguard Worker 124028038u,
2114*993b0882SAndroid Build Coastguard Worker 216019153u, 1533010676u, 2259986336u, 2014061617u,
2115*993b0882SAndroid Build Coastguard Worker 2068617849u, 3078123052u, 2692046098u, 1582812948u,
2116*993b0882SAndroid Build Coastguard Worker 396916232u,
2117*993b0882SAndroid Build Coastguard Worker 1470894001u,
2118*993b0882SAndroid Build Coastguard Worker 1694309312u, 300268215u, 1553892743u, 671176040u,
2119*993b0882SAndroid Build Coastguard Worker 1544988994u, 2793402821u, 4194972569u, 2296476154u,
2120*993b0882SAndroid Build Coastguard Worker 748354332u,
2121*993b0882SAndroid Build Coastguard Worker 3491325898u,
2122*993b0882SAndroid Build Coastguard Worker 4261053291u, 1104998242u, 797816835u, 243564059u,
2123*993b0882SAndroid Build Coastguard Worker 2197717393u, 299029458u, 1675252188u, 3139770041u,
2124*993b0882SAndroid Build Coastguard Worker 583018574u,
2125*993b0882SAndroid Build Coastguard Worker 2532106100u,
2126*993b0882SAndroid Build Coastguard Worker 2099391658u, 3760526730u, 3422719327u, 3556917689u,
2127*993b0882SAndroid Build Coastguard Worker 2374009285u, 2130865894u, 3710563151u, 1437538307u,
2128*993b0882SAndroid Build Coastguard Worker 3938030842u,
2129*993b0882SAndroid Build Coastguard Worker 2006930694u,
2130*993b0882SAndroid Build Coastguard Worker 2151243336u, 1939741287u, 1957068175u, 2135147479u,
2131*993b0882SAndroid Build Coastguard Worker 649553342u, 1713643042u, 4188696599u, 1698739939u,
2132*993b0882SAndroid Build Coastguard Worker 3549427584u,
2133*993b0882SAndroid Build Coastguard Worker 1016382174u,
2134*993b0882SAndroid Build Coastguard Worker 322644378u, 2476164549u, 2037263020u, 88036019u,
2135*993b0882SAndroid Build Coastguard Worker 2548960923u, 539867919u, 2871157727u, 4031659929u,
2136*993b0882SAndroid Build Coastguard Worker 754087252u,
2137*993b0882SAndroid Build Coastguard Worker 972656559u,
2138*993b0882SAndroid Build Coastguard Worker 4246379429u, 3877308578u, 2059459630u, 3614934323u,
2139*993b0882SAndroid Build Coastguard Worker 1410565271u, 2102980459u, 215395636u, 1083393481u,
2140*993b0882SAndroid Build Coastguard Worker 3775523015u,
2141*993b0882SAndroid Build Coastguard Worker 2062750105u,
2142*993b0882SAndroid Build Coastguard Worker 2475645882u, 3041186774u, 3534315423u, 758607219u,
2143*993b0882SAndroid Build Coastguard Worker 1686100614u, 180500983u, 1155581185u, 1476664671u,
2144*993b0882SAndroid Build Coastguard Worker 2918661695u,
2145*993b0882SAndroid Build Coastguard Worker 3812731350u,
2146*993b0882SAndroid Build Coastguard Worker 4003853737u, 4148884881u, 1468469436u, 3278880418u,
2147*993b0882SAndroid Build Coastguard Worker 1045838071u, 1049161262u, 360450415u, 3158065524u,
2148*993b0882SAndroid Build Coastguard Worker 814443735u,
2149*993b0882SAndroid Build Coastguard Worker 3391401707u,
2150*993b0882SAndroid Build Coastguard Worker 729968410u, 738771593u, 3662738792u, 1672830580u,
2151*993b0882SAndroid Build Coastguard Worker 4199496163u, 188487238u, 219098233u, 2141731267u,
2152*993b0882SAndroid Build Coastguard Worker 3890250614u,
2153*993b0882SAndroid Build Coastguard Worker 2988780375u,
2154*993b0882SAndroid Build Coastguard Worker 4026279523u, 3489429375u, 2468433807u, 1178270701u,
2155*993b0882SAndroid Build Coastguard Worker 2685094218u, 2716621497u, 3718335529u, 2273344755u,
2156*993b0882SAndroid Build Coastguard Worker 701110882u,
2157*993b0882SAndroid Build Coastguard Worker 1925717409u,
2158*993b0882SAndroid Build Coastguard Worker 1515176562u, 2325460593u, 3954798930u, 784566105u,
2159*993b0882SAndroid Build Coastguard Worker 3769422266u, 1641530321u, 2703876862u, 2907480267u,
2160*993b0882SAndroid Build Coastguard Worker 1828076455u,
2161*993b0882SAndroid Build Coastguard Worker 1805635221u,
2162*993b0882SAndroid Build Coastguard Worker 3883381245u, 1476756210u, 2072514392u, 3658557081u,
2163*993b0882SAndroid Build Coastguard Worker 2003610746u, 2556845550u, 729594004u, 3303898266u,
2164*993b0882SAndroid Build Coastguard Worker 1968227254u,
2165*993b0882SAndroid Build Coastguard Worker 423204951u,
2166*993b0882SAndroid Build Coastguard Worker 231828688u, 4223697811u, 698619045u, 3636824418u,
2167*993b0882SAndroid Build Coastguard Worker 2738779239u, 2333529003u, 2833158642u, 580285428u,
2168*993b0882SAndroid Build Coastguard Worker 3038148234u,
2169*993b0882SAndroid Build Coastguard Worker 1012378004u,
2170*993b0882SAndroid Build Coastguard Worker 1113647298u, 1424593483u, 4053247723u, 1167152941u,
2171*993b0882SAndroid Build Coastguard Worker 2677383578u, 3419485379u, 2135673840u, 440478166u,
2172*993b0882SAndroid Build Coastguard Worker 1682229112u,
2173*993b0882SAndroid Build Coastguard Worker 3226724137u,
2174*993b0882SAndroid Build Coastguard Worker 1217439806u, 3828726923u, 3636576271u, 3467643156u,
2175*993b0882SAndroid Build Coastguard Worker 2005614908u, 2655346461u, 2345488441u, 1027557096u,
2176*993b0882SAndroid Build Coastguard Worker 3594084220u,
2177*993b0882SAndroid Build Coastguard Worker 1372306343u,
2178*993b0882SAndroid Build Coastguard Worker 2342583762u, 4291342905u, 4094931814u, 3254771759u,
2179*993b0882SAndroid Build Coastguard Worker 821978248u, 2404930117u, 1143937655u, 3156949255u,
2180*993b0882SAndroid Build Coastguard Worker 3460606610u,
2181*993b0882SAndroid Build Coastguard Worker 449701786u,
2182*993b0882SAndroid Build Coastguard Worker 3474906110u, 1932585294u, 2283357584u, 1808481478u,
2183*993b0882SAndroid Build Coastguard Worker 3522851029u, 3040164731u, 1530172182u, 2950426149u,
2184*993b0882SAndroid Build Coastguard Worker 1402416557u,
2185*993b0882SAndroid Build Coastguard Worker 756419859u,
2186*993b0882SAndroid Build Coastguard Worker 4132576145u, 724994790u, 2852015871u, 2177908339u,
2187*993b0882SAndroid Build Coastguard Worker 899914731u, 139675671u, 1423281870u, 3198458070u,
2188*993b0882SAndroid Build Coastguard Worker 807581308u,
2189*993b0882SAndroid Build Coastguard Worker 2021611521u,
2190*993b0882SAndroid Build Coastguard Worker 1801452575u, 1425984297u, 2833835949u, 1536827865u,
2191*993b0882SAndroid Build Coastguard Worker 3902351840u, 164546042u, 1872840974u, 3986194780u,
2192*993b0882SAndroid Build Coastguard Worker 792156290u,
2193*993b0882SAndroid Build Coastguard Worker 3378681896u,
2194*993b0882SAndroid Build Coastguard Worker 941547959u, 3931328334u, 3661060482u, 2386420777u,
2195*993b0882SAndroid Build Coastguard Worker 3920146272u, 3458621279u, 3348500844u, 2269586542u,
2196*993b0882SAndroid Build Coastguard Worker 797371473u,
2197*993b0882SAndroid Build Coastguard Worker 3188953649u,
2198*993b0882SAndroid Build Coastguard Worker 80514771u, 2913333490u, 1246325623u, 3253846094u,
2199*993b0882SAndroid Build Coastguard Worker 1723906239u, 1606413555u, 587500718u, 1412413859u,
2200*993b0882SAndroid Build Coastguard Worker 2310046829u,
2201*993b0882SAndroid Build Coastguard Worker 2113313263u,
2202*993b0882SAndroid Build Coastguard Worker 3855635608u, 47271944u, 1112281934u, 3440228404u,
2203*993b0882SAndroid Build Coastguard Worker 2633519166u, 425094457u, 307659635u, 67338587u,
2204*993b0882SAndroid Build Coastguard Worker 2412987939u,
2205*993b0882SAndroid Build Coastguard Worker 2363930989u,
2206*993b0882SAndroid Build Coastguard Worker 2853008596u, 2844637339u, 922568813u, 130379293u,
2207*993b0882SAndroid Build Coastguard Worker 2825204405u, 2904442145u, 1176875333u, 1511685505u,
2208*993b0882SAndroid Build Coastguard Worker 599177514u,
2209*993b0882SAndroid Build Coastguard Worker 1872681372u,
2210*993b0882SAndroid Build Coastguard Worker 682394826u, 1888849790u, 3635304282u, 1761257265u,
2211*993b0882SAndroid Build Coastguard Worker 1571292431u, 355247075u, 1177210823u, 1691529530u,
2212*993b0882SAndroid Build Coastguard Worker 3629531121u,
2213*993b0882SAndroid Build Coastguard Worker 3760474006u,
2214*993b0882SAndroid Build Coastguard Worker 1129340625u, 868116266u, 3908237785u, 1942124366u,
2215*993b0882SAndroid Build Coastguard Worker 1266630014u, 3214841995u, 334023850u, 1110037019u,
2216*993b0882SAndroid Build Coastguard Worker 369650727u,
2217*993b0882SAndroid Build Coastguard Worker 1288666741u,
2218*993b0882SAndroid Build Coastguard Worker 70535706u, 20230114u, 4284225520u, 727856157u,
2219*993b0882SAndroid Build Coastguard Worker 293696779u, 1244943770u, 3976592462u, 560421917u,
2220*993b0882SAndroid Build Coastguard Worker 4171688499u,
2221*993b0882SAndroid Build Coastguard Worker 2438786950u,
2222*993b0882SAndroid Build Coastguard Worker 1218144639u, 3809125983u, 1302395746u, 534542359u,
2223*993b0882SAndroid Build Coastguard Worker 2121993015u, 2899519374u, 3192177626u, 1761707794u,
2224*993b0882SAndroid Build Coastguard Worker 3101683464u,
2225*993b0882SAndroid Build Coastguard Worker 1555403906u,
2226*993b0882SAndroid Build Coastguard Worker 3225675390u, 1875263768u, 4278894569u, 651707603u,
2227*993b0882SAndroid Build Coastguard Worker 2111591484u, 3802716028u, 2900262228u, 1181469202u,
2228*993b0882SAndroid Build Coastguard Worker 3254743797u,
2229*993b0882SAndroid Build Coastguard Worker 1822684466u,
2230*993b0882SAndroid Build Coastguard Worker 860641829u, 3046128268u, 1284833012u, 1125261608u,
2231*993b0882SAndroid Build Coastguard Worker 461384524u, 2331344566u, 1274400010u, 990498321u,
2232*993b0882SAndroid Build Coastguard Worker 3462536298u,
2233*993b0882SAndroid Build Coastguard Worker 3796842585u,
2234*993b0882SAndroid Build Coastguard Worker 2346607194u, 279495949u, 3951194590u, 3522664971u,
2235*993b0882SAndroid Build Coastguard Worker 3169688303u, 726831706u, 1123875117u, 1816166599u,
2236*993b0882SAndroid Build Coastguard Worker 3759808754u,
2237*993b0882SAndroid Build Coastguard Worker 2918558151u,
2238*993b0882SAndroid Build Coastguard Worker 3713203220u, 3369939267u, 466047109u, 384042536u,
2239*993b0882SAndroid Build Coastguard Worker 587271104u, 2191634696u, 2449929095u, 1157932232u,
2240*993b0882SAndroid Build Coastguard Worker 2084466674u,
2241*993b0882SAndroid Build Coastguard Worker 841370485u,
2242*993b0882SAndroid Build Coastguard Worker 3241372562u, 4277738486u, 2150836793u, 1173569449u,
2243*993b0882SAndroid Build Coastguard Worker 778768930u, 2594706485u, 3065269405u, 3019263663u,
2244*993b0882SAndroid Build Coastguard Worker 2660146610u,
2245*993b0882SAndroid Build Coastguard Worker 2789946230u,
2246*993b0882SAndroid Build Coastguard Worker 77056913u, 728174395u, 3647185904u, 804562358u,
2247*993b0882SAndroid Build Coastguard Worker 2697276483u, 881311175u, 1178696435u, 2059173891u,
2248*993b0882SAndroid Build Coastguard Worker 2308303791u,
2249*993b0882SAndroid Build Coastguard Worker 221481230u,
2250*993b0882SAndroid Build Coastguard Worker 50241451u, 3689414100u, 1969074761u, 2732071529u,
2251*993b0882SAndroid Build Coastguard Worker 1900890356u, 840789500u, 2100609300u, 985565597u,
2252*993b0882SAndroid Build Coastguard Worker 1220850414u,
2253*993b0882SAndroid Build Coastguard Worker 2456636259u,
2254*993b0882SAndroid Build Coastguard Worker 223607678u, 1016310244u, 1937434395u, 85717256u,
2255*993b0882SAndroid Build Coastguard Worker 275058190u, 3712011133u, 171916016u, 2389569096u,
2256*993b0882SAndroid Build Coastguard Worker 3679765802u,
2257*993b0882SAndroid Build Coastguard Worker 3575358777u,
2258*993b0882SAndroid Build Coastguard Worker 3481108261u, 3178286380u, 2489642395u, 2931039055u,
2259*993b0882SAndroid Build Coastguard Worker 3086601621u, 3079518902u, 3027718495u, 2506894644u,
2260*993b0882SAndroid Build Coastguard Worker 2976869602u,
2261*993b0882SAndroid Build Coastguard Worker 2134336365u,
2262*993b0882SAndroid Build Coastguard Worker 2420172217u, 918054427u, 661522682u, 1403791357u,
2263*993b0882SAndroid Build Coastguard Worker 3587174388u, 2623673551u, 1355661457u, 4159477684u,
2264*993b0882SAndroid Build Coastguard Worker 1109013587u,
2265*993b0882SAndroid Build Coastguard Worker 3112183488u,
2266*993b0882SAndroid Build Coastguard Worker 2217849279u, 3500291996u, 2419603731u, 2929886201u,
2267*993b0882SAndroid Build Coastguard Worker 3854470013u, 1358382103u, 1357666555u, 21053566u,
2268*993b0882SAndroid Build Coastguard Worker 2716621233u,
2269*993b0882SAndroid Build Coastguard Worker 3094836862u,
2270*993b0882SAndroid Build Coastguard Worker 3309729704u, 57086558u, 839187419u, 2757944838u,
2271*993b0882SAndroid Build Coastguard Worker 3651040558u, 3607536716u, 3691257732u, 2312878285u,
2272*993b0882SAndroid Build Coastguard Worker 1202511724u,
2273*993b0882SAndroid Build Coastguard Worker 183479927u,
2274*993b0882SAndroid Build Coastguard Worker 2509829803u, 109313218u, 478173887u, 2072044014u,
2275*993b0882SAndroid Build Coastguard Worker 190631406u, 2495604975u, 1010416260u, 3679857586u,
2276*993b0882SAndroid Build Coastguard Worker 726566957u,
2277*993b0882SAndroid Build Coastguard Worker 258500881u,
2278*993b0882SAndroid Build Coastguard Worker 1805873908u, 3081447051u, 2352101327u, 534922207u,
2279*993b0882SAndroid Build Coastguard Worker 1584552873u, 813470716u, 255914637u, 249169434u,
2280*993b0882SAndroid Build Coastguard Worker 3193498057u,
2281*993b0882SAndroid Build Coastguard Worker 1038802706u,
2282*993b0882SAndroid Build Coastguard Worker 2590158653u, 3147907290u, 663060128u, 1156177857u,
2283*993b0882SAndroid Build Coastguard Worker 634616100u, 312879189u, 1545020368u, 2054634247u,
2284*993b0882SAndroid Build Coastguard Worker 3271451914u,
2285*993b0882SAndroid Build Coastguard Worker 3438291534u,
2286*993b0882SAndroid Build Coastguard Worker 2181454946u, 3864535432u, 2398586877u, 896491075u,
2287*993b0882SAndroid Build Coastguard Worker 2810631478u, 2770357487u, 3372930052u, 898070638u,
2288*993b0882SAndroid Build Coastguard Worker 2051007323u,
2289*993b0882SAndroid Build Coastguard Worker 392959778u,
2290*993b0882SAndroid Build Coastguard Worker 36645539u, 3743556044u, 4134529680u, 4124451188u,
2291*993b0882SAndroid Build Coastguard Worker 566806297u, 2936523982u, 1304761965u, 537399498u,
2292*993b0882SAndroid Build Coastguard Worker 1940818842u,
2293*993b0882SAndroid Build Coastguard Worker 40862381u,
2294*993b0882SAndroid Build Coastguard Worker 36288410u, 3063605629u, 2826611650u, 3961972098u,
2295*993b0882SAndroid Build Coastguard Worker 1871578006u, 2392095486u, 1136931591u, 513864488u,
2296*993b0882SAndroid Build Coastguard Worker 173276451u,
2297*993b0882SAndroid Build Coastguard Worker 3039055682u,
2298*993b0882SAndroid Build Coastguard Worker 3543322032u, 1943592006u, 657217094u, 1751698246u,
2299*993b0882SAndroid Build Coastguard Worker 2969618445u, 456616022u, 900309519u, 113892716u,
2300*993b0882SAndroid Build Coastguard Worker 1126392103u,
2301*993b0882SAndroid Build Coastguard Worker 1235651045u,
2302*993b0882SAndroid Build Coastguard Worker 1882073852u, 2136610853u, 2353639710u, 2819956700u,
2303*993b0882SAndroid Build Coastguard Worker 3980083530u, 828773559u, 224069850u, 902434120u,
2304*993b0882SAndroid Build Coastguard Worker 2802008036u,
2305*993b0882SAndroid Build Coastguard Worker 94358995u,
2306*993b0882SAndroid Build Coastguard Worker 2777723394u, 2812641403u, 2525832595u, 4157388110u,
2307*993b0882SAndroid Build Coastguard Worker 4235563782u, 937800324u, 141690749u, 568062536u,
2308*993b0882SAndroid Build Coastguard Worker 550123849u,
2309*993b0882SAndroid Build Coastguard Worker 1330316521u,
2310*993b0882SAndroid Build Coastguard Worker 1949488696u, 2296431366u, 1958465262u, 3564751729u,
2311*993b0882SAndroid Build Coastguard Worker 3748252207u, 120455129u, 1607318832u, 2525729790u,
2312*993b0882SAndroid Build Coastguard Worker 2640987481u,
2313*993b0882SAndroid Build Coastguard Worker 2332096657u,
2314*993b0882SAndroid Build Coastguard Worker 1775969159u, 1555085077u, 2913525137u, 1347085183u,
2315*993b0882SAndroid Build Coastguard Worker 2376253113u, 3194050574u, 1806090610u, 678641356u,
2316*993b0882SAndroid Build Coastguard Worker 1499146713u,
2317*993b0882SAndroid Build Coastguard Worker 383849715u,
2318*993b0882SAndroid Build Coastguard Worker 3299835823u, 2284860330u, 2614269636u, 3913628844u,
2319*993b0882SAndroid Build Coastguard Worker 2761334210u, 1959484587u, 529797021u, 239966995u,
2320*993b0882SAndroid Build Coastguard Worker 3102194829u,
2321*993b0882SAndroid Build Coastguard Worker 3602307804u,
2322*993b0882SAndroid Build Coastguard Worker 1122192627u, 3577510006u, 164486066u, 1680137310u,
2323*993b0882SAndroid Build Coastguard Worker 1473396395u, 1467801424u, 903493660u, 1185943071u,
2324*993b0882SAndroid Build Coastguard Worker 2798556505u,
2325*993b0882SAndroid Build Coastguard Worker 2306744492u,
2326*993b0882SAndroid Build Coastguard Worker 3167201310u, 3577947177u, 3067592134u, 2905506289u,
2327*993b0882SAndroid Build Coastguard Worker 1210366329u, 204484056u, 2347778932u, 3862374472u,
2328*993b0882SAndroid Build Coastguard Worker 3277439508u,
2329*993b0882SAndroid Build Coastguard Worker 4187414621u,
2330*993b0882SAndroid Build Coastguard Worker 1646699310u, 621385800u, 3934869089u, 3975491588u,
2331*993b0882SAndroid Build Coastguard Worker 3580085916u, 1925674500u, 2436305348u, 3983301539u,
2332*993b0882SAndroid Build Coastguard Worker 2739439523u,
2333*993b0882SAndroid Build Coastguard Worker 3291507446u,
2334*993b0882SAndroid Build Coastguard Worker 3395637920u, 3753389171u, 2955202032u, 2654255623u,
2335*993b0882SAndroid Build Coastguard Worker 3771089254u, 2140443405u, 2779834738u, 3261942805u,
2336*993b0882SAndroid Build Coastguard Worker 3526889244u,
2337*993b0882SAndroid Build Coastguard Worker 1842009139u,
2338*993b0882SAndroid Build Coastguard Worker 4048484340u, 2106218403u, 2161244271u, 772152700u,
2339*993b0882SAndroid Build Coastguard Worker 1158647659u, 3776791619u, 3882186721u, 699525237u,
2340*993b0882SAndroid Build Coastguard Worker 2954670460u,
2341*993b0882SAndroid Build Coastguard Worker 1007105869u,
2342*993b0882SAndroid Build Coastguard Worker 3359152025u, 1146388699u, 1401550303u, 2326582541u,
2343*993b0882SAndroid Build Coastguard Worker 4181783540u, 1085644043u, 1942143795u, 1038368308u,
2344*993b0882SAndroid Build Coastguard Worker 1526153809u,
2345*993b0882SAndroid Build Coastguard Worker 4042547244u,
2346*993b0882SAndroid Build Coastguard Worker 1891441000u, 2573991874u, 1281441253u, 3635098284u,
2347*993b0882SAndroid Build Coastguard Worker 1980545715u, 825985487u, 3934748116u, 4228386979u,
2348*993b0882SAndroid Build Coastguard Worker 1480870944u,
2349*993b0882SAndroid Build Coastguard Worker 1042194545u,
2350*993b0882SAndroid Build Coastguard Worker 2397771642u, 2248490001u, 3817869868u, 878654626u,
2351*993b0882SAndroid Build Coastguard Worker 3785629484u, 1672470870u, 3229367873u, 1894538933u,
2352*993b0882SAndroid Build Coastguard Worker 1010692731u,
2353*993b0882SAndroid Build Coastguard Worker 1733824268u,
2354*993b0882SAndroid Build Coastguard Worker 656620328u, 3048283803u, 3353340056u, 2324965120u,
2355*993b0882SAndroid Build Coastguard Worker 4192585951u, 2284524675u, 3483884368u, 1510168293u,
2356*993b0882SAndroid Build Coastguard Worker 1554942691u,
2357*993b0882SAndroid Build Coastguard Worker 1309709396u,
2358*993b0882SAndroid Build Coastguard Worker 1241133168u, 3162179280u, 4046378054u, 3171681593u,
2359*993b0882SAndroid Build Coastguard Worker 1165297136u, 3496703563u, 150437903u, 1948622072u,
2360*993b0882SAndroid Build Coastguard Worker 1076332463u,
2361*993b0882SAndroid Build Coastguard Worker 2292479143u,
2362*993b0882SAndroid Build Coastguard Worker 1464229958u, 3479738093u, 2328067598u, 2334503110u,
2363*993b0882SAndroid Build Coastguard Worker 833324834u, 3981605747u, 3002629155u, 2854644186u,
2364*993b0882SAndroid Build Coastguard Worker 2832201336u,
2365*993b0882SAndroid Build Coastguard Worker 95796957u,
2366*993b0882SAndroid Build Coastguard Worker 3269249397u, 2358313329u, 3411860910u, 4283292480u,
2367*993b0882SAndroid Build Coastguard Worker 2802208697u, 1305947955u, 2156803420u, 1991340283u,
2368*993b0882SAndroid Build Coastguard Worker 189678024u,
2369*993b0882SAndroid Build Coastguard Worker 447602599u,
2370*993b0882SAndroid Build Coastguard Worker 1055411517u, 1531748363u, 1555852656u, 412402681u,
2371*993b0882SAndroid Build Coastguard Worker 3774988152u, 20597551u, 2925024131u, 1423989620u,
2372*993b0882SAndroid Build Coastguard Worker 3749428061u,
2373*993b0882SAndroid Build Coastguard Worker 1541439448u,
2374*993b0882SAndroid Build Coastguard Worker 112270416u, 1936224776u, 132162941u, 3772011507u,
2375*993b0882SAndroid Build Coastguard Worker 3814102518u, 1908807815u, 444154079u, 823765347u,
2376*993b0882SAndroid Build Coastguard Worker 3362275567u,
2377*993b0882SAndroid Build Coastguard Worker 3419047430u,
2378*993b0882SAndroid Build Coastguard Worker 2108287005u, 2315102125u, 658593738u, 3195094029u,
2379*993b0882SAndroid Build Coastguard Worker 3721937534u, 3176229204u, 3398835373u, 1271898712u,
2380*993b0882SAndroid Build Coastguard Worker 1142546577u,
2381*993b0882SAndroid Build Coastguard Worker 3185986817u,
2382*993b0882SAndroid Build Coastguard Worker 3562705803u, 2046119567u, 912990621u, 1829977672u,
2383*993b0882SAndroid Build Coastguard Worker 3459576979u, 1118045834u, 1369529376u, 3320601076u,
2384*993b0882SAndroid Build Coastguard Worker 3954988953u,
2385*993b0882SAndroid Build Coastguard Worker 4002467635u,
2386*993b0882SAndroid Build Coastguard Worker 3359456351u, 1314849568u, 1766750942u, 2998874853u,
2387*993b0882SAndroid Build Coastguard Worker 1181800239u, 707328036u, 3314954697u, 2066721120u,
2388*993b0882SAndroid Build Coastguard Worker 598194215u,
2389*993b0882SAndroid Build Coastguard Worker 1124451278u,
2390*993b0882SAndroid Build Coastguard Worker 3156679616u, 3742684743u, 2960199690u, 2683497915u,
2391*993b0882SAndroid Build Coastguard Worker 2566077529u, 937014607u, 102095219u, 4262922475u,
2392*993b0882SAndroid Build Coastguard Worker 3132264275u,
2393*993b0882SAndroid Build Coastguard Worker 1262099830u,
2394*993b0882SAndroid Build Coastguard Worker 862722905u, 2717653494u, 3245583534u, 3427209989u,
2395*993b0882SAndroid Build Coastguard Worker 3220278124u, 85457091u, 2222333500u, 3513997967u,
2396*993b0882SAndroid Build Coastguard Worker 3522324951u,
2397*993b0882SAndroid Build Coastguard Worker 2830855552u,
2398*993b0882SAndroid Build Coastguard Worker 2215004781u, 3482411840u, 4227160614u, 2030964411u,
2399*993b0882SAndroid Build Coastguard Worker 1741393851u, 2643723748u, 942813508u, 403442675u,
2400*993b0882SAndroid Build Coastguard Worker 3112048748u,
2401*993b0882SAndroid Build Coastguard Worker 530556423u,
2402*993b0882SAndroid Build Coastguard Worker 3817755244u, 3543286628u, 2247276090u, 1532920842u,
2403*993b0882SAndroid Build Coastguard Worker 4101962711u, 1446540991u, 3297821473u, 1861255389u,
2404*993b0882SAndroid Build Coastguard Worker 1984398u,
2405*993b0882SAndroid Build Coastguard Worker 2366525138u,
2406*993b0882SAndroid Build Coastguard Worker 377589481u, 3549193828u, 1427765914u, 506831657u,
2407*993b0882SAndroid Build Coastguard Worker 277278988u, 1447652775u, 3214362239u, 3142198690u,
2408*993b0882SAndroid Build Coastguard Worker 2843087541u,
2409*993b0882SAndroid Build Coastguard Worker 468915015u,
2410*993b0882SAndroid Build Coastguard Worker 807895062u, 2198723907u, 4031145069u, 2417156212u,
2411*993b0882SAndroid Build Coastguard Worker 4027298697u, 637175947u, 1229254212u, 1773257887u,
2412*993b0882SAndroid Build Coastguard Worker 1659444818u,
2413*993b0882SAndroid Build Coastguard Worker 451148891u,
2414*993b0882SAndroid Build Coastguard Worker 2099741368u, 735351990u, 2534775713u, 3261804619u,
2415*993b0882SAndroid Build Coastguard Worker 712519954u, 3527962772u, 3758642738u, 4245823575u,
2416*993b0882SAndroid Build Coastguard Worker 1281314264u,
2417*993b0882SAndroid Build Coastguard Worker 1167866160u,
2418*993b0882SAndroid Build Coastguard Worker 1489546151u, 1197354389u, 1043278102u, 2563326586u,
2419*993b0882SAndroid Build Coastguard Worker 371937794u, 2320164817u, 3189512691u, 573685198u,
2420*993b0882SAndroid Build Coastguard Worker 4108603513u,
2421*993b0882SAndroid Build Coastguard Worker 3758899588u,
2422*993b0882SAndroid Build Coastguard Worker 3507030163u, 2947201212u, 2529492585u, 578234375u,
2423*993b0882SAndroid Build Coastguard Worker 3362349842u, 3318878925u, 3611203517u, 3059253190u,
2424*993b0882SAndroid Build Coastguard Worker 4270755916u,
2425*993b0882SAndroid Build Coastguard Worker 4291274625u,
2426*993b0882SAndroid Build Coastguard Worker 4237586791u, 4137422245u, 2927218651u, 2444687041u,
2427*993b0882SAndroid Build Coastguard Worker 797128811u, 2043057612u, 396533859u, 2665256178u,
2428*993b0882SAndroid Build Coastguard Worker 3346510674u,
2429*993b0882SAndroid Build Coastguard Worker 1779586176u,
2430*993b0882SAndroid Build Coastguard Worker 3076562062u, 1882746214u, 921095362u, 2026988397u,
2431*993b0882SAndroid Build Coastguard Worker 514514911u, 3886379478u, 4218272420u, 1480386793u,
2432*993b0882SAndroid Build Coastguard Worker 3900160816u,
2433*993b0882SAndroid Build Coastguard Worker 2292273451u,
2434*993b0882SAndroid Build Coastguard Worker 1276138356u, 1125461821u, 1912885715u, 3365266013u,
2435*993b0882SAndroid Build Coastguard Worker 1333211627u, 4085009861u, 1390530102u, 3347984752u,
2436*993b0882SAndroid Build Coastguard Worker 2721771301u,
2437*993b0882SAndroid Build Coastguard Worker 1419492325u,
2438*993b0882SAndroid Build Coastguard Worker 4066766256u, 3250852311u, 820111852u, 1382201318u,
2439*993b0882SAndroid Build Coastguard Worker 2366036798u, 938032241u, 3100979439u, 487048687u,
2440*993b0882SAndroid Build Coastguard Worker 2292851045u,
2441*993b0882SAndroid Build Coastguard Worker 3241399180u,
2442*993b0882SAndroid Build Coastguard Worker 3912670510u, 2416437067u, 2973194517u, 3507707986u,
2443*993b0882SAndroid Build Coastguard Worker 1935099406u, 2533441488u, 104616731u, 2892622820u,
2444*993b0882SAndroid Build Coastguard Worker 3801190339u,
2445*993b0882SAndroid Build Coastguard Worker 4239188808u,
2446*993b0882SAndroid Build Coastguard Worker 807238241u, 3300121546u, 2249406147u, 4032114017u,
2447*993b0882SAndroid Build Coastguard Worker 3713738189u, 3324425575u, 4275607376u, 3663120298u,
2448*993b0882SAndroid Build Coastguard Worker 4173658372u,
2449*993b0882SAndroid Build Coastguard Worker 3984289690u,
2450*993b0882SAndroid Build Coastguard Worker 1827636846u, 3264588778u, 3297165529u, 558623533u,
2451*993b0882SAndroid Build Coastguard Worker 2728945672u, 1566297318u, 3447249966u, 481719551u,
2452*993b0882SAndroid Build Coastguard Worker 1596842050u,
2453*993b0882SAndroid Build Coastguard Worker 1838185946u,
2454*993b0882SAndroid Build Coastguard Worker 265271620u, 1050246315u, 4046655705u, 1844193138u,
2455*993b0882SAndroid Build Coastguard Worker 3807563245u, 1075384804u, 1292554949u, 1506525927u,
2456*993b0882SAndroid Build Coastguard Worker 2921816148u,
2457*993b0882SAndroid Build Coastguard Worker 2051885269u,
2458*993b0882SAndroid Build Coastguard Worker 1930534041u, 3872721086u, 1564489377u, 2272482181u,
2459*993b0882SAndroid Build Coastguard Worker 2849358683u, 589618304u, 2262072443u, 290363051u,
2460*993b0882SAndroid Build Coastguard Worker 299168363u,
2461*993b0882SAndroid Build Coastguard Worker 3867603931u,
2462*993b0882SAndroid Build Coastguard Worker 2868688756u, 2545263115u, 1092098533u, 3885725603u,
2463*993b0882SAndroid Build Coastguard Worker 2352430409u, 1981595469u, 2047946646u, 1332642839u,
2464*993b0882SAndroid Build Coastguard Worker 793806516u,
2465*993b0882SAndroid Build Coastguard Worker 214858837u,
2466*993b0882SAndroid Build Coastguard Worker 1061484659u, 3192394476u, 1115054785u, 3690637234u,
2467*993b0882SAndroid Build Coastguard Worker 996792368u, 2023479706u, 3046498231u, 4205835102u,
2468*993b0882SAndroid Build Coastguard Worker 3870714754u,
2469*993b0882SAndroid Build Coastguard Worker 257472875u,
2470*993b0882SAndroid Build Coastguard Worker 3549864599u, 2040276129u, 2414778670u, 812235477u,
2471*993b0882SAndroid Build Coastguard Worker 2674248196u, 1864096101u, 2257492689u, 1332556794u,
2472*993b0882SAndroid Build Coastguard Worker 1079540713u,
2473*993b0882SAndroid Build Coastguard Worker 465530720u,
2474*993b0882SAndroid Build Coastguard Worker 2304763972u, 830724724u, 3354588920u, 2510713652u,
2475*993b0882SAndroid Build Coastguard Worker 3103749409u, 468835585u, 1707620787u, 3038024846u,
2476*993b0882SAndroid Build Coastguard Worker 1000303198u,
2477*993b0882SAndroid Build Coastguard Worker 3462270146u,
2478*993b0882SAndroid Build Coastguard Worker 2748698899u, 2100348093u, 511537258u, 1237187486u,
2479*993b0882SAndroid Build Coastguard Worker 102049383u, 2268226698u, 3162251739u, 4219404629u,
2480*993b0882SAndroid Build Coastguard Worker 838822407u,
2481*993b0882SAndroid Build Coastguard Worker 1481440623u,
2482*993b0882SAndroid Build Coastguard Worker 2989224077u, 2676681975u, 3246551821u, 3812079906u,
2483*993b0882SAndroid Build Coastguard Worker 370572963u, 2283154352u, 3084789986u, 1961085583u,
2484*993b0882SAndroid Build Coastguard Worker 1955640586u,
2485*993b0882SAndroid Build Coastguard Worker 2409348147u,
2486*993b0882SAndroid Build Coastguard Worker 2284780581u, 1634818716u, 4018221729u, 2320761377u,
2487*993b0882SAndroid Build Coastguard Worker 3566831899u, 1799560520u, 91431959u, 1754113747u,
2488*993b0882SAndroid Build Coastguard Worker 1459430477u,
2489*993b0882SAndroid Build Coastguard Worker 3613658517u,
2490*993b0882SAndroid Build Coastguard Worker 924489906u, 3406317699u, 866289774u, 3924821603u,
2491*993b0882SAndroid Build Coastguard Worker 1265394945u, 1870668109u, 151949856u, 2747006534u,
2492*993b0882SAndroid Build Coastguard Worker 3111906201u,
2493*993b0882SAndroid Build Coastguard Worker 64039467u,
2494*993b0882SAndroid Build Coastguard Worker 2314447545u, 2600195638u, 4095795204u, 4162096026u,
2495*993b0882SAndroid Build Coastguard Worker 1026756826u, 2460047982u, 52686887u, 823198739u,
2496*993b0882SAndroid Build Coastguard Worker 1518045160u,
2497*993b0882SAndroid Build Coastguard Worker 2867527376u,
2498*993b0882SAndroid Build Coastguard Worker 566410761u, 2200433819u, 2114146405u, 2893790965u,
2499*993b0882SAndroid Build Coastguard Worker 881504901u, 974783212u, 490815659u, 937300283u,
2500*993b0882SAndroid Build Coastguard Worker 1523735309u,
2501*993b0882SAndroid Build Coastguard Worker 2511976468u,
2502*993b0882SAndroid Build Coastguard Worker 2634644947u, 355119367u, 1373773092u, 309232995u,
2503*993b0882SAndroid Build Coastguard Worker 3088671051u, 787126032u, 3442836843u, 4289194567u,
2504*993b0882SAndroid Build Coastguard Worker 2177850062u,
2505*993b0882SAndroid Build Coastguard Worker 1174136430u,
2506*993b0882SAndroid Build Coastguard Worker 3248982914u, 3129039732u, 1166851580u, 2196451882u,
2507*993b0882SAndroid Build Coastguard Worker 469595580u, 2130837700u, 3783349021u, 3745262548u,
2508*993b0882SAndroid Build Coastguard Worker 1236930515u,
2509*993b0882SAndroid Build Coastguard Worker 3032131496u,
2510*993b0882SAndroid Build Coastguard Worker 1525591437u, 1823628217u, 1939019255u, 1950270463u,
2511*993b0882SAndroid Build Coastguard Worker 3659899927u, 3688643445u, 3004399289u, 1155199552u,
2512*993b0882SAndroid Build Coastguard Worker 357547234u,
2513*993b0882SAndroid Build Coastguard Worker 2213110526u,
2514*993b0882SAndroid Build Coastguard Worker 3122658210u, 2667800490u, 2718690333u, 3512372076u,
2515*993b0882SAndroid Build Coastguard Worker 1098611683u, 2657518392u, 4248458835u, 3109874532u,
2516*993b0882SAndroid Build Coastguard Worker 1592908438u,
2517*993b0882SAndroid Build Coastguard Worker 2864927516u,
2518*993b0882SAndroid Build Coastguard Worker 3635248840u, 1251777186u, 3797340158u, 3508496870u,
2519*993b0882SAndroid Build Coastguard Worker 303354834u, 1482394062u, 2087100120u, 1595931912u,
2520*993b0882SAndroid Build Coastguard Worker 608574156u,
2521*993b0882SAndroid Build Coastguard Worker 723367884u,
2522*993b0882SAndroid Build Coastguard Worker 907938402u, 3357047807u, 1619629851u, 3092082995u,
2523*993b0882SAndroid Build Coastguard Worker 89030300u, 916336992u, 1861180168u, 3436334155u,
2524*993b0882SAndroid Build Coastguard Worker 1375000544u,
2525*993b0882SAndroid Build Coastguard Worker 3472936241u,
2526*993b0882SAndroid Build Coastguard Worker 1321217853u, 791356402u, 2872410224u, 2326250297u,
2527*993b0882SAndroid Build Coastguard Worker 2657644088u, 1748314108u, 4146771421u, 2913114440u,
2528*993b0882SAndroid Build Coastguard Worker 2924821844u,
2529*993b0882SAndroid Build Coastguard Worker 2101101496u,
2530*993b0882SAndroid Build Coastguard Worker 3268017251u, 2109603066u, 690665520u, 1830067573u,
2531*993b0882SAndroid Build Coastguard Worker 951427661u, 2982533150u, 3884512506u, 2358657479u,
2532*993b0882SAndroid Build Coastguard Worker 2833210784u,
2533*993b0882SAndroid Build Coastguard Worker 3419798214u,
2534*993b0882SAndroid Build Coastguard Worker 3785893994u, 2103940206u, 86759766u, 4031230616u,
2535*993b0882SAndroid Build Coastguard Worker 3745237192u, 2739453927u, 497038072u, 3303159408u,
2536*993b0882SAndroid Build Coastguard Worker 1251537249u,
2537*993b0882SAndroid Build Coastguard Worker 1993408196u,
2538*993b0882SAndroid Build Coastguard Worker 3185905715u, 2885948408u, 3154277110u, 2444150313u,
2539*993b0882SAndroid Build Coastguard Worker 2505582079u, 2120610195u, 3266465773u, 1814611964u,
2540*993b0882SAndroid Build Coastguard Worker 3080050407u,
2541*993b0882SAndroid Build Coastguard Worker 1079915522u,
2542*993b0882SAndroid Build Coastguard Worker 1819346505u, 2529946763u, 892097374u, 3740257161u,
2543*993b0882SAndroid Build Coastguard Worker 3618100441u, 1079900094u, 3607172225u, 737863389u,
2544*993b0882SAndroid Build Coastguard Worker 360704560u,
2545*993b0882SAndroid Build Coastguard Worker 3341993089u,
2546*993b0882SAndroid Build Coastguard Worker 1139047381u, 3132219631u, 1248981859u, 1109338159u,
2547*993b0882SAndroid Build Coastguard Worker 2004908615u, 4022302594u, 4166640860u, 2959140950u,
2548*993b0882SAndroid Build Coastguard Worker 3949235962u,
2549*993b0882SAndroid Build Coastguard Worker 2832278473u,
2550*993b0882SAndroid Build Coastguard Worker 2200524012u, 2634933043u, 2495844522u, 2613799818u,
2551*993b0882SAndroid Build Coastguard Worker 4034096813u, 683271795u, 1673546817u, 1363163726u,
2552*993b0882SAndroid Build Coastguard Worker 1805395136u,
2553*993b0882SAndroid Build Coastguard Worker 511749501u,
2554*993b0882SAndroid Build Coastguard Worker 1231032599u, 2305979751u, 345737783u, 3339868854u,
2555*993b0882SAndroid Build Coastguard Worker 2931857933u, 2323251738u, 1332068477u, 51846558u,
2556*993b0882SAndroid Build Coastguard Worker 3927238177u,
2557*993b0882SAndroid Build Coastguard Worker 1387182179u,
2558*993b0882SAndroid Build Coastguard Worker 1701238601u, 1419275173u, 2580882268u, 3357874599u,
2559*993b0882SAndroid Build Coastguard Worker 1726558907u, 1292901039u, 1371322339u, 1311713044u,
2560*993b0882SAndroid Build Coastguard Worker 3526735232u,
2561*993b0882SAndroid Build Coastguard Worker 4017884184u,
2562*993b0882SAndroid Build Coastguard Worker 3366093428u, 77140994u, 2128996229u, 1357915765u,
2563*993b0882SAndroid Build Coastguard Worker 4019691901u, 483989024u, 2390311750u, 2766065288u,
2564*993b0882SAndroid Build Coastguard Worker 3938587520u,
2565*993b0882SAndroid Build Coastguard Worker 3064810344u,
2566*993b0882SAndroid Build Coastguard Worker 1054589198u, 1274997019u, 4040589616u, 1277751144u,
2567*993b0882SAndroid Build Coastguard Worker 2274907047u, 4170399945u, 2886368209u, 4168922115u,
2568*993b0882SAndroid Build Coastguard Worker 3901237033u,
2569*993b0882SAndroid Build Coastguard Worker 3252972311u,
2570*993b0882SAndroid Build Coastguard Worker 2205185840u, 3403097556u, 3385493699u, 2809751370u,
2571*993b0882SAndroid Build Coastguard Worker 555319628u, 399539034u, 2998971454u, 1521596214u,
2572*993b0882SAndroid Build Coastguard Worker 178870216u,
2573*993b0882SAndroid Build Coastguard Worker 1471733541u,
2574*993b0882SAndroid Build Coastguard Worker 519629198u, 514159209u, 1500582242u, 1928616587u,
2575*993b0882SAndroid Build Coastguard Worker 2686427928u, 4133138798u, 1225914083u, 1432713584u,
2576*993b0882SAndroid Build Coastguard Worker 3559310915u,
2577*993b0882SAndroid Build Coastguard Worker 3925489366u,
2578*993b0882SAndroid Build Coastguard Worker 1055613123u, 4126676029u, 2723867653u, 3290604111u,
2579*993b0882SAndroid Build Coastguard Worker 1377022957u, 2373608155u, 3615237379u, 594338683u,
2580*993b0882SAndroid Build Coastguard Worker 2645257602u,
2581*993b0882SAndroid Build Coastguard Worker 2408427260u,
2582*993b0882SAndroid Build Coastguard Worker 917033274u, 750455097u, 625657657u, 121713200u,
2583*993b0882SAndroid Build Coastguard Worker 2191273413u, 4043949724u, 3293146785u, 3809297972u,
2584*993b0882SAndroid Build Coastguard Worker 3947296919u,
2585*993b0882SAndroid Build Coastguard Worker 115456894u,
2586*993b0882SAndroid Build Coastguard Worker 1529576616u, 1459278275u, 2157117997u, 1747859293u,
2587*993b0882SAndroid Build Coastguard Worker 4106665903u, 996939232u, 2007976332u, 4274649009u,
2588*993b0882SAndroid Build Coastguard Worker 1017725787u,
2589*993b0882SAndroid Build Coastguard Worker 4244666096u,
2590*993b0882SAndroid Build Coastguard Worker 1219631331u, 3072426253u, 3547691720u, 1620822012u,
2591*993b0882SAndroid Build Coastguard Worker 1397717508u, 2031597325u, 3345983430u, 2459068000u,
2592*993b0882SAndroid Build Coastguard Worker 3645130467u,
2593*993b0882SAndroid Build Coastguard Worker 2308642742u,
2594*993b0882SAndroid Build Coastguard Worker 359955852u, 1348467968u, 1133123059u, 2435919062u,
2595*993b0882SAndroid Build Coastguard Worker 2800365907u, 4213217210u, 4056565603u, 2811666556u,
2596*993b0882SAndroid Build Coastguard Worker 2318007236u,
2597*993b0882SAndroid Build Coastguard Worker 3823652401u,
2598*993b0882SAndroid Build Coastguard Worker 3654086429u, 1273260424u, 1591610446u, 943349350u,
2599*993b0882SAndroid Build Coastguard Worker 3441227678u, 3779964757u, 233818224u, 3469971032u,
2600*993b0882SAndroid Build Coastguard Worker 3764095096u,
2601*993b0882SAndroid Build Coastguard Worker 4009204587u,
2602*993b0882SAndroid Build Coastguard Worker 678472092u, 1990559652u, 2583121088u, 2978143652u,
2603*993b0882SAndroid Build Coastguard Worker 2496370864u, 2139539656u, 4287972050u, 295832576u,
2604*993b0882SAndroid Build Coastguard Worker 3536742861u,
2605*993b0882SAndroid Build Coastguard Worker 2257466133u,
2606*993b0882SAndroid Build Coastguard Worker 2738052161u, 1988611898u, 2466189642u, 3294419573u,
2607*993b0882SAndroid Build Coastguard Worker 2311186273u, 474374532u, 3081964174u, 2515138278u,
2608*993b0882SAndroid Build Coastguard Worker 835731677u,
2609*993b0882SAndroid Build Coastguard Worker 1178182694u,
2610*993b0882SAndroid Build Coastguard Worker 3352119543u, 2884763225u, 3462399574u, 2900817210u,
2611*993b0882SAndroid Build Coastguard Worker 1993698511u, 2868445043u, 2746444849u, 1205258179u,
2612*993b0882SAndroid Build Coastguard Worker 2353442946u,
2613*993b0882SAndroid Build Coastguard Worker 4079040070u,
2614*993b0882SAndroid Build Coastguard Worker 3624133102u, 2907136076u, 2902521697u, 426813211u,
2615*993b0882SAndroid Build Coastguard Worker 1418185512u, 3711189488u, 1351506552u, 1934749519u,
2616*993b0882SAndroid Build Coastguard Worker 46595543u,
2617*993b0882SAndroid Build Coastguard Worker 401688809u,
2618*993b0882SAndroid Build Coastguard Worker 3514602124u, 1396852607u, 1951477943u, 2502249173u,
2619*993b0882SAndroid Build Coastguard Worker 3199695820u, 2890250638u, 4205072507u, 1715623846u,
2620*993b0882SAndroid Build Coastguard Worker 3266686789u,
2621*993b0882SAndroid Build Coastguard Worker 3218688128u,
2622*993b0882SAndroid Build Coastguard Worker 1697759742u, 851227671u, 2358709645u, 4174233268u,
2623*993b0882SAndroid Build Coastguard Worker 500583683u, 3805940955u, 736234120u, 2710563712u,
2624*993b0882SAndroid Build Coastguard Worker 1949664540u,
2625*993b0882SAndroid Build Coastguard Worker 3139414003u,
2626*993b0882SAndroid Build Coastguard Worker 4293073253u, 1284406972u, 1785182449u, 1051548274u,
2627*993b0882SAndroid Build Coastguard Worker 2994248357u, 2499882522u, 717208669u, 2039517285u,
2628*993b0882SAndroid Build Coastguard Worker 518424929u,
2629*993b0882SAndroid Build Coastguard Worker 143136433u,
2630*993b0882SAndroid Build Coastguard Worker 2303774671u, 1272930860u, 2286410920u, 788459311u,
2631*993b0882SAndroid Build Coastguard Worker 273225293u, 2439291703u, 2254505236u, 3446287701u,
2632*993b0882SAndroid Build Coastguard Worker 3655156558u,
2633*993b0882SAndroid Build Coastguard Worker 1546628787u,
2634*993b0882SAndroid Build Coastguard Worker 340081500u, 3285722006u, 1324810435u, 1053980860u,
2635*993b0882SAndroid Build Coastguard Worker 1779472859u, 2700355724u, 686005017u, 3762376315u,
2636*993b0882SAndroid Build Coastguard Worker 3963193100u,
2637*993b0882SAndroid Build Coastguard Worker 1370881135u,
2638*993b0882SAndroid Build Coastguard Worker 661300087u, 1152753704u, 2349891598u, 3910051187u,
2639*993b0882SAndroid Build Coastguard Worker 2109444785u, 1311123870u, 2639837565u, 1896770931u,
2640*993b0882SAndroid Build Coastguard Worker 1081414128u,
2641*993b0882SAndroid Build Coastguard Worker 869877586u,
2642*993b0882SAndroid Build Coastguard Worker 4284220400u, 63045374u, 235968615u, 184451062u,
2643*993b0882SAndroid Build Coastguard Worker 1271099822u, 1319179857u, 3274963209u, 4172272710u,
2644*993b0882SAndroid Build Coastguard Worker 3388797445u,
2645*993b0882SAndroid Build Coastguard Worker 2965973320u,
2646*993b0882SAndroid Build Coastguard Worker 3793110097u, 3327241723u, 2991804005u, 1199544355u,
2647*993b0882SAndroid Build Coastguard Worker 771553759u, 2031749842u, 2596517372u, 1199888213u,
2648*993b0882SAndroid Build Coastguard Worker 858347951u,
2649*993b0882SAndroid Build Coastguard Worker 3340178832u,
2650*993b0882SAndroid Build Coastguard Worker 2903875412u, 763490382u, 76949161u, 2056544406u,
2651*993b0882SAndroid Build Coastguard Worker 1145227689u, 998233136u, 2354530024u, 427713587u,
2652*993b0882SAndroid Build Coastguard Worker 3537837347u,
2653*993b0882SAndroid Build Coastguard Worker 604661755u,
2654*993b0882SAndroid Build Coastguard Worker 923986833u, 1023730418u, 798294227u, 432557449u,
2655*993b0882SAndroid Build Coastguard Worker 801802449u, 1861313429u, 3899128441u, 4068407979u,
2656*993b0882SAndroid Build Coastguard Worker 2352677083u,
2657*993b0882SAndroid Build Coastguard Worker 3783539925u,
2658*993b0882SAndroid Build Coastguard Worker 10731973u, 3390767975u, 3949540249u, 1920121661u,
2659*993b0882SAndroid Build Coastguard Worker 3248580201u, 641956426u, 2104847395u, 604835744u,
2660*993b0882SAndroid Build Coastguard Worker 1491663404u,
2661*993b0882SAndroid Build Coastguard Worker 4255204651u,
2662*993b0882SAndroid Build Coastguard Worker 1520970746u, 2845653368u, 3247412938u, 3730629005u,
2663*993b0882SAndroid Build Coastguard Worker 855569514u, 3073294700u, 2429691698u, 3818342476u,
2664*993b0882SAndroid Build Coastguard Worker 3938869985u,
2665*993b0882SAndroid Build Coastguard Worker 2731201328u,
2666*993b0882SAndroid Build Coastguard Worker 2335202643u, 778117742u, 13298408u, 228780590u,
2667*993b0882SAndroid Build Coastguard Worker 2871715314u, 3253688653u, 4150999702u, 3846220408u,
2668*993b0882SAndroid Build Coastguard Worker 930808u,
2669*993b0882SAndroid Build Coastguard Worker 1397128726u,
2670*993b0882SAndroid Build Coastguard Worker 1964216488u, 2781092828u, 116285375u, 2271239476u,
2671*993b0882SAndroid Build Coastguard Worker 3724347554u, 2931203895u, 3893169206u, 1883912528u,
2672*993b0882SAndroid Build Coastguard Worker 2093892660u,
2673*993b0882SAndroid Build Coastguard Worker 3658787024u,
2674*993b0882SAndroid Build Coastguard Worker 3095016046u, 1094059199u, 3640239610u, 558564267u,
2675*993b0882SAndroid Build Coastguard Worker 2102812456u, 464734873u, 925262247u, 1609838036u,
2676*993b0882SAndroid Build Coastguard Worker 588364741u,
2677*993b0882SAndroid Build Coastguard Worker 1731409233u,
2678*993b0882SAndroid Build Coastguard Worker 1576165139u, 3933979268u, 375316394u, 4247099643u,
2679*993b0882SAndroid Build Coastguard Worker 3670508019u, 4080496835u, 2371248533u, 183762693u,
2680*993b0882SAndroid Build Coastguard Worker 2078935389u,
2681*993b0882SAndroid Build Coastguard Worker 2699810414u,
2682*993b0882SAndroid Build Coastguard Worker 1491815683u, 2999180789u, 1831158425u, 1603373553u,
2683*993b0882SAndroid Build Coastguard Worker 2006136905u, 3210230591u, 416748595u, 1536971415u,
2684*993b0882SAndroid Build Coastguard Worker 3271869367u,
2685*993b0882SAndroid Build Coastguard Worker 1266062739u,
2686*993b0882SAndroid Build Coastguard Worker 2138414557u, 3337114778u, 1634586826u, 36472629u,
2687*993b0882SAndroid Build Coastguard Worker 4482244u, 568009609u, 2721216780u, 4037289545u,
2688*993b0882SAndroid Build Coastguard Worker 2235138807u,
2689*993b0882SAndroid Build Coastguard Worker 1789351460u,
2690*993b0882SAndroid Build Coastguard Worker 4067539527u, 1323062829u, 3864620647u, 4192026301u,
2691*993b0882SAndroid Build Coastguard Worker 4278901241u, 1399025382u, 2826652805u, 1363860382u,
2692*993b0882SAndroid Build Coastguard Worker 1801770651u,
2693*993b0882SAndroid Build Coastguard Worker 1613381526u,
2694*993b0882SAndroid Build Coastguard Worker 1165249276u, 4046576622u, 2535596946u, 3260388176u,
2695*993b0882SAndroid Build Coastguard Worker 1078898578u, 2259750862u, 643387587u, 237144235u,
2696*993b0882SAndroid Build Coastguard Worker 4199571427u,
2697*993b0882SAndroid Build Coastguard Worker 3440917581u,
2698*993b0882SAndroid Build Coastguard Worker 3067939258u, 2018625455u, 1460528353u, 3138629939u,
2699*993b0882SAndroid Build Coastguard Worker 1666223528u, 3841139376u, 2528281125u, 885565193u,
2700*993b0882SAndroid Build Coastguard Worker 2609492686u,
2701*993b0882SAndroid Build Coastguard Worker 2517257479u,
2702*993b0882SAndroid Build Coastguard Worker 560864620u, 2261471820u, 3491559165u, 1329620416u,
2703*993b0882SAndroid Build Coastguard Worker 622383582u, 1759597655u, 2877873893u, 584692817u,
2704*993b0882SAndroid Build Coastguard Worker 1901728399u,
2705*993b0882SAndroid Build Coastguard Worker 2599000260u,
2706*993b0882SAndroid Build Coastguard Worker 3169771644u, 296332336u, 774719455u, 4175920823u,
2707*993b0882SAndroid Build Coastguard Worker 2287316070u, 4115615023u, 1073335619u, 4240292725u,
2708*993b0882SAndroid Build Coastguard Worker 1359158837u,
2709*993b0882SAndroid Build Coastguard Worker 1960974237u,
2710*993b0882SAndroid Build Coastguard Worker 3173724597u, 1619084286u, 2876340752u, 4065675347u,
2711*993b0882SAndroid Build Coastguard Worker 480741335u, 1237329941u, 701055566u, 3729009837u,
2712*993b0882SAndroid Build Coastguard Worker 1314736422u,
2713*993b0882SAndroid Build Coastguard Worker 4003180069u,
2714*993b0882SAndroid Build Coastguard Worker 3118519317u, 3035354420u, 3380357671u, 4020909015u,
2715*993b0882SAndroid Build Coastguard Worker 253958714u, 3545798863u, 3008185002u, 2624719888u,
2716*993b0882SAndroid Build Coastguard Worker 3219955575u,
2717*993b0882SAndroid Build Coastguard Worker 3060719376u,
2718*993b0882SAndroid Build Coastguard Worker 573101682u, 1580316843u, 2610493412u, 3490983536u,
2719*993b0882SAndroid Build Coastguard Worker 3601975611u, 851470366u, 635384901u, 3427048824u,
2720*993b0882SAndroid Build Coastguard Worker 1470002757u,
2721*993b0882SAndroid Build Coastguard Worker 3592460087u,
2722*993b0882SAndroid Build Coastguard Worker 2265226856u, 4124282457u, 2106385486u, 3334305617u,
2723*993b0882SAndroid Build Coastguard Worker 4208282753u, 3798749815u, 225396466u, 118791182u,
2724*993b0882SAndroid Build Coastguard Worker 2523395972u,
2725*993b0882SAndroid Build Coastguard Worker 194595464u,
2726*993b0882SAndroid Build Coastguard Worker 2563824631u, 2521301383u, 4224409406u, 468670274u,
2727*993b0882SAndroid Build Coastguard Worker 1761966400u, 1300908277u, 2570709228u, 1847901526u,
2728*993b0882SAndroid Build Coastguard Worker 1470099163u,
2729*993b0882SAndroid Build Coastguard Worker 2690466752u,
2730*993b0882SAndroid Build Coastguard Worker 1472536718u, 2399279735u, 4150607803u, 1775080054u,
2731*993b0882SAndroid Build Coastguard Worker 2082537685u, 4080034578u, 1256001880u, 392967725u,
2732*993b0882SAndroid Build Coastguard Worker 2055838940u,
2733*993b0882SAndroid Build Coastguard Worker 3349115816u,
2734*993b0882SAndroid Build Coastguard Worker 1745947263u, 2213925887u, 1836572741u, 2417722792u,
2735*993b0882SAndroid Build Coastguard Worker 636223705u, 2423329294u, 3960951311u, 1543591052u,
2736*993b0882SAndroid Build Coastguard Worker 1547914361u,
2737*993b0882SAndroid Build Coastguard Worker 2760945653u,
2738*993b0882SAndroid Build Coastguard Worker 3519014111u, 313543871u, 4119598884u, 1071003714u,
2739*993b0882SAndroid Build Coastguard Worker 2192556597u, 1526995535u, 3929839778u, 536388591u,
2740*993b0882SAndroid Build Coastguard Worker 3040873792u,
2741*993b0882SAndroid Build Coastguard Worker 3752682932u,
2742*993b0882SAndroid Build Coastguard Worker 1640614237u, 2432794021u, 385337403u, 2794410617u,
2743*993b0882SAndroid Build Coastguard Worker 2386128075u, 1055206708u, 1422747714u, 3759330929u,
2744*993b0882SAndroid Build Coastguard Worker 2533597496u,
2745*993b0882SAndroid Build Coastguard Worker 30440955u,
2746*993b0882SAndroid Build Coastguard Worker 1482899460u, 3350385050u, 616259409u, 3980103795u,
2747*993b0882SAndroid Build Coastguard Worker 1211364140u, 1040071544u, 594746920u, 1645973936u,
2748*993b0882SAndroid Build Coastguard Worker 2547331531u,
2749*993b0882SAndroid Build Coastguard Worker 1097726368u,
2750*993b0882SAndroid Build Coastguard Worker 700666526u, 2976247482u, 1144906608u, 996506677u,
2751*993b0882SAndroid Build Coastguard Worker 1997130756u, 800321417u, 1392942823u, 1601662248u,
2752*993b0882SAndroid Build Coastguard Worker 2079778663u,
2753*993b0882SAndroid Build Coastguard Worker 529512908u,
2754*993b0882SAndroid Build Coastguard Worker 2925120134u, 4106433085u, 630221833u, 2423086156u,
2755*993b0882SAndroid Build Coastguard Worker 1119859778u, 1726827981u, 1870859181u, 2559832707u,
2756*993b0882SAndroid Build Coastguard Worker 1792284257u,
2757*993b0882SAndroid Build Coastguard Worker 2059356387u,
2758*993b0882SAndroid Build Coastguard Worker 3572353364u, 3229407475u, 575621095u, 3221893291u,
2759*993b0882SAndroid Build Coastguard Worker 2372428048u, 2020123035u, 961449593u, 2243824063u,
2760*993b0882SAndroid Build Coastguard Worker 3803906611u,
2761*993b0882SAndroid Build Coastguard Worker 3735348189u,
2762*993b0882SAndroid Build Coastguard Worker 2981620804u, 4180681078u, 1555330629u, 230736535u,
2763*993b0882SAndroid Build Coastguard Worker 2075526640u, 749652975u, 713664372u, 2152096659u,
2764*993b0882SAndroid Build Coastguard Worker 2142067223u,
2765*993b0882SAndroid Build Coastguard Worker 3322302242u,
2766*993b0882SAndroid Build Coastguard Worker 1421646830u, 2092832615u, 1213735101u, 3192136753u,
2767*993b0882SAndroid Build Coastguard Worker 1106723940u, 3455398230u, 2541685524u, 2529956739u,
2768*993b0882SAndroid Build Coastguard Worker 3789430647u,
2769*993b0882SAndroid Build Coastguard Worker 1950084508u,
2770*993b0882SAndroid Build Coastguard Worker 2157395621u, 850457360u, 2758902426u, 2848030169u,
2771*993b0882SAndroid Build Coastguard Worker 6506379u, 1162213157u, 2981459221u, 272690871u,
2772*993b0882SAndroid Build Coastguard Worker 3059420255u,
2773*993b0882SAndroid Build Coastguard Worker 4242691285u,
2774*993b0882SAndroid Build Coastguard Worker 588065598u, 1206949936u, 3968214184u, 566348532u,
2775*993b0882SAndroid Build Coastguard Worker 126142880u, 1480567086u, 2959621988u, 2050218418u,
2776*993b0882SAndroid Build Coastguard Worker 2242731195u,
2777*993b0882SAndroid Build Coastguard Worker 3833514449u,
2778*993b0882SAndroid Build Coastguard Worker 1898070331u, 3687399477u, 3891859374u, 868185955u,
2779*993b0882SAndroid Build Coastguard Worker 2335308774u, 3676335246u, 3871121805u, 2189032743u,
2780*993b0882SAndroid Build Coastguard Worker 3275728647u,
2781*993b0882SAndroid Build Coastguard Worker 860492892u,
2782*993b0882SAndroid Build Coastguard Worker 1590764344u, 4130384758u, 262871548u, 3004764525u,
2783*993b0882SAndroid Build Coastguard Worker 2685542071u, 991231482u, 435122019u, 3031116998u,
2784*993b0882SAndroid Build Coastguard Worker 2898921700u,
2785*993b0882SAndroid Build Coastguard Worker 2917932604u,
2786*993b0882SAndroid Build Coastguard Worker 4238665148u, 2459072654u, 3444612545u, 4207731740u,
2787*993b0882SAndroid Build Coastguard Worker 1808564313u, 2798532269u, 3944553556u, 3926395409u,
2788*993b0882SAndroid Build Coastguard Worker 1633200670u,
2789*993b0882SAndroid Build Coastguard Worker 4138335224u,
2790*993b0882SAndroid Build Coastguard Worker 2524878605u, 4184292650u, 3563398268u, 4288943552u,
2791*993b0882SAndroid Build Coastguard Worker 3802121210u, 957502058u, 2410820887u, 4227117506u,
2792*993b0882SAndroid Build Coastguard Worker 4018625153u,
2793*993b0882SAndroid Build Coastguard Worker 4284329158u,
2794*993b0882SAndroid Build Coastguard Worker 530216712u, 2978986531u, 863452221u, 1910162118u,
2795*993b0882SAndroid Build Coastguard Worker 4088211378u, 4091971261u, 3150811451u, 4200871487u,
2796*993b0882SAndroid Build Coastguard Worker 3794038652u,
2797*993b0882SAndroid Build Coastguard Worker 3041564310u,
2798*993b0882SAndroid Build Coastguard Worker 2045287082u, 887805614u, 2889167251u, 4120352181u,
2799*993b0882SAndroid Build Coastguard Worker 1699912580u, 3478922097u, 3211994687u, 3136177842u,
2800*993b0882SAndroid Build Coastguard Worker 1500806861u,
2801*993b0882SAndroid Build Coastguard Worker 3211881347u,
2802*993b0882SAndroid Build Coastguard Worker 2147976385u, 3342722260u, 3359650541u, 4197378460u,
2803*993b0882SAndroid Build Coastguard Worker 781354073u, 1533623029u, 2204677828u, 3228172832u,
2804*993b0882SAndroid Build Coastguard Worker 3248592437u,
2805*993b0882SAndroid Build Coastguard Worker 3355841359u,
2806*993b0882SAndroid Build Coastguard Worker 560815159u, 1144951236u, 4027015711u, 2882625391u,
2807*993b0882SAndroid Build Coastguard Worker 339363613u, 2354572719u, 1769831876u, 4238589331u,
2808*993b0882SAndroid Build Coastguard Worker 1519732871u,
2809*993b0882SAndroid Build Coastguard Worker 2185834614u,
2810*993b0882SAndroid Build Coastguard Worker 1601096831u, 129709881u, 39655633u, 367604993u,
2811*993b0882SAndroid Build Coastguard Worker 1737681770u, 3259114599u, 2767070452u, 872365177u,
2812*993b0882SAndroid Build Coastguard Worker 1574125529u,
2813*993b0882SAndroid Build Coastguard Worker 3405020189u,
2814*993b0882SAndroid Build Coastguard Worker 4181346685u, 1134030380u, 403769171u, 2193351164u,
2815*993b0882SAndroid Build Coastguard Worker 1426232618u, 2885309450u, 3033612627u, 924948363u,
2816*993b0882SAndroid Build Coastguard Worker 935514094u,
2817*993b0882SAndroid Build Coastguard Worker 3202053329u,
2818*993b0882SAndroid Build Coastguard Worker 912294839u, 1618472324u, 4159158431u, 3744999487u,
2819*993b0882SAndroid Build Coastguard Worker 777064358u, 3974213124u, 1990246048u, 309725290u,
2820*993b0882SAndroid Build Coastguard Worker 2449849392u,
2821*993b0882SAndroid Build Coastguard Worker 1943692420u,
2822*993b0882SAndroid Build Coastguard Worker 2288635750u, 2433793635u, 2168904061u, 683315308u,
2823*993b0882SAndroid Build Coastguard Worker 3081493019u, 3477759434u, 3815496269u, 2823504699u,
2824*993b0882SAndroid Build Coastguard Worker 586945121u,
2825*993b0882SAndroid Build Coastguard Worker 3088963200u,
2826*993b0882SAndroid Build Coastguard Worker 3492287335u, 636875049u, 1111206944u, 2037346120u,
2827*993b0882SAndroid Build Coastguard Worker 1282050044u, 1409681512u, 1786128584u, 755810950u,
2828*993b0882SAndroid Build Coastguard Worker 2332676758u,
2829*993b0882SAndroid Build Coastguard Worker 2178142310u,
2830*993b0882SAndroid Build Coastguard Worker 957827166u, 1014983590u, 1888800725u, 3608595803u,
2831*993b0882SAndroid Build Coastguard Worker 3200072714u, 2534008478u, 659336139u, 1281728287u,
2832*993b0882SAndroid Build Coastguard Worker 4060560529u,
2833*993b0882SAndroid Build Coastguard Worker 2915575125u,
2834*993b0882SAndroid Build Coastguard Worker 3521503774u, 2926487340u, 1096297674u, 653489861u,
2835*993b0882SAndroid Build Coastguard Worker 2352326980u, 2561136777u, 1224141198u, 1250479629u,
2836*993b0882SAndroid Build Coastguard Worker 1297625391u,
2837*993b0882SAndroid Build Coastguard Worker 2409997371u,
2838*993b0882SAndroid Build Coastguard Worker 1942483722u, 2481835750u, 1394715707u, 1673070941u,
2839*993b0882SAndroid Build Coastguard Worker 2456039704u, 3980558014u, 3547934764u, 1882038812u,
2840*993b0882SAndroid Build Coastguard Worker 1078160498u,
2841*993b0882SAndroid Build Coastguard Worker 2488279087u,
2842*993b0882SAndroid Build Coastguard Worker 1848235245u, 1211914722u, 2264928765u, 2807773070u,
2843*993b0882SAndroid Build Coastguard Worker 270145554u, 583747883u, 3826009010u, 2996618216u,
2844*993b0882SAndroid Build Coastguard Worker 425727157u,
2845*993b0882SAndroid Build Coastguard Worker 992726957u,
2846*993b0882SAndroid Build Coastguard Worker 3384462280u, 726650661u, 1955043265u, 1923879512u,
2847*993b0882SAndroid Build Coastguard Worker 1854693773u, 2987614542u, 2660044993u, 2457260810u,
2848*993b0882SAndroid Build Coastguard Worker 426299370u,
2849*993b0882SAndroid Build Coastguard Worker 2671892900u,
2850*993b0882SAndroid Build Coastguard Worker 1827308087u, 3083953443u, 1791749638u, 3265087416u,
2851*993b0882SAndroid Build Coastguard Worker 2119752201u, 2547122538u, 3990783236u, 1912713468u,
2852*993b0882SAndroid Build Coastguard Worker 3688865211u,
2853*993b0882SAndroid Build Coastguard Worker 1815780016u,
2854*993b0882SAndroid Build Coastguard Worker 303699291u, 2416763742u, 2690891610u, 1535193548u,
2855*993b0882SAndroid Build Coastguard Worker 1107803989u, 1504143133u, 2235270371u, 2545884083u,
2856*993b0882SAndroid Build Coastguard Worker 2276278682u,
2857*993b0882SAndroid Build Coastguard Worker 411724404u,
2858*993b0882SAndroid Build Coastguard Worker 3416925704u, 2565792091u, 3383911757u, 546058824u,
2859*993b0882SAndroid Build Coastguard Worker 3374654444u, 2364630415u, 2693473470u, 2622125691u,
2860*993b0882SAndroid Build Coastguard Worker 261864817u,
2861*993b0882SAndroid Build Coastguard Worker 55682470u,
2862*993b0882SAndroid Build Coastguard Worker 857617568u, 141304067u, 1885488541u, 155368182u,
2863*993b0882SAndroid Build Coastguard Worker 1281949051u, 3384522408u, 3254816901u, 1959816782u,
2864*993b0882SAndroid Build Coastguard Worker 1452224057u,
2865*993b0882SAndroid Build Coastguard Worker 2830267691u,
2866*993b0882SAndroid Build Coastguard Worker 3709231247u, 58988202u, 4218130458u, 2984061349u,
2867*993b0882SAndroid Build Coastguard Worker 1888707848u, 4223605071u, 4241442486u, 375269213u,
2868*993b0882SAndroid Build Coastguard Worker 3208327038u,
2869*993b0882SAndroid Build Coastguard Worker 2199916493u,
2870*993b0882SAndroid Build Coastguard Worker 550337252u, 2855061437u, 276088636u, 114362204u,
2871*993b0882SAndroid Build Coastguard Worker 2321163647u, 2127813633u, 3289403024u, 2686973202u,
2872*993b0882SAndroid Build Coastguard Worker 2717376797u,
2873*993b0882SAndroid Build Coastguard Worker 3593428039u,
2874*993b0882SAndroid Build Coastguard Worker 3648831666u, 890925902u, 3289404818u, 3289516821u,
2875*993b0882SAndroid Build Coastguard Worker 4248913260u, 1858916580u, 3303932308u, 1752797086u,
2876*993b0882SAndroid Build Coastguard Worker 1628149686u,
2877*993b0882SAndroid Build Coastguard Worker 3245893605u,
2878*993b0882SAndroid Build Coastguard Worker 1568537311u, 2844194502u, 1593855770u, 2408174109u,
2879*993b0882SAndroid Build Coastguard Worker 124797514u, 2085649512u, 3188565660u, 2264996276u,
2880*993b0882SAndroid Build Coastguard Worker 1926696513u,
2881*993b0882SAndroid Build Coastguard Worker 3053957740u,
2882*993b0882SAndroid Build Coastguard Worker 2238806881u, 2189050973u, 203685243u, 379855590u,
2883*993b0882SAndroid Build Coastguard Worker 3920271562u, 1058600179u, 3698061923u, 4255106849u,
2884*993b0882SAndroid Build Coastguard Worker 608401664u,
2885*993b0882SAndroid Build Coastguard Worker 1598041932u,
2886*993b0882SAndroid Build Coastguard Worker 3318266418u, 2535016555u, 852760884u, 1918098822u,
2887*993b0882SAndroid Build Coastguard Worker 2200437599u, 1532285043u, 3425662132u, 3561293706u,
2888*993b0882SAndroid Build Coastguard Worker 2231633206u,
2889*993b0882SAndroid Build Coastguard Worker 4108785088u,
2890*993b0882SAndroid Build Coastguard Worker 3359152801u, 173534780u, 208383607u, 2862988169u,
2891*993b0882SAndroid Build Coastguard Worker 2406642243u, 426814583u, 2777335795u, 3322703596u,
2892*993b0882SAndroid Build Coastguard Worker 954190623u,
2893*993b0882SAndroid Build Coastguard Worker 615093090u,
2894*993b0882SAndroid Build Coastguard Worker 4179102978u, 2452847930u, 100239619u, 42471741u,
2895*993b0882SAndroid Build Coastguard Worker 818352432u, 2190624654u, 504379960u, 3631619975u,
2896*993b0882SAndroid Build Coastguard Worker 633412456u,
2897*993b0882SAndroid Build Coastguard Worker 1018421783u,
2898*993b0882SAndroid Build Coastguard Worker 842645419u, 711808707u, 3424580813u, 2132457941u,
2899*993b0882SAndroid Build Coastguard Worker 1158335882u, 3567952480u, 2302183699u, 1145788151u,
2900*993b0882SAndroid Build Coastguard Worker 3474264138u,
2901*993b0882SAndroid Build Coastguard Worker 3105085243u,
2902*993b0882SAndroid Build Coastguard Worker 3115506027u, 2783713015u, 3871785309u, 539583269u,
2903*993b0882SAndroid Build Coastguard Worker 1400252405u, 3857849984u, 4231186588u, 1278653799u,
2904*993b0882SAndroid Build Coastguard Worker 1760227022u,
2905*993b0882SAndroid Build Coastguard Worker 761044088u,
2906*993b0882SAndroid Build Coastguard Worker 3838185417u, 2439542532u, 585283357u, 2055995220u,
2907*993b0882SAndroid Build Coastguard Worker 937117124u, 3831944855u, 1823586038u, 3287917855u,
2908*993b0882SAndroid Build Coastguard Worker 485082427u,
2909*993b0882SAndroid Build Coastguard Worker 3209172809u,
2910*993b0882SAndroid Build Coastguard Worker 1984570176u, 2818337297u, 2691869057u, 3790476953u,
2911*993b0882SAndroid Build Coastguard Worker 839035557u, 3203129010u, 669981176u, 4121157385u,
2912*993b0882SAndroid Build Coastguard Worker 3519870450u,
2913*993b0882SAndroid Build Coastguard Worker 3792633352u,
2914*993b0882SAndroid Build Coastguard Worker 3017650322u, 1603459507u, 4225677666u, 376555451u,
2915*993b0882SAndroid Build Coastguard Worker 473780127u, 2018786277u, 3299822439u, 1010254499u,
2916*993b0882SAndroid Build Coastguard Worker 2383887565u,
2917*993b0882SAndroid Build Coastguard Worker 3155009499u,
2918*993b0882SAndroid Build Coastguard Worker 3108110655u, 2641738274u, 3684908622u, 1606463047u,
2919*993b0882SAndroid Build Coastguard Worker 3311068174u, 52708046u, 754181455u, 1018079176u,
2920*993b0882SAndroid Build Coastguard Worker 3915670272u,
2921*993b0882SAndroid Build Coastguard Worker 3366999425u,
2922*993b0882SAndroid Build Coastguard Worker 1012880204u, 1339439715u, 466437962u, 1402662350u,
2923*993b0882SAndroid Build Coastguard Worker 2504046911u, 736323938u, 2037800124u, 1725908589u,
2924*993b0882SAndroid Build Coastguard Worker 716341840u,
2925*993b0882SAndroid Build Coastguard Worker 1750123474u,
2926*993b0882SAndroid Build Coastguard Worker 3366342464u, 1743666195u, 2975303189u, 3821364027u,
2927*993b0882SAndroid Build Coastguard Worker 3253707772u, 3635548377u, 3840413796u, 1955642085u,
2928*993b0882SAndroid Build Coastguard Worker 1018315169u,
2929*993b0882SAndroid Build Coastguard Worker 1258092848u,
2930*993b0882SAndroid Build Coastguard Worker 2095540656u, 1076256607u, 117289557u, 1311658655u,
2931*993b0882SAndroid Build Coastguard Worker 2118301000u, 68721550u, 2886814107u, 2712432819u,
2932*993b0882SAndroid Build Coastguard Worker 4201862886u,
2933*993b0882SAndroid Build Coastguard Worker 753807148u,
2934*993b0882SAndroid Build Coastguard Worker 1940229047u, 731347296u, 1068901393u, 3873155894u,
2935*993b0882SAndroid Build Coastguard Worker 2852787666u, 1973464853u, 79735652u, 3966380587u,
2936*993b0882SAndroid Build Coastguard Worker 3245740712u,
2937*993b0882SAndroid Build Coastguard Worker 2525773438u,
2938*993b0882SAndroid Build Coastguard Worker 734938109u, 3045656416u, 3335746354u, 4099732691u,
2939*993b0882SAndroid Build Coastguard Worker 1911896517u, 1697006473u, 1145487066u, 1605663299u,
2940*993b0882SAndroid Build Coastguard Worker 3053606724u,
2941*993b0882SAndroid Build Coastguard Worker 2386289465u,
2942*993b0882SAndroid Build Coastguard Worker 3821211369u, 1006215345u, 1256304829u, 1053001668u,
2943*993b0882SAndroid Build Coastguard Worker 1289194958u, 118761054u, 1853688730u, 2803418011u,
2944*993b0882SAndroid Build Coastguard Worker 188650809u,
2945*993b0882SAndroid Build Coastguard Worker 3763686458u,
2946*993b0882SAndroid Build Coastguard Worker 1006829556u, 2961984133u, 3390525025u, 2061199893u,
2947*993b0882SAndroid Build Coastguard Worker 141792681u, 2439893463u, 2652982650u, 1804942682u,
2948*993b0882SAndroid Build Coastguard Worker 1546510005u,
2949*993b0882SAndroid Build Coastguard Worker 1246961405u,
2950*993b0882SAndroid Build Coastguard Worker 2407577046u, 565772575u, 3751844810u, 2943166103u,
2951*993b0882SAndroid Build Coastguard Worker 3750052451u, 3022527280u, 25162928u, 397381043u,
2952*993b0882SAndroid Build Coastguard Worker 1818337632u,
2953*993b0882SAndroid Build Coastguard Worker 3447363730u,
2954*993b0882SAndroid Build Coastguard Worker 3936437150u, 2569420703u, 2215592390u, 2171555672u,
2955*993b0882SAndroid Build Coastguard Worker 3665571006u, 4021712412u, 2939158353u, 4057813172u,
2956*993b0882SAndroid Build Coastguard Worker 1823237318u,
2957*993b0882SAndroid Build Coastguard Worker 103999245u,
2958*993b0882SAndroid Build Coastguard Worker 3251978010u, 3591914940u, 3582495283u, 2519035265u,
2959*993b0882SAndroid Build Coastguard Worker 3905726135u, 3180393349u, 2743117123u, 55247368u,
2960*993b0882SAndroid Build Coastguard Worker 3325286701u,
2961*993b0882SAndroid Build Coastguard Worker 705195946u,
2962*993b0882SAndroid Build Coastguard Worker 1857526853u, 1480518550u, 3809990433u, 1398189338u,
2963*993b0882SAndroid Build Coastguard Worker 3126362926u, 3959531492u, 1503658285u, 1977847740u,
2964*993b0882SAndroid Build Coastguard Worker 3043964489u,
2965*993b0882SAndroid Build Coastguard Worker 2613086143u,
2966*993b0882SAndroid Build Coastguard Worker 1518119282u, 4238434900u, 3905746486u, 3064949667u,
2967*993b0882SAndroid Build Coastguard Worker 1028122931u, 3309119457u, 4071194920u, 3096098907u,
2968*993b0882SAndroid Build Coastguard Worker 4137180520u,
2969*993b0882SAndroid Build Coastguard Worker 494467959u,
2970*993b0882SAndroid Build Coastguard Worker 1231408687u, 1691606157u, 1793452569u, 2722196118u,
2971*993b0882SAndroid Build Coastguard Worker 3478603952u, 1059665738u, 2282032278u, 3990268388u,
2972*993b0882SAndroid Build Coastguard Worker 1719514651u,
2973*993b0882SAndroid Build Coastguard Worker 4248311578u,
2974*993b0882SAndroid Build Coastguard Worker 3799146721u, 898026304u, 3367808954u, 4162472815u,
2975*993b0882SAndroid Build Coastguard Worker 170495870u, 1308116609u, 3428285344u, 1714716475u,
2976*993b0882SAndroid Build Coastguard Worker 395576794u,
2977*993b0882SAndroid Build Coastguard Worker 4153638621u,
2978*993b0882SAndroid Build Coastguard Worker 2999745812u, 3483315953u, 304980828u, 595337120u,
2979*993b0882SAndroid Build Coastguard Worker 3486516729u, 2331563143u, 2583609459u, 1885928417u,
2980*993b0882SAndroid Build Coastguard Worker 3834283777u,
2981*993b0882SAndroid Build Coastguard Worker 979337825u,
2982*993b0882SAndroid Build Coastguard Worker 932057378u, 3124081189u, 1930356777u, 3865887996u,
2983*993b0882SAndroid Build Coastguard Worker 4178282217u, 4214219408u, 3669465884u, 1472413856u,
2984*993b0882SAndroid Build Coastguard Worker 3356866587u,
2985*993b0882SAndroid Build Coastguard Worker 1012769806u,
2986*993b0882SAndroid Build Coastguard Worker 3043639963u, 996996396u, 207308216u, 982967331u,
2987*993b0882SAndroid Build Coastguard Worker 2991319933u, 318066902u, 721489670u, 1249967713u,
2988*993b0882SAndroid Build Coastguard Worker 749240921u,
2989*993b0882SAndroid Build Coastguard Worker 591392325u,
2990*993b0882SAndroid Build Coastguard Worker 2379365192u, 2250868849u, 2163259329u, 143191325u,
2991*993b0882SAndroid Build Coastguard Worker 3778285606u, 982149096u, 3536906200u, 2244353244u,
2992*993b0882SAndroid Build Coastguard Worker 1443862317u,
2993*993b0882SAndroid Build Coastguard Worker 3161549210u,
2994*993b0882SAndroid Build Coastguard Worker 2183127464u, 2015409516u, 547003700u, 2032484282u,
2995*993b0882SAndroid Build Coastguard Worker 523677821u, 4275663308u, 3827205526u, 3903778273u,
2996*993b0882SAndroid Build Coastguard Worker 2444530525u,
2997*993b0882SAndroid Build Coastguard Worker 2543645801u,
2998*993b0882SAndroid Build Coastguard Worker 1173958423u, 784740616u, 2878693675u, 3127696736u,
2999*993b0882SAndroid Build Coastguard Worker 3832037316u, 3161002398u, 4084166400u, 4213346853u,
3000*993b0882SAndroid Build Coastguard Worker 223390424u,
3001*993b0882SAndroid Build Coastguard Worker 4273380883u,
3002*993b0882SAndroid Build Coastguard Worker 2130315482u, 3429606032u, 3367732613u, 1912357694u,
3003*993b0882SAndroid Build Coastguard Worker 422632590u, 1266957023u, 3437535648u, 736404240u,
3004*993b0882SAndroid Build Coastguard Worker 2281709372u,
3005*993b0882SAndroid Build Coastguard Worker 415859912u,
3006*993b0882SAndroid Build Coastguard Worker 212948797u, 351612650u, 3920561440u, 112963586u,
3007*993b0882SAndroid Build Coastguard Worker 2230727543u, 2851076612u, 1990662634u, 2264296857u,
3008*993b0882SAndroid Build Coastguard Worker 3131463650u,
3009*993b0882SAndroid Build Coastguard Worker 2704034623u,
3010*993b0882SAndroid Build Coastguard Worker 3541637839u, 2954232792u, 533986918u, 4158757533u,
3011*993b0882SAndroid Build Coastguard Worker 65174248u, 4232639593u, 865906667u, 1948225652u,
3012*993b0882SAndroid Build Coastguard Worker 779656112u,
3013*993b0882SAndroid Build Coastguard Worker 3873989249u,
3014*993b0882SAndroid Build Coastguard Worker 2372984749u, 2346988193u, 1104345713u, 1165654138u,
3015*993b0882SAndroid Build Coastguard Worker 4045762610u, 3588205178u, 461363991u, 1111215752u,
3016*993b0882SAndroid Build Coastguard Worker 1389675192u,
3017*993b0882SAndroid Build Coastguard Worker 2404325151u,
3018*993b0882SAndroid Build Coastguard Worker 2152228101u, 3808973622u, 1901235912u, 3458690696u,
3019*993b0882SAndroid Build Coastguard Worker 314513238u, 2539459143u, 2847998873u, 952026138u,
3020*993b0882SAndroid Build Coastguard Worker 2325705328u,
3021*993b0882SAndroid Build Coastguard Worker 407844712u,
3022*993b0882SAndroid Build Coastguard Worker 3727960715u, 2996448351u, 2374336760u, 3138756390u,
3023*993b0882SAndroid Build Coastguard Worker 2600015243u, 539980418u, 1876285352u, 1670330799u,
3024*993b0882SAndroid Build Coastguard Worker 1709360377u,
3025*993b0882SAndroid Build Coastguard Worker 2868531654u,
3026*993b0882SAndroid Build Coastguard Worker 494777964u, 2773053597u, 599486162u, 3962209577u,
3027*993b0882SAndroid Build Coastguard Worker 1871328846u, 2171933018u, 110279472u, 384074780u,
3028*993b0882SAndroid Build Coastguard Worker 4147021936u,
3029*993b0882SAndroid Build Coastguard Worker 2333589647u,
3030*993b0882SAndroid Build Coastguard Worker 4251778066u, 40493468u, 3099342316u, 4108779767u,
3031*993b0882SAndroid Build Coastguard Worker 2812424588u, 954542332u, 2040682331u, 2251152306u,
3032*993b0882SAndroid Build Coastguard Worker 45915516u,
3033*993b0882SAndroid Build Coastguard Worker 259525626u,
3034*993b0882SAndroid Build Coastguard Worker 1045384743u, 4134656562u, 749389261u, 874399445u,
3035*993b0882SAndroid Build Coastguard Worker 616549904u, 2200447504u, 436024539u, 78972290u,
3036*993b0882SAndroid Build Coastguard Worker 3210485762u,
3037*993b0882SAndroid Build Coastguard Worker 1907985531u,
3038*993b0882SAndroid Build Coastguard Worker 3013721395u, 4214533685u, 4198804243u, 534879265u,
3039*993b0882SAndroid Build Coastguard Worker 1517190881u, 3756787754u, 1152563554u, 1718750948u,
3040*993b0882SAndroid Build Coastguard Worker 777737463u,
3041*993b0882SAndroid Build Coastguard Worker 1402478860u,
3042*993b0882SAndroid Build Coastguard Worker 1824562784u, 1879401449u, 3515818786u, 513165201u,
3043*993b0882SAndroid Build Coastguard Worker 1423491227u, 2103067918u, 2291777410u, 1097943000u,
3044*993b0882SAndroid Build Coastguard Worker };
3045*993b0882SAndroid Build Coastguard Worker
3046*993b0882SAndroid Build Coastguard Worker // Return false only if offset is -1 and a spot check of 3 hashes all yield 0.
Test(int offset,int len=0)3047*993b0882SAndroid Build Coastguard Worker bool Test(int offset, int len = 0) {
3048*993b0882SAndroid Build Coastguard Worker #undef Check
3049*993b0882SAndroid Build Coastguard Worker #undef IsAlive
3050*993b0882SAndroid Build Coastguard Worker
3051*993b0882SAndroid Build Coastguard Worker #define Check(x) do { \
3052*993b0882SAndroid Build Coastguard Worker bool ok = expected[index++] == (x); \
3053*993b0882SAndroid Build Coastguard Worker assert(ok); \
3054*993b0882SAndroid Build Coastguard Worker errors += !ok; \
3055*993b0882SAndroid Build Coastguard Worker } while (0)
3056*993b0882SAndroid Build Coastguard Worker
3057*993b0882SAndroid Build Coastguard Worker #define IsAlive(x) do { alive += IsNonZero(x); } while (0)
3058*993b0882SAndroid Build Coastguard Worker
3059*993b0882SAndroid Build Coastguard Worker // After the following line is where the uses of "Check" and such will go.
3060*993b0882SAndroid Build Coastguard Worker static int index = 0;
3061*993b0882SAndroid Build Coastguard Worker if (offset == -1) { int alive = 0; IsAlive(farmhashcc::Hash32WithSeed(data, len++, SEED)); IsAlive(farmhashcc::Hash32(data, len++)); { uint128_t u = farmhashcc::Fingerprint128(data, len++); uint64_t h = Uint128Low64(u); IsAlive(h >> 32); IsAlive((h << 32) >> 32); h = Uint128High64(u); IsAlive(h >> 32); IsAlive((h << 32) >> 32); } len -= 3; return alive > 0; }
3062*993b0882SAndroid Build Coastguard Worker Check(farmhashcc::Hash32WithSeed(data + offset, len, SEED));
3063*993b0882SAndroid Build Coastguard Worker Check(farmhashcc::Hash32(data + offset, len));
3064*993b0882SAndroid Build Coastguard Worker { uint128_t u = farmhashcc::Fingerprint128(data + offset, len); uint64_t h = Uint128Low64(u); Check(h >> 32); Check((h << 32) >> 32); h = Uint128High64(u); Check(h >> 32); Check((h << 32) >> 32); }
3065*993b0882SAndroid Build Coastguard Worker { uint128_t u = farmhashcc::CityHash128WithSeed(data + offset, len, Uint128(SEED0, SEED1)); uint64_t h = Uint128Low64(u); Check(h >> 32); Check((h << 32) >> 32); h = Uint128High64(u); Check(h >> 32); Check((h << 32) >> 32); }
3066*993b0882SAndroid Build Coastguard Worker
3067*993b0882SAndroid Build Coastguard Worker return true;
3068*993b0882SAndroid Build Coastguard Worker #undef Check
3069*993b0882SAndroid Build Coastguard Worker #undef IsAlive
3070*993b0882SAndroid Build Coastguard Worker }
3071*993b0882SAndroid Build Coastguard Worker
RunTest()3072*993b0882SAndroid Build Coastguard Worker int RunTest() {
3073*993b0882SAndroid Build Coastguard Worker Setup();
3074*993b0882SAndroid Build Coastguard Worker int i = 0;
3075*993b0882SAndroid Build Coastguard Worker cout << "Running farmhashccTest";
3076*993b0882SAndroid Build Coastguard Worker if (!Test(-1)) {
3077*993b0882SAndroid Build Coastguard Worker cout << "... Unavailable\n";
3078*993b0882SAndroid Build Coastguard Worker return NoteErrors();
3079*993b0882SAndroid Build Coastguard Worker }
3080*993b0882SAndroid Build Coastguard Worker // Good. The function is attempting to hash, so run the full test.
3081*993b0882SAndroid Build Coastguard Worker int errors_prior_to_test = errors;
3082*993b0882SAndroid Build Coastguard Worker for ( ; i < kTestSize - 1; i++) {
3083*993b0882SAndroid Build Coastguard Worker Test(i * i, i);
3084*993b0882SAndroid Build Coastguard Worker }
3085*993b0882SAndroid Build Coastguard Worker for ( ; i < kDataSize; i += i / 7) {
3086*993b0882SAndroid Build Coastguard Worker Test(0, i);
3087*993b0882SAndroid Build Coastguard Worker }
3088*993b0882SAndroid Build Coastguard Worker Test(0, kDataSize);
3089*993b0882SAndroid Build Coastguard Worker cout << (errors == errors_prior_to_test ? "... OK\n" : "... Failed\n");
3090*993b0882SAndroid Build Coastguard Worker return NoteErrors();
3091*993b0882SAndroid Build Coastguard Worker }
3092*993b0882SAndroid Build Coastguard Worker
3093*993b0882SAndroid Build Coastguard Worker #else
3094*993b0882SAndroid Build Coastguard Worker
3095*993b0882SAndroid Build Coastguard Worker // After the following line is where the code to print hash codes will go.
Dump(int offset,int len)3096*993b0882SAndroid Build Coastguard Worker void Dump(int offset, int len) {
3097*993b0882SAndroid Build Coastguard Worker cout << farmhashcc::Hash32WithSeed(data + offset, len, SEED) << "u," << endl;
3098*993b0882SAndroid Build Coastguard Worker cout << farmhashcc::Hash32(data + offset, len) << "u," << endl;
3099*993b0882SAndroid Build Coastguard Worker { uint128_t u = farmhashcc::Fingerprint128(data + offset, len); uint64_t h = Uint128Low64(u); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u, "; h = Uint128High64(u); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u," << endl; }
3100*993b0882SAndroid Build Coastguard Worker { uint128_t u = farmhashcc::CityHash128WithSeed(data + offset, len, Uint128(SEED0, SEED1)); uint64_t h = Uint128Low64(u); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u, "; h = Uint128High64(u); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u," << endl; }
3101*993b0882SAndroid Build Coastguard Worker }
3102*993b0882SAndroid Build Coastguard Worker
3103*993b0882SAndroid Build Coastguard Worker #endif
3104*993b0882SAndroid Build Coastguard Worker
3105*993b0882SAndroid Build Coastguard Worker #undef SEED
3106*993b0882SAndroid Build Coastguard Worker #undef SEED1
3107*993b0882SAndroid Build Coastguard Worker #undef SEED0
3108*993b0882SAndroid Build Coastguard Worker
3109*993b0882SAndroid Build Coastguard Worker } // namespace farmhashccTest
3110*993b0882SAndroid Build Coastguard Worker
3111*993b0882SAndroid Build Coastguard Worker #if TESTING
3112*993b0882SAndroid Build Coastguard Worker
3113*993b0882SAndroid Build Coastguard Worker static int farmhashccTestResult = farmhashccTest::RunTest();
3114*993b0882SAndroid Build Coastguard Worker
3115*993b0882SAndroid Build Coastguard Worker #else
main(int argc,char ** argv)3116*993b0882SAndroid Build Coastguard Worker int main(int argc, char** argv) {
3117*993b0882SAndroid Build Coastguard Worker Setup();
3118*993b0882SAndroid Build Coastguard Worker cout << "uint32_t expected[] = {\n";
3119*993b0882SAndroid Build Coastguard Worker int i = 0;
3120*993b0882SAndroid Build Coastguard Worker for ( ; i < kTestSize - 1; i++) {
3121*993b0882SAndroid Build Coastguard Worker farmhashccTest::Dump(i * i, i);
3122*993b0882SAndroid Build Coastguard Worker }
3123*993b0882SAndroid Build Coastguard Worker for ( ; i < kDataSize; i += i / 7) {
3124*993b0882SAndroid Build Coastguard Worker farmhashccTest::Dump(0, i);
3125*993b0882SAndroid Build Coastguard Worker }
3126*993b0882SAndroid Build Coastguard Worker farmhashccTest::Dump(0, kDataSize);
3127*993b0882SAndroid Build Coastguard Worker cout << "};\n";
3128*993b0882SAndroid Build Coastguard Worker }
3129*993b0882SAndroid Build Coastguard Worker #endif
3130*993b0882SAndroid Build Coastguard Worker #ifndef FARMHASH_SELF_TEST_GUARD
3131*993b0882SAndroid Build Coastguard Worker #define FARMHASH_SELF_TEST_GUARD
3132*993b0882SAndroid Build Coastguard Worker #include <string.h>
3133*993b0882SAndroid Build Coastguard Worker #include <cstdio>
3134*993b0882SAndroid Build Coastguard Worker #include <iostream>
3135*993b0882SAndroid Build Coastguard Worker
3136*993b0882SAndroid Build Coastguard Worker using std::cout;
3137*993b0882SAndroid Build Coastguard Worker using std::cerr;
3138*993b0882SAndroid Build Coastguard Worker using std::endl;
3139*993b0882SAndroid Build Coastguard Worker using std::hex;
3140*993b0882SAndroid Build Coastguard Worker
3141*993b0882SAndroid Build Coastguard Worker static const uint64_t kSeed0 = 1234567;
3142*993b0882SAndroid Build Coastguard Worker static const uint64_t kSeed1 = k0;
3143*993b0882SAndroid Build Coastguard Worker static const int kDataSize = 1 << 20;
3144*993b0882SAndroid Build Coastguard Worker static const int kTestSize = 300;
3145*993b0882SAndroid Build Coastguard Worker #define kSeed128 Uint128(kSeed0, kSeed1)
3146*993b0882SAndroid Build Coastguard Worker
3147*993b0882SAndroid Build Coastguard Worker static char data[kDataSize];
3148*993b0882SAndroid Build Coastguard Worker
3149*993b0882SAndroid Build Coastguard Worker static int completed_self_tests = 0;
3150*993b0882SAndroid Build Coastguard Worker static int errors = 0;
3151*993b0882SAndroid Build Coastguard Worker
3152*993b0882SAndroid Build Coastguard Worker // Initialize data to pseudorandom values.
Setup()3153*993b0882SAndroid Build Coastguard Worker void Setup() {
3154*993b0882SAndroid Build Coastguard Worker if (completed_self_tests == 0) {
3155*993b0882SAndroid Build Coastguard Worker uint64_t a = 9;
3156*993b0882SAndroid Build Coastguard Worker uint64_t b = 777;
3157*993b0882SAndroid Build Coastguard Worker for (int i = 0; i < kDataSize; i++) {
3158*993b0882SAndroid Build Coastguard Worker a += b;
3159*993b0882SAndroid Build Coastguard Worker b += a;
3160*993b0882SAndroid Build Coastguard Worker a = (a ^ (a >> 41)) * k0;
3161*993b0882SAndroid Build Coastguard Worker b = (b ^ (b >> 41)) * k0 + i;
3162*993b0882SAndroid Build Coastguard Worker uint8_t u = b >> 37;
3163*993b0882SAndroid Build Coastguard Worker memcpy(data + i, &u, 1); // uint8_t -> char
3164*993b0882SAndroid Build Coastguard Worker }
3165*993b0882SAndroid Build Coastguard Worker }
3166*993b0882SAndroid Build Coastguard Worker }
3167*993b0882SAndroid Build Coastguard Worker
NoteErrors()3168*993b0882SAndroid Build Coastguard Worker int NoteErrors() {
3169*993b0882SAndroid Build Coastguard Worker #define NUM_SELF_TESTS 6
3170*993b0882SAndroid Build Coastguard Worker if (++completed_self_tests == NUM_SELF_TESTS)
3171*993b0882SAndroid Build Coastguard Worker std::exit(errors > 0);
3172*993b0882SAndroid Build Coastguard Worker return errors;
3173*993b0882SAndroid Build Coastguard Worker }
3174*993b0882SAndroid Build Coastguard Worker
IsNonZero(T x)3175*993b0882SAndroid Build Coastguard Worker template <typename T> inline bool IsNonZero(T x) {
3176*993b0882SAndroid Build Coastguard Worker return x != 0;
3177*993b0882SAndroid Build Coastguard Worker }
3178*993b0882SAndroid Build Coastguard Worker
IsNonZero(uint128_t x)3179*993b0882SAndroid Build Coastguard Worker template <> inline bool IsNonZero<uint128_t>(uint128_t x) {
3180*993b0882SAndroid Build Coastguard Worker return x != Uint128(0, 0);
3181*993b0882SAndroid Build Coastguard Worker }
3182*993b0882SAndroid Build Coastguard Worker
3183*993b0882SAndroid Build Coastguard Worker #endif // FARMHASH_SELF_TEST_GUARD
3184*993b0882SAndroid Build Coastguard Worker
3185*993b0882SAndroid Build Coastguard Worker namespace farmhashmkTest {
3186*993b0882SAndroid Build Coastguard Worker
CreateSeed(int offset,int salt)3187*993b0882SAndroid Build Coastguard Worker uint32_t CreateSeed(int offset, int salt) {
3188*993b0882SAndroid Build Coastguard Worker uint32_t h = static_cast<uint32_t>(salt & 0xffffffff);
3189*993b0882SAndroid Build Coastguard Worker h = h * c1;
3190*993b0882SAndroid Build Coastguard Worker h ^= (h >> 17);
3191*993b0882SAndroid Build Coastguard Worker h = h * c1;
3192*993b0882SAndroid Build Coastguard Worker h ^= (h >> 17);
3193*993b0882SAndroid Build Coastguard Worker h = h * c1;
3194*993b0882SAndroid Build Coastguard Worker h ^= (h >> 17);
3195*993b0882SAndroid Build Coastguard Worker h += static_cast<uint32_t>(offset & 0xffffffff);
3196*993b0882SAndroid Build Coastguard Worker h = h * c1;
3197*993b0882SAndroid Build Coastguard Worker h ^= (h >> 17);
3198*993b0882SAndroid Build Coastguard Worker h = h * c1;
3199*993b0882SAndroid Build Coastguard Worker h ^= (h >> 17);
3200*993b0882SAndroid Build Coastguard Worker h = h * c1;
3201*993b0882SAndroid Build Coastguard Worker h ^= (h >> 17);
3202*993b0882SAndroid Build Coastguard Worker return h;
3203*993b0882SAndroid Build Coastguard Worker }
3204*993b0882SAndroid Build Coastguard Worker
3205*993b0882SAndroid Build Coastguard Worker #undef SEED
3206*993b0882SAndroid Build Coastguard Worker #undef SEED1
3207*993b0882SAndroid Build Coastguard Worker #undef SEED0
3208*993b0882SAndroid Build Coastguard Worker #define SEED CreateSeed(offset, -1)
3209*993b0882SAndroid Build Coastguard Worker #define SEED0 CreateSeed(offset, 0)
3210*993b0882SAndroid Build Coastguard Worker #define SEED1 CreateSeed(offset, 1)
3211*993b0882SAndroid Build Coastguard Worker
3212*993b0882SAndroid Build Coastguard Worker #undef TESTING
3213*993b0882SAndroid Build Coastguard Worker #define TESTING 1
3214*993b0882SAndroid Build Coastguard Worker #if TESTING
3215*993b0882SAndroid Build Coastguard Worker uint32_t expected[] = {
3216*993b0882SAndroid Build Coastguard Worker 4223616069u,
3217*993b0882SAndroid Build Coastguard Worker 3696677242u,
3218*993b0882SAndroid Build Coastguard Worker 4081014168u,
3219*993b0882SAndroid Build Coastguard Worker 2576519988u,
3220*993b0882SAndroid Build Coastguard Worker 2212771159u,
3221*993b0882SAndroid Build Coastguard Worker 1112731063u,
3222*993b0882SAndroid Build Coastguard Worker 1020067935u,
3223*993b0882SAndroid Build Coastguard Worker 3955445564u,
3224*993b0882SAndroid Build Coastguard Worker 1451961420u,
3225*993b0882SAndroid Build Coastguard Worker 653440099u,
3226*993b0882SAndroid Build Coastguard Worker 31917516u,
3227*993b0882SAndroid Build Coastguard Worker 2957164615u,
3228*993b0882SAndroid Build Coastguard Worker 2590087362u,
3229*993b0882SAndroid Build Coastguard Worker 3879448744u,
3230*993b0882SAndroid Build Coastguard Worker 176305566u,
3231*993b0882SAndroid Build Coastguard Worker 2447367541u,
3232*993b0882SAndroid Build Coastguard Worker 1359016305u,
3233*993b0882SAndroid Build Coastguard Worker 3363804638u,
3234*993b0882SAndroid Build Coastguard Worker 1117290165u,
3235*993b0882SAndroid Build Coastguard Worker 1062549743u,
3236*993b0882SAndroid Build Coastguard Worker 2437877004u,
3237*993b0882SAndroid Build Coastguard Worker 1894455839u,
3238*993b0882SAndroid Build Coastguard Worker 673206794u,
3239*993b0882SAndroid Build Coastguard Worker 3486923651u,
3240*993b0882SAndroid Build Coastguard Worker 3269862919u,
3241*993b0882SAndroid Build Coastguard Worker 2303349487u,
3242*993b0882SAndroid Build Coastguard Worker 1380660650u,
3243*993b0882SAndroid Build Coastguard Worker 595525107u,
3244*993b0882SAndroid Build Coastguard Worker 1525325287u,
3245*993b0882SAndroid Build Coastguard Worker 2025609358u,
3246*993b0882SAndroid Build Coastguard Worker 176408838u,
3247*993b0882SAndroid Build Coastguard Worker 1592885012u,
3248*993b0882SAndroid Build Coastguard Worker 864896482u,
3249*993b0882SAndroid Build Coastguard Worker 2101378090u,
3250*993b0882SAndroid Build Coastguard Worker 3489229104u,
3251*993b0882SAndroid Build Coastguard Worker 2118965695u,
3252*993b0882SAndroid Build Coastguard Worker 581644891u,
3253*993b0882SAndroid Build Coastguard Worker 2718789079u,
3254*993b0882SAndroid Build Coastguard Worker 631613207u,
3255*993b0882SAndroid Build Coastguard Worker 4228658372u,
3256*993b0882SAndroid Build Coastguard Worker 3867875546u,
3257*993b0882SAndroid Build Coastguard Worker 3531368319u,
3258*993b0882SAndroid Build Coastguard Worker 3804516756u,
3259*993b0882SAndroid Build Coastguard Worker 3317755099u,
3260*993b0882SAndroid Build Coastguard Worker 1619744564u,
3261*993b0882SAndroid Build Coastguard Worker 2884717286u,
3262*993b0882SAndroid Build Coastguard Worker 1088213445u,
3263*993b0882SAndroid Build Coastguard Worker 2667691076u,
3264*993b0882SAndroid Build Coastguard Worker 3727873235u,
3265*993b0882SAndroid Build Coastguard Worker 2330406762u,
3266*993b0882SAndroid Build Coastguard Worker 3616470388u,
3267*993b0882SAndroid Build Coastguard Worker 967660719u,
3268*993b0882SAndroid Build Coastguard Worker 4148162586u,
3269*993b0882SAndroid Build Coastguard Worker 315219121u,
3270*993b0882SAndroid Build Coastguard Worker 673084328u,
3271*993b0882SAndroid Build Coastguard Worker 3047602355u,
3272*993b0882SAndroid Build Coastguard Worker 1598963653u,
3273*993b0882SAndroid Build Coastguard Worker 1267826661u,
3274*993b0882SAndroid Build Coastguard Worker 2117362589u,
3275*993b0882SAndroid Build Coastguard Worker 2861192253u,
3276*993b0882SAndroid Build Coastguard Worker 1823625377u,
3277*993b0882SAndroid Build Coastguard Worker 1380350078u,
3278*993b0882SAndroid Build Coastguard Worker 1641748342u,
3279*993b0882SAndroid Build Coastguard Worker 1176094482u,
3280*993b0882SAndroid Build Coastguard Worker 269384321u,
3281*993b0882SAndroid Build Coastguard Worker 2178982315u,
3282*993b0882SAndroid Build Coastguard Worker 3480237248u,
3283*993b0882SAndroid Build Coastguard Worker 2660755208u,
3284*993b0882SAndroid Build Coastguard Worker 1850544433u,
3285*993b0882SAndroid Build Coastguard Worker 3429699438u,
3286*993b0882SAndroid Build Coastguard Worker 1262819303u,
3287*993b0882SAndroid Build Coastguard Worker 640556464u,
3288*993b0882SAndroid Build Coastguard Worker 2421125401u,
3289*993b0882SAndroid Build Coastguard Worker 2188368608u,
3290*993b0882SAndroid Build Coastguard Worker 2612932825u,
3291*993b0882SAndroid Build Coastguard Worker 1474432581u,
3292*993b0882SAndroid Build Coastguard Worker 173790449u,
3293*993b0882SAndroid Build Coastguard Worker 2124882189u,
3294*993b0882SAndroid Build Coastguard Worker 831272654u,
3295*993b0882SAndroid Build Coastguard Worker 622960146u,
3296*993b0882SAndroid Build Coastguard Worker 4238751051u,
3297*993b0882SAndroid Build Coastguard Worker 3250317967u,
3298*993b0882SAndroid Build Coastguard Worker 2120810248u,
3299*993b0882SAndroid Build Coastguard Worker 1948231495u,
3300*993b0882SAndroid Build Coastguard Worker 1389029321u,
3301*993b0882SAndroid Build Coastguard Worker 2200398357u,
3302*993b0882SAndroid Build Coastguard Worker 2134232963u,
3303*993b0882SAndroid Build Coastguard Worker 2948072329u,
3304*993b0882SAndroid Build Coastguard Worker 617717625u,
3305*993b0882SAndroid Build Coastguard Worker 681164587u,
3306*993b0882SAndroid Build Coastguard Worker 114859387u,
3307*993b0882SAndroid Build Coastguard Worker 430545646u,
3308*993b0882SAndroid Build Coastguard Worker 57239089u,
3309*993b0882SAndroid Build Coastguard Worker 3163338012u,
3310*993b0882SAndroid Build Coastguard Worker 3482496399u,
3311*993b0882SAndroid Build Coastguard Worker 557662576u,
3312*993b0882SAndroid Build Coastguard Worker 1102441413u,
3313*993b0882SAndroid Build Coastguard Worker 2670159360u,
3314*993b0882SAndroid Build Coastguard Worker 991116729u,
3315*993b0882SAndroid Build Coastguard Worker 846014240u,
3316*993b0882SAndroid Build Coastguard Worker 4233741566u,
3317*993b0882SAndroid Build Coastguard Worker 1802317242u,
3318*993b0882SAndroid Build Coastguard Worker 3129528802u,
3319*993b0882SAndroid Build Coastguard Worker 1459456375u,
3320*993b0882SAndroid Build Coastguard Worker 1305643039u,
3321*993b0882SAndroid Build Coastguard Worker 3258671612u,
3322*993b0882SAndroid Build Coastguard Worker 1578285833u,
3323*993b0882SAndroid Build Coastguard Worker 868590079u,
3324*993b0882SAndroid Build Coastguard Worker 1631034517u,
3325*993b0882SAndroid Build Coastguard Worker 1695432937u,
3326*993b0882SAndroid Build Coastguard Worker 561078856u,
3327*993b0882SAndroid Build Coastguard Worker 1004115553u,
3328*993b0882SAndroid Build Coastguard Worker 3086090507u,
3329*993b0882SAndroid Build Coastguard Worker 3818348650u,
3330*993b0882SAndroid Build Coastguard Worker 731596645u,
3331*993b0882SAndroid Build Coastguard Worker 780926790u,
3332*993b0882SAndroid Build Coastguard Worker 2544205955u,
3333*993b0882SAndroid Build Coastguard Worker 158479164u,
3334*993b0882SAndroid Build Coastguard Worker 3983514188u,
3335*993b0882SAndroid Build Coastguard Worker 2004735250u,
3336*993b0882SAndroid Build Coastguard Worker 3436218400u,
3337*993b0882SAndroid Build Coastguard Worker 673684751u,
3338*993b0882SAndroid Build Coastguard Worker 1463431419u,
3339*993b0882SAndroid Build Coastguard Worker 2880490219u,
3340*993b0882SAndroid Build Coastguard Worker 3223748024u,
3341*993b0882SAndroid Build Coastguard Worker 2218318859u,
3342*993b0882SAndroid Build Coastguard Worker 1474466194u,
3343*993b0882SAndroid Build Coastguard Worker 2636437533u,
3344*993b0882SAndroid Build Coastguard Worker 2206794961u,
3345*993b0882SAndroid Build Coastguard Worker 140995728u,
3346*993b0882SAndroid Build Coastguard Worker 1186394086u,
3347*993b0882SAndroid Build Coastguard Worker 1805716888u,
3348*993b0882SAndroid Build Coastguard Worker 1640037724u,
3349*993b0882SAndroid Build Coastguard Worker 3942729099u,
3350*993b0882SAndroid Build Coastguard Worker 1944727013u,
3351*993b0882SAndroid Build Coastguard Worker 918951560u,
3352*993b0882SAndroid Build Coastguard Worker 498666871u,
3353*993b0882SAndroid Build Coastguard Worker 3486974657u,
3354*993b0882SAndroid Build Coastguard Worker 2967205462u,
3355*993b0882SAndroid Build Coastguard Worker 1167253804u,
3356*993b0882SAndroid Build Coastguard Worker 1884281041u,
3357*993b0882SAndroid Build Coastguard Worker 2866015002u,
3358*993b0882SAndroid Build Coastguard Worker 4158319270u,
3359*993b0882SAndroid Build Coastguard Worker 2627220079u,
3360*993b0882SAndroid Build Coastguard Worker 3733319624u,
3361*993b0882SAndroid Build Coastguard Worker 3317092271u,
3362*993b0882SAndroid Build Coastguard Worker 438323662u,
3363*993b0882SAndroid Build Coastguard Worker 3195868065u,
3364*993b0882SAndroid Build Coastguard Worker 3426606709u,
3365*993b0882SAndroid Build Coastguard Worker 360708338u,
3366*993b0882SAndroid Build Coastguard Worker 1905491012u,
3367*993b0882SAndroid Build Coastguard Worker 650004803u,
3368*993b0882SAndroid Build Coastguard Worker 1351266252u,
3369*993b0882SAndroid Build Coastguard Worker 3133279000u,
3370*993b0882SAndroid Build Coastguard Worker 3722811115u,
3371*993b0882SAndroid Build Coastguard Worker 2722412434u,
3372*993b0882SAndroid Build Coastguard Worker 918432408u,
3373*993b0882SAndroid Build Coastguard Worker 3678271248u,
3374*993b0882SAndroid Build Coastguard Worker 269599647u,
3375*993b0882SAndroid Build Coastguard Worker 621514057u,
3376*993b0882SAndroid Build Coastguard Worker 3117077855u,
3377*993b0882SAndroid Build Coastguard Worker 1545425390u,
3378*993b0882SAndroid Build Coastguard Worker 2597567410u,
3379*993b0882SAndroid Build Coastguard Worker 1221437820u,
3380*993b0882SAndroid Build Coastguard Worker 3493254589u,
3381*993b0882SAndroid Build Coastguard Worker 102787342u,
3382*993b0882SAndroid Build Coastguard Worker 918861168u,
3383*993b0882SAndroid Build Coastguard Worker 348795089u,
3384*993b0882SAndroid Build Coastguard Worker 3439883229u,
3385*993b0882SAndroid Build Coastguard Worker 2353641807u,
3386*993b0882SAndroid Build Coastguard Worker 2209585469u,
3387*993b0882SAndroid Build Coastguard Worker 4035884492u,
3388*993b0882SAndroid Build Coastguard Worker 2686995435u,
3389*993b0882SAndroid Build Coastguard Worker 1649888022u,
3390*993b0882SAndroid Build Coastguard Worker 3852893848u,
3391*993b0882SAndroid Build Coastguard Worker 3042700028u,
3392*993b0882SAndroid Build Coastguard Worker 314103172u,
3393*993b0882SAndroid Build Coastguard Worker 726977769u,
3394*993b0882SAndroid Build Coastguard Worker 2489830276u,
3395*993b0882SAndroid Build Coastguard Worker 2872753660u,
3396*993b0882SAndroid Build Coastguard Worker 1316214989u,
3397*993b0882SAndroid Build Coastguard Worker 1488801501u,
3398*993b0882SAndroid Build Coastguard Worker 1811420390u,
3399*993b0882SAndroid Build Coastguard Worker 639581627u,
3400*993b0882SAndroid Build Coastguard Worker 2362837215u,
3401*993b0882SAndroid Build Coastguard Worker 3634581834u,
3402*993b0882SAndroid Build Coastguard Worker 3648576802u,
3403*993b0882SAndroid Build Coastguard Worker 1257314182u,
3404*993b0882SAndroid Build Coastguard Worker 762118371u,
3405*993b0882SAndroid Build Coastguard Worker 4268447045u,
3406*993b0882SAndroid Build Coastguard Worker 730167096u,
3407*993b0882SAndroid Build Coastguard Worker 755561509u,
3408*993b0882SAndroid Build Coastguard Worker 882614845u,
3409*993b0882SAndroid Build Coastguard Worker 3696972894u,
3410*993b0882SAndroid Build Coastguard Worker 228263661u,
3411*993b0882SAndroid Build Coastguard Worker 1478636142u,
3412*993b0882SAndroid Build Coastguard Worker 2767751651u,
3413*993b0882SAndroid Build Coastguard Worker 1532617116u,
3414*993b0882SAndroid Build Coastguard Worker 3838657661u,
3415*993b0882SAndroid Build Coastguard Worker 1944359935u,
3416*993b0882SAndroid Build Coastguard Worker 1401102137u,
3417*993b0882SAndroid Build Coastguard Worker 3772933173u,
3418*993b0882SAndroid Build Coastguard Worker 1050098254u,
3419*993b0882SAndroid Build Coastguard Worker 1658079354u,
3420*993b0882SAndroid Build Coastguard Worker 1846025728u,
3421*993b0882SAndroid Build Coastguard Worker 2204244794u,
3422*993b0882SAndroid Build Coastguard Worker 2017217424u,
3423*993b0882SAndroid Build Coastguard Worker 1275162853u,
3424*993b0882SAndroid Build Coastguard Worker 1429816745u,
3425*993b0882SAndroid Build Coastguard Worker 2175565479u,
3426*993b0882SAndroid Build Coastguard Worker 1716109139u,
3427*993b0882SAndroid Build Coastguard Worker 1187506761u,
3428*993b0882SAndroid Build Coastguard Worker 2434641075u,
3429*993b0882SAndroid Build Coastguard Worker 2725597783u,
3430*993b0882SAndroid Build Coastguard Worker 1795687662u,
3431*993b0882SAndroid Build Coastguard Worker 1393312782u,
3432*993b0882SAndroid Build Coastguard Worker 3511565397u,
3433*993b0882SAndroid Build Coastguard Worker 627885430u,
3434*993b0882SAndroid Build Coastguard Worker 4145733164u,
3435*993b0882SAndroid Build Coastguard Worker 2519005353u,
3436*993b0882SAndroid Build Coastguard Worker 231414775u,
3437*993b0882SAndroid Build Coastguard Worker 1242015635u,
3438*993b0882SAndroid Build Coastguard Worker 2760723497u,
3439*993b0882SAndroid Build Coastguard Worker 2185540568u,
3440*993b0882SAndroid Build Coastguard Worker 727314436u,
3441*993b0882SAndroid Build Coastguard Worker 2358790354u,
3442*993b0882SAndroid Build Coastguard Worker 1186393454u,
3443*993b0882SAndroid Build Coastguard Worker 4234795645u,
3444*993b0882SAndroid Build Coastguard Worker 350567813u,
3445*993b0882SAndroid Build Coastguard Worker 866773875u,
3446*993b0882SAndroid Build Coastguard Worker 3145590392u,
3447*993b0882SAndroid Build Coastguard Worker 1158374055u,
3448*993b0882SAndroid Build Coastguard Worker 3903123687u,
3449*993b0882SAndroid Build Coastguard Worker 1862119793u,
3450*993b0882SAndroid Build Coastguard Worker 2204587556u,
3451*993b0882SAndroid Build Coastguard Worker 4266276976u,
3452*993b0882SAndroid Build Coastguard Worker 4151548555u,
3453*993b0882SAndroid Build Coastguard Worker 915250402u,
3454*993b0882SAndroid Build Coastguard Worker 2874695320u,
3455*993b0882SAndroid Build Coastguard Worker 2360311410u,
3456*993b0882SAndroid Build Coastguard Worker 1099212769u,
3457*993b0882SAndroid Build Coastguard Worker 1271542714u,
3458*993b0882SAndroid Build Coastguard Worker 3473148363u,
3459*993b0882SAndroid Build Coastguard Worker 1637325418u,
3460*993b0882SAndroid Build Coastguard Worker 1807795989u,
3461*993b0882SAndroid Build Coastguard Worker 2493819794u,
3462*993b0882SAndroid Build Coastguard Worker 3800917924u,
3463*993b0882SAndroid Build Coastguard Worker 4001205856u,
3464*993b0882SAndroid Build Coastguard Worker 2582153621u,
3465*993b0882SAndroid Build Coastguard Worker 3365872040u,
3466*993b0882SAndroid Build Coastguard Worker 2890146216u,
3467*993b0882SAndroid Build Coastguard Worker 2626363824u,
3468*993b0882SAndroid Build Coastguard Worker 3133351295u,
3469*993b0882SAndroid Build Coastguard Worker 4046827296u,
3470*993b0882SAndroid Build Coastguard Worker 3053118771u,
3471*993b0882SAndroid Build Coastguard Worker 4113026751u,
3472*993b0882SAndroid Build Coastguard Worker 884356716u,
3473*993b0882SAndroid Build Coastguard Worker 3828347401u,
3474*993b0882SAndroid Build Coastguard Worker 10608262u,
3475*993b0882SAndroid Build Coastguard Worker 830987972u,
3476*993b0882SAndroid Build Coastguard Worker 1841080500u,
3477*993b0882SAndroid Build Coastguard Worker 3202717763u,
3478*993b0882SAndroid Build Coastguard Worker 3561778749u,
3479*993b0882SAndroid Build Coastguard Worker 1906000052u,
3480*993b0882SAndroid Build Coastguard Worker 3058284660u,
3481*993b0882SAndroid Build Coastguard Worker 1432904514u,
3482*993b0882SAndroid Build Coastguard Worker 2567431677u,
3483*993b0882SAndroid Build Coastguard Worker 2550162530u,
3484*993b0882SAndroid Build Coastguard Worker 665557986u,
3485*993b0882SAndroid Build Coastguard Worker 936887821u,
3486*993b0882SAndroid Build Coastguard Worker 2101205308u,
3487*993b0882SAndroid Build Coastguard Worker 4253535847u,
3488*993b0882SAndroid Build Coastguard Worker 1662043545u,
3489*993b0882SAndroid Build Coastguard Worker 1253611611u,
3490*993b0882SAndroid Build Coastguard Worker 2091370094u,
3491*993b0882SAndroid Build Coastguard Worker 2635077370u,
3492*993b0882SAndroid Build Coastguard Worker 2602176041u,
3493*993b0882SAndroid Build Coastguard Worker 3624115809u,
3494*993b0882SAndroid Build Coastguard Worker 748442714u,
3495*993b0882SAndroid Build Coastguard Worker 2709749154u,
3496*993b0882SAndroid Build Coastguard Worker 1023493343u,
3497*993b0882SAndroid Build Coastguard Worker 860291012u,
3498*993b0882SAndroid Build Coastguard Worker 3924715584u,
3499*993b0882SAndroid Build Coastguard Worker 1536436740u,
3500*993b0882SAndroid Build Coastguard Worker 2551145800u,
3501*993b0882SAndroid Build Coastguard Worker 2391782865u,
3502*993b0882SAndroid Build Coastguard Worker 1467705048u,
3503*993b0882SAndroid Build Coastguard Worker 2583909796u,
3504*993b0882SAndroid Build Coastguard Worker 3616666170u,
3505*993b0882SAndroid Build Coastguard Worker 1162857372u,
3506*993b0882SAndroid Build Coastguard Worker 4228631071u,
3507*993b0882SAndroid Build Coastguard Worker 1510132376u,
3508*993b0882SAndroid Build Coastguard Worker 2739165009u,
3509*993b0882SAndroid Build Coastguard Worker 2656606142u,
3510*993b0882SAndroid Build Coastguard Worker 3454996358u,
3511*993b0882SAndroid Build Coastguard Worker 3155038853u,
3512*993b0882SAndroid Build Coastguard Worker 1022087316u,
3513*993b0882SAndroid Build Coastguard Worker 100044110u,
3514*993b0882SAndroid Build Coastguard Worker 494208296u,
3515*993b0882SAndroid Build Coastguard Worker 2746186477u,
3516*993b0882SAndroid Build Coastguard Worker 4216782431u,
3517*993b0882SAndroid Build Coastguard Worker 225448834u,
3518*993b0882SAndroid Build Coastguard Worker 3728320521u,
3519*993b0882SAndroid Build Coastguard Worker 335282866u,
3520*993b0882SAndroid Build Coastguard Worker 3148194874u,
3521*993b0882SAndroid Build Coastguard Worker 953503703u,
3522*993b0882SAndroid Build Coastguard Worker 1293353960u,
3523*993b0882SAndroid Build Coastguard Worker 202372387u,
3524*993b0882SAndroid Build Coastguard Worker 1326119870u,
3525*993b0882SAndroid Build Coastguard Worker 4045123735u,
3526*993b0882SAndroid Build Coastguard Worker 3819994846u,
3527*993b0882SAndroid Build Coastguard Worker 1629004186u,
3528*993b0882SAndroid Build Coastguard Worker 1081099186u,
3529*993b0882SAndroid Build Coastguard Worker 3591584153u,
3530*993b0882SAndroid Build Coastguard Worker 1670825804u,
3531*993b0882SAndroid Build Coastguard Worker 3404257979u,
3532*993b0882SAndroid Build Coastguard Worker 3262192301u,
3533*993b0882SAndroid Build Coastguard Worker 2572846095u,
3534*993b0882SAndroid Build Coastguard Worker 3714992543u,
3535*993b0882SAndroid Build Coastguard Worker 4264142572u,
3536*993b0882SAndroid Build Coastguard Worker 529616678u,
3537*993b0882SAndroid Build Coastguard Worker 2882154574u,
3538*993b0882SAndroid Build Coastguard Worker 3006354178u,
3539*993b0882SAndroid Build Coastguard Worker 3865969421u,
3540*993b0882SAndroid Build Coastguard Worker 2007174907u,
3541*993b0882SAndroid Build Coastguard Worker 308283107u,
3542*993b0882SAndroid Build Coastguard Worker 2629833703u,
3543*993b0882SAndroid Build Coastguard Worker 3159124075u,
3544*993b0882SAndroid Build Coastguard Worker 1146492131u,
3545*993b0882SAndroid Build Coastguard Worker 494104332u,
3546*993b0882SAndroid Build Coastguard Worker 493149727u,
3547*993b0882SAndroid Build Coastguard Worker 1342910585u,
3548*993b0882SAndroid Build Coastguard Worker 521642387u,
3549*993b0882SAndroid Build Coastguard Worker 2201695937u,
3550*993b0882SAndroid Build Coastguard Worker 2517980959u,
3551*993b0882SAndroid Build Coastguard Worker 2426821287u,
3552*993b0882SAndroid Build Coastguard Worker 777374655u,
3553*993b0882SAndroid Build Coastguard Worker 2228189792u,
3554*993b0882SAndroid Build Coastguard Worker 4027055486u,
3555*993b0882SAndroid Build Coastguard Worker 228976000u,
3556*993b0882SAndroid Build Coastguard Worker 3842083468u,
3557*993b0882SAndroid Build Coastguard Worker 1723920223u,
3558*993b0882SAndroid Build Coastguard Worker 1192126094u,
3559*993b0882SAndroid Build Coastguard Worker 787744493u,
3560*993b0882SAndroid Build Coastguard Worker 2740368380u,
3561*993b0882SAndroid Build Coastguard Worker 2284153001u,
3562*993b0882SAndroid Build Coastguard Worker 2773829458u,
3563*993b0882SAndroid Build Coastguard Worker 442000614u,
3564*993b0882SAndroid Build Coastguard Worker 387830783u,
3565*993b0882SAndroid Build Coastguard Worker 2169780670u,
3566*993b0882SAndroid Build Coastguard Worker 2253144627u,
3567*993b0882SAndroid Build Coastguard Worker 3532502484u,
3568*993b0882SAndroid Build Coastguard Worker 1969684059u,
3569*993b0882SAndroid Build Coastguard Worker 1165351416u,
3570*993b0882SAndroid Build Coastguard Worker 3055056536u,
3571*993b0882SAndroid Build Coastguard Worker 3582324253u,
3572*993b0882SAndroid Build Coastguard Worker 231419363u,
3573*993b0882SAndroid Build Coastguard Worker 770979865u,
3574*993b0882SAndroid Build Coastguard Worker 3213983597u,
3575*993b0882SAndroid Build Coastguard Worker 3690452836u,
3576*993b0882SAndroid Build Coastguard Worker 935794639u,
3577*993b0882SAndroid Build Coastguard Worker 3230602762u,
3578*993b0882SAndroid Build Coastguard Worker 2841762457u,
3579*993b0882SAndroid Build Coastguard Worker 407598927u,
3580*993b0882SAndroid Build Coastguard Worker 1164479891u,
3581*993b0882SAndroid Build Coastguard Worker 3721799696u,
3582*993b0882SAndroid Build Coastguard Worker 354738136u,
3583*993b0882SAndroid Build Coastguard Worker 1801566618u,
3584*993b0882SAndroid Build Coastguard Worker 3206038542u,
3585*993b0882SAndroid Build Coastguard Worker 2621379981u,
3586*993b0882SAndroid Build Coastguard Worker 1943487262u,
3587*993b0882SAndroid Build Coastguard Worker 3534745636u,
3588*993b0882SAndroid Build Coastguard Worker 1074424589u,
3589*993b0882SAndroid Build Coastguard Worker 1304517521u,
3590*993b0882SAndroid Build Coastguard Worker 4133400969u,
3591*993b0882SAndroid Build Coastguard Worker 2339317978u,
3592*993b0882SAndroid Build Coastguard Worker 2135116860u,
3593*993b0882SAndroid Build Coastguard Worker 4180643791u,
3594*993b0882SAndroid Build Coastguard Worker 2415309340u,
3595*993b0882SAndroid Build Coastguard Worker 1855926417u,
3596*993b0882SAndroid Build Coastguard Worker 3418648630u,
3597*993b0882SAndroid Build Coastguard Worker 1968113037u,
3598*993b0882SAndroid Build Coastguard Worker 597304222u,
3599*993b0882SAndroid Build Coastguard Worker 3668824865u,
3600*993b0882SAndroid Build Coastguard Worker 3810008716u,
3601*993b0882SAndroid Build Coastguard Worker 3014702569u,
3602*993b0882SAndroid Build Coastguard Worker 3151212026u,
3603*993b0882SAndroid Build Coastguard Worker 156057449u,
3604*993b0882SAndroid Build Coastguard Worker 373134533u,
3605*993b0882SAndroid Build Coastguard Worker 2068234004u,
3606*993b0882SAndroid Build Coastguard Worker 191580563u,
3607*993b0882SAndroid Build Coastguard Worker 3832754488u,
3608*993b0882SAndroid Build Coastguard Worker 2924104199u,
3609*993b0882SAndroid Build Coastguard Worker 2026044494u,
3610*993b0882SAndroid Build Coastguard Worker 4065780435u,
3611*993b0882SAndroid Build Coastguard Worker 122565840u,
3612*993b0882SAndroid Build Coastguard Worker 4194985167u,
3613*993b0882SAndroid Build Coastguard Worker 2744823717u,
3614*993b0882SAndroid Build Coastguard Worker 2494098735u,
3615*993b0882SAndroid Build Coastguard Worker 3753793370u,
3616*993b0882SAndroid Build Coastguard Worker 1885739217u,
3617*993b0882SAndroid Build Coastguard Worker 2488161225u,
3618*993b0882SAndroid Build Coastguard Worker 3643797615u,
3619*993b0882SAndroid Build Coastguard Worker 2653367310u,
3620*993b0882SAndroid Build Coastguard Worker 2494061477u,
3621*993b0882SAndroid Build Coastguard Worker 189968132u,
3622*993b0882SAndroid Build Coastguard Worker 899646597u,
3623*993b0882SAndroid Build Coastguard Worker 392100396u,
3624*993b0882SAndroid Build Coastguard Worker 4012318310u,
3625*993b0882SAndroid Build Coastguard Worker 3855777086u,
3626*993b0882SAndroid Build Coastguard Worker 3566860954u,
3627*993b0882SAndroid Build Coastguard Worker 2698574996u,
3628*993b0882SAndroid Build Coastguard Worker 2414249905u,
3629*993b0882SAndroid Build Coastguard Worker 1330623339u,
3630*993b0882SAndroid Build Coastguard Worker 1263222732u,
3631*993b0882SAndroid Build Coastguard Worker 1277741760u,
3632*993b0882SAndroid Build Coastguard Worker 2194959402u,
3633*993b0882SAndroid Build Coastguard Worker 1629656136u,
3634*993b0882SAndroid Build Coastguard Worker 120494320u,
3635*993b0882SAndroid Build Coastguard Worker 1072368005u,
3636*993b0882SAndroid Build Coastguard Worker 1084245077u,
3637*993b0882SAndroid Build Coastguard Worker 4011372748u,
3638*993b0882SAndroid Build Coastguard Worker 1366613353u,
3639*993b0882SAndroid Build Coastguard Worker 3108643228u,
3640*993b0882SAndroid Build Coastguard Worker 3332219532u,
3641*993b0882SAndroid Build Coastguard Worker 2114746095u,
3642*993b0882SAndroid Build Coastguard Worker 3964007334u,
3643*993b0882SAndroid Build Coastguard Worker 371687128u,
3644*993b0882SAndroid Build Coastguard Worker 1084813876u,
3645*993b0882SAndroid Build Coastguard Worker 126459896u,
3646*993b0882SAndroid Build Coastguard Worker 4292782331u,
3647*993b0882SAndroid Build Coastguard Worker 321283184u,
3648*993b0882SAndroid Build Coastguard Worker 398168499u,
3649*993b0882SAndroid Build Coastguard Worker 3604983506u,
3650*993b0882SAndroid Build Coastguard Worker 560701543u,
3651*993b0882SAndroid Build Coastguard Worker 2073961354u,
3652*993b0882SAndroid Build Coastguard Worker 4240841868u,
3653*993b0882SAndroid Build Coastguard Worker 4151211362u,
3654*993b0882SAndroid Build Coastguard Worker 1338986875u,
3655*993b0882SAndroid Build Coastguard Worker 4093476832u,
3656*993b0882SAndroid Build Coastguard Worker 2269279497u,
3657*993b0882SAndroid Build Coastguard Worker 3500846299u,
3658*993b0882SAndroid Build Coastguard Worker 2510225147u,
3659*993b0882SAndroid Build Coastguard Worker 598000444u,
3660*993b0882SAndroid Build Coastguard Worker 1330391422u,
3661*993b0882SAndroid Build Coastguard Worker 1432533385u,
3662*993b0882SAndroid Build Coastguard Worker 4171226231u,
3663*993b0882SAndroid Build Coastguard Worker 426821154u,
3664*993b0882SAndroid Build Coastguard Worker 2932270996u,
3665*993b0882SAndroid Build Coastguard Worker 3378981077u,
3666*993b0882SAndroid Build Coastguard Worker 2217871549u,
3667*993b0882SAndroid Build Coastguard Worker 1619647984u,
3668*993b0882SAndroid Build Coastguard Worker 4051608043u,
3669*993b0882SAndroid Build Coastguard Worker 3180237819u,
3670*993b0882SAndroid Build Coastguard Worker 12919578u,
3671*993b0882SAndroid Build Coastguard Worker 1375401767u,
3672*993b0882SAndroid Build Coastguard Worker 371320427u,
3673*993b0882SAndroid Build Coastguard Worker 2986640571u,
3674*993b0882SAndroid Build Coastguard Worker 2336669859u,
3675*993b0882SAndroid Build Coastguard Worker 3796464715u,
3676*993b0882SAndroid Build Coastguard Worker 1892383284u,
3677*993b0882SAndroid Build Coastguard Worker 306814912u,
3678*993b0882SAndroid Build Coastguard Worker 2125823211u,
3679*993b0882SAndroid Build Coastguard Worker 1863678891u,
3680*993b0882SAndroid Build Coastguard Worker 3249703818u,
3681*993b0882SAndroid Build Coastguard Worker 3840225752u,
3682*993b0882SAndroid Build Coastguard Worker 281579900u,
3683*993b0882SAndroid Build Coastguard Worker 264680257u,
3684*993b0882SAndroid Build Coastguard Worker 4266359110u,
3685*993b0882SAndroid Build Coastguard Worker 4182229890u,
3686*993b0882SAndroid Build Coastguard Worker 2239659703u,
3687*993b0882SAndroid Build Coastguard Worker 3627947372u,
3688*993b0882SAndroid Build Coastguard Worker 2373929191u,
3689*993b0882SAndroid Build Coastguard Worker 224082765u,
3690*993b0882SAndroid Build Coastguard Worker 4053639058u,
3691*993b0882SAndroid Build Coastguard Worker 1862360303u,
3692*993b0882SAndroid Build Coastguard Worker 3187739624u,
3693*993b0882SAndroid Build Coastguard Worker 3392706679u,
3694*993b0882SAndroid Build Coastguard Worker 948039509u,
3695*993b0882SAndroid Build Coastguard Worker 817505760u,
3696*993b0882SAndroid Build Coastguard Worker 1215842393u,
3697*993b0882SAndroid Build Coastguard Worker 3462222651u,
3698*993b0882SAndroid Build Coastguard Worker 536021853u,
3699*993b0882SAndroid Build Coastguard Worker 182346832u,
3700*993b0882SAndroid Build Coastguard Worker 2731944883u,
3701*993b0882SAndroid Build Coastguard Worker 2346674384u,
3702*993b0882SAndroid Build Coastguard Worker 2640961678u,
3703*993b0882SAndroid Build Coastguard Worker 3446695687u,
3704*993b0882SAndroid Build Coastguard Worker 2271722179u,
3705*993b0882SAndroid Build Coastguard Worker 1301069656u,
3706*993b0882SAndroid Build Coastguard Worker 2803881468u,
3707*993b0882SAndroid Build Coastguard Worker 2832614405u,
3708*993b0882SAndroid Build Coastguard Worker 1691544398u,
3709*993b0882SAndroid Build Coastguard Worker 698756814u,
3710*993b0882SAndroid Build Coastguard Worker 3980620906u,
3711*993b0882SAndroid Build Coastguard Worker 3565421410u,
3712*993b0882SAndroid Build Coastguard Worker 754769376u,
3713*993b0882SAndroid Build Coastguard Worker 4115923404u,
3714*993b0882SAndroid Build Coastguard Worker 3909962218u,
3715*993b0882SAndroid Build Coastguard Worker 2747614077u,
3716*993b0882SAndroid Build Coastguard Worker 2888289845u,
3717*993b0882SAndroid Build Coastguard Worker 1016920862u,
3718*993b0882SAndroid Build Coastguard Worker 2790946178u,
3719*993b0882SAndroid Build Coastguard Worker 3067070960u,
3720*993b0882SAndroid Build Coastguard Worker 3173251481u,
3721*993b0882SAndroid Build Coastguard Worker 1572132982u,
3722*993b0882SAndroid Build Coastguard Worker 255048203u,
3723*993b0882SAndroid Build Coastguard Worker 2996538818u,
3724*993b0882SAndroid Build Coastguard Worker 3405398987u,
3725*993b0882SAndroid Build Coastguard Worker 136106013u,
3726*993b0882SAndroid Build Coastguard Worker 3581605228u,
3727*993b0882SAndroid Build Coastguard Worker 4277437977u,
3728*993b0882SAndroid Build Coastguard Worker 2147300534u,
3729*993b0882SAndroid Build Coastguard Worker 3728426265u,
3730*993b0882SAndroid Build Coastguard Worker 3483629996u,
3731*993b0882SAndroid Build Coastguard Worker 1478452694u,
3732*993b0882SAndroid Build Coastguard Worker 20756076u,
3733*993b0882SAndroid Build Coastguard Worker 2774992067u,
3734*993b0882SAndroid Build Coastguard Worker 432987927u,
3735*993b0882SAndroid Build Coastguard Worker 1516771026u,
3736*993b0882SAndroid Build Coastguard Worker 3511588664u,
3737*993b0882SAndroid Build Coastguard Worker 2130994978u,
3738*993b0882SAndroid Build Coastguard Worker 509385406u,
3739*993b0882SAndroid Build Coastguard Worker 873090347u,
3740*993b0882SAndroid Build Coastguard Worker 2163904107u,
3741*993b0882SAndroid Build Coastguard Worker 4192239086u,
3742*993b0882SAndroid Build Coastguard Worker 2532489989u,
3743*993b0882SAndroid Build Coastguard Worker 1090772651u,
3744*993b0882SAndroid Build Coastguard Worker 3910797408u,
3745*993b0882SAndroid Build Coastguard Worker 3710882132u,
3746*993b0882SAndroid Build Coastguard Worker 155010959u,
3747*993b0882SAndroid Build Coastguard Worker 1369823531u,
3748*993b0882SAndroid Build Coastguard Worker 1599664937u,
3749*993b0882SAndroid Build Coastguard Worker 4035593587u,
3750*993b0882SAndroid Build Coastguard Worker 1212746925u,
3751*993b0882SAndroid Build Coastguard Worker 795822552u,
3752*993b0882SAndroid Build Coastguard Worker 116689518u,
3753*993b0882SAndroid Build Coastguard Worker 3674240941u,
3754*993b0882SAndroid Build Coastguard Worker 1135576664u,
3755*993b0882SAndroid Build Coastguard Worker 756750261u,
3756*993b0882SAndroid Build Coastguard Worker 1027431362u,
3757*993b0882SAndroid Build Coastguard Worker 390555140u,
3758*993b0882SAndroid Build Coastguard Worker 2228460216u,
3759*993b0882SAndroid Build Coastguard Worker 1506940482u,
3760*993b0882SAndroid Build Coastguard Worker 3733857700u,
3761*993b0882SAndroid Build Coastguard Worker 3048762971u,
3762*993b0882SAndroid Build Coastguard Worker 2511703196u,
3763*993b0882SAndroid Build Coastguard Worker 548609887u,
3764*993b0882SAndroid Build Coastguard Worker 1607354252u,
3765*993b0882SAndroid Build Coastguard Worker 659053982u,
3766*993b0882SAndroid Build Coastguard Worker 259884450u,
3767*993b0882SAndroid Build Coastguard Worker 1793130460u,
3768*993b0882SAndroid Build Coastguard Worker 4083364495u,
3769*993b0882SAndroid Build Coastguard Worker 3148555881u,
3770*993b0882SAndroid Build Coastguard Worker 1764350138u,
3771*993b0882SAndroid Build Coastguard Worker 2436485683u,
3772*993b0882SAndroid Build Coastguard Worker 4031563025u,
3773*993b0882SAndroid Build Coastguard Worker 3261860724u,
3774*993b0882SAndroid Build Coastguard Worker 2475833430u,
3775*993b0882SAndroid Build Coastguard Worker 2101726086u,
3776*993b0882SAndroid Build Coastguard Worker 3191176464u,
3777*993b0882SAndroid Build Coastguard Worker 2646658847u,
3778*993b0882SAndroid Build Coastguard Worker 2127042126u,
3779*993b0882SAndroid Build Coastguard Worker 771316100u,
3780*993b0882SAndroid Build Coastguard Worker 2115922959u,
3781*993b0882SAndroid Build Coastguard Worker 3208515045u,
3782*993b0882SAndroid Build Coastguard Worker 2355437783u,
3783*993b0882SAndroid Build Coastguard Worker 3621147793u,
3784*993b0882SAndroid Build Coastguard Worker 1580163615u,
3785*993b0882SAndroid Build Coastguard Worker 3211555675u,
3786*993b0882SAndroid Build Coastguard Worker 3299188490u,
3787*993b0882SAndroid Build Coastguard Worker 191613920u,
3788*993b0882SAndroid Build Coastguard Worker 466733956u,
3789*993b0882SAndroid Build Coastguard Worker 2939029038u,
3790*993b0882SAndroid Build Coastguard Worker 1509152039u,
3791*993b0882SAndroid Build Coastguard Worker 130591314u,
3792*993b0882SAndroid Build Coastguard Worker 1892874677u,
3793*993b0882SAndroid Build Coastguard Worker 1646908044u,
3794*993b0882SAndroid Build Coastguard Worker 3452406523u,
3795*993b0882SAndroid Build Coastguard Worker 3998376606u,
3796*993b0882SAndroid Build Coastguard Worker 1199243832u,
3797*993b0882SAndroid Build Coastguard Worker 2187108812u,
3798*993b0882SAndroid Build Coastguard Worker 3189230066u,
3799*993b0882SAndroid Build Coastguard Worker 4161151481u,
3800*993b0882SAndroid Build Coastguard Worker 3371454980u,
3801*993b0882SAndroid Build Coastguard Worker 3681788646u,
3802*993b0882SAndroid Build Coastguard Worker 180842187u,
3803*993b0882SAndroid Build Coastguard Worker 3685022399u,
3804*993b0882SAndroid Build Coastguard Worker 3058749895u,
3805*993b0882SAndroid Build Coastguard Worker 3250165163u,
3806*993b0882SAndroid Build Coastguard Worker 2895367943u,
3807*993b0882SAndroid Build Coastguard Worker 2627101723u,
3808*993b0882SAndroid Build Coastguard Worker 771755098u,
3809*993b0882SAndroid Build Coastguard Worker 1332921024u,
3810*993b0882SAndroid Build Coastguard Worker 3638871848u,
3811*993b0882SAndroid Build Coastguard Worker 514215135u,
3812*993b0882SAndroid Build Coastguard Worker 3591227378u,
3813*993b0882SAndroid Build Coastguard Worker 2300310870u,
3814*993b0882SAndroid Build Coastguard Worker 3689533503u,
3815*993b0882SAndroid Build Coastguard Worker 851607114u,
3816*993b0882SAndroid Build Coastguard Worker 114330368u,
3817*993b0882SAndroid Build Coastguard Worker 2709027386u,
3818*993b0882SAndroid Build Coastguard Worker 1743034877u,
3819*993b0882SAndroid Build Coastguard Worker 1013693860u,
3820*993b0882SAndroid Build Coastguard Worker 288169008u,
3821*993b0882SAndroid Build Coastguard Worker 3545190686u,
3822*993b0882SAndroid Build Coastguard Worker 1052165084u,
3823*993b0882SAndroid Build Coastguard Worker 3995862307u,
3824*993b0882SAndroid Build Coastguard Worker 96902755u,
3825*993b0882SAndroid Build Coastguard Worker 1097819851u,
3826*993b0882SAndroid Build Coastguard Worker 2645431442u,
3827*993b0882SAndroid Build Coastguard Worker 2184148618u,
3828*993b0882SAndroid Build Coastguard Worker 2151206566u,
3829*993b0882SAndroid Build Coastguard Worker 350979797u,
3830*993b0882SAndroid Build Coastguard Worker 3467920900u,
3831*993b0882SAndroid Build Coastguard Worker 421116779u,
3832*993b0882SAndroid Build Coastguard Worker 1246252u,
3833*993b0882SAndroid Build Coastguard Worker 4057835428u,
3834*993b0882SAndroid Build Coastguard Worker 329324407u,
3835*993b0882SAndroid Build Coastguard Worker 4104482417u,
3836*993b0882SAndroid Build Coastguard Worker 844624570u,
3837*993b0882SAndroid Build Coastguard Worker 3306265806u,
3838*993b0882SAndroid Build Coastguard Worker 3787625025u,
3839*993b0882SAndroid Build Coastguard Worker 4263241191u,
3840*993b0882SAndroid Build Coastguard Worker 3251413927u,
3841*993b0882SAndroid Build Coastguard Worker 2921204431u,
3842*993b0882SAndroid Build Coastguard Worker 2931915325u,
3843*993b0882SAndroid Build Coastguard Worker 992134330u,
3844*993b0882SAndroid Build Coastguard Worker 3986338354u,
3845*993b0882SAndroid Build Coastguard Worker 1327895216u,
3846*993b0882SAndroid Build Coastguard Worker 1458363596u,
3847*993b0882SAndroid Build Coastguard Worker 1480608532u,
3848*993b0882SAndroid Build Coastguard Worker 728594368u,
3849*993b0882SAndroid Build Coastguard Worker 3804366693u,
3850*993b0882SAndroid Build Coastguard Worker 794404223u,
3851*993b0882SAndroid Build Coastguard Worker 1643240863u,
3852*993b0882SAndroid Build Coastguard Worker 793417255u,
3853*993b0882SAndroid Build Coastguard Worker 4167916443u,
3854*993b0882SAndroid Build Coastguard Worker 2683488959u,
3855*993b0882SAndroid Build Coastguard Worker 3124925324u,
3856*993b0882SAndroid Build Coastguard Worker 4184843652u,
3857*993b0882SAndroid Build Coastguard Worker 3750971752u,
3858*993b0882SAndroid Build Coastguard Worker 308509829u,
3859*993b0882SAndroid Build Coastguard Worker 1054550805u,
3860*993b0882SAndroid Build Coastguard Worker 2797511972u,
3861*993b0882SAndroid Build Coastguard Worker 4043123412u,
3862*993b0882SAndroid Build Coastguard Worker 1587158240u,
3863*993b0882SAndroid Build Coastguard Worker 4050518606u,
3864*993b0882SAndroid Build Coastguard Worker 3030062190u,
3865*993b0882SAndroid Build Coastguard Worker 2589912753u,
3866*993b0882SAndroid Build Coastguard Worker 603440067u,
3867*993b0882SAndroid Build Coastguard Worker 937013191u,
3868*993b0882SAndroid Build Coastguard Worker 1071662315u,
3869*993b0882SAndroid Build Coastguard Worker 2100661456u,
3870*993b0882SAndroid Build Coastguard Worker 2602005741u,
3871*993b0882SAndroid Build Coastguard Worker 435516078u,
3872*993b0882SAndroid Build Coastguard Worker 2260470147u,
3873*993b0882SAndroid Build Coastguard Worker 1256268350u,
3874*993b0882SAndroid Build Coastguard Worker 3612035u,
3875*993b0882SAndroid Build Coastguard Worker 3368856141u,
3876*993b0882SAndroid Build Coastguard Worker 151516099u,
3877*993b0882SAndroid Build Coastguard Worker 3081868591u,
3878*993b0882SAndroid Build Coastguard Worker 3363755681u,
3879*993b0882SAndroid Build Coastguard Worker 2049963149u,
3880*993b0882SAndroid Build Coastguard Worker 2885320434u,
3881*993b0882SAndroid Build Coastguard Worker 84682005u,
3882*993b0882SAndroid Build Coastguard Worker 2411758308u,
3883*993b0882SAndroid Build Coastguard Worker 2695174275u,
3884*993b0882SAndroid Build Coastguard Worker 3099904644u,
3885*993b0882SAndroid Build Coastguard Worker 1787308684u,
3886*993b0882SAndroid Build Coastguard Worker 1132379308u,
3887*993b0882SAndroid Build Coastguard Worker 564634346u,
3888*993b0882SAndroid Build Coastguard Worker 510236510u,
3889*993b0882SAndroid Build Coastguard Worker 2804443681u,
3890*993b0882SAndroid Build Coastguard Worker 3931864252u,
3891*993b0882SAndroid Build Coastguard Worker 2064427949u,
3892*993b0882SAndroid Build Coastguard Worker 1893979229u,
3893*993b0882SAndroid Build Coastguard Worker 2916544974u,
3894*993b0882SAndroid Build Coastguard Worker 1885887717u,
3895*993b0882SAndroid Build Coastguard Worker 2978018250u,
3896*993b0882SAndroid Build Coastguard Worker 494192125u,
3897*993b0882SAndroid Build Coastguard Worker 2642662373u,
3898*993b0882SAndroid Build Coastguard Worker 901112508u,
3899*993b0882SAndroid Build Coastguard Worker 636035003u,
3900*993b0882SAndroid Build Coastguard Worker 1658643797u,
3901*993b0882SAndroid Build Coastguard Worker 172746975u,
3902*993b0882SAndroid Build Coastguard Worker 517504890u,
3903*993b0882SAndroid Build Coastguard Worker 3440019372u,
3904*993b0882SAndroid Build Coastguard Worker 4144498044u,
3905*993b0882SAndroid Build Coastguard Worker 1854755456u,
3906*993b0882SAndroid Build Coastguard Worker 3672653905u,
3907*993b0882SAndroid Build Coastguard Worker 4176892856u,
3908*993b0882SAndroid Build Coastguard Worker 382159097u,
3909*993b0882SAndroid Build Coastguard Worker 282871690u,
3910*993b0882SAndroid Build Coastguard Worker 3629300472u,
3911*993b0882SAndroid Build Coastguard Worker 2500754041u,
3912*993b0882SAndroid Build Coastguard Worker 1677659759u,
3913*993b0882SAndroid Build Coastguard Worker 1067175061u,
3914*993b0882SAndroid Build Coastguard Worker 161654075u,
3915*993b0882SAndroid Build Coastguard Worker 1672575536u,
3916*993b0882SAndroid Build Coastguard Worker 346120493u,
3917*993b0882SAndroid Build Coastguard Worker 2730229631u,
3918*993b0882SAndroid Build Coastguard Worker 203466442u,
3919*993b0882SAndroid Build Coastguard Worker 1244549529u,
3920*993b0882SAndroid Build Coastguard Worker 199761971u,
3921*993b0882SAndroid Build Coastguard Worker 2744895408u,
3922*993b0882SAndroid Build Coastguard Worker 3195315331u,
3923*993b0882SAndroid Build Coastguard Worker 2124618519u,
3924*993b0882SAndroid Build Coastguard Worker 3261045496u,
3925*993b0882SAndroid Build Coastguard Worker 985339699u,
3926*993b0882SAndroid Build Coastguard Worker 3385585455u,
3927*993b0882SAndroid Build Coastguard Worker 1545740710u,
3928*993b0882SAndroid Build Coastguard Worker 3636652160u,
3929*993b0882SAndroid Build Coastguard Worker 2167020081u,
3930*993b0882SAndroid Build Coastguard Worker 1207897204u,
3931*993b0882SAndroid Build Coastguard Worker 28752417u,
3932*993b0882SAndroid Build Coastguard Worker 2895834146u,
3933*993b0882SAndroid Build Coastguard Worker 3640845375u,
3934*993b0882SAndroid Build Coastguard Worker 3750293073u,
3935*993b0882SAndroid Build Coastguard Worker 548997850u,
3936*993b0882SAndroid Build Coastguard Worker 4207814196u,
3937*993b0882SAndroid Build Coastguard Worker 4183030708u,
3938*993b0882SAndroid Build Coastguard Worker 2462810989u,
3939*993b0882SAndroid Build Coastguard Worker 3929965401u,
3940*993b0882SAndroid Build Coastguard Worker };
3941*993b0882SAndroid Build Coastguard Worker
3942*993b0882SAndroid Build Coastguard Worker // Return false only if offset is -1 and a spot check of 3 hashes all yield 0.
Test(int offset,int len=0)3943*993b0882SAndroid Build Coastguard Worker bool Test(int offset, int len = 0) {
3944*993b0882SAndroid Build Coastguard Worker #undef Check
3945*993b0882SAndroid Build Coastguard Worker #undef IsAlive
3946*993b0882SAndroid Build Coastguard Worker
3947*993b0882SAndroid Build Coastguard Worker #define Check(x) do { \
3948*993b0882SAndroid Build Coastguard Worker bool ok = expected[index++] == (x); \
3949*993b0882SAndroid Build Coastguard Worker assert(ok); \
3950*993b0882SAndroid Build Coastguard Worker errors += !ok; \
3951*993b0882SAndroid Build Coastguard Worker } while (0)
3952*993b0882SAndroid Build Coastguard Worker
3953*993b0882SAndroid Build Coastguard Worker #define IsAlive(x) do { alive += IsNonZero(x); } while (0)
3954*993b0882SAndroid Build Coastguard Worker
3955*993b0882SAndroid Build Coastguard Worker // After the following line is where the uses of "Check" and such will go.
3956*993b0882SAndroid Build Coastguard Worker static int index = 0;
3957*993b0882SAndroid Build Coastguard Worker if (offset == -1) { int alive = 0; IsAlive(farmhashmk::Hash32WithSeed(data, len++, SEED)); IsAlive(farmhashmk::Hash32(data, len++)); IsAlive(farmhashmk::Hash32(data, len++)); len -= 3; return alive > 0; }
3958*993b0882SAndroid Build Coastguard Worker Check(farmhashmk::Hash32WithSeed(data + offset, len, SEED));
3959*993b0882SAndroid Build Coastguard Worker Check(farmhashmk::Hash32(data + offset, len));
3960*993b0882SAndroid Build Coastguard Worker
3961*993b0882SAndroid Build Coastguard Worker return true;
3962*993b0882SAndroid Build Coastguard Worker #undef Check
3963*993b0882SAndroid Build Coastguard Worker #undef IsAlive
3964*993b0882SAndroid Build Coastguard Worker }
3965*993b0882SAndroid Build Coastguard Worker
RunTest()3966*993b0882SAndroid Build Coastguard Worker int RunTest() {
3967*993b0882SAndroid Build Coastguard Worker Setup();
3968*993b0882SAndroid Build Coastguard Worker int i = 0;
3969*993b0882SAndroid Build Coastguard Worker cout << "Running farmhashmkTest";
3970*993b0882SAndroid Build Coastguard Worker if (!Test(-1)) {
3971*993b0882SAndroid Build Coastguard Worker cout << "... Unavailable\n";
3972*993b0882SAndroid Build Coastguard Worker return NoteErrors();
3973*993b0882SAndroid Build Coastguard Worker }
3974*993b0882SAndroid Build Coastguard Worker // Good. The function is attempting to hash, so run the full test.
3975*993b0882SAndroid Build Coastguard Worker int errors_prior_to_test = errors;
3976*993b0882SAndroid Build Coastguard Worker for ( ; i < kTestSize - 1; i++) {
3977*993b0882SAndroid Build Coastguard Worker Test(i * i, i);
3978*993b0882SAndroid Build Coastguard Worker }
3979*993b0882SAndroid Build Coastguard Worker for ( ; i < kDataSize; i += i / 7) {
3980*993b0882SAndroid Build Coastguard Worker Test(0, i);
3981*993b0882SAndroid Build Coastguard Worker }
3982*993b0882SAndroid Build Coastguard Worker Test(0, kDataSize);
3983*993b0882SAndroid Build Coastguard Worker cout << (errors == errors_prior_to_test ? "... OK\n" : "... Failed\n");
3984*993b0882SAndroid Build Coastguard Worker return NoteErrors();
3985*993b0882SAndroid Build Coastguard Worker }
3986*993b0882SAndroid Build Coastguard Worker
3987*993b0882SAndroid Build Coastguard Worker #else
3988*993b0882SAndroid Build Coastguard Worker
3989*993b0882SAndroid Build Coastguard Worker // After the following line is where the code to print hash codes will go.
Dump(int offset,int len)3990*993b0882SAndroid Build Coastguard Worker void Dump(int offset, int len) {
3991*993b0882SAndroid Build Coastguard Worker cout << farmhashmk::Hash32WithSeed(data + offset, len, SEED) << "u," << endl;
3992*993b0882SAndroid Build Coastguard Worker cout << farmhashmk::Hash32(data + offset, len) << "u," << endl;
3993*993b0882SAndroid Build Coastguard Worker }
3994*993b0882SAndroid Build Coastguard Worker
3995*993b0882SAndroid Build Coastguard Worker #endif
3996*993b0882SAndroid Build Coastguard Worker
3997*993b0882SAndroid Build Coastguard Worker #undef SEED
3998*993b0882SAndroid Build Coastguard Worker #undef SEED1
3999*993b0882SAndroid Build Coastguard Worker #undef SEED0
4000*993b0882SAndroid Build Coastguard Worker
4001*993b0882SAndroid Build Coastguard Worker } // namespace farmhashmkTest
4002*993b0882SAndroid Build Coastguard Worker
4003*993b0882SAndroid Build Coastguard Worker #if TESTING
4004*993b0882SAndroid Build Coastguard Worker
4005*993b0882SAndroid Build Coastguard Worker static int farmhashmkTestResult = farmhashmkTest::RunTest();
4006*993b0882SAndroid Build Coastguard Worker
4007*993b0882SAndroid Build Coastguard Worker #else
main(int argc,char ** argv)4008*993b0882SAndroid Build Coastguard Worker int main(int argc, char** argv) {
4009*993b0882SAndroid Build Coastguard Worker Setup();
4010*993b0882SAndroid Build Coastguard Worker cout << "uint32_t expected[] = {\n";
4011*993b0882SAndroid Build Coastguard Worker int i = 0;
4012*993b0882SAndroid Build Coastguard Worker for ( ; i < kTestSize - 1; i++) {
4013*993b0882SAndroid Build Coastguard Worker farmhashmkTest::Dump(i * i, i);
4014*993b0882SAndroid Build Coastguard Worker }
4015*993b0882SAndroid Build Coastguard Worker for ( ; i < kDataSize; i += i / 7) {
4016*993b0882SAndroid Build Coastguard Worker farmhashmkTest::Dump(0, i);
4017*993b0882SAndroid Build Coastguard Worker }
4018*993b0882SAndroid Build Coastguard Worker farmhashmkTest::Dump(0, kDataSize);
4019*993b0882SAndroid Build Coastguard Worker cout << "};\n";
4020*993b0882SAndroid Build Coastguard Worker }
4021*993b0882SAndroid Build Coastguard Worker #endif
4022*993b0882SAndroid Build Coastguard Worker #ifndef FARMHASH_SELF_TEST_GUARD
4023*993b0882SAndroid Build Coastguard Worker #define FARMHASH_SELF_TEST_GUARD
4024*993b0882SAndroid Build Coastguard Worker #include <string.h>
4025*993b0882SAndroid Build Coastguard Worker #include <cstdio>
4026*993b0882SAndroid Build Coastguard Worker #include <iostream>
4027*993b0882SAndroid Build Coastguard Worker
4028*993b0882SAndroid Build Coastguard Worker using std::cout;
4029*993b0882SAndroid Build Coastguard Worker using std::cerr;
4030*993b0882SAndroid Build Coastguard Worker using std::endl;
4031*993b0882SAndroid Build Coastguard Worker using std::hex;
4032*993b0882SAndroid Build Coastguard Worker
4033*993b0882SAndroid Build Coastguard Worker static const uint64_t kSeed0 = 1234567;
4034*993b0882SAndroid Build Coastguard Worker static const uint64_t kSeed1 = k0;
4035*993b0882SAndroid Build Coastguard Worker static const int kDataSize = 1 << 20;
4036*993b0882SAndroid Build Coastguard Worker static const int kTestSize = 300;
4037*993b0882SAndroid Build Coastguard Worker #define kSeed128 Uint128(kSeed0, kSeed1)
4038*993b0882SAndroid Build Coastguard Worker
4039*993b0882SAndroid Build Coastguard Worker static char data[kDataSize];
4040*993b0882SAndroid Build Coastguard Worker
4041*993b0882SAndroid Build Coastguard Worker static int completed_self_tests = 0;
4042*993b0882SAndroid Build Coastguard Worker static int errors = 0;
4043*993b0882SAndroid Build Coastguard Worker
4044*993b0882SAndroid Build Coastguard Worker // Initialize data to pseudorandom values.
Setup()4045*993b0882SAndroid Build Coastguard Worker void Setup() {
4046*993b0882SAndroid Build Coastguard Worker if (completed_self_tests == 0) {
4047*993b0882SAndroid Build Coastguard Worker uint64_t a = 9;
4048*993b0882SAndroid Build Coastguard Worker uint64_t b = 777;
4049*993b0882SAndroid Build Coastguard Worker for (int i = 0; i < kDataSize; i++) {
4050*993b0882SAndroid Build Coastguard Worker a += b;
4051*993b0882SAndroid Build Coastguard Worker b += a;
4052*993b0882SAndroid Build Coastguard Worker a = (a ^ (a >> 41)) * k0;
4053*993b0882SAndroid Build Coastguard Worker b = (b ^ (b >> 41)) * k0 + i;
4054*993b0882SAndroid Build Coastguard Worker uint8_t u = b >> 37;
4055*993b0882SAndroid Build Coastguard Worker memcpy(data + i, &u, 1); // uint8_t -> char
4056*993b0882SAndroid Build Coastguard Worker }
4057*993b0882SAndroid Build Coastguard Worker }
4058*993b0882SAndroid Build Coastguard Worker }
4059*993b0882SAndroid Build Coastguard Worker
NoteErrors()4060*993b0882SAndroid Build Coastguard Worker int NoteErrors() {
4061*993b0882SAndroid Build Coastguard Worker #define NUM_SELF_TESTS 6
4062*993b0882SAndroid Build Coastguard Worker if (++completed_self_tests == NUM_SELF_TESTS)
4063*993b0882SAndroid Build Coastguard Worker std::exit(errors > 0);
4064*993b0882SAndroid Build Coastguard Worker return errors;
4065*993b0882SAndroid Build Coastguard Worker }
4066*993b0882SAndroid Build Coastguard Worker
IsNonZero(T x)4067*993b0882SAndroid Build Coastguard Worker template <typename T> inline bool IsNonZero(T x) {
4068*993b0882SAndroid Build Coastguard Worker return x != 0;
4069*993b0882SAndroid Build Coastguard Worker }
4070*993b0882SAndroid Build Coastguard Worker
IsNonZero(uint128_t x)4071*993b0882SAndroid Build Coastguard Worker template <> inline bool IsNonZero<uint128_t>(uint128_t x) {
4072*993b0882SAndroid Build Coastguard Worker return x != Uint128(0, 0);
4073*993b0882SAndroid Build Coastguard Worker }
4074*993b0882SAndroid Build Coastguard Worker
4075*993b0882SAndroid Build Coastguard Worker #endif // FARMHASH_SELF_TEST_GUARD
4076*993b0882SAndroid Build Coastguard Worker
4077*993b0882SAndroid Build Coastguard Worker namespace farmhashnaTest {
4078*993b0882SAndroid Build Coastguard Worker
CreateSeed(int offset,int salt)4079*993b0882SAndroid Build Coastguard Worker uint32_t CreateSeed(int offset, int salt) {
4080*993b0882SAndroid Build Coastguard Worker uint32_t h = static_cast<uint32_t>(salt & 0xffffffff);
4081*993b0882SAndroid Build Coastguard Worker h = h * c1;
4082*993b0882SAndroid Build Coastguard Worker h ^= (h >> 17);
4083*993b0882SAndroid Build Coastguard Worker h = h * c1;
4084*993b0882SAndroid Build Coastguard Worker h ^= (h >> 17);
4085*993b0882SAndroid Build Coastguard Worker h = h * c1;
4086*993b0882SAndroid Build Coastguard Worker h ^= (h >> 17);
4087*993b0882SAndroid Build Coastguard Worker h += static_cast<uint32_t>(offset & 0xffffffff);
4088*993b0882SAndroid Build Coastguard Worker h = h * c1;
4089*993b0882SAndroid Build Coastguard Worker h ^= (h >> 17);
4090*993b0882SAndroid Build Coastguard Worker h = h * c1;
4091*993b0882SAndroid Build Coastguard Worker h ^= (h >> 17);
4092*993b0882SAndroid Build Coastguard Worker h = h * c1;
4093*993b0882SAndroid Build Coastguard Worker h ^= (h >> 17);
4094*993b0882SAndroid Build Coastguard Worker return h;
4095*993b0882SAndroid Build Coastguard Worker }
4096*993b0882SAndroid Build Coastguard Worker
4097*993b0882SAndroid Build Coastguard Worker #undef SEED
4098*993b0882SAndroid Build Coastguard Worker #undef SEED1
4099*993b0882SAndroid Build Coastguard Worker #undef SEED0
4100*993b0882SAndroid Build Coastguard Worker #define SEED CreateSeed(offset, -1)
4101*993b0882SAndroid Build Coastguard Worker #define SEED0 CreateSeed(offset, 0)
4102*993b0882SAndroid Build Coastguard Worker #define SEED1 CreateSeed(offset, 1)
4103*993b0882SAndroid Build Coastguard Worker
4104*993b0882SAndroid Build Coastguard Worker #undef TESTING
4105*993b0882SAndroid Build Coastguard Worker #define TESTING 1
4106*993b0882SAndroid Build Coastguard Worker #if TESTING
4107*993b0882SAndroid Build Coastguard Worker uint32_t expected[] = {
4108*993b0882SAndroid Build Coastguard Worker 1140953930u, 861465670u,
4109*993b0882SAndroid Build Coastguard Worker 3277735313u, 2681724312u,
4110*993b0882SAndroid Build Coastguard Worker 2598464059u, 797982799u,
4111*993b0882SAndroid Build Coastguard Worker 890626835u, 800175912u,
4112*993b0882SAndroid Build Coastguard Worker 2603993599u, 921001710u,
4113*993b0882SAndroid Build Coastguard Worker 1410420968u, 2134990486u,
4114*993b0882SAndroid Build Coastguard Worker 3283896453u, 1867689945u,
4115*993b0882SAndroid Build Coastguard Worker 2914424215u, 2244477846u,
4116*993b0882SAndroid Build Coastguard Worker 255297188u, 2992121793u,
4117*993b0882SAndroid Build Coastguard Worker 1110588164u, 4186314283u,
4118*993b0882SAndroid Build Coastguard Worker 161451183u, 3943596029u,
4119*993b0882SAndroid Build Coastguard Worker 4019337850u, 452431531u,
4120*993b0882SAndroid Build Coastguard Worker 283198166u, 2741341286u,
4121*993b0882SAndroid Build Coastguard Worker 3379021470u, 2557197665u,
4122*993b0882SAndroid Build Coastguard Worker 299850021u, 2532580744u,
4123*993b0882SAndroid Build Coastguard Worker 452473466u, 1706958772u,
4124*993b0882SAndroid Build Coastguard Worker 1298374911u, 3099673830u,
4125*993b0882SAndroid Build Coastguard Worker 2199864459u, 3696623795u,
4126*993b0882SAndroid Build Coastguard Worker 236935126u, 2976578695u,
4127*993b0882SAndroid Build Coastguard Worker 4055299123u, 3281581178u,
4128*993b0882SAndroid Build Coastguard Worker 1053458494u, 1882212500u,
4129*993b0882SAndroid Build Coastguard Worker 2305012065u, 2169731866u,
4130*993b0882SAndroid Build Coastguard Worker 3456121707u, 275903667u,
4131*993b0882SAndroid Build Coastguard Worker 458884671u, 3033004529u,
4132*993b0882SAndroid Build Coastguard Worker 3058973506u, 2379411653u,
4133*993b0882SAndroid Build Coastguard Worker 1898235244u, 1402319660u,
4134*993b0882SAndroid Build Coastguard Worker 2700149065u, 2699376854u,
4135*993b0882SAndroid Build Coastguard Worker 147814787u, 720739346u,
4136*993b0882SAndroid Build Coastguard Worker 2433714046u, 4222949502u,
4137*993b0882SAndroid Build Coastguard Worker 4220361840u, 1712034059u,
4138*993b0882SAndroid Build Coastguard Worker 3425469811u, 3690733394u,
4139*993b0882SAndroid Build Coastguard Worker 4148372108u, 1330324210u,
4140*993b0882SAndroid Build Coastguard Worker 594028478u, 2921867846u,
4141*993b0882SAndroid Build Coastguard Worker 1635026870u, 192883107u,
4142*993b0882SAndroid Build Coastguard Worker 780716741u, 1728752234u,
4143*993b0882SAndroid Build Coastguard Worker 3280331829u, 326029180u,
4144*993b0882SAndroid Build Coastguard Worker 3969463346u, 1436364519u,
4145*993b0882SAndroid Build Coastguard Worker 393215742u, 3349570000u,
4146*993b0882SAndroid Build Coastguard Worker 3824583307u, 1612122221u,
4147*993b0882SAndroid Build Coastguard Worker 2859809759u, 3808705738u,
4148*993b0882SAndroid Build Coastguard Worker 1379537552u, 1646032583u,
4149*993b0882SAndroid Build Coastguard Worker 2233466664u, 1432476832u,
4150*993b0882SAndroid Build Coastguard Worker 4023053163u, 2650381482u,
4151*993b0882SAndroid Build Coastguard Worker 2052294713u, 3552092450u,
4152*993b0882SAndroid Build Coastguard Worker 1628777059u, 1499109081u,
4153*993b0882SAndroid Build Coastguard Worker 3476440786u, 3829307897u,
4154*993b0882SAndroid Build Coastguard Worker 2960536756u, 1554038301u,
4155*993b0882SAndroid Build Coastguard Worker 1145519619u, 3190844552u,
4156*993b0882SAndroid Build Coastguard Worker 2902102606u, 3600725550u,
4157*993b0882SAndroid Build Coastguard Worker 237495366u, 540224401u,
4158*993b0882SAndroid Build Coastguard Worker 65721842u, 489963606u,
4159*993b0882SAndroid Build Coastguard Worker 1448662590u, 397635823u,
4160*993b0882SAndroid Build Coastguard Worker 1596489240u, 1562872448u,
4161*993b0882SAndroid Build Coastguard Worker 1790705123u, 2128624475u,
4162*993b0882SAndroid Build Coastguard Worker 180854224u, 2604346966u,
4163*993b0882SAndroid Build Coastguard Worker 1435705557u, 1262831810u,
4164*993b0882SAndroid Build Coastguard Worker 155445229u, 1672724608u,
4165*993b0882SAndroid Build Coastguard Worker 1669465176u, 1341975128u,
4166*993b0882SAndroid Build Coastguard Worker 663607706u, 2077310004u,
4167*993b0882SAndroid Build Coastguard Worker 3610042449u, 1911523866u,
4168*993b0882SAndroid Build Coastguard Worker 1043692997u, 1454396064u,
4169*993b0882SAndroid Build Coastguard Worker 2563776023u, 294527927u,
4170*993b0882SAndroid Build Coastguard Worker 1099072299u, 1389770549u,
4171*993b0882SAndroid Build Coastguard Worker 703505868u, 678706990u,
4172*993b0882SAndroid Build Coastguard Worker 2952353448u, 2026137563u,
4173*993b0882SAndroid Build Coastguard Worker 3603803785u, 629449419u,
4174*993b0882SAndroid Build Coastguard Worker 1933894405u, 3043213226u,
4175*993b0882SAndroid Build Coastguard Worker 226132789u, 2489287368u,
4176*993b0882SAndroid Build Coastguard Worker 1552847036u, 645684964u,
4177*993b0882SAndroid Build Coastguard Worker 3828089804u, 3632594520u,
4178*993b0882SAndroid Build Coastguard Worker 187883449u, 230403464u,
4179*993b0882SAndroid Build Coastguard Worker 3151491850u, 3272648435u,
4180*993b0882SAndroid Build Coastguard Worker 3729087873u, 1303930448u,
4181*993b0882SAndroid Build Coastguard Worker 2002861219u, 165370827u,
4182*993b0882SAndroid Build Coastguard Worker 916494250u, 1230085527u,
4183*993b0882SAndroid Build Coastguard Worker 3103338579u, 3064290191u,
4184*993b0882SAndroid Build Coastguard Worker 3807265751u, 3628174014u,
4185*993b0882SAndroid Build Coastguard Worker 231181488u, 851743255u,
4186*993b0882SAndroid Build Coastguard Worker 2295806711u, 1781190011u,
4187*993b0882SAndroid Build Coastguard Worker 2988893883u, 1554380634u,
4188*993b0882SAndroid Build Coastguard Worker 1142264800u, 3667013118u,
4189*993b0882SAndroid Build Coastguard Worker 1968445277u, 315203929u,
4190*993b0882SAndroid Build Coastguard Worker 2638023604u, 2290487377u,
4191*993b0882SAndroid Build Coastguard Worker 732137533u, 1909203251u,
4192*993b0882SAndroid Build Coastguard Worker 440398219u, 1891630171u,
4193*993b0882SAndroid Build Coastguard Worker 1380301172u, 1498556724u,
4194*993b0882SAndroid Build Coastguard Worker 4072067757u, 4165088768u,
4195*993b0882SAndroid Build Coastguard Worker 4204318635u, 441430649u,
4196*993b0882SAndroid Build Coastguard Worker 3931792696u, 197618179u,
4197*993b0882SAndroid Build Coastguard Worker 956300927u, 914413116u,
4198*993b0882SAndroid Build Coastguard Worker 3010839769u, 2837339569u,
4199*993b0882SAndroid Build Coastguard Worker 2148126371u, 1913303225u,
4200*993b0882SAndroid Build Coastguard Worker 3074915312u, 3117299654u,
4201*993b0882SAndroid Build Coastguard Worker 4139181436u, 2993479124u,
4202*993b0882SAndroid Build Coastguard Worker 3178848746u, 1357272220u,
4203*993b0882SAndroid Build Coastguard Worker 1438494951u, 507436733u,
4204*993b0882SAndroid Build Coastguard Worker 667183474u, 2084369203u,
4205*993b0882SAndroid Build Coastguard Worker 3854939912u, 1413396341u,
4206*993b0882SAndroid Build Coastguard Worker 126024219u, 146044391u,
4207*993b0882SAndroid Build Coastguard Worker 1016656857u, 3022024459u,
4208*993b0882SAndroid Build Coastguard Worker 3254014218u, 429095991u,
4209*993b0882SAndroid Build Coastguard Worker 165589978u, 1578546616u,
4210*993b0882SAndroid Build Coastguard Worker 985653208u, 1718653828u,
4211*993b0882SAndroid Build Coastguard Worker 623071693u, 366414107u,
4212*993b0882SAndroid Build Coastguard Worker 249776086u, 1207522198u,
4213*993b0882SAndroid Build Coastguard Worker 3047342438u, 2991127487u,
4214*993b0882SAndroid Build Coastguard Worker 3120876698u, 1684583131u,
4215*993b0882SAndroid Build Coastguard Worker 46987739u, 1157614300u,
4216*993b0882SAndroid Build Coastguard Worker 863214540u, 1087193030u,
4217*993b0882SAndroid Build Coastguard Worker 199124911u, 520792961u,
4218*993b0882SAndroid Build Coastguard Worker 3614377032u, 586863115u,
4219*993b0882SAndroid Build Coastguard Worker 3331828431u, 1013201099u,
4220*993b0882SAndroid Build Coastguard Worker 1716848157u, 4033596884u,
4221*993b0882SAndroid Build Coastguard Worker 1164298657u, 4140791139u,
4222*993b0882SAndroid Build Coastguard Worker 1146169032u, 1434258493u,
4223*993b0882SAndroid Build Coastguard Worker 3824360466u, 3242407770u,
4224*993b0882SAndroid Build Coastguard Worker 3725511003u, 232064808u,
4225*993b0882SAndroid Build Coastguard Worker 872586426u, 762243036u,
4226*993b0882SAndroid Build Coastguard Worker 2736953692u, 816692935u,
4227*993b0882SAndroid Build Coastguard Worker 512845449u, 3748861010u,
4228*993b0882SAndroid Build Coastguard Worker 2266795890u, 3781899767u,
4229*993b0882SAndroid Build Coastguard Worker 4290630595u, 517646945u,
4230*993b0882SAndroid Build Coastguard Worker 22638523u, 648000590u,
4231*993b0882SAndroid Build Coastguard Worker 959214578u, 558910384u,
4232*993b0882SAndroid Build Coastguard Worker 1283799121u, 3047062993u,
4233*993b0882SAndroid Build Coastguard Worker 1024246061u, 4027776454u,
4234*993b0882SAndroid Build Coastguard Worker 3544509313u, 622325861u,
4235*993b0882SAndroid Build Coastguard Worker 834785312u, 382936554u,
4236*993b0882SAndroid Build Coastguard Worker 411505255u, 1973395102u,
4237*993b0882SAndroid Build Coastguard Worker 1825135056u, 2725923798u,
4238*993b0882SAndroid Build Coastguard Worker 580988377u, 2826990641u,
4239*993b0882SAndroid Build Coastguard Worker 3474970689u, 1029055034u,
4240*993b0882SAndroid Build Coastguard Worker 812546227u, 2506885666u,
4241*993b0882SAndroid Build Coastguard Worker 2584372201u, 1758123094u,
4242*993b0882SAndroid Build Coastguard Worker 589567754u, 325737734u,
4243*993b0882SAndroid Build Coastguard Worker 345313518u, 2022370576u,
4244*993b0882SAndroid Build Coastguard Worker 3886113119u, 3338548567u,
4245*993b0882SAndroid Build Coastguard Worker 257578986u, 3698087965u,
4246*993b0882SAndroid Build Coastguard Worker 1776047957u, 1771384107u,
4247*993b0882SAndroid Build Coastguard Worker 3604937815u, 3198590202u,
4248*993b0882SAndroid Build Coastguard Worker 2305332220u, 191910725u,
4249*993b0882SAndroid Build Coastguard Worker 4232136669u, 427759438u,
4250*993b0882SAndroid Build Coastguard Worker 4244322689u, 542201663u,
4251*993b0882SAndroid Build Coastguard Worker 3315355162u, 2135941665u,
4252*993b0882SAndroid Build Coastguard Worker 556609672u, 45845311u,
4253*993b0882SAndroid Build Coastguard Worker 1175961330u, 3948351189u,
4254*993b0882SAndroid Build Coastguard Worker 23075771u, 3252374102u,
4255*993b0882SAndroid Build Coastguard Worker 1634635545u, 4151937410u,
4256*993b0882SAndroid Build Coastguard Worker 713127376u, 1467786451u,
4257*993b0882SAndroid Build Coastguard Worker 663013031u, 3444053918u,
4258*993b0882SAndroid Build Coastguard Worker 2638154051u, 810082938u,
4259*993b0882SAndroid Build Coastguard Worker 3077742128u, 1062268187u,
4260*993b0882SAndroid Build Coastguard Worker 2115441882u, 4081398201u,
4261*993b0882SAndroid Build Coastguard Worker 3735739145u, 2794294783u,
4262*993b0882SAndroid Build Coastguard Worker 2335576331u, 2560479831u,
4263*993b0882SAndroid Build Coastguard Worker 1379288194u, 4225182569u,
4264*993b0882SAndroid Build Coastguard Worker 2442302747u, 3948961926u,
4265*993b0882SAndroid Build Coastguard Worker 3958366652u, 3067277639u,
4266*993b0882SAndroid Build Coastguard Worker 3667516477u, 1709989541u,
4267*993b0882SAndroid Build Coastguard Worker 1516711748u, 2339636583u,
4268*993b0882SAndroid Build Coastguard Worker 4188504038u, 59581167u,
4269*993b0882SAndroid Build Coastguard Worker 2725013602u, 3639843023u,
4270*993b0882SAndroid Build Coastguard Worker 2658147000u, 2643979752u,
4271*993b0882SAndroid Build Coastguard Worker 3758739543u, 4189944477u,
4272*993b0882SAndroid Build Coastguard Worker 2470483982u, 877580602u,
4273*993b0882SAndroid Build Coastguard Worker 2995362413u, 118817200u,
4274*993b0882SAndroid Build Coastguard Worker 3252925478u, 2062343506u,
4275*993b0882SAndroid Build Coastguard Worker 3981838403u, 3762572073u,
4276*993b0882SAndroid Build Coastguard Worker 1231633714u, 4168280671u,
4277*993b0882SAndroid Build Coastguard Worker 2931588131u, 3284356565u,
4278*993b0882SAndroid Build Coastguard Worker 1129162571u, 732225574u,
4279*993b0882SAndroid Build Coastguard Worker 4173605289u, 1407328702u,
4280*993b0882SAndroid Build Coastguard Worker 1677744031u, 3532596884u,
4281*993b0882SAndroid Build Coastguard Worker 3232041815u, 1652884780u,
4282*993b0882SAndroid Build Coastguard Worker 2256541290u, 3459463480u,
4283*993b0882SAndroid Build Coastguard Worker 3740979556u, 259034107u,
4284*993b0882SAndroid Build Coastguard Worker 2227121257u, 1426140634u,
4285*993b0882SAndroid Build Coastguard Worker 3606709555u, 3424793077u,
4286*993b0882SAndroid Build Coastguard Worker 315836068u, 3200749877u,
4287*993b0882SAndroid Build Coastguard Worker 1386256573u, 24035717u,
4288*993b0882SAndroid Build Coastguard Worker 2982018998u, 1811050648u,
4289*993b0882SAndroid Build Coastguard Worker 234531934u, 1115203611u,
4290*993b0882SAndroid Build Coastguard Worker 1598686658u, 3146815575u,
4291*993b0882SAndroid Build Coastguard Worker 1603559457u, 323296368u,
4292*993b0882SAndroid Build Coastguard Worker 2632963283u, 1778459926u,
4293*993b0882SAndroid Build Coastguard Worker 739944537u, 579625482u,
4294*993b0882SAndroid Build Coastguard Worker 3486330348u, 492621815u,
4295*993b0882SAndroid Build Coastguard Worker 1231665285u, 2457048126u,
4296*993b0882SAndroid Build Coastguard Worker 3903349120u, 389846205u,
4297*993b0882SAndroid Build Coastguard Worker 3355404249u, 3275550588u,
4298*993b0882SAndroid Build Coastguard Worker 1052645068u, 862072556u,
4299*993b0882SAndroid Build Coastguard Worker 2834153464u, 1481069623u,
4300*993b0882SAndroid Build Coastguard Worker 2657392572u, 4279236653u,
4301*993b0882SAndroid Build Coastguard Worker 1688445808u, 701920051u,
4302*993b0882SAndroid Build Coastguard Worker 3740748788u, 3388062747u,
4303*993b0882SAndroid Build Coastguard Worker 1873358321u, 2152785640u,
4304*993b0882SAndroid Build Coastguard Worker 883382081u, 1005815394u,
4305*993b0882SAndroid Build Coastguard Worker 1020177209u, 734239551u,
4306*993b0882SAndroid Build Coastguard Worker 2371453141u, 100326520u,
4307*993b0882SAndroid Build Coastguard Worker 3488500412u, 1279682138u,
4308*993b0882SAndroid Build Coastguard Worker 2610427744u, 49703572u,
4309*993b0882SAndroid Build Coastguard Worker 3026361211u, 605900428u,
4310*993b0882SAndroid Build Coastguard Worker 302392721u, 2509302188u,
4311*993b0882SAndroid Build Coastguard Worker 1416453607u, 2815915291u,
4312*993b0882SAndroid Build Coastguard Worker 1862819968u, 519710058u,
4313*993b0882SAndroid Build Coastguard Worker 2450888314u, 4017598378u,
4314*993b0882SAndroid Build Coastguard Worker 937074653u, 3035635454u,
4315*993b0882SAndroid Build Coastguard Worker 1590230729u, 3268013438u,
4316*993b0882SAndroid Build Coastguard Worker 2710029305u, 12886044u,
4317*993b0882SAndroid Build Coastguard Worker 3711259084u, 2627383582u,
4318*993b0882SAndroid Build Coastguard Worker 3895772404u, 648534979u,
4319*993b0882SAndroid Build Coastguard Worker 260307902u, 855990313u,
4320*993b0882SAndroid Build Coastguard Worker 3669691805u, 263366740u,
4321*993b0882SAndroid Build Coastguard Worker 2938543471u, 414331688u,
4322*993b0882SAndroid Build Coastguard Worker 3080542944u, 3405007814u,
4323*993b0882SAndroid Build Coastguard Worker 3565059103u, 1190977418u,
4324*993b0882SAndroid Build Coastguard Worker 390836981u, 1606450012u,
4325*993b0882SAndroid Build Coastguard Worker 2649808239u, 2514169310u,
4326*993b0882SAndroid Build Coastguard Worker 2747519432u, 4129538640u,
4327*993b0882SAndroid Build Coastguard Worker 1721522849u, 492099164u,
4328*993b0882SAndroid Build Coastguard Worker 792990594u, 3625507637u,
4329*993b0882SAndroid Build Coastguard Worker 2271095827u, 2993032712u,
4330*993b0882SAndroid Build Coastguard Worker 2302363854u, 4013112951u,
4331*993b0882SAndroid Build Coastguard Worker 1111617969u, 2183845740u,
4332*993b0882SAndroid Build Coastguard Worker 795918276u, 1116991810u,
4333*993b0882SAndroid Build Coastguard Worker 3110898804u, 3963062126u,
4334*993b0882SAndroid Build Coastguard Worker 2737064702u, 462795667u,
4335*993b0882SAndroid Build Coastguard Worker 937372240u, 1343017609u,
4336*993b0882SAndroid Build Coastguard Worker 1091041189u, 2790555455u,
4337*993b0882SAndroid Build Coastguard Worker 277024217u, 25485284u,
4338*993b0882SAndroid Build Coastguard Worker 1166522068u, 1623631848u,
4339*993b0882SAndroid Build Coastguard Worker 241727183u, 2836158787u,
4340*993b0882SAndroid Build Coastguard Worker 3112996740u, 573836428u,
4341*993b0882SAndroid Build Coastguard Worker 2721658101u, 1937681565u,
4342*993b0882SAndroid Build Coastguard Worker 4175169209u, 3190765433u,
4343*993b0882SAndroid Build Coastguard Worker 1970000788u, 1668258120u,
4344*993b0882SAndroid Build Coastguard Worker 114616703u, 954762543u,
4345*993b0882SAndroid Build Coastguard Worker 199237753u, 4094644498u,
4346*993b0882SAndroid Build Coastguard Worker 2522281978u, 732086117u,
4347*993b0882SAndroid Build Coastguard Worker 1756889687u, 2936126607u,
4348*993b0882SAndroid Build Coastguard Worker 2437031370u, 4103143808u,
4349*993b0882SAndroid Build Coastguard Worker 3883389541u, 3171090854u,
4350*993b0882SAndroid Build Coastguard Worker 2483004780u, 1927385370u,
4351*993b0882SAndroid Build Coastguard Worker 2360538162u, 2740855009u,
4352*993b0882SAndroid Build Coastguard Worker 4241185118u, 1492209542u,
4353*993b0882SAndroid Build Coastguard Worker 1672737098u, 2148675559u,
4354*993b0882SAndroid Build Coastguard Worker 1789864670u, 2434313103u,
4355*993b0882SAndroid Build Coastguard Worker 2319172611u, 2760941207u,
4356*993b0882SAndroid Build Coastguard Worker 2636210123u, 1338083267u,
4357*993b0882SAndroid Build Coastguard Worker 1128080590u, 822806371u,
4358*993b0882SAndroid Build Coastguard Worker 1199583556u, 314727461u,
4359*993b0882SAndroid Build Coastguard Worker 1335160250u, 2084630531u,
4360*993b0882SAndroid Build Coastguard Worker 1156261526u, 316766066u,
4361*993b0882SAndroid Build Coastguard Worker 112090465u, 3129033323u,
4362*993b0882SAndroid Build Coastguard Worker 2746885618u, 636616055u,
4363*993b0882SAndroid Build Coastguard Worker 2582210744u, 1721064910u,
4364*993b0882SAndroid Build Coastguard Worker 3468394263u, 470463518u,
4365*993b0882SAndroid Build Coastguard Worker 2076016059u, 408721884u,
4366*993b0882SAndroid Build Coastguard Worker 2121041886u, 378460278u,
4367*993b0882SAndroid Build Coastguard Worker 1915948002u, 357324860u,
4368*993b0882SAndroid Build Coastguard Worker 2301682622u, 2691859523u,
4369*993b0882SAndroid Build Coastguard Worker 1869756364u, 2429314418u,
4370*993b0882SAndroid Build Coastguard Worker 2193146527u, 1185564327u,
4371*993b0882SAndroid Build Coastguard Worker 2614088922u, 1975527044u,
4372*993b0882SAndroid Build Coastguard Worker 919067651u, 2855948894u,
4373*993b0882SAndroid Build Coastguard Worker 3662539576u, 1943802836u,
4374*993b0882SAndroid Build Coastguard Worker 3529473373u, 1490330107u,
4375*993b0882SAndroid Build Coastguard Worker 366036094u, 3384241033u,
4376*993b0882SAndroid Build Coastguard Worker 4276268604u, 448403661u,
4377*993b0882SAndroid Build Coastguard Worker 4271796078u, 1910401882u,
4378*993b0882SAndroid Build Coastguard Worker 3077107698u, 299427366u,
4379*993b0882SAndroid Build Coastguard Worker 2035665349u, 3201262636u,
4380*993b0882SAndroid Build Coastguard Worker 3738454258u, 2554452696u,
4381*993b0882SAndroid Build Coastguard Worker 3588997135u, 3363895827u,
4382*993b0882SAndroid Build Coastguard Worker 1267505995u, 1852004679u,
4383*993b0882SAndroid Build Coastguard Worker 2237827073u, 2803250686u,
4384*993b0882SAndroid Build Coastguard Worker 3468044908u, 2143572850u,
4385*993b0882SAndroid Build Coastguard Worker 1728158656u, 1022551180u,
4386*993b0882SAndroid Build Coastguard Worker 1996680960u, 839529273u,
4387*993b0882SAndroid Build Coastguard Worker 2400647871u, 2201096054u,
4388*993b0882SAndroid Build Coastguard Worker 3606433628u, 2597259793u,
4389*993b0882SAndroid Build Coastguard Worker 3544595875u, 3909443124u,
4390*993b0882SAndroid Build Coastguard Worker 819278607u, 3447346709u,
4391*993b0882SAndroid Build Coastguard Worker 806136613u, 2711436388u,
4392*993b0882SAndroid Build Coastguard Worker 3656063205u, 837475154u,
4393*993b0882SAndroid Build Coastguard Worker 694525336u, 4070212073u,
4394*993b0882SAndroid Build Coastguard Worker 4011303412u, 1068395209u,
4395*993b0882SAndroid Build Coastguard Worker 438095290u, 484603494u,
4396*993b0882SAndroid Build Coastguard Worker 2673730227u, 737767009u,
4397*993b0882SAndroid Build Coastguard Worker 642310823u, 3914002299u,
4398*993b0882SAndroid Build Coastguard Worker 308425103u, 268427550u,
4399*993b0882SAndroid Build Coastguard Worker 1334387085u, 4069797497u,
4400*993b0882SAndroid Build Coastguard Worker 4280783219u, 2914011058u,
4401*993b0882SAndroid Build Coastguard Worker 4243643405u, 2849988118u,
4402*993b0882SAndroid Build Coastguard Worker 2504230175u, 1817156623u,
4403*993b0882SAndroid Build Coastguard Worker 2804200483u, 3406991497u,
4404*993b0882SAndroid Build Coastguard Worker 2948254999u, 2102063419u,
4405*993b0882SAndroid Build Coastguard Worker 1071272117u, 514889942u,
4406*993b0882SAndroid Build Coastguard Worker 571972433u, 1246595599u,
4407*993b0882SAndroid Build Coastguard Worker 1735616066u, 1539151988u,
4408*993b0882SAndroid Build Coastguard Worker 1230831543u, 277987182u,
4409*993b0882SAndroid Build Coastguard Worker 4269526481u, 991511607u,
4410*993b0882SAndroid Build Coastguard Worker 95237878u, 2005032160u,
4411*993b0882SAndroid Build Coastguard Worker 1291113144u, 626619670u,
4412*993b0882SAndroid Build Coastguard Worker 3560835907u, 164940926u,
4413*993b0882SAndroid Build Coastguard Worker 1433635018u, 116647396u,
4414*993b0882SAndroid Build Coastguard Worker 3039097112u, 2868163232u,
4415*993b0882SAndroid Build Coastguard Worker 1141645918u, 1764165478u,
4416*993b0882SAndroid Build Coastguard Worker 881378302u, 2159170082u,
4417*993b0882SAndroid Build Coastguard Worker 2953647681u, 1011320066u,
4418*993b0882SAndroid Build Coastguard Worker 184856151u, 1723308975u,
4419*993b0882SAndroid Build Coastguard Worker 336034862u, 2017579106u,
4420*993b0882SAndroid Build Coastguard Worker 1476681709u, 147523618u,
4421*993b0882SAndroid Build Coastguard Worker 3896252223u, 2264728166u,
4422*993b0882SAndroid Build Coastguard Worker 944743644u, 1694443528u,
4423*993b0882SAndroid Build Coastguard Worker 2690700128u, 1947321519u,
4424*993b0882SAndroid Build Coastguard Worker 735478508u, 4058183171u,
4425*993b0882SAndroid Build Coastguard Worker 260177668u, 505662155u,
4426*993b0882SAndroid Build Coastguard Worker 2391691262u, 1920739747u,
4427*993b0882SAndroid Build Coastguard Worker 3216960415u, 1898176786u,
4428*993b0882SAndroid Build Coastguard Worker 3722741628u, 1511077569u,
4429*993b0882SAndroid Build Coastguard Worker 449636564u, 983350414u,
4430*993b0882SAndroid Build Coastguard Worker 2580237367u, 2055059789u,
4431*993b0882SAndroid Build Coastguard Worker 1103819072u, 2089123665u,
4432*993b0882SAndroid Build Coastguard Worker 3873755579u, 2718467458u,
4433*993b0882SAndroid Build Coastguard Worker 3124338704u, 3204250304u,
4434*993b0882SAndroid Build Coastguard Worker 2475035432u, 1120017626u,
4435*993b0882SAndroid Build Coastguard Worker 3873758287u, 1982999824u,
4436*993b0882SAndroid Build Coastguard Worker 2950794582u, 780634378u,
4437*993b0882SAndroid Build Coastguard Worker 2842141483u, 4029205195u,
4438*993b0882SAndroid Build Coastguard Worker 1656892865u, 3330993377u,
4439*993b0882SAndroid Build Coastguard Worker 80890710u, 1953796601u,
4440*993b0882SAndroid Build Coastguard Worker 3873078673u, 136118734u,
4441*993b0882SAndroid Build Coastguard Worker 2317676604u, 4199091610u,
4442*993b0882SAndroid Build Coastguard Worker 1864448181u, 3063437608u,
4443*993b0882SAndroid Build Coastguard Worker 1699452298u, 1403506686u,
4444*993b0882SAndroid Build Coastguard Worker 1513069466u, 2348491299u,
4445*993b0882SAndroid Build Coastguard Worker 4273657745u, 4055855649u,
4446*993b0882SAndroid Build Coastguard Worker 1805475756u, 2562064338u,
4447*993b0882SAndroid Build Coastguard Worker 973124563u, 4197091358u,
4448*993b0882SAndroid Build Coastguard Worker 172861513u, 2858726767u,
4449*993b0882SAndroid Build Coastguard Worker 4271866024u, 3071338162u,
4450*993b0882SAndroid Build Coastguard Worker 3590386266u, 2328277259u,
4451*993b0882SAndroid Build Coastguard Worker 1096050703u, 1189614342u,
4452*993b0882SAndroid Build Coastguard Worker 459509140u, 771592405u,
4453*993b0882SAndroid Build Coastguard Worker 817999971u, 3740825152u,
4454*993b0882SAndroid Build Coastguard Worker 520400189u, 1941874618u,
4455*993b0882SAndroid Build Coastguard Worker 185232757u, 4032960199u,
4456*993b0882SAndroid Build Coastguard Worker 3928245258u, 3527721294u,
4457*993b0882SAndroid Build Coastguard Worker 1301118856u, 752188080u,
4458*993b0882SAndroid Build Coastguard Worker 3512945009u, 308584855u,
4459*993b0882SAndroid Build Coastguard Worker 2105373972u, 752872278u,
4460*993b0882SAndroid Build Coastguard Worker 3823368815u, 3760952096u,
4461*993b0882SAndroid Build Coastguard Worker 4250142168u, 2565680167u,
4462*993b0882SAndroid Build Coastguard Worker 3646354146u, 1259957455u,
4463*993b0882SAndroid Build Coastguard Worker 1085857127u, 3471066607u,
4464*993b0882SAndroid Build Coastguard Worker 38924274u, 3770488806u,
4465*993b0882SAndroid Build Coastguard Worker 1083869477u, 3312508103u,
4466*993b0882SAndroid Build Coastguard Worker 71956383u, 3738784936u,
4467*993b0882SAndroid Build Coastguard Worker 3099963860u, 1255084262u,
4468*993b0882SAndroid Build Coastguard Worker 4286969992u, 3621849251u,
4469*993b0882SAndroid Build Coastguard Worker 1190908967u, 1831557743u,
4470*993b0882SAndroid Build Coastguard Worker 2363435042u, 54945052u,
4471*993b0882SAndroid Build Coastguard Worker 4059585566u, 4023974274u,
4472*993b0882SAndroid Build Coastguard Worker 1788578453u, 3442180039u,
4473*993b0882SAndroid Build Coastguard Worker 2534883189u, 2432427547u,
4474*993b0882SAndroid Build Coastguard Worker 3909757989u, 731996369u,
4475*993b0882SAndroid Build Coastguard Worker 4168347425u, 1356028512u,
4476*993b0882SAndroid Build Coastguard Worker 2741583197u, 1280920000u,
4477*993b0882SAndroid Build Coastguard Worker 312887059u, 3259015297u,
4478*993b0882SAndroid Build Coastguard Worker 3946278527u, 4135481831u,
4479*993b0882SAndroid Build Coastguard Worker 1281043691u, 1121403845u,
4480*993b0882SAndroid Build Coastguard Worker 3312292477u, 1819941269u,
4481*993b0882SAndroid Build Coastguard Worker 1741932545u, 3293015483u,
4482*993b0882SAndroid Build Coastguard Worker 2127558730u, 713121337u,
4483*993b0882SAndroid Build Coastguard Worker 2635469238u, 486003418u,
4484*993b0882SAndroid Build Coastguard Worker 4015067527u, 2976737859u,
4485*993b0882SAndroid Build Coastguard Worker 2108187161u, 927011680u,
4486*993b0882SAndroid Build Coastguard Worker 1970188338u, 4177613234u,
4487*993b0882SAndroid Build Coastguard Worker 1799789551u, 2118505126u,
4488*993b0882SAndroid Build Coastguard Worker 4134691985u, 1958963937u,
4489*993b0882SAndroid Build Coastguard Worker 1929210029u, 2555835851u,
4490*993b0882SAndroid Build Coastguard Worker 2768832862u, 910892050u,
4491*993b0882SAndroid Build Coastguard Worker 2567532373u, 4075249328u,
4492*993b0882SAndroid Build Coastguard Worker 86689814u, 3726640307u,
4493*993b0882SAndroid Build Coastguard Worker 1392137718u, 1240000030u,
4494*993b0882SAndroid Build Coastguard Worker 4104757832u, 3026358429u,
4495*993b0882SAndroid Build Coastguard Worker 313797689u, 1435798509u,
4496*993b0882SAndroid Build Coastguard Worker 3101500919u, 1241665335u,
4497*993b0882SAndroid Build Coastguard Worker 3573008472u, 3615577014u,
4498*993b0882SAndroid Build Coastguard Worker 3767659003u, 3134294021u,
4499*993b0882SAndroid Build Coastguard Worker 4063565523u, 2296824134u,
4500*993b0882SAndroid Build Coastguard Worker 1541946015u, 3087190425u,
4501*993b0882SAndroid Build Coastguard Worker 2693152531u, 2199672572u,
4502*993b0882SAndroid Build Coastguard Worker 2123763822u, 1034244398u,
4503*993b0882SAndroid Build Coastguard Worker 857839960u, 2515339233u,
4504*993b0882SAndroid Build Coastguard Worker 2228007483u, 1628096047u,
4505*993b0882SAndroid Build Coastguard Worker 2116502287u, 2502657424u,
4506*993b0882SAndroid Build Coastguard Worker 2809830736u, 460237542u,
4507*993b0882SAndroid Build Coastguard Worker 450205998u, 3646921704u,
4508*993b0882SAndroid Build Coastguard Worker 3818199357u, 1808504491u,
4509*993b0882SAndroid Build Coastguard Worker 1950698961u, 2069753399u,
4510*993b0882SAndroid Build Coastguard Worker 3657033172u, 3734547671u,
4511*993b0882SAndroid Build Coastguard Worker 4067859590u, 3292597295u,
4512*993b0882SAndroid Build Coastguard Worker 1106466069u, 356742959u,
4513*993b0882SAndroid Build Coastguard Worker 2469567432u, 3495418823u,
4514*993b0882SAndroid Build Coastguard Worker 183440071u, 3248055817u,
4515*993b0882SAndroid Build Coastguard Worker 3662626864u, 1750561299u,
4516*993b0882SAndroid Build Coastguard Worker 3926138664u, 4088592524u,
4517*993b0882SAndroid Build Coastguard Worker 567122118u, 3810297651u,
4518*993b0882SAndroid Build Coastguard Worker 992181339u, 3384018814u,
4519*993b0882SAndroid Build Coastguard Worker 3272124369u, 3177596743u,
4520*993b0882SAndroid Build Coastguard Worker 320086295u, 2316548367u,
4521*993b0882SAndroid Build Coastguard Worker 100741310u, 451656820u,
4522*993b0882SAndroid Build Coastguard Worker 4086604273u, 3759628395u,
4523*993b0882SAndroid Build Coastguard Worker 2553391092u, 1745659881u,
4524*993b0882SAndroid Build Coastguard Worker 3650357479u, 2390172694u,
4525*993b0882SAndroid Build Coastguard Worker 330172533u, 767377322u,
4526*993b0882SAndroid Build Coastguard Worker 526742034u, 4102497288u,
4527*993b0882SAndroid Build Coastguard Worker 2088767754u, 164402616u,
4528*993b0882SAndroid Build Coastguard Worker 2482632320u, 2352347393u,
4529*993b0882SAndroid Build Coastguard Worker 1873658044u, 3861555476u,
4530*993b0882SAndroid Build Coastguard Worker 2751052984u, 1767810825u,
4531*993b0882SAndroid Build Coastguard Worker 20037241u, 545143220u,
4532*993b0882SAndroid Build Coastguard Worker 2594532522u, 472304191u,
4533*993b0882SAndroid Build Coastguard Worker 3441135892u, 3323383489u,
4534*993b0882SAndroid Build Coastguard Worker 258785117u, 2977745165u,
4535*993b0882SAndroid Build Coastguard Worker 2781737565u, 2963590112u,
4536*993b0882SAndroid Build Coastguard Worker 2756998822u, 207428029u,
4537*993b0882SAndroid Build Coastguard Worker 2581558559u, 3824717027u,
4538*993b0882SAndroid Build Coastguard Worker 1258619503u, 3472047571u,
4539*993b0882SAndroid Build Coastguard Worker 2648427775u, 2360400900u,
4540*993b0882SAndroid Build Coastguard Worker 2393763818u, 2332399088u,
4541*993b0882SAndroid Build Coastguard Worker 3932701729u, 884421165u,
4542*993b0882SAndroid Build Coastguard Worker 1396468647u, 1377764574u,
4543*993b0882SAndroid Build Coastguard Worker 4061795938u, 1559119087u,
4544*993b0882SAndroid Build Coastguard Worker 3343596838u, 3604258095u,
4545*993b0882SAndroid Build Coastguard Worker 1435134775u, 1099809675u,
4546*993b0882SAndroid Build Coastguard Worker 908163739u, 1418405656u,
4547*993b0882SAndroid Build Coastguard Worker 368446627u, 3741651161u,
4548*993b0882SAndroid Build Coastguard Worker 3374512975u, 3542220540u,
4549*993b0882SAndroid Build Coastguard Worker 3244772570u, 200009340u,
4550*993b0882SAndroid Build Coastguard Worker 3198975081u, 2521038253u,
4551*993b0882SAndroid Build Coastguard Worker 4081637863u, 337070226u,
4552*993b0882SAndroid Build Coastguard Worker 3235259030u, 3897262827u,
4553*993b0882SAndroid Build Coastguard Worker 736956644u, 641040550u,
4554*993b0882SAndroid Build Coastguard Worker 644850146u, 1306761320u,
4555*993b0882SAndroid Build Coastguard Worker 4219448634u, 193750500u,
4556*993b0882SAndroid Build Coastguard Worker 3293278106u, 1383997679u,
4557*993b0882SAndroid Build Coastguard Worker 1242645122u, 4109252858u,
4558*993b0882SAndroid Build Coastguard Worker 450747727u, 3716617561u,
4559*993b0882SAndroid Build Coastguard Worker 362725793u, 2252520167u,
4560*993b0882SAndroid Build Coastguard Worker 3377483696u, 1788337208u,
4561*993b0882SAndroid Build Coastguard Worker 8130777u, 3226734120u,
4562*993b0882SAndroid Build Coastguard Worker 759239140u, 1012411364u,
4563*993b0882SAndroid Build Coastguard Worker 1658628529u, 2911512007u,
4564*993b0882SAndroid Build Coastguard Worker 1002580201u, 1681898320u,
4565*993b0882SAndroid Build Coastguard Worker 3039016929u, 4294520281u,
4566*993b0882SAndroid Build Coastguard Worker 367022558u, 3071359622u,
4567*993b0882SAndroid Build Coastguard Worker 3205848570u, 152989999u,
4568*993b0882SAndroid Build Coastguard Worker 3839042136u, 2357687350u,
4569*993b0882SAndroid Build Coastguard Worker 4273132307u, 3898950547u,
4570*993b0882SAndroid Build Coastguard Worker 1176841812u, 1314157485u,
4571*993b0882SAndroid Build Coastguard Worker 75443951u, 1027027239u,
4572*993b0882SAndroid Build Coastguard Worker 1858986613u, 2040551642u,
4573*993b0882SAndroid Build Coastguard Worker 36574105u, 2603059541u,
4574*993b0882SAndroid Build Coastguard Worker 3456147251u, 2137668425u,
4575*993b0882SAndroid Build Coastguard Worker 4077477194u, 3565689036u,
4576*993b0882SAndroid Build Coastguard Worker 491832241u, 363703593u,
4577*993b0882SAndroid Build Coastguard Worker 2579177168u, 3589545214u,
4578*993b0882SAndroid Build Coastguard Worker 265993036u, 1864569342u,
4579*993b0882SAndroid Build Coastguard Worker 4149035573u, 3189253455u,
4580*993b0882SAndroid Build Coastguard Worker 1072259310u, 3153745937u,
4581*993b0882SAndroid Build Coastguard Worker 923017956u, 490608221u,
4582*993b0882SAndroid Build Coastguard Worker 855846773u, 845706553u,
4583*993b0882SAndroid Build Coastguard Worker 1018226240u, 1604548872u,
4584*993b0882SAndroid Build Coastguard Worker 3833372385u, 3287246572u,
4585*993b0882SAndroid Build Coastguard Worker 2757959551u, 2452872151u,
4586*993b0882SAndroid Build Coastguard Worker 1553870564u, 1713154780u,
4587*993b0882SAndroid Build Coastguard Worker 2649450292u, 500120236u,
4588*993b0882SAndroid Build Coastguard Worker 84251717u, 661869670u,
4589*993b0882SAndroid Build Coastguard Worker 1444911517u, 2489716881u,
4590*993b0882SAndroid Build Coastguard Worker 2810524030u, 1561519055u,
4591*993b0882SAndroid Build Coastguard Worker 3884088359u, 2509890699u,
4592*993b0882SAndroid Build Coastguard Worker 4247155916u, 1005636939u,
4593*993b0882SAndroid Build Coastguard Worker 3224066062u, 2774151984u,
4594*993b0882SAndroid Build Coastguard Worker 2035978240u, 2514910366u,
4595*993b0882SAndroid Build Coastguard Worker 1478837908u, 3144450144u,
4596*993b0882SAndroid Build Coastguard Worker 2107011431u, 96459446u,
4597*993b0882SAndroid Build Coastguard Worker 3587732908u, 2389230590u,
4598*993b0882SAndroid Build Coastguard Worker 3287635953u, 250533792u,
4599*993b0882SAndroid Build Coastguard Worker 1235983679u, 4237425634u,
4600*993b0882SAndroid Build Coastguard Worker 3704645833u, 3882376657u,
4601*993b0882SAndroid Build Coastguard Worker 2976369049u, 1187061987u,
4602*993b0882SAndroid Build Coastguard Worker 276949224u, 4100839753u,
4603*993b0882SAndroid Build Coastguard Worker 1698347543u, 1629662314u,
4604*993b0882SAndroid Build Coastguard Worker 1556151829u, 3784939568u,
4605*993b0882SAndroid Build Coastguard Worker 427484362u, 4246879223u,
4606*993b0882SAndroid Build Coastguard Worker 3155311770u, 4285163791u,
4607*993b0882SAndroid Build Coastguard Worker 1693376813u, 124492786u,
4608*993b0882SAndroid Build Coastguard Worker 1858777639u, 3476334357u,
4609*993b0882SAndroid Build Coastguard Worker 1941442701u, 1121980173u,
4610*993b0882SAndroid Build Coastguard Worker 3485932087u, 820852908u,
4611*993b0882SAndroid Build Coastguard Worker 358032121u, 2511026735u,
4612*993b0882SAndroid Build Coastguard Worker 1873607283u, 2556067450u,
4613*993b0882SAndroid Build Coastguard Worker 2248275536u, 1528632094u,
4614*993b0882SAndroid Build Coastguard Worker 1535473864u, 556796152u,
4615*993b0882SAndroid Build Coastguard Worker 1499201704u, 1472623890u,
4616*993b0882SAndroid Build Coastguard Worker 1526518503u, 3692729434u,
4617*993b0882SAndroid Build Coastguard Worker 1476438092u, 2913077464u,
4618*993b0882SAndroid Build Coastguard Worker 335109599u, 2167614601u,
4619*993b0882SAndroid Build Coastguard Worker 4121131078u, 3158127917u,
4620*993b0882SAndroid Build Coastguard Worker 3051522276u, 4046477658u,
4621*993b0882SAndroid Build Coastguard Worker 2857717851u, 1863977403u,
4622*993b0882SAndroid Build Coastguard Worker 1341023343u, 692059110u,
4623*993b0882SAndroid Build Coastguard Worker 1802040304u, 990407433u,
4624*993b0882SAndroid Build Coastguard Worker 3285847572u, 319814144u,
4625*993b0882SAndroid Build Coastguard Worker 561105582u, 1540183799u,
4626*993b0882SAndroid Build Coastguard Worker 4052924496u, 2926590471u,
4627*993b0882SAndroid Build Coastguard Worker 2244539806u, 439121871u,
4628*993b0882SAndroid Build Coastguard Worker 3317903224u, 3178387550u,
4629*993b0882SAndroid Build Coastguard Worker 4265214507u, 82077489u,
4630*993b0882SAndroid Build Coastguard Worker 1978918971u, 4279668976u,
4631*993b0882SAndroid Build Coastguard Worker 128732476u, 2853224222u,
4632*993b0882SAndroid Build Coastguard Worker 464407878u, 4190838199u,
4633*993b0882SAndroid Build Coastguard Worker 997819001u, 3250520802u,
4634*993b0882SAndroid Build Coastguard Worker 2330081301u, 4095846095u,
4635*993b0882SAndroid Build Coastguard Worker 733509243u, 1583801700u,
4636*993b0882SAndroid Build Coastguard Worker 722314527u, 3552883023u,
4637*993b0882SAndroid Build Coastguard Worker 1403784280u, 432327540u,
4638*993b0882SAndroid Build Coastguard Worker 1877837196u, 3912423882u,
4639*993b0882SAndroid Build Coastguard Worker 505219998u, 696031431u,
4640*993b0882SAndroid Build Coastguard Worker 908238873u, 4189387259u,
4641*993b0882SAndroid Build Coastguard Worker 8759461u, 2540185277u,
4642*993b0882SAndroid Build Coastguard Worker 3385159748u, 381355877u,
4643*993b0882SAndroid Build Coastguard Worker 2519951681u, 1679786240u,
4644*993b0882SAndroid Build Coastguard Worker 2019419351u, 4051584612u,
4645*993b0882SAndroid Build Coastguard Worker 1933923923u, 3768201861u,
4646*993b0882SAndroid Build Coastguard Worker 1670133081u, 3454981037u,
4647*993b0882SAndroid Build Coastguard Worker 700836153u, 1675560450u,
4648*993b0882SAndroid Build Coastguard Worker 371560700u, 338262316u,
4649*993b0882SAndroid Build Coastguard Worker 847351840u, 2222395828u,
4650*993b0882SAndroid Build Coastguard Worker 3130433948u, 405251683u,
4651*993b0882SAndroid Build Coastguard Worker 3037574880u, 184098830u,
4652*993b0882SAndroid Build Coastguard Worker 453340528u, 1385561439u,
4653*993b0882SAndroid Build Coastguard Worker 2224044848u, 4071581802u,
4654*993b0882SAndroid Build Coastguard Worker 1431235296u, 5570097u,
4655*993b0882SAndroid Build Coastguard Worker 570114376u, 2287305551u,
4656*993b0882SAndroid Build Coastguard Worker 2272418128u, 803575837u,
4657*993b0882SAndroid Build Coastguard Worker 3943113491u, 414959787u,
4658*993b0882SAndroid Build Coastguard Worker 708083137u, 2452657767u,
4659*993b0882SAndroid Build Coastguard Worker 4019147902u, 3841480082u,
4660*993b0882SAndroid Build Coastguard Worker 3791794715u, 2965956183u,
4661*993b0882SAndroid Build Coastguard Worker 2763690963u, 2350937598u,
4662*993b0882SAndroid Build Coastguard Worker 3424361375u, 779434428u,
4663*993b0882SAndroid Build Coastguard Worker 1274947212u, 686105485u,
4664*993b0882SAndroid Build Coastguard Worker 3426668051u, 3692865672u,
4665*993b0882SAndroid Build Coastguard Worker 3057021940u, 2285701422u,
4666*993b0882SAndroid Build Coastguard Worker 349809124u, 1379278508u,
4667*993b0882SAndroid Build Coastguard Worker 3623750518u, 215970497u,
4668*993b0882SAndroid Build Coastguard Worker 1783152480u, 823305654u,
4669*993b0882SAndroid Build Coastguard Worker 216118434u, 1787189830u,
4670*993b0882SAndroid Build Coastguard Worker 3692048450u, 2272612521u,
4671*993b0882SAndroid Build Coastguard Worker 3032187389u, 4159715581u,
4672*993b0882SAndroid Build Coastguard Worker 1388133148u, 1611772864u,
4673*993b0882SAndroid Build Coastguard Worker 2544383526u, 552925303u,
4674*993b0882SAndroid Build Coastguard Worker 3420960112u, 3198900547u,
4675*993b0882SAndroid Build Coastguard Worker 3503230228u, 2603352423u,
4676*993b0882SAndroid Build Coastguard Worker 2318375898u, 4064071435u,
4677*993b0882SAndroid Build Coastguard Worker 3006227299u, 4194096960u,
4678*993b0882SAndroid Build Coastguard Worker 1283392422u, 1510460996u,
4679*993b0882SAndroid Build Coastguard Worker 174272138u, 3671038966u,
4680*993b0882SAndroid Build Coastguard Worker 1775955687u, 1719108984u,
4681*993b0882SAndroid Build Coastguard Worker 1763892006u, 1385029063u,
4682*993b0882SAndroid Build Coastguard Worker 4083790740u, 406757708u,
4683*993b0882SAndroid Build Coastguard Worker 684087286u, 531310503u,
4684*993b0882SAndroid Build Coastguard Worker 3329923157u, 3492083607u,
4685*993b0882SAndroid Build Coastguard Worker 1059031410u, 3037314475u,
4686*993b0882SAndroid Build Coastguard Worker 3105682208u, 3382290593u,
4687*993b0882SAndroid Build Coastguard Worker 2292208503u, 426380557u,
4688*993b0882SAndroid Build Coastguard Worker 97373678u, 3842309471u,
4689*993b0882SAndroid Build Coastguard Worker 777173623u, 3241407531u,
4690*993b0882SAndroid Build Coastguard Worker 303065016u, 1477104583u,
4691*993b0882SAndroid Build Coastguard Worker 4234905200u, 2512514774u,
4692*993b0882SAndroid Build Coastguard Worker 2649684057u, 1397502982u,
4693*993b0882SAndroid Build Coastguard Worker 1802596032u, 3973022223u,
4694*993b0882SAndroid Build Coastguard Worker 2543566442u, 3139578968u,
4695*993b0882SAndroid Build Coastguard Worker 3193669211u, 811750340u,
4696*993b0882SAndroid Build Coastguard Worker 4013496209u, 567361887u,
4697*993b0882SAndroid Build Coastguard Worker 4169410406u, 3622282782u,
4698*993b0882SAndroid Build Coastguard Worker 3403136990u, 2540585554u,
4699*993b0882SAndroid Build Coastguard Worker 895210040u, 3862229802u,
4700*993b0882SAndroid Build Coastguard Worker 1145435213u, 4146963980u,
4701*993b0882SAndroid Build Coastguard Worker 784952939u, 943914610u,
4702*993b0882SAndroid Build Coastguard Worker 573034522u, 464420660u,
4703*993b0882SAndroid Build Coastguard Worker 2356867109u, 3054347639u,
4704*993b0882SAndroid Build Coastguard Worker 3985088434u, 1911188923u,
4705*993b0882SAndroid Build Coastguard Worker 583391304u, 176468511u,
4706*993b0882SAndroid Build Coastguard Worker 2990150068u, 2338031599u,
4707*993b0882SAndroid Build Coastguard Worker 519948041u, 3181425568u,
4708*993b0882SAndroid Build Coastguard Worker 496106033u, 4110294665u,
4709*993b0882SAndroid Build Coastguard Worker 2736756930u, 1196757691u,
4710*993b0882SAndroid Build Coastguard Worker 1089679033u, 240953857u,
4711*993b0882SAndroid Build Coastguard Worker 3399092928u, 4040779538u,
4712*993b0882SAndroid Build Coastguard Worker 2843673626u, 240495962u,
4713*993b0882SAndroid Build Coastguard Worker 3017658263u, 3828377737u,
4714*993b0882SAndroid Build Coastguard Worker 4243717901u, 2448373688u,
4715*993b0882SAndroid Build Coastguard Worker 2759616657u, 2246245780u,
4716*993b0882SAndroid Build Coastguard Worker 308018483u, 4262383425u,
4717*993b0882SAndroid Build Coastguard Worker 2731780771u, 328023017u,
4718*993b0882SAndroid Build Coastguard Worker 2884443148u, 841480070u,
4719*993b0882SAndroid Build Coastguard Worker 3188015819u, 4051263539u,
4720*993b0882SAndroid Build Coastguard Worker 2298178908u, 2944209234u,
4721*993b0882SAndroid Build Coastguard Worker 1372958390u, 4164532914u,
4722*993b0882SAndroid Build Coastguard Worker 4074952232u, 1683612329u,
4723*993b0882SAndroid Build Coastguard Worker 2155036654u, 1872815858u,
4724*993b0882SAndroid Build Coastguard Worker 2041174279u, 2368092311u,
4725*993b0882SAndroid Build Coastguard Worker 206775997u, 2283918569u,
4726*993b0882SAndroid Build Coastguard Worker 645945606u, 115406202u,
4727*993b0882SAndroid Build Coastguard Worker 4206471368u, 3923500892u,
4728*993b0882SAndroid Build Coastguard Worker 2217060665u, 350160869u,
4729*993b0882SAndroid Build Coastguard Worker 706531239u, 2824302286u,
4730*993b0882SAndroid Build Coastguard Worker 509981657u, 1469342315u,
4731*993b0882SAndroid Build Coastguard Worker 140980u, 1891558063u,
4732*993b0882SAndroid Build Coastguard Worker 164887091u, 3094962711u,
4733*993b0882SAndroid Build Coastguard Worker 3437115622u, 13327420u,
4734*993b0882SAndroid Build Coastguard Worker 422986366u, 330624974u,
4735*993b0882SAndroid Build Coastguard Worker 3630863408u, 2425505046u,
4736*993b0882SAndroid Build Coastguard Worker 824008515u, 3543885677u,
4737*993b0882SAndroid Build Coastguard Worker 918718096u, 376390582u,
4738*993b0882SAndroid Build Coastguard Worker 3224043675u, 3724791476u,
4739*993b0882SAndroid Build Coastguard Worker 1837192976u, 2968738516u,
4740*993b0882SAndroid Build Coastguard Worker 3424344721u, 3187805406u,
4741*993b0882SAndroid Build Coastguard Worker 1550978788u, 1743089918u,
4742*993b0882SAndroid Build Coastguard Worker 4251270061u, 645016762u,
4743*993b0882SAndroid Build Coastguard Worker 3855037968u, 1928519266u,
4744*993b0882SAndroid Build Coastguard Worker 1373803416u, 2289007286u,
4745*993b0882SAndroid Build Coastguard Worker 1889218686u, 1610271373u,
4746*993b0882SAndroid Build Coastguard Worker 3059200728u, 2108753646u,
4747*993b0882SAndroid Build Coastguard Worker 582042641u, 812347242u,
4748*993b0882SAndroid Build Coastguard Worker 3188172418u, 191994904u,
4749*993b0882SAndroid Build Coastguard Worker 1343511943u, 2247006571u,
4750*993b0882SAndroid Build Coastguard Worker 463291708u, 2697254095u,
4751*993b0882SAndroid Build Coastguard Worker 1534175504u, 1106275740u,
4752*993b0882SAndroid Build Coastguard Worker 622521957u, 917121602u,
4753*993b0882SAndroid Build Coastguard Worker 4095777215u, 3955972648u,
4754*993b0882SAndroid Build Coastguard Worker 3852234638u, 2845309942u,
4755*993b0882SAndroid Build Coastguard Worker 3299763344u, 2864033668u,
4756*993b0882SAndroid Build Coastguard Worker 2554947496u, 799569078u,
4757*993b0882SAndroid Build Coastguard Worker 2551629074u, 1102873346u,
4758*993b0882SAndroid Build Coastguard Worker 2661022773u, 2006922227u,
4759*993b0882SAndroid Build Coastguard Worker 2900438444u, 1448194126u,
4760*993b0882SAndroid Build Coastguard Worker 1321567432u, 1983773590u,
4761*993b0882SAndroid Build Coastguard Worker 1237256330u, 3449066284u,
4762*993b0882SAndroid Build Coastguard Worker 1691553115u, 3274671549u,
4763*993b0882SAndroid Build Coastguard Worker 4271625619u, 2741371614u,
4764*993b0882SAndroid Build Coastguard Worker 3285899651u, 786322314u,
4765*993b0882SAndroid Build Coastguard Worker 1586632825u, 564385522u,
4766*993b0882SAndroid Build Coastguard Worker 2530557509u, 2974240289u,
4767*993b0882SAndroid Build Coastguard Worker 1244759631u, 3263135197u,
4768*993b0882SAndroid Build Coastguard Worker 3592389776u, 3570296884u,
4769*993b0882SAndroid Build Coastguard Worker 2749873561u, 521432811u,
4770*993b0882SAndroid Build Coastguard Worker 987586766u, 3206261120u,
4771*993b0882SAndroid Build Coastguard Worker 1327840078u, 4078716491u,
4772*993b0882SAndroid Build Coastguard Worker 1753812954u, 976892272u,
4773*993b0882SAndroid Build Coastguard Worker 1827135136u, 1781944746u,
4774*993b0882SAndroid Build Coastguard Worker 1328622957u, 1015377974u,
4775*993b0882SAndroid Build Coastguard Worker 3439601008u, 2209584557u,
4776*993b0882SAndroid Build Coastguard Worker 2482286699u, 1109175923u,
4777*993b0882SAndroid Build Coastguard Worker 874877499u, 2036083451u,
4778*993b0882SAndroid Build Coastguard Worker 483570344u, 1091877599u,
4779*993b0882SAndroid Build Coastguard Worker 4190721328u, 1129462471u,
4780*993b0882SAndroid Build Coastguard Worker 640035849u, 1867372700u,
4781*993b0882SAndroid Build Coastguard Worker 920761165u, 3273688770u,
4782*993b0882SAndroid Build Coastguard Worker 1623777358u, 3389003793u,
4783*993b0882SAndroid Build Coastguard Worker 3241132743u, 2734783008u,
4784*993b0882SAndroid Build Coastguard Worker 696674661u, 2502161880u,
4785*993b0882SAndroid Build Coastguard Worker 1646071378u, 1164309901u,
4786*993b0882SAndroid Build Coastguard Worker 350411888u, 1978005963u,
4787*993b0882SAndroid Build Coastguard Worker 2253937037u, 7371540u,
4788*993b0882SAndroid Build Coastguard Worker 989577914u, 3626554867u,
4789*993b0882SAndroid Build Coastguard Worker 3214796883u, 531343826u,
4790*993b0882SAndroid Build Coastguard Worker 398899695u, 1145247203u,
4791*993b0882SAndroid Build Coastguard Worker 1516846461u, 3656006011u,
4792*993b0882SAndroid Build Coastguard Worker 529303412u, 3318455811u,
4793*993b0882SAndroid Build Coastguard Worker 3062828129u, 1696355359u,
4794*993b0882SAndroid Build Coastguard Worker 3698796465u, 3155218919u,
4795*993b0882SAndroid Build Coastguard Worker 1457595996u, 3191404246u,
4796*993b0882SAndroid Build Coastguard Worker 1395609912u, 2917345728u,
4797*993b0882SAndroid Build Coastguard Worker 1237411891u, 1854985978u,
4798*993b0882SAndroid Build Coastguard Worker 1091884675u, 3504488111u,
4799*993b0882SAndroid Build Coastguard Worker 3109924189u, 1628881950u,
4800*993b0882SAndroid Build Coastguard Worker 3939149151u, 878608872u,
4801*993b0882SAndroid Build Coastguard Worker 778235395u, 1052990614u,
4802*993b0882SAndroid Build Coastguard Worker 903730231u, 2069566979u,
4803*993b0882SAndroid Build Coastguard Worker 2437686324u, 3163786257u,
4804*993b0882SAndroid Build Coastguard Worker 2257884264u, 2123173186u,
4805*993b0882SAndroid Build Coastguard Worker 939764916u, 2933010098u,
4806*993b0882SAndroid Build Coastguard Worker 1235300371u, 1256485167u,
4807*993b0882SAndroid Build Coastguard Worker 1950274665u, 2180372319u,
4808*993b0882SAndroid Build Coastguard Worker 2648400302u, 122035049u,
4809*993b0882SAndroid Build Coastguard Worker 1883344352u, 2083771672u,
4810*993b0882SAndroid Build Coastguard Worker 3712110541u, 321199441u,
4811*993b0882SAndroid Build Coastguard Worker 1896357377u, 508560958u,
4812*993b0882SAndroid Build Coastguard Worker 3066325351u, 2770847216u,
4813*993b0882SAndroid Build Coastguard Worker 3177982504u, 296902736u,
4814*993b0882SAndroid Build Coastguard Worker 1486926688u, 456842861u,
4815*993b0882SAndroid Build Coastguard Worker 601221482u, 3992583643u,
4816*993b0882SAndroid Build Coastguard Worker 2794121515u, 1533934172u,
4817*993b0882SAndroid Build Coastguard Worker 1706465470u, 4281971893u,
4818*993b0882SAndroid Build Coastguard Worker 2557027816u, 900741486u,
4819*993b0882SAndroid Build Coastguard Worker 227175484u, 550595824u,
4820*993b0882SAndroid Build Coastguard Worker 690918144u, 2825943628u,
4821*993b0882SAndroid Build Coastguard Worker 90375300u, 300318232u,
4822*993b0882SAndroid Build Coastguard Worker 1985329734u, 1440763373u,
4823*993b0882SAndroid Build Coastguard Worker 3670603707u, 2533900859u,
4824*993b0882SAndroid Build Coastguard Worker 3253901179u, 542270815u,
4825*993b0882SAndroid Build Coastguard Worker 3677388841u, 307706478u,
4826*993b0882SAndroid Build Coastguard Worker 2570910669u, 3320103693u,
4827*993b0882SAndroid Build Coastguard Worker 1273768482u, 1216399252u,
4828*993b0882SAndroid Build Coastguard Worker 1652924805u, 1043647584u,
4829*993b0882SAndroid Build Coastguard Worker 1120323676u, 639941430u,
4830*993b0882SAndroid Build Coastguard Worker 325675502u, 3652676161u,
4831*993b0882SAndroid Build Coastguard Worker 4241680335u, 1545838362u,
4832*993b0882SAndroid Build Coastguard Worker 1991398008u, 4100211814u,
4833*993b0882SAndroid Build Coastguard Worker 1097584090u, 3262252593u,
4834*993b0882SAndroid Build Coastguard Worker 2254324292u, 1765019121u,
4835*993b0882SAndroid Build Coastguard Worker 4060211241u, 2315856188u,
4836*993b0882SAndroid Build Coastguard Worker 3704419305u, 411263051u,
4837*993b0882SAndroid Build Coastguard Worker 238929055u, 3540688404u,
4838*993b0882SAndroid Build Coastguard Worker 3094544537u, 3250435765u,
4839*993b0882SAndroid Build Coastguard Worker 3460621305u, 1967599860u,
4840*993b0882SAndroid Build Coastguard Worker 2016157366u, 847389916u,
4841*993b0882SAndroid Build Coastguard Worker 1659615591u, 4020453639u,
4842*993b0882SAndroid Build Coastguard Worker 901109753u, 2682611693u,
4843*993b0882SAndroid Build Coastguard Worker 1661364280u, 177155177u,
4844*993b0882SAndroid Build Coastguard Worker 3210561911u, 3802058181u,
4845*993b0882SAndroid Build Coastguard Worker 797089608u, 3286110054u,
4846*993b0882SAndroid Build Coastguard Worker 2110358240u, 1353279028u,
4847*993b0882SAndroid Build Coastguard Worker 2479975820u, 471725410u,
4848*993b0882SAndroid Build Coastguard Worker 2219863904u, 3623364733u,
4849*993b0882SAndroid Build Coastguard Worker 3167128228u, 1052188336u,
4850*993b0882SAndroid Build Coastguard Worker 3656587111u, 721788662u,
4851*993b0882SAndroid Build Coastguard Worker 3061255808u, 1615375832u,
4852*993b0882SAndroid Build Coastguard Worker 924941453u, 2547780700u,
4853*993b0882SAndroid Build Coastguard Worker 3328169224u, 1310964134u,
4854*993b0882SAndroid Build Coastguard Worker 2701956286u, 4145497671u,
4855*993b0882SAndroid Build Coastguard Worker 1421461094u, 1221397398u,
4856*993b0882SAndroid Build Coastguard Worker 1589183618u, 1492533854u,
4857*993b0882SAndroid Build Coastguard Worker 449740816u, 2686506989u,
4858*993b0882SAndroid Build Coastguard Worker 3035198924u, 1682886232u,
4859*993b0882SAndroid Build Coastguard Worker 2529760244u, 3342031659u,
4860*993b0882SAndroid Build Coastguard Worker 1235084019u, 2151665147u,
4861*993b0882SAndroid Build Coastguard Worker 2315686577u, 3282027660u,
4862*993b0882SAndroid Build Coastguard Worker 1140138691u, 2754346599u,
4863*993b0882SAndroid Build Coastguard Worker 2091754612u, 1178454681u,
4864*993b0882SAndroid Build Coastguard Worker 4226896579u, 2942520471u,
4865*993b0882SAndroid Build Coastguard Worker 2122168506u, 3751680858u,
4866*993b0882SAndroid Build Coastguard Worker 3213794286u, 2601416506u,
4867*993b0882SAndroid Build Coastguard Worker 4142747914u, 3951404257u,
4868*993b0882SAndroid Build Coastguard Worker 4243249649u, 748595836u,
4869*993b0882SAndroid Build Coastguard Worker 4004834921u, 238887261u,
4870*993b0882SAndroid Build Coastguard Worker 1927321047u, 2217148444u,
4871*993b0882SAndroid Build Coastguard Worker 205977665u, 1885975275u,
4872*993b0882SAndroid Build Coastguard Worker 186020771u, 2367569534u,
4873*993b0882SAndroid Build Coastguard Worker 2941662631u, 2608559272u,
4874*993b0882SAndroid Build Coastguard Worker 3342096731u, 741809437u,
4875*993b0882SAndroid Build Coastguard Worker 1962659444u, 3539886328u,
4876*993b0882SAndroid Build Coastguard Worker 3036596491u, 2282550094u,
4877*993b0882SAndroid Build Coastguard Worker 2366462727u, 2748286642u,
4878*993b0882SAndroid Build Coastguard Worker 2144472852u, 1390394371u,
4879*993b0882SAndroid Build Coastguard Worker 1257385924u, 2205425874u,
4880*993b0882SAndroid Build Coastguard Worker 2119055686u, 46865323u,
4881*993b0882SAndroid Build Coastguard Worker 3597555910u, 3188438773u,
4882*993b0882SAndroid Build Coastguard Worker 2372320753u, 3641116924u,
4883*993b0882SAndroid Build Coastguard Worker 3116286108u, 2680722658u,
4884*993b0882SAndroid Build Coastguard Worker 3371014971u, 2058751609u,
4885*993b0882SAndroid Build Coastguard Worker 2966943726u, 2345078707u,
4886*993b0882SAndroid Build Coastguard Worker 2330535244u, 4013841927u,
4887*993b0882SAndroid Build Coastguard Worker 1169588594u, 857915866u,
4888*993b0882SAndroid Build Coastguard Worker 1875260989u, 3175831309u,
4889*993b0882SAndroid Build Coastguard Worker 3193475664u, 1955181430u,
4890*993b0882SAndroid Build Coastguard Worker 923161569u, 4068653043u,
4891*993b0882SAndroid Build Coastguard Worker 776445899u, 954196929u,
4892*993b0882SAndroid Build Coastguard Worker 61509556u, 4248237857u,
4893*993b0882SAndroid Build Coastguard Worker 3808667664u, 581227317u,
4894*993b0882SAndroid Build Coastguard Worker 2893240187u, 4159497403u,
4895*993b0882SAndroid Build Coastguard Worker 4212264930u, 3973886195u,
4896*993b0882SAndroid Build Coastguard Worker 2077539039u, 851579036u,
4897*993b0882SAndroid Build Coastguard Worker 2957587591u, 772351886u,
4898*993b0882SAndroid Build Coastguard Worker 1173659554u, 946748363u,
4899*993b0882SAndroid Build Coastguard Worker 2794103714u, 2094375930u,
4900*993b0882SAndroid Build Coastguard Worker 4234750213u, 3671645488u,
4901*993b0882SAndroid Build Coastguard Worker 2614250782u, 2620465358u,
4902*993b0882SAndroid Build Coastguard Worker 3122317317u, 2365436865u,
4903*993b0882SAndroid Build Coastguard Worker 3393973390u, 523513960u,
4904*993b0882SAndroid Build Coastguard Worker 3645735309u, 2766686992u,
4905*993b0882SAndroid Build Coastguard Worker 2023960931u, 2312244996u,
4906*993b0882SAndroid Build Coastguard Worker 1875932218u, 3253711056u,
4907*993b0882SAndroid Build Coastguard Worker 3622416881u, 3274929205u,
4908*993b0882SAndroid Build Coastguard Worker 612094988u, 1555465129u,
4909*993b0882SAndroid Build Coastguard Worker 2114270406u, 3553762793u,
4910*993b0882SAndroid Build Coastguard Worker 1832633644u, 1087551556u,
4911*993b0882SAndroid Build Coastguard Worker 3306195841u, 1702313921u,
4912*993b0882SAndroid Build Coastguard Worker 3675066046u, 1735998785u,
4913*993b0882SAndroid Build Coastguard Worker 1690923980u, 1482649756u,
4914*993b0882SAndroid Build Coastguard Worker 1171351291u, 2043136409u,
4915*993b0882SAndroid Build Coastguard Worker 1962596992u, 461214626u,
4916*993b0882SAndroid Build Coastguard Worker 3278253346u, 1392428048u,
4917*993b0882SAndroid Build Coastguard Worker 3744621107u, 1028502697u,
4918*993b0882SAndroid Build Coastguard Worker 3991171462u, 1014064003u,
4919*993b0882SAndroid Build Coastguard Worker 3642345425u, 3186995039u,
4920*993b0882SAndroid Build Coastguard Worker 6114625u, 3359104346u,
4921*993b0882SAndroid Build Coastguard Worker 414856965u, 2814387514u,
4922*993b0882SAndroid Build Coastguard Worker 3583605071u, 2497896367u,
4923*993b0882SAndroid Build Coastguard Worker 1024572712u, 1927582962u,
4924*993b0882SAndroid Build Coastguard Worker 2892797583u, 845302635u,
4925*993b0882SAndroid Build Coastguard Worker 328548052u, 1523379748u,
4926*993b0882SAndroid Build Coastguard Worker 3392622118u, 1347167673u,
4927*993b0882SAndroid Build Coastguard Worker 1012316581u, 37767602u,
4928*993b0882SAndroid Build Coastguard Worker 2647726017u, 1070326065u,
4929*993b0882SAndroid Build Coastguard Worker 2075035198u, 4202817168u,
4930*993b0882SAndroid Build Coastguard Worker 2502924707u, 2612406822u,
4931*993b0882SAndroid Build Coastguard Worker 2187115553u, 1180137213u,
4932*993b0882SAndroid Build Coastguard Worker 701024148u, 1481965992u,
4933*993b0882SAndroid Build Coastguard Worker 3223787553u, 2083541843u,
4934*993b0882SAndroid Build Coastguard Worker 203230202u, 3876887380u,
4935*993b0882SAndroid Build Coastguard Worker 1334816273u, 2870251538u,
4936*993b0882SAndroid Build Coastguard Worker 2186205850u, 3985213979u,
4937*993b0882SAndroid Build Coastguard Worker 333533378u, 806507642u,
4938*993b0882SAndroid Build Coastguard Worker 1010064531u, 713520765u,
4939*993b0882SAndroid Build Coastguard Worker 3084131515u, 2637421459u,
4940*993b0882SAndroid Build Coastguard Worker 1703168933u, 1517562266u,
4941*993b0882SAndroid Build Coastguard Worker 4089081247u, 3231042924u,
4942*993b0882SAndroid Build Coastguard Worker 3079916123u, 3154574447u,
4943*993b0882SAndroid Build Coastguard Worker 2253948262u, 1725190035u,
4944*993b0882SAndroid Build Coastguard Worker 2452539325u, 1343734533u,
4945*993b0882SAndroid Build Coastguard Worker 213706059u, 2519409656u,
4946*993b0882SAndroid Build Coastguard Worker 108055211u, 2916327746u,
4947*993b0882SAndroid Build Coastguard Worker 587001593u, 1917607088u,
4948*993b0882SAndroid Build Coastguard Worker 4202913084u, 926304016u,
4949*993b0882SAndroid Build Coastguard Worker 469255411u, 4042080256u,
4950*993b0882SAndroid Build Coastguard Worker 3498936874u, 246692543u,
4951*993b0882SAndroid Build Coastguard Worker 495780578u, 438717281u,
4952*993b0882SAndroid Build Coastguard Worker 2259272650u, 4011324645u,
4953*993b0882SAndroid Build Coastguard Worker 2836854664u, 2317249321u,
4954*993b0882SAndroid Build Coastguard Worker 946828752u, 1280403658u,
4955*993b0882SAndroid Build Coastguard Worker 1905648354u, 2034241661u,
4956*993b0882SAndroid Build Coastguard Worker 774652981u, 1285694082u,
4957*993b0882SAndroid Build Coastguard Worker 2200307766u, 2158671727u,
4958*993b0882SAndroid Build Coastguard Worker 1135162148u, 232040752u,
4959*993b0882SAndroid Build Coastguard Worker 397012087u, 1717527689u,
4960*993b0882SAndroid Build Coastguard Worker 1720414106u, 918797022u,
4961*993b0882SAndroid Build Coastguard Worker 2580119304u, 3568069742u,
4962*993b0882SAndroid Build Coastguard Worker 2904461070u, 3893453420u,
4963*993b0882SAndroid Build Coastguard Worker 973817938u, 667499332u,
4964*993b0882SAndroid Build Coastguard Worker 3785870412u, 2088861715u,
4965*993b0882SAndroid Build Coastguard Worker 1565179401u, 600903026u,
4966*993b0882SAndroid Build Coastguard Worker 591806775u, 3512242245u,
4967*993b0882SAndroid Build Coastguard Worker 997964515u, 2339605347u,
4968*993b0882SAndroid Build Coastguard Worker 1134342772u, 3234226304u,
4969*993b0882SAndroid Build Coastguard Worker 4084179455u, 302315791u,
4970*993b0882SAndroid Build Coastguard Worker 2445626811u, 2590372496u,
4971*993b0882SAndroid Build Coastguard Worker 345572299u, 2274770442u,
4972*993b0882SAndroid Build Coastguard Worker 3600587867u, 3706939009u,
4973*993b0882SAndroid Build Coastguard Worker 1430507980u, 2656330434u,
4974*993b0882SAndroid Build Coastguard Worker 1079209397u, 2122849632u,
4975*993b0882SAndroid Build Coastguard Worker 1423705223u, 3826321888u,
4976*993b0882SAndroid Build Coastguard Worker 3683385276u, 1057038163u,
4977*993b0882SAndroid Build Coastguard Worker 1242840526u, 3987000643u,
4978*993b0882SAndroid Build Coastguard Worker 2398253089u, 1538190921u,
4979*993b0882SAndroid Build Coastguard Worker 1295898647u, 3570196893u,
4980*993b0882SAndroid Build Coastguard Worker 3065138774u, 3111336863u,
4981*993b0882SAndroid Build Coastguard Worker 2524949549u, 4203895425u,
4982*993b0882SAndroid Build Coastguard Worker 3025864372u, 968800353u,
4983*993b0882SAndroid Build Coastguard Worker 1023721001u, 3763083325u,
4984*993b0882SAndroid Build Coastguard Worker 526350786u, 635552097u,
4985*993b0882SAndroid Build Coastguard Worker 2308118370u, 2166472723u,
4986*993b0882SAndroid Build Coastguard Worker 2196937373u, 2643841788u,
4987*993b0882SAndroid Build Coastguard Worker 3040011470u, 4010301879u,
4988*993b0882SAndroid Build Coastguard Worker 2782379560u, 3474682856u,
4989*993b0882SAndroid Build Coastguard Worker 4201389782u, 4223278891u,
4990*993b0882SAndroid Build Coastguard Worker 1457302296u, 2251842132u,
4991*993b0882SAndroid Build Coastguard Worker 1090062008u, 3188219189u,
4992*993b0882SAndroid Build Coastguard Worker 292733931u, 1424229089u,
4993*993b0882SAndroid Build Coastguard Worker 1590782640u, 1365212370u,
4994*993b0882SAndroid Build Coastguard Worker 3975957073u, 3982969588u,
4995*993b0882SAndroid Build Coastguard Worker 2927147928u, 1048291071u,
4996*993b0882SAndroid Build Coastguard Worker 2766680094u, 884908196u,
4997*993b0882SAndroid Build Coastguard Worker 35237839u, 2221180633u,
4998*993b0882SAndroid Build Coastguard Worker 2490333812u, 4098360768u,
4999*993b0882SAndroid Build Coastguard Worker 4029081103u, 3490831871u,
5000*993b0882SAndroid Build Coastguard Worker 2392516272u, 3455379186u,
5001*993b0882SAndroid Build Coastguard Worker 3948800722u, 335456628u,
5002*993b0882SAndroid Build Coastguard Worker 2105117968u, 4181629008u,
5003*993b0882SAndroid Build Coastguard Worker 1044201772u, 3335754111u,
5004*993b0882SAndroid Build Coastguard Worker 540133451u, 3313113759u,
5005*993b0882SAndroid Build Coastguard Worker 3786107905u, 2627207327u,
5006*993b0882SAndroid Build Coastguard Worker 3540337875u, 3473113388u,
5007*993b0882SAndroid Build Coastguard Worker 3430536378u, 2514123129u,
5008*993b0882SAndroid Build Coastguard Worker 2124531276u, 3872633376u,
5009*993b0882SAndroid Build Coastguard Worker 3272957388u, 3501994650u,
5010*993b0882SAndroid Build Coastguard Worker 2418881542u, 487365389u,
5011*993b0882SAndroid Build Coastguard Worker 3877672368u, 1512866656u,
5012*993b0882SAndroid Build Coastguard Worker 3486531087u, 2102955203u,
5013*993b0882SAndroid Build Coastguard Worker 1136054817u, 3004241477u,
5014*993b0882SAndroid Build Coastguard Worker 1549075351u, 1302002008u,
5015*993b0882SAndroid Build Coastguard Worker 3936430045u, 2258587644u,
5016*993b0882SAndroid Build Coastguard Worker 4109233936u, 3679809321u,
5017*993b0882SAndroid Build Coastguard Worker 3467083076u, 2484463221u,
5018*993b0882SAndroid Build Coastguard Worker 1594979755u, 529218470u,
5019*993b0882SAndroid Build Coastguard Worker 3527024461u, 1147434678u,
5020*993b0882SAndroid Build Coastguard Worker 106799023u, 1823161970u,
5021*993b0882SAndroid Build Coastguard Worker 1704656738u, 1675883700u,
5022*993b0882SAndroid Build Coastguard Worker 3308746763u, 1875093248u,
5023*993b0882SAndroid Build Coastguard Worker 1352868568u, 1898561846u,
5024*993b0882SAndroid Build Coastguard Worker 2508994984u, 3177750780u,
5025*993b0882SAndroid Build Coastguard Worker 4217929592u, 400784472u,
5026*993b0882SAndroid Build Coastguard Worker 80090315u, 3564414786u,
5027*993b0882SAndroid Build Coastguard Worker 3841585648u, 3379293868u,
5028*993b0882SAndroid Build Coastguard Worker 160353261u, 2413172925u,
5029*993b0882SAndroid Build Coastguard Worker 2378499279u, 673436726u,
5030*993b0882SAndroid Build Coastguard Worker 1505702418u, 1330977363u,
5031*993b0882SAndroid Build Coastguard Worker 1853298225u, 3201741245u,
5032*993b0882SAndroid Build Coastguard Worker 2135714208u, 4069554166u,
5033*993b0882SAndroid Build Coastguard Worker 3715612384u, 3692488887u,
5034*993b0882SAndroid Build Coastguard Worker 3680311316u, 4274382900u,
5035*993b0882SAndroid Build Coastguard Worker 914186796u, 2264886523u,
5036*993b0882SAndroid Build Coastguard Worker 3869634032u, 1254199592u,
5037*993b0882SAndroid Build Coastguard Worker 1131020455u, 194781179u,
5038*993b0882SAndroid Build Coastguard Worker 429923922u, 2763792336u,
5039*993b0882SAndroid Build Coastguard Worker 2052895198u, 3997373194u,
5040*993b0882SAndroid Build Coastguard Worker 3440090658u, 2165746386u,
5041*993b0882SAndroid Build Coastguard Worker 1575500242u, 3463310191u,
5042*993b0882SAndroid Build Coastguard Worker 2064974716u, 3779513671u,
5043*993b0882SAndroid Build Coastguard Worker 3106421434u, 880320527u,
5044*993b0882SAndroid Build Coastguard Worker 3281914119u, 286569042u,
5045*993b0882SAndroid Build Coastguard Worker 3909096631u, 122359727u,
5046*993b0882SAndroid Build Coastguard Worker 1429837716u, 252230074u,
5047*993b0882SAndroid Build Coastguard Worker 4111461225u, 762273136u,
5048*993b0882SAndroid Build Coastguard Worker 93658514u, 2766407143u,
5049*993b0882SAndroid Build Coastguard Worker 3623657004u, 3869801679u,
5050*993b0882SAndroid Build Coastguard Worker 3925695921u, 2390397316u,
5051*993b0882SAndroid Build Coastguard Worker 2499025338u, 2741806539u,
5052*993b0882SAndroid Build Coastguard Worker 2507199021u, 1659221866u,
5053*993b0882SAndroid Build Coastguard Worker 361292116u, 4048761557u,
5054*993b0882SAndroid Build Coastguard Worker 3797133396u, 1517903247u,
5055*993b0882SAndroid Build Coastguard Worker 3121647246u, 3884308578u,
5056*993b0882SAndroid Build Coastguard Worker 1697201500u, 1558800262u,
5057*993b0882SAndroid Build Coastguard Worker 4150812360u, 3161302278u,
5058*993b0882SAndroid Build Coastguard Worker 2610217849u, 641564641u,
5059*993b0882SAndroid Build Coastguard Worker 183814518u, 2075245419u,
5060*993b0882SAndroid Build Coastguard Worker 611996508u, 2223461433u,
5061*993b0882SAndroid Build Coastguard Worker 329123979u, 121860586u,
5062*993b0882SAndroid Build Coastguard Worker 860985829u, 1137889144u,
5063*993b0882SAndroid Build Coastguard Worker 4018949439u, 2904348960u,
5064*993b0882SAndroid Build Coastguard Worker 947795261u, 1992594155u,
5065*993b0882SAndroid Build Coastguard Worker 4255427501u, 2281583851u,
5066*993b0882SAndroid Build Coastguard Worker 2892637604u, 1478186924u,
5067*993b0882SAndroid Build Coastguard Worker 3050771207u, 2767035539u,
5068*993b0882SAndroid Build Coastguard Worker 373510582u, 1963520320u,
5069*993b0882SAndroid Build Coastguard Worker 3763848370u, 3756817798u,
5070*993b0882SAndroid Build Coastguard Worker 627269409u, 1806905031u,
5071*993b0882SAndroid Build Coastguard Worker 1814444610u, 3646665053u,
5072*993b0882SAndroid Build Coastguard Worker 1822693920u, 278515794u,
5073*993b0882SAndroid Build Coastguard Worker 584050483u, 4142579188u,
5074*993b0882SAndroid Build Coastguard Worker 2149745808u, 3193071606u,
5075*993b0882SAndroid Build Coastguard Worker 1179706341u, 2693495182u,
5076*993b0882SAndroid Build Coastguard Worker 3259749808u, 644172091u,
5077*993b0882SAndroid Build Coastguard Worker 880509048u, 3340630542u,
5078*993b0882SAndroid Build Coastguard Worker 3365160815u, 2384445068u,
5079*993b0882SAndroid Build Coastguard Worker 3053081915u, 2840648309u,
5080*993b0882SAndroid Build Coastguard Worker 1986990122u, 1084703471u,
5081*993b0882SAndroid Build Coastguard Worker 2370410550u, 1627743573u,
5082*993b0882SAndroid Build Coastguard Worker 2244943480u, 4057483496u,
5083*993b0882SAndroid Build Coastguard Worker 2611595995u, 2470013639u,
5084*993b0882SAndroid Build Coastguard Worker 4024732359u, 3987190386u,
5085*993b0882SAndroid Build Coastguard Worker 873421687u, 2447660175u,
5086*993b0882SAndroid Build Coastguard Worker 3226583022u, 767655877u,
5087*993b0882SAndroid Build Coastguard Worker 2528024413u, 1962070688u,
5088*993b0882SAndroid Build Coastguard Worker 1233635843u, 2163464207u,
5089*993b0882SAndroid Build Coastguard Worker 659054446u, 854207134u,
5090*993b0882SAndroid Build Coastguard Worker 258410943u, 4197831420u,
5091*993b0882SAndroid Build Coastguard Worker 2515400215u, 3100476924u,
5092*993b0882SAndroid Build Coastguard Worker 1961549594u, 2219491151u,
5093*993b0882SAndroid Build Coastguard Worker 3997658851u, 163850514u,
5094*993b0882SAndroid Build Coastguard Worker 470325051u, 2598261204u,
5095*993b0882SAndroid Build Coastguard Worker 3052145580u, 59836528u,
5096*993b0882SAndroid Build Coastguard Worker 1376188597u, 966733415u,
5097*993b0882SAndroid Build Coastguard Worker 850667549u, 3622479237u,
5098*993b0882SAndroid Build Coastguard Worker 1083731990u, 1525777459u,
5099*993b0882SAndroid Build Coastguard Worker 4005126532u, 1428155540u,
5100*993b0882SAndroid Build Coastguard Worker 2781907007u, 943739431u,
5101*993b0882SAndroid Build Coastguard Worker 1493961005u, 2839096988u,
5102*993b0882SAndroid Build Coastguard Worker 2000057832u, 1941829603u,
5103*993b0882SAndroid Build Coastguard Worker 1901484772u, 939810041u,
5104*993b0882SAndroid Build Coastguard Worker 3377407371u, 3090115837u,
5105*993b0882SAndroid Build Coastguard Worker 3310840540u, 2068409688u,
5106*993b0882SAndroid Build Coastguard Worker 3261383939u, 2212130277u,
5107*993b0882SAndroid Build Coastguard Worker 2594774045u, 2912652418u,
5108*993b0882SAndroid Build Coastguard Worker 4179816101u, 3534504531u,
5109*993b0882SAndroid Build Coastguard Worker 3349254805u, 2796552902u,
5110*993b0882SAndroid Build Coastguard Worker 1385421283u, 4259908631u,
5111*993b0882SAndroid Build Coastguard Worker 3714780837u, 3070073945u,
5112*993b0882SAndroid Build Coastguard Worker 3372846298u, 3835884044u,
5113*993b0882SAndroid Build Coastguard Worker 3047965714u, 3009018735u,
5114*993b0882SAndroid Build Coastguard Worker 744091167u, 1861124263u,
5115*993b0882SAndroid Build Coastguard Worker 2764936304u, 1338171648u,
5116*993b0882SAndroid Build Coastguard Worker 4222019554u, 1395200692u,
5117*993b0882SAndroid Build Coastguard Worker 1371426007u, 3338031581u,
5118*993b0882SAndroid Build Coastguard Worker 2525665319u, 4196233786u,
5119*993b0882SAndroid Build Coastguard Worker 2332743921u, 1474702008u,
5120*993b0882SAndroid Build Coastguard Worker 2274266301u, 4255175517u,
5121*993b0882SAndroid Build Coastguard Worker 2290169528u, 1793910997u,
5122*993b0882SAndroid Build Coastguard Worker 2188254024u, 354202001u,
5123*993b0882SAndroid Build Coastguard Worker 3864458796u, 4280290498u,
5124*993b0882SAndroid Build Coastguard Worker 1554419340u, 1733094688u,
5125*993b0882SAndroid Build Coastguard Worker 2010552302u, 1561807039u,
5126*993b0882SAndroid Build Coastguard Worker 664313606u, 2548990879u,
5127*993b0882SAndroid Build Coastguard Worker 1084699349u, 3233936866u,
5128*993b0882SAndroid Build Coastguard Worker 973895284u, 2386881969u,
5129*993b0882SAndroid Build Coastguard Worker 1831995860u, 2961465052u,
5130*993b0882SAndroid Build Coastguard Worker 1428704144u, 3269904970u,
5131*993b0882SAndroid Build Coastguard Worker 231648253u, 2602483763u,
5132*993b0882SAndroid Build Coastguard Worker 4125013173u, 3319187387u,
5133*993b0882SAndroid Build Coastguard Worker 3347011944u, 1892898231u,
5134*993b0882SAndroid Build Coastguard Worker 4019114049u, 868879116u,
5135*993b0882SAndroid Build Coastguard Worker 4085937045u, 2378411019u,
5136*993b0882SAndroid Build Coastguard Worker 1072588531u, 3547435717u,
5137*993b0882SAndroid Build Coastguard Worker 2208070766u, 1069899078u,
5138*993b0882SAndroid Build Coastguard Worker 3142980597u, 2337088907u,
5139*993b0882SAndroid Build Coastguard Worker 1593338562u, 919414554u,
5140*993b0882SAndroid Build Coastguard Worker 688077849u, 3625708135u,
5141*993b0882SAndroid Build Coastguard Worker 1472447348u, 1947711896u,
5142*993b0882SAndroid Build Coastguard Worker 3953006207u, 877438080u,
5143*993b0882SAndroid Build Coastguard Worker 845995820u, 3150361443u,
5144*993b0882SAndroid Build Coastguard Worker 3053496713u, 2484577841u,
5145*993b0882SAndroid Build Coastguard Worker 224271045u, 2914958001u,
5146*993b0882SAndroid Build Coastguard Worker 2682612949u, 806655563u,
5147*993b0882SAndroid Build Coastguard Worker 2436224507u, 1907729235u,
5148*993b0882SAndroid Build Coastguard Worker 2920583824u, 1251814062u,
5149*993b0882SAndroid Build Coastguard Worker 2070814520u, 4034325578u,
5150*993b0882SAndroid Build Coastguard Worker 497847539u, 2714317144u,
5151*993b0882SAndroid Build Coastguard Worker 385182008u, 640855184u,
5152*993b0882SAndroid Build Coastguard Worker 1327075087u, 1062468773u,
5153*993b0882SAndroid Build Coastguard Worker 1757405994u, 1374270191u,
5154*993b0882SAndroid Build Coastguard Worker 4263183176u, 3041193150u,
5155*993b0882SAndroid Build Coastguard Worker 1037871524u, 3633173991u,
5156*993b0882SAndroid Build Coastguard Worker 4231821821u, 2830131945u,
5157*993b0882SAndroid Build Coastguard Worker 3505072908u, 2830570613u,
5158*993b0882SAndroid Build Coastguard Worker 4195208715u, 575398021u,
5159*993b0882SAndroid Build Coastguard Worker 3992840257u, 3691788221u,
5160*993b0882SAndroid Build Coastguard Worker 1949847968u, 2999344380u,
5161*993b0882SAndroid Build Coastguard Worker 3183782163u, 3723754342u,
5162*993b0882SAndroid Build Coastguard Worker 759716128u, 3284107364u,
5163*993b0882SAndroid Build Coastguard Worker 1714496583u, 15918244u,
5164*993b0882SAndroid Build Coastguard Worker 820509475u, 2553936299u,
5165*993b0882SAndroid Build Coastguard Worker 2201876606u, 4237151697u,
5166*993b0882SAndroid Build Coastguard Worker 2605688266u, 3253705097u,
5167*993b0882SAndroid Build Coastguard Worker 1008333207u, 712158730u,
5168*993b0882SAndroid Build Coastguard Worker 1722280252u, 1933868287u,
5169*993b0882SAndroid Build Coastguard Worker 4152736859u, 2097020806u,
5170*993b0882SAndroid Build Coastguard Worker 584426382u, 2836501956u,
5171*993b0882SAndroid Build Coastguard Worker 2522777566u, 1996172430u,
5172*993b0882SAndroid Build Coastguard Worker 2122199776u, 1069285218u,
5173*993b0882SAndroid Build Coastguard Worker 1474209360u, 690831894u,
5174*993b0882SAndroid Build Coastguard Worker 107482532u, 3695525410u,
5175*993b0882SAndroid Build Coastguard Worker 670591796u, 768977505u,
5176*993b0882SAndroid Build Coastguard Worker 2412057331u, 3647886687u,
5177*993b0882SAndroid Build Coastguard Worker 3110327607u, 1072658422u,
5178*993b0882SAndroid Build Coastguard Worker 379861934u, 1557579480u,
5179*993b0882SAndroid Build Coastguard Worker 4124127129u, 2271365865u,
5180*993b0882SAndroid Build Coastguard Worker 3880613089u, 739218494u,
5181*993b0882SAndroid Build Coastguard Worker 547346027u, 388559045u,
5182*993b0882SAndroid Build Coastguard Worker 3147335977u, 176230425u,
5183*993b0882SAndroid Build Coastguard Worker 3094853730u, 2554321205u,
5184*993b0882SAndroid Build Coastguard Worker 1495176194u, 4093461535u,
5185*993b0882SAndroid Build Coastguard Worker 3521297827u, 4108148413u,
5186*993b0882SAndroid Build Coastguard Worker 1913727929u, 1177947623u,
5187*993b0882SAndroid Build Coastguard Worker 1911655402u, 1053371241u,
5188*993b0882SAndroid Build Coastguard Worker 3265708874u, 1266515850u,
5189*993b0882SAndroid Build Coastguard Worker 1045540427u, 3194420196u,
5190*993b0882SAndroid Build Coastguard Worker 3717104621u, 1144474110u,
5191*993b0882SAndroid Build Coastguard Worker 1464392345u, 52070157u,
5192*993b0882SAndroid Build Coastguard Worker 4144237690u, 3350490823u,
5193*993b0882SAndroid Build Coastguard Worker 4166253320u, 2747410691u,
5194*993b0882SAndroid Build Coastguard Worker };
5195*993b0882SAndroid Build Coastguard Worker
5196*993b0882SAndroid Build Coastguard Worker // Return false only if offset is -1 and a spot check of 3 hashes all yield 0.
Test(int offset,int len=0)5197*993b0882SAndroid Build Coastguard Worker bool Test(int offset, int len = 0) {
5198*993b0882SAndroid Build Coastguard Worker #undef Check
5199*993b0882SAndroid Build Coastguard Worker #undef IsAlive
5200*993b0882SAndroid Build Coastguard Worker
5201*993b0882SAndroid Build Coastguard Worker #define Check(x) do { \
5202*993b0882SAndroid Build Coastguard Worker bool ok = expected[index++] == (x); \
5203*993b0882SAndroid Build Coastguard Worker assert(ok); \
5204*993b0882SAndroid Build Coastguard Worker errors += !ok; \
5205*993b0882SAndroid Build Coastguard Worker } while (0)
5206*993b0882SAndroid Build Coastguard Worker
5207*993b0882SAndroid Build Coastguard Worker #define IsAlive(x) do { alive += IsNonZero(x); } while (0)
5208*993b0882SAndroid Build Coastguard Worker
5209*993b0882SAndroid Build Coastguard Worker // After the following line is where the uses of "Check" and such will go.
5210*993b0882SAndroid Build Coastguard Worker static int index = 0;
5211*993b0882SAndroid Build Coastguard Worker if (offset == -1) { int alive = 0; { uint64_t h = farmhashna::Hash64WithSeeds(data, len++, SEED0, SEED1); IsAlive(h >> 32); IsAlive((h << 32) >> 32); } { uint64_t h = farmhashna::Hash64WithSeed(data, len++, SEED); IsAlive(h >> 32); IsAlive((h << 32) >> 32); } { uint64_t h = farmhashna::Hash64(data, len++); IsAlive(h >> 32); IsAlive((h << 32) >> 32); } len -= 3; return alive > 0; }
5212*993b0882SAndroid Build Coastguard Worker { uint64_t h = farmhashna::Hash64WithSeeds(data + offset, len, SEED0, SEED1); Check(h >> 32); Check((h << 32) >> 32); }
5213*993b0882SAndroid Build Coastguard Worker { uint64_t h = farmhashna::Hash64WithSeed(data + offset, len, SEED); Check(h >> 32); Check((h << 32) >> 32); }
5214*993b0882SAndroid Build Coastguard Worker { uint64_t h = farmhashna::Hash64(data + offset, len); Check(h >> 32); Check((h << 32) >> 32); }
5215*993b0882SAndroid Build Coastguard Worker
5216*993b0882SAndroid Build Coastguard Worker return true;
5217*993b0882SAndroid Build Coastguard Worker #undef Check
5218*993b0882SAndroid Build Coastguard Worker #undef IsAlive
5219*993b0882SAndroid Build Coastguard Worker }
5220*993b0882SAndroid Build Coastguard Worker
RunTest()5221*993b0882SAndroid Build Coastguard Worker int RunTest() {
5222*993b0882SAndroid Build Coastguard Worker Setup();
5223*993b0882SAndroid Build Coastguard Worker int i = 0;
5224*993b0882SAndroid Build Coastguard Worker cout << "Running farmhashnaTest";
5225*993b0882SAndroid Build Coastguard Worker if (!Test(-1)) {
5226*993b0882SAndroid Build Coastguard Worker cout << "... Unavailable\n";
5227*993b0882SAndroid Build Coastguard Worker return NoteErrors();
5228*993b0882SAndroid Build Coastguard Worker }
5229*993b0882SAndroid Build Coastguard Worker // Good. The function is attempting to hash, so run the full test.
5230*993b0882SAndroid Build Coastguard Worker int errors_prior_to_test = errors;
5231*993b0882SAndroid Build Coastguard Worker for ( ; i < kTestSize - 1; i++) {
5232*993b0882SAndroid Build Coastguard Worker Test(i * i, i);
5233*993b0882SAndroid Build Coastguard Worker }
5234*993b0882SAndroid Build Coastguard Worker for ( ; i < kDataSize; i += i / 7) {
5235*993b0882SAndroid Build Coastguard Worker Test(0, i);
5236*993b0882SAndroid Build Coastguard Worker }
5237*993b0882SAndroid Build Coastguard Worker Test(0, kDataSize);
5238*993b0882SAndroid Build Coastguard Worker cout << (errors == errors_prior_to_test ? "... OK\n" : "... Failed\n");
5239*993b0882SAndroid Build Coastguard Worker return NoteErrors();
5240*993b0882SAndroid Build Coastguard Worker }
5241*993b0882SAndroid Build Coastguard Worker
5242*993b0882SAndroid Build Coastguard Worker #else
5243*993b0882SAndroid Build Coastguard Worker
5244*993b0882SAndroid Build Coastguard Worker // After the following line is where the code to print hash codes will go.
Dump(int offset,int len)5245*993b0882SAndroid Build Coastguard Worker void Dump(int offset, int len) {
5246*993b0882SAndroid Build Coastguard Worker { uint64_t h = farmhashna::Hash64WithSeeds(data + offset, len, SEED0, SEED1); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u," << endl; }
5247*993b0882SAndroid Build Coastguard Worker { uint64_t h = farmhashna::Hash64WithSeed(data + offset, len, SEED); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u," << endl; }
5248*993b0882SAndroid Build Coastguard Worker { uint64_t h = farmhashna::Hash64(data + offset, len); cout << (h >> 32) << "u, " << ((h << 32) >> 32) << "u," << endl; }
5249*993b0882SAndroid Build Coastguard Worker }
5250*993b0882SAndroid Build Coastguard Worker
5251*993b0882SAndroid Build Coastguard Worker #endif
5252*993b0882SAndroid Build Coastguard Worker
5253*993b0882SAndroid Build Coastguard Worker #undef SEED
5254*993b0882SAndroid Build Coastguard Worker #undef SEED1
5255*993b0882SAndroid Build Coastguard Worker #undef SEED0
5256*993b0882SAndroid Build Coastguard Worker
5257*993b0882SAndroid Build Coastguard Worker } // namespace farmhashnaTest
5258*993b0882SAndroid Build Coastguard Worker
5259*993b0882SAndroid Build Coastguard Worker #if TESTING
5260*993b0882SAndroid Build Coastguard Worker
5261*993b0882SAndroid Build Coastguard Worker static int farmhashnaTestResult = farmhashnaTest::RunTest();
5262*993b0882SAndroid Build Coastguard Worker
5263*993b0882SAndroid Build Coastguard Worker #else
main(int argc,char ** argv)5264*993b0882SAndroid Build Coastguard Worker int main(int argc, char** argv) {
5265*993b0882SAndroid Build Coastguard Worker Setup();
5266*993b0882SAndroid Build Coastguard Worker cout << "uint32_t expected[] = {\n";
5267*993b0882SAndroid Build Coastguard Worker int i = 0;
5268*993b0882SAndroid Build Coastguard Worker for ( ; i < kTestSize - 1; i++) {
5269*993b0882SAndroid Build Coastguard Worker farmhashnaTest::Dump(i * i, i);
5270*993b0882SAndroid Build Coastguard Worker }
5271*993b0882SAndroid Build Coastguard Worker for ( ; i < kDataSize; i += i / 7) {
5272*993b0882SAndroid Build Coastguard Worker farmhashnaTest::Dump(0, i);
5273*993b0882SAndroid Build Coastguard Worker }
5274*993b0882SAndroid Build Coastguard Worker farmhashnaTest::Dump(0, kDataSize);
5275*993b0882SAndroid Build Coastguard Worker cout << "};\n";
5276*993b0882SAndroid Build Coastguard Worker }
5277*993b0882SAndroid Build Coastguard Worker #endif
5278*993b0882SAndroid Build Coastguard Worker #ifndef FARMHASH_SELF_TEST_GUARD
5279*993b0882SAndroid Build Coastguard Worker #define FARMHASH_SELF_TEST_GUARD
5280*993b0882SAndroid Build Coastguard Worker #include <string.h>
5281*993b0882SAndroid Build Coastguard Worker #include <cstdio>
5282*993b0882SAndroid Build Coastguard Worker #include <iostream>
5283*993b0882SAndroid Build Coastguard Worker
5284*993b0882SAndroid Build Coastguard Worker using std::cout;
5285*993b0882SAndroid Build Coastguard Worker using std::cerr;
5286*993b0882SAndroid Build Coastguard Worker using std::endl;
5287*993b0882SAndroid Build Coastguard Worker using std::hex;
5288*993b0882SAndroid Build Coastguard Worker
5289*993b0882SAndroid Build Coastguard Worker static const uint64_t kSeed0 = 1234567;
5290*993b0882SAndroid Build Coastguard Worker static const uint64_t kSeed1 = k0;
5291*993b0882SAndroid Build Coastguard Worker static const int kDataSize = 1 << 20;
5292*993b0882SAndroid Build Coastguard Worker static const int kTestSize = 300;
5293*993b0882SAndroid Build Coastguard Worker #define kSeed128 Uint128(kSeed0, kSeed1)
5294*993b0882SAndroid Build Coastguard Worker
5295*993b0882SAndroid Build Coastguard Worker static char data[kDataSize];
5296*993b0882SAndroid Build Coastguard Worker
5297*993b0882SAndroid Build Coastguard Worker static int completed_self_tests = 0;
5298*993b0882SAndroid Build Coastguard Worker static int errors = 0;
5299*993b0882SAndroid Build Coastguard Worker
5300*993b0882SAndroid Build Coastguard Worker // Initialize data to pseudorandom values.
Setup()5301*993b0882SAndroid Build Coastguard Worker void Setup() {
5302*993b0882SAndroid Build Coastguard Worker if (completed_self_tests == 0) {
5303*993b0882SAndroid Build Coastguard Worker uint64_t a = 9;
5304*993b0882SAndroid Build Coastguard Worker uint64_t b = 777;
5305*993b0882SAndroid Build Coastguard Worker for (int i = 0; i < kDataSize; i++) {
5306*993b0882SAndroid Build Coastguard Worker a += b;
5307*993b0882SAndroid Build Coastguard Worker b += a;
5308*993b0882SAndroid Build Coastguard Worker a = (a ^ (a >> 41)) * k0;
5309*993b0882SAndroid Build Coastguard Worker b = (b ^ (b >> 41)) * k0 + i;
5310*993b0882SAndroid Build Coastguard Worker uint8_t u = b >> 37;
5311*993b0882SAndroid Build Coastguard Worker memcpy(data + i, &u, 1); // uint8_t -> char
5312*993b0882SAndroid Build Coastguard Worker }
5313*993b0882SAndroid Build Coastguard Worker }
5314*993b0882SAndroid Build Coastguard Worker }
5315*993b0882SAndroid Build Coastguard Worker
NoteErrors()5316*993b0882SAndroid Build Coastguard Worker int NoteErrors() {
5317*993b0882SAndroid Build Coastguard Worker #define NUM_SELF_TESTS 6
5318*993b0882SAndroid Build Coastguard Worker if (++completed_self_tests == NUM_SELF_TESTS)
5319*993b0882SAndroid Build Coastguard Worker std::exit(errors > 0);
5320*993b0882SAndroid Build Coastguard Worker return errors;
5321*993b0882SAndroid Build Coastguard Worker }
5322*993b0882SAndroid Build Coastguard Worker
IsNonZero(T x)5323*993b0882SAndroid Build Coastguard Worker template <typename T> inline bool IsNonZero(T x) {
5324*993b0882SAndroid Build Coastguard Worker return x != 0;
5325*993b0882SAndroid Build Coastguard Worker }
5326*993b0882SAndroid Build Coastguard Worker
IsNonZero(uint128_t x)5327*993b0882SAndroid Build Coastguard Worker template <> inline bool IsNonZero<uint128_t>(uint128_t x) {
5328*993b0882SAndroid Build Coastguard Worker return x != Uint128(0, 0);
5329*993b0882SAndroid Build Coastguard Worker }
5330*993b0882SAndroid Build Coastguard Worker
5331*993b0882SAndroid Build Coastguard Worker #endif // FARMHASH_SELF_TEST_GUARD
5332*993b0882SAndroid Build Coastguard Worker
5333*993b0882SAndroid Build Coastguard Worker namespace farmhashnsTest {
5334*993b0882SAndroid Build Coastguard Worker
CreateSeed(int offset,int salt)5335*993b0882SAndroid Build Coastguard Worker uint32_t CreateSeed(int offset, int salt) {
5336*993b0882SAndroid Build Coastguard Worker uint32_t h = static_cast<uint32_t>(salt & 0xffffffff);
5337*993b0882SAndroid Build Coastguard Worker h = h * c1;
5338*993b0882SAndroid Build Coastguard Worker h ^= (h >> 17);
5339*993b0882SAndroid Build Coastguard Worker h = h * c1;
5340*993b0882SAndroid Build Coastguard Worker h ^= (h >> 17);
5341*993b0882SAndroid Build Coastguard Worker h = h * c1;
5342*993b0882SAndroid Build Coastguard Worker h ^= (h >> 17);
5343*993b0882SAndroid Build Coastguard Worker h += static_cast<uint32_t>(offset & 0xffffffff);
5344*993b0882SAndroid Build Coastguard Worker h = h * c1;
5345*993b0882SAndroid Build Coastguard Worker h ^= (h >> 17);
5346*993b0882SAndroid Build Coastguard Worker h = h * c1;
5347*993b0882SAndroid Build Coastguard Worker h ^= (h >> 17);
5348*993b0882SAndroid Build Coastguard Worker h = h * c1;
5349*993b0882SAndroid Build Coastguard Worker h ^= (h >> 17);
5350*993b0882SAndroid Build Coastguard Worker return h;
5351*993b0882SAndroid Build Coastguard Worker }
5352*993b0882SAndroid Build Coastguard Worker
5353*993b0882SAndroid Build Coastguard Worker #undef SEED
5354*993b0882SAndroid Build Coastguard Worker #undef SEED1
5355*993b0882SAndroid Build Coastguard Worker #undef SEED0
5356*993b0882SAndroid Build Coastguard Worker #define SEED CreateSeed(offset, -1)
5357*993b0882SAndroid Build Coastguard Worker #define SEED0 CreateSeed(offset, 0)
5358*993b0882SAndroid Build Coastguard Worker #define SEED1 CreateSeed(offset, 1)
5359*993b0882SAndroid Build Coastguard Worker
5360*993b0882SAndroid Build Coastguard Worker #undef TESTING
5361*993b0882SAndroid Build Coastguard Worker #define TESTING 1
5362*993b0882SAndroid Build Coastguard Worker #if TESTING
5363*993b0882SAndroid Build Coastguard Worker uint32_t expected[] = {
5364*993b0882SAndroid Build Coastguard Worker 2681724312u,
5365*993b0882SAndroid Build Coastguard Worker 797982799u,
5366*993b0882SAndroid Build Coastguard Worker 921001710u,
5367*993b0882SAndroid Build Coastguard Worker 2134990486u,
5368*993b0882SAndroid Build Coastguard Worker 2244477846u,
5369*993b0882SAndroid Build Coastguard Worker 2992121793u,
5370*993b0882SAndroid Build Coastguard Worker 3943596029u,
5371*993b0882SAndroid Build Coastguard Worker 452431531u,
5372*993b0882SAndroid Build Coastguard Worker 2557197665u,
5373*993b0882SAndroid Build Coastguard Worker 2532580744u,
5374*993b0882SAndroid Build Coastguard Worker 3099673830u,
5375*993b0882SAndroid Build Coastguard Worker 3696623795u,
5376*993b0882SAndroid Build Coastguard Worker 3281581178u,
5377*993b0882SAndroid Build Coastguard Worker 1882212500u,
5378*993b0882SAndroid Build Coastguard Worker 275903667u,
5379*993b0882SAndroid Build Coastguard Worker 3033004529u,
5380*993b0882SAndroid Build Coastguard Worker 1402319660u,
5381*993b0882SAndroid Build Coastguard Worker 2699376854u,
5382*993b0882SAndroid Build Coastguard Worker 4222949502u,
5383*993b0882SAndroid Build Coastguard Worker 1712034059u,
5384*993b0882SAndroid Build Coastguard Worker 1330324210u,
5385*993b0882SAndroid Build Coastguard Worker 2921867846u,
5386*993b0882SAndroid Build Coastguard Worker 1728752234u,
5387*993b0882SAndroid Build Coastguard Worker 326029180u,
5388*993b0882SAndroid Build Coastguard Worker 3349570000u,
5389*993b0882SAndroid Build Coastguard Worker 1612122221u,
5390*993b0882SAndroid Build Coastguard Worker 1646032583u,
5391*993b0882SAndroid Build Coastguard Worker 1432476832u,
5392*993b0882SAndroid Build Coastguard Worker 3552092450u,
5393*993b0882SAndroid Build Coastguard Worker 1499109081u,
5394*993b0882SAndroid Build Coastguard Worker 1554038301u,
5395*993b0882SAndroid Build Coastguard Worker 3190844552u,
5396*993b0882SAndroid Build Coastguard Worker 540224401u,
5397*993b0882SAndroid Build Coastguard Worker 489963606u,
5398*993b0882SAndroid Build Coastguard Worker 1562872448u,
5399*993b0882SAndroid Build Coastguard Worker 2128624475u,
5400*993b0882SAndroid Build Coastguard Worker 1262831810u,
5401*993b0882SAndroid Build Coastguard Worker 1672724608u,
5402*993b0882SAndroid Build Coastguard Worker 2077310004u,
5403*993b0882SAndroid Build Coastguard Worker 1911523866u,
5404*993b0882SAndroid Build Coastguard Worker 294527927u,
5405*993b0882SAndroid Build Coastguard Worker 1389770549u,
5406*993b0882SAndroid Build Coastguard Worker 2026137563u,
5407*993b0882SAndroid Build Coastguard Worker 629449419u,
5408*993b0882SAndroid Build Coastguard Worker 2489287368u,
5409*993b0882SAndroid Build Coastguard Worker 645684964u,
5410*993b0882SAndroid Build Coastguard Worker 230403464u,
5411*993b0882SAndroid Build Coastguard Worker 3272648435u,
5412*993b0882SAndroid Build Coastguard Worker 165370827u,
5413*993b0882SAndroid Build Coastguard Worker 1230085527u,
5414*993b0882SAndroid Build Coastguard Worker 3628174014u,
5415*993b0882SAndroid Build Coastguard Worker 851743255u,
5416*993b0882SAndroid Build Coastguard Worker 1554380634u,
5417*993b0882SAndroid Build Coastguard Worker 3667013118u,
5418*993b0882SAndroid Build Coastguard Worker 2290487377u,
5419*993b0882SAndroid Build Coastguard Worker 1909203251u,
5420*993b0882SAndroid Build Coastguard Worker 1498556724u,
5421*993b0882SAndroid Build Coastguard Worker 4165088768u,
5422*993b0882SAndroid Build Coastguard Worker 197618179u,
5423*993b0882SAndroid Build Coastguard Worker 914413116u,
5424*993b0882SAndroid Build Coastguard Worker 1913303225u,
5425*993b0882SAndroid Build Coastguard Worker 3117299654u,
5426*993b0882SAndroid Build Coastguard Worker 1357272220u,
5427*993b0882SAndroid Build Coastguard Worker 507436733u,
5428*993b0882SAndroid Build Coastguard Worker 1413396341u,
5429*993b0882SAndroid Build Coastguard Worker 146044391u,
5430*993b0882SAndroid Build Coastguard Worker 429095991u,
5431*993b0882SAndroid Build Coastguard Worker 1578546616u,
5432*993b0882SAndroid Build Coastguard Worker 366414107u,
5433*993b0882SAndroid Build Coastguard Worker 1207522198u,
5434*993b0882SAndroid Build Coastguard Worker 1684583131u,
5435*993b0882SAndroid Build Coastguard Worker 1157614300u,
5436*993b0882SAndroid Build Coastguard Worker 520792961u,
5437*993b0882SAndroid Build Coastguard Worker 586863115u,
5438*993b0882SAndroid Build Coastguard Worker 4033596884u,
5439*993b0882SAndroid Build Coastguard Worker 4140791139u,
5440*993b0882SAndroid Build Coastguard Worker 3242407770u,
5441*993b0882SAndroid Build Coastguard Worker 232064808u,
5442*993b0882SAndroid Build Coastguard Worker 816692935u,
5443*993b0882SAndroid Build Coastguard Worker 3748861010u,
5444*993b0882SAndroid Build Coastguard Worker 517646945u,
5445*993b0882SAndroid Build Coastguard Worker 648000590u,
5446*993b0882SAndroid Build Coastguard Worker 3047062993u,
5447*993b0882SAndroid Build Coastguard Worker 4027776454u,
5448*993b0882SAndroid Build Coastguard Worker 382936554u,
5449*993b0882SAndroid Build Coastguard Worker 1973395102u,
5450*993b0882SAndroid Build Coastguard Worker 2826990641u,
5451*993b0882SAndroid Build Coastguard Worker 1029055034u,
5452*993b0882SAndroid Build Coastguard Worker 1758123094u,
5453*993b0882SAndroid Build Coastguard Worker 325737734u,
5454*993b0882SAndroid Build Coastguard Worker 3338548567u,
5455*993b0882SAndroid Build Coastguard Worker 3698087965u,
5456*993b0882SAndroid Build Coastguard Worker 3198590202u,
5457*993b0882SAndroid Build Coastguard Worker 191910725u,
5458*993b0882SAndroid Build Coastguard Worker 542201663u,
5459*993b0882SAndroid Build Coastguard Worker 2135941665u,
5460*993b0882SAndroid Build Coastguard Worker 3948351189u,
5461*993b0882SAndroid Build Coastguard Worker 3252374102u,
5462*993b0882SAndroid Build Coastguard Worker 1467786451u,
5463*993b0882SAndroid Build Coastguard Worker 3444053918u,
5464*993b0882SAndroid Build Coastguard Worker 1062268187u,
5465*993b0882SAndroid Build Coastguard Worker 4081398201u,
5466*993b0882SAndroid Build Coastguard Worker 2560479831u,
5467*993b0882SAndroid Build Coastguard Worker 4225182569u,
5468*993b0882SAndroid Build Coastguard Worker 3067277639u,
5469*993b0882SAndroid Build Coastguard Worker 1709989541u,
5470*993b0882SAndroid Build Coastguard Worker 59581167u,
5471*993b0882SAndroid Build Coastguard Worker 3639843023u,
5472*993b0882SAndroid Build Coastguard Worker 4189944477u,
5473*993b0882SAndroid Build Coastguard Worker 877580602u,
5474*993b0882SAndroid Build Coastguard Worker 2062343506u,
5475*993b0882SAndroid Build Coastguard Worker 3762572073u,
5476*993b0882SAndroid Build Coastguard Worker 3284356565u,
5477*993b0882SAndroid Build Coastguard Worker 732225574u,
5478*993b0882SAndroid Build Coastguard Worker 3532596884u,
5479*993b0882SAndroid Build Coastguard Worker 1652884780u,
5480*993b0882SAndroid Build Coastguard Worker 259034107u,
5481*993b0882SAndroid Build Coastguard Worker 1426140634u,
5482*993b0882SAndroid Build Coastguard Worker 3200749877u,
5483*993b0882SAndroid Build Coastguard Worker 24035717u,
5484*993b0882SAndroid Build Coastguard Worker 1115203611u,
5485*993b0882SAndroid Build Coastguard Worker 3146815575u,
5486*993b0882SAndroid Build Coastguard Worker 1778459926u,
5487*993b0882SAndroid Build Coastguard Worker 579625482u,
5488*993b0882SAndroid Build Coastguard Worker 2457048126u,
5489*993b0882SAndroid Build Coastguard Worker 389846205u,
5490*993b0882SAndroid Build Coastguard Worker 862072556u,
5491*993b0882SAndroid Build Coastguard Worker 1481069623u,
5492*993b0882SAndroid Build Coastguard Worker 701920051u,
5493*993b0882SAndroid Build Coastguard Worker 3388062747u,
5494*993b0882SAndroid Build Coastguard Worker 1005815394u,
5495*993b0882SAndroid Build Coastguard Worker 734239551u,
5496*993b0882SAndroid Build Coastguard Worker 1279682138u,
5497*993b0882SAndroid Build Coastguard Worker 49703572u,
5498*993b0882SAndroid Build Coastguard Worker 2509302188u,
5499*993b0882SAndroid Build Coastguard Worker 2815915291u,
5500*993b0882SAndroid Build Coastguard Worker 4017598378u,
5501*993b0882SAndroid Build Coastguard Worker 3035635454u,
5502*993b0882SAndroid Build Coastguard Worker 12886044u,
5503*993b0882SAndroid Build Coastguard Worker 2627383582u,
5504*993b0882SAndroid Build Coastguard Worker 855990313u,
5505*993b0882SAndroid Build Coastguard Worker 263366740u,
5506*993b0882SAndroid Build Coastguard Worker 3405007814u,
5507*993b0882SAndroid Build Coastguard Worker 1190977418u,
5508*993b0882SAndroid Build Coastguard Worker 2514169310u,
5509*993b0882SAndroid Build Coastguard Worker 4129538640u,
5510*993b0882SAndroid Build Coastguard Worker 3625507637u,
5511*993b0882SAndroid Build Coastguard Worker 2993032712u,
5512*993b0882SAndroid Build Coastguard Worker 2183845740u,
5513*993b0882SAndroid Build Coastguard Worker 1116991810u,
5514*993b0882SAndroid Build Coastguard Worker 462795667u,
5515*993b0882SAndroid Build Coastguard Worker 1343017609u,
5516*993b0882SAndroid Build Coastguard Worker 25485284u,
5517*993b0882SAndroid Build Coastguard Worker 1623631848u,
5518*993b0882SAndroid Build Coastguard Worker 573836428u,
5519*993b0882SAndroid Build Coastguard Worker 1937681565u,
5520*993b0882SAndroid Build Coastguard Worker 1668258120u,
5521*993b0882SAndroid Build Coastguard Worker 954762543u,
5522*993b0882SAndroid Build Coastguard Worker 732086117u,
5523*993b0882SAndroid Build Coastguard Worker 2936126607u,
5524*993b0882SAndroid Build Coastguard Worker 3171090854u,
5525*993b0882SAndroid Build Coastguard Worker 1927385370u,
5526*993b0882SAndroid Build Coastguard Worker 1492209542u,
5527*993b0882SAndroid Build Coastguard Worker 2148675559u,
5528*993b0882SAndroid Build Coastguard Worker 2760941207u,
5529*993b0882SAndroid Build Coastguard Worker 1338083267u,
5530*993b0882SAndroid Build Coastguard Worker 314727461u,
5531*993b0882SAndroid Build Coastguard Worker 2084630531u,
5532*993b0882SAndroid Build Coastguard Worker 3129033323u,
5533*993b0882SAndroid Build Coastguard Worker 636616055u,
5534*993b0882SAndroid Build Coastguard Worker 470463518u,
5535*993b0882SAndroid Build Coastguard Worker 408721884u,
5536*993b0882SAndroid Build Coastguard Worker 357324860u,
5537*993b0882SAndroid Build Coastguard Worker 2691859523u,
5538*993b0882SAndroid Build Coastguard Worker 1185564327u,
5539*993b0882SAndroid Build Coastguard Worker 1975527044u,
5540*993b0882SAndroid Build Coastguard Worker 1943802836u,
5541*993b0882SAndroid Build Coastguard Worker 1490330107u,
5542*993b0882SAndroid Build Coastguard Worker 448403661u,
5543*993b0882SAndroid Build Coastguard Worker 1910401882u,
5544*993b0882SAndroid Build Coastguard Worker 3201262636u,
5545*993b0882SAndroid Build Coastguard Worker 2554452696u,
5546*993b0882SAndroid Build Coastguard Worker 1852004679u,
5547*993b0882SAndroid Build Coastguard Worker 2803250686u,
5548*993b0882SAndroid Build Coastguard Worker 1022551180u,
5549*993b0882SAndroid Build Coastguard Worker 839529273u,
5550*993b0882SAndroid Build Coastguard Worker 2597259793u,
5551*993b0882SAndroid Build Coastguard Worker 3909443124u,
5552*993b0882SAndroid Build Coastguard Worker 2711436388u,
5553*993b0882SAndroid Build Coastguard Worker 837475154u,
5554*993b0882SAndroid Build Coastguard Worker 1068395209u,
5555*993b0882SAndroid Build Coastguard Worker 484603494u,
5556*993b0882SAndroid Build Coastguard Worker 3914002299u,
5557*993b0882SAndroid Build Coastguard Worker 268427550u,
5558*993b0882SAndroid Build Coastguard Worker 2914011058u,
5559*993b0882SAndroid Build Coastguard Worker 2849988118u,
5560*993b0882SAndroid Build Coastguard Worker 3406991497u,
5561*993b0882SAndroid Build Coastguard Worker 2102063419u,
5562*993b0882SAndroid Build Coastguard Worker 1246595599u,
5563*993b0882SAndroid Build Coastguard Worker 1539151988u,
5564*993b0882SAndroid Build Coastguard Worker 991511607u,
5565*993b0882SAndroid Build Coastguard Worker 2005032160u,
5566*993b0882SAndroid Build Coastguard Worker 164940926u,
5567*993b0882SAndroid Build Coastguard Worker 116647396u,
5568*993b0882SAndroid Build Coastguard Worker 1764165478u,
5569*993b0882SAndroid Build Coastguard Worker 2159170082u,
5570*993b0882SAndroid Build Coastguard Worker 1723308975u,
5571*993b0882SAndroid Build Coastguard Worker 2017579106u,
5572*993b0882SAndroid Build Coastguard Worker 2264728166u,
5573*993b0882SAndroid Build Coastguard Worker 1694443528u,
5574*993b0882SAndroid Build Coastguard Worker 4058183171u,
5575*993b0882SAndroid Build Coastguard Worker 505662155u,
5576*993b0882SAndroid Build Coastguard Worker 1898176786u,
5577*993b0882SAndroid Build Coastguard Worker 1511077569u,
5578*993b0882SAndroid Build Coastguard Worker 2055059789u,
5579*993b0882SAndroid Build Coastguard Worker 2089123665u,
5580*993b0882SAndroid Build Coastguard Worker 3204250304u,
5581*993b0882SAndroid Build Coastguard Worker 1120017626u,
5582*993b0882SAndroid Build Coastguard Worker 780634378u,
5583*993b0882SAndroid Build Coastguard Worker 4029205195u,
5584*993b0882SAndroid Build Coastguard Worker 1953796601u,
5585*993b0882SAndroid Build Coastguard Worker 136118734u,
5586*993b0882SAndroid Build Coastguard Worker 3063437608u,
5587*993b0882SAndroid Build Coastguard Worker 1403506686u,
5588*993b0882SAndroid Build Coastguard Worker 4055855649u,
5589*993b0882SAndroid Build Coastguard Worker 2562064338u,
5590*993b0882SAndroid Build Coastguard Worker 2858726767u,
5591*993b0882SAndroid Build Coastguard Worker 3071338162u,
5592*993b0882SAndroid Build Coastguard Worker 1189614342u,
5593*993b0882SAndroid Build Coastguard Worker 771592405u,
5594*993b0882SAndroid Build Coastguard Worker 1941874618u,
5595*993b0882SAndroid Build Coastguard Worker 4032960199u,
5596*993b0882SAndroid Build Coastguard Worker 752188080u,
5597*993b0882SAndroid Build Coastguard Worker 308584855u,
5598*993b0882SAndroid Build Coastguard Worker 3760952096u,
5599*993b0882SAndroid Build Coastguard Worker 2565680167u,
5600*993b0882SAndroid Build Coastguard Worker 3471066607u,
5601*993b0882SAndroid Build Coastguard Worker 3770488806u,
5602*993b0882SAndroid Build Coastguard Worker 3738784936u,
5603*993b0882SAndroid Build Coastguard Worker 1255084262u,
5604*993b0882SAndroid Build Coastguard Worker 1831557743u,
5605*993b0882SAndroid Build Coastguard Worker 54945052u,
5606*993b0882SAndroid Build Coastguard Worker 3442180039u,
5607*993b0882SAndroid Build Coastguard Worker 2432427547u,
5608*993b0882SAndroid Build Coastguard Worker 1356028512u,
5609*993b0882SAndroid Build Coastguard Worker 1280920000u,
5610*993b0882SAndroid Build Coastguard Worker 4135481831u,
5611*993b0882SAndroid Build Coastguard Worker 1121403845u,
5612*993b0882SAndroid Build Coastguard Worker 3293015483u,
5613*993b0882SAndroid Build Coastguard Worker 713121337u,
5614*993b0882SAndroid Build Coastguard Worker 2976737859u,
5615*993b0882SAndroid Build Coastguard Worker 927011680u,
5616*993b0882SAndroid Build Coastguard Worker 2118505126u,
5617*993b0882SAndroid Build Coastguard Worker 1958963937u,
5618*993b0882SAndroid Build Coastguard Worker 910892050u,
5619*993b0882SAndroid Build Coastguard Worker 4075249328u,
5620*993b0882SAndroid Build Coastguard Worker 1240000030u,
5621*993b0882SAndroid Build Coastguard Worker 3026358429u,
5622*993b0882SAndroid Build Coastguard Worker 1241665335u,
5623*993b0882SAndroid Build Coastguard Worker 3615577014u,
5624*993b0882SAndroid Build Coastguard Worker 2296824134u,
5625*993b0882SAndroid Build Coastguard Worker 3087190425u,
5626*993b0882SAndroid Build Coastguard Worker 1034244398u,
5627*993b0882SAndroid Build Coastguard Worker 2515339233u,
5628*993b0882SAndroid Build Coastguard Worker 2502657424u,
5629*993b0882SAndroid Build Coastguard Worker 460237542u,
5630*993b0882SAndroid Build Coastguard Worker 1808504491u,
5631*993b0882SAndroid Build Coastguard Worker 2069753399u,
5632*993b0882SAndroid Build Coastguard Worker 3292597295u,
5633*993b0882SAndroid Build Coastguard Worker 356742959u,
5634*993b0882SAndroid Build Coastguard Worker 3248055817u,
5635*993b0882SAndroid Build Coastguard Worker 1750561299u,
5636*993b0882SAndroid Build Coastguard Worker 3810297651u,
5637*993b0882SAndroid Build Coastguard Worker 3384018814u,
5638*993b0882SAndroid Build Coastguard Worker 2316548367u,
5639*993b0882SAndroid Build Coastguard Worker 451656820u,
5640*993b0882SAndroid Build Coastguard Worker 1745659881u,
5641*993b0882SAndroid Build Coastguard Worker 2390172694u,
5642*993b0882SAndroid Build Coastguard Worker 4102497288u,
5643*993b0882SAndroid Build Coastguard Worker 164402616u,
5644*993b0882SAndroid Build Coastguard Worker 3861555476u,
5645*993b0882SAndroid Build Coastguard Worker 1767810825u,
5646*993b0882SAndroid Build Coastguard Worker 472304191u,
5647*993b0882SAndroid Build Coastguard Worker 3323383489u,
5648*993b0882SAndroid Build Coastguard Worker 2963590112u,
5649*993b0882SAndroid Build Coastguard Worker 207428029u,
5650*993b0882SAndroid Build Coastguard Worker 3472047571u,
5651*993b0882SAndroid Build Coastguard Worker 2360400900u,
5652*993b0882SAndroid Build Coastguard Worker 884421165u,
5653*993b0882SAndroid Build Coastguard Worker 1377764574u,
5654*993b0882SAndroid Build Coastguard Worker 3604258095u,
5655*993b0882SAndroid Build Coastguard Worker 1099809675u,
5656*993b0882SAndroid Build Coastguard Worker 3741651161u,
5657*993b0882SAndroid Build Coastguard Worker 3542220540u,
5658*993b0882SAndroid Build Coastguard Worker 2521038253u,
5659*993b0882SAndroid Build Coastguard Worker 337070226u,
5660*993b0882SAndroid Build Coastguard Worker 641040550u,
5661*993b0882SAndroid Build Coastguard Worker 1306761320u,
5662*993b0882SAndroid Build Coastguard Worker 1383997679u,
5663*993b0882SAndroid Build Coastguard Worker 4109252858u,
5664*993b0882SAndroid Build Coastguard Worker 2252520167u,
5665*993b0882SAndroid Build Coastguard Worker 1788337208u,
5666*993b0882SAndroid Build Coastguard Worker 1012411364u,
5667*993b0882SAndroid Build Coastguard Worker 2911512007u,
5668*993b0882SAndroid Build Coastguard Worker 4294520281u,
5669*993b0882SAndroid Build Coastguard Worker 3071359622u,
5670*993b0882SAndroid Build Coastguard Worker 2357687350u,
5671*993b0882SAndroid Build Coastguard Worker 3898950547u,
5672*993b0882SAndroid Build Coastguard Worker 1027027239u,
5673*993b0882SAndroid Build Coastguard Worker 2040551642u,
5674*993b0882SAndroid Build Coastguard Worker 2137668425u,
5675*993b0882SAndroid Build Coastguard Worker 3565689036u,
5676*993b0882SAndroid Build Coastguard Worker 3589545214u,
5677*993b0882SAndroid Build Coastguard Worker 1864569342u,
5678*993b0882SAndroid Build Coastguard Worker 3153745937u,
5679*993b0882SAndroid Build Coastguard Worker 490608221u,
5680*993b0882SAndroid Build Coastguard Worker 1604548872u,
5681*993b0882SAndroid Build Coastguard Worker 3287246572u,
5682*993b0882SAndroid Build Coastguard Worker 1713154780u,
5683*993b0882SAndroid Build Coastguard Worker 500120236u,
5684*993b0882SAndroid Build Coastguard Worker 2489716881u,
5685*993b0882SAndroid Build Coastguard Worker 1561519055u,
5686*993b0882SAndroid Build Coastguard Worker 1005636939u,
5687*993b0882SAndroid Build Coastguard Worker 2774151984u,
5688*993b0882SAndroid Build Coastguard Worker 3144450144u,
5689*993b0882SAndroid Build Coastguard Worker 96459446u,
5690*993b0882SAndroid Build Coastguard Worker 250533792u,
5691*993b0882SAndroid Build Coastguard Worker 4237425634u,
5692*993b0882SAndroid Build Coastguard Worker 1187061987u,
5693*993b0882SAndroid Build Coastguard Worker 4100839753u,
5694*993b0882SAndroid Build Coastguard Worker 3784939568u,
5695*993b0882SAndroid Build Coastguard Worker 4246879223u,
5696*993b0882SAndroid Build Coastguard Worker 124492786u,
5697*993b0882SAndroid Build Coastguard Worker 3476334357u,
5698*993b0882SAndroid Build Coastguard Worker 820852908u,
5699*993b0882SAndroid Build Coastguard Worker 2511026735u,
5700*993b0882SAndroid Build Coastguard Worker 1528632094u,
5701*993b0882SAndroid Build Coastguard Worker 556796152u,
5702*993b0882SAndroid Build Coastguard Worker 3692729434u,
5703*993b0882SAndroid Build Coastguard Worker 2913077464u,
5704*993b0882SAndroid Build Coastguard Worker 3158127917u,
5705*993b0882SAndroid Build Coastguard Worker 4046477658u,
5706*993b0882SAndroid Build Coastguard Worker 692059110u,
5707*993b0882SAndroid Build Coastguard Worker 990407433u,
5708*993b0882SAndroid Build Coastguard Worker 1540183799u,
5709*993b0882SAndroid Build Coastguard Worker 2926590471u,
5710*993b0882SAndroid Build Coastguard Worker 3178387550u,
5711*993b0882SAndroid Build Coastguard Worker 82077489u,
5712*993b0882SAndroid Build Coastguard Worker 2853224222u,
5713*993b0882SAndroid Build Coastguard Worker 4190838199u,
5714*993b0882SAndroid Build Coastguard Worker 4095846095u,
5715*993b0882SAndroid Build Coastguard Worker 1583801700u,
5716*993b0882SAndroid Build Coastguard Worker 432327540u,
5717*993b0882SAndroid Build Coastguard Worker 3912423882u,
5718*993b0882SAndroid Build Coastguard Worker 4189387259u,
5719*993b0882SAndroid Build Coastguard Worker 2540185277u,
5720*993b0882SAndroid Build Coastguard Worker 1679786240u,
5721*993b0882SAndroid Build Coastguard Worker 4051584612u,
5722*993b0882SAndroid Build Coastguard Worker 3454981037u,
5723*993b0882SAndroid Build Coastguard Worker 1675560450u,
5724*993b0882SAndroid Build Coastguard Worker 2222395828u,
5725*993b0882SAndroid Build Coastguard Worker 405251683u,
5726*993b0882SAndroid Build Coastguard Worker 1385561439u,
5727*993b0882SAndroid Build Coastguard Worker 4071581802u,
5728*993b0882SAndroid Build Coastguard Worker 2287305551u,
5729*993b0882SAndroid Build Coastguard Worker 803575837u,
5730*993b0882SAndroid Build Coastguard Worker 2452657767u,
5731*993b0882SAndroid Build Coastguard Worker 3841480082u,
5732*993b0882SAndroid Build Coastguard Worker 2350937598u,
5733*993b0882SAndroid Build Coastguard Worker 779434428u,
5734*993b0882SAndroid Build Coastguard Worker 3692865672u,
5735*993b0882SAndroid Build Coastguard Worker 2285701422u,
5736*993b0882SAndroid Build Coastguard Worker 215970497u,
5737*993b0882SAndroid Build Coastguard Worker 823305654u,
5738*993b0882SAndroid Build Coastguard Worker 2272612521u,
5739*993b0882SAndroid Build Coastguard Worker 4159715581u,
5740*993b0882SAndroid Build Coastguard Worker 552925303u,
5741*993b0882SAndroid Build Coastguard Worker 3198900547u,
5742*993b0882SAndroid Build Coastguard Worker 4064071435u,
5743*993b0882SAndroid Build Coastguard Worker 4194096960u,
5744*993b0882SAndroid Build Coastguard Worker 3671038966u,
5745*993b0882SAndroid Build Coastguard Worker 1719108984u,
5746*993b0882SAndroid Build Coastguard Worker 406757708u,
5747*993b0882SAndroid Build Coastguard Worker 531310503u,
5748*993b0882SAndroid Build Coastguard Worker 3037314475u,
5749*993b0882SAndroid Build Coastguard Worker 3382290593u,
5750*993b0882SAndroid Build Coastguard Worker 3842309471u,
5751*993b0882SAndroid Build Coastguard Worker 3241407531u,
5752*993b0882SAndroid Build Coastguard Worker 2512514774u,
5753*993b0882SAndroid Build Coastguard Worker 1397502982u,
5754*993b0882SAndroid Build Coastguard Worker 3139578968u,
5755*993b0882SAndroid Build Coastguard Worker 811750340u,
5756*993b0882SAndroid Build Coastguard Worker 3622282782u,
5757*993b0882SAndroid Build Coastguard Worker 2540585554u,
5758*993b0882SAndroid Build Coastguard Worker 4146963980u,
5759*993b0882SAndroid Build Coastguard Worker 943914610u,
5760*993b0882SAndroid Build Coastguard Worker 3054347639u,
5761*993b0882SAndroid Build Coastguard Worker 1911188923u,
5762*993b0882SAndroid Build Coastguard Worker 2338031599u,
5763*993b0882SAndroid Build Coastguard Worker 3181425568u,
5764*993b0882SAndroid Build Coastguard Worker 1196757691u,
5765*993b0882SAndroid Build Coastguard Worker 240953857u,
5766*993b0882SAndroid Build Coastguard Worker 240495962u,
5767*993b0882SAndroid Build Coastguard Worker 3828377737u,
5768*993b0882SAndroid Build Coastguard Worker 2246245780u,
5769*993b0882SAndroid Build Coastguard Worker 4262383425u,
5770*993b0882SAndroid Build Coastguard Worker 841480070u,
5771*993b0882SAndroid Build Coastguard Worker 4051263539u,
5772*993b0882SAndroid Build Coastguard Worker 4164532914u,
5773*993b0882SAndroid Build Coastguard Worker 1683612329u,
5774*993b0882SAndroid Build Coastguard Worker 2368092311u,
5775*993b0882SAndroid Build Coastguard Worker 2283918569u,
5776*993b0882SAndroid Build Coastguard Worker 3923500892u,
5777*993b0882SAndroid Build Coastguard Worker 350160869u,
5778*993b0882SAndroid Build Coastguard Worker 1469342315u,
5779*993b0882SAndroid Build Coastguard Worker 1891558063u,
5780*993b0882SAndroid Build Coastguard Worker 13327420u,
5781*993b0882SAndroid Build Coastguard Worker 330624974u,
5782*993b0882SAndroid Build Coastguard Worker 3543885677u,
5783*993b0882SAndroid Build Coastguard Worker 376390582u,
5784*993b0882SAndroid Build Coastguard Worker 2968738516u,
5785*993b0882SAndroid Build Coastguard Worker 3187805406u,
5786*993b0882SAndroid Build Coastguard Worker 645016762u,
5787*993b0882SAndroid Build Coastguard Worker 1928519266u,
5788*993b0882SAndroid Build Coastguard Worker 1610271373u,
5789*993b0882SAndroid Build Coastguard Worker 2108753646u,
5790*993b0882SAndroid Build Coastguard Worker 191994904u,
5791*993b0882SAndroid Build Coastguard Worker 2247006571u,
5792*993b0882SAndroid Build Coastguard Worker 1106275740u,
5793*993b0882SAndroid Build Coastguard Worker 917121602u,
5794*993b0882SAndroid Build Coastguard Worker 2845309942u,
5795*993b0882SAndroid Build Coastguard Worker 2864033668u,
5796*993b0882SAndroid Build Coastguard Worker 1102873346u,
5797*993b0882SAndroid Build Coastguard Worker 2006922227u,
5798*993b0882SAndroid Build Coastguard Worker 1983773590u,
5799*993b0882SAndroid Build Coastguard Worker 3449066284u,
5800*993b0882SAndroid Build Coastguard Worker 2741371614u,
5801*993b0882SAndroid Build Coastguard Worker 786322314u,
5802*993b0882SAndroid Build Coastguard Worker 2974240289u,
5803*993b0882SAndroid Build Coastguard Worker 3263135197u,
5804*993b0882SAndroid Build Coastguard Worker 521432811u,
5805*993b0882SAndroid Build Coastguard Worker 3206261120u,
5806*993b0882SAndroid Build Coastguard Worker 976892272u,
5807*993b0882SAndroid Build Coastguard Worker 1781944746u,
5808*993b0882SAndroid Build Coastguard Worker 2209584557u,
5809*993b0882SAndroid Build Coastguard Worker 1109175923u,
5810*993b0882SAndroid Build Coastguard Worker 1091877599u,
5811*993b0882SAndroid Build Coastguard Worker 1129462471u,
5812*993b0882SAndroid Build Coastguard Worker 3273688770u,
5813*993b0882SAndroid Build Coastguard Worker 3389003793u,
5814*993b0882SAndroid Build Coastguard Worker 2502161880u,
5815*993b0882SAndroid Build Coastguard Worker 1164309901u,
5816*993b0882SAndroid Build Coastguard Worker 7371540u,
5817*993b0882SAndroid Build Coastguard Worker 3626554867u,
5818*993b0882SAndroid Build Coastguard Worker 1145247203u,
5819*993b0882SAndroid Build Coastguard Worker 3656006011u,
5820*993b0882SAndroid Build Coastguard Worker 1696355359u,
5821*993b0882SAndroid Build Coastguard Worker 3155218919u,
5822*993b0882SAndroid Build Coastguard Worker 2917345728u,
5823*993b0882SAndroid Build Coastguard Worker 1854985978u,
5824*993b0882SAndroid Build Coastguard Worker 1628881950u,
5825*993b0882SAndroid Build Coastguard Worker 878608872u,
5826*993b0882SAndroid Build Coastguard Worker 2069566979u,
5827*993b0882SAndroid Build Coastguard Worker 3163786257u,
5828*993b0882SAndroid Build Coastguard Worker 2933010098u,
5829*993b0882SAndroid Build Coastguard Worker 1256485167u,
5830*993b0882SAndroid Build Coastguard Worker 122035049u,
5831*993b0882SAndroid Build Coastguard Worker 2083771672u,
5832*993b0882SAndroid Build Coastguard Worker 508560958u,
5833*993b0882SAndroid Build Coastguard Worker 2770847216u,
5834*993b0882SAndroid Build Coastguard Worker 456842861u,
5835*993b0882SAndroid Build Coastguard Worker 3992583643u,
5836*993b0882SAndroid Build Coastguard Worker 4281971893u,
5837*993b0882SAndroid Build Coastguard Worker 900741486u,
5838*993b0882SAndroid Build Coastguard Worker 2825943628u,
5839*993b0882SAndroid Build Coastguard Worker 300318232u,
5840*993b0882SAndroid Build Coastguard Worker 2533900859u,
5841*993b0882SAndroid Build Coastguard Worker 542270815u,
5842*993b0882SAndroid Build Coastguard Worker 3320103693u,
5843*993b0882SAndroid Build Coastguard Worker 1216399252u,
5844*993b0882SAndroid Build Coastguard Worker 639941430u,
5845*993b0882SAndroid Build Coastguard Worker 3652676161u,
5846*993b0882SAndroid Build Coastguard Worker 4100211814u,
5847*993b0882SAndroid Build Coastguard Worker 3262252593u,
5848*993b0882SAndroid Build Coastguard Worker 2315856188u,
5849*993b0882SAndroid Build Coastguard Worker 411263051u,
5850*993b0882SAndroid Build Coastguard Worker 3250435765u,
5851*993b0882SAndroid Build Coastguard Worker 1967599860u,
5852*993b0882SAndroid Build Coastguard Worker 4020453639u,
5853*993b0882SAndroid Build Coastguard Worker 2682611693u,
5854*993b0882SAndroid Build Coastguard Worker 3802058181u,
5855*993b0882SAndroid Build Coastguard Worker 3286110054u,
5856*993b0882SAndroid Build Coastguard Worker 471725410u,
5857*993b0882SAndroid Build Coastguard Worker 3623364733u,
5858*993b0882SAndroid Build Coastguard Worker 721788662u,
5859*993b0882SAndroid Build Coastguard Worker 1615375832u,
5860*993b0882SAndroid Build Coastguard Worker 1310964134u,
5861*993b0882SAndroid Build Coastguard Worker 4145497671u,
5862*993b0882SAndroid Build Coastguard Worker 1492533854u,
5863*993b0882SAndroid Build Coastguard Worker 2686506989u,
5864*993b0882SAndroid Build Coastguard Worker 3342031659u,
5865*993b0882SAndroid Build Coastguard Worker 2151665147u,
5866*993b0882SAndroid Build Coastguard Worker 2754346599u,
5867*993b0882SAndroid Build Coastguard Worker 1178454681u,
5868*993b0882SAndroid Build Coastguard Worker 3751680858u,
5869*993b0882SAndroid Build Coastguard Worker 2601416506u,
5870*993b0882SAndroid Build Coastguard Worker 748595836u,
5871*993b0882SAndroid Build Coastguard Worker 238887261u,
5872*993b0882SAndroid Build Coastguard Worker 1885975275u,
5873*993b0882SAndroid Build Coastguard Worker 2367569534u,
5874*993b0882SAndroid Build Coastguard Worker 741809437u,
5875*993b0882SAndroid Build Coastguard Worker 3539886328u,
5876*993b0882SAndroid Build Coastguard Worker 2748286642u,
5877*993b0882SAndroid Build Coastguard Worker 1390394371u,
5878*993b0882SAndroid Build Coastguard Worker 3005091922u,
5879*993b0882SAndroid Build Coastguard Worker 793108368u,
5880*993b0882SAndroid Build Coastguard Worker 1529669805u,
5881*993b0882SAndroid Build Coastguard Worker 2332660395u,
5882*993b0882SAndroid Build Coastguard Worker 2217730223u,
5883*993b0882SAndroid Build Coastguard Worker 2634687611u,
5884*993b0882SAndroid Build Coastguard Worker 442806463u,
5885*993b0882SAndroid Build Coastguard Worker 1968135266u,
5886*993b0882SAndroid Build Coastguard Worker 454523002u,
5887*993b0882SAndroid Build Coastguard Worker 3177866230u,
5888*993b0882SAndroid Build Coastguard Worker 2808960136u,
5889*993b0882SAndroid Build Coastguard Worker 4259114138u,
5890*993b0882SAndroid Build Coastguard Worker 4103264843u,
5891*993b0882SAndroid Build Coastguard Worker 3103714075u,
5892*993b0882SAndroid Build Coastguard Worker 2462967542u,
5893*993b0882SAndroid Build Coastguard Worker 1466891491u,
5894*993b0882SAndroid Build Coastguard Worker 477973764u,
5895*993b0882SAndroid Build Coastguard Worker 834565647u,
5896*993b0882SAndroid Build Coastguard Worker 741089037u,
5897*993b0882SAndroid Build Coastguard Worker 218837573u,
5898*993b0882SAndroid Build Coastguard Worker 1710536528u,
5899*993b0882SAndroid Build Coastguard Worker 2469088212u,
5900*993b0882SAndroid Build Coastguard Worker 1229072375u,
5901*993b0882SAndroid Build Coastguard Worker 2828341u,
5902*993b0882SAndroid Build Coastguard Worker 176923431u,
5903*993b0882SAndroid Build Coastguard Worker 985763350u,
5904*993b0882SAndroid Build Coastguard Worker 4095477420u,
5905*993b0882SAndroid Build Coastguard Worker 1984145538u,
5906*993b0882SAndroid Build Coastguard Worker 1870791084u,
5907*993b0882SAndroid Build Coastguard Worker 674956677u,
5908*993b0882SAndroid Build Coastguard Worker 1978138947u,
5909*993b0882SAndroid Build Coastguard Worker 1296493993u,
5910*993b0882SAndroid Build Coastguard Worker 1818183554u,
5911*993b0882SAndroid Build Coastguard Worker 3443333721u,
5912*993b0882SAndroid Build Coastguard Worker 2124949983u,
5913*993b0882SAndroid Build Coastguard Worker 2549590262u,
5914*993b0882SAndroid Build Coastguard Worker 2700850794u,
5915*993b0882SAndroid Build Coastguard Worker 2662736367u,
5916*993b0882SAndroid Build Coastguard Worker 739638109u,
5917*993b0882SAndroid Build Coastguard Worker 4061447096u,
5918*993b0882SAndroid Build Coastguard Worker 2960078422u,
5919*993b0882SAndroid Build Coastguard Worker 2453781158u,
5920*993b0882SAndroid Build Coastguard Worker 929570940u,
5921*993b0882SAndroid Build Coastguard Worker 3200328383u,
5922*993b0882SAndroid Build Coastguard Worker 2406328791u,
5923*993b0882SAndroid Build Coastguard Worker 1419180666u,
5924*993b0882SAndroid Build Coastguard Worker 2152455739u,
5925*993b0882SAndroid Build Coastguard Worker 2805741044u,
5926*993b0882SAndroid Build Coastguard Worker 3305999074u,
5927*993b0882SAndroid Build Coastguard Worker 3183816361u,
5928*993b0882SAndroid Build Coastguard Worker 2303165050u,
5929*993b0882SAndroid Build Coastguard Worker 4922104u,
5930*993b0882SAndroid Build Coastguard Worker 63096005u,
5931*993b0882SAndroid Build Coastguard Worker 936656347u,
5932*993b0882SAndroid Build Coastguard Worker 3104453886u,
5933*993b0882SAndroid Build Coastguard Worker 1088673880u,
5934*993b0882SAndroid Build Coastguard Worker 1113407526u,
5935*993b0882SAndroid Build Coastguard Worker 1457890086u,
5936*993b0882SAndroid Build Coastguard Worker 453478383u,
5937*993b0882SAndroid Build Coastguard Worker 1107686695u,
5938*993b0882SAndroid Build Coastguard Worker 3626027824u,
5939*993b0882SAndroid Build Coastguard Worker 1159687359u,
5940*993b0882SAndroid Build Coastguard Worker 2248467888u,
5941*993b0882SAndroid Build Coastguard Worker 2004578380u,
5942*993b0882SAndroid Build Coastguard Worker 3274954621u,
5943*993b0882SAndroid Build Coastguard Worker 1787958646u,
5944*993b0882SAndroid Build Coastguard Worker 2628726704u,
5945*993b0882SAndroid Build Coastguard Worker 1138419798u,
5946*993b0882SAndroid Build Coastguard Worker 3735442315u,
5947*993b0882SAndroid Build Coastguard Worker 692385301u,
5948*993b0882SAndroid Build Coastguard Worker 313807213u,
5949*993b0882SAndroid Build Coastguard Worker 2329068673u,
5950*993b0882SAndroid Build Coastguard Worker 59375364u,
5951*993b0882SAndroid Build Coastguard Worker 3261084359u,
5952*993b0882SAndroid Build Coastguard Worker 2088644507u,
5953*993b0882SAndroid Build Coastguard Worker 2471153194u,
5954*993b0882SAndroid Build Coastguard Worker 788336435u,
5955*993b0882SAndroid Build Coastguard Worker 4024527246u,
5956*993b0882SAndroid Build Coastguard Worker 141504460u,
5957*993b0882SAndroid Build Coastguard Worker 2307553888u,
5958*993b0882SAndroid Build Coastguard Worker 1930559950u,
5959*993b0882SAndroid Build Coastguard Worker 48975711u,
5960*993b0882SAndroid Build Coastguard Worker 2745693338u,
5961*993b0882SAndroid Build Coastguard Worker 230161982u,
5962*993b0882SAndroid Build Coastguard Worker 3429230862u,
5963*993b0882SAndroid Build Coastguard Worker 1335968626u,
5964*993b0882SAndroid Build Coastguard Worker 609591304u,
5965*993b0882SAndroid Build Coastguard Worker 57435073u,
5966*993b0882SAndroid Build Coastguard Worker 4279281136u,
5967*993b0882SAndroid Build Coastguard Worker 3152151665u,
5968*993b0882SAndroid Build Coastguard Worker 3984484924u,
5969*993b0882SAndroid Build Coastguard Worker 3459883943u,
5970*993b0882SAndroid Build Coastguard Worker 397478330u,
5971*993b0882SAndroid Build Coastguard Worker 1738762229u,
5972*993b0882SAndroid Build Coastguard Worker 3033590066u,
5973*993b0882SAndroid Build Coastguard Worker 3611539498u,
5974*993b0882SAndroid Build Coastguard Worker 1363463523u,
5975*993b0882SAndroid Build Coastguard Worker 3319364965u,
5976*993b0882SAndroid Build Coastguard Worker 2671169141u,
5977*993b0882SAndroid Build Coastguard Worker 3819548561u,
5978*993b0882SAndroid Build Coastguard Worker 1691193757u,
5979*993b0882SAndroid Build Coastguard Worker 2423834608u,
5980*993b0882SAndroid Build Coastguard Worker 2820147055u,
5981*993b0882SAndroid Build Coastguard Worker 1378120632u,
5982*993b0882SAndroid Build Coastguard Worker 1240565187u,
5983*993b0882SAndroid Build Coastguard Worker 3180720050u,
5984*993b0882SAndroid Build Coastguard Worker 680831086u,
5985*993b0882SAndroid Build Coastguard Worker 3309658414u,
5986*993b0882SAndroid Build Coastguard Worker 1986166490u,
5987*993b0882SAndroid Build Coastguard Worker 762099827u,
5988*993b0882SAndroid Build Coastguard Worker 510883662u,
5989*993b0882SAndroid Build Coastguard Worker 2047373648u,
5990*993b0882SAndroid Build Coastguard Worker 3606742294u,
5991*993b0882SAndroid Build Coastguard Worker 3894965352u,
5992*993b0882SAndroid Build Coastguard Worker 2342078853u,
5993*993b0882SAndroid Build Coastguard Worker 1091255717u,
5994*993b0882SAndroid Build Coastguard Worker 776594727u,
5995*993b0882SAndroid Build Coastguard Worker 3217317445u,
5996*993b0882SAndroid Build Coastguard Worker 1574468485u,
5997*993b0882SAndroid Build Coastguard Worker 3844504016u,
5998*993b0882SAndroid Build Coastguard Worker 2819598918u,
5999*993b0882SAndroid Build Coastguard Worker 1037401010u,
6000*993b0882SAndroid Build Coastguard Worker 2550943503u,
6001*993b0882SAndroid Build Coastguard Worker 3867184001u,
6002*993b0882SAndroid Build Coastguard Worker 1687911772u,
6003*993b0882SAndroid Build Coastguard Worker 165313836u,
6004*993b0882SAndroid Build Coastguard Worker 1679575281u,
6005*993b0882SAndroid Build Coastguard Worker 2418947263u,
6006*993b0882SAndroid Build Coastguard Worker 2038774952u,
6007*993b0882SAndroid Build Coastguard Worker 3913543652u,
6008*993b0882SAndroid Build Coastguard Worker 3209155736u,
6009*993b0882SAndroid Build Coastguard Worker 149905221u,
6010*993b0882SAndroid Build Coastguard Worker 3859604717u,
6011*993b0882SAndroid Build Coastguard Worker 713919631u,
6012*993b0882SAndroid Build Coastguard Worker 4069810796u,
6013*993b0882SAndroid Build Coastguard Worker 1882959164u,
6014*993b0882SAndroid Build Coastguard Worker 1019939034u,
6015*993b0882SAndroid Build Coastguard Worker 2379867302u,
6016*993b0882SAndroid Build Coastguard Worker 3666323035u,
6017*993b0882SAndroid Build Coastguard Worker 1157389013u,
6018*993b0882SAndroid Build Coastguard Worker 2422300650u,
6019*993b0882SAndroid Build Coastguard Worker 3366777340u,
6020*993b0882SAndroid Build Coastguard Worker 2526452062u,
6021*993b0882SAndroid Build Coastguard Worker 1313747885u,
6022*993b0882SAndroid Build Coastguard Worker 1039617868u,
6023*993b0882SAndroid Build Coastguard Worker 1620553692u,
6024*993b0882SAndroid Build Coastguard Worker 2032976978u,
6025*993b0882SAndroid Build Coastguard Worker 578789528u,
6026*993b0882SAndroid Build Coastguard Worker 1592846839u,
6027*993b0882SAndroid Build Coastguard Worker 2270630604u,
6028*993b0882SAndroid Build Coastguard Worker 897850577u,
6029*993b0882SAndroid Build Coastguard Worker 1603294178u,
6030*993b0882SAndroid Build Coastguard Worker 3105664807u,
6031*993b0882SAndroid Build Coastguard Worker 1442670138u,
6032*993b0882SAndroid Build Coastguard Worker 1728019360u,
6033*993b0882SAndroid Build Coastguard Worker 79313861u,
6034*993b0882SAndroid Build Coastguard Worker 1683031101u,
6035*993b0882SAndroid Build Coastguard Worker 1913067024u,
6036*993b0882SAndroid Build Coastguard Worker 4070719870u,
6037*993b0882SAndroid Build Coastguard Worker 708986470u,
6038*993b0882SAndroid Build Coastguard Worker 2586453359u,
6039*993b0882SAndroid Build Coastguard Worker 3993348863u,
6040*993b0882SAndroid Build Coastguard Worker 3358251279u,
6041*993b0882SAndroid Build Coastguard Worker 3003552537u,
6042*993b0882SAndroid Build Coastguard Worker 750174793u,
6043*993b0882SAndroid Build Coastguard Worker 836888956u,
6044*993b0882SAndroid Build Coastguard Worker 4190747426u,
6045*993b0882SAndroid Build Coastguard Worker 4251291318u,
6046*993b0882SAndroid Build Coastguard Worker 4145164938u,
6047*993b0882SAndroid Build Coastguard Worker 1366883260u,
6048*993b0882SAndroid Build Coastguard Worker 1912910955u,
6049*993b0882SAndroid Build Coastguard Worker 510192669u,
6050*993b0882SAndroid Build Coastguard Worker 1851315039u,
6051*993b0882SAndroid Build Coastguard Worker 3574241274u,
6052*993b0882SAndroid Build Coastguard Worker 3220062924u,
6053*993b0882SAndroid Build Coastguard Worker 2821142039u,
6054*993b0882SAndroid Build Coastguard Worker 1317082195u,
6055*993b0882SAndroid Build Coastguard Worker 2274293302u,
6056*993b0882SAndroid Build Coastguard Worker 1839219569u,
6057*993b0882SAndroid Build Coastguard Worker 126586168u,
6058*993b0882SAndroid Build Coastguard Worker 3989293643u,
6059*993b0882SAndroid Build Coastguard Worker 2680178207u,
6060*993b0882SAndroid Build Coastguard Worker 347056948u,
6061*993b0882SAndroid Build Coastguard Worker 799681430u,
6062*993b0882SAndroid Build Coastguard Worker 2864517481u,
6063*993b0882SAndroid Build Coastguard Worker 3180404853u,
6064*993b0882SAndroid Build Coastguard Worker 213140045u,
6065*993b0882SAndroid Build Coastguard Worker 1956305184u,
6066*993b0882SAndroid Build Coastguard Worker 1474675286u,
6067*993b0882SAndroid Build Coastguard Worker 3085723423u,
6068*993b0882SAndroid Build Coastguard Worker 2841859626u,
6069*993b0882SAndroid Build Coastguard Worker 308421914u,
6070*993b0882SAndroid Build Coastguard Worker 3670309263u,
6071*993b0882SAndroid Build Coastguard Worker 1765052231u,
6072*993b0882SAndroid Build Coastguard Worker 245459238u,
6073*993b0882SAndroid Build Coastguard Worker 113434331u,
6074*993b0882SAndroid Build Coastguard Worker 4079521092u,
6075*993b0882SAndroid Build Coastguard Worker 2115235526u,
6076*993b0882SAndroid Build Coastguard Worker 2943408816u,
6077*993b0882SAndroid Build Coastguard Worker 1055476938u,
6078*993b0882SAndroid Build Coastguard Worker 1506442339u,
6079*993b0882SAndroid Build Coastguard Worker 2291296392u,
6080*993b0882SAndroid Build Coastguard Worker 3267864332u,
6081*993b0882SAndroid Build Coastguard Worker 1282145528u,
6082*993b0882SAndroid Build Coastguard Worker 3700108015u,
6083*993b0882SAndroid Build Coastguard Worker 1932843667u,
6084*993b0882SAndroid Build Coastguard Worker 2677701670u,
6085*993b0882SAndroid Build Coastguard Worker 6041177u,
6086*993b0882SAndroid Build Coastguard Worker 3889648557u,
6087*993b0882SAndroid Build Coastguard Worker 1461025478u,
6088*993b0882SAndroid Build Coastguard Worker };
6089*993b0882SAndroid Build Coastguard Worker
6090*993b0882SAndroid Build Coastguard Worker // Return false only if offset is -1 and a spot check of 3 hashes all yield 0.
Test(int offset,int len=0)6091*993b0882SAndroid Build Coastguard Worker bool Test(int offset, int len = 0) {
6092*993b0882SAndroid Build Coastguard Worker #undef Check
6093*993b0882SAndroid Build Coastguard Worker #undef IsAlive
6094*993b0882SAndroid Build Coastguard Worker
6095*993b0882SAndroid Build Coastguard Worker #define Check(x) do { \
6096*993b0882SAndroid Build Coastguard Worker bool ok = expected[index++] == (x); \
6097*993b0882SAndroid Build Coastguard Worker assert(ok); \
6098*993b0882SAndroid Build Coastguard Worker errors += !ok; \
6099*993b0882SAndroid Build Coastguard Worker } while (0)
6100*993b0882SAndroid Build Coastguard Worker
6101*993b0882SAndroid Build Coastguard Worker #define IsAlive(x) do { alive += IsNonZero(x); } while (0)
6102*993b0882SAndroid Build Coastguard Worker
6103*993b0882SAndroid Build Coastguard Worker // After the following line is where the uses of "Check" and such will go.
6104*993b0882SAndroid Build Coastguard Worker static int index = 0;
6105*993b0882SAndroid Build Coastguard Worker if (offset == -1) { int alive = 0; IsAlive(farmhashns::Hash32WithSeed(data, len++, SEED)); IsAlive(farmhashns::Hash32(data, len++)); IsAlive(farmhashns::Hash32(data, len++)); len -= 3; return alive > 0; }
6106*993b0882SAndroid Build Coastguard Worker Check(farmhashns::Hash32WithSeed(data + offset, len, SEED));
6107*993b0882SAndroid Build Coastguard Worker Check(farmhashns::Hash32(data + offset, len));
6108*993b0882SAndroid Build Coastguard Worker
6109*993b0882SAndroid Build Coastguard Worker return true;
6110*993b0882SAndroid Build Coastguard Worker #undef Check
6111*993b0882SAndroid Build Coastguard Worker #undef IsAlive
6112*993b0882SAndroid Build Coastguard Worker }
6113*993b0882SAndroid Build Coastguard Worker
RunTest()6114*993b0882SAndroid Build Coastguard Worker int RunTest() {
6115*993b0882SAndroid Build Coastguard Worker Setup();
6116*993b0882SAndroid Build Coastguard Worker int i = 0;
6117*993b0882SAndroid Build Coastguard Worker cout << "Running farmhashnsTest";
6118*993b0882SAndroid Build Coastguard Worker if (!Test(-1)) {
6119*993b0882SAndroid Build Coastguard Worker cout << "... Unavailable\n";
6120*993b0882SAndroid Build Coastguard Worker return NoteErrors();
6121*993b0882SAndroid Build Coastguard Worker }
6122*993b0882SAndroid Build Coastguard Worker // Good. The function is attempting to hash, so run the full test.
6123*993b0882SAndroid Build Coastguard Worker int errors_prior_to_test = errors;
6124*993b0882SAndroid Build Coastguard Worker for ( ; i < kTestSize - 1; i++) {
6125*993b0882SAndroid Build Coastguard Worker Test(i * i, i);
6126*993b0882SAndroid Build Coastguard Worker }
6127*993b0882SAndroid Build Coastguard Worker for ( ; i < kDataSize; i += i / 7) {
6128*993b0882SAndroid Build Coastguard Worker Test(0, i);
6129*993b0882SAndroid Build Coastguard Worker }
6130*993b0882SAndroid Build Coastguard Worker Test(0, kDataSize);
6131*993b0882SAndroid Build Coastguard Worker cout << (errors == errors_prior_to_test ? "... OK\n" : "... Failed\n");
6132*993b0882SAndroid Build Coastguard Worker return NoteErrors();
6133*993b0882SAndroid Build Coastguard Worker }
6134*993b0882SAndroid Build Coastguard Worker
6135*993b0882SAndroid Build Coastguard Worker #else
6136*993b0882SAndroid Build Coastguard Worker
6137*993b0882SAndroid Build Coastguard Worker // After the following line is where the code to print hash codes will go.
Dump(int offset,int len)6138*993b0882SAndroid Build Coastguard Worker void Dump(int offset, int len) {
6139*993b0882SAndroid Build Coastguard Worker cout << farmhashns::Hash32WithSeed(data + offset, len, SEED) << "u," << endl;
6140*993b0882SAndroid Build Coastguard Worker cout << farmhashns::Hash32(data + offset, len) << "u," << endl;
6141*993b0882SAndroid Build Coastguard Worker }
6142*993b0882SAndroid Build Coastguard Worker
6143*993b0882SAndroid Build Coastguard Worker #endif
6144*993b0882SAndroid Build Coastguard Worker
6145*993b0882SAndroid Build Coastguard Worker #undef SEED
6146*993b0882SAndroid Build Coastguard Worker #undef SEED1
6147*993b0882SAndroid Build Coastguard Worker #undef SEED0
6148*993b0882SAndroid Build Coastguard Worker
6149*993b0882SAndroid Build Coastguard Worker } // namespace farmhashnsTest
6150*993b0882SAndroid Build Coastguard Worker
6151*993b0882SAndroid Build Coastguard Worker #if TESTING
6152*993b0882SAndroid Build Coastguard Worker
6153*993b0882SAndroid Build Coastguard Worker static int farmhashnsTestResult = farmhashnsTest::RunTest();
6154*993b0882SAndroid Build Coastguard Worker
6155*993b0882SAndroid Build Coastguard Worker #else
main(int argc,char ** argv)6156*993b0882SAndroid Build Coastguard Worker int main(int argc, char** argv) {
6157*993b0882SAndroid Build Coastguard Worker Setup();
6158*993b0882SAndroid Build Coastguard Worker cout << "uint32_t expected[] = {\n";
6159*993b0882SAndroid Build Coastguard Worker int i = 0;
6160*993b0882SAndroid Build Coastguard Worker for ( ; i < kTestSize - 1; i++) {
6161*993b0882SAndroid Build Coastguard Worker farmhashnsTest::Dump(i * i, i);
6162*993b0882SAndroid Build Coastguard Worker }
6163*993b0882SAndroid Build Coastguard Worker for ( ; i < kDataSize; i += i / 7) {
6164*993b0882SAndroid Build Coastguard Worker farmhashnsTest::Dump(0, i);
6165*993b0882SAndroid Build Coastguard Worker }
6166*993b0882SAndroid Build Coastguard Worker farmhashnsTest::Dump(0, kDataSize);
6167*993b0882SAndroid Build Coastguard Worker cout << "};\n";
6168*993b0882SAndroid Build Coastguard Worker }
6169*993b0882SAndroid Build Coastguard Worker #endif
6170*993b0882SAndroid Build Coastguard Worker #ifndef FARMHASH_SELF_TEST_GUARD
6171*993b0882SAndroid Build Coastguard Worker #define FARMHASH_SELF_TEST_GUARD
6172*993b0882SAndroid Build Coastguard Worker #include <string.h>
6173*993b0882SAndroid Build Coastguard Worker #include <cstdio>
6174*993b0882SAndroid Build Coastguard Worker #include <iostream>
6175*993b0882SAndroid Build Coastguard Worker
6176*993b0882SAndroid Build Coastguard Worker using std::cout;
6177*993b0882SAndroid Build Coastguard Worker using std::cerr;
6178*993b0882SAndroid Build Coastguard Worker using std::endl;
6179*993b0882SAndroid Build Coastguard Worker using std::hex;
6180*993b0882SAndroid Build Coastguard Worker
6181*993b0882SAndroid Build Coastguard Worker static const uint64_t kSeed0 = 1234567;
6182*993b0882SAndroid Build Coastguard Worker static const uint64_t kSeed1 = k0;
6183*993b0882SAndroid Build Coastguard Worker static const int kDataSize = 1 << 20;
6184*993b0882SAndroid Build Coastguard Worker static const int kTestSize = 300;
6185*993b0882SAndroid Build Coastguard Worker #define kSeed128 Uint128(kSeed0, kSeed1)
6186*993b0882SAndroid Build Coastguard Worker
6187*993b0882SAndroid Build Coastguard Worker static char data[kDataSize];
6188*993b0882SAndroid Build Coastguard Worker
6189*993b0882SAndroid Build Coastguard Worker static int completed_self_tests = 0;
6190*993b0882SAndroid Build Coastguard Worker static int errors = 0;
6191*993b0882SAndroid Build Coastguard Worker
6192*993b0882SAndroid Build Coastguard Worker // Initialize data to pseudorandom values.
Setup()6193*993b0882SAndroid Build Coastguard Worker void Setup() {
6194*993b0882SAndroid Build Coastguard Worker if (completed_self_tests == 0) {
6195*993b0882SAndroid Build Coastguard Worker uint64_t a = 9;
6196*993b0882SAndroid Build Coastguard Worker uint64_t b = 777;
6197*993b0882SAndroid Build Coastguard Worker for (int i = 0; i < kDataSize; i++) {
6198*993b0882SAndroid Build Coastguard Worker a += b;
6199*993b0882SAndroid Build Coastguard Worker b += a;
6200*993b0882SAndroid Build Coastguard Worker a = (a ^ (a >> 41)) * k0;
6201*993b0882SAndroid Build Coastguard Worker b = (b ^ (b >> 41)) * k0 + i;
6202*993b0882SAndroid Build Coastguard Worker uint8_t u = b >> 37;
6203*993b0882SAndroid Build Coastguard Worker memcpy(data + i, &u, 1); // uint8_t -> char
6204*993b0882SAndroid Build Coastguard Worker }
6205*993b0882SAndroid Build Coastguard Worker }
6206*993b0882SAndroid Build Coastguard Worker }
6207*993b0882SAndroid Build Coastguard Worker
NoteErrors()6208*993b0882SAndroid Build Coastguard Worker int NoteErrors() {
6209*993b0882SAndroid Build Coastguard Worker #define NUM_SELF_TESTS 6
6210*993b0882SAndroid Build Coastguard Worker if (++completed_self_tests == NUM_SELF_TESTS)
6211*993b0882SAndroid Build Coastguard Worker std::exit(errors > 0);
6212*993b0882SAndroid Build Coastguard Worker return errors;
6213*993b0882SAndroid Build Coastguard Worker }
6214*993b0882SAndroid Build Coastguard Worker
IsNonZero(T x)6215*993b0882SAndroid Build Coastguard Worker template <typename T> inline bool IsNonZero(T x) {
6216*993b0882SAndroid Build Coastguard Worker return x != 0;
6217*993b0882SAndroid Build Coastguard Worker }
6218*993b0882SAndroid Build Coastguard Worker
IsNonZero(uint128_t x)6219*993b0882SAndroid Build Coastguard Worker template <> inline bool IsNonZero<uint128_t>(uint128_t x) {
6220*993b0882SAndroid Build Coastguard Worker return x != Uint128(0, 0);
6221*993b0882SAndroid Build Coastguard Worker }
6222*993b0882SAndroid Build Coastguard Worker
6223*993b0882SAndroid Build Coastguard Worker #endif // FARMHASH_SELF_TEST_GUARD
6224*993b0882SAndroid Build Coastguard Worker
6225*993b0882SAndroid Build Coastguard Worker namespace farmhashsaTest {
6226*993b0882SAndroid Build Coastguard Worker
CreateSeed(int offset,int salt)6227*993b0882SAndroid Build Coastguard Worker uint32_t CreateSeed(int offset, int salt) {
6228*993b0882SAndroid Build Coastguard Worker uint32_t h = static_cast<uint32_t>(salt & 0xffffffff);
6229*993b0882SAndroid Build Coastguard Worker h = h * c1;
6230*993b0882SAndroid Build Coastguard Worker h ^= (h >> 17);
6231*993b0882SAndroid Build Coastguard Worker h = h * c1;
6232*993b0882SAndroid Build Coastguard Worker h ^= (h >> 17);
6233*993b0882SAndroid Build Coastguard Worker h = h * c1;
6234*993b0882SAndroid Build Coastguard Worker h ^= (h >> 17);
6235*993b0882SAndroid Build Coastguard Worker h += static_cast<uint32_t>(offset & 0xffffffff);
6236*993b0882SAndroid Build Coastguard Worker h = h * c1;
6237*993b0882SAndroid Build Coastguard Worker h ^= (h >> 17);
6238*993b0882SAndroid Build Coastguard Worker h = h * c1;
6239*993b0882SAndroid Build Coastguard Worker h ^= (h >> 17);
6240*993b0882SAndroid Build Coastguard Worker h = h * c1;
6241*993b0882SAndroid Build Coastguard Worker h ^= (h >> 17);
6242*993b0882SAndroid Build Coastguard Worker return h;
6243*993b0882SAndroid Build Coastguard Worker }
6244*993b0882SAndroid Build Coastguard Worker
6245*993b0882SAndroid Build Coastguard Worker #undef SEED
6246*993b0882SAndroid Build Coastguard Worker #undef SEED1
6247*993b0882SAndroid Build Coastguard Worker #undef SEED0
6248*993b0882SAndroid Build Coastguard Worker #define SEED CreateSeed(offset, -1)
6249*993b0882SAndroid Build Coastguard Worker #define SEED0 CreateSeed(offset, 0)
6250*993b0882SAndroid Build Coastguard Worker #define SEED1 CreateSeed(offset, 1)
6251*993b0882SAndroid Build Coastguard Worker
6252*993b0882SAndroid Build Coastguard Worker #undef TESTING
6253*993b0882SAndroid Build Coastguard Worker #define TESTING 1
6254*993b0882SAndroid Build Coastguard Worker #if TESTING
6255*993b0882SAndroid Build Coastguard Worker uint32_t expected[] = {
6256*993b0882SAndroid Build Coastguard Worker 4223616069u,
6257*993b0882SAndroid Build Coastguard Worker 3696677242u,
6258*993b0882SAndroid Build Coastguard Worker 4081014168u,
6259*993b0882SAndroid Build Coastguard Worker 2576519988u,
6260*993b0882SAndroid Build Coastguard Worker 2212771159u,
6261*993b0882SAndroid Build Coastguard Worker 1112731063u,
6262*993b0882SAndroid Build Coastguard Worker 1020067935u,
6263*993b0882SAndroid Build Coastguard Worker 3955445564u,
6264*993b0882SAndroid Build Coastguard Worker 1451961420u,
6265*993b0882SAndroid Build Coastguard Worker 653440099u,
6266*993b0882SAndroid Build Coastguard Worker 31917516u,
6267*993b0882SAndroid Build Coastguard Worker 2957164615u,
6268*993b0882SAndroid Build Coastguard Worker 2590087362u,
6269*993b0882SAndroid Build Coastguard Worker 3879448744u,
6270*993b0882SAndroid Build Coastguard Worker 176305566u,
6271*993b0882SAndroid Build Coastguard Worker 2447367541u,
6272*993b0882SAndroid Build Coastguard Worker 1359016305u,
6273*993b0882SAndroid Build Coastguard Worker 3363804638u,
6274*993b0882SAndroid Build Coastguard Worker 1117290165u,
6275*993b0882SAndroid Build Coastguard Worker 1062549743u,
6276*993b0882SAndroid Build Coastguard Worker 2437877004u,
6277*993b0882SAndroid Build Coastguard Worker 1894455839u,
6278*993b0882SAndroid Build Coastguard Worker 673206794u,
6279*993b0882SAndroid Build Coastguard Worker 3486923651u,
6280*993b0882SAndroid Build Coastguard Worker 3269862919u,
6281*993b0882SAndroid Build Coastguard Worker 2303349487u,
6282*993b0882SAndroid Build Coastguard Worker 1380660650u,
6283*993b0882SAndroid Build Coastguard Worker 595525107u,
6284*993b0882SAndroid Build Coastguard Worker 1525325287u,
6285*993b0882SAndroid Build Coastguard Worker 2025609358u,
6286*993b0882SAndroid Build Coastguard Worker 176408838u,
6287*993b0882SAndroid Build Coastguard Worker 1592885012u,
6288*993b0882SAndroid Build Coastguard Worker 864896482u,
6289*993b0882SAndroid Build Coastguard Worker 2101378090u,
6290*993b0882SAndroid Build Coastguard Worker 3489229104u,
6291*993b0882SAndroid Build Coastguard Worker 2118965695u,
6292*993b0882SAndroid Build Coastguard Worker 581644891u,
6293*993b0882SAndroid Build Coastguard Worker 2718789079u,
6294*993b0882SAndroid Build Coastguard Worker 631613207u,
6295*993b0882SAndroid Build Coastguard Worker 4228658372u,
6296*993b0882SAndroid Build Coastguard Worker 3867875546u,
6297*993b0882SAndroid Build Coastguard Worker 3531368319u,
6298*993b0882SAndroid Build Coastguard Worker 3804516756u,
6299*993b0882SAndroid Build Coastguard Worker 3317755099u,
6300*993b0882SAndroid Build Coastguard Worker 1619744564u,
6301*993b0882SAndroid Build Coastguard Worker 2884717286u,
6302*993b0882SAndroid Build Coastguard Worker 1088213445u,
6303*993b0882SAndroid Build Coastguard Worker 2667691076u,
6304*993b0882SAndroid Build Coastguard Worker 3727873235u,
6305*993b0882SAndroid Build Coastguard Worker 2330406762u,
6306*993b0882SAndroid Build Coastguard Worker 858590707u,
6307*993b0882SAndroid Build Coastguard Worker 123802208u,
6308*993b0882SAndroid Build Coastguard Worker 4150036245u,
6309*993b0882SAndroid Build Coastguard Worker 182283099u,
6310*993b0882SAndroid Build Coastguard Worker 1478882570u,
6311*993b0882SAndroid Build Coastguard Worker 3282617403u,
6312*993b0882SAndroid Build Coastguard Worker 819171187u,
6313*993b0882SAndroid Build Coastguard Worker 1172627392u,
6314*993b0882SAndroid Build Coastguard Worker 4254302102u,
6315*993b0882SAndroid Build Coastguard Worker 2957028020u,
6316*993b0882SAndroid Build Coastguard Worker 437030323u,
6317*993b0882SAndroid Build Coastguard Worker 2452147680u,
6318*993b0882SAndroid Build Coastguard Worker 2868246750u,
6319*993b0882SAndroid Build Coastguard Worker 3530169402u,
6320*993b0882SAndroid Build Coastguard Worker 3154852132u,
6321*993b0882SAndroid Build Coastguard Worker 215019192u,
6322*993b0882SAndroid Build Coastguard Worker 357580983u,
6323*993b0882SAndroid Build Coastguard Worker 1354454461u,
6324*993b0882SAndroid Build Coastguard Worker 1108813287u,
6325*993b0882SAndroid Build Coastguard Worker 2324008118u,
6326*993b0882SAndroid Build Coastguard Worker 2315997713u,
6327*993b0882SAndroid Build Coastguard Worker 4181601562u,
6328*993b0882SAndroid Build Coastguard Worker 1360882441u,
6329*993b0882SAndroid Build Coastguard Worker 92423273u,
6330*993b0882SAndroid Build Coastguard Worker 3048866755u,
6331*993b0882SAndroid Build Coastguard Worker 3369188505u,
6332*993b0882SAndroid Build Coastguard Worker 3664371439u,
6333*993b0882SAndroid Build Coastguard Worker 2920710428u,
6334*993b0882SAndroid Build Coastguard Worker 1027891570u,
6335*993b0882SAndroid Build Coastguard Worker 2653166430u,
6336*993b0882SAndroid Build Coastguard Worker 3461888315u,
6337*993b0882SAndroid Build Coastguard Worker 1475780447u,
6338*993b0882SAndroid Build Coastguard Worker 292769636u,
6339*993b0882SAndroid Build Coastguard Worker 1737473313u,
6340*993b0882SAndroid Build Coastguard Worker 4064110516u,
6341*993b0882SAndroid Build Coastguard Worker 4170160075u,
6342*993b0882SAndroid Build Coastguard Worker 762850927u,
6343*993b0882SAndroid Build Coastguard Worker 3630603695u,
6344*993b0882SAndroid Build Coastguard Worker 2803307356u,
6345*993b0882SAndroid Build Coastguard Worker 844987665u,
6346*993b0882SAndroid Build Coastguard Worker 460980967u,
6347*993b0882SAndroid Build Coastguard Worker 3005635467u,
6348*993b0882SAndroid Build Coastguard Worker 2802568977u,
6349*993b0882SAndroid Build Coastguard Worker 588668033u,
6350*993b0882SAndroid Build Coastguard Worker 2148940781u,
6351*993b0882SAndroid Build Coastguard Worker 3239099984u,
6352*993b0882SAndroid Build Coastguard Worker 1266953698u,
6353*993b0882SAndroid Build Coastguard Worker 3197808789u,
6354*993b0882SAndroid Build Coastguard Worker 3519942533u,
6355*993b0882SAndroid Build Coastguard Worker 2511995334u,
6356*993b0882SAndroid Build Coastguard Worker 2553810188u,
6357*993b0882SAndroid Build Coastguard Worker 871667697u,
6358*993b0882SAndroid Build Coastguard Worker 1358675720u,
6359*993b0882SAndroid Build Coastguard Worker 1499319171u,
6360*993b0882SAndroid Build Coastguard Worker 2044931270u,
6361*993b0882SAndroid Build Coastguard Worker 1210355103u,
6362*993b0882SAndroid Build Coastguard Worker 807152540u,
6363*993b0882SAndroid Build Coastguard Worker 3262320756u,
6364*993b0882SAndroid Build Coastguard Worker 2810214575u,
6365*993b0882SAndroid Build Coastguard Worker 1813386141u,
6366*993b0882SAndroid Build Coastguard Worker 4089465863u,
6367*993b0882SAndroid Build Coastguard Worker 903928165u,
6368*993b0882SAndroid Build Coastguard Worker 1388899322u,
6369*993b0882SAndroid Build Coastguard Worker 3209183659u,
6370*993b0882SAndroid Build Coastguard Worker 834536144u,
6371*993b0882SAndroid Build Coastguard Worker 2733354550u,
6372*993b0882SAndroid Build Coastguard Worker 2742289921u,
6373*993b0882SAndroid Build Coastguard Worker 3689042563u,
6374*993b0882SAndroid Build Coastguard Worker 2655593281u,
6375*993b0882SAndroid Build Coastguard Worker 4169686303u,
6376*993b0882SAndroid Build Coastguard Worker 415985561u,
6377*993b0882SAndroid Build Coastguard Worker 138892376u,
6378*993b0882SAndroid Build Coastguard Worker 516115393u,
6379*993b0882SAndroid Build Coastguard Worker 65683883u,
6380*993b0882SAndroid Build Coastguard Worker 4162865100u,
6381*993b0882SAndroid Build Coastguard Worker 889944635u,
6382*993b0882SAndroid Build Coastguard Worker 313566528u,
6383*993b0882SAndroid Build Coastguard Worker 3346420907u,
6384*993b0882SAndroid Build Coastguard Worker 1504303591u,
6385*993b0882SAndroid Build Coastguard Worker 2256809275u,
6386*993b0882SAndroid Build Coastguard Worker 742243229u,
6387*993b0882SAndroid Build Coastguard Worker 779775302u,
6388*993b0882SAndroid Build Coastguard Worker 3140940172u,
6389*993b0882SAndroid Build Coastguard Worker 2312556111u,
6390*993b0882SAndroid Build Coastguard Worker 2304095772u,
6391*993b0882SAndroid Build Coastguard Worker 1151741606u,
6392*993b0882SAndroid Build Coastguard Worker 2194712422u,
6393*993b0882SAndroid Build Coastguard Worker 1714084652u,
6394*993b0882SAndroid Build Coastguard Worker 3272736835u,
6395*993b0882SAndroid Build Coastguard Worker 1311540658u,
6396*993b0882SAndroid Build Coastguard Worker 191179665u,
6397*993b0882SAndroid Build Coastguard Worker 3996605106u,
6398*993b0882SAndroid Build Coastguard Worker 1657345233u,
6399*993b0882SAndroid Build Coastguard Worker 4205442903u,
6400*993b0882SAndroid Build Coastguard Worker 1553339212u,
6401*993b0882SAndroid Build Coastguard Worker 2351843044u,
6402*993b0882SAndroid Build Coastguard Worker 1647502006u,
6403*993b0882SAndroid Build Coastguard Worker 2525516233u,
6404*993b0882SAndroid Build Coastguard Worker 292202846u,
6405*993b0882SAndroid Build Coastguard Worker 1498646290u,
6406*993b0882SAndroid Build Coastguard Worker 1429323381u,
6407*993b0882SAndroid Build Coastguard Worker 974274898u,
6408*993b0882SAndroid Build Coastguard Worker 3759331561u,
6409*993b0882SAndroid Build Coastguard Worker 2881238887u,
6410*993b0882SAndroid Build Coastguard Worker 826787221u,
6411*993b0882SAndroid Build Coastguard Worker 1069622448u,
6412*993b0882SAndroid Build Coastguard Worker 221991032u,
6413*993b0882SAndroid Build Coastguard Worker 1462969082u,
6414*993b0882SAndroid Build Coastguard Worker 2799661508u,
6415*993b0882SAndroid Build Coastguard Worker 364022781u,
6416*993b0882SAndroid Build Coastguard Worker 2594244377u,
6417*993b0882SAndroid Build Coastguard Worker 797773898u,
6418*993b0882SAndroid Build Coastguard Worker 4097839290u,
6419*993b0882SAndroid Build Coastguard Worker 1529150125u,
6420*993b0882SAndroid Build Coastguard Worker 2456805570u,
6421*993b0882SAndroid Build Coastguard Worker 541503425u,
6422*993b0882SAndroid Build Coastguard Worker 3936326142u,
6423*993b0882SAndroid Build Coastguard Worker 3112719954u,
6424*993b0882SAndroid Build Coastguard Worker 775223581u,
6425*993b0882SAndroid Build Coastguard Worker 3074018423u,
6426*993b0882SAndroid Build Coastguard Worker 3198488875u,
6427*993b0882SAndroid Build Coastguard Worker 1772191849u,
6428*993b0882SAndroid Build Coastguard Worker 2456535211u,
6429*993b0882SAndroid Build Coastguard Worker 3154686028u,
6430*993b0882SAndroid Build Coastguard Worker 1520862019u,
6431*993b0882SAndroid Build Coastguard Worker 4005829426u,
6432*993b0882SAndroid Build Coastguard Worker 1306433767u,
6433*993b0882SAndroid Build Coastguard Worker 1943028506u,
6434*993b0882SAndroid Build Coastguard Worker 2246000782u,
6435*993b0882SAndroid Build Coastguard Worker 1057766454u,
6436*993b0882SAndroid Build Coastguard Worker 3761996982u,
6437*993b0882SAndroid Build Coastguard Worker 3441075333u,
6438*993b0882SAndroid Build Coastguard Worker 898641979u,
6439*993b0882SAndroid Build Coastguard Worker 3450209088u,
6440*993b0882SAndroid Build Coastguard Worker 3941329307u,
6441*993b0882SAndroid Build Coastguard Worker 3289922449u,
6442*993b0882SAndroid Build Coastguard Worker 3085075827u,
6443*993b0882SAndroid Build Coastguard Worker 1814193220u,
6444*993b0882SAndroid Build Coastguard Worker 690422997u,
6445*993b0882SAndroid Build Coastguard Worker 2627846676u,
6446*993b0882SAndroid Build Coastguard Worker 2653520704u,
6447*993b0882SAndroid Build Coastguard Worker 3739145533u,
6448*993b0882SAndroid Build Coastguard Worker 3996776010u,
6449*993b0882SAndroid Build Coastguard Worker 2287072592u,
6450*993b0882SAndroid Build Coastguard Worker 1346671698u,
6451*993b0882SAndroid Build Coastguard Worker 3082629900u,
6452*993b0882SAndroid Build Coastguard Worker 2298811274u,
6453*993b0882SAndroid Build Coastguard Worker 3639722036u,
6454*993b0882SAndroid Build Coastguard Worker 1729419228u,
6455*993b0882SAndroid Build Coastguard Worker 1836765953u,
6456*993b0882SAndroid Build Coastguard Worker 3708118742u,
6457*993b0882SAndroid Build Coastguard Worker 213436u,
6458*993b0882SAndroid Build Coastguard Worker 950223749u,
6459*993b0882SAndroid Build Coastguard Worker 3734247682u,
6460*993b0882SAndroid Build Coastguard Worker 2924575678u,
6461*993b0882SAndroid Build Coastguard Worker 1382024841u,
6462*993b0882SAndroid Build Coastguard Worker 2431637732u,
6463*993b0882SAndroid Build Coastguard Worker 3448846682u,
6464*993b0882SAndroid Build Coastguard Worker 1341301397u,
6465*993b0882SAndroid Build Coastguard Worker 4206956590u,
6466*993b0882SAndroid Build Coastguard Worker 1730650902u,
6467*993b0882SAndroid Build Coastguard Worker 2581075456u,
6468*993b0882SAndroid Build Coastguard Worker 1542359141u,
6469*993b0882SAndroid Build Coastguard Worker 707222542u,
6470*993b0882SAndroid Build Coastguard Worker 2925350541u,
6471*993b0882SAndroid Build Coastguard Worker 3846303536u,
6472*993b0882SAndroid Build Coastguard Worker 3579103295u,
6473*993b0882SAndroid Build Coastguard Worker 3932175763u,
6474*993b0882SAndroid Build Coastguard Worker 1339615732u,
6475*993b0882SAndroid Build Coastguard Worker 848825750u,
6476*993b0882SAndroid Build Coastguard Worker 1070170828u,
6477*993b0882SAndroid Build Coastguard Worker 1964973818u,
6478*993b0882SAndroid Build Coastguard Worker 577060344u,
6479*993b0882SAndroid Build Coastguard Worker 607721296u,
6480*993b0882SAndroid Build Coastguard Worker 4031023048u,
6481*993b0882SAndroid Build Coastguard Worker 406883794u,
6482*993b0882SAndroid Build Coastguard Worker 3991905552u,
6483*993b0882SAndroid Build Coastguard Worker 1198544082u,
6484*993b0882SAndroid Build Coastguard Worker 872468460u,
6485*993b0882SAndroid Build Coastguard Worker 1044847096u,
6486*993b0882SAndroid Build Coastguard Worker 3159976313u,
6487*993b0882SAndroid Build Coastguard Worker 3020028266u,
6488*993b0882SAndroid Build Coastguard Worker 2108700400u,
6489*993b0882SAndroid Build Coastguard Worker 3373767922u,
6490*993b0882SAndroid Build Coastguard Worker 264431841u,
6491*993b0882SAndroid Build Coastguard Worker 2817097007u,
6492*993b0882SAndroid Build Coastguard Worker 3700061048u,
6493*993b0882SAndroid Build Coastguard Worker 1733731531u,
6494*993b0882SAndroid Build Coastguard Worker 3459415893u,
6495*993b0882SAndroid Build Coastguard Worker 80378591u,
6496*993b0882SAndroid Build Coastguard Worker 1479875104u,
6497*993b0882SAndroid Build Coastguard Worker 19735612u,
6498*993b0882SAndroid Build Coastguard Worker 1382658977u,
6499*993b0882SAndroid Build Coastguard Worker 3416562245u,
6500*993b0882SAndroid Build Coastguard Worker 1959852842u,
6501*993b0882SAndroid Build Coastguard Worker 2384002344u,
6502*993b0882SAndroid Build Coastguard Worker 124683828u,
6503*993b0882SAndroid Build Coastguard Worker 3725782174u,
6504*993b0882SAndroid Build Coastguard Worker 2300301222u,
6505*993b0882SAndroid Build Coastguard Worker 393852269u,
6506*993b0882SAndroid Build Coastguard Worker 1302492002u,
6507*993b0882SAndroid Build Coastguard Worker 3623776492u,
6508*993b0882SAndroid Build Coastguard Worker 3787086417u,
6509*993b0882SAndroid Build Coastguard Worker 1730024749u,
6510*993b0882SAndroid Build Coastguard Worker 1710531361u,
6511*993b0882SAndroid Build Coastguard Worker 443700716u,
6512*993b0882SAndroid Build Coastguard Worker 1461987482u,
6513*993b0882SAndroid Build Coastguard Worker 671998131u,
6514*993b0882SAndroid Build Coastguard Worker 3018380746u,
6515*993b0882SAndroid Build Coastguard Worker 2592292305u,
6516*993b0882SAndroid Build Coastguard Worker 3390799372u,
6517*993b0882SAndroid Build Coastguard Worker 3945101155u,
6518*993b0882SAndroid Build Coastguard Worker 3743494852u,
6519*993b0882SAndroid Build Coastguard Worker 3716045582u,
6520*993b0882SAndroid Build Coastguard Worker 996005166u,
6521*993b0882SAndroid Build Coastguard Worker 320698449u,
6522*993b0882SAndroid Build Coastguard Worker 3420221765u,
6523*993b0882SAndroid Build Coastguard Worker 1518157951u,
6524*993b0882SAndroid Build Coastguard Worker 2555810666u,
6525*993b0882SAndroid Build Coastguard Worker 3381929684u,
6526*993b0882SAndroid Build Coastguard Worker 2019638523u,
6527*993b0882SAndroid Build Coastguard Worker 3088262796u,
6528*993b0882SAndroid Build Coastguard Worker 2072178906u,
6529*993b0882SAndroid Build Coastguard Worker 3433649364u,
6530*993b0882SAndroid Build Coastguard Worker 203906916u,
6531*993b0882SAndroid Build Coastguard Worker 34663784u,
6532*993b0882SAndroid Build Coastguard Worker 290301305u,
6533*993b0882SAndroid Build Coastguard Worker 1188021504u,
6534*993b0882SAndroid Build Coastguard Worker 3754681145u,
6535*993b0882SAndroid Build Coastguard Worker 3920313139u,
6536*993b0882SAndroid Build Coastguard Worker 2840496520u,
6537*993b0882SAndroid Build Coastguard Worker 1656802962u,
6538*993b0882SAndroid Build Coastguard Worker 2288475489u,
6539*993b0882SAndroid Build Coastguard Worker 3399185138u,
6540*993b0882SAndroid Build Coastguard Worker 1296000826u,
6541*993b0882SAndroid Build Coastguard Worker 2362384746u,
6542*993b0882SAndroid Build Coastguard Worker 309633360u,
6543*993b0882SAndroid Build Coastguard Worker 2719851778u,
6544*993b0882SAndroid Build Coastguard Worker 776035930u,
6545*993b0882SAndroid Build Coastguard Worker 3200733043u,
6546*993b0882SAndroid Build Coastguard Worker 365690832u,
6547*993b0882SAndroid Build Coastguard Worker 3326378243u,
6548*993b0882SAndroid Build Coastguard Worker 1500331457u,
6549*993b0882SAndroid Build Coastguard Worker 1625708592u,
6550*993b0882SAndroid Build Coastguard Worker 4230903462u,
6551*993b0882SAndroid Build Coastguard Worker 715344888u,
6552*993b0882SAndroid Build Coastguard Worker 3363777768u,
6553*993b0882SAndroid Build Coastguard Worker 2243620288u,
6554*993b0882SAndroid Build Coastguard Worker 2890765789u,
6555*993b0882SAndroid Build Coastguard Worker 553154234u,
6556*993b0882SAndroid Build Coastguard Worker 4044100108u,
6557*993b0882SAndroid Build Coastguard Worker 4056887320u,
6558*993b0882SAndroid Build Coastguard Worker 1185656496u,
6559*993b0882SAndroid Build Coastguard Worker 3671476744u,
6560*993b0882SAndroid Build Coastguard Worker 1064586897u,
6561*993b0882SAndroid Build Coastguard Worker 1154949698u,
6562*993b0882SAndroid Build Coastguard Worker 3493481974u,
6563*993b0882SAndroid Build Coastguard Worker 1294573722u,
6564*993b0882SAndroid Build Coastguard Worker 1869224012u,
6565*993b0882SAndroid Build Coastguard Worker 2530084956u,
6566*993b0882SAndroid Build Coastguard Worker 995321553u,
6567*993b0882SAndroid Build Coastguard Worker 833419249u,
6568*993b0882SAndroid Build Coastguard Worker 563815282u,
6569*993b0882SAndroid Build Coastguard Worker 250258043u,
6570*993b0882SAndroid Build Coastguard Worker 2970801822u,
6571*993b0882SAndroid Build Coastguard Worker 441007535u,
6572*993b0882SAndroid Build Coastguard Worker 42246961u,
6573*993b0882SAndroid Build Coastguard Worker 2820426655u,
6574*993b0882SAndroid Build Coastguard Worker 2878882436u,
6575*993b0882SAndroid Build Coastguard Worker 2363245780u,
6576*993b0882SAndroid Build Coastguard Worker 2138489282u,
6577*993b0882SAndroid Build Coastguard Worker 2972360481u,
6578*993b0882SAndroid Build Coastguard Worker 2312619393u,
6579*993b0882SAndroid Build Coastguard Worker 3598664848u,
6580*993b0882SAndroid Build Coastguard Worker 3071556076u,
6581*993b0882SAndroid Build Coastguard Worker 776990325u,
6582*993b0882SAndroid Build Coastguard Worker 3220427357u,
6583*993b0882SAndroid Build Coastguard Worker 2257939577u,
6584*993b0882SAndroid Build Coastguard Worker 3817305903u,
6585*993b0882SAndroid Build Coastguard Worker 1502979698u,
6586*993b0882SAndroid Build Coastguard Worker 3159755934u,
6587*993b0882SAndroid Build Coastguard Worker 3955997276u,
6588*993b0882SAndroid Build Coastguard Worker 2423850008u,
6589*993b0882SAndroid Build Coastguard Worker 1959927572u,
6590*993b0882SAndroid Build Coastguard Worker 1219782288u,
6591*993b0882SAndroid Build Coastguard Worker 4119776679u,
6592*993b0882SAndroid Build Coastguard Worker 1124253854u,
6593*993b0882SAndroid Build Coastguard Worker 3678052422u,
6594*993b0882SAndroid Build Coastguard Worker 2620644947u,
6595*993b0882SAndroid Build Coastguard Worker 1262408666u,
6596*993b0882SAndroid Build Coastguard Worker 3480072280u,
6597*993b0882SAndroid Build Coastguard Worker 2627137665u,
6598*993b0882SAndroid Build Coastguard Worker 807538749u,
6599*993b0882SAndroid Build Coastguard Worker 3276646337u,
6600*993b0882SAndroid Build Coastguard Worker 518510128u,
6601*993b0882SAndroid Build Coastguard Worker 1137828655u,
6602*993b0882SAndroid Build Coastguard Worker 1498449110u,
6603*993b0882SAndroid Build Coastguard Worker 3031692317u,
6604*993b0882SAndroid Build Coastguard Worker 1125635969u,
6605*993b0882SAndroid Build Coastguard Worker 1130096111u,
6606*993b0882SAndroid Build Coastguard Worker 780007336u,
6607*993b0882SAndroid Build Coastguard Worker 3111856399u,
6608*993b0882SAndroid Build Coastguard Worker 1014917264u,
6609*993b0882SAndroid Build Coastguard Worker 780877352u,
6610*993b0882SAndroid Build Coastguard Worker 2909458336u,
6611*993b0882SAndroid Build Coastguard Worker 4235949214u,
6612*993b0882SAndroid Build Coastguard Worker 2423879289u,
6613*993b0882SAndroid Build Coastguard Worker 275888892u,
6614*993b0882SAndroid Build Coastguard Worker 3891926795u,
6615*993b0882SAndroid Build Coastguard Worker 3538163953u,
6616*993b0882SAndroid Build Coastguard Worker 54815161u,
6617*993b0882SAndroid Build Coastguard Worker 162228302u,
6618*993b0882SAndroid Build Coastguard Worker 258154068u,
6619*993b0882SAndroid Build Coastguard Worker 3554455591u,
6620*993b0882SAndroid Build Coastguard Worker 1801469029u,
6621*993b0882SAndroid Build Coastguard Worker 2801563220u,
6622*993b0882SAndroid Build Coastguard Worker 726560058u,
6623*993b0882SAndroid Build Coastguard Worker 2450221940u,
6624*993b0882SAndroid Build Coastguard Worker 3677582978u,
6625*993b0882SAndroid Build Coastguard Worker 440993800u,
6626*993b0882SAndroid Build Coastguard Worker 424762443u,
6627*993b0882SAndroid Build Coastguard Worker 2624525253u,
6628*993b0882SAndroid Build Coastguard Worker 2587715329u,
6629*993b0882SAndroid Build Coastguard Worker 2292264424u,
6630*993b0882SAndroid Build Coastguard Worker 1074856749u,
6631*993b0882SAndroid Build Coastguard Worker 3294752007u,
6632*993b0882SAndroid Build Coastguard Worker 3164112672u,
6633*993b0882SAndroid Build Coastguard Worker 2399146799u,
6634*993b0882SAndroid Build Coastguard Worker 1920182465u,
6635*993b0882SAndroid Build Coastguard Worker 3858835361u,
6636*993b0882SAndroid Build Coastguard Worker 193755240u,
6637*993b0882SAndroid Build Coastguard Worker 3333610311u,
6638*993b0882SAndroid Build Coastguard Worker 1757504059u,
6639*993b0882SAndroid Build Coastguard Worker 2576027039u,
6640*993b0882SAndroid Build Coastguard Worker 2775253365u,
6641*993b0882SAndroid Build Coastguard Worker 2939191561u,
6642*993b0882SAndroid Build Coastguard Worker 1046147275u,
6643*993b0882SAndroid Build Coastguard Worker 235149906u,
6644*993b0882SAndroid Build Coastguard Worker 4262218222u,
6645*993b0882SAndroid Build Coastguard Worker 2900542726u,
6646*993b0882SAndroid Build Coastguard Worker 2260154702u,
6647*993b0882SAndroid Build Coastguard Worker 1019551635u,
6648*993b0882SAndroid Build Coastguard Worker 1194720570u,
6649*993b0882SAndroid Build Coastguard Worker 3519118691u,
6650*993b0882SAndroid Build Coastguard Worker 3039483153u,
6651*993b0882SAndroid Build Coastguard Worker 84918216u,
6652*993b0882SAndroid Build Coastguard Worker 3053381097u,
6653*993b0882SAndroid Build Coastguard Worker 2572396843u,
6654*993b0882SAndroid Build Coastguard Worker 3849763371u,
6655*993b0882SAndroid Build Coastguard Worker 2782686780u,
6656*993b0882SAndroid Build Coastguard Worker 3710049554u,
6657*993b0882SAndroid Build Coastguard Worker 3403430713u,
6658*993b0882SAndroid Build Coastguard Worker 2346080784u,
6659*993b0882SAndroid Build Coastguard Worker 2496307442u,
6660*993b0882SAndroid Build Coastguard Worker 1597281872u,
6661*993b0882SAndroid Build Coastguard Worker 696018239u,
6662*993b0882SAndroid Build Coastguard Worker 704625714u,
6663*993b0882SAndroid Build Coastguard Worker 623026921u,
6664*993b0882SAndroid Build Coastguard Worker 3182413559u,
6665*993b0882SAndroid Build Coastguard Worker 3794540330u,
6666*993b0882SAndroid Build Coastguard Worker 305497722u,
6667*993b0882SAndroid Build Coastguard Worker 1592680199u,
6668*993b0882SAndroid Build Coastguard Worker 2377854072u,
6669*993b0882SAndroid Build Coastguard Worker 3060601746u,
6670*993b0882SAndroid Build Coastguard Worker 3953057908u,
6671*993b0882SAndroid Build Coastguard Worker 3941551588u,
6672*993b0882SAndroid Build Coastguard Worker 1033716182u,
6673*993b0882SAndroid Build Coastguard Worker 2765716854u,
6674*993b0882SAndroid Build Coastguard Worker 1309699058u,
6675*993b0882SAndroid Build Coastguard Worker 3519400181u,
6676*993b0882SAndroid Build Coastguard Worker 3073370877u,
6677*993b0882SAndroid Build Coastguard Worker 115583008u,
6678*993b0882SAndroid Build Coastguard Worker 4032909296u,
6679*993b0882SAndroid Build Coastguard Worker 2944563574u,
6680*993b0882SAndroid Build Coastguard Worker 3762753718u,
6681*993b0882SAndroid Build Coastguard Worker 192842727u,
6682*993b0882SAndroid Build Coastguard Worker 1711348701u,
6683*993b0882SAndroid Build Coastguard Worker 3086147235u,
6684*993b0882SAndroid Build Coastguard Worker 1658229443u,
6685*993b0882SAndroid Build Coastguard Worker 1479783872u,
6686*993b0882SAndroid Build Coastguard Worker 3839977157u,
6687*993b0882SAndroid Build Coastguard Worker 225619117u,
6688*993b0882SAndroid Build Coastguard Worker 1349684817u,
6689*993b0882SAndroid Build Coastguard Worker 1964813173u,
6690*993b0882SAndroid Build Coastguard Worker 565753187u,
6691*993b0882SAndroid Build Coastguard Worker 2530252046u,
6692*993b0882SAndroid Build Coastguard Worker 840014353u,
6693*993b0882SAndroid Build Coastguard Worker 1645183704u,
6694*993b0882SAndroid Build Coastguard Worker 3668429078u,
6695*993b0882SAndroid Build Coastguard Worker 3438418557u,
6696*993b0882SAndroid Build Coastguard Worker 639704059u,
6697*993b0882SAndroid Build Coastguard Worker 360837811u,
6698*993b0882SAndroid Build Coastguard Worker 2531807958u,
6699*993b0882SAndroid Build Coastguard Worker 1572353913u,
6700*993b0882SAndroid Build Coastguard Worker 2116037299u,
6701*993b0882SAndroid Build Coastguard Worker 1948437512u,
6702*993b0882SAndroid Build Coastguard Worker 744553393u,
6703*993b0882SAndroid Build Coastguard Worker 2380697034u,
6704*993b0882SAndroid Build Coastguard Worker 3775234105u,
6705*993b0882SAndroid Build Coastguard Worker 3816065157u,
6706*993b0882SAndroid Build Coastguard Worker 301868653u,
6707*993b0882SAndroid Build Coastguard Worker 2960939561u,
6708*993b0882SAndroid Build Coastguard Worker 3306528247u,
6709*993b0882SAndroid Build Coastguard Worker 2389296549u,
6710*993b0882SAndroid Build Coastguard Worker 805918610u,
6711*993b0882SAndroid Build Coastguard Worker 1759358265u,
6712*993b0882SAndroid Build Coastguard Worker 1760876328u,
6713*993b0882SAndroid Build Coastguard Worker 2827601706u,
6714*993b0882SAndroid Build Coastguard Worker 2944594708u,
6715*993b0882SAndroid Build Coastguard Worker 3313666458u,
6716*993b0882SAndroid Build Coastguard Worker 2022601495u,
6717*993b0882SAndroid Build Coastguard Worker 730938791u,
6718*993b0882SAndroid Build Coastguard Worker 193539397u,
6719*993b0882SAndroid Build Coastguard Worker 2026103244u,
6720*993b0882SAndroid Build Coastguard Worker 802928398u,
6721*993b0882SAndroid Build Coastguard Worker 2630934308u,
6722*993b0882SAndroid Build Coastguard Worker 782805818u,
6723*993b0882SAndroid Build Coastguard Worker 3499326016u,
6724*993b0882SAndroid Build Coastguard Worker 293509489u,
6725*993b0882SAndroid Build Coastguard Worker 3646131514u,
6726*993b0882SAndroid Build Coastguard Worker 3182478647u,
6727*993b0882SAndroid Build Coastguard Worker 854800333u,
6728*993b0882SAndroid Build Coastguard Worker 2284531628u,
6729*993b0882SAndroid Build Coastguard Worker 438528022u,
6730*993b0882SAndroid Build Coastguard Worker 2339298129u,
6731*993b0882SAndroid Build Coastguard Worker 1692289216u,
6732*993b0882SAndroid Build Coastguard Worker 2427728723u,
6733*993b0882SAndroid Build Coastguard Worker 46501288u,
6734*993b0882SAndroid Build Coastguard Worker 350652353u,
6735*993b0882SAndroid Build Coastguard Worker 1355971222u,
6736*993b0882SAndroid Build Coastguard Worker 889682372u,
6737*993b0882SAndroid Build Coastguard Worker 944799254u,
6738*993b0882SAndroid Build Coastguard Worker 2763906061u,
6739*993b0882SAndroid Build Coastguard Worker 2807550612u,
6740*993b0882SAndroid Build Coastguard Worker 2683762637u,
6741*993b0882SAndroid Build Coastguard Worker 100870317u,
6742*993b0882SAndroid Build Coastguard Worker 2449357318u,
6743*993b0882SAndroid Build Coastguard Worker 2638348436u,
6744*993b0882SAndroid Build Coastguard Worker 4206088869u,
6745*993b0882SAndroid Build Coastguard Worker 1788948473u,
6746*993b0882SAndroid Build Coastguard Worker 3537588549u,
6747*993b0882SAndroid Build Coastguard Worker 2782490204u,
6748*993b0882SAndroid Build Coastguard Worker 134406470u,
6749*993b0882SAndroid Build Coastguard Worker 2409190528u,
6750*993b0882SAndroid Build Coastguard Worker 2362439849u,
6751*993b0882SAndroid Build Coastguard Worker 1861661528u,
6752*993b0882SAndroid Build Coastguard Worker 2101513194u,
6753*993b0882SAndroid Build Coastguard Worker 1424834765u,
6754*993b0882SAndroid Build Coastguard Worker 3581765745u,
6755*993b0882SAndroid Build Coastguard Worker 3185999525u,
6756*993b0882SAndroid Build Coastguard Worker 2057487100u,
6757*993b0882SAndroid Build Coastguard Worker 2303941176u,
6758*993b0882SAndroid Build Coastguard Worker 3639628788u,
6759*993b0882SAndroid Build Coastguard Worker 1180265315u,
6760*993b0882SAndroid Build Coastguard Worker 230437935u,
6761*993b0882SAndroid Build Coastguard Worker 2108319366u,
6762*993b0882SAndroid Build Coastguard Worker 1131685143u,
6763*993b0882SAndroid Build Coastguard Worker 1055685292u,
6764*993b0882SAndroid Build Coastguard Worker 1509007009u,
6765*993b0882SAndroid Build Coastguard Worker 1258485140u,
6766*993b0882SAndroid Build Coastguard Worker 560525005u,
6767*993b0882SAndroid Build Coastguard Worker 3598799040u,
6768*993b0882SAndroid Build Coastguard Worker 3835680585u,
6769*993b0882SAndroid Build Coastguard Worker 1851859628u,
6770*993b0882SAndroid Build Coastguard Worker 332858996u,
6771*993b0882SAndroid Build Coastguard Worker 641769248u,
6772*993b0882SAndroid Build Coastguard Worker 4252450037u,
6773*993b0882SAndroid Build Coastguard Worker 865386707u,
6774*993b0882SAndroid Build Coastguard Worker 720719117u,
6775*993b0882SAndroid Build Coastguard Worker 3133612164u,
6776*993b0882SAndroid Build Coastguard Worker 3833045874u,
6777*993b0882SAndroid Build Coastguard Worker 3492515435u,
6778*993b0882SAndroid Build Coastguard Worker 2465970289u,
6779*993b0882SAndroid Build Coastguard Worker 4234420011u,
6780*993b0882SAndroid Build Coastguard Worker 573859916u,
6781*993b0882SAndroid Build Coastguard Worker 252532886u,
6782*993b0882SAndroid Build Coastguard Worker 870392318u,
6783*993b0882SAndroid Build Coastguard Worker 4051320920u,
6784*993b0882SAndroid Build Coastguard Worker 894929092u,
6785*993b0882SAndroid Build Coastguard Worker 3748361688u,
6786*993b0882SAndroid Build Coastguard Worker 699355960u,
6787*993b0882SAndroid Build Coastguard Worker 1885212350u,
6788*993b0882SAndroid Build Coastguard Worker 1609756949u,
6789*993b0882SAndroid Build Coastguard Worker 461896870u,
6790*993b0882SAndroid Build Coastguard Worker 1337065461u,
6791*993b0882SAndroid Build Coastguard Worker 1775211059u,
6792*993b0882SAndroid Build Coastguard Worker 1786193749u,
6793*993b0882SAndroid Build Coastguard Worker 2815154643u,
6794*993b0882SAndroid Build Coastguard Worker 2128729882u,
6795*993b0882SAndroid Build Coastguard Worker 969639529u,
6796*993b0882SAndroid Build Coastguard Worker 3960427545u,
6797*993b0882SAndroid Build Coastguard Worker 859416958u,
6798*993b0882SAndroid Build Coastguard Worker 2739758802u,
6799*993b0882SAndroid Build Coastguard Worker 2698032197u,
6800*993b0882SAndroid Build Coastguard Worker 2813292418u,
6801*993b0882SAndroid Build Coastguard Worker 1985467524u,
6802*993b0882SAndroid Build Coastguard Worker 396604317u,
6803*993b0882SAndroid Build Coastguard Worker 4122172759u,
6804*993b0882SAndroid Build Coastguard Worker 1201259789u,
6805*993b0882SAndroid Build Coastguard Worker 4282051702u,
6806*993b0882SAndroid Build Coastguard Worker 3270018895u,
6807*993b0882SAndroid Build Coastguard Worker 961215209u,
6808*993b0882SAndroid Build Coastguard Worker 961075860u,
6809*993b0882SAndroid Build Coastguard Worker 4211926998u,
6810*993b0882SAndroid Build Coastguard Worker 4088374597u,
6811*993b0882SAndroid Build Coastguard Worker 577510509u,
6812*993b0882SAndroid Build Coastguard Worker 3058349487u,
6813*993b0882SAndroid Build Coastguard Worker 4025377754u,
6814*993b0882SAndroid Build Coastguard Worker 2815478438u,
6815*993b0882SAndroid Build Coastguard Worker 471023164u,
6816*993b0882SAndroid Build Coastguard Worker 3947959608u,
6817*993b0882SAndroid Build Coastguard Worker 4161486934u,
6818*993b0882SAndroid Build Coastguard Worker 2299888461u,
6819*993b0882SAndroid Build Coastguard Worker 1103571511u,
6820*993b0882SAndroid Build Coastguard Worker 2450153872u,
6821*993b0882SAndroid Build Coastguard Worker 1839939275u,
6822*993b0882SAndroid Build Coastguard Worker 108299608u,
6823*993b0882SAndroid Build Coastguard Worker 858086440u,
6824*993b0882SAndroid Build Coastguard Worker 1030152945u,
6825*993b0882SAndroid Build Coastguard Worker 3895328530u,
6826*993b0882SAndroid Build Coastguard Worker 3009080718u,
6827*993b0882SAndroid Build Coastguard Worker 3690840454u,
6828*993b0882SAndroid Build Coastguard Worker 3847025277u,
6829*993b0882SAndroid Build Coastguard Worker 152331362u,
6830*993b0882SAndroid Build Coastguard Worker 161365689u,
6831*993b0882SAndroid Build Coastguard Worker 831319961u,
6832*993b0882SAndroid Build Coastguard Worker 2166017294u,
6833*993b0882SAndroid Build Coastguard Worker 3945322722u,
6834*993b0882SAndroid Build Coastguard Worker 4059970216u,
6835*993b0882SAndroid Build Coastguard Worker 1420824131u,
6836*993b0882SAndroid Build Coastguard Worker 2770648308u,
6837*993b0882SAndroid Build Coastguard Worker 1567250186u,
6838*993b0882SAndroid Build Coastguard Worker 2181067149u,
6839*993b0882SAndroid Build Coastguard Worker 1939743488u,
6840*993b0882SAndroid Build Coastguard Worker 3080158120u,
6841*993b0882SAndroid Build Coastguard Worker 3435218248u,
6842*993b0882SAndroid Build Coastguard Worker 2495237495u,
6843*993b0882SAndroid Build Coastguard Worker 3814085102u,
6844*993b0882SAndroid Build Coastguard Worker 3180983013u,
6845*993b0882SAndroid Build Coastguard Worker 3199054292u,
6846*993b0882SAndroid Build Coastguard Worker 2204745908u,
6847*993b0882SAndroid Build Coastguard Worker 1140337267u,
6848*993b0882SAndroid Build Coastguard Worker 2213569784u,
6849*993b0882SAndroid Build Coastguard Worker 1941879842u,
6850*993b0882SAndroid Build Coastguard Worker 2105562605u,
6851*993b0882SAndroid Build Coastguard Worker 3618835614u,
6852*993b0882SAndroid Build Coastguard Worker 2247103645u,
6853*993b0882SAndroid Build Coastguard Worker 2492473487u,
6854*993b0882SAndroid Build Coastguard Worker 856414299u,
6855*993b0882SAndroid Build Coastguard Worker 166022030u,
6856*993b0882SAndroid Build Coastguard Worker 4080104712u,
6857*993b0882SAndroid Build Coastguard Worker 3218935344u,
6858*993b0882SAndroid Build Coastguard Worker 3284220561u,
6859*993b0882SAndroid Build Coastguard Worker 4261581452u,
6860*993b0882SAndroid Build Coastguard Worker 1206944836u,
6861*993b0882SAndroid Build Coastguard Worker 3496705432u,
6862*993b0882SAndroid Build Coastguard Worker 2215996876u,
6863*993b0882SAndroid Build Coastguard Worker 3154627465u,
6864*993b0882SAndroid Build Coastguard Worker 3384005496u,
6865*993b0882SAndroid Build Coastguard Worker 742170556u,
6866*993b0882SAndroid Build Coastguard Worker 1333047620u,
6867*993b0882SAndroid Build Coastguard Worker 802680366u,
6868*993b0882SAndroid Build Coastguard Worker 156833431u,
6869*993b0882SAndroid Build Coastguard Worker 2682100354u,
6870*993b0882SAndroid Build Coastguard Worker 2493654830u,
6871*993b0882SAndroid Build Coastguard Worker 584848366u,
6872*993b0882SAndroid Build Coastguard Worker 1691693131u,
6873*993b0882SAndroid Build Coastguard Worker 2169934170u,
6874*993b0882SAndroid Build Coastguard Worker 779968026u,
6875*993b0882SAndroid Build Coastguard Worker 2099545800u,
6876*993b0882SAndroid Build Coastguard Worker 1423039695u,
6877*993b0882SAndroid Build Coastguard Worker 4292110968u,
6878*993b0882SAndroid Build Coastguard Worker 4266576788u,
6879*993b0882SAndroid Build Coastguard Worker 149142597u,
6880*993b0882SAndroid Build Coastguard Worker 748501873u,
6881*993b0882SAndroid Build Coastguard Worker 3865014822u,
6882*993b0882SAndroid Build Coastguard Worker 1913588198u,
6883*993b0882SAndroid Build Coastguard Worker 130285614u,
6884*993b0882SAndroid Build Coastguard Worker 3500768879u,
6885*993b0882SAndroid Build Coastguard Worker 915458923u,
6886*993b0882SAndroid Build Coastguard Worker 3071792750u,
6887*993b0882SAndroid Build Coastguard Worker 1339986633u,
6888*993b0882SAndroid Build Coastguard Worker 4143929149u,
6889*993b0882SAndroid Build Coastguard Worker 4048379479u,
6890*993b0882SAndroid Build Coastguard Worker 725193827u,
6891*993b0882SAndroid Build Coastguard Worker 1375113643u,
6892*993b0882SAndroid Build Coastguard Worker 2425277412u,
6893*993b0882SAndroid Build Coastguard Worker 4144659274u,
6894*993b0882SAndroid Build Coastguard Worker 465714768u,
6895*993b0882SAndroid Build Coastguard Worker 226991589u,
6896*993b0882SAndroid Build Coastguard Worker 2212127704u,
6897*993b0882SAndroid Build Coastguard Worker 3936145258u,
6898*993b0882SAndroid Build Coastguard Worker 2891024846u,
6899*993b0882SAndroid Build Coastguard Worker 3816000225u,
6900*993b0882SAndroid Build Coastguard Worker 979331165u,
6901*993b0882SAndroid Build Coastguard Worker 1749907536u,
6902*993b0882SAndroid Build Coastguard Worker 53847318u,
6903*993b0882SAndroid Build Coastguard Worker 1462525833u,
6904*993b0882SAndroid Build Coastguard Worker 2961425455u,
6905*993b0882SAndroid Build Coastguard Worker 368859113u,
6906*993b0882SAndroid Build Coastguard Worker 3572721452u,
6907*993b0882SAndroid Build Coastguard Worker 453048644u,
6908*993b0882SAndroid Build Coastguard Worker 1628629918u,
6909*993b0882SAndroid Build Coastguard Worker 3497673923u,
6910*993b0882SAndroid Build Coastguard Worker 3619079585u,
6911*993b0882SAndroid Build Coastguard Worker 139870565u,
6912*993b0882SAndroid Build Coastguard Worker 1518176798u,
6913*993b0882SAndroid Build Coastguard Worker 3933074281u,
6914*993b0882SAndroid Build Coastguard Worker 1878623729u,
6915*993b0882SAndroid Build Coastguard Worker 2074035641u,
6916*993b0882SAndroid Build Coastguard Worker 3016759257u,
6917*993b0882SAndroid Build Coastguard Worker 1313053591u,
6918*993b0882SAndroid Build Coastguard Worker 2557706970u,
6919*993b0882SAndroid Build Coastguard Worker 2348296582u,
6920*993b0882SAndroid Build Coastguard Worker 962370022u,
6921*993b0882SAndroid Build Coastguard Worker 2337285014u,
6922*993b0882SAndroid Build Coastguard Worker 1618936717u,
6923*993b0882SAndroid Build Coastguard Worker 1915877085u,
6924*993b0882SAndroid Build Coastguard Worker 2743743122u,
6925*993b0882SAndroid Build Coastguard Worker 3250783882u,
6926*993b0882SAndroid Build Coastguard Worker 1346652536u,
6927*993b0882SAndroid Build Coastguard Worker 143311109u,
6928*993b0882SAndroid Build Coastguard Worker 2443788461u,
6929*993b0882SAndroid Build Coastguard Worker 1048248964u,
6930*993b0882SAndroid Build Coastguard Worker 2806619339u,
6931*993b0882SAndroid Build Coastguard Worker 3263266976u,
6932*993b0882SAndroid Build Coastguard Worker 1668146349u,
6933*993b0882SAndroid Build Coastguard Worker 3397428868u,
6934*993b0882SAndroid Build Coastguard Worker 3276188862u,
6935*993b0882SAndroid Build Coastguard Worker 1774196343u,
6936*993b0882SAndroid Build Coastguard Worker 1993847813u,
6937*993b0882SAndroid Build Coastguard Worker 2771079610u,
6938*993b0882SAndroid Build Coastguard Worker 476672419u,
6939*993b0882SAndroid Build Coastguard Worker 2119050359u,
6940*993b0882SAndroid Build Coastguard Worker 2918326659u,
6941*993b0882SAndroid Build Coastguard Worker 2245402721u,
6942*993b0882SAndroid Build Coastguard Worker 2692910474u,
6943*993b0882SAndroid Build Coastguard Worker 2374383269u,
6944*993b0882SAndroid Build Coastguard Worker 342400227u,
6945*993b0882SAndroid Build Coastguard Worker 2961437795u,
6946*993b0882SAndroid Build Coastguard Worker 3899230368u,
6947*993b0882SAndroid Build Coastguard Worker 337787132u,
6948*993b0882SAndroid Build Coastguard Worker 3664444935u,
6949*993b0882SAndroid Build Coastguard Worker 1269451153u,
6950*993b0882SAndroid Build Coastguard Worker 2971526729u,
6951*993b0882SAndroid Build Coastguard Worker 1486511182u,
6952*993b0882SAndroid Build Coastguard Worker 791070133u,
6953*993b0882SAndroid Build Coastguard Worker 2570319890u,
6954*993b0882SAndroid Build Coastguard Worker 3482497490u,
6955*993b0882SAndroid Build Coastguard Worker 2134230518u,
6956*993b0882SAndroid Build Coastguard Worker 4273391202u,
6957*993b0882SAndroid Build Coastguard Worker 1825511330u,
6958*993b0882SAndroid Build Coastguard Worker 3947753714u,
6959*993b0882SAndroid Build Coastguard Worker 1389755724u,
6960*993b0882SAndroid Build Coastguard Worker 3995075516u,
6961*993b0882SAndroid Build Coastguard Worker 2081052615u,
6962*993b0882SAndroid Build Coastguard Worker 3626343470u,
6963*993b0882SAndroid Build Coastguard Worker 4213603435u,
6964*993b0882SAndroid Build Coastguard Worker 2137917278u,
6965*993b0882SAndroid Build Coastguard Worker 2898987303u,
6966*993b0882SAndroid Build Coastguard Worker 3059215715u,
6967*993b0882SAndroid Build Coastguard Worker 3383237881u,
6968*993b0882SAndroid Build Coastguard Worker 3003674434u,
6969*993b0882SAndroid Build Coastguard Worker 409174425u,
6970*993b0882SAndroid Build Coastguard Worker 1911915604u,
6971*993b0882SAndroid Build Coastguard Worker 2087728055u,
6972*993b0882SAndroid Build Coastguard Worker 2942005882u,
6973*993b0882SAndroid Build Coastguard Worker 3386522440u,
6974*993b0882SAndroid Build Coastguard Worker 714936074u,
6975*993b0882SAndroid Build Coastguard Worker 261924004u,
6976*993b0882SAndroid Build Coastguard Worker 3268784033u,
6977*993b0882SAndroid Build Coastguard Worker 1141188757u,
6978*993b0882SAndroid Build Coastguard Worker 2413217552u,
6979*993b0882SAndroid Build Coastguard Worker 1515163433u,
6980*993b0882SAndroid Build Coastguard Worker };
6981*993b0882SAndroid Build Coastguard Worker
6982*993b0882SAndroid Build Coastguard Worker // Return false only if offset is -1 and a spot check of 3 hashes all yield 0.
Test(int offset,int len=0)6983*993b0882SAndroid Build Coastguard Worker bool Test(int offset, int len = 0) {
6984*993b0882SAndroid Build Coastguard Worker #undef Check
6985*993b0882SAndroid Build Coastguard Worker #undef IsAlive
6986*993b0882SAndroid Build Coastguard Worker
6987*993b0882SAndroid Build Coastguard Worker #define Check(x) do { \
6988*993b0882SAndroid Build Coastguard Worker bool ok = expected[index++] == (x); \
6989*993b0882SAndroid Build Coastguard Worker assert(ok); \
6990*993b0882SAndroid Build Coastguard Worker errors += !ok; \
6991*993b0882SAndroid Build Coastguard Worker } while (0)
6992*993b0882SAndroid Build Coastguard Worker
6993*993b0882SAndroid Build Coastguard Worker #define IsAlive(x) do { alive += IsNonZero(x); } while (0)
6994*993b0882SAndroid Build Coastguard Worker
6995*993b0882SAndroid Build Coastguard Worker // After the following line is where the uses of "Check" and such will go.
6996*993b0882SAndroid Build Coastguard Worker static int index = 0;
6997*993b0882SAndroid Build Coastguard Worker if (offset == -1) { int alive = 0; IsAlive(farmhashsa::Hash32WithSeed(data, len++, SEED)); IsAlive(farmhashsa::Hash32(data, len++)); IsAlive(farmhashsa::Hash32(data, len++)); len -= 3; return alive > 0; }
6998*993b0882SAndroid Build Coastguard Worker Check(farmhashsa::Hash32WithSeed(data + offset, len, SEED));
6999*993b0882SAndroid Build Coastguard Worker Check(farmhashsa::Hash32(data + offset, len));
7000*993b0882SAndroid Build Coastguard Worker
7001*993b0882SAndroid Build Coastguard Worker return true;
7002*993b0882SAndroid Build Coastguard Worker #undef Check
7003*993b0882SAndroid Build Coastguard Worker #undef IsAlive
7004*993b0882SAndroid Build Coastguard Worker }
7005*993b0882SAndroid Build Coastguard Worker
RunTest()7006*993b0882SAndroid Build Coastguard Worker int RunTest() {
7007*993b0882SAndroid Build Coastguard Worker Setup();
7008*993b0882SAndroid Build Coastguard Worker int i = 0;
7009*993b0882SAndroid Build Coastguard Worker cout << "Running farmhashsaTest";
7010*993b0882SAndroid Build Coastguard Worker if (!Test(-1)) {
7011*993b0882SAndroid Build Coastguard Worker cout << "... Unavailable\n";
7012*993b0882SAndroid Build Coastguard Worker return NoteErrors();
7013*993b0882SAndroid Build Coastguard Worker }
7014*993b0882SAndroid Build Coastguard Worker // Good. The function is attempting to hash, so run the full test.
7015*993b0882SAndroid Build Coastguard Worker int errors_prior_to_test = errors;
7016*993b0882SAndroid Build Coastguard Worker for ( ; i < kTestSize - 1; i++) {
7017*993b0882SAndroid Build Coastguard Worker Test(i * i, i);
7018*993b0882SAndroid Build Coastguard Worker }
7019*993b0882SAndroid Build Coastguard Worker for ( ; i < kDataSize; i += i / 7) {
7020*993b0882SAndroid Build Coastguard Worker Test(0, i);
7021*993b0882SAndroid Build Coastguard Worker }
7022*993b0882SAndroid Build Coastguard Worker Test(0, kDataSize);
7023*993b0882SAndroid Build Coastguard Worker cout << (errors == errors_prior_to_test ? "... OK\n" : "... Failed\n");
7024*993b0882SAndroid Build Coastguard Worker return NoteErrors();
7025*993b0882SAndroid Build Coastguard Worker }
7026*993b0882SAndroid Build Coastguard Worker
7027*993b0882SAndroid Build Coastguard Worker #else
7028*993b0882SAndroid Build Coastguard Worker
7029*993b0882SAndroid Build Coastguard Worker // After the following line is where the code to print hash codes will go.
Dump(int offset,int len)7030*993b0882SAndroid Build Coastguard Worker void Dump(int offset, int len) {
7031*993b0882SAndroid Build Coastguard Worker cout << farmhashsa::Hash32WithSeed(data + offset, len, SEED) << "u," << endl;
7032*993b0882SAndroid Build Coastguard Worker cout << farmhashsa::Hash32(data + offset, len) << "u," << endl;
7033*993b0882SAndroid Build Coastguard Worker }
7034*993b0882SAndroid Build Coastguard Worker
7035*993b0882SAndroid Build Coastguard Worker #endif
7036*993b0882SAndroid Build Coastguard Worker
7037*993b0882SAndroid Build Coastguard Worker #undef SEED
7038*993b0882SAndroid Build Coastguard Worker #undef SEED1
7039*993b0882SAndroid Build Coastguard Worker #undef SEED0
7040*993b0882SAndroid Build Coastguard Worker
7041*993b0882SAndroid Build Coastguard Worker } // namespace farmhashsaTest
7042*993b0882SAndroid Build Coastguard Worker
7043*993b0882SAndroid Build Coastguard Worker #if TESTING
7044*993b0882SAndroid Build Coastguard Worker
7045*993b0882SAndroid Build Coastguard Worker static int farmhashsaTestResult = farmhashsaTest::RunTest();
7046*993b0882SAndroid Build Coastguard Worker
7047*993b0882SAndroid Build Coastguard Worker #else
main(int argc,char ** argv)7048*993b0882SAndroid Build Coastguard Worker int main(int argc, char** argv) {
7049*993b0882SAndroid Build Coastguard Worker Setup();
7050*993b0882SAndroid Build Coastguard Worker cout << "uint32_t expected[] = {\n";
7051*993b0882SAndroid Build Coastguard Worker int i = 0;
7052*993b0882SAndroid Build Coastguard Worker for ( ; i < kTestSize - 1; i++) {
7053*993b0882SAndroid Build Coastguard Worker farmhashsaTest::Dump(i * i, i);
7054*993b0882SAndroid Build Coastguard Worker }
7055*993b0882SAndroid Build Coastguard Worker for ( ; i < kDataSize; i += i / 7) {
7056*993b0882SAndroid Build Coastguard Worker farmhashsaTest::Dump(0, i);
7057*993b0882SAndroid Build Coastguard Worker }
7058*993b0882SAndroid Build Coastguard Worker farmhashsaTest::Dump(0, kDataSize);
7059*993b0882SAndroid Build Coastguard Worker cout << "};\n";
7060*993b0882SAndroid Build Coastguard Worker }
7061*993b0882SAndroid Build Coastguard Worker #endif
7062*993b0882SAndroid Build Coastguard Worker #ifndef FARMHASH_SELF_TEST_GUARD
7063*993b0882SAndroid Build Coastguard Worker #define FARMHASH_SELF_TEST_GUARD
7064*993b0882SAndroid Build Coastguard Worker #include <string.h>
7065*993b0882SAndroid Build Coastguard Worker #include <cstdio>
7066*993b0882SAndroid Build Coastguard Worker #include <iostream>
7067*993b0882SAndroid Build Coastguard Worker
7068*993b0882SAndroid Build Coastguard Worker using std::cout;
7069*993b0882SAndroid Build Coastguard Worker using std::cerr;
7070*993b0882SAndroid Build Coastguard Worker using std::endl;
7071*993b0882SAndroid Build Coastguard Worker using std::hex;
7072*993b0882SAndroid Build Coastguard Worker
7073*993b0882SAndroid Build Coastguard Worker static const uint64_t kSeed0 = 1234567;
7074*993b0882SAndroid Build Coastguard Worker static const uint64_t kSeed1 = k0;
7075*993b0882SAndroid Build Coastguard Worker static const int kDataSize = 1 << 20;
7076*993b0882SAndroid Build Coastguard Worker static const int kTestSize = 300;
7077*993b0882SAndroid Build Coastguard Worker #define kSeed128 Uint128(kSeed0, kSeed1)
7078*993b0882SAndroid Build Coastguard Worker
7079*993b0882SAndroid Build Coastguard Worker static char data[kDataSize];
7080*993b0882SAndroid Build Coastguard Worker
7081*993b0882SAndroid Build Coastguard Worker static int completed_self_tests = 0;
7082*993b0882SAndroid Build Coastguard Worker static int errors = 0;
7083*993b0882SAndroid Build Coastguard Worker
7084*993b0882SAndroid Build Coastguard Worker // Initialize data to pseudorandom values.
Setup()7085*993b0882SAndroid Build Coastguard Worker void Setup() {
7086*993b0882SAndroid Build Coastguard Worker if (completed_self_tests == 0) {
7087*993b0882SAndroid Build Coastguard Worker uint64_t a = 9;
7088*993b0882SAndroid Build Coastguard Worker uint64_t b = 777;
7089*993b0882SAndroid Build Coastguard Worker for (int i = 0; i < kDataSize; i++) {
7090*993b0882SAndroid Build Coastguard Worker a += b;
7091*993b0882SAndroid Build Coastguard Worker b += a;
7092*993b0882SAndroid Build Coastguard Worker a = (a ^ (a >> 41)) * k0;
7093*993b0882SAndroid Build Coastguard Worker b = (b ^ (b >> 41)) * k0 + i;
7094*993b0882SAndroid Build Coastguard Worker uint8_t u = b >> 37;
7095*993b0882SAndroid Build Coastguard Worker memcpy(data + i, &u, 1); // uint8_t -> char
7096*993b0882SAndroid Build Coastguard Worker }
7097*993b0882SAndroid Build Coastguard Worker }
7098*993b0882SAndroid Build Coastguard Worker }
7099*993b0882SAndroid Build Coastguard Worker
NoteErrors()7100*993b0882SAndroid Build Coastguard Worker int NoteErrors() {
7101*993b0882SAndroid Build Coastguard Worker #define NUM_SELF_TESTS 6
7102*993b0882SAndroid Build Coastguard Worker if (++completed_self_tests == NUM_SELF_TESTS)
7103*993b0882SAndroid Build Coastguard Worker std::exit(errors > 0);
7104*993b0882SAndroid Build Coastguard Worker return errors;
7105*993b0882SAndroid Build Coastguard Worker }
7106*993b0882SAndroid Build Coastguard Worker
IsNonZero(T x)7107*993b0882SAndroid Build Coastguard Worker template <typename T> inline bool IsNonZero(T x) {
7108*993b0882SAndroid Build Coastguard Worker return x != 0;
7109*993b0882SAndroid Build Coastguard Worker }
7110*993b0882SAndroid Build Coastguard Worker
IsNonZero(uint128_t x)7111*993b0882SAndroid Build Coastguard Worker template <> inline bool IsNonZero<uint128_t>(uint128_t x) {
7112*993b0882SAndroid Build Coastguard Worker return x != Uint128(0, 0);
7113*993b0882SAndroid Build Coastguard Worker }
7114*993b0882SAndroid Build Coastguard Worker
7115*993b0882SAndroid Build Coastguard Worker #endif // FARMHASH_SELF_TEST_GUARD
7116*993b0882SAndroid Build Coastguard Worker
7117*993b0882SAndroid Build Coastguard Worker namespace farmhashsuTest {
7118*993b0882SAndroid Build Coastguard Worker
CreateSeed(int offset,int salt)7119*993b0882SAndroid Build Coastguard Worker uint32_t CreateSeed(int offset, int salt) {
7120*993b0882SAndroid Build Coastguard Worker uint32_t h = static_cast<uint32_t>(salt & 0xffffffff);
7121*993b0882SAndroid Build Coastguard Worker h = h * c1;
7122*993b0882SAndroid Build Coastguard Worker h ^= (h >> 17);
7123*993b0882SAndroid Build Coastguard Worker h = h * c1;
7124*993b0882SAndroid Build Coastguard Worker h ^= (h >> 17);
7125*993b0882SAndroid Build Coastguard Worker h = h * c1;
7126*993b0882SAndroid Build Coastguard Worker h ^= (h >> 17);
7127*993b0882SAndroid Build Coastguard Worker h += static_cast<uint32_t>(offset & 0xffffffff);
7128*993b0882SAndroid Build Coastguard Worker h = h * c1;
7129*993b0882SAndroid Build Coastguard Worker h ^= (h >> 17);
7130*993b0882SAndroid Build Coastguard Worker h = h * c1;
7131*993b0882SAndroid Build Coastguard Worker h ^= (h >> 17);
7132*993b0882SAndroid Build Coastguard Worker h = h * c1;
7133*993b0882SAndroid Build Coastguard Worker h ^= (h >> 17);
7134*993b0882SAndroid Build Coastguard Worker return h;
7135*993b0882SAndroid Build Coastguard Worker }
7136*993b0882SAndroid Build Coastguard Worker
7137*993b0882SAndroid Build Coastguard Worker #undef SEED
7138*993b0882SAndroid Build Coastguard Worker #undef SEED1
7139*993b0882SAndroid Build Coastguard Worker #undef SEED0
7140*993b0882SAndroid Build Coastguard Worker #define SEED CreateSeed(offset, -1)
7141*993b0882SAndroid Build Coastguard Worker #define SEED0 CreateSeed(offset, 0)
7142*993b0882SAndroid Build Coastguard Worker #define SEED1 CreateSeed(offset, 1)
7143*993b0882SAndroid Build Coastguard Worker
7144*993b0882SAndroid Build Coastguard Worker #undef TESTING
7145*993b0882SAndroid Build Coastguard Worker #define TESTING 1
7146*993b0882SAndroid Build Coastguard Worker #if TESTING
7147*993b0882SAndroid Build Coastguard Worker uint32_t expected[] = {
7148*993b0882SAndroid Build Coastguard Worker 4223616069u,
7149*993b0882SAndroid Build Coastguard Worker 3696677242u,
7150*993b0882SAndroid Build Coastguard Worker 4081014168u,
7151*993b0882SAndroid Build Coastguard Worker 2576519988u,
7152*993b0882SAndroid Build Coastguard Worker 2212771159u,
7153*993b0882SAndroid Build Coastguard Worker 1112731063u,
7154*993b0882SAndroid Build Coastguard Worker 1020067935u,
7155*993b0882SAndroid Build Coastguard Worker 3955445564u,
7156*993b0882SAndroid Build Coastguard Worker 1451961420u,
7157*993b0882SAndroid Build Coastguard Worker 653440099u,
7158*993b0882SAndroid Build Coastguard Worker 31917516u,
7159*993b0882SAndroid Build Coastguard Worker 2957164615u,
7160*993b0882SAndroid Build Coastguard Worker 2590087362u,
7161*993b0882SAndroid Build Coastguard Worker 3879448744u,
7162*993b0882SAndroid Build Coastguard Worker 176305566u,
7163*993b0882SAndroid Build Coastguard Worker 2447367541u,
7164*993b0882SAndroid Build Coastguard Worker 1359016305u,
7165*993b0882SAndroid Build Coastguard Worker 3363804638u,
7166*993b0882SAndroid Build Coastguard Worker 1117290165u,
7167*993b0882SAndroid Build Coastguard Worker 1062549743u,
7168*993b0882SAndroid Build Coastguard Worker 2437877004u,
7169*993b0882SAndroid Build Coastguard Worker 1894455839u,
7170*993b0882SAndroid Build Coastguard Worker 673206794u,
7171*993b0882SAndroid Build Coastguard Worker 3486923651u,
7172*993b0882SAndroid Build Coastguard Worker 3269862919u,
7173*993b0882SAndroid Build Coastguard Worker 2303349487u,
7174*993b0882SAndroid Build Coastguard Worker 1380660650u,
7175*993b0882SAndroid Build Coastguard Worker 595525107u,
7176*993b0882SAndroid Build Coastguard Worker 1525325287u,
7177*993b0882SAndroid Build Coastguard Worker 2025609358u,
7178*993b0882SAndroid Build Coastguard Worker 176408838u,
7179*993b0882SAndroid Build Coastguard Worker 1592885012u,
7180*993b0882SAndroid Build Coastguard Worker 864896482u,
7181*993b0882SAndroid Build Coastguard Worker 2101378090u,
7182*993b0882SAndroid Build Coastguard Worker 3489229104u,
7183*993b0882SAndroid Build Coastguard Worker 2118965695u,
7184*993b0882SAndroid Build Coastguard Worker 581644891u,
7185*993b0882SAndroid Build Coastguard Worker 2718789079u,
7186*993b0882SAndroid Build Coastguard Worker 631613207u,
7187*993b0882SAndroid Build Coastguard Worker 4228658372u,
7188*993b0882SAndroid Build Coastguard Worker 3867875546u,
7189*993b0882SAndroid Build Coastguard Worker 3531368319u,
7190*993b0882SAndroid Build Coastguard Worker 3804516756u,
7191*993b0882SAndroid Build Coastguard Worker 3317755099u,
7192*993b0882SAndroid Build Coastguard Worker 1619744564u,
7193*993b0882SAndroid Build Coastguard Worker 2884717286u,
7194*993b0882SAndroid Build Coastguard Worker 1088213445u,
7195*993b0882SAndroid Build Coastguard Worker 2667691076u,
7196*993b0882SAndroid Build Coastguard Worker 3727873235u,
7197*993b0882SAndroid Build Coastguard Worker 2330406762u,
7198*993b0882SAndroid Build Coastguard Worker 858590707u,
7199*993b0882SAndroid Build Coastguard Worker 457744844u,
7200*993b0882SAndroid Build Coastguard Worker 4150036245u,
7201*993b0882SAndroid Build Coastguard Worker 2000404290u,
7202*993b0882SAndroid Build Coastguard Worker 1478882570u,
7203*993b0882SAndroid Build Coastguard Worker 901678172u,
7204*993b0882SAndroid Build Coastguard Worker 819171187u,
7205*993b0882SAndroid Build Coastguard Worker 195942998u,
7206*993b0882SAndroid Build Coastguard Worker 4254302102u,
7207*993b0882SAndroid Build Coastguard Worker 3967266927u,
7208*993b0882SAndroid Build Coastguard Worker 437030323u,
7209*993b0882SAndroid Build Coastguard Worker 4018009204u,
7210*993b0882SAndroid Build Coastguard Worker 2868246750u,
7211*993b0882SAndroid Build Coastguard Worker 3540087514u,
7212*993b0882SAndroid Build Coastguard Worker 3154852132u,
7213*993b0882SAndroid Build Coastguard Worker 3319116625u,
7214*993b0882SAndroid Build Coastguard Worker 357580983u,
7215*993b0882SAndroid Build Coastguard Worker 3177665294u,
7216*993b0882SAndroid Build Coastguard Worker 1108813287u,
7217*993b0882SAndroid Build Coastguard Worker 1253366798u,
7218*993b0882SAndroid Build Coastguard Worker 2315997713u,
7219*993b0882SAndroid Build Coastguard Worker 510718750u,
7220*993b0882SAndroid Build Coastguard Worker 1360882441u,
7221*993b0882SAndroid Build Coastguard Worker 2770216279u,
7222*993b0882SAndroid Build Coastguard Worker 3048866755u,
7223*993b0882SAndroid Build Coastguard Worker 3406961221u,
7224*993b0882SAndroid Build Coastguard Worker 3664371439u,
7225*993b0882SAndroid Build Coastguard Worker 1151145514u,
7226*993b0882SAndroid Build Coastguard Worker 1027891570u,
7227*993b0882SAndroid Build Coastguard Worker 2699067992u,
7228*993b0882SAndroid Build Coastguard Worker 3461888315u,
7229*993b0882SAndroid Build Coastguard Worker 198061905u,
7230*993b0882SAndroid Build Coastguard Worker 292769636u,
7231*993b0882SAndroid Build Coastguard Worker 1106771795u,
7232*993b0882SAndroid Build Coastguard Worker 4064110516u,
7233*993b0882SAndroid Build Coastguard Worker 3258279756u,
7234*993b0882SAndroid Build Coastguard Worker 762850927u,
7235*993b0882SAndroid Build Coastguard Worker 1818699721u,
7236*993b0882SAndroid Build Coastguard Worker 2803307356u,
7237*993b0882SAndroid Build Coastguard Worker 3919169404u,
7238*993b0882SAndroid Build Coastguard Worker 460980967u,
7239*993b0882SAndroid Build Coastguard Worker 3125535078u,
7240*993b0882SAndroid Build Coastguard Worker 2802568977u,
7241*993b0882SAndroid Build Coastguard Worker 3582546426u,
7242*993b0882SAndroid Build Coastguard Worker 2148940781u,
7243*993b0882SAndroid Build Coastguard Worker 3963274378u,
7244*993b0882SAndroid Build Coastguard Worker 1266953698u,
7245*993b0882SAndroid Build Coastguard Worker 204185123u,
7246*993b0882SAndroid Build Coastguard Worker 1100034381u,
7247*993b0882SAndroid Build Coastguard Worker 3009193601u,
7248*993b0882SAndroid Build Coastguard Worker 4200651967u,
7249*993b0882SAndroid Build Coastguard Worker 274889605u,
7250*993b0882SAndroid Build Coastguard Worker 2700589508u,
7251*993b0882SAndroid Build Coastguard Worker 952511689u,
7252*993b0882SAndroid Build Coastguard Worker 3765324859u,
7253*993b0882SAndroid Build Coastguard Worker 3465498478u,
7254*993b0882SAndroid Build Coastguard Worker 4014967037u,
7255*993b0882SAndroid Build Coastguard Worker 2070988082u,
7256*993b0882SAndroid Build Coastguard Worker 2972423530u,
7257*993b0882SAndroid Build Coastguard Worker 3068638223u,
7258*993b0882SAndroid Build Coastguard Worker 4156773651u,
7259*993b0882SAndroid Build Coastguard Worker 489509804u,
7260*993b0882SAndroid Build Coastguard Worker 1323863238u,
7261*993b0882SAndroid Build Coastguard Worker 3731914806u,
7262*993b0882SAndroid Build Coastguard Worker 2846098469u,
7263*993b0882SAndroid Build Coastguard Worker 2728930632u,
7264*993b0882SAndroid Build Coastguard Worker 346814072u,
7265*993b0882SAndroid Build Coastguard Worker 848146907u,
7266*993b0882SAndroid Build Coastguard Worker 551160669u,
7267*993b0882SAndroid Build Coastguard Worker 4165126521u,
7268*993b0882SAndroid Build Coastguard Worker 2039095001u,
7269*993b0882SAndroid Build Coastguard Worker 4179859388u,
7270*993b0882SAndroid Build Coastguard Worker 2434936359u,
7271*993b0882SAndroid Build Coastguard Worker 2764414551u,
7272*993b0882SAndroid Build Coastguard Worker 238491210u,
7273*993b0882SAndroid Build Coastguard Worker 732483969u,
7274*993b0882SAndroid Build Coastguard Worker 3366512764u,
7275*993b0882SAndroid Build Coastguard Worker 478307468u,
7276*993b0882SAndroid Build Coastguard Worker 4124179572u,
7277*993b0882SAndroid Build Coastguard Worker 4142733597u,
7278*993b0882SAndroid Build Coastguard Worker 1953448206u,
7279*993b0882SAndroid Build Coastguard Worker 4199329278u,
7280*993b0882SAndroid Build Coastguard Worker 865077060u,
7281*993b0882SAndroid Build Coastguard Worker 2627662116u,
7282*993b0882SAndroid Build Coastguard Worker 2802499360u,
7283*993b0882SAndroid Build Coastguard Worker 3141206831u,
7284*993b0882SAndroid Build Coastguard Worker 1959218197u,
7285*993b0882SAndroid Build Coastguard Worker 911371451u,
7286*993b0882SAndroid Build Coastguard Worker 125987200u,
7287*993b0882SAndroid Build Coastguard Worker 2821366175u,
7288*993b0882SAndroid Build Coastguard Worker 2530992747u,
7289*993b0882SAndroid Build Coastguard Worker 2409206225u,
7290*993b0882SAndroid Build Coastguard Worker 117991880u,
7291*993b0882SAndroid Build Coastguard Worker 2133402461u,
7292*993b0882SAndroid Build Coastguard Worker 895510531u,
7293*993b0882SAndroid Build Coastguard Worker 428719601u,
7294*993b0882SAndroid Build Coastguard Worker 3036014536u,
7295*993b0882SAndroid Build Coastguard Worker 1223783733u,
7296*993b0882SAndroid Build Coastguard Worker 733793540u,
7297*993b0882SAndroid Build Coastguard Worker 970650405u,
7298*993b0882SAndroid Build Coastguard Worker 547701766u,
7299*993b0882SAndroid Build Coastguard Worker 570764615u,
7300*993b0882SAndroid Build Coastguard Worker 3224485368u,
7301*993b0882SAndroid Build Coastguard Worker 3192714940u,
7302*993b0882SAndroid Build Coastguard Worker 319942831u,
7303*993b0882SAndroid Build Coastguard Worker 3940200341u,
7304*993b0882SAndroid Build Coastguard Worker 362056204u,
7305*993b0882SAndroid Build Coastguard Worker 2832368105u,
7306*993b0882SAndroid Build Coastguard Worker 1853281226u,
7307*993b0882SAndroid Build Coastguard Worker 3296434636u,
7308*993b0882SAndroid Build Coastguard Worker 3752508307u,
7309*993b0882SAndroid Build Coastguard Worker 604292768u,
7310*993b0882SAndroid Build Coastguard Worker 2231940616u,
7311*993b0882SAndroid Build Coastguard Worker 1204094681u,
7312*993b0882SAndroid Build Coastguard Worker 866194005u,
7313*993b0882SAndroid Build Coastguard Worker 2405201650u,
7314*993b0882SAndroid Build Coastguard Worker 2466384396u,
7315*993b0882SAndroid Build Coastguard Worker 380829379u,
7316*993b0882SAndroid Build Coastguard Worker 230033818u,
7317*993b0882SAndroid Build Coastguard Worker 2783417588u,
7318*993b0882SAndroid Build Coastguard Worker 4249886729u,
7319*993b0882SAndroid Build Coastguard Worker 829569301u,
7320*993b0882SAndroid Build Coastguard Worker 2988322580u,
7321*993b0882SAndroid Build Coastguard Worker 2299983554u,
7322*993b0882SAndroid Build Coastguard Worker 74748560u,
7323*993b0882SAndroid Build Coastguard Worker 737514425u,
7324*993b0882SAndroid Build Coastguard Worker 3153050211u,
7325*993b0882SAndroid Build Coastguard Worker 652642663u,
7326*993b0882SAndroid Build Coastguard Worker 1270205115u,
7327*993b0882SAndroid Build Coastguard Worker 227197032u,
7328*993b0882SAndroid Build Coastguard Worker 2773091790u,
7329*993b0882SAndroid Build Coastguard Worker 325849216u,
7330*993b0882SAndroid Build Coastguard Worker 49998791u,
7331*993b0882SAndroid Build Coastguard Worker 4043203010u,
7332*993b0882SAndroid Build Coastguard Worker 3662748068u,
7333*993b0882SAndroid Build Coastguard Worker 1709364383u,
7334*993b0882SAndroid Build Coastguard Worker 1179105165u,
7335*993b0882SAndroid Build Coastguard Worker 1478504366u,
7336*993b0882SAndroid Build Coastguard Worker 2980456610u,
7337*993b0882SAndroid Build Coastguard Worker 1167476429u,
7338*993b0882SAndroid Build Coastguard Worker 1590390732u,
7339*993b0882SAndroid Build Coastguard Worker 1306256496u,
7340*993b0882SAndroid Build Coastguard Worker 292008135u,
7341*993b0882SAndroid Build Coastguard Worker 374690995u,
7342*993b0882SAndroid Build Coastguard Worker 1809200819u,
7343*993b0882SAndroid Build Coastguard Worker 1680595904u,
7344*993b0882SAndroid Build Coastguard Worker 646040226u,
7345*993b0882SAndroid Build Coastguard Worker 1742445560u,
7346*993b0882SAndroid Build Coastguard Worker 2435776844u,
7347*993b0882SAndroid Build Coastguard Worker 3703683804u,
7348*993b0882SAndroid Build Coastguard Worker 478742495u,
7349*993b0882SAndroid Build Coastguard Worker 814967947u,
7350*993b0882SAndroid Build Coastguard Worker 2698190177u,
7351*993b0882SAndroid Build Coastguard Worker 1003617993u,
7352*993b0882SAndroid Build Coastguard Worker 1436118705u,
7353*993b0882SAndroid Build Coastguard Worker 217056304u,
7354*993b0882SAndroid Build Coastguard Worker 1412287094u,
7355*993b0882SAndroid Build Coastguard Worker 2738417466u,
7356*993b0882SAndroid Build Coastguard Worker 2933279339u,
7357*993b0882SAndroid Build Coastguard Worker 3461877733u,
7358*993b0882SAndroid Build Coastguard Worker 1203141205u,
7359*993b0882SAndroid Build Coastguard Worker 2119492857u,
7360*993b0882SAndroid Build Coastguard Worker 1134895723u,
7361*993b0882SAndroid Build Coastguard Worker 1560001021u,
7362*993b0882SAndroid Build Coastguard Worker 3786320122u,
7363*993b0882SAndroid Build Coastguard Worker 3748116258u,
7364*993b0882SAndroid Build Coastguard Worker 3486219595u,
7365*993b0882SAndroid Build Coastguard Worker 702138030u,
7366*993b0882SAndroid Build Coastguard Worker 1062984182u,
7367*993b0882SAndroid Build Coastguard Worker 232789133u,
7368*993b0882SAndroid Build Coastguard Worker 1566523968u,
7369*993b0882SAndroid Build Coastguard Worker 3885443778u,
7370*993b0882SAndroid Build Coastguard Worker 1820171888u,
7371*993b0882SAndroid Build Coastguard Worker 3655858585u,
7372*993b0882SAndroid Build Coastguard Worker 2316903005u,
7373*993b0882SAndroid Build Coastguard Worker 2678779620u,
7374*993b0882SAndroid Build Coastguard Worker 395625433u,
7375*993b0882SAndroid Build Coastguard Worker 1609107564u,
7376*993b0882SAndroid Build Coastguard Worker 3108726411u,
7377*993b0882SAndroid Build Coastguard Worker 2937837224u,
7378*993b0882SAndroid Build Coastguard Worker 3911907151u,
7379*993b0882SAndroid Build Coastguard Worker 557272509u,
7380*993b0882SAndroid Build Coastguard Worker 3893435978u,
7381*993b0882SAndroid Build Coastguard Worker 1542613576u,
7382*993b0882SAndroid Build Coastguard Worker 1079886893u,
7383*993b0882SAndroid Build Coastguard Worker 2624566322u,
7384*993b0882SAndroid Build Coastguard Worker 1413700616u,
7385*993b0882SAndroid Build Coastguard Worker 2796974006u,
7386*993b0882SAndroid Build Coastguard Worker 1922556114u,
7387*993b0882SAndroid Build Coastguard Worker 562820464u,
7388*993b0882SAndroid Build Coastguard Worker 2845409784u,
7389*993b0882SAndroid Build Coastguard Worker 54180312u,
7390*993b0882SAndroid Build Coastguard Worker 1898782464u,
7391*993b0882SAndroid Build Coastguard Worker 3681814953u,
7392*993b0882SAndroid Build Coastguard Worker 2417064617u,
7393*993b0882SAndroid Build Coastguard Worker 1815464483u,
7394*993b0882SAndroid Build Coastguard Worker 911626132u,
7395*993b0882SAndroid Build Coastguard Worker 2964575550u,
7396*993b0882SAndroid Build Coastguard Worker 1852696128u,
7397*993b0882SAndroid Build Coastguard Worker 2319647785u,
7398*993b0882SAndroid Build Coastguard Worker 1998904590u,
7399*993b0882SAndroid Build Coastguard Worker 619992689u,
7400*993b0882SAndroid Build Coastguard Worker 3073207513u,
7401*993b0882SAndroid Build Coastguard Worker 1238163512u,
7402*993b0882SAndroid Build Coastguard Worker 3199435982u,
7403*993b0882SAndroid Build Coastguard Worker 828667254u,
7404*993b0882SAndroid Build Coastguard Worker 3561155502u,
7405*993b0882SAndroid Build Coastguard Worker 3943095163u,
7406*993b0882SAndroid Build Coastguard Worker 1045711849u,
7407*993b0882SAndroid Build Coastguard Worker 2238679131u,
7408*993b0882SAndroid Build Coastguard Worker 2114975398u,
7409*993b0882SAndroid Build Coastguard Worker 713808403u,
7410*993b0882SAndroid Build Coastguard Worker 3871787494u,
7411*993b0882SAndroid Build Coastguard Worker 2572031161u,
7412*993b0882SAndroid Build Coastguard Worker 2360934075u,
7413*993b0882SAndroid Build Coastguard Worker 2337781107u,
7414*993b0882SAndroid Build Coastguard Worker 262596504u,
7415*993b0882SAndroid Build Coastguard Worker 693836699u,
7416*993b0882SAndroid Build Coastguard Worker 2129369850u,
7417*993b0882SAndroid Build Coastguard Worker 3543189427u,
7418*993b0882SAndroid Build Coastguard Worker 962205222u,
7419*993b0882SAndroid Build Coastguard Worker 3685581020u,
7420*993b0882SAndroid Build Coastguard Worker 692974477u,
7421*993b0882SAndroid Build Coastguard Worker 725182211u,
7422*993b0882SAndroid Build Coastguard Worker 646123906u,
7423*993b0882SAndroid Build Coastguard Worker 2368836544u,
7424*993b0882SAndroid Build Coastguard Worker 2505872733u,
7425*993b0882SAndroid Build Coastguard Worker 1999977610u,
7426*993b0882SAndroid Build Coastguard Worker 1639885802u,
7427*993b0882SAndroid Build Coastguard Worker 1475058032u,
7428*993b0882SAndroid Build Coastguard Worker 207023609u,
7429*993b0882SAndroid Build Coastguard Worker 2773581234u,
7430*993b0882SAndroid Build Coastguard Worker 3524857793u,
7431*993b0882SAndroid Build Coastguard Worker 3433371102u,
7432*993b0882SAndroid Build Coastguard Worker 3243027613u,
7433*993b0882SAndroid Build Coastguard Worker 1787668353u,
7434*993b0882SAndroid Build Coastguard Worker 985757946u,
7435*993b0882SAndroid Build Coastguard Worker 3896012929u,
7436*993b0882SAndroid Build Coastguard Worker 702356957u,
7437*993b0882SAndroid Build Coastguard Worker 3559331129u,
7438*993b0882SAndroid Build Coastguard Worker 884084870u,
7439*993b0882SAndroid Build Coastguard Worker 4009998120u,
7440*993b0882SAndroid Build Coastguard Worker 648888720u,
7441*993b0882SAndroid Build Coastguard Worker 1403349048u,
7442*993b0882SAndroid Build Coastguard Worker 1624342778u,
7443*993b0882SAndroid Build Coastguard Worker 1766674171u,
7444*993b0882SAndroid Build Coastguard Worker 2518582204u,
7445*993b0882SAndroid Build Coastguard Worker 3251243146u,
7446*993b0882SAndroid Build Coastguard Worker 792751003u,
7447*993b0882SAndroid Build Coastguard Worker 1377201813u,
7448*993b0882SAndroid Build Coastguard Worker 3629686054u,
7449*993b0882SAndroid Build Coastguard Worker 1583734324u,
7450*993b0882SAndroid Build Coastguard Worker 3647107626u,
7451*993b0882SAndroid Build Coastguard Worker 4258564381u,
7452*993b0882SAndroid Build Coastguard Worker 1469878609u,
7453*993b0882SAndroid Build Coastguard Worker 1940598241u,
7454*993b0882SAndroid Build Coastguard Worker 2755003690u,
7455*993b0882SAndroid Build Coastguard Worker 1907120418u,
7456*993b0882SAndroid Build Coastguard Worker 109916701u,
7457*993b0882SAndroid Build Coastguard Worker 775347954u,
7458*993b0882SAndroid Build Coastguard Worker 2090960874u,
7459*993b0882SAndroid Build Coastguard Worker 611281803u,
7460*993b0882SAndroid Build Coastguard Worker 3470490146u,
7461*993b0882SAndroid Build Coastguard Worker 3301663253u,
7462*993b0882SAndroid Build Coastguard Worker 1835412158u,
7463*993b0882SAndroid Build Coastguard Worker 1803066146u,
7464*993b0882SAndroid Build Coastguard Worker 591872433u,
7465*993b0882SAndroid Build Coastguard Worker 550703713u,
7466*993b0882SAndroid Build Coastguard Worker 1495089683u,
7467*993b0882SAndroid Build Coastguard Worker 826492808u,
7468*993b0882SAndroid Build Coastguard Worker 817200035u,
7469*993b0882SAndroid Build Coastguard Worker 4177474571u,
7470*993b0882SAndroid Build Coastguard Worker 688070143u,
7471*993b0882SAndroid Build Coastguard Worker 971427632u,
7472*993b0882SAndroid Build Coastguard Worker 1442499481u,
7473*993b0882SAndroid Build Coastguard Worker 3568640348u,
7474*993b0882SAndroid Build Coastguard Worker 2789993738u,
7475*993b0882SAndroid Build Coastguard Worker 85808128u,
7476*993b0882SAndroid Build Coastguard Worker 2058346726u,
7477*993b0882SAndroid Build Coastguard Worker 394058570u,
7478*993b0882SAndroid Build Coastguard Worker 3466511434u,
7479*993b0882SAndroid Build Coastguard Worker 318905230u,
7480*993b0882SAndroid Build Coastguard Worker 4149248030u,
7481*993b0882SAndroid Build Coastguard Worker 415308316u,
7482*993b0882SAndroid Build Coastguard Worker 165997598u,
7483*993b0882SAndroid Build Coastguard Worker 1219639412u,
7484*993b0882SAndroid Build Coastguard Worker 1648022659u,
7485*993b0882SAndroid Build Coastguard Worker 2857432523u,
7486*993b0882SAndroid Build Coastguard Worker 1422508004u,
7487*993b0882SAndroid Build Coastguard Worker 468095522u,
7488*993b0882SAndroid Build Coastguard Worker 296968649u,
7489*993b0882SAndroid Build Coastguard Worker 430250611u,
7490*993b0882SAndroid Build Coastguard Worker 1775562314u,
7491*993b0882SAndroid Build Coastguard Worker 2976361671u,
7492*993b0882SAndroid Build Coastguard Worker 1040036362u,
7493*993b0882SAndroid Build Coastguard Worker 1372510167u,
7494*993b0882SAndroid Build Coastguard Worker 292746272u,
7495*993b0882SAndroid Build Coastguard Worker 3408238954u,
7496*993b0882SAndroid Build Coastguard Worker 626061886u,
7497*993b0882SAndroid Build Coastguard Worker 1317637569u,
7498*993b0882SAndroid Build Coastguard Worker 1237775792u,
7499*993b0882SAndroid Build Coastguard Worker 1218490455u,
7500*993b0882SAndroid Build Coastguard Worker 2224234499u,
7501*993b0882SAndroid Build Coastguard Worker 590942419u,
7502*993b0882SAndroid Build Coastguard Worker 713995643u,
7503*993b0882SAndroid Build Coastguard Worker 3541889330u,
7504*993b0882SAndroid Build Coastguard Worker 4140218960u,
7505*993b0882SAndroid Build Coastguard Worker 3529791107u,
7506*993b0882SAndroid Build Coastguard Worker 354462673u,
7507*993b0882SAndroid Build Coastguard Worker 842607274u,
7508*993b0882SAndroid Build Coastguard Worker 365048533u,
7509*993b0882SAndroid Build Coastguard Worker 2638303414u,
7510*993b0882SAndroid Build Coastguard Worker 3560458014u,
7511*993b0882SAndroid Build Coastguard Worker 31621379u,
7512*993b0882SAndroid Build Coastguard Worker 4210854794u,
7513*993b0882SAndroid Build Coastguard Worker 1273118792u,
7514*993b0882SAndroid Build Coastguard Worker 2572743762u,
7515*993b0882SAndroid Build Coastguard Worker 3513175801u,
7516*993b0882SAndroid Build Coastguard Worker 402066986u,
7517*993b0882SAndroid Build Coastguard Worker 602524471u,
7518*993b0882SAndroid Build Coastguard Worker 565029192u,
7519*993b0882SAndroid Build Coastguard Worker 180576438u,
7520*993b0882SAndroid Build Coastguard Worker 1288605959u,
7521*993b0882SAndroid Build Coastguard Worker 2896244423u,
7522*993b0882SAndroid Build Coastguard Worker 1420543484u,
7523*993b0882SAndroid Build Coastguard Worker 1329862227u,
7524*993b0882SAndroid Build Coastguard Worker 1791567324u,
7525*993b0882SAndroid Build Coastguard Worker 4248690247u,
7526*993b0882SAndroid Build Coastguard Worker 12917038u,
7527*993b0882SAndroid Build Coastguard Worker 3483481310u,
7528*993b0882SAndroid Build Coastguard Worker 2082050731u,
7529*993b0882SAndroid Build Coastguard Worker 1611921143u,
7530*993b0882SAndroid Build Coastguard Worker 2443766548u,
7531*993b0882SAndroid Build Coastguard Worker 2216338811u,
7532*993b0882SAndroid Build Coastguard Worker 2528006095u,
7533*993b0882SAndroid Build Coastguard Worker 2984009021u,
7534*993b0882SAndroid Build Coastguard Worker 674210884u,
7535*993b0882SAndroid Build Coastguard Worker 2857608106u,
7536*993b0882SAndroid Build Coastguard Worker 2155534809u,
7537*993b0882SAndroid Build Coastguard Worker 1023105067u,
7538*993b0882SAndroid Build Coastguard Worker 2968955846u,
7539*993b0882SAndroid Build Coastguard Worker 3303624302u,
7540*993b0882SAndroid Build Coastguard Worker 2502112850u,
7541*993b0882SAndroid Build Coastguard Worker 245749006u,
7542*993b0882SAndroid Build Coastguard Worker 3175229091u,
7543*993b0882SAndroid Build Coastguard Worker 3342796184u,
7544*993b0882SAndroid Build Coastguard Worker 3613785362u,
7545*993b0882SAndroid Build Coastguard Worker 1614168851u,
7546*993b0882SAndroid Build Coastguard Worker 2582149283u,
7547*993b0882SAndroid Build Coastguard Worker 895403488u,
7548*993b0882SAndroid Build Coastguard Worker 416205023u,
7549*993b0882SAndroid Build Coastguard Worker 3792242000u,
7550*993b0882SAndroid Build Coastguard Worker 529397534u,
7551*993b0882SAndroid Build Coastguard Worker 299415203u,
7552*993b0882SAndroid Build Coastguard Worker 4284673348u,
7553*993b0882SAndroid Build Coastguard Worker 2096851282u,
7554*993b0882SAndroid Build Coastguard Worker 1864524731u,
7555*993b0882SAndroid Build Coastguard Worker 2012577738u,
7556*993b0882SAndroid Build Coastguard Worker 3426363316u,
7557*993b0882SAndroid Build Coastguard Worker 1387308508u,
7558*993b0882SAndroid Build Coastguard Worker 1143610148u,
7559*993b0882SAndroid Build Coastguard Worker 2027467219u,
7560*993b0882SAndroid Build Coastguard Worker 3772856163u,
7561*993b0882SAndroid Build Coastguard Worker 3453862623u,
7562*993b0882SAndroid Build Coastguard Worker 2661437174u,
7563*993b0882SAndroid Build Coastguard Worker 2047145955u,
7564*993b0882SAndroid Build Coastguard Worker 2533381447u,
7565*993b0882SAndroid Build Coastguard Worker 2059534115u,
7566*993b0882SAndroid Build Coastguard Worker 439426587u,
7567*993b0882SAndroid Build Coastguard Worker 1537543414u,
7568*993b0882SAndroid Build Coastguard Worker 2384289877u,
7569*993b0882SAndroid Build Coastguard Worker 3174229055u,
7570*993b0882SAndroid Build Coastguard Worker 2658017753u,
7571*993b0882SAndroid Build Coastguard Worker 2293148474u,
7572*993b0882SAndroid Build Coastguard Worker 2359450158u,
7573*993b0882SAndroid Build Coastguard Worker 3930242475u,
7574*993b0882SAndroid Build Coastguard Worker 1510302397u,
7575*993b0882SAndroid Build Coastguard Worker 3354288821u,
7576*993b0882SAndroid Build Coastguard Worker 920095603u,
7577*993b0882SAndroid Build Coastguard Worker 2415746928u,
7578*993b0882SAndroid Build Coastguard Worker 2729472638u,
7579*993b0882SAndroid Build Coastguard Worker 2261143371u,
7580*993b0882SAndroid Build Coastguard Worker 848667611u,
7581*993b0882SAndroid Build Coastguard Worker 919157153u,
7582*993b0882SAndroid Build Coastguard Worker 3322393117u,
7583*993b0882SAndroid Build Coastguard Worker 4103299943u,
7584*993b0882SAndroid Build Coastguard Worker 413569608u,
7585*993b0882SAndroid Build Coastguard Worker 68911216u,
7586*993b0882SAndroid Build Coastguard Worker 3334990170u,
7587*993b0882SAndroid Build Coastguard Worker 1228068652u,
7588*993b0882SAndroid Build Coastguard Worker 1570056373u,
7589*993b0882SAndroid Build Coastguard Worker 1905477543u,
7590*993b0882SAndroid Build Coastguard Worker 2622302276u,
7591*993b0882SAndroid Build Coastguard Worker 2935063895u,
7592*993b0882SAndroid Build Coastguard Worker 3224810004u,
7593*993b0882SAndroid Build Coastguard Worker 4211768578u,
7594*993b0882SAndroid Build Coastguard Worker 828688131u,
7595*993b0882SAndroid Build Coastguard Worker 3556122839u,
7596*993b0882SAndroid Build Coastguard Worker 1930935348u,
7597*993b0882SAndroid Build Coastguard Worker 2605825202u,
7598*993b0882SAndroid Build Coastguard Worker 1540993970u,
7599*993b0882SAndroid Build Coastguard Worker 3209115883u,
7600*993b0882SAndroid Build Coastguard Worker 122847500u,
7601*993b0882SAndroid Build Coastguard Worker 665638794u,
7602*993b0882SAndroid Build Coastguard Worker 506571051u,
7603*993b0882SAndroid Build Coastguard Worker 2691795295u,
7604*993b0882SAndroid Build Coastguard Worker 3996966556u,
7605*993b0882SAndroid Build Coastguard Worker 714660621u,
7606*993b0882SAndroid Build Coastguard Worker 3662432239u,
7607*993b0882SAndroid Build Coastguard Worker 470651837u,
7608*993b0882SAndroid Build Coastguard Worker 1807432621u,
7609*993b0882SAndroid Build Coastguard Worker 3755290953u,
7610*993b0882SAndroid Build Coastguard Worker 359878860u,
7611*993b0882SAndroid Build Coastguard Worker 2793081615u,
7612*993b0882SAndroid Build Coastguard Worker 4065031431u,
7613*993b0882SAndroid Build Coastguard Worker 904653062u,
7614*993b0882SAndroid Build Coastguard Worker 2317800777u,
7615*993b0882SAndroid Build Coastguard Worker 568501094u,
7616*993b0882SAndroid Build Coastguard Worker 3492871707u,
7617*993b0882SAndroid Build Coastguard Worker 2738806116u,
7618*993b0882SAndroid Build Coastguard Worker 2883859610u,
7619*993b0882SAndroid Build Coastguard Worker 3242080257u,
7620*993b0882SAndroid Build Coastguard Worker 364246691u,
7621*993b0882SAndroid Build Coastguard Worker 3601786516u,
7622*993b0882SAndroid Build Coastguard Worker 3159362524u,
7623*993b0882SAndroid Build Coastguard Worker 1578272201u,
7624*993b0882SAndroid Build Coastguard Worker 1283574375u,
7625*993b0882SAndroid Build Coastguard Worker 2912186103u,
7626*993b0882SAndroid Build Coastguard Worker 2256279032u,
7627*993b0882SAndroid Build Coastguard Worker 1540671086u,
7628*993b0882SAndroid Build Coastguard Worker 2356088973u,
7629*993b0882SAndroid Build Coastguard Worker 2892277779u,
7630*993b0882SAndroid Build Coastguard Worker 3441449267u,
7631*993b0882SAndroid Build Coastguard Worker 2225005503u,
7632*993b0882SAndroid Build Coastguard Worker 3846428419u,
7633*993b0882SAndroid Build Coastguard Worker 2014549218u,
7634*993b0882SAndroid Build Coastguard Worker 2290734767u,
7635*993b0882SAndroid Build Coastguard Worker 2126684614u,
7636*993b0882SAndroid Build Coastguard Worker 4235463487u,
7637*993b0882SAndroid Build Coastguard Worker 3811556204u,
7638*993b0882SAndroid Build Coastguard Worker 174739661u,
7639*993b0882SAndroid Build Coastguard Worker 767525888u,
7640*993b0882SAndroid Build Coastguard Worker 47684458u,
7641*993b0882SAndroid Build Coastguard Worker 4211168099u,
7642*993b0882SAndroid Build Coastguard Worker 889063422u,
7643*993b0882SAndroid Build Coastguard Worker 469864411u,
7644*993b0882SAndroid Build Coastguard Worker 767407110u,
7645*993b0882SAndroid Build Coastguard Worker 413337343u,
7646*993b0882SAndroid Build Coastguard Worker 1618456644u,
7647*993b0882SAndroid Build Coastguard Worker 2814499820u,
7648*993b0882SAndroid Build Coastguard Worker 2401124192u,
7649*993b0882SAndroid Build Coastguard Worker 632089437u,
7650*993b0882SAndroid Build Coastguard Worker 1234980238u,
7651*993b0882SAndroid Build Coastguard Worker 1288585402u,
7652*993b0882SAndroid Build Coastguard Worker 3153169944u,
7653*993b0882SAndroid Build Coastguard Worker 2917822069u,
7654*993b0882SAndroid Build Coastguard Worker 1843320264u,
7655*993b0882SAndroid Build Coastguard Worker 3794359132u,
7656*993b0882SAndroid Build Coastguard Worker 3074573530u,
7657*993b0882SAndroid Build Coastguard Worker 258629454u,
7658*993b0882SAndroid Build Coastguard Worker 3813357060u,
7659*993b0882SAndroid Build Coastguard Worker 3806887248u,
7660*993b0882SAndroid Build Coastguard Worker 1665524736u,
7661*993b0882SAndroid Build Coastguard Worker 3324533324u,
7662*993b0882SAndroid Build Coastguard Worker 3005091922u,
7663*993b0882SAndroid Build Coastguard Worker 793108368u,
7664*993b0882SAndroid Build Coastguard Worker 1529669805u,
7665*993b0882SAndroid Build Coastguard Worker 2332660395u,
7666*993b0882SAndroid Build Coastguard Worker 2217730223u,
7667*993b0882SAndroid Build Coastguard Worker 2634687611u,
7668*993b0882SAndroid Build Coastguard Worker 442806463u,
7669*993b0882SAndroid Build Coastguard Worker 1968135266u,
7670*993b0882SAndroid Build Coastguard Worker 454523002u,
7671*993b0882SAndroid Build Coastguard Worker 3177866230u,
7672*993b0882SAndroid Build Coastguard Worker 2808960136u,
7673*993b0882SAndroid Build Coastguard Worker 4259114138u,
7674*993b0882SAndroid Build Coastguard Worker 4103264843u,
7675*993b0882SAndroid Build Coastguard Worker 3103714075u,
7676*993b0882SAndroid Build Coastguard Worker 2462967542u,
7677*993b0882SAndroid Build Coastguard Worker 1466891491u,
7678*993b0882SAndroid Build Coastguard Worker 477973764u,
7679*993b0882SAndroid Build Coastguard Worker 834565647u,
7680*993b0882SAndroid Build Coastguard Worker 741089037u,
7681*993b0882SAndroid Build Coastguard Worker 218837573u,
7682*993b0882SAndroid Build Coastguard Worker 1710536528u,
7683*993b0882SAndroid Build Coastguard Worker 2469088212u,
7684*993b0882SAndroid Build Coastguard Worker 1229072375u,
7685*993b0882SAndroid Build Coastguard Worker 2828341u,
7686*993b0882SAndroid Build Coastguard Worker 176923431u,
7687*993b0882SAndroid Build Coastguard Worker 985763350u,
7688*993b0882SAndroid Build Coastguard Worker 4095477420u,
7689*993b0882SAndroid Build Coastguard Worker 1984145538u,
7690*993b0882SAndroid Build Coastguard Worker 1870791084u,
7691*993b0882SAndroid Build Coastguard Worker 674956677u,
7692*993b0882SAndroid Build Coastguard Worker 1978138947u,
7693*993b0882SAndroid Build Coastguard Worker 1296493993u,
7694*993b0882SAndroid Build Coastguard Worker 1818183554u,
7695*993b0882SAndroid Build Coastguard Worker 3443333721u,
7696*993b0882SAndroid Build Coastguard Worker 2124949983u,
7697*993b0882SAndroid Build Coastguard Worker 2549590262u,
7698*993b0882SAndroid Build Coastguard Worker 2700850794u,
7699*993b0882SAndroid Build Coastguard Worker 2662736367u,
7700*993b0882SAndroid Build Coastguard Worker 739638109u,
7701*993b0882SAndroid Build Coastguard Worker 4061447096u,
7702*993b0882SAndroid Build Coastguard Worker 2960078422u,
7703*993b0882SAndroid Build Coastguard Worker 2453781158u,
7704*993b0882SAndroid Build Coastguard Worker 929570940u,
7705*993b0882SAndroid Build Coastguard Worker 3200328383u,
7706*993b0882SAndroid Build Coastguard Worker 2406328791u,
7707*993b0882SAndroid Build Coastguard Worker 1419180666u,
7708*993b0882SAndroid Build Coastguard Worker 2152455739u,
7709*993b0882SAndroid Build Coastguard Worker 2805741044u,
7710*993b0882SAndroid Build Coastguard Worker 3305999074u,
7711*993b0882SAndroid Build Coastguard Worker 3183816361u,
7712*993b0882SAndroid Build Coastguard Worker 2303165050u,
7713*993b0882SAndroid Build Coastguard Worker 4922104u,
7714*993b0882SAndroid Build Coastguard Worker 63096005u,
7715*993b0882SAndroid Build Coastguard Worker 936656347u,
7716*993b0882SAndroid Build Coastguard Worker 3104453886u,
7717*993b0882SAndroid Build Coastguard Worker 1088673880u,
7718*993b0882SAndroid Build Coastguard Worker 1113407526u,
7719*993b0882SAndroid Build Coastguard Worker 1457890086u,
7720*993b0882SAndroid Build Coastguard Worker 453478383u,
7721*993b0882SAndroid Build Coastguard Worker 1107686695u,
7722*993b0882SAndroid Build Coastguard Worker 3626027824u,
7723*993b0882SAndroid Build Coastguard Worker 1159687359u,
7724*993b0882SAndroid Build Coastguard Worker 2248467888u,
7725*993b0882SAndroid Build Coastguard Worker 2004578380u,
7726*993b0882SAndroid Build Coastguard Worker 3274954621u,
7727*993b0882SAndroid Build Coastguard Worker 1787958646u,
7728*993b0882SAndroid Build Coastguard Worker 2628726704u,
7729*993b0882SAndroid Build Coastguard Worker 1138419798u,
7730*993b0882SAndroid Build Coastguard Worker 3735442315u,
7731*993b0882SAndroid Build Coastguard Worker 692385301u,
7732*993b0882SAndroid Build Coastguard Worker 313807213u,
7733*993b0882SAndroid Build Coastguard Worker 2329068673u,
7734*993b0882SAndroid Build Coastguard Worker 59375364u,
7735*993b0882SAndroid Build Coastguard Worker 3261084359u,
7736*993b0882SAndroid Build Coastguard Worker 2088644507u,
7737*993b0882SAndroid Build Coastguard Worker 2471153194u,
7738*993b0882SAndroid Build Coastguard Worker 788336435u,
7739*993b0882SAndroid Build Coastguard Worker 4024527246u,
7740*993b0882SAndroid Build Coastguard Worker 141504460u,
7741*993b0882SAndroid Build Coastguard Worker 2307553888u,
7742*993b0882SAndroid Build Coastguard Worker 1930559950u,
7743*993b0882SAndroid Build Coastguard Worker 48975711u,
7744*993b0882SAndroid Build Coastguard Worker 2745693338u,
7745*993b0882SAndroid Build Coastguard Worker 230161982u,
7746*993b0882SAndroid Build Coastguard Worker 3429230862u,
7747*993b0882SAndroid Build Coastguard Worker 1335968626u,
7748*993b0882SAndroid Build Coastguard Worker 609591304u,
7749*993b0882SAndroid Build Coastguard Worker 57435073u,
7750*993b0882SAndroid Build Coastguard Worker 4279281136u,
7751*993b0882SAndroid Build Coastguard Worker 3152151665u,
7752*993b0882SAndroid Build Coastguard Worker 3984484924u,
7753*993b0882SAndroid Build Coastguard Worker 3459883943u,
7754*993b0882SAndroid Build Coastguard Worker 397478330u,
7755*993b0882SAndroid Build Coastguard Worker 1738762229u,
7756*993b0882SAndroid Build Coastguard Worker 3033590066u,
7757*993b0882SAndroid Build Coastguard Worker 3611539498u,
7758*993b0882SAndroid Build Coastguard Worker 1363463523u,
7759*993b0882SAndroid Build Coastguard Worker 3319364965u,
7760*993b0882SAndroid Build Coastguard Worker 2671169141u,
7761*993b0882SAndroid Build Coastguard Worker 3819548561u,
7762*993b0882SAndroid Build Coastguard Worker 1691193757u,
7763*993b0882SAndroid Build Coastguard Worker 2423834608u,
7764*993b0882SAndroid Build Coastguard Worker 2820147055u,
7765*993b0882SAndroid Build Coastguard Worker 1378120632u,
7766*993b0882SAndroid Build Coastguard Worker 1240565187u,
7767*993b0882SAndroid Build Coastguard Worker 3180720050u,
7768*993b0882SAndroid Build Coastguard Worker 680831086u,
7769*993b0882SAndroid Build Coastguard Worker 3309658414u,
7770*993b0882SAndroid Build Coastguard Worker 1986166490u,
7771*993b0882SAndroid Build Coastguard Worker 762099827u,
7772*993b0882SAndroid Build Coastguard Worker 510883662u,
7773*993b0882SAndroid Build Coastguard Worker 2047373648u,
7774*993b0882SAndroid Build Coastguard Worker 3606742294u,
7775*993b0882SAndroid Build Coastguard Worker 3894965352u,
7776*993b0882SAndroid Build Coastguard Worker 2342078853u,
7777*993b0882SAndroid Build Coastguard Worker 1091255717u,
7778*993b0882SAndroid Build Coastguard Worker 776594727u,
7779*993b0882SAndroid Build Coastguard Worker 3217317445u,
7780*993b0882SAndroid Build Coastguard Worker 1574468485u,
7781*993b0882SAndroid Build Coastguard Worker 3844504016u,
7782*993b0882SAndroid Build Coastguard Worker 2819598918u,
7783*993b0882SAndroid Build Coastguard Worker 1037401010u,
7784*993b0882SAndroid Build Coastguard Worker 2550943503u,
7785*993b0882SAndroid Build Coastguard Worker 3867184001u,
7786*993b0882SAndroid Build Coastguard Worker 1687911772u,
7787*993b0882SAndroid Build Coastguard Worker 165313836u,
7788*993b0882SAndroid Build Coastguard Worker 1679575281u,
7789*993b0882SAndroid Build Coastguard Worker 2418947263u,
7790*993b0882SAndroid Build Coastguard Worker 2038774952u,
7791*993b0882SAndroid Build Coastguard Worker 3913543652u,
7792*993b0882SAndroid Build Coastguard Worker 3209155736u,
7793*993b0882SAndroid Build Coastguard Worker 149905221u,
7794*993b0882SAndroid Build Coastguard Worker 3859604717u,
7795*993b0882SAndroid Build Coastguard Worker 713919631u,
7796*993b0882SAndroid Build Coastguard Worker 4069810796u,
7797*993b0882SAndroid Build Coastguard Worker 1882959164u,
7798*993b0882SAndroid Build Coastguard Worker 1019939034u,
7799*993b0882SAndroid Build Coastguard Worker 2379867302u,
7800*993b0882SAndroid Build Coastguard Worker 3666323035u,
7801*993b0882SAndroid Build Coastguard Worker 1157389013u,
7802*993b0882SAndroid Build Coastguard Worker 2422300650u,
7803*993b0882SAndroid Build Coastguard Worker 3366777340u,
7804*993b0882SAndroid Build Coastguard Worker 2526452062u,
7805*993b0882SAndroid Build Coastguard Worker 1313747885u,
7806*993b0882SAndroid Build Coastguard Worker 1039617868u,
7807*993b0882SAndroid Build Coastguard Worker 1620553692u,
7808*993b0882SAndroid Build Coastguard Worker 2032976978u,
7809*993b0882SAndroid Build Coastguard Worker 578789528u,
7810*993b0882SAndroid Build Coastguard Worker 1592846839u,
7811*993b0882SAndroid Build Coastguard Worker 2270630604u,
7812*993b0882SAndroid Build Coastguard Worker 897850577u,
7813*993b0882SAndroid Build Coastguard Worker 1603294178u,
7814*993b0882SAndroid Build Coastguard Worker 3105664807u,
7815*993b0882SAndroid Build Coastguard Worker 1442670138u,
7816*993b0882SAndroid Build Coastguard Worker 1728019360u,
7817*993b0882SAndroid Build Coastguard Worker 79313861u,
7818*993b0882SAndroid Build Coastguard Worker 1683031101u,
7819*993b0882SAndroid Build Coastguard Worker 1913067024u,
7820*993b0882SAndroid Build Coastguard Worker 4070719870u,
7821*993b0882SAndroid Build Coastguard Worker 708986470u,
7822*993b0882SAndroid Build Coastguard Worker 2586453359u,
7823*993b0882SAndroid Build Coastguard Worker 3993348863u,
7824*993b0882SAndroid Build Coastguard Worker 3358251279u,
7825*993b0882SAndroid Build Coastguard Worker 3003552537u,
7826*993b0882SAndroid Build Coastguard Worker 750174793u,
7827*993b0882SAndroid Build Coastguard Worker 836888956u,
7828*993b0882SAndroid Build Coastguard Worker 4190747426u,
7829*993b0882SAndroid Build Coastguard Worker 4251291318u,
7830*993b0882SAndroid Build Coastguard Worker 4145164938u,
7831*993b0882SAndroid Build Coastguard Worker 1366883260u,
7832*993b0882SAndroid Build Coastguard Worker 1912910955u,
7833*993b0882SAndroid Build Coastguard Worker 510192669u,
7834*993b0882SAndroid Build Coastguard Worker 1851315039u,
7835*993b0882SAndroid Build Coastguard Worker 3574241274u,
7836*993b0882SAndroid Build Coastguard Worker 3220062924u,
7837*993b0882SAndroid Build Coastguard Worker 2821142039u,
7838*993b0882SAndroid Build Coastguard Worker 1317082195u,
7839*993b0882SAndroid Build Coastguard Worker 2274293302u,
7840*993b0882SAndroid Build Coastguard Worker 1839219569u,
7841*993b0882SAndroid Build Coastguard Worker 126586168u,
7842*993b0882SAndroid Build Coastguard Worker 3989293643u,
7843*993b0882SAndroid Build Coastguard Worker 2680178207u,
7844*993b0882SAndroid Build Coastguard Worker 347056948u,
7845*993b0882SAndroid Build Coastguard Worker 799681430u,
7846*993b0882SAndroid Build Coastguard Worker 2864517481u,
7847*993b0882SAndroid Build Coastguard Worker 3180404853u,
7848*993b0882SAndroid Build Coastguard Worker 213140045u,
7849*993b0882SAndroid Build Coastguard Worker 1956305184u,
7850*993b0882SAndroid Build Coastguard Worker 1474675286u,
7851*993b0882SAndroid Build Coastguard Worker 3085723423u,
7852*993b0882SAndroid Build Coastguard Worker 2841859626u,
7853*993b0882SAndroid Build Coastguard Worker 308421914u,
7854*993b0882SAndroid Build Coastguard Worker 3670309263u,
7855*993b0882SAndroid Build Coastguard Worker 1765052231u,
7856*993b0882SAndroid Build Coastguard Worker 245459238u,
7857*993b0882SAndroid Build Coastguard Worker 113434331u,
7858*993b0882SAndroid Build Coastguard Worker 4079521092u,
7859*993b0882SAndroid Build Coastguard Worker 2115235526u,
7860*993b0882SAndroid Build Coastguard Worker 2943408816u,
7861*993b0882SAndroid Build Coastguard Worker 1055476938u,
7862*993b0882SAndroid Build Coastguard Worker 1506442339u,
7863*993b0882SAndroid Build Coastguard Worker 2291296392u,
7864*993b0882SAndroid Build Coastguard Worker 3267864332u,
7865*993b0882SAndroid Build Coastguard Worker 1282145528u,
7866*993b0882SAndroid Build Coastguard Worker 3700108015u,
7867*993b0882SAndroid Build Coastguard Worker 1932843667u,
7868*993b0882SAndroid Build Coastguard Worker 2677701670u,
7869*993b0882SAndroid Build Coastguard Worker 6041177u,
7870*993b0882SAndroid Build Coastguard Worker 3889648557u,
7871*993b0882SAndroid Build Coastguard Worker 1461025478u,
7872*993b0882SAndroid Build Coastguard Worker };
7873*993b0882SAndroid Build Coastguard Worker
7874*993b0882SAndroid Build Coastguard Worker // Return false only if offset is -1 and a spot check of 3 hashes all yield 0.
Test(int offset,int len=0)7875*993b0882SAndroid Build Coastguard Worker bool Test(int offset, int len = 0) {
7876*993b0882SAndroid Build Coastguard Worker #undef Check
7877*993b0882SAndroid Build Coastguard Worker #undef IsAlive
7878*993b0882SAndroid Build Coastguard Worker
7879*993b0882SAndroid Build Coastguard Worker #define Check(x) do { \
7880*993b0882SAndroid Build Coastguard Worker bool ok = expected[index++] == (x); \
7881*993b0882SAndroid Build Coastguard Worker assert(ok); \
7882*993b0882SAndroid Build Coastguard Worker errors += !ok; \
7883*993b0882SAndroid Build Coastguard Worker } while (0)
7884*993b0882SAndroid Build Coastguard Worker
7885*993b0882SAndroid Build Coastguard Worker #define IsAlive(x) do { alive += IsNonZero(x); } while (0)
7886*993b0882SAndroid Build Coastguard Worker
7887*993b0882SAndroid Build Coastguard Worker // After the following line is where the uses of "Check" and such will go.
7888*993b0882SAndroid Build Coastguard Worker static int index = 0;
7889*993b0882SAndroid Build Coastguard Worker if (offset == -1) { int alive = 0; IsAlive(farmhashsu::Hash32WithSeed(data, len++, SEED)); IsAlive(farmhashsu::Hash32(data, len++)); IsAlive(farmhashsu::Hash32(data, len++)); len -= 3; return alive > 0; }
7890*993b0882SAndroid Build Coastguard Worker Check(farmhashsu::Hash32WithSeed(data + offset, len, SEED));
7891*993b0882SAndroid Build Coastguard Worker Check(farmhashsu::Hash32(data + offset, len));
7892*993b0882SAndroid Build Coastguard Worker
7893*993b0882SAndroid Build Coastguard Worker return true;
7894*993b0882SAndroid Build Coastguard Worker #undef Check
7895*993b0882SAndroid Build Coastguard Worker #undef IsAlive
7896*993b0882SAndroid Build Coastguard Worker }
7897*993b0882SAndroid Build Coastguard Worker
RunTest()7898*993b0882SAndroid Build Coastguard Worker int RunTest() {
7899*993b0882SAndroid Build Coastguard Worker Setup();
7900*993b0882SAndroid Build Coastguard Worker int i = 0;
7901*993b0882SAndroid Build Coastguard Worker cout << "Running farmhashsuTest";
7902*993b0882SAndroid Build Coastguard Worker if (!Test(-1)) {
7903*993b0882SAndroid Build Coastguard Worker cout << "... Unavailable\n";
7904*993b0882SAndroid Build Coastguard Worker return NoteErrors();
7905*993b0882SAndroid Build Coastguard Worker }
7906*993b0882SAndroid Build Coastguard Worker // Good. The function is attempting to hash, so run the full test.
7907*993b0882SAndroid Build Coastguard Worker int errors_prior_to_test = errors;
7908*993b0882SAndroid Build Coastguard Worker for ( ; i < kTestSize - 1; i++) {
7909*993b0882SAndroid Build Coastguard Worker Test(i * i, i);
7910*993b0882SAndroid Build Coastguard Worker }
7911*993b0882SAndroid Build Coastguard Worker for ( ; i < kDataSize; i += i / 7) {
7912*993b0882SAndroid Build Coastguard Worker Test(0, i);
7913*993b0882SAndroid Build Coastguard Worker }
7914*993b0882SAndroid Build Coastguard Worker Test(0, kDataSize);
7915*993b0882SAndroid Build Coastguard Worker cout << (errors == errors_prior_to_test ? "... OK\n" : "... Failed\n");
7916*993b0882SAndroid Build Coastguard Worker return NoteErrors();
7917*993b0882SAndroid Build Coastguard Worker }
7918*993b0882SAndroid Build Coastguard Worker
7919*993b0882SAndroid Build Coastguard Worker #else
7920*993b0882SAndroid Build Coastguard Worker
7921*993b0882SAndroid Build Coastguard Worker // After the following line is where the code to print hash codes will go.
Dump(int offset,int len)7922*993b0882SAndroid Build Coastguard Worker void Dump(int offset, int len) {
7923*993b0882SAndroid Build Coastguard Worker cout << farmhashsu::Hash32WithSeed(data + offset, len, SEED) << "u," << endl;
7924*993b0882SAndroid Build Coastguard Worker cout << farmhashsu::Hash32(data + offset, len) << "u," << endl;
7925*993b0882SAndroid Build Coastguard Worker }
7926*993b0882SAndroid Build Coastguard Worker
7927*993b0882SAndroid Build Coastguard Worker #endif
7928*993b0882SAndroid Build Coastguard Worker
7929*993b0882SAndroid Build Coastguard Worker #undef SEED
7930*993b0882SAndroid Build Coastguard Worker #undef SEED1
7931*993b0882SAndroid Build Coastguard Worker #undef SEED0
7932*993b0882SAndroid Build Coastguard Worker
7933*993b0882SAndroid Build Coastguard Worker } // namespace farmhashsuTest
7934*993b0882SAndroid Build Coastguard Worker
7935*993b0882SAndroid Build Coastguard Worker #if TESTING
7936*993b0882SAndroid Build Coastguard Worker
7937*993b0882SAndroid Build Coastguard Worker static int farmhashsuTestResult = farmhashsuTest::RunTest();
7938*993b0882SAndroid Build Coastguard Worker
7939*993b0882SAndroid Build Coastguard Worker #else
main(int argc,char ** argv)7940*993b0882SAndroid Build Coastguard Worker int main(int argc, char** argv) {
7941*993b0882SAndroid Build Coastguard Worker Setup();
7942*993b0882SAndroid Build Coastguard Worker cout << "uint32_t expected[] = {\n";
7943*993b0882SAndroid Build Coastguard Worker int i = 0;
7944*993b0882SAndroid Build Coastguard Worker for ( ; i < kTestSize - 1; i++) {
7945*993b0882SAndroid Build Coastguard Worker farmhashsuTest::Dump(i * i, i);
7946*993b0882SAndroid Build Coastguard Worker }
7947*993b0882SAndroid Build Coastguard Worker for ( ; i < kDataSize; i += i / 7) {
7948*993b0882SAndroid Build Coastguard Worker farmhashsuTest::Dump(0, i);
7949*993b0882SAndroid Build Coastguard Worker }
7950*993b0882SAndroid Build Coastguard Worker farmhashsuTest::Dump(0, kDataSize);
7951*993b0882SAndroid Build Coastguard Worker cout << "};\n";
7952*993b0882SAndroid Build Coastguard Worker }
7953*993b0882SAndroid Build Coastguard Worker #endif
7954*993b0882SAndroid Build Coastguard Worker
7955*993b0882SAndroid Build Coastguard Worker #endif // FARMHASHSELFTEST
7956