Files
bitvid/vendor/bitlogin/bitlogin-shared-B2Rc9khL.js
T
thePR0M3TH3ANandClaude Fable 5 847a855ec8 Update the vendored BitLogin widget to the security-audit build
Was on the 2026-07-25 build. Carries an adversarial audit's fixes, the
ones that matter most for a site that hands the widget real identities:

- Origin binding is enforced INSIDE the crypto worker and derived from
  self.location instead of a caller-supplied field, so a page cannot
  read or adopt a wallet connection bound to a different site.
- Phrase recovery no longer trips the rollback alarm on every later
  login (the mark is keyed by the everyday pubkey, which recovery
  preserves, while the recovered capsule restarts at generation 0) --
  users who had ever rotated a password previously saw "possibly
  revoked credentials" forever, with no way to clear it.
- quorumMet counts relays that ANSWERED rather than ones that merely
  accepted a socket, and relay responses are now checked against the
  address requested, so a single junk event can no longer block
  registration, rotation, and recovery.
- Password rotation checks the new capsule reached quorum BEFORE
  publishing the tombstone that destroys the old one; a failed rotation
  used to be able to leave neither password working.
- Derived secrets (Argon2id output, both PRKs, the BIP-39 seed) are now
  wiped at their derivation site, as the spec always claimed.
- The worker RPC validates message shapes, times out, and rejects
  pending calls when the worker dies, so a torn-down worker surfaces as
  an error instead of a permanent hang.
- Synthetic (script-dispatched) clicks no longer drive consent UI.

Verified: the 10 pre-existing test failures in this suite are unchanged
by this update (checked by stashing the vendor directory and re-running
-- 1330 pass / 10 fail either way), and the BitLogin auth-provider
tests pass. dist/ is gitignored build output and regenerates.

Co-Authored-By: Claude Fable 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01CMr9Yt8SYmZcfgrg3CV2G1
2026-07-31 10:02:48 -04:00

