You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
dateKeys-dart/test/vectors/wordlist_vectors.json

972 lines
135 KiB

wordlist.dart: the random words of a key of words, as wordkey.Generate A port of List, CheckList, Generate and Bits of package wordkey of datekeys-go at 27a75ee (generate.go, spec 38.1), with the same checks in the same order and the same texts, each error a WordKeyException: - readWordList takes the file of a list that the app downloads or bundles only with the SHA-256 that wordListSha256 pins, "wordkey: the list "es" has the SHA-256 ..., not ...", and then reads it as List reads its text; - checkWordList refuses fewer than 2048 words, a word that is not one word of 3 letters or more once normalized, a rune that checkWords refuses, a character outside the alphabet of the language, which only the code gives (es: a to z, the five vowels with an acute accent, u with diaeresis and n with tilde, lower case, NFC), and two words that are one once normalized; - generateWords draws each index with randomIndex, as crypto/rand.Int, and draws again an index already drawn, so that the same bytes draw the same words as Go; what the RandomSource throws goes through; - wordBits sums Go's math.Log2, ported with its Frexp and its Log, so that the double is Go's, on the VM and on the web. wordkey.dart shares its check of each rune, checkWordRune, with the same behaviour. lib/datekeys.dart does not export the new file yet. test/vectors/wordlist_vectors.json, from tool/wordlist_go_vectors.go in an export of datekeys-go at 27a75ee, holds what Go gives: List on 19 texts, CheckList on 83 lists and on every code point of planes 0, 1 and 14, Generate in 51 cases, on the Spanish list and on lists of 12 to 2^20 + 1 words, from seeded, counter and finite streams, and Bits bit for bit. wordlist_test.dart runs them, also compiled to JavaScript, with the cases of TestCheckList, TestGenerate and TestBits of Go; wordlist_vm_test.dart checks the Dart copy of the vectors and every code point. The seed of TestGenerate of Go draws two indices only, 1793 and 2081, so that Generate runs out of bytes and the test compares two errors; the vectors record it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2 days ago
{
Dice: diceNumber, diceWord, diceWords and diceList, as wordkey's dice.go The port of dice.go of datekeys-go at 92e7154, for whoever does not trust the random numbers of a computer: five dice for each word give a number from 11111 to 66666, the position of the word in a list of 7776, the first die the most significant. diceNumber gives the dice of a position, diceWord the word of five dice, diceWords the words of several numbers separated by white space, at least 6 and never the same word twice, and diceList the list numbered for dice, as the EFF publishes its own: for en, its UTF-8 bytes are the file of the EFF. The same checks in the same order and Go's texts, in a WordKeyException. The numbers are split as Go's strings.Fields splits a string, at unicode.IsSpace (goIsSpace), the white space at which normalizeWords splits, and nothing else changes. lib/datekeys.dart exports them; diceWordUtf8 and diceWordsUtf8, on the bytes of a Go string, are internal, for the tests. testdata and wordlists at datekeys-go 92e7154: only wordlists/README.md changes, with the SHA-256 of each list numbered for dice, and the commit of both SOURCE.json. tool/wordlist_go_vectors.go writes the dice too, run at 92e7154: DiceNumber, DiceWord and DiceWords on the lists of Go and on lists of indices, DiceList of each list, and DiceWords with every code point of planes 0, 1 and 14 between two numbers. The rest of the vectors is the same but for their source and description. The tests port TestDiceNumber, TestDiceWord, TestDiceWords and TestDiceList, and run the vectors on the VM and on Node.js. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 day ago
"description": "The word lists of package wordkey of the Go reference (generate.go and dice.go, spec \u00a738.1) for lib/src/wordlist.dart; see tool/wordlist_go_vectors.go. Binary values and words are lower-case hex. The base list is word i = pal and three letters, a + i/676, a + i/26%26 and a + i%26; a case of size n takes its first n words, replaces the word at each at of set, and adds those of append. lists: the SHA-256, bytes and words of each built-in list. parse: the body of List on the text prefix, the base list joined by sep, and suffix (sha256 is that of the text): the words read, and ok or the error. check_list: CheckList, ok or the error (sha256 is that of the words joined by LF). alphabet: CheckList of the base list of 2048 whose first word is pala, a code point and zz, for each code point of the planes but the surrogates: the SHA-256 of the lines U+XXXX result, the code points of the words it accepts, and alphabet_results, each result up to U+017F. generate: Generate on the list of the Spanish words (list es) or on a list of size words whose indices they are, reading a stream: seeded, the keystream of SeededRandomSource of the seed; counter, SHA-256 of the label and a 32-bit big-endian counter from 0, block after block; bytes, hex repeated repeat times, which end. The indices drawn, the bytes read and the next four of an endless stream, or the error. bits: Bits, its shortest decimal and the hex of its float64. bits_digests: the SHA-256 of the 8 big-endian bytes of each Bits of the sizes and counts, inclusive, sizes outer. dice_list_size: DiceListSize. dice_space: DiceWords of the text 11111, a code point and 11112 11113 11114 11115 11116 11121 on the list of the 7776 indices, for each code point of the planes but the surrogates: the SHA-256 of the lines U+XXXX result, and split, the code points at which the numbers are split. dice_number: DiceNumber of i, the dice or the error. dice_word and dice_words: DiceWord and DiceWords of the bytes dice, in hex, on the English or the Spanish list (list en or es) or on a list of size words, each its index in decimal, modulo mod if there is one, followed by suffix: the word or the words, as text, or the error. dice_list: DiceList of the list, the SHA-256 and the bytes of its text, or the error.",
wordlist.dart: the random words of a key of words, as wordkey.Generate A port of List, CheckList, Generate and Bits of package wordkey of datekeys-go at 27a75ee (generate.go, spec 38.1), with the same checks in the same order and the same texts, each error a WordKeyException: - readWordList takes the file of a list that the app downloads or bundles only with the SHA-256 that wordListSha256 pins, "wordkey: the list "es" has the SHA-256 ..., not ...", and then reads it as List reads its text; - checkWordList refuses fewer than 2048 words, a word that is not one word of 3 letters or more once normalized, a rune that checkWords refuses, a character outside the alphabet of the language, which only the code gives (es: a to z, the five vowels with an acute accent, u with diaeresis and n with tilde, lower case, NFC), and two words that are one once normalized; - generateWords draws each index with randomIndex, as crypto/rand.Int, and draws again an index already drawn, so that the same bytes draw the same words as Go; what the RandomSource throws goes through; - wordBits sums Go's math.Log2, ported with its Frexp and its Log, so that the double is Go's, on the VM and on the web. wordkey.dart shares its check of each rune, checkWordRune, with the same behaviour. lib/datekeys.dart does not export the new file yet. test/vectors/wordlist_vectors.json, from tool/wordlist_go_vectors.go in an export of datekeys-go at 27a75ee, holds what Go gives: List on 19 texts, CheckList on 83 lists and on every code point of planes 0, 1 and 14, Generate in 51 cases, on the Spanish list and on lists of 12 to 2^20 + 1 words, from seeded, counter and finite streams, and Bits bit for bit. wordlist_test.dart runs them, also compiled to JavaScript, with the cases of TestCheckList, TestGenerate and TestBits of Go; wordlist_vm_test.dart checks the Dart copy of the vectors and every code point. The seed of TestGenerate of Go draws two indices only, 1793 and 2081, so that Generate runs out of bytes and the test compares two errors; the vectors record it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2 days ago
"generator": "tool/wordlist_go_vectors.go, go1.26.8",
Dice: diceNumber, diceWord, diceWords and diceList, as wordkey's dice.go The port of dice.go of datekeys-go at 92e7154, for whoever does not trust the random numbers of a computer: five dice for each word give a number from 11111 to 66666, the position of the word in a list of 7776, the first die the most significant. diceNumber gives the dice of a position, diceWord the word of five dice, diceWords the words of several numbers separated by white space, at least 6 and never the same word twice, and diceList the list numbered for dice, as the EFF publishes its own: for en, its UTF-8 bytes are the file of the EFF. The same checks in the same order and Go's texts, in a WordKeyException. The numbers are split as Go's strings.Fields splits a string, at unicode.IsSpace (goIsSpace), the white space at which normalizeWords splits, and nothing else changes. lib/datekeys.dart exports them; diceWordUtf8 and diceWordsUtf8, on the bytes of a Go string, are internal, for the tests. testdata and wordlists at datekeys-go 92e7154: only wordlists/README.md changes, with the SHA-256 of each list numbered for dice, and the commit of both SOURCE.json. tool/wordlist_go_vectors.go writes the dice too, run at 92e7154: DiceNumber, DiceWord and DiceWords on the lists of Go and on lists of indices, DiceList of each list, and DiceWords with every code point of planes 0, 1 and 14 between two numbers. The rest of the vectors is the same but for their source and description. The tests port TestDiceNumber, TestDiceWord, TestDiceWords and TestDiceList, and run the vectors on the VM and on Node.js. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 day ago
"source": "92e7154c23945c9b9a2893750b6d4d128f848d3e",
wordlist.dart: the random words of a key of words, as wordkey.Generate A port of List, CheckList, Generate and Bits of package wordkey of datekeys-go at 27a75ee (generate.go, spec 38.1), with the same checks in the same order and the same texts, each error a WordKeyException: - readWordList takes the file of a list that the app downloads or bundles only with the SHA-256 that wordListSha256 pins, "wordkey: the list "es" has the SHA-256 ..., not ...", and then reads it as List reads its text; - checkWordList refuses fewer than 2048 words, a word that is not one word of 3 letters or more once normalized, a rune that checkWords refuses, a character outside the alphabet of the language, which only the code gives (es: a to z, the five vowels with an acute accent, u with diaeresis and n with tilde, lower case, NFC), and two words that are one once normalized; - generateWords draws each index with randomIndex, as crypto/rand.Int, and draws again an index already drawn, so that the same bytes draw the same words as Go; what the RandomSource throws goes through; - wordBits sums Go's math.Log2, ported with its Frexp and its Log, so that the double is Go's, on the VM and on the web. wordkey.dart shares its check of each rune, checkWordRune, with the same behaviour. lib/datekeys.dart does not export the new file yet. test/vectors/wordlist_vectors.json, from tool/wordlist_go_vectors.go in an export of datekeys-go at 27a75ee, holds what Go gives: List on 19 texts, CheckList on 83 lists and on every code point of planes 0, 1 and 14, Generate in 51 cases, on the Spanish list and on lists of 12 to 2^20 + 1 words, from seeded, counter and finite streams, and Bits bit for bit. wordlist_test.dart runs them, also compiled to JavaScript, with the cases of TestCheckList, TestGenerate and TestBits of Go; wordlist_vm_test.dart checks the Dart copy of the vectors and every code point. The seed of TestGenerate of Go draws two indices only, 1793 and 2081, so that Generate runs out of bytes and the test compares two errors; the vectors record it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2 days ago
"default_count": 7,
"min_list_size": 2048,
"min_words": 6,
"min_letters": 3,
"alphabet": {"word":"pala, the code point and zz, the first word of the base list of 2048","planes":[0,1,14],"count":194560,"sha256":"9119a1741586b087cc8fdcce99b00931d34c926f5dc54d7fa0ff250402a11ba9","ok":["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","\u00e1","\u00e9","\u00ed","\u00f1","\u00f3","\u00fa","\u00fc"]},
Dice: diceNumber, diceWord, diceWords and diceList, as wordkey's dice.go The port of dice.go of datekeys-go at 92e7154, for whoever does not trust the random numbers of a computer: five dice for each word give a number from 11111 to 66666, the position of the word in a list of 7776, the first die the most significant. diceNumber gives the dice of a position, diceWord the word of five dice, diceWords the words of several numbers separated by white space, at least 6 and never the same word twice, and diceList the list numbered for dice, as the EFF publishes its own: for en, its UTF-8 bytes are the file of the EFF. The same checks in the same order and Go's texts, in a WordKeyException. The numbers are split as Go's strings.Fields splits a string, at unicode.IsSpace (goIsSpace), the white space at which normalizeWords splits, and nothing else changes. lib/datekeys.dart exports them; diceWordUtf8 and diceWordsUtf8, on the bytes of a Go string, are internal, for the tests. testdata and wordlists at datekeys-go 92e7154: only wordlists/README.md changes, with the SHA-256 of each list numbered for dice, and the commit of both SOURCE.json. tool/wordlist_go_vectors.go writes the dice too, run at 92e7154: DiceNumber, DiceWord and DiceWords on the lists of Go and on lists of indices, DiceList of each list, and DiceWords with every code point of planes 0, 1 and 14 between two numbers. The rest of the vectors is the same but for their source and description. The tests port TestDiceNumber, TestDiceWord, TestDiceWords and TestDiceList, and run the vectors on the VM and on Node.js. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 day ago
"dice_list_size": 7776,
"dice_space": {"text":"11111, the code point and 11112 11113 11114 11115 11116 11121, on the list of the 7776 indices","planes":[0,1,14],"count":194560,"sha256":"cf34ff425b6da4822dd798828c6172861df2e8497502991bc96e67b36a9c64d1","split":[9,10,11,12,13,32,133,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8232,8233,8239,8287,12288]},
wordlist.dart: the random words of a key of words, as wordkey.Generate A port of List, CheckList, Generate and Bits of package wordkey of datekeys-go at 27a75ee (generate.go, spec 38.1), with the same checks in the same order and the same texts, each error a WordKeyException: - readWordList takes the file of a list that the app downloads or bundles only with the SHA-256 that wordListSha256 pins, "wordkey: the list "es" has the SHA-256 ..., not ...", and then reads it as List reads its text; - checkWordList refuses fewer than 2048 words, a word that is not one word of 3 letters or more once normalized, a rune that checkWords refuses, a character outside the alphabet of the language, which only the code gives (es: a to z, the five vowels with an acute accent, u with diaeresis and n with tilde, lower case, NFC), and two words that are one once normalized; - generateWords draws each index with randomIndex, as crypto/rand.Int, and draws again an index already drawn, so that the same bytes draw the same words as Go; what the RandomSource throws goes through; - wordBits sums Go's math.Log2, ported with its Frexp and its Log, so that the double is Go's, on the VM and on the web. wordkey.dart shares its check of each rune, checkWordRune, with the same behaviour. lib/datekeys.dart does not export the new file yet. test/vectors/wordlist_vectors.json, from tool/wordlist_go_vectors.go in an export of datekeys-go at 27a75ee, holds what Go gives: List on 19 texts, CheckList on 83 lists and on every code point of planes 0, 1 and 14, Generate in 51 cases, on the Spanish list and on lists of 12 to 2^20 + 1 words, from seeded, counter and finite streams, and Bits bit for bit. wordlist_test.dart runs them, also compiled to JavaScript, with the cases of TestCheckList, TestGenerate and TestBits of Go; wordlist_vm_test.dart checks the Dart copy of the vectors and every code point. The seed of TestGenerate of Go draws two indices only, 1793 and 2081, so that Generate runs out of bytes and the test compares two errors; the vectors record it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2 days ago
"lists": [
{"lang":"en","sha256":"6d557f0693958fb5e650b68b5bee585eb82cf4da32965505c789e924743bc522","bytes":62144,"words":7776},
wordlist.dart: the random words of a key of words, as wordkey.Generate A port of List, CheckList, Generate and Bits of package wordkey of datekeys-go at 27a75ee (generate.go, spec 38.1), with the same checks in the same order and the same texts, each error a WordKeyException: - readWordList takes the file of a list that the app downloads or bundles only with the SHA-256 that wordListSha256 pins, "wordkey: the list "es" has the SHA-256 ..., not ...", and then reads it as List reads its text; - checkWordList refuses fewer than 2048 words, a word that is not one word of 3 letters or more once normalized, a rune that checkWords refuses, a character outside the alphabet of the language, which only the code gives (es: a to z, the five vowels with an acute accent, u with diaeresis and n with tilde, lower case, NFC), and two words that are one once normalized; - generateWords draws each index with randomIndex, as crypto/rand.Int, and draws again an index already drawn, so that the same bytes draw the same words as Go; what the RandomSource throws goes through; - wordBits sums Go's math.Log2, ported with its Frexp and its Log, so that the double is Go's, on the VM and on the web. wordkey.dart shares its check of each rune, checkWordRune, with the same behaviour. lib/datekeys.dart does not export the new file yet. test/vectors/wordlist_vectors.json, from tool/wordlist_go_vectors.go in an export of datekeys-go at 27a75ee, holds what Go gives: List on 19 texts, CheckList on 83 lists and on every code point of planes 0, 1 and 14, Generate in 51 cases, on the Spanish list and on lists of 12 to 2^20 + 1 words, from seeded, counter and finite streams, and Bits bit for bit. wordlist_test.dart runs them, also compiled to JavaScript, with the cases of TestCheckList, TestGenerate and TestBits of Go; wordlist_vm_test.dart checks the Dart copy of the vectors and every code point. The seed of TestGenerate of Go draws two indices only, 1793 and 2081, so that Generate runs out of bytes and the test compares two errors; the vectors record it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2 days ago
{"lang":"es","sha256":"ff77b487765c000da97cca58fe94a2cdb947303e7a07460614d7d95d800034fe","bytes":61843,"words":7776}
],
"parse": [
{"name":"2048 words, one per line, with a final LF","lang":"es","size":2048,"prefix":"","sep":"0a","suffix":"0a","sha256":"40e5649349cf1302065f2ceda7e7c4aec69e423fb8916c20b4445b229df6add1","words":2048,"result":"ok"},
{"name":"without the final LF","lang":"es","size":2048,"prefix":"","sep":"0a","suffix":"","sha256":"1bd1ad0e0e0bed858ff1c860a08050ae4ca4fc2ab8b264249172cac28005e44f","words":2048,"result":"ok"},
{"name":"7776 words","lang":"es","size":7776,"prefix":"","sep":"0a","suffix":"0a","sha256":"ed7549c5528253a352f8359ddb6cdcd7430536b97de1c42e2e2b20660e1db48c","words":7776,"result":"ok"},
{"name":"an empty last line: two final LF","lang":"es","size":2048,"prefix":"","sep":"0a","suffix":"0a0a","sha256":"5299dfa91913c2444195faa2c595acd72ad3712d8a9c9b8d1f5cf54c48c175c0","words":0,"result":"wordkey: the list \"es\": line 2049, \"\", is not one word of 3 or more letters"},
{"name":"an empty first line","lang":"es","size":2048,"prefix":"0a","sep":"0a","suffix":"0a","sha256":"3570e47619facf0aef02f91bb5c7ffb4836896e4793b22a34e6cb9a41e24a4f3","words":0,"result":"wordkey: the list \"es\": line 1, \"\", is not one word of 3 or more letters"},
{"name":"CR LF lines","lang":"es","size":2048,"prefix":"","sep":"0d0a","suffix":"0d0a","sha256":"5101863512608d6f32553f12c84f0a12e1b211bf5ab2b97e80d62a75b3d104f4","words":0,"result":"wordkey: the list \"es\": line 1, \"palaaa\\r\", holds U+000D, which is not in the alphabet of \"es\""},
{"name":"CR LF lines, the last without","lang":"es","size":2048,"prefix":"","sep":"0d0a","suffix":"","sha256":"2b7926ee88319902d851db25b98b86f322317cb831b006659bc2b813683e0332","words":0,"result":"wordkey: the list \"es\": line 1, \"palaaa\\r\", holds U+000D, which is not in the alphabet of \"es\""},
{"name":"CR lines","lang":"es","size":2048,"prefix":"","sep":"0d","suffix":"0d","sha256":"475eae5815dc03f07b0ebb538ac7dcb04b87a10e589f6a9aec4355b896ccf92a","words":0,"result":"wordkey: the list \"es\": 1 words, fewer than 2048"},
{"name":"a byte order mark","lang":"es","size":2048,"prefix":"efbbbf","sep":"0a","suffix":"0a","sha256":"984ec86238f6eff77e6426203cfddda9068720fc8e1db26c36f9070efce4dbbe","words":0,"result":"wordkey: the list \"es\": line 1: wordkey: the words hold the invisible character U+FEFF"},
{"name":"an empty text","lang":"es","size":0,"prefix":"","sep":"0a","suffix":"","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","words":0,"result":"wordkey: the list \"es\": 1 words, fewer than 2048"},
{"name":"an LF only","lang":"es","size":0,"prefix":"","sep":"0a","suffix":"0a","sha256":"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b","words":0,"result":"wordkey: the list \"es\": 1 words, fewer than 2048"},
{"name":"2047 words","lang":"es","size":2047,"prefix":"","sep":"0a","suffix":"0a","sha256":"6254d217042f509c1c5d32a4ad3d907b45105a167e75b41b6b5e088ff304fc1e","words":0,"result":"wordkey: the list \"es\": 2047 words, fewer than 2048"},
{"name":"the words separated by spaces","lang":"es","size":2048,"prefix":"","sep":"20","suffix":"0a","sha256":"10dae8e91c4d951d43dafc1c2a37d32041bf1d1909a15ff9b0bd15244214f4c3","words":0,"result":"wordkey: the list \"es\": 1 words, fewer than 2048"},
{"name":"a language without an alphabet","lang":"xx","size":2048,"prefix":"","sep":"0a","suffix":"0a","sha256":"40e5649349cf1302065f2ceda7e7c4aec69e423fb8916c20b4445b229df6add1","words":0,"result":"wordkey: the list \"xx\": no alphabet for the language \"xx\""},
{"name":"a byte that is not valid UTF-8","lang":"es","size":2048,"set":[{"at":6,"word":"70616cff6161"}],"prefix":"","sep":"0a","suffix":"0a","sha256":"31c967816ac079ef582ad79fe4ce76df580e02dade6b6bf1f4e865e7ed333a11","words":0,"result":"wordkey: the list \"es\": line 7, \"pal\\xffaa\", holds U+FFFD, which is not in the alphabet of \"es\""},
{"name":"a sequence cut at the end of the text","lang":"es","size":2048,"set":[{"at":2047,"word":"70616c7a7ac3"}],"prefix":"","sep":"0a","suffix":"","sha256":"2e6660234b4afb4d3a02660f71b8c8b80b7d245d9d5324730a7ba5af90a2064b","words":0,"result":"wordkey: the list \"es\": line 2048, \"palzz\\xc3\", holds U+FFFD, which is not in the alphabet of \"es\""},
{"name":"the same word twice","lang":"es","size":2048,"set":[{"at":2000,"word":"70616c616161"}],"prefix":"","sep":"0a","suffix":"0a","sha256":"9f2acbb0eae1bb8003be8a8721e54a0905d2f776e8c4a2d467a920c4e3141922","words":0,"result":"wordkey: the list \"es\": line 2001, \"palaaa\", is the same word as \"palaaa\" once normalized"},
{"name":"a capital letter","lang":"es","size":2048,"set":[{"at":100,"word":"50616c647777"}],"prefix":"","sep":"0a","suffix":"0a","sha256":"c145284ea3e147b5527ceb511740a980af3cb53289176da82e08d084d741833d","words":0,"result":"wordkey: the list \"es\": line 101, \"Paldww\", holds U+0050, which is not in the alphabet of \"es\""},
{"name":"letters of the alphabet","lang":"es","size":2048,"set":[{"at":0,"word":"c3a1c3a9c3adc3b3c3bac3bcc3b1"}],"prefix":"","sep":"0a","suffix":"0a","sha256":"62b5e70acd207e5609c415f64652174b4f29418f39daf4d9a83a89a3aa778e20","words":2048,"result":"ok"}
],
"check_list": [
{"name":"the base list","lang":"es","size":2048,"sha256":"1bd1ad0e0e0bed858ff1c860a08050ae4ca4fc2ab8b264249172cac28005e44f","result":"ok"},
{"name":"a language without an alphabet","lang":"xx","size":2048,"sha256":"1bd1ad0e0e0bed858ff1c860a08050ae4ca4fc2ab8b264249172cac28005e44f","result":"no alphabet for the language \"xx\""},
{"name":"2047 words","lang":"es","size":2047,"sha256":"006232a478c66e976927c8614ebea20ea657baf0ae52f80ec53c81d57a419957","result":"2047 words, fewer than 2048"},
{"name":"two words in a line","lang":"es","size":2048,"set":[{"at":5,"word":"646f732070616c6162726173"}],"sha256":"f42912452330cc6b7471acab57b52d26d6d05f81afd5dbea729f579beedeb3de","result":"line 6, \"dos palabras\", is not one word of 3 or more letters"},
{"name":"two spaces","lang":"es","size":2048,"set":[{"at":5,"word":"2020"}],"sha256":"cc58b1f63c0f95a24c8a9e7c1159ee8f1372243227a09d389f5bb77034fd8088","result":"line 6, \" \", is not one word of 3 or more letters"},
{"name":"two letters","lang":"es","size":2048,"set":[{"at":5,"word":"6d69"}],"sha256":"9295042e20f0a44e0c567c74aee7c1431406698d0876deaf6c6a9d221dacbe06","result":"line 6, \"mi\", is not one word of 3 or more letters"},
{"name":"ZWSP","lang":"es","size":2048,"set":[{"at":5,"word":"63617361e2808b"}],"sha256":"e2047d1479f8a0c1bcdc7c432cd51f84b44164fdb6fc550aacd4b67eae868cc7","result":"line 6: wordkey: the words hold the invisible character U+200B"},
{"name":"a capital","lang":"es","size":2048,"set":[{"at":5,"word":"50616c616166"}],"sha256":"ab2d74b6b1aa4ebc6154e932f1db82e8cbe9eaa8a95c3362c3f77cb577323e95","result":"line 6, \"Palaaf\", holds U+0050, which is not in the alphabet of \"es\""},
{"name":"a Cyrillic letter that looks like a Latin c","lang":"es","size":2048,"set":[{"at":5,"word":"d181617361"}],"sha256":"0a2eebb54d9a57dad50b557a06eb73fd0bbeb468a5c8bb72705d4c62db11ee38","result":"line 6, \"\u0441asa\", holds U+0441, which is not in the alphabet of \"es\""},
{"name":"a digit","lang":"es","size":2048,"set":[{"at":5,"word":"70616c31"}],"sha256":"e125536a8e6d771fb734db57ae5cf630583558af2957f0ed42e3b9a50aba7a43","result":"line 6, \"pal1\", holds U+0031, which is not in the alphabet of \"es\""},
{"name":"the CR of a CR LF line","lang":"es","size":2048,"set":[{"at":5,"word":"70616c6161660d"}],"sha256":"bfbabbff5776d427b31f38898a61d52c0396bc1609baf8ee31828698d35b7e00","result":"line 6, \"palaaf\\r\", holds U+000D, which is not in the alphabet of \"es\""},
{"name":"the same word","lang":"es","size":2048,"set":[{"at":5,"word":"70616c616165"}],"sha256":"1993a45d3423b863588c5211ca64859d9568fd433cac83d93e3fa6383ada8d55","result":"line 6, \"palaae\", is the same word as \"palaae\" once normalized"},
{"name":"the same word once normalized","lang":"es","size":2048,"set":[{"at":5,"word":"70616c61c3a165"}],"sha256":"e2abb6dda7cc7f1e7eeb62d25c9e4e910b48265b17643db34a83f82b10b8bd12","result":"line 6, \"pala\u00e1e\", is the same word as \"palaae\" once normalized"},
{"name":"papa after pap\u00e1","lang":"es","size":2048,"set":[{"at":0,"word":"706170c3a1"}],"append":["70617061"],"sha256":"8feff334849c99f57f0730a53d0b69193d319cc5311ed35fd7c63c1ccd822108","result":"line 2049, \"papa\", is the same word as \"pap\u00e1\" once normalized"},
{"name":"no words","lang":"es","size":0,"sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","result":"0 words, fewer than 2048"},
{"name":"no words in a language without an alphabet","lang":"xx","size":0,"sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","result":"no alphabet for the language \"xx\""},
{"name":"the empty language","lang":"","size":2048,"sha256":"1bd1ad0e0e0bed858ff1c860a08050ae4ca4fc2ab8b264249172cac28005e44f","result":"no alphabet for the language \"\""},
{"name":"ES, in capitals","lang":"ES","size":2048,"sha256":"1bd1ad0e0e0bed858ff1c860a08050ae4ca4fc2ab8b264249172cac28005e44f","result":"no alphabet for the language \"ES\""},
{"name":"es and a space","lang":"es ","size":2048,"sha256":"1bd1ad0e0e0bed858ff1c860a08050ae4ca4fc2ab8b264249172cac28005e44f","result":"no alphabet for the language \"es \""},
{"name":"espa\u00f1ol","lang":"espa\u00f1ol","size":2048,"sha256":"1bd1ad0e0e0bed858ff1c860a08050ae4ca4fc2ab8b264249172cac28005e44f","result":"no alphabet for the language \"espa\u00f1ol\""},
{"name":"2049 words","lang":"es","size":2049,"sha256":"4a3d02931aa351dbabd89a53ec77ae4008f2e7b1021ff4b3b8d62af0c2f5d486","result":"ok"},
{"name":"7776 words","lang":"es","size":7776,"sha256":"d143891cbb69ea644de7f2036b93e6fd99040b7bee852aee3a9f21b8147b5fe2","result":"ok"},
{"name":"17576 words","lang":"es","size":17576,"sha256":"88120b465c3f3fdf5d987f982de3ca66a56225595af185bd242a857843c74777","result":"ok"},
{"name":"an empty word","lang":"es","size":2048,"set":[{"at":5,"word":""}],"sha256":"639e41bb771d1c353a573e01d40dd1bfb985f01563cf3ff572826ef258f14c50","result":"line 6, \"\", is not one word of 3 or more letters"},
{"name":"a word of three letters","lang":"es","size":2048,"set":[{"at":5,"word":"70616c"}],"sha256":"78956c5afcfb1abb4844700cb7aae4168b65e7c841177446758e44b44df380dd","result":"ok"},
{"name":"\u00f1u, two letters","lang":"es","size":2048,"set":[{"at":5,"word":"c3b175"}],"sha256":"8cc44a85f48c935cfb342d979d758e66404d64c56a38387f8b5ecfb07ba4dcaf","result":"line 6, \"\u00f1u\", is not one word of 3 or more letters"},
{"name":"\u00f1u\u00f1, three letters","lang":"es","size":2048,"set":[{"at":5,"word":"c3b175c3b1"}],"sha256":"dc2601fdba7c90d378652295611a41a84611c895bb14e0d0cdc2164fdf037972","result":"ok"},
{"name":"a space before","lang":"es","size":2048,"set":[{"at":5,"word":"2070616c616166"}],"sha256":"382f4bf269831d42e0ce019b63551fe99c0290419dcc7a56002a1c2c0f0b587a","result":"line 6, \" palaaf\", holds U+0020, which is not in the alphabet of \"es\""},
{"name":"a space after","lang":"es","size":2048,"set":[{"at":5,"word":"70616c61616620"}],"sha256":"b538a1983df04e91d58774665aefc9b3ab22a1122c2a0cd380d93c1ebe1a7af5","result":"line 6, \"palaaf \", holds U+0020, which is not in the alphabet of \"es\""},
{"name":"a tab inside","lang":"es","size":2048,"set":[{"at":5,"word":"70616c096166"}],"sha256":"0bbf370209dd5189292c89a5c0c337a6059affcf8771706b0ab1aef66e30cb6a","result":"line 6, \"pal\\taf\", is not one word of 3 or more letters"},
{"name":"NBSP inside","lang":"es","size":2048,"set":[{"at":5,"word":"70616cc2a06166"}],"sha256":"09cc345e8cedaeb60f7021c558100348ae482219f4184f7672661bb7872c21e5","result":"line 6, \"pal\\u00a0af\", is not one word of 3 or more letters"},
{"name":"NEL inside","lang":"es","size":2048,"set":[{"at":5,"word":"70616cc2856166"}],"sha256":"066ac85c3b4af72f1d3976b29c5809d0a4182d7dc3ba1c09eef2ebaedf1f9ebd","result":"line 6, \"pal\\u0085af\", is not one word of 3 or more letters"},
{"name":"the ideographic space inside","lang":"es","size":2048,"set":[{"at":5,"word":"70616ce380806166"}],"sha256":"36bd83e640c63002bccfac2b6b34ce4f4bec6d0e92bbddeca871adf0c3e6172d","result":"line 6, \"pal\\u3000af\", is not one word of 3 or more letters"},
{"name":"LS inside","lang":"es","size":2048,"set":[{"at":5,"word":"70616ce280a86166"}],"sha256":"b545bea83ab3d4b7dcaaa8e5b77cec190f8bf4273a0b38884225f332bfc2972d","result":"line 6, \"pal\\u2028af\", is not one word of 3 or more letters"},
{"name":"an LF inside","lang":"es","size":2048,"set":[{"at":5,"word":"70616c0a6166"}],"sha256":"c48562076662e79dbd764e23894898f217a1f1f97f1abb2e9299ba7ac420afed","result":"line 6, \"pal\\naf\", is not one word of 3 or more letters"},
{"name":"two runes and ZWSP: the count before the runes","lang":"es","size":2048,"set":[{"at":5,"word":"70e2808b"}],"sha256":"3e03fc5d9a4c0ac2c2e777da46e79cc19f9b9df80b34aa1457ede9fa5d1c7788","result":"line 6, \"p\\u200b\", is not one word of 3 or more letters"},
{"name":"three letters with a mark that goes: two","lang":"es","size":2048,"set":[{"at":5,"word":"7061cc81"}],"sha256":"4338fbbae7ca23244246854fbe205ce59fb5871bbdd9cf0a2410e3db4c8f5c5d","result":"line 6, \"pa\u0301\", is not one word of 3 or more letters"},
{"name":"a\u0301b, two letters once normalized","lang":"es","size":2048,"set":[{"at":5,"word":"61cc8162"}],"sha256":"b302b105aa962d188c2a193a6e42138aac9a7748df2be22327e119b21fdb6868","result":"line 6, \"a\u0301b\", is not one word of 3 or more letters"},
{"name":"a control","lang":"es","size":2048,"set":[{"at":5,"word":"70616c016166"}],"sha256":"6288c09787e3af1bb5058c78bd33f441f4c8835bd59f276b16233c62300304ea","result":"line 6: wordkey: the words hold the control character U+0001"},
{"name":"DEL","lang":"es","size":2048,"set":[{"at":5,"word":"70616c7f6166"}],"sha256":"30f93486be369882aedc5198f463e57331b4d7297af5f18afbf3895280437850","result":"line 6: wordkey: the words hold the control character U+007F"},
{"name":"a C1 control","lang":"es","size":2048,"set":[{"at":5,"word":"70616cc2806166"}],"sha256":"f015c53765dede22e047bd2402a945e9c56227b5889bcc226da11ff4ab1b5059","result":"line 6: wordkey: the words hold the control character U+0080"},
{"name":"a control and a capital: the runes before the alphabet","lang":"es","size":2048,"set":[{"at":5,"word":"50616c016166"}],"sha256":"8195b293f594de3c0e5b556f54a2a87cf02266b26f74ba76f4c0aaf2ef5b3b8f","result":"line 6: wordkey: the words hold the control character U+0001"},
{"name":"a soft hyphen","lang":"es","size":2048,"set":[{"at":5,"word":"7061c2ad"}],"sha256":"b87ae826ab91465b27cd82974898617afc29f293253546aec71fb7f1a598f949","result":"line 6: wordkey: the words hold the invisible character U+00AD"},
{"name":"ZWJ","lang":"es","size":2048,"set":[{"at":5,"word":"70616ce2808d6166"}],"sha256":"2859e13c093ce340b7c2f937bc4470f36680100cd7fba471e7eb13d6f50c5e84","result":"line 6: wordkey: the words hold the invisible character U+200D"},
{"name":"a byte order mark","lang":"es","size":2048,"set":[{"at":5,"word":"efbbbf70616c616166"}],"sha256":"3c9cef5930c2d943eee1019ad595c2a723b15a8aef3e2aa6134c2fc24d28db76","result":"line 6: wordkey: the words hold the invisible character U+FEFF"},
{"name":"an unassigned code point","lang":"es","size":2048,"set":[{"at":5,"word":"70616ccdb8"}],"sha256":"8bbd2df9847132be8c2e1aefecd699fb6100a242cc550bf89af79f23125bf925","result":"line 6: wordkey: the words hold U+0378, unassigned in Unicode 18.0.0"},
{"name":"a noncharacter","lang":"es","size":2048,"set":[{"at":5,"word":"70616cefbfbe"}],"sha256":"e5b2f98df9529f872db3a5c46d57b9275d0f47128fc5d80279ebccec05770220","result":"line 6: wordkey: the words hold U+FFFE, unassigned in Unicode 18.0.0"},
{"name":"a tag","lang":"es","size":2048,"set":[{"at":5,"word":"70616cf3a081816166"}],"sha256":"2ce05d430f2683ae4add6f38a3009b9af978608094c0de404366add14dbccb6d","result":"line 6: wordkey: the words hold the invisible character U+E0041"},
{"name":"the letters of the alphabet","lang":"es","size":2048,"set":[{"at":5,"word":"6162636465666768696a6b6c6d6e6f707172737475767778797ac3a1c3a9c3adc3b3c3bac3bcc3b1"}],"sha256":"171612e5b64aca979e9f98d04c632252f41dd2c8b419d30b919a664ded7523c5","result":"ok"},
{"name":"an acute accent in NFD","lang":"es","size":2048,"set":[{"at":5,"word":"70616c61cc8165"}],"sha256":"18d9d3d9837a8ab1d6236bf70454102e4cd62d78858ecaf5429a3bf5012ac681","result":"line 6, \"pala\u0301e\", holds U+0301, which is not in the alphabet of \"es\""},
{"name":"a diaeresis in NFD","lang":"es","size":2048,"set":[{"at":5,"word":"70616c6161cc88"}],"sha256":"687b6e86c51a3298a4ce78742495d25302cc11228576f83bba7788188c7086d3","result":"line 6, \"palaa\u0308\", holds U+0308, which is not in the alphabet of \"es\""},
{"name":"a tilde in NFD","lang":"es","size":2048,"set":[{"at":5,"word":"70616ecc836f"}],"sha256":"88e23891893b369e4cf68becc9cfe9fd84444c5002e353f87a684cd6a564d2c4","result":"line 6, \"pan\u0303o\", holds U+0303, which is not in the alphabet of \"es\""},
{"name":"\u00c1, a capital with an accent","lang":"es","size":2048,"set":[{"at":5,"word":"c3816261636f"}],"sha256":"fc9405a1716bc62e7b194732c3a9bbc7c42ded47d7c169c2579d25290522e9bf","result":"line 6, \"\u00c1baco\", holds U+00C1, which is not in the alphabet of \"es\""},
{"name":"\u00d1, a capital","lang":"es","size":2048,"set":[{"at":5,"word":"c391616e64c3ba"}],"sha256":"d48bed60f8744c2fc3f0f34a5e3f4e867e734f5fb7cbef82af6086e710b88d3c","result":"line 6, \"\u00d1and\u00fa\", holds U+00D1, which is not in the alphabet of \"es\""},
{"name":"a grave accent","lang":"es","size":2048,"set":[{"at":5,"word":"70616cc3a061"}],"sha256":"52748dc437c58a824f554dc2f870a5f49db3833e2a34023324d407e7b80cc658","result":"line 6, \"pal\u00e0a\", holds U+00E0, which is not in the alphabet of \"es\""},
{"name":"a circumflex","lang":"es","size":2048,"set":[{"at":5,"word":"70616cc3a261"}],"sha256":"e190dd09884acccb334e299438fc7eae1a8bd1d982a8197eac610977c9c14ef9","result":"line 6, \"pal\u00e2a\", holds U+00E2, which is not in the alphabet of \"es\""},
{"name":"\u00e4","lang":"es","size":2048,"set":[{"at":5,"word":"70616cc3a461"}],"sha256":"76c4d1e2b9821df83c705e792119b514c666877449ff97373aa83fb5eb3c6505","result":"line 6, \"pal\u00e4a\", holds U+00E4, which is not in the alphabet of \"es\""},
{"name":"\u00e7","lang":"es","size":2048,"set":[{"at":5,"word":"70616cc3a761"}],"sha256":"8bf7d649fd58ab3c1a5a432a162c43f174e56e0188a3c599025f5cdbf3df2e1a","result":"line 6, \"pal\u00e7a\", holds U+00E7, which is not in the alphabet of \"es\""},
{"name":"\u00f6","lang":"es","size":2048,"set":[{"at":5,"word":"70616cc3b661"}],"sha256":"590bcda940c5ae0f8f30c1f6d1b941ac0707e933f4af993c1072970cde920170","result":"line 6, \"pal\u00f6a\", holds U+00F6, which is not in the alphabet of \"es\""},
{"name":"\u00fd","lang":"es","size":2048,"set":[{"at":5,"word":"70616cc3bd61"}],"sha256":"72af7d5747ee97e630664d5fb5efd0f51c863d55e7424b7ee9ecac8aa1076b9b","result":"line 6, \"pal\u00fda\", holds U+00FD, which is not in the alphabet of \"es\""},
{"name":"\u00df","lang":"es","size":2048,"set":[{"at":5,"word":"70616cc39f61"}],"sha256":"d73bd84a27377847b8e0a039490c0924cd6e8dec83547f0913151bcd2a292d0c","result":"line 6, \"pal\u00dfa\", holds U+00DF, which is not in the alphabet of \"es\""},
{"name":"a Cyrillic a","lang":"es","size":2048,"set":[{"at":5,"word":"70616cd0b061"}],"sha256":"9f1959893c6bbf097866272a1eb73a30b29356f6db232d10e48ea706ad95da94","result":"line 6, \"pal\u0430a\", holds U+0430, which is not in the alphabet of \"es\""},
{"name":"a Greek omicron","lang":"es","size":2048,"set":[{"at":5,"word":"70616ccebf61"}],"sha256":"51591f2a3d611a835b14977093687b0fb0b82264aea304e847ec4e9a92e60721","result":"line 6, \"pal\u03bfa\", holds U+03BF, which is not in the alphabet of \"es\""},
{"name":"a full-width a","lang":"es","size":2048,"set":[{"at":5,"word":"70616cefbd8161"}],"sha256":"466a6f43f3775f8009531c7200ab2d2cb01770da643e39e208b503a6adc8817e","result":"line 6, \"pal\uff41a\", holds U+FF41, which is not in the alphabet of \"es\""},
{"name":"a mathematical bold a","lang":"es","size":2048,"set":[{"at":5,"word":"70616cf09d909a61"}],"sha256":"9cdb9150c16635f18c1edeb4a99be2b972dbe3534b96bc45518cb2be7c45d3c1","result":"line 6, \"pal\ud835\udc1aa\", holds U+1D41A, which is not in the alphabet of \"es\""},
{"name":"the Kelvin sign","lang":"es","size":2048,"set":[{"at":5,"word":"70616ce284aa61"}],"sha256":"8296c53f65135f54af51349dda6315556aa5ab7c476bf09faafbbb3579567491","result":"line 6, \"pal\u212aa\", holds U+212A, which is not in the alphabet of \"es\""},
{"name":"a dotless i","lang":"es","size":2048,"set":[{"at":5,"word":"70616cc4b161"}],"sha256":"acff79df5e69176c3bd51aa70d8a0f20de8593c97cdc8d3f32c450cf30fb587a","result":"line 6, \"pal\u0131a\", holds U+0131, which is not in the alphabet of \"es\""},
{"name":"a hyphen","lang":"es","size":2048,"set":[{"at":5,"word":"70616c2d6166"}],"sha256":"5b316070132e5fe53051a1cc61aba7ec9c324a6b11e23ce9e062823e8765af24","result":"line 6, \"pal-af\", holds U+002D, which is not in the alphabet of \"es\""},
{"name":"an apostrophe","lang":"es","size":2048,"set":[{"at":5,"word":"70616c276166"}],"sha256":"a2fcd25525cf45943776c7b07471982a531c997227c3757d2fa375611d666d19","result":"line 6, \"pal'af\", holds U+0027, which is not in the alphabet of \"es\""},
{"name":"a backtick and a brace, around a to z","lang":"es","size":2048,"set":[{"at":5,"word":"70616c607b"}],"sha256":"a1bf9fc3215154c3b002a53a4bcaeca5a30c21b7108dbfd23fc762e0da7d1e99","result":"line 6, \"pal`{\", holds U+0060, which is not in the alphabet of \"es\""},
{"name":"an emoji","lang":"es","size":2048,"set":[{"at":5,"word":"70616cf09f9880"}],"sha256":"9a8aacbd11b71319a98472e41974ab3b78b4a8781ae33fa170220f4f5f2f84bc","result":"line 6, \"pal\ud83d\ude00\", holds U+1F600, which is not in the alphabet of \"es\""},
{"name":"a byte that is not valid UTF-8","lang":"es","size":2048,"set":[{"at":5,"word":"70616cff6161"}],"sha256":"028e9203eda7205fb204a2bed86bb9126c70f80d3fcf2ccc59544d5a09a3dd45","result":"line 6, \"pal\\xffaa\", holds U+FFFD, which is not in the alphabet of \"es\""},
{"name":"a surrogate in UTF-8 bytes","lang":"es","size":2048,"set":[{"at":5,"word":"eda080616161"}],"sha256":"c175fc03314b4ac1a469dc46ab6888e6e0b62facd72f485e7369569a809e2ee0","result":"line 6, \"\\xed\\xa0\\x80aaa\", holds U+FFFD, which is not in the alphabet of \"es\""},
{"name":"a sequence cut short","lang":"es","size":2048,"set":[{"at":5,"word":"70616c61c3"}],"sha256":"b982ef907d87e08d79e038d579bbe0988a8c7eb190b83de73593168ea992ac4f","result":"line 6, \"pala\\xc3\", holds U+FFFD, which is not in the alphabet of \"es\""},
{"name":"an overlong NUL","lang":"es","size":2048,"set":[{"at":5,"word":"c080616161"}],"sha256":"536087a6fecd4b3a8ba068f8ab988149cb22ea63f09fa6878693cff47abed313","result":"line 6, \"\\xc0\\x80aaa\", holds U+FFFD, which is not in the alphabet of \"es\""},
{"name":"U+FFFD itself","lang":"es","size":2048,"set":[{"at":5,"word":"70616cefbfbd6161"}],"sha256":"a59f04e2deb66cb73a0487f13cf8d9255e3fb1594475ffd82ac424406ae686e7","result":"line 6, \"pal\ufffdaa\", holds U+FFFD, which is not in the alphabet of \"es\""},
{"name":"a\u00f1o and ano","lang":"es","size":2048,"set":[{"at":5,"word":"61c3b16f"},{"at":6,"word":"616e6f"}],"sha256":"8d616f5737a177219aa2531b9751d2e2ab0ccd7828f8c119d6cbca48fe17bf66","result":"line 7, \"ano\", is the same word as \"a\u00f1o\" once normalized"},
{"name":"ping\u00fcino and pinguino","lang":"es","size":2048,"set":[{"at":5,"word":"70696e6775696e6f"},{"at":9,"word":"70696e67c3bc696e6f"}],"sha256":"ea28b2e6cef6fda1e67bb96638c93fe6634bd4cc5ce2dde4f0331aea64d130f6","result":"line 10, \"ping\u00fcino\", is the same word as \"pinguino\" once normalized"},
{"name":"the same word, the first of the list last","lang":"es","size":2048,"append":["70616c616161"],"sha256":"24692d3331d9c5e2d9aeca9de2a6a89fbd941ac3237f68d901a291e1dfe52fa7","result":"line 2049, \"palaaa\", is the same word as \"palaaa\" once normalized"},
{"name":"a capital of a word of the list: the alphabet before the same word","lang":"es","size":2048,"set":[{"at":5,"word":"50414c414145"}],"sha256":"bf4af0c60850edee7eb20f7e575d4b14fa16a193bc93a1333d4e502baea53df3","result":"line 6, \"PALAAE\", holds U+0050, which is not in the alphabet of \"es\""},
{"name":"an error at line 4 and another at line 6","lang":"es","size":2048,"set":[{"at":3,"word":"4d616c"},{"at":5,"word":"7061"}],"sha256":"61e1d0c145b794b21f87db1a07f5bec75a104e9a03e0e64f8eb42dd584ccadf9","result":"line 4, \"Mal\", holds U+004D, which is not in the alphabet of \"es\""},
{"name":"an error at the last line","lang":"es","size":2048,"set":[{"at":2047,"word":"78"}],"sha256":"9ccabe185e9b3a34151eaaa0c0a6d6d39488c5fac1ea9e72c898bf8ae43917a0","result":"line 2048, \"x\", is not one word of 3 or more letters"},
{"name":"an empty last line","lang":"es","size":2048,"append":[""],"sha256":"40e5649349cf1302065f2ceda7e7c4aec69e423fb8916c20b4445b229df6add1","result":"line 2049, \"\", is not one word of 3 or more letters"}
],
"alphabet_results": [
{"rune":0,"result":"line 1: wordkey: the words hold the control character U+0000"},
{"rune":1,"result":"line 1: wordkey: the words hold the control character U+0001"},
{"rune":2,"result":"line 1: wordkey: the words hold the control character U+0002"},
{"rune":3,"result":"line 1: wordkey: the words hold the control character U+0003"},
{"rune":4,"result":"line 1: wordkey: the words hold the control character U+0004"},
{"rune":5,"result":"line 1: wordkey: the words hold the control character U+0005"},
{"rune":6,"result":"line 1: wordkey: the words hold the control character U+0006"},
{"rune":7,"result":"line 1: wordkey: the words hold the control character U+0007"},
{"rune":8,"result":"line 1: wordkey: the words hold the control character U+0008"},
{"rune":9,"result":"line 1, \"pala\\tzz\", is not one word of 3 or more letters"},
{"rune":10,"result":"line 1, \"pala\\nzz\", is not one word of 3 or more letters"},
{"rune":11,"result":"line 1, \"pala\\vzz\", is not one word of 3 or more letters"},
{"rune":12,"result":"line 1, \"pala\\fzz\", is not one word of 3 or more letters"},
{"rune":13,"result":"line 1, \"pala\\rzz\", is not one word of 3 or more letters"},
{"rune":14,"result":"line 1: wordkey: the words hold the control character U+000E"},
{"rune":15,"result":"line 1: wordkey: the words hold the control character U+000F"},
{"rune":16,"result":"line 1: wordkey: the words hold the control character U+0010"},
{"rune":17,"result":"line 1: wordkey: the words hold the control character U+0011"},
{"rune":18,"result":"line 1: wordkey: the words hold the control character U+0012"},
{"rune":19,"result":"line 1: wordkey: the words hold the control character U+0013"},
{"rune":20,"result":"line 1: wordkey: the words hold the control character U+0014"},
{"rune":21,"result":"line 1: wordkey: the words hold the control character U+0015"},
{"rune":22,"result":"line 1: wordkey: the words hold the control character U+0016"},
{"rune":23,"result":"line 1: wordkey: the words hold the control character U+0017"},
{"rune":24,"result":"line 1: wordkey: the words hold the control character U+0018"},
{"rune":25,"result":"line 1: wordkey: the words hold the control character U+0019"},
{"rune":26,"result":"line 1: wordkey: the words hold the control character U+001A"},
{"rune":27,"result":"line 1: wordkey: the words hold the control character U+001B"},
{"rune":28,"result":"line 1: wordkey: the words hold the control character U+001C"},
{"rune":29,"result":"line 1: wordkey: the words hold the control character U+001D"},
{"rune":30,"result":"line 1: wordkey: the words hold the control character U+001E"},
{"rune":31,"result":"line 1: wordkey: the words hold the control character U+001F"},
{"rune":32,"result":"line 1, \"pala zz\", is not one word of 3 or more letters"},
{"rune":33,"result":"line 1, \"pala!zz\", holds U+0021, which is not in the alphabet of \"es\""},
{"rune":34,"result":"line 1, \"pala\\\"zz\", holds U+0022, which is not in the alphabet of \"es\""},
{"rune":35,"result":"line 1, \"pala#zz\", holds U+0023, which is not in the alphabet of \"es\""},
{"rune":36,"result":"line 1, \"pala$zz\", holds U+0024, which is not in the alphabet of \"es\""},
{"rune":37,"result":"line 1, \"pala%zz\", holds U+0025, which is not in the alphabet of \"es\""},
{"rune":38,"result":"line 1, \"pala&zz\", holds U+0026, which is not in the alphabet of \"es\""},
{"rune":39,"result":"line 1, \"pala'zz\", holds U+0027, which is not in the alphabet of \"es\""},
{"rune":40,"result":"line 1, \"pala(zz\", holds U+0028, which is not in the alphabet of \"es\""},
{"rune":41,"result":"line 1, \"pala)zz\", holds U+0029, which is not in the alphabet of \"es\""},
{"rune":42,"result":"line 1, \"pala*zz\", holds U+002A, which is not in the alphabet of \"es\""},
{"rune":43,"result":"line 1, \"pala+zz\", holds U+002B, which is not in the alphabet of \"es\""},
{"rune":44,"result":"line 1, \"pala,zz\", holds U+002C, which is not in the alphabet of \"es\""},
{"rune":45,"result":"line 1, \"pala-zz\", holds U+002D, which is not in the alphabet of \"es\""},
{"rune":46,"result":"line 1, \"pala.zz\", holds U+002E, which is not in the alphabet of \"es\""},
{"rune":47,"result":"line 1, \"pala/zz\", holds U+002F, which is not in the alphabet of \"es\""},
{"rune":48,"result":"line 1, \"pala0zz\", holds U+0030, which is not in the alphabet of \"es\""},
{"rune":49,"result":"line 1, \"pala1zz\", holds U+0031, which is not in the alphabet of \"es\""},
{"rune":50,"result":"line 1, \"pala2zz\", holds U+0032, which is not in the alphabet of \"es\""},
{"rune":51,"result":"line 1, \"pala3zz\", holds U+0033, which is not in the alphabet of \"es\""},
{"rune":52,"result":"line 1, \"pala4zz\", holds U+0034, which is not in the alphabet of \"es\""},
{"rune":53,"result":"line 1, \"pala5zz\", holds U+0035, which is not in the alphabet of \"es\""},
{"rune":54,"result":"line 1, \"pala6zz\", holds U+0036, which is not in the alphabet of \"es\""},
{"rune":55,"result":"line 1, \"pala7zz\", holds U+0037, which is not in the alphabet of \"es\""},
{"rune":56,"result":"line 1, \"pala8zz\", holds U+0038, which is not in the alphabet of \"es\""},
{"rune":57,"result":"line 1, \"pala9zz\", holds U+0039, which is not in the alphabet of \"es\""},
{"rune":58,"result":"line 1, \"pala:zz\", holds U+003A, which is not in the alphabet of \"es\""},
{"rune":59,"result":"line 1, \"pala;zz\", holds U+003B, which is not in the alphabet of \"es\""},
{"rune":60,"result":"line 1, \"pala<zz\", holds U+003C, which is not in the alphabet of \"es\""},
{"rune":61,"result":"line 1, \"pala=zz\", holds U+003D, which is not in the alphabet of \"es\""},
{"rune":62,"result":"line 1, \"pala>zz\", holds U+003E, which is not in the alphabet of \"es\""},
{"rune":63,"result":"line 1, \"pala?zz\", holds U+003F, which is not in the alphabet of \"es\""},
{"rune":64,"result":"line 1, \"pala@zz\", holds U+0040, which is not in the alphabet of \"es\""},
{"rune":65,"result":"line 1, \"palaAzz\", holds U+0041, which is not in the alphabet of \"es\""},
{"rune":66,"result":"line 1, \"palaBzz\", holds U+0042, which is not in the alphabet of \"es\""},
{"rune":67,"result":"line 1, \"palaCzz\", holds U+0043, which is not in the alphabet of \"es\""},
{"rune":68,"result":"line 1, \"palaDzz\", holds U+0044, which is not in the alphabet of \"es\""},
{"rune":69,"result":"line 1, \"palaEzz\", holds U+0045, which is not in the alphabet of \"es\""},
{"rune":70,"result":"line 1, \"palaFzz\", holds U+0046, which is not in the alphabet of \"es\""},
{"rune":71,"result":"line 1, \"palaGzz\", holds U+0047, which is not in the alphabet of \"es\""},
{"rune":72,"result":"line 1, \"palaHzz\", holds U+0048, which is not in the alphabet of \"es\""},
{"rune":73,"result":"line 1, \"palaIzz\", holds U+0049, which is not in the alphabet of \"es\""},
{"rune":74,"result":"line 1, \"palaJzz\", holds U+004A, which is not in the alphabet of \"es\""},
{"rune":75,"result":"line 1, \"palaKzz\", holds U+004B, which is not in the alphabet of \"es\""},
{"rune":76,"result":"line 1, \"palaLzz\", holds U+004C, which is not in the alphabet of \"es\""},
{"rune":77,"result":"line 1, \"palaMzz\", holds U+004D, which is not in the alphabet of \"es\""},
{"rune":78,"result":"line 1, \"palaNzz\", holds U+004E, which is not in the alphabet of \"es\""},
{"rune":79,"result":"line 1, \"palaOzz\", holds U+004F, which is not in the alphabet of \"es\""},
{"rune":80,"result":"line 1, \"palaPzz\", holds U+0050, which is not in the alphabet of \"es\""},
{"rune":81,"result":"line 1, \"palaQzz\", holds U+0051, which is not in the alphabet of \"es\""},
{"rune":82,"result":"line 1, \"palaRzz\", holds U+0052, which is not in the alphabet of \"es\""},
{"rune":83,"result":"line 1, \"palaSzz\", holds U+0053, which is not in the alphabet of \"es\""},
{"rune":84,"result":"line 1, \"palaTzz\", holds U+0054, which is not in the alphabet of \"es\""},
{"rune":85,"result":"line 1, \"palaUzz\", holds U+0055, which is not in the alphabet of \"es\""},
{"rune":86,"result":"line 1, \"palaVzz\", holds U+0056, which is not in the alphabet of \"es\""},
{"rune":87,"result":"line 1, \"palaWzz\", holds U+0057, which is not in the alphabet of \"es\""},
{"rune":88,"result":"line 1, \"palaXzz\", holds U+0058, which is not in the alphabet of \"es\""},
{"rune":89,"result":"line 1, \"palaYzz\", holds U+0059, which is not in the alphabet of \"es\""},
{"rune":90,"result":"line 1, \"palaZzz\", holds U+005A, which is not in the alphabet of \"es\""},
{"rune":91,"result":"line 1, \"pala[zz\", holds U+005B, which is not in the alphabet of \"es\""},
{"rune":92,"result":"line 1, \"pala\\\\zz\", holds U+005C, which is not in the alphabet of \"es\""},
{"rune":93,"result":"line 1, \"pala]zz\", holds U+005D, which is not in the alphabet of \"es\""},
{"rune":94,"result":"line 1, \"pala^zz\", holds U+005E, which is not in the alphabet of \"es\""},
{"rune":95,"result":"line 1, \"pala_zz\", holds U+005F, which is not in the alphabet of \"es\""},
{"rune":96,"result":"line 1, \"pala`zz\", holds U+0060, which is not in the alphabet of \"es\""},
{"rune":97,"result":"ok"},
{"rune":98,"result":"ok"},
{"rune":99,"result":"ok"},
{"rune":100,"result":"ok"},
{"rune":101,"result":"ok"},
{"rune":102,"result":"ok"},
{"rune":103,"result":"ok"},
{"rune":104,"result":"ok"},
{"rune":105,"result":"ok"},
{"rune":106,"result":"ok"},
{"rune":107,"result":"ok"},
{"rune":108,"result":"ok"},
{"rune":109,"result":"ok"},
{"rune":110,"result":"ok"},
{"rune":111,"result":"ok"},
{"rune":112,"result":"ok"},
{"rune":113,"result":"ok"},
{"rune":114,"result":"ok"},
{"rune":115,"result":"ok"},
{"rune":116,"result":"ok"},
{"rune":117,"result":"ok"},
{"rune":118,"result":"ok"},
{"rune":119,"result":"ok"},
{"rune":120,"result":"ok"},
{"rune":121,"result":"ok"},
{"rune":122,"result":"ok"},
{"rune":123,"result":"line 1, \"pala{zz\", holds U+007B, which is not in the alphabet of \"es\""},
{"rune":124,"result":"line 1, \"pala|zz\", holds U+007C, which is not in the alphabet of \"es\""},
{"rune":125,"result":"line 1, \"pala}zz\", holds U+007D, which is not in the alphabet of \"es\""},
{"rune":126,"result":"line 1, \"pala~zz\", holds U+007E, which is not in the alphabet of \"es\""},
{"rune":127,"result":"line 1: wordkey: the words hold the control character U+007F"},
{"rune":128,"result":"line 1: wordkey: the words hold the control character U+0080"},
{"rune":129,"result":"line 1: wordkey: the words hold the control character U+0081"},
{"rune":130,"result":"line 1: wordkey: the words hold the control character U+0082"},
{"rune":131,"result":"line 1: wordkey: the words hold the control character U+0083"},
{"rune":132,"result":"line 1: wordkey: the words hold the control character U+0084"},
{"rune":133,"result":"line 1, \"pala\\u0085zz\", is not one word of 3 or more letters"},
{"rune":134,"result":"line 1: wordkey: the words hold the control character U+0086"},
{"rune":135,"result":"line 1: wordkey: the words hold the control character U+0087"},
{"rune":136,"result":"line 1: wordkey: the words hold the control character U+0088"},
{"rune":137,"result":"line 1: wordkey: the words hold the control character U+0089"},
{"rune":138,"result":"line 1: wordkey: the words hold the control character U+008A"},
{"rune":139,"result":"line 1: wordkey: the words hold the control character U+008B"},
{"rune":140,"result":"line 1: wordkey: the words hold the control character U+008C"},
{"rune":141,"result":"line 1: wordkey: the words hold the control character U+008D"},
{"rune":142,"result":"line 1: wordkey: the words hold the control character U+008E"},
{"rune":143,"result":"line 1: wordkey: the words hold the control character U+008F"},
{"rune":144,"result":"line 1: wordkey: the words hold the control character U+0090"},
{"rune":145,"result":"line 1: wordkey: the words hold the control character U+0091"},
{"rune":146,"result":"line 1: wordkey: the words hold the control character U+0092"},
{"rune":147,"result":"line 1: wordkey: the words hold the control character U+0093"},
{"rune":148,"result":"line 1: wordkey: the words hold the control character U+0094"},
{"rune":149,"result":"line 1: wordkey: the words hold the control character U+0095"},
{"rune":150,"result":"line 1: wordkey: the words hold the control character U+0096"},
{"rune":151,"result":"line 1: wordkey: the words hold the control character U+0097"},
{"rune":152,"result":"line 1: wordkey: the words hold the control character U+0098"},
{"rune":153,"result":"line 1: wordkey: the words hold the control character U+0099"},
{"rune":154,"result":"line 1: wordkey: the words hold the control character U+009A"},
{"rune":155,"result":"line 1: wordkey: the words hold the control character U+009B"},
{"rune":156,"result":"line 1: wordkey: the words hold the control character U+009C"},
{"rune":157,"result":"line 1: wordkey: the words hold the control character U+009D"},
{"rune":158,"result":"line 1: wordkey: the words hold the control character U+009E"},
{"rune":159,"result":"line 1: wordkey: the words hold the control character U+009F"},
{"rune":160,"result":"line 1, \"pala\\u00a0zz\", is not one word of 3 or more letters"},
{"rune":161,"result":"line 1, \"pala\u00a1zz\", holds U+00A1, which is not in the alphabet of \"es\""},
{"rune":162,"result":"line 1, \"pala\u00a2zz\", holds U+00A2, which is not in the alphabet of \"es\""},
{"rune":163,"result":"line 1, \"pala\u00a3zz\", holds U+00A3, which is not in the alphabet of \"es\""},
{"rune":164,"result":"line 1, \"pala\u00a4zz\", holds U+00A4, which is not in the alphabet of \"es\""},
{"rune":165,"result":"line 1, \"pala\u00a5zz\", holds U+00A5, which is not in the alphabet of \"es\""},
{"rune":166,"result":"line 1, \"pala\u00a6zz\", holds U+00A6, which is not in the alphabet of \"es\""},
{"rune":167,"result":"line 1, \"pala\u00a7zz\", holds U+00A7, which is not in the alphabet of \"es\""},
{"rune":168,"result":"line 1, \"pala\u00a8zz\", holds U+00A8, which is not in the alphabet of \"es\""},
{"rune":169,"result":"line 1, \"pala\u00a9zz\", holds U+00A9, which is not in the alphabet of \"es\""},
{"rune":170,"result":"line 1, \"pala\u00aazz\", holds U+00AA, which is not in the alphabet of \"es\""},
{"rune":171,"result":"line 1, \"pala\u00abzz\", holds U+00AB, which is not in the alphabet of \"es\""},
{"rune":172,"result":"line 1, \"pala\u00aczz\", holds U+00AC, which is not in the alphabet of \"es\""},
{"rune":173,"result":"line 1: wordkey: the words hold the invisible character U+00AD"},
{"rune":174,"result":"line 1, \"pala\u00aezz\", holds U+00AE, which is not in the alphabet of \"es\""},
{"rune":175,"result":"line 1, \"pala\u00afzz\", holds U+00AF, which is not in the alphabet of \"es\""},
{"rune":176,"result":"line 1, \"pala\u00b0zz\", holds U+00B0, which is not in the alphabet of \"es\""},
{"rune":177,"result":"line 1, \"pala\u00b1zz\", holds U+00B1, which is not in the alphabet of \"es\""},
{"rune":178,"result":"line 1, \"pala\u00b2zz\", holds U+00B2, which is not in the alphabet of \"es\""},
{"rune":179,"result":"line 1, \"pala\u00b3zz\", holds U+00B3, which is not in the alphabet of \"es\""},
{"rune":180,"result":"line 1, \"pala\u00b4zz\", holds U+00B4, which is not in the alphabet of \"es\""},
{"rune":181,"result":"line 1, \"pala\u00b5zz\", holds U+00B5, which is not in the alphabet of \"es\""},
{"rune":182,"result":"line 1, \"pala\u00b6zz\", holds U+00B6, which is not in the alphabet of \"es\""},
{"rune":183,"result":"line 1, \"pala\u00b7zz\", holds U+00B7, which is not in the alphabet of \"es\""},
{"rune":184,"result":"line 1, \"pala\u00b8zz\", holds U+00B8, which is not in the alphabet of \"es\""},
{"rune":185,"result":"line 1, \"pala\u00b9zz\", holds U+00B9, which is not in the alphabet of \"es\""},
{"rune":186,"result":"line 1, \"pala\u00bazz\", holds U+00BA, which is not in the alphabet of \"es\""},
{"rune":187,"result":"line 1, \"pala\u00bbzz\", holds U+00BB, which is not in the alphabet of \"es\""},
{"rune":188,"result":"line 1, \"pala\u00bczz\", holds U+00BC, which is not in the alphabet of \"es\""},
{"rune":189,"result":"line 1, \"pala\u00bdzz\", holds U+00BD, which is not in the alphabet of \"es\""},
{"rune":190,"result":"line 1, \"pala\u00bezz\", holds U+00BE, which is not in the alphabet of \"es\""},
{"rune":191,"result":"line 1, \"pala\u00bfzz\", holds U+00BF, which is not in the alphabet of \"es\""},
{"rune":192,"result":"line 1, \"pala\u00c0zz\", holds U+00C0, which is not in the alphabet of \"es\""},
{"rune":193,"result":"line 1, \"pala\u00c1zz\", holds U+00C1, which is not in the alphabet of \"es\""},
{"rune":194,"result":"line 1, \"pala\u00c2zz\", holds U+00C2, which is not in the alphabet of \"es\""},
{"rune":195,"result":"line 1, \"pala\u00c3zz\", holds U+00C3, which is not in the alphabet of \"es\""},
{"rune":196,"result":"line 1, \"pala\u00c4zz\", holds U+00C4, which is not in the alphabet of \"es\""},
{"rune":197,"result":"line 1, \"pala\u00c5zz\", holds U+00C5, which is not in the alphabet of \"es\""},
{"rune":198,"result":"line 1, \"pala\u00c6zz\", holds U+00C6, which is not in the alphabet of \"es\""},
{"rune":199,"result":"line 1, \"pala\u00c7zz\", holds U+00C7, which is not in the alphabet of \"es\""},
{"rune":200,"result":"line 1, \"pala\u00c8zz\", holds U+00C8, which is not in the alphabet of \"es\""},
{"rune":201,"result":"line 1, \"pala\u00c9zz\", holds U+00C9, which is not in the alphabet of \"es\""},
{"rune":202,"result":"line 1, \"pala\u00cazz\", holds U+00CA, which is not in the alphabet of \"es\""},
{"rune":203,"result":"line 1, \"pala\u00cbzz\", holds U+00CB, which is not in the alphabet of \"es\""},
{"rune":204,"result":"line 1, \"pala\u00cczz\", holds U+00CC, which is not in the alphabet of \"es\""},
{"rune":205,"result":"line 1, \"pala\u00cdzz\", holds U+00CD, which is not in the alphabet of \"es\""},
{"rune":206,"result":"line 1, \"pala\u00cezz\", holds U+00CE, which is not in the alphabet of \"es\""},
{"rune":207,"result":"line 1, \"pala\u00cfzz\", holds U+00CF, which is not in the alphabet of \"es\""},
{"rune":208,"result":"line 1, \"pala\u00d0zz\", holds U+00D0, which is not in the alphabet of \"es\""},
{"rune":209,"result":"line 1, \"pala\u00d1zz\", holds U+00D1, which is not in the alphabet of \"es\""},
{"rune":210,"result":"line 1, \"pala\u00d2zz\", holds U+00D2, which is not in the alphabet of \"es\""},
{"rune":211,"result":"line 1, \"pala\u00d3zz\", holds U+00D3, which is not in the alphabet of \"es\""},
{"rune":212,"result":"line 1, \"pala\u00d4zz\", holds U+00D4, which is not in the alphabet of \"es\""},
{"rune":213,"result":"line 1, \"pala\u00d5zz\", holds U+00D5, which is not in the alphabet of \"es\""},
{"rune":214,"result":"line 1, \"pala\u00d6zz\", holds U+00D6, which is not in the alphabet of \"es\""},
{"rune":215,"result":"line 1, \"pala\u00d7zz\", holds U+00D7, which is not in the alphabet of \"es\""},
{"rune":216,"result":"line 1, \"pala\u00d8zz\", holds U+00D8, which is not in the alphabet of \"es\""},
{"rune":217,"result":"line 1, \"pala\u00d9zz\", holds U+00D9, which is not in the alphabet of \"es\""},
{"rune":218,"result":"line 1, \"pala\u00dazz\", holds U+00DA, which is not in the alphabet of \"es\""},
{"rune":219,"result":"line 1, \"pala\u00dbzz\", holds U+00DB, which is not in the alphabet of \"es\""},
{"rune":220,"result":"line 1, \"pala\u00dczz\", holds U+00DC, which is not in the alphabet of \"es\""},
{"rune":221,"result":"line 1, \"pala\u00ddzz\", holds U+00DD, which is not in the alphabet of \"es\""},
{"rune":222,"result":"line 1, \"pala\u00dezz\", holds U+00DE, which is not in the alphabet of \"es\""},
{"rune":223,"result":"line 1, \"pala\u00dfzz\", holds U+00DF, which is not in the alphabet of \"es\""},
{"rune":224,"result":"line 1, \"pala\u00e0zz\", holds U+00E0, which is not in the alphabet of \"es\""},
{"rune":225,"result":"ok"},
{"rune":226,"result":"line 1, \"pala\u00e2zz\", holds U+00E2, which is not in the alphabet of \"es\""},
{"rune":227,"result":"line 1, \"pala\u00e3zz\", holds U+00E3, which is not in the alphabet of \"es\""},
{"rune":228,"result":"line 1, \"pala\u00e4zz\", holds U+00E4, which is not in the alphabet of \"es\""},
{"rune":229,"result":"line 1, \"pala\u00e5zz\", holds U+00E5, which is not in the alphabet of \"es\""},
{"rune":230,"result":"line 1, \"pala\u00e6zz\", holds U+00E6, which is not in the alphabet of \"es\""},
{"rune":231,"result":"line 1, \"pala\u00e7zz\", holds U+00E7, which is not in the alphabet of \"es\""},
{"rune":232,"result":"line 1, \"pala\u00e8zz\", holds U+00E8, which is not in the alphabet of \"es\""},
{"rune":233,"result":"ok"},
{"rune":234,"result":"line 1, \"pala\u00eazz\", holds U+00EA, which is not in the alphabet of \"es\""},
{"rune":235,"result":"line 1, \"pala\u00ebzz\", holds U+00EB, which is not in the alphabet of \"es\""},
{"rune":236,"result":"line 1, \"pala\u00eczz\", holds U+00EC, which is not in the alphabet of \"es\""},
{"rune":237,"result":"ok"},
{"rune":238,"result":"line 1, \"pala\u00eezz\", holds U+00EE, which is not in the alphabet of \"es\""},
{"rune":239,"result":"line 1, \"pala\u00efzz\", holds U+00EF, which is not in the alphabet of \"es\""},
{"rune":240,"result":"line 1, \"pala\u00f0zz\", holds U+00F0, which is not in the alphabet of \"es\""},
{"rune":241,"result":"ok"},
{"rune":242,"result":"line 1, \"pala\u00f2zz\", holds U+00F2, which is not in the alphabet of \"es\""},
{"rune":243,"result":"ok"},
{"rune":244,"result":"line 1, \"pala\u00f4zz\", holds U+00F4, which is not in the alphabet of \"es\""},
{"rune":245,"result":"line 1, \"pala\u00f5zz\", holds U+00F5, which is not in the alphabet of \"es\""},
{"rune":246,"result":"line 1, \"pala\u00f6zz\", holds U+00F6, which is not in the alphabet of \"es\""},
{"rune":247,"result":"line 1, \"pala\u00f7zz\", holds U+00F7, which is not in the alphabet of \"es\""},
{"rune":248,"result":"line 1, \"pala\u00f8zz\", holds U+00F8, which is not in the alphabet of \"es\""},
{"rune":249,"result":"line 1, \"pala\u00f9zz\", holds U+00F9, which is not in the alphabet of \"es\""},
{"rune":250,"result":"ok"},
{"rune":251,"result":"line 1, \"pala\u00fbzz\", holds U+00FB, which is not in the alphabet of \"es\""},
{"rune":252,"result":"ok"},
{"rune":253,"result":"line 1, \"pala\u00fdzz\", holds U+00FD, which is not in the alphabet of \"es\""},
{"rune":254,"result":"line 1, \"pala\u00fezz\", holds U+00FE, which is not in the alphabet of \"es\""},
{"rune":255,"result":"line 1, \"pala\u00ffzz\", holds U+00FF, which is not in the alphabet of \"es\""},
{"rune":256,"result":"line 1, \"pala\u0100zz\", holds U+0100, which is not in the alphabet of \"es\""},
{"rune":257,"result":"line 1, \"pala\u0101zz\", holds U+0101, which is not in the alphabet of \"es\""},
{"rune":258,"result":"line 1, \"pala\u0102zz\", holds U+0102, which is not in the alphabet of \"es\""},
{"rune":259,"result":"line 1, \"pala\u0103zz\", holds U+0103, which is not in the alphabet of \"es\""},
{"rune":260,"result":"line 1, \"pala\u0104zz\", holds U+0104, which is not in the alphabet of \"es\""},
{"rune":261,"result":"line 1, \"pala\u0105zz\", holds U+0105, which is not in the alphabet of \"es\""},
{"rune":262,"result":"line 1, \"pala\u0106zz\", holds U+0106, which is not in the alphabet of \"es\""},
{"rune":263,"result":"line 1, \"pala\u0107zz\", holds U+0107, which is not in the alphabet of \"es\""},
{"rune":264,"result":"line 1, \"pala\u0108zz\", holds U+0108, which is not in the alphabet of \"es\""},
{"rune":265,"result":"line 1, \"pala\u0109zz\", holds U+0109, which is not in the alphabet of \"es\""},
{"rune":266,"result":"line 1, \"pala\u010azz\", holds U+010A, which is not in the alphabet of \"es\""},
{"rune":267,"result":"line 1, \"pala\u010bzz\", holds U+010B, which is not in the alphabet of \"es\""},
{"rune":268,"result":"line 1, \"pala\u010czz\", holds U+010C, which is not in the alphabet of \"es\""},
{"rune":269,"result":"line 1, \"pala\u010dzz\", holds U+010D, which is not in the alphabet of \"es\""},
{"rune":270,"result":"line 1, \"pala\u010ezz\", holds U+010E, which is not in the alphabet of \"es\""},
{"rune":271,"result":"line 1, \"pala\u010fzz\", holds U+010F, which is not in the alphabet of \"es\""},
{"rune":272,"result":"line 1, \"pala\u0110zz\", holds U+0110, which is not in the alphabet of \"es\""},
{"rune":273,"result":"line 1, \"pala\u0111zz\", holds U+0111, which is not in the alphabet of \"es\""},
{"rune":274,"result":"line 1, \"pala\u0112zz\", holds U+0112, which is not in the alphabet of \"es\""},
{"rune":275,"result":"line 1, \"pala\u0113zz\", holds U+0113, which is not in the alphabet of \"es\""},
{"rune":276,"result":"line 1, \"pala\u0114zz\", holds U+0114, which is not in the alphabet of \"es\""},
{"rune":277,"result":"line 1, \"pala\u0115zz\", holds U+0115, which is not in the alphabet of \"es\""},
{"rune":278,"result":"line 1, \"pala\u0116zz\", holds U+0116, which is not in the alphabet of \"es\""},
{"rune":279,"result":"line 1, \"pala\u0117zz\", holds U+0117, which is not in the alphabet of \"es\""},
{"rune":280,"result":"line 1, \"pala\u0118zz\", holds U+0118, which is not in the alphabet of \"es\""},
{"rune":281,"result":"line 1, \"pala\u0119zz\", holds U+0119, which is not in the alphabet of \"es\""},
{"rune":282,"result":"line 1, \"pala\u011azz\", holds U+011A, which is not in the alphabet of \"es\""},
{"rune":283,"result":"line 1, \"pala\u011bzz\", holds U+011B, which is not in the alphabet of \"es\""},
{"rune":284,"result":"line 1, \"pala\u011czz\", holds U+011C, which is not in the alphabet of \"es\""},
{"rune":285,"result":"line 1, \"pala\u011dzz\", holds U+011D, which is not in the alphabet of \"es\""},
{"rune":286,"result":"line 1, \"pala\u011ezz\", holds U+011E, which is not in the alphabet of \"es\""},
{"rune":287,"result":"line 1, \"pala\u011fzz\", holds U+011F, which is not in the alphabet of \"es\""},
{"rune":288,"result":"line 1, \"pala\u0120zz\", holds U+0120, which is not in the alphabet of \"es\""},
{"rune":289,"result":"line 1, \"pala\u0121zz\", holds U+0121, which is not in the alphabet of \"es\""},
{"rune":290,"result":"line 1, \"pala\u0122zz\", holds U+0122, which is not in the alphabet of \"es\""},
{"rune":291,"result":"line 1, \"pala\u0123zz\", holds U+0123, which is not in the alphabet of \"es\""},
{"rune":292,"result":"line 1, \"pala\u0124zz\", holds U+0124, which is not in the alphabet of \"es\""},
{"rune":293,"result":"line 1, \"pala\u0125zz\", holds U+0125, which is not in the alphabet of \"es\""},
{"rune":294,"result":"line 1, \"pala\u0126zz\", holds U+0126, which is not in the alphabet of \"es\""},
{"rune":295,"result":"line 1, \"pala\u0127zz\", holds U+0127, which is not in the alphabet of \"es\""},
{"rune":296,"result":"line 1, \"pala\u0128zz\", holds U+0128, which is not in the alphabet of \"es\""},
{"rune":297,"result":"line 1, \"pala\u0129zz\", holds U+0129, which is not in the alphabet of \"es\""},
{"rune":298,"result":"line 1, \"pala\u012azz\", holds U+012A, which is not in the alphabet of \"es\""},
{"rune":299,"result":"line 1, \"pala\u012bzz\", holds U+012B, which is not in the alphabet of \"es\""},
{"rune":300,"result":"line 1, \"pala\u012czz\", holds U+012C, which is not in the alphabet of \"es\""},
{"rune":301,"result":"line 1, \"pala\u012dzz\", holds U+012D, which is not in the alphabet of \"es\""},
{"rune":302,"result":"line 1, \"pala\u012ezz\", holds U+012E, which is not in the alphabet of \"es\""},
{"rune":303,"result":"line 1, \"pala\u012fzz\", holds U+012F, which is not in the alphabet of \"es\""},
{"rune":304,"result":"line 1, \"pala\u0130zz\", holds U+0130, which is not in the alphabet of \"es\""},
{"rune":305,"result":"line 1, \"pala\u0131zz\", holds U+0131, which is not in the alphabet of \"es\""},
{"rune":306,"result":"line 1, \"pala\u0132zz\", holds U+0132, which is not in the alphabet of \"es\""},
{"rune":307,"result":"line 1, \"pala\u0133zz\", holds U+0133, which is not in the alphabet of \"es\""},
{"rune":308,"result":"line 1, \"pala\u0134zz\", holds U+0134, which is not in the alphabet of \"es\""},
{"rune":309,"result":"line 1, \"pala\u0135zz\", holds U+0135, which is not in the alphabet of \"es\""},
{"rune":310,"result":"line 1, \"pala\u0136zz\", holds U+0136, which is not in the alphabet of \"es\""},
{"rune":311,"result":"line 1, \"pala\u0137zz\", holds U+0137, which is not in the alphabet of \"es\""},
{"rune":312,"result":"line 1, \"pala\u0138zz\", holds U+0138, which is not in the alphabet of \"es\""},
{"rune":313,"result":"line 1, \"pala\u0139zz\", holds U+0139, which is not in the alphabet of \"es\""},
{"rune":314,"result":"line 1, \"pala\u013azz\", holds U+013A, which is not in the alphabet of \"es\""},
{"rune":315,"result":"line 1, \"pala\u013bzz\", holds U+013B, which is not in the alphabet of \"es\""},
{"rune":316,"result":"line 1, \"pala\u013czz\", holds U+013C, which is not in the alphabet of \"es\""},
{"rune":317,"result":"line 1, \"pala\u013dzz\", holds U+013D, which is not in the alphabet of \"es\""},
{"rune":318,"result":"line 1, \"pala\u013ezz\", holds U+013E, which is not in the alphabet of \"es\""},
{"rune":319,"result":"line 1, \"pala\u013fzz\", holds U+013F, which is not in the alphabet of \"es\""},
{"rune":320,"result":"line 1, \"pala\u0140zz\", holds U+0140, which is not in the alphabet of \"es\""},
{"rune":321,"result":"line 1, \"pala\u0141zz\", holds U+0141, which is not in the alphabet of \"es\""},
{"rune":322,"result":"line 1, \"pala\u0142zz\", holds U+0142, which is not in the alphabet of \"es\""},
{"rune":323,"result":"line 1, \"pala\u0143zz\", holds U+0143, which is not in the alphabet of \"es\""},
{"rune":324,"result":"line 1, \"pala\u0144zz\", holds U+0144, which is not in the alphabet of \"es\""},
{"rune":325,"result":"line 1, \"pala\u0145zz\", holds U+0145, which is not in the alphabet of \"es\""},
{"rune":326,"result":"line 1, \"pala\u0146zz\", holds U+0146, which is not in the alphabet of \"es\""},
{"rune":327,"result":"line 1, \"pala\u0147zz\", holds U+0147, which is not in the alphabet of \"es\""},
{"rune":328,"result":"line 1, \"pala\u0148zz\", holds U+0148, which is not in the alphabet of \"es\""},
{"rune":329,"result":"line 1, \"pala\u0149zz\", holds U+0149, which is not in the alphabet of \"es\""},
{"rune":330,"result":"line 1, \"pala\u014azz\", holds U+014A, which is not in the alphabet of \"es\""},
{"rune":331,"result":"line 1, \"pala\u014bzz\", holds U+014B, which is not in the alphabet of \"es\""},
{"rune":332,"result":"line 1, \"pala\u014czz\", holds U+014C, which is not in the alphabet of \"es\""},
{"rune":333,"result":"line 1, \"pala\u014dzz\", holds U+014D, which is not in the alphabet of \"es\""},
{"rune":334,"result":"line 1, \"pala\u014ezz\", holds U+014E, which is not in the alphabet of \"es\""},
{"rune":335,"result":"line 1, \"pala\u014fzz\", holds U+014F, which is not in the alphabet of \"es\""},
{"rune":336,"result":"line 1, \"pala\u0150zz\", holds U+0150, which is not in the alphabet of \"es\""},
{"rune":337,"result":"line 1, \"pala\u0151zz\", holds U+0151, which is not in the alphabet of \"es\""},
{"rune":338,"result":"line 1, \"pala\u0152zz\", holds U+0152, which is not in the alphabet of \"es\""},
{"rune":339,"result":"line 1, \"pala\u0153zz\", holds U+0153, which is not in the alphabet of \"es\""},
{"rune":340,"result":"line 1, \"pala\u0154zz\", holds U+0154, which is not in the alphabet of \"es\""},
{"rune":341,"result":"line 1, \"pala\u0155zz\", holds U+0155, which is not in the alphabet of \"es\""},
{"rune":342,"result":"line 1, \"pala\u0156zz\", holds U+0156, which is not in the alphabet of \"es\""},
{"rune":343,"result":"line 1, \"pala\u0157zz\", holds U+0157, which is not in the alphabet of \"es\""},
{"rune":344,"result":"line 1, \"pala\u0158zz\", holds U+0158, which is not in the alphabet of \"es\""},
{"rune":345,"result":"line 1, \"pala\u0159zz\", holds U+0159, which is not in the alphabet of \"es\""},
{"rune":346,"result":"line 1, \"pala\u015azz\", holds U+015A, which is not in the alphabet of \"es\""},
{"rune":347,"result":"line 1, \"pala\u015bzz\", holds U+015B, which is not in the alphabet of \"es\""},
{"rune":348,"result":"line 1, \"pala\u015czz\", holds U+015C, which is not in the alphabet of \"es\""},
{"rune":349,"result":"line 1, \"pala\u015dzz\", holds U+015D, which is not in the alphabet of \"es\""},
{"rune":350,"result":"line 1, \"pala\u015ezz\", holds U+015E, which is not in the alphabet of \"es\""},
{"rune":351,"result":"line 1, \"pala\u015fzz\", holds U+015F, which is not in the alphabet of \"es\""},
{"rune":352,"result":"line 1, \"pala\u0160zz\", holds U+0160, which is not in the alphabet of \"es\""},
{"rune":353,"result":"line 1, \"pala\u0161zz\", holds U+0161, which is not in the alphabet of \"es\""},
{"rune":354,"result":"line 1, \"pala\u0162zz\", holds U+0162, which is not in the alphabet of \"es\""},
{"rune":355,"result":"line 1, \"pala\u0163zz\", holds U+0163, which is not in the alphabet of \"es\""},
{"rune":356,"result":"line 1, \"pala\u0164zz\", holds U+0164, which is not in the alphabet of \"es\""},
{"rune":357,"result":"line 1, \"pala\u0165zz\", holds U+0165, which is not in the alphabet of \"es\""},
{"rune":358,"result":"line 1, \"pala\u0166zz\", holds U+0166, which is not in the alphabet of \"es\""},
{"rune":359,"result":"line 1, \"pala\u0167zz\", holds U+0167, which is not in the alphabet of \"es\""},
{"rune":360,"result":"line 1, \"pala\u0168zz\", holds U+0168, which is not in the alphabet of \"es\""},
{"rune":361,"result":"line 1, \"pala\u0169zz\", holds U+0169, which is not in the alphabet of \"es\""},
{"rune":362,"result":"line 1, \"pala\u016azz\", holds U+016A, which is not in the alphabet of \"es\""},
{"rune":363,"result":"line 1, \"pala\u016bzz\", holds U+016B, which is not in the alphabet of \"es\""},
{"rune":364,"result":"line 1, \"pala\u016czz\", holds U+016C, which is not in the alphabet of \"es\""},
{"rune":365,"result":"line 1, \"pala\u016dzz\", holds U+016D, which is not in the alphabet of \"es\""},
{"rune":366,"result":"line 1, \"pala\u016ezz\", holds U+016E, which is not in the alphabet of \"es\""},
{"rune":367,"result":"line 1, \"pala\u016fzz\", holds U+016F, which is not in the alphabet of \"es\""},
{"rune":368,"result":"line 1, \"pala\u0170zz\", holds U+0170, which is not in the alphabet of \"es\""},
{"rune":369,"result":"line 1, \"pala\u0171zz\", holds U+0171, which is not in the alphabet of \"es\""},
{"rune":370,"result":"line 1, \"pala\u0172zz\", holds U+0172, which is not in the alphabet of \"es\""},
{"rune":371,"result":"line 1, \"pala\u0173zz\", holds U+0173, which is not in the alphabet of \"es\""},
{"rune":372,"result":"line 1, \"pala\u0174zz\", holds U+0174, which is not in the alphabet of \"es\""},
{"rune":373,"result":"line 1, \"pala\u0175zz\", holds U+0175, which is not in the alphabet of \"es\""},
{"rune":374,"result":"line 1, \"pala\u0176zz\", holds U+0176, which is not in the alphabet of \"es\""},
{"rune":375,"result":"line 1, \"pala\u0177zz\", holds U+0177, which is not in the alphabet of \"es\""},
{"rune":376,"result":"line 1, \"pala\u0178zz\", holds U+0178, which is not in the alphabet of \"es\""},
{"rune":377,"result":"line 1, \"pala\u0179zz\", holds U+0179, which is not in the alphabet of \"es\""},
{"rune":378,"result":"line 1, \"pala\u017azz\", holds U+017A, which is not in the alphabet of \"es\""},
{"rune":379,"result":"line 1, \"pala\u017bzz\", holds U+017B, which is not in the alphabet of \"es\""},
{"rune":380,"result":"line 1, \"pala\u017czz\", holds U+017C, which is not in the alphabet of \"es\""},
{"rune":381,"result":"line 1, \"pala\u017dzz\", holds U+017D, which is not in the alphabet of \"es\""},
{"rune":382,"result":"line 1, \"pala\u017ezz\", holds U+017E, which is not in the alphabet of \"es\""},
{"rune":383,"result":"line 1, \"pala\u017fzz\", holds U+017F, which is not in the alphabet of \"es\""}
],
"generate": [
{"name":"6 words of the Spanish list","list":"es","size":7776,"n":6,"stream":{"kind":"seeded","seed":"wordkey.Generate es 6"},"indices":[7552,321,1677,3637,3081,2378],"words":["vertebral","almirante","cojonudo","habla","ex\u00f3tico","diez"],"read":12,"next":"eb4e23cd"},
{"name":"7 words of the Spanish list","list":"es","size":7776,"n":7,"stream":{"kind":"seeded","seed":"wordkey.Generate es 7"},"indices":[121,5143,3291,9,13,6590,1402],"words":["adecuado","obsequio","forzar","abejorro","abofetear","sargento","cava"],"read":14,"next":"15c97f0a"},
{"name":"8 words of the Spanish list","list":"es","size":7776,"n":8,"stream":{"kind":"seeded","seed":"wordkey.Generate es 8"},"indices":[7419,3418,7185,4830,7558,168,7028,3097],"words":["usado","gamba","tobillo","mongol","vestidor","afeminado","tardanza","faja"],"read":16,"next":"c83ca329"},
{"name":"12 words of the Spanish list","list":"es","size":7776,"n":12,"stream":{"kind":"seeded","seed":"wordkey.Generate es 12"},"indices":[3086,1561,5885,1894,7092,3918,7535,1859,3391,4059,7054,1332],"words":["fachada","cicatriz","prodigio","coqueta","tener","infancia","verbena","contable","f\u00f3sil","jaque","tejido","carn\u00edvoro"],"read":24,"next":"78624c9c"},
{"name":"24 words of the Spanish list","list":"es","size":7776,"n":24,"stream":{"kind":"seeded","seed":"wordkey.Generate es 24"},"indices":[7726,1419,6867,1744,1845,923,7735,5731,4412,2730,924,7147,7166,2923,5612,5119,1213,4184,276,4448,5476,2429,7382,5994],"words":["zumo","cebolla","sport","comit\u00e9","consorcio","bestial","\u00e1mbito","polilla","l\u00f3gica","enigma","beta","tic","tinta","estafador","piedra","nutria","camerino","lat\u00edn","alc\u00e1ntara","magneto","pegar","dise\u00f1o","t\u00e1ctica","puzle"],"read":50,"next":"ce61e5db"},
{"name":"6 words of the Spanish list, SHA-256 counter blocks","list":"es","size":7776,"n":6,"stream":{"kind":"counter","seed":"wordkey.Generate counter 6"},"indices":[1614,4473,6701,7267,3452,1442],"words":["claudia","maligno","setiembre","trasladar","gaveta","cenicero"],"read":14,"next":"4a80956b"},
{"name":"7 words of the Spanish list, SHA-256 counter blocks","list":"es","size":7776,"n":7,"stream":{"kind":"counter","seed":"wordkey.Generate counter 7"},"indices":[6542,1450,4854,3563,2426,2781,6846],"words":["salom\u00f3n","centrado","mon\u00f3tono","green","disecci\u00f3n","episodio","soplete"],"read":16,"next":"144001d1"},
{"name":"12 words of the Spanish list, SHA-256 counter blocks","list":"es","size":7776,"n":12,"stream":{"kind":"counter","seed":"wordkey.Generate counter 12"},"indices":[7021,5055,1483,6826,6779,4834,3251,7164,898,4404,5319,7648],"words":["tapete","niebla","chacal","soluci\u00f3n","sirope","mono","flotante","tim\u00f3n","beb\u00e9","l\u00e1tigo","palmera","vocero"],"read":26,"next":"425e314b"},
{"name":"3888 words of the Spanish list, the most","list":"es","size":7776,"n":3888,"stream":{"kind":"seeded","seed":"wordkey.Generate es 3888"},"indices":[109,424,5504,6382,3300,4291,234,5711,1211,7623,2219,264,2945,2139,3937,3892,3125,1445,2447,1461,6236,3631,6501,1031,661,4190,4414,3315,5349,4693,5513,2640,5767,593,3379,4296,487,6785,5936,6207,2874,715,4666,2039,4752,2027,4686,1501,7394,934,1968,3500,532,6806,7676,4042,6953,140,21,5822,3739,590,6547,2660,7554,2937,1653,1015,2949,2179,2392,2349,300,5144,565,3975,4062,5844,2110,3162,1481,758,4106,7164,2165,5134,2914,1948,1752,5221,6008,2721,265,3260,783,6350,5561,6750,2801,1573,303,699,4586,4753,164,1315,7700,6338,2162,870,2331,7098,4309,3391,5657,6819,429,7698,1542,4508,3832,6466,6540,2591,3922,4470,3770,4193,2085,6164,6484,5744,841,4354,3698,2251,7256,5424,3148,6993,576,5004,160,7200,4102,4246,5436,2791,2968,521,6471,290,3538,922,3047,284,6051,335,5831,7589,132,1823,315,3724,2211,3488,5615,2159,7443,1239,7399,1216,6981,3680,4702,3471,5860,7134,6610,6875,6612,5330,918,2840,6768,1382,5131,5415,4885,6701,7386,3385,6983,4798,1104,4687,1611,4101,3521,4675,5996,2160,6633,98,7361,3753,385,6128,24,6183,3849,4347,1060,4075,4284,3016,2002,3475,431,5042,1850,604,6238,1558,1640,5698,4860,2539,374,5542,5136,5878,7172,3791,7511,7453,6039,3258,1578,7624,1909,6600,2453,6258,1255,4053,2209,85,1811,4684,2461,6041,6656,3275,1930,5359,3726,7147,862,1967,1224,3117,7376,5516,6711,2855,3314,3103,1374,914,6294,1940,4377,2468,6342,3845,6299,4523,3948,332,2974,2369,7303,1271,1586,5864,2616,1528,3382,6821,7398,2063,742,6861,2490,3108,319,4800,7419,6689,3659,2270,1588,2627,7101,236,4942,503,3859,5481,6917,376,415,4852,7703,229,5875,4832,2381,480,3782,4541,243,678,1636,2001,3263,3618,837,4987,5676,2283,2249,5977,6948,3685,4493,2609,6625,7364,3968,1582,1829,6156,3908,3588,1851,5129,2879,1905,7683,6157,4569,5554,6687,1728,7334,2347,6161,7632,5811,4488,7718,3543,669,3418,6003,1549,5534,1956,6065,3085,7467,548,66,5324,3386,3390,4384,3862,7451,5958,2662,4997,3666,1876,4945,3064,1412,3143,443,3930,7138,5566,6494,4689,3645,7318,3989,240,2713,4780,6388,4533,6491,4253,3478,3549,7442,3637,4412,7633,4585,5148,4700,3946,974,6666,6082,4883,1296,6313,6578,6319,71,409,6918,3575,7299,4581,6997,1267,1765,722,3055,6807,150,2008,212,6590,5185,4738,6191,4046,2956,4950,6492,2711,3116,1194,4469,485,1621,7143,100,4252,6880,7756,835,3400,6949,3912,2773,2465,4868,1854,2601,203,7073,4295,2338,625,5626,5345,2115,3191,3790,3045,2077,5555,3737,6759,1303,3470,4583,3182,4338,4490,5017,916,2106,2418,117,701,7320,2520,7149,6067,4634,1603,3848,2051,3367,1134,1757,5765,13,2295,5920,3164,3636,2820,1475,3353,4882,7002,5850,111,2679,3371,4467,7103,5500,1879,7689,7711,1628,490,2282,5075,7490,7521,4876,3747,1444,6461,3282,7472,65,6052,1276,931,1385,1706,2047,3006,3643,6327,7714,334,6831,4748,6969,4906,4460,5059,4812,1226,2310,2442,626,5640,3589,207,6867,643,611,5574,3453,906,1045,6838,2473,3857,4553,7040,6853,5927,6122,5243,3082,6980,3328,4992,6648,2527,5567,7310,5808,3421,7438,6261,2878,7449,5836,364,619,7759,7309,2100,23,327,1386,4009,1160,1952,5176,4982,6279,1534,4126,291,2606,4263,3038,5952,7238,5487,4165,5925,4650,7129,47,5834,5466,1861,3993,5523,4550,4095,1231,3866,423,6954,6425,3415,7296,5579,4334,7537,3149,6770,250,1275,2519,4939,6397,1436,2626,7416,4631,1651,1939,6010,4970,7479,4312,1237,7571,5892,151,5797,4557,804,1218,5088,4838,413,7405,4803,7527,3865,627,2311,5616,1359,3765,1815,4233,1957,7304,4676,5722,4747,3461,2862,7100,7210,4408,5778,5155,6296,2074,7535,5073,5713,7673,5116,2556,4418,800,6974,2733,7091,3351,4321,4639,378,6842,2993,5391,5140,248,360,197,3183,682,2141,3950,7434,2290,2798,4242,697,7461,7509,5874,1368,3509,4292,2574,2419,2337,3526,3591,6226,6698,5807,1472,5565,6034,5480,1172,339,2748,1022,4613,2569,575,2774,1184,219,4153,4603,7563,3594,4304,5180,5437,6670,7355,4833,375,6184,1245,3334,4311,2312,6510,5897,1460,5354,2098,5545,786,7315,6511,1565,1465,705,7342,4630,6566,7533,6371,1537,6102,7491,41,6518,329,1141,3793,34,3144,6874,3073,17,5665,5337,7013,693,7679,2863,4057,3921,3043,3978,6030,76,5478,2044,5686,56
{"name":"6 words of 12","size":12,"n":6,"stream":{"kind":"seeded","seed":"wordkey.Generate 12"},"indices":[4,11,8,9,7,5],"read":14,"next":"077eddf3"},
{"name":"6 words of 13","size":13,"n":6,"stream":{"kind":"seeded","seed":"wordkey.Generate 13"},"indices":[5,6,4,3,2,11],"read":11,"next":"83aec74e"},
{"name":"6 words of 16","size":16,"n":6,"stream":{"kind":"seeded","seed":"wordkey.Generate 16"},"indices":[11,3,10,15,7,8],"read":8,"next":"c189b683"},
{"name":"6 words of 17","size":17,"n":6,"stream":{"kind":"seeded","seed":"wordkey.Generate 17"},"indices":[9,5,3,11,12,7],"read":9,"next":"b82b7743"},
{"name":"6 words of 100","size":100,"n":6,"stream":{"kind":"seeded","seed":"wordkey.Generate 100"},"indices":[77,18,41,48,58,60],"read":8,"next":"976596b8"},
{"name":"6 words of 255","size":255,"n":6,"stream":{"kind":"seeded","seed":"wordkey.Generate 255"},"indices":[179,162,55,253,133,126],"read":6,"next":"6c621f75"},
{"name":"6 words of 256","size":256,"n":6,"stream":{"kind":"seeded","seed":"wordkey.Generate 256"},"indices":[42,59,184,44,21,16],"read":6,"next":"caa45192"},
{"name":"6 words of 257","size":257,"n":6,"stream":{"kind":"seeded","seed":"wordkey.Generate 257"},"indices":[135,210,242,65,154,160],"read":26,"next":"c8778946"},
{"name":"6 words of 2047","size":2047,"n":6,"stream":{"kind":"seeded","seed":"wordkey.Generate 2047"},"indices":[1427,667,604,2042,1632,1698],"read":12,"next":"12f5bd68"},
{"name":"6 words of 2048","size":2048,"n":6,"stream":{"kind":"seeded","seed":"wordkey.Generate 2048"},"indices":[717,1383,705,229,1916,1660],"read":12,"next":"514e0658"},
{"name":"6 words of 2049","size":2049,"n":6,"stream":{"kind":"seeded","seed":"wordkey.Generate 2049"},"indices":[1896,604,1955,1437,373,563],"read":16,"next":"1f552afe"},
{"name":"6 words of 4096","size":4096,"n":6,"stream":{"kind":"seeded","seed":"wordkey.Generate 4096"},"indices":[3366,329,259,1101,997,1552],"read":12,"next":"ba4a07de"},
{"name":"6 words of 7775","size":7775,"n":6,"stream":{"kind":"seeded","seed":"wordkey.Generate 7775"},"indices":[1556,5053,533,6292,2396,3983],"read":14,"next":"6d6f2e06"},
{"name":"6 words of 7776","size":7776,"n":6,"stream":{"kind":"seeded","seed":"wordkey.Generate 7776"},"indices":[1522,1052,5366,4760,6603,6405],"read":14,"next":"1e028f83"},
{"name":"6 words of 7777","size":7777,"n":6,"stream":{"kind":"seeded","seed":"wordkey.Generate 7777"},"indices":[4697,2832,2324,6110,1441,1088],"read":12,"next":"debd0218"},
{"name":"6 words of 8192","size":8192,"n":6,"stream":{"kind":"seeded","seed":"wordkey.Generate 8192"},"indices":[5622,6365,2307,4380,6765,5885],"read":12,"next":"ed1fc6e1"},
{"name":"6 words of 65535","size":65535,"n":6,"stream":{"kind":"seeded","seed":"wordkey.Generate 65535"},"indices":[52053,57393,60069,33726,7248,37022],"read":12,"next":"dfc89fd4"},
{"name":"6 words of 65536","size":65536,"n":6,"stream":{"kind":"seeded","seed":"wordkey.Generate 65536"},"indices":[14606,12671,30058,2426,45855,20473],"read":12,"next":"dc5fb7c7"},
{"name":"6 words of 65537","size":65537,"n":6,"stream":{"kind":"seeded","seed":"wordkey.Generate 65537"},"indices":[56692,4788,29478,53493,26980,44196],"read":36,"next":"26cd818c"},
{"name":"6 words of 100000","size":100000,"n":6,"stream":{"kind":"seeded","seed":"wordkey.Generate 100000"},"indices":[69115,76031,73262,26566,2709,63951],"read":30,"next":"316abb7d"},
{"name":"6 words of 1048577","size":1048577,"n":6,"stream":{"kind":"seeded","seed":"wordkey.Generate 1048577"},"indices":[900768,122124,269913,466370,711218,306573],"read":33,"next":"75d20cfa"},
{"name":"12 words of 65537, SHA-256 counter blocks","size":65537,"n":12,"stream":{"kind":"counter","seed":"wordkey.Generate counter 65537"},"indices":[21932,33428,8290,57085,9183,17569,28618,21194,47511,49332,51193,58044],"read":66,"next":"2d2caf93"},
{"name":"6 words of 12, the most","size":12,"n":6,"stream":{"kind":"seeded","seed":"wordkey.Generate 12 most"},"indices":[11,8,10,1,5,9],"read":13,"next":"191eb7eb"},
{"name":"6 words of 13, the most","size":13,"n":6,"stream":{"kind":"seeded","seed":"wordkey.Generate 13 most"},"indices":[2,7,5,9,3,10],"read":10,"next":"2b27aedd"},
{"name":"8 words of 17, the most","size":17,"n":8,"stream":{"kind":"seeded","seed":"wordkey.Generate 17 most"},"indices":[16,9,5,1,3,10,0,6],"read":14,"next":"9ddad546"},
{"name":"50 words of 100, the most","size":100,"n":50,"stream":{"kind":"seeded","seed":"wordkey.Generate 100 most"},"indices":[51,40,75,85,11,44,62,23,8,92,0,34,55,89,31,94,39,60,18,45,74,27,98,57,69,12,1,54,59,20,67,4,7,10,41,52,9,38,63,19,32,68,16,17,43,28,33,21,99,24],"read":87,"next":"ff21a83a"},
{"name":"the seed of TestGenerate: two indices only, then EOF","list":"es","size":7776,"n":6,"stream":{"kind":"bytes","hex":"0701c821","repeat":64},"read":256,"error":"wordkey: EOF"},
{"name":"twelve bytes, six indices","list":"es","size":7776,"n":6,"stream":{"kind":"bytes","hex":"000000010002000300040005","repeat":1},"indices":[0,1,2,3,4,5],"words":["abad","abad\u00eda","abandonar","abandono","abanico","abarca"],"read":12},
{"name":"8191 and 8032 drawn again, 0 drawn twice, 7775 the last index","list":"es","size":7776,"n":6,"stream":{"kind":"bytes","hex":"1fff00001f601e5f00000001000200030004","repeat":1},"indices":[0,7775,1,2,3,4],"words":["abad","\u00fatil","abad\u00eda","abandonar","abandono","abanico"],"read":18},
{"name":"the three bits above the 13 of 7775 are cleared","list":"es","size":7776,"n":6,"stream":{"kind":"bytes","hex":"e000ffff21002200230024002500","repeat":1},"indices":[0,256,512,768,1024,1280],"words":["abad","alba\u00f1il","ap\u00e9ndice","azufre","bot\u00f3n","capitolio"],"read":14},
{"name":"the bytes end inside a draw","list":"es","size":7776,"n":6,"stream":{"kind":"bytes","hex":"0000000100","repeat":1},"read":5,"error":"wordkey: unexpected EOF"},
{"name":"no bytes","list":"es","size":7776,"n":6,"stream":{"kind":"bytes"},"read":0,"error":"wordkey: EOF"},
{"name":"5 words of the Spanish list","list":"es","size":7776,"n":5,"stream":{"kind":"seeded","seed":"never read"},"read":0,"error":"wordkey: a key of words needs at least 6 words, not 5"},
{"name":"0 words of the Spanish list","list":"es","size":7776,"n":0,"stream":{"kind":"seeded","seed":"never read"},"read":0,"error":"wordkey: a key of words needs at least 6 words, not 0"},
{"name":"-1 words of the Spanish list","list":"es","size":7776,"n":-1,"stream":{"kind":"seeded","seed":"never read"},"read":0,"error":"wordkey: a key of words needs at least 6 words, not -1"},
{"name":"3889 words of the Spanish list","list":"es","size":7776,"n":3889,"stream":{"kind":"seeded","seed":"never read"},"read":0,"error":"wordkey: 3889 words of a list of 7776"},
{"name":"7776 words of the Spanish list","list":"es","size":7776,"n":7776,"stream":{"kind":"seeded","seed":"never read"},"read":0,"error":"wordkey: 7776 words of a list of 7776"},
{"name":"6 words of 11","size":11,"n":6,"stream":{"kind":"seeded","seed":"never read"},"read":0,"error":"wordkey: 6 words of a list of 11"},
{"name":"6 words of 0","size":0,"n":6,"stream":{"kind":"seeded","seed":"never read"},"read":0,"error":"wordkey: 6 words of a list of 0"},
{"name":"5 words of 0","size":0,"n":5,"stream":{"kind":"seeded","seed":"never read"},"read":0,"error":"wordkey: a key of words needs at least 6 words, not 5"},
{"name":"7 words of 12","size":12,"n":7,"stream":{"kind":"seeded","seed":"never read"},"read":0,"error":"wordkey: 7 words of a list of 12"},
{"name":"7 words of 13","size":13,"n":7,"stream":{"kind":"seeded","seed":"never read"},"read":0,"error":"wordkey: 7 words of a list of 13"}
],
"bits": [
{"size":1,"count":0,"bits":"0","hex":"0000000000000000"},
{"size":1,"count":1,"bits":"0","hex":"0000000000000000"},
{"size":1,"count":2,"bits":"-Inf","hex":"fff0000000000000"},
{"size":1,"count":6,"bits":"NaN","hex":"7ff8000000000001"},
{"size":1,"count":7,"bits":"NaN","hex":"7ff8000000000001"},
{"size":1,"count":8,"bits":"NaN","hex":"7ff8000000000001"},
{"size":1,"count":12,"bits":"NaN","hex":"7ff8000000000001"},
{"size":2,"count":0,"bits":"0","hex":"0000000000000000"},
{"size":2,"count":1,"bits":"1","hex":"3ff0000000000000"},
{"size":2,"count":2,"bits":"1","hex":"3ff0000000000000"},
{"size":2,"count":6,"bits":"NaN","hex":"7ff8000000000001"},
{"size":2,"count":7,"bits":"NaN","hex":"7ff8000000000001"},
{"size":2,"count":8,"bits":"NaN","hex":"7ff8000000000001"},
{"size":2,"count":12,"bits":"NaN","hex":"7ff8000000000001"},
{"size":3,"count":0,"bits":"0","hex":"0000000000000000"},
{"size":3,"count":1,"bits":"1.5849625007211563","hex":"3ff95c01a39fbd69"},
{"size":3,"count":2,"bits":"2.584962500721156","hex":"4004ae00d1cfdeb4"},
{"size":3,"count":6,"bits":"NaN","hex":"7ff8000000000001"},
{"size":3,"count":7,"bits":"NaN","hex":"7ff8000000000001"},
{"size":3,"count":8,"bits":"NaN","hex":"7ff8000000000001"},
{"size":3,"count":12,"bits":"NaN","hex":"7ff8000000000001"},
{"size":5,"count":0,"bits":"0","hex":"0000000000000000"},
{"size":5,"count":1,"bits":"2.321928094887362","hex":"4002934f0979a371"},
{"size":5,"count":2,"bits":"4.321928094887362","hex":"401149a784bcd1b8"},
{"size":5,"count":6,"bits":"-Inf","hex":"fff0000000000000"},
{"size":5,"count":7,"bits":"NaN","hex":"7ff8000000000001"},
{"size":5,"count":8,"bits":"NaN","hex":"7ff8000000000001"},
{"size":5,"count":12,"bits":"NaN","hex":"7ff8000000000001"},
{"size":12,"count":0,"bits":"0","hex":"0000000000000000"},
{"size":12,"count":1,"bits":"3.584962500721156","hex":"400cae00d1cfdeb4"},
{"size":12,"count":2,"bits":"7.044394119358453","hex":"401c2d75a6eb1dfb"},
{"size":12,"count":6,"bits":"19.343602137745734","hex":"403357f64f487420"},
{"size":12,"count":7,"bits":"21.928564638466888","hex":"4035edb669826ff6"},
{"size":12,"count":8,"bits":"24.25049273335425","hex":"403840204ab1a464"},
{"size":12,"count":12,"bits":"28.835455234075408","hex":"403cd5e064eba03b"},
{"size":13,"count":0,"bits":"0","hex":"0000000000000000"},
{"size":13,"count":1,"bits":"3.700439718141092","hex":"400d9a802391e233"},
{"size":13,"count":2,"bits":"7.285402218862249","hex":"401d24407ab0e074"},
{"size":13,"count":6,"bits":"20.23668693382922","hex":"40343c9783d02fe0"},
{"size":13,"count":7,"bits":"23.044041855886825","hex":"40370b4653bab066"},
{"size":13,"count":8,"bits":"25.62900435660798","hex":"4039a1066df4ac3c"},
{"size":13,"count":12,"bits":"32.535894952216495","hex":"4040449834aeee40"},
{"size":100,"count":0,"bits":"0","hex":"0000000000000000"},
{"size":100,"count":1,"bits":"6.643856189774724","hex":"401a934f0979a371"},
{"size":100,"count":2,"bits":"13.273212809854334","hex":"402a8be28ca65863"},
{"size":100,"count":6,"bits":"39.64265360520877","hex":"4043d242792c839b"},
{"size":100,"count":7,"bits":"46.19724245688641","hex":"4047193f3da6dadb"},
{"size":100,"count":8,"bits":"52.73640126799444","hex":"404a5e4265916270"},
{"size":100,"count":12,"bits":"78.73534439154622","hex":"4053af0fe1ec3f3c"},
{"size":255,"count":0,"bits":"0","hex":"0000000000000000"},
{"size":255,"count":1,"bits":"7.994353436858858","hex":"401ffa37c98fe55f"},
{"size":255,"count":2,"bits":"15.983038123631022","hex":"402ff750c5df6ed2"},
{"size":255,"count":6,"bits":"47.880639460438104","hex":"4047f0b8cb39130a"},
{"size":255,"count":7,"bits":"55.840641392506186","hex":"404beb9a231c3d2e"},
{"size":255,"count":8,"bits":"63.79483770289306","hex":"404fe5bd3de9c6d8"},
{"size":255,"count":12,"bits":"95.55309471638243","hex":"4057e365e7619cfd"},
{"size":256,"count":0,"bits":"0","hex":"0000000000000000"},
{"size":256,"count":1,"bits":"8","hex":"4020000000000000"},
{"size":256,"count":2,"bits":"15.994353436858859","hex":"402ffd1be4c7f2b0"},
{"size":256,"count":6,"bits":"47.914855175776026","hex":"4047f519f9724466"},
{"size":256,"count":7,"bits":"55.88063946043811","hex":"404bf0b8cb39130b"},
{"size":256,"count":8,"bits":"63.84064139250619","hex":"404feb9a231c3d2f"},
{"size":256,"count":12,"bits":"95.62235737881954","hex":"4057e7d4b40b1d12"},
{"size":257,"count":0,"bits":"0","hex":"0000000000000000"},
{"size":257,"count":1,"bits":"8.005624549193879","hex":"402002e1388daf56"},
{"size":257,"count":2,"bits":"16.00562454919388","hex":"403001709c46d7ab"},
{"size":257,"count":6,"bits":"47.94893617101913","hex":"4047f976bd8e4262"},
{"size":257,"count":7,"bits":"55.9204797249699","hex":"404bf5d24795b03b"},
{"size":257,"count":8,"bits":"63.88626400963199","hex":"404ff171195c7ee0"},
{"size":257,"count":12,"bits":"95.69134398901087","hex":"4057ec3efadbc5a0"},
{"size":2047,"count":0,"bits":"0","hex":"0000000000000000"},
{"size":2047,"count":1,"bits":"10.99929538702341","hex":"4025ffa3a51c9e51"},
{"size":2047,"count":2,"bits":"21.99788581676874","hex":"4035ff7571e429fb"},
{"size":2047,"count":6,"bits":"65.9851910651465","hex":"40507f0d5ed34766"},
{"size":2047,"count":7,"bits":"76.98025153217921","hex":"40533ebc70ec2412"},
{"size":2047,"count":8,"bits":"87.97460496903807","hex":"4055fe5fed852268"},
{"size":2047,"count":12,"bits":"131.94494147626207","hex":"40607e3cf5e825bf"},
{"size":2048,"count":0,"bits":"0","hex":"0000000000000000"},
{"size":2048,"count":1,"bits":"11","hex":"4026000000000000"},
{"size":2048,"count":2,"bits":"21.99929538702341","hex":"4035ffd1d28e4f28"},
{"size":2048,"count":6,"bits":"65.9894239142687","hex":"40507f52b8ae6a85"},
{"size":2048,"count":7,"bits":"76.9851910651465","hex":"40533f0d5ed34766"},
{"size":2048,"count":8,"bits":"87.98025153217921","hex":"4055febc70ec2412"},
{"size":2048,"count":12,"bits":"131.95341963018637","hex":"40607e8269e2607a"},
{"size":2049,"count":0,"bits":"0","hex":"0000000000000000"},
{"size":2049,"count":1,"bits":"11.000704269011246","hex":"4026005c4f58bde5"},
{"size":2049,"count":2,"bits":"22.000704269011244","hex":"4036002e27ac5ef2"},
{"size":2049,"count":6,"bits":"65.9936546945467","hex":"40507f9809dc2614"},
{"size":2049,"count":7,"bits":"76.99012818327994","hex":"40533f5e42998241"},
{"size":2049,"count":8,"bits":"87.98589533415773","hex":"4055ff18e8be5f22"},
{"size":2049,"count":12,"bits":"131.96189363423173","hex":"40607ec7d528a830"},
{"size":4096,"count":0,"bits":"0","hex":"0000000000000000"},
{"size":4096,"count":1,"bits":"12","hex":"4028000000000000"},
{"size":4096,"count":2,"bits":"23.99964773652837","hex":"4037ffe8e9ffe8e7"},
{"size":4096,"count":6,"bits":"71.99471432662824","hex":"4051ffa966476ec8"},
{"size":4096,"count":7,"bits":"83.99259945445735","hex":"4054ff86bfdcbafe"},
{"size":4096,"count":8,"bits":"95.99013180198372","hex":"4057ff5e51c70ffa"},
{"size":4096,"count":12,"bits":"143.97673166270826","hex":"4061ff4162c28997"},
{"size":7775,"count":0,"bits":"0","hex":"0000000000000000"},
{"size":7775,"count":1,"bits":"12.924626959905327","hex":"4029d968b4739629"},
{"size":7775,"count":2,"bits":"25.849068352244522","hex":"4039d95c8b24f576"},
{"size":7775,"count":6,"bits":"77.54497776841153","hex":"405362e0ea6f17f9"},
{"size":7775,"count":7,"bits":"90.46849096471993","hex":"40569dfbc186fc64"},
{"size":7775,"count":8,"bits":"103.39181845013913","hex":"4059d9138db15449"},
{"size":7775,"count":12,"bits":"155.0832708046572","hex":"406362aa2788d6db"},
{"size":7776,"count":0,"bits":"0","hex":"0000000000000000"},
{"size":7776,"count":1,"bits":"12.92481250360578","hex":"4029d9810643d661"},
{"size":7776,"count":2,"bits":"25.849439463511107","hex":"4039d974dd5bb645"},
{"size":7776,"count":6,"bits":"77.54609138872225","hex":"405362f3294bcc1d"},
{"size":7776,"count":7,"bits":"90.46979027201732","hex":"40569e110b3792c6"},
{"size":7776,"count":8,"bits":"103.39330346832573","hex":"4059d92be24f7731"},
{"size":7776,"count":12,"bits":"155.08549890554931","hex":"406362bc683365b3"},
{"size":7777,"count":0,"bits":"0","hex":"0000000000000000"},
{"size":7777,"count":1,"bits":"12.924998023446696","hex":"4029d999574722eb"},
{"size":7777,"count":2,"bits":"25.849810527052476","hex":"4039d98d2ec57ca6"},
{"size":7777,"count":6,"bits":"77.5472048657836","hex":"40536305678eb02b"},
{"size":7777,"count":7,"bits":"90.47108941216894","hex":"40569e265434b07a"},
{"size":7777,"count":8,"bits":"103.39478829546401","hex":"4059d94436207723"},
{"size":7777,"count":12,"bits":"155.08772671972133","hex":"406362cea8440608"},
{"size":8192,"count":0,"bits":"0","hex":"0000000000000000"},
{"size":8192,"count":1,"bits":"13","hex":"402a000000000000"},
{"size":8192,"count":2,"bits":"25.999823879015725","hex":"4039fff4752e21e5"},
{"size":8192,"count":6,"bits":"77.99735775509549","hex":"40537fd4b59f2304"},
{"size":8192,"count":7,"bits":"90.99630070653858","hex":"4056bfc36409e427"},
{"size":8192,"count":8,"bits":"103.9950674079001","hex":"4059ffaf2f358fc5"},
{"size":8192,"count":12,"bits":"155.98837128175916","hex":"40637fa0bccf6ec2"},
{"size":10000,"count":0,"bits":"0","hex":"0000000000000000"},
{"size":10000,"count":1,"bits":"13.287712379549449","hex":"402a934f0979a371"},
{"size":10000,"count":2,"bits":"26.575280482380855","hex":"403a934594e9da56"},
{"size":10000,"count":6,"bits":"79.72410983788599","hex":"4053ee57d0ca1ba9"},
{"size":10000,"count":7,"bits":"93.01095634062187","hex":"405740b3823929e8"},
{"size":10000,"count":8,"bits":"106.29765848001738","hex":"405a930cd627434f"},
{"size":10000,"count":12,"bits":"159.4430231152088","hex":"4063ee2d3ecfe634"},
{"size":65535,"count":0,"bits":"0","hex":"0000000000000000"},
{"size":65535,"count":1,"bits":"15.999977986052736","hex":"402ffffd1d55a205"},
{"size":65535,"count":2,"bits":"31.999933957822293","hex":"403ffffbabff01b0"},
{"size":65535,"count":6,"bits":"95.99953769535011","hex":"4057fff86cf42978"},
{"size":65535,"count":7,"bits":"111.99938359066472","hex":"405bfff5e6978419"},
{"size":65535,"count":8,"bits":"127.99920746968044","hex":"405ffff303e30c92"},
{"size":65535,"count":12,"bits":"191.9982828160347","hex":"4067fff1eecde0e4"},
{"size":65536,"count":0,"bits":"0","hex":"0000000000000000"},
{"size":65536,"count":1,"bits":"16","hex":"4030000000000000"},
{"size":65536,"count":2,"bits":"31.999977986052734","hex":"403ffffe8eaad102"},
{"size":65536,"count":6,"bits":"95.99966978407262","hex":"4057fffa96f9590b"},
{"size":65536,"count":7,"bits":"111.99953769535013","hex":"405bfff86cf42979"},
{"size":65536,"count":8,"bits":"127.99938359066473","hex":"405ffff5e697841a"},
{"size":65536,"count":12,"bits":"191.9985470055745","hex":"4067fff418d98ec2"},
{"size":65537,"count":0,"bits":"0","hex":"0000000000000000"},
{"size":65537,"count":1,"bits":"16.00002201361136","hex":"403000017153bda9"},
{"size":65537,"count":2,"bits":"32.00002201361136","hex":"40400000b8a9ded4"},
{"size":65537,"count":6,"bits":"95.99980187077954","hex":"4057fffcc0fc5e93"},
{"size":65537,"count":7,"bits":"111.99969179768398","hex":"405bfffaf34e4875"},
{"size":65537,"count":8,"bits":"127.99955970896148","hex":"405ffff8c94918e3"},
{"size":65537,"count":12,"bits":"191.9988111910827","hex":"4067fff642e31287"},
{"size":1048576,"count":0,"bits":"0","hex":"0000000000000000"},
{"size":1048576,"count":1,"bits":"20","hex":"4034000000000000"},
{"size":1048576,"count":2,"bits":"39.99999862413814","hex":"4043fffff4755bf1"},
{"size":1048576,"count":6,"bits":"119.99997936204582","hex":"405dffffa9702a5a"},
{"size":1048576,"count":7,"bits":"139.99997110685496","hex":"40617fffc3681c62"},
{"size":1048576,"count":8,"bits":"159.99996147579435","hex":"4063ffffaf35797e"},
{"size":1048576,"count":12,"bits":"239.99990919282837","hex":"406dffff4190455d"},
{"size":2147483647,"count":0,"bits":"0","hex":"0000000000000000"},
{"size":2147483647,"count":1,"bits":"30.999999999328193","hex":"403efffffffd1d57"},
{"size":2147483647,"count":2,"bits":"61.999999997984574","hex":"404efffffffbac02"},
{"size":2147483647,"count":6,"bits":"185.99999998589203","hex":"40673ffffff86d04"},
{"size":2147483647,"count":7,"bits":"216.99999998118938","hex":"406b1ffffff5e6b0"},
{"size":2147483647,"count":8,"bits":"247.99999997581492","hex":"406efffffff30407"},
{"size":2147483647,"count":12,"bits":"371.99999994759895","hex":"40773ffffff1ef07"},
{"size":2147483648,"count":0,"bits":"0","hex":"0000000000000000"},
{"size":2147483648,"count":1,"bits":"31","hex":"403f000000000000"},
{"size":2147483648,"count":2,"bits":"61.999999999328196","hex":"404efffffffe8eac"},
{"size":2147483648,"count":6,"bits":"185.99999998992288","hex":"40673ffffffa9703"},
{"size":2147483648,"count":7,"bits":"216.99999998589203","hex":"406b1ffffff86d04"},
{"size":2147483648,"count":8,"bits":"247.99999998118938","hex":"406efffffff5e6b0"},
{"size":2147483648,"count":12,"bits":"371.9999999556607","hex":"40773ffffff41907"},
{"size":4294967295,"count":0,"bits":"0","hex":"0000000000000000"},
{"size":4294967295,"count":1,"bits":"31.999999999664098","hex":"403ffffffffe8eac"},
{"size":4294967295,"count":2,"bits":"63.999999998992294","hex":"404ffffffffdd602"},
{"size":4294967295,"count":6,"bits":"191.99999999294604","hex":"4067fffffffc3683"},
{"size":4294967295,"count":7,"bits":"223.99999999059472","hex":"406bfffffffaf359"},
{"size":4294967295,"count":8,"bits":"255.99999998790747","hex":"406ffffffff98204"},
{"size":4294967295,"count":12,"bits":"383.9999999737995","hex":"4077fffffff8f784"},
{"size":4294967296,"count":0,"bits":"0","hex":"0000000000000000"},
{"size":4294967296,"count":1,"bits":"32","hex":"4040000000000000"},
{"size":4294967296,"count":2,"bits":"63.9999999996641","hex":"404fffffffff4756"},
{"size":4294967296,"count":6,"bits":"191.99999999496146","hex":"4067fffffffd4b82"},
{"size":4294967296,"count":7,"bits":"223.99999999294604","hex":"406bfffffffc3683"},
{"size":4294967296,"count":8,"bits":"255.99999999059472","hex":"406ffffffffaf359"},
{"size":4294967296,"count":12,"bits":"383.9999999778303","hex":"4077fffffffa0c83"},
{"size":4294967297,"count":0,"bits":"0","hex":"0000000000000000"},
{"size":4294967297,"count":1,"bits":"32.0000000003359","hex":"404000000000b8aa"},
{"size":4294967297,"count":2,"bits":"64.0000000003359","hex":"4050000000005c55"},
{"size":4294967297,"count":6,"bits":"191.99999999697687","hex":"4067fffffffe6081"},
{"size":4294967297,"count":7,"bits":"223.99999999529734","hex":"406bfffffffd79ac"},
{"size":4294967297,"count":8,"bits":"255.99999999328193","hex":"406ffffffffc64ad"},
{"size":4294967297,"count":12,"bits":"383.9999999818612","hex":"4077fffffffb2183"},
{"size":4503599627370497,"count":0,"bits":"0","hex":"0000000000000000"},
{"size":4503599627370497,"count":1,"bits":"52","hex":"404a000000000000"},
{"size":4503599627370497,"count":2,"bits":"104","hex":"405a000000000000"},
{"size":4503599627370497,"count":6,"bits":"312","hex":"4073800000000000"},
{"size":4503599627370497,"count":7,"bits":"364","hex":"4076c00000000000"},
{"size":4503599627370497,"count":8,"bits":"416","hex":"407a000000000000"},
{"size":4503599627370497,"count":12,"bits":"624","hex":"4083800000000000"},
{"size":9007199254740991,"count":0,"bits":"0","hex":"0000000000000000"},
{"size":9007199254740991,"count":1,"bits":"53","hex":"404a800000000000"},
{"size":9007199254740991,"count":2,"bits":"106","hex":"405a800000000000"},
{"size":9007199254740991,"count":6,"bits":"318","hex":"4073e00000000000"},
{"size":9007199254740991,"count":7,"bits":"371","hex":"4077300000000000"},
{"size":9007199254740991,"count":8,"bits":"424","hex":"407a800000000000"},
{"size":9007199254740991,"count":12,"bits":"636","hex":"4083e00000000000"},
{"size":9007199254740992,"count":0,"bits":"0","hex":"0000000000000000"},
{"size":9007199254740992,"count":1,"bits":"53","hex":"404a800000000000"},
{"size":9007199254740992,"count":2,"bits":"106","hex":"405a800000000000"},
{"size":9007199254740992,"count":6,"bits":"318","hex":"4073e00000000000"},
{"size":9007199254740992,"count":7,"bits":"371","hex":"4077300000000000"},
{"size":9007199254740992,"count":8,"bits":"424","hex":"407a800000000000"},
{"size":9007199254740992,"count":12,"bits":"636","hex":"4083e00000000000"},
{"size":0,"count":1,"bits":"-Inf","hex":"fff0000000000000"},
{"size":-1,"count":1,"bits":"NaN","hex":"7ff8000000000001"},
{"size":7776,"count":-1,"bits":"0","hex":"0000000000000000"},
{"size":0,"count":0,"bits":"0","hex":"0000000000000000"}
],
"bits_digests": [
{"name":"one word of 1 to 65536: the log2 of Go","sizes":[1,65536],"counts":[1,1],"sha256":"54467d69cce12574b891110ee6b74c2e426a833a51ea3df003c7658cfa3ab6de"},
{"name":"6 to 8 words of 2048 to 10000","sizes":[2048,10000],"counts":[6,8],"sha256":"9e055008813b6d2ec5b9477a777c44d30d650134cd890eeb679552403297332e"},
{"name":"0 to 600 words of 7776","sizes":[7776,7776],"counts":[0,600],"sha256":"b6e756155be0121f6db294a47b3dbb947652cc931fb078f1db5a9e39643c905a"},
{"name":"1 word of 2^32 - 4096 to 2^32 + 4096","sizes":[4294963200,4294971392],"counts":[1,1],"sha256":"a95430f39eda0ef2865e11d1b92c8b0e604e4a9387ac881905d77af880240d2d"}
Dice: diceNumber, diceWord, diceWords and diceList, as wordkey's dice.go The port of dice.go of datekeys-go at 92e7154, for whoever does not trust the random numbers of a computer: five dice for each word give a number from 11111 to 66666, the position of the word in a list of 7776, the first die the most significant. diceNumber gives the dice of a position, diceWord the word of five dice, diceWords the words of several numbers separated by white space, at least 6 and never the same word twice, and diceList the list numbered for dice, as the EFF publishes its own: for en, its UTF-8 bytes are the file of the EFF. The same checks in the same order and Go's texts, in a WordKeyException. The numbers are split as Go's strings.Fields splits a string, at unicode.IsSpace (goIsSpace), the white space at which normalizeWords splits, and nothing else changes. lib/datekeys.dart exports them; diceWordUtf8 and diceWordsUtf8, on the bytes of a Go string, are internal, for the tests. testdata and wordlists at datekeys-go 92e7154: only wordlists/README.md changes, with the SHA-256 of each list numbered for dice, and the commit of both SOURCE.json. tool/wordlist_go_vectors.go writes the dice too, run at 92e7154: DiceNumber, DiceWord and DiceWords on the lists of Go and on lists of indices, DiceList of each list, and DiceWords with every code point of planes 0, 1 and 14 between two numbers. The rest of the vectors is the same but for their source and description. The tests port TestDiceNumber, TestDiceWord, TestDiceWords and TestDiceList, and run the vectors on the VM and on Node.js. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 day ago
],
"dice_number": [
{"i":0,"dice":"11111"},
{"i":1,"dice":"11112"},
{"i":5,"dice":"11116"},
{"i":6,"dice":"11121"},
{"i":35,"dice":"11166"},
{"i":36,"dice":"11211"},
{"i":215,"dice":"11666"},
{"i":216,"dice":"12111"},
{"i":1295,"dice":"16666"},
{"i":1296,"dice":"21111"},
{"i":2047,"dice":"24362"},
{"i":2048,"dice":"24363"},
{"i":3495,"dice":"35214"},
{"i":7774,"dice":"66665"},
{"i":7775,"dice":"66666"},
{"i":-1,"error":"wordkey: no dice give position -1 of a list of 7776 words"},
{"i":7776,"error":"wordkey: no dice give position 7776 of a list of 7776 words"},
{"i":7777,"error":"wordkey: no dice give position 7777 of a list of 7776 words"},
{"i":-7776,"error":"wordkey: no dice give position -7776 of a list of 7776 words"},
{"i":2147483648,"error":"wordkey: no dice give position 2147483648 of a list of 7776 words"},
{"i":-2147483648,"error":"wordkey: no dice give position -2147483648 of a list of 7776 words"},
{"i":4294967296,"error":"wordkey: no dice give position 4294967296 of a list of 7776 words"},
{"i":9007199254740991,"error":"wordkey: no dice give position 9007199254740991 of a list of 7776 words"},
{"i":-9007199254740991,"error":"wordkey: no dice give position -9007199254740991 of a list of 7776 words"}
],
"dice_word": [
{"name":"en 11111","list":"en","size":7776,"dice":"3131313131","word":"abacus"},
{"name":"en 11112","list":"en","size":7776,"dice":"3131313132","word":"abdomen"},
{"name":"en 35214","list":"en","size":7776,"dice":"3335323134","word":"jovial"},
{"name":"en 66666","list":"en","size":7776,"dice":"3636363636","word":"zoom"},
{"name":"es 11111","list":"es","size":7776,"dice":"3131313131","word":"abad"},
{"name":"es 35214","list":"es","size":7776,"dice":"3335323134","word":"glaciar"},
{"name":"es 66666","list":"es","size":7776,"dice":"3636363636","word":"\u00fatil"},
{"name":"11111","size":7776,"dice":"3131313131","word":"0"},
{"name":"11112","size":7776,"dice":"3131313132","word":"1"},
{"name":"11116","size":7776,"dice":"3131313136","word":"5"},
{"name":"11121","size":7776,"dice":"3131313231","word":"6"},
{"name":"11166","size":7776,"dice":"3131313636","word":"35"},
{"name":"11211","size":7776,"dice":"3131323131","word":"36"},
{"name":"16666","size":7776,"dice":"3136363636","word":"1295"},
{"name":"21111","size":7776,"dice":"3231313131","word":"1296"},
{"name":"12345","size":7776,"dice":"3132333435","word":"310"},
{"name":"35214","size":7776,"dice":"3335323134","word":"3495"},
{"name":"65432","size":7776,"dice":"3635343332","word":"7465"},
{"name":"66665","size":7776,"dice":"3636363635","word":"7774"},
{"name":"66666","size":7776,"dice":"3636363636","word":"7775"},
{"name":"no dice","size":7776,"dice":"","error":"wordkey: \"\" is not five dice: five digits from 1 to 6"},
{"name":"four dice","size":7776,"dice":"31313131","error":"wordkey: \"1111\" is not five dice: five digits from 1 to 6"},
{"name":"six dice","size":7776,"dice":"313131313131","error":"wordkey: \"111111\" is not five dice: five digits from 1 to 6"},
{"name":"a 0","size":7776,"dice":"3131313130","error":"wordkey: \"11110\" is not five dice: five digits from 1 to 6"},
{"name":"a 7","size":7776,"dice":"3131313137","error":"wordkey: \"11117\" is not five dice: five digits from 1 to 6"},
{"name":"a letter","size":7776,"dice":"6131313131","error":"wordkey: \"a1111\" is not five dice: five digits from 1 to 6"},
{"name":"four dice and a space","size":7776,"dice":"3131313120","error":"wordkey: \"1111 \" is not five dice: five digits from 1 to 6"},
{"name":"a full-width 1 and four dice","size":7776,"dice":"efbc9131313131","error":"wordkey: \"\uff111111\" is not five dice: five digits from 1 to 6"},
{"name":"a space and four dice","size":7776,"dice":"2031313131","error":"wordkey: \" 1111\" is not five dice: five digits from 1 to 6"},
{"name":"a space and five dice","size":7776,"dice":"203131313131","error":"wordkey: \" 11111\" is not five dice: five digits from 1 to 6"},
{"name":"five dice and a space","size":7776,"dice":"313131313120","error":"wordkey: \"11111 \" is not five dice: five digits from 1 to 6"},
{"name":"five dice and LF","size":7776,"dice":"31313131310a","error":"wordkey: \"11111\\n\" is not five dice: five digits from 1 to 6"},
{"name":"a tab and four dice","size":7776,"dice":"0931313131","error":"wordkey: \"\\t1111\" is not five dice: five digits from 1 to 6"},
{"name":"two and two dice around a space","size":7776,"dice":"3131203131","error":"wordkey: \"11 11\" is not five dice: five digits from 1 to 6"},
{"name":"NUL","size":7776,"dice":"3131313100","error":"wordkey: \"1111\\x00\" is not five dice: five digits from 1 to 6"},
{"name":"DEL","size":7776,"dice":"313131317f","error":"wordkey: \"1111\\x7f\" is not five dice: five digits from 1 to 6"},
{"name":"a quotation mark","size":7776,"dice":"3131313122","error":"wordkey: \"1111\\\"\" is not five dice: five digits from 1 to 6"},
{"name":"a backslash","size":7776,"dice":"313131315c","error":"wordkey: \"1111\\\\\" is not five dice: five digits from 1 to 6"},
{"name":"00000","size":7776,"dice":"3030303030","error":"wordkey: \"00000\" is not five dice: five digits from 1 to 6"},
{"name":"77777","size":7776,"dice":"3737373737","error":"wordkey: \"77777\" is not five dice: five digits from 1 to 6"},
{"name":"99999","size":7776,"dice":"3939393939","error":"wordkey: \"99999\" is not five dice: five digits from 1 to 6"},
{"name":"a slash, the byte before 0","size":7776,"dice":"313131312f","error":"wordkey: \"1111/\" is not five dice: five digits from 1 to 6"},
{"name":"a colon, the byte after 9","size":7776,"dice":"313131313a","error":"wordkey: \"1111:\" is not five dice: five digits from 1 to 6"},
{"name":"five full-width digits","size":7776,"dice":"efbc91efbc92efbc93efbc94efbc95","error":"wordkey: \"\uff11\uff12\uff13\uff14\uff15\" is not five dice: five digits from 1 to 6"},
{"name":"five Arabic-Indic digits","size":7776,"dice":"d9a1d9a2d9a3d9a4d9a5","error":"wordkey: \"\u0661\u0662\u0663\u0664\u0665\" is not five dice: five digits from 1 to 6"},
{"name":"a superscript 1","size":7776,"dice":"31313131c2b9","error":"wordkey: \"1111\u00b9\" is not five dice: five digits from 1 to 6"},
{"name":"a circled 1 and two dice: five bytes","size":7776,"dice":"e291a03131","error":"wordkey: \"\u246011\" is not five dice: five digits from 1 to 6"},
{"name":"a mathematical bold 1 and a die: five bytes","size":7776,"dice":"f09d9f8f31","error":"wordkey: \"\ud835\udfcf1\" is not five dice: five digits from 1 to 6"},
{"name":"four dice and an e with an acute accent: five characters","size":7776,"dice":"31313131c3a9","error":"wordkey: \"1111\u00e9\" is not five dice: five digits from 1 to 6"},
{"name":"three dice and an e with an acute accent: five bytes","size":7776,"dice":"313131c3a9","error":"wordkey: \"111\u00e9\" is not five dice: five digits from 1 to 6"},
{"name":"five dice and a combining acute accent","size":7776,"dice":"3131313131cc81","error":"wordkey: \"11111\u0301\" is not five dice: five digits from 1 to 6"},
{"name":"three dice and the emoji of a die: five UTF-16 code units","size":7776,"dice":"313131f09f8eb2","error":"wordkey: \"111\ud83c\udfb2\" is not five dice: five digits from 1 to 6"},
{"name":"NBSP and four dice","size":7776,"dice":"c2a031313131","error":"wordkey: \"\\u00a01111\" is not five dice: five digits from 1 to 6"},
{"name":"an ideographic space and five dice","size":7776,"dice":"e380803131313131","error":"wordkey: \"\\u300011111\" is not five dice: five digits from 1 to 6"},
{"name":"two dice and a surrogate in UTF-8 bytes: five bytes","size":7776,"dice":"3131eda080","error":"wordkey: \"11\\xed\\xa0\\x80\" is not five dice: five digits from 1 to 6"},
{"name":"four dice and a byte that is not valid UTF-8","size":7776,"dice":"31313131ff","error":"wordkey: \"1111\\xff\" is not five dice: five digits from 1 to 6"},
{"name":"five bytes that are not valid UTF-8","size":7776,"dice":"fffefdfcfb","error":"wordkey: \"\\xff\\xfe\\xfd\\xfc\\xfb\" is not five dice: five digits from 1 to 6"},
{"name":"four dice and a sequence cut short","size":7776,"dice":"31313131c3","error":"wordkey: \"1111\\xc3\" is not five dice: five digits from 1 to 6"},
{"name":"\"11111\" on a list of 2048 words","size":2048,"dice":"3131313131","error":"wordkey: dice draw from a list of 7776 words, not 2048"},
{"name":"\"11111\" on a list of 7775 words","size":7775,"dice":"3131313131","error":"wordkey: dice draw from a list of 7776 words, not 7775"},
{"name":"\"66666\" on a list of 7777 words","size":7777,"dice":"3636363636","error":"wordkey: dice draw from a list of 7776 words, not 7777"},
{"name":"\"\" on a list of 0 words","size":0,"dice":"","error":"wordkey: dice draw from a list of 7776 words, not 0"},
{"name":"\"x\" on a list of 1 words","size":1,"dice":"78","error":"wordkey: dice draw from a list of 7776 words, not 1"}
],
"dice_words": [
{"name":"en, seven numbers among white space","list":"en","size":7776,"dice":"2031313131312031313131320931313131330a313131313420313131313520313131313620313131323120","words":["abacus","abdomen","abdominal","abide","abiding","ability","ablaze"]},
{"name":"en, five numbers","list":"en","size":7776,"dice":"3131313131203131313132203131313133203131313134203131313135","error":"wordkey: a key of words needs at least 6 words, not 5"},
{"name":"en, no numbers","list":"en","size":7776,"dice":"","error":"wordkey: a key of words needs at least 6 words, not 0"},
{"name":"en, four dice","list":"en","size":7776,"dice":"31313131312031313131322031313131332031313131342031313131352031313136","error":"wordkey: \"1116\" is not five dice: five digits from 1 to 6"},
{"name":"en, 11111 twice","list":"en","size":7776,"dice":"3131313131203131313132203131313133203131313134203131313135203131313131","error":"wordkey: the dice 11111 give \"abacus\" a second time; roll them again"},
{"name":"en, a comma between two numbers","list":"en","size":7776,"dice":"31313131312c3131313132203131313133203131313134203131313135203131313136203131313231","error":"wordkey: \"11111,11112\" is not five dice: five digits from 1 to 6"},
{"name":"seven numbers among white space","size":7776,"dice":"2031313131312031313131320931313131330a313131313420313131313520313131313620313131323120","words":["0","1","2","3","4","5","6"]},
{"name":"five numbers","size":7776,"dice":"3131313131203131313132203131313133203131313134203131313135","error":"wordkey: a key of words needs at least 6 words, not 5"},
{"name":"no numbers","size":7776,"dice":"","error":"wordkey: a key of words needs at least 6 words, not 0"},
{"name":"four dice","size":7776,"dice":"31313131312031313131322031313131332031313131342031313131352031313136","error":"wordkey: \"1116\" is not five dice: five digits from 1 to 6"},
{"name":"11111 twice","size":7776,"dice":"3131313131203131313132203131313133203131313134203131313135203131313131","error":"wordkey: the dice 11111 give \"0\" a second time; roll them again"},
{"name":"a comma between two numbers","size":7776,"dice":"31313131312c3131313132203131313133203131313134203131313135203131313136203131313231","error":"wordkey: \"11111,11112\" is not five dice: five digits from 1 to 6"},
{"name":"a list of 7775 words","size":7775,"dice":"3131313131203131313132203131313133203131313134203131313135203131313136","error":"wordkey: dice draw from a list of 7776 words, not 7775"},
{"name":"es, seven numbers","list":"es","size":7776,"dice":"3636363636203131313132203335323134203132333435203534333231203233343536203131313131","words":["\u00fatil","abad\u00eda","glaciar","alimentar","propicio","contener","abad"]},
{"name":"es, 66666 twice","list":"es","size":7776,"dice":"3636363636203131313131203335323134203132333435203534333231203233343536203636363636","error":"wordkey: the dice 66666 give \"\u00fatil\" a second time; roll them again"},
{"name":"six numbers","size":7776,"dice":"3131313132203131313133203131313134203131313135203131313136203131313231","words":["1","2","3","4","5","6"]},
{"name":"twelve numbers","size":7776,"dice":"3131313131203232323232203333333333203434343434203535353535203636363636203132333435203233343536203334353631203435363132203536313233203631323334","words":["0","1555","3110","4665","6220","7775","310","1865","3414","4933","6272","6531"]},
{"name":"white space only","size":7776,"dice":"20090ac2a0e3808020","error":"wordkey: a key of words needs at least 6 words, not 0"},
{"name":"U+0009 between the numbers","size":7776,"dice":"3131313131093131313132093131313133093131313134093131313135093131313136093131313231","words":["0","1","2","3","4","5","6"]},
{"name":"U+000A between the numbers","size":7776,"dice":"31313131310a31313131320a31313131330a31313131340a31313131350a31313131360a3131313231","words":["0","1","2","3","4","5","6"]},
{"name":"U+000B between the numbers","size":7776,"dice":"31313131310b31313131320b31313131330b31313131340b31313131350b31313131360b3131313231","words":["0","1","2","3","4","5","6"]},
{"name":"U+000C between the numbers","size":7776,"dice":"31313131310c31313131320c31313131330c31313131340c31313131350c31313131360c3131313231","words":["0","1","2","3","4","5","6"]},
{"name":"U+000D between the numbers","size":7776,"dice":"31313131310d31313131320d31313131330d31313131340d31313131350d31313131360d3131313231","words":["0","1","2","3","4","5","6"]},
{"name":"U+0020 between the numbers","size":7776,"dice":"3131313131203131313132203131313133203131313134203131313135203131313136203131313231","words":["0","1","2","3","4","5","6"]},
{"name":"U+0085 between the numbers","size":7776,"dice":"3131313131c2853131313132c2853131313133c2853131313134c2853131313135c2853131313136c2853131313231","words":["0","1","2","3","4","5","6"]},
{"name":"U+00A0 between the numbers","size":7776,"dice":"3131313131c2a03131313132c2a03131313133c2a03131313134c2a03131313135c2a03131313136c2a03131313231","words":["0","1","2","3","4","5","6"]},
{"name":"U+1680 between the numbers","size":7776,"dice":"3131313131e19a803131313132e19a803131313133e19a803131313134e19a803131313135e19a803131313136e19a803131313231","words":["0","1","2","3","4","5","6"]},
{"name":"U+2000 between the numbers","size":7776,"dice":"3131313131e280803131313132e280803131313133e280803131313134e280803131313135e280803131313136e280803131313231","words":["0","1","2","3","4","5","6"]},
{"name":"U+2001 between the numbers","size":7776,"dice":"3131313131e280813131313132e280813131313133e280813131313134e280813131313135e280813131313136e280813131313231","words":["0","1","2","3","4","5","6"]},
{"name":"U+2002 between the numbers","size":7776,"dice":"3131313131e280823131313132e280823131313133e280823131313134e280823131313135e280823131313136e280823131313231","words":["0","1","2","3","4","5","6"]},
{"name":"U+2003 between the numbers","size":7776,"dice":"3131313131e280833131313132e280833131313133e280833131313134e280833131313135e280833131313136e280833131313231","words":["0","1","2","3","4","5","6"]},
{"name":"U+2004 between the numbers","size":7776,"dice":"3131313131e280843131313132e280843131313133e280843131313134e280843131313135e280843131313136e280843131313231","words":["0","1","2","3","4","5","6"]},
{"name":"U+2005 between the numbers","size":7776,"dice":"3131313131e280853131313132e280853131313133e280853131313134e280853131313135e280853131313136e280853131313231","words":["0","1","2","3","4","5","6"]},
{"name":"U+2006 between the numbers","size":7776,"dice":"3131313131e280863131313132e280863131313133e280863131313134e280863131313135e280863131313136e280863131313231","words":["0","1","2","3","4","5","6"]},
{"name":"U+2007 between the numbers","size":7776,"dice":"3131313131e280873131313132e280873131313133e280873131313134e280873131313135e280873131313136e280873131313231","words":["0","1","2","3","4","5","6"]},
{"name":"U+2008 between the numbers","size":7776,"dice":"3131313131e280883131313132e280883131313133e280883131313134e280883131313135e280883131313136e280883131313231","words":["0","1","2","3","4","5","6"]},
{"name":"U+2009 between the numbers","size":7776,"dice":"3131313131e280893131313132e280893131313133e280893131313134e280893131313135e280893131313136e280893131313231","words":["0","1","2","3","4","5","6"]},
{"name":"U+200A between the numbers","size":7776,"dice":"3131313131e2808a3131313132e2808a3131313133e2808a3131313134e2808a3131313135e2808a3131313136e2808a3131313231","words":["0","1","2","3","4","5","6"]},
{"name":"U+2028 between the numbers","size":7776,"dice":"3131313131e280a83131313132e280a83131313133e280a83131313134e280a83131313135e280a83131313136e280a83131313231","words":["0","1","2","3","4","5","6"]},
{"name":"U+2029 between the numbers","size":7776,"dice":"3131313131e280a93131313132e280a93131313133e280a93131313134e280a93131313135e280a93131313136e280a93131313231","words":["0","1","2","3","4","5","6"]},
{"name":"U+202F between the numbers","size":7776,"dice":"3131313131e280af3131313132e280af3131313133e280af3131313134e280af3131313135e280af3131313136e280af3131313231","words":["0","1","2","3","4","5","6"]},
{"name":"U+205F between the numbers","size":7776,"dice":"3131313131e2819f3131313132e2819f3131313133e2819f3131313134e2819f3131313135e2819f3131313136e2819f3131313231","words":["0","1","2","3","4","5","6"]},
{"name":"U+3000 between the numbers","size":7776,"dice":"3131313131e380803131313132e380803131313133e380803131313134e380803131313135e380803131313136e380803131313231","words":["0","1","2","3","4","5","6"]},
{"name":"U+001C between the first two numbers","size":7776,"dice":"31313131311c3131313132203131313133203131313134203131313135203131313136203131313231","error":"wordkey: \"11111\\x1c11112\" is not five dice: five digits from 1 to 6"},
{"name":"U+001D between the first two numbers","size":7776,"dice":"31313131311d3131313132203131313133203131313134203131313135203131313136203131313231","error":"wordkey: \"11111\\x1d11112\" is not five dice: five digits from 1 to 6"},
{"name":"U+001E between the first two numbers","size":7776,"dice":"31313131311e3131313132203131313133203131313134203131313135203131313136203131313231","error":"wordkey: \"11111\\x1e11112\" is not five dice: five digits from 1 to 6"},
{"name":"U+001F between the first two numbers","size":7776,"dice":"31313131311f3131313132203131313133203131313134203131313135203131313136203131313231","error":"wordkey: \"11111\\x1f11112\" is not five dice: five digits from 1 to 6"},
{"name":"U+00AD between the first two numbers","size":7776,"dice":"3131313131c2ad3131313132203131313133203131313134203131313135203131313136203131313231","error":"wordkey: \"11111\\u00ad11112\" is not five dice: five digits from 1 to 6"},
{"name":"U+0301 between the first two numbers","size":7776,"dice":"3131313131cc813131313132203131313133203131313134203131313135203131313136203131313231","error":"wordkey: \"11111\u030111112\" is not five dice: five digits from 1 to 6"},
{"name":"U+180E between the first two numbers","size":7776,"dice":"3131313131e1a08e3131313132203131313133203131313134203131313135203131313136203131313231","error":"wordkey: \"11111\\u180e11112\" is not five dice: five digits from 1 to 6"},
{"name":"U+200B between the first two numbers","size":7776,"dice":"3131313131e2808b3131313132203131313133203131313134203131313135203131313136203131313231","error":"wordkey: \"11111\\u200b11112\" is not five dice: five digits from 1 to 6"},
{"name":"U+200C between the first two numbers","size":7776,"dice":"3131313131e2808c3131313132203131313133203131313134203131313135203131313136203131313231","error":"wordkey: \"11111\\u200c11112\" is not five dice: five digits from 1 to 6"},
{"name":"U+200D between the first two numbers","size":7776,"dice":"3131313131e2808d3131313132203131313133203131313134203131313135203131313136203131313231","error":"wordkey: \"11111\\u200d11112\" is not five dice: five digits from 1 to 6"},
{"name":"U+2060 between the first two numbers","size":7776,"dice":"3131313131e281a03131313132203131313133203131313134203131313135203131313136203131313231","error":"wordkey: \"11111\\u206011112\" is not five dice: five digits from 1 to 6"},
{"name":"U+2800 between the first two numbers","size":7776,"dice":"3131313131e2a0803131313132203131313133203131313134203131313135203131313136203131313231","error":"wordkey: \"11111\u280011112\" is not five dice: five digits from 1 to 6"},
{"name":"U+3164 between the first two numbers","size":7776,"dice":"3131313131e385a43131313132203131313133203131313134203131313135203131313136203131313231","error":"wordkey: \"11111\u316411112\" is not five dice: five digits from 1 to 6"},
{"name":"U+FEFF between the first two numbers","size":7776,"dice":"3131313131efbbbf3131313132203131313133203131313134203131313135203131313136203131313231","error":"wordkey: \"11111\\ufeff11112\" is not five dice: five digits from 1 to 6"},
{"name":"U+FFFD between the first two numbers","size":7776,"dice":"3131313131efbfbd3131313132203131313133203131313134203131313135203131313136203131313231","error":"wordkey: \"11111\ufffd11112\" is not five dice: five digits from 1 to 6"},
{"name":"the byte A0 alone, which is not NBSP","size":7776,"dice":"3131313131a03131313132203131313133203131313134203131313135203131313136203131313231","error":"wordkey: \"11111\\xa011112\" is not five dice: five digits from 1 to 6"},
{"name":"the byte 85 alone, which is not NEL","size":7776,"dice":"3131313131853131313132203131313133203131313134203131313135203131313136203131313231","error":"wordkey: \"11111\\x8511112\" is not five dice: five digits from 1 to 6"},
{"name":"a byte that is not valid UTF-8 after a number","size":7776,"dice":"3131313131ff203131313132203131313133203131313134203131313135203131313136203131313231","error":"wordkey: \"11111\\xff\" is not five dice: five digits from 1 to 6"},
{"name":"a surrogate in UTF-8 bytes after a number","size":7776,"dice":"3131313131eda080203131313132203131313133203131313134203131313135203131313136203131313231","error":"wordkey: \"11111\\xed\\xa0\\x80\" is not five dice: five digits from 1 to 6"},
{"name":"five full-width digits","size":7776,"dice":"efbc91efbc91efbc91efbc91efbc91203131313132203131313133203131313134203131313135203131313136203131313231","error":"wordkey: \"\uff11\uff11\uff11\uff11\uff11\" is not five dice: five digits from 1 to 6"},
{"name":"a combining acute accent after a number","size":7776,"dice":"3131313131cc81203131313132203131313133203131313134203131313135203131313136203131313231","error":"wordkey: \"11111\u0301\" is not five dice: five digits from 1 to 6"},
{"name":"a combining acute accent before a number","size":7776,"dice":"cc813131313131203131313132203131313133203131313134203131313135203131313136203131313231","error":"wordkey: \"\u030111111\" is not five dice: five digits from 1 to 6"},
{"name":"five fields that are not dice: the count first","size":7776,"dice":"612062206320642065","error":"wordkey: a key of words needs at least 6 words, not 5"},
{"name":"six fields, the first not dice","size":7776,"dice":"616263203131313131203131313132203131313133203131313134203131313135","error":"wordkey: \"abc\" is not five dice: five digits from 1 to 6"},
{"name":"not dice before a word given twice","size":7776,"dice":"313131313120313131313220616263203131313131203131313133203131313134","error":"wordkey: \"abc\" is not five dice: five digits from 1 to 6"},
{"name":"a word given twice before not dice","size":7776,"dice":"313131313120313131313220313131313320313131313420313131313520313131313120616263","error":"wordkey: the dice 11111 give \"0\" a second time; roll them again"},
{"name":"indices modulo 1: 11112 11113 11114 11115 11116 11121","size":7776,"mod":1,"dice":"3131313132203131313133203131313134203131313135203131313136203131313231","error":"wordkey: the dice 11113 give \"0\" a second time; roll them again"},
{"name":"indices modulo 7: 11111 11112 11113 11114 11115 11116 11121","size":7776,"mod":7,"dice":"3131313131203131313132203131313133203131313134203131313135203131313136203131313231","words":["0","1","2","3","4","5","6"]},
{"name":"indices modulo 7: 11111 11112 11113 11114 11115 11116 11121 11122","size":7776,"mod":7,"dice":"3131313131203131313132203131313133203131313134203131313135203131313136203131313231203131313232","error":"wordkey: the dice 11122 give \"0\" a second time; roll them again"},
{"name":"indices modulo 1000: 11111 11112 11113 11114 11115 15455","size":7776,"mod":1000,"dice":"3131313131203131313132203131313133203131313134203131313135203135343535","error":"wordkey: the dice 15455 give \"0\" a second time; roll them again"},
{"name":"indices modulo 7 and a suffix: 11111 11112 11113 11114 11115 11116 11121","size":7776,"mod":7,"suffix":"\"\\\t\u00a0\u200b","dice":"3131313131203131313132203131313133203131313134203131313135203131313136203131313231","words":["0\"\\\t\u00a0\u200b","1\"\\\t\u00a0\u200b","2\"\\\t\u00a0\u200b","3\"\\\t\u00a0\u200b","4\"\\\t\u00a0\u200b","5\"\\\t\u00a0\u200b","6\"\\\t\u00a0\u200b"]},
{"name":"indices modulo 7 and a suffix: 11111 11112 11113 11114 11115 11116 11121 11122","size":7776,"mod":7,"suffix":"\"\\\t\u00a0\u200b","dice":"3131313131203131313132203131313133203131313134203131313135203131313136203131313231203131313232","error":"wordkey: the dice 11122 give \"0\\\"\\\\\\t\\u00a0\\u200b\" a second time; roll them again"},
{"name":"\"\" on a list of 0 words","size":0,"dice":"","error":"wordkey: dice draw from a list of 7776 words, not 0"},
{"name":"\"11111 11112 11113 11114 11115 11116 11121\" on a list of 2048 words","size":2048,"dice":"3131313131203131313132203131313133203131313134203131313135203131313136203131313231","error":"wordkey: dice draw from a list of 7776 words, not 2048"},
{"name":"\"x\" on a list of 7777 words","size":7777,"dice":"78","error":"wordkey: dice draw from a list of 7776 words, not 7777"}
],
"dice_list": [
{"list":"en","size":7776,"sha256":"addd35536511597a02fa0a9ff1e5284677b8883b83e986e43f15a3db996b903e","bytes":108800},
{"list":"es","size":7776,"sha256":"611f779a33df74587e9dfb486bb0185a9dfd4d1384e75993a21247ad31cefddb","bytes":108499},
{"size":7776,"sha256":"267618e6e9109b66da2804c1d77097273dd6bc3144bf60fd35988322293db59e","bytes":84426},
{"size":0,"error":"wordkey: dice draw from a list of 7776 words, not 0"},
{"size":1,"error":"wordkey: dice draw from a list of 7776 words, not 1"},
{"size":2048,"error":"wordkey: dice draw from a list of 7776 words, not 2048"},
{"size":7775,"error":"wordkey: dice draw from a list of 7776 words, not 7775"},
{"size":7777,"error":"wordkey: dice draw from a list of 7776 words, not 7777"}
wordlist.dart: the random words of a key of words, as wordkey.Generate A port of List, CheckList, Generate and Bits of package wordkey of datekeys-go at 27a75ee (generate.go, spec 38.1), with the same checks in the same order and the same texts, each error a WordKeyException: - readWordList takes the file of a list that the app downloads or bundles only with the SHA-256 that wordListSha256 pins, "wordkey: the list "es" has the SHA-256 ..., not ...", and then reads it as List reads its text; - checkWordList refuses fewer than 2048 words, a word that is not one word of 3 letters or more once normalized, a rune that checkWords refuses, a character outside the alphabet of the language, which only the code gives (es: a to z, the five vowels with an acute accent, u with diaeresis and n with tilde, lower case, NFC), and two words that are one once normalized; - generateWords draws each index with randomIndex, as crypto/rand.Int, and draws again an index already drawn, so that the same bytes draw the same words as Go; what the RandomSource throws goes through; - wordBits sums Go's math.Log2, ported with its Frexp and its Log, so that the double is Go's, on the VM and on the web. wordkey.dart shares its check of each rune, checkWordRune, with the same behaviour. lib/datekeys.dart does not export the new file yet. test/vectors/wordlist_vectors.json, from tool/wordlist_go_vectors.go in an export of datekeys-go at 27a75ee, holds what Go gives: List on 19 texts, CheckList on 83 lists and on every code point of planes 0, 1 and 14, Generate in 51 cases, on the Spanish list and on lists of 12 to 2^20 + 1 words, from seeded, counter and finite streams, and Bits bit for bit. wordlist_test.dart runs them, also compiled to JavaScript, with the cases of TestCheckList, TestGenerate and TestBits of Go; wordlist_vm_test.dart checks the Dart copy of the vectors and every code point. The seed of TestGenerate of Go draws two indices only, 1793 and 2081, so that Generate runs out of bytes and the test compares two errors; the vectors record it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2 days ago
]
}

Powered by TurnKey Linux.