From ef426de408725df87727f48f5d2f70cf82bd1acd Mon Sep 17 00:00:00 2001 From: Pass Automated Testing Suite Date: Fri, 3 May 2024 17:15:23 +0200 Subject: [PATCH 1/2] Add EFIIX64x48 bitgenerator. --- bin/bench.ml | 3 +- bin/crush.ml | 1 + lib/bitgen.ml | 1 + lib/efiix.ml | 102 ++++ test/data/efiix64-testset-1.csv | 1001 +++++++++++++++++++++++++++++++ test/data/efiix64-testset-2.csv | 1001 +++++++++++++++++++++++++++++++ test/test_bitgenerators.ml | 4 +- test/test_efiix.ml | 16 + 8 files changed, 2126 insertions(+), 3 deletions(-) create mode 100644 lib/efiix.ml create mode 100644 test/data/efiix64-testset-1.csv create mode 100644 test/data/efiix64-testset-2.csv create mode 100644 test/test_efiix.ml diff --git a/bin/bench.ml b/bin/bench.ml index 6458ffd..a55a912 100644 --- a/bin/bench.ml +++ b/bin/bench.ml @@ -18,7 +18,8 @@ let pairs = [ "Xoshiro256", (module Xoshiro256: S); "Philox4x64", (module Philox4x64: S); "ChaCha", (module ChaCha: S); - "LXM", (module LXM: S) + "LXM", (module LXM: S); + "EFIIX64x48", (module EFIIX64x48: S); ] diff --git a/bin/crush.ml b/bin/crush.ml index 125014f..a8ce3ac 100644 --- a/bin/crush.ml +++ b/bin/crush.ml @@ -50,6 +50,7 @@ let to_module = function | "sfc64" -> (module SFC64 : S) | "chacha" -> (module ChaCha : S) | "lxm" -> (module LXM : S) + | "efiix64x48" -> (module EFIIX64x48 : S) | _ -> failwith "Unknown PRNG" diff --git a/lib/bitgen.ml b/lib/bitgen.ml index 5424189..9cd472c 100644 --- a/lib/bitgen.ml +++ b/lib/bitgen.ml @@ -33,3 +33,4 @@ module Xoshiro256 = Xoshiro.Xoshiro256StarStar module Philox4x64 = Philox.Philox module ChaCha = Chacha.ChaCha128Counter module LXM = Lxm.LXM +module EFIIX64x48 = Efiix.EFIIX64 diff --git a/lib/efiix.ml b/lib/efiix.ml new file mode 100644 index 0000000..1d191e1 --- /dev/null +++ b/lib/efiix.ml @@ -0,0 +1,102 @@ +open Stdint + + +module EFIIX64 : sig + (** EFIIX64x48 is a 64-bit PRNG that uses a set of tables to generate random values. + This produces a fast PRNG with statistical quality similar to cryptographic + generators but faster. + + The EFIIX64x48 state vector consists of a 16-element array of 64-bit + unsigned integers and a 32-element array of 64-bit unsigned integers. + In addition, 3 constant values and a counter are used in the update. + + The initial state of the bitgenerator is provided using {!SeedSequence.t}. *) + + include Common.BITGEN +end = struct + type t = {s : state; ustore : uint32 option} + and state = {ind_table : uint64 array; iter_table : uint64 array; + i : uint64; a : uint64; b : uint64; c : uint64} + type arbee = {a : uint64; b : uint64; c : uint64; d : uint64; i : uint64} + + + let rotate x k = let y = 64 - k in Uint64.(logor (shift_left x k) (shift_right x y)) + + + let iter_size, ind_size = Uint64.(of_int 32, of_int 16) + + let next (s : state) = + let open Uint64 in + let i = rem s.i iter_size |> to_int in + let j = rem s.c ind_size |> to_int in + (* copying and assigning is much faster than using Array.mapi here *) + let ind_table, iter_table = Array.(copy s.ind_table, copy s.iter_table) in + ind_table.(j) <- s.iter_table.(i) + s.a; iter_table.(i) <- s.ind_table.(j); + + let b = s.c + s.ind_table.(j) in + logxor b s.iter_table.(i), + {ind_table; iter_table; b; a = s.b + s.i; c = logxor s.a s.b + rotate s.c 25; i = s.i + one} + + + let next_uint64 t = let u, s = next t.s in u, {t with s} + + + let next_uint32 t = match Common.next_uint32 ~next:next t.s t.ustore with + | u, s, ustore -> u, {s; ustore} + + + let next_double t = Common.next_double ~nextu64:next_uint64 t + + + let next_bounded_uint64 bound t = Common.next_bounded_uint64 bound ~nextu64:next_uint64 t + + + let arbee_next (s : arbee) = + let open Uint64 in + let e = s.a + rotate s.b 45 in + let a = logxor s.b (rotate s.c 13) in + let d = e + a in + {a; b = s.c + rotate s.d 37; c = e + s.d + s.i; d; i = s.i + one}, d + + + let rec mix (s : arbee) = function + | 0 -> s + | i -> mix (arbee_next s |> fst) (i - 1) + + + let rec discard (s : state) = function + | 0 -> s + | i -> discard (next s |> snd) (i - 1) + + + let arbee_seed seed = + mix {a = seed.(0); b = seed.(1); c = seed.(2); d = seed.(3); i = Uint64.one} 12 + + + let set_seed seed = + let seeder, ind_table = Array.fold_left_map + (fun acc _ -> arbee_next acc) (arbee_seed seed) (Array.make 16 0) in + let seeder, i = arbee_next seeder in + let iter_table = (Array.make 32 Uint64.zero) in + let seeder, iter_values = Array.fold_left_map + (fun acc _ -> arbee_next acc) seeder iter_table in + Array.iteri + (fun idx v -> iter_table.(Uint64.(rem (of_int idx + i) iter_size |> to_int)) <- v) iter_values; + let seeder, a = arbee_next seeder in + let seeder, b = arbee_next seeder in + let seeder, c = arbee_next seeder in + let s = discard {ind_table; iter_table; i; a; b; c} 64 in + + let seeder = arbee_next seeder |> fst in + let seeder, s1 = arbee_next seeder in + let seeder, s2 = arbee_next seeder in + let seeder = arbee_seed Uint64.[|s1 + seed.(0) |> logxor s.a; s2 + seed.(1) |> logxor s.b; + (arbee_next seeder |> snd) + seed.(2) |> logxor s.c; lognot seed.(3)|] in + let ind_table = Array.fold_left_map + (fun acc y -> let acc', x = arbee_next acc in acc', Uint64.logxor x y) seeder s.ind_table |> snd in + discard {s with ind_table} 48 + + + let initialize seed = + {s = Seed.SeedSequence.generate_64bit_state 4 seed |> set_seed; ustore = None} +end diff --git a/test/data/efiix64-testset-1.csv b/test/data/efiix64-testset-1.csv new file mode 100644 index 0000000..d351f1a --- /dev/null +++ b/test/data/efiix64-testset-1.csv @@ -0,0 +1,1001 @@ +seed, 0xdeadbeaf +0, 0x63ed40843f708c37 +1, 0xa6a65e81ddab6c5 +2, 0xc93bead3fa77005f +3, 0x54060f6b744b8af9 +4, 0x59a54f2d2fce1240 +5, 0x973510c84511e89b +6, 0x61e046d6aacd31df +7, 0xfd7e9d015a68ee50 +8, 0x839fe7ed2d19e786 +9, 0x13200a7dfc38248d +10, 0xa77acb497204e9de +11, 0xf2f6b041926ab66b +12, 0x366383f67117d726 +13, 0x887b545f6a316fa2 +14, 0x12f03dd4b2a2cb20 +15, 0x481eeaf8b92f2455 +16, 0x5cc784889701e3c5 +17, 0x9f5b76c5f984a4cb +18, 0x21201d95ad247261 +19, 0x5f1888f7c937b193 +20, 0x21349206a221617f +21, 0x5d552a825411c3d4 +22, 0xdb9aaa2221b25613 +23, 0xcec0afcab95da811 +24, 0x367989dcb3b30b50 +25, 0xaee887e70f8bf1cd +26, 0x9d5ebae623cf3c95 +27, 0x9f778b57024566b3 +28, 0x1d28c4ac1feb60d5 +29, 0x85d42aca7eb6b0bb +30, 0x27665e9055f6d114 +31, 0x48a1df66814fc49a +32, 0xf5e4bdfe40134c5d +33, 0x60fb1d5083ccb525 +34, 0xf8240beeac5bdc59 +35, 0x3de376e53988372 +36, 0x603d102c71c8c30a +37, 0x6c801a73a75750b0 +38, 0x57c6c7c22ce29af7 +39, 0xb65a048be3a947b4 +40, 0x5221ba11fbab3846 +41, 0xf107f32e1e04dcdf +42, 0x860b5824bedf1c86 +43, 0xb5fac8b7020650c9 +44, 0x9e44fbe6f25f0817 +45, 0x828a79d6a2e92a17 +46, 0x201ea90056b7a291 +47, 0x7b9e72c8dddc3bf0 +48, 0x8155cf56367479de +49, 0xe8a6d0d094d460bb +50, 0x47c2330c355d8000 +51, 0x7ffcb64510f131b4 +52, 0xfb8b6851045fab15 +53, 0x547a3b9940a4afa7 +54, 0xdcc42a07b0855e2e +55, 0x5d7d5452f6c1100f +56, 0x837bb963274e3cba +57, 0x68c745a083e9d19b +58, 0xdd4f76be73babcf3 +59, 0xaa2c923ae0fe10d7 +60, 0x160b2a76484f898e +61, 0x4fbe7f1a2df26815 +62, 0x8f7f2114a6e8d94c +63, 0x7615cbfa3272053e +64, 0x419c22abd9047698 +65, 0xd01ebaeee742230d +66, 0x6f95f58c94eea2da +67, 0xfc1b6f8559441c46 +68, 0xec042915189d4132 +69, 0x9a07a89bb557865e +70, 0x70e340efa418e04d +71, 0x9ff336ff148c2921 +72, 0x72320b14587b754e +73, 0x64ac94e63c4b486f +74, 0xb4b3a3a8b7bce782 +75, 0xf5690dc510d6245b +76, 0xe8a5f083be3959bc +77, 0x26b39383f9dcc5f4 +78, 0xf98906e03547c0c8 +79, 0x2492c5a1ad77d86f +80, 0x2dae9e6f27570ca7 +81, 0xc70691e07b6753e3 +82, 0x1915620ead44a09 +83, 0x7c33ed09f3aed74a +84, 0x186886113a728ba9 +85, 0x4dce749eaa3f278d +86, 0xebdb22289d88a38b +87, 0x41a97ba0124f9645 +88, 0x3db3b969b006326d +89, 0x91599dff95719e38 +90, 0xca49eed485cc9a8c +91, 0x602869091381f313 +92, 0xe0e345fabefa8e6c +93, 0xc9f67af702632873 +94, 0x67cb09f84a2de40 +95, 0xcbcad3c0a475b0ea +96, 0xd98cea7d933304b0 +97, 0xcf5cdc0dc9438898 +98, 0xff32d14ff3b5a4c6 +99, 0x4fa14858ef1b3945 +100, 0x58cf162816f3d738 +101, 0xae757d9be3a4447 +102, 0xf85fb8b6d69eceba +103, 0x4b41026aebfff4dd +104, 0xe3c877aef00fb983 +105, 0x4a8310f38c7d7dde +106, 0xde4c459ce8d423cc +107, 0x605792a5131726d9 +108, 0x72cdab37cb331d78 +109, 0xccb78fb524bed726 +110, 0x596dc5e2edf3f51b +111, 0x84aa3fb3b48f444f +112, 0xcfa81d6d0d236960 +113, 0xbd624d68155e4d2d +114, 0x841be6172742738f +115, 0xdf6c1b3dc572eb00 +116, 0x613ecb86dbdf06ea +117, 0xa9c8bb2b571ea409 +118, 0xddd5df87603bb642 +119, 0xd74c777006e3c07a +120, 0xf84a09f161d21116 +121, 0xac80130f06fd0bea +122, 0x1145a1b8fdccf4c3 +123, 0xceae2712157a6edc +124, 0x5c58a540feacdfe2 +125, 0x633d91f80e13cd72 +126, 0x9788c9c7d378be8a +127, 0xd227cfeff7587452 +128, 0xbf60cba97407eef +129, 0x13342c853d334c62 +130, 0x31deef693ecf73e3 +131, 0xe4d2ec50db2dc7b2 +132, 0x5c2321ea8312888b +133, 0x3da21e9e0a10606b +134, 0x70bd6fb22a364dcd +135, 0xe7d7efbab789717b +136, 0xbb405e37369d5112 +137, 0x5c7d4d459a2be01e +138, 0xb90e0f713da5f890 +139, 0x6eaf131dec0339af +140, 0xc7d4126c8f853df1 +141, 0xa99d21825407da6d +142, 0xe51d6c73c78e4aaf +143, 0x1653f490d7f11e81 +144, 0xd7876aba60ccc4cd +145, 0x2b7940476f74fcd8 +146, 0xa606ce23d488f45a +147, 0x2b641d836cb9ab5c +148, 0x4c982293ef58797c +149, 0x7e84e5d64f9ba2cd +150, 0x293ee61516795d2d +151, 0x7a38d88b31c13d44 +152, 0x4fbffb8f6fab7fcf +153, 0xc5733f7c66fd9141 +154, 0x9c16241c7a4c6119 +155, 0xcedc9ce436a75361 +156, 0xb19903abb581dbfc +157, 0xa95418ab280210e0 +158, 0x54dcc000566dc97c +159, 0xa332fab824b9365d +160, 0x37376e6fd5cc9a5c +161, 0x576d6c16cfc80c2e +162, 0x69fc2b8d5bac92a3 +163, 0xd3e5e9cd9d3ffede +164, 0xc15606b559180b34 +165, 0xe6e66c2e634889bb +166, 0xa8df5d040052fd1b +167, 0x746526d261fed8dd +168, 0x3e137b445e2ba67d +169, 0x6e8089fe8425925b +170, 0x42d8d8d072bc56b7 +171, 0x960a76e413ecdf1a +172, 0xa060f171f28264ee +173, 0x8099d60af51d27a3 +174, 0xe8ebacb5c9d21af7 +175, 0x177bdb8bc19afac6 +176, 0x63725033864c7ecf +177, 0x8c39a958934b6764 +178, 0xa2a7f1ed47289db8 +179, 0x728f10c273d07761 +180, 0x88f97c31aeaf8403 +181, 0x63ec1f8fa1520665 +182, 0xe565382ad525bf1c +183, 0xf871704e7dce4c1a +184, 0x74ede673b151a1ab +185, 0xd48bde6871b74c30 +186, 0x3ffdd62bbd028e10 +187, 0xd0b5cf3b79d79bd4 +188, 0x3383fc662c12e010 +189, 0x59570d96c8a99467 +190, 0xa9727abea74e44b9 +191, 0xd77896efaa95c04a +192, 0x407171ac479bed1a +193, 0x6b96b5c12476e9e2 +194, 0x4ce81189f5807956 +195, 0xc0456529246556e7 +196, 0x9f35c5f0218c4631 +197, 0x23c718d57873a53e +198, 0x667861aa581e57ac +199, 0x9b8b5d5362fd052e +200, 0x3209298549eb14a7 +201, 0xfcf7afb0e4d56979 +202, 0x595154d12a312688 +203, 0x93eb6836f7c4fbf +204, 0x42c4cb26efeba9d8 +205, 0xc14affbf0fa157a9 +206, 0x7cb67911cf8ebb23 +207, 0xaf090996a81a8516 +208, 0xc65fd42e29be421e +209, 0x7aa099f562f3b65f +210, 0x8524769722c0f5f8 +211, 0xff7da50ab55f770f +212, 0x1f97bf9d28ab94eb +213, 0xb18f3d1d3d7a0789 +214, 0x575402d801bbc1ed +215, 0xbef22e1a34667df3 +216, 0x4deab0371a2fc086 +217, 0xa9a836394f34a7f4 +218, 0x466e4406519d1ce9 +219, 0x92beba2bcea22844 +220, 0x554cd46d227f34a4 +221, 0x6dc6ef1fef1929a +222, 0xcb41fef0b4d860a5 +223, 0x72d9b39446b2d0cc +224, 0xae7a63b4bc4afe80 +225, 0x1a8a98460b356e3a +226, 0x1135ad3dcc7e807f +227, 0x75d8ab51f3a0ac38 +228, 0x8aea33a5c0bf48be +229, 0xc3d19a544316c3fd +230, 0x8fb9d05ba8b0dda0 +231, 0x657270b21ce3e061 +232, 0x4221927b6f324dc1 +233, 0x3b36899f54cc68a4 +234, 0x76f9f47b09e8fe79 +235, 0xa36c281ccb8708d9 +236, 0x225ecd11290f983b +237, 0xe1ff9085339b2601 +238, 0x455a7e96d10923f +239, 0x2c8fe21720ae0297 +240, 0x11b0552780cfa47e +241, 0xb82998c4678c0574 +242, 0xf82ba2806a9805e9 +243, 0x5a542d1874749f8b +244, 0x652279a48986af6a +245, 0xef8c0558dd37ff54 +246, 0xf00d0d43be3dbf94 +247, 0x37413535cb9de4f5 +248, 0x17da1520caa3ad57 +249, 0x8f794e4ed51d4e1f +250, 0xae2ff422ead9f0ea +251, 0x3d464767f69ce2aa +252, 0x26b530f5ecc637f5 +253, 0xe19ba35efc39f499 +254, 0x6eac7d2c09c79b10 +255, 0xfd0227179105421b +256, 0x972bdefcad0e3772 +257, 0xfcde4bcf909da8c9 +258, 0xced8b9366e7ae582 +259, 0xdad93793c77b5046 +260, 0x178620cb8d89c3b0 +261, 0x1c04eab5835becbe +262, 0xd1fbc26a9ccbbbd5 +263, 0x8a38cdfacfac1449 +264, 0x74335f7cf4706743 +265, 0xd62545267bd0d2c4 +266, 0x2a299c9b25e9b4c9 +267, 0xc2b80b1b3471ddf6 +268, 0x46f0ca33283e4eaa +269, 0xc963203c093d4e8b +270, 0xabff120dd9219082 +271, 0xce44627feb0055c8 +272, 0x3f1adf8221ce5b28 +273, 0xcf92b3fb80de57a0 +274, 0xfef5c68a98dc928d +275, 0x554170be08796382 +276, 0x2473deb2c89af54e +277, 0x7910eebd421cac88 +278, 0xe6ef59adbc27dc9f +279, 0xa4bb3c9cb8fc0ee0 +280, 0xfe0d08c6e3462778 +281, 0xa1616f2e1f993fc2 +282, 0xa61b9af3cb340c5 +283, 0x836499005ee1f4f8 +284, 0xc27ac0fbcbdddacb +285, 0x1b65bbd300037337 +286, 0xe621e721aa6468c3 +287, 0x108bf102eab21499 +288, 0xee56910d973fa7a8 +289, 0xe515d3cf96609f43 +290, 0x73457840b56f3f72 +291, 0xba469788c59a6870 +292, 0x7ace5e6248b60d69 +293, 0xa498fa7037e5e06a +294, 0x6bcd23d3d8fa0753 +295, 0x16643e224cd2e1f1 +296, 0x60d2f68dc9129bf5 +297, 0x476a002b75233c25 +298, 0x134158863209c3de +299, 0x32a53f5ff3519f38 +300, 0x721d0473b596528c +301, 0xf5f7c6b1b3789138 +302, 0x6b646ab441557deb +303, 0x8e56b25d9b4bdb45 +304, 0x8178060a40269016 +305, 0x6816b17fb0138dc7 +306, 0x2ae62add4faba1d6 +307, 0xcdb0222843f3cc0 +308, 0xe2938ea78cffc83 +309, 0x201979fbeca210ac +310, 0xad38d174781df260 +311, 0x977a494e273fdcfa +312, 0xa5af6b6c7afa9394 +313, 0x73b75aebb02f5a14 +314, 0x792650dc26a60e27 +315, 0xc5dc4fadf88007a4 +316, 0xe7eb364cc5495e12 +317, 0xdd1c6d5c984b3aa5 +318, 0xebc6e8fe777b8285 +319, 0xdcd1bf111e838db2 +320, 0x93984d7b35712c8e +321, 0x5ce2ed595af23c35 +322, 0xd39feb91f16cdec3 +323, 0x68306a06dd99713e +324, 0x42cb14ae94516397 +325, 0xcd30b5fb8141daad +326, 0x6985aa377cb6c159 +327, 0xc77b1d3480ea98ba +328, 0x74f83675263f3522 +329, 0x7a129fe9f9896721 +330, 0x198c67e8dec38826 +331, 0xca2cb5853e347075 +332, 0x59b8494d5bbdd443 +333, 0xcc57e4843cdea32f +334, 0xd9d22166e5932555 +335, 0x450464bc4b12d7d4 +336, 0xd4ba80e2e847d6d4 +337, 0x8fd2a789ef2b92b7 +338, 0x34e4dabd3670a5b4 +339, 0xb697612875189b66 +340, 0x2ec32e70234a3b62 +341, 0x50a518d7ec77f8eb +342, 0x9a446cac84614e7 +343, 0xb6d4ea6072be175a +344, 0x4b909dd5765c48c7 +345, 0x9c4388f28e2993d7 +346, 0x94c361f682592396 +347, 0x4e260f416151e6ca +348, 0x47a059d10f15e79d +349, 0xdca324efab4c5ad3 +350, 0x793d0d986ab7d11f +351, 0x58a74083a3a165be +352, 0xc9d6e7b84921833a +353, 0x3a40cc4ca2eda7fc +354, 0x33c27a080c2d4afe +355, 0xbec9d18a63616d15 +356, 0x9cae9ccb9c93638f +357, 0x1684984fd0744c25 +358, 0x4864b5ba5ead6e4c +359, 0x179279411aefbf31 +360, 0xc7b6d6f22660ef5d +361, 0xae9f053c9a592eb3 +362, 0xd9f20eebbe6bf3ba +363, 0xd19c38d9bae52924 +364, 0xa7bc93bf1384c4f5 +365, 0x1de38eb8aad19b05 +366, 0xd9eb0946437b14f4 +367, 0x12f8abc497fbb682 +368, 0x84f81835b668e082 +369, 0x3735ec911e5c34ab +370, 0x12a03704cc13d32a +371, 0x366cd7b8549b11aa +372, 0xac78c5adbe86df33 +373, 0xb93b235f617e69db +374, 0x905e8d5207f6e695 +375, 0xfa58ab451bfb71e5 +376, 0x336a266febc5f584 +377, 0x77187483dcf47692 +378, 0xbc6dc58251dca38a +379, 0xb7a740e575cde1df +380, 0xbaa996f6037704c0 +381, 0x3ca7294d6bf897ce +382, 0x7fec566af8790431 +383, 0x63738dd5c41939a2 +384, 0x29cdbe5eab24f5be +385, 0xeebd33c4b9d176f8 +386, 0x636c422ec4ff28b5 +387, 0xce991ca6c18f3c84 +388, 0xb27bfb4be55cefe9 +389, 0x5d8a627a398456f7 +390, 0xac018726d7b48b7e +391, 0xb71116cf7362183f +392, 0xa31379eec4c8c2a3 +393, 0xcfef3b4ff441004e +394, 0xde835bc581319278 +395, 0x21d7cf8f9113de7c +396, 0x786e7a4f6b597c0c +397, 0x3a450cd73b22f865 +398, 0x253b9382cd3f7398 +399, 0x273b3aacb74346b7 +400, 0xce3c1847e3631169 +401, 0xf4b4759990361986 +402, 0xeda385ee7b02e702 +403, 0x225af42dbb6845e9 +404, 0xe3a1c19845c0c138 +405, 0x1c7fd98615d68f79 +406, 0xc72307da0afdc4a9 +407, 0x21e3a842713f3010 +408, 0x361ba648ec1ecfbb +409, 0x99796ddecae88488 +410, 0x273bd64233e0e586 +411, 0xafd99ef229715f8b +412, 0xf3a949cdb983af83 +413, 0xc9cc796042cb1c59 +414, 0xb8c56285729a2fe2 +415, 0xa1969e3d53ee9b2f +416, 0x18ad70ca729e3522 +417, 0x35b61c53204c455d +418, 0x1ae586b509e7e390 +419, 0x6e3235c0e71b8c9d +420, 0x1bb4399cb464c96d +421, 0x2cf07523f30b303e +422, 0xc47f7bc34b39a56c +423, 0xc3323192deddc287 +424, 0x457405eaad83b368 +425, 0x5d3ebc3516e6d4a5 +426, 0xe7fbd8cc863f2eb3 +427, 0x2b52cd397b855050 +428, 0xaa6e945fe1fc6a1f +429, 0xdc152ead4931ec12 +430, 0x8bbff9bdce91da27 +431, 0x7eb483f47d05136c +432, 0x57686d343140052a +433, 0xef4f5d99f861198 +434, 0x31f06edd300af562 +435, 0x4d253bf1f9a3a416 +436, 0xc14d77fe9bc9ba7 +437, 0x9be39ebb0cec43a5 +438, 0xc3c04a8060bd2a43 +439, 0x7908973d1159527b +440, 0xd2a0c5c59fcb2c59 +441, 0x2c8188b2bb5534f0 +442, 0x5ff7937ee44f4305 +443, 0xe83c3e26ae390857 +444, 0x284f0b372b17ed53 +445, 0xe8dc8be897958880 +446, 0xecade13368194412 +447, 0xeb53a0d6ec361978 +448, 0x95dd1b5c47339c8a +449, 0x192eb5f63056ae95 +450, 0x10f8815229297a6e +451, 0xa2990f63c4f8b0bd +452, 0xf953a7b64c7fd11 +453, 0xa964f0bfefccdcf0 +454, 0x5894aadba7e43f28 +455, 0x4107967547b993f5 +456, 0x2a0423b3bdf6562 +457, 0xe4c2687b41d87a1 +458, 0x97e73ca1bc7814d9 +459, 0x688832472fb79cb7 +460, 0x3e752d401b334fb1 +461, 0x3cfbbd2a239fec90 +462, 0xab70a205944db674 +463, 0x1bcfe60952f08421 +464, 0xb6a1e158b5cc1be9 +465, 0x56195062665b4493 +466, 0x715a85485a4f23fd +467, 0x30a4aa57ee1e14c8 +468, 0x5011d504fa8bcd0d +469, 0x7559e0763e8d5b5b +470, 0xb60734bd5094f2f5 +471, 0x90f70bc123bf3648 +472, 0x3539cf76cb813276 +473, 0xcf645a86476478de +474, 0xfb5a81d4577cf73b +475, 0x22a9769567a7d014 +476, 0x9f23f9f58daba899 +477, 0xf1101413ce2bdc0c +478, 0x5a45a07ad6f0b9db +479, 0xdee3b36deed52287 +480, 0xd640db95e66ad82a +481, 0x62ae085d138a1bb8 +482, 0x7a854acda3f43b78 +483, 0x2901b8e2cb0e3b46 +484, 0x8f8460b7bc5f5238 +485, 0xdc0de02f038374c4 +486, 0xb5a40e740d60956a +487, 0x7494032b387b575c +488, 0xcda9c4933010333a +489, 0xe1752b525f8bc993 +490, 0x4d14ebda173121a +491, 0x9767c35184d907f8 +492, 0x9b9441e06d70b521 +493, 0x384ca064256bc786 +494, 0x6ee9aba7d6a93d14 +495, 0xae7d0684b5dcc569 +496, 0x60121fff22f8aebe +497, 0x553e7b32f42a2d9b +498, 0x4c6c623657be3ecf +499, 0x3bd940813b05fbe3 +500, 0xe939ee2ea884a9bf +501, 0x6c15558e02394175 +502, 0x22e7eb5c84d2ea4f +503, 0x73cd0a164cf1434b +504, 0xf85e2954542af188 +505, 0x1232b3daf47180ad +506, 0x24c3cc00b93e8931 +507, 0xc1912092fbd60800 +508, 0x5f70ead67b02935b +509, 0xfc19e90047bf6df6 +510, 0x7c0ffb86d34074dc +511, 0x81d134a351bb426e +512, 0x315df4751e75be24 +513, 0x20b2c8b24edc16a8 +514, 0x3bb734aaf7ef9208 +515, 0x15bf2c52a1b55df4 +516, 0x8d2657614e318880 +517, 0x54cfe4e28370b72f +518, 0xc2d93142f6cc9ceb +519, 0xd42bfef8bcc060cb +520, 0xc50c30a370931d5a +521, 0x3edfbfa9ecd5b953 +522, 0x29eb4b2291044911 +523, 0xa53181d8bafef8c8 +524, 0x67c22bd00a20303f +525, 0x6801c06f1615a4ab +526, 0xa9509bf90bf8ac6a +527, 0xe672951f6a645c99 +528, 0xab6c943182e9797 +529, 0xddadcb8b8569e89d +530, 0x94937c525b1a0e38 +531, 0x778f9f8711144b35 +532, 0x1cb5fbf13484c64 +533, 0x5ebe1ede418b934e +534, 0x244f1ccabc31db60 +535, 0x54a5b72f63809c4 +536, 0x139c5f9e8b1fc5d4 +537, 0xa4f18ff0e2e9fa94 +538, 0xe481d85587158d83 +539, 0xc7682539ed46cf58 +540, 0xcfb39944b5a1703e +541, 0x7795dcd8be01cd95 +542, 0x3bcc93bb082b25c6 +543, 0x33101e14f10d2dae +544, 0x3ac1a05ca289833b +545, 0x6d5a95062b366e23 +546, 0x129cff15e04e8b +547, 0xb4dc98c3ae4aeb89 +548, 0xfe22a5bf874fbeec +549, 0x695672a85705189 +550, 0x1a3b507cb9ea9b55 +551, 0x47b0d0cc76420b +552, 0x2d64a8ce9959e635 +553, 0xda5a25d1eb11bf6f +554, 0x46e77d7c55a0b98d +555, 0xc1ea3dcfc97decb6 +556, 0xbb2cb541c0e40044 +557, 0xbc4eba3117ad6c5d +558, 0x6844fbb67bce9c06 +559, 0xc0bfcd40352a17bd +560, 0xe1c5a88af1260020 +561, 0xab4b574ea5c8b41e +562, 0xfe529216de875cea +563, 0xe6c7f7b2d036695c +564, 0x937b617a17422dac +565, 0x9b369a65bbdbdfa5 +566, 0x225f52449bc3d3e4 +567, 0x6ac7fe9af0fb55f7 +568, 0x8063a4021ae224fc +569, 0x72063544df762c41 +570, 0x5c59160838637952 +571, 0x6de69aedf3f490c2 +572, 0x704cbb795eb01df0 +573, 0xcd0bab46b3e7fe79 +574, 0x1d0686693d0916ac +575, 0xf2e09e857f36f70 +576, 0xd50632178b5c7872 +577, 0xad9751134fc4ea61 +578, 0x446ec3aedd8d82af +579, 0x3eca2b2f75d125a5 +580, 0xa241a58c624663e7 +581, 0x3c5994cf758538d3 +582, 0x791216b669b57908 +583, 0x79d8723d025a2d24 +584, 0xa1dce9452627eac4 +585, 0xc31d653db440076 +586, 0x7dec9693e61a3524 +587, 0x2a9d43bc54feca2f +588, 0x1c57603c920bc616 +589, 0x49ec955c3613dba8 +590, 0xf3b18ee50c7c8ddc +591, 0x28fe8e39d2fb974c +592, 0xaf54e7c63a936f15 +593, 0xd7cda4746083e6a0 +594, 0x53d335daf6c877ad +595, 0x4790cb65f1610ceb +596, 0x9bdce572e582e21d +597, 0x3970a69c604ecafd +598, 0x6d79b972aa9a3913 +599, 0x375fc71a7b77fd44 +600, 0x7d6cff0fac8a61a2 +601, 0x78a8b6ce0f686e09 +602, 0x4020644f880c1a5a +603, 0x7a4e01065fc66a95 +604, 0x214b3f091eba1103 +605, 0x15e318876504c45f +606, 0x823e7f5db00a37ff +607, 0x9db913ece4899ef5 +608, 0x9178ac5cb9a25eab +609, 0x4625336df7b4eaf3 +610, 0x32284fe61caa9244 +611, 0xccbeb53257223beb +612, 0x20e31e6fd23aed12 +613, 0x457288c1604362a9 +614, 0x962b134228bfd533 +615, 0x723879b4013faed1 +616, 0x9a6b954722e1da1 +617, 0xa5ae6ce0c0f7e935 +618, 0xf6871e673350e1d0 +619, 0xf76ebd94efa14eba +620, 0x4d9853930a5a0193 +621, 0xbecfee70de2173c4 +622, 0xcb34dd099f4b98ef +623, 0x1c6e51642d5a2ddb +624, 0x969f8bd460c406a3 +625, 0x8ed31744b869092 +626, 0xdfc83853e98586c +627, 0x894556ea2a884d75 +628, 0xa9c924663785690f +629, 0xfaee2f0f4cba69dd +630, 0x9bed0db20da8127 +631, 0x64c311ee1e6f51ba +632, 0x81af85dc47e64be0 +633, 0xe6c069c9d9b5a82e +634, 0x4e30aa03bf8d5226 +635, 0xd7eb00bd20fdc337 +636, 0x805d778e2fec346e +637, 0xff0b749cd50fc4bc +638, 0x31c412d72469ee67 +639, 0x9520ee49c7aa9d6c +640, 0xd50dbddfed699bc1 +641, 0x4fc40b540e47dd3d +642, 0xd1176cd53daf52f7 +643, 0x737e327f75ce7658 +644, 0xa0a271973dde1e2c +645, 0x804868b77e2bd374 +646, 0x1dfe6bcdfdd537ba +647, 0x4cdd5ae2ac9a401c +648, 0x27f7cfbd1a0fcc99 +649, 0x5f57f7e60a5c75f6 +650, 0x18c3c92e53bf0ca2 +651, 0x33170e5f7097d695 +652, 0x15c428e00b25ec83 +653, 0x4c9b6ac220246284 +654, 0xcf10e430fec65107 +655, 0x102eba828ec34d44 +656, 0xf19c29db951d825 +657, 0x8c1070800a9e80f +658, 0x8dc5bdc16aa60a63 +659, 0x73a501eb5c6ba6f +660, 0xced33fe9da919eda +661, 0x6149f98cca5035e9 +662, 0x47f2a857df7a93ac +663, 0x2edc3d5e67a40e42 +664, 0xccdacc7c1a73a63 +665, 0xa9b93baefc3cbe9b +666, 0xbde484c325e41bc0 +667, 0x8eabd8391d10df2f +668, 0x19716883a73f455c +669, 0xb42209d8b64e3f08 +670, 0xc112b132ea1ac172 +671, 0x308cebab2ad2aaae +672, 0x5b22b26466e8f468 +673, 0x8fd04abc8aa262ae +674, 0xc7241879f39e3ab9 +675, 0xbb7f7c835ec1e38d +676, 0x9689b7283809d86 +677, 0x4a16507f87d5ef90 +678, 0x234f4a97baa12aaf +679, 0x7eca936bb9f669d2 +680, 0xc642059aa32c8e5e +681, 0xa31448ba4e5ff78a +682, 0x2cde85588bc1bcd9 +683, 0xd00c7bb545b33299 +684, 0xf9d943a14676b49c +685, 0xaea5ffc2ac4407d4 +686, 0x64a043530c2f1394 +687, 0x2917bd9f1e7c21cc +688, 0x860fe82f2a6ab2a8 +689, 0xf8074654290b9947 +690, 0xc5f96b216397ee3f +691, 0x70f2137aea6165b1 +692, 0x50710265ee2aae45 +693, 0x921076117c866f0c +694, 0xf7546da509af5e54 +695, 0xb1c431264651112 +696, 0x2d3ae69e7ca7e43b +697, 0xda8e36b0f1e5bc4 +698, 0x3b527722eddc5a3c +699, 0x34143046a5c68961 +700, 0x829ee2e3d1a21189 +701, 0xec89c674f190c6a1 +702, 0xfaa92e8a949b2933 +703, 0xe46777ee4cc123ae +704, 0xfc32744d63cd0904 +705, 0x4bd9bcb04de4e268 +706, 0xc763345c34ba74c0 +707, 0xda15b84e758f0af3 +708, 0xab472919831cdb7b +709, 0xdd845cb276e7363 +710, 0xae1bcf38b1c5ccac +711, 0x612ac9f133b4fab +712, 0xa0daed82b7d351b +713, 0x82689d03a7738e34 +714, 0xddafd7a07cf08b41 +715, 0xcaffc47a69474b18 +716, 0xff142220c392faa5 +717, 0x48080d07343cc4a9 +718, 0xfeff2e8cb1a9ecdc +719, 0xa834508c82dde04e +720, 0x303447ce687c9eac +721, 0xddd0ab0f61d3c4cf +722, 0xa7914e31edd60e89 +723, 0x627b7a3d7da5e822 +724, 0xc522097c8bbcddef +725, 0x2ec49e9dd8baad57 +726, 0x695866ec23ab4221 +727, 0xa8b459e9a48a6431 +728, 0xb404d477526cdbe9 +729, 0x3de02a2e045cc73f +730, 0xad6990c40dc98779 +731, 0xe90e349909a85ae7 +732, 0xf5221a32672ec0f6 +733, 0x4779909705081a19 +734, 0x6378a5846c1ef755 +735, 0x41c3fe8949058aa2 +736, 0x5e2de4042809c4ba +737, 0xae89f360c67e56b3 +738, 0xa3ad6629cf7f5180 +739, 0xd89d0faa876513d4 +740, 0x7ce37350b42f5bb3 +741, 0x3e5c755a14b5e5f2 +742, 0x127730f9967fff36 +743, 0x51b2da372eec9621 +744, 0xb97dd60b564f5e7 +745, 0xc617bf2a11cf0b22 +746, 0x13ad241c438e30e8 +747, 0x58080cffd40b135f +748, 0x55bbe15696c4bbf2 +749, 0x603b4de12e83d475 +750, 0x68ce52475e9c0ceb +751, 0x53f39e55286de3dd +752, 0x28100de00d3056a +753, 0x64992365ea45e9f7 +754, 0x8f3e14f7eee3dc1e +755, 0x9f32ea95829685e6 +756, 0xdf755a75dd777f42 +757, 0x8ccb489749b9da6e +758, 0x2019a0c67a4dcebe +759, 0x8fc6d4590e7fd9dd +760, 0xda63992f59781435 +761, 0xf3d3b669ea864926 +762, 0xdbc59c2abee110ea +763, 0x54bd22498906db3f +764, 0xeaf203a7ba5da12c +765, 0x8159bd8cd73ed641 +766, 0x111faf1fb99c55f9 +767, 0x87db169448a836c2 +768, 0x9331a68bf4d556d2 +769, 0x322aca58aed41c07 +770, 0x43be4c2aede72c84 +771, 0x96dd0052d1ea02f +772, 0xa788b79a512bdc35 +773, 0x136ea7c76bf66396 +774, 0x6b01edbffb952cd6 +775, 0x70afd7d4a0a5acae +776, 0x5c98332fe5091e42 +777, 0xfbe2f348b8fe516 +778, 0x46e6538ccf15c3c6 +779, 0x28a963139065e971 +780, 0x6abab60a366159a9 +781, 0x4689ba5761570047 +782, 0xba5767d67e5b57b9 +783, 0x3d3ca6188103e15 +784, 0x857e7fad69348481 +785, 0x791e45159684332a +786, 0x33f22b79de7ac29d +787, 0x8745242beebad7f3 +788, 0xe347f8cb6ede022a +789, 0x498059d744e87b6b +790, 0xd9ad710c190727d5 +791, 0x9b3b9ebbfa2b3eb +792, 0x391510fb15495ae3 +793, 0x38a64abd2c04ccef +794, 0x21c47fe308defd3f +795, 0x4e14202516f155ef +796, 0xf699da41b9da0a54 +797, 0xdbfbee29d47bee3a +798, 0x9315c28d5bbe8669 +799, 0x8458a5a65540d38e +800, 0xc48d95258d7656bd +801, 0xd9e66074eae55fb8 +802, 0x26141ec926e77637 +803, 0x9e244e5bd1279610 +804, 0xac03589325ce2b81 +805, 0x877d13742d6c9225 +806, 0x45f4f8c88251e7f0 +807, 0xb0279ab80cd8b1a1 +808, 0xbabfc4040e3487de +809, 0x7ebbe834e74831d9 +810, 0xac2e683de79ba295 +811, 0x57e5743288a77c13 +812, 0x5e229a083a0a478e +813, 0x2d0bc6d2a13f5dc3 +814, 0x27efd1ebc85cc156 +815, 0x53eb43961b182d66 +816, 0xed3eae6564867498 +817, 0xa129183111d86089 +818, 0xcacba6286fc5c075 +819, 0x129994eb50c28191 +820, 0x4c6045f74c51eb41 +821, 0x3e7b2a1e78e7e2b1 +822, 0x7b68dd2f215b934e +823, 0xddfb0849cc4c7a0f +824, 0xd7afa751bbb2718 +825, 0x1397a2314a9e579b +826, 0xa217169d6388e17d +827, 0x6a7bc1d690af00cd +828, 0xc0c732bae2be1e60 +829, 0x674ee4c848b3277d +830, 0x8069ff8f7d5898d9 +831, 0x661919648600a523 +832, 0x697a89879ea6292e +833, 0x224abcbcf40b32e1 +834, 0xcbec30ab965c3009 +835, 0xee2e6877e5af33b2 +836, 0x7d68cde05eb469a9 +837, 0xb97e1316cda8223c +838, 0xa127916b1c37411a +839, 0x9dd11aaa88025f66 +840, 0x968cb6047507cd95 +841, 0xe0dca4b913abcc3c +842, 0x9c9acc6e7fec64b3 +843, 0xf53605e171e87fc6 +844, 0x78d96a5937b17cdd +845, 0xd2c07f78b62e20b3 +846, 0x8567d13823b2ae7 +847, 0x6f8bb554366554dc +848, 0xdddddaab5bd99832 +849, 0x1b9c60e44a2a35ac +850, 0x19564cec07255ac2 +851, 0xc268f24d604db075 +852, 0xdaa482732d7a49f7 +853, 0x29cde73c490964e2 +854, 0x57f835b980c311d6 +855, 0x94682ebe12f1274f +856, 0x94bee270e1de6d +857, 0xb1a920615a7c7758 +858, 0x338bcf9e897e7aef +859, 0xd5273e8c4d0f806b +860, 0x56da330ae012e14f +861, 0x3795e9a82fdc141f +862, 0x5b4d7bd1be7cfa65 +863, 0xc345d4005c036866 +864, 0x614fea7c75890132 +865, 0xa91246a37848f968 +866, 0x79d672c58cd44f10 +867, 0x7cf2ae96a3f11fe2 +868, 0xae2ed549c1d158af +869, 0x7a6825bc58109d5d +870, 0x31214a576d660278 +871, 0xd3e769d241a49275 +872, 0x365685d814b664ae +873, 0x5d865789843cdcff +874, 0x63c13f9ae026091a +875, 0x1a7e5232911e4cda +876, 0xd3cfb1f23db2e301 +877, 0x4eb0b6d27e5559ef +878, 0x26bd18711433e9b5 +879, 0xc2367ccd6acc32e7 +880, 0xb78efd1e60abf40e +881, 0xb52cc93d8c8f164d +882, 0xa0311c4415a0a0f +883, 0x89ac29a004130c23 +884, 0xc2d4829f3d3b3bf8 +885, 0xfb9659ce895aea5a +886, 0x2202dd53acfef206 +887, 0x12ac4077645816fa +888, 0xf49a7776467a20cb +889, 0xa8039d91fa521328 +890, 0x7e50687278e5960c +891, 0x24e5d5ed45288c79 +892, 0xbb2d472e257a4502 +893, 0xb7971c6ba2996e69 +894, 0xf8170b80424562dd +895, 0xfbbc55c677031c8 +896, 0xcc00c0910e746d81 +897, 0x2245c714c1e1386a +898, 0x2fc6149a16ade3aa +899, 0x177865ccbb797a91 +900, 0x1f69b02fdd8303c1 +901, 0x4ea7f7b8d8d96e34 +902, 0x9f8b6f7aa6c80c29 +903, 0x1277c86b5647c484 +904, 0xc1dcc07233a47ad3 +905, 0x176fa0a70ae7ca7e +906, 0xaceae6fb5bae658 +907, 0xa692d4dad389ed9f +908, 0xee78273d10a1ec46 +909, 0x7a3beaecb3a6ec03 +910, 0xf63f3242ec615720 +911, 0xebb573ebc23ab4b1 +912, 0xcffaab397974bdd4 +913, 0xbcf6c7db5bb1d8ef +914, 0xa3e953a1556b53a9 +915, 0x45f5dbcd6efee3b9 +916, 0x6863e600d1a7017d +917, 0x5497347df090a778 +918, 0x6f7e47639e92a9be +919, 0xc907f7ee617e4840 +920, 0x2dae0679f86923f9 +921, 0xd5a4dd971574412b +922, 0x207a769ef4edf7d3 +923, 0xca10e89365a62812 +924, 0x540b40e70549a006 +925, 0x61930719a209f14 +926, 0x2b7a446ad9e92883 +927, 0x277f009249c6f837 +928, 0xcbc7f5944ec7acc5 +929, 0x7f2eb972c7e49bb6 +930, 0x34ae13a42e0b812a +931, 0xdc21f81e7961be30 +932, 0x842b2eb39b099458 +933, 0xb9f2063d409e8e19 +934, 0xfbec5319fca87cf5 +935, 0x16b9ad5fa553e426 +936, 0xb601854c735776f4 +937, 0x5b9ee8c2f6704548 +938, 0xca60f72ec4338f58 +939, 0xc524e64ccde9d487 +940, 0xa964103a4870b09e +941, 0xd3b2cce252e0dd49 +942, 0xdf9022ea004bac3f +943, 0x68cc207ddf047586 +944, 0x5d52c50fb5abd41c +945, 0x5de5c9e1c1ec3b55 +946, 0xe4c2a3dd8aaec0ad +947, 0x89aa7ce0c0bc6f4 +948, 0x202ae1fb775c326c +949, 0xdd43341de86ded69 +950, 0x49ce6457b2468ba6 +951, 0xd9ff559682213546 +952, 0x5b325637029b8fce +953, 0x87ff134ac6cc9c0a +954, 0x1795a61e6b99d2ae +955, 0x7c29780fe3c8d165 +956, 0xcc7efa0e599f2904 +957, 0xf04ea7df81bb85d3 +958, 0xe109c1a756bb2409 +959, 0xd035af181b9c5b6c +960, 0xabc74b77d6d33a96 +961, 0xb31ba3e44be4df73 +962, 0xcdcb657a471e16c +963, 0x30439f20164da7ce +964, 0xb462cca289c4d969 +965, 0x2a9b1cdf9e902936 +966, 0xb1fbed3382bd0705 +967, 0xa667565a51bd9875 +968, 0x85c733f413fe439d +969, 0x1da5841ce490c60c +970, 0xf832d054bbf74e34 +971, 0x7f37a22568f4796f +972, 0xc6ed0496734b2677 +973, 0xe5000cb414413e9c +974, 0x49599739123c24f9 +975, 0xd2cbc24ffbdc6bbc +976, 0xbffcb1f77d9869a8 +977, 0xffee7dc418d1b802 +978, 0xd990d36d7e392b4 +979, 0xcc2d8d8ce8c6caca +980, 0x21e3d848cc643136 +981, 0xd3e413e811be688e +982, 0xfaf87bce69d07a2 +983, 0x4e9a014ec9917a71 +984, 0x1129d2eeaaa11f6d +985, 0x1dc4dc9cc80f4e40 +986, 0xe271c7e00bab3601 +987, 0xfeb960204178c29 +988, 0x6023ed81dcd5d783 +989, 0x81c8e2d439f43111 +990, 0xa42f6303bfde3861 +991, 0xa574af32a36776d7 +992, 0x664e9ce53abb005f +993, 0x78ce7fc1c424fd07 +994, 0x4a8194faca0a05dc +995, 0x8294bc71fe3489c6 +996, 0xb12ce195c03ed466 +997, 0xaf159a5856c47cd1 +998, 0x4c8775f1148fac2 +999, 0xc9141ac5e177e2b8 diff --git a/test/data/efiix64-testset-2.csv b/test/data/efiix64-testset-2.csv new file mode 100644 index 0000000..9941533 --- /dev/null +++ b/test/data/efiix64-testset-2.csv @@ -0,0 +1,1001 @@ +seed, 0x0 +0, 0xae0f686a3ac34f0b +1, 0xfb928201b478f670 +2, 0x9cc6b0e10ddead0b +3, 0x6e35a39ed9c34119 +4, 0xcf0d33455aaf4768 +5, 0x492cc45a170048ec +6, 0x6fba7b4a08791673 +7, 0x573fdf32e91079b6 +8, 0xf2beafd906de8905 +9, 0xcf59285abd49ffb5 +10, 0x4db3c05b815cf5b2 +11, 0xe20cf41c0e709bf5 +12, 0xfbe63dfcfee8d589 +13, 0x843f038472f16a18 +14, 0x1d0f076c0b06d1a6 +15, 0x71890b243f2f4c66 +16, 0xda5ccbe2adcd30b +17, 0x1e332d90f2b029d6 +18, 0xecd4e651a8115a9d +19, 0x4318ba9cb3ab4ccd +20, 0x3b66f4235690d4b8 +21, 0xaefc3b46bc8a33c8 +22, 0x87988cadc9f41bf1 +23, 0xb60c2a40f5747f70 +24, 0x375aabf4b67acca0 +25, 0x130984a5f34229e8 +26, 0xea3a4d7c43af7e9b +27, 0xdb90b8b18b7bc5b7 +28, 0xbc97e07d465ccff2 +29, 0xf7a63bd07a08c8ac +30, 0xdb156c1591b3263e +31, 0x4f16647bbc5fabc +32, 0x36fd975bf9145c3f +33, 0xf15b420b5e723a91 +34, 0xc9f9ff6d76dd67b3 +35, 0xa87c7e814e7cd94 +36, 0x25bc2543cda81bf4 +37, 0x6d3e11f80037beb7 +38, 0x180bcf44970f4b6f +39, 0xa272bfa42ee15bba +40, 0x68e0f11582c3f8c4 +41, 0x8d119560c82bd134 +42, 0xae0f4ca5342934fe +43, 0x35b013cf4f02515f +44, 0xfcbdd20ed4bb2327 +45, 0xc1ee42b4313f16df +46, 0x659203286f1dfab1 +47, 0xd212635554b328d6 +48, 0xe1f769bbdca57f5b +49, 0x2171348a4b87276e +50, 0x2e91a2b6e0d1c88f +51, 0xdc76471d2d17319b +52, 0xe1409c51c49d5ddc +53, 0x4729b51e1bb7f7b +54, 0x88c3a0a3f680cc77 +55, 0xe43e7c19ce8e3e67 +56, 0x4c8c3e9b00e2390c +57, 0x1c68602a58a24acf +58, 0x4b677d6fdddca73f +59, 0xb5c54af9387c790a +60, 0x81dd820e1f917db7 +61, 0x7d0330be38f16fd3 +62, 0xdb131837f35394d8 +63, 0x61f71276e016811 +64, 0x4132d1750e4dca8f +65, 0x1c93bdb9a90b3900 +66, 0xb29c12cd86784168 +67, 0x8e7428544ddd44dc +68, 0xbed7b596adfecda9 +69, 0x1e7c558c6cf66189 +70, 0x13f22b217997739a +71, 0xcfffc8591f2658c1 +72, 0x89b1e2b3fb704c25 +73, 0x7343b8f71f5fd603 +74, 0x6f40280bcca3237a +75, 0x2ec43b922fca8c6a +76, 0x97176f4e94dea0da +77, 0xbe29d593201e92e7 +78, 0x846ebde3f4b7dd37 +79, 0x41b5cb7f61cc5803 +80, 0xf018d5e922709b96 +81, 0xb7839beb11c805ca +82, 0x390150d2b63d9767 +83, 0xb8c6d5be8a02ae85 +84, 0xf20fe9f752a90ccc +85, 0x5ddc2e1bfe9ff1b3 +86, 0x68f958d20a5aff96 +87, 0xbe5a0ee441b24410 +88, 0x589f90fe6a2d60f5 +89, 0x73fc4d4aac52d1a5 +90, 0x37a0c18be70159ce +91, 0x557a657cbad2aaf5 +92, 0xca4e5a72b2d23940 +93, 0x9f25e950b91ac5a1 +94, 0x8ca2871f3611d21f +95, 0xd0f181f6f2f025c4 +96, 0x4f6e3bd20e764c04 +97, 0x8702efc51e616e94 +98, 0xaa180bd27b8dab9f +99, 0x4f85426018aeb40e +100, 0x5cf31eebb67099bc +101, 0x4599e611bb951d8 +102, 0x9e3f2141623de5a0 +103, 0xc1b493e49a285e04 +104, 0x3af48441ad7a26f6 +105, 0x746728679f8545a6 +106, 0xeb3b094db4c672ae +107, 0xfd684af9c07cc4cc +108, 0x1aaec9cabcde30f8 +109, 0xcb2a20ab599b3dfa +110, 0x68db59cb1fe0f54e +111, 0x22e078987521dd5f +112, 0x8e61d71ae01fb683 +113, 0xa2fccd68a86b5368 +114, 0x6db83449c5206a81 +115, 0x35de68faac8fa2f4 +116, 0x67bd5a486487235b +117, 0xd0708950d607979c +118, 0x8eeb460620e5e1ad +119, 0x74cdd40681044ae3 +120, 0x91c272dbc916e009 +121, 0xcacdfc23f36ea883 +122, 0x29673a6df489da20 +123, 0x344a2f48e5c0e24e +124, 0x75ba65c0281c9663 +125, 0x7134e2ea3cf45be6 +126, 0x548f91e387f8f489 +127, 0xa46c1178c929c980 +128, 0x66f7a76d40cc05f6 +129, 0x515cc99e0eddc629 +130, 0xc983a3714f64996 +131, 0xf3d7ead828f770b9 +132, 0x997255deb18698d2 +133, 0x22df614417e62aaf +134, 0x2b089486e300b5e9 +135, 0xdcf2e4249305c3c0 +136, 0x7655db4c1d9add65 +137, 0xcc34998d4d6179f3 +138, 0xf8ad207f21b14c59 +139, 0x1a55ed92219ccdb6 +140, 0x4cffe6378e7bf41f +141, 0xb615ece52a78c2ff +142, 0x7e2dd432781299bb +143, 0x54997ab2f5fe4c9d +144, 0x3ed48cc17dc8018d +145, 0x3dd164170b17c04 +146, 0x85cc169c3f7bd4ab +147, 0x95c6de979d18ec41 +148, 0xe38ca27f66f639e2 +149, 0x67957a3ec8e53707 +150, 0x15085753ed562e2a +151, 0xc4ca3c2dd20fec82 +152, 0x674cb8effbe764c +153, 0x8e64d063a29fc9a1 +154, 0x4b473bf545cb1329 +155, 0x766fb09b92828bf +156, 0xf231f16d73539e79 +157, 0xf8ad42d23d413847 +158, 0x21125f277ad70e16 +159, 0xe050d6345d6a1848 +160, 0xdf1ac1498981c710 +161, 0x7f108c569dfa283f +162, 0xa72fd9cab91d5583 +163, 0x1d5a96cf4a64250b +164, 0xaba04a765054648 +165, 0x5a19910a19750c46 +166, 0x96d0885481a0c0ef +167, 0x3f3e8ce8ca3a0ccb +168, 0x45b6b53bc4b40bfe +169, 0x497464fa2ed4d1ef +170, 0x78fd181712dc8cc2 +171, 0xc8ee90b81772aa6 +172, 0x5c9d29ef4457140 +173, 0xc248fced9f732f9a +174, 0x623c99acc64dd8a9 +175, 0x6404ec42cd287dad +176, 0xbbeb5f7d8e692f27 +177, 0x8db6e3b1ce3ad658 +178, 0xd49c2c43ca8352fa +179, 0xcb4b2b4c3a5cc727 +180, 0xa37f115b13841fc1 +181, 0x804d96410630f940 +182, 0xc899504c624b49db +183, 0xd365d2f72806910e +184, 0x8c40586ec44b0f02 +185, 0x9d409a0ddcc01d99 +186, 0x9bfc7d51973c540e +187, 0x98437ff722fc5a0a +188, 0xd57c41f3eac6ada3 +189, 0xdc92baa6d557fcc3 +190, 0x3259e33ca485ec1f +191, 0xa5724bb28c23e660 +192, 0x8b785d1ae949fadc +193, 0x98fbe4dc927d727c +194, 0xb95a45d7883be113 +195, 0x23f38354600b8cce +196, 0x82f463f106ddcce9 +197, 0x99f09a8f563c6326 +198, 0x9ab0a1db632c302a +199, 0x37275bcafdc7693a +200, 0xefddf073141fc2b5 +201, 0xd5e08eb31480d573 +202, 0x5d6df0768908ad11 +203, 0xdaeb0cc7cb49f1e8 +204, 0x272db5c8dd6971a7 +205, 0xf5fa5d264b803e7a +206, 0xcd798f697e31880e +207, 0xc22bc2819fd93736 +208, 0xc0b1f19487562f4d +209, 0xa92bbd46287f5b0e +210, 0x47ee31224240a8c8 +211, 0x477cb579f51b007c +212, 0x191fd75bac91fe03 +213, 0xa7d22bbdff96c405 +214, 0xc570c84b97c242e7 +215, 0x2ec7ef1568443506 +216, 0x54c93b1a840eec20 +217, 0x8976c4d79ec1ce4c +218, 0xd836671bb5aaf569 +219, 0xd6283b181aa73894 +220, 0x92adbd47c5970ef6 +221, 0x8b2f672400c89290 +222, 0xf70e9192b75b9fe1 +223, 0xf1dab834df84d315 +224, 0xbbc01cc6dcebbe41 +225, 0x58a8461f42a22a6a +226, 0x674349066472b7f5 +227, 0x6e61cb8f5fad5388 +228, 0x35cb5f45b20d4ecf +229, 0xf2a4f3b60c7797ce +230, 0x772d8bce08cadc26 +231, 0xfe275804c8092137 +232, 0x7147f2ac76a9729 +233, 0xe74fefb430f340da +234, 0x4bab13dce8a2e55f +235, 0x50f00af679a901ca +236, 0x73ce9055f9b6f024 +237, 0x72961d8be330bf38 +238, 0x5a4d1df6ff439990 +239, 0x992c91aa9d5a02e2 +240, 0xc623543c1403e453 +241, 0x76bd1063b72b1780 +242, 0xf59e413391f6781a +243, 0xa6f6a6ba35b18cb3 +244, 0x7e47f0f7a37ad3c +245, 0xc082d77ffea76b18 +246, 0xdde877e057a6a4f7 +247, 0x5604ddeec7f7f757 +248, 0x74b7c5649f9adc9b +249, 0x2b9363feb0fdc192 +250, 0x8fd716f08b1c3857 +251, 0x50d23275f5b15195 +252, 0x897be8ed331de2e5 +253, 0x922623e10341fa90 +254, 0x3e284cab1fbd8d41 +255, 0x36b369a7bfb99da3 +256, 0x15fa823394534953 +257, 0xda9e8362eb9b314a +258, 0x357ba0a827c13495 +259, 0x838947946719f1a1 +260, 0x2ff05c35817c8a49 +261, 0x4965f094edb1b92 +262, 0x28dfb0568fdd8235 +263, 0x8c23341bec92887e +264, 0xbd65314260a8d600 +265, 0xfd2a594c6a4a647e +266, 0xd4f8fe060af56cc1 +267, 0xb84f760384a876c5 +268, 0xc2ff87c3bd5e6615 +269, 0xa8a5cc1b47fad0e9 +270, 0xe966787f29189e27 +271, 0x59293725e0079b36 +272, 0x554f7b8dcc0a1afd +273, 0x756a687775987ebf +274, 0xa24d8f7cd978d666 +275, 0x10729de0540a2a7 +276, 0x775578ef12f9c915 +277, 0xe52e96480f1e0d5d +278, 0x6577eb294043e6c9 +279, 0x54a5a3e48391bc5e +280, 0x678b8a2f58019653 +281, 0xdc6d8ed74f829bdb +282, 0xc03aa669f6766ee6 +283, 0x8e6f4e01cf637073 +284, 0x2bb6f1039cd34cca +285, 0x4afa797125be8a7b +286, 0x76368a4cdf5d85fb +287, 0xaa7eb5828ed3c571 +288, 0xc67aa13e8da7ccb6 +289, 0x48e12e946e5f2a2f +290, 0x3fcd37553756e03b +291, 0x73239e3c08f5c641 +292, 0x8168cb49566edb5b +293, 0xcf91afd222b79336 +294, 0xcef684fd62b3706d +295, 0x8991c08791f9459c +296, 0x1dd570dc24e655c0 +297, 0x7f06bc00b6892671 +298, 0xed9e8c50534f8232 +299, 0x26f7bfa4642f7262 +300, 0xe1b60e6ceb4daa4b +301, 0x741d3ebd55bb7dd2 +302, 0x1dd98841d5882b58 +303, 0xcaa4b7f99f86160a +304, 0x7681d39085f382b +305, 0x1db423440a014567 +306, 0x95ce6d0ee1f0bc60 +307, 0x2c686ad4523ec781 +308, 0xb69ceb15ae9303cc +309, 0x75d21af0af4c0cf8 +310, 0xc8cab896bd8728a3 +311, 0xae23dbbf6319c34 +312, 0x3a289ffdb12085c9 +313, 0xed1154d5ef71ed44 +314, 0x71f41facd5688f6b +315, 0x37b25da23b63fef1 +316, 0xee3c30819bdeaabd +317, 0xa50ef650d6d26627 +318, 0x4ec47b22f477715a +319, 0x2b33022cb95e7b05 +320, 0x36ea9f72ecd3aac9 +321, 0x33390cb3e92f988d +322, 0xdbc98ec02d53ca5c +323, 0xa96dc7fc4e215d62 +324, 0x9aa5d7e7581a2a14 +325, 0xe21f789d195d46b7 +326, 0x747c4ab40628e113 +327, 0x5aab32f24bd6b63 +328, 0x1215dba715cbd158 +329, 0xe021b7b6f3bc65f2 +330, 0x42921d460d62b991 +331, 0x6b49b2af7606e4a7 +332, 0x8a0ec0d79f4bde98 +333, 0x938a3795c39804dd +334, 0x433cff6f8de202a7 +335, 0xcc312db4bc297c76 +336, 0x317b7203fed34777 +337, 0x808933288176f9ac +338, 0xd6fbb6c84d99fbe0 +339, 0xa53c5321f146d383 +340, 0xe63bec55144f1943 +341, 0x93fed1a10adf7b04 +342, 0x6be8e0055db021da +343, 0xf0c799753d72c03f +344, 0x48279abb98b6653f +345, 0x6eecdbe4cbe075f0 +346, 0x97db951671903af7 +347, 0xa1f6d4e8b4b635b1 +348, 0xf73c5a00279cb04a +349, 0x2fb27165b38ec196 +350, 0x44161ba5c74c98f +351, 0x638855e7c04266bd +352, 0x461c5c19db6700c7 +353, 0x4896d9b5bcdf1872 +354, 0x21c090f15289143b +355, 0x157c6b2973002c2c +356, 0xb60615b5b3eec46b +357, 0x4dc53fc6bd18b21a +358, 0x8a63352d370acbe0 +359, 0x9fcbeccca7aec93b +360, 0xd9a3c4583fcae637 +361, 0xb0c26698b10865ac +362, 0x7a26faea969bd067 +363, 0x4b85cbfc7818e136 +364, 0x49771d8ea51a79a5 +365, 0x682d1d304cab4340 +366, 0x282f2e1d04a6f4ba +367, 0xd0f400c0c3e9757a +368, 0xbe35e13d1b59adf1 +369, 0x5bca31580df3f417 +370, 0xed24c15c2637956d +371, 0xe4842a23dfe4d926 +372, 0x4c089ac5f7f612c4 +373, 0xf4fe7b349c6496ee +374, 0xacc96cae36998768 +375, 0x110b6befe7b79a1c +376, 0x5b060f76c56b40ff +377, 0x89f06804878dd8dc +378, 0xb20da6a9d9b99c3d +379, 0x4caba029144ed14f +380, 0x2349b1bc90813b06 +381, 0xb6eec540199e4025 +382, 0xee0258131168828a +383, 0xde930415131dc966 +384, 0xc02c1998f29a91cd +385, 0xbd5abe855fa785c +386, 0xca6f474b8f5a5398 +387, 0x36b7101ed1746b7c +388, 0x20327361f7613999 +389, 0x9d960c3f5e98f59 +390, 0x8ee140b743596645 +391, 0x2b90a99c2da370c6 +392, 0x18ea6c867a3567e2 +393, 0xdde70143380aa356 +394, 0x7e9cffe17d831cff +395, 0x7aca84ca758674ce +396, 0xdd6a88335b4ec43d +397, 0xdc0934e10da915d1 +398, 0x9bff65f1f5c5b42d +399, 0x36b79cf67d9408f9 +400, 0xe375eed768fb261f +401, 0xff8aa4fdf19dcd76 +402, 0xf6940d539fd3b6c7 +403, 0x26c21e5847b0c5c8 +404, 0xf574e3be4a1e3db9 +405, 0x5de664d4db92283c +406, 0x1741f435e78a54ed +407, 0x4263c94b324ccb81 +408, 0xf798a17af0874de +409, 0xd031351ff39da9d6 +410, 0xe364513160fa48cc +411, 0xcfe766dfabf0031b +412, 0xa57142933348f5d4 +413, 0xe6d46a3c94b76222 +414, 0x8e5aa444b3ced7d2 +415, 0xab4054bf77b3178a +416, 0x541d5b04bf944021 +417, 0xbed9208d26d60e49 +418, 0x13a3168e11ece7c3 +419, 0xa534c4754676f052 +420, 0x5be8a0ca7540ecc2 +421, 0x25b8dc04f469bd6f +422, 0x5b35c16d9aa53a2c +423, 0xaae73ed1aec3fed +424, 0xf457fd14f74c2db9 +425, 0x3d0f9f9c7b3d2f33 +426, 0x3482a1fd944f3036 +427, 0x71f3c1879355b055 +428, 0x1aae2f53d57c2c43 +429, 0x6adbd1bcb65eddde +430, 0x20ad173376dcaabd +431, 0x22b6e775005bcd95 +432, 0x47036caef9610356 +433, 0x92e92d0722278b92 +434, 0xd0452bdd1a17778a +435, 0xa0f7f1cbc3453f8b +436, 0x39b8875a9952b327 +437, 0x853e648cc4de9dc8 +438, 0x59034f83952dc17a +439, 0xf2e3bc615c961cc8 +440, 0xe49d69e292dfb948 +441, 0xf80f2513013fd696 +442, 0x722ff3e462dcdf44 +443, 0xa95ab56d8480cff5 +444, 0x5459bfe29b3e6028 +445, 0x39b6d9fd39ba88a3 +446, 0xb0142fcd1d5c9127 +447, 0xdc11112d10ee2b08 +448, 0x89afc90805181208 +449, 0x92d9cc4322861b80 +450, 0x5729c4cfdbe28208 +451, 0xcadd752240d96d39 +452, 0x3158d09d6e103ce6 +453, 0xf6f4334417064f15 +454, 0xd5275233992e51c4 +455, 0x113e4e017a6aa657 +456, 0xd8d59fee719822d2 +457, 0xf03c45ffea80d927 +458, 0x3e19509a3d4e0d1 +459, 0x89a81fb5558dd3e4 +460, 0x2ae1fefeacadedd +461, 0xf6a7600bd9e2afb2 +462, 0xd7435dc261355297 +463, 0xa02828c6ca278549 +464, 0x5bec4d1cde0c5e53 +465, 0x27783f48d444f862 +466, 0x78e25d3c2b5ba381 +467, 0xa7633414eddc8200 +468, 0xe41691089db728a8 +469, 0xf049158f46fbe250 +470, 0x4b735eca6775248a +471, 0xacd5deda31075a54 +472, 0x5e83b287aa359ba4 +473, 0x4d4a4bc668008510 +474, 0x6d991ad6712f1ec +475, 0x4bcf19eda8e4dfcb +476, 0xe892a6682d301585 +477, 0x81d830f86c26d31b +478, 0x67b6519f0438cd5c +479, 0xad676df908dc649d +480, 0xe56b4e52aeff37e0 +481, 0xe0bd498da375fed5 +482, 0x70076369b3c1f979 +483, 0xf6f18ea51ff15e9c +484, 0xa4ea5b05b4d90463 +485, 0xc17d281069c7fb67 +486, 0x5cb522bd5c3df9de +487, 0xd29ca37dabdd1059 +488, 0xf8aec82d6ac95bc1 +489, 0x6725b3a0fb67446a +490, 0xce61707f34d0d746 +491, 0xc01a2fd02ac1545f +492, 0xf3dcc096e918bfbe +493, 0x327d5831967e5f18 +494, 0x77b095fd7ed8c282 +495, 0x321f187afb8a7e01 +496, 0xac7a1a3e373f6968 +497, 0xbfcc713a78d82eab +498, 0x4e1dcc260074bf98 +499, 0xea6d58aa4a9bf545 +500, 0x7643a8fbce016131 +501, 0x1e3dfd9662c59e98 +502, 0xa19b873a87ebbbc5 +503, 0xa347b0ab9f28c72b +504, 0xf7af27630ca832f3 +505, 0x2c36a4879c303961 +506, 0xd9eb3de1f40a2bc3 +507, 0x89bcaa90471191b7 +508, 0x1206f2ac9e317b75 +509, 0xc1a79f767a765f91 +510, 0x18687d721b669392 +511, 0x4d29806316c8da2 +512, 0x586d834955bba2ff +513, 0x252aeaaa130a579 +514, 0x894e1091ad4782dd +515, 0xf2535830a3586143 +516, 0x5ea22af8d2244570 +517, 0xf38187d53217ee7b +518, 0x435d9aab0c20190c +519, 0xbea7f2e513bd3814 +520, 0x7bfb0622e50d1b6d +521, 0xaa5c7e190d4434e6 +522, 0x8a879f2ff6310892 +523, 0xaed4374ab31fad7f +524, 0xf0f6f5f706fe00ad +525, 0x2c1f194d977c78c9 +526, 0xf8fda1099f5b0595 +527, 0x559d33f97623a69e +528, 0x85fd7fb677f95892 +529, 0xe00ac6633ec2780e +530, 0xcaf3d0b50e34b6ec +531, 0x7419ae3191177f50 +532, 0xf03e358602747944 +533, 0xe9cc85b7eb1751ae +534, 0xd6989d5554b56ea +535, 0xe0a55d1f14e5a53d +536, 0xbfe665fe9eaba410 +537, 0x27b42a15217976fd +538, 0xd05320975c7eddb3 +539, 0x6f21f9fea2b42c62 +540, 0x3ba9bebdd84ebc30 +541, 0x1561aec8e791a2e3 +542, 0x8afa0d48ccba2b3b +543, 0xae4cb6ad8b38c0ce +544, 0x976b2b87d7b37c49 +545, 0xd11dcbf69332ed1f +546, 0xaba0aa70085782a7 +547, 0x352d6142fa929f1f +548, 0x3eea155af05c95cc +549, 0x8fd7a239d90f25c0 +550, 0xfb4cdf8a027338cc +551, 0x40eeb09bfff5598c +552, 0xc1915e1c3744ffd6 +553, 0x7aa927d969c3918e +554, 0x892f9a3b5c221285 +555, 0x2464ee92a6242a88 +556, 0x79e970c611a71549 +557, 0xce154d61f08da491 +558, 0x209ccf58b9f282d5 +559, 0x2020511fd4a75bf2 +560, 0xd1068bfc58fb7023 +561, 0x1e47db929b9e2d0e +562, 0x76835e2e82a417e4 +563, 0xb89800ddeaa1a1c9 +564, 0x8c46d297bc59a443 +565, 0xb01969556ffcc717 +566, 0xde557fe2bfbb7bf8 +567, 0x6fd83f6fe460643 +568, 0xdcf640a239e5c540 +569, 0x81c85991ac75a8c4 +570, 0x331fb59ba928e87e +571, 0xba1bbc721877c784 +572, 0xf461c2117d889cbc +573, 0xd86a569f082258b1 +574, 0xfdcfe338c560c7a1 +575, 0xf24ae47d508e6fa9 +576, 0x8f4fa048a33ce214 +577, 0xec7482f373227014 +578, 0x9e36a438704c7915 +579, 0xad5e762945cb114d +580, 0x1cc1815ab34945fd +581, 0xaa3ff34c6fd5402f +582, 0x7223799dab89582a +583, 0xbb7b4d1a01ca5001 +584, 0x4367d448380024ef +585, 0x93aea9d3931d7f00 +586, 0x9325fb50e4e2dfbb +587, 0x7d689b3881e579b6 +588, 0xe6e6b221d0da8be1 +589, 0xb6cd94563755a3a6 +590, 0xf1297352781cc70b +591, 0x9559e5790cabb45c +592, 0x669ea3b11a417eb3 +593, 0xbb2aa518b95c8752 +594, 0xe06768f6839aea8e +595, 0x6ae90e2a0cdb4e38 +596, 0x11cddd8528841aaa +597, 0x3814dd2d88ef7c67 +598, 0xa3e84157c63b110c +599, 0x14394dec10d66a73 +600, 0x5cee9f78366a4e6f +601, 0xe22eb4969c1e83fb +602, 0xbaf5cc528becadaa +603, 0xe2d11a05cea6c9f5 +604, 0xe4f65fbedb294f02 +605, 0x400713c45cce244f +606, 0x8bdd311aa3728f56 +607, 0xb1c30bf8722ce4f4 +608, 0x77cd8fef6229105b +609, 0xd6bfcd09ecf5db45 +610, 0x7c7bdc557655b76b +611, 0xe432e8e047e885f3 +612, 0x61217a048c3d4957 +613, 0x70e66e4821097b7d +614, 0xa027285bcc08c490 +615, 0x683bfc9befda2f91 +616, 0x7dda4356565b0937 +617, 0x9d9a6de3b3620771 +618, 0xf735be85869d26a3 +619, 0xaa0b53da5ab49e15 +620, 0x362a91da3e60259a +621, 0x8b8cb9b8d6b30d7c +622, 0xdccf4975d58cde62 +623, 0x82b0c5e7a523a090 +624, 0x1841a0f944eab36e +625, 0xd4e09caec98ab07a +626, 0x482061504cb98d7f +627, 0xc5cdc53a3238b45d +628, 0xa02063e9fe8e85c9 +629, 0xb8173070e2848e2c +630, 0x7151ca8cb867274 +631, 0xc9dbd13ca6fe2d9a +632, 0x360d9d0be56d310e +633, 0xc1f0034ed1a6dcf8 +634, 0x73bb28692a734f4b +635, 0x945e9ccc8922b8e4 +636, 0xd97e6e29c8e15afe +637, 0xf4a8cd6cf8882069 +638, 0xdd3700107c97c466 +639, 0xe2d976c80032ca64 +640, 0x4c839567e6e88e21 +641, 0x820a65c9d8327da4 +642, 0xc6a53bb5323c7d89 +643, 0x53fa40d8cc655177 +644, 0x2efd177dcde3526f +645, 0xd42df57a0a0d748b +646, 0x22a78fd7f7fc0bb5 +647, 0x976f2565fbb9d37f +648, 0x23362602910fba4c +649, 0x7840e7628260e740 +650, 0x273c48138b4032ce +651, 0x5472c84fb284c07 +652, 0x1b08faa7bc08cdca +653, 0x6c10a2459df7c3 +654, 0x66a3b87d9861ef +655, 0x8e976e140911236e +656, 0xcd3ca89b94e71c7a +657, 0xeff3b29e9488c9aa +658, 0xb7ea5538dbafb2d0 +659, 0xb9740ad72c8d1685 +660, 0xb9652782d97d1559 +661, 0x3b34133af8a2ca27 +662, 0xe3e064cb8f3da8fe +663, 0x4750a57ad4fdc960 +664, 0x5e944df54f5bfea7 +665, 0x2fb2aaae6d1b791d +666, 0x80038dedd9773c5e +667, 0x22fdc39ec56b087a +668, 0xeadfcf944a4ad057 +669, 0xbf4cc9b19c0f591c +670, 0xce6e20f5518b5851 +671, 0xbf496c971fe270cd +672, 0xe78378a77a750e20 +673, 0x58d717a9531a712c +674, 0x62db0acc117a29d +675, 0xfb8e10fad183535 +676, 0xfaa359c96680a61 +677, 0xbb3aba98a1160ad0 +678, 0x2e55bfd5bd4a92fb +679, 0x5782977c7b4d1496 +680, 0x70089abe5645bb09 +681, 0x7e31bf70cc19aa97 +682, 0xa750d683efcd6318 +683, 0xd7ef2e09ce70da7e +684, 0x57957cd30ae866c2 +685, 0x92f4d3b089ab18ca +686, 0x98f727a2b68079ae +687, 0x94d1ada03ab002b4 +688, 0x67c6f1921e8311ee +689, 0xa073bcfd71fc6853 +690, 0xe63f81079847d71e +691, 0xe4901f17e32b0ec4 +692, 0xa87fda171f5a4638 +693, 0xbcc36103ff4d3a4e +694, 0x263515204809538c +695, 0x5d03dc094b2c3043 +696, 0x8ba5a2bfbb086af +697, 0x455f023c81d5a21f +698, 0xaaa87bee572da7d7 +699, 0xa2e57fc861964999 +700, 0xf4d1eb281c6df56b +701, 0x71dfce4db6c40b2f +702, 0x10f417364ee94260 +703, 0xdfd232078b2eb024 +704, 0x5dd342918f53922c +705, 0xbff8a5f3c242c9f7 +706, 0x706e57d3cb595b80 +707, 0xe30c4672b7ff32e7 +708, 0x3b0f3024f8e9440c +709, 0x699dde75c6986026 +710, 0x60c3583c5819acf3 +711, 0x83515c998241cd3d +712, 0x9fc4a260a70abe71 +713, 0xbafdf47e59af9926 +714, 0x3f1e55384d2f5661 +715, 0xbbba2cb5cfd3972 +716, 0xd19705283a911da3 +717, 0x1f5cea4c76ecd620 +718, 0x49752130f0c17001 +719, 0xe0b35042434a2c7d +720, 0xe145fe1ff083aad2 +721, 0x7dea8b6772ced17d +722, 0xdd221a9642ac7b96 +723, 0xe072ee85443a7aa8 +724, 0x28dd2c19200f65ae +725, 0x1f1bc1246fd64eef +726, 0x1dac16f71114bdfb +727, 0x3db66684f56730f9 +728, 0xb0e7dec3e7f9058a +729, 0x9d190f2bffc00336 +730, 0xbb5477db759f0454 +731, 0xafadbb8f665808cf +732, 0xcce8282b881d7e20 +733, 0xd4a5eb738a2601d7 +734, 0xbf65b7a71169f766 +735, 0x18eb57818e3dfc0f +736, 0xf32316fc10f06ba9 +737, 0x12096e0a6a6ba9e1 +738, 0xab941b15d1902545 +739, 0x5f660ad58dbce453 +740, 0x695ec92e0e414dc6 +741, 0x187b4016a715375d +742, 0x210cbe15ea7289c +743, 0xc036f0359565ca5b +744, 0xec6319d96d63350a +745, 0x4a5fcdb89fb35ff +746, 0xf26ebb6f1e7bce20 +747, 0xba951012dfc6b9c +748, 0xa649d75079ea5dbd +749, 0x29a232a2e44aabc8 +750, 0xf8736196c55769b6 +751, 0x285c5deab8ee68cd +752, 0x5f5b694448626ff1 +753, 0xf75931caed62ce4e +754, 0x3a5271add1a5102a +755, 0x513d4b716721448d +756, 0xc2ee9ba1a3602e25 +757, 0x180eac7994bf1689 +758, 0x5f32cee8511e5a6b +759, 0xf3c678f1786a981 +760, 0x25e7d0c724f8c36c +761, 0xaaa715886126e184 +762, 0x91d9da4e0857d80 +763, 0xd0ceb4faaa18fc9a +764, 0x7c1d899329b57804 +765, 0x2d897aab505c0c86 +766, 0x117a6519ea6596fc +767, 0x7d95d8b8c107414a +768, 0xd273b8a41e1b8bf3 +769, 0x5c297721caf8608 +770, 0xa682602ea16da11b +771, 0x395fe0626a7c92a8 +772, 0x49a1ceae2e1e94b7 +773, 0xbe509514fed1dbd4 +774, 0x46ec9155e6a087b0 +775, 0xd04072ce07955961 +776, 0xffcec1091696bcbe +777, 0x78b4088aa8c99f4e +778, 0x469229815dcb4836 +779, 0x8e5308fab8e70edb +780, 0xecdebbebaaeb69bd +781, 0x64920c0c023c582e +782, 0x426248214f7567f +783, 0x60fdeb3995b3c195 +784, 0xcf3c206fc0598891 +785, 0xc406a7c67d46b722 +786, 0x41066e2a17988e6e +787, 0x441c829d650250a4 +788, 0x4a061315bd40bb65 +789, 0x94d7933c41c3d5b2 +790, 0x85278dbe04175c1d +791, 0x843c8a268a80cd2 +792, 0x4875b6e71dc14903 +793, 0x983c909cf721cc9 +794, 0x9828a8fc2963eb99 +795, 0xdd78dffee9dc3bcf +796, 0xfa1378001d7c37e9 +797, 0x94dcd0acfa967b5c +798, 0xbd9d0ebc47b233c7 +799, 0x2fc94cc81dc7009a +800, 0xdf2466d0cc0ff674 +801, 0x7005a130b30189ef +802, 0xf59bd053ebfd291a +803, 0x952ffd652b64d3c0 +804, 0x2a09804092ece2cf +805, 0xa12695fca8a844d4 +806, 0x79e6fb39f324ad9f +807, 0x3187990fca6dcecf +808, 0x63603a7c1b7babc9 +809, 0x52d16c336f7dc00d +810, 0x2bd4748de7c7e53e +811, 0x1c3904bf96964696 +812, 0xd5845c27eb8371ed +813, 0xdedc87e05e461e80 +814, 0x429668e4af3cbeab +815, 0x785ae639fd6d7f75 +816, 0xb687a2bb6230724e +817, 0x4d89fcd9931f2505 +818, 0x6216644e2ddc398 +819, 0xc5bd20f8c5fed089 +820, 0xed89742d6c06889b +821, 0x77bf28917fa5ed79 +822, 0x2ee9b10cc1e11daf +823, 0x1cf8c32d68419f30 +824, 0x71b9043406c8b209 +825, 0xf1070cf55a0b8c71 +826, 0x66e19bd156052c25 +827, 0x1638a90f2f024f1f +828, 0x2573b8380bba9172 +829, 0xfc3e3c0f7c297ef9 +830, 0x75d77e92b7d069ab +831, 0xdacfddc3abfbe447 +832, 0x5ee169ef500ed03a +833, 0xf6b501f9a953f0d8 +834, 0xb2b1723663e54d1f +835, 0x2d1c77f0d680c858 +836, 0x4ab627aa12fb9333 +837, 0xe9d0b4a2bb3108f5 +838, 0x91185593dfc40f71 +839, 0xa9ce7d139cd4f29f +840, 0xf10f54112ed05262 +841, 0x72f8096700fc3fb1 +842, 0x5eb9479cd7273908 +843, 0x6dc6710a689548d8 +844, 0xac8b4d3f294a3b11 +845, 0x6fdaa6ad942d824e +846, 0x5aa23802af5851ad +847, 0x7319bf4c257191d6 +848, 0x797bff3cb549d943 +849, 0x4ca7fbce2ab8d32f +850, 0x683f5fd41beed82d +851, 0xc2993a47878f5755 +852, 0x9bfb8251eed01238 +853, 0x810821c91dc69fa6 +854, 0x8db698923d2922f3 +855, 0x48c6d74e8b45e8a +856, 0xfd30b82e1e303e3e +857, 0x667165248737f208 +858, 0xaf7b7a440bc7d667 +859, 0xeb74ad1fd671f7e5 +860, 0x6bc74e3149f233d +861, 0x7ad1a43df03a6c30 +862, 0xc5e8db45c8399a7c +863, 0x593180f9dae1a1fe +864, 0x96d2e8ad3358f554 +865, 0xcae9bb6290e488 +866, 0x24bd13e3a306ae57 +867, 0x23d4fefb4b48f1e8 +868, 0x7d9e75fac828e098 +869, 0x21c1cc5fb729c6e4 +870, 0x678de149a76d77b8 +871, 0x96159d875ce29695 +872, 0xa5f187588b03210a +873, 0x345400df4d75a1da +874, 0xa9b335fe3aa324dd +875, 0x96f2a7bec6b97f6d +876, 0xef4b1bce7236884f +877, 0x7de686ac894b6e30 +878, 0xd71443e7b9be0374 +879, 0xb9432364c85dbefa +880, 0x2e21dcd74dd3b2d2 +881, 0xb002b2caf1147c05 +882, 0xf30975e9d3e0a527 +883, 0x5fd492c11c1214ab +884, 0x8431edca555408a +885, 0x8ded407996bba2af +886, 0x13ba693842f8904e +887, 0xdaec5d44c2297b29 +888, 0x1b0fc925b0d88129 +889, 0x49ffa2370e04aa5b +890, 0x5d01579262358902 +891, 0x9aa9a4fe50beae5 +892, 0x81a4b02395d78b8d +893, 0xa88450474fb2c0d4 +894, 0x2bf5228c53116ce +895, 0xc8054c6f48964829 +896, 0xa6efbad364343946 +897, 0xefc07cbf4e257225 +898, 0x8c0cbcc2bd704c6b +899, 0x54d14e07ec04ed98 +900, 0x1ff981667dc80d3d +901, 0x73d91d2aedf5c466 +902, 0x4f8d934817421036 +903, 0xe58b16d1ed758cdc +904, 0x8c8f9fd4b20f48a9 +905, 0x24b0656674d1e14 +906, 0xa431cc832d662cf0 +907, 0xab9f55abbf72879c +908, 0xda93265ffc77cb22 +909, 0x5e42ec10676468a6 +910, 0x4fc3137fcaeaee14 +911, 0x2c994d139760b7b1 +912, 0xd5456a10f059b484 +913, 0x610d86d81594e0b4 +914, 0x17b0a7c7a3469132 +915, 0x1af6ce6041f08126 +916, 0x94b5fc23a374d6e7 +917, 0xc7d2f6efbd6715b1 +918, 0x7529f259fd2782dc +919, 0xe5a186a4df90b287 +920, 0x77cb472d7c84becb +921, 0xa71400fa1130f6d7 +922, 0x6845bdf6266ad139 +923, 0x6fff8453f27d24b0 +924, 0xaecf2941e00229eb +925, 0x2576b843807a996c +926, 0x3ee4e5ce3e89c107 +927, 0xe9810e4b60e8b34c +928, 0x1ffbeba1760f65aa +929, 0x578d910137e3b967 +930, 0x799e615b4e90563c +931, 0xe5545b60bd264491 +932, 0xcba63913011269a4 +933, 0xe270196012ba4727 +934, 0xa03a35e47b574634 +935, 0x2878230470ad1cc6 +936, 0x9133c067588a3c92 +937, 0xfcf675a4abc333f6 +938, 0x401fd3b52f60bf7a +939, 0x470c16cd0c0c09a5 +940, 0xc1475c0652bc2f01 +941, 0x564f08149baf0cb9 +942, 0x9a169f37690dbc8f +943, 0x524bf9e2d3d586ec +944, 0xb20acf920b5c8ac +945, 0x9a73b987e94956c +946, 0x58c4866bb1cda2da +947, 0x1b8961624093e6ec +948, 0xdda1c828966f5fb +949, 0xc0a2643c83ec43aa +950, 0xd79123975edcad1 +951, 0x4950a32b6a23a4f1 +952, 0x91a463119150908e +953, 0x96fe4f5aa554efcd +954, 0x5b5abda36265b655 +955, 0xfb8c6868e4ce2ad9 +956, 0xdee8f962933fcdad +957, 0x39aa7265a23102ef +958, 0x71cf33f4d779f1d +959, 0x14df36a9a5dff61 +960, 0x899bd90e6824fa34 +961, 0xd31abab096ef0d39 +962, 0xf4cd4a3a884dfd8 +963, 0xda3eeb8114a38e2c +964, 0x8c2424756740e1c8 +965, 0x514c1361af6e53b6 +966, 0x73caa12b45331f48 +967, 0x30490380510b0959 +968, 0x6dd0acb4768adbbe +969, 0x60723fde02d69555 +970, 0x80e3f65eeba4c0d5 +971, 0x38163c2636fe29a6 +972, 0x20675ed5a35768b6 +973, 0x450286b9d9005979 +974, 0x845db236acf95587 +975, 0x4f15086c96c2a8cd +976, 0x5ffea202ff18d3db +977, 0xe0609f3ecdfe1636 +978, 0xe9b727db4e113dda +979, 0xd790a63fcf8b6a5a +980, 0xbfdee22fe652ae46 +981, 0xc1581028305677e7 +982, 0x38ad759a516ab015 +983, 0x4772891e08f87569 +984, 0x3b3a190a4061b35a +985, 0xbf441b54d45fcb7d +986, 0xef56680201d35cf4 +987, 0x6f1bc414dfb0aa74 +988, 0xb1123a60bd5a9059 +989, 0xc2b3d9524249deff +990, 0x410b771bd3d28850 +991, 0xef2809169d14bd40 +992, 0x31b0432f422c5b8a +993, 0x1efd51750eb60930 +994, 0x9d480029c3f64986 +995, 0x818a2af4080d400c +996, 0x2f1d9656ed2bdbd1 +997, 0x2fcad56815c3c951 +998, 0x780ddf07f2ad49fc +999, 0xe010a053802406f2 diff --git a/test/test_bitgenerators.ml b/test/test_bitgenerators.ml index b10f831..92a5a08 100644 --- a/test/test_bitgenerators.ml +++ b/test/test_bitgenerators.ml @@ -9,7 +9,7 @@ let () = Test_philox.tests @ Test_xoshiro.tests @ Test_chacha.tests @ - Test_lxm.tests - + Test_lxm.tests @ + Test_efiix.tests in run_test_tt_main suite diff --git a/test/test_efiix.ml b/test/test_efiix.ml new file mode 100644 index 0000000..1a995fe --- /dev/null +++ b/test/test_efiix.ml @@ -0,0 +1,16 @@ +open OUnit2 +open Bitgen + + +let test_efiix64_datasets _ = + Testconf.bitgen_groundtruth (module EFIIX64x48) (Sys.getcwd () ^ "/../../../test/data/efiix64-testset-1.csv"); + Testconf.bitgen_groundtruth (module EFIIX64x48) (Sys.getcwd () ^ "/../../../test/data/efiix64-testset-2.csv") + + +let test_bounded_u64 _ = Testconf.test_bounded_u64 (module EFIIX64x48) + + +let tests = [ + "test EFIIX64x68 PRNG against groundtruth data" >:: test_efiix64_datasets; + "test bounded random generation of EFIIX64x68" >:: test_bounded_u64; +] From 8f08d30820bd4e8053c55c90d7a7ba4c78873731 Mon Sep 17 00:00:00 2001 From: Pass Automated Testing Suite Date: Mon, 6 May 2024 14:01:53 +0200 Subject: [PATCH 2/2] Update README list of supported PRNGs --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7db8298..91b5cdf 100644 --- a/README.md +++ b/README.md @@ -80,7 +80,7 @@ Philox4x64.initialize seedseq |> Seq.iterate Philox4x64.jump |> Seq.take 5 |> Li ``` The resulting list of bitgenerators produce non-overlapping streams of random numbers. -Supported bitgenerators include: `PCG64`, `Philox4x64`, `Xoshiro256`, `ChaCha` and `SFC64`. More coming soon! +Supported bitgenerators include: `PCG64`, `Philox4x64`, `Xoshiro256`, `ChaCha`, `SFC64`, `LXM` and `EFIIX64x48`. More coming soon! ## Empirical Randomness Testing Running the test suite provided by [TestU01][6] on the supported generators is supported.