# Generated by tools/generators/hash_gen.py; do not edit by hand. import Base import ../../../src/crypto/sha/state.bend as S256 import ../../../src/crypto/sha/core.bend as C256 import ../../../src/crypto/sha/sha256.bend as SHA256 import ../../../src/crypto/sha512/types.bend as T512 import ../../../src/crypto/sha512/core.bend as C512 import ../../../src/crypto/keccak/types.bend as TK import ../../../src/crypto/keccak/permutation.bend as P import ../../../src/crypto/sha3/core.bend as C3 import ../../../src/crypto/hash.bend as H import ../sha/conformance.bend as SC import ./lists.bend as L # The incremental hasher equals the one-shot hash for every split of the input # (the invariant of HACL*'s Hacl.Streaming.Functor, without its ghost state): # with G the algorithm's block loop over a byte list, a hasher whose state is # (s, buf) after the chunks so far satisfies, for every continuation z, # # G(chunks so far ++ z, initial) == G(buf ++ z, s). # # absorbX_inv: one call of the block reader keeps it; foldX_inv: every update # keeps it; incrementalX: digest pads buf with the total length, which is the # one-shot padding of the whole message (z = the padding). The round # parameter q (48, 64, 24) stays a variable in every lemma that unfolds a block. # ---------------------------------------------------------------- SHA-256 (FIPS 180-4) def st256(st: H.Sha256State) -> S256.State: match st: case H.St256{s, b}: s def buf256(st: H.Sha256State) -> List<&2, U32>: match st: case H.St256{s, b}: b law absorb256_inv: for +fuel: Nat for +bytes: List<&2, U32> for +q: Nat for +s: S256.State for +z: List<&2, U32> {C256.block_bytes(List.append(&2, U32, bytes, z), q, C256.round_constants(), s) == C256.block_bytes(List.append(&2, U32, buf256(H.absorb256(fuel, H.read256_0(bytes), bytes, q, s)), z), q, C256.round_constants(), st256(H.absorb256(fuel, H.read256_0(bytes), bytes, q, s))) : S256.State} def absorb256_inv(fuel, bytes, q, s, z): match fuel: case 0n: {==} case 1n+p: match bytes: case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> rest: +fast = C256.fips_compress16(C256.pack(b0, b1, b2, b3), C256.pack(b4, b5, b6, b7), C256.pack(b8, b9, b10, b11), C256.pack(b12, b13, b14, b15), C256.pack(b16, b17, b18, b19), C256.pack(b20, b21, b22, b23), C256.pack(b24, b25, b26, b27), C256.pack(b28, b29, b30, b31), C256.pack(b32, b33, b34, b35), C256.pack(b36, b37, b38, b39), C256.pack(b40, b41, b42, b43), C256.pack(b44, b45, b46, b47), C256.pack(b48, b49, b50, b51), C256.pack(b52, b53, b54, b55), C256.pack(b56, b57, b58, b59), C256.pack(b60, b61, b62, b63), q, s) %SC.fips16_correct(C256.pack(b0, b1, b2, b3), C256.pack(b4, b5, b6, b7), C256.pack(b8, b9, b10, b11), C256.pack(b12, b13, b14, b15), C256.pack(b16, b17, b18, b19), C256.pack(b20, b21, b22, b23), C256.pack(b24, b25, b26, b27), C256.pack(b28, b29, b30, b31), C256.pack(b32, b33, b34, b35), C256.pack(b36, b37, b38, b39), C256.pack(b40, b41, b42, b43), C256.pack(b44, b45, b46, b47), C256.pack(b48, b49, b50, b51), C256.pack(b52, b53, b54, b55), C256.pack(b56, b57, b58, b59), C256.pack(b60, b61, b62, b63), q, s) : {C256.block_bytes(List.append(&2, U32, rest, z), q, C256.round_constants(), _) == C256.block_bytes(List.append(&2, U32, buf256(H.absorb256(p, H.read256_0(rest), rest, q, fast)), z), q, C256.round_constants(), st256(H.absorb256(p, H.read256_0(rest), rest, q, fast))) : S256.State} absorb256_inv(p, rest, q, fast, z) case Nil{}: {==} case b0 <> Nil{}: {==} case b0 <> b1 <> Nil{}: {==} case b0 <> b1 <> b2 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> Nil{}: {==} law step256_inv: for +st: H.Sha256State for +xs: List<&2, U32> for +q: Nat for +z: List<&2, U32> {C256.block_bytes(List.append(&2, U32, List.append(&2, U32, buf256(st), xs), z), q, C256.round_constants(), st256(st)) == C256.block_bytes(List.append(&2, U32, buf256(H.step256(st, xs, q)), z), q, C256.round_constants(), st256(H.step256(st, xs, q))) : S256.State} def step256_inv(st, xs, q, z): match st: case H.St256{s, buf}: absorb256_inv(List.length(&2, U32, List.append(&2, U32, buf, xs)), List.append(&2, U32, buf, xs), q, s, z) # The state after each chunk in turn. def fold256(cs: List<&2, List<&2, U32>>, +q: Nat, st: H.Sha256State) -> H.Sha256State: match cs: case Nil{}: st case c <> ct: fold256(ct, q, H.step256(st, c, q)) law fold256_inv: for +cs: List<&2, List<&2, U32>> for +q: Nat for +st: H.Sha256State for +z: List<&2, U32> {C256.block_bytes(List.append(&2, U32, List.append(&2, U32, buf256(st), List.concat(&2, U32, cs)), z), q, C256.round_constants(), st256(st)) == C256.block_bytes(List.append(&2, U32, buf256(fold256(cs, q, st)), z), q, C256.round_constants(), st256(fold256(cs, q, st))) : S256.State} def fold256_inv(cs, q, st, z): match cs: case Nil{}: %L.append_nil(buf256(st)) : {C256.block_bytes(List.append(&2, U32, List.append(&2, U32, buf256(st), Nil{}), z), q, C256.round_constants(), st256(st)) == C256.block_bytes(List.append(&2, U32, _, z), q, C256.round_constants(), st256(st)) : S256.State} {==} case c <> ct: +st2 = H.step256(st, c, q) +m = List.concat(&2, U32, ct) Equal.trans(S256.State, C256.block_bytes(List.append(&2, U32, List.append(&2, U32, buf256(st), List.append(&2, U32, c, m)), z), q, C256.round_constants(), st256(st)), C256.block_bytes(List.append(&2, U32, List.append(&2, U32, buf256(st), c), List.append(&2, U32, m, z)), q, C256.round_constants(), st256(st)), C256.block_bytes(List.append(&2, U32, buf256(fold256(ct, q, st2)), z), q, C256.round_constants(), st256(fold256(ct, q, st2))), Equal.cong(List<&2, U32>, S256.State, t => C256.block_bytes(t, q, C256.round_constants(), st256(st)), List.append(&2, U32, List.append(&2, U32, buf256(st), List.append(&2, U32, c, m)), z), List.append(&2, U32, List.append(&2, U32, buf256(st), c), List.append(&2, U32, m, z)), Equal.trans(List<&2, U32>, List.append(&2, U32, List.append(&2, U32, buf256(st), List.append(&2, U32, c, m)), z), List.append(&2, U32, List.append(&2, U32, List.append(&2, U32, buf256(st), c), m), z), List.append(&2, U32, List.append(&2, U32, buf256(st), c), List.append(&2, U32, m, z)), Equal.cong(List<&2, U32>, List<&2, U32>, t => List.append(&2, U32, t, z), List.append(&2, U32, buf256(st), List.append(&2, U32, c, m)), List.append(&2, U32, List.append(&2, U32, buf256(st), c), m), L.append_assoc_rev(buf256(st), c, m)), L.append_assoc(List.append(&2, U32, buf256(st), c), m, z))), Equal.trans(S256.State, C256.block_bytes(List.append(&2, U32, List.append(&2, U32, buf256(st), c), List.append(&2, U32, m, z)), q, C256.round_constants(), st256(st)), C256.block_bytes(List.append(&2, U32, buf256(st2), List.append(&2, U32, m, z)), q, C256.round_constants(), st256(st2)), C256.block_bytes(List.append(&2, U32, buf256(fold256(ct, q, st2)), z), q, C256.round_constants(), st256(fold256(ct, q, st2))), step256_inv(st, c, q, List.append(&2, U32, m, z)), Equal.trans(S256.State, C256.block_bytes(List.append(&2, U32, buf256(st2), List.append(&2, U32, m, z)), q, C256.round_constants(), st256(st2)), C256.block_bytes(List.append(&2, U32, List.append(&2, U32, buf256(st2), m), z), q, C256.round_constants(), st256(st2)), C256.block_bytes(List.append(&2, U32, buf256(fold256(ct, q, st2)), z), q, C256.round_constants(), st256(fold256(ct, q, st2))), Equal.cong(List<&2, U32>, S256.State, t => C256.block_bytes(t, q, C256.round_constants(), st256(st2)), List.append(&2, U32, buf256(st2), List.append(&2, U32, m, z)), List.append(&2, U32, List.append(&2, U32, buf256(st2), m), z), L.append_assoc_rev(buf256(st2), m, z)), fold256_inv(ct, q, st2, z)))) law state256: for +cs: List<&2, List<&2, U32>> for +st: H.Sha256State for +len: Nat {H.fold(cs, H.Sha256H{st, len}) == H.Sha256H{fold256(cs, 48n, st), Nat.add(len, List.length(&2, U32, List.concat(&2, U32, cs)))} : H.Hasher} def state256(cs, st, len): match cs: case Nil{}: Equal.cong(Nat, H.Hasher, t => H.Sha256H{st, t}, len, Nat.add(len, 0n), Equal.sym(Nat, Nat.add(len, 0n), len, L.add_zero(len))) case c <> ct: +m = List.concat(&2, U32, ct) %L.add_length(len, c, m) : {H.fold(c <> ct, H.Sha256H{st, len}) == H.Sha256H{fold256(ct, 48n, H.step256(st, c, 48n)), _} : H.Hasher} state256(ct, H.step256(st, c, 48n), Nat.add(len, List.length(&2, U32, c))) law finish256_eta: for +st: H.Sha256State for +len: Nat for +q: Nat {H.finish256(st, len, q) == SHA256.digest_bytes(C256.digest(C256.block_bytes(List.append(&2, U32, buf256(st), C256.suffix(len)), q, C256.round_constants(), st256(st)))) : List<&2, U32>} def finish256_eta(st, len, q): match st: case H.St256{s, buf}: {==} # digest(update_all(new, chunks)) is the padded block loop over concat(chunks). law incremental256: for +cs: List<&2, List<&2, U32>> {H.digest(H.update_all(H.new_sha256(), cs)) == SHA256.digest_bytes(C256.digest(C256.block_bytes(List.append(&2, U32, List.concat(&2, U32, cs), C256.suffix(List.length(&2, U32, List.concat(&2, U32, cs)))), 48n, C256.round_constants(), C256.initial()))) : List<&2, U32>} def incremental256(cs): +m = List.concat(&2, U32, cs) +qs = fold256(cs, 48n, H.St256{C256.initial(), Nil{}}) %Equal.sym(H.Hasher, H.fold(cs, H.Sha256H{H.St256{C256.initial(), Nil{}}, 0n}), H.Sha256H{qs, List.length(&2, U32, m)}, state256(cs, H.St256{C256.initial(), Nil{}}, 0n)) : {H.digest(_) == SHA256.digest_bytes(C256.digest(C256.block_bytes(List.append(&2, U32, List.concat(&2, U32, cs), C256.suffix(List.length(&2, U32, List.concat(&2, U32, cs)))), 48n, C256.round_constants(), C256.initial()))) : List<&2, U32>} %Equal.sym(List<&2, U32>, H.finish256(qs, List.length(&2, U32, m), 48n), SHA256.digest_bytes(C256.digest(C256.block_bytes(List.append(&2, U32, buf256(qs), C256.suffix(List.length(&2, U32, m))), 48n, C256.round_constants(), st256(qs)))), finish256_eta(qs, List.length(&2, U32, m), 48n)) : {_ == SHA256.digest_bytes(C256.digest(C256.block_bytes(List.append(&2, U32, List.concat(&2, U32, cs), C256.suffix(List.length(&2, U32, List.concat(&2, U32, cs)))), 48n, C256.round_constants(), C256.initial()))) : List<&2, U32>} Equal.cong(S256.State, List<&2, U32>, t => SHA256.digest_bytes(C256.digest(t)), C256.block_bytes(List.append(&2, U32, buf256(qs), C256.suffix(List.length(&2, U32, m))), 48n, C256.round_constants(), st256(qs)), C256.block_bytes(List.append(&2, U32, m, C256.suffix(List.length(&2, U32, m))), 48n, C256.round_constants(), C256.initial()), Equal.sym(S256.State, C256.block_bytes(List.append(&2, U32, m, C256.suffix(List.length(&2, U32, m))), 48n, C256.round_constants(), C256.initial()), C256.block_bytes(List.append(&2, U32, buf256(qs), C256.suffix(List.length(&2, U32, m))), 48n, C256.round_constants(), st256(qs)), fold256_inv(cs, 48n, H.St256{C256.initial(), Nil{}}, C256.suffix(List.length(&2, U32, m))))) # ---------------------------------------------------------------- SHA-512 (FIPS 180-4) def st512(st: H.Sha512State) -> T512.State: match st: case H.St512{s, b}: s def buf512(st: H.Sha512State) -> List<&2, U32>: match st: case H.St512{s, b}: b law absorb512_inv: for +fuel: Nat for +bytes: List<&2, U32> for +q: Nat for +s: T512.State for +z: List<&2, U32> {C512.blocks(C512.lanes(List.append(&2, U32, bytes, z)), q, C512.round_constants(), s) == C512.blocks(C512.lanes(List.append(&2, U32, buf512(H.absorb512(fuel, H.read512_0(bytes), bytes, q, s)), z)), q, C512.round_constants(), st512(H.absorb512(fuel, H.read512_0(bytes), bytes, q, s))) : T512.State} def absorb512_inv(fuel, bytes, q, s, z): match fuel: case 0n: {==} case 1n+p: match bytes: case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> b120 <> b121 <> b122 <> b123 <> b124 <> b125 <> b126 <> b127 <> rest: absorb512_inv(p, rest, q, C512.compress16(T512.W{C512.pack(b0, b1, b2, b3), C512.pack(b4, b5, b6, b7)}, T512.W{C512.pack(b8, b9, b10, b11), C512.pack(b12, b13, b14, b15)}, T512.W{C512.pack(b16, b17, b18, b19), C512.pack(b20, b21, b22, b23)}, T512.W{C512.pack(b24, b25, b26, b27), C512.pack(b28, b29, b30, b31)}, T512.W{C512.pack(b32, b33, b34, b35), C512.pack(b36, b37, b38, b39)}, T512.W{C512.pack(b40, b41, b42, b43), C512.pack(b44, b45, b46, b47)}, T512.W{C512.pack(b48, b49, b50, b51), C512.pack(b52, b53, b54, b55)}, T512.W{C512.pack(b56, b57, b58, b59), C512.pack(b60, b61, b62, b63)}, T512.W{C512.pack(b64, b65, b66, b67), C512.pack(b68, b69, b70, b71)}, T512.W{C512.pack(b72, b73, b74, b75), C512.pack(b76, b77, b78, b79)}, T512.W{C512.pack(b80, b81, b82, b83), C512.pack(b84, b85, b86, b87)}, T512.W{C512.pack(b88, b89, b90, b91), C512.pack(b92, b93, b94, b95)}, T512.W{C512.pack(b96, b97, b98, b99), C512.pack(b100, b101, b102, b103)}, T512.W{C512.pack(b104, b105, b106, b107), C512.pack(b108, b109, b110, b111)}, T512.W{C512.pack(b112, b113, b114, b115), C512.pack(b116, b117, b118, b119)}, T512.W{C512.pack(b120, b121, b122, b123), C512.pack(b124, b125, b126, b127)}, q, C512.round_constants(), s), z) case Nil{}: {==} case b0 <> Nil{}: {==} case b0 <> b1 <> Nil{}: {==} case b0 <> b1 <> b2 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> b120 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> b120 <> b121 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> b120 <> b121 <> b122 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> b120 <> b121 <> b122 <> b123 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> b120 <> b121 <> b122 <> b123 <> b124 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> b120 <> b121 <> b122 <> b123 <> b124 <> b125 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> b120 <> b121 <> b122 <> b123 <> b124 <> b125 <> b126 <> Nil{}: {==} law step512_inv: for +st: H.Sha512State for +xs: List<&2, U32> for +q: Nat for +z: List<&2, U32> {C512.blocks(C512.lanes(List.append(&2, U32, List.append(&2, U32, buf512(st), xs), z)), q, C512.round_constants(), st512(st)) == C512.blocks(C512.lanes(List.append(&2, U32, buf512(H.step512(st, xs, q)), z)), q, C512.round_constants(), st512(H.step512(st, xs, q))) : T512.State} def step512_inv(st, xs, q, z): match st: case H.St512{s, buf}: absorb512_inv(List.length(&2, U32, List.append(&2, U32, buf, xs)), List.append(&2, U32, buf, xs), q, s, z) # The state after each chunk in turn. def fold512(cs: List<&2, List<&2, U32>>, +q: Nat, st: H.Sha512State) -> H.Sha512State: match cs: case Nil{}: st case c <> ct: fold512(ct, q, H.step512(st, c, q)) law fold512_inv: for +cs: List<&2, List<&2, U32>> for +q: Nat for +st: H.Sha512State for +z: List<&2, U32> {C512.blocks(C512.lanes(List.append(&2, U32, List.append(&2, U32, buf512(st), List.concat(&2, U32, cs)), z)), q, C512.round_constants(), st512(st)) == C512.blocks(C512.lanes(List.append(&2, U32, buf512(fold512(cs, q, st)), z)), q, C512.round_constants(), st512(fold512(cs, q, st))) : T512.State} def fold512_inv(cs, q, st, z): match cs: case Nil{}: %L.append_nil(buf512(st)) : {C512.blocks(C512.lanes(List.append(&2, U32, List.append(&2, U32, buf512(st), Nil{}), z)), q, C512.round_constants(), st512(st)) == C512.blocks(C512.lanes(List.append(&2, U32, _, z)), q, C512.round_constants(), st512(st)) : T512.State} {==} case c <> ct: +st2 = H.step512(st, c, q) +m = List.concat(&2, U32, ct) Equal.trans(T512.State, C512.blocks(C512.lanes(List.append(&2, U32, List.append(&2, U32, buf512(st), List.append(&2, U32, c, m)), z)), q, C512.round_constants(), st512(st)), C512.blocks(C512.lanes(List.append(&2, U32, List.append(&2, U32, buf512(st), c), List.append(&2, U32, m, z))), q, C512.round_constants(), st512(st)), C512.blocks(C512.lanes(List.append(&2, U32, buf512(fold512(ct, q, st2)), z)), q, C512.round_constants(), st512(fold512(ct, q, st2))), Equal.cong(List<&2, U32>, T512.State, t => C512.blocks(C512.lanes(t), q, C512.round_constants(), st512(st)), List.append(&2, U32, List.append(&2, U32, buf512(st), List.append(&2, U32, c, m)), z), List.append(&2, U32, List.append(&2, U32, buf512(st), c), List.append(&2, U32, m, z)), Equal.trans(List<&2, U32>, List.append(&2, U32, List.append(&2, U32, buf512(st), List.append(&2, U32, c, m)), z), List.append(&2, U32, List.append(&2, U32, List.append(&2, U32, buf512(st), c), m), z), List.append(&2, U32, List.append(&2, U32, buf512(st), c), List.append(&2, U32, m, z)), Equal.cong(List<&2, U32>, List<&2, U32>, t => List.append(&2, U32, t, z), List.append(&2, U32, buf512(st), List.append(&2, U32, c, m)), List.append(&2, U32, List.append(&2, U32, buf512(st), c), m), L.append_assoc_rev(buf512(st), c, m)), L.append_assoc(List.append(&2, U32, buf512(st), c), m, z))), Equal.trans(T512.State, C512.blocks(C512.lanes(List.append(&2, U32, List.append(&2, U32, buf512(st), c), List.append(&2, U32, m, z))), q, C512.round_constants(), st512(st)), C512.blocks(C512.lanes(List.append(&2, U32, buf512(st2), List.append(&2, U32, m, z))), q, C512.round_constants(), st512(st2)), C512.blocks(C512.lanes(List.append(&2, U32, buf512(fold512(ct, q, st2)), z)), q, C512.round_constants(), st512(fold512(ct, q, st2))), step512_inv(st, c, q, List.append(&2, U32, m, z)), Equal.trans(T512.State, C512.blocks(C512.lanes(List.append(&2, U32, buf512(st2), List.append(&2, U32, m, z))), q, C512.round_constants(), st512(st2)), C512.blocks(C512.lanes(List.append(&2, U32, List.append(&2, U32, buf512(st2), m), z)), q, C512.round_constants(), st512(st2)), C512.blocks(C512.lanes(List.append(&2, U32, buf512(fold512(ct, q, st2)), z)), q, C512.round_constants(), st512(fold512(ct, q, st2))), Equal.cong(List<&2, U32>, T512.State, t => C512.blocks(C512.lanes(t), q, C512.round_constants(), st512(st2)), List.append(&2, U32, buf512(st2), List.append(&2, U32, m, z)), List.append(&2, U32, List.append(&2, U32, buf512(st2), m), z), L.append_assoc_rev(buf512(st2), m, z)), fold512_inv(ct, q, st2, z)))) law state512: for +cs: List<&2, List<&2, U32>> for +st: H.Sha512State for +len: Nat {H.fold(cs, H.Sha512H{st, len}) == H.Sha512H{fold512(cs, 64n, st), Nat.add(len, List.length(&2, U32, List.concat(&2, U32, cs)))} : H.Hasher} def state512(cs, st, len): match cs: case Nil{}: Equal.cong(Nat, H.Hasher, t => H.Sha512H{st, t}, len, Nat.add(len, 0n), Equal.sym(Nat, Nat.add(len, 0n), len, L.add_zero(len))) case c <> ct: +m = List.concat(&2, U32, ct) %L.add_length(len, c, m) : {H.fold(c <> ct, H.Sha512H{st, len}) == H.Sha512H{fold512(ct, 64n, H.step512(st, c, 64n)), _} : H.Hasher} state512(ct, H.step512(st, c, 64n), Nat.add(len, List.length(&2, U32, c))) law finish512_eta: for +st: H.Sha512State for +len: Nat for +q: Nat {H.finish512(st, len, q) == C512.digest_bytes(C512.blocks(C512.lanes(List.append(&2, U32, buf512(st), C512.suffix(len))), q, C512.round_constants(), st512(st))) : List<&2, U32>} def finish512_eta(st, len, q): match st: case H.St512{s, buf}: {==} # digest(update_all(new, chunks)) is the padded block loop over concat(chunks). law incremental512: for +cs: List<&2, List<&2, U32>> {H.digest(H.update_all(H.new_sha512(), cs)) == C512.digest_bytes(C512.blocks(C512.lanes(List.append(&2, U32, List.concat(&2, U32, cs), C512.suffix(List.length(&2, U32, List.concat(&2, U32, cs))))), 64n, C512.round_constants(), C512.initial())) : List<&2, U32>} def incremental512(cs): +m = List.concat(&2, U32, cs) +qs = fold512(cs, 64n, H.St512{C512.initial(), Nil{}}) %Equal.sym(H.Hasher, H.fold(cs, H.Sha512H{H.St512{C512.initial(), Nil{}}, 0n}), H.Sha512H{qs, List.length(&2, U32, m)}, state512(cs, H.St512{C512.initial(), Nil{}}, 0n)) : {H.digest(_) == C512.digest_bytes(C512.blocks(C512.lanes(List.append(&2, U32, List.concat(&2, U32, cs), C512.suffix(List.length(&2, U32, List.concat(&2, U32, cs))))), 64n, C512.round_constants(), C512.initial())) : List<&2, U32>} %Equal.sym(List<&2, U32>, H.finish512(qs, List.length(&2, U32, m), 64n), C512.digest_bytes(C512.blocks(C512.lanes(List.append(&2, U32, buf512(qs), C512.suffix(List.length(&2, U32, m)))), 64n, C512.round_constants(), st512(qs))), finish512_eta(qs, List.length(&2, U32, m), 64n)) : {_ == C512.digest_bytes(C512.blocks(C512.lanes(List.append(&2, U32, List.concat(&2, U32, cs), C512.suffix(List.length(&2, U32, List.concat(&2, U32, cs))))), 64n, C512.round_constants(), C512.initial())) : List<&2, U32>} Equal.cong(T512.State, List<&2, U32>, t => C512.digest_bytes(t), C512.blocks(C512.lanes(List.append(&2, U32, buf512(qs), C512.suffix(List.length(&2, U32, m)))), 64n, C512.round_constants(), st512(qs)), C512.blocks(C512.lanes(List.append(&2, U32, m, C512.suffix(List.length(&2, U32, m)))), 64n, C512.round_constants(), C512.initial()), Equal.sym(T512.State, C512.blocks(C512.lanes(List.append(&2, U32, m, C512.suffix(List.length(&2, U32, m)))), 64n, C512.round_constants(), C512.initial()), C512.blocks(C512.lanes(List.append(&2, U32, buf512(qs), C512.suffix(List.length(&2, U32, m)))), 64n, C512.round_constants(), st512(qs)), fold512_inv(cs, 64n, H.St512{C512.initial(), Nil{}}, C512.suffix(List.length(&2, U32, m))))) # ---------------------------------------------------------------- SHA3-256 (FIPS 202) def st3(st: H.Sha3State) -> TK.State: match st: case H.St3{s, b}: s def buf3(st: H.Sha3State) -> List<&2, U32>: match st: case H.St3{s, b}: b law absorb3_inv: for +fuel: Nat for +bytes: List<&2, U32> for +q: Nat for +s: TK.State for +z: List<&2, U32> {C3.absorb(C3.lanes(List.append(&2, U32, bytes, z)), q, s) == C3.absorb(C3.lanes(List.append(&2, U32, buf3(H.absorb3(fuel, H.read3_0(bytes), bytes, q, s)), z)), q, st3(H.absorb3(fuel, H.read3_0(bytes), bytes, q, s))) : TK.State} def absorb3_inv(fuel, bytes, q, s, z): match fuel: case 0n: {==} case 1n+p: match bytes: case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> b120 <> b121 <> b122 <> b123 <> b124 <> b125 <> b126 <> b127 <> b128 <> b129 <> b130 <> b131 <> b132 <> b133 <> b134 <> b135 <> rest: absorb3_inv(p, rest, q, P.rounds(q, 0n, C3.inject(s, TK.W{C3.pack(b0, b1, b2, b3), C3.pack(b4, b5, b6, b7)}, TK.W{C3.pack(b8, b9, b10, b11), C3.pack(b12, b13, b14, b15)}, TK.W{C3.pack(b16, b17, b18, b19), C3.pack(b20, b21, b22, b23)}, TK.W{C3.pack(b24, b25, b26, b27), C3.pack(b28, b29, b30, b31)}, TK.W{C3.pack(b32, b33, b34, b35), C3.pack(b36, b37, b38, b39)}, TK.W{C3.pack(b40, b41, b42, b43), C3.pack(b44, b45, b46, b47)}, TK.W{C3.pack(b48, b49, b50, b51), C3.pack(b52, b53, b54, b55)}, TK.W{C3.pack(b56, b57, b58, b59), C3.pack(b60, b61, b62, b63)}, TK.W{C3.pack(b64, b65, b66, b67), C3.pack(b68, b69, b70, b71)}, TK.W{C3.pack(b72, b73, b74, b75), C3.pack(b76, b77, b78, b79)}, TK.W{C3.pack(b80, b81, b82, b83), C3.pack(b84, b85, b86, b87)}, TK.W{C3.pack(b88, b89, b90, b91), C3.pack(b92, b93, b94, b95)}, TK.W{C3.pack(b96, b97, b98, b99), C3.pack(b100, b101, b102, b103)}, TK.W{C3.pack(b104, b105, b106, b107), C3.pack(b108, b109, b110, b111)}, TK.W{C3.pack(b112, b113, b114, b115), C3.pack(b116, b117, b118, b119)}, TK.W{C3.pack(b120, b121, b122, b123), C3.pack(b124, b125, b126, b127)}, TK.W{C3.pack(b128, b129, b130, b131), C3.pack(b132, b133, b134, b135)})), z) case Nil{}: {==} case b0 <> Nil{}: {==} case b0 <> b1 <> Nil{}: {==} case b0 <> b1 <> b2 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> b120 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> b120 <> b121 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> b120 <> b121 <> b122 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> b120 <> b121 <> b122 <> b123 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> b120 <> b121 <> b122 <> b123 <> b124 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> b120 <> b121 <> b122 <> b123 <> b124 <> b125 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> b120 <> b121 <> b122 <> b123 <> b124 <> b125 <> b126 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> b120 <> b121 <> b122 <> b123 <> b124 <> b125 <> b126 <> b127 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> b120 <> b121 <> b122 <> b123 <> b124 <> b125 <> b126 <> b127 <> b128 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> b120 <> b121 <> b122 <> b123 <> b124 <> b125 <> b126 <> b127 <> b128 <> b129 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> b120 <> b121 <> b122 <> b123 <> b124 <> b125 <> b126 <> b127 <> b128 <> b129 <> b130 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> b120 <> b121 <> b122 <> b123 <> b124 <> b125 <> b126 <> b127 <> b128 <> b129 <> b130 <> b131 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> b120 <> b121 <> b122 <> b123 <> b124 <> b125 <> b126 <> b127 <> b128 <> b129 <> b130 <> b131 <> b132 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> b120 <> b121 <> b122 <> b123 <> b124 <> b125 <> b126 <> b127 <> b128 <> b129 <> b130 <> b131 <> b132 <> b133 <> Nil{}: {==} case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> b120 <> b121 <> b122 <> b123 <> b124 <> b125 <> b126 <> b127 <> b128 <> b129 <> b130 <> b131 <> b132 <> b133 <> b134 <> Nil{}: {==} law step3_inv: for +st: H.Sha3State for +xs: List<&2, U32> for +q: Nat for +z: List<&2, U32> {C3.absorb(C3.lanes(List.append(&2, U32, List.append(&2, U32, buf3(st), xs), z)), q, st3(st)) == C3.absorb(C3.lanes(List.append(&2, U32, buf3(H.step3(st, xs, q)), z)), q, st3(H.step3(st, xs, q))) : TK.State} def step3_inv(st, xs, q, z): match st: case H.St3{s, buf}: absorb3_inv(List.length(&2, U32, List.append(&2, U32, buf, xs)), List.append(&2, U32, buf, xs), q, s, z) # The state after each chunk in turn. def fold3(cs: List<&2, List<&2, U32>>, +q: Nat, st: H.Sha3State) -> H.Sha3State: match cs: case Nil{}: st case c <> ct: fold3(ct, q, H.step3(st, c, q)) law fold3_inv: for +cs: List<&2, List<&2, U32>> for +q: Nat for +st: H.Sha3State for +z: List<&2, U32> {C3.absorb(C3.lanes(List.append(&2, U32, List.append(&2, U32, buf3(st), List.concat(&2, U32, cs)), z)), q, st3(st)) == C3.absorb(C3.lanes(List.append(&2, U32, buf3(fold3(cs, q, st)), z)), q, st3(fold3(cs, q, st))) : TK.State} def fold3_inv(cs, q, st, z): match cs: case Nil{}: %L.append_nil(buf3(st)) : {C3.absorb(C3.lanes(List.append(&2, U32, List.append(&2, U32, buf3(st), Nil{}), z)), q, st3(st)) == C3.absorb(C3.lanes(List.append(&2, U32, _, z)), q, st3(st)) : TK.State} {==} case c <> ct: +st2 = H.step3(st, c, q) +m = List.concat(&2, U32, ct) Equal.trans(TK.State, C3.absorb(C3.lanes(List.append(&2, U32, List.append(&2, U32, buf3(st), List.append(&2, U32, c, m)), z)), q, st3(st)), C3.absorb(C3.lanes(List.append(&2, U32, List.append(&2, U32, buf3(st), c), List.append(&2, U32, m, z))), q, st3(st)), C3.absorb(C3.lanes(List.append(&2, U32, buf3(fold3(ct, q, st2)), z)), q, st3(fold3(ct, q, st2))), Equal.cong(List<&2, U32>, TK.State, t => C3.absorb(C3.lanes(t), q, st3(st)), List.append(&2, U32, List.append(&2, U32, buf3(st), List.append(&2, U32, c, m)), z), List.append(&2, U32, List.append(&2, U32, buf3(st), c), List.append(&2, U32, m, z)), Equal.trans(List<&2, U32>, List.append(&2, U32, List.append(&2, U32, buf3(st), List.append(&2, U32, c, m)), z), List.append(&2, U32, List.append(&2, U32, List.append(&2, U32, buf3(st), c), m), z), List.append(&2, U32, List.append(&2, U32, buf3(st), c), List.append(&2, U32, m, z)), Equal.cong(List<&2, U32>, List<&2, U32>, t => List.append(&2, U32, t, z), List.append(&2, U32, buf3(st), List.append(&2, U32, c, m)), List.append(&2, U32, List.append(&2, U32, buf3(st), c), m), L.append_assoc_rev(buf3(st), c, m)), L.append_assoc(List.append(&2, U32, buf3(st), c), m, z))), Equal.trans(TK.State, C3.absorb(C3.lanes(List.append(&2, U32, List.append(&2, U32, buf3(st), c), List.append(&2, U32, m, z))), q, st3(st)), C3.absorb(C3.lanes(List.append(&2, U32, buf3(st2), List.append(&2, U32, m, z))), q, st3(st2)), C3.absorb(C3.lanes(List.append(&2, U32, buf3(fold3(ct, q, st2)), z)), q, st3(fold3(ct, q, st2))), step3_inv(st, c, q, List.append(&2, U32, m, z)), Equal.trans(TK.State, C3.absorb(C3.lanes(List.append(&2, U32, buf3(st2), List.append(&2, U32, m, z))), q, st3(st2)), C3.absorb(C3.lanes(List.append(&2, U32, List.append(&2, U32, buf3(st2), m), z)), q, st3(st2)), C3.absorb(C3.lanes(List.append(&2, U32, buf3(fold3(ct, q, st2)), z)), q, st3(fold3(ct, q, st2))), Equal.cong(List<&2, U32>, TK.State, t => C3.absorb(C3.lanes(t), q, st3(st2)), List.append(&2, U32, buf3(st2), List.append(&2, U32, m, z)), List.append(&2, U32, List.append(&2, U32, buf3(st2), m), z), L.append_assoc_rev(buf3(st2), m, z)), fold3_inv(ct, q, st2, z)))) law state3: for +cs: List<&2, List<&2, U32>> for +st: H.Sha3State for +len: Nat {H.fold(cs, H.Sha3H{st, len}) == H.Sha3H{fold3(cs, 24n, st), Nat.add(len, List.length(&2, U32, List.concat(&2, U32, cs)))} : H.Hasher} def state3(cs, st, len): match cs: case Nil{}: Equal.cong(Nat, H.Hasher, t => H.Sha3H{st, t}, len, Nat.add(len, 0n), Equal.sym(Nat, Nat.add(len, 0n), len, L.add_zero(len))) case c <> ct: +m = List.concat(&2, U32, ct) %L.add_length(len, c, m) : {H.fold(c <> ct, H.Sha3H{st, len}) == H.Sha3H{fold3(ct, 24n, H.step3(st, c, 24n)), _} : H.Hasher} state3(ct, H.step3(st, c, 24n), Nat.add(len, List.length(&2, U32, c))) law finish3_eta: for +st: H.Sha3State for +len: Nat for +q: Nat {H.finish3(st, len, q) == C3.digest_bytes(C3.absorb(C3.lanes(List.append(&2, U32, buf3(st), C3.suffix(len))), q, st3(st))) : List<&2, U32>} def finish3_eta(st, len, q): match st: case H.St3{s, buf}: {==} # digest(update_all(new, chunks)) is the padded block loop over concat(chunks). law incremental3: for +cs: List<&2, List<&2, U32>> {H.digest(H.update_all(H.new_sha3_256(), cs)) == C3.digest_bytes(C3.absorb(C3.lanes(List.append(&2, U32, List.concat(&2, U32, cs), C3.suffix(List.length(&2, U32, List.concat(&2, U32, cs))))), 24n, C3.zero())) : List<&2, U32>} def incremental3(cs): +m = List.concat(&2, U32, cs) +qs = fold3(cs, 24n, H.St3{C3.zero(), Nil{}}) %Equal.sym(H.Hasher, H.fold(cs, H.Sha3H{H.St3{C3.zero(), Nil{}}, 0n}), H.Sha3H{qs, List.length(&2, U32, m)}, state3(cs, H.St3{C3.zero(), Nil{}}, 0n)) : {H.digest(_) == C3.digest_bytes(C3.absorb(C3.lanes(List.append(&2, U32, List.concat(&2, U32, cs), C3.suffix(List.length(&2, U32, List.concat(&2, U32, cs))))), 24n, C3.zero())) : List<&2, U32>} %Equal.sym(List<&2, U32>, H.finish3(qs, List.length(&2, U32, m), 24n), C3.digest_bytes(C3.absorb(C3.lanes(List.append(&2, U32, buf3(qs), C3.suffix(List.length(&2, U32, m)))), 24n, st3(qs))), finish3_eta(qs, List.length(&2, U32, m), 24n)) : {_ == C3.digest_bytes(C3.absorb(C3.lanes(List.append(&2, U32, List.concat(&2, U32, cs), C3.suffix(List.length(&2, U32, List.concat(&2, U32, cs))))), 24n, C3.zero())) : List<&2, U32>} Equal.cong(TK.State, List<&2, U32>, t => C3.digest_bytes(t), C3.absorb(C3.lanes(List.append(&2, U32, buf3(qs), C3.suffix(List.length(&2, U32, m)))), 24n, st3(qs)), C3.absorb(C3.lanes(List.append(&2, U32, m, C3.suffix(List.length(&2, U32, m)))), 24n, C3.zero()), Equal.sym(TK.State, C3.absorb(C3.lanes(List.append(&2, U32, m, C3.suffix(List.length(&2, U32, m)))), 24n, C3.zero()), C3.absorb(C3.lanes(List.append(&2, U32, buf3(qs), C3.suffix(List.length(&2, U32, m)))), 24n, st3(qs)), fold3_inv(cs, 24n, H.St3{C3.zero(), Nil{}}, C3.suffix(List.length(&2, U32, m)))))