10850 lines
282 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
function Kr(e) {
return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e;
}
var yt, or;
function xn() {
return or || (or = 1, yt = {
11111: "abacus",
11112: "abdomen",
11113: "abdominal",
11114: "abide",
11115: "abiding",
11116: "ability",
11121: "ablaze",
11122: "able",
11123: "abnormal",
11124: "abrasion",
11125: "abrasive",
11126: "abreast",
11131: "abridge",
11132: "abroad",
11133: "abruptly",
11134: "absence",
11135: "absentee",
11136: "absently",
11141: "absinthe",
11142: "absolute",
11143: "absolve",
11144: "abstain",
11145: "abstract",
11146: "absurd",
11151: "accent",
11152: "acclaim",
11153: "acclimate",
11154: "accompany",
11155: "account",
11156: "accuracy",
11161: "accurate",
11162: "accustom",
11163: "acetone",
11164: "achiness",
11165: "aching",
11166: "acid",
11211: "acorn",
11212: "acquaint",
11213: "acquire",
11214: "acre",
11215: "acrobat",
11216: "acronym",
11221: "acting",
11222: "action",
11223: "activate",
11224: "activator",
11225: "active",
11226: "activism",
11231: "activist",
11232: "activity",
11233: "actress",
11234: "acts",
11235: "acutely",
11236: "acuteness",
11241: "aeration",
11242: "aerobics",
11243: "aerosol",
11244: "aerospace",
11245: "afar",
11246: "affair",
11251: "affected",
11252: "affecting",
11253: "affection",
11254: "affidavit",
11255: "affiliate",
11256: "affirm",
11261: "affix",
11262: "afflicted",
11263: "affluent",
11264: "afford",
11265: "affront",
11266: "aflame",
11311: "afloat",
11312: "aflutter",
11313: "afoot",
11314: "afraid",
11315: "afterglow",
11316: "afterlife",
11321: "aftermath",
11322: "aftermost",
11323: "afternoon",
11324: "aged",
11325: "ageless",
11326: "agency",
11331: "agenda",
11332: "agent",
11333: "aggregate",
11334: "aghast",
11335: "agile",
11336: "agility",
11341: "aging",
11342: "agnostic",
11343: "agonize",
11344: "agonizing",
11345: "agony",
11346: "agreeable",
11351: "agreeably",
11352: "agreed",
11353: "agreeing",
11354: "agreement",
11355: "aground",
11356: "ahead",
11361: "ahoy",
11362: "aide",
11363: "aids",
11364: "aim",
11365: "ajar",
11366: "alabaster",
11411: "alarm",
11412: "albatross",
11413: "album",
11414: "alfalfa",
11415: "algebra",
11416: "algorithm",
11421: "alias",
11422: "alibi",
11423: "alienable",
11424: "alienate",
11425: "aliens",
11426: "alike",
11431: "alive",
11432: "alkaline",
11433: "alkalize",
11434: "almanac",
11435: "almighty",
11436: "almost",
11441: "aloe",
11442: "aloft",
11443: "aloha",
11444: "alone",
11445: "alongside",
11446: "aloof",
11451: "alphabet",
11452: "alright",
11453: "although",
11454: "altitude",
11455: "alto",
11456: "aluminum",
11461: "alumni",
11462: "always",
11463: "amaretto",
11464: "amaze",
11465: "amazingly",
11466: "amber",
11511: "ambiance",
11512: "ambiguity",
11513: "ambiguous",
11514: "ambition",
11515: "ambitious",
11516: "ambulance",
11521: "ambush",
11522: "amendable",
11523: "amendment",
11524: "amends",
11525: "amenity",
11526: "amiable",
11531: "amicably",
11532: "amid",
11533: "amigo",
11534: "amino",
11535: "amiss",
11536: "ammonia",
11541: "ammonium",
11542: "amnesty",
11543: "amniotic",
11544: "among",
11545: "amount",
11546: "amperage",
11551: "ample",
11552: "amplifier",
11553: "amplify",
11554: "amply",
11555: "amuck",
11556: "amulet",
11561: "amusable",
11562: "amused",
11563: "amusement",
11564: "amuser",
11565: "amusing",
11566: "anaconda",
11611: "anaerobic",
11612: "anagram",
11613: "anatomist",
11614: "anatomy",
11615: "anchor",
11616: "anchovy",
11621: "ancient",
11622: "android",
11623: "anemia",
11624: "anemic",
11625: "aneurism",
11626: "anew",
11631: "angelfish",
11632: "angelic",
11633: "anger",
11634: "angled",
11635: "angler",
11636: "angles",
11641: "angling",
11642: "angrily",
11643: "angriness",
11644: "anguished",
11645: "angular",
11646: "animal",
11651: "animate",
11652: "animating",
11653: "animation",
11654: "animator",
11655: "anime",
11656: "animosity",
11661: "ankle",
11662: "annex",
11663: "annotate",
11664: "announcer",
11665: "annoying",
11666: "annually",
12111: "annuity",
12112: "anointer",
12113: "another",
12114: "answering",
12115: "antacid",
12116: "antarctic",
12121: "anteater",
12122: "antelope",
12123: "antennae",
12124: "anthem",
12125: "anthill",
12126: "anthology",
12131: "antibody",
12132: "antics",
12133: "antidote",
12134: "antihero",
12135: "antiquely",
12136: "antiques",
12141: "antiquity",
12142: "antirust",
12143: "antitoxic",
12144: "antitrust",
12145: "antiviral",
12146: "antivirus",
12151: "antler",
12152: "antonym",
12153: "antsy",
12154: "anvil",
12155: "anybody",
12156: "anyhow",
12161: "anymore",
12162: "anyone",
12163: "anyplace",
12164: "anything",
12165: "anytime",
12166: "anyway",
12211: "anywhere",
12212: "aorta",
12213: "apache",
12214: "apostle",
12215: "appealing",
12216: "appear",
12221: "appease",
12222: "appeasing",
12223: "appendage",
12224: "appendix",
12225: "appetite",
12226: "appetizer",
12231: "applaud",
12232: "applause",
12233: "apple",
12234: "appliance",
12235: "applicant",
12236: "applied",
12241: "apply",
12242: "appointee",
12243: "appraisal",
12244: "appraiser",
12245: "apprehend",
12246: "approach",
12251: "approval",
12252: "approve",
12253: "apricot",
12254: "april",
12255: "apron",
12256: "aptitude",
12261: "aptly",
12262: "aqua",
12263: "aqueduct",
12264: "arbitrary",
12265: "arbitrate",
12266: "ardently",
12311: "area",
12312: "arena",
12313: "arguable",
12314: "arguably",
12315: "argue",
12316: "arise",
12321: "armadillo",
12322: "armband",
12323: "armchair",
12324: "armed",
12325: "armful",
12326: "armhole",
12331: "arming",
12332: "armless",
12333: "armoire",
12334: "armored",
12335: "armory",
12336: "armrest",
12341: "army",
12342: "aroma",
12343: "arose",
12344: "around",
12345: "arousal",
12346: "arrange",
12351: "array",
12352: "arrest",
12353: "arrival",
12354: "arrive",
12355: "arrogance",
12356: "arrogant",
12361: "arson",
12362: "art",
12363: "ascend",
12364: "ascension",
12365: "ascent",
12366: "ascertain",
12411: "ashamed",
12412: "ashen",
12413: "ashes",
12414: "ashy",
12415: "aside",
12416: "askew",
12421: "asleep",
12422: "asparagus",
12423: "aspect",
12424: "aspirate",
12425: "aspire",
12426: "aspirin",
12431: "astonish",
12432: "astound",
12433: "astride",
12434: "astrology",
12435: "astronaut",
12436: "astronomy",
12441: "astute",
12442: "atlantic",
12443: "atlas",
12444: "atom",
12445: "atonable",
12446: "atop",
12451: "atrium",
12452: "atrocious",
12453: "atrophy",
12454: "attach",
12455: "attain",
12456: "attempt",
12461: "attendant",
12462: "attendee",
12463: "attention",
12464: "attentive",
12465: "attest",
12466: "attic",
12511: "attire",
12512: "attitude",
12513: "attractor",
12514: "attribute",
12515: "atypical",
12516: "auction",
12521: "audacious",
12522: "audacity",
12523: "audible",
12524: "audibly",
12525: "audience",
12526: "audio",
12531: "audition",
12532: "augmented",
12533: "august",
12534: "authentic",
12535: "author",
12536: "autism",
12541: "autistic",
12542: "autograph",
12543: "automaker",
12544: "automated",
12545: "automatic",
12546: "autopilot",
12551: "available",
12552: "avalanche",
12553: "avatar",
12554: "avenge",
12555: "avenging",
12556: "avenue",
12561: "average",
12562: "aversion",
12563: "avert",
12564: "aviation",
12565: "aviator",
12566: "avid",
12611: "avoid",
12612: "await",
12613: "awaken",
12614: "award",
12615: "aware",
12616: "awhile",
12621: "awkward",
12622: "awning",
12623: "awoke",
12624: "awry",
12625: "axis",
12626: "babble",
12631: "babbling",
12632: "babied",
12633: "baboon",
12634: "backache",
12635: "backboard",
12636: "backboned",
12641: "backdrop",
12642: "backed",
12643: "backer",
12644: "backfield",
12645: "backfire",
12646: "backhand",
12651: "backing",
12652: "backlands",
12653: "backlash",
12654: "backless",
12655: "backlight",
12656: "backlit",
12661: "backlog",
12662: "backpack",
12663: "backpedal",
12664: "backrest",
12665: "backroom",
12666: "backshift",
13111: "backside",
13112: "backslid",
13113: "backspace",
13114: "backspin",
13115: "backstab",
13116: "backstage",
13121: "backtalk",
13122: "backtrack",
13123: "backup",
13124: "backward",
13125: "backwash",
13126: "backwater",
13131: "backyard",
13132: "bacon",
13133: "bacteria",
13134: "bacterium",
13135: "badass",
13136: "badge",
13141: "badland",
13142: "badly",
13143: "badness",
13144: "baffle",
13145: "baffling",
13146: "bagel",
13151: "bagful",
13152: "baggage",
13153: "bagged",
13154: "baggie",
13155: "bagginess",
13156: "bagging",
13161: "baggy",
13162: "bagpipe",
13163: "baguette",
13164: "baked",
13165: "bakery",
13166: "bakeshop",
13211: "baking",
13212: "balance",
13213: "balancing",
13214: "balcony",
13215: "balmy",
13216: "balsamic",
13221: "bamboo",
13222: "banana",
13223: "banish",
13224: "banister",
13225: "banjo",
13226: "bankable",
13231: "bankbook",
13232: "banked",
13233: "banker",
13234: "banking",
13235: "banknote",
13236: "bankroll",
13241: "banner",
13242: "bannister",
13243: "banshee",
13244: "banter",
13245: "barbecue",
13246: "barbed",
13251: "barbell",
13252: "barber",
13253: "barcode",
13254: "barge",
13255: "bargraph",
13256: "barista",
13261: "baritone",
13262: "barley",
13263: "barmaid",
13264: "barman",
13265: "barn",
13266: "barometer",
13311: "barrack",
13312: "barracuda",
13313: "barrel",
13314: "barrette",
13315: "barricade",
13316: "barrier",
13321: "barstool",
13322: "bartender",
13323: "barterer",
13324: "bash",
13325: "basically",
13326: "basics",
13331: "basil",
13332: "basin",
13333: "basis",
13334: "basket",
13335: "batboy",
13336: "batch",
13341: "bath",
13342: "baton",
13343: "bats",
13344: "battalion",
13345: "battered",
13346: "battering",
13351: "battery",
13352: "batting",
13353: "battle",
13354: "bauble",
13355: "bazooka",
13356: "blabber",
13361: "bladder",
13362: "blade",
13363: "blah",
13364: "blame",
13365: "blaming",
13366: "blanching",
13411: "blandness",
13412: "blank",
13413: "blaspheme",
13414: "blasphemy",
13415: "blast",
13416: "blatancy",
13421: "blatantly",
13422: "blazer",
13423: "blazing",
13424: "bleach",
13425: "bleak",
13426: "bleep",
13431: "blemish",
13432: "blend",
13433: "bless",
13434: "blighted",
13435: "blimp",
13436: "bling",
13441: "blinked",
13442: "blinker",
13443: "blinking",
13444: "blinks",
13445: "blip",
13446: "blissful",
13451: "blitz",
13452: "blizzard",
13453: "bloated",
13454: "bloating",
13455: "blob",
13456: "blog",
13461: "bloomers",
13462: "blooming",
13463: "blooper",
13464: "blot",
13465: "blouse",
13466: "blubber",
13511: "bluff",
13512: "bluish",
13513: "blunderer",
13514: "blunt",
13515: "blurb",
13516: "blurred",
13521: "blurry",
13522: "blurt",
13523: "blush",
13524: "blustery",
13525: "boaster",
13526: "boastful",
13531: "boasting",
13532: "boat",
13533: "bobbed",
13534: "bobbing",
13535: "bobble",
13536: "bobcat",
13541: "bobsled",
13542: "bobtail",
13543: "bodacious",
13544: "body",
13545: "bogged",
13546: "boggle",
13551: "bogus",
13552: "boil",
13553: "bok",
13554: "bolster",
13555: "bolt",
13556: "bonanza",
13561: "bonded",
13562: "bonding",
13563: "bondless",
13564: "boned",
13565: "bonehead",
13566: "boneless",
13611: "bonelike",
13612: "boney",
13613: "bonfire",
13614: "bonnet",
13615: "bonsai",
13616: "bonus",
13621: "bony",
13622: "boogeyman",
13623: "boogieman",
13624: "book",
13625: "boondocks",
13626: "booted",
13631: "booth",
13632: "bootie",
13633: "booting",
13634: "bootlace",
13635: "bootleg",
13636: "boots",
13641: "boozy",
13642: "borax",
13643: "boring",
13644: "borough",
13645: "borrower",
13646: "borrowing",
13651: "boss",
13652: "botanical",
13653: "botanist",
13654: "botany",
13655: "botch",
13656: "both",
13661: "bottle",
13662: "bottling",
13663: "bottom",
13664: "bounce",
13665: "bouncing",
13666: "bouncy",
14111: "bounding",
14112: "boundless",
14113: "bountiful",
14114: "bovine",
14115: "boxcar",
14116: "boxer",
14121: "boxing",
14122: "boxlike",
14123: "boxy",
14124: "breach",
14125: "breath",
14126: "breeches",
14131: "breeching",
14132: "breeder",
14133: "breeding",
14134: "breeze",
14135: "breezy",
14136: "brethren",
14141: "brewery",
14142: "brewing",
14143: "briar",
14144: "bribe",
14145: "brick",
14146: "bride",
14151: "bridged",
14152: "brigade",
14153: "bright",
14154: "brilliant",
14155: "brim",
14156: "bring",
14161: "brink",
14162: "brisket",
14163: "briskly",
14164: "briskness",
14165: "bristle",
14166: "brittle",
14211: "broadband",
14212: "broadcast",
14213: "broaden",
14214: "broadly",
14215: "broadness",
14216: "broadside",
14221: "broadways",
14222: "broiler",
14223: "broiling",
14224: "broken",
14225: "broker",
14226: "bronchial",
14231: "bronco",
14232: "bronze",
14233: "bronzing",
14234: "brook",
14235: "broom",
14236: "brought",
14241: "browbeat",
14242: "brownnose",
14243: "browse",
14244: "browsing",
14245: "bruising",
14246: "brunch",
14251: "brunette",
14252: "brunt",
14253: "brush",
14254: "brussels",
14255: "brute",
14256: "brutishly",
14261: "bubble",
14262: "bubbling",
14263: "bubbly",
14264: "buccaneer",
14265: "bucked",
14266: "bucket",
14311: "buckle",
14312: "buckshot",
14313: "buckskin",
14314: "bucktooth",
14315: "buckwheat",
14316: "buddhism",
14321: "buddhist",
14322: "budding",
14323: "buddy",
14324: "budget",
14325: "buffalo",
14326: "buffed",
14331: "buffer",
14332: "buffing",
14333: "buffoon",
14334: "buggy",
14335: "bulb",
14336: "bulge",
14341: "bulginess",
14342: "bulgur",
14343: "bulk",
14344: "bulldog",
14345: "bulldozer",
14346: "bullfight",
14351: "bullfrog",
14352: "bullhorn",
14353: "bullion",
14354: "bullish",
14355: "bullpen",
14356: "bullring",
14361: "bullseye",
14362: "bullwhip",
14363: "bully",
14364: "bunch",
14365: "bundle",
14366: "bungee",
14411: "bunion",
14412: "bunkbed",
14413: "bunkhouse",
14414: "bunkmate",
14415: "bunny",
14416: "bunt",
14421: "busboy",
14422: "bush",
14423: "busily",
14424: "busload",
14425: "bust",
14426: "busybody",
14431: "buzz",
14432: "cabana",
14433: "cabbage",
14434: "cabbie",
14435: "cabdriver",
14436: "cable",
14441: "caboose",
14442: "cache",
14443: "cackle",
14444: "cacti",
14445: "cactus",
14446: "caddie",
14451: "caddy",
14452: "cadet",
14453: "cadillac",
14454: "cadmium",
14455: "cage",
14456: "cahoots",
14461: "cake",
14462: "calamari",
14463: "calamity",
14464: "calcium",
14465: "calculate",
14466: "calculus",
14511: "caliber",
14512: "calibrate",
14513: "calm",
14514: "caloric",
14515: "calorie",
14516: "calzone",
14521: "camcorder",
14522: "cameo",
14523: "camera",
14524: "camisole",
14525: "camper",
14526: "campfire",
14531: "camping",
14532: "campsite",
14533: "campus",
14534: "canal",
14535: "canary",
14536: "cancel",
14541: "candied",
14542: "candle",
14543: "candy",
14544: "cane",
14545: "canine",
14546: "canister",
14551: "cannabis",
14552: "canned",
14553: "canning",
14554: "cannon",
14555: "cannot",
14556: "canola",
14561: "canon",
14562: "canopener",
14563: "canopy",
14564: "canteen",
14565: "canyon",
14566: "capable",
14611: "capably",
14612: "capacity",
14613: "cape",
14614: "capillary",
14615: "capital",
14616: "capitol",
14621: "capped",
14622: "capricorn",
14623: "capsize",
14624: "capsule",
14625: "caption",
14626: "captivate",
14631: "captive",
14632: "captivity",
14633: "capture",
14634: "caramel",
14635: "carat",
14636: "caravan",
14641: "carbon",
14642: "cardboard",
14643: "carded",
14644: "cardiac",
14645: "cardigan",
14646: "cardinal",
14651: "cardstock",
14652: "carefully",
14653: "caregiver",
14654: "careless",
14655: "caress",
14656: "caretaker",
14661: "cargo",
14662: "caring",
14663: "carless",
14664: "carload",
14665: "carmaker",
14666: "carnage",
15111: "carnation",
15112: "carnival",
15113: "carnivore",
15114: "carol",
15115: "carpenter",
15116: "carpentry",
15121: "carpool",
15122: "carport",
15123: "carried",
15124: "carrot",
15125: "carrousel",
15126: "carry",
15131: "cartel",
15132: "cartload",
15133: "carton",
15134: "cartoon",
15135: "cartridge",
15136: "cartwheel",
15141: "carve",
15142: "carving",
15143: "carwash",
15144: "cascade",
15145: "case",
15146: "cash",
15151: "casing",
15152: "casino",
15153: "casket",
15154: "cassette",
15155: "casually",
15156: "casualty",
15161: "catacomb",
15162: "catalog",
15163: "catalyst",
15164: "catalyze",
15165: "catapult",
15166: "cataract",
15211: "catatonic",
15212: "catcall",
15213: "catchable",
15214: "catcher",
15215: "catching",
15216: "catchy",
15221: "caterer",
15222: "catering",
15223: "catfight",
15224: "catfish",
15225: "cathedral",
15226: "cathouse",
15231: "catlike",
15232: "catnap",
15233: "catnip",
15234: "catsup",
15235: "cattail",
15236: "cattishly",
15241: "cattle",
15242: "catty",
15243: "catwalk",
15244: "caucasian",
15245: "caucus",
15246: "causal",
15251: "causation",
15252: "cause",
15253: "causing",
15254: "cauterize",
15255: "caution",
15256: "cautious",
15261: "cavalier",
15262: "cavalry",
15263: "caviar",
15264: "cavity",
15265: "cedar",
15266: "celery",
15311: "celestial",
15312: "celibacy",
15313: "celibate",
15314: "celtic",
15315: "cement",
15316: "census",
15321: "ceramics",
15322: "ceremony",
15323: "certainly",
15324: "certainty",
15325: "certified",
15326: "certify",
15331: "cesarean",
15332: "cesspool",
15333: "chafe",
15334: "chaffing",
15335: "chain",
15336: "chair",
15341: "chalice",
15342: "challenge",
15343: "chamber",
15344: "chamomile",
15345: "champion",
15346: "chance",
15351: "change",
15352: "channel",
15353: "chant",
15354: "chaos",
15355: "chaperone",
15356: "chaplain",
15361: "chapped",
15362: "chaps",
15363: "chapter",
15364: "character",
15365: "charbroil",
15366: "charcoal",
15411: "charger",
15412: "charging",
15413: "chariot",
15414: "charity",
15415: "charm",
15416: "charred",
15421: "charter",
15422: "charting",
15423: "chase",
15424: "chasing",
15425: "chaste",
15426: "chastise",
15431: "chastity",
15432: "chatroom",
15433: "chatter",
15434: "chatting",
15435: "chatty",
15436: "cheating",
15441: "cheddar",
15442: "cheek",
15443: "cheer",
15444: "cheese",
15445: "cheesy",
15446: "chef",
15451: "chemicals",
15452: "chemist",
15453: "chemo",
15454: "cherisher",
15455: "cherub",
15456: "chess",
15461: "chest",
15462: "chevron",
15463: "chevy",
15464: "chewable",
15465: "chewer",
15466: "chewing",
15511: "chewy",
15512: "chief",
15513: "chihuahua",
15514: "childcare",
15515: "childhood",
15516: "childish",
15521: "childless",
15522: "childlike",
15523: "chili",
15524: "chill",
15525: "chimp",
15526: "chip",
15531: "chirping",
15532: "chirpy",
15533: "chitchat",
15534: "chivalry",
15535: "chive",
15536: "chloride",
15541: "chlorine",
15542: "choice",
15543: "chokehold",
15544: "choking",
15545: "chomp",
15546: "chooser",
15551: "choosing",
15552: "choosy",
15553: "chop",
15554: "chosen",
15555: "chowder",
15556: "chowtime",
15561: "chrome",
15562: "chubby",
15563: "chuck",
15564: "chug",
15565: "chummy",
15566: "chump",
15611: "chunk",
15612: "churn",
15613: "chute",
15614: "cider",
15615: "cilantro",
15616: "cinch",
15621: "cinema",
15622: "cinnamon",
15623: "circle",
15624: "circling",
15625: "circular",
15626: "circulate",
15631: "circus",
15632: "citable",
15633: "citadel",
15634: "citation",
15635: "citizen",
15636: "citric",
15641: "citrus",
15642: "city",
15643: "civic",
15644: "civil",
15645: "clad",
15646: "claim",
15651: "clambake",
15652: "clammy",
15653: "clamor",
15654: "clamp",
15655: "clamshell",
15656: "clang",
15661: "clanking",
15662: "clapped",
15663: "clapper",
15664: "clapping",
15665: "clarify",
15666: "clarinet",
16111: "clarity",
16112: "clash",
16113: "clasp",
16114: "class",
16115: "clatter",
16116: "clause",
16121: "clavicle",
16122: "claw",
16123: "clay",
16124: "clean",
16125: "clear",
16126: "cleat",
16131: "cleaver",
16132: "cleft",
16133: "clench",
16134: "clergyman",
16135: "clerical",
16136: "clerk",
16141: "clever",
16142: "clicker",
16143: "client",
16144: "climate",
16145: "climatic",
16146: "cling",
16151: "clinic",
16152: "clinking",
16153: "clip",
16154: "clique",
16155: "cloak",
16156: "clobber",
16161: "clock",
16162: "clone",
16163: "cloning",
16164: "closable",
16165: "closure",
16166: "clothes",
16211: "clothing",
16212: "cloud",
16213: "clover",
16214: "clubbed",
16215: "clubbing",
16216: "clubhouse",
16221: "clump",
16222: "clumsily",
16223: "clumsy",
16224: "clunky",
16225: "clustered",
16226: "clutch",
16231: "clutter",
16232: "coach",
16233: "coagulant",
16234: "coastal",
16235: "coaster",
16236: "coasting",
16241: "coastland",
16242: "coastline",
16243: "coat",
16244: "coauthor",
16245: "cobalt",
16246: "cobbler",
16251: "cobweb",
16252: "cocoa",
16253: "coconut",
16254: "cod",
16255: "coeditor",
16256: "coerce",
16261: "coexist",
16262: "coffee",
16263: "cofounder",
16264: "cognition",
16265: "cognitive",
16266: "cogwheel",
16311: "coherence",
16312: "coherent",
16313: "cohesive",
16314: "coil",
16315: "coke",
16316: "cola",
16321: "cold",
16322: "coleslaw",
16323: "coliseum",
16324: "collage",
16325: "collapse",
16326: "collar",
16331: "collected",
16332: "collector",
16333: "collide",
16334: "collie",
16335: "collision",
16336: "colonial",
16341: "colonist",
16342: "colonize",
16343: "colony",
16344: "colossal",
16345: "colt",
16346: "coma",
16351: "come",
16352: "comfort",
16353: "comfy",
16354: "comic",
16355: "coming",
16356: "comma",
16361: "commence",
16362: "commend",
16363: "comment",
16364: "commerce",
16365: "commode",
16366: "commodity",
16411: "commodore",
16412: "common",
16413: "commotion",
16414: "commute",
16415: "commuting",
16416: "compacted",
16421: "compacter",
16422: "compactly",
16423: "compactor",
16424: "companion",
16425: "company",
16426: "compare",
16431: "compel",
16432: "compile",
16433: "comply",
16434: "component",
16435: "composed",
16436: "composer",
16441: "composite",
16442: "compost",
16443: "composure",
16444: "compound",
16445: "compress",
16446: "comprised",
16451: "computer",
16452: "computing",
16453: "comrade",
16454: "concave",
16455: "conceal",
16456: "conceded",
16461: "concept",
16462: "concerned",
16463: "concert",
16464: "conch",
16465: "concierge",
16466: "concise",
16511: "conclude",
16512: "concrete",
16513: "concur",
16514: "condense",
16515: "condiment",
16516: "condition",
16521: "condone",
16522: "conducive",
16523: "conductor",
16524: "conduit",
16525: "cone",
16526: "confess",
16531: "confetti",
16532: "confidant",
16533: "confident",
16534: "confider",
16535: "confiding",
16536: "configure",
16541: "confined",
16542: "confining",
16543: "confirm",
16544: "conflict",
16545: "conform",
16546: "confound",
16551: "confront",
16552: "confused",
16553: "confusing",
16554: "confusion",
16555: "congenial",
16556: "congested",
16561: "congrats",
16562: "congress",
16563: "conical",
16564: "conjoined",
16565: "conjure",
16566: "conjuror",
16611: "connected",
16612: "connector",
16613: "consensus",
16614: "consent",
16615: "console",
16616: "consoling",
16621: "consonant",
16622: "constable",
16623: "constant",
16624: "constrain",
16625: "constrict",
16626: "construct",
16631: "consult",
16632: "consumer",
16633: "consuming",
16634: "contact",
16635: "container",
16636: "contempt",
16641: "contend",
16642: "contented",
16643: "contently",
16644: "contents",
16645: "contest",
16646: "context",
16651: "contort",
16652: "contour",
16653: "contrite",
16654: "control",
16655: "contusion",
16656: "convene",
16661: "convent",
16662: "copartner",
16663: "cope",
16664: "copied",
16665: "copier",
16666: "copilot",
21111: "coping",
21112: "copious",
21113: "copper",
21114: "copy",
21115: "coral",
21116: "cork",
21121: "cornball",
21122: "cornbread",
21123: "corncob",
21124: "cornea",
21125: "corned",
21126: "corner",
21131: "cornfield",
21132: "cornflake",
21133: "cornhusk",
21134: "cornmeal",
21135: "cornstalk",
21136: "corny",
21141: "coronary",
21142: "coroner",
21143: "corporal",
21144: "corporate",
21145: "corral",
21146: "correct",
21151: "corridor",
21152: "corrode",
21153: "corroding",
21154: "corrosive",
21155: "corsage",
21156: "corset",
21161: "cortex",
21162: "cosigner",
21163: "cosmetics",
21164: "cosmic",
21165: "cosmos",
21166: "cosponsor",
21211: "cost",
21212: "cottage",
21213: "cotton",
21214: "couch",
21215: "cough",
21216: "could",
21221: "countable",
21222: "countdown",
21223: "counting",
21224: "countless",
21225: "country",
21226: "county",
21231: "courier",
21232: "covenant",
21233: "cover",
21234: "coveted",
21235: "coveting",
21236: "coyness",
21241: "cozily",
21242: "coziness",
21243: "cozy",
21244: "crabbing",
21245: "crabgrass",
21246: "crablike",
21251: "crabmeat",
21252: "cradle",
21253: "cradling",
21254: "crafter",
21255: "craftily",
21256: "craftsman",
21261: "craftwork",
21262: "crafty",
21263: "cramp",
21264: "cranberry",
21265: "crane",
21266: "cranial",
21311: "cranium",
21312: "crank",
21313: "crate",
21314: "crave",
21315: "craving",
21316: "crawfish",
21321: "crawlers",
21322: "crawling",
21323: "crayfish",
21324: "crayon",
21325: "crazed",
21326: "crazily",
21331: "craziness",
21332: "crazy",
21333: "creamed",
21334: "creamer",
21335: "creamlike",
21336: "crease",
21341: "creasing",
21342: "creatable",
21343: "create",
21344: "creation",
21345: "creative",
21346: "creature",
21351: "credible",
21352: "credibly",
21353: "credit",
21354: "creed",
21355: "creme",
21356: "creole",
21361: "crepe",
21362: "crept",
21363: "crescent",
21364: "crested",
21365: "cresting",
21366: "crestless",
21411: "crevice",
21412: "crewless",
21413: "crewman",
21414: "crewmate",
21415: "crib",
21416: "cricket",
21421: "cried",
21422: "crier",
21423: "crimp",
21424: "crimson",
21425: "cringe",
21426: "cringing",
21431: "crinkle",
21432: "crinkly",
21433: "crisped",
21434: "crisping",
21435: "crisply",
21436: "crispness",
21441: "crispy",
21442: "criteria",
21443: "critter",
21444: "croak",
21445: "crock",
21446: "crook",
21451: "croon",
21452: "crop",
21453: "cross",
21454: "crouch",
21455: "crouton",
21456: "crowbar",
21461: "crowd",
21462: "crown",
21463: "crucial",
21464: "crudely",
21465: "crudeness",
21466: "cruelly",
21511: "cruelness",
21512: "cruelty",
21513: "crumb",
21514: "crummiest",
21515: "crummy",
21516: "crumpet",
21521: "crumpled",
21522: "cruncher",
21523: "crunching",
21524: "crunchy",
21525: "crusader",
21526: "crushable",
21531: "crushed",
21532: "crusher",
21533: "crushing",
21534: "crust",
21535: "crux",
21536: "crying",
21541: "cryptic",
21542: "crystal",
21543: "cubbyhole",
21544: "cube",
21545: "cubical",
21546: "cubicle",
21551: "cucumber",
21552: "cuddle",
21553: "cuddly",
21554: "cufflink",
21555: "culinary",
21556: "culminate",
21561: "culpable",
21562: "culprit",
21563: "cultivate",
21564: "cultural",
21565: "culture",
21566: "cupbearer",
21611: "cupcake",
21612: "cupid",
21613: "cupped",
21614: "cupping",
21615: "curable",
21616: "curator",
21621: "curdle",
21622: "cure",
21623: "curfew",
21624: "curing",
21625: "curled",
21626: "curler",
21631: "curliness",
21632: "curling",
21633: "curly",
21634: "curry",
21635: "curse",
21636: "cursive",
21641: "cursor",
21642: "curtain",
21643: "curtly",
21644: "curtsy",
21645: "curvature",
21646: "curve",
21651: "curvy",
21652: "cushy",
21653: "cusp",
21654: "cussed",
21655: "custard",
21656: "custodian",
21661: "custody",
21662: "customary",
21663: "customer",
21664: "customize",
21665: "customs",
21666: "cut",
22111: "cycle",
22112: "cyclic",
22113: "cycling",
22114: "cyclist",
22115: "cylinder",
22116: "cymbal",
22121: "cytoplasm",
22122: "cytoplast",
22123: "dab",
22124: "dad",
22125: "daffodil",
22126: "dagger",
22131: "daily",
22132: "daintily",
22133: "dainty",
22134: "dairy",
22135: "daisy",
22136: "dallying",
22141: "dance",
22142: "dancing",
22143: "dandelion",
22144: "dander",
22145: "dandruff",
22146: "dandy",
22151: "danger",
22152: "dangle",
22153: "dangling",
22154: "daredevil",
22155: "dares",
22156: "daringly",
22161: "darkened",
22162: "darkening",
22163: "darkish",
22164: "darkness",
22165: "darkroom",
22166: "darling",
22211: "darn",
22212: "dart",
22213: "darwinism",
22214: "dash",
22215: "dastardly",
22216: "data",
22221: "datebook",
22222: "dating",
22223: "daughter",
22224: "daunting",
22225: "dawdler",
22226: "dawn",
22231: "daybed",
22232: "daybreak",
22233: "daycare",
22234: "daydream",
22235: "daylight",
22236: "daylong",
22241: "dayroom",
22242: "daytime",
22243: "dazzler",
22244: "dazzling",
22245: "deacon",
22246: "deafening",
22251: "deafness",
22252: "dealer",
22253: "dealing",
22254: "dealmaker",
22255: "dealt",
22256: "dean",
22261: "debatable",
22262: "debate",
22263: "debating",
22264: "debit",
22265: "debrief",
22266: "debtless",
22311: "debtor",
22312: "debug",
22313: "debunk",
22314: "decade",
22315: "decaf",
22316: "decal",
22321: "decathlon",
22322: "decay",
22323: "deceased",
22324: "deceit",
22325: "deceiver",
22326: "deceiving",
22331: "december",
22332: "decency",
22333: "decent",
22334: "deception",
22335: "deceptive",
22336: "decibel",
22341: "decidable",
22342: "decimal",
22343: "decimeter",
22344: "decipher",
22345: "deck",
22346: "declared",
22351: "decline",
22352: "decode",
22353: "decompose",
22354: "decorated",
22355: "decorator",
22356: "decoy",
22361: "decrease",
22362: "decree",
22363: "dedicate",
22364: "dedicator",
22365: "deduce",
22366: "deduct",
22411: "deed",
22412: "deem",
22413: "deepen",
22414: "deeply",
22415: "deepness",
22416: "deface",
22421: "defacing",
22422: "defame",
22423: "default",
22424: "defeat",
22425: "defection",
22426: "defective",
22431: "defendant",
22432: "defender",
22433: "defense",
22434: "defensive",
22435: "deferral",
22436: "deferred",
22441: "defiance",
22442: "defiant",
22443: "defile",
22444: "defiling",
22445: "define",
22446: "definite",
22451: "deflate",
22452: "deflation",
22453: "deflator",
22454: "deflected",
22455: "deflector",
22456: "defog",
22461: "deforest",
22462: "defraud",
22463: "defrost",
22464: "deftly",
22465: "defuse",
22466: "defy",
22511: "degraded",
22512: "degrading",
22513: "degrease",
22514: "degree",
22515: "dehydrate",
22516: "deity",
22521: "dejected",
22522: "delay",
22523: "delegate",
22524: "delegator",
22525: "delete",
22526: "deletion",
22531: "delicacy",
22532: "delicate",
22533: "delicious",
22534: "delighted",
22535: "delirious",
22536: "delirium",
22541: "deliverer",
22542: "delivery",
22543: "delouse",
22544: "delta",
22545: "deluge",
22546: "delusion",
22551: "deluxe",
22552: "demanding",
22553: "demeaning",
22554: "demeanor",
22555: "demise",
22556: "democracy",
22561: "democrat",
22562: "demote",
22563: "demotion",
22564: "demystify",
22565: "denatured",
22566: "deniable",
22611: "denial",
22612: "denim",
22613: "denote",
22614: "dense",
22615: "density",
22616: "dental",
22621: "dentist",
22622: "denture",
22623: "deny",
22624: "deodorant",
22625: "deodorize",
22626: "departed",
22631: "departure",
22632: "depict",
22633: "deplete",
22634: "depletion",
22635: "deplored",
22636: "deploy",
22641: "deport",
22642: "depose",
22643: "depraved",
22644: "depravity",
22645: "deprecate",
22646: "depress",
22651: "deprive",
22652: "depth",
22653: "deputize",
22654: "deputy",
22655: "derail",
22656: "deranged",
22661: "derby",
22662: "derived",
22663: "desecrate",
22664: "deserve",
22665: "deserving",
22666: "designate",
23111: "designed",
23112: "designer",
23113: "designing",
23114: "deskbound",
23115: "desktop",
23116: "deskwork",
23121: "desolate",
23122: "despair",
23123: "despise",
23124: "despite",
23125: "destiny",
23126: "destitute",
23131: "destruct",
23132: "detached",
23133: "detail",
23134: "detection",
23135: "detective",
23136: "detector",
23141: "detention",
23142: "detergent",
23143: "detest",
23144: "detonate",
23145: "detonator",
23146: "detoxify",
23151: "detract",
23152: "deuce",
23153: "devalue",
23154: "deviancy",
23155: "deviant",
23156: "deviate",
23161: "deviation",
23162: "deviator",
23163: "device",
23164: "devious",
23165: "devotedly",
23166: "devotee",
23211: "devotion",
23212: "devourer",
23213: "devouring",
23214: "devoutly",
23215: "dexterity",
23216: "dexterous",
23221: "diabetes",
23222: "diabetic",
23223: "diabolic",
23224: "diagnoses",
23225: "diagnosis",
23226: "diagram",
23231: "dial",
23232: "diameter",
23233: "diaper",
23234: "diaphragm",
23235: "diary",
23236: "dice",
23241: "dicing",
23242: "dictate",
23243: "dictation",
23244: "dictator",
23245: "difficult",
23246: "diffused",
23251: "diffuser",
23252: "diffusion",
23253: "diffusive",
23254: "dig",
23255: "dilation",
23256: "diligence",
23261: "diligent",
23262: "dill",
23263: "dilute",
23264: "dime",
23265: "diminish",
23266: "dimly",
23311: "dimmed",
23312: "dimmer",
23313: "dimness",
23314: "dimple",
23315: "diner",
23316: "dingbat",
23321: "dinghy",
23322: "dinginess",
23323: "dingo",
23324: "dingy",
23325: "dining",
23326: "dinner",
23331: "diocese",
23332: "dioxide",
23333: "diploma",
23334: "dipped",
23335: "dipper",
23336: "dipping",
23341: "directed",
23342: "direction",
23343: "directive",
23344: "directly",
23345: "directory",
23346: "direness",
23351: "dirtiness",
23352: "disabled",
23353: "disagree",
23354: "disallow",
23355: "disarm",
23356: "disarray",
23361: "disaster",
23362: "disband",
23363: "disbelief",
23364: "disburse",
23365: "discard",
23366: "discern",
23411: "discharge",
23412: "disclose",
23413: "discolor",
23414: "discount",
23415: "discourse",
23416: "discover",
23421: "discuss",
23422: "disdain",
23423: "disengage",
23424: "disfigure",
23425: "disgrace",
23426: "dish",
23431: "disinfect",
23432: "disjoin",
23433: "disk",
23434: "dislike",
23435: "disliking",
23436: "dislocate",
23441: "dislodge",
23442: "disloyal",
23443: "dismantle",
23444: "dismay",
23445: "dismiss",
23446: "dismount",
23451: "disobey",
23452: "disorder",
23453: "disown",
23454: "disparate",
23455: "disparity",
23456: "dispatch",
23461: "dispense",
23462: "dispersal",
23463: "dispersed",
23464: "disperser",
23465: "displace",
23466: "display",
23511: "displease",
23512: "disposal",
23513: "dispose",
23514: "disprove",
23515: "dispute",
23516: "disregard",
23521: "disrupt",
23522: "dissuade",
23523: "distance",
23524: "distant",
23525: "distaste",
23526: "distill",
23531: "distinct",
23532: "distort",
23533: "distract",
23534: "distress",
23535: "district",
23536: "distrust",
23541: "ditch",
23542: "ditto",
23543: "ditzy",
23544: "dividable",
23545: "divided",
23546: "dividend",
23551: "dividers",
23552: "dividing",
23553: "divinely",
23554: "diving",
23555: "divinity",
23556: "divisible",
23561: "divisibly",
23562: "division",
23563: "divisive",
23564: "divorcee",
23565: "dizziness",
23566: "dizzy",
23611: "doable",
23612: "docile",
23613: "dock",
23614: "doctrine",
23615: "document",
23616: "dodge",
23621: "dodgy",
23622: "doily",
23623: "doing",
23624: "dole",
23625: "dollar",
23626: "dollhouse",
23631: "dollop",
23632: "dolly",
23633: "dolphin",
23634: "domain",
23635: "domelike",
23636: "domestic",
23641: "dominion",
23642: "dominoes",
23643: "donated",
23644: "donation",
23645: "donator",
23646: "donor",
23651: "donut",
23652: "doodle",
23653: "doorbell",
23654: "doorframe",
23655: "doorknob",
23656: "doorman",
23661: "doormat",
23662: "doornail",
23663: "doorpost",
23664: "doorstep",
23665: "doorstop",
23666: "doorway",
24111: "doozy",
24112: "dork",
24113: "dormitory",
24114: "dorsal",
24115: "dosage",
24116: "dose",
24121: "dotted",
24122: "doubling",
24123: "douche",
24124: "dove",
24125: "down",
24126: "dowry",
24131: "doze",
24132: "drab",
24133: "dragging",
24134: "dragonfly",
24135: "dragonish",
24136: "dragster",
24141: "drainable",
24142: "drainage",
24143: "drained",
24144: "drainer",
24145: "drainpipe",
24146: "dramatic",
24151: "dramatize",
24152: "drank",
24153: "drapery",
24154: "drastic",
24155: "draw",
24156: "dreaded",
24161: "dreadful",
24162: "dreadlock",
24163: "dreamboat",
24164: "dreamily",
24165: "dreamland",
24166: "dreamless",
24211: "dreamlike",
24212: "dreamt",
24213: "dreamy",
24214: "drearily",
24215: "dreary",
24216: "drench",
24221: "dress",
24222: "drew",
24223: "dribble",
24224: "dried",
24225: "drier",
24226: "drift",
24231: "driller",
24232: "drilling",
24233: "drinkable",
24234: "drinking",
24235: "dripping",
24236: "drippy",
24241: "drivable",
24242: "driven",
24243: "driver",
24244: "driveway",
24245: "driving",
24246: "drizzle",
24251: "drizzly",
24252: "drone",
24253: "drool",
24254: "droop",
24255: "drop-down",
24256: "dropbox",
24261: "dropkick",
24262: "droplet",
24263: "dropout",
24264: "dropper",
24265: "drove",
24266: "drown",
24311: "drowsily",
24312: "drudge",
24313: "drum",
24314: "dry",
24315: "dubbed",
24316: "dubiously",
24321: "duchess",
24322: "duckbill",
24323: "ducking",
24324: "duckling",
24325: "ducktail",
24326: "ducky",
24331: "duct",
24332: "dude",
24333: "duffel",
24334: "dugout",
24335: "duh",
24336: "duke",
24341: "duller",
24342: "dullness",
24343: "duly",
24344: "dumping",
24345: "dumpling",
24346: "dumpster",
24351: "duo",
24352: "dupe",
24353: "duplex",
24354: "duplicate",
24355: "duplicity",
24356: "durable",
24361: "durably",
24362: "duration",
24363: "duress",
24364: "during",
24365: "dusk",
24366: "dust",
24411: "dutiful",
24412: "duty",
24413: "duvet",
24414: "dwarf",
24415: "dweeb",
24416: "dwelled",
24421: "dweller",
24422: "dwelling",
24423: "dwindle",
24424: "dwindling",
24425: "dynamic",
24426: "dynamite",
24431: "dynasty",
24432: "dyslexia",
24433: "dyslexic",
24434: "each",
24435: "eagle",
24436: "earache",
24441: "eardrum",
24442: "earflap",
24443: "earful",
24444: "earlobe",
24445: "early",
24446: "earmark",
24451: "earmuff",
24452: "earphone",
24453: "earpiece",
24454: "earplugs",
24455: "earring",
24456: "earshot",
24461: "earthen",
24462: "earthlike",
24463: "earthling",
24464: "earthly",
24465: "earthworm",
24466: "earthy",
24511: "earwig",
24512: "easeful",
24513: "easel",
24514: "easiest",
24515: "easily",
24516: "easiness",
24521: "easing",
24522: "eastbound",
24523: "eastcoast",
24524: "easter",
24525: "eastward",
24526: "eatable",
24531: "eaten",
24532: "eatery",
24533: "eating",
24534: "eats",
24535: "ebay",
24536: "ebony",
24541: "ebook",
24542: "ecard",
24543: "eccentric",
24544: "echo",
24545: "eclair",
24546: "eclipse",
24551: "ecologist",
24552: "ecology",
24553: "economic",
24554: "economist",
24555: "economy",
24556: "ecosphere",
24561: "ecosystem",
24562: "edge",
24563: "edginess",
24564: "edging",
24565: "edgy",
24566: "edition",
24611: "editor",
24612: "educated",
24613: "education",
24614: "educator",
24615: "eel",
24616: "effective",
24621: "effects",
24622: "efficient",
24623: "effort",
24624: "eggbeater",
24625: "egging",
24626: "eggnog",
24631: "eggplant",
24632: "eggshell",
24633: "egomaniac",
24634: "egotism",
24635: "egotistic",
24636: "either",
24641: "eject",
24642: "elaborate",
24643: "elastic",
24644: "elated",
24645: "elbow",
24646: "eldercare",
24651: "elderly",
24652: "eldest",
24653: "electable",
24654: "election",
24655: "elective",
24656: "elephant",
24661: "elevate",
24662: "elevating",
24663: "elevation",
24664: "elevator",
24665: "eleven",
24666: "elf",
25111: "eligible",
25112: "eligibly",
25113: "eliminate",
25114: "elite",
25115: "elitism",
25116: "elixir",
25121: "elk",
25122: "ellipse",
25123: "elliptic",
25124: "elm",
25125: "elongated",
25126: "elope",
25131: "eloquence",
25132: "eloquent",
25133: "elsewhere",
25134: "elude",
25135: "elusive",
25136: "elves",
25141: "email",
25142: "embargo",
25143: "embark",
25144: "embassy",
25145: "embattled",
25146: "embellish",
25151: "ember",
25152: "embezzle",
25153: "emblaze",
25154: "emblem",
25155: "embody",
25156: "embolism",
25161: "emboss",
25162: "embroider",
25163: "emcee",
25164: "emerald",
25165: "emergency",
25166: "emission",
25211: "emit",
25212: "emote",
25213: "emoticon",
25214: "emotion",
25215: "empathic",
25216: "empathy",
25221: "emperor",
25222: "emphases",
25223: "emphasis",
25224: "emphasize",
25225: "emphatic",
25226: "empirical",
25231: "employed",
25232: "employee",
25233: "employer",
25234: "emporium",
25235: "empower",
25236: "emptier",
25241: "emptiness",
25242: "empty",
25243: "emu",
25244: "enable",
25245: "enactment",
25246: "enamel",
25251: "enchanted",
25252: "enchilada",
25253: "encircle",
25254: "enclose",
25255: "enclosure",
25256: "encode",
25261: "encore",
25262: "encounter",
25263: "encourage",
25264: "encroach",
25265: "encrust",
25266: "encrypt",
25311: "endanger",
25312: "endeared",
25313: "endearing",
25314: "ended",
25315: "ending",
25316: "endless",
25321: "endnote",
25322: "endocrine",
25323: "endorphin",
25324: "endorse",
25325: "endowment",
25326: "endpoint",
25331: "endurable",
25332: "endurance",
25333: "enduring",
25334: "energetic",
25335: "energize",
25336: "energy",
25341: "enforced",
25342: "enforcer",
25343: "engaged",
25344: "engaging",
25345: "engine",
25346: "engorge",
25351: "engraved",
25352: "engraver",
25353: "engraving",
25354: "engross",
25355: "engulf",
25356: "enhance",
25361: "enigmatic",
25362: "enjoyable",
25363: "enjoyably",
25364: "enjoyer",
25365: "enjoying",
25366: "enjoyment",
25411: "enlarged",
25412: "enlarging",
25413: "enlighten",
25414: "enlisted",
25415: "enquirer",
25416: "enrage",
25421: "enrich",
25422: "enroll",
25423: "enslave",
25424: "ensnare",
25425: "ensure",
25426: "entail",
25431: "entangled",
25432: "entering",
25433: "entertain",
25434: "enticing",
25435: "entire",
25436: "entitle",
25441: "entity",
25442: "entomb",
25443: "entourage",
25444: "entrap",
25445: "entree",
25446: "entrench",
25451: "entrust",
25452: "entryway",
25453: "entwine",
25454: "enunciate",
25455: "envelope",
25456: "enviable",
25461: "enviably",
25462: "envious",
25463: "envision",
25464: "envoy",
25465: "envy",
25466: "enzyme",
25511: "epic",
25512: "epidemic",
25513: "epidermal",
25514: "epidermis",
25515: "epidural",
25516: "epilepsy",
25521: "epileptic",
25522: "epilogue",
25523: "epiphany",
25524: "episode",
25525: "equal",
25526: "equate",
25531: "equation",
25532: "equator",
25533: "equinox",
25534: "equipment",
25535: "equity",
25536: "equivocal",
25541: "eradicate",
25542: "erasable",
25543: "erased",
25544: "eraser",
25545: "erasure",
25546: "ergonomic",
25551: "errand",
25552: "errant",
25553: "erratic",
25554: "error",
25555: "erupt",
25556: "escalate",
25561: "escalator",
25562: "escapable",
25563: "escapade",
25564: "escapist",
25565: "escargot",
25566: "eskimo",
25611: "esophagus",
25612: "espionage",
25613: "espresso",
25614: "esquire",
25615: "essay",
25616: "essence",
25621: "essential",
25622: "establish",
25623: "estate",
25624: "esteemed",
25625: "estimate",
25626: "estimator",
25631: "estranged",
25632: "estrogen",
25633: "etching",
25634: "eternal",
25635: "eternity",
25636: "ethanol",
25641: "ether",
25642: "ethically",
25643: "ethics",
25644: "euphemism",
25645: "evacuate",
25646: "evacuee",
25651: "evade",
25652: "evaluate",
25653: "evaluator",
25654: "evaporate",
25655: "evasion",
25656: "evasive",
25661: "even",
25662: "everglade",
25663: "evergreen",
25664: "everybody",
25665: "everyday",
25666: "everyone",
26111: "evict",
26112: "evidence",
26113: "evident",
26114: "evil",
26115: "evoke",
26116: "evolution",
26121: "evolve",
26122: "exact",
26123: "exalted",
26124: "example",
26125: "excavate",
26126: "excavator",
26131: "exceeding",
26132: "exception",
26133: "excess",
26134: "exchange",
26135: "excitable",
26136: "exciting",
26141: "exclaim",
26142: "exclude",
26143: "excluding",
26144: "exclusion",
26145: "exclusive",
26146: "excretion",
26151: "excretory",
26152: "excursion",
26153: "excusable",
26154: "excusably",
26155: "excuse",
26156: "exemplary",
26161: "exemplify",
26162: "exemption",
26163: "exerciser",
26164: "exert",
26165: "exes",
26166: "exfoliate",
26211: "exhale",
26212: "exhaust",
26213: "exhume",
26214: "exile",
26215: "existing",
26216: "exit",
26221: "exodus",
26222: "exonerate",
26223: "exorcism",
26224: "exorcist",
26225: "expand",
26226: "expanse",
26231: "expansion",
26232: "expansive",
26233: "expectant",
26234: "expedited",
26235: "expediter",
26236: "expel",
26241: "expend",
26242: "expenses",
26243: "expensive",
26244: "expert",
26245: "expire",
26246: "expiring",
26251: "explain",
26252: "expletive",
26253: "explicit",
26254: "explode",
26255: "exploit",
26256: "explore",
26261: "exploring",
26262: "exponent",
26263: "exporter",
26264: "exposable",
26265: "expose",
26266: "exposure",
26311: "express",
26312: "expulsion",
26313: "exquisite",
26314: "extended",
26315: "extending",
26316: "extent",
26321: "extenuate",
26322: "exterior",
26323: "external",
26324: "extinct",
26325: "extortion",
26326: "extradite",
26331: "extras",
26332: "extrovert",
26333: "extrude",
26334: "extruding",
26335: "exuberant",
26336: "fable",
26341: "fabric",
26342: "fabulous",
26343: "facebook",
26344: "facecloth",
26345: "facedown",
26346: "faceless",
26351: "facelift",
26352: "faceplate",
26353: "faceted",
26354: "facial",
26355: "facility",
26356: "facing",
26361: "facsimile",
26362: "faction",
26363: "factoid",
26364: "factor",
26365: "factsheet",
26366: "factual",
26411: "faculty",
26412: "fade",
26413: "fading",
26414: "failing",
26415: "falcon",
26416: "fall",
26421: "false",
26422: "falsify",
26423: "fame",
26424: "familiar",
26425: "family",
26426: "famine",
26431: "famished",
26432: "fanatic",
26433: "fancied",
26434: "fanciness",
26435: "fancy",
26436: "fanfare",
26441: "fang",
26442: "fanning",
26443: "fantasize",
26444: "fantastic",
26445: "fantasy",
26446: "fascism",
26451: "fastball",
26452: "faster",
26453: "fasting",
26454: "fastness",
26455: "faucet",
26456: "favorable",
26461: "favorably",
26462: "favored",
26463: "favoring",
26464: "favorite",
26465: "fax",
26466: "feast",
26511: "federal",
26512: "fedora",
26513: "feeble",
26514: "feed",
26515: "feel",
26516: "feisty",
26521: "feline",
26522: "felt-tip",
26523: "feminine",
26524: "feminism",
26525: "feminist",
26526: "feminize",
26531: "femur",
26532: "fence",
26533: "fencing",
26534: "fender",
26535: "ferment",
26536: "fernlike",
26541: "ferocious",
26542: "ferocity",
26543: "ferret",
26544: "ferris",
26545: "ferry",
26546: "fervor",
26551: "fester",
26552: "festival",
26553: "festive",
26554: "festivity",
26555: "fetal",
26556: "fetch",
26561: "fever",
26562: "fiber",
26563: "fiction",
26564: "fiddle",
26565: "fiddling",
26566: "fidelity",
26611: "fidgeting",
26612: "fidgety",
26613: "fifteen",
26614: "fifth",
26615: "fiftieth",
26616: "fifty",
26621: "figment",
26622: "figure",
26623: "figurine",
26624: "filing",
26625: "filled",
26626: "filler",
26631: "filling",
26632: "film",
26633: "filter",
26634: "filth",
26635: "filtrate",
26636: "finale",
26641: "finalist",
26642: "finalize",
26643: "finally",
26644: "finance",
26645: "financial",
26646: "finch",
26651: "fineness",
26652: "finer",
26653: "finicky",
26654: "finished",
26655: "finisher",
26656: "finishing",
26661: "finite",
26662: "finless",
26663: "finlike",
26664: "fiscally",
26665: "fit",
26666: "five",
31111: "flaccid",
31112: "flagman",
31113: "flagpole",
31114: "flagship",
31115: "flagstick",
31116: "flagstone",
31121: "flail",
31122: "flakily",
31123: "flaky",
31124: "flame",
31125: "flammable",
31126: "flanked",
31131: "flanking",
31132: "flannels",
31133: "flap",
31134: "flaring",
31135: "flashback",
31136: "flashbulb",
31141: "flashcard",
31142: "flashily",
31143: "flashing",
31144: "flashy",
31145: "flask",
31146: "flatbed",
31151: "flatfoot",
31152: "flatly",
31153: "flatness",
31154: "flatten",
31155: "flattered",
31156: "flatterer",
31161: "flattery",
31162: "flattop",
31163: "flatware",
31164: "flatworm",
31165: "flavored",
31166: "flavorful",
31211: "flavoring",
31212: "flaxseed",
31213: "fled",
31214: "fleshed",
31215: "fleshy",
31216: "flick",
31221: "flier",
31222: "flight",
31223: "flinch",
31224: "fling",
31225: "flint",
31226: "flip",
31231: "flirt",
31232: "float",
31233: "flock",
31234: "flogging",
31235: "flop",
31236: "floral",
31241: "florist",
31242: "floss",
31243: "flounder",
31244: "flyable",
31245: "flyaway",
31246: "flyer",
31251: "flying",
31252: "flyover",
31253: "flypaper",
31254: "foam",
31255: "foe",
31256: "fog",
31261: "foil",
31262: "folic",
31263: "folk",
31264: "follicle",
31265: "follow",
31266: "fondling",
31311: "fondly",
31312: "fondness",
31313: "fondue",
31314: "font",
31315: "food",
31316: "fool",
31321: "footage",
31322: "football",
31323: "footbath",
31324: "footboard",
31325: "footer",
31326: "footgear",
31331: "foothill",
31332: "foothold",
31333: "footing",
31334: "footless",
31335: "footman",
31336: "footnote",
31341: "footpad",
31342: "footpath",
31343: "footprint",
31344: "footrest",
31345: "footsie",
31346: "footsore",
31351: "footwear",
31352: "footwork",
31353: "fossil",
31354: "foster",
31355: "founder",
31356: "founding",
31361: "fountain",
31362: "fox",
31363: "foyer",
31364: "fraction",
31365: "fracture",
31366: "fragile",
31411: "fragility",
31412: "fragment",
31413: "fragrance",
31414: "fragrant",
31415: "frail",
31416: "frame",
31421: "framing",
31422: "frantic",
31423: "fraternal",
31424: "frayed",
31425: "fraying",
31426: "frays",
31431: "freckled",
31432: "freckles",
31433: "freebase",
31434: "freebee",
31435: "freebie",
31436: "freedom",
31441: "freefall",
31442: "freehand",
31443: "freeing",
31444: "freeload",
31445: "freely",
31446: "freemason",
31451: "freeness",
31452: "freestyle",
31453: "freeware",
31454: "freeway",
31455: "freewill",
31456: "freezable",
31461: "freezing",
31462: "freight",
31463: "french",
31464: "frenzied",
31465: "frenzy",
31466: "frequency",
31511: "frequent",
31512: "fresh",
31513: "fretful",
31514: "fretted",
31515: "friction",
31516: "friday",
31521: "fridge",
31522: "fried",
31523: "friend",
31524: "frighten",
31525: "frightful",
31526: "frigidity",
31531: "frigidly",
31532: "frill",
31533: "fringe",
31534: "frisbee",
31535: "frisk",
31536: "fritter",
31541: "frivolous",
31542: "frolic",
31543: "from",
31544: "front",
31545: "frostbite",
31546: "frosted",
31551: "frostily",
31552: "frosting",
31553: "frostlike",
31554: "frosty",
31555: "froth",
31556: "frown",
31561: "frozen",
31562: "fructose",
31563: "frugality",
31564: "frugally",
31565: "fruit",
31566: "frustrate",
31611: "frying",
31612: "gab",
31613: "gaffe",
31614: "gag",
31615: "gainfully",
31616: "gaining",
31621: "gains",
31622: "gala",
31623: "gallantly",
31624: "galleria",
31625: "gallery",
31626: "galley",
31631: "gallon",
31632: "gallows",
31633: "gallstone",
31634: "galore",
31635: "galvanize",
31636: "gambling",
31641: "game",
31642: "gaming",
31643: "gamma",
31644: "gander",
31645: "gangly",
31646: "gangrene",
31651: "gangway",
31652: "gap",
31653: "garage",
31654: "garbage",
31655: "garden",
31656: "gargle",
31661: "garland",
31662: "garlic",
31663: "garment",
31664: "garnet",
31665: "garnish",
31666: "garter",
32111: "gas",
32112: "gatherer",
32113: "gathering",
32114: "gating",
32115: "gauging",
32116: "gauntlet",
32121: "gauze",
32122: "gave",
32123: "gawk",
32124: "gazing",
32125: "gear",
32126: "gecko",
32131: "geek",
32132: "geiger",
32133: "gem",
32134: "gender",
32135: "generic",
32136: "generous",
32141: "genetics",
32142: "genre",
32143: "gentile",
32144: "gentleman",
32145: "gently",
32146: "gents",
32151: "geography",
32152: "geologic",
32153: "geologist",
32154: "geology",
32155: "geometric",
32156: "geometry",
32161: "geranium",
32162: "gerbil",
32163: "geriatric",
32164: "germicide",
32165: "germinate",
32166: "germless",
32211: "germproof",
32212: "gestate",
32213: "gestation",
32214: "gesture",
32215: "getaway",
32216: "getting",
32221: "getup",
32222: "giant",
32223: "gibberish",
32224: "giblet",
32225: "giddily",
32226: "giddiness",
32231: "giddy",
32232: "gift",
32233: "gigabyte",
32234: "gigahertz",
32235: "gigantic",
32236: "giggle",
32241: "giggling",
32242: "giggly",
32243: "gigolo",
32244: "gilled",
32245: "gills",
32246: "gimmick",
32251: "girdle",
32252: "giveaway",
32253: "given",
32254: "giver",
32255: "giving",
32256: "gizmo",
32261: "gizzard",
32262: "glacial",
32263: "glacier",
32264: "glade",
32265: "gladiator",
32266: "gladly",
32311: "glamorous",
32312: "glamour",
32313: "glance",
32314: "glancing",
32315: "glandular",
32316: "glare",
32321: "glaring",
32322: "glass",
32323: "glaucoma",
32324: "glazing",
32325: "gleaming",
32326: "gleeful",
32331: "glider",
32332: "gliding",
32333: "glimmer",
32334: "glimpse",
32335: "glisten",
32336: "glitch",
32341: "glitter",
32342: "glitzy",
32343: "gloater",
32344: "gloating",
32345: "gloomily",
32346: "gloomy",
32351: "glorified",
32352: "glorifier",
32353: "glorify",
32354: "glorious",
32355: "glory",
32356: "gloss",
32361: "glove",
32362: "glowing",
32363: "glowworm",
32364: "glucose",
32365: "glue",
32366: "gluten",
32411: "glutinous",
32412: "glutton",
32413: "gnarly",
32414: "gnat",
32415: "goal",
32416: "goatskin",
32421: "goes",
32422: "goggles",
32423: "going",
32424: "goldfish",
32425: "goldmine",
32426: "goldsmith",
32431: "golf",
32432: "goliath",
32433: "gonad",
32434: "gondola",
32435: "gone",
32436: "gong",
32441: "good",
32442: "gooey",
32443: "goofball",
32444: "goofiness",
32445: "goofy",
32446: "google",
32451: "goon",
32452: "gopher",
32453: "gore",
32454: "gorged",
32455: "gorgeous",
32456: "gory",
32461: "gosling",
32462: "gossip",
32463: "gothic",
32464: "gotten",
32465: "gout",
32466: "gown",
32511: "grab",
32512: "graceful",
32513: "graceless",
32514: "gracious",
32515: "gradation",
32516: "graded",
32521: "grader",
32522: "gradient",
32523: "grading",
32524: "gradually",
32525: "graduate",
32526: "graffiti",
32531: "grafted",
32532: "grafting",
32533: "grain",
32534: "granddad",
32535: "grandkid",
32536: "grandly",
32541: "grandma",
32542: "grandpa",
32543: "grandson",
32544: "granite",
32545: "granny",
32546: "granola",
32551: "grant",
32552: "granular",
32553: "grape",
32554: "graph",
32555: "grapple",
32556: "grappling",
32561: "grasp",
32562: "grass",
32563: "gratified",
32564: "gratify",
32565: "grating",
32566: "gratitude",
32611: "gratuity",
32612: "gravel",
32613: "graveness",
32614: "graves",
32615: "graveyard",
32616: "gravitate",
32621: "gravity",
32622: "gravy",
32623: "gray",
32624: "grazing",
32625: "greasily",
32626: "greedily",
32631: "greedless",
32632: "greedy",
32633: "green",
32634: "greeter",
32635: "greeting",
32636: "grew",
32641: "greyhound",
32642: "grid",
32643: "grief",
32644: "grievance",
32645: "grieving",
32646: "grievous",
32651: "grill",
32652: "grimace",
32653: "grimacing",
32654: "grime",
32655: "griminess",
32656: "grimy",
32661: "grinch",
32662: "grinning",
32663: "grip",
32664: "gristle",
32665: "grit",
32666: "groggily",
33111: "groggy",
33112: "groin",
33113: "groom",
33114: "groove",
33115: "grooving",
33116: "groovy",
33121: "grope",
33122: "ground",
33123: "grouped",
33124: "grout",
33125: "grove",
33126: "grower",
33131: "growing",
33132: "growl",
33133: "grub",
33134: "grudge",
33135: "grudging",
33136: "grueling",
33141: "gruffly",
33142: "grumble",
33143: "grumbling",
33144: "grumbly",
33145: "grumpily",
33146: "grunge",
33151: "grunt",
33152: "guacamole",
33153: "guidable",
33154: "guidance",
33155: "guide",
33156: "guiding",
33161: "guileless",
33162: "guise",
33163: "gulf",
33164: "gullible",
33165: "gully",
33166: "gulp",
33211: "gumball",
33212: "gumdrop",
33213: "gumminess",
33214: "gumming",
33215: "gummy",
33216: "gurgle",
33221: "gurgling",
33222: "guru",
33223: "gush",
33224: "gusto",
33225: "gusty",
33226: "gutless",
33231: "guts",
33232: "gutter",
33233: "guy",
33234: "guzzler",
33235: "gyration",
33236: "habitable",
33241: "habitant",
33242: "habitat",
33243: "habitual",
33244: "hacked",
33245: "hacker",
33246: "hacking",
33251: "hacksaw",
33252: "had",
33253: "haggler",
33254: "haiku",
33255: "half",
33256: "halogen",
33261: "halt",
33262: "halved",
33263: "halves",
33264: "hamburger",
33265: "hamlet",
33266: "hammock",
33311: "hamper",
33312: "hamster",
33313: "hamstring",
33314: "handbag",
33315: "handball",
33316: "handbook",
33321: "handbrake",
33322: "handcart",
33323: "handclap",
33324: "handclasp",
33325: "handcraft",
33326: "handcuff",
33331: "handed",
33332: "handful",
33333: "handgrip",
33334: "handgun",
33335: "handheld",
33336: "handiness",
33341: "handiwork",
33342: "handlebar",
33343: "handled",
33344: "handler",
33345: "handling",
33346: "handmade",
33351: "handoff",
33352: "handpick",
33353: "handprint",
33354: "handrail",
33355: "handsaw",
33356: "handset",
33361: "handsfree",
33362: "handshake",
33363: "handstand",
33364: "handwash",
33365: "handwork",
33366: "handwoven",
33411: "handwrite",
33412: "handyman",
33413: "hangnail",
33414: "hangout",
33415: "hangover",
33416: "hangup",
33421: "hankering",
33422: "hankie",
33423: "hanky",
33424: "haphazard",
33425: "happening",
33426: "happier",
33431: "happiest",
33432: "happily",
33433: "happiness",
33434: "happy",
33435: "harbor",
33436: "hardcopy",
33441: "hardcore",
33442: "hardcover",
33443: "harddisk",
33444: "hardened",
33445: "hardener",
33446: "hardening",
33451: "hardhat",
33452: "hardhead",
33453: "hardiness",
33454: "hardly",
33455: "hardness",
33456: "hardship",
33461: "hardware",
33462: "hardwired",
33463: "hardwood",
33464: "hardy",
33465: "harmful",
33466: "harmless",
33511: "harmonica",
33512: "harmonics",
33513: "harmonize",
33514: "harmony",
33515: "harness",
33516: "harpist",
33521: "harsh",
33522: "harvest",
33523: "hash",
33524: "hassle",
33525: "haste",
33526: "hastily",
33531: "hastiness",
33532: "hasty",
33533: "hatbox",
33534: "hatchback",
33535: "hatchery",
33536: "hatchet",
33541: "hatching",
33542: "hatchling",
33543: "hate",
33544: "hatless",
33545: "hatred",
33546: "haunt",
33551: "haven",
33552: "hazard",
33553: "hazelnut",
33554: "hazily",
33555: "haziness",
33556: "hazing",
33561: "hazy",
33562: "headache",
33563: "headband",
33564: "headboard",
33565: "headcount",
33566: "headdress",
33611: "headed",
33612: "header",
33613: "headfirst",
33614: "headgear",
33615: "heading",
33616: "headlamp",
33621: "headless",
33622: "headlock",
33623: "headphone",
33624: "headpiece",
33625: "headrest",
33626: "headroom",
33631: "headscarf",
33632: "headset",
33633: "headsman",
33634: "headstand",
33635: "headstone",
33636: "headway",
33641: "headwear",
33642: "heap",
33643: "heat",
33644: "heave",
33645: "heavily",
33646: "heaviness",
33651: "heaving",
33652: "hedge",
33653: "hedging",
33654: "heftiness",
33655: "hefty",
33656: "helium",
33661: "helmet",
33662: "helper",
33663: "helpful",
33664: "helping",
33665: "helpless",
33666: "helpline",
34111: "hemlock",
34112: "hemstitch",
34113: "hence",
34114: "henchman",
34115: "henna",
34116: "herald",
34121: "herbal",
34122: "herbicide",
34123: "herbs",
34124: "heritage",
34125: "hermit",
34126: "heroics",
34131: "heroism",
34132: "herring",
34133: "herself",
34134: "hertz",
34135: "hesitancy",
34136: "hesitant",
34141: "hesitate",
34142: "hexagon",
34143: "hexagram",
34144: "hubcap",
34145: "huddle",
34146: "huddling",
34151: "huff",
34152: "hug",
34153: "hula",
34154: "hulk",
34155: "hull",
34156: "human",
34161: "humble",
34162: "humbling",
34163: "humbly",
34164: "humid",
34165: "humiliate",
34166: "humility",
34211: "humming",
34212: "hummus",
34213: "humongous",
34214: "humorist",
34215: "humorless",
34216: "humorous",
34221: "humpback",
34222: "humped",
34223: "humvee",
34224: "hunchback",
34225: "hundredth",
34226: "hunger",
34231: "hungrily",
34232: "hungry",
34233: "hunk",
34234: "hunter",
34235: "hunting",
34236: "huntress",
34241: "huntsman",
34242: "hurdle",
34243: "hurled",
34244: "hurler",
34245: "hurling",
34246: "hurray",
34251: "hurricane",
34252: "hurried",
34253: "hurry",
34254: "hurt",
34255: "husband",
34256: "hush",
34261: "husked",
34262: "huskiness",
34263: "hut",
34264: "hybrid",
34265: "hydrant",
34266: "hydrated",
34311: "hydration",
34312: "hydrogen",
34313: "hydroxide",
34314: "hyperlink",
34315: "hypertext",
34316: "hyphen",
34321: "hypnoses",
34322: "hypnosis",
34323: "hypnotic",
34324: "hypnotism",
34325: "hypnotist",
34326: "hypnotize",
34331: "hypocrisy",
34332: "hypocrite",
34333: "ibuprofen",
34334: "ice",
34335: "iciness",
34336: "icing",
34341: "icky",
34342: "icon",
34343: "icy",
34344: "idealism",
34345: "idealist",
34346: "idealize",
34351: "ideally",
34352: "idealness",
34353: "identical",
34354: "identify",
34355: "identity",
34356: "ideology",
34361: "idiocy",
34362: "idiom",
34363: "idly",
34364: "igloo",
34365: "ignition",
34366: "ignore",
34411: "iguana",
34412: "illicitly",
34413: "illusion",
34414: "illusive",
34415: "image",
34416: "imaginary",
34421: "imagines",
34422: "imaging",
34423: "imbecile",
34424: "imitate",
34425: "imitation",
34426: "immature",
34431: "immerse",
34432: "immersion",
34433: "imminent",
34434: "immobile",
34435: "immodest",
34436: "immorally",
34441: "immortal",
34442: "immovable",
34443: "immovably",
34444: "immunity",
34445: "immunize",
34446: "impaired",
34451: "impale",
34452: "impart",
34453: "impatient",
34454: "impeach",
34455: "impeding",
34456: "impending",
34461: "imperfect",
34462: "imperial",
34463: "impish",
34464: "implant",
34465: "implement",
34466: "implicate",
34511: "implicit",
34512: "implode",
34513: "implosion",
34514: "implosive",
34515: "imply",
34516: "impolite",
34521: "important",
34522: "importer",
34523: "impose",
34524: "imposing",
34525: "impotence",
34526: "impotency",
34531: "impotent",
34532: "impound",
34533: "imprecise",
34534: "imprint",
34535: "imprison",
34536: "impromptu",
34541: "improper",
34542: "improve",
34543: "improving",
34544: "improvise",
34545: "imprudent",
34546: "impulse",
34551: "impulsive",
34552: "impure",
34553: "impurity",
34554: "iodine",
34555: "iodize",
34556: "ion",
34561: "ipad",
34562: "iphone",
34563: "ipod",
34564: "irate",
34565: "irk",
34566: "iron",
34611: "irregular",
34612: "irrigate",
34613: "irritable",
34614: "irritably",
34615: "irritant",
34616: "irritate",
34621: "islamic",
34622: "islamist",
34623: "isolated",
34624: "isolating",
34625: "isolation",
34626: "isotope",
34631: "issue",
34632: "issuing",
34633: "italicize",
34634: "italics",
34635: "item",
34636: "itinerary",
34641: "itunes",
34642: "ivory",
34643: "ivy",
34644: "jab",
34645: "jackal",
34646: "jacket",
34651: "jackknife",
34652: "jackpot",
34653: "jailbird",
34654: "jailbreak",
34655: "jailer",
34656: "jailhouse",
34661: "jalapeno",
34662: "jam",
34663: "janitor",
34664: "january",
34665: "jargon",
34666: "jarring",
35111: "jasmine",
35112: "jaundice",
35113: "jaunt",
35114: "java",
35115: "jawed",
35116: "jawless",
35121: "jawline",
35122: "jaws",
35123: "jaybird",
35124: "jaywalker",
35125: "jazz",
35126: "jeep",
35131: "jeeringly",
35132: "jellied",
35133: "jelly",
35134: "jersey",
35135: "jester",
35136: "jet",
35141: "jiffy",
35142: "jigsaw",
35143: "jimmy",
35144: "jingle",
35145: "jingling",
35146: "jinx",
35151: "jitters",
35152: "jittery",
35153: "job",
35154: "jockey",
35155: "jockstrap",
35156: "jogger",
35161: "jogging",
35162: "john",
35163: "joining",
35164: "jokester",
35165: "jokingly",
35166: "jolliness",
35211: "jolly",
35212: "jolt",
35213: "jot",
35214: "jovial",
35215: "joyfully",
35216: "joylessly",
35221: "joyous",
35222: "joyride",
35223: "joystick",
35224: "jubilance",
35225: "jubilant",
35226: "judge",
35231: "judgingly",
35232: "judicial",
35233: "judiciary",
35234: "judo",
35235: "juggle",
35236: "juggling",
35241: "jugular",
35242: "juice",
35243: "juiciness",
35244: "juicy",
35245: "jujitsu",
35246: "jukebox",
35251: "july",
35252: "jumble",
35253: "jumbo",
35254: "jump",
35255: "junction",
35256: "juncture",
35261: "june",
35262: "junior",
35263: "juniper",
35264: "junkie",
35265: "junkman",
35266: "junkyard",
35311: "jurist",
35312: "juror",
35313: "jury",
35314: "justice",
35315: "justifier",
35316: "justify",
35321: "justly",
35322: "justness",
35323: "juvenile",
35324: "kabob",
35325: "kangaroo",
35326: "karaoke",
35331: "karate",
35332: "karma",
35333: "kebab",
35334: "keenly",
35335: "keenness",
35336: "keep",
35341: "keg",
35342: "kelp",
35343: "kennel",
35344: "kept",
35345: "kerchief",
35346: "kerosene",
35351: "kettle",
35352: "kick",
35353: "kiln",
35354: "kilobyte",
35355: "kilogram",
35356: "kilometer",
35361: "kilowatt",
35362: "kilt",
35363: "kimono",
35364: "kindle",
35365: "kindling",
35366: "kindly",
35411: "kindness",
35412: "kindred",
35413: "kinetic",
35414: "kinfolk",
35415: "king",
35416: "kinship",
35421: "kinsman",
35422: "kinswoman",
35423: "kissable",
35424: "kisser",
35425: "kissing",
35426: "kitchen",
35431: "kite",
35432: "kitten",
35433: "kitty",
35434: "kiwi",
35435: "kleenex",
35436: "knapsack",
35441: "knee",
35442: "knelt",
35443: "knickers",
35444: "knoll",
35445: "koala",
35446: "kooky",
35451: "kosher",
35452: "krypton",
35453: "kudos",
35454: "kung",
35455: "labored",
35456: "laborer",
35461: "laboring",
35462: "laborious",
35463: "labrador",
35464: "ladder",
35465: "ladies",
35466: "ladle",
35511: "ladybug",
35512: "ladylike",
35513: "lagged",
35514: "lagging",
35515: "lagoon",
35516: "lair",
35521: "lake",
35522: "lance",
35523: "landed",
35524: "landfall",
35525: "landfill",
35526: "landing",
35531: "landlady",
35532: "landless",
35533: "landline",
35534: "landlord",
35535: "landmark",
35536: "landmass",
35541: "landmine",
35542: "landowner",
35543: "landscape",
35544: "landside",
35545: "landslide",
35546: "language",
35551: "lankiness",
35552: "lanky",
35553: "lantern",
35554: "lapdog",
35555: "lapel",
35556: "lapped",
35561: "lapping",
35562: "laptop",
35563: "lard",
35564: "large",
35565: "lark",
35566: "lash",
35611: "lasso",
35612: "last",
35613: "latch",
35614: "late",
35615: "lather",
35616: "latitude",
35621: "latrine",
35622: "latter",
35623: "latticed",
35624: "launch",
35625: "launder",
35626: "laundry",
35631: "laurel",
35632: "lavender",
35633: "lavish",
35634: "laxative",
35635: "lazily",
35636: "laziness",
35641: "lazy",
35642: "lecturer",
35643: "left",
35644: "legacy",
35645: "legal",
35646: "legend",
35651: "legged",
35652: "leggings",
35653: "legible",
35654: "legibly",
35655: "legislate",
35656: "lego",
35661: "legroom",
35662: "legume",
35663: "legwarmer",
35664: "legwork",
35665: "lemon",
35666: "lend",
36111: "length",
36112: "lens",
36113: "lent",
36114: "leotard",
36115: "lesser",
36116: "letdown",
36121: "lethargic",
36122: "lethargy",
36123: "letter",
36124: "lettuce",
36125: "level",
36126: "leverage",
36131: "levers",
36132: "levitate",
36133: "levitator",
36134: "liability",
36135: "liable",
36136: "liberty",
36141: "librarian",
36142: "library",
36143: "licking",
36144: "licorice",
36145: "lid",
36146: "life",
36151: "lifter",
36152: "lifting",
36153: "liftoff",
36154: "ligament",
36155: "likely",
36156: "likeness",
36161: "likewise",
36162: "liking",
36163: "lilac",
36164: "lilly",
36165: "lily",
36166: "limb",
36211: "limeade",
36212: "limelight",
36213: "limes",
36214: "limit",
36215: "limping",
36216: "limpness",
36221: "line",
36222: "lingo",
36223: "linguini",
36224: "linguist",
36225: "lining",
36226: "linked",
36231: "linoleum",
36232: "linseed",
36233: "lint",
36234: "lion",
36235: "lip",
36236: "liquefy",
36241: "liqueur",
36242: "liquid",
36243: "lisp",
36244: "list",
36245: "litigate",
36246: "litigator",
36251: "litmus",
36252: "litter",
36253: "little",
36254: "livable",
36255: "lived",
36256: "lively",
36261: "liver",
36262: "livestock",
36263: "lividly",
36264: "living",
36265: "lizard",
36266: "lubricant",
36311: "lubricate",
36312: "lucid",
36313: "luckily",
36314: "luckiness",
36315: "luckless",
36316: "lucrative",
36321: "ludicrous",
36322: "lugged",
36323: "lukewarm",
36324: "lullaby",
36325: "lumber",
36326: "luminance",
36331: "luminous",
36332: "lumpiness",
36333: "lumping",
36334: "lumpish",
36335: "lunacy",
36336: "lunar",
36341: "lunchbox",
36342: "luncheon",
36343: "lunchroom",
36344: "lunchtime",
36345: "lung",
36346: "lurch",
36351: "lure",
36352: "luridness",
36353: "lurk",
36354: "lushly",
36355: "lushness",
36356: "luster",
36361: "lustfully",
36362: "lustily",
36363: "lustiness",
36364: "lustrous",
36365: "lusty",
36366: "luxurious",
36411: "luxury",
36412: "lying",
36413: "lyrically",
36414: "lyricism",
36415: "lyricist",
36416: "lyrics",
36421: "macarena",
36422: "macaroni",
36423: "macaw",
36424: "mace",
36425: "machine",
36426: "machinist",
36431: "magazine",
36432: "magenta",
36433: "maggot",
36434: "magical",
36435: "magician",
36436: "magma",
36441: "magnesium",
36442: "magnetic",
36443: "magnetism",
36444: "magnetize",
36445: "magnifier",
36446: "magnify",
36451: "magnitude",
36452: "magnolia",
36453: "mahogany",
36454: "maimed",
36455: "majestic",
36456: "majesty",
36461: "majorette",
36462: "majority",
36463: "makeover",
36464: "maker",
36465: "makeshift",
36466: "making",
36511: "malformed",
36512: "malt",
36513: "mama",
36514: "mammal",
36515: "mammary",
36516: "mammogram",
36521: "manager",
36522: "managing",
36523: "manatee",
36524: "mandarin",
36525: "mandate",
36526: "mandatory",
36531: "mandolin",
36532: "manger",
36533: "mangle",
36534: "mango",
36535: "mangy",
36536: "manhandle",
36541: "manhole",
36542: "manhood",
36543: "manhunt",
36544: "manicotti",
36545: "manicure",
36546: "manifesto",
36551: "manila",
36552: "mankind",
36553: "manlike",
36554: "manliness",
36555: "manly",
36556: "manmade",
36561: "manned",
36562: "mannish",
36563: "manor",
36564: "manpower",
36565: "mantis",
36566: "mantra",
36611: "manual",
36612: "many",
36613: "map",
36614: "marathon",
36615: "marauding",
36616: "marbled",
36621: "marbles",
36622: "marbling",
36623: "march",
36624: "mardi",
36625: "margarine",
36626: "margarita",
36631: "margin",
36632: "marigold",
36633: "marina",
36634: "marine",
36635: "marital",
36636: "maritime",
36641: "marlin",
36642: "marmalade",
36643: "maroon",
36644: "married",
36645: "marrow",
36646: "marry",
36651: "marshland",
36652: "marshy",
36653: "marsupial",
36654: "marvelous",
36655: "marxism",
36656: "mascot",
36661: "masculine",
36662: "mashed",
36663: "mashing",
36664: "massager",
36665: "masses",
36666: "massive",
41111: "mastiff",
41112: "matador",
41113: "matchbook",
41114: "matchbox",
41115: "matcher",
41116: "matching",
41121: "matchless",
41122: "material",
41123: "maternal",
41124: "maternity",
41125: "math",
41126: "mating",
41131: "matriarch",
41132: "matrimony",
41133: "matrix",
41134: "matron",
41135: "matted",
41136: "matter",
41141: "maturely",
41142: "maturing",
41143: "maturity",
41144: "mauve",
41145: "maverick",
41146: "maximize",
41151: "maximum",
41152: "maybe",
41153: "mayday",
41154: "mayflower",
41155: "moaner",
41156: "moaning",
41161: "mobile",
41162: "mobility",
41163: "mobilize",
41164: "mobster",
41165: "mocha",
41166: "mocker",
41211: "mockup",
41212: "modified",
41213: "modify",
41214: "modular",
41215: "modulator",
41216: "module",
41221: "moisten",
41222: "moistness",
41223: "moisture",
41224: "molar",
41225: "molasses",
41226: "mold",
41231: "molecular",
41232: "molecule",
41233: "molehill",
41234: "mollusk",
41235: "mom",
41236: "monastery",
41241: "monday",
41242: "monetary",
41243: "monetize",
41244: "moneybags",
41245: "moneyless",
41246: "moneywise",
41251: "mongoose",
41252: "mongrel",
41253: "monitor",
41254: "monkhood",
41255: "monogamy",
41256: "monogram",
41261: "monologue",
41262: "monopoly",
41263: "monorail",
41264: "monotone",
41265: "monotype",
41266: "monoxide",
41311: "monsieur",
41312: "monsoon",
41313: "monstrous",
41314: "monthly",
41315: "monument",
41316: "moocher",
41321: "moodiness",
41322: "moody",
41323: "mooing",
41324: "moonbeam",
41325: "mooned",
41326: "moonlight",
41331: "moonlike",
41332: "moonlit",
41333: "moonrise",
41334: "moonscape",
41335: "moonshine",
41336: "moonstone",
41341: "moonwalk",
41342: "mop",
41343: "morale",
41344: "morality",
41345: "morally",
41346: "morbidity",
41351: "morbidly",
41352: "morphine",
41353: "morphing",
41354: "morse",
41355: "mortality",
41356: "mortally",
41361: "mortician",
41362: "mortified",
41363: "mortify",
41364: "mortuary",
41365: "mosaic",
41366: "mossy",
41411: "most",
41412: "mothball",
41413: "mothproof",
41414: "motion",
41415: "motivate",
41416: "motivator",
41421: "motive",
41422: "motocross",
41423: "motor",
41424: "motto",
41425: "mountable",
41426: "mountain",
41431: "mounted",
41432: "mounting",
41433: "mourner",
41434: "mournful",
41435: "mouse",
41436: "mousiness",
41441: "moustache",
41442: "mousy",
41443: "mouth",
41444: "movable",
41445: "move",
41446: "movie",
41451: "moving",
41452: "mower",
41453: "mowing",
41454: "much",
41455: "muck",
41456: "mud",
41461: "mug",
41462: "mulberry",
41463: "mulch",
41464: "mule",
41465: "mulled",
41466: "mullets",
41511: "multiple",
41512: "multiply",
41513: "multitask",
41514: "multitude",
41515: "mumble",
41516: "mumbling",
41521: "mumbo",
41522: "mummified",
41523: "mummify",
41524: "mummy",
41525: "mumps",
41526: "munchkin",
41531: "mundane",
41532: "municipal",
41533: "muppet",
41534: "mural",
41535: "murkiness",
41536: "murky",
41541: "murmuring",
41542: "muscular",
41543: "museum",
41544: "mushily",
41545: "mushiness",
41546: "mushroom",
41551: "mushy",
41552: "music",
41553: "musket",
41554: "muskiness",
41555: "musky",
41556: "mustang",
41561: "mustard",
41562: "muster",
41563: "mustiness",
41564: "musty",
41565: "mutable",
41566: "mutate",
41611: "mutation",
41612: "mute",
41613: "mutilated",
41614: "mutilator",
41615: "mutiny",
41616: "mutt",
41621: "mutual",
41622: "muzzle",
41623: "myself",
41624: "myspace",
41625: "mystified",
41626: "mystify",
41631: "myth",
41632: "nacho",
41633: "nag",
41634: "nail",
41635: "name",
41636: "naming",
41641: "nanny",
41642: "nanometer",
41643: "nape",
41644: "napkin",
41645: "napped",
41646: "napping",
41651: "nappy",
41652: "narrow",
41653: "nastily",
41654: "nastiness",
41655: "national",
41656: "native",
41661: "nativity",
41662: "natural",
41663: "nature",
41664: "naturist",
41665: "nautical",
41666: "navigate",
42111: "navigator",
42112: "navy",
42113: "nearby",
42114: "nearest",
42115: "nearly",
42116: "nearness",
42121: "neatly",
42122: "neatness",
42123: "nebula",
42124: "nebulizer",
42125: "nectar",
42126: "negate",
42131: "negation",
42132: "negative",
42133: "neglector",
42134: "negligee",
42135: "negligent",
42136: "negotiate",
42141: "nemeses",
42142: "nemesis",
42143: "neon",
42144: "nephew",
42145: "nerd",
42146: "nervous",
42151: "nervy",
42152: "nest",
42153: "net",
42154: "neurology",
42155: "neuron",
42156: "neurosis",
42161: "neurotic",
42162: "neuter",
42163: "neutron",
42164: "never",
42165: "next",
42166: "nibble",
42211: "nickname",
42212: "nicotine",
42213: "niece",
42214: "nifty",
42215: "nimble",
42216: "nimbly",
42221: "nineteen",
42222: "ninetieth",
42223: "ninja",
42224: "nintendo",
42225: "ninth",
42226: "nuclear",
42231: "nuclei",
42232: "nucleus",
42233: "nugget",
42234: "nullify",
42235: "number",
42236: "numbing",
42241: "numbly",
42242: "numbness",
42243: "numeral",
42244: "numerate",
42245: "numerator",
42246: "numeric",
42251: "numerous",
42252: "nuptials",
42253: "nursery",
42254: "nursing",
42255: "nurture",
42256: "nutcase",
42261: "nutlike",
42262: "nutmeg",
42263: "nutrient",
42264: "nutshell",
42265: "nuttiness",
42266: "nutty",
42311: "nuzzle",
42312: "nylon",
42313: "oaf",
42314: "oak",
42315: "oasis",
42316: "oat",
42321: "obedience",
42322: "obedient",
42323: "obituary",
42324: "object",
42325: "obligate",
42326: "obliged",
42331: "oblivion",
42332: "oblivious",
42333: "oblong",
42334: "obnoxious",
42335: "oboe",
42336: "obscure",
42341: "obscurity",
42342: "observant",
42343: "observer",
42344: "observing",
42345: "obsessed",
42346: "obsession",
42351: "obsessive",
42352: "obsolete",
42353: "obstacle",
42354: "obstinate",
42355: "obstruct",
42356: "obtain",
42361: "obtrusive",
42362: "obtuse",
42363: "obvious",
42364: "occultist",
42365: "occupancy",
42366: "occupant",
42411: "occupier",
42412: "occupy",
42413: "ocean",
42414: "ocelot",
42415: "octagon",
42416: "octane",
42421: "october",
42422: "octopus",
42423: "ogle",
42424: "oil",
42425: "oink",
42426: "ointment",
42431: "okay",
42432: "old",
42433: "olive",
42434: "olympics",
42435: "omega",
42436: "omen",
42441: "ominous",
42442: "omission",
42443: "omit",
42444: "omnivore",
42445: "onboard",
42446: "oncoming",
42451: "ongoing",
42452: "onion",
42453: "online",
42454: "onlooker",
42455: "only",
42456: "onscreen",
42461: "onset",
42462: "onshore",
42463: "onslaught",
42464: "onstage",
42465: "onto",
42466: "onward",
42511: "onyx",
42512: "oops",
42513: "ooze",
42514: "oozy",
42515: "opacity",
42516: "opal",
42521: "open",
42522: "operable",
42523: "operate",
42524: "operating",
42525: "operation",
42526: "operative",
42531: "operator",
42532: "opium",
42533: "opossum",
42534: "opponent",
42535: "oppose",
42536: "opposing",
42541: "opposite",
42542: "oppressed",
42543: "oppressor",
42544: "opt",
42545: "opulently",
42546: "osmosis",
42551: "other",
42552: "otter",
42553: "ouch",
42554: "ought",
42555: "ounce",
42556: "outage",
42561: "outback",
42562: "outbid",
42563: "outboard",
42564: "outbound",
42565: "outbreak",
42566: "outburst",
42611: "outcast",
42612: "outclass",
42613: "outcome",
42614: "outdated",
42615: "outdoors",
42616: "outer",
42621: "outfield",
42622: "outfit",
42623: "outflank",
42624: "outgoing",
42625: "outgrow",
42626: "outhouse",
42631: "outing",
42632: "outlast",
42633: "outlet",
42634: "outline",
42635: "outlook",
42636: "outlying",
42641: "outmatch",
42642: "outmost",
42643: "outnumber",
42644: "outplayed",
42645: "outpost",
42646: "outpour",
42651: "output",
42652: "outrage",
42653: "outrank",
42654: "outreach",
42655: "outright",
42656: "outscore",
42661: "outsell",
42662: "outshine",
42663: "outshoot",
42664: "outsider",
42665: "outskirts",
42666: "outsmart",
43111: "outsource",
43112: "outspoken",
43113: "outtakes",
43114: "outthink",
43115: "outward",
43116: "outweigh",
43121: "outwit",
43122: "oval",
43123: "ovary",
43124: "oven",
43125: "overact",
43126: "overall",
43131: "overarch",
43132: "overbid",
43133: "overbill",
43134: "overbite",
43135: "overblown",
43136: "overboard",
43141: "overbook",
43142: "overbuilt",
43143: "overcast",
43144: "overcoat",
43145: "overcome",
43146: "overcook",
43151: "overcrowd",
43152: "overdraft",
43153: "overdrawn",
43154: "overdress",
43155: "overdrive",
43156: "overdue",
43161: "overeager",
43162: "overeater",
43163: "overexert",
43164: "overfed",
43165: "overfeed",
43166: "overfill",
43211: "overflow",
43212: "overfull",
43213: "overgrown",
43214: "overhand",
43215: "overhang",
43216: "overhaul",
43221: "overhead",
43222: "overhear",
43223: "overheat",
43224: "overhung",
43225: "overjoyed",
43226: "overkill",
43231: "overlabor",
43232: "overlaid",
43233: "overlap",
43234: "overlay",
43235: "overload",
43236: "overlook",
43241: "overlord",
43242: "overlying",
43243: "overnight",
43244: "overpass",
43245: "overpay",
43246: "overplant",
43251: "overplay",
43252: "overpower",
43253: "overprice",
43254: "overrate",
43255: "overreach",
43256: "overreact",
43261: "override",
43262: "overripe",
43263: "overrule",
43264: "overrun",
43265: "overshoot",
43266: "overshot",
43311: "oversight",
43312: "oversized",
43313: "oversleep",
43314: "oversold",
43315: "overspend",
43316: "overstate",
43321: "overstay",
43322: "overstep",
43323: "overstock",
43324: "overstuff",
43325: "oversweet",
43326: "overtake",
43331: "overthrow",
43332: "overtime",
43333: "overtly",
43334: "overtone",
43335: "overture",
43336: "overturn",
43341: "overuse",
43342: "overvalue",
43343: "overview",
43344: "overwrite",
43345: "owl",
43346: "oxford",
43351: "oxidant",
43352: "oxidation",
43353: "oxidize",
43354: "oxidizing",
43355: "oxygen",
43356: "oxymoron",
43361: "oyster",
43362: "ozone",
43363: "paced",
43364: "pacemaker",
43365: "pacific",
43366: "pacifier",
43411: "pacifism",
43412: "pacifist",
43413: "pacify",
43414: "padded",
43415: "padding",
43416: "paddle",
43421: "paddling",
43422: "padlock",
43423: "pagan",
43424: "pager",
43425: "paging",
43426: "pajamas",
43431: "palace",
43432: "palatable",
43433: "palm",
43434: "palpable",
43435: "palpitate",
43436: "paltry",
43441: "pampered",
43442: "pamperer",
43443: "pampers",
43444: "pamphlet",
43445: "panama",
43446: "pancake",
43451: "pancreas",
43452: "panda",
43453: "pandemic",
43454: "pang",
43455: "panhandle",
43456: "panic",
43461: "panning",
43462: "panorama",
43463: "panoramic",
43464: "panther",
43465: "pantomime",
43466: "pantry",
43511: "pants",
43512: "pantyhose",
43513: "paparazzi",
43514: "papaya",
43515: "paper",
43516: "paprika",
43521: "papyrus",
43522: "parabola",
43523: "parachute",
43524: "parade",
43525: "paradox",
43526: "paragraph",
43531: "parakeet",
43532: "paralegal",
43533: "paralyses",
43534: "paralysis",
43535: "paralyze",
43536: "paramedic",
43541: "parameter",
43542: "paramount",
43543: "parasail",
43544: "parasite",
43545: "parasitic",
43546: "parcel",
43551: "parched",
43552: "parchment",
43553: "pardon",
43554: "parish",
43555: "parka",
43556: "parking",
43561: "parkway",
43562: "parlor",
43563: "parmesan",
43564: "parole",
43565: "parrot",
43566: "parsley",
43611: "parsnip",
43612: "partake",
43613: "parted",
43614: "parting",
43615: "partition",
43616: "partly",
43621: "partner",
43622: "partridge",
43623: "party",
43624: "passable",
43625: "passably",
43626: "passage",
43631: "passcode",
43632: "passenger",
43633: "passerby",
43634: "passing",
43635: "passion",
43636: "passive",
43641: "passivism",
43642: "passover",
43643: "passport",
43644: "password",
43645: "pasta",
43646: "pasted",
43651: "pastel",
43652: "pastime",
43653: "pastor",
43654: "pastrami",
43655: "pasture",
43656: "pasty",
43661: "patchwork",
43662: "patchy",
43663: "paternal",
43664: "paternity",
43665: "path",
43666: "patience",
44111: "patient",
44112: "patio",
44113: "patriarch",
44114: "patriot",
44115: "patrol",
44116: "patronage",
44121: "patronize",
44122: "pauper",
44123: "pavement",
44124: "paver",
44125: "pavestone",
44126: "pavilion",
44131: "paving",
44132: "pawing",
44133: "payable",
44134: "payback",
44135: "paycheck",
44136: "payday",
44141: "payee",
44142: "payer",
44143: "paying",
44144: "payment",
44145: "payphone",
44146: "payroll",
44151: "pebble",
44152: "pebbly",
44153: "pecan",
44154: "pectin",
44155: "peculiar",
44156: "peddling",
44161: "pediatric",
44162: "pedicure",
44163: "pedigree",
44164: "pedometer",
44165: "pegboard",
44166: "pelican",
44211: "pellet",
44212: "pelt",
44213: "pelvis",
44214: "penalize",
44215: "penalty",
44216: "pencil",
44221: "pendant",
44222: "pending",
44223: "penholder",
44224: "penknife",
44225: "pennant",
44226: "penniless",
44231: "penny",
44232: "penpal",
44233: "pension",
44234: "pentagon",
44235: "pentagram",
44236: "pep",
44241: "perceive",
44242: "percent",
44243: "perch",
44244: "percolate",
44245: "perennial",
44246: "perfected",
44251: "perfectly",
44252: "perfume",
44253: "periscope",
44254: "perish",
44255: "perjurer",
44256: "perjury",
44261: "perkiness",
44262: "perky",
44263: "perm",
44264: "peroxide",
44265: "perpetual",
44266: "perplexed",
44311: "persecute",
44312: "persevere",
44313: "persuaded",
44314: "persuader",
44315: "pesky",
44316: "peso",
44321: "pessimism",
44322: "pessimist",
44323: "pester",
44324: "pesticide",
44325: "petal",
44326: "petite",
44331: "petition",
44332: "petri",
44333: "petroleum",
44334: "petted",
44335: "petticoat",
44336: "pettiness",
44341: "petty",
44342: "petunia",
44343: "phantom",
44344: "phobia",
44345: "phoenix",
44346: "phonebook",
44351: "phoney",
44352: "phonics",
44353: "phoniness",
44354: "phony",
44355: "phosphate",
44356: "photo",
44361: "phrase",
44362: "phrasing",
44363: "placard",
44364: "placate",
44365: "placidly",
44366: "plank",
44411: "planner",
44412: "plant",
44413: "plasma",
44414: "plaster",
44415: "plastic",
44416: "plated",
44421: "platform",
44422: "plating",
44423: "platinum",
44424: "platonic",
44425: "platter",
44426: "platypus",
44431: "plausible",
44432: "plausibly",
44433: "playable",
44434: "playback",
44435: "player",
44436: "playful",
44441: "playgroup",
44442: "playhouse",
44443: "playing",
44444: "playlist",
44445: "playmaker",
44446: "playmate",
44451: "playoff",
44452: "playpen",
44453: "playroom",
44454: "playset",
44455: "plaything",
44456: "playtime",
44461: "plaza",
44462: "pleading",
44463: "pleat",
44464: "pledge",
44465: "plentiful",
44466: "plenty",
44511: "plethora",
44512: "plexiglas",
44513: "pliable",
44514: "plod",
44515: "plop",
44516: "plot",
44521: "plow",
44522: "ploy",
44523: "pluck",
44524: "plug",
44525: "plunder",
44526: "plunging",
44531: "plural",
44532: "plus",
44533: "plutonium",
44534: "plywood",
44535: "poach",
44536: "pod",
44541: "poem",
44542: "poet",
44543: "pogo",
44544: "pointed",
44545: "pointer",
44546: "pointing",
44551: "pointless",
44552: "pointy",
44553: "poise",
44554: "poison",
44555: "poker",
44556: "poking",
44561: "polar",
44562: "police",
44563: "policy",
44564: "polio",
44565: "polish",
44566: "politely",
44611: "polka",
44612: "polo",
44613: "polyester",
44614: "polygon",
44615: "polygraph",
44616: "polymer",
44621: "poncho",
44622: "pond",
44623: "pony",
44624: "popcorn",
44625: "pope",
44626: "poplar",
44631: "popper",
44632: "poppy",
44633: "popsicle",
44634: "populace",
44635: "popular",
44636: "populate",
44641: "porcupine",
44642: "pork",
44643: "porous",
44644: "porridge",
44645: "portable",
44646: "portal",
44651: "portfolio",
44652: "porthole",
44653: "portion",
44654: "portly",
44655: "portside",
44656: "poser",
44661: "posh",
44662: "posing",
44663: "possible",
44664: "possibly",
44665: "possum",
44666: "postage",
45111: "postal",
45112: "postbox",
45113: "postcard",
45114: "posted",
45115: "poster",
45116: "posting",
45121: "postnasal",
45122: "posture",
45123: "postwar",
45124: "pouch",
45125: "pounce",
45126: "pouncing",
45131: "pound",
45132: "pouring",
45133: "pout",
45134: "powdered",
45135: "powdering",
45136: "powdery",
45141: "power",
45142: "powwow",
45143: "pox",
45144: "praising",
45145: "prance",
45146: "prancing",
45151: "pranker",
45152: "prankish",
45153: "prankster",
45154: "prayer",
45155: "praying",
45156: "preacher",
45161: "preaching",
45162: "preachy",
45163: "preamble",
45164: "precinct",
45165: "precise",
45166: "precision",
45211: "precook",
45212: "precut",
45213: "predator",
45214: "predefine",
45215: "predict",
45216: "preface",
45221: "prefix",
45222: "preflight",
45223: "preformed",
45224: "pregame",
45225: "pregnancy",
45226: "pregnant",
45231: "preheated",
45232: "prelaunch",
45233: "prelaw",
45234: "prelude",
45235: "premiere",
45236: "premises",
45241: "premium",
45242: "prenatal",
45243: "preoccupy",
45244: "preorder",
45245: "prepaid",
45246: "prepay",
45251: "preplan",
45252: "preppy",
45253: "preschool",
45254: "prescribe",
45255: "preseason",
45256: "preset",
45261: "preshow",
45262: "president",
45263: "presoak",
45264: "press",
45265: "presume",
45266: "presuming",
45311: "preteen",
45312: "pretended",
45313: "pretender",
45314: "pretense",
45315: "pretext",
45316: "pretty",
45321: "pretzel",
45322: "prevail",
45323: "prevalent",
45324: "prevent",
45325: "preview",
45326: "previous",
45331: "prewar",
45332: "prewashed",
45333: "prideful",
45334: "pried",
45335: "primal",
45336: "primarily",
45341: "primary",
45342: "primate",
45343: "primer",
45344: "primp",
45345: "princess",
45346: "print",
45351: "prior",
45352: "prism",
45353: "prison",
45354: "prissy",
45355: "pristine",
45356: "privacy",
45361: "private",
45362: "privatize",
45363: "prize",
45364: "proactive",
45365: "probable",
45366: "probably",
45411: "probation",
45412: "probe",
45413: "probing",
45414: "probiotic",
45415: "problem",
45416: "procedure",
45421: "process",
45422: "proclaim",
45423: "procreate",
45424: "procurer",
45425: "prodigal",
45426: "prodigy",
45431: "produce",
45432: "product",
45433: "profane",
45434: "profanity",
45435: "professed",
45436: "professor",
45441: "profile",
45442: "profound",
45443: "profusely",
45444: "progeny",
45445: "prognosis",
45446: "program",
45451: "progress",
45452: "projector",
45453: "prologue",
45454: "prolonged",
45455: "promenade",
45456: "prominent",
45461: "promoter",
45462: "promotion",
45463: "prompter",
45464: "promptly",
45465: "prone",
45466: "prong",
45511: "pronounce",
45512: "pronto",
45513: "proofing",
45514: "proofread",
45515: "proofs",
45516: "propeller",
45521: "properly",
45522: "property",
45523: "proponent",
45524: "proposal",
45525: "propose",
45526: "props",
45531: "prorate",
45532: "protector",
45533: "protegee",
45534: "proton",
45535: "prototype",
45536: "protozoan",
45541: "protract",
45542: "protrude",
45543: "proud",
45544: "provable",
45545: "proved",
45546: "proven",
45551: "provided",
45552: "provider",
45553: "providing",
45554: "province",
45555: "proving",
45556: "provoke",
45561: "provoking",
45562: "provolone",
45563: "prowess",
45564: "prowler",
45565: "prowling",
45566: "proximity",
45611: "proxy",
45612: "prozac",
45613: "prude",
45614: "prudishly",
45615: "prune",
45616: "pruning",
45621: "pry",
45622: "psychic",
45623: "public",
45624: "publisher",
45625: "pucker",
45626: "pueblo",
45631: "pug",
45632: "pull",
45633: "pulmonary",
45634: "pulp",
45635: "pulsate",
45636: "pulse",
45641: "pulverize",
45642: "puma",
45643: "pumice",
45644: "pummel",
45645: "punch",
45646: "punctual",
45651: "punctuate",
45652: "punctured",
45653: "pungent",
45654: "punisher",
45655: "punk",
45656: "pupil",
45661: "puppet",
45662: "puppy",
45663: "purchase",
45664: "pureblood",
45665: "purebred",
45666: "purely",
46111: "pureness",
46112: "purgatory",
46113: "purge",
46114: "purging",
46115: "purifier",
46116: "purify",
46121: "purist",
46122: "puritan",
46123: "purity",
46124: "purple",
46125: "purplish",
46126: "purposely",
46131: "purr",
46132: "purse",
46133: "pursuable",
46134: "pursuant",
46135: "pursuit",
46136: "purveyor",
46141: "pushcart",
46142: "pushchair",
46143: "pusher",
46144: "pushiness",
46145: "pushing",
46146: "pushover",
46151: "pushpin",
46152: "pushup",
46153: "pushy",
46154: "putdown",
46155: "putt",
46156: "puzzle",
46161: "puzzling",
46162: "pyramid",
46163: "pyromania",
46164: "python",
46165: "quack",
46166: "quadrant",
46211: "quail",
46212: "quaintly",
46213: "quake",
46214: "quaking",
46215: "qualified",
46216: "qualifier",
46221: "qualify",
46222: "quality",
46223: "qualm",
46224: "quantum",
46225: "quarrel",
46226: "quarry",
46231: "quartered",
46232: "quarterly",
46233: "quarters",
46234: "quartet",
46235: "quench",
46236: "query",
46241: "quicken",
46242: "quickly",
46243: "quickness",
46244: "quicksand",
46245: "quickstep",
46246: "quiet",
46251: "quill",
46252: "quilt",
46253: "quintet",
46254: "quintuple",
46255: "quirk",
46256: "quit",
46261: "quiver",
46262: "quizzical",
46263: "quotable",
46264: "quotation",
46265: "quote",
46266: "rabid",
46311: "race",
46312: "racing",
46313: "racism",
46314: "rack",
46315: "racoon",
46316: "radar",
46321: "radial",
46322: "radiance",
46323: "radiantly",
46324: "radiated",
46325: "radiation",
46326: "radiator",
46331: "radio",
46332: "radish",
46333: "raffle",
46334: "raft",
46335: "rage",
46336: "ragged",
46341: "raging",
46342: "ragweed",
46343: "raider",
46344: "railcar",
46345: "railing",
46346: "railroad",
46351: "railway",
46352: "raisin",
46353: "rake",
46354: "raking",
46355: "rally",
46356: "ramble",
46361: "rambling",
46362: "ramp",
46363: "ramrod",
46364: "ranch",
46365: "rancidity",
46366: "random",
46411: "ranged",
46412: "ranger",
46413: "ranging",
46414: "ranked",
46415: "ranking",
46416: "ransack",
46421: "ranting",
46422: "rants",
46423: "rare",
46424: "rarity",
46425: "rascal",
46426: "rash",
46431: "rasping",
46432: "ravage",
46433: "raven",
46434: "ravine",
46435: "raving",
46436: "ravioli",
46441: "ravishing",
46442: "reabsorb",
46443: "reach",
46444: "reacquire",
46445: "reaction",
46446: "reactive",
46451: "reactor",
46452: "reaffirm",
46453: "ream",
46454: "reanalyze",
46455: "reappear",
46456: "reapply",
46461: "reappoint",
46462: "reapprove",
46463: "rearrange",
46464: "rearview",
46465: "reason",
46466: "reassign",
46511: "reassure",
46512: "reattach",
46513: "reawake",
46514: "rebalance",
46515: "rebate",
46516: "rebel",
46521: "rebirth",
46522: "reboot",
46523: "reborn",
46524: "rebound",
46525: "rebuff",
46526: "rebuild",
46531: "rebuilt",
46532: "reburial",
46533: "rebuttal",
46534: "recall",
46535: "recant",
46536: "recapture",
46541: "recast",
46542: "recede",
46543: "recent",
46544: "recess",
46545: "recharger",
46546: "recipient",
46551: "recital",
46552: "recite",
46553: "reckless",
46554: "reclaim",
46555: "recliner",
46556: "reclining",
46561: "recluse",
46562: "reclusive",
46563: "recognize",
46564: "recoil",
46565: "recollect",
46566: "recolor",
46611: "reconcile",
46612: "reconfirm",
46613: "reconvene",
46614: "recopy",
46615: "record",
46616: "recount",
46621: "recoup",
46622: "recovery",
46623: "recreate",
46624: "rectal",
46625: "rectangle",
46626: "rectified",
46631: "rectify",
46632: "recycled",
46633: "recycler",
46634: "recycling",
46635: "reemerge",
46636: "reenact",
46641: "reenter",
46642: "reentry",
46643: "reexamine",
46644: "referable",
46645: "referee",
46646: "reference",
46651: "refill",
46652: "refinance",
46653: "refined",
46654: "refinery",
46655: "refining",
46656: "refinish",
46661: "reflected",
46662: "reflector",
46663: "reflex",
46664: "reflux",
46665: "refocus",
46666: "refold",
51111: "reforest",
51112: "reformat",
51113: "reformed",
51114: "reformer",
51115: "reformist",
51116: "refract",
51121: "refrain",
51122: "refreeze",
51123: "refresh",
51124: "refried",
51125: "refueling",
51126: "refund",
51131: "refurbish",
51132: "refurnish",
51133: "refusal",
51134: "refuse",
51135: "refusing",
51136: "refutable",
51141: "refute",
51142: "regain",
51143: "regalia",
51144: "regally",
51145: "reggae",
51146: "regime",
51151: "region",
51152: "register",
51153: "registrar",
51154: "registry",
51155: "regress",
51156: "regretful",
51161: "regroup",
51162: "regular",
51163: "regulate",
51164: "regulator",
51165: "rehab",
51166: "reheat",
51211: "rehire",
51212: "rehydrate",
51213: "reimburse",
51214: "reissue",
51215: "reiterate",
51216: "rejoice",
51221: "rejoicing",
51222: "rejoin",
51223: "rekindle",
51224: "relapse",
51225: "relapsing",
51226: "relatable",
51231: "related",
51232: "relation",
51233: "relative",
51234: "relax",
51235: "relay",
51236: "relearn",
51241: "release",
51242: "relenting",
51243: "reliable",
51244: "reliably",
51245: "reliance",
51246: "reliant",
51251: "relic",
51252: "relieve",
51253: "relieving",
51254: "relight",
51255: "relish",
51256: "relive",
51261: "reload",
51262: "relocate",
51263: "relock",
51264: "reluctant",
51265: "rely",
51266: "remake",
51311: "remark",
51312: "remarry",
51313: "rematch",
51314: "remedial",
51315: "remedy",
51316: "remember",
51321: "reminder",
51322: "remindful",
51323: "remission",
51324: "remix",
51325: "remnant",
51326: "remodeler",
51331: "remold",
51332: "remorse",
51333: "remote",
51334: "removable",
51335: "removal",
51336: "removed",
51341: "remover",
51342: "removing",
51343: "rename",
51344: "renderer",
51345: "rendering",
51346: "rendition",
51351: "renegade",
51352: "renewable",
51353: "renewably",
51354: "renewal",
51355: "renewed",
51356: "renounce",
51361: "renovate",
51362: "renovator",
51363: "rentable",
51364: "rental",
51365: "rented",
51366: "renter",
51411: "reoccupy",
51412: "reoccur",
51413: "reopen",
51414: "reorder",
51415: "repackage",
51416: "repacking",
51421: "repaint",
51422: "repair",
51423: "repave",
51424: "repaying",
51425: "repayment",
51426: "repeal",
51431: "repeated",
51432: "repeater",
51433: "repent",
51434: "rephrase",
51435: "replace",
51436: "replay",
51441: "replica",
51442: "reply",
51443: "reporter",
51444: "repose",
51445: "repossess",
51446: "repost",
51451: "repressed",
51452: "reprimand",
51453: "reprint",
51454: "reprise",
51455: "reproach",
51456: "reprocess",
51461: "reproduce",
51462: "reprogram",
51463: "reps",
51464: "reptile",
51465: "reptilian",
51466: "repugnant",
51511: "repulsion",
51512: "repulsive",
51513: "repurpose",
51514: "reputable",
51515: "reputably",
51516: "request",
51521: "require",
51522: "requisite",
51523: "reroute",
51524: "rerun",
51525: "resale",
51526: "resample",
51531: "rescuer",
51532: "reseal",
51533: "research",
51534: "reselect",
51535: "reseller",
51536: "resemble",
51541: "resend",
51542: "resent",
51543: "reset",
51544: "reshape",
51545: "reshoot",
51546: "reshuffle",
51551: "residence",
51552: "residency",
51553: "resident",
51554: "residual",
51555: "residue",
51556: "resigned",
51561: "resilient",
51562: "resistant",
51563: "resisting",
51564: "resize",
51565: "resolute",
51566: "resolved",
51611: "resonant",
51612: "resonate",
51613: "resort",
51614: "resource",
51615: "respect",
51616: "resubmit",
51621: "result",
51622: "resume",
51623: "resupply",
51624: "resurface",
51625: "resurrect",
51626: "retail",
51631: "retainer",
51632: "retaining",
51633: "retake",
51634: "retaliate",
51635: "retention",
51636: "rethink",
51641: "retinal",
51642: "retired",
51643: "retiree",
51644: "retiring",
51645: "retold",
51646: "retool",
51651: "retorted",
51652: "retouch",
51653: "retrace",
51654: "retract",
51655: "retrain",
51656: "retread",
51661: "retreat",
51662: "retrial",
51663: "retrieval",
51664: "retriever",
51665: "retry",
51666: "return",
52111: "retying",
52112: "retype",
52113: "reunion",
52114: "reunite",
52115: "reusable",
52116: "reuse",
52121: "reveal",
52122: "reveler",
52123: "revenge",
52124: "revenue",
52125: "reverb",
52126: "revered",
52131: "reverence",
52132: "reverend",
52133: "reversal",
52134: "reverse",
52135: "reversing",
52136: "reversion",
52141: "revert",
52142: "revisable",
52143: "revise",
52144: "revision",
52145: "revisit",
52146: "revivable",
52151: "revival",
52152: "reviver",
52153: "reviving",
52154: "revocable",
52155: "revoke",
52156: "revolt",
52161: "revolver",
52162: "revolving",
52163: "reward",
52164: "rewash",
52165: "rewind",
52166: "rewire",
52211: "reword",
52212: "rework",
52213: "rewrap",
52214: "rewrite",
52215: "rhyme",
52216: "ribbon",
52221: "ribcage",
52222: "rice",
52223: "riches",
52224: "richly",
52225: "richness",
52226: "rickety",
52231: "ricotta",
52232: "riddance",
52233: "ridden",
52234: "ride",
52235: "riding",
52236: "rifling",
52241: "rift",
52242: "rigging",
52243: "rigid",
52244: "rigor",
52245: "rimless",
52246: "rimmed",
52251: "rind",
52252: "rink",
52253: "rinse",
52254: "rinsing",
52255: "riot",
52256: "ripcord",
52261: "ripeness",
52262: "ripening",
52263: "ripping",
52264: "ripple",
52265: "rippling",
52266: "riptide",
52311: "rise",
52312: "rising",
52313: "risk",
52314: "risotto",
52315: "ritalin",
52316: "ritzy",
52321: "rival",
52322: "riverbank",
52323: "riverbed",
52324: "riverboat",
52325: "riverside",
52326: "riveter",
52331: "riveting",
52332: "roamer",
52333: "roaming",
52334: "roast",
52335: "robbing",
52336: "robe",
52341: "robin",
52342: "robotics",
52343: "robust",
52344: "rockband",
52345: "rocker",
52346: "rocket",
52351: "rockfish",
52352: "rockiness",
52353: "rocking",
52354: "rocklike",
52355: "rockslide",
52356: "rockstar",
52361: "rocky",
52362: "rogue",
52363: "roman",
52364: "romp",
52365: "rope",
52366: "roping",
52411: "roster",
52412: "rosy",
52413: "rotten",
52414: "rotting",
52415: "rotunda",
52416: "roulette",
52421: "rounding",
52422: "roundish",
52423: "roundness",
52424: "roundup",
52425: "roundworm",
52426: "routine",
52431: "routing",
52432: "rover",
52433: "roving",
52434: "royal",
52435: "rubbed",
52436: "rubber",
52441: "rubbing",
52442: "rubble",
52443: "rubdown",
52444: "ruby",
52445: "ruckus",
52446: "rudder",
52451: "rug",
52452: "ruined",
52453: "rule",
52454: "rumble",
52455: "rumbling",
52456: "rummage",
52461: "rumor",
52462: "runaround",
52463: "rundown",
52464: "runner",
52465: "running",
52466: "runny",
52511: "runt",
52512: "runway",
52513: "rupture",
52514: "rural",
52515: "ruse",
52516: "rush",
52521: "rust",
52522: "rut",
52523: "sabbath",
52524: "sabotage",
52525: "sacrament",
52526: "sacred",
52531: "sacrifice",
52532: "sadden",
52533: "saddlebag",
52534: "saddled",
52535: "saddling",
52536: "sadly",
52541: "sadness",
52542: "safari",
52543: "safeguard",
52544: "safehouse",
52545: "safely",
52546: "safeness",
52551: "saffron",
52552: "saga",
52553: "sage",
52554: "sagging",
52555: "saggy",
52556: "said",
52561: "saint",
52562: "sake",
52563: "salad",
52564: "salami",
52565: "salaried",
52566: "salary",
52611: "saline",
52612: "salon",
52613: "saloon",
52614: "salsa",
52615: "salt",
52616: "salutary",
52621: "salute",
52622: "salvage",
52623: "salvaging",
52624: "salvation",
52625: "same",
52626: "sample",
52631: "sampling",
52632: "sanction",
52633: "sanctity",
52634: "sanctuary",
52635: "sandal",
52636: "sandbag",
52641: "sandbank",
52642: "sandbar",
52643: "sandblast",
52644: "sandbox",
52645: "sanded",
52646: "sandfish",
52651: "sanding",
52652: "sandlot",
52653: "sandpaper",
52654: "sandpit",
52655: "sandstone",
52656: "sandstorm",
52661: "sandworm",
52662: "sandy",
52663: "sanitary",
52664: "sanitizer",
52665: "sank",
52666: "santa",
53111: "sapling",
53112: "sappiness",
53113: "sappy",
53114: "sarcasm",
53115: "sarcastic",
53116: "sardine",
53121: "sash",
53122: "sasquatch",
53123: "sassy",
53124: "satchel",
53125: "satiable",
53126: "satin",
53131: "satirical",
53132: "satisfied",
53133: "satisfy",
53134: "saturate",
53135: "saturday",
53136: "sauciness",
53141: "saucy",
53142: "sauna",
53143: "savage",
53144: "savanna",
53145: "saved",
53146: "savings",
53151: "savior",
53152: "savor",
53153: "saxophone",
53154: "say",
53155: "scabbed",
53156: "scabby",
53161: "scalded",
53162: "scalding",
53163: "scale",
53164: "scaling",
53165: "scallion",
53166: "scallop",
53211: "scalping",
53212: "scam",
53213: "scandal",
53214: "scanner",
53215: "scanning",
53216: "scant",
53221: "scapegoat",
53222: "scarce",
53223: "scarcity",
53224: "scarecrow",
53225: "scared",
53226: "scarf",
53231: "scarily",
53232: "scariness",
53233: "scarring",
53234: "scary",
53235: "scavenger",
53236: "scenic",
53241: "schedule",
53242: "schematic",
53243: "scheme",
53244: "scheming",
53245: "schilling",
53246: "schnapps",
53251: "scholar",
53252: "science",
53253: "scientist",
53254: "scion",
53255: "scoff",
53256: "scolding",
53261: "scone",
53262: "scoop",
53263: "scooter",
53264: "scope",
53265: "scorch",
53266: "scorebook",
53311: "scorecard",
53312: "scored",
53313: "scoreless",
53314: "scorer",
53315: "scoring",
53316: "scorn",
53321: "scorpion",
53322: "scotch",
53323: "scoundrel",
53324: "scoured",
53325: "scouring",
53326: "scouting",
53331: "scouts",
53332: "scowling",
53333: "scrabble",
53334: "scraggly",
53335: "scrambled",
53336: "scrambler",
53341: "scrap",
53342: "scratch",
53343: "scrawny",
53344: "screen",
53345: "scribble",
53346: "scribe",
53351: "scribing",
53352: "scrimmage",
53353: "script",
53354: "scroll",
53355: "scrooge",
53356: "scrounger",
53361: "scrubbed",
53362: "scrubber",
53363: "scruffy",
53364: "scrunch",
53365: "scrutiny",
53366: "scuba",
53411: "scuff",
53412: "sculptor",
53413: "sculpture",
53414: "scurvy",
53415: "scuttle",
53416: "secluded",
53421: "secluding",
53422: "seclusion",
53423: "second",
53424: "secrecy",
53425: "secret",
53426: "sectional",
53431: "sector",
53432: "secular",
53433: "securely",
53434: "security",
53435: "sedan",
53436: "sedate",
53441: "sedation",
53442: "sedative",
53443: "sediment",
53444: "seduce",
53445: "seducing",
53446: "segment",
53451: "seismic",
53452: "seizing",
53453: "seldom",
53454: "selected",
53455: "selection",
53456: "selective",
53461: "selector",
53462: "self",
53463: "seltzer",
53464: "semantic",
53465: "semester",
53466: "semicolon",
53511: "semifinal",
53512: "seminar",
53513: "semisoft",
53514: "semisweet",
53515: "senate",
53516: "senator",
53521: "send",
53522: "senior",
53523: "senorita",
53524: "sensation",
53525: "sensitive",
53526: "sensitize",
53531: "sensually",
53532: "sensuous",
53533: "sepia",
53534: "september",
53535: "septic",
53536: "septum",
53541: "sequel",
53542: "sequence",
53543: "sequester",
53544: "series",
53545: "sermon",
53546: "serotonin",
53551: "serpent",
53552: "serrated",
53553: "serve",
53554: "service",
53555: "serving",
53556: "sesame",
53561: "sessions",
53562: "setback",
53563: "setting",
53564: "settle",
53565: "settling",
53566: "setup",
53611: "sevenfold",
53612: "seventeen",
53613: "seventh",
53614: "seventy",
53615: "severity",
53616: "shabby",
53621: "shack",
53622: "shaded",
53623: "shadily",
53624: "shadiness",
53625: "shading",
53626: "shadow",
53631: "shady",
53632: "shaft",
53633: "shakable",
53634: "shakily",
53635: "shakiness",
53636: "shaking",
53641: "shaky",
53642: "shale",
53643: "shallot",
53644: "shallow",
53645: "shame",
53646: "shampoo",
53651: "shamrock",
53652: "shank",
53653: "shanty",
53654: "shape",
53655: "shaping",
53656: "share",
53661: "sharpener",
53662: "sharper",
53663: "sharpie",
53664: "sharply",
53665: "sharpness",
53666: "shawl",
54111: "sheath",
54112: "shed",
54113: "sheep",
54114: "sheet",
54115: "shelf",
54116: "shell",
54121: "shelter",
54122: "shelve",
54123: "shelving",
54124: "sherry",
54125: "shield",
54126: "shifter",
54131: "shifting",
54132: "shiftless",
54133: "shifty",
54134: "shimmer",
54135: "shimmy",
54136: "shindig",
54141: "shine",
54142: "shingle",
54143: "shininess",
54144: "shining",
54145: "shiny",
54146: "ship",
54151: "shirt",
54152: "shivering",
54153: "shock",
54154: "shone",
54155: "shoplift",
54156: "shopper",
54161: "shopping",
54162: "shoptalk",
54163: "shore",
54164: "shortage",
54165: "shortcake",
54166: "shortcut",
54211: "shorten",
54212: "shorter",
54213: "shorthand",
54214: "shortlist",
54215: "shortly",
54216: "shortness",
54221: "shorts",
54222: "shortwave",
54223: "shorty",
54224: "shout",
54225: "shove",
54226: "showbiz",
54231: "showcase",
54232: "showdown",
54233: "shower",
54234: "showgirl",
54235: "showing",
54236: "showman",
54241: "shown",
54242: "showoff",
54243: "showpiece",
54244: "showplace",
54245: "showroom",
54246: "showy",
54251: "shrank",
54252: "shrapnel",
54253: "shredder",
54254: "shredding",
54255: "shrewdly",
54256: "shriek",
54261: "shrill",
54262: "shrimp",
54263: "shrine",
54264: "shrink",
54265: "shrivel",
54266: "shrouded",
54311: "shrubbery",
54312: "shrubs",
54313: "shrug",
54314: "shrunk",
54315: "shucking",
54316: "shudder",
54321: "shuffle",
54322: "shuffling",
54323: "shun",
54324: "shush",
54325: "shut",
54326: "shy",
54331: "siamese",
54332: "siberian",
54333: "sibling",
54334: "siding",
54335: "sierra",
54336: "siesta",
54341: "sift",
54342: "sighing",
54343: "silenced",
54344: "silencer",
54345: "silent",
54346: "silica",
54351: "silicon",
54352: "silk",
54353: "silliness",
54354: "silly",
54355: "silo",
54356: "silt",
54361: "silver",
54362: "similarly",
54363: "simile",
54364: "simmering",
54365: "simple",
54366: "simplify",
54411: "simply",
54412: "sincere",
54413: "sincerity",
54414: "singer",
54415: "singing",
54416: "single",
54421: "singular",
54422: "sinister",
54423: "sinless",
54424: "sinner",
54425: "sinuous",
54426: "sip",
54431: "siren",
54432: "sister",
54433: "sitcom",
54434: "sitter",
54435: "sitting",
54436: "situated",
54441: "situation",
54442: "sixfold",
54443: "sixteen",
54444: "sixth",
54445: "sixties",
54446: "sixtieth",
54451: "sixtyfold",
54452: "sizable",
54453: "sizably",
54454: "size",
54455: "sizing",
54456: "sizzle",
54461: "sizzling",
54462: "skater",
54463: "skating",
54464: "skedaddle",
54465: "skeletal",
54466: "skeleton",
54511: "skeptic",
54512: "sketch",
54513: "skewed",
54514: "skewer",
54515: "skid",
54516: "skied",
54521: "skier",
54522: "skies",
54523: "skiing",
54524: "skilled",
54525: "skillet",
54526: "skillful",
54531: "skimmed",
54532: "skimmer",
54533: "skimming",
54534: "skimpily",
54535: "skincare",
54536: "skinhead",
54541: "skinless",
54542: "skinning",
54543: "skinny",
54544: "skintight",
54545: "skipper",
54546: "skipping",
54551: "skirmish",
54552: "skirt",
54553: "skittle",
54554: "skydiver",
54555: "skylight",
54556: "skyline",
54561: "skype",
54562: "skyrocket",
54563: "skyward",
54564: "slab",
54565: "slacked",
54566: "slacker",
54611: "slacking",
54612: "slackness",
54613: "slacks",
54614: "slain",
54615: "slam",
54616: "slander",
54621: "slang",
54622: "slapping",
54623: "slapstick",
54624: "slashed",
54625: "slashing",
54626: "slate",
54631: "slather",
54632: "slaw",
54633: "sled",
54634: "sleek",
54635: "sleep",
54636: "sleet",
54641: "sleeve",
54642: "slept",
54643: "sliceable",
54644: "sliced",
54645: "slicer",
54646: "slicing",
54651: "slick",
54652: "slider",
54653: "slideshow",
54654: "sliding",
54655: "slighted",
54656: "slighting",
54661: "slightly",
54662: "slimness",
54663: "slimy",
54664: "slinging",
54665: "slingshot",
54666: "slinky",
55111: "slip",
55112: "slit",
55113: "sliver",
55114: "slobbery",
55115: "slogan",
55116: "sloped",
55121: "sloping",
55122: "sloppily",
55123: "sloppy",
55124: "slot",
55125: "slouching",
55126: "slouchy",
55131: "sludge",
55132: "slug",
55133: "slum",
55134: "slurp",
55135: "slush",
55136: "sly",
55141: "small",
55142: "smartly",
55143: "smartness",
55144: "smasher",
55145: "smashing",
55146: "smashup",
55151: "smell",
55152: "smelting",
55153: "smile",
55154: "smilingly",
55155: "smirk",
55156: "smite",
55161: "smith",
55162: "smitten",
55163: "smock",
55164: "smog",
55165: "smoked",
55166: "smokeless",
55211: "smokiness",
55212: "smoking",
55213: "smoky",
55214: "smolder",
55215: "smooth",
55216: "smother",
55221: "smudge",
55222: "smudgy",
55223: "smuggler",
55224: "smuggling",
55225: "smugly",
55226: "smugness",
55231: "snack",
55232: "snagged",
55233: "snaking",
55234: "snap",
55235: "snare",
55236: "snarl",
55241: "snazzy",
55242: "sneak",
55243: "sneer",
55244: "sneeze",
55245: "sneezing",
55246: "snide",
55251: "sniff",
55252: "snippet",
55253: "snipping",
55254: "snitch",
55255: "snooper",
55256: "snooze",
55261: "snore",
55262: "snoring",
55263: "snorkel",
55264: "snort",
55265: "snout",
55266: "snowbird",
55311: "snowboard",
55312: "snowbound",
55313: "snowcap",
55314: "snowdrift",
55315: "snowdrop",
55316: "snowfall",
55321: "snowfield",
55322: "snowflake",
55323: "snowiness",
55324: "snowless",
55325: "snowman",
55326: "snowplow",
55331: "snowshoe",
55332: "snowstorm",
55333: "snowsuit",
55334: "snowy",
55335: "snub",
55336: "snuff",
55341: "snuggle",
55342: "snugly",
55343: "snugness",
55344: "speak",
55345: "spearfish",
55346: "spearhead",
55351: "spearman",
55352: "spearmint",
55353: "species",
55354: "specimen",
55355: "specked",
55356: "speckled",
55361: "specks",
55362: "spectacle",
55363: "spectator",
55364: "spectrum",
55365: "speculate",
55366: "speech",
55411: "speed",
55412: "spellbind",
55413: "speller",
55414: "spelling",
55415: "spendable",
55416: "spender",
55421: "spending",
55422: "spent",
55423: "spew",
55424: "sphere",
55425: "spherical",
55426: "sphinx",
55431: "spider",
55432: "spied",
55433: "spiffy",
55434: "spill",
55435: "spilt",
55436: "spinach",
55441: "spinal",
55442: "spindle",
55443: "spinner",
55444: "spinning",
55445: "spinout",
55446: "spinster",
55451: "spiny",
55452: "spiral",
55453: "spirited",
55454: "spiritism",
55455: "spirits",
55456: "spiritual",
55461: "splashed",
55462: "splashing",
55463: "splashy",
55464: "splatter",
55465: "spleen",
55466: "splendid",
55511: "splendor",
55512: "splice",
55513: "splicing",
55514: "splinter",
55515: "splotchy",
55516: "splurge",
55521: "spoilage",
55522: "spoiled",
55523: "spoiler",
55524: "spoiling",
55525: "spoils",
55526: "spoken",
55531: "spokesman",
55532: "sponge",
55533: "spongy",
55534: "sponsor",
55535: "spoof",
55536: "spookily",
55541: "spooky",
55542: "spool",
55543: "spoon",
55544: "spore",
55545: "sporting",
55546: "sports",
55551: "sporty",
55552: "spotless",
55553: "spotlight",
55554: "spotted",
55555: "spotter",
55556: "spotting",
55561: "spotty",
55562: "spousal",
55563: "spouse",
55564: "spout",
55565: "sprain",
55566: "sprang",
55611: "sprawl",
55612: "spray",
55613: "spree",
55614: "sprig",
55615: "spring",
55616: "sprinkled",
55621: "sprinkler",
55622: "sprint",
55623: "sprite",
55624: "sprout",
55625: "spruce",
55626: "sprung",
55631: "spry",
55632: "spud",
55633: "spur",
55634: "sputter",
55635: "spyglass",
55636: "squabble",
55641: "squad",
55642: "squall",
55643: "squander",
55644: "squash",
55645: "squatted",
55646: "squatter",
55651: "squatting",
55652: "squeak",
55653: "squealer",
55654: "squealing",
55655: "squeamish",
55656: "squeegee",
55661: "squeeze",
55662: "squeezing",
55663: "squid",
55664: "squiggle",
55665: "squiggly",
55666: "squint",
56111: "squire",
56112: "squirt",
56113: "squishier",
56114: "squishy",
56115: "stability",
56116: "stabilize",
56121: "stable",
56122: "stack",
56123: "stadium",
56124: "staff",
56125: "stage",
56126: "staging",
56131: "stagnant",
56132: "stagnate",
56133: "stainable",
56134: "stained",
56135: "staining",
56136: "stainless",
56141: "stalemate",
56142: "staleness",
56143: "stalling",
56144: "stallion",
56145: "stamina",
56146: "stammer",
56151: "stamp",
56152: "stand",
56153: "stank",
56154: "staple",
56155: "stapling",
56156: "starboard",
56161: "starch",
56162: "stardom",
56163: "stardust",
56164: "starfish",
56165: "stargazer",
56166: "staring",
56211: "stark",
56212: "starless",
56213: "starlet",
56214: "starlight",
56215: "starlit",
56216: "starring",
56221: "starry",
56222: "starship",
56223: "starter",
56224: "starting",
56225: "startle",
56226: "startling",
56231: "startup",
56232: "starved",
56233: "starving",
56234: "stash",
56235: "state",
56236: "static",
56241: "statistic",
56242: "statue",
56243: "stature",
56244: "status",
56245: "statute",
56246: "statutory",
56251: "staunch",
56252: "stays",
56253: "steadfast",
56254: "steadier",
56255: "steadily",
56256: "steadying",
56261: "steam",
56262: "steed",
56263: "steep",
56264: "steerable",
56265: "steering",
56266: "steersman",
56311: "stegosaur",
56312: "stellar",
56313: "stem",
56314: "stench",
56315: "stencil",
56316: "step",
56321: "stereo",
56322: "sterile",
56323: "sterility",
56324: "sterilize",
56325: "sterling",
56326: "sternness",
56331: "sternum",
56332: "stew",
56333: "stick",
56334: "stiffen",
56335: "stiffly",
56336: "stiffness",
56341: "stifle",
56342: "stifling",
56343: "stillness",
56344: "stilt",
56345: "stimulant",
56346: "stimulate",
56351: "stimuli",
56352: "stimulus",
56353: "stinger",
56354: "stingily",
56355: "stinging",
56356: "stingray",
56361: "stingy",
56362: "stinking",
56363: "stinky",
56364: "stipend",
56365: "stipulate",
56366: "stir",
56411: "stitch",
56412: "stock",
56413: "stoic",
56414: "stoke",
56415: "stole",
56416: "stomp",
56421: "stonewall",
56422: "stoneware",
56423: "stonework",
56424: "stoning",
56425: "stony",
56426: "stood",
56431: "stooge",
56432: "stool",
56433: "stoop",
56434: "stoplight",
56435: "stoppable",
56436: "stoppage",
56441: "stopped",
56442: "stopper",
56443: "stopping",
56444: "stopwatch",
56445: "storable",
56446: "storage",
56451: "storeroom",
56452: "storewide",
56453: "storm",
56454: "stout",
56455: "stove",
56456: "stowaway",
56461: "stowing",
56462: "straddle",
56463: "straggler",
56464: "strained",
56465: "strainer",
56466: "straining",
56511: "strangely",
56512: "stranger",
56513: "strangle",
56514: "strategic",
56515: "strategy",
56516: "stratus",
56521: "straw",
56522: "stray",
56523: "streak",
56524: "stream",
56525: "street",
56526: "strength",
56531: "strenuous",
56532: "strep",
56533: "stress",
56534: "stretch",
56535: "strewn",
56536: "stricken",
56541: "strict",
56542: "stride",
56543: "strife",
56544: "strike",
56545: "striking",
56546: "strive",
56551: "striving",
56552: "strobe",
56553: "strode",
56554: "stroller",
56555: "strongbox",
56556: "strongly",
56561: "strongman",
56562: "struck",
56563: "structure",
56564: "strudel",
56565: "struggle",
56566: "strum",
56611: "strung",
56612: "strut",
56613: "stubbed",
56614: "stubble",
56615: "stubbly",
56616: "stubborn",
56621: "stucco",
56622: "stuck",
56623: "student",
56624: "studied",
56625: "studio",
56626: "study",
56631: "stuffed",
56632: "stuffing",
56633: "stuffy",
56634: "stumble",
56635: "stumbling",
56636: "stump",
56641: "stung",
56642: "stunned",
56643: "stunner",
56644: "stunning",
56645: "stunt",
56646: "stupor",
56651: "sturdily",
56652: "sturdy",
56653: "styling",
56654: "stylishly",
56655: "stylist",
56656: "stylized",
56661: "stylus",
56662: "suave",
56663: "subarctic",
56664: "subatomic",
56665: "subdivide",
56666: "subdued",
61111: "subduing",
61112: "subfloor",
61113: "subgroup",
61114: "subheader",
61115: "subject",
61116: "sublease",
61121: "sublet",
61122: "sublevel",
61123: "sublime",
61124: "submarine",
61125: "submerge",
61126: "submersed",
61131: "submitter",
61132: "subpanel",
61133: "subpar",
61134: "subplot",
61135: "subprime",
61136: "subscribe",
61141: "subscript",
61142: "subsector",
61143: "subside",
61144: "subsiding",
61145: "subsidize",
61146: "subsidy",
61151: "subsoil",
61152: "subsonic",
61153: "substance",
61154: "subsystem",
61155: "subtext",
61156: "subtitle",
61161: "subtly",
61162: "subtotal",
61163: "subtract",
61164: "subtype",
61165: "suburb",
61166: "subway",
61211: "subwoofer",
61212: "subzero",
61213: "succulent",
61214: "such",
61215: "suction",
61216: "sudden",
61221: "sudoku",
61222: "suds",
61223: "sufferer",
61224: "suffering",
61225: "suffice",
61226: "suffix",
61231: "suffocate",
61232: "suffrage",
61233: "sugar",
61234: "suggest",
61235: "suing",
61236: "suitable",
61241: "suitably",
61242: "suitcase",
61243: "suitor",
61244: "sulfate",
61245: "sulfide",
61246: "sulfite",
61251: "sulfur",
61252: "sulk",
61253: "sullen",
61254: "sulphate",
61255: "sulphuric",
61256: "sultry",
61261: "superbowl",
61262: "superglue",
61263: "superhero",
61264: "superior",
61265: "superjet",
61266: "superman",
61311: "supermom",
61312: "supernova",
61313: "supervise",
61314: "supper",
61315: "supplier",
61316: "supply",
61321: "support",
61322: "supremacy",
61323: "supreme",
61324: "surcharge",
61325: "surely",
61326: "sureness",
61331: "surface",
61332: "surfacing",
61333: "surfboard",
61334: "surfer",
61335: "surgery",
61336: "surgical",
61341: "surging",
61342: "surname",
61343: "surpass",
61344: "surplus",
61345: "surprise",
61346: "surreal",
61351: "surrender",
61352: "surrogate",
61353: "surround",
61354: "survey",
61355: "survival",
61356: "survive",
61361: "surviving",
61362: "survivor",
61363: "sushi",
61364: "suspect",
61365: "suspend",
61366: "suspense",
61411: "sustained",
61412: "sustainer",
61413: "swab",
61414: "swaddling",
61415: "swagger",
61416: "swampland",
61421: "swan",
61422: "swapping",
61423: "swarm",
61424: "sway",
61425: "swear",
61426: "sweat",
61431: "sweep",
61432: "swell",
61433: "swept",
61434: "swerve",
61435: "swifter",
61436: "swiftly",
61441: "swiftness",
61442: "swimmable",
61443: "swimmer",
61444: "swimming",
61445: "swimsuit",
61446: "swimwear",
61451: "swinger",
61452: "swinging",
61453: "swipe",
61454: "swirl",
61455: "switch",
61456: "swivel",
61461: "swizzle",
61462: "swooned",
61463: "swoop",
61464: "swoosh",
61465: "swore",
61466: "sworn",
61511: "swung",
61512: "sycamore",
61513: "sympathy",
61514: "symphonic",
61515: "symphony",
61516: "symptom",
61521: "synapse",
61522: "syndrome",
61523: "synergy",
61524: "synopses",
61525: "synopsis",
61526: "synthesis",
61531: "synthetic",
61532: "syrup",
61533: "system",
61534: "t-shirt",
61535: "tabasco",
61536: "tabby",
61541: "tableful",
61542: "tables",
61543: "tablet",
61544: "tableware",
61545: "tabloid",
61546: "tackiness",
61551: "tacking",
61552: "tackle",
61553: "tackling",
61554: "tacky",
61555: "taco",
61556: "tactful",
61561: "tactical",
61562: "tactics",
61563: "tactile",
61564: "tactless",
61565: "tadpole",
61566: "taekwondo",
61611: "tag",
61612: "tainted",
61613: "take",
61614: "taking",
61615: "talcum",
61616: "talisman",
61621: "tall",
61622: "talon",
61623: "tamale",
61624: "tameness",
61625: "tamer",
61626: "tamper",
61631: "tank",
61632: "tanned",
61633: "tannery",
61634: "tanning",
61635: "tantrum",
61636: "tapeless",
61641: "tapered",
61642: "tapering",
61643: "tapestry",
61644: "tapioca",
61645: "tapping",
61646: "taps",
61651: "tarantula",
61652: "target",
61653: "tarmac",
61654: "tarnish",
61655: "tarot",
61656: "tartar",
61661: "tartly",
61662: "tartness",
61663: "task",
61664: "tassel",
61665: "taste",
61666: "tastiness",
62111: "tasting",
62112: "tasty",
62113: "tattered",
62114: "tattle",
62115: "tattling",
62116: "tattoo",
62121: "taunt",
62122: "tavern",
62123: "thank",
62124: "that",
62125: "thaw",
62126: "theater",
62131: "theatrics",
62132: "thee",
62133: "theft",
62134: "theme",
62135: "theology",
62136: "theorize",
62141: "thermal",
62142: "thermos",
62143: "thesaurus",
62144: "these",
62145: "thesis",
62146: "thespian",
62151: "thicken",
62152: "thicket",
62153: "thickness",
62154: "thieving",
62155: "thievish",
62156: "thigh",
62161: "thimble",
62162: "thing",
62163: "think",
62164: "thinly",
62165: "thinner",
62166: "thinness",
62211: "thinning",
62212: "thirstily",
62213: "thirsting",
62214: "thirsty",
62215: "thirteen",
62216: "thirty",
62221: "thong",
62222: "thorn",
62223: "those",
62224: "thousand",
62225: "thrash",
62226: "thread",
62231: "threaten",
62232: "threefold",
62233: "thrift",
62234: "thrill",
62235: "thrive",
62236: "thriving",
62241: "throat",
62242: "throbbing",
62243: "throng",
62244: "throttle",
62245: "throwaway",
62246: "throwback",
62251: "thrower",
62252: "throwing",
62253: "thud",
62254: "thumb",
62255: "thumping",
62256: "thursday",
62261: "thus",
62262: "thwarting",
62263: "thyself",
62264: "tiara",
62265: "tibia",
62266: "tidal",
62311: "tidbit",
62312: "tidiness",
62313: "tidings",
62314: "tidy",
62315: "tiger",
62316: "tighten",
62321: "tightly",
62322: "tightness",
62323: "tightrope",
62324: "tightwad",
62325: "tigress",
62326: "tile",
62331: "tiling",
62332: "till",
62333: "tilt",
62334: "timid",
62335: "timing",
62336: "timothy",
62341: "tinderbox",
62342: "tinfoil",
62343: "tingle",
62344: "tingling",
62345: "tingly",
62346: "tinker",
62351: "tinkling",
62352: "tinsel",
62353: "tinsmith",
62354: "tint",
62355: "tinwork",
62356: "tiny",
62361: "tipoff",
62362: "tipped",
62363: "tipper",
62364: "tipping",
62365: "tiptoeing",
62366: "tiptop",
62411: "tiring",
62412: "tissue",
62413: "trace",
62414: "tracing",
62415: "track",
62416: "traction",
62421: "tractor",
62422: "trade",
62423: "trading",
62424: "tradition",
62425: "traffic",
62426: "tragedy",
62431: "trailing",
62432: "trailside",
62433: "train",
62434: "traitor",
62435: "trance",
62436: "tranquil",
62441: "transfer",
62442: "transform",
62443: "translate",
62444: "transpire",
62445: "transport",
62446: "transpose",
62451: "trapdoor",
62452: "trapeze",
62453: "trapezoid",
62454: "trapped",
62455: "trapper",
62456: "trapping",
62461: "traps",
62462: "trash",
62463: "travel",
62464: "traverse",
62465: "travesty",
62466: "tray",
62511: "treachery",
62512: "treading",
62513: "treadmill",
62514: "treason",
62515: "treat",
62516: "treble",
62521: "tree",
62522: "trekker",
62523: "tremble",
62524: "trembling",
62525: "tremor",
62526: "trench",
62531: "trend",
62532: "trespass",
62533: "triage",
62534: "trial",
62535: "triangle",
62536: "tribesman",
62541: "tribunal",
62542: "tribune",
62543: "tributary",
62544: "tribute",
62545: "triceps",
62546: "trickery",
62551: "trickily",
62552: "tricking",
62553: "trickle",
62554: "trickster",
62555: "tricky",
62556: "tricolor",
62561: "tricycle",
62562: "trident",
62563: "tried",
62564: "trifle",
62565: "trifocals",
62566: "trillion",
62611: "trilogy",
62612: "trimester",
62613: "trimmer",
62614: "trimming",
62615: "trimness",
62616: "trinity",
62621: "trio",
62622: "tripod",
62623: "tripping",
62624: "triumph",
62625: "trivial",
62626: "trodden",
62631: "trolling",
62632: "trombone",
62633: "trophy",
62634: "tropical",
62635: "tropics",
62636: "trouble",
62641: "troubling",
62642: "trough",
62643: "trousers",
62644: "trout",
62645: "trowel",
62646: "truce",
62651: "truck",
62652: "truffle",
62653: "trump",
62654: "trunks",
62655: "trustable",
62656: "trustee",
62661: "trustful",
62662: "trusting",
62663: "trustless",
62664: "truth",
62665: "try",
62666: "tubby",
63111: "tubeless",
63112: "tubular",
63113: "tucking",
63114: "tuesday",
63115: "tug",
63116: "tuition",
63121: "tulip",
63122: "tumble",
63123: "tumbling",
63124: "tummy",
63125: "turban",
63126: "turbine",
63131: "turbofan",
63132: "turbojet",
63133: "turbulent",
63134: "turf",
63135: "turkey",
63136: "turmoil",
63141: "turret",
63142: "turtle",
63143: "tusk",
63144: "tutor",
63145: "tutu",
63146: "tux",
63151: "tweak",
63152: "tweed",
63153: "tweet",
63154: "tweezers",
63155: "twelve",
63156: "twentieth",
63161: "twenty",
63162: "twerp",
63163: "twice",
63164: "twiddle",
63165: "twiddling",
63166: "twig",
63211: "twilight",
63212: "twine",
63213: "twins",
63214: "twirl",
63215: "twistable",
63216: "twisted",
63221: "twister",
63222: "twisting",
63223: "twisty",
63224: "twitch",
63225: "twitter",
63226: "tycoon",
63231: "tying",
63232: "tyke",
63233: "udder",
63234: "ultimate",
63235: "ultimatum",
63236: "ultra",
63241: "umbilical",
63242: "umbrella",
63243: "umpire",
63244: "unabashed",
63245: "unable",
63246: "unadorned",
63251: "unadvised",
63252: "unafraid",
63253: "unaired",
63254: "unaligned",
63255: "unaltered",
63256: "unarmored",
63261: "unashamed",
63262: "unaudited",
63263: "unawake",
63264: "unaware",
63265: "unbaked",
63266: "unbalance",
63311: "unbeaten",
63312: "unbend",
63313: "unbent",
63314: "unbiased",
63315: "unbitten",
63316: "unblended",
63321: "unblessed",
63322: "unblock",
63323: "unbolted",
63324: "unbounded",
63325: "unboxed",
63326: "unbraided",
63331: "unbridle",
63332: "unbroken",
63333: "unbuckled",
63334: "unbundle",
63335: "unburned",
63336: "unbutton",
63341: "uncanny",
63342: "uncapped",
63343: "uncaring",
63344: "uncertain",
63345: "unchain",
63346: "unchanged",
63351: "uncharted",
63352: "uncheck",
63353: "uncivil",
63354: "unclad",
63355: "unclaimed",
63356: "unclamped",
63361: "unclasp",
63362: "uncle",
63363: "unclip",
63364: "uncloak",
63365: "unclog",
63366: "unclothed",
63411: "uncoated",
63412: "uncoiled",
63413: "uncolored",
63414: "uncombed",
63415: "uncommon",
63416: "uncooked",
63421: "uncork",
63422: "uncorrupt",
63423: "uncounted",
63424: "uncouple",
63425: "uncouth",
63426: "uncover",
63431: "uncross",
63432: "uncrown",
63433: "uncrushed",
63434: "uncured",
63435: "uncurious",
63436: "uncurled",
63441: "uncut",
63442: "undamaged",
63443: "undated",
63444: "undaunted",
63445: "undead",
63446: "undecided",
63451: "undefined",
63452: "underage",
63453: "underarm",
63454: "undercoat",
63455: "undercook",
63456: "undercut",
63461: "underdog",
63462: "underdone",
63463: "underfed",
63464: "underfeed",
63465: "underfoot",
63466: "undergo",
63511: "undergrad",
63512: "underhand",
63513: "underline",
63514: "underling",
63515: "undermine",
63516: "undermost",
63521: "underpaid",
63522: "underpass",
63523: "underpay",
63524: "underrate",
63525: "undertake",
63526: "undertone",
63531: "undertook",
63532: "undertow",
63533: "underuse",
63534: "underwear",
63535: "underwent",
63536: "underwire",
63541: "undesired",
63542: "undiluted",
63543: "undivided",
63544: "undocked",
63545: "undoing",
63546: "undone",
63551: "undrafted",
63552: "undress",
63553: "undrilled",
63554: "undusted",
63555: "undying",
63556: "unearned",
63561: "unearth",
63562: "unease",
63563: "uneasily",
63564: "uneasy",
63565: "uneatable",
63566: "uneaten",
63611: "unedited",
63612: "unelected",
63613: "unending",
63614: "unengaged",
63615: "unenvied",
63616: "unequal",
63621: "unethical",
63622: "uneven",
63623: "unexpired",
63624: "unexposed",
63625: "unfailing",
63626: "unfair",
63631: "unfasten",
63632: "unfazed",
63633: "unfeeling",
63634: "unfiled",
63635: "unfilled",
63636: "unfitted",
63641: "unfitting",
63642: "unfixable",
63643: "unfixed",
63644: "unflawed",
63645: "unfocused",
63646: "unfold",
63651: "unfounded",
63652: "unframed",
63653: "unfreeze",
63654: "unfrosted",
63655: "unfrozen",
63656: "unfunded",
63661: "unglazed",
63662: "ungloved",
63663: "unglue",
63664: "ungodly",
63665: "ungraded",
63666: "ungreased",
64111: "unguarded",
64112: "unguided",
64113: "unhappily",
64114: "unhappy",
64115: "unharmed",
64116: "unhealthy",
64121: "unheard",
64122: "unhearing",
64123: "unheated",
64124: "unhelpful",
64125: "unhidden",
64126: "unhinge",
64131: "unhitched",
64132: "unholy",
64133: "unhook",
64134: "unicorn",
64135: "unicycle",
64136: "unified",
64141: "unifier",
64142: "uniformed",
64143: "uniformly",
64144: "unify",
64145: "unimpeded",
64146: "uninjured",
64151: "uninstall",
64152: "uninsured",
64153: "uninvited",
64154: "union",
64155: "uniquely",
64156: "unisexual",
64161: "unison",
64162: "unissued",
64163: "unit",
64164: "universal",
64165: "universe",
64166: "unjustly",
64211: "unkempt",
64212: "unkind",
64213: "unknotted",
64214: "unknowing",
64215: "unknown",
64216: "unlaced",
64221: "unlatch",
64222: "unlawful",
64223: "unleaded",
64224: "unlearned",
64225: "unleash",
64226: "unless",
64231: "unleveled",
64232: "unlighted",
64233: "unlikable",
64234: "unlimited",
64235: "unlined",
64236: "unlinked",
64241: "unlisted",
64242: "unlit",
64243: "unlivable",
64244: "unloaded",
64245: "unloader",
64246: "unlocked",
64251: "unlocking",
64252: "unlovable",
64253: "unloved",
64254: "unlovely",
64255: "unloving",
64256: "unluckily",
64261: "unlucky",
64262: "unmade",
64263: "unmanaged",
64264: "unmanned",
64265: "unmapped",
64266: "unmarked",
64311: "unmasked",
64312: "unmasking",
64313: "unmatched",
64314: "unmindful",
64315: "unmixable",
64316: "unmixed",
64321: "unmolded",
64322: "unmoral",
64323: "unmovable",
64324: "unmoved",
64325: "unmoving",
64326: "unnamable",
64331: "unnamed",
64332: "unnatural",
64333: "unneeded",
64334: "unnerve",
64335: "unnerving",
64336: "unnoticed",
64341: "unopened",
64342: "unopposed",
64343: "unpack",
64344: "unpadded",
64345: "unpaid",
64346: "unpainted",
64351: "unpaired",
64352: "unpaved",
64353: "unpeeled",
64354: "unpicked",
64355: "unpiloted",
64356: "unpinned",
64361: "unplanned",
64362: "unplanted",
64363: "unpleased",
64364: "unpledged",
64365: "unplowed",
64366: "unplug",
64411: "unpopular",
64412: "unproven",
64413: "unquote",
64414: "unranked",
64415: "unrated",
64416: "unraveled",
64421: "unreached",
64422: "unread",
64423: "unreal",
64424: "unreeling",
64425: "unrefined",
64426: "unrelated",
64431: "unrented",
64432: "unrest",
64433: "unretired",
64434: "unrevised",
64435: "unrigged",
64436: "unripe",
64441: "unrivaled",
64442: "unroasted",
64443: "unrobed",
64444: "unroll",
64445: "unruffled",
64446: "unruly",
64451: "unrushed",
64452: "unsaddle",
64453: "unsafe",
64454: "unsaid",
64455: "unsalted",
64456: "unsaved",
64461: "unsavory",
64462: "unscathed",
64463: "unscented",
64464: "unscrew",
64465: "unsealed",
64466: "unseated",
64511: "unsecured",
64512: "unseeing",
64513: "unseemly",
64514: "unseen",
64515: "unselect",
64516: "unselfish",
64521: "unsent",
64522: "unsettled",
64523: "unshackle",
64524: "unshaken",
64525: "unshaved",
64526: "unshaven",
64531: "unsheathe",
64532: "unshipped",
64533: "unsightly",
64534: "unsigned",
64535: "unskilled",
64536: "unsliced",
64541: "unsmooth",
64542: "unsnap",
64543: "unsocial",
64544: "unsoiled",
64545: "unsold",
64546: "unsolved",
64551: "unsorted",
64552: "unspoiled",
64553: "unspoken",
64554: "unstable",
64555: "unstaffed",
64556: "unstamped",
64561: "unsteady",
64562: "unsterile",
64563: "unstirred",
64564: "unstitch",
64565: "unstopped",
64566: "unstuck",
64611: "unstuffed",
64612: "unstylish",
64613: "unsubtle",
64614: "unsubtly",
64615: "unsuited",
64616: "unsure",
64621: "unsworn",
64622: "untagged",
64623: "untainted",
64624: "untaken",
64625: "untamed",
64626: "untangled",
64631: "untapped",
64632: "untaxed",
64633: "unthawed",
64634: "unthread",
64635: "untidy",
64636: "untie",
64641: "until",
64642: "untimed",
64643: "untimely",
64644: "untitled",
64645: "untoasted",
64646: "untold",
64651: "untouched",
64652: "untracked",
64653: "untrained",
64654: "untreated",
64655: "untried",
64656: "untrimmed",
64661: "untrue",
64662: "untruth",
64663: "unturned",
64664: "untwist",
64665: "untying",
64666: "unusable",
65111: "unused",
65112: "unusual",
65113: "unvalued",
65114: "unvaried",
65115: "unvarying",
65116: "unveiled",
65121: "unveiling",
65122: "unvented",
65123: "unviable",
65124: "unvisited",
65125: "unvocal",
65126: "unwanted",
65131: "unwarlike",
65132: "unwary",
65133: "unwashed",
65134: "unwatched",
65135: "unweave",
65136: "unwed",
65141: "unwelcome",
65142: "unwell",
65143: "unwieldy",
65144: "unwilling",
65145: "unwind",
65146: "unwired",
65151: "unwitting",
65152: "unwomanly",
65153: "unworldly",
65154: "unworn",
65155: "unworried",
65156: "unworthy",
65161: "unwound",
65162: "unwoven",
65163: "unwrapped",
65164: "unwritten",
65165: "unzip",
65166: "upbeat",
65211: "upchuck",
65212: "upcoming",
65213: "upcountry",
65214: "update",
65215: "upfront",
65216: "upgrade",
65221: "upheaval",
65222: "upheld",
65223: "uphill",
65224: "uphold",
65225: "uplifted",
65226: "uplifting",
65231: "upload",
65232: "upon",
65233: "upper",
65234: "upright",
65235: "uprising",
65236: "upriver",
65241: "uproar",
65242: "uproot",
65243: "upscale",
65244: "upside",
65245: "upstage",
65246: "upstairs",
65251: "upstart",
65252: "upstate",
65253: "upstream",
65254: "upstroke",
65255: "upswing",
65256: "uptake",
65261: "uptight",
65262: "uptown",
65263: "upturned",
65264: "upward",
65265: "upwind",
65266: "uranium",
65311: "urban",
65312: "urchin",
65313: "urethane",
65314: "urgency",
65315: "urgent",
65316: "urging",
65321: "urologist",
65322: "urology",
65323: "usable",
65324: "usage",
65325: "useable",
65326: "used",
65331: "uselessly",
65332: "user",
65333: "usher",
65334: "usual",
65335: "utensil",
65336: "utility",
65341: "utilize",
65342: "utmost",
65343: "utopia",
65344: "utter",
65345: "vacancy",
65346: "vacant",
65351: "vacate",
65352: "vacation",
65353: "vagabond",
65354: "vagrancy",
65355: "vagrantly",
65356: "vaguely",
65361: "vagueness",
65362: "valiant",
65363: "valid",
65364: "valium",
65365: "valley",
65366: "valuables",
65411: "value",
65412: "vanilla",
65413: "vanish",
65414: "vanity",
65415: "vanquish",
65416: "vantage",
65421: "vaporizer",
65422: "variable",
65423: "variably",
65424: "varied",
65425: "variety",
65426: "various",
65431: "varmint",
65432: "varnish",
65433: "varsity",
65434: "varying",
65435: "vascular",
65436: "vaseline",
65441: "vastly",
65442: "vastness",
65443: "veal",
65444: "vegan",
65445: "veggie",
65446: "vehicular",
65451: "velcro",
65452: "velocity",
65453: "velvet",
65454: "vendetta",
65455: "vending",
65456: "vendor",
65461: "veneering",
65462: "vengeful",
65463: "venomous",
65464: "ventricle",
65465: "venture",
65466: "venue",
65511: "venus",
65512: "verbalize",
65513: "verbally",
65514: "verbose",
65515: "verdict",
65516: "verify",
65521: "verse",
65522: "version",
65523: "versus",
65524: "vertebrae",
65525: "vertical",
65526: "vertigo",
65531: "very",
65532: "vessel",
65533: "vest",
65534: "veteran",
65535: "veto",
65536: "vexingly",
65541: "viability",
65542: "viable",
65543: "vibes",
65544: "vice",
65545: "vicinity",
65546: "victory",
65551: "video",
65552: "viewable",
65553: "viewer",
65554: "viewing",
65555: "viewless",
65556: "viewpoint",
65561: "vigorous",
65562: "village",
65563: "villain",
65564: "vindicate",
65565: "vineyard",
65566: "vintage",
65611: "violate",
65612: "violation",
65613: "violator",
65614: "violet",
65615: "violin",
65616: "viper",
65621: "viral",
65622: "virtual",
65623: "virtuous",
65624: "virus",
65625: "visa",
65626: "viscosity",
65631: "viscous",
65632: "viselike",
65633: "visible",
65634: "visibly",
65635: "vision",
65636: "visiting",
65641: "visitor",
65642: "visor",
65643: "vista",
65644: "vitality",
65645: "vitalize",
65646: "vitally",
65651: "vitamins",
65652: "vivacious",
65653: "vividly",
65654: "vividness",
65655: "vixen",
65656: "vocalist",
65661: "vocalize",
65662: "vocally",
65663: "vocation",
65664: "voice",
65665: "voicing",
65666: "void",
66111: "volatile",
66112: "volley",
66113: "voltage",
66114: "volumes",
66115: "voter",
66116: "voting",
66121: "voucher",
66122: "vowed",
66123: "vowel",
66124: "voyage",
66125: "wackiness",
66126: "wad",
66131: "wafer",
66132: "waffle",
66133: "waged",
66134: "wager",
66135: "wages",
66136: "waggle",
66141: "wagon",
66142: "wake",
66143: "waking",
66144: "walk",
66145: "walmart",
66146: "walnut",
66151: "walrus",
66152: "waltz",
66153: "wand",
66154: "wannabe",
66155: "wanted",
66156: "wanting",
66161: "wasabi",
66162: "washable",
66163: "washbasin",
66164: "washboard",
66165: "washbowl",
66166: "washcloth",
66211: "washday",
66212: "washed",
66213: "washer",
66214: "washhouse",
66215: "washing",
66216: "washout",
66221: "washroom",
66222: "washstand",
66223: "washtub",
66224: "wasp",
66225: "wasting",
66226: "watch",
66231: "water",
66232: "waviness",
66233: "waving",
66234: "wavy",
66235: "whacking",
66236: "whacky",
66241: "wham",
66242: "wharf",
66243: "wheat",
66244: "whenever",
66245: "whiff",
66246: "whimsical",
66251: "whinny",
66252: "whiny",
66253: "whisking",
66254: "whoever",
66255: "whole",
66256: "whomever",
66261: "whoopee",
66262: "whooping",
66263: "whoops",
66264: "why",
66265: "wick",
66266: "widely",
66311: "widen",
66312: "widget",
66313: "widow",
66314: "width",
66315: "wieldable",
66316: "wielder",
66321: "wife",
66322: "wifi",
66323: "wikipedia",
66324: "wildcard",
66325: "wildcat",
66326: "wilder",
66331: "wildfire",
66332: "wildfowl",
66333: "wildland",
66334: "wildlife",
66335: "wildly",
66336: "wildness",
66341: "willed",
66342: "willfully",
66343: "willing",
66344: "willow",
66345: "willpower",
66346: "wilt",
66351: "wimp",
66352: "wince",
66353: "wincing",
66354: "wind",
66355: "wing",
66356: "winking",
66361: "winner",
66362: "winnings",
66363: "winter",
66364: "wipe",
66365: "wired",
66366: "wireless",
66411: "wiring",
66412: "wiry",
66413: "wisdom",
66414: "wise",
66415: "wish",
66416: "wisplike",
66421: "wispy",
66422: "wistful",
66423: "wizard",
66424: "wobble",
66425: "wobbling",
66426: "wobbly",
66431: "wok",
66432: "wolf",
66433: "wolverine",
66434: "womanhood",
66435: "womankind",
66436: "womanless",
66441: "womanlike",
66442: "womanly",
66443: "womb",
66444: "woof",
66445: "wooing",
66446: "wool",
66451: "woozy",
66452: "word",
66453: "work",
66454: "worried",
66455: "worrier",
66456: "worrisome",
66461: "worry",
66462: "worsening",
66463: "worshiper",
66464: "worst",
66465: "wound",
66466: "woven",
66511: "wow",
66512: "wrangle",
66513: "wrath",
66514: "wreath",
66515: "wreckage",
66516: "wrecker",
66521: "wrecking",
66522: "wrench",
66523: "wriggle",
66524: "wriggly",
66525: "wrinkle",
66526: "wrinkly",
66531: "wrist",
66532: "writing",
66533: "written",
66534: "wrongdoer",
66535: "wronged",
66536: "wrongful",
66541: "wrongly",
66542: "wrongness",
66543: "wrought",
66544: "xbox",
66545: "xerox",
66546: "yahoo",
66551: "yam",
66552: "yanking",
66553: "yapping",
66554: "yard",
66555: "yarn",
66556: "yeah",
66561: "yearbook",
66562: "yearling",
66563: "yearly",
66564: "yearning",
66565: "yeast",
66566: "yelling",
66611: "yelp",
66612: "yen",
66613: "yesterday",
66614: "yiddish",
66615: "yield",
66616: "yin",
66621: "yippee",
66622: "yo-yo",
66623: "yodel",
66624: "yoga",
66625: "yogurt",
66626: "yonder",
66631: "yoyo",
66632: "yummy",
66633: "zap",
66634: "zealous",
66635: "zebra",
66636: "zen",
66641: "zeppelin",
66642: "zero",
66643: "zestfully",
66644: "zesty",
66645: "zigzagged",
66646: "zipfile",
66651: "zipping",
66652: "zippy",
66653: "zips",
66654: "zit",
66655: "zodiac",
66656: "zombie",
66661: "zone",
66662: "zoning",
66663: "zookeeper",
66664: "zoologist",
66665: "zoology",
66666: "zoom"
}), yt;
}
var Dn = xn();
const sr = /* @__PURE__ */ Kr(Dn), tt = Object.keys(sr).sort().map((e) => sr[e]);
if (tt.length !== 7776)
throw new Error(`EFF long wordlist must contain 7776 entries, found ${tt.length}.`);
function b1() {
return tt;
}
const w1 = Math.log2(tt.length);
function Sn() {
const e = globalThis.crypto;
if (!e || typeof e.getRandomValues != "function")
throw new Error("No cryptographically secure random source available in this environment.");
return e;
}
function qe(e) {
const t = new Uint8Array(e);
return Sn().getRandomValues(t), t;
}
function C1() {
return qe(16);
}
function k1() {
return qe(12);
}
function v1() {
return qe(16);
}
function B1(e) {
if (!Number.isInteger(e) || e <= 0 || e > 4294967296)
throw new Error("randomUniformInt: maxExclusive must be an integer in (0, 2^32].");
const t = e <= 256 ? 1 : e <= 65536 ? 2 : 4, n = 256 ** t, r = n - n % e;
for (; ; ) {
const i = qe(t);
let a = 0;
for (const o of i)
a = a * 256 + o;
if (a < r)
return a % e;
}
}
const ve = typeof globalThis == "object" && "crypto" in globalThis ? globalThis.crypto : void 0;
/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
function At(e) {
return e instanceof Uint8Array || ArrayBuffer.isView(e) && e.constructor.name === "Uint8Array";
}
function rt(e) {
if (!Number.isSafeInteger(e) || e < 0)
throw new Error("positive integer expected, got " + e);
}
function pe(e, ...t) {
if (!At(e))
throw new Error("Uint8Array expected");
if (t.length > 0 && !t.includes(e.length))
throw new Error("Uint8Array expected of length " + t + ", got length=" + e.length);
}
function ht(e) {
if (typeof e != "function" || typeof e.create != "function")
throw new Error("Hash should be wrapped by utils.createHasher");
rt(e.outputLen), rt(e.blockLen);
}
function nt(e, t = !0) {
if (e.destroyed)
throw new Error("Hash instance has been destroyed");
if (t && e.finished)
throw new Error("Hash#digest() has already been called");
}
function Fn(e, t) {
pe(e);
const n = t.outputLen;
if (e.length < n)
throw new Error("digestInto() expects output buffer of length at least " + n);
}
function Ce(...e) {
for (let t = 0; t < e.length; t++)
e[t].fill(0);
}
function bt(e) {
return new DataView(e.buffer, e.byteOffset, e.byteLength);
}
function re(e, t) {
return e << 32 - t | e >>> t;
}
const Or = /* @ts-ignore */ typeof Uint8Array.from([]).toHex == "function" && typeof Uint8Array.fromHex == "function", Un = /* @__PURE__ */ Array.from({ length: 256 }, (e, t) => t.toString(16).padStart(2, "0"));
function Ee(e) {
if (pe(e), Or)
return e.toHex();
let t = "";
for (let n = 0; n < e.length; n++)
t += Un[e[n]];
return t;
}
const ie = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 };
function lr(e) {
if (e >= ie._0 && e <= ie._9)
return e - ie._0;
if (e >= ie.A && e <= ie.F)
return e - (ie.A - 10);
if (e >= ie.a && e <= ie.f)
return e - (ie.a - 10);
}
function it(e) {
if (typeof e != "string")
throw new Error("hex string expected, got " + typeof e);
if (Or)
return Uint8Array.fromHex(e);
const t = e.length, n = t / 2;
if (t % 2)
throw new Error("hex string expected, got unpadded hex of length " + t);
const r = new Uint8Array(n);
for (let i = 0, a = 0; i < n; i++, a += 2) {
const o = lr(e.charCodeAt(a)), s = lr(e.charCodeAt(a + 1));
if (o === void 0 || s === void 0) {
const l = e[a] + e[a + 1];
throw new Error('hex string expected, got non-hex character "' + l + '" at index ' + a);
}
r[i] = o * 16 + s;
}
return r;
}
const Gn = async () => {
};
async function Q1(e, t, n) {
let r = Date.now();
for (let i = 0; i < e; i++) {
n(i);
const a = Date.now() - r;
a >= 0 && a < t || (await Gn(), r += a);
}
}
function qt(e) {
if (typeof e != "string")
throw new Error("string expected");
return new Uint8Array(new TextEncoder().encode(e));
}
function Me(e) {
return typeof e == "string" && (e = qt(e)), pe(e), e;
}
function E1(e) {
return typeof e == "string" && (e = qt(e)), pe(e), e;
}
function ne(...e) {
let t = 0;
for (let r = 0; r < e.length; r++) {
const i = e[r];
pe(i), t += i.length;
}
const n = new Uint8Array(t);
for (let r = 0, i = 0; r < e.length; r++) {
const a = e[r];
n.set(a, i), i += a.length;
}
return n;
}
function x1(e, t) {
if (t !== void 0 && {}.toString.call(t) !== "[object Object]")
throw new Error("options should be object or undefined");
return Object.assign(e, t);
}
class Vr {
}
function zr(e) {
const t = (r) => e().update(Me(r)).digest(), n = e();
return t.outputLen = n.outputLen, t.blockLen = n.blockLen, t.create = () => e(), t;
}
function ft(e = 32) {
if (ve && typeof ve.getRandomValues == "function")
return ve.getRandomValues(new Uint8Array(e));
if (ve && typeof ve.randomBytes == "function")
return Uint8Array.from(ve.randomBytes(e));
throw new Error("crypto.getRandomValues must be defined");
}
function Hn(e, t, n, r) {
if (typeof e.setBigUint64 == "function")
return e.setBigUint64(t, n, r);
const i = BigInt(32), a = BigInt(4294967295), o = Number(n >> i & a), s = Number(n & a), l = r ? 4 : 0, u = r ? 0 : 4;
e.setUint32(t + l, o, r), e.setUint32(t + u, s, r);
}
function Nn(e, t, n) {
return e & t ^ ~e & n;
}
function Kn(e, t, n) {
return e & t ^ e & n ^ t & n;
}
class Jr extends Vr {
constructor(t, n, r, i) {
super(), this.finished = !1, this.length = 0, this.pos = 0, this.destroyed = !1, this.blockLen = t, this.outputLen = n, this.padOffset = r, this.isLE = i, this.buffer = new Uint8Array(t), this.view = bt(this.buffer);
}
update(t) {
nt(this), t = Me(t), pe(t);
const { view: n, buffer: r, blockLen: i } = this, a = t.length;
for (let o = 0; o < a; ) {
const s = Math.min(i - this.pos, a - o);
if (s === i) {
const l = bt(t);
for (; i <= a - o; o += i)
this.process(l, o);
continue;
}
r.set(t.subarray(o, o + s), this.pos), this.pos += s, o += s, this.pos === i && (this.process(n, 0), this.pos = 0);
}
return this.length += t.length, this.roundClean(), this;
}
digestInto(t) {
nt(this), Fn(t, this), this.finished = !0;
const { buffer: n, view: r, blockLen: i, isLE: a } = this;
let { pos: o } = this;
n[o++] = 128, Ce(this.buffer.subarray(o)), this.padOffset > i - o && (this.process(r, 0), o = 0);
for (let g = o; g < i; g++)
n[g] = 0;
Hn(r, i - 8, BigInt(this.length * 8), a), this.process(r, 0);
const s = bt(t), l = this.outputLen;
if (l % 4)
throw new Error("_sha2: outputLen should be aligned to 32bit");
const u = l / 4, h = this.get();
if (u > h.length)
throw new Error("_sha2: outputLen bigger than state");
for (let g = 0; g < u; g++)
s.setUint32(4 * g, h[g], a);
}
digest() {
const { buffer: t, outputLen: n } = this;
this.digestInto(t);
const r = t.slice(0, n);
return this.destroy(), r;
}
_cloneInto(t) {
t || (t = new this.constructor()), t.set(...this.get());
const { blockLen: n, buffer: r, length: i, finished: a, destroyed: o, pos: s } = this;
return t.destroyed = o, t.finished = a, t.length = i, t.pos = s, i % n && t.buffer.set(r), t;
}
clone() {
return this._cloneInto();
}
}
const de = /* @__PURE__ */ Uint32Array.from([
1779033703,
3144134277,
1013904242,
2773480762,
1359893119,
2600822924,
528734635,
1541459225
]), _ = /* @__PURE__ */ Uint32Array.from([
1779033703,
4089235720,
3144134277,
2227873595,
1013904242,
4271175723,
2773480762,
1595750129,
1359893119,
2917565137,
2600822924,
725511199,
528734635,
4215389547,
1541459225,
327033209
]), Pe = /* @__PURE__ */ BigInt(2 ** 32 - 1), cr = /* @__PURE__ */ BigInt(32);
function On(e, t = !1) {
return t ? { h: Number(e & Pe), l: Number(e >> cr & Pe) } : { h: Number(e >> cr & Pe) | 0, l: Number(e & Pe) | 0 };
}
function Vn(e, t = !1) {
const n = e.length;
let r = new Uint32Array(n), i = new Uint32Array(n);
for (let a = 0; a < n; a++) {
const { h: o, l: s } = On(e[a], t);
[r[a], i[a]] = [o, s];
}
return [r, i];
}
const ur = (e, t, n) => e >>> n, dr = (e, t, n) => e << 32 - n | t >>> n, Be = (e, t, n) => e >>> n | t << 32 - n, Qe = (e, t, n) => e << 32 - n | t >>> n, Le = (e, t, n) => e << 64 - n | t >>> n - 32, Te = (e, t, n) => e >>> n - 32 | t << 64 - n;
function ae(e, t, n, r) {
const i = (t >>> 0) + (r >>> 0);
return { h: e + n + (i / 2 ** 32 | 0) | 0, l: i | 0 };
}
const zn = (e, t, n) => (e >>> 0) + (t >>> 0) + (n >>> 0), Jn = (e, t, n, r) => t + n + r + (e / 2 ** 32 | 0) | 0, Yn = (e, t, n, r) => (e >>> 0) + (t >>> 0) + (n >>> 0) + (r >>> 0), Mn = (e, t, n, r, i) => t + n + r + i + (e / 2 ** 32 | 0) | 0, qn = (e, t, n, r, i) => (e >>> 0) + (t >>> 0) + (n >>> 0) + (r >>> 0) + (i >>> 0), jn = (e, t, n, r, i, a) => t + n + r + i + a + (e / 2 ** 32 | 0) | 0, Rn = /* @__PURE__ */ Uint32Array.from([
1116352408,
1899447441,
3049323471,
3921009573,
961987163,
1508970993,
2453635748,
2870763221,
3624381080,
310598401,
607225278,
1426881987,
1925078388,
2162078206,
2614888103,
3248222580,
3835390401,
4022224774,
264347078,
604807628,
770255983,
1249150122,
1555081692,
1996064986,
2554220882,
2821834349,
2952996808,
3210313671,
3336571891,
3584528711,
113926993,
338241895,
666307205,
773529912,
1294757372,
1396182291,
1695183700,
1986661051,
2177026350,
2456956037,
2730485921,
2820302411,
3259730800,
3345764771,
3516065817,
3600352804,
4094571909,
275423344,
430227734,
506948616,
659060556,
883997877,
958139571,
1322822218,
1537002063,
1747873779,
1955562222,
2024104815,
2227730452,
2361852424,
2428436474,
2756734187,
3204031479,
3329325298
]), ge = /* @__PURE__ */ new Uint32Array(64);
class _n extends Jr {
constructor(t = 32) {
super(64, t, 8, !1), this.A = de[0] | 0, this.B = de[1] | 0, this.C = de[2] | 0, this.D = de[3] | 0, this.E = de[4] | 0, this.F = de[5] | 0, this.G = de[6] | 0, this.H = de[7] | 0;
}
get() {
const { A: t, B: n, C: r, D: i, E: a, F: o, G: s, H: l } = this;
return [t, n, r, i, a, o, s, l];
}
// prettier-ignore
set(t, n, r, i, a, o, s, l) {
this.A = t | 0, this.B = n | 0, this.C = r | 0, this.D = i | 0, this.E = a | 0, this.F = o | 0, this.G = s | 0, this.H = l | 0;
}
process(t, n) {
for (let g = 0; g < 16; g++, n += 4)
ge[g] = t.getUint32(n, !1);
for (let g = 16; g < 64; g++) {
const c = ge[g - 15], d = ge[g - 2], I = re(c, 7) ^ re(c, 18) ^ c >>> 3, m = re(d, 17) ^ re(d, 19) ^ d >>> 10;
ge[g] = m + ge[g - 7] + I + ge[g - 16] | 0;
}
let { A: r, B: i, C: a, D: o, E: s, F: l, G: u, H: h } = this;
for (let g = 0; g < 64; g++) {
const c = re(s, 6) ^ re(s, 11) ^ re(s, 25), d = h + c + Nn(s, l, u) + Rn[g] + ge[g] | 0, m = (re(r, 2) ^ re(r, 13) ^ re(r, 22)) + Kn(r, i, a) | 0;
h = u, u = l, l = s, s = o + d | 0, o = a, a = i, i = r, r = d + m | 0;
}
r = r + this.A | 0, i = i + this.B | 0, a = a + this.C | 0, o = o + this.D | 0, s = s + this.E | 0, l = l + this.F | 0, u = u + this.G | 0, h = h + this.H | 0, this.set(r, i, a, o, s, l, u, h);
}
roundClean() {
Ce(ge);
}
destroy() {
this.set(0, 0, 0, 0, 0, 0, 0, 0), Ce(this.buffer);
}
}
const Yr = Vn([
"0x428a2f98d728ae22",
"0x7137449123ef65cd",
"0xb5c0fbcfec4d3b2f",
"0xe9b5dba58189dbbc",
"0x3956c25bf348b538",
"0x59f111f1b605d019",
"0x923f82a4af194f9b",
"0xab1c5ed5da6d8118",
"0xd807aa98a3030242",
"0x12835b0145706fbe",
"0x243185be4ee4b28c",
"0x550c7dc3d5ffb4e2",
"0x72be5d74f27b896f",
"0x80deb1fe3b1696b1",
"0x9bdc06a725c71235",
"0xc19bf174cf692694",
"0xe49b69c19ef14ad2",
"0xefbe4786384f25e3",
"0x0fc19dc68b8cd5b5",
"0x240ca1cc77ac9c65",
"0x2de92c6f592b0275",
"0x4a7484aa6ea6e483",
"0x5cb0a9dcbd41fbd4",
"0x76f988da831153b5",
"0x983e5152ee66dfab",
"0xa831c66d2db43210",
"0xb00327c898fb213f",
"0xbf597fc7beef0ee4",
"0xc6e00bf33da88fc2",
"0xd5a79147930aa725",
"0x06ca6351e003826f",
"0x142929670a0e6e70",
"0x27b70a8546d22ffc",
"0x2e1b21385c26c926",
"0x4d2c6dfc5ac42aed",
"0x53380d139d95b3df",
"0x650a73548baf63de",
"0x766a0abb3c77b2a8",
"0x81c2c92e47edaee6",
"0x92722c851482353b",
"0xa2bfe8a14cf10364",
"0xa81a664bbc423001",
"0xc24b8b70d0f89791",
"0xc76c51a30654be30",
"0xd192e819d6ef5218",
"0xd69906245565a910",
"0xf40e35855771202a",
"0x106aa07032bbd1b8",
"0x19a4c116b8d2d0c8",
"0x1e376c085141ab53",
"0x2748774cdf8eeb99",
"0x34b0bcb5e19b48a8",
"0x391c0cb3c5c95a63",
"0x4ed8aa4ae3418acb",
"0x5b9cca4f7763e373",
"0x682e6ff3d6b2b8a3",
"0x748f82ee5defb2fc",
"0x78a5636f43172f60",
"0x84c87814a1f0ab72",
"0x8cc702081a6439ec",
"0x90befffa23631e28",
"0xa4506cebde82bde9",
"0xbef9a3f7b2c67915",
"0xc67178f2e372532b",
"0xca273eceea26619c",
"0xd186b8c721c0c207",
"0xeada7dd6cde0eb1e",
"0xf57d4f7fee6ed178",
"0x06f067aa72176fba",
"0x0a637dc5a2c898a6",
"0x113f9804bef90dae",
"0x1b710b35131c471b",
"0x28db77f523047d84",
"0x32caab7b40c72493",
"0x3c9ebe0a15c9bebc",
"0x431d67c49c100d4c",
"0x4cc5d4becb3e42b6",
"0x597f299cfc657e2a",
"0x5fcb6fab3ad6faec",
"0x6c44198c4a475817"
].map((e) => BigInt(e))), Pn = Yr[0], Ln = Yr[1], Ae = /* @__PURE__ */ new Uint32Array(80), he = /* @__PURE__ */ new Uint32Array(80);
class Tn extends Jr {
constructor(t = 64) {
super(128, t, 16, !1), this.Ah = _[0] | 0, this.Al = _[1] | 0, this.Bh = _[2] | 0, this.Bl = _[3] | 0, this.Ch = _[4] | 0, this.Cl = _[5] | 0, this.Dh = _[6] | 0, this.Dl = _[7] | 0, this.Eh = _[8] | 0, this.El = _[9] | 0, this.Fh = _[10] | 0, this.Fl = _[11] | 0, this.Gh = _[12] | 0, this.Gl = _[13] | 0, this.Hh = _[14] | 0, this.Hl = _[15] | 0;
}
// prettier-ignore
get() {
const { Ah: t, Al: n, Bh: r, Bl: i, Ch: a, Cl: o, Dh: s, Dl: l, Eh: u, El: h, Fh: g, Fl: c, Gh: d, Gl: I, Hh: m, Hl: B } = this;
return [t, n, r, i, a, o, s, l, u, h, g, c, d, I, m, B];
}
// prettier-ignore
set(t, n, r, i, a, o, s, l, u, h, g, c, d, I, m, B) {
this.Ah = t | 0, this.Al = n | 0, this.Bh = r | 0, this.Bl = i | 0, this.Ch = a | 0, this.Cl = o | 0, this.Dh = s | 0, this.Dl = l | 0, this.Eh = u | 0, this.El = h | 0, this.Fh = g | 0, this.Fl = c | 0, this.Gh = d | 0, this.Gl = I | 0, this.Hh = m | 0, this.Hl = B | 0;
}
process(t, n) {
for (let b = 0; b < 16; b++, n += 4)
Ae[b] = t.getUint32(n), he[b] = t.getUint32(n += 4);
for (let b = 16; b < 80; b++) {
const N = Ae[b - 15] | 0, K = he[b - 15] | 0, C = Be(N, K, 1) ^ Be(N, K, 8) ^ ur(N, K, 7), D = Qe(N, K, 1) ^ Qe(N, K, 8) ^ dr(N, K, 7), G = Ae[b - 2] | 0, v = he[b - 2] | 0, P = Be(G, v, 19) ^ Le(G, v, 61) ^ ur(G, v, 6), Z = Qe(G, v, 19) ^ Te(G, v, 61) ^ dr(G, v, 6), U = Yn(D, Z, he[b - 7], he[b - 16]), p = Mn(U, C, P, Ae[b - 7], Ae[b - 16]);
Ae[b] = p | 0, he[b] = U | 0;
}
let { Ah: r, Al: i, Bh: a, Bl: o, Ch: s, Cl: l, Dh: u, Dl: h, Eh: g, El: c, Fh: d, Fl: I, Gh: m, Gl: B, Hh: S, Hl: j } = this;
for (let b = 0; b < 80; b++) {
const N = Be(g, c, 14) ^ Be(g, c, 18) ^ Le(g, c, 41), K = Qe(g, c, 14) ^ Qe(g, c, 18) ^ Te(g, c, 41), C = g & d ^ ~g & m, D = c & I ^ ~c & B, G = qn(j, K, D, Ln[b], he[b]), v = jn(G, S, N, C, Pn[b], Ae[b]), P = G | 0, Z = Be(r, i, 28) ^ Le(r, i, 34) ^ Le(r, i, 39), U = Qe(r, i, 28) ^ Te(r, i, 34) ^ Te(r, i, 39), p = r & a ^ r & s ^ a & s, f = i & o ^ i & l ^ o & l;
S = m | 0, j = B | 0, m = d | 0, B = I | 0, d = g | 0, I = c | 0, { h: g, l: c } = ae(u | 0, h | 0, v | 0, P | 0), u = s | 0, h = l | 0, s = a | 0, l = o | 0, a = r | 0, o = i | 0;
const A = zn(P, U, f);
r = Jn(A, v, Z, p), i = A | 0;
}
({ h: r, l: i } = ae(this.Ah | 0, this.Al | 0, r | 0, i | 0)), { h: a, l: o } = ae(this.Bh | 0, this.Bl | 0, a | 0, o | 0), { h: s, l } = ae(this.Ch | 0, this.Cl | 0, s | 0, l | 0), { h: u, l: h } = ae(this.Dh | 0, this.Dl | 0, u | 0, h | 0), { h: g, l: c } = ae(this.Eh | 0, this.El | 0, g | 0, c | 0), { h: d, l: I } = ae(this.Fh | 0, this.Fl | 0, d | 0, I | 0), { h: m, l: B } = ae(this.Gh | 0, this.Gl | 0, m | 0, B | 0), { h: S, l: j } = ae(this.Hh | 0, this.Hl | 0, S | 0, j | 0), this.set(r, i, a, o, s, l, u, h, g, c, d, I, m, B, S, j);
}
roundClean() {
Ce(Ae, he);
}
destroy() {
Ce(this.buffer), this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
}
}
const fe = /* @__PURE__ */ zr(() => new _n()), D1 = /* @__PURE__ */ zr(() => new Tn());
class Mr extends Vr {
constructor(t, n) {
super(), this.finished = !1, this.destroyed = !1, ht(t);
const r = Me(n);
if (this.iHash = t.create(), typeof this.iHash.update != "function")
throw new Error("Expected instance of class which extends utils.Hash");
this.blockLen = this.iHash.blockLen, this.outputLen = this.iHash.outputLen;
const i = this.blockLen, a = new Uint8Array(i);
a.set(r.length > i ? t.create().update(r).digest() : r);
for (let o = 0; o < a.length; o++)
a[o] ^= 54;
this.iHash.update(a), this.oHash = t.create();
for (let o = 0; o < a.length; o++)
a[o] ^= 106;
this.oHash.update(a), Ce(a);
}
update(t) {
return nt(this), this.iHash.update(t), this;
}
digestInto(t) {
nt(this), pe(t, this.outputLen), this.finished = !0, this.iHash.digestInto(t), this.oHash.update(t), this.oHash.digestInto(t), this.destroy();
}
digest() {
const t = new Uint8Array(this.oHash.outputLen);
return this.digestInto(t), t;
}
_cloneInto(t) {
t || (t = Object.create(Object.getPrototypeOf(this), {}));
const { oHash: n, iHash: r, finished: i, destroyed: a, blockLen: o, outputLen: s } = this;
return t = t, t.finished = i, t.destroyed = a, t.blockLen = o, t.outputLen = s, t.oHash = n._cloneInto(t.oHash), t.iHash = r._cloneInto(t.iHash), t;
}
clone() {
return this._cloneInto();
}
destroy() {
this.destroyed = !0, this.oHash.destroy(), this.iHash.destroy();
}
}
const pt = (e, t, n) => new Mr(e, t).update(n).digest();
pt.create = (e, t) => new Mr(e, t);
function Xn(e, t, n) {
return ht(e), n === void 0 && (n = new Uint8Array(e.outputLen)), pt(e, Me(n), Me(t));
}
const wt = /* @__PURE__ */ Uint8Array.from([0]), gr = /* @__PURE__ */ Uint8Array.of();
function Zn(e, t, n, r = 32) {
ht(e), rt(r);
const i = e.outputLen;
if (r > 255 * i)
throw new Error("Length should be <= 255*HashLen");
const a = Math.ceil(r / i);
n === void 0 && (n = gr);
const o = new Uint8Array(a * i), s = pt.create(e, t), l = s._cloneInto(), u = new Uint8Array(s.outputLen);
for (let h = 0; h < a; h++)
wt[0] = h + 1, l.update(h === 0 ? gr : u).update(n).update(wt).digestInto(u), o.set(u, i * h), s._cloneInto(l);
return s.destroy(), l.destroy(), Ce(u, wt), o.slice(0, r);
}
function jt(e) {
let t = "";
for (const n of e)
t += n.toString(16).padStart(2, "0");
return t;
}
function Je(e) {
if (e.length % 2 !== 0)
throw new Error("Invalid hex string length.");
const t = new Uint8Array(e.length / 2);
for (let n = 0; n < t.length; n++)
t[n] = parseInt(e.slice(n * 2, n * 2 + 2), 16);
return t;
}
const ee = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
function S1(e) {
let t = "", n = 0;
for (; n + 2 < e.length; n += 3) {
const i = e[n], a = e[n + 1], o = e[n + 2];
t += ee[i >> 2], t += ee[(i & 3) << 4 | a >> 4], t += ee[(a & 15) << 2 | o >> 6], t += ee[o & 63];
}
const r = e.length - n;
if (r === 1) {
const i = e[n];
t += ee[i >> 2], t += ee[(i & 3) << 4];
} else if (r === 2) {
const i = e[n], a = e[n + 1];
t += ee[i >> 2], t += ee[(i & 3) << 4 | a >> 4], t += ee[(a & 15) << 2];
}
return t;
}
const $n = (() => {
const e = {};
for (let t = 0; t < ee.length; t++)
e[ee[t]] = t;
return e;
})();
function F1(e) {
const t = e.replace(/=+$/u, ""), n = [];
let r = 0, i = 0;
for (const a of t) {
const o = $n[a];
if (o === void 0)
throw new Error("Invalid base64url character.");
r = r << 6 | o, i += 6, i >= 8 && (i -= 8, n.push(r >> i & 255));
}
return new Uint8Array(n);
}
function De(e) {
return new TextEncoder().encode(e);
}
function U1(e) {
return new TextDecoder("utf-8", { fatal: !0 }).decode(e);
}
function qr(...e) {
const t = e.reduce((i, a) => i + a.length, 0), n = new Uint8Array(t);
let r = 0;
for (const i of e)
n.set(i, r), r += i.length;
return n;
}
function G1(e, t) {
if (e.length !== t.length)
return !1;
let n = 0;
for (let r = 0; r < e.length; r++)
n |= e[r] ^ t[r];
return n === 0;
}
function jr(e, t) {
return Xn(fe, t, e);
}
function Rt(e, t, n) {
const r = typeof t == "string" ? De(t) : t;
return Zn(fe, e, r, n);
}
function Rr(e) {
return fe(De(e));
}
function _r(...e) {
for (const t of e)
t && t.fill(0);
}
/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
const _t = /* @__PURE__ */ BigInt(0), Gt = /* @__PURE__ */ BigInt(1);
function at(e, t = "") {
if (typeof e != "boolean") {
const n = t && `"${t}"`;
throw new Error(n + "expected boolean, got type=" + typeof e);
}
return e;
}
function Ie(e, t, n = "") {
const r = At(e), i = e?.length, a = t !== void 0;
if (!r || a && i !== t) {
const o = n && `"${n}" `, s = a ? ` of length ${t}` : "", l = r ? `length=${i}` : `type=${typeof e}`;
throw new Error(o + "expected Uint8Array" + s + ", got " + l);
}
return e;
}
function Xe(e) {
const t = e.toString(16);
return t.length & 1 ? "0" + t : t;
}
function Pr(e) {
if (typeof e != "string")
throw new Error("hex string expected, got " + typeof e);
return e === "" ? _t : BigInt("0x" + e);
}
function Ge(e) {
return Pr(Ee(e));
}
function Lr(e) {
return pe(e), Pr(Ee(Uint8Array.from(e).reverse()));
}
function It(e, t) {
return it(e.toString(16).padStart(t * 2, "0"));
}
function Tr(e, t) {
return It(e, t).reverse();
}
function q(e, t, n) {
let r;
if (typeof t == "string")
try {
r = it(t);
} catch (a) {
throw new Error(e + " must be hex string or Uint8Array, cause: " + a);
}
else if (At(t))
r = Uint8Array.from(t);
else
throw new Error(e + " must be hex string or Uint8Array");
const i = r.length;
if (typeof n == "number" && i !== n)
throw new Error(e + " of length " + n + " expected, got " + i);
return r;
}
const Ct = (e) => typeof e == "bigint" && _t <= e;
function Ht(e, t, n) {
return Ct(e) && Ct(t) && Ct(n) && t <= e && e < n;
}
function Wn(e, t, n, r) {
if (!Ht(t, n, r))
throw new Error("expected valid " + e + ": " + n + " <= n < " + r + ", got " + t);
}
function Xr(e) {
let t;
for (t = 0; e > _t; e >>= Gt, t += 1)
;
return t;
}
const je = (e) => (Gt << BigInt(e)) - Gt;
function ei(e, t, n) {
if (typeof e != "number" || e < 2)
throw new Error("hashLen must be a number");
if (typeof t != "number" || t < 2)
throw new Error("qByteLen must be a number");
if (typeof n != "function")
throw new Error("hmacFn must be a function");
const r = (d) => new Uint8Array(d), i = (d) => Uint8Array.of(d);
let a = r(e), o = r(e), s = 0;
const l = () => {
a.fill(1), o.fill(0), s = 0;
}, u = (...d) => n(o, a, ...d), h = (d = r(0)) => {
o = u(i(0), d), a = u(), d.length !== 0 && (o = u(i(1), d), a = u());
}, g = () => {
if (s++ >= 1e3)
throw new Error("drbg: tried 1000 values");
let d = 0;
const I = [];
for (; d < t; ) {
a = u();
const m = a.slice();
I.push(m), d += a.length;
}
return ne(...I);
};
return (d, I) => {
l(), h(d);
let m;
for (; !(m = I(g())); )
h();
return l(), m;
};
}
function Pt(e, t, n = {}) {
if (!e || typeof e != "object")
throw new Error("expected valid options object");
function r(i, a, o) {
const s = e[i];
if (o && s === void 0)
return;
const l = typeof s;
if (l !== a || s === null)
throw new Error(`param "${i}" is invalid: expected ${a}, got ${l}`);
}
Object.entries(t).forEach(([i, a]) => r(i, a, !1)), Object.entries(n).forEach(([i, a]) => r(i, a, !0));
}
function Ar(e) {
const t = /* @__PURE__ */ new WeakMap();
return (n, ...r) => {
const i = t.get(n);
if (i !== void 0)
return i;
const a = e(n, ...r);
return t.set(n, a), a;
};
}
/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
const X = BigInt(0), L = BigInt(1), me = /* @__PURE__ */ BigInt(2), Zr = /* @__PURE__ */ BigInt(3), $r = /* @__PURE__ */ BigInt(4), Wr = /* @__PURE__ */ BigInt(5), ti = /* @__PURE__ */ BigInt(7), en = /* @__PURE__ */ BigInt(8), ri = /* @__PURE__ */ BigInt(9), tn = /* @__PURE__ */ BigInt(16);
function W(e, t) {
const n = e % t;
return n >= X ? n : t + n;
}
function $(e, t, n) {
let r = e;
for (; t-- > X; )
r *= r, r %= n;
return r;
}
function hr(e, t) {
if (e === X)
throw new Error("invert: expected non-zero number");
if (t <= X)
throw new Error("invert: expected positive modulus, got " + t);
let n = W(e, t), r = t, i = X, a = L;
for (; n !== X; ) {
const s = r / n, l = r % n, u = i - a * s;
r = n, n = l, i = a, a = u;
}
if (r !== L)
throw new Error("invert: does not exist");
return W(i, t);
}
function Lt(e, t, n) {
if (!e.eql(e.sqr(t), n))
throw new Error("Cannot find square root");
}
function rn(e, t) {
const n = (e.ORDER + L) / $r, r = e.pow(t, n);
return Lt(e, r, t), r;
}
function ni(e, t) {
const n = (e.ORDER - Wr) / en, r = e.mul(t, me), i = e.pow(r, n), a = e.mul(t, i), o = e.mul(e.mul(a, me), i), s = e.mul(a, e.sub(o, e.ONE));
return Lt(e, s, t), s;
}
function ii(e) {
const t = Re(e), n = nn(e), r = n(t, t.neg(t.ONE)), i = n(t, r), a = n(t, t.neg(r)), o = (e + ti) / tn;
return (s, l) => {
let u = s.pow(l, o), h = s.mul(u, r);
const g = s.mul(u, i), c = s.mul(u, a), d = s.eql(s.sqr(h), l), I = s.eql(s.sqr(g), l);
u = s.cmov(u, h, d), h = s.cmov(c, g, I);
const m = s.eql(s.sqr(h), l), B = s.cmov(u, h, m);
return Lt(s, B, l), B;
};
}
function nn(e) {
if (e < Zr)
throw new Error("sqrt is not defined for small field");
let t = e - L, n = 0;
for (; t % me === X; )
t /= me, n++;
let r = me;
const i = Re(e);
for (; fr(i, r) === 1; )
if (r++ > 1e3)
throw new Error("Cannot find square root: probably non-prime P");
if (n === 1)
return rn;
let a = i.pow(r, t);
const o = (t + L) / me;
return function(l, u) {
if (l.is0(u))
return u;
if (fr(l, u) !== 1)
throw new Error("Cannot find square root");
let h = n, g = l.mul(l.ONE, a), c = l.pow(u, t), d = l.pow(u, o);
for (; !l.eql(c, l.ONE); ) {
if (l.is0(c))
return l.ZERO;
let I = 1, m = l.sqr(c);
for (; !l.eql(m, l.ONE); )
if (I++, m = l.sqr(m), I === h)
throw new Error("Cannot find square root");
const B = L << BigInt(h - I - 1), S = l.pow(g, B);
h = I, g = l.sqr(S), c = l.mul(c, g), d = l.mul(d, S);
}
return d;
};
}
function ai(e) {
return e % $r === Zr ? rn : e % en === Wr ? ni : e % tn === ri ? ii(e) : nn(e);
}
const oi = [
"create",
"isValid",
"is0",
"neg",
"inv",
"sqrt",
"sqr",
"eql",
"add",
"sub",
"mul",
"pow",
"div",
"addN",
"subN",
"mulN",
"sqrN"
];
function si(e) {
const t = {
ORDER: "bigint",
MASK: "bigint",
BYTES: "number",
BITS: "number"
}, n = oi.reduce((r, i) => (r[i] = "function", r), t);
return Pt(e, n), e;
}
function li(e, t, n) {
if (n < X)
throw new Error("invalid exponent, negatives unsupported");
if (n === X)
return e.ONE;
if (n === L)
return t;
let r = e.ONE, i = t;
for (; n > X; )
n & L && (r = e.mul(r, i)), i = e.sqr(i), n >>= L;
return r;
}
function an(e, t, n = !1) {
const r = new Array(t.length).fill(n ? e.ZERO : void 0), i = t.reduce((o, s, l) => e.is0(s) ? o : (r[l] = o, e.mul(o, s)), e.ONE), a = e.inv(i);
return t.reduceRight((o, s, l) => e.is0(s) ? o : (r[l] = e.mul(o, r[l]), e.mul(o, s)), a), r;
}
function fr(e, t) {
const n = (e.ORDER - L) / me, r = e.pow(t, n), i = e.eql(r, e.ONE), a = e.eql(r, e.ZERO), o = e.eql(r, e.neg(e.ONE));
if (!i && !a && !o)
throw new Error("invalid Legendre symbol result");
return i ? 1 : a ? 0 : -1;
}
function on(e, t) {
t !== void 0 && rt(t);
const n = t !== void 0 ? t : e.toString(2).length, r = Math.ceil(n / 8);
return { nBitLength: n, nByteLength: r };
}
function Re(e, t, n = !1, r = {}) {
if (e <= X)
throw new Error("invalid field: expected ORDER > 0, got " + e);
let i, a, o = !1, s;
if (typeof t == "object" && t != null) {
if (r.sqrt || n)
throw new Error("cannot specify opts in two arguments");
const c = t;
c.BITS && (i = c.BITS), c.sqrt && (a = c.sqrt), typeof c.isLE == "boolean" && (n = c.isLE), typeof c.modFromBytes == "boolean" && (o = c.modFromBytes), s = c.allowedLengths;
} else
typeof t == "number" && (i = t), r.sqrt && (a = r.sqrt);
const { nBitLength: l, nByteLength: u } = on(e, i);
if (u > 2048)
throw new Error("invalid field: expected ORDER of <= 2048 bytes");
let h;
const g = Object.freeze({
ORDER: e,
isLE: n,
BITS: l,
BYTES: u,
MASK: je(l),
ZERO: X,
ONE: L,
allowedLengths: s,
create: (c) => W(c, e),
isValid: (c) => {
if (typeof c != "bigint")
throw new Error("invalid field element: expected bigint, got " + typeof c);
return X <= c && c < e;
},
is0: (c) => c === X,
// is valid and invertible
isValidNot0: (c) => !g.is0(c) && g.isValid(c),
isOdd: (c) => (c & L) === L,
neg: (c) => W(-c, e),
eql: (c, d) => c === d,
sqr: (c) => W(c * c, e),
add: (c, d) => W(c + d, e),
sub: (c, d) => W(c - d, e),
mul: (c, d) => W(c * d, e),
pow: (c, d) => li(g, c, d),
div: (c, d) => W(c * hr(d, e), e),
// Same as above, but doesn't normalize
sqrN: (c) => c * c,
addN: (c, d) => c + d,
subN: (c, d) => c - d,
mulN: (c, d) => c * d,
inv: (c) => hr(c, e),
sqrt: a || ((c) => (h || (h = ai(e)), h(g, c))),
toBytes: (c) => n ? Tr(c, u) : It(c, u),
fromBytes: (c, d = !0) => {
if (s) {
if (!s.includes(c.length) || c.length > u)
throw new Error("Field.fromBytes: expected " + s + " bytes, got " + c.length);
const m = new Uint8Array(u);
m.set(c, n ? 0 : m.length - c.length), c = m;
}
if (c.length !== u)
throw new Error("Field.fromBytes: expected " + u + " bytes, got " + c.length);
let I = n ? Lr(c) : Ge(c);
if (o && (I = W(I, e)), !d && !g.isValid(I))
throw new Error("invalid field element: outside of range 0..ORDER");
return I;
},
// TODO: we don't need it here, move out to separate fn
invertBatch: (c) => an(g, c),
// We can't move this out because Fp6, Fp12 implement it
// and it's unclear what to return in there.
cmov: (c, d, I) => I ? d : c
});
return Object.freeze(g);
}
function sn(e) {
if (typeof e != "bigint")
throw new Error("field order must be bigint");
const t = e.toString(2).length;
return Math.ceil(t / 8);
}
function ln(e) {
const t = sn(e);
return t + Math.ceil(t / 2);
}
function cn(e, t, n = !1) {
const r = e.length, i = sn(t), a = ln(t);
if (r < 16 || r < a || r > 1024)
throw new Error("expected " + a + "-1024 bytes of input, got " + r);
const o = n ? Lr(e) : Ge(e), s = W(o, t - L) + L;
return n ? Tr(s, i) : It(s, i);
}
/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
const Se = BigInt(0), ye = BigInt(1);
function ot(e, t) {
const n = t.negate();
return e ? n : t;
}
function kt(e, t) {
const n = an(e.Fp, t.map((r) => r.Z));
return t.map((r, i) => e.fromAffine(r.toAffine(n[i])));
}
function un(e, t) {
if (!Number.isSafeInteger(e) || e <= 0 || e > t)
throw new Error("invalid window size, expected [1.." + t + "], got W=" + e);
}
function vt(e, t) {
un(e, t);
const n = Math.ceil(t / e) + 1, r = 2 ** (e - 1), i = 2 ** e, a = je(e), o = BigInt(e);
return { windows: n, windowSize: r, mask: a, maxNumber: i, shiftBy: o };
}
function pr(e, t, n) {
const { windowSize: r, mask: i, maxNumber: a, shiftBy: o } = n;
let s = Number(e & i), l = e >> o;
s > r && (s -= a, l += ye);
const u = t * r, h = u + Math.abs(s) - 1, g = s === 0, c = s < 0, d = t % 2 !== 0;
return { nextN: l, offset: h, isZero: g, isNeg: c, isNegF: d, offsetF: u };
}
function ci(e, t) {
if (!Array.isArray(e))
throw new Error("array expected");
e.forEach((n, r) => {
if (!(n instanceof t))
throw new Error("invalid point at index " + r);
});
}
function ui(e, t) {
if (!Array.isArray(e))
throw new Error("array of scalars expected");
e.forEach((n, r) => {
if (!t.isValid(n))
throw new Error("invalid scalar at index " + r);
});
}
const Bt = /* @__PURE__ */ new WeakMap(), dn = /* @__PURE__ */ new WeakMap();
function Qt(e) {
return dn.get(e) || 1;
}
function Ir(e) {
if (e !== Se)
throw new Error("invalid wNAF");
}
class di {
// Parametrized with a given Point class (not individual point)
constructor(t, n) {
this.BASE = t.BASE, this.ZERO = t.ZERO, this.Fn = t.Fn, this.bits = n;
}
// non-const time multiplication ladder
_unsafeLadder(t, n, r = this.ZERO) {
let i = t;
for (; n > Se; )
n & ye && (r = r.add(i)), i = i.double(), n >>= ye;
return r;
}
/**
* Creates a wNAF precomputation window. Used for caching.
* Default window size is set by `utils.precompute()` and is equal to 8.
* Number of precomputed points depends on the curve size:
* 2^(𝑊−1) * (Math.ceil(𝑛 / 𝑊) + 1), where:
* - 𝑊 is the window size
* - 𝑛 is the bitlength of the curve order.
* For a 256-bit curve and window size 8, the number of precomputed points is 128 * 33 = 4224.
* @param point Point instance
* @param W window size
* @returns precomputed point tables flattened to a single array
*/
precomputeWindow(t, n) {
const { windows: r, windowSize: i } = vt(n, this.bits), a = [];
let o = t, s = o;
for (let l = 0; l < r; l++) {
s = o, a.push(s);
for (let u = 1; u < i; u++)
s = s.add(o), a.push(s);
o = s.double();
}
return a;
}
/**
* Implements ec multiplication using precomputed tables and w-ary non-adjacent form.
* More compact implementation:
* https://github.com/paulmillr/noble-secp256k1/blob/47cb1669b6e506ad66b35fe7d76132ae97465da2/index.ts#L502-L541
* @returns real and fake (for const-time) points
*/
wNAF(t, n, r) {
if (!this.Fn.isValid(r))
throw new Error("invalid scalar");
let i = this.ZERO, a = this.BASE;
const o = vt(t, this.bits);
for (let s = 0; s < o.windows; s++) {
const { nextN: l, offset: u, isZero: h, isNeg: g, isNegF: c, offsetF: d } = pr(r, s, o);
r = l, h ? a = a.add(ot(c, n[d])) : i = i.add(ot(g, n[u]));
}
return Ir(r), { p: i, f: a };
}
/**
* Implements ec unsafe (non const-time) multiplication using precomputed tables and w-ary non-adjacent form.
* @param acc accumulator point to add result of multiplication
* @returns point
*/
wNAFUnsafe(t, n, r, i = this.ZERO) {
const a = vt(t, this.bits);
for (let o = 0; o < a.windows && r !== Se; o++) {
const { nextN: s, offset: l, isZero: u, isNeg: h } = pr(r, o, a);
if (r = s, !u) {
const g = n[l];
i = i.add(h ? g.negate() : g);
}
}
return Ir(r), i;
}
getPrecomputes(t, n, r) {
let i = Bt.get(n);
return i || (i = this.precomputeWindow(n, t), t !== 1 && (typeof r == "function" && (i = r(i)), Bt.set(n, i))), i;
}
cached(t, n, r) {
const i = Qt(t);
return this.wNAF(i, this.getPrecomputes(i, t, r), n);
}
unsafe(t, n, r, i) {
const a = Qt(t);
return a === 1 ? this._unsafeLadder(t, n, i) : this.wNAFUnsafe(a, this.getPrecomputes(a, t, r), n, i);
}
// We calculate precomputes for elliptic curve point multiplication
// using windowed method. This specifies window size and
// stores precomputed values. Usually only base point would be precomputed.
createCache(t, n) {
un(n, this.bits), dn.set(t, n), Bt.delete(t);
}
hasCache(t) {
return Qt(t) !== 1;
}
}
function gi(e, t, n, r) {
let i = t, a = e.ZERO, o = e.ZERO;
for (; n > Se || r > Se; )
n & ye && (a = a.add(i)), r & ye && (o = o.add(i)), i = i.double(), n >>= ye, r >>= ye;
return { p1: a, p2: o };
}
function Ai(e, t, n, r) {
ci(n, e), ui(r, t);
const i = n.length, a = r.length;
if (i !== a)
throw new Error("arrays of points and scalars must have equal length");
const o = e.ZERO, s = Xr(BigInt(i));
let l = 1;
s > 12 ? l = s - 3 : s > 4 ? l = s - 2 : s > 0 && (l = 2);
const u = je(l), h = new Array(Number(u) + 1).fill(o), g = Math.floor((t.BITS - 1) / l) * l;
let c = o;
for (let d = g; d >= 0; d -= l) {
h.fill(o);
for (let m = 0; m < a; m++) {
const B = r[m], S = Number(B >> BigInt(d) & u);
h[S] = h[S].add(n[m]);
}
let I = o;
for (let m = h.length - 1, B = o; m > 0; m--)
B = B.add(h[m]), I = I.add(B);
if (c = c.add(I), d !== 0)
for (let m = 0; m < l; m++)
c = c.double();
}
return c;
}
function mr(e, t, n) {
if (t) {
if (t.ORDER !== e)
throw new Error("Field.ORDER must match order: Fp == p, Fn == n");
return si(t), t;
} else
return Re(e, { isLE: n });
}
function hi(e, t, n = {}, r) {
if (r === void 0 && (r = e === "edwards"), !t || typeof t != "object")
throw new Error(`expected valid ${e} CURVE object`);
for (const l of ["p", "n", "h"]) {
const u = t[l];
if (!(typeof u == "bigint" && u > Se))
throw new Error(`CURVE.${l} must be positive bigint`);
}
const i = mr(t.p, n.Fp, r), a = mr(t.n, n.Fn, r), s = ["Gx", "Gy", "a", "b"];
for (const l of s)
if (!i.isValid(t[l]))
throw new Error(`CURVE.${l} must be valid field element of CURVE.Fp`);
return t = Object.freeze(Object.assign({}, t)), { CURVE: t, Fp: i, Fn: a };
}
/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
const yr = (e, t) => (e + (e >= 0 ? t : -t) / gn) / t;
function fi(e, t, n) {
const [[r, i], [a, o]] = t, s = yr(o * e, n), l = yr(-i * e, n);
let u = e - s * r - l * a, h = -s * i - l * o;
const g = u < ce, c = h < ce;
g && (u = -u), c && (h = -h);
const d = je(Math.ceil(Xr(n) / 2)) + xe;
if (u < ce || u >= d || h < ce || h >= d)
throw new Error("splitScalar (endomorphism): failed, k=" + e);
return { k1neg: g, k1: u, k2neg: c, k2: h };
}
function Nt(e) {
if (!["compact", "recovered", "der"].includes(e))
throw new Error('Signature format must be "compact", "recovered", or "der"');
return e;
}
function Et(e, t) {
const n = {};
for (let r of Object.keys(t))
n[r] = e[r] === void 0 ? t[r] : e[r];
return at(n.lowS, "lowS"), at(n.prehash, "prehash"), n.format !== void 0 && Nt(n.format), n;
}
class pi extends Error {
constructor(t = "") {
super(t);
}
}
const le = {
// asn.1 DER encoding utils
Err: pi,
// Basic building block is TLV (Tag-Length-Value)
_tlv: {
encode: (e, t) => {
const { Err: n } = le;
if (e < 0 || e > 256)
throw new n("tlv.encode: wrong tag");
if (t.length & 1)
throw new n("tlv.encode: unpadded data");
const r = t.length / 2, i = Xe(r);
if (i.length / 2 & 128)
throw new n("tlv.encode: long form length too big");
const a = r > 127 ? Xe(i.length / 2 | 128) : "";
return Xe(e) + a + i + t;
},
// v - value, l - left bytes (unparsed)
decode(e, t) {
const { Err: n } = le;
let r = 0;
if (e < 0 || e > 256)
throw new n("tlv.encode: wrong tag");
if (t.length < 2 || t[r++] !== e)
throw new n("tlv.decode: wrong tlv");
const i = t[r++], a = !!(i & 128);
let o = 0;
if (!a)
o = i;
else {
const l = i & 127;
if (!l)
throw new n("tlv.decode(long): indefinite length not supported");
if (l > 4)
throw new n("tlv.decode(long): byte length is too big");
const u = t.subarray(r, r + l);
if (u.length !== l)
throw new n("tlv.decode: length bytes not complete");
if (u[0] === 0)
throw new n("tlv.decode(long): zero leftmost byte");
for (const h of u)
o = o << 8 | h;
if (r += l, o < 128)
throw new n("tlv.decode(long): not minimal encoding");
}
const s = t.subarray(r, r + o);
if (s.length !== o)
throw new n("tlv.decode: wrong value length");
return { v: s, l: t.subarray(r + o) };
}
},
// https://crypto.stackexchange.com/a/57734 Leftmost bit of first byte is 'negative' flag,
// since we always use positive integers here. It must always be empty:
// - add zero byte if exists
// - if next byte doesn't have a flag, leading zero is not allowed (minimal encoding)
_int: {
encode(e) {
const { Err: t } = le;
if (e < ce)
throw new t("integer: negative integers are not allowed");
let n = Xe(e);
if (Number.parseInt(n[0], 16) & 8 && (n = "00" + n), n.length & 1)
throw new t("unexpected DER parsing assertion: unpadded hex");
return n;
},
decode(e) {
const { Err: t } = le;
if (e[0] & 128)
throw new t("invalid signature integer: negative");
if (e[0] === 0 && !(e[1] & 128))
throw new t("invalid signature integer: unnecessary leading zero");
return Ge(e);
}
},
toSig(e) {
const { Err: t, _int: n, _tlv: r } = le, i = q("signature", e), { v: a, l: o } = r.decode(48, i);
if (o.length)
throw new t("invalid signature: left bytes after parsing");
const { v: s, l } = r.decode(2, a), { v: u, l: h } = r.decode(2, l);
if (h.length)
throw new t("invalid signature: left bytes after parsing");
return { r: n.decode(s), s: n.decode(u) };
},
hexFromSig(e) {
const { _tlv: t, _int: n } = le, r = t.encode(2, n.encode(e.r)), i = t.encode(2, n.encode(e.s)), a = r + i;
return t.encode(48, a);
}
}, ce = BigInt(0), xe = BigInt(1), gn = BigInt(2), Ze = BigInt(3), Ii = BigInt(4);
function be(e, t) {
const { BYTES: n } = e;
let r;
if (typeof t == "bigint")
r = t;
else {
let i = q("private key", t);
try {
r = e.fromBytes(i);
} catch {
throw new Error(`invalid private key: expected ui8a of size ${n}, got ${typeof t}`);
}
}
if (!e.isValidNot0(r))
throw new Error("invalid private key: out of range [1..N-1]");
return r;
}
function mi(e, t = {}) {
const n = hi("weierstrass", e, t), { Fp: r, Fn: i } = n;
let a = n.CURVE;
const { h: o, n: s } = a;
Pt(t, {}, {
allowInfinityPoint: "boolean",
clearCofactor: "function",
isTorsionFree: "function",
fromBytes: "function",
toBytes: "function",
endo: "object",
wrapPrivateKey: "boolean"
});
const { endo: l } = t;
if (l && (!r.is0(a.a) || typeof l.beta != "bigint" || !Array.isArray(l.basises)))
throw new Error('invalid endo: expected "beta": bigint and "basises": array');
const u = hn(r, i);
function h() {
if (!r.isOdd)
throw new Error("compression is not supported: Field does not have .isOdd()");
}
function g(U, p, f) {
const { x: A, y } = p.toAffine(), w = r.toBytes(A);
if (at(f, "isCompressed"), f) {
h();
const E = !r.isOdd(y);
return ne(An(E), w);
} else
return ne(Uint8Array.of(4), w, r.toBytes(y));
}
function c(U) {
Ie(U, void 0, "Point");
const { publicKey: p, publicKeyUncompressed: f } = u, A = U.length, y = U[0], w = U.subarray(1);
if (A === p && (y === 2 || y === 3)) {
const E = r.fromBytes(w);
if (!r.isValid(E))
throw new Error("bad point: is not on curve, wrong x");
const Q = m(E);
let k;
try {
k = r.sqrt(Q);
} catch (Y) {
const O = Y instanceof Error ? ": " + Y.message : "";
throw new Error("bad point: is not on curve, sqrt error" + O);
}
h();
const x = r.isOdd(k);
return (y & 1) === 1 !== x && (k = r.neg(k)), { x: E, y: k };
} else if (A === f && y === 4) {
const E = r.BYTES, Q = r.fromBytes(w.subarray(0, E)), k = r.fromBytes(w.subarray(E, E * 2));
if (!B(Q, k))
throw new Error("bad point: is not on curve");
return { x: Q, y: k };
} else
throw new Error(`bad point: got length ${A}, expected compressed=${p} or uncompressed=${f}`);
}
const d = t.toBytes || g, I = t.fromBytes || c;
function m(U) {
const p = r.sqr(U), f = r.mul(p, U);
return r.add(r.add(f, r.mul(U, a.a)), a.b);
}
function B(U, p) {
const f = r.sqr(p), A = m(U);
return r.eql(f, A);
}
if (!B(a.Gx, a.Gy))
throw new Error("bad curve params: generator point");
const S = r.mul(r.pow(a.a, Ze), Ii), j = r.mul(r.sqr(a.b), BigInt(27));
if (r.is0(r.add(S, j)))
throw new Error("bad curve params: a or b");
function b(U, p, f = !1) {
if (!r.isValid(p) || f && r.is0(p))
throw new Error(`bad point coordinate ${U}`);
return p;
}
function N(U) {
if (!(U instanceof v))
throw new Error("ProjectivePoint expected");
}
function K(U) {
if (!l || !l.basises)
throw new Error("no endo");
return fi(U, l.basises, i.ORDER);
}
const C = Ar((U, p) => {
const { X: f, Y: A, Z: y } = U;
if (r.eql(y, r.ONE))
return { x: f, y: A };
const w = U.is0();
p == null && (p = w ? r.ONE : r.inv(y));
const E = r.mul(f, p), Q = r.mul(A, p), k = r.mul(y, p);
if (w)
return { x: r.ZERO, y: r.ZERO };
if (!r.eql(k, r.ONE))
throw new Error("invZ was invalid");
return { x: E, y: Q };
}), D = Ar((U) => {
if (U.is0()) {
if (t.allowInfinityPoint && !r.is0(U.Y))
return;
throw new Error("bad point: ZERO");
}
const { x: p, y: f } = U.toAffine();
if (!r.isValid(p) || !r.isValid(f))
throw new Error("bad point: x or y not field elements");
if (!B(p, f))
throw new Error("bad point: equation left != right");
if (!U.isTorsionFree())
throw new Error("bad point: not in prime-order subgroup");
return !0;
});
function G(U, p, f, A, y) {
return f = new v(r.mul(f.X, U), f.Y, f.Z), p = ot(A, p), f = ot(y, f), p.add(f);
}
class v {
/** Does NOT validate if the point is valid. Use `.assertValidity()`. */
constructor(p, f, A) {
this.X = b("x", p), this.Y = b("y", f, !0), this.Z = b("z", A), Object.freeze(this);
}
static CURVE() {
return a;
}
/** Does NOT validate if the point is valid. Use `.assertValidity()`. */
static fromAffine(p) {
const { x: f, y: A } = p || {};
if (!p || !r.isValid(f) || !r.isValid(A))
throw new Error("invalid affine point");
if (p instanceof v)
throw new Error("projective point not allowed");
return r.is0(f) && r.is0(A) ? v.ZERO : new v(f, A, r.ONE);
}
static fromBytes(p) {
const f = v.fromAffine(I(Ie(p, void 0, "point")));
return f.assertValidity(), f;
}
static fromHex(p) {
return v.fromBytes(q("pointHex", p));
}
get x() {
return this.toAffine().x;
}
get y() {
return this.toAffine().y;
}
/**
*
* @param windowSize
* @param isLazy true will defer table computation until the first multiplication
* @returns
*/
precompute(p = 8, f = !0) {
return Z.createCache(this, p), f || this.multiply(Ze), this;
}
// TODO: return `this`
/** A point on curve is valid if it conforms to equation. */
assertValidity() {
D(this);
}
hasEvenY() {
const { y: p } = this.toAffine();
if (!r.isOdd)
throw new Error("Field doesn't support isOdd");
return !r.isOdd(p);
}
/** Compare one point to another. */
equals(p) {
N(p);
const { X: f, Y: A, Z: y } = this, { X: w, Y: E, Z: Q } = p, k = r.eql(r.mul(f, Q), r.mul(w, y)), x = r.eql(r.mul(A, Q), r.mul(E, y));
return k && x;
}
/** Flips point to one corresponding to (x, -y) in Affine coordinates. */
negate() {
return new v(this.X, r.neg(this.Y), this.Z);
}
// Renes-Costello-Batina exception-free doubling formula.
// There is 30% faster Jacobian formula, but it is not complete.
// https://eprint.iacr.org/2015/1060, algorithm 3
// Cost: 8M + 3S + 3*a + 2*b3 + 15add.
double() {
const { a: p, b: f } = a, A = r.mul(f, Ze), { X: y, Y: w, Z: E } = this;
let Q = r.ZERO, k = r.ZERO, x = r.ZERO, F = r.mul(y, y), Y = r.mul(w, w), O = r.mul(E, E), H = r.mul(y, w);
return H = r.add(H, H), x = r.mul(y, E), x = r.add(x, x), Q = r.mul(p, x), k = r.mul(A, O), k = r.add(Q, k), Q = r.sub(Y, k), k = r.add(Y, k), k = r.mul(Q, k), Q = r.mul(H, Q), x = r.mul(A, x), O = r.mul(p, O), H = r.sub(F, O), H = r.mul(p, H), H = r.add(H, x), x = r.add(F, F), F = r.add(x, F), F = r.add(F, O), F = r.mul(F, H), k = r.add(k, F), O = r.mul(w, E), O = r.add(O, O), F = r.mul(O, H), Q = r.sub(Q, F), x = r.mul(O, Y), x = r.add(x, x), x = r.add(x, x), new v(Q, k, x);
}
// Renes-Costello-Batina exception-free addition formula.
// There is 30% faster Jacobian formula, but it is not complete.
// https://eprint.iacr.org/2015/1060, algorithm 1
// Cost: 12M + 0S + 3*a + 3*b3 + 23add.
add(p) {
N(p);
const { X: f, Y: A, Z: y } = this, { X: w, Y: E, Z: Q } = p;
let k = r.ZERO, x = r.ZERO, F = r.ZERO;
const Y = a.a, O = r.mul(a.b, Ze);
let H = r.mul(f, w), z = r.mul(A, E), M = r.mul(y, Q), T = r.add(f, A), J = r.add(w, E);
T = r.mul(T, J), J = r.add(H, z), T = r.sub(T, J), J = r.add(f, y);
let R = r.add(w, Q);
return J = r.mul(J, R), R = r.add(H, M), J = r.sub(J, R), R = r.add(A, y), k = r.add(E, Q), R = r.mul(R, k), k = r.add(z, M), R = r.sub(R, k), F = r.mul(Y, J), k = r.mul(O, M), F = r.add(k, F), k = r.sub(z, F), F = r.add(z, F), x = r.mul(k, F), z = r.add(H, H), z = r.add(z, H), M = r.mul(Y, M), J = r.mul(O, J), z = r.add(z, M), M = r.sub(H, M), M = r.mul(Y, M), J = r.add(J, M), H = r.mul(z, J), x = r.add(x, H), H = r.mul(R, J), k = r.mul(T, k), k = r.sub(k, H), H = r.mul(T, z), F = r.mul(R, F), F = r.add(F, H), new v(k, x, F);
}
subtract(p) {
return this.add(p.negate());
}
is0() {
return this.equals(v.ZERO);
}
/**
* Constant time multiplication.
* Uses wNAF method. Windowed method may be 10% faster,
* but takes 2x longer to generate and consumes 2x memory.
* Uses precomputes when available.
* Uses endomorphism for Koblitz curves.
* @param scalar by which the point would be multiplied
* @returns New point
*/
multiply(p) {
const { endo: f } = t;
if (!i.isValidNot0(p))
throw new Error("invalid scalar: out of range");
let A, y;
const w = (E) => Z.cached(this, E, (Q) => kt(v, Q));
if (f) {
const { k1neg: E, k1: Q, k2neg: k, k2: x } = K(p), { p: F, f: Y } = w(Q), { p: O, f: H } = w(x);
y = Y.add(H), A = G(f.beta, F, O, E, k);
} else {
const { p: E, f: Q } = w(p);
A = E, y = Q;
}
return kt(v, [A, y])[0];
}
/**
* Non-constant-time multiplication. Uses double-and-add algorithm.
* It's faster, but should only be used when you don't care about
* an exposed secret key e.g. sig verification, which works over *public* keys.
*/
multiplyUnsafe(p) {
const { endo: f } = t, A = this;
if (!i.isValid(p))
throw new Error("invalid scalar: out of range");
if (p === ce || A.is0())
return v.ZERO;
if (p === xe)
return A;
if (Z.hasCache(this))
return this.multiply(p);
if (f) {
const { k1neg: y, k1: w, k2neg: E, k2: Q } = K(p), { p1: k, p2: x } = gi(v, A, w, Q);
return G(f.beta, k, x, y, E);
} else
return Z.unsafe(A, p);
}
multiplyAndAddUnsafe(p, f, A) {
const y = this.multiplyUnsafe(f).add(p.multiplyUnsafe(A));
return y.is0() ? void 0 : y;
}
/**
* Converts Projective point to affine (x, y) coordinates.
* @param invertedZ Z^-1 (inverted zero) - optional, precomputation is useful for invertBatch
*/
toAffine(p) {
return C(this, p);
}
/**
* Checks whether Point is free of torsion elements (is in prime subgroup).
* Always torsion-free for cofactor=1 curves.
*/
isTorsionFree() {
const { isTorsionFree: p } = t;
return o === xe ? !0 : p ? p(v, this) : Z.unsafe(this, s).is0();
}
clearCofactor() {
const { clearCofactor: p } = t;
return o === xe ? this : p ? p(v, this) : this.multiplyUnsafe(o);
}
isSmallOrder() {
return this.multiplyUnsafe(o).is0();
}
toBytes(p = !0) {
return at(p, "isCompressed"), this.assertValidity(), d(v, this, p);
}
toHex(p = !0) {
return Ee(this.toBytes(p));
}
toString() {
return `<Point ${this.is0() ? "ZERO" : this.toHex()}>`;
}
// TODO: remove
get px() {
return this.X;
}
get py() {
return this.X;
}
get pz() {
return this.Z;
}
toRawBytes(p = !0) {
return this.toBytes(p);
}
_setWindowSize(p) {
this.precompute(p);
}
static normalizeZ(p) {
return kt(v, p);
}
static msm(p, f) {
return Ai(v, i, p, f);
}
static fromPrivateKey(p) {
return v.BASE.multiply(be(i, p));
}
}
v.BASE = new v(a.Gx, a.Gy, r.ONE), v.ZERO = new v(r.ZERO, r.ONE, r.ZERO), v.Fp = r, v.Fn = i;
const P = i.BITS, Z = new di(v, t.endo ? Math.ceil(P / 2) : P);
return v.BASE.precompute(8), v;
}
function An(e) {
return Uint8Array.of(e ? 2 : 3);
}
function hn(e, t) {
return {
secretKey: t.BYTES,
publicKey: 1 + e.BYTES,
publicKeyUncompressed: 1 + 2 * e.BYTES,
publicKeyHasPrefix: !0,
signature: 2 * t.BYTES
};
}
function yi(e, t = {}) {
const { Fn: n } = e, r = t.randomBytes || ft, i = Object.assign(hn(e.Fp, n), { seed: ln(n.ORDER) });
function a(d) {
try {
return !!be(n, d);
} catch {
return !1;
}
}
function o(d, I) {
const { publicKey: m, publicKeyUncompressed: B } = i;
try {
const S = d.length;
return I === !0 && S !== m || I === !1 && S !== B ? !1 : !!e.fromBytes(d);
} catch {
return !1;
}
}
function s(d = r(i.seed)) {
return cn(Ie(d, i.seed, "seed"), n.ORDER);
}
function l(d, I = !0) {
return e.BASE.multiply(be(n, d)).toBytes(I);
}
function u(d) {
const I = s(d);
return { secretKey: I, publicKey: l(I) };
}
function h(d) {
if (typeof d == "bigint")
return !1;
if (d instanceof e)
return !0;
const { secretKey: I, publicKey: m, publicKeyUncompressed: B } = i;
if (n.allowedLengths || I === m)
return;
const S = q("key", d).length;
return S === m || S === B;
}
function g(d, I, m = !0) {
if (h(d) === !0)
throw new Error("first arg must be private key");
if (h(I) === !1)
throw new Error("second arg must be public key");
const B = be(n, d);
return e.fromHex(I).multiply(B).toBytes(m);
}
return Object.freeze({ getPublicKey: l, getSharedSecret: g, keygen: u, Point: e, utils: {
isValidSecretKey: a,
isValidPublicKey: o,
randomSecretKey: s,
// TODO: remove
isValidPrivateKey: a,
randomPrivateKey: s,
normPrivateKeyToScalar: (d) => be(n, d),
precompute(d = 8, I = e.BASE) {
return I.precompute(d, !1);
}
}, lengths: i });
}
function bi(e, t, n = {}) {
ht(t), Pt(n, {}, {
hmac: "function",
lowS: "boolean",
randomBytes: "function",
bits2int: "function",
bits2int_modN: "function"
});
const r = n.randomBytes || ft, i = n.hmac || ((f, ...A) => pt(t, f, ne(...A))), { Fp: a, Fn: o } = e, { ORDER: s, BITS: l } = o, { keygen: u, getPublicKey: h, getSharedSecret: g, utils: c, lengths: d } = yi(e, n), I = {
prehash: !1,
lowS: typeof n.lowS == "boolean" ? n.lowS : !1,
format: void 0,
//'compact' as ECDSASigFormat,
extraEntropy: !1
}, m = "compact";
function B(f) {
const A = s >> xe;
return f > A;
}
function S(f, A) {
if (!o.isValidNot0(A))
throw new Error(`invalid signature ${f}: out of range 1..Point.Fn.ORDER`);
return A;
}
function j(f, A) {
Nt(A);
const y = d.signature, w = A === "compact" ? y : A === "recovered" ? y + 1 : void 0;
return Ie(f, w, `${A} signature`);
}
class b {
constructor(A, y, w) {
this.r = S("r", A), this.s = S("s", y), w != null && (this.recovery = w), Object.freeze(this);
}
static fromBytes(A, y = m) {
j(A, y);
let w;
if (y === "der") {
const { r: x, s: F } = le.toSig(Ie(A));
return new b(x, F);
}
y === "recovered" && (w = A[0], y = "compact", A = A.subarray(1));
const E = o.BYTES, Q = A.subarray(0, E), k = A.subarray(E, E * 2);
return new b(o.fromBytes(Q), o.fromBytes(k), w);
}
static fromHex(A, y) {
return this.fromBytes(it(A), y);
}
addRecoveryBit(A) {
return new b(this.r, this.s, A);
}
recoverPublicKey(A) {
const y = a.ORDER, { r: w, s: E, recovery: Q } = this;
if (Q == null || ![0, 1, 2, 3].includes(Q))
throw new Error("recovery id invalid");
if (s * gn < y && Q > 1)
throw new Error("recovery id is ambiguous for h>1 curve");
const x = Q === 2 || Q === 3 ? w + s : w;
if (!a.isValid(x))
throw new Error("recovery id 2 or 3 invalid");
const F = a.toBytes(x), Y = e.fromBytes(ne(An((Q & 1) === 0), F)), O = o.inv(x), H = K(q("msgHash", A)), z = o.create(-H * O), M = o.create(E * O), T = e.BASE.multiplyUnsafe(z).add(Y.multiplyUnsafe(M));
if (T.is0())
throw new Error("point at infinify");
return T.assertValidity(), T;
}
// Signatures should be low-s, to prevent malleability.
hasHighS() {
return B(this.s);
}
toBytes(A = m) {
if (Nt(A), A === "der")
return it(le.hexFromSig(this));
const y = o.toBytes(this.r), w = o.toBytes(this.s);
if (A === "recovered") {
if (this.recovery == null)
throw new Error("recovery bit must be present");
return ne(Uint8Array.of(this.recovery), y, w);
}
return ne(y, w);
}
toHex(A) {
return Ee(this.toBytes(A));
}
// TODO: remove
assertValidity() {
}
static fromCompact(A) {
return b.fromBytes(q("sig", A), "compact");
}
static fromDER(A) {
return b.fromBytes(q("sig", A), "der");
}
normalizeS() {
return this.hasHighS() ? new b(this.r, o.neg(this.s), this.recovery) : this;
}
toDERRawBytes() {
return this.toBytes("der");
}
toDERHex() {
return Ee(this.toBytes("der"));
}
toCompactRawBytes() {
return this.toBytes("compact");
}
toCompactHex() {
return Ee(this.toBytes("compact"));
}
}
const N = n.bits2int || function(A) {
if (A.length > 8192)
throw new Error("input is too large");
const y = Ge(A), w = A.length * 8 - l;
return w > 0 ? y >> BigInt(w) : y;
}, K = n.bits2int_modN || function(A) {
return o.create(N(A));
}, C = je(l);
function D(f) {
return Wn("num < 2^" + l, f, ce, C), o.toBytes(f);
}
function G(f, A) {
return Ie(f, void 0, "message"), A ? Ie(t(f), void 0, "prehashed message") : f;
}
function v(f, A, y) {
if (["recovered", "canonical"].some((z) => z in y))
throw new Error("sign() legacy options not supported");
const { lowS: w, prehash: E, extraEntropy: Q } = Et(y, I);
f = G(f, E);
const k = K(f), x = be(o, A), F = [D(x), D(k)];
if (Q != null && Q !== !1) {
const z = Q === !0 ? r(d.secretKey) : Q;
F.push(q("extraEntropy", z));
}
const Y = ne(...F), O = k;
function H(z) {
const M = N(z);
if (!o.isValidNot0(M))
return;
const T = o.inv(M), J = e.BASE.multiply(M).toAffine(), R = o.create(J.x);
if (R === ce)
return;
const _e = o.create(T * o.create(O + R * x));
if (_e === ce)
return;
let ir = (J.x === R ? 0 : 2) | Number(J.y & xe), ar = _e;
return w && B(_e) && (ar = o.neg(_e), ir ^= 1), new b(R, ar, ir);
}
return { seed: Y, k2sig: H };
}
function P(f, A, y = {}) {
f = q("message", f);
const { seed: w, k2sig: E } = v(f, A, y);
return ei(t.outputLen, o.BYTES, i)(w, E);
}
function Z(f) {
let A;
const y = typeof f == "string" || At(f), w = !y && f !== null && typeof f == "object" && typeof f.r == "bigint" && typeof f.s == "bigint";
if (!y && !w)
throw new Error("invalid signature, expected Uint8Array, hex string or Signature instance");
if (w)
A = new b(f.r, f.s);
else if (y) {
try {
A = b.fromBytes(q("sig", f), "der");
} catch (E) {
if (!(E instanceof le.Err))
throw E;
}
if (!A)
try {
A = b.fromBytes(q("sig", f), "compact");
} catch {
return !1;
}
}
return A || !1;
}
function U(f, A, y, w = {}) {
const { lowS: E, prehash: Q, format: k } = Et(w, I);
if (y = q("publicKey", y), A = G(q("message", A), Q), "strict" in w)
throw new Error("options.strict was renamed to lowS");
const x = k === void 0 ? Z(f) : b.fromBytes(q("sig", f), k);
if (x === !1)
return !1;
try {
const F = e.fromBytes(y);
if (E && x.hasHighS())
return !1;
const { r: Y, s: O } = x, H = K(A), z = o.inv(O), M = o.create(H * z), T = o.create(Y * z), J = e.BASE.multiplyUnsafe(M).add(F.multiplyUnsafe(T));
return J.is0() ? !1 : o.create(J.x) === Y;
} catch {
return !1;
}
}
function p(f, A, y = {}) {
const { prehash: w } = Et(y, I);
return A = G(A, w), b.fromBytes(f, "recovered").recoverPublicKey(A).toBytes();
}
return Object.freeze({
keygen: u,
getPublicKey: h,
getSharedSecret: g,
utils: c,
lengths: d,
Point: e,
sign: P,
verify: U,
recoverPublicKey: p,
Signature: b,
hash: t
});
}
function wi(e) {
const t = {
a: e.a,
b: e.b,
p: e.Fp.ORDER,
n: e.n,
h: e.h,
Gx: e.Gx,
Gy: e.Gy
}, n = e.Fp;
let r = e.allowedPrivateKeyLengths ? Array.from(new Set(e.allowedPrivateKeyLengths.map((o) => Math.ceil(o / 2)))) : void 0;
const i = Re(t.n, {
BITS: e.nBitLength,
allowedLengths: r,
modFromBytes: e.wrapPrivateKey
}), a = {
Fp: n,
Fn: i,
allowInfinityPoint: e.allowInfinityPoint,
endo: e.endo,
isTorsionFree: e.isTorsionFree,
clearCofactor: e.clearCofactor,
fromBytes: e.fromBytes,
toBytes: e.toBytes
};
return { CURVE: t, curveOpts: a };
}
function Ci(e) {
const { CURVE: t, curveOpts: n } = wi(e), r = {
hmac: e.hmac,
randomBytes: e.randomBytes,
lowS: e.lowS,
bits2int: e.bits2int,
bits2int_modN: e.bits2int_modN
};
return { CURVE: t, curveOpts: n, hash: e.hash, ecdsaOpts: r };
}
function ki(e, t) {
const n = t.Point;
return Object.assign({}, t, {
ProjectivePoint: n,
CURVE: Object.assign({}, e, on(n.Fn.ORDER, n.Fn.BITS))
});
}
function vi(e) {
const { CURVE: t, curveOpts: n, hash: r, ecdsaOpts: i } = Ci(e), a = mi(t, n), o = bi(a, r, i);
return ki(e, o);
}
/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
function Bi(e, t) {
const n = (r) => vi({ ...e, hash: r });
return { ...n(t), create: n };
}
/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
const Fe = {
p: BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),
n: BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),
h: BigInt(1),
a: BigInt(0),
b: BigInt(7),
Gx: BigInt("0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798"),
Gy: BigInt("0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8")
}, Qi = {
beta: BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),
basises: [
[BigInt("0x3086d221a7d46bcde86c90e49284eb15"), -BigInt("0xe4437ed6010e88286f547fa90abfe4c3")],
[BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"), BigInt("0x3086d221a7d46bcde86c90e49284eb15")]
]
}, Ei = /* @__PURE__ */ BigInt(0), br = /* @__PURE__ */ BigInt(1), Kt = /* @__PURE__ */ BigInt(2);
function xi(e) {
const t = Fe.p, n = BigInt(3), r = BigInt(6), i = BigInt(11), a = BigInt(22), o = BigInt(23), s = BigInt(44), l = BigInt(88), u = e * e * e % t, h = u * u * e % t, g = $(h, n, t) * h % t, c = $(g, n, t) * h % t, d = $(c, Kt, t) * u % t, I = $(d, i, t) * d % t, m = $(I, a, t) * I % t, B = $(m, s, t) * m % t, S = $(B, l, t) * B % t, j = $(S, s, t) * m % t, b = $(j, n, t) * h % t, N = $(b, o, t) * I % t, K = $(N, r, t) * u % t, C = $(K, Kt, t);
if (!st.eql(st.sqr(C), e))
throw new Error("Cannot find square root");
return C;
}
const st = Re(Fe.p, { sqrt: xi }), mt = Bi({ ...Fe, Fp: st, lowS: !0, endo: Qi }, fe), wr = {};
function lt(e, ...t) {
let n = wr[e];
if (n === void 0) {
const r = fe(qt(e));
n = ne(r, r), wr[e] = n;
}
return fe(ne(n, ...t));
}
const Tt = (e) => e.toBytes(!0).slice(1), He = mt.Point, Xt = (e) => e % Kt === Ei;
function Ot(e) {
const { Fn: t, BASE: n } = He, r = be(t, e), i = n.multiply(r);
return { scalar: Xt(i.y) ? r : t.neg(r), bytes: Tt(i) };
}
function fn(e) {
const t = st;
if (!t.isValidNot0(e))
throw new Error("invalid x: Fail if x ≥ p");
const n = t.create(e * e), r = t.create(n * e + BigInt(7));
let i = t.sqrt(r);
Xt(i) || (i = t.neg(i));
const a = He.fromAffine({ x: e, y: i });
return a.assertValidity(), a;
}
const Ye = Ge;
function pn(...e) {
return He.Fn.create(Ye(lt("BIP0340/challenge", ...e)));
}
function Cr(e) {
return Ot(e).bytes;
}
function Di(e, t, n = ft(32)) {
const { Fn: r } = He, i = q("message", e), { bytes: a, scalar: o } = Ot(t), s = q("auxRand", n, 32), l = r.toBytes(o ^ Ye(lt("BIP0340/aux", s))), u = lt("BIP0340/nonce", l, a, i), { bytes: h, scalar: g } = Ot(u), c = pn(h, a, i), d = new Uint8Array(64);
if (d.set(h, 0), d.set(r.toBytes(r.create(g + c * o)), 32), !In(d, i, a))
throw new Error("sign: Invalid signature produced");
return d;
}
function In(e, t, n) {
const { Fn: r, BASE: i } = He, a = q("signature", e, 64), o = q("message", t), s = q("publicKey", n, 32);
try {
const l = fn(Ye(s)), u = Ye(a.subarray(0, 32));
if (!Ht(u, br, Fe.p))
return !1;
const h = Ye(a.subarray(32, 64));
if (!Ht(h, br, Fe.n))
return !1;
const g = pn(r.toBytes(u), Tt(l), o), c = i.multiplyUnsafe(h).add(l.multiplyUnsafe(r.neg(g))), { x: d, y: I } = c.toAffine();
return !(c.is0() || !Xt(I) || d !== u);
} catch {
return !1;
}
}
const Zt = /* @__PURE__ */ (() => {
const n = (i = ft(48)) => cn(i, Fe.n);
mt.utils.randomSecretKey;
function r(i) {
const a = n(i);
return { secretKey: a, publicKey: Cr(a) };
}
return {
keygen: r,
getPublicKey: Cr,
sign: Di,
verify: In,
Point: He,
utils: {
randomSecretKey: n,
randomPrivateKey: n,
taggedHash: lt,
// TODO: remove
lift_x: fn,
pointToBytes: Tt,
numberToBytesBE: It,
bytesToNumberBE: Ge,
mod: W
},
lengths: {
secretKey: 32,
publicKey: 32,
publicKeyHasPrefix: !1,
signature: 64,
seed: 48
}
};
})(), Si = mt.CURVE.n;
function Fi(e) {
let t = 0n;
for (const n of e)
t = t << 8n | BigInt(n);
return t;
}
function Ui(e) {
const t = new Uint8Array(32);
let n = e;
for (let r = 31; r >= 0; r--)
t[r] = Number(n & 0xffn), n >>= 8n;
return t;
}
function mn(e, t) {
const n = De(t);
for (let r = 0; r <= 255; r++) {
const i = qr(n, new Uint8Array([0, r])), a = Rt(e, i, 32), o = Fi(a);
if (o >= 1n && o < Si)
return { scalar: Ui(o), counter: r };
}
throw new Error("ScalarExpand: exhausted 256 counters without a valid scalar (should not happen in practice).");
}
/*!
* hash-wasm (https://www.npmjs.com/package/hash-wasm)
* (c) Dani Biro
* @license MIT
*/
function we(e, t, n, r) {
function i(a) {
return a instanceof n ? a : new n(function(o) {
o(a);
});
}
return new (n || (n = Promise))(function(a, o) {
function s(h) {
try {
u(r.next(h));
} catch (g) {
o(g);
}
}
function l(h) {
try {
u(r.throw(h));
} catch (g) {
o(g);
}
}
function u(h) {
h.done ? a(h.value) : i(h.value).then(s, l);
}
u((r = r.apply(e, [])).next());
});
}
class V {
constructor() {
this.mutex = Promise.resolve();
}
lock() {
let t = () => {
};
return this.mutex = this.mutex.then(() => new Promise(t)), new Promise((n) => {
t = n;
});
}
dispatch(t) {
return we(this, void 0, void 0, function* () {
const n = yield this.lock();
try {
return yield Promise.resolve(t());
} finally {
n();
}
});
}
}
var xt;
function Gi() {
return typeof globalThis < "u" ? globalThis : typeof self < "u" ? self : typeof window < "u" ? window : global;
}
const Vt = Gi(), Dt = (xt = Vt.Buffer) !== null && xt !== void 0 ? xt : null, Hi = Vt.TextEncoder ? new Vt.TextEncoder() : null;
function yn(e, t) {
return (e & 15) + (e >> 6 | e >> 3 & 8) << 4 | (t & 15) + (t >> 6 | t >> 3 & 8);
}
function bn(e, t) {
const n = t.length >> 1;
for (let r = 0; r < n; r++) {
const i = r << 1;
e[r] = yn(t.charCodeAt(i), t.charCodeAt(i + 1));
}
}
function Ni(e, t) {
if (e.length !== t.length * 2)
return !1;
for (let n = 0; n < t.length; n++) {
const r = n << 1;
if (t[n] !== yn(e.charCodeAt(r), e.charCodeAt(r + 1)))
return !1;
}
return !0;
}
const kr = 87, vr = 48;
function zt(e, t, n) {
let r = 0;
for (let i = 0; i < n; i++) {
let a = t[i] >>> 4;
e[r++] = a > 9 ? a + kr : a + vr, a = t[i] & 15, e[r++] = a > 9 ? a + kr : a + vr;
}
return String.fromCharCode.apply(null, e);
}
const ue = Dt !== null ? (e) => {
if (typeof e == "string") {
const t = Dt.from(e, "utf8");
return new Uint8Array(t.buffer, t.byteOffset, t.length);
}
if (Dt.isBuffer(e))
return new Uint8Array(e.buffer, e.byteOffset, e.length);
if (ArrayBuffer.isView(e))
return new Uint8Array(e.buffer, e.byteOffset, e.byteLength);
throw new Error("Invalid data type!");
} : (e) => {
if (typeof e == "string")
return Hi.encode(e);
if (ArrayBuffer.isView(e))
return new Uint8Array(e.buffer, e.byteOffset, e.byteLength);
throw new Error("Invalid data type!");
}, te = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", ze = new Uint8Array(256);
for (let e = 0; e < te.length; e++)
ze[te.charCodeAt(e)] = e;
function Br(e, t = !0) {
const n = e.length, r = n % 3, i = [], a = n - r;
for (let o = 0; o < a; o += 3) {
const s = (e[o] << 16 & 16711680) + (e[o + 1] << 8 & 65280) + (e[o + 2] & 255), l = te.charAt(s >> 18 & 63) + te.charAt(s >> 12 & 63) + te.charAt(s >> 6 & 63) + te.charAt(s & 63);
i.push(l);
}
if (r === 1) {
const o = e[n - 1], s = te.charAt(o >> 2), l = te.charAt(o << 4 & 63);
i.push(`${s}${l}`), t && i.push("==");
} else if (r === 2) {
const o = (e[n - 2] << 8) + e[n - 1], s = te.charAt(o >> 10), l = te.charAt(o >> 4 & 63), u = te.charAt(o << 2 & 63);
i.push(`${s}${l}${u}`), t && i.push("=");
}
return i.join("");
}
function Ki(e) {
let t = Math.floor(e.length * 0.75);
const n = e.length;
return e[n - 1] === "=" && (t -= 1, e[n - 2] === "=" && (t -= 1)), t;
}
function Oi(e) {
const t = Ki(e), n = e.length, r = new Uint8Array(t);
let i = 0;
for (let a = 0; a < n; a += 4) {
const o = ze[e.charCodeAt(a)], s = ze[e.charCodeAt(a + 1)], l = ze[e.charCodeAt(a + 2)], u = ze[e.charCodeAt(a + 3)];
r[i] = o << 2 | s >> 4, i += 1, r[i] = (s & 15) << 4 | l >> 2, i += 1, r[i] = (l & 3) << 6 | u & 63, i += 1;
}
return r;
}
const $e = 16 * 1024, Ke = 4, Vi = new V(), St = /* @__PURE__ */ new Map();
function wn(e, t) {
return we(this, void 0, void 0, function* () {
let n = null, r = null, i = !1;
if (typeof WebAssembly > "u")
throw new Error("WebAssembly is not supported in this environment!");
const a = (C, D = 0) => {
r.set(C, D);
}, o = () => r, s = () => n.exports, l = (C) => {
n.exports.Hash_SetMemorySize(C);
const D = n.exports.Hash_GetBuffer(), G = n.exports.memory.buffer;
r = new Uint8Array(G, D, C);
}, u = () => new DataView(n.exports.memory.buffer).getUint32(n.exports.STATE_SIZE, !0), h = Vi.dispatch(() => we(this, void 0, void 0, function* () {
if (!St.has(e.name)) {
const D = Oi(e.data), G = WebAssembly.compile(D);
St.set(e.name, G);
}
const C = yield St.get(e.name);
n = yield WebAssembly.instantiate(C, {
// env: {
// emscripten_memcpy_big: (dest, src, num) => {
// const memoryBuffer = wasmInstance.exports.memory.buffer;
// const memView = new Uint8Array(memoryBuffer, 0);
// memView.set(memView.subarray(src, src + num), dest);
// },
// print_memory: (offset, len) => {
// const memoryBuffer = wasmInstance.exports.memory.buffer;
// const memView = new Uint8Array(memoryBuffer, 0);
// console.log('print_int32', memView.subarray(offset, offset + len));
// },
// },
});
})), g = () => we(this, void 0, void 0, function* () {
n || (yield h);
const C = n.exports.Hash_GetBuffer(), D = n.exports.memory.buffer;
r = new Uint8Array(D, C, $e);
}), c = (C = null) => {
i = !0, n.exports.Hash_Init(C);
}, d = (C) => {
let D = 0;
for (; D < C.length; ) {
const G = C.subarray(D, D + $e);
D += G.length, r.set(G), n.exports.Hash_Update(G.length);
}
}, I = (C) => {
if (!i)
throw new Error("update() called before init()");
const D = ue(C);
d(D);
}, m = new Uint8Array(t * 2), B = (C, D = null) => {
if (!i)
throw new Error("digest() called before init()");
return i = !1, n.exports.Hash_Final(D), C === "binary" ? r.slice(0, t) : zt(m, r, t);
}, S = () => {
if (!i)
throw new Error("save() can only be called after init() and before digest()");
const C = n.exports.Hash_GetState(), D = u(), G = n.exports.memory.buffer, v = new Uint8Array(G, C, D), P = new Uint8Array(Ke + D);
return bn(P, e.hash), P.set(v, Ke), P;
}, j = (C) => {
if (!(C instanceof Uint8Array))
throw new Error("load() expects an Uint8Array generated by save()");
const D = n.exports.Hash_GetState(), G = u(), v = Ke + G, P = n.exports.memory.buffer;
if (C.length !== v)
throw new Error(`Bad state length (expected ${v} bytes, got ${C.length})`);
if (!Ni(e.hash, C.subarray(0, Ke)))
throw new Error("This state was written by an incompatible hash implementation");
const Z = C.subarray(Ke);
new Uint8Array(P, D, G).set(Z), i = !0;
}, b = (C) => typeof C == "string" ? C.length < $e / 4 : C.byteLength < $e;
let N = b;
switch (e.name) {
case "argon2":
case "scrypt":
N = () => !0;
break;
case "blake2b":
case "blake2s":
N = (C, D) => D <= 512 && b(C);
break;
case "blake3":
N = (C, D) => D === 0 && b(C);
break;
case "xxhash64":
// cannot simplify
case "xxhash3":
case "xxhash128":
case "crc64":
N = () => !1;
break;
}
const K = (C, D = null, G = null) => {
if (!N(C, D))
return c(D), I(C), B("hex", G);
const v = ue(C);
return r.set(v), n.exports.Hash_Calculate(v.length, D, G), zt(m, r, t);
};
return yield g(), {
getMemory: o,
writeMemory: a,
getExports: s,
setMemorySize: l,
init: c,
update: I,
digest: B,
save: S,
load: j,
calculate: K,
hashLength: t
};
});
}
new V();
var zi = "argon2", Ji = "AGFzbQEAAAABKQVgAX8Bf2AAAX9gEH9/f39/f39/f39/f39/f38AYAR/f39/AGACf38AAwYFAAECAwQFBgEBAoCAAgYIAX8BQZCoBAsHQQQGbWVtb3J5AgASSGFzaF9TZXRNZW1vcnlTaXplAAAOSGFzaF9HZXRCdWZmZXIAAQ5IYXNoX0NhbGN1bGF0ZQAECvEyBVgBAn9BACEBAkAgAEEAKAKICCICRg0AAkAgACACayIAQRB2IABBgIB8cSAASWoiAEAAQX9HDQBB/wHADwtBACEBQQBBACkDiAggAEEQdK18NwOICAsgAcALcAECfwJAQQAoAoAIIgANAEEAPwBBEHQiADYCgAhBACgCiAgiAUGAgCBGDQACQEGAgCAgAWsiAEEQdiAAQYCAfHEgAElqIgBAAEF/Rw0AQQAPC0EAQQApA4gIIABBEHStfDcDiAhBACgCgAghAAsgAAvcDgECfiAAIAQpAwAiECAAKQMAIhF8IBFCAYZC/v///x+DIBBC/////w+DfnwiEDcDACAMIBAgDCkDAIVCIIkiEDcDACAIIBAgCCkDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgBCAQIAQpAwCFQiiJIhA3AwAgACAQIAApAwAiEXwgEEL/////D4MgEUIBhkL+////H4N+fCIQNwMAIAwgECAMKQMAhUIwiSIQNwMAIAggECAIKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACAEIBAgBCkDAIVCAYk3AwAgASAFKQMAIhAgASkDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgDSAQIA0pAwCFQiCJIhA3AwAgCSAQIAkpAwAiEXwgEUIBhkL+////H4MgEEL/////D4N+fCIQNwMAIAUgECAFKQMAhUIoiSIQNwMAIAEgECABKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACANIBAgDSkDAIVCMIkiEDcDACAJIBAgCSkDACIRfCAQQv////8PgyARQgGGQv7///8fg358IhA3AwAgBSAQIAUpAwCFQgGJNwMAIAIgBikDACIQIAIpAwAiEXwgEUIBhkL+////H4MgEEL/////D4N+fCIQNwMAIA4gECAOKQMAhUIgiSIQNwMAIAogECAKKQMAIhF8IBFCAYZC/v///x+DIBBC/////w+DfnwiEDcDACAGIBAgBikDAIVCKIkiEDcDACACIBAgAikDACIRfCAQQv////8PgyARQgGGQv7///8fg358IhA3AwAgDiAQIA4pAwCFQjCJIhA3AwAgCiAQIAopAwAiEXwgEEL/////D4MgEUIBhkL+////H4N+fCIQNwMAIAYgECAGKQMAhUIBiTcDACADIAcpAwAiECADKQMAIhF8IBFCAYZC/v///x+DIBBC/////w+DfnwiEDcDACAPIBAgDykDAIVCIIkiEDcDACALIBAgCykDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgByAQIAcpAwCFQiiJIhA3AwAgAyAQIAMpAwAiEXwgEEL/////D4MgEUIBhkL+////H4N+fCIQNwMAIA8gECAPKQMAhUIwiSIQNwMAIAsgECALKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACAHIBAgBykDAIVCAYk3AwAgACAFKQMAIhAgACkDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgDyAQIA8pAwCFQiCJIhA3AwAgCiAQIAopAwAiEXwgEUIBhkL+////H4MgEEL/////D4N+fCIQNwMAIAUgECAFKQMAhUIoiSIQNwMAIAAgECAAKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACAPIBAgDykDAIVCMIkiEDcDACAKIBAgCikDACIRfCAQQv////8PgyARQgGGQv7///8fg358IhA3AwAgBSAQIAUpAwCFQgGJNwMAIAEgBikDACIQIAEpAwAiEXwgEUIBhkL+////H4MgEEL/////D4N+fCIQNwMAIAwgECAMKQMAhUIgiSIQNwMAIAsgECALKQMAIhF8IBFCAYZC/v///x+DIBBC/////w+DfnwiEDcDACAGIBAgBikDAIVCKIkiEDcDACABIBAgASkDACIRfCAQQv////8PgyARQgGGQv7///8fg358IhA3AwAgDCAQIAwpAwCFQjCJIhA3AwAgCyAQIAspAwAiEXwgEEL/////D4MgEUIBhkL+////H4N+fCIQNwMAIAYgECAGKQMAhUIBiTcDACACIAcpAwAiECACKQMAIhF8IBFCAYZC/v///x+DIBBC/////w+DfnwiEDcDACANIBAgDSkDAIVCIIkiEDcDACAIIBAgCCkDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgByAQIAcpAwCFQiiJIhA3AwAgAiAQIAIpAwAiEXwgEEL/////D4MgEUIBhkL+////H4N+fCIQNwMAIA0gECANKQMAhUIwiSIQNwMAIAggECAIKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACAHIBAgBykDAIVCAYk3AwAgAyAEKQMAIhAgAykDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgDiAQIA4pAwCFQiCJIhA3AwAgCSAQIAkpAwAiEXwgEUIBhkL+////H4MgEEL/////D4N+fCIQNwMAIAQgECAEKQMAhUIoiSIQNwMAIAMgECADKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACAOIBAgDikDAIVCMIkiEDcDACAJIBAgCSkDACIRfCAQQv////8PgyARQgGGQv7///8fg358IhA3AwAgBCAQIAQpAwCFQgGJNwMAC98aAQN/QQAhBEEAIAIpAwAgASkDAIU3A5AIQQAgAikDCCABKQMIhTcDmAhBACACKQMQIAEpAxCFNwOgCEEAIAIpAxggASkDGIU3A6gIQQAgAikDICABKQMghTcDsAhBACACKQMoIAEpAyiFNwO4CEEAIAIpAzAgASkDMIU3A8AIQQAgAikDOCABKQM4hTcDyAhBACACKQNAIAEpA0CFNwPQCEEAIAIpA0ggASkDSIU3A9gIQQAgAikDUCABKQNQhTcD4AhBACACKQNYIAEpA1iFNwPoCEEAIAIpA2AgASkDYIU3A/AIQQAgAikDaCABKQNohTcD+AhBACACKQNwIAEpA3CFNwOACUEAIAIpA3ggASkDeIU3A4gJQQAgAikDgAEgASkDgAGFNwOQCUEAIAIpA4gBIAEpA4gBhTcDmAlBACACKQOQASABKQOQAYU3A6AJQQAgAikDmAEgASkDmAGFNwOoCUEAIAIpA6ABIAEpA6ABhTcDsAlBACACKQOoASABKQOoAYU3A7gJQQAgAikDsAEgASkDsAGFNwPACUEAIAIpA7gBIAEpA7gBhTcDyAlBACACKQPAASABKQPAAYU3A9AJQQAgAikDyAEgASkD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", Yi = "e4cdc523", Mi = {
name: zi,
data: Ji,
hash: Yi
}, qi = "blake2b", ji = "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", Ri = "c6f286e6", _i = {
name: qi,
data: ji,
hash: Ri
};
new V();
function Qr(e) {
return !Number.isInteger(e) || e < 8 || e > 512 || e % 8 !== 0 ? new Error("Invalid variant! Valid values: 8, 16, ..., 512") : null;
}
function Pi(e, t) {
return e | t << 16;
}
function Jt(e = 512, t = null) {
if (Qr(e))
return Promise.reject(Qr(e));
let n = null, r = e;
if (t !== null) {
if (n = ue(t), n.length > 64)
return Promise.reject(new Error("Max key length is 64 bytes"));
r = Pi(e, n.length);
}
const i = e / 8;
return wn(_i, i).then((a) => {
r > 512 && a.writeMemory(n), a.init(r);
const o = {
init: r > 512 ? () => (a.writeMemory(n), a.init(r), o) : () => (a.init(r), o),
update: (s) => (a.update(s), o),
// biome-ignore lint/suspicious/noExplicitAny: Conflict with IHasher type
digest: (s) => a.digest(s),
save: () => a.save(),
load: (s) => (a.load(s), o),
blockSize: 128,
digestSize: i
};
return o;
});
}
function Li(e, t, n) {
const r = [
`m=${t.memorySize}`,
`t=${t.iterations}`,
`p=${t.parallelism}`
].join(",");
return `$argon2${t.hashType}$v=19$${r}$${Br(e, !1)}$${Br(n, !1)}`;
}
const Er = new DataView(new ArrayBuffer(4));
function se(e) {
return Er.setInt32(0, e, !0), new Uint8Array(Er.buffer);
}
function Ft(e, t, n) {
return we(this, void 0, void 0, function* () {
if (n <= 64) {
const l = yield Jt(n * 8);
return l.update(se(n)), l.update(t), l.digest("binary");
}
const r = Math.ceil(n / 32) - 2, i = new Uint8Array(n);
e.init(), e.update(se(n)), e.update(t);
let a = e.digest("binary");
i.set(a.subarray(0, 32), 0);
for (let l = 1; l < r; l++)
e.init(), e.update(a), a = e.digest("binary"), i.set(a.subarray(0, 32), l * 32);
const o = n - 32 * r;
let s;
return o === 64 ? (s = e, s.init()) : s = yield Jt(o * 8), s.update(a), a = s.digest("binary"), i.set(a.subarray(0, o), r * 32), i;
});
}
function Ti(e) {
switch (e) {
case "d":
return 0;
case "i":
return 1;
default:
return 2;
}
}
function Xi(e) {
return we(this, void 0, void 0, function* () {
var t;
const { parallelism: n, iterations: r, hashLength: i } = e, a = ue(e.password), o = ue(e.salt), s = 19, l = Ti(e.hashType), { memorySize: u } = e, h = ue((t = e.secret) !== null && t !== void 0 ? t : ""), [g, c] = yield Promise.all([
wn(Mi, 1024),
Jt(512)
]);
g.setMemorySize(u * 1024 + 1024);
const d = new Uint8Array(24), I = new DataView(d.buffer);
I.setInt32(0, n, !0), I.setInt32(4, i, !0), I.setInt32(8, u, !0), I.setInt32(12, r, !0), I.setInt32(16, s, !0), I.setInt32(20, l, !0), g.writeMemory(d, u * 1024), c.init(), c.update(d), c.update(se(a.length)), c.update(a), c.update(se(o.length)), c.update(o), c.update(se(h.length)), c.update(h), c.update(se(0));
const B = Math.floor(u / (n * 4)) * 4, S = new Uint8Array(72), j = c.digest("binary");
S.set(j);
for (let K = 0; K < n; K++) {
S.set(se(0), 64), S.set(se(K), 68);
let C = K * B, D = yield Ft(c, S, 1024);
g.writeMemory(D, C * 1024), C += 1, S.set(se(1), 64), D = yield Ft(c, S, 1024), g.writeMemory(D, C * 1024);
}
const b = new Uint8Array(1024);
bn(b, g.calculate(new Uint8Array([]), u));
const N = yield Ft(c, b, i);
if (e.outputType === "hex") {
const K = new Uint8Array(i * 2);
return zt(K, N, i);
}
return e.outputType === "encoded" ? Li(o, e, N) : N;
});
}
const Zi = (e) => {
var t;
if (!e || typeof e != "object")
throw new Error("Invalid options parameter. It requires an object.");
if (!e.password)
throw new Error("Password must be specified");
if (e.password = ue(e.password), e.password.length < 1)
throw new Error("Password must be specified");
if (!e.salt)
throw new Error("Salt must be specified");
if (e.salt = ue(e.salt), e.salt.length < 8)
throw new Error("Salt should be at least 8 bytes long");
if (e.secret = ue((t = e.secret) !== null && t !== void 0 ? t : ""), !Number.isInteger(e.iterations) || e.iterations < 1)
throw new Error("Iterations should be a positive number");
if (!Number.isInteger(e.parallelism) || e.parallelism < 1)
throw new Error("Parallelism should be a positive number");
if (!Number.isInteger(e.hashLength) || e.hashLength < 4)
throw new Error("Hash length should be at least 4 bytes.");
if (!Number.isInteger(e.memorySize))
throw new Error("Memory size should be specified.");
if (e.memorySize < 8 * e.parallelism)
throw new Error("Memory size should be at least 8 * parallelism.");
if (e.outputType === void 0 && (e.outputType = "hex"), !["hex", "binary", "encoded"].includes(e.outputType))
throw new Error(`Insupported output type ${e.outputType}. Valid values: ['hex', 'binary', 'encoded']`);
};
function $i(e) {
return we(this, void 0, void 0, function* () {
return Zi(e), Xi(Object.assign(Object.assign({}, e), { hashType: "id" }));
});
}
new V();
new V();
new V();
new V();
new V();
new V();
new V();
new V();
new V();
new V();
new V();
new V();
new V();
new V();
new V();
new V();
new V();
new V();
new V();
new V();
const We = {
id: "bitlogin-argon2id-v1",
memoryKiB: 64 * 1024,
iterations: 3,
parallelism: 1,
hashLength: 32
};
async function Wi(e, t) {
if (t.length < 8)
throw new Error("Argon2id salt must be at least 8 bytes.");
const n = await $i({
password: e,
salt: t,
parallelism: We.parallelism,
iterations: We.iterations,
memorySize: We.memoryKiB,
hashLength: We.hashLength,
outputType: "binary"
});
return n instanceof Uint8Array ? n : new Uint8Array(n);
}
function e1(e) {
return new TextEncoder().encode(e.normalize("NFKC"));
}
class Oe extends Error {
constructor(t) {
super(t), this.name = "LoginNameError";
}
}
const xr = 3, Dr = 32, t1 = /^[\x00-\x7F]*$/u, r1 = /^[a-z0-9._-]+$/u, n1 = /[._-]{2,}/u, Sr = /[a-z0-9]/u;
function i1(e) {
const t = e.trim().toLowerCase();
if (!t1.test(t))
throw new Oe("Login name must contain ASCII characters only.");
if (t.length < xr || t.length > Dr)
throw new Oe(`Login name must be between ${xr} and ${Dr} characters.`);
if (!r1.test(t))
throw new Oe("Login name may only contain a-z, 0-9, '.', '_', and '-'.");
const n = t[0], r = t[t.length - 1];
if (!Sr.test(n) || !Sr.test(r))
throw new Oe("Login name must not begin or end with punctuation.");
if (n1.test(t))
throw new Oe("Login name must not contain consecutive punctuation.");
return t;
}
function H1(e) {
try {
return i1(e), !0;
} catch {
return !1;
}
}
function a1(e) {
return fe(qr(De("bitlogin/password-salt/v1"), new Uint8Array([0]), De(e))).slice(0, 16);
}
async function N1(e, t) {
const n = a1(t), r = e1(e), i = await Wi(r, n), a = jr(Rr("bitlogin/password-root/v1"), i), o = mn(a, "bitlogin/password-locator-signing/v1"), s = Rt(a, "bitlogin/password-capsule-encryption/v1", 32);
return _r(r, i, a), { locatorPrivateKey: o.scalar, capsuleKey: s };
}
function K1(e) {
const t = jr(Rr("bitlogin/recovery-root/v1"), e), n = mn(t, "bitlogin/recovery-signing/v1"), r = Rt(t, "bitlogin/recovery-capsule-encryption/v1", 32);
return _r(t), { recoveryPrivateKey: n.scalar, capsuleKey: r };
}
const o1 = mt.CURVE.n;
function s1(e) {
if (e.length !== 32)
return !1;
let t = 0n;
for (const n of e)
t = t << 8n | BigInt(n);
return t >= 1n && t < o1;
}
function O1() {
for (; ; ) {
const e = qe(32);
if (s1(e))
return e;
}
}
function l1(e) {
return Zt.getPublicKey(e);
}
function V1(e) {
return jt(l1(e));
}
function c1(e, t) {
return Zt.sign(e, t);
}
function u1(e, t, n) {
try {
return Zt.verify(e, t, n);
} catch {
return !1;
}
}
function d1(e) {
return JSON.stringify([0, e.pubkey, e.created_at, e.kind, e.tags, e.content]);
}
function Cn(e) {
return jt(fe(De(d1(e))));
}
function z1(e, t) {
const n = Cn(e), r = jt(c1(Je(n), t));
return { ...e, id: n, sig: r };
}
function Fr(e) {
if (!/^[0-9a-f]{64}$/u.test(e.id) || !/^[0-9a-f]{64}$/u.test(e.pubkey) || !/^[0-9a-f]{128}$/u.test(e.sig) || Cn(e) !== e.id)
return !1;
try {
return u1(Je(e.sig), Je(e.id), Je(e.pubkey));
} catch {
return !1;
}
}
function J1(e, t) {
return e.tags.find((n) => n[0] === t)?.[1];
}
const Y1 = 0, M1 = 5, q1 = 10002, j1 = 10050, R1 = 22242, _1 = 30078, P1 = "bitlogin:password:v1", L1 = "bitlogin:recovery:v1", T1 = "bitlogin.credential.v1", X1 = "bitlogin.recovery.v1", kn = "bitlogin.recovery-export.v3";
var Ut, Ur;
function g1() {
return Ur || (Ur = 1, Ut = function e(t) {
if (typeof t == "number" && isNaN(t))
throw new Error("NaN is not allowed");
if (typeof t == "number" && !isFinite(t))
throw new Error("Infinity is not allowed");
return t === null || typeof t != "object" ? JSON.stringify(t) : t.toJSON instanceof Function ? e(t.toJSON()) : Array.isArray(t) ? `[${t.reduce((i, a, o) => `${i}${o === 0 ? "" : ","}${e(a === void 0 || typeof a == "symbol" ? null : a)}`, "")}]` : `{${Object.keys(t).sort().reduce((r, i) => {
if (t[i] === void 0 || typeof t[i] == "symbol")
return r;
const a = r.length === 0 ? "" : ",";
return `${r}${a}${e(i)}:${e(t[i])}`;
}, "")}}`;
}), Ut;
}
var A1 = g1();
const Z1 = /* @__PURE__ */ Kr(A1);
/*! scure-base - MIT License (c) 2022 Paul Miller (paulmillr.com) */
function Ue(e) {
return e instanceof Uint8Array || ArrayBuffer.isView(e) && e.constructor.name === "Uint8Array";
}
function h1(e, ...t) {
if (!Ue(e))
throw new Error("Uint8Array expected");
if (t.length > 0 && !t.includes(e.length))
throw new Error("Uint8Array expected of length " + t + ", got length=" + e.length);
}
function vn(e, t) {
return Array.isArray(t) ? t.length === 0 ? !0 : e ? t.every((n) => typeof n == "string") : t.every((n) => Number.isSafeInteger(n)) : !1;
}
function Bn(e) {
if (typeof e != "function")
throw new Error("function expected");
return !0;
}
function ke(e, t) {
if (typeof t != "string")
throw new Error(`${e}: string expected`);
return !0;
}
function Ne(e) {
if (!Number.isSafeInteger(e))
throw new Error(`invalid integer: ${e}`);
}
function ct(e) {
if (!Array.isArray(e))
throw new Error("array expected");
}
function ut(e, t) {
if (!vn(!0, t))
throw new Error(`${e}: array of strings expected`);
}
function $t(e, t) {
if (!vn(!1, t))
throw new Error(`${e}: array of numbers expected`);
}
// @__NO_SIDE_EFFECTS__
function Wt(...e) {
const t = (a) => a, n = (a, o) => (s) => a(o(s)), r = e.map((a) => a.encode).reduceRight(n, t), i = e.map((a) => a.decode).reduce(n, t);
return { encode: r, decode: i };
}
// @__NO_SIDE_EFFECTS__
function er(e) {
const t = typeof e == "string" ? e.split("") : e, n = t.length;
ut("alphabet", t);
const r = new Map(t.map((i, a) => [i, a]));
return {
encode: (i) => (ct(i), i.map((a) => {
if (!Number.isSafeInteger(a) || a < 0 || a >= n)
throw new Error(`alphabet.encode: digit index outside alphabet "${a}". Allowed: ${e}`);
return t[a];
})),
decode: (i) => (ct(i), i.map((a) => {
ke("alphabet.decode", a);
const o = r.get(a);
if (o === void 0)
throw new Error(`Unknown letter: "${a}". Allowed: ${e}`);
return o;
}))
};
}
// @__NO_SIDE_EFFECTS__
function tr(e = "") {
return ke("join", e), {
encode: (t) => (ut("join.decode", t), t.join(e)),
decode: (t) => (ke("join.decode", t), t.split(e))
};
}
// @__NO_SIDE_EFFECTS__
function Qn(e, t = "=") {
return Ne(e), ke("padding", t), {
encode(n) {
for (ut("padding.encode", n); n.length * e % 8; )
n.push(t);
return n;
},
decode(n) {
ut("padding.decode", n);
let r = n.length;
if (r * e % 8)
throw new Error("padding: invalid, string should have whole number of bytes");
for (; r > 0 && n[r - 1] === t; r--)
if ((r - 1) * e % 8 === 0)
throw new Error("padding: invalid, string has too much padding");
return n.slice(0, r);
}
};
}
function Yt(e, t, n) {
if (t < 2)
throw new Error(`convertRadix: invalid from=${t}, base cannot be less than 2`);
if (n < 2)
throw new Error(`convertRadix: invalid to=${n}, base cannot be less than 2`);
if (ct(e), !e.length)
return [];
let r = 0;
const i = [], a = Array.from(e, (s) => {
if (Ne(s), s < 0 || s >= t)
throw new Error(`invalid integer: ${s}`);
return s;
}), o = a.length;
for (; ; ) {
let s = 0, l = !0;
for (let u = r; u < o; u++) {
const h = a[u], g = t * s, c = g + h;
if (!Number.isSafeInteger(c) || g / t !== s || c - h !== g)
throw new Error("convertRadix: carry overflow");
const d = c / n;
s = c % n;
const I = Math.floor(d);
if (a[u] = I, !Number.isSafeInteger(I) || I * n + s !== c)
throw new Error("convertRadix: carry overflow");
if (l)
I ? l = !1 : r = u;
else continue;
}
if (i.push(s), l)
break;
}
for (let s = 0; s < e.length - 1 && e[s] === 0; s++)
i.push(0);
return i.reverse();
}
const En = (e, t) => t === 0 ? e : En(t, e % t), dt = /* @__NO_SIDE_EFFECTS__ */ (e, t) => e + (t - En(e, t)), et = /* @__PURE__ */ (() => {
let e = [];
for (let t = 0; t < 40; t++)
e.push(2 ** t);
return e;
})();
function gt(e, t, n, r) {
if (ct(e), t <= 0 || t > 32)
throw new Error(`convertRadix2: wrong from=${t}`);
if (n <= 0 || n > 32)
throw new Error(`convertRadix2: wrong to=${n}`);
if (/* @__PURE__ */ dt(t, n) > 32)
throw new Error(`convertRadix2: carry overflow from=${t} to=${n} carryBits=${/* @__PURE__ */ dt(t, n)}`);
let i = 0, a = 0;
const o = et[t], s = et[n] - 1, l = [];
for (const u of e) {
if (Ne(u), u >= o)
throw new Error(`convertRadix2: invalid data word=${u} from=${t}`);
if (i = i << t | u, a + t > 32)
throw new Error(`convertRadix2: carry overflow pos=${a} from=${t}`);
for (a += t; a >= n; a -= n)
l.push((i >> a - n & s) >>> 0);
const h = et[a];
if (h === void 0)
throw new Error("invalid carry");
i &= h - 1;
}
if (i = i << n - a & s, !r && a >= t)
throw new Error("Excess padding");
if (!r && i > 0)
throw new Error(`Non-zero padding: ${i}`);
return r && a > 0 && l.push(i >>> 0), l;
}
// @__NO_SIDE_EFFECTS__
function f1(e) {
Ne(e);
const t = 2 ** 8;
return {
encode: (n) => {
if (!Ue(n))
throw new Error("radix.encode input should be Uint8Array");
return Yt(Array.from(n), t, e);
},
decode: (n) => ($t("radix.decode", n), Uint8Array.from(Yt(n, e, t)))
};
}
// @__NO_SIDE_EFFECTS__
function rr(e, t = !1) {
if (Ne(e), e <= 0 || e > 32)
throw new Error("radix2: bits should be in (0..32]");
if (/* @__PURE__ */ dt(8, e) > 32 || /* @__PURE__ */ dt(e, 8) > 32)
throw new Error("radix2: carry overflow");
return {
encode: (n) => {
if (!Ue(n))
throw new Error("radix2.encode input should be Uint8Array");
return gt(Array.from(n), 8, e, !t);
},
decode: (n) => ($t("radix2.decode", n), Uint8Array.from(gt(n, e, 8, t)))
};
}
function Gr(e) {
return Bn(e), function(...t) {
try {
return e.apply(null, t);
} catch {
}
};
}
function p1(e, t) {
return Ne(e), Bn(t), {
encode(n) {
if (!Ue(n))
throw new Error("checksum.encode: input should be Uint8Array");
const r = t(n).slice(0, e), i = new Uint8Array(n.length + e);
return i.set(n), i.set(r, n.length), i;
},
decode(n) {
if (!Ue(n))
throw new Error("checksum.decode: input should be Uint8Array");
const r = n.slice(0, -e), i = n.slice(-e), a = t(r).slice(0, e);
for (let o = 0; o < e; o++)
if (a[o] !== i[o])
throw new Error("Invalid checksum");
return r;
}
};
}
const $1 = {
alphabet: er,
chain: Wt,
checksum: p1,
convertRadix: Yt,
convertRadix2: gt,
radix: f1,
radix2: rr,
join: tr,
padding: Qn
}, I1 = typeof Uint8Array.from([]).toBase64 == "function" && typeof Uint8Array.fromBase64 == "function", m1 = (e, t) => {
ke("base64", e);
const n = /^[A-Za-z0-9=+/]+$/, r = "base64";
if (e.length > 0 && !n.test(e))
throw new Error("invalid base64");
return Uint8Array.fromBase64(e, { alphabet: r, lastChunkHandling: "strict" });
}, W1 = I1 ? {
encode(e) {
return h1(e), e.toBase64();
},
decode(e) {
return m1(e);
}
} : /* @__PURE__ */ Wt(/* @__PURE__ */ rr(6), /* @__PURE__ */ er("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"), /* @__PURE__ */ Qn(6), /* @__PURE__ */ tr("")), Mt = /* @__PURE__ */ Wt(/* @__PURE__ */ er("qpzry9x8gf2tvdw0s3jn54khce6mua7l"), /* @__PURE__ */ tr("")), Hr = [996825010, 642813549, 513874426, 1027748829, 705979059];
function Ve(e) {
const t = e >> 25;
let n = (e & 33554431) << 5;
for (let r = 0; r < Hr.length; r++)
(t >> r & 1) === 1 && (n ^= Hr[r]);
return n;
}
function Nr(e, t, n = 1) {
const r = e.length;
let i = 1;
for (let a = 0; a < r; a++) {
const o = e.charCodeAt(a);
if (o < 33 || o > 126)
throw new Error(`Invalid prefix (${e})`);
i = Ve(i) ^ o >> 5;
}
i = Ve(i);
for (let a = 0; a < r; a++)
i = Ve(i) ^ e.charCodeAt(a) & 31;
for (let a of t)
i = Ve(i) ^ a;
for (let a = 0; a < 6; a++)
i = Ve(i);
return i ^= n, Mt.encode(gt([i % et[30]], 30, 5, !1));
}
// @__NO_SIDE_EFFECTS__
function y1(e) {
const t = e === "bech32" ? 1 : 734539939, n = /* @__PURE__ */ rr(5), r = n.decode, i = n.encode, a = Gr(r);
function o(g, c, d = 90) {
ke("bech32.encode prefix", g), Ue(c) && (c = Array.from(c)), $t("bech32.encode", c);
const I = g.length;
if (I === 0)
throw new TypeError(`Invalid prefix length ${I}`);
const m = I + 7 + c.length;
if (d !== !1 && m > d)
throw new TypeError(`Length ${m} exceeds limit ${d}`);
const B = g.toLowerCase(), S = Nr(B, c, t);
return `${B}1${Mt.encode(c)}${S}`;
}
function s(g, c = 90) {
ke("bech32.decode input", g);
const d = g.length;
if (d < 8 || c !== !1 && d > c)
throw new TypeError(`invalid string length: ${d} (${g}). Expected (8..${c})`);
const I = g.toLowerCase();
if (g !== I && g !== g.toUpperCase())
throw new Error("String must be lowercase or uppercase");
const m = I.lastIndexOf("1");
if (m === 0 || m === -1)
throw new Error('Letter "1" must be present between prefix and data only');
const B = I.slice(0, m), S = I.slice(m + 1);
if (S.length < 6)
throw new Error("Data must be at least 6 characters long");
const j = Mt.decode(S).slice(0, -6), b = Nr(B, j, t);
if (!S.endsWith(b))
throw new Error(`Invalid checksum in ${g}: expected "${b}"`);
return { prefix: B, words: j };
}
const l = Gr(s);
function u(g) {
const { prefix: c, words: d } = s(g, !1);
return { prefix: c, words: d, bytes: r(d) };
}
function h(g, c) {
return o(g, i(c));
}
return {
encode: o,
decode: s,
encodeFromBytes: h,
decodeToBytes: u,
decodeUnsafe: l,
fromWords: r,
fromWordsUnsafe: a,
toWords: i
};
}
const nr = /* @__PURE__ */ y1("bech32");
function e2(e) {
return nr.encodeFromBytes("npub", Je(e));
}
function t2(e) {
return nr.encodeFromBytes("nsec", e);
}
function r2(e) {
const { prefix: t, bytes: n } = nr.decodeToBytes(e);
if (t !== "nsec" || n.length !== 32)
throw new Error("Not a valid nsec.");
return n;
}
function n2(e) {
return {
schema: kn,
recovery_public_key: e.recoveryPublicKeyHex,
vault_relays: e.vaultRelayUrls,
recovery_capsule_events: e.recoveryCapsuleEvents,
relay_list_events: e.relayListEvents,
created_at: e.now ?? Math.floor(Date.now() / 1e3)
};
}
class oe extends Error {
constructor(t) {
super(t), this.name = "RecoveryExportParseError";
}
}
function i2(e) {
if (typeof e != "object" || e === null)
throw new oe("Recovery export must be a JSON object.");
const t = e;
if (t.schema !== kn)
throw new oe(`Unsupported recovery export schema: ${String(t.schema)}`);
if (typeof t.recovery_public_key != "string" || !/^[0-9a-f]{64}$/u.test(t.recovery_public_key))
throw new oe("recovery_public_key must be lowercase 64-char hex.");
if (!Array.isArray(t.vault_relays))
throw new oe("vault_relays must be an array.");
if (!Array.isArray(t.recovery_capsule_events) || t.recovery_capsule_events.length === 0)
throw new oe("recovery_capsule_events must be a non-empty array.");
for (const n of t.recovery_capsule_events)
if (!Fr(n))
throw new oe("An embedded recovery_capsule_event has an invalid id or signature.");
if (!Array.isArray(t.relay_list_events))
throw new oe("relay_list_events must be an array.");
for (const n of t.relay_list_events)
if (!Fr(n))
throw new oe("An embedded relay_list_event has an invalid id or signature.");
if (typeof t.created_at != "number")
throw new oe("created_at must be a number.");
return t;
}
export {
qr as $,
x1 as A,
rt as B,
E1 as C,
P1 as D,
w1 as E,
pt as F,
Ce as G,
D1 as H,
pe as I,
$1 as J,
R1 as K,
fe as L,
We as M,
r2 as N,
Je as O,
i1 as P,
N1 as Q,
oe as R,
X1 as S,
C1 as T,
K1 as U,
O1 as V,
v1 as W,
qe as X,
_r as Y,
M1 as Z,
W1 as _,
e2 as a,
mt as a0,
jr as a1,
G1 as a2,
Rt as a3,
Rr as a4,
mn as a5,
n2 as a6,
t2 as a7,
Kr as a8,
Y1 as b,
Cn as c,
q1 as d,
b1 as e,
j1 as f,
V1 as g,
_1 as h,
H1 as i,
Z1 as j,
k1 as k,
S1 as l,
F1 as m,
U1 as n,
s1 as o,
i2 as p,
T1 as q,
B1 as r,
z1 as s,
L1 as t,
De as u,
Fr as v,
J1 as w,
bt as x,
Q1 as y,
ht as z
};