[{"data":1,"prerenderedAt":1057},["ShallowReactive",2],{"navigation_docs":3,"-guide":196,"-guide-surround":1054},[4,44],{"title":5,"path":6,"stem":7,"children":8,"icon":43},"Guide","\u002Fguide","1.guide\u002F01.index",[9,11,15,19,23,27,31,35,39],{"title":10,"path":6,"stem":7},"Getting Started",{"title":12,"path":13,"stem":14},"Registry and aliases","\u002Fguide\u002Fregistry","1.guide\u002F02.registry",{"title":16,"path":17,"stem":18},"Address validation","\u002Fguide\u002Fvalidation","1.guide\u002F03.validation",{"title":20,"path":21,"stem":22},"Identify","\u002Fguide\u002Fidentify","1.guide\u002F04.identify",{"title":24,"path":25,"stem":26},"Metadata","\u002Fguide\u002Fmetadata","1.guide\u002F05.metadata",{"title":28,"path":29,"stem":30},"CLI","\u002Fguide\u002Fcli","1.guide\u002F06.cli",{"title":32,"path":33,"stem":34},"Agents","\u002Fguide\u002Fagents","1.guide\u002F07.agents",{"title":36,"path":37,"stem":38},"Custom chains","\u002Fguide\u002Fcustom","1.guide\u002F08.custom",{"title":40,"path":41,"stem":42},"Playground","\u002Fguide\u002Fplayground","1.guide\u002F09.playground","i-lucide-book-open",{"title":45,"path":46,"stem":47,"children":48,"icon":195},"Chains","\u002Fchains","2.chains\u002F00.index",[49,51,55,59,63,67,71,75,79,83,87,91,95,99,103,107,111,115,119,123,127,131,135,139,143,147,151,155,159,163,167,171,175,179,183,187,191],{"title":50,"path":46,"stem":47},"Overview",{"title":52,"path":53,"stem":54},"Ethereum","\u002Fchains\u002Fethereum","2.chains\u002F01.ethereum",{"title":56,"path":57,"stem":58},"Base","\u002Fchains\u002Fbase","2.chains\u002F02.base",{"title":60,"path":61,"stem":62},"Arbitrum One","\u002Fchains\u002Farbitrum","2.chains\u002F03.arbitrum",{"title":64,"path":65,"stem":66},"Optimism","\u002Fchains\u002Foptimism","2.chains\u002F04.optimism",{"title":68,"path":69,"stem":70},"Polygon PoS","\u002Fchains\u002Fpolygon","2.chains\u002F05.polygon",{"title":72,"path":73,"stem":74},"BNB Chain","\u002Fchains\u002Fbsc","2.chains\u002F06.bsc",{"title":76,"path":77,"stem":78},"Avalanche C-Chain","\u002Fchains\u002Favalanche","2.chains\u002F07.avalanche",{"title":80,"path":81,"stem":82},"Fantom Opera","\u002Fchains\u002Ffantom","2.chains\u002F08.fantom",{"title":84,"path":85,"stem":86},"Gnosis Chain","\u002Fchains\u002Fgnosis","2.chains\u002F09.gnosis",{"title":88,"path":89,"stem":90},"Linea","\u002Fchains\u002Flinea","2.chains\u002F10.linea",{"title":92,"path":93,"stem":94},"zkSync Era","\u002Fchains\u002Fzksync","2.chains\u002F11.zksync",{"title":96,"path":97,"stem":98},"Scroll","\u002Fchains\u002Fscroll","2.chains\u002F12.scroll",{"title":100,"path":101,"stem":102},"Berachain","\u002Fchains\u002Fberachain","2.chains\u002F13.berachain",{"title":104,"path":105,"stem":106},"Bitcoin","\u002Fchains\u002Fbitcoin","2.chains\u002F14.bitcoin",{"title":108,"path":109,"stem":110},"Litecoin","\u002Fchains\u002Flitecoin","2.chains\u002F15.litecoin",{"title":112,"path":113,"stem":114},"Pepecoin","\u002Fchains\u002Fpepecoin","2.chains\u002F16.pepecoin",{"title":116,"path":117,"stem":118},"eCash","\u002Fchains\u002Fecash","2.chains\u002F17.ecash",{"title":120,"path":121,"stem":122},"Cardano","\u002Fchains\u002Fcardano","2.chains\u002F18.cardano",{"title":124,"path":125,"stem":126},"Solana","\u002Fchains\u002Fsolana","2.chains\u002F19.solana",{"title":128,"path":129,"stem":130},"Stellar","\u002Fchains\u002Fstellar","2.chains\u002F20.stellar",{"title":132,"path":133,"stem":134},"XRP Ledger","\u002Fchains\u002Fxrpl","2.chains\u002F21.xrpl",{"title":136,"path":137,"stem":138},"Aptos","\u002Fchains\u002Faptos","2.chains\u002F22.aptos",{"title":140,"path":141,"stem":142},"Sui","\u002Fchains\u002Fsui","2.chains\u002F23.sui",{"title":144,"path":145,"stem":146},"TON (The Open Network)","\u002Fchains\u002Fton","2.chains\u002F24.ton",{"title":148,"path":149,"stem":150},"TRON","\u002Fchains\u002Ftron","2.chains\u002F25.tron",{"title":152,"path":153,"stem":154},"Octra","\u002Fchains\u002Foctra","2.chains\u002F26.octra",{"title":156,"path":157,"stem":158},"Arweave","\u002Fchains\u002Farweave","2.chains\u002F27.arweave",{"title":160,"path":161,"stem":162},"Monero","\u002Fchains\u002Fmonero","2.chains\u002F28.monero",{"title":164,"path":165,"stem":166},"Decred","\u002Fchains\u002Fdecred","2.chains\u002F29.decred",{"title":168,"path":169,"stem":170},"Arc","\u002Fchains\u002Farc","2.chains\u002F30.arc",{"title":172,"path":173,"stem":174},"Dogecoin","\u002Fchains\u002Fdogecoin","2.chains\u002F31.dogecoin",{"title":176,"path":177,"stem":178},"Bitcoin Cash","\u002Fchains\u002Fbitcoincash","2.chains\u002F32.bitcoincash",{"title":180,"path":181,"stem":182},"Bitcoin SV","\u002Fchains\u002Fbitcoinsv","2.chains\u002F33.bitcoinsv",{"title":184,"path":185,"stem":186},"Bitcoin Gold","\u002Fchains\u002Fbitcoingold","2.chains\u002F34.bitcoingold",{"title":188,"path":189,"stem":190},"Dash","\u002Fchains\u002Fdash","2.chains\u002F35.dash",{"title":192,"path":193,"stem":194},"Zcash","\u002Fchains\u002Fzcash","2.chains\u002F36.zcash","i-lucide-link",{"id":197,"title":10,"body":198,"description":1048,"extension":1049,"links":1050,"meta":1051,"navigation":334,"path":6,"seo":1052,"stem":7,"__hash__":1053},"docs\u002F1.guide\u002F01.index.md",{"type":199,"value":200,"toc":1040},"minimark",[201,209,216,221,225,237,241,266,270,546,559,563,775,785,789,939,976,980,1036],[202,203,204,208],"warning",{},[205,206,207],"strong",{},"Pre-1.0."," The API and the tool list can still move. Pin exact versions if you build on it now.",[210,211,212,215],"caution",{},[205,213,214],{},"A passing check is a format check."," It says the string fits the chain's rules. It doesn't say the address exists, holds anything, or belongs to who you think. Where a format has a checksum, the chain's page says whether it's verified.",[217,218,220],"h2",{"id":219},"why-this-exists","Why this exists",[222,223,224],"p",{},"Every web3 library I write needs the same handful of facts: Polygon's chain ID, Bitcoin's coin type, which explorer to link, whether an address even looks right. Re-declared in every one of them, and slightly different each time. So they live here once, as classes, and everything else imports them.",[222,226,227,228,232,233,236],{},"The second reason is the address check. A regex that counts characters takes a Bitcoin address, a TRON address and half the typos in between. Here the validators decode: Solana wants 32 bytes behind the base58, TRON wants 25 under version ",[229,230,231],"code",{},"0x41",", a ",[229,234,235],{},"bc1"," address has to pass its Bech32 checksum. Rejected is an answer with the chain key on it.",[217,238,240],{"id":239},"install","Install",[242,243,248],"pre",{"className":244,"code":245,"language":246,"meta":247,"style":247},"language-bash shiki shiki-themes github-light github-light poimandres","pnpm add @agntn\u002Fchains\n","bash","",[229,249,250],{"__ignoreMap":247},[251,252,255,259,263],"span",{"class":253,"line":254},"line",1,[251,256,258],{"class":257},"sseY5","pnpm",[251,260,262],{"class":261},"sX7Zv"," add",[251,264,265],{"class":261}," @agntn\u002Fchains\n",[217,267,269],{"id":268},"first-call","First call",[242,271,276],{"className":272,"code":273,"filename":274,"language":275,"meta":247,"style":247},"language-ts shiki shiki-themes github-light github-light poimandres","import { Ethereum, EVM, create, getChain } from \"@agntn\u002Fchains\";\n\nconst ethereum = create(\"ethereum\");\n\nethereum instanceof Ethereum; \u002F\u002F true\nethereum instanceof EVM; \u002F\u002F true\nethereum.name; \u002F\u002F \"Ethereum\"\nethereum.symbol; \u002F\u002F \"ETH\"\nethereum.chainId; \u002F\u002F \"0x1\"\nethereum.caip2; \u002F\u002F \"eip155:1\"\n\n\u002F** Aliases resolve to the same concrete classes. *\u002F\nconst polygon = getChain(\"matic\");\npolygon.key; \u002F\u002F \"polygon\"\n\n\u002F** Validation lives on the class that knows the format. *\u002F\nethereum.assertAddress(\"0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984\");\n","ethereum.ts","ts",[229,277,278,329,336,366,371,390,403,419,434,449,464,469,475,498,514,519,525],{"__ignoreMap":247},[251,279,280,284,288,292,295,298,300,303,305,308,311,315,319,323,326],{"class":253,"line":254},[251,281,283],{"class":282},"sP0CR","import",[251,285,287],{"class":286},"sKlNE"," {",[251,289,291],{"class":290},"snHMy"," Ethereum",[251,293,294],{"class":286},",",[251,296,297],{"class":290}," EVM",[251,299,294],{"class":286},[251,301,302],{"class":290}," create",[251,304,294],{"class":286},[251,306,307],{"class":290}," getChain",[251,309,310],{"class":286}," }",[251,312,314],{"class":313},"stCPd"," from",[251,316,318],{"class":317},"scVjq"," \"",[251,320,322],{"class":321},"sQ7BG","@agntn\u002Fchains",[251,324,325],{"class":317},"\"",[251,327,328],{"class":286},";\n",[251,330,332],{"class":253,"line":331},2,[251,333,335],{"emptyLinePlaceholder":334},true,"\n",[251,337,339,343,347,350,353,356,358,361,363],{"class":253,"line":338},3,[251,340,342],{"class":341},"s1TYA","const",[251,344,346],{"class":345},"saoiD"," ethereum",[251,348,349],{"class":341}," =",[251,351,302],{"class":352},"sULi6",[251,354,355],{"class":286},"(",[251,357,325],{"class":317},[251,359,360],{"class":321},"ethereum",[251,362,325],{"class":317},[251,364,365],{"class":286},");\n",[251,367,369],{"class":253,"line":368},4,[251,370,335],{"emptyLinePlaceholder":334},[251,372,374,377,380,383,386],{"class":253,"line":373},5,[251,375,360],{"class":376},"spVlQ",[251,378,379],{"class":341}," instanceof",[251,381,291],{"class":382},"sCrqT",[251,384,385],{"class":286},"; ",[251,387,389],{"class":388},"sjhu3","\u002F\u002F true\n",[251,391,393,395,397,399,401],{"class":253,"line":392},6,[251,394,360],{"class":376},[251,396,379],{"class":341},[251,398,297],{"class":382},[251,400,385],{"class":286},[251,402,389],{"class":388},[251,404,406,408,411,414,416],{"class":253,"line":405},7,[251,407,360],{"class":376},[251,409,410],{"class":286},".",[251,412,413],{"class":376},"name",[251,415,385],{"class":286},[251,417,418],{"class":388},"\u002F\u002F \"Ethereum\"\n",[251,420,422,424,426,429,431],{"class":253,"line":421},8,[251,423,360],{"class":376},[251,425,410],{"class":286},[251,427,428],{"class":376},"symbol",[251,430,385],{"class":286},[251,432,433],{"class":388},"\u002F\u002F \"ETH\"\n",[251,435,437,439,441,444,446],{"class":253,"line":436},9,[251,438,360],{"class":376},[251,440,410],{"class":286},[251,442,443],{"class":376},"chainId",[251,445,385],{"class":286},[251,447,448],{"class":388},"\u002F\u002F \"0x1\"\n",[251,450,452,454,456,459,461],{"class":253,"line":451},10,[251,453,360],{"class":376},[251,455,410],{"class":286},[251,457,458],{"class":376},"caip2",[251,460,385],{"class":286},[251,462,463],{"class":388},"\u002F\u002F \"eip155:1\"\n",[251,465,467],{"class":253,"line":466},11,[251,468,335],{"emptyLinePlaceholder":334},[251,470,472],{"class":253,"line":471},12,[251,473,474],{"class":388},"\u002F** Aliases resolve to the same concrete classes. *\u002F\n",[251,476,478,480,483,485,487,489,491,494,496],{"class":253,"line":477},13,[251,479,342],{"class":341},[251,481,482],{"class":345}," polygon",[251,484,349],{"class":341},[251,486,307],{"class":352},[251,488,355],{"class":286},[251,490,325],{"class":317},[251,492,493],{"class":321},"matic",[251,495,325],{"class":317},[251,497,365],{"class":286},[251,499,501,504,506,509,511],{"class":253,"line":500},14,[251,502,503],{"class":376},"polygon",[251,505,410],{"class":286},[251,507,508],{"class":376},"key",[251,510,385],{"class":286},[251,512,513],{"class":388},"\u002F\u002F \"polygon\"\n",[251,515,517],{"class":253,"line":516},15,[251,518,335],{"emptyLinePlaceholder":334},[251,520,522],{"class":253,"line":521},16,[251,523,524],{"class":388},"\u002F** Validation lives on the class that knows the format. *\u002F\n",[251,526,528,530,532,535,537,539,542,544],{"class":253,"line":527},17,[251,529,360],{"class":376},[251,531,410],{"class":286},[251,533,534],{"class":352},"assertAddress",[251,536,355],{"class":286},[251,538,325],{"class":317},[251,540,541],{"class":321},"0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984",[251,543,325],{"class":317},[251,545,365],{"class":286},[222,547,548,551,552,555,556,558],{},[229,549,550],{},"create(key)"," wants the canonical key and builds a fresh instance. ",[229,553,554],{},"getChain(input)"," takes whatever spelling you're holding, a key, a display name or an alias like ",[229,557,493],{},", and gives you the same class. With no argument it means Ethereum. With an empty string it throws, because a blank input is a mistake, not a request for the default.",[217,560,562],{"id":561},"what-is-on-a-chain","What is on a chain",[564,565,566,582],"table",{},[567,568,569],"thead",{},[570,571,572,576,579],"tr",{},[573,574,575],"th",{},"Field",[573,577,578],{},"Type",[573,580,581],{},"Description",[583,584,585,606,620,633,648,677,691,705,718,732,747,761],"tbody",{},[570,586,587,592,597],{},[588,589,590],"td",{},[229,591,508],{},[588,593,594],{},[229,595,596],{},"ChainKey",[588,598,599,600,602,603],{},"Canonical class key, ",[229,601,360],{}," not ",[229,604,605],{},"eth",[570,607,608,612,617],{},[588,609,610],{},[229,611,413],{},[588,613,614],{},[229,615,616],{},"string",[588,618,619],{},"Display name",[570,621,622,626,630],{},[588,623,624],{},[229,625,428],{},[588,627,628],{},[229,629,616],{},[588,631,632],{},"Native token symbol",[570,634,635,640,645],{},[588,636,637],{},[229,638,639],{},"decimals",[588,641,642],{},[229,643,644],{},"number?",[588,646,647],{},"Native currency decimal places",[570,649,650,655,660],{},[588,651,652],{},[229,653,654],{},"type",[588,656,657],{},[229,658,659],{},"ChainType",[588,661,662,663,666,667,666,670,666,673,676],{},"Family: ",[229,664,665],{},"evm",", ",[229,668,669],{},"utxo",[229,671,672],{},"move",[229,674,675],{},"solana"," and so on",[570,678,679,684,688],{},[588,680,681],{},[229,682,683],{},"bip44",[588,685,686],{},[229,687,644],{},[588,689,690],{},"BIP-44 \u002F SLIP-0044 coin type",[570,692,693,697,702],{},[588,694,695],{},[229,696,443],{},[588,698,699],{},[229,700,701],{},"string?",[588,703,704],{},"EVM chain ID in hexadecimal",[570,706,707,711,715],{},[588,708,709],{},[229,710,458],{},[588,712,713],{},[229,714,701],{},[588,716,717],{},"CAIP-2 identifier",[570,719,720,725,729],{},[588,721,722],{},[229,723,724],{},"magic",[588,726,727],{},[229,728,701],{},[588,730,731],{},"P2P magic bytes, hex in wire order",[570,733,734,739,744],{},[588,735,736],{},[229,737,738],{},"pow",[588,740,741],{},[229,742,743],{},"PowAlgorithm?",[588,745,746],{},"Proof-of-work algorithm",[570,748,749,754,758],{},[588,750,751],{},[229,752,753],{},"explorer",[588,755,756],{},[229,757,616],{},[588,759,760],{},"Block explorer base URL",[570,762,763,768,772],{},[588,764,765],{},[229,766,767],{},"rpcDefault",[588,769,770],{},[229,771,701],{},[588,773,774],{},"Default public RPC endpoint",[222,776,777,778,781,782,410],{},"Optional fields stay empty when the chain has no registered value. Octra has no BIP-44 coin type and no CAIP-2 namespace, so both are ",[229,779,780],{},"undefined"," rather than invented. The full story of each field, decimals included, is in ",[783,784,24],"a",{"href":25},[217,786,788],{"id":787},"errors","Errors",[242,790,792],{"className":272,"code":791,"language":275,"meta":247,"style":247},"import { ChainsError, InvalidAddressError, UnsupportedChainError } from \"@agntn\u002Fchains\";\n\ntry {\n  getChain(\"btc\").assertAddress(\"bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t5\");\n} catch (error) {\n  if (error instanceof InvalidAddressError) {\n    error.chain; \u002F\u002F \"bitcoin\", the canonical key\n    error.address; \u002F\u002F the string that failed\n  }\n}\n",[229,793,794,825,829,838,868,885,900,915,929,934],{"__ignoreMap":247},[251,795,796,798,800,803,805,808,810,813,815,817,819,821,823],{"class":253,"line":254},[251,797,283],{"class":282},[251,799,287],{"class":286},[251,801,802],{"class":290}," ChainsError",[251,804,294],{"class":286},[251,806,807],{"class":290}," InvalidAddressError",[251,809,294],{"class":286},[251,811,812],{"class":290}," UnsupportedChainError",[251,814,310],{"class":286},[251,816,314],{"class":313},[251,818,318],{"class":317},[251,820,322],{"class":321},[251,822,325],{"class":317},[251,824,328],{"class":286},[251,826,827],{"class":253,"line":331},[251,828,335],{"emptyLinePlaceholder":334},[251,830,831,835],{"class":253,"line":338},[251,832,834],{"class":833},"szlwh","try",[251,836,837],{"class":286}," {\n",[251,839,840,843,845,847,850,852,855,857,859,861,864,866],{"class":253,"line":368},[251,841,842],{"class":352},"  getChain",[251,844,355],{"class":286},[251,846,325],{"class":317},[251,848,849],{"class":321},"btc",[251,851,325],{"class":317},[251,853,854],{"class":286},").",[251,856,534],{"class":352},[251,858,355],{"class":286},[251,860,325],{"class":317},[251,862,863],{"class":321},"bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t5",[251,865,325],{"class":317},[251,867,365],{"class":286},[251,869,870,873,876,879,882],{"class":253,"line":373},[251,871,872],{"class":286},"} ",[251,874,875],{"class":833},"catch",[251,877,878],{"class":286}," (",[251,880,881],{"class":376},"error",[251,883,884],{"class":286},") {\n",[251,886,887,890,892,894,896,898],{"class":253,"line":392},[251,888,889],{"class":313},"  if",[251,891,878],{"class":286},[251,893,881],{"class":376},[251,895,379],{"class":341},[251,897,807],{"class":382},[251,899,884],{"class":286},[251,901,902,905,907,910,912],{"class":253,"line":405},[251,903,904],{"class":376},"    error",[251,906,410],{"class":286},[251,908,909],{"class":376},"chain",[251,911,385],{"class":286},[251,913,914],{"class":388},"\u002F\u002F \"bitcoin\", the canonical key\n",[251,916,917,919,921,924,926],{"class":253,"line":421},[251,918,904],{"class":376},[251,920,410],{"class":286},[251,922,923],{"class":376},"address",[251,925,385],{"class":286},[251,927,928],{"class":388},"\u002F\u002F the string that failed\n",[251,930,931],{"class":253,"line":436},[251,932,933],{"class":286},"  }\n",[251,935,936],{"class":253,"line":451},[251,937,938],{"class":286},"}\n",[222,940,941,942,945,946,949,950,953,954,949,957,960,961,964,965,968,969,972,973,975],{},"Everything thrown here descends from ",[229,943,944],{},"ChainsError",", so you catch one type and read fields instead of parsing messages. ",[229,947,948],{},"UnknownChainError"," is ",[229,951,952],{},"create()"," with a key nobody registered, ",[229,955,956],{},"UnsupportedChainError",[229,958,959],{},"getChain()"," with a spelling that matches nothing, ",[229,962,963],{},"InvalidAddressError"," is a failed format check, and ",[229,966,967],{},"AddressValidationUnsupportedError"," is a chain that carries no validator at all. ",[229,970,971],{},".chain"," holds the canonical key on the last two, the same value ",[229,974,952],{}," takes.",[217,977,979],{"id":978},"next","Next",[981,982,983,992,997,1002,1007,1016,1021,1030],"ul",{},[984,985,986,988,989,410],"li",{},[783,987,12],{"href":13},": keys, names, aliases and ",[229,990,991],{},"register",[984,993,994,996],{},[783,995,16],{"href":17},": what each family decodes and which checksums it verifies.",[984,998,999,1001],{},[783,1000,20],{"href":21},": one address through every validator.",[984,1003,1004,1006],{},[783,1005,24],{"href":25},": every field, and where the decimals come from.",[984,1008,1009,1011,1012,1015],{},[783,1010,28],{"href":29},": the ",[229,1013,1014],{},"chains"," command.",[984,1017,1018,1020],{},[783,1019,32],{"href":33},": five tools over MCP, Pi and OMP.",[984,1022,1023,1025,1026,1029],{},[783,1024,36],{"href":37},": extend ",[229,1027,1028],{},"Chain",", register it.",[984,1031,1032,1035],{},[783,1033,40],{"href":1034},"\u002Fplayground",": the library, in the page.",[1037,1038,1039],"style",{},"html pre.shiki code .sP0CR, html code.shiki .sP0CR{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#5DE4C7}html pre.shiki code .sKlNE, html code.shiki .sKlNE{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#A6ACCD}html pre.shiki code .snHMy, html code.shiki .snHMy{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#ADD7FF}html pre.shiki code .stCPd, html code.shiki .stCPd{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#A6ACCD}html pre.shiki code .scVjq, html code.shiki .scVjq{--shiki-light:#032F62;--shiki-default:#032F62;--shiki-dark:#A6ACCD}html pre.shiki code .sQ7BG, html code.shiki .sQ7BG{--shiki-light:#032F62;--shiki-default:#032F62;--shiki-dark:#5DE4C7}html pre.shiki code .s1TYA, html code.shiki .s1TYA{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#91B4D5}html pre.shiki code .saoiD, html code.shiki .saoiD{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#E4F0FB}html pre.shiki code .sULi6, html code.shiki .sULi6{--shiki-light:#6F42C1;--shiki-default:#6F42C1;--shiki-dark:#E4F0FBD0}html pre.shiki code .spVlQ, html code.shiki .spVlQ{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#E4F0FB}html pre.shiki code .sCrqT, html code.shiki .sCrqT{--shiki-light:#6F42C1;--shiki-default:#6F42C1;--shiki-dark:#A6ACCDC0}html pre.shiki code .sjhu3, html code.shiki .sjhu3{--shiki-light:#6A737D;--shiki-light-font-style:inherit;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#767C9DB0;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .szlwh, html code.shiki .szlwh{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#D0679D}html pre.shiki code .sseY5, html code.shiki .sseY5{--shiki-light:#6F42C1;--shiki-default:#6F42C1;--shiki-dark:#91B4D5}html pre.shiki code .sX7Zv, html code.shiki .sX7Zv{--shiki-light:#032F62;--shiki-default:#032F62;--shiki-dark:#ADD7FF}",{"title":247,"searchDepth":331,"depth":331,"links":1041},[1042,1043,1044,1045,1046,1047],{"id":219,"depth":331,"text":220},{"id":239,"depth":331,"text":240},{"id":268,"depth":331,"text":269},{"id":561,"depth":331,"text":562},{"id":787,"depth":331,"text":788},{"id":978,"depth":331,"text":979},"Install the package. Resolve one chain. Check one address. Every chain is a class and every answer comes from the class that knows the format.","md",null,{"icon":43},{"title":10,"description":1048},"eWgAzqvWL4jTaQyOMUSnj0vPxhjkYhPStVZ0yIuLN2U",[1050,1055],{"title":12,"path":13,"stem":14,"description":1056,"children":-1},"Keys and display names plus the aliases people actually type. All land on the same class. How the registry is seeded and why nothing registers itself.",1790447828473]