<!DOCTYPE html>
<!--
  TEN SEALS. Every Binance Agent ID name has a seal on BNB Chain. Ten stamps make a note; notes draw from the vault.
  One file, stored on BNB Chain, reading the chain itself. AI agents: plain instructions in <pre id="for-agents"> below.
  The code is plain text in the one script at the end, its configuration (addresses, chain id, RPCs) at the top of it.
-->
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1,viewport-fit=cover">
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'sha256-p3s3fIXUwa/K6nwcZnptMSZnijNF0JsJ63aD+kkPRUE='; style-src 'sha256-J8vzSiW40yQcxhN9vTErtf6kfEc2y8zrGwdu9kK2dSU='; img-src data:; connect-src https://bsc-rpc.publicnode.com https://bsc-dataseed.bnbchain.org https://bsc.drpc.org https://bsc-dataseed1.binance.org https://bsc-dataseed1.defibit.io; base-uri 'none'; form-action 'none'">
<meta name="referrer" content="no-referrer">
<meta name="description" content="Every Binance Agent ID name has a seal. Ten stamps make a note. Notes draw from the vault. BNB Chain.">
<meta name="theme-color" content="#f2ebde">
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Crect x='1' y='1' width='14' height='14' fill='%23c4302a'/%3E%3Cpath d='M4 4h8M8 4v8M4 12h8' stroke='%23f2ebde' stroke-width='1.6' fill='none'/%3E%3C/svg%3E">
<title>TEN SEALS</title>
<style>:root{--paper: #f2ebde;--sheet: #f7f2e8;--ink: #221d1a;--red: #c4302a;--cinnabar: #9c1f1a;--indigo: #27396b;--gold: #b08a3a;--jade: #2e7656;--rule: #cfc2ab;--muted: #6b6055;--serif: "Iowan Old Style", "Palatino Linotype", Palatino, "Book Antiqua", Georgia, "Times New Roman", serif;--mono: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;--cjk: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC", "Source Han Sans SC", sans-serif;--kr: "Apple SD Gothic Neo", "Malgun Gothic", "Noto Sans KR", "Noto Sans CJK KR", sans-serif}*{box-sizing:border-box}[hidden]{display:none!important}html{background:var(--paper);color:var(--ink);-webkit-text-size-adjust:100%}body{margin:0;font:17px/1.62 var(--serif);font-kerning:normal}:lang(zh) body,:lang(zh) input,:lang(zh) button{font-family:var(--serif),var(--cjk)}:lang(ko) body,:lang(ko) input,:lang(ko) button{font-family:var(--serif),var(--kr)}:lang(zh) body{line-height:1.75}:lang(ko) body{line-height:1.72;word-break:keep-all}a{color:var(--indigo);text-underline-offset:3px}code,pre{font-family:var(--mono)}code{font-size:.86em;word-break:break-all}p{margin:.55em 0}h2{font-size:27px;line-height:1.25;font-weight:600;margin:30px 0 10px;letter-spacing:.01em}h2:before{content:"";display:inline-block;width:.42em;height:.42em;background:var(--red);margin-right:.5em;vertical-align:.15em}h3{font-size:19px;font-weight:600;margin:22px 0 8px}b{font-weight:600}small{font-size:.8em}.top{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 16px;max-width:820px;margin:0 auto;padding:14px 18px 12px}.brand{display:flex;align-items:center;gap:12px;color:var(--ink);text-decoration:none;min-height:48px}.mark{display:block;width:44px;height:44px;flex:none}.mark svg,.hero-mark svg{display:block;width:100%;height:auto}.brand-t{display:flex;flex-direction:column;line-height:1.15}.brand-t b{font-size:19px;letter-spacing:.2em}.brand-t small{font-size:12.5px;color:var(--muted);letter-spacing:.02em}.tools{display:flex;align-items:center;gap:10px;margin-left:auto}.langs{display:flex}.langs button{font:inherit;font-size:14px;color:var(--ink);background:none;border:0;padding:10px 7px;min-height:44px;cursor:pointer}.langs button[aria-pressed=true]{color:var(--red);font-weight:600;text-decoration:underline;text-underline-offset:5px}.wbtn{font:inherit;font-size:15px;min-height:44px;padding:6px 14px;border:1.5px solid var(--ink);background:none;color:var(--ink);cursor:pointer;border-radius:2px;max-width:46vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wbtn.on{border-color:var(--red);color:var(--red)}.nav{position:sticky;top:0;z-index:5;background:var(--paper);border-top:3px double var(--ink);border-bottom:1px solid var(--ink);display:flex;overflow-x:auto;scrollbar-width:none;padding:0 max(8px,calc(50% - 410px))}.nav::-webkit-scrollbar{display:none}.nav a{flex:none;color:var(--ink);text-decoration:none;padding:12px 12px 10px;min-height:46px;font-size:15.5px;border-bottom:3px solid transparent;white-space:nowrap}.nav a.on{color:var(--red);border-bottom-color:var(--red);font-weight:600}.demo{background:var(--indigo);color:var(--paper);font-size:13.5px;line-height:1.45;padding:8px 18px;text-align:center}main{max-width:820px;margin:0 auto;padding:6px 18px 70px}.view{display:none}.view.on{display:block}html:not(.js) #v-agents{display:block}.lead{font-size:18px}.small{font-size:14.5px}.big{font-size:20px;line-height:1.45}.muted{color:var(--muted)}.red{color:var(--red)}.err{color:#a1221b}.ok{color:var(--jade)}.warn{color:#7a5a1c;border-left:3px solid var(--gold);padding-left:10px}.hero{display:grid;grid-template-columns:84px 1fr;gap:18px;align-items:start;margin:24px 0 8px}.hero1{font-size:22px;line-height:1.38;margin-top:0}.hero2{color:var(--muted);font-style:italic}:lang(zh) .hero2,:lang(ko) .hero2{font-style:normal}.live{margin:22px 0;padding:18px 18px 10px;border:1.5px solid var(--ink);background:var(--sheet)}.live-a{font-size:20px;margin:0}.live-b{font-size:24px;line-height:1.35;margin:4px 0 8px}.live-b b.red{font-variant-numeric:tabular-nums}.figs{display:grid;grid-template-columns:1fr 1fr;gap:0 22px;margin:26px 0}.fig{border-top:1px solid var(--rule);padding:10px 0 12px}.fig b{display:block;font-size:25px;line-height:1.2;font-weight:600;font-variant-numeric:tabular-nums}.fig b small{font-size:15px;font-weight:400}.fig>span{font-size:14px;color:var(--muted)}.facts{border:4px double var(--ink);padding:6px 18px 12px;margin:28px 0;background:var(--sheet)}.facts h3{text-align:center;letter-spacing:.24em;text-transform:uppercase;font-size:15px;margin:12px 0 6px}:lang(zh) .facts h3,:lang(ko) .facts h3{letter-spacing:.3em}dl{margin:0}dl>div{display:grid;grid-template-columns:1fr;padding:9px 0;border-top:1px solid var(--rule)}dt{font-size:12.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}dd{margin:0}.ca{display:block}.cn{display:inline-block;min-width:4.6em;font-size:14px;color:var(--muted)}dd a{display:inline}.facts dd a code,.addrs code{font-size:12.5px}.ctas{display:flex;flex-wrap:wrap;gap:10px;margin:24px 0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:9px 18px;font:inherit;font-weight:600;letter-spacing:.02em;color:var(--paper);background:var(--red);border:2px solid var(--red);border-radius:2px;cursor:pointer;text-decoration:none;line-height:1.2}.btn:hover{background:var(--cinnabar);border-color:var(--cinnabar)}.btn.ghost{background:transparent;color:var(--ink);border-color:var(--ink)}.btn.ghost:hover{background:var(--ink);color:var(--paper)}.btn.small{min-height:40px;padding:5px 12px;font-size:14.5px;font-weight:500}.btn.wide{width:100%;justify-content:flex-start}.btn:disabled,.btn:disabled:hover{opacity:.42;cursor:default;background:var(--red);border-color:var(--red)}.btn.ghost:disabled,.btn.ghost:disabled:hover{background:transparent;color:var(--ink);border-color:var(--ink)}.btn small{display:block;font-weight:400;font-size:13px;opacity:.9}.presses{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:12px 0 4px}.presses .btn{flex-direction:column;gap:2px;min-height:60px}.seg{display:inline-flex;flex-wrap:wrap;border:1.5px solid var(--ink);border-radius:2px;background:transparent}.seg button{font:inherit;font-size:15px;color:var(--ink);background:transparent;border:0;border-right:1px solid var(--ink);min-height:44px;min-width:44px;padding:6px 14px;cursor:pointer}.seg button:last-child{border-right:0}.seg button[aria-pressed=true]{background:var(--ink);color:var(--paper)}.row{display:flex;gap:10px;align-items:flex-end}.row.wrap{flex-wrap:wrap;align-items:center;margin:10px 0}.row input{flex:1;min-width:0}.field{margin:14px 0}.lbl{display:block;font-size:12.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin:0 0 4px}input{width:100%;font:inherit;font-size:19px;color:var(--ink);background:transparent;border:0;border-bottom:2px solid var(--ink);border-radius:0;padding:8px 2px;min-height:48px;outline:none}input:focus{border-bottom-color:var(--red)}input::placeholder{color:#a3978a}.grid2{display:grid;gap:0 22px}.refst{margin-top:-6px}.find{margin:8px 0 4px}.part{margin-top:30px;padding-top:6px;border-top:1px solid var(--ink)}.part h3 .no{display:inline-grid;place-items:center;width:1.45em;height:1.45em;margin-right:.55em;background:var(--red);color:var(--paper);font-size:.82em;border-radius:1px;vertical-align:.06em}.codebox{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;padding:10px 12px;margin:8px 0;border:1px solid var(--rule);background:var(--sheet)}.codebox code{flex:1 1 14em;font-size:13.5px}.codebox .lbl{flex-basis:100%;margin:0}.ptabs{margin:18px 0 8px;display:grid;gap:10px;justify-items:start}.plang{display:flex;flex-wrap:wrap;align-items:center;gap:10px}pre{white-space:pre-wrap;word-break:break-word;overflow-wrap:anywhere}.prompt{font-size:13.5px;line-height:1.55;background:var(--sheet);border:1px solid var(--rule);border-left:4px solid var(--red);padding:14px 14px 14px 16px;margin:8px 0;max-height:460px;overflow:auto}#for-agents{font-size:12.5px;line-height:1.55;background:var(--sheet);border:1px solid var(--rule);padding:14px 16px}table{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}th,td{text-align:left;padding:8px 8px 8px 0;border-bottom:1px solid var(--rule);vertical-align:middle}th{font-size:12px;font-weight:400;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}td:last-child,th:last-child{text-align:right;padding-right:0}.amounts td:nth-child(2){font-size:19px}.fine{padding-left:1.1em;margin:10px 0}.fine li{margin:4px 0;list-style:square}.fine li::marker{color:var(--red)}.refbox{margin-top:18px;padding:12px 14px;border:1.5px dashed var(--ink)}.nm{font-size:34px;margin-bottom:2px;word-break:break-all}.nm span{color:var(--muted);font-weight:400}.tags{list-style:none;padding:0;margin:10px 0 6px;display:flex;flex-wrap:wrap;gap:8px}.tags li{border:1px solid var(--ink);padding:2px 10px;font-size:14.5px}.seals{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:10px 0}.seals figure{margin:0}.seals img{display:block;width:100%;height:auto;aspect-ratio:1;border:1px solid var(--rule);background:var(--paper)}.seals figure.done img{border-color:var(--ink)}.seals figcaption{font-size:14px;line-height:1.4;margin-top:6px}.ink{white-space:nowrap}.ink:before{content:"";display:inline-block;width:.72em;height:.72em;margin-right:.35em;vertical-align:-.02em;background:var(--red)}.i1:before{background:var(--cinnabar)}.i2:before{background:var(--ink)}.i3:before{background:var(--indigo)}.i4{color:#8a6a26;font-weight:600}.i4:before{background:var(--gold)}.i5{color:var(--jade);font-weight:600}.i5:before{background:var(--jade)}.share{margin-top:26px}.pressed{font-size:12.5px;letter-spacing:.06em;color:var(--red);border:1px solid var(--red);padding:0 5px}.toks{display:grid;grid-template-columns:repeat(auto-fill,minmax(158px,1fr));gap:10px;margin:10px 0}.tok{display:grid;grid-template-columns:52px 1fr;grid-template-rows:1fr auto;align-items:center;gap:0 10px;padding:8px;min-height:70px;font:inherit;font-size:14px;line-height:1.3;color:var(--ink);text-align:left;background:transparent;border:1.5px solid var(--rule);border-radius:2px;cursor:pointer}.tok img{grid-row:span 2;width:52px;height:52px;object-fit:contain}.tok .tl{overflow-wrap:anywhere}.tok[aria-pressed=true]{border-color:var(--red);background:#f6e6dc;box-shadow:inset 0 0 0 1px var(--red)}.notes{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:14px;margin:14px 0}.note{display:flex;flex-direction:column;gap:2px;padding:8px;font:inherit;font-size:14.5px;color:var(--ink);text-align:left;background:transparent;border:1.5px solid var(--rule);border-radius:2px;cursor:pointer}.note img{width:100%;height:auto;aspect-ratio:auto 5 / 8;margin-bottom:6px;background:var(--paper)}.note[aria-pressed=true]{border-color:var(--red);box-shadow:inset 0 0 0 1px var(--red);background:#f6e6dc}.bar{position:sticky;bottom:0;display:flex;flex-wrap:wrap;gap:10px;align-items:center;padding:12px 0;background:var(--paper);border-top:1px solid var(--ink)}.bar:empty{display:none}.grp h3{display:flex;justify-content:space-between;gap:10px;align-items:baseline}.grp h3 span{font-size:14px;font-weight:400}.book td:first-child b{font-size:17px}.rule{margin:6px 0 18px}.rule h3{margin-bottom:4px}.rule.plain{border:2px solid var(--red);padding:4px 16px 10px;background:var(--sheet)}.rule.plain h3{color:var(--red)}.addrs dt{margin-bottom:2px}.foot{max-width:820px;margin:0 auto;padding:18px 18px 110px;border-top:3px double var(--ink);color:var(--muted);font-size:14.5px}.toast{position:fixed;z-index:30;left:12px;right:12px;bottom:12px;max-width:560px;margin:0 auto;padding:12px 16px;background:var(--ink);color:var(--paper);border-radius:2px;font-size:15.5px}.toast.ok{background:#24553f}.toast.err{background:#7d1d18}.toast a{color:var(--paper)}.toast p{margin:4px 0}.toast .btn.ghost{color:var(--paper);border-color:var(--paper)}.sheet{position:fixed;z-index:40;inset:0;background:#221d1a80;display:flex;align-items:flex-end;justify-content:center}.sheet .box{width:min(480px,100%);background:var(--paper);padding:18px 20px 22px;border-top:4px double var(--ink)}.sheet img{border-radius:4px}.offscreen{position:fixed;left:-9999px;top:0}@media(min-width:640px){body{font-size:18px}.hero{grid-template-columns:128px 1fr;gap:26px}.hero1{font-size:25px}.figs{grid-template-columns:repeat(3,1fr)}.seals{grid-template-columns:repeat(4,1fr)}.grid2{grid-template-columns:1fr 1fr}.presses{grid-template-columns:repeat(4,1fr)}dl>div{grid-template-columns:9.5em 1fr;gap:14px}dt{padding-top:3px}.live{padding:22px 26px 12px}.live-b{font-size:27px}.sheet{align-items:center}.sheet .box{border:4px double var(--ink)}}@media(max-width:380px){.brand-t small{display:none}.langs button{padding:10px 5px}}</style>
</head>
<body>
<header class="top">
  <a class="brand" href="#"><span id="mark" class="mark"></span><span class="brand-t"><b>TEN SEALS</b><small id="tagline">BNB Chain, Binance Agent ID</small></span></a>
  <div class="tools"><div id="langs" class="langs"></div><button id="walletbtn" class="wbtn" type="button" data-a="wallet" hidden></button></div>
</header>
<nav id="nav" class="nav"></nav>
<main>
  <section id="v-home" class="view"></section>
  <section id="v-name" class="view"></section>
  <section id="v-press" class="view"></section>
  <section id="v-market" class="view"></section>
  <section id="v-weave" class="view"></section>
  <section id="v-notes" class="view"></section>
  <section id="v-rules" class="view"></section>
  <section id="v-agents" class="view">
    <h2 id="agents-h">For AI agents</h2>
    <p id="agents-p" class="lead">Plain text, readable without JavaScript. Everything an agent needs to press, claim, weave and trade.</p>
    <noscript><p>The live parts of this page need JavaScript. The instructions below do not.</p></noscript>
<pre id="for-agents">TEN SEALS: instructions for AI agents
BNB Chain, chain id 56. Plain text, no JavaScript needed. Amounts in wei (1 BNB = 10^18 wei).

Every Binance Agent ID name (a free lowercase .ai name tied to a KYC'd Binance Agentic Wallet) has a seal here.
Only the wallet that holds an Agent ID can press stamps. Ask your human to confirm every transaction before you send it.

CONTRACTS (no owner, no pause, no upgrade; code verified on bscscan.com)
Seals   0x03a8f5882554acdf65189a4481e649f856ef27ae  stamps (ERC-721 SEAL), names, vault, notes, finale
Market  0xac0f61c102e9a6acd0d50001bf41d8904e839a89  bids only, fee 2%
Notes   0x94b1dfc6ddcf4403e5c8096afcfbc21b24b3f8cc  notes (ERC-721 NOTE)
Stones  0x6419527ee94512fe5bebbb68080672fe76d185a2  stones (ERC-721 STONE), token id = uint256(keccak256(name))
Art     0x485997fc529586dc9088b9b63da0ee1b7c3c662c  the pictures, drawn on chain
Agent ID registry 0x60B9262456dE011F7d15a54CdD8c48bAaa8B022F
  handleOf(address wallet) returns (string), ownerOfHandle(string name) returns (address)

THE RULES IN NUMBERS
22,222 stamps ever. At most 4 per name and 4 per wallet. The mint is open for 24 hours after deploy.
First stamp of a name 0.0014 BNB = 1400000000000000 wei. Each next stamp 0.006 BNB = 6000000000000000 wei.
For a name that has not pressed yet: 1 stamp 0.0014, 2 stamps 0.0074, 3 stamps 0.0134, 4 stamps 0.0194 BNB.
Inks, fixed in advance by the name: 0 vermilion, 1 cinnabar, 2 soot, 3 indigo (95% together, weight 1),
4 gold (4%, weight 3), 5 jade (1%, weight 10).
Each stamp payment: 70% to the vault, 20% to the author, 10% to the referrer (no referrer: 80% to the vault).

PRESS STAMPS
1. Seals.quote(address wallet, uint256 count) returns (string handle, uint256 left, uint256 cost)
   handle "" means the wallet has no Agent ID: stop. left = stamps it may still press. cost = wei for count stamps.
2. Seals.stamp(uint256 count, string referrer) payable, value = cost.
   referrer = another Agent ID name without ".ai" (its owner gets 10% at once), or "".
   Or a plain BNB transfer to Seals: it presses as many stamps as the value pays for and sends the rest back.
   A plain transfer has no referrer. Gas limit about 800000: use eth_estimateGas.
3. The new token ids: Transfer events of Seals to the wallet, or Stamped(wallet, name, firstId, count, paid, referrer).

FREE STONE (gas only, during the mint)
Seals.claimStone(), or send 0 BNB to Seals. It also comes with the first stamp of a name.

LOOK UP A NAME
Seals.nameInfo(string name) returns (uint256 stamped, bool stone, uint256 brought, uint256 onNotes, uint256 earned,
  uint256[4] inks, address wallet)
Seals.priceOf(uint256 done, uint256 count) returns (uint256 wei)

NOTES
Seals.weave(uint256[10] ids, string title) burns ten stamps you hold and returns the note id.
  title: "" or a-z, 0-9 and single spaces, at most 16 characters, each title once
  (Seals.noteOfTitle(keccak256(title)) is 0 while the title is free).
Weight = the sum of the ten ink weights. The vault releases 1% of what it holds per hour to the notes by weight.
Seals.holdsOf(uint256 noteId) returns the wei a note holds now. It stays in the note, and goes with it when sold.
Seals.claim(uint256[] noteIds) pays the holder.
Seals.noteOf(uint256 noteId) returns (string title, uint256 weight, string[10] handles, uint256[10] inks,
  uint256 holds, uint256 wovenAt)

HOLDINGS
Seals.tokensOf, Notes.tokensOf, Stones.tokensOf (address holder, uint256 start, uint256 count)
  returns (uint256[] ids, uint256 total)
Seals.stampOf(uint256 id) returns (string handle, uint256 index, uint256 ink)
Seals.inkOfStamp(uint256 id) returns (uint256), Seals.weightOf(uint256 noteId) returns (uint256)

MARKET (bids only, selling needs no approval)
Market.bidCount() returns (uint256)
Market.bidsFrom(uint256 start, uint256 count) returns (address bidder, uint96 price, uint32 left, uint8 kind,
  uint8 filter, bytes32 key)[]. A bid's id is its index.
Market.bid(uint8 kind, uint8 filter, bytes32 key, uint32 count) payable, value = price x count exactly.
  kind 0 stamps: filter 0 any ink, 1 gold or jade, 2 jade only. kind 1 notes: filter = minimum weight (0 any).
  kind 2 stones: filter 0, key = keccak256(name), or 0x0000000000000000000000000000000000000000000000000000000000000000 for any.
Market.sell(uint8 kind, uint256[] bidIds, uint256[] tokenIds, uint256 minPrice) sells your tokens in one transaction.
  Each token takes the first listed bid, from the current position, that has units left, fits and pays at least
  minPrice. The position never moves back: list the bids from the highest price, each once, and order tokenIds to
  follow them. Fee 2% of the total.
Market.cancel(uint256 id) returns what is left of your bid.

STATE
Seals.stats() returns (stamps, stampsBurned, names, stones, notes, weight, prize, closed, drawn, authorDue,
  openAt, mintEnd, finale)
Seals.vault() returns (uint256 held, uint256 waiting, uint256 perHour, uint256 notesCount)

FINALE
14 days after deploy weaving closes and the vault stops releasing. Anyone calls Seals.close(), then after 5 blocks
Seals.draw(): what is left in the vault goes to one note, chosen by weight. After that, half of each fee goes to the
notes at once.

This is a game of redistribution: notes are paid from what the stamps paid. Nothing here promises income.
</pre>
  </section>
</main>
<footer id="foot" class="foot"></footer>
<div id="toast" class="toast" hidden></div>
<div id="sheet" class="sheet" hidden></div>
<script id="app">
/* TEN SEALS: the code of this page, as plain text.
   First the configuration, the one place with addresses, chain id and RPCs (site/finalize.mjs writes them):
     chainId   the chain the contracts live on
     seals     Seals: stamps (ERC-721 SEAL), names, vault, notes, finale
     market    Market: bids only
     notes     Notes (ERC-721 NOTE)
     stones    Stones (ERC-721 STONE)
     art       Art: the pictures, drawn on chain
     registry  the Binance Agent ID registry (SPACE ID)
     explorer  where links to transactions and addresses go
     rpcs      JSON-RPC endpoints, asked in this order, the next one when one is busy
   Then the app: site/src/main.js and the modules it imports, bundled and minified by esbuild. It reads
   window.TENSEALS and holds no address. */
window.TENSEALS = {
  chainId: 56,
  seals: "0x03a8f5882554acdf65189a4481e649f856ef27ae",
  market: "0xac0f61c102e9a6acd0d50001bf41d8904e839a89",
  notes: "0x94b1dfc6ddcf4403e5c8096afcfbc21b24b3f8cc",
  stones: "0x6419527ee94512fe5bebbb68080672fe76d185a2",
  art: "0x485997fc529586dc9088b9b63da0ee1b7c3c662c",
  registry: "0x60b9262456de011f7d15a54cdd8c48baaa8b022f",
  explorer: "https://bscscan.com",
  rpcs: "https://bsc-rpc.publicnode.com https://bsc-dataseed.bnbchain.org https://bsc.drpc.org https://bsc-dataseed1.binance.org https://bsc-dataseed1.defibit.io"
};
(()=>{var kn=e=>new Promise(t=>setTimeout(t,e)),Y=class extends Error{constructor(t){super(t&&t.message||"RPC error"),this.code=t&&t.code,this.data=t&&t.data}},ze=e=>e&&!/revert/i.test(e.message||"")&&(e.code===-32005||e.code===429||/rate|limit|too many|timeout|unavailable|capacity|busy/i.test(e.message||"")),ye=class{constructor(t,n=15e3){this.urls=[].concat(t),this.at=0,this.n=0,this.timeout=n,this.single=new Set}async post(t,n){let s=typeof AbortController=="function"?new AbortController:null,i=s&&setTimeout(()=>s.abort(),this.timeout);try{let r=await fetch(t,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(n),signal:s?s.signal:void 0});if(r.status===429||r.status>=500)throw new Error(`busy (${r.status})`);return await r.json()}finally{i&&clearTimeout(i)}}async rotate(t){let n,s=this.urls.length;for(let i=0;i<s*2;i++){let r=(this.at+i)%s;try{let l=await t(this.urls[r]);return this.at=r,l}catch(l){n=l,i===s-1&&await kn(800)}}throw Object.assign(new Error("The network does not answer."),{network:!0,cause:n})}async send(t,n=[]){let s=await this.rotate(async i=>{let r=await this.post(i,{jsonrpc:"2.0",id:++this.n,method:t,params:n});if(!r||typeof r!="object")throw new Error("empty answer");if(r.error&&ze(r.error))throw new Y(r.error);return r});if(s.error)throw new Y(s.error);return s.result}async batch(t,n=25){let s=[];for(let i=0;i<t.length;i+=n)s.push(...await this.part(t.slice(i,i+n)));return s}async part(t){return this.rotate(async n=>{if(t.length===1||this.single.has(n))return this.each(n,t);let s=t.map(([c,d])=>({jsonrpc:"2.0",id:++this.n,method:c,params:d})),i=await this.post(n,s),r=Array.isArray(i)?i:[],l=new Map(r.filter(c=>c&&typeof c=="object").map(c=>[c.id,c]));return s.some(c=>l.has(c.id))?s.map(c=>{let d=l.get(c.id);if(!d)throw new Error("a batch came back short");if(d.error&&ze(d.error))throw new Y(d.error);return d.error?{error:d.error}:d.result}):(this.single.add(n),this.each(n,t))})}async each(t,n,s=4){let i=new Array(n.length),r=0,l=async()=>{for(;r<n.length;){let c=r++,d=await this.post(t,{jsonrpc:"2.0",id:++this.n,method:n[c][0],params:n[c][1]});if(!d||typeof d!="object")throw new Error("empty answer");if(d.error&&ze(d.error))throw new Y(d.error);i[c]=d.error?{error:d.error}:d.result}};return await Promise.all(Array.from({length:Math.min(s,n.length)},l)),i}};var Ge=e=>e?String(e).toLowerCase():null,Ye="tenseals.wallet",Be={get(){try{return JSON.parse(localStorage.getItem(Ye)||"null")}catch{return null}},set(e){try{e?localStorage.setItem(Ye,JSON.stringify(e)):localStorage.removeItem(Ye)}catch{}}},$e=class{constructor(t,n){this.cfg=t,this.onChange=n,this.found=[],this.hooked=new WeakSet,this.provider=null,this.account=null,addEventListener("eip6963:announceProvider",s=>{let i=s.detail;i&&i.info&&i.provider&&!this.found.some(r=>r.info.uuid===i.info.uuid)&&(this.found.push(i),queueMicrotask(()=>this.onChange("found")))}),dispatchEvent(new Event("eip6963:requestProvider"))}list(){return this.found.length?this.found:window.ethereum?[{info:{uuid:"injected",name:"Browser wallet",icon:""},provider:window.ethereum}]:[]}attach(t,n){let s=t.provider;this.provider=s,this.account=n,Be.set({rdns:t.info.rdns||"",name:t.info.name||""}),s.on&&!this.hooked.has(s)&&(this.hooked.add(s),s.on("accountsChanged",i=>{s===this.provider&&(this.account=Ge(i&&i[0]),this.account||Be.set(null),this.onChange("account"))}),s.on("chainChanged",()=>{s===this.provider&&this.onChange("chain")}))}async connect(t){let n=await t.provider.request({method:"eth_requestAccounts"}),s=Ge(n&&n[0]);if(!s)throw new Error("The wallet did not share an account.");this.attach(t,s);let i=null;try{await this.chain()}catch(r){i=r}if(this.onChange("account"),i)throw i}async restore(){let t=Be.get();if(!t)return!1;let n=l=>t.rdns?l.info.rdns===t.rdns:l.info.name===t.name,s=null;for(let l=0;l<25&&!s&&!this.account;l++)s=this.list().find(n)||null,s||await new Promise(c=>setTimeout(c,100));if(!s||this.account)return!1;let i=null;try{i=await s.provider.request({method:"eth_accounts"})}catch{return!1}let r=Ge(i&&i[0]);return!r||this.account?!1:(this.attach(s,r),this.onChange("account"),!0)}disconnect(){Be.set(null),this.provider=null,this.account=null,this.onChange("account")}async chain(){let t="0x"+this.cfg.chainId.toString(16),n=async()=>Number(await this.provider.request({method:"eth_chainId"}))===this.cfg.chainId;if(!await n())try{await this.provider.request({method:"wallet_switchEthereumChain",params:[{chainId:t}]})}catch(s){if((s&&(s.code??(s.data&&s.data.originalError&&s.data.originalError.code)))!==4902&&!/unrecognized chain|wallet_addEthereumChain|not added/i.test(String(s&&s.message)))throw s;await this.provider.request({method:"wallet_addEthereumChain",params:[{chainId:t,chainName:"BNB Smart Chain",rpcUrls:[this.cfg.rpcs.split(" ")[0]],nativeCurrency:{name:"BNB",symbol:"BNB",decimals:18},blockExplorerUrls:[this.cfg.explorer]}]}),await n()||await this.provider.request({method:"wallet_switchEthereumChain",params:[{chainId:t}]})}}async send(t){return await this.chain(),this.provider.request({method:"eth_sendTransaction",params:[{from:this.account,...t}]})}};var ve={"Seals.stats":{s:"0xd80528ae",i:[],o:[["v",{c:[["stamps","uint256"],["stampsBurned","uint256"],["names","uint256"],["stones","uint256"],["notes","uint256"],["weight","uint256"],["prize","uint256"],["closed","bool"],["drawn","bool"],["authorDue","uint256"],["openAt","uint256"],["mintEnd","uint256"],["finale","uint256"]]}]]},"Seals.vault":{s:"0xfbfa77cf",i:[],o:[["held","uint256"],["waiting","uint256"],["perHour","uint256"],["notesCount","uint256"]]},"Seals.nameInfo":{s:"0x4c178824",i:["string"],o:[["v",{c:[["stamped","uint256"],["stone","bool"],["brought","uint256"],["onNotes","uint256"],["earned","uint256"],["inks",{a:"uint256",n:4}],["wallet","address"]]}]]},"Seals.quote":{s:"0x8f79306e",i:["address","uint256"],o:[["handle","string"],["left","uint256"],["cost","uint256"]]},"Seals.priceOf":{s:"0x816d0f7c",i:["uint256","uint256"],o:[["","uint256"]]},"Seals.stampOf":{s:"0x527cbaf7",i:["uint256"],o:[["handle","string"],["index","uint256"],["ink","uint256"]]},"Seals.tokensOf":{s:"0x23185dc9",i:["address","uint256","uint256"],o:[["ids",{a:"uint256",n:0}],["total","uint256"]]},"Seals.holdsOf":{s:"0x7b58a715",i:["uint256"],o:[["","uint256"]]},"Seals.noteOf":{s:"0xbc91f34d",i:["uint256"],o:[["title","string"],["weight","uint256"],["handles",{a:"string",n:10}],["inks",{a:"uint256",n:10}],["holds","uint256"],["wovenAt","uint256"]]},"Seals.inkOfStamp":{s:"0x67af0939",i:["uint256"],o:[["","uint256"]]},"Seals.weightOf":{s:"0x0767d178",i:["uint256"],o:[["","uint256"]]},"Seals.noteOfTitle":{s:"0x5445ede7",i:["bytes32"],o:[["","uint256"]]},"Seals.tokenURI":{s:"0xc87b56dd",i:["uint256"],o:[["","string"]]},"Seals.stamp":{s:"0x10f83edd",i:["uint256","string"],o:[]},"Seals.claimStone":{s:"0x1b275c5a",i:[],o:[]},"Seals.weave":{s:"0x13b4308c",i:[{a:"uint256",n:10},"string"],o:[["noteId","uint256"]]},"Seals.claim":{s:"0x6ba4c138",i:[{a:"uint256",n:0}],o:[["total","uint256"]]},"Seals.close":{s:"0x43d726d6",i:[],o:[]},"Seals.draw":{s:"0x0eecae21",i:[],o:[["winner","uint256"]]},"Seals.drawBlock":{s:"0xed7dd932",i:[],o:[["","uint256"]]},"Seals.jackpot":{s:"0x6b31ee01",i:[],o:[["","uint256"]]},"Seals.referralDue":{s:"0xde0b08fd",i:["address"],o:[["","uint256"]]},"Seals.withdrawReferral":{s:"0x9ea0e074",i:[],o:[]},"Seals.notes":{s:"0x1866dc97",i:[],o:[["","address"]]},"Seals.stones":{s:"0xeed0ce5d",i:[],o:[["","address"]]},"Seals.market":{s:"0x80f55605",i:[],o:[["","address"]]},"Seals.art":{s:"0x301bd28e",i:[],o:[["","address"]]},"Market.bidCount":{s:"0xb40a5627",i:[],o:[["","uint256"]]},"Market.bidsFrom":{s:"0xfcad8345",i:["uint256","uint256"],o:[["out",{a:{c:[["bidder","address"],["price","uint96"],["left","uint32"],["kind","uint8"],["filter","uint8"],["key","bytes32"]]},n:0}]]},"Market.bidOf":{s:"0x649ccc14",i:["uint256"],o:[["",{c:[["bidder","address"],["price","uint96"],["left","uint32"],["kind","uint8"],["filter","uint8"],["key","bytes32"]]}]]},"Market.bid":{s:"0xb692d3dd",i:["uint8","uint8","bytes32","uint32"],o:[["id","uint256"]]},"Market.sell":{s:"0xc10d090f",i:["uint8",{a:"uint256",n:0},{a:"uint256",n:0},"uint256"],o:[["total","uint256"]]},"Market.cancel":{s:"0x40e58ee5",i:["uint256"],o:[]},"Notes.tokensOf":{s:"0x23185dc9",i:["address","uint256","uint256"],o:[["ids",{a:"uint256",n:0}],["total","uint256"]]},"Notes.tokenURI":{s:"0xc87b56dd",i:["uint256"],o:[["","string"]]},"Stones.tokensOf":{s:"0x23185dc9",i:["address","uint256","uint256"],o:[["ids",{a:"uint256",n:0}],["total","uint256"]]},"Stones.tokenURI":{s:"0xc87b56dd",i:["uint256"],o:[["","string"]]},"IArt.stampURI":{s:"0xca46b4bd",i:["uint256","string","uint256","uint256"],o:[["","string"]]},"Reg.handleOf":{s:"0xc50a1514",i:["address"],o:[["","string"]]},"Reg.ownerOfHandle":{s:"0x1da94fb4",i:["string"],o:[["","address"]]},"Reg.tokenURI":{s:"0xc87b56dd",i:["uint256"],o:[["","string"]]}},Ve={"0x01336cea":"AccountBalanceOverflow","0x9369829c":"BadReferrer","0xd4f81c0a":"BadTitle","0x8f4eb604":"BalanceQueryForZeroAddress","0x0e0f4cc2":"DrawExpired","0xa2f59dfe":"DrawPending","0xcfed9d4c":"MintOver","0xf947691f":"NoAgentId","0x27c30fb4":"NoNotes","0x5b7a4024":"NotDrawable","0xc4bbea69":"NotMarket","0xe6dd1a31":"NotOpenYet","0x4b6e7f18":"NotOwnerNorApproved","0x4a636d30":"NotYours","0xe0a62d40":"QuotaUsed","0xab143c06":"Reentrancy","0x350a88b3":"RoyaltyOverflow","0xb4457eaa":"RoyaltyReceiverIsZeroAddress","0x52df9fe5":"SoldOut","0x6fb9bdfd":"StoneTaken","0xe632efff":"TitleTaken","0xc991cbb1":"TokenAlreadyExists","0xceea21b6":"TokenDoesNotExist","0x085de625":"TooEarly","0xa1148100":"TransferFromIncorrectOwner","0xd1a57ed6":"TransferToNonERC721ReceiverImplementer","0xea553b34":"TransferToZeroAddress","0x949ce241":"Underpaid","0x86e76e87":"WeavingOver","0x2121f3dd":"BadBid","0xa7ce2231":"NoBidLeft","0xc0ee0503":"WrongMarket","0x87d21792":"NotSeals"},W={Approval:"0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925",ApprovalForAll:"0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31",Claimed:"0xd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a",Closed:"0xbb1c869dafbabf53b7b5a50e7864066365b4c5d1bcfa0220f75cc2a2acfb44f6",Drawn:"0xf7736569faeed844709ca4a22ad56604f54d41203ae8181a6a4b71717b10153d",Fee:"0x557809284da7314475b1582804ae28e5f1349efc1fe970ea25d50fce75eb4f43",ReferralHeld:"0x832c5f015eb5695b9abb41a364dffc9885acf508e483ef5d43d06196decb1320",Stamped:"0xc508b0a74d379c4e4264a86bc78d492676bccca8cf84695b5b5677791cac9af5",StoneClaimed:"0x5b90ca904c846c4cd3ec95e9e0c4ffea741e0a1f2529eae61f9684b014dc80f9",Transfer:"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",Woven:"0x4908b973171e276c3da26dfa1d9a49736098f5d7ba056e0d0cc7a92e4a7e93e3",BidCancelled:"0x434f408152dd2123c65c37cf2f87c99b796232777a79d6e67484bcc946bd51c3",BidPlaced:"0xb5b619786a3aa97af6e45b93c231e14af71b9a77982f8c4b62674509b80e6fe4",Sold:"0xa70b1a854695e7921b122988e216d3a6cd10ed799017c67b1ff231967e6bf56d"};var V=e=>String(e||"").replace(/^0x/i,""),yn=e=>Array.from(e,t=>t.toString(16).padStart(2,"0")).join("");function Ot(e){let t=V(e),n=new Uint8Array(t.length>>1);for(let s=0;s<n.length;s++)n[s]=parseInt(t.substr(s*2,2),16);return n}var le=e=>BigInt.asUintN(256,BigInt(e)).toString(16).padStart(64,"0"),Bn=e=>e+"0".repeat((64-e.length%64)%64),ce=e=>typeof e=="string"?e==="string"||e==="bytes":e.c?e.c.some(t=>ce(t[1])):!e.n||ce(e.a),Ne=e=>ce(e)||typeof e=="string"?32:e.c?e.c.reduce((t,n)=>t+Ne(n[1]),0):e.n*Ne(e.a);function Ke(e,t){let n="",s="",i=e.reduce((r,l)=>r+Ne(l),0);return e.forEach((r,l)=>{let c=$n(r,t[l]);ce(r)?(n+=le(i),s+=c,i+=c.length/2):n+=c}),n+s}function $n(e,t){if(typeof e!="string"){if(e.c)return Ke(e.c.map(r=>r[1]),Array.isArray(t)?t:e.c.map(r=>t[r[0]]));if(e.n&&t.length!==e.n)throw new Error(`expected ${e.n} values`);let i=Ke(t.map(()=>e.a),t);return e.n?i:le(t.length)+i}if(e==="string"||e==="bytes"){let i=e==="string"?new TextEncoder().encode(t):Ot(t);return le(i.length)+Bn(yn(i))}if(e==="address"){let i=V(t).toLowerCase();if(!/^[0-9a-f]{40}$/.test(i))throw new Error(`not an address: ${t}`);return i.padStart(64,"0")}if(e==="bool")return le(t?1:0);if(/^bytes\d/.test(e))return V(t).toLowerCase().padEnd(64,"0");let n=BigInt(t),s=+(e.match(/\d+$/)||[256])[0];if(e[0]==="u"&&(n<0n||n>>BigInt(s)))throw new Error(`${t} does not fit ${e}`);return le(n)}var Se=(e,t)=>{let n=e.slice(t,t+64);if(n.length<64)throw new Error("The answer is too short.");return BigInt("0x"+n)};function j(e,t,n=0){let s=[],i=n;for(let r of e)s.push(ce(r)?Lt(r,t,n+Number(Se(t,i))*2):Lt(r,t,i)),i+=Ne(r)*2;return s}function Lt(e,t,n){if(typeof e!="string"){if(e.c){let r=j(e.c.map(c=>c[1]),t,n),l={};return e.c.forEach((c,d)=>l[c[0]||d]=r[d]),l}let i=e.n||Number(Se(t,n));if(i>1e5)throw new Error("The answer is malformed.");return j(Array(i).fill(e.a),t,e.n?n:n+64)}if(e==="string"||e==="bytes"){let i=Number(Se(t,n))*2,r=t.slice(n+64,n+64+i);if(r.length<i)throw new Error("The answer is too short.");return e==="string"?new TextDecoder().decode(Ot(r)):"0x"+r}let s=Se(t,n);return e==="address"?"0x"+s.toString(16).padStart(64,"0").slice(24):e==="bool"?s!==0n:/^bytes\d/.test(e)?"0x"+s.toString(16).padStart(64,"0").slice(0,2*+e.slice(5)):e[0]==="i"?BigInt.asIntN(+e.slice(3)||256,s):s}var Ze=(e,t=[])=>e.s+Ke(e.i,t);function jt(e,t){let n=V(t);if(!n&&e.o.length)throw Object.assign(new Error("No contract answered at this address."),{empty:!0});let s=j(e.o.map(r=>r[1]),n);if(e.o.length===1)return s[0];let i={};return e.o.forEach((r,l)=>i[r[0]||l]=s[l]),i}function Pt(e,t){let n=V(e);if(n.length<8)return null;let s="0x"+n.slice(0,8).toLowerCase();try{if(s==="0x08c379a0")return{name:"Error",reason:j(["string"],n,8)[0]};if(s==="0x4e487b71")return{name:"Panic",code:j(["uint256"],n,8)[0]}}catch{return null}return t[s]?{name:t[s]}:{name:"",sel:s}}var vn=(1n<<64n)-1n,Sn="1 8082 800000000000808a 8000000080008000 808b 80000001 8000000080008081 8000000000008009 8a 88 80008009 8000000a 8000808b 800000000000008b 8000000000008089 8000000000008003 8000000000008002 8000000000000080 800a 800000008000000a 8000000080008081 8000000000008080 80000001 8000000080008008".split(" ").map(e=>BigInt("0x"+e)),Nn=[0,1,62,28,27,36,44,6,55,20,3,10,43,25,39,41,45,15,21,8,18,2,61,56,14],Rt=(e,t)=>t?(e<<BigInt(t)|e>>BigInt(64-t))&vn:e;function In(e){let t=e.length,n=new Uint8Array(t+136-t%136);n.set(e),n[t]^=1,n[n.length-1]^=128;let s=new Array(25).fill(0n);for(let r=0;r<n.length;r+=136){for(let l=0;l<17;l++){let c=0n;for(let d=7;d>=0;d--)c=c<<8n|BigInt(n[r+l*8+d]);s[l]^=c}for(let l=0;l<24;l++){let c=[0,1,2,3,4].map(u=>s[u]^s[u+5]^s[u+10]^s[u+15]^s[u+20]);for(let u=0;u<5;u++){let f=c[(u+4)%5]^Rt(c[(u+1)%5],1);for(let p=0;p<25;p+=5)s[u+p]^=f}let d=new Array(25);for(let u=0;u<5;u++)for(let f=0;f<5;f++)d[f+5*((2*u+3*f)%5)]=Rt(s[u+5*f],Nn[u+5*f]);for(let u=0;u<5;u++)for(let f=0;f<5;f++)s[u+5*f]=d[u+5*f]^~d[(u+1)%5+5*f]&d[(u+2)%5+5*f];s[0]^=Sn[l]}}let i=new Uint8Array(32);for(let r=0;r<4;r++){let l=s[r];for(let c=0;c<8;c++)i[r*8+c]=Number(l&255n),l>>=8n}return i}var xn=e=>Array.from(e,t=>t.toString(16).padStart(2,"0")).join(""),oe=e=>"0x"+xn(In(new TextEncoder().encode(e)));var An=e=>new Promise(t=>setTimeout(t,e)),qt="0x"+"0".repeat(40),R=e=>e instanceof Error,Je=class extends Error{constructor(t){super(t&&t.message||"call failed"),this.code=t&&t.code,this.data=t&&t.data}};function Wt(e){let t=String(e||"").trim();try{/^data:application\/json;base64,/i.test(t)?t=new TextDecoder().decode(Uint8Array.from(atob(t.slice(t.indexOf(",")+1)),i=>i.charCodeAt(0))):/^data:application\/json/i.test(t)&&(t=decodeURIComponent(t.slice(t.indexOf(",")+1)));let n=JSON.parse(t),s=String(n.image||n.image_data||"");return s.startsWith("<svg")&&(s="data:image/svg+xml;charset=utf-8,"+encodeURIComponent(s)),/^data:image\//i.test(s)||(s=""),{name:String(n.name||""),image:s,json:n}}catch{return null}}function Tn(e,t){let n=String(e||"").match(/([a-z0-9_-]+)\.json(?:[?#].*)?$/i);if(!n)return null;let s=n[1].toLowerCase();return BigInt(oe(s))===BigInt(t)?s:null}function En(e){let t=new Set,n=s=>{if(!s||t.has(s))return null;if(typeof s=="string"){let i=s.match(/0x[0-9a-fA-F]{8,}/);return i&&(s.startsWith("0x")||/revert/i.test(s))?i[0]:null}if(typeof s!="object")return null;t.add(s);for(let i of["data","error","originalError","cause","info","body"]){let r=n(s[i]);if(r)return r}return null};return n(e)}function Qe(e){if(!e)return{key:"unknown"};let t=String(e.message||e);if(e.code===4001||e.code==="ACTION_REJECTED"||/user (rejected|denied|cancel)|rejected the request|request rejected/i.test(t))return{key:"rejected"};let n=En(e);if(n){let s=Pt(n,Ve);if(s&&s.name)return{key:s.name,detail:s.reason}}return/insufficient funds/i.test(t)?{key:"noFunds"}:e.failed?{key:"failed",hash:e.hash}:e.lost?{key:"lost",hash:e.hash}:e.network||/failed to fetch|networkerror|load failed|network/i.test(t)?{key:"network"}:/execution reverted|revert/i.test(t)?{key:"reverted"}:{key:"",detail:t.slice(0,200)}}var Ie=class{constructor(t,n,s){this.cfg=t,this.rpc=n,this.wallet=s,this.at={Seals:t.seals,Market:t.market,Notes:t.notes,Stones:t.stones,IArt:t.art,Reg:t.registry}}req(t,n=[]){return["eth_call",[{to:this.at[t.split(".")[0]],data:Ze(ve[t],n)},"latest"]]}async many(t){return(await this.rpc.batch(t.map(s=>s[2]===!0?[s[0],s[1]]:this.req(s[0],s[1])))).map((s,i)=>{if(s&&s.error)return new Je(s.error);if(t[i][2]===!0)return s;try{return jt(ve[t[i][0]],s)}catch(r){return r}})}async one(t,n){let[s]=await this.many([[t,n]]);if(R(s))throw s;return s}async overview(){let[t,n,s,i]=await this.many([["Seals.stats"],["Seals.vault"],["Market.bidCount"],["eth_getBlockByNumber",["latest",!1],!0]]);for(let l of[t,n,s])if(R(l))throw l;let r=l=>Number(l);return{stats:{stamps:r(t.stamps),burned:r(t.stampsBurned),names:r(t.names),stones:r(t.stones),notes:r(t.notes),weight:r(t.weight),prize:t.prize,closed:t.closed,drawn:t.drawn,openAt:r(t.openAt),mintEnd:r(t.mintEnd),finale:r(t.finale)},vault:{held:n.held,waiting:n.waiting,perHour:n.perHour,notes:r(n.notesCount)},bidCount:r(s),block:!R(i)&&i?{number:r(i.number),time:r(i.timestamp)}:null,readAt:Date.now()}}async bids(t,n=250){let s=[];for(let l=0;l<t;l+=n)s.push(["Market.bidsFrom",[l,n]]);let i=await this.many(s),r=[];return i.forEach((l,c)=>{if(R(l))throw l;l.forEach((d,u)=>r.push({id:c*n+u,bidder:d.bidder,price:d.price,left:Number(d.left),kind:Number(d.kind),filter:Number(d.filter),key:d.key}))}),r}async nameInfo(t){let n=await this.one("Seals.nameInfo",[t]);return{name:t,stamped:Number(n.stamped),stone:n.stone,brought:Number(n.brought),onNotes:Number(n.onNotes),earned:n.earned,inks:n.inks.map(Number),wallet:n.wallet===qt?null:n.wallet}}async previews(t,n){return(await this.many(n.map((i,r)=>["IArt.stampURI",[0,t,r,i]]))).map(i=>{let r=R(i)?null:Wt(i);return r&&r.image?r.image:null})}async quote(t){let n=await this.many([1,2,3,4].map(s=>["Seals.quote",[t,s]]));if(R(n[0]))throw n[0];return{handle:n[0].handle,left:Number(n[0].left),cost:n.map(s=>R(s)?null:s.cost)}}async referralDue(t){return this.one("Seals.referralDue",[t])}async owner(t){let n=await this.one("Reg.ownerOfHandle",[t]);return n===qt?null:n}async tokens(t,n,s=500){let i=[];for(let r=0,l=1;r<l;r+=s){let c=await this.one(`${t}.tokensOf`,[n,r,s]);if(l=Number(c.total),i.push(...c.ids),!c.ids.length)break}return i}async stamps(t){let n=await this.many(t.map(s=>["Seals.stampOf",[s]]));return t.map((s,i)=>R(n[i])?null:{id:s,handle:n[i].handle,index:Number(n[i].index),ink:Number(n[i].ink)}).filter(Boolean)}async notes(t){let n=await this.many(t.map(s=>["Seals.noteOf",[s]]));return t.map((s,i)=>{let r=n[i];return R(r)?null:{id:s,title:r.title,weight:Number(r.weight),handles:r.handles,inks:r.inks.map(Number),holds:r.holds,wovenAt:Number(r.wovenAt)}}).filter(Boolean)}async pictures(t,n,s=()=>{},i=3){for(let r=0;r<n.length;r+=i){let l=n.slice(r,r+i),c=await this.many(l.map(d=>[`${t}.tokenURI`,[d]]));l.forEach((d,u)=>{let f=R(c[u])?null:Wt(c[u]);s(d,f&&f.image?f.image:null,f)})}}async stoneNames(t){return(await this.many(t.map(s=>["Reg.tokenURI",[s]]))).map((s,i)=>R(s)?null:Tn(s,t[i]))}async titleOwner(t){return Number(await this.one("Seals.noteOfTitle",[oe(t)]))}async drawInfo(){let[t,n]=await this.many([["Seals.drawBlock"],["Seals.jackpot"]]);return{drawBlock:R(t)?0:Number(t),jackpot:R(n)?0n:n}}async write(t,n=[],s=0n,i=()=>{}){let r=this.wallet.account;if(!r)throw Object.assign(new Error("Connect a wallet first."),{noWallet:!0});let l=this.at[t.split(".")[0]],c=Ze(ve[t],n),d="0x"+BigInt(s).toString(16);i("check"),await this.rpc.send("eth_call",[{from:r,to:l,data:c,value:d},"latest"]);let u={to:l,data:c,value:d};try{let p=BigInt(await this.rpc.send("eth_estimateGas",[{from:r,to:l,data:c,value:d}]));u.gas="0x"+(p+p/4n+20000n).toString(16)}catch(p){if(p instanceof Y)throw p}i("confirm");let f=String(await this.wallet.send(u)).toLowerCase();return i("sent",f),this.receipt(f)}async receipt(t){let n=0;for(let s=0;s<400;s++){let i=null;try{i=await this.rpc.send("eth_getTransactionReceipt",[t]),n=0}catch{if(++n>8)throw Object.assign(new Error("lost"),{hash:t,lost:!0})}if(i){if(i.status!=="0x1")throw Object.assign(new Error("failed"),{hash:t,failed:!0});return i.ev=this.events(i),i}await An(s<30?700:2e3)}throw Object.assign(new Error("lost"),{hash:t,lost:!0})}events(t){let n=new Set(Object.values(this.at).map(i=>String(i).toLowerCase())),s=[];for(let i of t.logs||[]){let r=String(i.address).toLowerCase();if(!n.has(r))continue;let l=i.topics||[],c=V(i.data),d=p=>BigInt(l[p]),u=p=>"0x"+l[p].slice(26).toLowerCase(),f=Object.keys(this.at).find(p=>String(this.at[p]).toLowerCase()===r);if(l[0]===W.Transfer)s.push({e:"Transfer",c:f,from:u(1),to:u(2),id:d(3)});else if(l[0]===W.Stamped){let[p,h,I]=j(["uint256","uint256","uint256","address"],c);s.push({e:"Stamped",firstId:p,count:h,paid:I})}else if(l[0]===W.Woven){let[p,h]=j(["uint256","string"],c);s.push({e:"Woven",noteId:d(2),weight:p,title:h})}else if(l[0]===W.BidPlaced)s.push({e:"BidPlaced",id:d(1)});else if(l[0]===W.BidCancelled)s.push({e:"BidCancelled",id:d(1),refund:j(["uint256"],c)[0]});else if(l[0]===W.Sold){let[p,h]=j(["uint256","uint256"],c);s.push({e:"Sold",bidId:d(1),tokenId:p,price:h})}else if(l[0]===W.Claimed)s.push({e:"Claimed",amount:j(["uint256"],c)[0]});else if(l[0]===W.Closed){let[p,h]=j(["uint256","uint256"],c);s.push({e:"Closed",jackpot:p,drawBlock:h})}else l[0]===W.Drawn&&s.push({e:"Drawn",noteId:d(1),amount:j(["uint256"],c)[0]})}return s}async winner(t,n){try{let s=Math.min(t+4e4,n||t+4e4),i=await this.rpc.send("eth_getLogs",[{address:this.at.Seals,topics:[W.Drawn],fromBlock:"0x"+t.toString(16),toBlock:"0x"+s.toString(16)}]),r=i&&i[0];return r?{noteId:BigInt(r.topics[1]),amount:j(["uint256"],V(r.data))[0]}:null}catch{return null}}};var Cn=200n;var Xe="0x"+"0".repeat(64),de=e=>e-e*Cn/10000n,Mn=(e,t)=>e.price===t.price?e.id-t.id:e.price>t.price?-1:1,ee=e=>e.filter(t=>t.left>0).sort(Mn);function Ft(e,t=4){let n=0,s=0n;for(let i of ee(e)){if(i.kind!==0||i.filter!==0)continue;let r=Math.min(i.left,t-n);if(s+=i.price*BigInt(r),n+=r,n===t)break}return{units:n,gross:s,net:de(s)}}function Ht(e){let t=new Map;for(let s of ee(e)){let i=s.kind===2?`2:${s.key}`:`${s.kind}:${s.filter}`;t.has(i)||t.set(i,{kind:s.kind,filter:s.filter,key:s.key,bids:[],units:0});let r=t.get(i);r.bids.push(s),r.units+=s.left}let n=s=>s.kind===2?s.key===Xe?0:1:s.filter;return[...t.values()].sort((s,i)=>s.kind-i.kind||n(s)-n(i)||(i.bids[0].price>s.bids[0].price?1:-1))}function et(e,t,n){return t.kind!==e?!1:e===0?t.filter===0||(t.filter===1?n.ink>=4:n.ink===5):e===1?t.filter===0||n.weight>=t.filter:t.key===Xe||BigInt(t.key)===BigInt(n.id)}function Ut(e,t,n,s){let i=s?s.toLowerCase():"",r=ee(n).filter(h=>h.kind===e&&h.bidder.toLowerCase()!==i),l=new Set(r.filter(h=>e===2&&h.key!==Xe).map(h=>BigInt(h.key))),c=h=>e===0?h.ink>=4?h.ink-3:0:e===1?h.weight:l.has(BigInt(h.id))?1:0,d=t.slice().sort((h,I)=>c(h)-c(I)||(BigInt(h.id)<BigInt(I.id)?-1:1)),u=[],f=[];for(let h of r){let I=h.left,_=0;if(d=d.filter(X=>I===0||!et(e,h,X)?!0:(I--,_++,u.push({token:X,bid:h,price:h.price}),!1)),_&&f.push(h.id),!d.length)break}let p=u.reduce((h,I)=>h+I.price,0n);return{rows:u,unmatched:d,bidIds:f,tokenIds:u.map(h=>h.token.id),minPrice:u.length?u.reduce((h,I)=>I.price<h?I.price:h,u[0].price):0n,total:p,fee:p-de(p),net:de(p)}}var ue="#f2ebde",_t=[["vermilion","#c4302a","#dc5a48"],["cinnabar","#9c1f1a","#b8402f"],["soot","#221d1a","#4a423b"],["indigo","#27396b","#4a5d91"],["gold","#b08a3a","#dcbd72"],["jade","#2e7656","#62a888"]],zt=["38","24","16.5","16.5","4","1"],xe=e=>e<4?1:e===4?3:10,Dn={a:"04004044 0242",b:"0004444202 003032",c:"40000444",d:"003031414333340400",e:"40000444 0232",f:"400004 0232",g:"400004444222",h:"0004 4044 0242",i:"0040 2024 0444",j:"0040 30340403",k:"0004 403031212202 2223333444",l:"000444",m:"04004044 2023",n:"040020244440",o:"0040440400",p:"0400404202",q:"4303004044",r:"0400404202 32334344",s:"40101101024243333404",t:"0040 2024",u:"00044440",v:"0003131434334340",w:"00044440 2124",x:"0044 4004",y:"00024240 2224",z:"00400444",0:"0040440400 2123",1:"102024 0444",2:"004042020444",3:"00404404 1242",4:"000242 3034",5:"400002424404",6:"400004444202",7:"01004044",8:"0040440400 0242",9:"420200404404",".":"2424"};function Ae(e){let t=1779033703^e.length;for(let s=0;s<e.length;s++)t=Math.imul(t^e.charCodeAt(s),3432918353),t=t<<13|t>>>19;let n=t>>>0;return()=>{n=n+1831565813|0;let s=Math.imul(n^n>>>15,1|n);return s=s+Math.imul(s^s>>>7,61|s)^s,((s^s>>>14)>>>0)/4294967296}}var N=(e,t,n)=>t+(n-t)*e(),k=e=>e.toFixed(1);function Gt(e,t,n,s,i,r,l,c){let d=Dn[e];return d?d.split(" ").map(u=>{let f="";for(let p=0;p<u.length;p+=2){let h=t+c+ +u[p]*(s*4-2*c)/4+N(r,-l,l),I=n+c+ +u[p+1]*(i*4-2*c)/4+N(r,-l,l);f+=(p?"L":"M")+k(h)+","+k(I+(e==="."&&p?.1:0))}return f}).join(""):""}function pe(e,t,n,s,i,r){let l=Ae("line"+e),c=s/4,d=c*4*1.45,u="";[...e].forEach((p,h)=>u+=Gt(p,t+h*d,n,c,c,l,0,0));let f=e.length*d-c*4*.45;return[`<path d="${u}" fill="none" stroke="${i}" stroke-width="${k(r||Math.max(1.2,c*.55))}" stroke-linecap="square"/>`,f]}function Te(e,t,n,s,i,{seed:r=0,rot:l,light:c=!1,uid:d="s",rows:u}={}){let f=Ae(`seal|${e}|${r}`),p=i/2;l===void 0&&(l=N(f,-2.6,2.6));let[,h,I]=_t[t]||_t[0],_=[],X=[[-p,-p],[p,-p],[p,p],[-p,p]];for(let $=0;$<4;$++){let[y,S]=X[$],[T,A]=X[($+1)%4],M=c?12:34;for(let E=0;E<M;E++){let D=E/M,z=(A-S)/i,G=-(T-y)/i,Mt=i*.006,Dt=N(f,-Mt,Mt)+(f()<.035?-i*N(f,.012,.03):0);_.push(k(n+y+(T-y)*D+z*Dt)+","+k(s+S+(A-S)*D+G*Dt))}}let xt="M"+_.join("L")+"Z",re=`<path d="${xt}" fill="${h}"/>`;if(!c){let $="",y=14+Math.floor(f()*10);for(let S=0;S<y;S++){let T=N(f,-p,p),A=N(f,-p,p),M=i*N(f,.04,.13);for(let E=0;E<9;E++){let D=2*Math.PI*E/9;$+=(E?"L":"M")+k(n+T+Math.cos(D)*M*N(f,.6,1.3))+","+k(s+A+Math.sin(D)*M*N(f,.6,1.3))}$+="Z"}re+=`<clipPath id="c${d}"><path d="${xt}"/></clipPath><path d="${$}" fill="${I}" opacity="${t>=4?.3:.16}" clip-path="url(#c${d})"/>`}let be=i*.1,At=i-2*be,He,ke;if(u){let $=u.map(y=>[...String(y).toLowerCase()]).filter(y=>y.length);ke=$.map(y=>y.length),He=$.flatMap((y,S)=>y.map((T,A)=>[T,A,S]))}else{let $=[...e.replace(/\.ai$/,"")],y=Math.max(1,$.length),S=Math.ceil(Math.sqrt(y)),T=Math.ceil(y/S);ke=new Array(T).fill(S),He=$.map((A,M)=>{let E=M%S,D=Math.floor(M/S);return D===T-1&&y%S&&(E+=(S-y%S)/2),[A,E,D]})}let Ue=At/Math.max(1,ke.length),Tt=Ue*.2,Et=(Ue-Tt)/4,_e=new Map;for(let[$,y,S]of He){let T=At/ke[S],A=T*.2,M=(T-A)/4,E=Math.min(M,Et)*.62,D=Gt($,n-p+be+y*T+A/2,s-p+be+S*Ue+Tt/2,M,Et,f,E*.05,E/2);_e.set(k(E),(_e.get(k(E))||"")+D)}for(let[$,y]of _e)re+=`<path d="${y}" fill="none" stroke="${ue}" stroke-width="${$}" stroke-linecap="square" stroke-linejoin="miter"/>`;let O=p-be*.42,Ct="";for(let[$,y,S,T]of[[-O,-O,O,-O],[O,-O,O,O],[O,O,-O,O],[-O,O,-O,-O]])for(let A=0;A<1;){let M=Math.min(1,A+N(f,.18,.5));Ct+=`M${k(n+$+(S-$)*A)},${k(s+y+(T-y)*A)}L${k(n+$+(S-$)*M)},${k(s+y+(T-y)*M)}`,A=M+N(f,0,.06)}if(re+=`<path d="${Ct}" stroke="${ue}" stroke-width="${k(Math.max(1,i*.012))}" fill="none"/>`,!c){let $="",y=55+Math.floor(f()*50);for(let S=0;S<y;S++){let T,A;if(f()<.55){let D=Math.floor(f()*4),z=N(f,-p,p),G=N(f,0,i*.08);[T,A]=[[z,-p+G],[p-G,z],[z,p-G],[-p+G,z]][D]}else[T,A]=[N(f,-p,p),N(f,-p,p)];let M=i*N(f,.002,.009),E=5+Math.floor(f()*4);for(let D=0;D<E;D++){let z=2*Math.PI*D/E,G=M*N(f,.55,1.35);$+=(D?"L":"M")+k(n+T+Math.cos(z)*G)+","+k(s+A+Math.sin(z)*G)}$+="Z"}re+=`<path d="${$}" fill="${ue}" opacity="0.92"/>`}return`<g transform="rotate(${k(l)} ${k(n)} ${k(s)})">${re}</g>`}function Yt(e,t,n){let s=Ae("paper"+n),i="";for(let r=0;r<90;r++){let l=N(s,0,e),c=N(s,0,t),d=N(s,0,Math.PI),u=N(s,8,38);i+=`M${k(l)},${k(c)}l${k(Math.cos(d)*u)},${k(Math.sin(d)*u)}`}return`<rect width="${e}" height="${t}" fill="${ue}"/><path d="${i}" stroke="#d9cfbd" stroke-width="0.8" opacity="0.55" fill="none"/>`}var st=e=>"data:image/svg+xml;charset=utf-8,"+encodeURIComponent(e),at=(e,t,n)=>`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${e} ${t}" width="${e}" height="${t}">${n}</svg>`;function ot(e,t,n){let[s,i]=pe(`${e}.ai`,0,0,22,"#2a2420"),[r,l]=pe(`${n+1} of 4`,0,0,14,"#8a7f70");return st(at(1e3,1e3,Yt(1e3,1e3,e+n)+Te(e,t,500,455,600,{seed:n,uid:"p"})+`<g transform="translate(${k(500-i/2)},848)">${s}</g><g transform="translate(${k(500-l/2)},898)">${r}</g>`))}var tt=new Map;function Ee(e,t,n){let s=`${e}|${t}|${n}`;return tt.has(s)||tt.set(s,st(at(120,120,Te(e,t,60,60,100,{seed:n,light:!0})))),tt.get(s)}var nt=new Map;function Ce(e){let t=`${e.id}|${e.title}|${e.holds}`;if(nt.has(t))return nt.get(t);let n="#2a2420",s=Ae("note"+e.id),i=Yt(600,960,"n"+e.id);i+=`<rect x="20" y="20" width="560" height="920" fill="none" stroke="${n}" stroke-width="5"/><rect x="36" y="36" width="528" height="888" fill="none" stroke="${n}" stroke-width="1.6"/>`;let[r,l]=pe("note of ten seals",0,0,10,n);i+=`<g transform="translate(${k(300-l/2)},62)">${r}</g>`;let c=String(e.title||"");if(c){let h=Math.min(46,470/(c.length*1.45)),[I,_]=pe(c,0,0,h,n,Math.max(2,h*.16));i+=`<g transform="translate(${k(300-_/2)},${k(132-h/2)})">${I}</g>`}(e.handles||[]).forEach((h,I)=>{let _=180+I%2*240+N(s,-26,26),X=262+(I>>1)*120+N(s,-10,10);i+=Te(h,e.inks[I],_,X,92,{seed:I,light:!0,rot:N(s,-8,8)})});let d=(Number(BigInt(e.holds||0)/10n**12n)/1e6).toFixed(4),[u,f]=pe(`holds ${d} bnb`,0,0,13,n,2.4);i+=`<rect x="${k(300-f/2-26)}" y="852" width="${k(f+52)}" height="52" fill="${ue}" stroke="${n}" stroke-width="2"/><g transform="translate(${k(300-f/2)},871)">${u}</g>`;let p=st(at(600,960,i));return nt.set(t,p),p}var it=(e=56)=>`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200" width="${e}" height="${e}" role="img" aria-label="TEN SEALS">${Te("tenseals",0,100,100,176,{seed:7,rot:-2.2,uid:"mark"+e,rows:["ten","seals"]})}</svg>`;var K=[["en","EN","en-GB"],["zh","中文","zh-CN"],["ko","한국어","ko-KR"]],Me=0,De=()=>K[Me][0],rt=()=>K[Me][2],lt=e=>{let t=K.findIndex(n=>n[0]===e);Me=t<0?0:t},Le=e=>e[Me]||e[0],Ln=e=>String(e).replace(/[&<>"']/g,t=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"})[t]),o=(e,...t)=>(Vt[e]?Le(Vt[e]):e).replace(/\{(\d)\}/g,(s,i)=>{let r=t[i];return r===void 0?"":r&&r.raw!==void 0?r.raw:Ln(r)}),On=[["vermilion","cinnabar","soot","indigo","gold","jade"],["朱红","朱砂","墨","靛青","金","翡翠"],["주홍","주사","먹","쪽빛","금","비취"]],Kt=e=>Le(On)[e]||"?",Vt={"nav.home":["Seals","印章","도장"],"nav.name":["Your name","查名字","내 이름"],"nav.press":["Press","盖印","민팅"],"nav.market":["Market","市场","마켓"],"nav.weave":["Weave","合成","합성"],"nav.notes":["Notes","交子","지폐"],"nav.rules":["Rules","规则","규칙"],"nav.agents":["For agents","给 AI 代理","AI 에이전트용"],tagline:["BNB Chain, for Binance Agent ID","BNB Chain，Binance Agent ID 专属","BNB Chain, 바이낸스 Agent ID 전용"],connect:["Connect","连接钱包","지갑 연결"],foot:["No owner. No pause. No upgrade. This page is stored on BNB Chain and reads the chain itself.","没有管理员，不能暂停，不能升级。本页存储在 BNB Chain 上，直接读链。","오너 없음. 일시정지 없음. 업그레이드 없음. 이 페이지는 BNB Chain에 저장돼 있고 체인을 직접 읽어요."],"agents.h":["For AI agents","给 AI 代理","AI 에이전트용"],"agents.p":["Plain text, readable without JavaScript: everything an agent needs to press, claim, weave and trade. In English, as agents read it.","纯文本，不用 JavaScript 也能读：盖印、领取、合成、交易，代理需要的都在这里。保留英文，方便代理读取。","자바스크립트 없이도 읽히는 텍스트예요. 민팅, 클레임, 합성, 거래에 필요한 내용이 다 있어요. 에이전트가 읽기 좋게 영어로 둬요."],copy:["Copy","复制","복사"],copied:["Copied","已复制","복사됨"],close:["Close","关闭","닫기"],reading:["Reading the chain.","正在读取链上数据。","체인에서 읽는 중이에요."],readFail:["Could not read the chain. Trying again.","读取链上数据失败，正在重试。","체인을 읽지 못했어요. 다시 시도 중이에요."],needWallet:["Connect a wallet to do this.","请先连接钱包。","먼저 지갑을 연결하세요."],view:["View on BscScan","在 BscScan 查看","BscScan에서 보기"],"t.d":["{0} d {1} h","{0} 天 {1} 小时","{0}일 {1}시간"],"t.h":["{0} h {1} min","{0} 小时 {1} 分","{0}시간 {1}분"],"t.m":["{0} min {1} s","{0} 分 {1} 秒","{0}분 {1}초"],hero1:["Every Agent ID name has a seal. Ten stamps make a note. Notes draw from the vault.","每个 Agent ID 名字都有一枚印章。十枚印合成一张交子，交子按权重从金库分 BNB。","모든 Agent ID 이름엔 도장이 하나씩 있어요. 스탬프 10개로 지폐 1장을 만들고, 지폐는 금고에서 BNB를 받아요."],hero2:["In 1024, merchant houses in Sichuan pressed their seals onto paper, and the paper became money.","1024 年，四川的商号把印章盖在纸上，这张纸就成了钱，也就是世界上最早的纸币：交子。","1024년 쓰촨의 상인들이 종이에 도장을 찍자, 그 종이는 돈이 되었어요. 세계 최초의 지폐, 교자(交子)예요."],liveCost:["4 stamps cost 0.0194 BNB.","盖 4 枚印要 0.0194 BNB。","스탬프 4개 민팅 비용은 0.0194 BNB."],livePay:["The best bids would pay {0} BNB for them right now.","按现在最高的买单，卖掉它们能拿到 {0} BNB。","지금 최고 비드에 팔면 {0} BNB를 받아요."],livePart:["Right now the bids would take {0} of them, for {1} BNB.","现在的买单只能吃下其中 {0} 枚，共 {1} BNB。","지금 비드로는 그중 {0}개만 팔리고, {1} BNB예요."],liveNone:["No bids for stamps yet.","还没有人挂印的买单。","아직 스탬프 비드가 없어요."],liveNote:["After the 2% fee, from the bids that take any ink.","已扣 2% 手续费，只算接受任意颜色的买单。","수수료 2% 차감, 모든 잉크를 받는 비드 기준."],readAt:["Read at {0}, block {1}.","读取于 {0}，区块 {1}。","{0} 기준, 블록 {1}."],copyLine:["Copy this line","复制这句话","이 문장 복사"],findTitle:["Find your name","查查你的名字","내 이름 찾기"],findLead:["Type an Agent ID name to see its four seals. Their inks were fixed at deploy.","输入 Agent ID 名字，看看它的四枚印。颜色在部署时就定好了。","Agent ID 이름을 입력하면 그 이름의 도장 4개가 보여요. 잉크는 배포 때 이미 정해졌어요."],findPh:["name, without .ai","名字，不用加 .ai","이름 (.ai 빼고)"],findBtn:["Look up","查询","조회"],badName:["Names are lowercase letters and digits.","名字只能是小写字母和数字。","이름은 영문 소문자와 숫자만 돼요."],"st.pressed":["stamps pressed of {0}","已盖印，共 {0}","민팅된 스탬프 / {0}"],"st.stones":["stones","印石","스톤"],"st.names":["names","名字","이름"],"st.notes":["notes","交子","지폐"],"st.weight":["total weight","总权重","총 가중치"],"st.held":["BNB in the vault","金库里的 BNB","금고 BNB"],"st.perHour":["BNB released per hour","每小时释放 BNB","시간당 지급 BNB"],"st.waiting":["BNB waiting for the first note","BNB 等第一张交子领走","BNB 첫 지폐 대기 중"],"st.mintLeft":["left in the 24 hour mint","24 小时铸造剩余","24시간 민팅 남은 시간"],"st.mintOver":["the mint is over","铸造已结束","민팅 종료"],"st.finaleIn":["to the finale","距离终局","피날레까지"],"st.finaleNow":["the finale has come","终局已到","피날레 도래"],"fc.title":["Mint schedule","铸造信息","민팅 정보"],"fc.supply":["Supply","总量","공급량"],"fc.supplyV":["22,222 stamps, never more","22,222 枚印，永不增发","스탬프 22,222개, 추가 발행 없음"],"fc.price":["Price","价格","가격"],"fc.priceV":["first stamp of a name 0.0014 BNB<br>each next 0.006 BNB<br>4 stamps 0.0194 BNB","每个名字第一枚 0.0014 BNB<br>之后每枚 0.006 BNB<br>4 枚共 0.0194 BNB","이름당 첫 스탬프 0.0014 BNB<br>그다음부터 개당 0.006 BNB<br>4개 합계 0.0194 BNB"],"fc.per":["Per name","每个名字","이름당"],"fc.perV":["up to 4 stamps, and 4 per wallet","最多 4 枚，每个钱包也最多 4 枚","최대 4개, 지갑당도 4개"],"fc.who":["Who","资格","대상"],"fc.whoV":["wallets with a Binance Agent ID only","仅限持有 Binance Agent ID 的钱包","바이낸스 Agent ID 지갑만"],"fc.free":["Free","免费","무료"],"fc.freeV":["the stone: one per name, gas only","印石：每个名字一枚，只付 Gas","스톤: 이름당 1개, 가스비만"],"fc.mint":["Mint","铸造时间","민팅 기간"],"fc.mintV":["24 hours, open from deploy","部署即开，持续 24 小时","배포와 동시에 시작, 24시간"],"fc.window":["opened {0}<br>closes {1}","{0} 开始<br>{1} 结束","{0} 시작<br>{1} 종료"],"fc.finale":["Finale","终局","피날레"],"fc.finaleV":["day 14, {0}","第 14 天，{0}","14일 차, {0}"],"fc.chain":["Chain","链","체인"],"fc.contracts":["Contracts","合约","컨트랙트"],"fc.code":["Code","代码","코드"],"fc.codeV":["verified on BscScan","已在 BscScan 验证","BscScan 검증 완료"],"fc.owner":["Owner","管理员","오너"],"fc.ownerV":["none: no pause, no upgrade, no withdrawal","无：不能暂停，不能升级，不能提款","없음: 일시정지, 업그레이드, 출금 불가"],goPress:["Press with your agent","让代理去盖印","에이전트로 민팅하기"],goRules:["Read the rules","看规则","규칙 보기"],"nm.none":["No Agent ID with this name.","没有这个 Agent ID 名字。","이 이름의 Agent ID는 없어요."],"nm.held":["Agent ID of {0}","Agent ID 持有钱包 {0}","Agent ID 보유 지갑 {0}"],"nm.pressed":["{0} of 4 stamps pressed","已盖 {0}/4 枚","스탬프 {0}/4개 민팅됨"],"nm.stoneYes":["stone claimed","印石已领","스톤 수령함"],"nm.stoneNo":["stone not claimed yet","印石未领","스톤 아직 안 받음"],"nm.brought":["brought {0} agents","邀请了 {0} 个代理","{0}명 추천함"],"nm.onNotes":["on {0} notes","出现在 {0} 张交子上","지폐 {0}장에 찍힘"],"nm.earned":["earned {0} BNB as referrer","邀请收入 {0} BNB","추천 수익 {0} BNB"],"nm.inks":["The four seals of this name","这个名字的四枚印","이 이름의 도장 4개"],"nm.fixed":["The inks came from the hash of the deploy block: nobody could choose them.","颜色来自部署区块的哈希，谁也选不了。","잉크는 배포 블록 해시로 정해져서 아무도 고를 수 없었어요."],"nm.sum":["Weight of the four: {0}","四枚权重合计：{0}","4개 가중치 합: {0}"],"nm.local":["Drawn by this page: the on-chain art did not answer.","图由本页绘制：链上图片暂时读取不到。","온체인 아트를 못 읽어서 페이지가 직접 그렸어요."],"nm.inkLine":["{0} {1}%, weight {2}","{0} {1}%，权重 {2}","{0} {1}%, 가중치 {2}"],"nm.done":["pressed","已盖","민팅됨"],"nm.share":["Share","分享","공유"],"nm.copyLink":["Copy link","复制链接","링크 복사"],"nm.jade":["{0}.ai has a jade seal on TEN SEALS, 1 in 100.","{0}.ai 在 TEN SEALS 抽到一枚翡翠印，百里挑一。","{0}.ai는 TEN SEALS에서 비취 도장이 나왔어요. 100개 중 1개."],"nm.gold":["{0}.ai has a gold seal on TEN SEALS, 1 in 25.","{0}.ai 在 TEN SEALS 有一枚金印，4% 的概率。","{0}.ai는 TEN SEALS에서 금 도장이 나왔어요. 25개 중 1개."],"nm.plain":["The four seals of {0}.ai on TEN SEALS.","{0}.ai 在 TEN SEALS 的四枚印。","TEN SEALS에 있는 {0}.ai의 도장 4개."],"nm.ref":["Referral link of this name","这个名字的邀请链接","이 이름의 추천 링크"],"nm.refNote":["Whoever presses through it pays 10% to this name's wallet at once.","通过这个链接盖印，付款的 10% 立刻转给这个名字的钱包。","이 링크로 민팅하면 결제액의 10%가 바로 이 이름의 지갑으로 가요."],"nm.go":["Press these stamps","去盖这几枚印","이 스탬프 민팅하기"],"r.common":["common","普通","일반"],"r.gold":["rare","稀有","희귀"],"r.jade":["very rare","极稀有","초희귀"],"pr.open":["The mint is open: {0} left. {1} of 22,222 stamps are pressed.","铸造进行中：还剩 {0}。已盖 {1}/22,222 枚。","민팅 진행 중: {0} 남음. 22,222개 중 {1}개 민팅됨."],"pr.over":["The mint closed on {0}. The stamps that exist are all there will ever be: trade them on the market.","铸造已于 {0} 结束。现有的印就是全部，之后只能在市场交易。","민팅은 {0}에 끝났어요. 지금 있는 스탬프가 전부예요. 이제 마켓에서 거래해요."],"pr.soldOut":["All 22,222 stamps are pressed.","22,222 枚已全部盖完。","22,222개 모두 민팅됐어요."],"pr.count":["How many stamps","盖几枚","몇 개 민팅할까요"],"pr.cost":["{0} for a name that has not pressed yet: {1} BNB","没盖过的名字盖 {0} 枚：{1} BNB","처음 민팅하는 이름 기준 {0}개: {1} BNB"],"pr.ref":["Referrer","邀请人","추천인"],"pr.refPh":["an Agent ID name","Agent ID 名字","Agent ID 이름"],"pr.refOk":["{0}.ai gets 10% of the payment at once.","{0}.ai 立刻拿到付款的 10%。","{0}.ai가 결제액의 10%를 바로 받아요."],"pr.refNone":["No referrer: 80% of the payment goes to the vault.","不填邀请人：付款的 80% 进金库。","추천인 없음: 결제액의 80%가 금고로 가요."],"pr.refBad":["{0} is not an Agent ID name: it is left out.","{0} 不是 Agent ID 名字，已忽略。","{0}은(는) Agent ID 이름이 아니라서 빠졌어요."],"pr.refSelf":["That is your own name: it is left out.","这是你自己的名字，已忽略。","본인 이름이라 빠졌어요."],"pr.refCheck":["Checking {0}.","正在核对 {0}。","{0} 확인 중."],"pr.a":["With your AI agent","让 AI 代理帮你盖","AI 에이전트로 민팅"],"pr.aLead":["Your Agent ID lives in a Binance Agentic Wallet, and your agent holds it. Give the agent Binance's binance-agentic-wallet skill, then paste a prompt. It shows you a preview and waits for your yes.","你的 Agent ID 在 Binance Agentic Wallet 里，由你的 AI 代理操作。先给代理装上币安的 binance-agentic-wallet 技能，再把下面的提示词贴给它。它会先给你看预览，等你确认才发送。","Agent ID는 바이낸스 Agentic Wallet에 있고, 지갑은 AI 에이전트가 다뤄요. 에이전트에 바이낸스 binance-agentic-wallet 스킬을 설치하고 아래 프롬프트를 붙여 넣으세요. 미리보기를 보여 주고 확인을 기다려요."],"pr.install":["Install the skill","安装技能","스킬 설치"],"pr.pLang":["Prompt in","提示词语言","프롬프트 언어"],"p.press":["Press stamps","盖印","스탬프 민팅"],"p.stone":["Free stone","免费印石","무료 스톤"],"p.sell":["Sell into bids","卖给买单","비드에 판매"],"p.notes":["Notes and claim","交子与领取","지폐와 클레임"],"pr.b":["Send BNB directly","直接转 BNB","BNB 직접 전송"],"pr.bLead":["From the wallet that holds the Agent ID, send BNB to the Seals contract. It presses as many stamps as the value pays for and sends the rest back.","用持有 Agent ID 的钱包直接把 BNB 转到 Seals 合约。够几枚就盖几枚，多的自动退回。","Agent ID가 있는 지갑에서 Seals 컨트랙트로 BNB를 보내세요. 보낸 금액만큼 민팅되고 남은 건 돌려줘요."],"pr.to":["Seals contract","Seals 合约","Seals 컨트랙트"],"pr.stamps":["stamps","枚数","개수"],"pr.send":["send","转账金额","보낼 금액"],"pr.n1":["For a name that has not pressed yet. After its first stamp, each stamp is 0.006 BNB.","以上是没盖过的名字的金额；盖过之后每枚 0.006 BNB。","아직 민팅 안 한 이름 기준이에요. 첫 스탬프 이후엔 개당 0.006 BNB예요."],"pr.n2":["Gas limit about 800,000: agents estimate it.","Gas 上限设 80 万左右，代理会自己估算。","가스 한도는 약 80만, 에이전트가 직접 추정해요."],"pr.n3":["Send 0 BNB to claim only the free stone.","转 0 BNB 只领免费印石。","0 BNB를 보내면 무료 스톤만 받아요."],"pr.n4":["A plain transfer carries no referrer. For a referrer, call stamp(count, referrer).","直接转账带不了邀请人；要填邀请人请调用 stamp(count, referrer)。","단순 전송엔 추천인이 안 들어가요. 추천인을 넣으려면 stamp(count, referrer)를 호출하세요."],"pr.c":["With a connected wallet","用已连接的钱包","연결된 지갑으로"],"pr.cLead":["If the wallet that holds your Agent ID can connect to this page, press here.","如果持有 Agent ID 的钱包能连接网页，可以直接在这里盖。","Agent ID 지갑을 이 페이지에 연결할 수 있다면 여기서 바로 민팅하세요."],noWallet:["No browser wallet found. Use the prompts above, or open this page in a wallet's browser.","没有检测到浏览器钱包。用上面的提示词，或在钱包内置浏览器里打开本页。","브라우저 지갑을 못 찾았어요. 위 프롬프트를 쓰거나 지갑 앱 브라우저에서 열어 주세요."],noId:["This wallet has no Agent ID. Only Agent ID wallets can press; any wallet can bid on the market.","这个钱包没有 Agent ID。只有 Agent ID 钱包能盖印；任何钱包都能在市场挂买单。","이 지갑엔 Agent ID가 없어요. 민팅은 Agent ID 지갑만 가능하고, 마켓 비드는 누구나 할 수 있어요."],yourId:["Your Agent ID: {0}.ai","你的 Agent ID：{0}.ai","내 Agent ID: {0}.ai"],"pr.left":["Pressed {0} of 4. You may press {1} more.","已盖 {0}/4 枚，还能盖 {1} 枚。","{0}/4개 민팅함. {1}개 더 가능해요."],"pr.full":["This name has pressed its 4.","这个名字的 4 枚已盖满。","이 이름은 4개를 다 민팅했어요."],"pr.k":["Press {0}","盖 {0} 枚","{0}개 민팅"],"pr.claim":["Claim the free stone","领取免费印石","무료 스톤 받기"],"pr.stoneHave":["Your stone is claimed.","印石已领取。","스톤을 받았어요."],"pr.stoneWith":["The stone comes with your first stamp, or claim it alone.","盖第一枚印时印石会一起到账，也可以单独领取。","첫 스탬프와 함께 스톤이 오고, 따로 받을 수도 있어요."],"pr.code":["Your referral code is your name: {0}","你的邀请码就是你的名字：{0}","추천 코드는 내 이름이에요: {0}"],"pr.link":["Your link","你的邀请链接","내 추천 링크"],"pr.refStats":["Brought {0} agents, earned {1} BNB.","已邀请 {0} 个代理，收入 {1} BNB。","{0}명 추천, {1} BNB 받음."],"pr.due":["{0} BNB of referrals waits for you.","有 {0} BNB 邀请收入待提取。","추천 수익 {0} BNB가 대기 중이에요."],"pr.withdraw":["Withdraw","提取","출금"],"pr.done":["Pressed: {0}.","盖好了：{0}。","민팅 완료: {0}."],"pr.stoneDone":["Stone claimed.","印石已到账。","스톤 수령 완료."],"mk.lead":["A book of bids only: a buyer locks BNB in a bid, a holder sells into it at once, in one transaction and with no approval. 2% of each sale is the fee: half to the vault, half to the author.","只有买单：买家把 BNB 锁进买单，持有人一笔交易直接卖出，不用授权。每笔成交收 2% 手续费，一半进金库，一半给作者。","매수 비드만 있는 마켓이에요. 구매자가 BNB를 비드에 묶어 두면 보유자는 승인 없이 한 번에 바로 팔아요. 수수료는 거래당 2%, 절반은 금고, 절반은 제작자에게 가요."],"mk.book":["Bids","买单簿","비드 목록"],"mk.place":["Place a bid","挂买单","비드 넣기"],"mk.mine":["My bids","我的买单","내 비드"],"mk.sell":["Sell","卖出","판매"],"g.0.0":["Stamps, any ink","印，任意颜色","스탬프, 모든 잉크"],"g.0.1":["Stamps, gold or jade","印，金或翡翠","스탬프, 금 또는 비취"],"g.0.2":["Stamps, jade only","印，只要翡翠","스탬프, 비취만"],"g.1.0":["Notes, any weight","交子，任意权重","지폐, 모든 가중치"],"g.1":["Notes, weight {0} or more","交子，权重 {0} 以上","지폐, 가중치 {0} 이상"],"g.2.0":["Stones, any name","印石，任意名字","스톤, 아무 이름"],"g.2":["Stone of {0}","{0} 的印石","{0} 스톤"],"mk.none":["No bids yet.","还没有买单。","아직 비드가 없어요."],"mk.price":["price, BNB","单价 BNB","가격 BNB"],"mk.left":["count","数量","수량"],"mk.bidder":["bidder","买家","구매자"],"mk.more":["Show all {0}","显示全部 {0} 条","전체 {0}개 보기"],"mk.units":["{0} wanted","求购 {0}","{0}개 매수 희망"],"mk.kind":["What","买什么","무엇을"],"k.0":["Stamps","印","스탬프"],"k.1":["Notes","交子","지폐"],"k.2":["Stones","印石","스톤"],"mk.ink":["Ink","颜色","잉크"],"f.0":["any","任意","모두"],"f.1":["gold or jade","金或翡翠","금 또는 비취"],"f.2":["jade only","只要翡翠","비취만"],"mk.minW":["Minimum weight, 0 for any","最低权重，0 为任意","최소 가중치, 0이면 모두"],"mk.stone":["Name, empty for any stone","名字，留空表示任意印石","이름, 비우면 아무 스톤"],"mk.pricePer":["Price for one, BNB","单价，BNB","개당 가격, BNB"],"mk.count":["How many","数量","수량"],"mk.lock":["You lock {0} BNB. Cancel any time to get back what is left.","需锁定 {0} BNB，随时可撤单退回剩余部分。","{0} BNB가 묶여요. 언제든 취소하면 남은 금액을 돌려받아요."],"mk.best":["Best bid of this kind now: {0} BNB","同类最高买单：{0} BNB","같은 종류 최고 비드: {0} BNB"],"mk.placeBtn":["Place the bid","挂单","비드 넣기"],"mk.placed":["Bid {0} is placed.","买单 {0} 已挂出。","비드 {0} 등록 완료."],"mk.badPrice":["Enter a price above 0.","请输入大于 0 的价格。","0보다 큰 가격을 입력하세요."],"mk.badCount":["Enter a whole number from 1.","请输入不小于 1 的整数。","1 이상의 정수를 입력하세요."],"mk.badW":["Weight from 0 to 100.","权重填 0 到 100。","가중치는 0~100이에요."],"mk.noMine":["You have no open bids.","你没有挂着的买单。","열린 비드가 없어요."],"mk.cancel":["Cancel","撤单","취소"],"mk.cancelled":["Bid {0} is cancelled: {1} BNB came back.","买单 {0} 已撤，退回 {1} BNB。","비드 {0} 취소, {1} BNB 환불됨."],"mk.what":["What to sell","卖什么","무엇을 팔까요"],"mk.loading":["Reading your tokens.","正在读取你的资产。","보유 토큰 읽는 중."],"mk.noTok":["You hold none.","你还没有。","보유한 게 없어요."],"mk.noBid":["no bid takes it","没有买单接","받는 비드 없음"],"mk.commons":["Commons","普通的","일반만"],"mk.all":["All","全部","전체"],"mk.clear":["None","清空","선택 해제"],"mk.plan":["{0} BNB in total, fee {1}, you get {2} BNB.","合计 {0} BNB，手续费 {1}，到手 {2} BNB。","합계 {0} BNB, 수수료 {1}, 실수령 {2} BNB."],"mk.minP":["Lowest price you accept for one, BNB","可接受的最低单价，BNB","개당 최저 허용 가격, BNB"],"mk.minNote":["If the book changes before your transaction lands, nothing sells below this, and a token that finds no bid stops the whole sale.","如果成交前买单变了，低于这个价格的不会成交；有一个卖不出去，整笔交易就会失败。","트랜잭션 전에 비드가 바뀌어도 이 가격 아래로는 안 팔려요. 하나라도 비드를 못 찾으면 전체 판매가 취소돼요."],"mk.rare":["Careful: a gold or jade stamp would sell at an any-ink price.","注意：有金印或翡翠印会按普通价卖出。","주의: 금이나 비취 스탬프가 일반 가격에 팔려요."],"mk.sellBtn":["Sell {0} in one transaction","一笔卖出 {0} 个","{0}개 한 번에 판매"],"mk.sold":["Sold {0} for {1} BNB.","已卖出 {0} 个，到手 {1} BNB。","{0}개 판매, {1} BNB 받음."],"wv.lead":["Burn ten stamps to weave a note. Its weight is the sum of the inks: common 1, gold 3, jade 10. Notes draw from the vault by weight.","烧掉 10 枚印合成一张交子。权重是各枚印的权重之和：普通 1，金 3，翡翠 10。交子按权重从金库分 BNB。","스탬프 10개를 소각해 지폐 1장을 만들어요. 가중치는 잉크 합이에요: 일반 1, 금 3, 비취 10. 지폐는 가중치만큼 금고에서 받아요."],"wv.closes":["Weaving closes at the finale, {0}.","合成在终局 {0} 关闭。","합성은 피날레 {0}에 닫혀요."],"wv.closed":["Weaving is closed.","合成已关闭。","합성이 닫혔어요."],"wv.none":["You hold no stamps. Press some, or bid for them on the market.","你没有印。去盖几枚，或在市场挂买单。","스탬프가 없어요. 민팅하거나 마켓에서 비드로 사세요."],"wv.picked":["{0} of 10 picked, weight {1}","已选 {0}/10，权重 {1}","{0}/10 선택, 가중치 {1}"],"wv.heavy":["Heaviest ten","选最重的 10 枚","가장 무거운 10개"],"wv.commons":["Ten commons","选 10 枚普通","일반 10개"],"wv.clear":["Clear","清空","해제"],"wv.title":["Title, optional","名称（可选）","이름 (선택)"],"wv.rule":["a-z, 0-9 and single spaces, up to 16. Each title exists once.","a-z、0-9 和单个空格，最多 16 个字符，每个名称全网唯一。","a-z, 0-9, 공백 한 칸씩, 최대 16자. 같은 이름은 하나뿐이에요."],"wv.tBad":["Only a-z, 0-9 and single spaces, with no space at either end.","只能用 a-z、0-9 和单个空格，首尾不能是空格。","a-z, 0-9, 공백 한 칸만 되고 앞뒤 공백은 안 돼요."],"wv.tLong":["At most 16 characters.","最多 16 个字符。","최대 16자예요."],"wv.tTaken":["Taken by note {0}.","已被交子 {0} 用了。","지폐 {0}이(가) 이미 쓰고 있어요."],"wv.tFree":["Free.","可以用。","사용 가능."],"wv.tCheck":["Checking.","核对中。","확인 중."],"wv.btn":["Weave the note","合成交子","지폐 합성"],"wv.burn":["Weaving burns the ten stamps.","合成会烧掉这 10 枚印。","합성하면 스탬프 10개가 소각돼요."],"wv.done":["Note {0} is woven, weight {1}.","交子 {0} 合成好了，权重 {1}。","지폐 {0} 합성 완료, 가중치 {1}."],"nt.lead":["A note keeps what it has drawn until you claim it, and it goes with the note if you sell it.","交子分到的 BNB 会留在交子里，领取前一直累积；卖掉交子，里面的 BNB 也跟着走。","지폐가 받은 BNB는 클레임할 때까지 지폐 안에 쌓이고, 지폐를 팔면 함께 넘어가요."],"nt.none":["You hold no notes yet.","你还没有交子。","아직 지폐가 없어요."],"nt.holds":["holds {0} BNB","内含 {0} BNB","{0} BNB 보유"],"nt.weight":["weight {0}","权重 {0}","가중치 {0}"],"nt.untitled":["no title","无名称","이름 없음"],"nt.claim":["Claim {0} BNB from {1} notes","从 {1} 张交子领取 {0} BNB","지폐 {1}장에서 {0} BNB 클레임"],"nt.all":["Select all","全选","전체 선택"],"nt.claimed":["Claimed {0} BNB.","已领取 {0} BNB。","{0} BNB 클레임 완료."],"nt.sell":["Sell notes on the market","去市场卖交子","마켓에서 지폐 판매"],"nt.woven":["woven {0}","合成于 {0}","{0} 합성"],"ru.title":["Rules","规则","규칙"],"ru.addr":["Addresses","合约地址","컨트랙트 주소"],"ru.reg":["Agent ID registry","Agent ID 注册表","Agent ID 레지스트리"],"fin.h":["The finale now","终局状态","피날레 현황"],"fin.before":["The finale is on {0}.","终局时间：{0}。","피날레: {0}."],"fin.canClose":["The finale has come. Anyone can call close() now.","终局已到，现在任何人都可以调用 close()。","피날레가 됐어요. 이제 누구나 close()를 호출할 수 있어요."],"fin.noNotes":["No note exists yet: weaving stays open until the first one, which takes it all.","还没有交子：合成会一直开着，第一张交子拿走全部。","아직 지폐가 없어요. 첫 지폐가 나올 때까지 합성이 열려 있고, 그 지폐가 전부 가져가요."],"fin.wait":["Closed. The prize of {0} BNB is drawn with block {1}, {2} blocks from now.","已 close：奖池 {0} BNB，用区块 {1} 抽奖，还差 {2} 个区块。","close 완료: 상금 {0} BNB, 블록 {1}로 추첨, {2}블록 남았어요."],"fin.canDraw":["Block {0} has come. Anyone can call draw() now.","区块 {0} 已到，现在任何人都可以调用 draw()。","블록 {0}이 지났어요. 이제 누구나 draw()를 호출할 수 있어요."],"fin.expired":["The hash of block {0} is gone: close() picks a new block.","区块 {0} 的哈希已取不到，调用 close() 重新指定。","블록 {0} 해시를 더 읽을 수 없어요. close()로 새 블록을 정하세요."],"fin.drawn":["Drawn: note {0} got {1} BNB.","已开奖：交子 {0} 拿到 {1} BNB。","추첨 완료: 지폐 {0}이(가) {1} BNB를 받았어요."],"fin.drawnAny":["The prize has been drawn.","奖池已开出。","상금 추첨이 끝났어요."],"fin.close":["Call close()","调用 close()","close() 호출"],"fin.draw":["Call draw()","调用 draw()","draw() 호출"],"tx.check":["Checking the transaction.","正在检查交易。","트랜잭션 확인 중."],"tx.confirm":["Confirm in your wallet.","请在钱包里确认。","지갑에서 승인하세요."],"tx.sent":["Sent {0}. Waiting for the block.","已发送 {0}，等待出块。","{0} 전송됨. 블록 대기 중."],"tx.done":["Done.","完成。","완료."],"w.pick":["Choose a wallet","选择钱包","지갑 선택"],"w.off":["Disconnect","断开","연결 해제"],"w.on":["Connected wallet","已连接的钱包","연결된 지갑"],"w.noId":["no Agent ID","无 Agent ID","Agent ID 없음"],NoAgentId:["This wallet has no Agent ID.","这个钱包没有 Agent ID。","이 지갑엔 Agent ID가 없어요."],QuotaUsed:["This name or wallet has pressed its 4 stamps.","这个名字或钱包的 4 枚已经盖满。","이 이름이나 지갑은 4개를 다 민팅했어요."],SoldOut:["All 22,222 stamps are pressed.","22,222 枚已全部盖完。","22,222개 모두 민팅됐어요."],MintOver:["The 24 hour mint is over.","24 小时铸造已结束。","24시간 민팅이 끝났어요."],NotOpenYet:["The mint is not open yet.","铸造还没开始。","민팅이 아직 안 열렸어요."],Underpaid:["The BNB sent does not cover the price.","转入的 BNB 不够。","보낸 BNB가 가격보다 적어요."],BadReferrer:["The referrer is not an Agent ID name, or it is your own.","邀请人不是 Agent ID 名字，或者是你自己。","추천인이 Agent ID 이름이 아니거나 본인이에요."],StoneTaken:["This name has its stone already.","这个名字的印石已经领过了。","이 이름의 스톤은 이미 받았어요."],WeavingOver:["Weaving is closed.","合成已关闭。","합성이 닫혔어요."],NotYours:["One of these is not in this wallet.","其中有不在这个钱包里的。","이 지갑에 없는 게 섞여 있어요."],BadTitle:["The title can use a-z, 0-9 and single spaces, up to 16.","名称只能用 a-z、0-9 和单个空格，最多 16 个字符。","이름은 a-z, 0-9, 공백 한 칸씩, 최대 16자예요."],TitleTaken:["This title is taken.","这个名称已被占用。","이미 쓰인 이름이에요."],TooEarly:["Too early.","时间还没到。","아직 때가 아니에요."],NoNotes:["There is no note yet.","还没有交子。","아직 지폐가 없어요."],DrawPending:["The draw block is still ahead, or its hash is still there: call draw().","抽奖区块还没到，或哈希还在：请调用 draw()。","추첨 블록이 아직 안 왔거나 해시가 남아 있어요: draw()를 호출하세요."],NotDrawable:["Nothing to draw now.","现在没有可开的奖。","지금은 추첨할 게 없어요."],DrawExpired:["The draw block is too old: call close() again.","抽奖区块太旧了：请再调用一次 close()。","추첨 블록이 너무 오래됐어요: close()를 다시 호출하세요."],BadBid:["This bid is not valid.","买单参数不对。","비드 값이 올바르지 않아요."],NoBidLeft:["A token found no bid: the book changed. Reload and try again.","有一个卖不出去：买单变了，刷新后再试。","토큰 하나가 비드를 못 찾았어요. 비드가 바뀌었으니 새로고침 후 다시 해 보세요."],TokenDoesNotExist:["There is no such token.","没有这个代币。","그런 토큰은 없어요."],TransferFromIncorrectOwner:["A token is not yours any more.","有代币已经不在你手里。","이미 내 것이 아닌 토큰이 있어요."],rejected:["Rejected in the wallet.","钱包里拒绝了。","지갑에서 거절했어요."],noFunds:["Not enough BNB in this wallet.","钱包 BNB 不够。","지갑에 BNB가 부족해요."],failed:["The transaction failed on chain.","交易在链上失败了。","트랜잭션이 체인에서 실패했어요."],lost:["Sent, but no receipt yet. Check your wallet.","已发送，但还没查到回执，请在钱包里查看。","전송했지만 아직 영수증이 없어요. 지갑을 확인하세요."],network:["The network does not answer. Try again.","网络没有响应，请重试。","네트워크 응답이 없어요. 다시 시도하세요."],reverted:["The chain refused this transaction.","链上拒绝了这笔交易。","체인이 이 트랜잭션을 거부했어요."],unknown:["Something went wrong.","出错了。","문제가 생겼어요."]},Zt=[[["Stamps","Only a wallet with a Binance Agent ID can press: at most 4 stamps per name and per wallet, 22,222 ever, during the 24 hours after the contract was deployed. The first stamp of a name costs 0.0014 BNB and each next one 0.006 BNB, so 4 cost 0.0194 BNB. Pay with stamp(count, referrer), or send BNB from the agent wallet straight to the Seals contract: it presses as many stamps as the value pays for and sends the rest back (gas limit about 800,000)."],["Inks","The ink of every stamp is fixed in advance by its name and its number, from a salt taken at deploy: vermilion 38%, cinnabar 24%, soot 16.5%, indigo 16.5% (weight 1 each), gold 4% (weight 3), jade 1% (weight 10). Nobody chose them."],["Referral","The referrer is another Agent ID name. Its owner receives 10% of the payment in the same transaction. Your name is your referral code; you cannot refer yourself. A plain transfer carries no referrer."],["Stones","Free, one per name, gas only: claimStone(), a transfer of 0 BNB to the Seals contract, or it comes with the first stamp. Only during the mint. A stone keeps its name's record: stamps pressed, notes it is on, agents it brought, BNB earned as referrer. It has no share of the vault and is never woven. It can be traded."],["Notes","Burn any ten stamps you hold with weave(ids, title) to weave a note. Its weight is the sum of the ten inks, from 10 to 100. The title is optional: a-z, 0-9 and single spaces, at most 16 characters, and each title exists once."],["The vault","Every stamp payment: 70% to the vault, 20% to the author, 10% to the referrer (no referrer: 80% to the vault). Half of every market fee and royalty goes to the vault too, half to the author. The vault releases 1% of what it holds every hour, continuously, to the notes by weight. What a note has drawn stays inside it (holdsOf) until its holder calls claim(ids), and goes with the note when it is sold. Hours before the first note stack up for it."],["A game of redistribution","Notes are paid from what the stamps paid. Nothing else comes in but market fees. The earlier notes draw from a fuller vault, the later ones from what is left, and all players together give up the author's 20%. Nothing here promises income."],["Finale","Fourteen days after deploy weaving closes and the vault stops releasing. Then anyone can call close(): what is left becomes the prize, and the block 5 blocks ahead is chosen. After that block anyone calls draw(): the prize goes to one note, chosen by weight with the hash of that block, which did not exist when close() was called. If the hash is no longer available (about 8,191 blocks later), close() chooses a new block. After the finale half of every fee goes to the notes at once. If no note exists by day 14, weaving stays open until the first one, which takes it all."],["Market","A book of bids only. bid(kind, filter, key, count) locks exactly price x count BNB: kind 0 stamps (filter 0 any ink, 1 gold or better, 2 jade), kind 1 notes (filter = minimum weight), kind 2 stones (key = keccak256(name), or 0 for any). sell(kind, bidIds, tokenIds, minPrice) sells in one transaction with no approval. cancel(id) returns what is left. The fee is 2% of each sale. Royalties on other marketplaces are 2%, split the same way."],["No owner","No contract has an owner: no pause, no upgrade, no withdrawal other than these rules. The code is verified on BscScan. This page is stored on BNB Chain and reads the chain itself."]],[["印","只有持有 Binance Agent ID 的钱包能盖印：每个名字、每个钱包最多 4 枚，总量 22,222 枚，合约部署后 24 小时内开放。每个名字第一枚 0.0014 BNB，之后每枚 0.006 BNB，4 枚共 0.0194 BNB。可以调用 stamp(count, referrer)，也可以用代理钱包直接给 Seals 合约转 BNB：够几枚就盖几枚，多的退回（Gas 上限约 80 万）。"],["颜色","每枚印的颜色由名字和序号事先决定，种子在部署时取得：朱红 38%、朱砂 24%、墨 16.5%、靛青 16.5%（权重各 1），金 4%（权重 3），翡翠 1%（权重 10）。没有人能挑。"],["邀请","邀请人填另一个 Agent ID 名字，同一笔交易里直接拿到付款的 10%。你的名字就是你的邀请码，不能邀请自己。直接转账不带邀请人。"],["印石","免费，每个名字一枚，只付 Gas：调用 claimStone()，或给 Seals 合约转 0 BNB，盖第一枚印时也会自动到账。只在铸造期内可领。印石记录这个名字的数据：盖了几枚、上了几张交子、邀请了几个代理、邀请收入。印石不分金库，不能合成，可以交易。"],["交子","用 weave(ids, title) 烧掉你持有的任意 10 枚印，合成一张交子。权重是十枚印的权重之和，从 10 到 100。名称可选：a-z、0-9 和单个空格，最多 16 个字符，每个名称只能有一张。"],["金库","每笔盖印付款：70% 进金库，20% 给作者，10% 给邀请人（没有邀请人则 80% 进金库）。市场手续费和版税也是一半进金库、一半给作者。金库每小时连续释放余额的 1%，按权重分给所有交子。分到的 BNB 留在交子里（holdsOf），持有人调用 claim(ids) 才领出；交子卖掉时一起转给买家。第一张交子出现之前释放的部分会攒着，全归第一张。"],["这是一场再分配游戏","交子分到的钱，来自盖印的人付的钱。除了市场手续费，没有别的收入。早的交子从更满的金库里分，晚的分剩下的；所有玩家加起来，还要让出作者那 20%。这里不承诺任何收益。"],["终局","部署 14 天后合成关闭，金库停止释放。之后任何人都可以调用 close()：剩余的钱变成奖池，并指定 5 个区块之后的那个区块。过了那个区块，任何人都可以调用 draw()：用它的哈希按权重抽出一张交子拿走奖池，调用 close() 时这个哈希还不存在。如果哈希已经取不到（约 8,191 个区块之后），close() 会重新指定区块。终局之后，每笔手续费的一半立刻分给交子。如果到第 14 天还没有交子，合成会一直开着，第一张交子拿走全部。"],["市场","只有买单。bid(kind, filter, key, count) 锁定正好 单价 x 数量 的 BNB：kind 0 是印（filter 0 任意颜色，1 金或更好，2 翡翠），kind 1 是交子（filter 是最低权重），kind 2 是印石（key 是 keccak256(名字)，0 表示任意）。sell(kind, bidIds, tokenIds, minPrice) 一笔交易卖出，不用授权。cancel(id) 退回剩余部分。每笔成交手续费 2%。其他市场的版税 2%，同样分配。"],["没有管理员","所有合约都没有 owner：不能暂停，不能升级，除了上面的规则谁也拿不走钱。代码已在 BscScan 验证。本页存储在 BNB Chain 上，直接读链。"]],[["스탬프","바이낸스 Agent ID가 있는 지갑만 민팅할 수 있어요. 이름당, 지갑당 최대 4개, 전체 22,222개, 컨트랙트 배포 후 24시간 동안이에요. 이름의 첫 스탬프는 0.0014 BNB, 그다음부터 개당 0.006 BNB라서 4개는 0.0194 BNB예요. stamp(count, referrer)를 호출하거나, 에이전트 지갑에서 Seals 컨트랙트로 BNB를 바로 보내면 금액만큼 민팅되고 남은 건 돌려받아요 (가스 한도 약 80만)."],["잉크","모든 스탬프의 잉크는 이름과 순번으로 미리 정해져 있어요. 시드는 배포 때 정해졌어요. 주홍 38%, 주사 24%, 먹 16.5%, 쪽빛 16.5% (각 가중치 1), 금 4% (가중치 3), 비취 1% (가중치 10). 누구도 고를 수 없어요."],["추천","추천인은 다른 Agent ID 이름이에요. 같은 트랜잭션에서 결제액의 10%를 바로 받아요. 내 이름이 곧 추천 코드이고, 자기 자신은 추천할 수 없어요. 단순 전송엔 추천인이 없어요."],["스톤","무료, 이름당 1개, 가스비만 내요. claimStone()을 호출하거나 Seals 컨트랙트로 0 BNB를 보내면 되고, 첫 스탬프와 함께 자동으로도 와요. 민팅 기간에만 받을 수 있어요. 스톤엔 이름의 기록이 남아요: 민팅 수, 찍힌 지폐 수, 추천한 에이전트 수, 추천 수익. 금고 지분은 없고 합성에도 못 쓰지만 거래는 돼요."],["지폐","보유한 스탬프 아무거나 10개를 weave(ids, title)로 소각하면 지폐 1장이 나와요. 가중치는 잉크 10개의 합으로 10~100이에요. 이름은 선택이에요: a-z, 0-9, 공백 한 칸씩, 최대 16자, 같은 이름은 딱 하나."],["금고","스탬프 결제액의 70%는 금고, 20%는 제작자, 10%는 추천인에게 가요 (추천인이 없으면 80%가 금고). 마켓 수수료와 로열티도 절반은 금고, 절반은 제작자예요. 금고는 보유액의 1%를 매시간 연속으로 지폐들에 가중치대로 나눠 줘요. 받은 BNB는 지폐 안에 쌓이고 (holdsOf), 보유자가 claim(ids)를 호출해야 빠져나와요. 지폐를 팔면 함께 넘어가요. 첫 지폐가 나오기 전 시간분은 모였다가 첫 지폐가 받아요."],["재분배 게임이에요","지폐가 받는 돈은 스탬프를 산 사람들이 낸 돈이에요. 마켓 수수료 말고는 들어오는 돈이 없어요. 일찍 나온 지폐는 더 찬 금고에서, 늦은 지폐는 남은 것에서 받고, 플레이어 전체로 보면 제작자 몫 20%만큼 줄어요. 여기엔 어떤 수익 약속도 없어요."],["피날레","배포 14일 후 합성이 닫히고 금고 지급이 멈춰요. 그 뒤 누구나 close()를 호출할 수 있어요: 남은 금액이 상금이 되고 5블록 뒤의 블록이 정해져요. 그 블록이 지나면 누구나 draw()를 호출하고, 그 블록 해시로 가중치에 따라 지폐 1장이 상금을 가져가요. close() 때는 없던 해시예요. 해시를 더 읽을 수 없으면 (약 8,191블록 뒤) close()가 새 블록을 정해요. 피날레 이후엔 모든 수수료의 절반이 바로 지폐들에 가요. 14일째까지 지폐가 하나도 없으면 첫 지폐가 나올 때까지 합성이 열려 있고, 그 지폐가 전부 가져가요."],["마켓","매수 비드만 있어요. bid(kind, filter, key, count)는 정확히 가격 x 수량만큼 BNB를 묶어요: kind 0 스탬프 (filter 0 모든 잉크, 1 금 이상, 2 비취), kind 1 지폐 (filter = 최소 가중치), kind 2 스톤 (key = keccak256(이름), 0이면 아무거나). sell(kind, bidIds, tokenIds, minPrice)는 승인 없이 한 번에 팔아요. cancel(id)는 남은 금액을 돌려줘요. 수수료는 거래당 2%. 외부 마켓 로열티 2%도 똑같이 나눠요."],["오너 없음","어떤 컨트랙트에도 오너가 없어요. 일시정지, 업그레이드, 규칙 밖의 출금 모두 불가능해요. 코드는 BscScan에서 검증됐어요. 이 페이지는 BNB Chain에 저장돼 있고 체인을 직접 읽어요."]]];var ct="npx skills add binance/binance-skills-hub/skills/binance-web3/binance-agentic-wallet",q=[(e,t)=>`Use the binance-agentic-wallet skill with my agent wallet.
Chain: BNB Chain (chain id ${e.chainId}). ${t}`,(e,t)=>`用 binance-agentic-wallet 技能操作我的代理钱包。
链：BNB Chain（chain id ${e.chainId}）。${t}`,(e,t)=>`binance-agentic-wallet 스킬로 내 에이전트 지갑을 써 줘.
체인: BNB Chain (chain id ${e.chainId}). ${t}`],jn={press:[e=>`${q[0](e,`Contract: TEN SEALS Seals, ${e.seals}`)}

Goal: press ${e.count} TEN SEALS stamp${e.count>1?"s":""} with my Agent ID${e.ref?`, referrer "${e.ref}"`:""}.

1. Read Seals.quote(address wallet, uint256 count) with my wallet address and count ${e.count}. It returns (string handle, uint256 left, uint256 cost); cost is the exact price in wei, Seals.priceOf for what this name has pressed and this count.
   - handle is empty: stop and tell me this wallet has no Agent ID.
   - left is 0: stop, this name has pressed its 4 stamps.
   - left is below ${e.count}: use left as the count and read quote again.
2. Check that my BNB covers cost plus gas. For a name that has never pressed, ${e.count} stamp${e.count>1?"s cost":" costs"} ${e.price} BNB.
3. Prepare Seals.stamp(uint256 count, string referrer) with referrer "${e.ref}" and a value of exactly cost wei.
   If you can only send a plain transfer: send exactly cost wei to ${e.seals} with a gas limit from eth_estimateGas (about 800000). A plain transfer carries no referrer.
4. Show me a preview first: contract, function, count, referrer, BNB amount, gas. Wait for my explicit yes before sending.
5. When it is mined, give me the transaction hash and the token ids of my new stamps (Transfer events of the Seals contract to my wallet).`,e=>`${q[1](e,`合约：TEN SEALS Seals，${e.seals}`)}

目标：用我的 Agent ID 盖 ${e.count} 枚 TEN SEALS 印${e.ref?`，邀请人 “${e.ref}”`:""}。

1. 调用 Seals.quote(address wallet, uint256 count)，传我的钱包地址和 count ${e.count}，返回 (string handle, uint256 left, uint256 cost)。cost 就是这个名字再盖 count 枚的准确价格（wei，等于 Seals.priceOf）。
   - handle 为空：停下，告诉我这个钱包没有 Agent ID。
   - left 为 0：停下，这个名字的 4 枚已经盖满。
   - left 小于 ${e.count}：把 count 改成 left，再查一次 quote。
2. 确认我的 BNB 够付 cost 加 Gas。没盖过的名字盖 ${e.count} 枚是 ${e.price} BNB。
3. 准备调用 Seals.stamp(uint256 count, string referrer)，referrer 填 “${e.ref}”，value 正好等于 cost（wei）。
   如果只能直接转账：往 ${e.seals} 转正好 cost wei，Gas 上限用 eth_estimateGas 估（约 800000）。直接转账带不了邀请人。
4. 发送前先给我看预览：合约、函数、数量、邀请人、BNB 金额、Gas。等我明确说 “确认” 再发。
5. 上链后告诉我交易哈希和新印的 token id（Seals 合约转到我钱包的 Transfer 事件）。`,e=>`${q[2](e,`컨트랙트: TEN SEALS Seals, ${e.seals}`)}

목표: 내 Agent ID로 TEN SEALS 스탬프 ${e.count}개 민팅${e.ref?`, 추천인 "${e.ref}"`:""}.

1. Seals.quote(address wallet, uint256 count)를 내 지갑 주소와 count ${e.count}로 조회해. 반환값은 (string handle, uint256 left, uint256 cost)이고, cost는 이 이름으로 count개를 더 민팅하는 정확한 가격(wei, Seals.priceOf와 같음)이야.
   - handle이 비어 있으면: 멈추고 이 지갑엔 Agent ID가 없다고 알려 줘.
   - left가 0이면: 멈춰. 이 이름은 4개를 다 민팅했어.
   - left가 ${e.count}보다 작으면: count를 left로 바꾸고 quote를 다시 조회해.
2. 내 BNB가 cost와 가스비를 감당하는지 확인해. 처음 민팅하는 이름이면 ${e.count}개에 ${e.price} BNB야.
3. Seals.stamp(uint256 count, string referrer)를 referrer "${e.ref}", value는 정확히 cost wei로 준비해.
   단순 전송만 된다면: ${e.seals}로 정확히 cost wei를 보내고, 가스 한도는 eth_estimateGas로 정해 (약 800000). 단순 전송엔 추천인이 안 들어가.
4. 보내기 전에 미리보기를 보여 줘: 컨트랙트, 함수, 수량, 추천인, BNB 금액, 가스. 내가 확실히 "확인"이라고 할 때까지 기다려.
5. 블록에 들어가면 트랜잭션 해시와 새 스탬프의 토큰 id를 알려 줘 (Seals 컨트랙트에서 내 지갑으로 온 Transfer 이벤트).`],stone:[e=>`${q[0](e,`Contract: TEN SEALS Seals, ${e.seals}`)}

Goal: claim the free TEN SEALS stone of my Agent ID name. It costs only gas.

1. Read Seals.quote(address wallet, uint256 count) with my wallet address and count 1. If handle is empty, stop: this wallet has no Agent ID.
2. Read Seals.nameInfo(string name) with that handle. If stone is true, stop: this name has its stone already.
3. Prepare Seals.claimStone() with no value (or a plain transfer of 0 BNB to ${e.seals}). Show me the preview with the gas and wait for my explicit yes.
4. When it is mined, give me the hash and the stone's token id, uint256(keccak256(handle)), on the Stones contract ${e.stones}.`,e=>`${q[1](e,`合约：TEN SEALS Seals，${e.seals}`)}

目标：领取我 Agent ID 名字的免费 TEN SEALS 印石，只付 Gas。

1. 调用 Seals.quote(address wallet, uint256 count)，传我的钱包地址和 count 1。handle 为空就停下：这个钱包没有 Agent ID。
2. 用这个 handle 调用 Seals.nameInfo(string name)。stone 为 true 就停下：这个名字已经领过印石。
3. 准备调用 Seals.claimStone()，不带 value（或者往 ${e.seals} 转 0 BNB）。先给我看预览和 Gas，等我明确确认。
4. 上链后告诉我交易哈希和印石的 token id：uint256(keccak256(handle))，在 Stones 合约 ${e.stones}。`,e=>`${q[2](e,`컨트랙트: TEN SEALS Seals, ${e.seals}`)}

목표: 내 Agent ID 이름의 무료 TEN SEALS 스톤 받기. 가스비만 들어.

1. Seals.quote(address wallet, uint256 count)를 내 지갑 주소와 count 1로 조회해. handle이 비어 있으면 멈춰: 이 지갑엔 Agent ID가 없어.
2. 그 handle로 Seals.nameInfo(string name)를 조회해. stone이 true면 멈춰: 이 이름은 이미 스톤을 받았어.
3. Seals.claimStone()을 value 없이 준비해 (또는 ${e.seals}로 0 BNB 전송). 가스와 함께 미리보기를 보여 주고 내 확인을 기다려.
4. 블록에 들어가면 해시와 스톤 토큰 id를 알려 줘: uint256(keccak256(handle)), Stones 컨트랙트 ${e.stones}.`],sell:[e=>`${q[0](e,`Seals ${e.seals}, Market ${e.market}`)}

Goal: sell my TEN SEALS stamps into the best bids.

1. Read Seals.tokensOf(address holder, uint256 start, uint256 count) with my wallet, 0, 200: it returns (uint256[] ids, uint256 total). For each id read Seals.inkOfStamp(id): 0 to 3 common, 4 gold, 5 jade.
2. Read Market.bidCount(), then Market.bidsFrom(0, bidCount). Each bid is (address bidder, uint96 price, uint32 left, uint8 kind, uint8 filter, bytes32 key) and its id is its index. Keep kind 0 with left above 0. filter 0 takes any ink, 1 gold or jade, 2 jade only.
3. Plan: sort the bids by price, highest first. Go down the list and give each bid the stamps it takes, up to its left, commons first. Do not put a gold or jade stamp into an any-ink bid unless I agree. List tokenIds in the order of their bids, and bidIds as those bids, each once, in the same order.
4. Show me the plan: each stamp with its ink and price, the total, the 2% fee and what I get. Wait for my explicit yes.
5. Call Market.sell(uint8 kind, uint256[] bidIds, uint256[] tokenIds, uint256 minPrice) with kind 0 and minPrice = the lowest price in the plan, in wei. No approval is needed. Report the hash and the BNB I received.`,e=>`${q[1](e,`Seals ${e.seals}，Market ${e.market}`)}

目标：把我的 TEN SEALS 印卖给出价最高的买单。

1. 调用 Seals.tokensOf(address holder, uint256 start, uint256 count)，传我的钱包、0、200，返回 (uint256[] ids, uint256 total)。每个 id 再查 Seals.inkOfStamp(id)：0 到 3 普通，4 金，5 翡翠。
2. 调用 Market.bidCount()，再调用 Market.bidsFrom(0, bidCount)。每个买单是 (address bidder, uint96 price, uint32 left, uint8 kind, uint8 filter, bytes32 key)，序号就是它的 id。只留 kind 为 0、left 大于 0 的。filter 0 收任意颜色，1 收金或翡翠，2 只收翡翠。
3. 做计划：买单按价格从高到低排，依次给每个买单分配它收的印，不超过 left，先给普通的。没有我同意，不要把金印或翡翠印卖进任意颜色的买单。tokenIds 按各自买单的顺序排列，bidIds 按同样顺序列出这些买单，每个一次。
4. 先给我看计划：每枚印的颜色和价格、合计、2% 手续费、到手金额。等我明确确认。
5. 调用 Market.sell(uint8 kind, uint256[] bidIds, uint256[] tokenIds, uint256 minPrice)，kind 为 0，minPrice 取计划里的最低价（wei）。不需要授权。告诉我交易哈希和到账的 BNB。`,e=>`${q[2](e,`Seals ${e.seals}, Market ${e.market}`)}

목표: 내 TEN SEALS 스탬프를 가장 좋은 비드에 팔기.

1. Seals.tokensOf(address holder, uint256 start, uint256 count)를 내 지갑, 0, 200으로 조회해. 반환값은 (uint256[] ids, uint256 total). 각 id마다 Seals.inkOfStamp(id)를 읽어: 0~3 일반, 4 금, 5 비취.
2. Market.bidCount()를 읽고 Market.bidsFrom(0, bidCount)를 조회해. 비드는 (address bidder, uint96 price, uint32 left, uint8 kind, uint8 filter, bytes32 key)이고 순번이 곧 id야. kind 0이고 left가 0보다 큰 것만 남겨. filter 0은 모든 잉크, 1은 금이나 비취, 2는 비취만 받아.
3. 계획: 비드를 가격 높은 순으로 정렬하고, 위에서부터 각 비드가 받는 스탬프를 left만큼 배정해. 일반부터 넣어. 내가 동의하지 않으면 금이나 비취 스탬프를 모든 잉크 비드에 넣지 마. tokenIds는 배정된 비드 순서대로, bidIds는 그 비드들을 같은 순서로 하나씩 나열해.
4. 계획을 보여 줘: 스탬프별 잉크와 가격, 합계, 수수료 2%, 실수령액. 내가 확실히 확인할 때까지 기다려.
5. Market.sell(uint8 kind, uint256[] bidIds, uint256[] tokenIds, uint256 minPrice)를 kind 0, minPrice는 계획의 최저 가격(wei)으로 호출해. 승인은 필요 없어. 해시와 받은 BNB를 알려 줘.`],notes:[e=>`${q[0](e,`Seals ${e.seals}, Notes ${e.notes}`)}

Goal: check my TEN SEALS notes and claim what they hold.

1. Read Notes.tokensOf(address holder, uint256 start, uint256 count) with my wallet, 0, 200: it returns (uint256[] ids, uint256 total).
2. For each id read Seals.weightOf(id) and Seals.holdsOf(id), the wei of BNB the note holds now.
3. Show me each note with its weight and holds, and the total. Wait for my explicit yes.
4. Call Seals.claim(uint256[] noteIds) with the notes that hold something. Report the hash and the amount (the Claimed event).`,e=>`${q[1](e,`Seals ${e.seals}，Notes ${e.notes}`)}

目标：查看我的 TEN SEALS 交子，并领取里面的 BNB。

1. 调用 Notes.tokensOf(address holder, uint256 start, uint256 count)，传我的钱包、0、200，返回 (uint256[] ids, uint256 total)。
2. 每个 id 查 Seals.weightOf(id) 和 Seals.holdsOf(id)，后者是交子现在内含的 BNB（wei）。
3. 列出每张交子的权重和内含金额，以及合计。等我明确确认。
4. 用内含金额大于 0 的交子调用 Seals.claim(uint256[] noteIds)。告诉我交易哈希和领到的金额（Claimed 事件）。`,e=>`${q[2](e,`Seals ${e.seals}, Notes ${e.notes}`)}

목표: 내 TEN SEALS 지폐를 확인하고 쌓인 BNB를 클레임하기.

1. Notes.tokensOf(address holder, uint256 start, uint256 count)를 내 지갑, 0, 200으로 조회해. 반환값은 (uint256[] ids, uint256 total).
2. 각 id마다 Seals.weightOf(id)와 Seals.holdsOf(id)를 읽어. holdsOf는 지금 지폐에 쌓인 BNB(wei)야.
3. 지폐별 가중치와 보유액, 합계를 보여 주고 내 확인을 기다려.
4. 보유액이 있는 지폐로 Seals.claim(uint256[] noteIds)를 호출해. 해시와 받은 금액(Claimed 이벤트)을 알려 줘.`]},Jt=["press","stone","sell","notes"],Qt=(e,t,n)=>jn[e][t](n);var C=window.TENSEALS,Pn="0x"+"0".repeat(40),wt="0x"+"0".repeat(64),ln=22222,L=e=>document.getElementById(e),g=e=>String(e??"").replace(/[&<>"']/g,t=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"})[t]),m=(e,t)=>{let n=L(e);n&&n.innerHTML!==t&&(n.innerHTML=t)},he=(e,t)=>{try{if(t===void 0)return localStorage.getItem(e);t===null?localStorage.removeItem(e):localStorage.setItem(e,t)}catch{}return null},gt=e=>e?e.slice(0,6)+"..."+e.slice(-4):"",P=e=>Number(e).toLocaleString("en-US");function B(e,t){let n=BigInt(e||0),s=n.toString().padStart(19,"0"),i=s.slice(0,-18),r=s.slice(-18);t===void 0&&(t=i==="0"?6:4);let l=r.slice(0,t).replace(/0+$/,"");return!l&&n>0n&&i==="0"&&(l=(r.match(/^0*[1-9]\d?/)||[""])[0].replace(/0+$/,"")),i.replace(/\B(?=(\d{3})+(?!\d))/g,",")+(l?"."+l:"")}function cn(e){if(e=String(e||"").trim(),e.includes(".")||(e=e.replace(",",".")),!/^\d*\.?\d*$/.test(e)||!/\d/.test(e))return null;let[t,n=""]=e.split(".");return n.length>18?null:BigInt(t||"0")*10n**18n+BigInt((n+"0".repeat(18)).slice(0,18))}var je=e=>14n*10n**14n+BigInt(e-1)*6n*10n**15n,U=e=>String(e||"").trim().toLowerCase().replace(/^@/,"").replace(/\.ai$/,"").replace(/\s+/g,""),we=e=>/^[a-z0-9_-]{1,64}$/.test(e),Z=e=>new Date(e*1e3).toLocaleString(rt(),{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",timeZoneName:"short"}),Rn=e=>new Date(e).toLocaleTimeString(rt(),{hour:"2-digit",minute:"2-digit",second:"2-digit"});function bt(e){e=Math.max(0,Math.floor(e));let t=Math.floor(e/86400),n=Math.floor(e%86400/3600),s=Math.floor(e%3600/60);return t?o("t.d",t,n):n?o("t.h",n,s):o("t.m",s,e%60)}var qn=e=>o(e===5?"r.jade":e===4?"r.gold":"r.common"),qe=(e,t)=>`<a href="${g(C.explorer+e)}" target="_blank" rel="noopener noreferrer">${t}</a>`,pt=e=>qe("/address/"+e,`<code>${g(e)}</code>`),kt=e=>qe("/address/"+e,`<code>${gt(e)}</code>`),Wn=e=>e===void 0?"":` data-v="${g(e)}"`,b=(e,t,n={})=>`<button type="button" class="btn ${n.cls||""}" data-a="${e}"${Wn(n.v)}${n.dis?" disabled":""}>${t}</button>`,te=(e,t,n)=>`<div class="seg">${t.map(([s,i])=>`<button type="button" data-a="${e}" data-v="${g(s)}" aria-pressed="${String(s)===String(n)}">${i}</button>`).join("")}</div>`,ft=e=>`<span class="ink i${e}">${g(Kt(e))}</span>`,Pe=(e,t)=>location.href.split("#")[0]+"#"+[e,t?"r="+t:""].filter(Boolean).join("&"),Q=()=>Date.now()/1e3+a.skew,a={route:{page:"home",arg:""},over:null,overErr:!1,skew:0,bids:null,bidCount:-1,bidsAt:0,acct:null,me:null,ref:"",refState:"",q:"",look:null,stamps:null,notes:null,stones:null,pics:new Map,keyNames:new Map,draw:null,winner:null,busy:!1,count:4,pkind:"press",plang:0,mtab:"book",showAll:new Set,bkind:0,bfilter:0,bweight:"10",bname:"",bnameState:"",bprice:"",bcount:"1",skind:0,spick:new Set,smin:"",pick:new Set,wtitle:"",wstate:"",npick:new Set},ne=null,v=ne?ne.wallet:new $e(C,e=>ps(e)),x=ne?ne.chain:new Ie(C,new ye(C.rpcs.split(" ")),v);async function We(){try{let e=await x.overview();a.over=e,a.overErr=!1,a.skew=(e.block?e.block.time:e.readAt/1e3)-e.readAt/1e3,(e.bidCount!==a.bidCount||!a.bids||Date.now()-a.bidsAt>25e3)&&(a.bids=await x.bids(e.bidCount),a.bidCount=e.bidCount,a.bidsAt=Date.now(),Fn()),a.route.page==="rules"&&e.stats.closed&&!a.draw&&Re()}catch{a.overErr=!0}w()}async function Fn(){let e=[...new Set((a.bids||[]).filter(t=>t.kind===2&&t.left>0&&t.key!==wt&&!a.keyNames.has(t.key)).map(t=>t.key))];if(e.length)try{let t=await x.stoneNames(e);e.forEach((n,s)=>a.keyNames.set(n,t[s]||"")),w()}catch{}}async function yt(){let e=v.account;if(a.acct=e,a.me=null,!e)return w();w();try{let t=await x.quote(e),n=null,s=0n;t.handle&&([n,s]=await Promise.all([x.nameInfo(t.handle),x.referralDue(e).catch(()=>0n)])),v.account===e&&(a.me={...t,info:n,due:s}),t.handle&&a.route.page==="name"&&!a.route.arg&&!a.look&&Bt(t.handle)}catch{v.account===e&&(a.me={err:!0})}Fe(),w()}var dt={};async function H(e,t){let n=a.acct;if(!(!n||dt[e]||a[e]&&!t)){dt[e]=!0;try{if(e==="stamps"){let s=await x.tokens("Seals",n);a.stamps=(await x.stamps(s)).sort((i,r)=>r.ink-i.ink||(i.id<r.id?-1:1))}else if(e==="notes"){let s=await x.tokens("Notes",n);a.notes=(await x.notes(s)).sort((r,l)=>r.id<l.id?1:-1);let i=s.filter(r=>!a.pics.has(String(r)));x.pictures("Notes",i,(r,l)=>{a.pics.set(String(r),l),w()}).catch(()=>{})}else{let s=await x.tokens("Stones",n),i=await x.stoneNames(s).catch(()=>s.map(()=>null));a.stones=s.map((r,l)=>({id:r,name:i[l]||""})),x.pictures("Stones",s.filter(r=>!a.pics.has("s"+r)),(r,l)=>{a.pics.set("s"+r,l),w()}).catch(()=>{})}}catch{a[e]=a[e]||[]}dt[e]=!1,v.account!==n&&(a[e]=null),w()}}function Xt(){["stamps","notes","stones"].forEach(e=>a[e]&&H(e,!0)),yt()}async function Bt(e){let t=U(e);if(a.q=t,!we(t))return a.look={name:t,err:"badName"},w();a.look={name:t,loading:!0},w();try{let n=await x.nameInfo(t),s=[null,null,null,null];if(n.wallet&&(s=await x.previews(t,n.inks).catch(()=>s)),!a.look||a.look.name!==t)return;a.look={name:t,info:n,local:s.some(i=>!i),images:s.map((i,r)=>i||ot(t,n.inks[r],r))}}catch{a.look&&a.look.name===t&&(a.look={name:t,err:"readFail"})}w()}var en;function Hn(e){a.ref=U(e),he("tenseals.ref",a.ref||null),Fe()}function Fe(){clearTimeout(en);let e=a.ref;e?we(e)?(a.refState="check",en=setTimeout(async()=>{try{let t=await x.owner(e);if(a.ref!==e)return;a.refState=t?a.acct&&t===a.acct?"self":"ok":"bad"}catch{}w()},350)):a.refState="bad":a.refState="",w()}var dn=()=>a.refState==="ok"||a.refState==="check"?a.ref:"",tn;function ie(e,t="",n){let s=L("toast");s.className="toast "+t,s.innerHTML=`<p>${e}</p>${n?`<p class="small">${qe("/tx/"+n,o("view"))}</p>`:""}${t?b("toastx",o("close"),{cls:"small ghost"}):""}`,s.hidden=!1,clearTimeout(tn),t==="ok"&&(tn=setTimeout(()=>s.hidden=!0,15e3))}async function F(e,t,n,s){if(!v.account)return ie(o("needWallet"),"err"),gn();if(!a.busy){a.busy=!0,w(),ie(o("tx.check"));try{let i=await x.write(e,t,n,(r,l)=>ie(r==="sent"?o("tx.sent",gt(l)):o("tx."+r)));ie(s&&s(i)||o("tx.done"),"ok",i.transactionHash)}catch(i){let r=Qe(i);ie(r.key&&r.key!=="unknown"?o(r.key):g(r.detail||o("unknown")),"err",i.hash)}a.busy=!1,w(),We()}}var Un=(e,t)=>e.ev.filter(n=>n.e==="Transfer"&&n.c===t&&n.from===Pn).map(n=>n.id);function _n(){if(!a.bids)return`<p class="muted">${a.overErr?o("readFail"):o("reading")}</p>`;let e=Ft(a.bids),t={raw:`<b class="red">${B(e.net)}</b>`},n=e.units===4?o("livePay",t):e.units?o("livePart",e.units,t):o("liveNone"),s=(o("liveCost")+" "+n).replace(/<[^>]+>/g,""),i=a.me&&a.me.handle?a.me.handle:"";return`<p class="live-a">${o("liveCost")}</p><p class="live-b">${n}</p>
<p class="small muted">${o("liveNote")} ${a.over&&a.over.block?o("readAt",Rn(a.over.readAt),P(a.over.block.number)):""}</p>
<p>${b("copy",o("copyLine"),{v:s+" "+Pe("",i),cls:"ghost small"})}</p>`}function zn(){let e=a.over;if(!e)return"";let t=e.stats,n=e.vault,s=Q(),i=(l,c)=>`<div class="fig"><b>${l}</b><span>${c}</span></div>`,r=l=>`<span data-tick="${l}">${bt(l-s)}</span>`;return[i(P(t.stamps),o("st.pressed","22,222")),i(P(t.stones),o("st.stones")),i(P(t.names),o("st.names")),i(P(t.notes),o("st.notes")),i(P(t.weight),o("st.weight")),i(B(n.held,4),o("st.held")),i(B(n.perHour),o("st.perHour")),n.waiting>0n?i(B(n.waiting),o("st.waiting")):"",s<t.mintEnd?i(r(t.mintEnd),o("st.mintLeft")):i(`<small>${Z(t.mintEnd)}</small>`,o("st.mintOver")),s<t.finale?i(r(t.finale),o("st.finaleIn")):i(`<small>${Z(t.finale)}</small>`,o("st.finaleNow"))].join("")}var $t=()=>[["Seals",C.seals],["Market",C.market],["Notes",C.notes],["Stones",C.stones],["Art",C.art]];function Gn(){let e=a.over&&a.over.stats,t=(n,s)=>`<div><dt>${n}</dt><dd>${s}</dd></div>`;return`<h3>${o("fc.title")}</h3><dl>${[t(o("fc.supply"),o("fc.supplyV")),t(o("fc.price"),o("fc.priceV")),t(o("fc.per"),o("fc.perV")),t(o("fc.who"),o("fc.whoV")),t(o("fc.free"),o("fc.freeV")),t(o("fc.mint"),o("fc.mintV")+(e?"<br>"+o("fc.window",Z(e.openAt),Z(e.mintEnd)):"")),t(o("fc.finale"),o("fc.finaleV",e?Z(e.finale):"")),t(o("fc.chain"),`BNB Chain (${C.chainId})`),t(o("fc.contracts"),$t().map(([n,s])=>`<span class="ca"><span class="cn">${n}</span>${pt(s)}</span>`).join("")),t(o("fc.code"),qe(`/address/${C.seals}#code`,o("fc.codeV"))),t(o("fc.owner"),o("fc.ownerV"))].join("")}</dl>`}function un(){let e=a.over;if(!e)return o(a.overErr?"readFail":"reading");let t=e.stats;return t.stamps>=ln?o("pr.soldOut"):Q()>=t.mintEnd?o("pr.over",Z(t.mintEnd)):o("pr.open",{raw:`<span data-tick="${t.mintEnd}">${bt(t.mintEnd-Q())}</span>`},P(t.stamps))}var Oe=()=>a.over&&Q()>=a.over.stats.openAt&&Q()<a.over.stats.mintEnd&&a.over.stats.stamps<ln;function pn(){let e=a.ref;return e?a.refState==="ok"?o("pr.refOk",e):a.refState==="bad"?`<span class="err">${o("pr.refBad",e)}</span>`:a.refState==="self"?`<span class="err">${o("pr.refSelf")}</span>`:o("pr.refCheck",e):o("pr.refNone")}function fn(){return Qt(a.pkind,a.plang,{seals:C.seals,market:C.market,notes:C.notes,stones:C.stones,chainId:C.chainId,ref:dn(),count:a.count,price:B(je(a.count))})}function Yn(){return`<div class="codebox"><span class="lbl">${o("pr.to")}</span><code>${C.seals}</code>${b("copy",o("copy"),{v:C.seals,cls:"small ghost"})}</div>
<table class="amounts"><thead><tr><th>${o("pr.stamps")}</th><th>${o("pr.send")}</th><th></th></tr></thead><tbody>${[1,2,3,4].map(e=>`<tr><td>${e}</td><td><b>${B(je(e))}</b> BNB</td><td>${b("copy",o("copy"),{v:B(je(e)),cls:"small ghost"})}</td></tr>`).join("")}</tbody></table>
<ul class="fine">${["pr.n1","pr.n2","pr.n3","pr.n4"].map(e=>`<li>${o(e)}</li>`).join("")}</ul>`}function me(){return v.list().length?`<p>${b("wallet",o("connect"))}</p>`:`<p class="muted">${o("noWallet")}</p>`}function Vn(){if(!v.account)return me();let e=a.me;if(!e)return`<p class="muted">${o("reading")}</p>`;if(e.err)return`<p class="err">${o("readFail")}</p>`;if(!e.handle)return`<p>${o("noId")}</p>`;let t=e.info||{stamped:0,stone:!1,brought:0,earned:0n},n=`<p class="big">${o("yourId",e.handle)}</p><p>${e.left?o("pr.left",t.stamped,e.left):o("pr.full")}</p>`;Oe()&&e.left?n+=`<div class="presses">${[1,2,3,4].filter(i=>i<=e.left&&e.cost[i-1]!==null).map(i=>b("press",`${o("pr.k",i)}<small>${B(e.cost[i-1])} BNB</small>`,{v:i,dis:a.busy})).join("")}</div><p class="small muted">${pn()}</p>`:Oe()||(n+=`<p class="muted">${un()}</p>`),t.stone?n+=`<p>${o("pr.stoneHave")}</p>`:Oe()&&(n+=`<p>${b("stone",o("pr.claim"),{cls:"ghost",dis:a.busy})}</p><p class="small muted">${o("pr.stoneWith")}</p>`);let s=Pe("",e.handle);return n+=`<div class="refbox"><p><b>${o("pr.code",e.handle)}</b></p><p class="lbl">${o("pr.link")}</p><div class="codebox"><code>${g(s)}</code>${b("copy",o("copy"),{v:s,cls:"small ghost"})}</div>`,(t.brought||t.earned>0n)&&(n+=`<p class="small">${o("pr.refStats",t.brought,B(t.earned))}</p>`),e.due>0n&&(n+=`<p>${o("pr.due",B(e.due))} ${b("withdraw",o("pr.withdraw"),{cls:"small",dis:a.busy})}</p>`),n+"</div>"}function hn(e){if(e.kind===2){if(e.key===wt)return o("g.2.0");let t=a.keyNames.get(e.key);return o("g.2",t?t+".ai":e.key.slice(0,10)+"...")}return e.kind===1&&e.filter?o("g.1",e.filter):o(`g.${e.kind}.${e.filter}`)}var Kn=e=>e.kind===2?"2:"+e.key:e.kind+":"+e.filter;function Zn(){if(!a.bids)return`<p class="muted">${a.overErr?o("readFail"):o("reading")}</p>`;let e=Ht(a.bids);return e.length?e.map(t=>{let n=Kn(t),s=a.showAll.has(n),i=(s?t.bids:t.bids.slice(0,6)).map(r=>`<tr><td><b>${B(r.price)}</b></td><td>${P(r.left)}</td><td>${kt(r.bidder)}</td></tr>`).join("");return`<section class="grp"><h3>${hn(t)}<span class="muted">${o("mk.units",P(t.units))}</span></h3><table class="book"><thead><tr><th>${o("mk.price")}</th><th>${o("mk.left")}</th><th>${o("mk.bidder")}</th></tr></thead><tbody>${i}</tbody></table>${t.bids.length>6&&!s?b("more",o("mk.more",t.bids.length),{v:n,cls:"small ghost"}):""}</section>`}).join(""):`<p>${o("mk.none")}</p>`}function ht(){return a.bkind===0?`<div class="field"><span class="lbl">${o("mk.ink")}</span>${te("bfilter",[0,1,2].map(e=>[e,o("f."+e)]),a.bfilter)}</div>`:a.bkind===1?`<div class="field"><label class="lbl" for="bweight">${o("mk.minW")}</label><input id="bweight" data-in="bweight" inputmode="numeric" autocomplete="off" value="${g(a.bweight)}"></div>`:`<div class="field"><label class="lbl" for="bname">${o("mk.stone")}</label><input id="bname" data-in="bname" autocomplete="off" autocapitalize="none" spellcheck="false" placeholder="${o("pr.refPh")}" value="${g(a.bname)}"><p id="bnamest" class="small"></p></div>`}function vt(){let e=cn(a.bprice),t=/^\d+$/.test(a.bcount.trim())?+a.bcount.trim():0,n=a.bweight.trim()===""?0:/^\d+$/.test(a.bweight.trim())?+a.bweight.trim():-1,s=U(a.bname),i=a.bkind===0?a.bfilter:a.bkind===1?n:0,r=a.bkind===2&&s?oe(s):wt,l="";return e?!t||t>4294967295?l="mk.badCount":a.bkind===1&&(n<0||n>100)?l="mk.badW":a.bkind===2&&s&&(!we(s)||a.bnameState==="bad")&&(l="badName"):l="mk.badPrice",{price:e,count:t,filter:i,key:r,err:l,total:e&&t?e*BigInt(t):0n}}function Jn(){let e=vt(),t=ee(a.bids||[]).find(n=>n.kind===a.bkind&&(a.bkind===2?n.key===e.key:n.filter===e.filter));return(e.err?`<span class="err">${o(e.err)}</span>`:o("mk.lock",B(e.total)))+(t?`<br><span class="muted">${o("mk.best",B(t.price))}</span>`:"")}function Qn(){if(!v.account)return`<p>${o("needWallet")}</p>`+me();if(!a.bids)return`<p class="muted">${o("reading")}</p>`;let e=ee(a.bids).filter(t=>t.bidder.toLowerCase()===a.acct);return e.length?`<table class="book"><tbody>${e.map(t=>`<tr><td>#${t.id}<br><span class="small muted">${hn(t)}</span></td><td><b>${B(t.price)}</b> x ${P(t.left)}</td><td>${b("cancel",o("mk.cancel"),{v:t.id,cls:"small ghost",dis:a.busy})}</td></tr>`).join("")}</tbody></table>`:`<p>${o("mk.noMine")}</p>`}function St(e){return e===0?a.stamps:e===1?a.notes:a.stones}var Xn=(e,t)=>e===0?`#${t.id} ${g(t.handle)}.ai ${ft(t.ink)}`:e===1?`#${t.id} ${g(t.title||o("nt.untitled"))}, ${o("nt.weight",t.weight)}`:`${g(t.name?t.name+".ai":String(t.id).slice(0,12)+"...")}`,es=(e,t)=>e===0?Ee(t.handle,t.ink,t.index):e===1?a.pics.get(String(t.id))||Ce(t):a.pics.get("s"+t.id)||Ee(t.name||"stone",0,0);function ge(){let e=(St(a.skind)||[]).filter(s=>a.spick.has(String(s.id))),t=a.smin.trim()?cn(a.smin):0n,n=(a.bids||[]).filter(s=>t===null||s.price>=t);return{p:Ut(a.skind,e,n,a.acct),min:t,bad:t===null}}function ts(){if(!v.account)return`<p>${o("needWallet")}</p>`+me();let e=St(a.skind);if(!e)return`<p class="muted">${o("mk.loading")}</p>`;if(!e.length)return`<p>${o("mk.noTok")}</p>`;let{p:t}=ge(),n=new Map(t.rows.map(l=>[String(l.token.id),l.price])),s=ee(a.bids||[]).filter(l=>l.kind===a.skind&&l.bidder.toLowerCase()!==a.acct),i=l=>s.find(c=>et(a.skind,c,l));return`<div class="row wrap">${a.skind===0?b("spick",o("mk.commons"),{v:"commons",cls:"small ghost"}):""}${b("spick",o("mk.all"),{v:"all",cls:"small ghost"})}${b("spick",o("mk.clear"),{v:"none",cls:"small ghost"})}</div>`+`<div class="toks">${e.map(l=>{let c=String(l.id),d=a.spick.has(c),u=d?n.get(c):(i(l)||{}).price,f=u!=null?`<b>${B(u)}</b>`:`<span class="muted">${o("mk.noBid")}</span>`;return`<button type="button" class="tok" data-a="spick" data-v="${g(c)}" aria-pressed="${d}"><img src="${es(a.skind,l)}" alt=""><span class="tl">${Xn(a.skind,l)}</span><span class="tp">${f}</span></button>`}).join("")}</div>`}function ns(){let{p:e,bad:t}=ge();if(t)return`<p class="err">${o("mk.badPrice")}</p>`;if(!a.spick.size)return"";let n=`<p class="big">${o("mk.plan",B(e.total),B(e.fee),B(e.net))}</p>`;return e.unmatched.length&&(n+=`<p class="err">${e.unmatched.map(s=>"#"+(a.skind===2?s.name||"?":s.id)).join(", ")}: ${o("mk.noBid")}</p>`),a.skind===0&&e.rows.some(s=>s.token.ink>=4&&s.bid.filter===0)&&(n+=`<p class="warn">${o("mk.rare")}</p>`),n}function ss(){let{p:e,bad:t}=ge();return b("sell",o("mk.sellBtn",e.rows.length),{dis:t||!e.rows.length||e.unmatched.length>0||a.busy})}function as(e){return e?e.length>16?"long":/^[a-z0-9]+( [a-z0-9]+)*$/.test(e)?"ok":"bad":""}var nn;function os(){clearTimeout(nn);let e=a.wtitle,t=as(e);a.wstate=t==="ok"?"check":t,t==="ok"&&(nn=setTimeout(async()=>{try{let n=await x.titleOwner(e);a.wtitle===e&&(a.wstate=n?"taken:"+n:"free")}catch{a.wtitle===e&&(a.wstate="free")}w()},350)),w()}var sn=()=>{let e=a.over&&a.over.stats;return!e||!e.closed&&(Q()<e.finale||e.weight===0)};function is(){let e=(a.stamps||[]).filter(t=>a.pick.has(String(t.id)));return o("wv.picked",e.length,e.reduce((t,n)=>t+xe(n.ink),0))}function rs(){let e=a.wstate;return e?e==="bad"?`<span class="err">${o("wv.tBad")}</span>`:e==="long"?`<span class="err">${o("wv.tLong")}</span>`:e==="check"?`<span class="muted">${o("wv.tCheck")}</span>`:e==="free"?`<span class="ok">${o("wv.tFree")}</span>`:`<span class="err">${o("wv.tTaken","#"+e.slice(6))}</span>`:""}function ls(){let e=a.over;if(!e)return`<p class="muted">${o("reading")}</p>`;let t=e.stats,n=e.block?e.block.number:0;if(t.drawn){let i=a.winner;return`<p>${i?o("fin.drawn","#"+i.noteId,B(i.amount)):o("fin.drawnAny")}</p>`}if(!t.closed)return Q()<t.finale?`<p>${o("fin.before",Z(t.finale))}</p>`:t.weight?`<p>${o("fin.canClose")}</p><p>${b("close",o("fin.close"),{dis:a.busy})}</p>`:`<p>${o("fin.noNotes")}</p>`;let s=a.draw?a.draw.drawBlock:0;return s?n<s?`<p>${o("fin.wait",B(a.draw.jackpot||t.prize),P(s),P(s-n))}</p>`:n-s>8e3?`<p>${o("fin.expired",P(s))}</p><p>${b("close",o("fin.close"),{dis:a.busy})}</p>`:`<p>${o("fin.canDraw",P(s))}</p><p>${b("draw",o("fin.draw"),{dis:a.busy})}</p>`:`<p class="muted">${o("reading")}</p>`}async function Re(){let e=a.over&&a.over.stats;if(!(!e||!e.closed)){try{a.draw=await x.drawInfo(),e.drawn&&!a.winner&&(a.winner=await x.winner(a.draw.drawBlock,a.over.block&&a.over.block.number))}catch{}w()}}var fe=(e,t,n,s="",i="")=>`<div class="field"><label class="lbl" for="${e}">${t}</label><input id="${e}" data-in="${e}" autocomplete="off" autocapitalize="none" spellcheck="false" placeholder="${g(s)}" value="${g(n)}"${i}></div>`,an=e=>`<form class="find" data-f="look"><div class="row"><input id="${e}" data-in="q" autocomplete="off" autocapitalize="none" spellcheck="false" placeholder="${o("findPh")}" value="${g(a.q)}" aria-label="${o("findTitle")}"><button class="btn" type="submit">${o("findBtn")}</button></div></form>`,mn={home:{enter:()=>`<div class="hero"><div class="hero-mark">${it(128)}</div><div><p class="hero1">${o("hero1")}</p><p class="hero2">${o("hero2")}</p></div></div>
<section id="live" class="live"></section>
<section class="part"><h3>${o("findTitle")}</h3><p class="small muted">${o("findLead")}</p>${an("q")}</section>
<section id="stats" class="figs"></section>
<section id="facts" class="facts"></section>
<p class="ctas"><a class="btn" href="#press">${o("goPress")}</a><a class="btn ghost" href="#rules">${o("goRules")}</a></p>`,paint(){m("live",_n()),m("stats",zn()),m("facts",Gn())}},name:{enter(){let e=a.route.arg||!a.look&&a.me&&a.me.handle||"";return e&&(!a.look||a.look.name!==U(e))&&setTimeout(()=>Bt(e)),`<h2>${o("findTitle")}</h2><p class="small muted">${o("findLead")}</p>${an("q2")}<div id="nameout"></div>`},paint(){let e=a.look,t="";if(!e)t="";else if(e.loading)t=`<p class="muted">${o("reading")}</p>`;else if(e.err)t=`<p class="err">${o(e.err)}</p>`;else if(!e.info.wallet)t=`<h2 class="nm">${g(e.name)}<span>.ai</span></h2><p>${o("nm.none")}</p>`;else{let n=e.info,s=Math.max(...n.inks),i=o(s===5?"nm.jade":s===4?"nm.gold":"nm.plain",e.name).replace(/&#39;/g,"'"),r=Pe("name/"+e.name),l=Pe("",e.name),c=[o("nm.pressed",n.stamped),o(n.stone?"nm.stoneYes":"nm.stoneNo")];n.onNotes&&c.push(o("nm.onNotes",n.onNotes)),n.brought&&c.push(o("nm.brought",n.brought)),n.earned>0n&&c.push(o("nm.earned",B(n.earned))),t=`<h2 class="nm">${g(e.name)}<span>.ai</span></h2><p class="small muted">${o("nm.held",{raw:kt(n.wallet)})}</p>
<ul class="tags">${c.map(d=>`<li>${d}</li>`).join("")}</ul>
<h3>${o("nm.inks")}</h3>
<div class="seals">${n.inks.map((d,u)=>`<figure class="${u<n.stamped?"done":""}"><img alt="${g(e.name)} ${u+1}" src="${e.images[u]}"><figcaption>${u+1}. ${ft(d)}${u<n.stamped?` <span class="pressed">${o("nm.done")}</span>`:""}<br><span class="muted">${o("nm.inkLine",qn(d),zt[d],xe(d))}</span></figcaption></figure>`).join("")}</div>
<p class="small muted">${o("nm.sum",n.inks.reduce((d,u)=>d+xe(u),0))}. ${o("nm.fixed")}${e.local?" "+o("nm.local"):""}</p>
<section class="part share"><h3>${o("nm.share")}</h3><p>${g(i)}</p><div class="codebox"><code>${g(r)}</code>${b("copy",o("nm.copyLink"),{v:i+" "+r,cls:"small ghost"})}</div>
<p class="lbl">${o("nm.ref")}</p><div class="codebox"><code>${g(l)}</code>${b("copy",o("copy"),{v:l,cls:"small ghost"})}</div><p class="small muted">${o("nm.refNote")}</p></section>
${n.stamped<4&&Oe()?`<p><a class="btn" href="#press">${o("nm.go")}</a></p>`:""}`}m("nameout",t)}},press:{enter:()=>`<h2>${o("nav.press")}</h2><p id="pstatus" class="lead"></p>
<div class="grid2"><div class="field"><span class="lbl">${o("pr.count")}</span><div id="pcount"></div><p id="pcost" class="small muted"></p></div>
${fe("pref",o("pr.ref"),a.ref,o("pr.refPh"))}</div><p id="prefst" class="small refst"></p>
<section class="part"><h3><span class="no">a</span>${o("pr.a")}</h3><p>${o("pr.aLead")}</p>
<p class="lbl">${o("pr.install")}</p><div class="codebox"><code>${ct}</code>${b("copy",o("copy"),{v:ct,cls:"small ghost"})}</div>
<div id="ptabs" class="ptabs"></div><pre id="prompt" class="prompt"></pre><p>${b("copyp",o("copy"))}</p></section>
<section class="part"><h3><span class="no">b</span>${o("pr.b")}</h3><p>${o("pr.bLead")}</p><div id="direct"></div></section>
<section class="part"><h3><span class="no">c</span>${o("pr.c")}</h3><p>${o("pr.cLead")}</p><div id="pconn"></div></section>`,paint(){m("pstatus",un()),m("pcount",te("count",[1,2,3,4].map(n=>[n,String(n)]),a.count)),m("pcost",o("pr.cost",a.count,B(je(a.count)))),m("prefst",pn()),m("ptabs",te("pkind",Jt.map(n=>[n,o("p."+n)]),a.pkind)+`<div class="plang"><span class="small muted">${o("pr.pLang")}</span>${te("plang",K.map((n,s)=>[s,n[1]]),a.plang)}</div>`);let e=L("prompt"),t=fn();e&&e.textContent!==t&&(e.textContent=t),m("direct",Yn()),m("pconn",Vn())}},market:{enter(){return["book","place","mine","sell"].includes(a.route.arg)&&(a.mtab=a.route.arg),`<h2>${o("nav.market")}</h2><p class="lead">${o("mk.lead")}</p><div id="mtabs"></div><div id="mbody">${mt[a.mtab].enter()}</div>`},paint(){m("mtabs",te("mtab",[["book",o("mk.book")],["place",o("mk.place")],["mine",o("mk.mine")],["sell",o("mk.sell")]],a.mtab)),mt[a.mtab].paint()}},weave:{enter(){return H("stamps"),`<h2>${o("nav.weave")}</h2><p class="lead">${o("wv.lead")}</p><p id="wclose" class="small muted"></p>
<div id="wneed"></div><div id="wbody"${v.account?"":" hidden"}>
<div class="row wrap">${b("wquick",o("wv.heavy"),{v:"heavy",cls:"small ghost"})}${b("wquick",o("wv.commons"),{v:"commons",cls:"small ghost"})}${b("wquick",o("wv.clear"),{v:"clear",cls:"small ghost"})}</div>
<p id="wsum" class="big"></p><div id="wgrid" class="toks"></div>
${fe("wtitle",o("wv.title"),a.wtitle,"",' maxlength="16"')}<p id="wtst" class="small"></p><p class="small muted">${o("wv.rule")}</p>
<p id="wbtn"></p><p class="small muted">${o("wv.burn")}</p></div>`},paint(){let e=a.over&&a.over.stats;m("wclose",e?sn()?o("wv.closes",Z(e.finale)):o("wv.closed"):""),m("wneed",v.account?a.stamps&&!a.stamps.length?`<p>${o("wv.none")}</p>`:"":`<p>${o("needWallet")}</p>${me()}`);let t=L("wbody");t&&(t.hidden=!v.account||!(a.stamps&&a.stamps.length)),v.account&&!a.stamps&&m("wneed",`<p class="muted">${o("mk.loading")}</p>`),m("wsum",is()),m("wgrid",(a.stamps||[]).map(s=>{let i=String(s.id);return`<button type="button" class="tok" data-a="wpick" data-v="${g(i)}" aria-pressed="${a.pick.has(i)}"><img src="${Ee(s.handle,s.ink,s.index)}" alt=""><span class="tl">#${i} ${g(s.handle)}.ai</span><span class="tp">${ft(s.ink)}</span></button>`}).join("")),m("wtst",rs());let n=a.pick.size===10&&(a.wstate===""||a.wstate==="free")&&sn()&&!a.busy;m("wbtn",b("weave",o("wv.btn"),{dis:!n}))}},notes:{enter(){return H("notes"),`<h2>${o("nav.notes")}</h2><p class="lead">${o("nt.lead")}</p><div id="nbody"></div><div id="nbar" class="bar"></div>`},paint(){let e="",t="";if(!v.account)e=`<p>${o("needWallet")}</p>${me()}`;else if(!a.notes)e=`<p class="muted">${o("mk.loading")}</p>`;else if(!a.notes.length)e=`<p>${o("nt.none")}</p>`;else{e=`<div class="notes">${a.notes.map(i=>{let r=String(i.id);return`<button type="button" class="note" data-a="npick" data-v="${g(r)}" aria-pressed="${a.npick.has(r)}"><img src="${a.pics.get(r)||Ce(i)}" alt=""><span class="tl"><b>${g(i.title||o("nt.untitled"))}</b> #${r}</span><span class="tl">${o("nt.weight",i.weight)}</span><span class="tp red">${o("nt.holds",B(i.holds))}</span></button>`}).join("")}</div>`;let n=a.notes.filter(i=>a.npick.has(String(i.id))),s=n.reduce((i,r)=>i+r.holds,0n);t=`${b("nall",o("nt.all"),{cls:"ghost small"})}${b("claim",o("nt.claim",B(s),n.length),{dis:!n.length||!s||a.busy})}<a class="btn ghost small" href="#market/sell">${o("nt.sell")}</a>`}m("nbody",e),m("nbar",t)}},rules:{enter(){return setTimeout(Re),`<h2>${o("ru.title")}</h2>${Le(Zt).map(([e,t],n)=>`<section class="rule${n===6?" plain":""}"><h3>${g(e)}</h3><p>${g(t)}</p></section>`).join("")}<section class="rule"><h3>${o("fin.h")}</h3><div id="fin"></div></section><section class="rule"><h3>${o("ru.addr")}</h3><dl class="addrs">${$t().map(([e,t])=>`<div><dt>${e}</dt><dd>${pt(t)}</dd></div>`).join("")}<div><dt>${o("ru.reg")}</dt><dd>${pt(C.registry)}</dd></div></dl></section>`},paint(){m("fin",ls())}},agents:{enter:()=>null,paint(){}}},mt={book:{enter:()=>'<div id="mbook"></div>',paint:()=>m("mbook",Zn())},place:{enter:()=>`<div class="field"><span class="lbl">${o("mk.kind")}</span><div id="bkind"></div></div><div id="bfilter">${ht()}</div>
<div class="grid2">${fe("bprice",o("mk.pricePer"),a.bprice,"0.008",' inputmode="decimal"')}${fe("bcount",o("mk.count"),a.bcount,"1",' inputmode="numeric"')}</div>
<p id="bsum"></p><p id="bbtn"></p>`,paint(){m("bkind",te("bkind",[0,1,2].map(t=>[t,o("k."+t)]),a.bkind)),m("bsum",Jn()),m("bbtn",b("placebid",o("mk.placeBtn"),{dis:!!vt().err||a.busy}));let e=U(a.bname);m("bnamest",a.bkind===2&&e?a.bnameState==="bad"?`<span class="err">${o("nm.none")}</span>`:a.bnameState==="ok"?`<span class="ok">${g(e)}.ai</span>`:"":"")}},mine:{enter:()=>'<div id="mmine"></div>',paint:()=>m("mmine",Qn())},sell:{enter(){return H(["stamps","notes","stones"][a.skind]),`<div class="field"><span class="lbl">${o("mk.what")}</span><div id="skind"></div></div><div id="slist"></div><div id="splan"></div>
<div id="sgo" hidden>${fe("smin",o("mk.minP"),a.smin,"",' inputmode="decimal"')}<p class="small muted">${o("mk.minNote")}</p><p id="sbtn"></p></div>`},paint(){m("skind",te("skind",[0,1,2].map(n=>[n,o("k."+n)]),a.skind)),m("slist",ts()),m("splan",ns()),m("sbtn",ss());let e=L("smin"),t=L("sgo");e&&(e.placeholder=a.spick.size?B(ge().p.minPrice):""),t&&(t.hidden=!a.spick.size)}}},Nt=["home","name","press","market","weave","notes","rules","agents"];function cs(){let e="";try{e=decodeURIComponent(location.hash.replace(/^#\/?/,""))}catch{}let t="home",n="";for(let s of e.split("&")){let i=s.match(/^r=(.*)$/);if(i){U(i[1])!==a.ref&&Hn(i[1]);continue}let[r,...l]=s.split("/");Nt.includes(r)&&(t=r,n=l.join("/"))}return{page:t,arg:n}}function wn(){a.route=cs(),It(),scrollTo(0,0)}function It(){let e=a.route.page;for(let n of Nt){let s=L("v-"+n);s.classList.toggle("on",n===e),n!==e&&n!=="agents"&&(s.innerHTML="")}let t=mn[e].enter();t!==null&&(L("v-"+e).innerHTML=t),ds(),w()}function ds(){document.documentElement.lang=De(),m("langs",K.map(([e,t],n)=>`<button type="button" data-a="lang" data-v="${e}" aria-pressed="${De()===e}">${t}</button>`).join("")),m("nav",Nt.map(e=>`<a href="#${e==="home"?"":e}" class="${a.route.page===e?"on":""}">${o("nav."+e)}</a>`).join("")),m("tagline",o("tagline")),m("agents-h",o("agents.h")),m("agents-p",o("agents.p")+`<br>${b("copyagents",o("copy"),{cls:"small ghost"})}`),m("foot",`<p>${o("foot")}</p><p class="small">${$t().map(([e,t])=>`${e} ${kt(t)}`).join("<br>")}</p>`)}function w(){let e=L("walletbtn");e.hidden=!1,e.textContent=v.account?a.me&&a.me.handle?a.me.handle+".ai":gt(v.account):o("connect"),e.classList.toggle("on",!!v.account),mn[a.route.page].paint()}function us(){for(let e of document.querySelectorAll("[data-tick]"))e.textContent=bt(+e.dataset.tick-Q())}function gn(){let e=v.list(),t;if(v.account)t=`<p class="lbl">${o("w.on")}</p><p><code>${g(v.account)}</code></p><p>${a.me&&a.me.handle?o("yourId",a.me.handle):o("w.noId")}</p><p>${b("disconnect",o("w.off"),{cls:"ghost"})}</p>`;else{if(e.length===1)return bn(0);e.length?t=`<p class="lbl">${o("w.pick")}</p>`+e.map((s,i)=>`<p><button type="button" class="btn ghost wide" data-a="connect" data-v="${i}">${/^data:image\//.test(s.info.icon||"")?`<img src="${g(s.info.icon)}" alt="" width="24" height="24">`:""}${g(s.info.name)}</button></p>`).join(""):t=`<p>${o("noWallet")}</p>`}let n=L("sheet");n.innerHTML=`<div class="box">${t}<p>${b("sheetx",o("close"),{cls:"small ghost"})}</p></div>`,n.hidden=!1}async function bn(e){L("sheet").hidden=!0;try{await v.connect(v.list()[e])}catch(t){let n=Qe(t);(n.key!=="rejected"||!v.account)&&ie(n.key?o(n.key):g(n.detail||"")||o("unknown"),"err")}}function ps(e){if(e==="found")return w();if(e==="account"){if(v.account===a.acct&&a.me)return w();a.stamps=a.notes=a.stones=null,a.pick.clear(),a.spick.clear(),a.npick.clear(),yt(),It()}}async function ut(e,t){let n=!1;try{await navigator.clipboard.writeText(e),n=!0}catch{let i=document.createElement("textarea");i.value=e,i.setAttribute("readonly",""),i.className="offscreen",document.body.appendChild(i),i.select();try{n=document.execCommand("copy")}catch{}i.remove()}if(n&&t){let s=t.innerHTML;t.innerHTML=o("copied"),setTimeout(()=>t.innerHTML=s,1400)}}var fs={lang(e){lt(e),he("tenseals.lang",e),a.plang=K.findIndex(t=>t[0]===e),It()},wallet:gn,connect:e=>bn(+e),disconnect(){L("sheet").hidden=!0,v.disconnect()},sheetx:()=>L("sheet").hidden=!0,toastx:()=>L("toast").hidden=!0,copy:(e,t)=>ut(e,t),copyp:(e,t)=>ut(fn(),t),copyagents:(e,t)=>ut(L("for-agents").textContent,t),count(e){a.count=+e,w()},pkind(e){a.pkind=e,w()},plang(e){a.plang=+e,w()},press(e){let t=+e,n=a.me;F("Seals.stamp",[t,dn()],n.cost[t-1],s=>(Xt(),o("pr.done",Un(s,"Seals").map(i=>"#"+i).join(", "))))},stone:()=>F("Seals.claimStone",[],0n,()=>(Xt(),o("pr.stoneDone"))),withdraw:()=>F("Seals.withdrawReferral",[],0n,()=>(yt(),"")),mtab(e){a.mtab=e,m("mbody",mt[e].enter()),w()},more(e){a.showAll.add(e),w()},bkind(e){a.bkind=+e,m("bfilter",ht()),w()},bfilter(e){a.bfilter=+e,m("bfilter",ht()),w()},placebid(){let e=vt();e.err||F("Market.bid",[a.bkind,e.filter,e.key,e.count],e.total,t=>{let n=t.ev.find(s=>s.e==="BidPlaced");return o("mk.placed",n?"#"+n.id:"")})},cancel:e=>F("Market.cancel",[BigInt(e)],0n,t=>{let n=t.ev.find(s=>s.e==="BidCancelled");return o("mk.cancelled","#"+e,B(n?n.refund:0n))}),skind(e){a.skind=+e,a.spick.clear(),H(["stamps","notes","stones"][a.skind]),w()},spick(e){let t=St(a.skind)||[];e==="all"?t.forEach(n=>a.spick.add(String(n.id))):e==="none"?a.spick.clear():e==="commons"?(a.spick.clear(),t.filter(n=>n.ink<4).forEach(n=>a.spick.add(String(n.id)))):a.spick.has(e)?a.spick.delete(e):a.spick.add(e),w()},sell(){let{p:e,min:t,bad:n}=ge();if(n||!e.rows.length||e.unmatched.length)return;let s=a.skind;F("Market.sell",[s,e.bidIds.map(BigInt),e.tokenIds.map(BigInt),t||e.minPrice],0n,i=>{let r=i.ev.filter(l=>l.e==="Sold");return a.spick.clear(),H(["stamps","notes","stones"][s],!0),o("mk.sold",r.length,B(de(r.reduce((l,c)=>l+c.price,0n))))})},wpick(e){a.pick.has(e)?a.pick.delete(e):a.pick.size<10&&a.pick.add(e),w()},wquick(e){a.pick.clear();let t=a.stamps||[];(e==="heavy"?t.slice().sort((s,i)=>i.ink-s.ink):e==="commons"?t.filter(s=>s.ink<4):[]).slice(0,10).forEach(s=>a.pick.add(String(s.id))),w()},weave(){let e=[...a.pick].map(BigInt);e.length===10&&F("Seals.weave",[e,a.wtitle],0n,t=>{let n=t.ev.find(i=>i.e==="Woven");a.pick.clear(),a.wtitle="",a.wstate="";let s=L("wtitle");return s&&(s.value=""),H("stamps",!0),a.notes&&H("notes",!0),n?o("wv.done","#"+n.noteId,n.weight):""})},npick(e){a.npick.has(e)?a.npick.delete(e):a.npick.add(e),w()},nall(){(a.notes||[]).forEach(e=>a.npick.add(String(e.id))),w()},claim(){let e=(a.notes||[]).filter(t=>a.npick.has(String(t.id))).map(t=>t.id);F("Seals.claim",[e],0n,t=>{let n=t.ev.find(s=>s.e==="Claimed");return a.npick.clear(),H("notes",!0),o("nt.claimed",B(n?n.amount:0n))})},close:()=>F("Seals.close",[],0n,()=>(setTimeout(Re,1500),"")),draw:()=>F("Seals.draw",[],0n,()=>(setTimeout(Re,1500),""))},on,rn={q:e=>a.q=e,pref(e){a.ref=U(e),he("tenseals.ref",a.ref||null),Fe()},bprice:e=>(a.bprice=e,w()),bcount:e=>(a.bcount=e,w()),bweight:e=>(a.bweight=e,w()),bname(e){a.bname=e,a.bnameState="",clearTimeout(on);let t=U(e);t&&we(t)&&(on=setTimeout(async()=>{try{let n=await x.owner(t);U(a.bname)===t&&(a.bnameState=n?"ok":"bad")}catch{}w()},350)),w()},smin:e=>(a.smin=e,w()),wtitle(e,t){if(e!==e.toLowerCase()){let n=t.selectionStart;t.value=e=e.toLowerCase(),t.setSelectionRange(n,n)}a.wtitle=e,os()}};document.addEventListener("click",e=>{let t=e.target.closest("[data-a]");if(!t||t.disabled)return;let n=fs[t.dataset.a];n&&(e.preventDefault(),n(t.dataset.v,t))});document.addEventListener("input",e=>{let t=e.target.closest("[data-in]");t&&rn[t.dataset.in]&&rn[t.dataset.in](t.value,t)});document.addEventListener("submit",e=>{if(!e.target.closest("[data-f]"))return;e.preventDefault();let n=U(a.q);location.hash==="#name/"+n?Bt(n):location.hash="#name/"+n});document.addEventListener("keydown",e=>{e.key==="Escape"&&(L("sheet").hidden=!0)});addEventListener("hashchange",wn);document.addEventListener("visibilitychange",()=>!document.hidden&&We());document.documentElement.classList.add("js");{let e=he("tenseals.lang"),t=String(navigator.language||"en").toLowerCase();lt(e||(t.startsWith("zh")?"zh":t.startsWith("ko")?"ko":"en")),a.plang=K.findIndex(s=>s[0]===De());let n=he("tenseals.ref");n&&we(n)&&(a.ref=n)}m("mark",it(44));ne&&ne.ribbon&&document.body.insertAdjacentHTML("afterbegin",ne.ribbon);wn();a.ref&&Fe();We();setInterval(()=>!document.hidden&&We(),3e4);setInterval(()=>{!document.hidden&&a.route.page==="notes"&&a.notes&&H("notes",!0)},6e4);setInterval(us,1e3);v.restore();})();
</script>
</body>
</html>
