-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathwordlist.js
More file actions
307 lines (299 loc) · 20.7 KB
/
Copy pathwordlist.js
File metadata and controls
307 lines (299 loc) · 20.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
// NumoCipher — Base-36 Phonetic Cipher
// Copyright (C) 2026 Max Hester
// Licensed under GPL-3.0-or-later. See LICENSE file.
// NumoCipher v2 — Wordlists
// Word length encodes the tier:
// 3-letter → single (1 digit, 0-9) 10 words
// 4-letter → double (2 base-36 chars, 00-zz) 1296 words
// 5-letter → triple (3 digits, 000-999) 1000 words
// Total: 2,306 unique codewords. DO NOT reorder — indices define the encoding.
// ─── SINGLES (10) — one per digit 0-9 ───────────────────────────────────────
// Each word has a unique vowel sound and unique initial consonant — no rhymes or near-homophones.
// 0=/aʊ/ 1=/aɪ/ 2=/ʌ/ 3=/juː/ 4=/ɑː/ 5=/ɒ/ 6=/ɪ/ 7=/ɛ/ 8=/æ/ 9=/iː/
const NC_SINGLES = [
"OWL","FRY","GUM","PEW","TAR","JOT","SIX","HEN","WAX","KEY"
];
// ─── DOUBLES (1296) — one per base-36 pair (00 … zz) ────────────────────────
// Mnemonically arranged: words start with the pair's letters where possible.
// e.g. ab→ABLE, hi→HIDE, on→ONCE, zz→ZOOS
// Digit→letter visual mapping: 0→O, 1→L, 5→S, 6→G, 7→T, 8→B
// e.g. 0n→ONES (0=O), 8o→BOAT (8=B), 6o→GOAT (6=G)
// 255/1296 (20%) pairs have mnemonic prefix matches.
const NC_DOUBLES = [
// 00–9z (digits & digit→letter visual)
"ACID","ACME","ACRE","AIMS","AIRS","AIRY","ALMS","ALOE","ALSO","ALTO",
"OAKS","ALUM","AMEN","ODES","AMOK","AMPS","OGRE","ANTE","OILY","ANTS",
"APEX","APPS","OMIT","ONES","ARCS","OPEN","AREA","ARIA","ARID","ARMS",
"ARMY","ARTS","ARTY","AVOW","AWED","AWES","LOAM","AWLS","AWRY","AXES",
"AXIS","AXLE","BAIL","BAIT","BAKE","BALD","LACE","BALE","BALL","BALM",
"LEAF","BAND","BANE","BANG","LICE","BANK","BARB","BARD","BARE","BARK",
"LOAD","BARN","BARS","BASE","BASH","BASK","BASS","BATH","BAWL","BAYS",
"BEAM","BEAN","BEAR","BEAT","BEDS","BEEF","BEER","BEES","BELL","BELT",
"BEND","BENT","BERG","BEST","BETA","BILE","BILL","BIND","BIRD","BITE",
"BLOT","BLOW","BLUE","BLUR","BOIL","BOLD","BOLT","BOMB","BOND","BONE",
"BOOK","BOOM","BOOT","BORE","BORN","BOSS","BOUT","BOWL","BREW","BROW",
"BULK","BULL","BUMP","BUNK","BURN","BUSH","BUZZ","CAGE","CAKE","CALF",
"CALL","CALM","CAME","CAMP","CANE","CAPE","CAPS","CARD","CARE","CARP",
"CARS","CART","CASE","CASH","CASK","CAST","CATS","CAVE","CHAT","CHEF",
"CHEW","CHIN","CHIP","CHOP","CHUG","CITY","CLAN","CLAP","CLAW","CLAY",
"CLIP","CLOG","CLOP","CLOT","CLUB","CLUE","COAX","CODE","COGS","COIL",
"COIN","COKE","COLD","COLT","COMB","COME","CONE","COOK","COOL","COOP",
"COPE","COPY","CORD","CORE","CORK","CORN","COST","COTS","COUP","COVE",
"SOAR","SLAP","COWL","COWS","COZY","CRAM","CREW","CROP","CROW","CUBS",
"SAFE","CUED","SCAM","CUES","SEAM","CUFF","CULT","SHIM","SIDE","CUPS",
"SKIM","SLAB","CURB","SNAP","SOAK","CURE","CURL","CURT","CUSP","STAG",
"CUTS","DAFT","DALE","DAME","DAMP","DAMS","GOES","GLIB","DANK","DARE",
"DARK","DARN","DART","DASH","DATA","DATE","GAIN","DAWN","DAYS","DAZE",
"GELS","DEAD","DEAF","DEAL","GILD","DEAN","DEAR","GLEE","DEBT","GNAW",
"GOAT","DECK","DEED","GRUB","DEEM","DEEP","GUST","DEER","DEMO","DENT",
"DENY","DESK","TOES","DEWY","DICE","DIED","DIES","DIET","DIGS","DILL",
"DIME","DIMS","TABS","DINE","BUDS","DIRE","TEAL","DIRT","DISC","THAT",
"TIDE","DISH","DISK","DOES","DOLE","DOLL","TOCK","DOLT","DOME","DONE",
"DOOM","DOOR","TURF","DOSE","DOTE","DOTS","DOUR","DOVE","BOGS","BLOB",
"DOWN","DOZE","DRAG","DRAW","DRIP","DROP","DRUB","DRUM","BAGS","DUSK",
"EARL","EARN","BEAK","EARS","EASE","EAST","BIKE","EASY","EATS","BLEW",
"EDGY","EDIT","BOAT","ENVY","ERRS","BRED","EVER","EVES","BUGS","EVIL",
"EXEC","EXES","EXPO","FACT","FADE","FAIL","FAIR","FAKE","FALL","FAME",
"FANG","FANS","FARE","FARM","FAST","FATE","FAWN","FAZE","FEAT","FEED",
"FEEL","FEES","FEET","FELL","FELT","FEND","FERN","FEST","FEUD","FIBS",
"FIGS","FILE","FILL","FILM","FIND","FINE","FINK","FINS","FIRE","FIRM",
// a0–jz (a through j)
"FISH","ALLY","FIST","FIZZ","FLAP","ASHY","AGES","ATOP","ABET","FLAT",
"FLAW","ABLE","ACHE","ADDS","FLAY","FLEA","AGED","FLED","AIDE","AJAR",
"AKIN","ALAS","AMID","ANEW","FLEW","APES","AQUA","ARCH","ASKS","ATOM",
"AUTO","AVID","AWAY","AXED","FLEX","FLIP","BODY","BLIP","FLIT","FLOG",
"FLOP","FLOW","FLUB","FLUE","FLUX","FOAL","BACK","FOIL","FOLD","FOLK",
"BEAD","FOND","FONT","FOOD","BIAS","FOOT","FORD","BLED","FORK","GAIT",
"BOAR","GALE","GALL","BRAN","GALS","GAME","BUFF","GAPE","GAPS","GARB",
"GASH","GASP","COAT","CLAM","GATE","GAVE","GAWK","GAZE","GEMS","GENE",
"GERM","GETS","CAFE","GILL","GILT","GIMP","CELL","GIRL","GIST","CHAR",
"CITE","GIVE","GLOB","CLAD","GLOW","GLUE","COAL","GLUM","GLUT","CRAB",
"GOLD","GOLF","CUBE","GONE","GONG","GOOD","GORE","GORY","DODO","GOWN",
"GRAB","GRIM","HAIL","HAIR","HALE","HALF","HALL","HALO","DABS","HALT",
"HAMS","HAND","DENS","HANG","HARE","HARM","DIAL","HARP","HASH","BUST",
"HATS","HAUL","DOCK","HAWK","HAZE","DRAB","HAZY","HEAL","DUCK","HEAP",
"HEAR","HEAT","HEED","HEEL","HEFT","ELSE","HEIR","HELD","HELM","HELP",
"EGOS","HEMP","HENS","HERB","EACH","EBBS","HERD","EDGE","EELS","HERE",
"EGGS","HERO","HEWN","HIGH","HIKE","ELKS","EMIT","ENDS","HILL","EPIC",
"HILT","ERAS","HIND","HINT","EURO","EVEN","EWES","EXAM","HIPS","HIRE",
"FOES","FLAN","HISS","HIVE","HOCK","HOED","HOLD","HOLE","HOLY","HOME",
"FACE","HONE","HOOD","HOOK","FEAR","HOOP","HOPE","HOGS","FIAT","ICES",
"ICON","FLAG","IDLE","IDLY","FOAM","IDOL","INFO","INKS","INNS","IRKS",
"FUZZ","IRON","JACK","JADE","JAIL","JAMS","GODS","GLEN","JAPE","JARS",
"JAVA","JAWS","JAZZ","JEER","JERK","JEST","GAGS","JETS","JIGS","JILT",
"GEAR","JINX","JIVE","JOIN","GIFT","JOKE","JOLT","GLAD","KEEP","GNAT",
"GOAD","KEGS","KELP","GRIT","KEPT","KEYS","GULF","KIDS","KILN","KILT",
"KIND","KING","HOBO","KINK","KISS","KITE","KITS","KIWI","KNEW","KNIT",
"KNOB","KNOT","HACK","KNOW","LACK","LACY","HEAD","LADS","LAIR","LAKE",
"HIDE","LAMB","LAME","LAMP","LAND","LANE","HOAX","LAPS","LARD","LARK",
"LASH","LASS","LAST","LATE","LAWN","LAWS","LAZY","LEAK","LEAN","LEAP",
"LEEK","LEFT","LEND","LENS","LENT","LESS","LEVY","LICK","LIDS","LIED",
"ICED","IDEA","LIES","IFFY","LIEU","LIFE","LIFT","LIKE","LILY","ILLS",
"IMPS","INCH","IONS","LIMB","LIME","IRIS","ISLE","ITCH","LIMP","LINE",
"LINK","LINT","LION","LIPS","JOCK","LIST","LIVE","LOCK","LOFT","LOGS",
"LONE","LONG","LOOK","LOOM","JABS","LOOP","LOOT","MADE","JEAN","MAID",
"MAIL","MAIN","JIBE","MAKE","MALE","MALL","MALT","MANE","JOBS","MANY",
"MAPS","MARE","MARK","MARS","MASH","MASK","MASS","MAST","MATE","MATH",
// k0–tz (k through t)
"MATS","MAZE","MEAN","MEAT","MEET","MELD","MELT","MEMO","MEND","MENU",
"KALE","MEOW","MESH","MESS","KEEN","MICA","MICE","MIKE","KICK","MILD",
"MILE","MILK","MILL","KNEE","MIME","MIND","MINE","MINT","MIRE","MISS",
"MIST","MITE","MITT","MOBS","MOCK","MODE","LOAF","MOLD","MOLE","MOLT",
"MONK","MOOD","MOON","MOOR","MOPE","MOPS","LABS","MORE","MOSS","MOTH",
"LEAD","MUCK","MUGS","MULE","LIAR","MURK","MUSE","NAGS","NAIL","NAME",
"LOBE","NAPE","NAPS","NAVY","NEAT","NECK","LUGE","NEED","NEON","NERD",
"LYNX","NEST","MOAT","NETS","NEWS","NEWT","NEXT","FIRS","NICK","NIGH",
"NINE","NIPS","MACE","NITS","NOEL","NONE","MEAL","NOOK","NORM","NOSE",
"MINK","NOSH","NOTE","NOUN","NOVA","BEET","MOAN","NUMB","OARS","OATH",
"OATS","ODOR","MUCH","ONLY","ONTO","OPTS","PACK","PACT","NODS","PADS",
"PAGE","PAID","PAIL","PAIN","PAIR","PALE","PALL","PALM","NABS","PALS",
"PANE","PANG","NEAR","PANS","PANT","PARE","NICE","PARK","PART","PASS",
"PAST","PATH","NODE","PAVE","PAWN","PAWS","PAYS","PEAL","NUDE","PEAR",
"PEAS","PEAT","PECK","PEEL","PEER","PEGS","PELT","PEND","PENS","CRIB",
"PERK","PERM","PERT","PEST","OAFS","OBEY","PETS","ODDS","PEWS","OFFS",
"OGLE","GRID","OILS","PIER","PIGS","PIKE","OMEN","ONCE","OOZE","OPAL",
"PILE","ORAL","PILL","PINE","PING","OVEN","PINK","PINS","PINT","PIPE",
"POEM","PLAY","PITS","PLEA","PLED","PLOD","PLOT","PLOW","PLOY","PLUG",
"PACE","PLUM","PLUS","POET","PEAK","POKE","POLE","POND","PICK","PONY",
"POOL","PLAN","PORT","POSE","PODS","PUBS","QUAY","PROP","QUID","QUIP",
"PUMA","QUIT","QUIZ","RACK","RAFT","RAGE","RAGS","RAID","RAIL","RAIN",
"RAKE","RAMP","RAMS","RANG","RANK","RANT","RAPS","RARE","RASH","RASP",
"RATE","RATS","RAVE","RAYS","RAZE","REAL","REAM","REAP","REAR","REED",
"REEF","REEL","REIN","RELY","REND","RENT","QUAD","REST","RICE","RICH",
"RIDE","RIDS","ROAM","RIFT","RIGS","RILE","RIMS","RIND","RING","RINK",
"RIOT","RISE","RACE","RISK","RITE","ROAR","READ","ROBE","ROBS","ROCK",
"RIBS","RODE","RODS","ROLE","ROLL","ROMP","ROAD","ROOF","ROOM","ROOT",
"ROPE","ROSE","SAGA","SAGE","SAID","SAIL","SAKE","SALE","SOAP","SLAM",
"SALT","SAME","SAND","SANE","SANG","SANK","SARI","SASH","SACK","SASS",
"SCAB","SAVE","SEAL","SAWS","SAYS","SHED","SICK","SCAN","SKID","SLAW",
"SMOG","SNAG","SOUP","SCAR","SEAR","SEAS","SEAT","STEW","SUIT","SECT",
"SWAN","SEED","SEEK","SEEM","TOED","SEEN","SEEP","SELF","SELL","SEMI",
"SEND","SENT","BLOG","SHIN","TACO","SHIP","SHOE","SHOP","TEAK","SHOT",
"SHOW","THAN","TICK","SHUN","SHUT","SIFT","SIGH","SIGN","TOAD","SILK",
"SILL","TRAY","SILO","SILT","TUFT","SINE","SING","SINK","SIPS","SIRE",
// u0–zz (u through z)
"SITE","SITS","SIZE","SKIN","SKIP","USER","SKIT","SLAT","SLED","SLEW",
"SLID","SLIM","SLIP","SLIT","SLOP","SLOT","UGLY","SLOW","SLUG","SLUM",
"SLUR","SNIP","SNOB","UNDO","SNOT","UPON","SNOW","URGE","USED","SNUB",
"SNUG","SOBS","SOCK","SODA","TACK","TACT","VOLT","TAGS","TAIL","TAKE",
"TALE","TALK","TALL","TAME","TANG","TANK","VAIN","TAPE","TAPS","TARP",
"VEAL","TART","TASK","TAXI","VISE","TEAM","TEAR","TEAS","TECH","TEEM",
"VOID","TELL","TEMP","TEND","TENS","TENT","TERM","TERN","TEST","TEXT",
"THAW","THEM","WOKE","THEN","THEY","THIN","THIS","THUG","THUS","TIDY",
"TIED","TIER","WADE","TIES","TILE","TILL","WEAK","TILT","TIME","WHET",
"WISP","TINE","TINS","TINY","TIPS","TIRE","WORM","TOGA","TOIL","WRAP",
"TOLD","TOLL","TOMB","TOME","TONE","TONG","TONS","TOOL","TOFU","UNIT",
"UNTO","URNS","USES","VALE","VAMP","VANE","VANS","VARY","VASE","VAST",
"VATS","VEER","VEIL","VEIN","VEND","VENT","VERB","VERY","VEST","VETO",
"VIEW","VILE","VINE","VISA","WAGE","WAIL","WAIT","WAKE","WALK","WALL",
"WAND","WANE","WANT","WARD","YOKE","WARM","WARN","WARP","WART","WARY",
"WASH","WASP","WAVE","WAVY","YACK","WAXY","WAYS","WEAN","YEAR","WEAR",
"WEED","WEEK","WEEP","WELD","WELL","WELT","WENT","WERE","YOGA","WEST",
"WHEY","MESA","WHIM","WHIP","YURT","WHIR","WICK","WIDE","WIFE","WILD",
"ZOOM","WILL","WILT","WIMP","WIND","WINE","WING","WINK","WIPE","WIRE",
"ZANY","WISE","WISH","WITS","ZEAL","WOLF","WOOD","WORD","ZINC","YAKS",
"YAMS","YANK","YAPS","YARD","ZONE","YARN","ELMS","YAWN","YAWS","YELL",
"YELP","ZAPS","ZERO","ZEST","ZING","ZOOS",
];
// ─── TRIPLES (1000) — one per digit triple 000-999 ──────────────────────────
const NC_TRIPLES = [
// Original core (000–802)
"ACORN","ADOBE","ADORE","AGENT","AGILE","AISLE","ALARM","ALBUM","ALDER","ALERT",
"ALGAE","ALLEY","ALTAR","AMBER","ANGEL","ANKLE","ANVIL","APRON","ARBOR","ARMOR",
"AROMA","ARROW","ASPEN","ATLAS","ATTIC","AUDIO","AVAIL","AWAKE","AWFUL","AZURE",
"ABBEY","ABYSS","ADEPT","ADOPT","ADORN","AGONY","AMPLE","ARISE","ATONE","SCONE",
"BADGE","BASIN","BATCH","BEACH","BEARD","BEAST","BENCH","BIRCH","BLADE","BLAZE",
"BLEND","BLESS","BLISS","BLOOM","BLOWN","BLUNT","BLUSH","BOAST","BOUGH","BOUND",
"BRAVE","BRISK","BROOK","BROOM","BROTH","BRUSH","BULGE","BUNCH","GRAPE","BYWAY",
"BARON","BATON","BAYOU","BARGE","BERRY","BOXER","BRAID","BRAND","BREAD","BREED",
"BROOD","TRIBE","BUNNY","BAGEL","BAKER","BALMY","BALSA","BEADY","BEVEL","BELLY",
"SPACE","BINGO","BISON","BLARE","BLEAT","BLIMP","BLOKE","BOOTY","WHALE","BROAD",
"CABLE","CAIRN","CANAL","CANDY","CARGO","CARVE","CEDAR","CHALK","CHANT","CHARM",
"CHART","CHASM","CHESS","CHEST","CHIEF","CHILL","CHINA","CIVIC","CLAMP","CLANG",
"CLASH","CLEAN","CLEAR","CLIFF","CLOAK","CLOUD","CLOVE","COACH","COAST","COMET",
"CORAL","COURT","COVER","CRAFT","CRANE","CREEK","CREST","CRISP","CROWN","CYCLE",
"CABIN","CADET","CAMEO","CAROL","CAMEL","CLEFT","CLONE","COUCH","CRAMP","CREED",
"CRIME","CROAK","CRUMB","CRUSH","CURLY","CURVE","CHIME","CHEER","CHOPS","CIDER",
"CLEAT","CLINK","CLUMP","CONDO","CORNY","COVET","CRAZE","CREAK","CREEP","PIZZA",
"CUBIC","CUPID","CURRY","CREAM","DAILY","DAISY","DECAY","DELTA","DENSE","DEPTH",
"DERBY","DISCO","DITCH","DIVER","DIZZY","DONOR","DOUGH","DRAFT","DRAIN","DREAD",
"DREAM","DRIFT","DRINK","DRIVE","DRONE","DROWN","DRUMS","EARTH","DUSTY","DWELL",
"DANDY","DAUNT","DECOY","DEPOT","DINGO","STEAK","DOGMA","DOLLY","DRAPE","DRAWL",
"DRUID","TREAT","EAGER","EAGLE","EARLY","EASEL","EERIE","ELDER","EMBER","EMPTY",
"EPOCH","EVOKE","EXACT","EXTRA","EBONY","ELBOW","VIRUS","ELITE","ENVOY","FABLE",
"FAINT","FAIRY","FANCY","FEAST","FERAL","FERRY","FIBER","FIELD","FIFTH","FIGHT",
"FINCH","FJORD","FLAKE","FLAME","FLARE","FLASK","FLEET","FLESH","FLINT","FLOCK",
"FLORA","FLOUR","FLUFF","FLUID","FLUTE","FOGGY","FORCE","FORGE","FORUM","FRAIL",
"FRAME","FRANK","FRESH","FROST","FUNKY","FOAMY","FORTE","FARCE","FAVOR","FEMUR",
"FILLY","FIZZY","FLAIR","FLECK","GAUGE","GAVEL","GIDDY","GIRTH","GLADE","GLARE",
"GLAZE","GLEAM","GLIDE","GLOOM","GLOSS","GLOVE","GNOME","GRASP","GREED","GREET",
"GRIND","GROAN","GROVE","GROWL","GRUEL","GRUFF","SPOON","TRAIN","GUSTO","GAUDY",
"GECKO","TRUCK","GLAND","GLINT","GLOAT","GNASH","GODLY","GORGE","GOUGE","GRAFT",
"HAIKU","HANDY","HARSH","HASTE","HAVEN","HEADY","HEDGE","HEIST","HERBS","HERON",
"HIPPO","HOIST","HOLLY","HONEY","HOUND","HUSKY","HASTY","HEATH","HEAVE","HEFTY",
"HINGE","HOARD","HOMER","HONOR","SHACK","IDEAL","IMAGE","INERT","IRATE","IVORY",
"ITCHY","BRICK","INDIE","INTRO","IMPLY","INFER","PANTS","INPUT","IRONY","SHOES",
"JAUNT","JETTY","JOUST","JUMBO","JUROR","JAZZY","JELLY","JOKER","JOLLY","JUDGE",
"KAYAK","KHAKI","KNACK","KNEEL","KNOLL","KEBAB","KIOSK","KITTY","KUDOS","KNIFE",
"LANCE","LARCH","LASER","LATCH","LAYER","LEDGE","LEMON","LEVEL","LILAC","LLAMA",
"LODGE","LOFTY","LOGIC","LOTUS","LOYAL","LUNAR","LUSTY","LANKY","LATHE","LEAPT",
"LAPEL","BLOOD","LASSO","TOAST","LEAFY","PATIO","LINGO","SHIRT","LOOPY","BUGGY",
"LUCID","LUMPY","LYRIC","LUNGE","LYMPH","MAMBO","MANOR","MAPLE","MARCH","MARSH",
"MASON","MATCH","MAXIM","MELON","MERCY","MERIT","METAL","METRO","MIGHT","MIRTH",
"MISER","MOIST","MOODY","MOOSE","MOURN","MUDDY","MULCH","MURAL","MANGO","MANLY",
"MEDIC","MEATY","MINTY","MUTED","CANOE","MAGIC","MANIC","MARRY","CLOCK","MOSSY",
"NAIVE","NAVAL","NERVE","NIGHT","NOBLE","NOTCH","NOVEL","NYMPH","NIFTY","NUTTY",
"CHAIR","NASTY","VIDEO","NEEDY","JUMPY","NIPPY","NOISY","TEETH","OCEAN","OFFER",
"OLIVE","ONION","OPTIC","ORBIT","ORGAN","OUTER","THUMB","OXIDE","OZONE","TOWEL",
"PADDY","PAINT","PANIC","PANSY","PAPER","PATCH","PAUSE","PEACH","PEDAL","PERCH",
"PEARL","PETAL","PINCH","PIXEL","PLAID","PLAIN","PLANE","PLANK","PLANT","PLAZA",
"PLEAD","PLUME","POLAR","POLKA","POPPY","PORCH","POUCH","PRAWN","PRICE","PRIDE",
"PRIME","PRISM","PROBE","PROSE","PROUD","PROWL","PRUNE","PUDGY","PULSE","PUNCH",
"PAGAN","PANDA","PASTY","PLUMB","PEAKY","PESKY","PETTY","PIGGY","HILLY","PINKY",
"PINTO","QUAKE","QUEEN","QUEST","QUICK","QUIET","QUOTA","SNAIL","SUGAR","SALAD",
"QUIRK","RABBI","RADAR","RAINY","RALLY","RANCH","RAPID","RAVEN","REACH","REALM",
"REGAL","RELAX","RELIC","RESIN","RIDER","RIFLE","RISKY","RIVAL","RIVER","RIVET",
"ROBIN","ROCKY","ROUGE","ROGUE","ROUND","ROUTE","ROWDY","SKIRT","RUSTY","RABID",
"RASPY","PLATE","SHINY","REIGN","REMIX","RENEW","REPAY","REPEL","RETRO","PHONE",
"SANDY","SAUCE","SCALD","SCALP","SCARF","SCENE","SCOPE","SCORN","SCOUT","SCOWL",
"SCRAM","SCREW","SCRUB","SERUM","SHALE","SHAME","SHARK","SHARP","SHAWL","SHEEN",
"SHELF","SHELL","SHINE","TOWER","SHORE","SHOUT","SHRUB","SIEGE","SILKY","SKILL",
"SKULL","SKUNK","SLAIN","SLANT","SLASH","SLATE","SLAVE","SLEET","SLICK","SLIME",
"SLOPE","SLOTH","SLUMP","SLUSH","SMEAR","SMELT","SMOKY","SNAKE","SNARE","SNEER",
"SNIFF","SNOWY","SOLAR","SOLID","SOLVE","SONIC","SOUTH","SPADE","SPARE","SPARK",
"SPEAR","SPEED","SPEND","SPICE","SPIRE","SPITE","SPORE","SPORT","SPOUT","SPRIG",
"STAFF","STAGE","STAIN","STAKE","STALE","STALL","STAMP","STAND","STARK","START",
"STAVE","STEAM","STEEL","STEEP","STEER","STERN","STIFF","STILL","STOCK","STONE",
"STOOL","STORM","STORY","STOUT","STOVE","STRAP","STRAW","STRAY","STRIP","STRUT",
"STUCK","STUMP","STUNG","SUNNY","SURGE","SWAMP","SWEAR","SWEAT","SWEEP","SWEET",
"SWELL","SWEPT","SWIFT","SWIPE","SWIRL","SWOOP","SYRUP","SABLE","SAMBA","SASSY",
"TABBY","TABLE","TALON","TANGO","SHEEP","TAUNT","TEARY","RADIO","THONG","THORN",
"TIARA","TIDAL","TIGER","TIMID","TITAN","IGLOO","TOKEN","TOPAZ","TORCH","TORSO",
"TOTAL","TOTEM","TOXIC","TRACK","TRADE","TRAIL","TRAMP","TRAWL","TREAD","TREND",
"TRIAD","TRICK","TRIED","TROUT","TRUCE","TRUNK","TRUTH","TUBER","TULIP","TUNIC",
"TUTOR","TWIRL","TANGY","TASTY","TAWNY","TECHY","TENSE","TERSE","THEME","THETA",
"THICK","THIEF","THIRD","THROW","PASTA","ULTRA","UNDER","UNION","UNTIE","URBAN",
"UTTER","VALOR","VALVE","VAPOR","VAGUE","VENOM","VERSE","VIGOR","VIOLA","VIRAL",
"VISOR","VIVID","VOCAL","VODKA","VOGUE","VOICE","VOTER","VAULT","VALET","VALID",
"WAGON","WALTZ","WAVER","WEDGE","WEIRD","WEIGH","WIDOW","WINDY","WITCH","WITTY",
"WOODY","WORLD","WOVEN","WRATH","WRIST","WACKY","WARTY","WASTE","WATER","WEARY",
"WEEDY","WHACK","WHEAT","WHEEL","YACHT","YEARN","YIELD","YOUNG","ZEBRA","ZESTY",
"ZILCH","ZIPPY","ZONAL",
// Extended (803–999)
"ABODE","ABOVE","ABUSE","ACTED","ACUTE","ADMIT","ADULT","AFTER","AGAVE","AGING",
"AGREE","AIDED","ALIEN","ALIGN","ALIVE","ALLAY","ALLOW","ALLOT","ALONG","ALOOF",
"ALTER","AMASS","AMEND","AMONG","ANGRY","ANNEX","ANTIC","APART","APPLE","ARENA",
"ARGUE","ASIDE","ASSET","FLASH","AWAIT","AWASH","BEECH","BEING","BELOW","BONUS",
"BOOTH","BRASS","BRIDE","BRIEF","BRUNT","BUILD","CABAL","CATCH","CAUSE","CAULK",
"CHAIN","CHASE","CHECK","CHILD","CHOSE","CHUNK","CLAIM","CLASP","CLASS","CLIMB",
"CLING","CLOTH","CLOWN","COLOR","COMIC","COULD","DANCE","DEBUT","DECAL","DEMON",
"DENIM","DEVIL","DIARY","DIGIT","DIMLY","DOING","DOUBT","DRESS","DRIED","DRILL",
"DUNCE","ELATE","ELECT","ENDOW","ENJOY","ENSUE","ENTER","EQUIP","ERASE","ERROR",
"EVENT","EVERY","EVICT","EXALT","EXILE","EXIST","FAULT","FENCE","FETCH","FEVER",
"FINAL","FIXED","FLOOD","FLOOR","FOUND","FRAUD","FROZE","FRUIT","FULLY","GHOST",
"GIVEN","GLASS","GLOBE","GLORY","GOING","GOOSE","GRACE","GRAIN","GRAND","GRANT",
"GRAPH","GRASS","GRAVE","GRAVY","GREEN","GRIEF","GRILL","GRIPE","GROOM","GROSS",
"GROUP","GUARD","GUESS","GUIDE","GUILT","HABIT","HAPPY","HEART","HEAVY","HELLO",
"HORSE","HOTEL","HOUSE","HUMAN","HUMOR","HURRY","ICING","INDEX","INNER","ISSUE",
"JOINT","JUICE","JUICY","KNELT","KNOWN","LABEL","LABOR","LARGE","LATER","LAUGH",
"LEARN","LEASE","LEGAL","LIGHT","LINEN","LIVER","LOCAL","LOVER","LOWER","LUCKY",
"MAJOR","MAKER","MEDAL","MEDIA","MINOR","MIXED","MODEL","MONEY","MOTEL","MOTOR",
"MOUNT","MOUSE","MOVIE","MUSIC","NANNY","ROBOT","NEWLY","NORTH","NOTED","NURSE",
"OPERA","ORDER","OTHER","OUGHT","OWNER","PHASE","PIANO"
];
// ─── Reverse-lookup maps ─────────────────────────────────────────────────────
const NC_SINGLE_MAP = {};
NC_SINGLES.forEach((w, i) => { NC_SINGLE_MAP[w] = i; });
const NC_DOUBLE_MAP = {};
NC_DOUBLES.forEach((w, i) => { NC_DOUBLE_MAP[w] = i; });
const NC_TRIPLE_MAP = {};
NC_TRIPLES.forEach((w, i) => { NC_TRIPLE_MAP[w] = i; });
// ─── Validation ──────────────────────────────────────────────────────────────
(function validate() {
const errs = [];
if (NC_SINGLES.length !== 10)
errs.push("Singles: expected 10, got " + NC_SINGLES.length);
if (NC_DOUBLES.length !== 1296)
errs.push("Doubles: expected 1296, got " + NC_DOUBLES.length);
if (NC_TRIPLES.length !== 1000)
errs.push("Triples: expected 1000, got " + NC_TRIPLES.length);
const all = [...NC_SINGLES, ...NC_DOUBLES, ...NC_TRIPLES];
const unique = new Set(all);
if (unique.size !== all.length) {
errs.push("Duplicate words detected (" + all.length + " total, " + unique.size + " unique)");
const seen = new Set();
for (const w of all) {
if (seen.has(w)) errs.push(" dup: " + w);
seen.add(w);
}
}
if (errs.length) {
console.error("NumoCipher wordlist errors:\n" + errs.join("\n"));
if (typeof document !== "undefined") {
const el = document.getElementById("wl-errors");
if (el) el.textContent = errs.join("\n");
}
} else {
console.log("NumoCipher wordlist OK — " + all.length + " words");
}
})();