1///|
2/// `@crc32.Digest` implements the 32-bit cyclic redundancy check, or CRC-32,
3/// checksum. See https://en.wikipedia.org/wiki/Cyclic_redundancy_check for
4/// information.
5/// This package is based on the Go Rosetta Stone implementation found here:
6/// https://rosettacode.org/wiki/CRC-32
7pub(all) struct Digest {
8 mut UInt
crc : UInt
UInt
9 String
name : String
String
10}
11
12///|
13/// `Digest::new` returns a new, reset Digest, ready to sum.
14pub fn struct Digest {
mut crc: UInt
name: String
}
@crc32.Digest implements the 32-bit cyclic redundancy check, or CRC-32,
checksum. See https://en.wikipedia.org/wiki/Cyclic_redundancy_check for
information.
This package is based on the Go Rosetta Stone implementation found here:
https://rosettacode.org/wiki/CRC-32
Digest::() -> Digest
Digest::new returns a new, reset Digest, ready to sum.
new() -> struct Digest {
mut crc: UInt
name: String
}
@crc32.Digest implements the 32-bit cyclic redundancy check, or CRC-32,
checksum. See https://en.wikipedia.org/wiki/Cyclic_redundancy_check for
information.
This package is based on the Go Rosetta Stone implementation found here:
https://rosettacode.org/wiki/CRC-32
Digest {
15 { UInt
crc: 0U.(self : UInt) -> UInt
Performs a bitwise NOT operation on an unsigned 32-bit integer. Flips all
bits in the number (changes each 0 to 1 and each 1 to 0).
Parameters:
self : The unsigned 32-bit integer value on which to perform the bitwise
NOT operation.
Returns a new unsigned 32-bit integer where each bit is inverted from the
input value.
Example:
let x = 0xFF00U // Binary: 1111_1111_0000_0000
inspect(x.lnot(), content="4294902015") // Binary: ...0000_0000_1111_1111
lnot(), String
name: "crc32" }
16}
17
18///|
19let &HashFunc
_trait : &trait HashFunc {
name(Self) -> String
write(Self, Byte) -> Unit
check_sum(Self) -> String
}
HashFunc represents a hash algorithm like @crc32, @md5, or @sha256.
HashFunc = struct Digest {
mut crc: UInt
name: String
}
@crc32.Digest implements the 32-bit cyclic redundancy check, or CRC-32,
checksum. See https://en.wikipedia.org/wiki/Cyclic_redundancy_check for
information.
This package is based on the Go Rosetta Stone implementation found here:
https://rosettacode.org/wiki/CRC-32
Digest::() -> Digest
Digest::new returns a new, reset Digest, ready to sum.
new()
20
21///|
22pub impl trait HashFunc {
name(Self) -> String
write(Self, Byte) -> Unit
check_sum(Self) -> String
}
HashFunc represents a hash algorithm like @crc32, @md5, or @sha256.
HashFunc for struct Digest {
mut crc: UInt
name: String
}
@crc32.Digest implements the 32-bit cyclic redundancy check, or CRC-32,
checksum. See https://en.wikipedia.org/wiki/Cyclic_redundancy_check for
information.
This package is based on the Go Rosetta Stone implementation found here:
https://rosettacode.org/wiki/CRC-32
Digest with (self : Digest) -> String
name(Digest
self) {
23 Digest
self.String
name
24}
25
26///|
27/// `digest` returns the final crc32 as a UInt.
28pub fn (self : Digest) -> UInt
digest returns the final crc32 as a UInt.
digest(Digest
self : struct Digest {
mut crc: UInt
name: String
}
@crc32.Digest implements the 32-bit cyclic redundancy check, or CRC-32,
checksum. See https://en.wikipedia.org/wiki/Cyclic_redundancy_check for
information.
This package is based on the Go Rosetta Stone implementation found here:
https://rosettacode.org/wiki/CRC-32
Digest) -> UInt
UInt {
29 Digest
self.UInt
crc.(self : UInt) -> UInt
Performs a bitwise NOT operation on an unsigned 32-bit integer. Flips all
bits in the number (changes each 0 to 1 and each 1 to 0).
Parameters:
self : The unsigned 32-bit integer value on which to perform the bitwise
NOT operation.
Returns a new unsigned 32-bit integer where each bit is inverted from the
input value.
Example:
let x = 0xFF00U // Binary: 1111_1111_0000_0000
inspect(x.lnot(), content="4294902015") // Binary: ...0000_0000_1111_1111
lnot()
30}
31
32///|
33/// `check_sum` returns the final crc32 as a hex string.
34pub impl trait HashFunc {
name(Self) -> String
write(Self, Byte) -> Unit
check_sum(Self) -> String
}
HashFunc represents a hash algorithm like @crc32, @md5, or @sha256.
HashFunc for struct Digest {
mut crc: UInt
name: String
}
@crc32.Digest implements the 32-bit cyclic redundancy check, or CRC-32,
checksum. See https://en.wikipedia.org/wiki/Cyclic_redundancy_check for
information.
This package is based on the Go Rosetta Stone implementation found here:
https://rosettacode.org/wiki/CRC-32
Digest with (self : Digest) -> String
check_sum returns the final crc32 as a hex string.
check_sum(Digest
self) {
35 let UInt
digest = Digest
self.UInt
crc.(self : UInt) -> UInt
Performs a bitwise NOT operation on an unsigned 32-bit integer. Flips all
bits in the number (changes each 0 to 1 and each 1 to 0).
Parameters:
self : The unsigned 32-bit integer value on which to perform the bitwise
NOT operation.
Returns a new unsigned 32-bit integer where each bit is inverted from the
input value.
Example:
let x = 0xFF00U // Binary: 1111_1111_0000_0000
inspect(x.lnot(), content="4294902015") // Binary: ...0000_0000_1111_1111
lnot()
36 let @buffer.T
result = (size_hint~ : Int) -> @buffer.T
Creates a new extensible buffer with specified initial capacity. If the
initial capacity is less than 1, the buffer will be initialized with capacity
1.
Parameters:
size_hint : Initial capacity of the buffer in bytes. Defaults to 0.
Returns a new buffer of type T.
Example:
let buf = @buffer.new(size_hint=10)
inspect(buf.length(), content="0")
buf.write_string("test")
inspect(buf.length(), content="8")
@buffer.new(Int
size_hint=8)
37 @buffer.T
result.(self : @buffer.T, value : Char) -> Unit
Writes a UTF-16LE encoded character into the buffer. Automatically grows the
buffer if necessary.
Parameters:
buffer : The buffer to write to.
char : The character to be written.
Example:
let buf = @buffer.new()
buf.write_char('A')
inspect(buf.contents(), content=
#|b"\x41\x00"
)
write_char((v : UInt) -> Char
to_hex((UInt
digest (self : UInt, shift : Int) -> UInt
Performs a logical right shift operation on an unsigned 32-bit integer. The
operation shifts all bits to the right by a specified number of positions,
filling the leftmost positions with zeros.
Parameters:
self : The unsigned 32-bit integer to be shifted.
shift : The number of positions to shift right. If this value is
negative, the behavior is undefined. Values larger than 31 are masked with & 31.
Returns a new unsigned 32-bit integer containing the result of the right
shift operation.
Example:
let x = 0xFF000000U
inspect(x >> 8, content="16711680") // 0x00FF0000
inspect(x >> 24, content="255") // 0x000000FF
let x = 0xFF000000U
inspect(x >> 32, content="4278190080") // Same as x >> 0 due to masking
>> 28) (UInt, UInt) -> UInt
& 0xf))
38 @buffer.T
result.(self : @buffer.T, value : Char) -> Unit
Writes a UTF-16LE encoded character into the buffer. Automatically grows the
buffer if necessary.
Parameters:
buffer : The buffer to write to.
char : The character to be written.
Example:
let buf = @buffer.new()
buf.write_char('A')
inspect(buf.contents(), content=
#|b"\x41\x00"
)
write_char((v : UInt) -> Char
to_hex((UInt
digest (self : UInt, shift : Int) -> UInt
Performs a logical right shift operation on an unsigned 32-bit integer. The
operation shifts all bits to the right by a specified number of positions,
filling the leftmost positions with zeros.
Parameters:
self : The unsigned 32-bit integer to be shifted.
shift : The number of positions to shift right. If this value is
negative, the behavior is undefined. Values larger than 31 are masked with & 31.
Returns a new unsigned 32-bit integer containing the result of the right
shift operation.
Example:
let x = 0xFF000000U
inspect(x >> 8, content="16711680") // 0x00FF0000
inspect(x >> 24, content="255") // 0x000000FF
let x = 0xFF000000U
inspect(x >> 32, content="4278190080") // Same as x >> 0 due to masking
>> 24) (UInt, UInt) -> UInt
& 0xf))
39 @buffer.T
result.(self : @buffer.T, value : Char) -> Unit
Writes a UTF-16LE encoded character into the buffer. Automatically grows the
buffer if necessary.
Parameters:
buffer : The buffer to write to.
char : The character to be written.
Example:
let buf = @buffer.new()
buf.write_char('A')
inspect(buf.contents(), content=
#|b"\x41\x00"
)
write_char((v : UInt) -> Char
to_hex((UInt
digest (self : UInt, shift : Int) -> UInt
Performs a logical right shift operation on an unsigned 32-bit integer. The
operation shifts all bits to the right by a specified number of positions,
filling the leftmost positions with zeros.
Parameters:
self : The unsigned 32-bit integer to be shifted.
shift : The number of positions to shift right. If this value is
negative, the behavior is undefined. Values larger than 31 are masked with & 31.
Returns a new unsigned 32-bit integer containing the result of the right
shift operation.
Example:
let x = 0xFF000000U
inspect(x >> 8, content="16711680") // 0x00FF0000
inspect(x >> 24, content="255") // 0x000000FF
let x = 0xFF000000U
inspect(x >> 32, content="4278190080") // Same as x >> 0 due to masking
>> 20) (UInt, UInt) -> UInt
& 0xf))
40 @buffer.T
result.(self : @buffer.T, value : Char) -> Unit
Writes a UTF-16LE encoded character into the buffer. Automatically grows the
buffer if necessary.
Parameters:
buffer : The buffer to write to.
char : The character to be written.
Example:
let buf = @buffer.new()
buf.write_char('A')
inspect(buf.contents(), content=
#|b"\x41\x00"
)
write_char((v : UInt) -> Char
to_hex((UInt
digest (self : UInt, shift : Int) -> UInt
Performs a logical right shift operation on an unsigned 32-bit integer. The
operation shifts all bits to the right by a specified number of positions,
filling the leftmost positions with zeros.
Parameters:
self : The unsigned 32-bit integer to be shifted.
shift : The number of positions to shift right. If this value is
negative, the behavior is undefined. Values larger than 31 are masked with & 31.
Returns a new unsigned 32-bit integer containing the result of the right
shift operation.
Example:
let x = 0xFF000000U
inspect(x >> 8, content="16711680") // 0x00FF0000
inspect(x >> 24, content="255") // 0x000000FF
let x = 0xFF000000U
inspect(x >> 32, content="4278190080") // Same as x >> 0 due to masking
>> 16) (UInt, UInt) -> UInt
& 0xf))
41 @buffer.T
result.(self : @buffer.T, value : Char) -> Unit
Writes a UTF-16LE encoded character into the buffer. Automatically grows the
buffer if necessary.
Parameters:
buffer : The buffer to write to.
char : The character to be written.
Example:
let buf = @buffer.new()
buf.write_char('A')
inspect(buf.contents(), content=
#|b"\x41\x00"
)
write_char((v : UInt) -> Char
to_hex((UInt
digest (self : UInt, shift : Int) -> UInt
Performs a logical right shift operation on an unsigned 32-bit integer. The
operation shifts all bits to the right by a specified number of positions,
filling the leftmost positions with zeros.
Parameters:
self : The unsigned 32-bit integer to be shifted.
shift : The number of positions to shift right. If this value is
negative, the behavior is undefined. Values larger than 31 are masked with & 31.
Returns a new unsigned 32-bit integer containing the result of the right
shift operation.
Example:
let x = 0xFF000000U
inspect(x >> 8, content="16711680") // 0x00FF0000
inspect(x >> 24, content="255") // 0x000000FF
let x = 0xFF000000U
inspect(x >> 32, content="4278190080") // Same as x >> 0 due to masking
>> 12) (UInt, UInt) -> UInt
& 0xf))
42 @buffer.T
result.(self : @buffer.T, value : Char) -> Unit
Writes a UTF-16LE encoded character into the buffer. Automatically grows the
buffer if necessary.
Parameters:
buffer : The buffer to write to.
char : The character to be written.
Example:
let buf = @buffer.new()
buf.write_char('A')
inspect(buf.contents(), content=
#|b"\x41\x00"
)
write_char((v : UInt) -> Char
to_hex((UInt
digest (self : UInt, shift : Int) -> UInt
Performs a logical right shift operation on an unsigned 32-bit integer. The
operation shifts all bits to the right by a specified number of positions,
filling the leftmost positions with zeros.
Parameters:
self : The unsigned 32-bit integer to be shifted.
shift : The number of positions to shift right. If this value is
negative, the behavior is undefined. Values larger than 31 are masked with & 31.
Returns a new unsigned 32-bit integer containing the result of the right
shift operation.
Example:
let x = 0xFF000000U
inspect(x >> 8, content="16711680") // 0x00FF0000
inspect(x >> 24, content="255") // 0x000000FF
let x = 0xFF000000U
inspect(x >> 32, content="4278190080") // Same as x >> 0 due to masking
>> 8) (UInt, UInt) -> UInt
& 0xf))
43 @buffer.T
result.(self : @buffer.T, value : Char) -> Unit
Writes a UTF-16LE encoded character into the buffer. Automatically grows the
buffer if necessary.
Parameters:
buffer : The buffer to write to.
char : The character to be written.
Example:
let buf = @buffer.new()
buf.write_char('A')
inspect(buf.contents(), content=
#|b"\x41\x00"
)
write_char((v : UInt) -> Char
to_hex((UInt
digest (self : UInt, shift : Int) -> UInt
Performs a logical right shift operation on an unsigned 32-bit integer. The
operation shifts all bits to the right by a specified number of positions,
filling the leftmost positions with zeros.
Parameters:
self : The unsigned 32-bit integer to be shifted.
shift : The number of positions to shift right. If this value is
negative, the behavior is undefined. Values larger than 31 are masked with & 31.
Returns a new unsigned 32-bit integer containing the result of the right
shift operation.
Example:
let x = 0xFF000000U
inspect(x >> 8, content="16711680") // 0x00FF0000
inspect(x >> 24, content="255") // 0x000000FF
let x = 0xFF000000U
inspect(x >> 32, content="4278190080") // Same as x >> 0 due to masking
>> 4) (UInt, UInt) -> UInt
& 0xf))
44 @buffer.T
result.(self : @buffer.T, value : Char) -> Unit
Writes a UTF-16LE encoded character into the buffer. Automatically grows the
buffer if necessary.
Parameters:
buffer : The buffer to write to.
char : The character to be written.
Example:
let buf = @buffer.new()
buf.write_char('A')
inspect(buf.contents(), content=
#|b"\x41\x00"
)
write_char((v : UInt) -> Char
to_hex(UInt
digest (UInt, UInt) -> UInt
& 0xf))
45 @buffer.T
result.(self : @buffer.T) -> Bytes
Returns a copy of the buffer's content as a sequence of bytes.
Parameters:
buffer : The buffer to read from.
Returns a Bytes object containing all bytes written to the buffer.
Example:
let buf = @buffer.new()
buf.write_string("Test")
inspect(
buf.contents(),
content=
#|b"\x54\x00\x65\x00\x73\x00\x74\x00"
,
)
contents().(self : Bytes, offset~ : Int = .., length? : Int) -> String
Return an unchecked string, containing the subsequence of self that starts at
offset and has length length. Both offset and length
are indexed by byte.
Note this function does not validate the encoding of the byte sequence,
it simply copy the bytes into a new String.
to_unchecked_string()
46}
47
48///|
49fn (v : UInt) -> Char
to_hex(UInt
v : UInt
UInt) -> Char
Char {
50 let Int
v = UInt
v.(self : UInt) -> Int
reinterpret the unsigned int as signed int
For number within the range of 0..=2^31-1,
the value is the same. For number within the range of 2^31..=2^32-1,
the value is negative
reinterpret_as_int()
51 if Int
v (self_ : Int, other : Int) -> Bool
< 10 {
52 (Int) -> Char
Int::(self : Int) -> Char
unsafe_to_char(Int
v (self : Int, other : Int) -> Int
Adds two 32-bit signed integers. Performs two's complement arithmetic, which
means the operation will wrap around if the result exceeds the range of a
32-bit integer.
Parameters:
self : The first integer operand.
other : The second integer operand.
Returns a new integer that is the sum of the two operands. If the
mathematical sum exceeds the range of a 32-bit integer (-2,147,483,648 to
2,147,483,647), the result wraps around according to two's complement rules.
Example:
inspect(42 + 1, content="43")
inspect(2147483647 + 1, content="-2147483648") // Overflow wraps around to minimum value
+ b'0'.(self : Byte) -> Int
Converts a byte value to a 32-bit signed integer. The resulting integer will
have the same binary representation as the byte value, preserving the
numerical value in the range [0, 255].
Parameters:
byte : The byte value to be converted to an integer.
Returns a 32-bit signed integer representing the same numerical value as the
input byte.
Example:
let b = b'\xFF' // byte with value 255
inspect(b.to_int(), content="255")
let zero = b'\x00'
inspect(zero.to_int(), content="0")
to_int())
53 } else {
54 (Int) -> Char
Int::(self : Int) -> Char
unsafe_to_char(Int
v (self : Int, other : Int) -> Int
Performs subtraction between two 32-bit integers, following standard two's
complement arithmetic rules. When the result overflows or underflows, it
wraps around within the 32-bit integer range.
Parameters:
self : The minuend (the number being subtracted from).
other : The subtrahend (the number to subtract).
Returns the difference between self and other.
Example:
let a = 42
let b = 10
inspect(a - b, content="32")
let max = 2147483647 // Int maximum value
inspect(max - -1, content="-2147483648") // Overflow case
- 10 (self : Int, other : Int) -> Int
Adds two 32-bit signed integers. Performs two's complement arithmetic, which
means the operation will wrap around if the result exceeds the range of a
32-bit integer.
Parameters:
self : The first integer operand.
other : The second integer operand.
Returns a new integer that is the sum of the two operands. If the
mathematical sum exceeds the range of a 32-bit integer (-2,147,483,648 to
2,147,483,647), the result wraps around according to two's complement rules.
Example:
inspect(42 + 1, content="43")
inspect(2147483647 + 1, content="-2147483648") // Overflow wraps around to minimum value
+ b'a'.(self : Byte) -> Int
Converts a byte value to a 32-bit signed integer. The resulting integer will
have the same binary representation as the byte value, preserving the
numerical value in the range [0, 255].
Parameters:
byte : The byte value to be converted to an integer.
Returns a 32-bit signed integer representing the same numerical value as the
input byte.
Example:
let b = b'\xFF' // byte with value 255
inspect(b.to_int(), content="255")
let zero = b'\x00'
inspect(zero.to_int(), content="0")
to_int())
55 }
56}
57
58///|
59/// `write` writes a byte to the digest.
60pub impl trait HashFunc {
name(Self) -> String
write(Self, Byte) -> Unit
check_sum(Self) -> String
}
HashFunc represents a hash algorithm like @crc32, @md5, or @sha256.
HashFunc for struct Digest {
mut crc: UInt
name: String
}
@crc32.Digest implements the 32-bit cyclic redundancy check, or CRC-32,
checksum. See https://en.wikipedia.org/wiki/Cyclic_redundancy_check for
information.
This package is based on the Go Rosetta Stone implementation found here:
https://rosettacode.org/wiki/CRC-32
Digest with (self : Digest, b : Byte) -> Unit
write writes a byte to the digest.
write(Digest
self, Byte
b) {
61 Digest
self.UInt
crc = FixedArray[UInt]
table[(Digest
self.UInt
crc.(self : UInt) -> Byte
Converts an unsigned 32-bit integer to a byte by taking its least significant
8 bits. Any bits beyond the first 8 bits are truncated.
Parameters:
self : The unsigned 32-bit integer to be converted. Only the least
significant 8 bits will be used.
Returns a byte containing the least significant 8 bits of the input integer.
Example:
let n = 258U // In binary: 100000010
inspect(n.to_byte(), content="b'\\x02'") // Only keeps 00000010
let big = 4294967295U // Maximum value of UInt
inspect(big.to_byte(), content="b'\\xFF'") // Only keeps 11111111
to_byte() (self : Byte, that : Byte) -> Byte
Performs a bitwise AND operation between two Byte values.
Parameters:
byte1 : The first Byte value to perform the bitwise AND operation with.
byte2 : The second Byte value to perform the bitwise AND operation
with.
Returns the result of the bitwise AND operation as a Byte.
& b'\xff').(self : Byte, that : Byte) -> Byte
Performs a bitwise XOR operation between two Byte values.
Parameters:
self : The first Byte value.
that : The second Byte value.
Returns the result of the bitwise XOR operation as a Byte.
lxor(Byte
b).(self : Byte) -> Int
Converts a byte value to a 32-bit signed integer. The resulting integer will
have the same binary representation as the byte value, preserving the
numerical value in the range [0, 255].
Parameters:
byte : The byte value to be converted to an integer.
Returns a 32-bit signed integer representing the same numerical value as the
input byte.
Example:
let b = b'\xFF' // byte with value 255
inspect(b.to_int(), content="255")
let zero = b'\x00'
inspect(zero.to_int(), content="0")
to_int()] (UInt, UInt) -> UInt
^
62 (Digest
self.UInt
crc (self : UInt, shift : Int) -> UInt
Performs a logical right shift operation on an unsigned 32-bit integer. The
operation shifts all bits to the right by a specified number of positions,
filling the leftmost positions with zeros.
Parameters:
self : The unsigned 32-bit integer to be shifted.
shift : The number of positions to shift right. If this value is
negative, the behavior is undefined. Values larger than 31 are masked with & 31.
Returns a new unsigned 32-bit integer containing the result of the right
shift operation.
Example:
let x = 0xFF000000U
inspect(x >> 8, content="16711680") // 0x00FF0000
inspect(x >> 24, content="255") // 0x000000FF
let x = 0xFF000000U
inspect(x >> 32, content="4278190080") // Same as x >> 0 due to masking
>> 8)
63}
64
65///|
66let FixedArray[UInt]
table : type FixedArray[A]
FixedArray[UInt
UInt] = [
67 0, 1996959894, 3993919788, 2567524794, 124634137, 1886057615, 3915621685, 2657392035,
68 249268274, 2044508324, 3772115230, 2547177864, 162941995, 2125561021, 3887607047,
69 2428444049, 498536548, 1789927666, 4089016648, 2227061214, 450548861, 1843258603,
70 4107580753, 2211677639, 325883990, 1684777152, 4251122042, 2321926636, 335633487,
71 1661365465, 4195302755, 2366115317, 997073096, 1281953886, 3579855332, 2724688242,
72 1006888145, 1258607687, 3524101629, 2768942443, 901097722, 1119000684, 3686517206,
73 2898065728, 853044451, 1172266101, 3705015759, 2882616665, 651767980, 1373503546,
74 3369554304, 3218104598, 565507253, 1454621731, 3485111705, 3099436303, 671266974,
75 1594198024, 3322730930, 2970347812, 795835527, 1483230225, 3244367275, 3060149565,
76 1994146192, 31158534, 2563907772, 4023717930, 1907459465, 112637215, 2680153253,
77 3904427059, 2013776290, 251722036, 2517215374, 3775830040, 2137656763, 141376813,
78 2439277719, 3865271297, 1802195444, 476864866, 2238001368, 4066508878, 1812370925,
79 453092731, 2181625025, 4111451223, 1706088902, 314042704, 2344532202, 4240017532,
80 1658658271, 366619977, 2362670323, 4224994405, 1303535960, 984961486, 2747007092,
81 3569037538, 1256170817, 1037604311, 2765210733, 3554079995, 1131014506, 879679996,
82 2909243462, 3663771856, 1141124467, 855842277, 2852801631, 3708648649, 1342533948,
83 654459306, 3188396048, 3373015174, 1466479909, 544179635, 3110523913, 3462522015,
84 1591671054, 702138776, 2966460450, 3352799412, 1504918807, 783551873, 3082640443,
85 3233442989, 3988292384, 2596254646, 62317068, 1957810842, 3939845945, 2647816111,
86 81470997, 1943803523, 3814918930, 2489596804, 225274430, 2053790376, 3826175755,
87 2466906013, 167816743, 2097651377, 4027552580, 2265490386, 503444072, 1762050814,
88 4150417245, 2154129355, 426522225, 1852507879, 4275313526, 2312317920, 282753626,
89 1742555852, 4189708143, 2394877945, 397917763, 1622183637, 3604390888, 2714866558,
90 953729732, 1340076626, 3518719985, 2797360999, 1068828381, 1219638859, 3624741850,
91 2936675148, 906185462, 1090812512, 3747672003, 2825379669, 829329135, 1181335161,
92 3412177804, 3160834842, 628085408, 1382605366, 3423369109, 3138078467, 570562233,
93 1426400815, 3317316542, 2998733608, 733239954, 1555261956, 3268935591, 3050360625,
94 752459403, 1541320221, 2607071920, 3965973030, 1969922972, 40735498, 2617837225,
95 3943577151, 1913087877, 83908371, 2512341634, 3803740692, 2075208622, 213261112,
96 2463272603, 3855990285, 2094854071, 198958881, 2262029012, 4057260610, 1759359992,
97 534414190, 2176718541, 4139329115, 1873836001, 414664567, 2282248934, 4279200368,
98 1711684554, 285281116, 2405801727, 4167216745, 1634467795, 376229701, 2685067896,
99 3608007406, 1308918612, 956543938, 2808555105, 3495958263, 1231636301, 1047427035,
100 2932959818, 3654703836, 1088359270, 936918000, 2847714899, 3736837829, 1202900863,
101 817233897, 3183342108, 3401237130, 1404277552, 615818150, 3134207493, 3453421203,
102 1423857449, 601450431, 3009837614, 3294710456, 1567103746, 711928724, 3020668471,
103 3272380065, 1510334235, 755167117,
104]
105