and rocks 0-99 can never be burned. One of the two has to be 100 or above.`:null:`Rock #${T} isn't wrapped, so there is nothing there to merge.`}async function Or(){await ft("merge",async()=>{const T=BigInt(n(R)),K=await Zr(T).catch(()=>null);if(K)throw new Error(K);await Fd(wt(),T,BigInt(n(Y))),wt()>T&&m(U,Number(T),!0),m(R,"")})}async function Kr(T){const K=(C.account||"").toLowerCase(),[gt,M]=await Promise.all([Hn(C.account).catch(()=>null),Promise.all(T.map(Mt=>Ko(Mt).catch(()=>null)))]),$=(gt||"").toLowerCase(),bt=T.filter((Mt,Ht)=>{const j=(M[Ht]||"").toLowerCase();return j!==K&&j!==$});if(bt.length){const Mt=bt.slice(0,4).join(", #");return{issue:bt.length===1?`You don't hold raw dust rock #${Mt} on the v1 contract, so it cannot be absorbed.`:`${bt.length} of these are not yours on the v1 contract: #${Mt}${bt.length>4?", …":""}.`}}return{needGift:T.filter((Mt,Ht)=>(M[Ht]||"").toLowerCase()===K)}}async function Rr(){await ft("absorb",async()=>{const T=await Kr(n($t).ids).catch(()=>({needGift:n($t).ids}));if(T.issue)throw new Error(T.issue);await jd(n($t).ids,wt(),T.needGift),m(G,"")})}async function hr(){m(l,"loading…"),tt.history=null;try{m(l,await Id(wt()),!0)}catch(T){m(l,[],!0),tt.history=pe(T)}}async function Nr(){await D(),Array.isArray(n(l))&&await hr()}var Ke=bv(),Br=d(lt(Ke),2),Mr=o(Br),pr=o(Mr),sr=d(Mr,2),Hr=o(sr);js(Hr,{run:Nr,autoRun:D});var Te=d(Br,2);{var Pr=T=>{var K=Wf(),gt=o(K);E(M=>g(gt,M),[()=>Ro(n(a),{connected:!!C.account,endpoint:ut.rpcUrl})]),h(T,K)},Xr=T=>{var K=Ci();h(T,K)},ir=T=>{var K=Vf(),gt=o(K);{var M=j=>{var V=Df(),at=lt(V),Tt=o(at),Et=o(Tt);E(()=>g(Et,`Rock #${e.id??""} is dust.`)),h(j,V)},$=X(()=>Number(e.id)>=1e4),bt=j=>{var V=jf(),at=lt(V),Tt=o(at),Et=o(Tt),Rt=d(at,2);{var xt=Ut=>{var be=Ff(),fe=lt(be),wr=d(o(fe)),or=o(wr),Qr=d(fe,2),Be=o(Qr),mr=o(Be);E(()=>{Gt(wr,"href","#/rock/"+n(U)),g(or,`rock #${n(U)??""}`),Gt(Be,"href","#/rock/"+n(U)),g(mr,`View rock #${n(U)??""} →`)}),h(Ut,be)},Nt=Ut=>{var be=zf();h(Ut,be)};S(Rt,Ut=>{n(U)!=null?Ut(xt):Ut(Nt,-1)})}E(()=>g(Et,`Rock #${e.id??""} has been merged away.`)),h(j,V)},Mt=j=>{var V=qf(),at=lt(V),Tt=o(at),Et=o(Tt);E(()=>g(Et,`Rock #${e.id??""} is unwrapped.`)),h(j,V)},Ht=j=>{var V=Uf(),at=lt(V),Tt=o(at),Et=o(Tt);E(()=>g(Et,`Rock #${e.id??""} isn't wrapped yet.`)),h(j,V)};S(gt,j=>{n($)?j(M):n(r).rolled&&n(r).mass===0n?j(bt,1):n(r).rolled?j(Mt,2):j(Ht,-1)})}h(T,K)},_r=T=>{var K=mv(),gt=lt(K),M=o(gt),$=o(M);{let z=X(()=>n(r).meta?.image);zs($,{get id(){return e.id},fluid:!0,get src(){return n(z)}})}var bt=d(M,2),Mt=d(o(bt),2),Ht=o(Mt);{var j=z=>{var st=Er(),Ct=lt(st);Tr(Ct,17,()=>n(r).meta.attributes,Xt=>Xt.trait_type,(Xt,At)=>{var Pt=Zf(),ee=lt(Pt),Me=o(ee),O=d(ee,2),W=o(O);{var Q=re=>{var ne=Yf();let Xe;var It=o(ne);E(()=>{Xe=Ur(ne,1,"tag svelte-2mvwa1",null,Xe,{defined:n(At).value==="DEFINED"}),g(It,n(At).value)}),h(re,ne)},ge=re=>{var ne=Gf(),Xe=lt(ne),It=d(Xe),Wt=o(It);E(()=>{La(Xe,`background:${n(At).value??""}`),g(Wt,n(At).value)}),h(re,ne)},He=re=>{var ne=he();E(()=>g(ne,n(At).value)),h(re,ne)};S(W,re=>{n(At).trait_type==="Status"?re(Q):n(At).trait_type==="Color"?re(ge,1):re(He,-1)})}E(()=>g(Me,n(At).trait_type)),h(Xt,Pt)}),h(z,st)},V=z=>{var st=Kf(),Ct=d(lt(st)),Xt=o(Ct);let At;var Pt=o(Xt),ee=d(Ct,3),Me=o(ee),O=d(ee,3),W=o(O);E((Q,ge)=>{At=Ur(Xt,1,"tag svelte-2mvwa1",null,At,Q),g(Pt,ge),g(Me,n(r).mass),g(W,n(r).dust)},[()=>({defined:xi(e.id,1e4)==="DEFINED"}),()=>xi(e.id,1e4)]),h(z,st)};S(Ht,z=>{n(r).meta?z(j):z(V,-1)})}var at=d(Ht,3),Tt=o(at);{var Et=z=>{cs(z,{get address(){return n(r).owner},stacked:!0})},Rt=z=>{var st=he("not wrapped (no live token)");h(z,st)};S(Tt,z=>{n(r).owner?z(Et):z(Rt,-1)})}var xt=d(gt,4),Nt=o(xt),Ut=d(o(Nt),2);{var be=z=>{var st=Xf(),Ct=lt(st),Xt=o(Ct),At=d(Ct),Pt=d(At);{var ee=O=>{var W=he();E(Q=>g(W,`(private to ${Q??""})`),[()=>oe(n(r).listing.onlyTo)?"you":Ca(n(r).listing.onlyTo)]),h(O,W)},Me=X(()=>!jt(n(r).listing.onlyTo));S(Pt,O=>{n(Me)&&O(ee)})}E((O,W)=>{g(Xt,`${O??""} ETH`),g(At,` expires ${W??""} `)},[()=>_.formatEther(n(r).listing.price),()=>Bo(n(r).listing.expiry)]),h(z,st)},fe=z=>{var st=he("none");h(z,st)};S(Ut,z=>{n(F)?z(be):z(fe,-1)})}var wr=d(Nt,2),or=d(o(wr),2);{var Qr=z=>{var st=Oi(),Ct=lt(st),Xt=o(Ct),At=d(Ct);E((Pt,ee)=>{g(Xt,`${Pt??""} ETH`),g(At,` by ${ee??""}`)},[()=>_.formatEther(n(r).bid.amount),()=>oe(n(r).bid.bidder)?"you":Ca(n(r).bid.bidder)]),h(z,st)},Be=z=>{var st=he("none");h(z,st)};S(or,z=>{n(Z)?z(Qr):z(Be,-1)})}var mr=d(wr,2),ia=d(o(mr),2);{var oa=z=>{var st=Oi(),Ct=lt(st),Xt=o(Ct),At=d(Ct);E(Pt=>{g(Xt,`${Pt??""} ETH`),g(At,` (${n(r).sale.count??""} total)`)},[()=>_.formatEther(n(r).sale.price)]),h(z,st)},la=z=>{var st=he("never sold");h(z,st)};S(ia,z=>{n(r).sale.count>0n?z(oa):z(la,-1)})}var ca=d(xt,2);{var Pa=z=>{var st=Qf();h(z,st)},Wa=z=>{const st=It=>{var Wt=Er(),ie=lt(Wt);{var Pe=ye=>{var Qe=Er(),Ie=lt(Qe);{var br=We=>{var lr=he("Your wallet can batch, so this approves the market in the same confirmation.");h(We,lr)},gr=We=>{var lr=he("This asks you to approve the market first, so it is two confirmations.");h(We,lr)};S(Ie,We=>{n(i)?We(br):We(gr,-1)})}h(ye,Qe)};S(ie,ye=>{n(s)||ye(Pe)})}h(It,Wt)};var Ct=hv(),Xt=d(lt(Ct),2);{var At=It=>{var Wt=Jf(),ie=o(Wt),Pe=o(ie),ye=d(ie,2),Qe=o(ye),Ie=o(Qe),br=o(Ie),gr=d(ye,2);{var We=Le=>{var Je=Jr(),Wr=o(Je);E(()=>g(Wr,n(yt))),h(Le,Je)};S(gr,Le=>{n(yt)&&Le(We)})}var lr=d(gr,2);{var dn=Le=>{var Je=$e(),Wr=o(Je);E(()=>g(Wr,tt.buy)),h(Le,Je)};S(lr,Le=>{tt.buy&&Le(dn)})}E((Le,Je)=>{g(Pe,`Buys this rock for ${Le??""} ETH and sends it to your wallet.`),Ie.disabled=!!n(yt)||H.buy,g(br,Je)},[()=>_.formatEther(n(r).listing.price),()=>H.buy?"buying…":"Buy for "+_.formatEther(n(r).listing.price)+" ETH"]),ct("click",Ie,()=>ft("buy",()=>Qo(wt()))),h(It,Wt)};S(Xt,It=>{n(F)&&!n(B)&&It(At)})}var Pt=d(Xt,2);{var ee=It=>{var Wt=iv(),ie=o(Wt),Pe=d(o(ie),3);{var ye=it=>{var vt=$f(),Bt=lt(vt),ve=o(Bt),De=d(Bt);E((Wn,vn)=>{g(ve,`Your ${Wn??""} ETH is locked here now.`),g(De,` Raising your bid costs only the difference. Taking it back sends the whole
${vn??""} ETH to your wallet in one transaction.`)},[()=>_.formatEther(n(r).bid.amount),()=>_.formatEther(n(r).bid.amount)]),h(it,vt)},Qe=it=>{var vt=tv(),Bt=o(vt);E(ve=>g(Bt,`The current bid is ${ve??""} ETH, so yours has to beat
it.`),[()=>_.formatEther(n(r).bid.amount)]),h(it,vt)};S(Pe,it=>{n(_t)?it(ye):n(Z)&&it(Qe,1)})}var Ie=d(ie,2),br=o(Ie);{var gr=it=>{var vt=ev(),Bt=o(vt),ve=d(o(Bt));Ce(ve,()=>n(c),De=>m(c,De)),h(it,vt)};S(br,it=>{n(B)||it(gr)})}var We=d(br,2),lr=o(We);{var dn=it=>{var vt=rv(),Bt=o(vt);E(ve=>{vt.disabled=ve,g(Bt,n(St)?"placing…":"Make / raise offer")},[()=>!ke(n(c))||!!n(mt)?.issue||n(St)||H.bid]),ct("click",vt,Lt),h(it,vt)};S(lr,it=>{n(B)||it(dn)})}var Le=d(lr,2);{var Je=it=>{var vt=Ri(),Bt=o(vt);E(()=>{vt.disabled=H.bid||n(St),g(Bt,H.bid?"withdrawing…":"Withdraw your bid")}),ct("click",vt,()=>ft("bid",()=>Jo(wt()))),h(it,vt)};S(Le,it=>{n(_t)&&it(Je)})}var Wr=d(Ie,2);{var Ua=it=>{var vt=Jr(),Bt=o(vt);E(()=>g(Bt,n(mt).issue)),h(it,vt)},fn=it=>{var vt=nv(),Bt=d(o(vt)),ve=o(Bt),De=d(Bt);E((Wn,vn)=>{g(ve,`${Wn??""} ETH`),g(De,`, since you already have
${vn??""} ETH locked up.`)},[()=>_.formatEther(n(mt).send),()=>_.formatEther(n(mt).now)]),h(it,vt)},Va=it=>{var vt=av(),Bt=d(o(vt)),ve=o(Bt);E(De=>g(ve,`${De??""} ETH`),[()=>_.formatEther(n(mt).total)]),h(it,vt)},Ya=it=>{var vt=sv(),Bt=d(o(vt)),ve=o(Bt);E(De=>g(ve,`${De??""} ETH`),[()=>_.formatEther(n(mt).total)]),h(it,vt)};S(Wr,it=>{n(mt)?.issue?it(Ua):n(mt)?.kind==="raise"?it(fn,1):n(mt)?.kind==="outbid"?it(Va,2):n(mt)?.kind==="first"&&it(Ya,3)})}var Ga=d(Wr,2);{var va=it=>{var vt=$e(),Bt=o(vt);E(()=>g(Bt,tt.bid)),h(it,vt)};S(Ga,it=>{tt.bid&&it(va)})}h(It,Wt)};S(Pt,It=>{(!n(B)||n(_t))&&It(ee)})}var Me=d(Pt,2);{var O=It=>{var Wt=vv(),ie=lt(Wt),Pe=o(ie),ye=d(o(Pe));st(ye);var Qe=d(Pe,2),Ie=o(Qe),br=o(Ie),gr=d(o(br)),We=d(gr,2),lr=d(br,2),dn=o(lr),Le=o(dn),Je=d(dn,2);{var Wr=L=>{var q=ov(),ot=d(o(q));Ce(ot,()=>n(p),Fe=>m(p,Fe)),h(L,q)};S(Je,L=>{n(b)&&L(Wr)})}var Ua=d(Ie,2),fn=o(Ua),Va=o(fn),Ya=d(fn,2);{var Ga=L=>{var q=Ri(),ot=o(q);E(()=>{q.disabled=H.cancel||H.list,g(ot,H.cancel?"cancelling…":"Cancel listing")}),ct("click",q,()=>ft("cancel",()=>Xo(wt()))),h(L,q)};S(Ya,L=>{n(F)&&L(Ga)})}var va=d(Qe,2);{var it=L=>{var q=Jr(),ot=o(q);E(()=>g(ot,n(te))),h(L,q)};S(va,L=>{n(te)&&L(it)})}var vt=d(va,2);{var Bt=L=>{var q=Er(),ot=lt(q);{var Fe=kt=>{var Vt=Ni();h(kt,Vt)},ze=kt=>{var Vt=lv(),hn=d(o(Vt)),Dn=o(hn);E(()=>g(Dn,n(w).address)),h(kt,Vt)},yr=kt=>{var Vt=Bi();h(kt,Vt)};S(ot,kt=>{n(v)?kt(Fe):n(w)?kt(ze,1):kt(yr,-1)})}h(L,q)},ve=X(()=>n(b)&&ke(n(p))&&!Fr(n(p).trim()));S(vt,L=>{n(ve)&&L(Bt)})}var De=d(vt,2);{var Wn=L=>{var q=Jr(),ot=o(q);E(()=>g(ot,n(J))),h(L,q)};S(De,L=>{n(J)&&L(Wn)})}var vn=d(De,2);{var nl=L=>{var q=$e(),ot=o(q);E(()=>g(ot,tt.list)),h(L,q)};S(vn,L=>{tt.list&&L(nl)})}var al=d(vn,2);{var sl=L=>{var q=$e(),ot=o(q);E(()=>g(ot,tt.cancel)),h(L,q)};S(al,L=>{tt.cancel&&L(sl)})}var qs=d(ie,2);{var il=L=>{var q=cv(),ot=o(q),Fe=o(ot),ze=d(Fe);{var yr=kr=>{var pn=he("and cancels your listing");h(kr,pn)},kt=X(()=>n(F)&&oe(n(r).listing.seller));S(ze,kr=>{n(kt)&&kr(yr)})}var Vt=d(ze,2);st(Vt);var hn=d(ot,2),Dn=o(hn),ts=o(Dn),Fl=o(ts),zl=d(hn,2);{var jl=kr=>{var pn=$e(),ql=o(pn);E(()=>g(ql,tt.accept)),h(kr,pn)};S(zl,kr=>{tt.accept&&kr(jl)})}E((kr,pn)=>{g(Fe,`Sells this rock to the current bidder for ${kr??""} ETH`),ts.disabled=H.accept,g(Fl,pn)},[()=>_.formatEther(n(r).bid.amount),()=>H.accept?"accepting…":"Accept "+_.formatEther(n(r).bid.amount)+" ETH"]),ct("click",ts,se),h(L,q)};S(qs,L=>{n(Z)&&L(il)})}var Us=d(qs,4),Vs=d(o(Us),2),Ys=o(Vs),Gs=o(Ys),ol=d(o(Gs)),ll=d(Gs,2),Zs=d(o(ll)),Za=o(Zs);Za.value=Za.__value="0";var Ka=d(Za);Ka.value=Ka.__value="1";var Ks=d(Ka);Ks.value=Ks.__value="2";var cl=d(Ys,2),Xa=o(cl),ul=o(Xa),Xs=d(Vs,2);{var dl=L=>{var q=Jr(),ot=o(q);E(()=>g(ot,n(le))),h(L,q)};S(Xs,L=>{n(le)&&L(dl)})}var fl=d(Xs,2);{var vl=L=>{var q=$e(),ot=o(q);E(()=>g(ot,tt.merge)),h(L,q)};S(fl,L=>{tt.merge&&L(vl)})}var Qs=d(Us,2),Js=o(Qs),hl=d(o(Js),2),$s=d(Js,2),ti=o($s),pl=o(ti),_l=d(o(pl)),wl=d(ti,2),Qa=o(wl),ml=o(Qa),ei=d($s,2);{var bl=L=>{var q=Jr(),ot=o(q);E(()=>g(ot,n($t).issue)),h(L,q)},gl=L=>{var q=uv(),ot=o(q),Fe=d(ot);{var ze=kt=>{var Vt=he("Your wallet can batch, so this is one confirmation.");h(kt,Vt)},yr=kt=>{var Vt=he();E(()=>g(Vt,`${n($t).ids.length*2} transactions, since your wallet cannot batch.`)),h(kt,Vt)};S(Fe,kt=>{n(i)?kt(ze):kt(yr,-1)})}E(kt=>g(ot,`${n($t).ids.length??""} dust ${n($t).ids.length===1?"rock":"rocks"},
taking this rock's Dust from ${n(r).dust??""} to ${kt??""}. `),[()=>n(r).dust+BigInt(n($t).ids.length)]),h(L,q)};S(ei,L=>{n($t).issue?L(bl):n($t).ids.length&&L(gl,1)})}var yl=d(ei,2);{var kl=L=>{var q=$e(),ot=o(q);E(()=>g(ot,tt.absorb)),h(L,q)};S(yl,L=>{tt.absorb&&L(kl)})}var ri=d(Qs,4),ni=d(o(ri),2),xl=o(ni),Ja=o(xl),El=o(Ja),Sl=d(ni,2);{var Tl=L=>{var q=$e(),ot=o(q);E(()=>g(ot,tt.unwrap)),h(L,q)};S(Sl,L=>{tt.unwrap&&L(Tl)})}var Il=d(ri,4),ai=o(Il),Ll=d(o(ai));{var Al=L=>{var q=dv(),ot=d(lt(q));{var Fe=ze=>{var yr=he(`, in a second
transaction`);h(ze,yr)};S(ot,ze=>{n(i)||ze(Fe)})}h(L,q)},Cl=X(()=>n(F)&&oe(n(r).listing.seller));S(Ll,L=>{n(Cl)&&L(Al)})}var si=d(ai,2),ii=o(si),Ol=o(ii),Rl=d(o(Ol)),Nl=d(ii,2),$a=o(Nl),Bl=o($a),oi=d(si,2);{var Ml=L=>{var q=Er(),ot=lt(q);{var Fe=kt=>{var Vt=Ni();h(kt,Vt)},ze=kt=>{var Vt=fv(),hn=d(o(Vt)),Dn=o(hn);E(()=>g(Dn,n(I).address)),h(kt,Vt)},yr=kt=>{var Vt=Bi();h(kt,Vt)};S(ot,kt=>{n(k)?kt(Fe):n(I)?kt(ze,1):kt(yr,-1)})}h(L,q)},Hl=X(()=>ke(n(y))&&!Fr(n(y).trim()));S(oi,L=>{n(Hl)&&L(Ml)})}var li=d(oi,2);{var Pl=L=>{var q=Jr(),ot=o(q);E(()=>g(ot,n(qt))),h(L,q)};S(li,L=>{n(qt)&&L(Pl)})}var Wl=d(li,2);{var Dl=L=>{var q=$e(),ot=o(q);E(()=>g(ot,tt.transfer)),h(L,q)};S(Wl,L=>{tt.transfer&&L(Dl)})}E(L=>{fn.disabled=L,g(Va,H.list?"listing…":n(F)?"Update listing":n(b)?"List privately":"List"),Xa.disabled=!n(Cr)||H.merge,g(ul,H.merge?"merging…":"Merge"),g(hl,` (max
${No} at a time).`),Qa.disabled=!n(N)||H.absorb,g(ml,H.absorb?"absorbing…":"Absorb into #"+e.id),Ja.disabled=H.unwrap,g(El,H.unwrap?"unwrapping…":"Unwrap"),$a.disabled=!n(de)||!!n(qt)||H.transfer,g(Bl,H.transfer?"sending…":"Transfer")},[()=>!ke(n(u))||!!n(te)||!!n(J)||n(b)&&!n(P)||H.list||H.cancel]),Ce(gr,()=>n(u),L=>m(u,L)),Ce(We,()=>n(f),L=>m(f,L)),To(Le,()=>n(b),L=>m(b,L)),ct("click",fn,Ne),Ce(ol,()=>n(R),L=>m(R,L)),Bs(Zs,()=>n(Y),L=>m(Y,L)),ct("click",Xa,Or),Ce(_l,()=>n(G),L=>m(G,L)),ct("click",Qa,Rr),ct("click",Ja,()=>ft("unwrap",()=>Md(wt()))),Ce(Rl,()=>n(y),L=>m(y,L)),ct("click",$a,me),h(It,Wt)};S(Me,It=>{n(B)&&It(O)})}var W=d(Me,2),Q=d(o(W),2),ge=o(Q),He=o(ge),re=o(He),ne=d(Q,2);{var Xe=It=>{var Wt=$e(),ie=o(Wt);E(()=>g(ie,tt.prune)),h(It,Wt)};S(ne,It=>{tt.prune&&It(Xe)})}E(()=>{He.disabled=H.prune,g(re,H.prune?"pruning…":"Prune this listing")}),ct("click",He,()=>ft("prune",()=>Vd(wt()))),h(z,Ct)};S(ca,z=>{C.account?z(Wa,-1):z(Pa)})}var un=d(ca,2),Da=d(o(un));rl(Da,{text:"Every sale of this rock, newest first."});var Pn=d(un,2),Fa=o(Pn),ua=d(Pn,2);{var za=z=>{var st=$e(),Ct=o(st);E(()=>g(Ct,tt.history)),h(z,st)};S(ua,z=>{tt.history&&z(za)})}var ja=d(ua,2);{var da=z=>{var st=Ci();h(z,st)},fa=z=>{var st=Er(),Ct=lt(st);{var Xt=Pt=>{var ee=_v(),Me=o(ee),O=d(o(Me));Tr(O,21,()=>n(l),W=>W.block+":"+W.buyer,(W,Q)=>{var ge=pv(),He=o(ge),re=o(He),ne=d(He),Xe=o(ne),It=d(ne),Wt=o(It),ie=d(It),Pe=o(ie);cs(Pe,{get address(){return n(Q).seller}});var ye=d(ie),Qe=o(ye);cs(Qe,{get address(){return n(Q).buyer}}),E(Ie=>{g(re,n(Q).block),g(Xe,`${Ie??""} ETH`),g(Wt,n(Q).kind)},[()=>_.formatEther(n(Q).price)]),h(W,ge)}),h(Pt,ee)},At=Pt=>{var ee=wv();h(Pt,ee)};S(Ct,Pt=>{n(l).length?Pt(Xt):Pt(At,-1)})}h(z,st)},qa=X(()=>Array.isArray(n(l)));S(ja,z=>{n(l)==="loading…"?z(da):n(qa)&&z(fa,1)})}ct("click",Fa,hr),h(T,K)};S(Te,T=>{n(a)?T(Pr):n(r)?n(r).owner?T(_r,-1):T(ir,2):T(Xr,1)})}E(()=>g(pr,`Rock #${e.id??""}`)),h(t,Ke),Ze()}Yr(["click"]);var yv=x('<div class="controls"><!></div>'),kv=x("<p>Connect a wallet to see your rocks, orders, and proceeds.</p>"),xv=x("<p> </p>"),Ev=x('<span class="addr svelte-1p3nwux"> </span>'),wa=x('<p class="failed"> </p>'),Sv=x('<span class="tag svelte-1p3nwux">private</span>'),Tv=x('<li class="svelte-1p3nwux"><span class="svelte-1p3nwux"><a> </a> <span class="mono"> </span> <span class="muted"> </span> <!></span> <button type="button"> </button></li>'),Iv=x('<div class="action-card"><p class="note">Rocks you have up for sale right now. Cancelling takes one off the market.</p> <ul class="orders svelte-1p3nwux"></ul> <!></div>'),Mi=x("<p>none</p>"),Lv=x('<li class="svelte-1p3nwux"><span class="svelte-1p3nwux"><a> </a> <span class="mono"> </span></span> <button type="button"> </button></li>'),Av=x('<div class="action-card"><p class="note">Withdrawable ETH you have locked up as bids.</p> <ul class="orders svelte-1p3nwux"></ul> <!></div>'),Cv=x('<p class="muted">scanning…</p>'),Ov=x('<div class="pager"><button type="button">← Prev</button> <span class="where"> </span> <button type="button">Next →</button></div>'),Rv=x('<p class="muted count svelte-1p3nwux"> </p> <div class="rock-grid"></div> <!>',1),Nv=x('<p class="muted">no wrapped rocks found for this address</p>'),Bv=x('<p>Address: <span class="addr svelte-1p3nwux"> </span></p> <p>Warden: <!></p> <h2>Proceeds</h2> <div class="action-card"><p class="note">Withdrawable ETH the market owes you: rocks you sold, and bids you were outbid on.</p> <div class="row"><div class="fields">Owed to you: <strong> </strong></div> <div class="actions"><button type="button" class="primary"> </button></div></div> <!></div> <h2>Your listings</h2> <!> <h2>Your bids</h2> <!> <h2>Your rocks</h2> <div class="action-card"><p class="note">Finds every rock this address holds. This can take some time.</p> <div class="row"><div class="actions"><button type="button"> </button></div></div> <!></div> <!>',1),Mv=x('<div class="head"><h1>Account</h1> <!></div> <!>',1);function Hv(t,e){Ge(e,!0);let r=A(null),a=A(null),s=A(zt([])),i=A(zt([])),l=A(null),c=A(!1),u=A(null);const f="0x0000000000000000000000000000000000000000";ue(()=>{C.account,C.account&&b()});async function b(){m(u,null);try{const H=C.account.toLowerCase(),[ft,wt,oe]=await Promise.all([Ed(C.account),Hn(C.account),Td()]);m(r,ft,!0),m(a,wt,!0),m(s,oe.filter(le=>le.listing&&le.listing.seller.toLowerCase()===H),!0),m(i,oe.filter(le=>le.bid&&le.bid.amount>0n&&le.bid.bidder.toLowerCase()===H),!0)}catch(H){m(u,H.message,!0)}}const p=zt({});let w=A(!1);async function v(){if(!n(w)){p.withdraw=null,m(w,!0);try{await Ud(),await b()}catch(H){p.withdraw=pe(H)}finally{m(w,!1)}}}let y=A(null);async function I(H){p.bid=null,m(y,H,!0);try{await Jo(BigInt(H)),await b()}catch(ft){p.bid=pe(ft)}m(y,null)}let k=A(null);async function R(H){p.listing=null,m(k,H,!0);try{await Xo(BigInt(H)),await b()}catch(ft){p.listing=pe(ft)}m(k,null)}async function Y(){m(c,!0),p.rocks=null;try{m(l,await Cd(C.account),!0)}catch(H){m(l,[],!0),p.rocks=pe(H)}m(c,!1),m(nt,0)}async function G(){$o(),await b(),n(l)!==null&&await Y()}const D=48;let nt=A(0),B=A(zt([]));const F=X(()=>n(l)?Math.max(1,Math.ceil(n(l).length/D)):1),Z=X(()=>n(l)?n(l).slice(n(nt)*D,(n(nt)+1)*D):[]);ue(()=>{const H=n(Z);let ft=!0;if(!H.length){m(B,[],!0);return}return Zo(H).then(wt=>{ft&&m(B,wt,!0)}).catch(()=>{}),()=>{ft=!1}});var _t=Mv(),U=lt(_t),yt=d(o(U),2);{var mt=H=>{var ft=yv(),wt=o(ft);js(wt,{run:G,autoRun:b}),h(H,ft)};S(yt,H=>{C.account&&H(mt)})}var St=d(U,2);{var Lt=H=>{var ft=kv();h(H,ft)},se=H=>{var ft=xv(),wt=o(ft);E(()=>g(wt,`Couldn't load: ${n(u)??""}`)),h(H,ft)},tt=H=>{var ft=Bv(),wt=lt(ft),oe=d(o(wt)),le=o(oe),Cr=d(wt,2),$t=d(o(Cr));{var N=M=>{var $=Ev(),bt=o($);E(()=>g(bt,n(a))),h(M,$)},P=X(()=>n(a)&&!jt(n(a))),J=M=>{var $=he("none yet (create one on the Wrap page)");h(M,$)};S($t,M=>{n(P)?M(N):M(J,-1)})}var Kt=d(Cr,4),ce=d(o(Kt),2),te=o(ce),Ne=d(o(te)),de=o(Ne),qt=d(te,2),me=o(qt),Zr=o(me),Or=d(ce,2);{var Kr=M=>{var $=wa(),bt=o($);E(()=>g(bt,p.withdraw)),h(M,$)};S(Or,M=>{p.withdraw&&M(Kr)})}var Rr=d(Kt,4);{var hr=M=>{var $=Iv(),bt=d(o($),2);Tr(bt,21,()=>n(s),j=>j.id,(j,V)=>{var at=Tv(),Tt=o(at),Et=o(Tt),Rt=o(Et),xt=d(Et,2),Nt=o(xt),Ut=d(xt,2),be=o(Ut),fe=d(Ut,2);{var wr=Be=>{var mr=Sv();h(Be,mr)};S(fe,Be=>{n(V).listing.onlyTo&&n(V).listing.onlyTo!==f&&Be(wr)})}var or=d(Tt,2),Qr=o(or);E((Be,mr)=>{Gt(Et,"href","#/rock/"+n(V).id),g(Rt,`#${n(V).id??""}`),g(Nt,`${Be??""} ETH`),g(be,`expires ${mr??""}`),or.disabled=n(k)===n(V).id,g(Qr,n(k)===n(V).id?"cancelling…":"Cancel listing")},[()=>_.formatEther(n(V).listing.price),()=>Bo(n(V).listing.expiry)]),ct("click",or,()=>R(n(V).id)),h(j,at)});var Mt=d(bt,2);{var Ht=j=>{var V=wa(),at=o(V);E(()=>g(at,p.listing)),h(j,V)};S(Mt,j=>{p.listing&&j(Ht)})}h(M,$)},Nr=M=>{var $=Mi();h(M,$)};S(Rr,M=>{n(s).length?M(hr):M(Nr,-1)})}var Ke=d(Rr,4);{var Br=M=>{var $=Av(),bt=d(o($),2);Tr(bt,21,()=>n(i),j=>j.id,(j,V)=>{var at=Lv(),Tt=o(at),Et=o(Tt),Rt=o(Et),xt=d(Et,2),Nt=o(xt),Ut=d(Tt,2),be=o(Ut);E(fe=>{Gt(Et,"href","#/rock/"+n(V).id),g(Rt,`#${n(V).id??""}`),g(Nt,`${fe??""} ETH`),Ut.disabled=n(y)===n(V).id,g(be,n(y)===n(V).id?"withdrawing…":"Withdraw bid")},[()=>_.formatEther(n(V).bid.amount)]),ct("click",Ut,()=>I(n(V).id)),h(j,at)});var Mt=d(bt,2);{var Ht=j=>{var V=wa(),at=o(V);E(()=>g(at,p.bid)),h(j,V)};S(Mt,j=>{p.bid&&j(Ht)})}h(M,$)},Mr=M=>{var $=Mi();h(M,$)};S(Ke,M=>{n(i).length?M(Br):M(Mr,-1)})}var pr=d(Ke,4),sr=d(o(pr),2),Hr=o(sr),Te=o(Hr),Pr=o(Te),Xr=d(sr,2);{var ir=M=>{var $=wa(),bt=o($);E(()=>g(bt,p.rocks)),h(M,$)};S(Xr,M=>{p.rocks&&M(ir)})}var _r=d(pr,2);{var T=M=>{var $=Cv();h(M,$)},K=M=>{var $=Rv(),bt=lt($),Mt=o(bt),Ht=d(bt,2);Tr(Ht,21,()=>n(B),at=>at.id,(at,Tt)=>{el(at,{get row(){return n(Tt)}})});var j=d(Ht,2);{var V=at=>{var Tt=Ov(),Et=o(Tt),Rt=d(Et,2),xt=o(Rt),Nt=d(Rt,2);E(()=>{Et.disabled=n(nt)===0,g(xt,`Page ${n(nt)+1} of ${n(F)??""} · ${n(l).length??""} rocks`),Nt.disabled=n(nt)>=n(F)-1}),ct("click",Et,()=>m(nt,Math.max(0,n(nt)-1),!0)),ct("click",Nt,()=>m(nt,Math.min(n(F)-1,n(nt)+1),!0)),h(at,Tt)};S(j,at=>{n(F)>1&&at(V)})}E(()=>g(Mt,`${n(l).length??""} rock${n(l).length===1?"":"s"} held by this address.`)),h(M,$)},gt=M=>{var $=Nv();h(M,$)};S(_r,M=>{n(c)?M(T):n(l)&&n(l).length?M(K,1):n(l)&&M(gt,2)})}E(M=>{g(le,C.account),g(de,M),me.disabled=n(w)||!n(r)||n(r)===0n,g(Zr,n(w)?"withdrawing…":"Withdraw"),Te.disabled=n(c),g(Pr,n(c)?"scanning…":n(l)===null?"Load my rocks":"Reload")},[()=>n(r)!=null?_.formatEther(n(r))+" ETH":"…"]),ct("click",me,v),ct("click",Te,Y),h(H,ft)};S(St,H=>{C.account?n(u)?H(se,1):H(tt,-1):H(Lt)})}h(t,_t),Ze()}Yr(["click"]);var Pv=x("<p>Connect a wallet to wrap a rock or migrate one from an old wrapper.</p>"),Wv=x('<div class="done svelte-1qq2otu"><a class="thumb svelte-1qq2otu"><!></a> <div class="txt svelte-1qq2otu"><p class="svelte-1qq2otu"><strong> </strong></p> <p class="muted svelte-1qq2otu">It is a live token now: you can list it, accept bids on it, or merge it.</p> <div class="actions svelte-1qq2otu"><a class="cta svelte-1qq2otu"> </a> <button type="button">Wrap another</button></div></div></div>'),Dv=x('<div class="stalled svelte-1qq2otu"><p class="svelte-1qq2otu"><strong>Not finished.</strong></p> <p class="muted svelte-1qq2otu"> </p> <p class="svelte-1qq2otu"><button type="button">Dismiss</button></p></div>'),Fv=x('<div class="actions"><button type="button" class="primary"> </button></div>'),mn=x('<p class="failed"> </p>'),jn=x('<p class="note bad"> </p>'),zv=x(`<!> <h2>1. Your warden</h2> <div class="action-card"><p class="note">Think of it as a safe, which rocks pass through on the way to being wrapped. You only need to create it
once.</p> <div class="row"><div class="fields">Warden: <span class="mono addr svelte-1qq2otu"> </span></div> <!></div> <!></div> <h2>2. Wrap a raw rock</h2> <div class="action-card"><p class="note">Turns a 2017 rock you own into a token. Type its id, 0 to 9999.</p> <div class="row"><div class="fields"><label>Wrap rock #<input type="number" min="0" max="9999" size="6"/></label></div> <div class="actions"><button type="button" class="primary"> </button></div></div> <!> <!></div> <h2>Or migrate from an old wrapper</h2> <div class="action-card"><p class="note">Moves a rock from an old GenesisRocks wrapper into this one.</p> <div class="row"><div class="fields"><label>Migrate rock #<input type="number" min="0" max="9999" size="6"/></label></div> <div class="actions"><button type="button" class="primary"> </button></div></div> <!> <!></div> <details><summary>Advanced / recovery</summary> <p><small>Individual steps, for when a combined action stopped halfway or a rock is stuck in your warden.</small></p> <div class="action-card"><p class="note">Sends a raw 2017 rock you own into your warden without wrapping it. Use this if a wrap stopped
after the price step.</p> <div class="row"><div class="fields"><label>Gift raw rock #<input type="number" min="0" size="6"/></label> into warden</div> <div class="actions"><button type="button"> </button></div></div> <!> <!></div> <div class="action-card"><p class="note">Makes the token for a rock that already reached your warden. Use this if a wrap stopped after
the rock was sent.</p> <div class="row"><div class="fields"><label>Wrap a rock already in your warden #<input type="number" min="0" max="9999" size="6"/></label></div> <div class="actions"><button type="button"> </button></div></div> <!> <!></div> <div class="action-card"><p class="note">Sends a rock back out of your warden to your own address, if one ended up stuck there
unwrapped.</p> <div class="row"><div class="fields"><label>Rescue a rock stuck in your warden #<input type="number" min="0" size="6"/></label></div> <div class="actions"><button type="button"> </button></div></div> <!> <!></div></details>`,1),jv=x("<h1>Wrap</h1> <!>",1);function qv(t,e){Ge(e,!0);let r=A(null),a=A(!1),s=A(null),i=A(null),l=A(null),c=A(""),u=A(""),f=A(""),b=A(""),p=A("");ue(()=>{C.account,C.account?(w(
st Oa=new Map,gn=new Map;let ks=null;function hf(){if(ks=null,!gn.size)return;const t=[...gn.keys()],e=t.map(r=>gn.get(r));gn.clear(),yd(t).then(r=>{t.forEach((a,s)=>{const i=r[a]??null;vf(a,i),e[s].forEach(l=>l(i))})}).catch(()=>t.forEach((r,a)=>e[a].forEach(s=>s(null))))}function tl(t,e){const r=gn.get(t)??new Set;r.add(e),gn.set(t,r),clearTimeout(ks),ks=setTimeout(hf,df)}function pf(){return zn||(zn=new IntersectionObserver(t=>{for(const e of t){if(!e.isIntersecting)continue;const r=Oa.get(e.target);r&&(zn.unobserve(e.target),Oa.delete(e.target),tl(r.id,r.deliver))}},{rootMargin:uf}),zn)}function _f(t,e,r){if(en.has(e))return r(en.get(e)),()=>{};if(typeof IntersectionObserver>"u")return tl(e,r),()=>{};const a=pf();return Oa.set(t,{id:e,deliver:r}),a.observe(t),()=>{Oa.delete(t),a.unobserve(t)}}var wf=x('<img class="art svelte-m95sb2"/>'),mf=x('<span class="art art--empty svelte-m95sb2"> </span>');function zs(t,e){Ge(e,!0);let r=dr(e,"size",3,128),a=dr(e,"fluid",3,!1),s=dr(e,"src",3,null),i=A(null),l=A(null),c=A("loading…"),u=null;ue(()=>{const y=s()??"#"+e.id;if(y===u)return;if(s()){u=y,m(l,s());return}if(!n(i))return;u=y;let I=!0;m(l,null),m(c,"loading…");const k=_f(n(i),e.id,R=>{if(I){if(R){m(l,R,!0);return}zo(BigInt(e.id)).then(Y=>{I&&m(l,JSON.parse(atob(Y.slice(Y.indexOf(",")+1))).image,!0)}).catch(()=>{I&&m(c,"no art")})}});return()=>{I=!1,k()}});const f=X(()=>a()?"width:100%;aspect-ratio:1":`width:${r()}px;height:${r()}px`);var b=Er(),p=lt(b);{var w=y=>{var I=wf();E(()=>{Gt(I,"src",n(l)),Gt(I,"alt","Rock #"+e.id),La(I,n(f))}),h(y,I)},v=y=>{var I=mf(),k=o(I);Aa(I,R=>m(i,R),()=>n(i)),E(()=>{La(I,n(f)),g(k,n(c))}),h(y,I)};S(p,y=>{n(l)?y(w):y(v,-1)})}h(t,b),Ze()}var bf=x('<span class="tag svelte-3ie79d">private</span>'),gf=x('<button type="button" class="primary buy svelte-3ie79d"> </button>'),yf=x('<div class="card svelte-3ie79d"><a class="art svelte-3ie79d"><!></a> <div class="meta svelte-3ie79d"><a class="id svelte-3ie79d"> </a> <!></div> <div class="row svelte-3ie79d"><span class="price svelte-3ie79d"> </span> <!></div> <div class="row sub2 svelte-3ie79d"><span> </span> <span> </span></div></div>');function el(t,e){Ge(e,!0);let r=dr(e,"buy",3,null);const a=X(()=>!!(e.row.listing&&e.row.listing.price>0n)),s=X(()=>!!(e.row.listing&&!jt(e.row.listing.onlyTo))),i=X(()=>C.account?Oo(e.row.listing,C.account):"Connect a wallet to buy.");let l=A(!1);async function c(){if(!(n(l)||!r())){m(l,!0);try{await r()(e.row.id)}finally{m(l,!1)}}}var u=yf(),f=o(u),b=o(f);zs(b,{get id(){return e.row.id},fluid:!0});var p=d(f,2),w=o(p),v=o(w),y=d(w,2);{var I=U=>{var yt=bf();h(U,yt)};S(y,U=>{n(s)&&U(I)})}var k=d(p,2),R=o(k),Y=o(R),G=d(R,2);{var D=U=>{var yt=gf(),mt=o(yt);E(()=>{yt.disabled=!!n(i)||n(l),Gt(yt,"title",n(i)??""),g(mt,n(l)?"buying…":"Buy")}),ct("click",yt,c),h(U,yt)};S(G,U=>{n(a)&&r()&&U(D)})}var nt=d(k,2),B=o(nt),F=o(B),Z=d(B,2),_t=o(Z);E((U,yt,mt)=>{Gt(f,"href","#/rock/"+e.row.id),Gt(f,"aria-label","Rock #"+e.row.id),Gt(w,"href","#/rock/"+e.row.id),g(v,`#${e.row.id??""}`),g(Y,U),g(F,yt),g(_t,mt)},[()=>n(a)?_.formatEther(e.row.listing.price)+" ETH":"–",()=>e.row.bid&&e.row.bid.amount>0n?"bid "+_.formatEther(e.row.bid.amount)+" ETH":"",()=>n(a)?"exp "+nd(e.row.listing.expiry):""]),h(t,u),Ze()}Yr(["click"]);var kf=x('<span class="info svelte-kuwzzo"><button type="button" class="mark svelte-kuwzzo">i</button> <span role="tooltip"> </span></span>');function rl(t,e){Ge(e,!0);let r=dr(e,"label",3,"More information"),a=dr(e,"align",3,"left"),s,i=A(0);function l(){if(!s)return;const w=s.getBoundingClientRect(),v=w.left-n(i),y=w.right-n(i),I=document.documentElement.clientWidth,k=8;let R=0;v<k?R=Math.round(k-v):y>I-k&&(R=Math.round(I-k-y)),R!==n(i)&&m(i,R,!0)}ue(()=>{e.text,a(),l(),addEventListener("resize",l);const w=new ResizeObserver(l);return w.observe(document.body),()=>{removeEventListener("resize",l),w.disconnect()}});var c=kf(),u=o(c),f=d(u,2);let b;var p=o(f);Aa(f,w=>s=w,()=>s),E(()=>{Gt(u,"aria-label",r()),b=Ur(f,1,"bubble svelte-kuwzzo",null,b,{right:a()==="right"}),La(f,n(i)?`translate: ${n(i)}px`:""),g(p,e.text)}),yo("pointerenter",c,l),ct("focusin",c,l),h(t,c),Ze()}Yr(["focusin"]);class xf{#t=A(!1);get on(){return n(this.#t)}set on(e){m(this.#t,e,!0)}seconds=15}const wn=new xf;var Ef=x('<span class="refresh svelte-1kspdzn"><label class="check svelte-1kspdzn"><input type="checkbox" class="svelte-1kspdzn"/> Auto-refresh</label> <!> <span class="said svelte-1kspdzn" role="status"> </span> <button type="button"> </button></span>');function js(t,e){Ge(e,!0);let r=dr(e,"autoRun",19,()=>e.run),a=dr(e,"label",3,"Refresh"),s=A(!1),i=A(!1),l;function c(){m(i,!0),clearTimeout(l),l=setTimeout(()=>m(i,!1),2e3)}async function u(){m(s,!0),m(i,!1);try{await e.run(),c()}finally{m(s,!1)}}const f="Updates this page every "+wn.seconds+" seconds, so new bids and sales show up without you reloading.";ue(()=>{if(!wn.on)return;let Y=!0,G,D=0,nt=null;async function B(){if(!Y)return;let F=wn.seconds*1e3;try{if((C.current||ut.rpcUrl)&&document.visibilityState==="visible"&&!n(s)){const _t=await Gr("eth_blockNumber",[]);_t!==nt&&(nt=_t,await r()(),c())}D=0}catch{D+=1,F=Math.min(F*2**D,12e4)}Y&&(G=setTimeout(B,F))}return G=setTimeout(B,wn.seconds*1e3),()=>{Y=!1,clearTimeout(G)}});var b=Ef(),p=o(b),w=o(p),v=d(p,2);rl(v,{get text(){return f},label:"What auto-refresh does",align:"right"});var y=d(v,2),I=o(y),k=d(y,2),R=o(k);E(()=>{g(I,n(i)?"Updated":""),k.disabled=n(s),g(R,n(s)?"Refreshing…":a())}),To(w,()=>wn.on,Y=>wn.on=Y),ct("click",k,u),h(t,b),Ze()}Yr(["click"]);var Sf=x('<p class="muted"> </p>'),Tf=x('<p class="failed"> </p>'),If=x('<p class="muted">Loading…</p>'),Lf=x('No rocks wrapped yet. <a href="#/wrap">Wrap one →</a>',1),Af=x('<p class="muted"><!></p>'),Cf=x('<div class="pager"><button type="button">← Prev</button> <span class="where"> </span> <button type="button">Next →</button></div>'),Of=x('<div class="rock-grid"></div> <!>',1),Rf=x('<div class="statbar svelte-1r6myry"><div class="stat svelte-1r6myry"><span class="v svelte-1r6myry"> </span><span class="eyebrow">For sale</span></div> <div class="stat svelte-1r6myry"><span class="v svelte-1r6myry"> <em class="svelte-1r6myry"> </em></span><span class="eyebrow">Floor</span></div> <div class="stat svelte-1r6myry"><span class="v svelte-1r6myry"> </span><span class="eyebrow">Supply</span></div> <div class="stat svelte-1r6myry"><span class="v svelte-1r6myry"> <em class="svelte-1r6myry"> </em></span><span class="eyebrow">Volume</span></div></div> <!> <div class="tabs svelte-1r6myry"><button type="button"> </button> <button type="button"> </button> <button type="button"> </button></div> <!>',1),Nf=x('<div class="head"><h1>Market</h1> <div class="controls"><form class="jump svelte-1r6myry"><label class="eyebrow svelte-1r6myry">Go to rock <input type="number" min="0" placeholder="1234" size="6" class="svelte-1r6myry"/></label> <button type="submit" class="svelte-1r6myry">Open</button></form> <label class="eyebrow">Sort <select><option>Id</option><option>Price</option></select></label> <!></div></div> <!>',1);function Bf(t,e){Ge(e,!0);let r=A(zt([])),a=A(zt([])),s=A(zt([])),i=A(zt({})),l=A(null),c=A(null),u=A(null),f=A(null),b=A(!1),p=A("all"),w=A("id"),v=A(0),y=A(zt([])),I=A("");const k=48;ue(()=>{C.current,R()});async function R(){m(b,!0),m(f,null),$o();try{const[N,P,J,Kt,ce]=await Promise.all([xd(),Uo(),Vo(),kd().catch(()=>null),Sd().catch(()=>null)]);m(r,N,!0),m(a,P,!0),m(s,J,!0),m(l,Kt,!0),m(c,ce,!0);const te=P.length?await Fs(P):[],Ne={};P.forEach((qt,me)=>Ne[qt]=te[me]),m(i,Ne,!0);const de=te.map(qt=>qt.price).filter(qt=>qt>0n);m(u,de.length?de.reduce((qt,me)=>me<qt?me:qt):null,!0),m(v,0)}catch(N){m(f,N.message,!0)}finally{m(b,!1)}}const Y=X(()=>n(p)==="sale"?n(a):n(p)==="bids"?n(s):n(r)),G=X(()=>{const N=[...n(Y)];if(n(w)==="price"){const P=J=>n(i)[J]&&n(i)[J].price>0n?n(i)[J].price:2n**200n;N.sort((J,Kt)=>{const ce=P(J),te=P(Kt);return ce<te?-1:ce>te?1:J-Kt})}else N.sort((P,J)=>P-J);return N}),D=X(()=>Math.max(1,Math.ceil(n(G).length/k))),nt=X(()=>n(G).slice(n(v)*k,(n(v)+1)*k));ue(()=>{const N=n(nt);let P=!0;if(!N.length){m(y,[],!0);return}return Zo(N).then(J=>{P&&m(y,J,!0)}).catch(()=>{}),()=>{P=!1}});function B(N){m(p,N,!0),m(v,0)}function F(N){N.preventDefault();const P=String(n(I)).trim();P!==""&&(Ou("/rock/"+Number(P)),m(I,""))}let Z=A(null);async function _t(N){m(Z,null);try{await Qo(BigInt(N)),await R()}catch(P){m(Z,"#"+N+": "+pe(P))}}var U=Nf(),yt=lt(U),mt=d(o(yt),2),St=o(mt),Lt=o(St),se=d(o(Lt)),tt=d(St,2),H=d(o(tt)),ft=o(H);ft.value=ft.__value="id";var wt=d(ft);wt.value=wt.__value="price";var oe=d(tt,2);js(oe,{run:R});var le=d(yt,2);{var Cr=N=>{var P=Sf(),J=o(P);E(Kt=>g(J,Kt),[()=>Ro(n(f),{connected:!!C.account,endpoint:ut.rpcUrl})]),h(N,P)},$t=N=>{var P=Rf(),J=lt(P),Kt=o(J),ce=o(Kt),te=o(ce),Ne=d(Kt,2),de=o(Ne),qt=o(de),me=d(qt),Zr=o(me),Or=d(Ne,2),Kr=o(Or),Rr=o(Kr),hr=d(Or,2),Nr=o(hr),Ke=o(Nr),Br=d(Ke),Mr=o(Br),pr=d(J,2);{var sr=j=>{var V=Tf(),at=o(V);E(()=>g(at,n(Z))),h(j,V)};S(pr,j=>{n(Z)&&j(sr)})}var Hr=d(pr,2),Te=o(Hr);let Pr;var Xr=o(Te),ir=d(Te,2);let _r;var T=o(ir),K=d(ir,2);let gt;var M=o(K),$=d(Hr,2);{var bt=j=>{var V=If();h(j,V)},Mt=j=>{var V=Af(),at=o(V);{var Tt=xt=>{var Nt=he("Nothing is listed right now.");h(xt,Nt)},Et=xt=>{var Nt=he("No standing bids right now.");h(xt,Nt)},Rt=xt=>{var Nt=Lf();h(xt,Nt)};S(at,xt=>{n(p)==="sale"?xt(Tt):n(p)==="bids"?xt(Et,1):xt(Rt,-1)})}h(j,V)},Ht=j=>{var V=Of(),at=lt(V);Tr(at,21,()=>n(y),Rt=>Rt.id,(Rt,xt)=>{el(Rt,{get row(){return n(xt)},buy:_t})});var Tt=d(at,2);{var Et=Rt=>{var xt=Cf(),Nt=o(xt),Ut=d(Nt,2),be=o(Ut),fe=d(Ut,2);E(()=>{Nt.disabled=n(v)===0,g(be,`Page ${n(v)+1} of ${n(D)??""} · ${n(G).length??""} rocks`),fe.disabled=n(v)>=n(D)-1}),ct("click",Nt,()=>m(v,Math.max(0,n(v)-1),!0)),ct("click",fe,()=>m(v,Math.min(n(D)-1,n(v)+1),!0)),h(Rt,xt)};S(Tt,Rt=>{n(D)>1&&Rt(Et)})}h(j,V)};S($,j=>{n(b)&&!n(r).length?j(bt):n(G).length?j(Ht,-1):j(Mt,1)})}E((j,V)=>{g(te,n(a).length),g(qt,j),g(Zr,n(u)!=null?" ETH":""),g(Rr,n(l)??"–"),g(Ke,V),g(Mr,n(c)!=null?" ETH":""),Pr=Ur(Te,1,"svelte-1r6myry",null,Pr,{active:n(p)==="all"}),g(Xr,`All (${n(r).length??""})`),_r=Ur(ir,1,"svelte-1r6myry",null,_r,{active:n(p)==="sale"}),g(T,`For sale (${n(a).length??""})`),gt=Ur(K,1,"svelte-1r6myry",null,gt,{active:n(p)==="bids"}),g(M,`With bids (${n(s).length??""})`)},[()=>n(u)!=null?_.formatEther(n(u)):"–",()=>n(c)!=null?_.formatEther(n(c)):"–"]),ct("click",Te,()=>B("all")),ct("click",ir,()=>B("sale")),ct("click",K,()=>B("bids")),h(N,P)};S(le,N=>{n(f)?N(Cr):N($t,-1)})}yo("submit",St,F),Ce(se,()=>n(I),N=>m(I,N)),Bs(H,()=>n(w),N=>m(w,N)),h(t,U),Ze()}Yr(["click"]);var Ai=x('<span class="raw svelte-xraaj5"> </span>'),Mf=x('<span class="named you svelte-xraaj5"><span class="nm svelte-xraaj5">you</span> <!></span>'),Hf=x('<span class="named svelte-xraaj5"><span class="nm svelte-xraaj5"> </span> <!></span>'),Pf=x('<span class="raw only svelte-xraaj5"> </span>');function cs(t,e){Ge(e,!0);let r=dr(e,"stacked",3,!1),a=dr(e,"you",3,!0),s=A(null);const i=X(()=>a()&&!!e.address&&!!C.account&&e.address.toLowerCase()===C.account.toLowerCase());ue(()=>{let p=!0;m(s,null);const w=e.address;return w&&qo(w).then(v=>{p&&m(s,v,!0)}).catch(()=>{}),()=>{p=!1}});var l=Er(),c=lt(l);{var u=p=>{var w=Mf(),v=d(o(w),2);{var y=I=>{var k=Ai(),R=o(k);E(()=>g(R,e.address)),h(I,k)};S(v,I=>{r()&&I(y)})}E(()=>Gt(w,"title",n(s)??e.address)),h(p,w)},f=p=>{var w=Hf(),v=o(w),y=o(v),I=d(v,2);{var k=R=>{var Y=Ai(),G=o(Y);E(()=>g(G,e.address)),h(R,Y)};S(I,R=>{r()&&R(k)})}E(()=>{Gt(w,"title",e.address),g(y,n(s))}),h(p,w)},b=p=>{var w=Pf(),v=o(w);E(()=>{Gt(w,"title",e.address),g(v,e.address)}),h(p,w)};S(c,p=>{n(i)?p(u):n(s)?p(f,1):p(b,-1)})}h(t,l),Ze()}var Wf=x('<p class="muted"> </p>'),Ci=x('<p class="muted">loading…</p>'),Df=x(`<p class="svelte-2mvwa1"><strong> </strong></p> <p class="muted svelte-2mvwa1">Rocks above id 9999 can't be wrapped. They can only be absorbed into a rock you own, adding
+1 Dust to it.</p> <p class="svelte-2mvwa1"><a class="cta svelte-2mvwa1" href="#/wrap">Go to wrap →</a></p>`,1),Ff=x(`<p class="muted svelte-2mvwa1">You just merged it into <a> </a>. Its mass and
dust are there now, and this id can never be wrapped again.</p> <p class="svelte-2mvwa1"><a class="cta svelte-2mvwa1"> </a></p>`,1),zf=x('<p class="muted svelte-2mvwa1">Its mass and dust went to a lower id. This id can never be wrapped again.</p> <p class="svelte-2mvwa1"><a class="cta svelte-2mvwa1" href="#/market">Browse the market →</a></p>',1),jf=x('<p class="svelte-2mvwa1"><strong> </strong></p> <!>',1),qf=x(`<p class="svelte-2mvwa1"><strong> </strong></p> <p class="muted svelte-2mvwa1">Someone holds the raw 2017 rock right now. Wrapping it again brings back this exact rock,
with the same art, mass and dust.</p> <p class="svelte-2mvwa1"><a class="cta svelte-2mvwa1" href="#/wrap">Wrap a rock →</a></p>`,1),Uf=x(`<p class="svelte-2mvwa1"><strong> </strong></p> <p class="muted svelte-2mvwa1">There's no token for this id yet, so it can't be bought or bid on. If you hold the raw 2017
rock, wrap it and it becomes tradeable here.</p> <p class="svelte-2mvwa1"><a class="cta svelte-2mvwa1" href="#/wrap">Wrap a rock →</a></p>`,1),Vf=x('<div class="unwrapped svelte-2mvwa1"><!></div>'),Yf=x("<span> </span>"),Gf=x('<span class="swatch svelte-2mvwa1"></span><span class="mono"> </span>',1),Zf=x('<dt> </dt> <dd class="svelte-2mvwa1"><!></dd>',1),Kf=x('<dt>Status</dt><dd class="svelte-2mvwa1"><span> </span></dd> <dt>Mass</dt><dd class="svelte-2mvwa1"> </dd> <dt>Dust</dt><dd class="svelte-2mvwa1"> </dd>',1),Xf=x('<strong class="svelte-2mvwa1"> </strong> <!>',1),Oi=x('<strong class="svelte-2mvwa1"> </strong> ',1),Qf=x("<p><em>Connect a wallet to trade.</em></p>"),Jr=x('<p class="note bad"> </p>'),$e=x('<p class="failed"> </p>'),Jf=x('<div class="action-card"><p class="note"> </p> <div class="row"><div class="actions"><button type="button" class="primary"> </button></div></div> <!> <!></div>'),$f=x("<strong> </strong> ",1),tv=x("<strong> </strong>"),ev=x('<div class="fields"><label>Bid <input type="text" placeholder="0.5" size="8"/> ETH</label></div>'),rv=x('<button type="button" class="primary"> </button>'),Ri=x('<button type="button"> </button>'),nv=x('<p class="note">Costs you <strong> </strong> </p>'),av=x('<p class="note">Locks up the full <strong> </strong>.</p>'),sv=x(`<p class="note">Locks up <strong> </strong> until the owner accepts
it or you take it back.</p>`),iv=x(`<div class="action-card"><p class="note">Locks up ETH as a bid. If the owner accepts it the rock is yours, and if not you can take
your ETH back at any time. Enter the <strong>total</strong> you want your bid to be. <!></p> <div class="row"><!> <div class="actions"><!> <!></div></div> <!> <!></div>`),ov=x('<label>Sell only to <input type="text" placeholder="0x… or name.gwei" size="20"/></label>'),Ni=x('<p class="note">Resolving name…</p>'),lv=x('<p class="note">Lists to <span class="mono"> </span></p>'),Bi=x('<p class="note bad">No address is registered for that name. Check the spelling, or enter an address.</p>'),cv=x('<div class="action-card"><p class="note"> <!>. <!></p> <div class="row"><div class="actions"><button type="button" class="primary"> </button></div></div> <!></div>'),uv=x('<p class="note"> <!></p>'),dv=x("It is listed, so the transfer cancels that listing too<!>.",1),fv=x('<p class="note">Sends to <span class="mono"> </span></p>'),vv=x(`<div class="action-card"><p class="note">Puts this rock up for sale at a price you set. Anyone can buy it until the listing expires,
or just one address if you make it a private sale. Listing again updates the current
listing. <!></p> <div class="row"><div class="fields"><label>List at <input type="text" placeholder="1.5" size="8"/> ETH for <input type="number" min="1" size="4"/> days</label> <div class="private svelte-2mvwa1"><label class="check svelte-2mvwa1"><input type="checkbox" class="svelte-2mvwa1"/> Private sale (one address only)</label> <!></div></div> <div class="actions"><button type="button" class="primary"> </button> <!></div></div> <!> <!> <!> <!> <!></div> <!> <h3 class="svelte-2mvwa1">Consolidate</h3> <div class="action-card"><p class="note">Combines two rocks you own into one. The lower id survives with both rocks' mass and dust,
and the higher id is burned. You pick which art it keeps.</p> <div class="row"><div class="fields"><label>Merge with #<input type="number" min="0" size="6"/></label> <label>keep <select><option>this rock's look</option><option>the other's look</option><option>reroll</option></select></label></div> <div class="actions"><button type="button" class="primary"> </button></div></div> <!> <!></div> <div class="action-card"><p class="note">Burns rocks above id 9999 that you own, each one adding +1 Dust to this rock.
Type the ids, or a range like <span class="mono">10001-10005</span> </p> <div class="row"><div class="fields"><label>Absorb dust <input type="text" size="20" placeholder="10001, 10004-10006"/></label></div> <div class="actions"><button type="button" class="primary"> </button></div></div> <!> <!></div> <h3 class="svelte-2mvwa1">Unwrap</h3> <div class="action-card"><p class="note">Turns this token back into the raw 2017 rock.</p> <div class="row"><div class="actions"><button type="button" class="primary"> </button></div></div> <!></div> <h3 class="svelte-2mvwa1">Transfer</h3> <div class="action-card"><p class="note">Gifts this rock to an address or .gwei name. <!></p> <div class="row"><div class="fields"><label>Send to <input type="text" placeholder="0x… or name.gwei" size="20"/></label></div> <div class="actions"><button type="button" class="primary"> </button></div></div> <!> <!> <!></div>`,1),hv=x('<h2 class="svelte-2mvwa1">Actions</h2> <!> <!> <!> <div class="action-card"><p class="note">Removes a listing that can no longer be bought, like an expired one.</p> <div class="row"><div class="actions"><button type="button" class="primary"> </button></div></div> <!></div>',1),pv=x('<tr class="svelte-2mvwa1"><td class="svelte-2mvwa1"> </td><td class="svelte-2mvwa1"> </td><td class="svelte-2mvwa1"> </td><td class="addr svelte-2mvwa1"><!></td><td class="addr svelte-2mvwa1"><!></td></tr>'),_v=x('<div class="ledger-wrap svelte-2mvwa1"><table class="ledger svelte-2mvwa1"><thead><tr><th class="svelte-2mvwa1">Block</th><th class="svelte-2mvwa1">Price</th><th class="svelte-2mvwa1">Kind</th><th class="svelte-2mvwa1">Seller</th><th class="svelte-2mvwa1">Buyer</th></tr></thead><tbody class="svelte-2mvwa1"></tbody></table></div>'),wv=x('<p class="muted">No sales yet.</p>'),mv=x('<div class="detail-head svelte-2mvwa1"><div class="artwrap svelte-2mvwa1"><!></div> <div class="facts svelte-2mvwa1"><h2 class="svelte-2mvwa1">Traits</h2> <dl class="svelte-2mvwa1"><!> <dt>Owner</dt><dd class="svelte-2mvwa1"><!></dd></dl></div></div> <h2 class="svelte-2mvwa1">Orders</h2> <div class="orders svelte-2mvwa1"><p class="svelte-2mvwa1"><span class="ok svelte-2mvwa1">Listing</span> <!></p> <p class="svelte-2mvwa1"><span class="ok svelte-2mvwa1">Top bid</span> <!></p> <p class="svelte-2mvwa1"><span class="ok svelte-2mvwa1">Last sale</span> <!></p></div> <!> <h2 class="svelte-2mvwa1">Price history <!></h2> <p><button type="button">Load history</button></p> <!> <!>',1),bv=x('<p class="backrow svelte-2mvwa1"><a class="back svelte-2mvwa1" href="#/market"><svg viewBox="0 0 16 16" width="13" height="13" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="square" stroke-linejoin="miter" class="svelte-2mvwa1"><path d="M10 3 L5 8 L10 13"></path></svg> Market</a></p> <div class="head"><h1> </h1> <div class="controls"><!></div></div> <!>',1);function gv(t,e){Ge(e,!0);let r=A(null),a=A(null),s=A(!1),i=A(!1),l=A(null),c=A(""),u=A(""),f=A("30"),b=A(!1),p=A(""),w=A(null),v=A(!1),y=A(""),I=A(null),k=A(!1),R=A(""),Y=A("0"),G=A("");ue(()=>{C.current,C.account,e.id,D(),nt()});async function D(){m(a,null);try{const T=BigInt(e.id),[K,gt,M,$,bt,Mt,Ht,j]=await Promise.all([Kn(T),wd(T),md(T),Ws(T),is(T),jo(T),gd(T).catch(()=>null),bd(T).catch(()=>!1)]);m(r,{owner:K,mass:gt,dust:M,listing:$,bid:bt,sale:Mt,meta:Ht,rolled:j},!0),C.account&&m(s,await Ps(C.account).catch(()=>!1),!0)}catch(T){m(a,T.message,!0)}}async function nt(){m(i,C.account?await Hs():!1,!0)}const B=X(()=>n(r)&&n(r).owner&&C.account&&n(r).owner.toLowerCase()===C.account.toLowerCase()),F=X(()=>n(r)&&n(r).listing&&!jt(n(r).listing.seller)),Z=X(()=>n(r)&&n(r).bid&&n(r).bid.amount>0n),_t=X(()=>n(Z)&&C.account&&n(r).bid.bidder.toLowerCase()===C.account.toLowerCase());let U=A(null);const yt=X(()=>n(F)&&!n(B)?Oo(n(r).listing,C.account):null),mt=X(()=>{if(!ke(n(c)))return null;let T=null;try{T=_.parseEther(n(c).trim())}catch{T=null}return ki(T,n(Z)?n(r).bid.amount:0n,!!n(_t))});let St=A(!1);async function Lt(){if(tt.bid=null,n(mt)?.issue){tt.bid=n(mt).issue;return}m(St,!0);try{const T=_.parseEther(n(c).trim()),K=await is(wt()),gt=K.amount>0n?K.amount:0n,M=gt>0n&&!!C.account&&K.bidder.toLowerCase()===C.account.toLowerCase(),$=ki(T,gt,M);if($.issue){tt.bid=$.issue,await D();return}await qd(wt(),$.send),m(c,""),await D()}catch(T){tt.bid=pe(T)}finally{m(St,!1)}}async function se(){await ft("accept",async()=>{const T=n(r).bid.amount,K=await is(wt());if(K.amount<T)throw await D(),new Error(K.amount===0n?"That bid has been withdrawn.":`The bid dropped to ${_.formatEther(K.amount)} ETH. Accept again if you still want it.`);await Gd(wt(),T)})}const tt=zt({}),H=zt({});async function ft(T,K){if(!H[T]){tt[T]=null,H[T]=!0;try{await K(),await D()}catch(gt){tt[T]=pe(gt)}finally{H[T]=!1}}}const wt=()=>BigInt(e.id),oe=T=>!!C.account&&!!T&&T.toLowerCase()===C.account.toLowerCase(),le=X(()=>ya(n(R))??(ke(n(R))&&Number(n(R))===Number(e.id)?"A rock can't merge with itself.":null)),Cr=X(()=>ke(n(R))&&!n(le)),$t=X(()=>rd(n(G))),N=X(()=>n($t).ids.length>0&&!n($t).issue);ue(()=>{const T=n(p).trim();if(m(w,null),m(v,!1),!n(b)||!T||Fr(T))return;let K=!0;m(v,!0);const gt=setTimeout(async()=>{const M=await Si(T).catch(()=>null);K&&(m(w,M?{name:T,address:M}:null,!0),m(v,!1))},350);return()=>{K=!1,clearTimeout(gt)}});const P=X(()=>n(b)?Fr(n(p).trim())?n(p).trim():n(w)?.address??null:null),J=X(()=>{if(!n(b))return null;const T=n(p).trim();return ke(T)?!Fr(T)&&(n(v)||!n(w))?null:n(P)&&oe(n(P))?"That's your own address. Name someone else, or turn off private sale.":null:"Enter the address or .gwei name allowed to buy, or turn off private sale."}),Kt=(1n<<96n)-1n,ce=X(()=>{const T=n(u).trim();if(!T)return null;try{return _.parseEther(T)}catch{return null}}),te=X(()=>ke(n(u))?n(ce)==null?"Enter a price in ETH, like 1.5.":n(ce)===0n?"A listing needs a price above 0 ETH. You can't give a rock away by listing at 0; that sale would fail.":n(ce)>Kt?"That price is larger than a listing can hold.":null:null);async function Ne(){!ke(n(u))||n(te)||n(J)||n(b)&&!n(P)||await ft("list",async()=>{const{time:T}=await Wo(),K=T+Number(n(f)||"30")*86400,gt=n(b)?n(P):null;await Yd(wt(),n(ce),K,gt)})}ue(()=>{const T=n(y).trim();if(m(I,null),m(k,!1),!T||Fr(T))return;let K=!0;m(k,!0);const gt=setTimeout(async()=>{const M=await Si(T).catch(()=>null);K&&(m(I,M?{name:T,address:M}:null,!0),m(k,!1))},350);return()=>{K=!1,clearTimeout(gt)}});const de=X(()=>Fr(n(y).trim())?n(y).trim():n(I)?.address??null),qt=X(()=>{const T=n(y).trim();return!ke(T)||!Fr(T)&&(n(k)||!n(I))?null:n(de)&&oe(n(de))?"That's your own address. A transfer sends the rock to someone else.":null});async function me(){n(qt)||!n(de)||await ft("transfer",async()=>{await Pd(wt(),n(de)),m(y,"")})}async function Zr(T){const K=(C.account||"").toLowerCase(),[gt,M]=await Promise.all([Kn(wt()),Kn(T)]);return M?M.toLowerCase()!==K?`You don't own rock #${T}. A merge needs both rocks in one wallet.`:!gt||gt.toLowerCase()!==K?`You no longer own rock #${e.id}.`:(T>wt()?T:wt())<100n?`#${e.id} and #${T} are both under 100,
wardens:"0xabd5aa7d",mass:"0x501473bd",dust:"0xfd7fa2df",seed:"0x95564837",rolled:"0x2baf3df3",ownerOf:"0x6352211e",tokenURI:"0xc87b56dd",tokenURIBatch:"0x8d38e365",totalSupply:"0x18160ddd",wrappedBitmap:"0xd5499b96",tokensOfOwner:"0x8462151c",tokensOfOwnerIn:"0x99a2557a",isApprovedForAll:"0xe985e9c5",getApproved:"0x081812fc",MAX_ID:"0x17bac052",list:"0xf2d00a83",listTo:"0xc44c462d",cancelListing:"0x305a67a8",buy:"0xd96a094a",makeOffer:"0x9a2f6474",withdrawOffer:"0x8610f045",acceptOffer:"0xb01b193e",withdraw:"0x3ccfd60b",pruneListing:"0xb31f038e",listings:"0xde74e57b",bids:"0x4423c5f1",lastSale:"0xb6934afb",pendingWithdrawals:"0xf3f43703",totalVolume:"0x5f81a57c",listedBitmap:"0x889ed178",bidBitmap:"0xcd6ef21c",getListings:"0x0373c0bf",getBids:"0x35d6d214",getLastSales:"0x258d08bf",giftRock:"0x1b3e2002",sellRock:"0xc6caa959",reverseResolve:"0x9af8b7aa",rocks:"0x676cfec6",computeId:"0xfb021939",resolveById:"0x4f896d4f",resolveByName:"0x461a4478"},Xu={Listed:"0x9fd0e01e4cd41e8c101afb7fa962570335be73654fdb8a3fec862197742383ea",Unlisted:"0x398bd90ce129393b9155d48dccffb325e671f45c4250de457462a019268ff1f0",Bought:"0x8d92a13553f6d328e8e2f8d787835eadb96d99c4eae8ce1adab6441beb35c74d",Offered:"0x518fd790da45a5acbd08fd96a76218561c8278a0772a5cb9a537bb8ccfe1e36b",OfferWithdrawn:"0x60c7613a8b8ce872a461e88b0f376098063e67e4df6d0aa6a55790fe81acdb58",OfferAccepted:"0x7bc7d23e5aeba58dbde35bee1ac5d5ffe45557827f7ae6b35255586d1ff97652",Withdrawn:"0x7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5",Transfer:"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"},Qu=[["seller","address"],["price","uint"],["onlyTo","address"],["expiry","uint"],["massSnap","uint"],["burnSnap","uint"]],Ju=[["bidder","address"],["amount","uint"]],$u=[["price","uint"],["time","uint"],["blockNum","uint"],["count","uint"]],_={strip:Ha,uintWord:xn,addrWord:Bu,boolWord:Mu,words:cn,wBig:Mn,wNum:nr,wAddr:Io,wBool:Lo,encodeCall:Hu,encodeUintArrayCall:Pu,encodeStringCall:Wu,decodeFixedUintArray:Du,decodeUintArray:Fu,decodeStruct:zu,decodeStructArray:ju,decodeString:qu,decodeStringArray:Uu,hexToBytes:Co,hexToUtf8:Ms,parseEther:Vu,formatEther:Yu,hexQuantity:Gu,bitsOf:Zu,SEL:Ku,TOPIC:Xu,LISTING:Qu,BID:Ju,SALEINFO:$u},td="0x0000000000000000000000000000000000000000",jt=t=>!t||t.toLowerCase()===td,Ca=t=>t&&!jt(t)?t.slice(0,6)+"…"+t.slice(-4):"–";function Oo(t,e){return!t||jt(t.onlyTo)||e&&t.onlyTo.toLowerCase()===String(e).toLowerCase()?null:"Private sale: only "+Ca(t.onlyTo)+" can buy this rock."}function Ro(t,{connected:e,endpoint:r}={}){if(e)return"Couldn't load: "+pe(t);const a="Connect a wallet to read the chain.";return r?a+" This build also has a fallback endpoint set ("+r+") and it is not answering.":a}const ed=2n**96n-1n;function ki(t,e,r){const a=e??0n;return t==null?{issue:"Enter an amount in ETH, like 0.5."}:t<=0n?{issue:"Enter an amount above zero."}:t>ed?{issue:"That is larger than a single bid can hold."}:r?t<=a?{issue:"Enter the total you want your bid to be, above the "+_.formatEther(a)+" ETH you already have in."}:{kind:"raise",total:t,now:a,send:t-a}:a>0n&&t<=a?{issue:"The standing bid is "+_.formatEther(a)+" ETH. Yours has to beat it, not match it."}:{kind:a>0n?"outbid":"first",total:t,now:a,send:t}}const pe=t=>t&&t.message?t.message:String(t),ke=t=>String(t??"").trim()!=="",Fr=t=>/^0x[0-9a-fA-F]{40}$/.test(String(t??"").trim());function ya(t,e=0,r=9999){const a=String(t??"").trim();if(!a)return null;if(!/^\d+$/.test(a))return"Enter a whole rock id.";const s=Number(a);return s<e?`Enter an id of ${e} or above.`:s>r?`Enter an id of ${r} or below.`:null}const No=25;function rd(t,e=No){const r=String(t??"").trim();if(!r)return{ids:[],issue:null};const a=c=>({ids:[],issue:c}),s=[];for(const c of r.split(/[\s,]+/).filter(Boolean)){const u=c.match(/^(\d+)-(\d+)$/);if(u){const[f,b]=[BigInt(u[1]),BigInt(u[2])];if(b<f)return a(`The range ${c} runs backwards.`);if(b-f>=BigInt(e))return a(`${c} is more than ${e} rocks. Absorb them in batches.`);for(let p=f;p<=b;p++)s.push(p);continue}if(!/^\d+$/.test(c))return a(`"${c}" is not a rock id. Use ids, commas, or a range like 10001-10005.`);s.push(BigInt(c))}const i=s.find(c=>c<10000n);if(i!==void 0)return a(`#${i} is not dust. Only rocks above id 9999 can be absorbed.`);const l=[...new Set(s)];return l.length!==s.length?a("That list names the same rock twice."):l.length>e?a(`That is ${l.length} rocks. Absorb up to ${e} at a time.`):{ids:l,issue:null}}const Bo=t=>t&&Number(t)>0?new Date(Number(t)*1e3).toLocaleString():"–",nd=t=>t&&Number(t)>0?new Date(Number(t)*1e3).toLocaleDateString():"–";function xi(t,e){const r=BigInt(t);return r<100n?"DEFINED":r<BigInt(e)?"UNDEFINED":"DUST"}async function Gr(t,e){if(C.current)return C.current.request({method:t,params:e});throw new Error("connect a wallet to read the chain")}async function Re(t,e){if(jt(t))throw new Error("contract address not configured (edit src/config.js)");return Gr("eth_call",[{to:t,data:e},"latest"])}function Mo(){if(C.chainId!=null&&C.chainId!==ut.chainId)throw new Error("Wrong network: your wallet is on chain "+C.chainId+" and this app is on chain "+ut.chainId+". Switch networks and try again.")}async function we(t,e,r){if(!C.account)throw new Error("connect a wallet first");if(Mo(),jt(t))throw new Error("contract address not configured (edit src/config.js)");const a={from:C.account,to:t,data:e};r&&r>0n&&(a.value=_.hexQuantity(r));const s=await Gr("eth_sendTransaction",[a]),i=await ad(s);if(i&&i.status!=="0x1")throw new Error("transaction reverted: "+s);return i&&await Po(i.blockNumber),i}const Ho=t=>new Promise(e=>setTimeout(e,t));async function ad(t){for(let e=0;e<180;e++){const r=await Gr("eth_getTransactionReceipt",[t]);if(r)return r;await Ho(1e3)}return null}async function Po(t){if(!t)return;let e;try{e=BigInt(t)}catch{return}for(let r=0;r<20;r++){try{if(BigInt(await Gr("eth_blockNumber",[]))>=e)return}catch{}await Ho(600)}}async function Wo(){const t=await Gr("eth_getBlockByNumber",["latest",!1]);return{number:Number(BigInt(t.number)),time:Number(BigInt(t.timestamp))}}function sd(t,e,r){return[{version:"2.0.0",from:t,chainId:e,atomicRequired:!0,calls:r.map(a=>{const s={to:a.to,data:a.data||"0x"};return a.value&&a.value>0n&&(s.value=_.hexQuantity(a.value)),s})}]}function id(t,e,r){if(!t||typeof t!="object")return!1;const a=String(e).toLowerCase();let s=null;for(const l of Object.keys(t))if(String(l).toLowerCase()===a||Number(l)===r){s=t[l];break}const i=s&&s.atomic&&s.atomic.status;return i==="supported"||i==="ready"}function od(t){if(!t)return"pending";const e=t.status;if(typeof e=="string"){const r=e.toUpperCase();return r==="CONFIRMED"||r==="SUCCESS"?"confirmed":r==="FAILED"||r==="REVERTED"?"failed":"pending"}return typeof e=="number"?e===1?"confirmed":e===2?"failed":e===0||e===100?"pending":e>=200&&e<400?"confirmed":e>=400?"failed":"pending":Array.isArray(t.receipts)&&t.receipts.length?"confirmed":"pending"}function ld(t){return!t||!Array.isArray(t.receipts)||!t.receipts.length?null:t.receipts[t.receipts.length-1]}const cd=t=>new Promise(e=>setTimeout(e,t)),ys=()=>_.hexQuantity(BigInt(ut.chainId));let _a=null;async function Hs(){const t=C.current;if(!t||!C.account)return!1;const e=C.account+":"+ut.chainId;if(_a&&_a.key===e)return _a.atomic;let r=!1;try{const a=await t.request({method:"wallet_getCapabilities",params:[C.account,[ys()]]});r=id(a,ys(),ut.chainId)}catch{r=!1}return _a={key:e,atomic:r},r}async function aa(t,e){if(!C.account)throw new Error("connect a wallet first");if(Mo(),t.length===1)return we(t[0].to,t[0].data,t[0].value||0n);if(await Hs())try{return await ud(t,e)}catch(r){if(fd(r))throw r}return dd(t)}async function ud(t,e){const r=C.current,a=await r.request({method:"wallet_sendCalls",params:sd(C.account,ys(),t)}),s=typeof a=="string"?a:a&&a.id;if(!s)throw new Error("wallet_sendCalls returned no id");for(let i=0;i<180;i++){let l;try{l=await r.request({method:"wallet_getCallsStatus",params:[s]})}catch{break}const c=od(l);if(c==="confirmed"){const u=ld(l);return u&&await Po(u.blockNumber),u||{status:"0x1"}}if(c==="failed")throw new Error((e?e+": ":"")+"batch reverted");await cd(1e3)}return null}async function dd(t){let e=null;for(const r of t)e=await we(r.to,r.data,r.value||0n);return e}function fd(t){return(t&&(t.code||t.data&&t.data.code))===4001||/reject|denied|cancell?ed/i.test(t&&t.message||"")}const Do=(t,e)=>({to:t,data:_.encodeCall(_.SEL.setApprovalForAll,[_.addrWord(e),_.boolWord(!0)])}),vd=(t,e,r,a)=>({to:t,data:_.encodeCall(_.SEL.list,[_.uintWord(e),_.uintWord(r),_.uintWord(a)])}),hd=(t,e,r,a,s)=>({to:t,data:_.encodeCall(_.SEL.listTo,[_.uintWord(e),_.uintWord(r),_.uintWord(a),_.addrWord(s)])}),pd=(t,e,r)=>({to:t,data:_.encodeCall(_.SEL.acceptOffer,[_.uintWord(e),_.uintWord(r)])}),Fo=(t,e,r)=>t?[r]:[e,r],Ot=()=>ut.rock,Ft=()=>ut.market,rt=(t,...e)=>_.encodeCall(t,e),_d=(1n<<256n)-1n,pt=t=>_.uintWord(t),Se=t=>_.addrWord(t),fr=async(t,e)=>_.words(await Re(t,e))[0],sa=async(t,e)=>_.wBig(await fr(t,e));async function Kn(t){try{return _.wAddr(await fr(Ot(),rt(_.SEL.ownerOf,pt(t))))}catch{return null}}const wd=t=>sa(Ot(),rt(_.SEL.mass,pt(t))),md=t=>sa(Ot(),rt(_.SEL.dust,pt(t))),bd=async t=>_.wBool(await fr(Ot(),rt(_.SEL.rolled,pt(t)))),zo=async t=>_.decodeString(await Re(Ot(),rt(_.SEL.tokenURI,pt(t)))),gd=async t=>{const e=await zo(t);return JSON.parse(atob(e.slice(e.indexOf(",")+1)))},Ei=12;async function yd(t){const e={};for(let r=0;r<t.length;r+=Ei){const a=t.slice(r,r+Ei).map(BigInt);_.decodeStringArray(await Re(Ot(),_.encodeUintArrayCall(_.SEL.tokenURIBatch,a))).forEach((i,l)=>{if(i)try{e[Number(a[l])]=JSON.parse(atob(i.slice(i.indexOf(",")+1))).image}catch{}})}return e}const kd=()=>sa(Ot(),rt(_.SEL.totalSupply)),xd=async()=>_.bitsOf(_.decodeFixedUintArray(await Re(Ot(),_.SEL.wrappedBitmap),40)),Hn=async t=>_.wAddr(await fr(Ot(),rt(_.SEL.wardens,Se(t)))),Ps=async t=>_.wBool(await fr(Ot(),rt(_.SEL.isApprovedForAll,Se(t),Se(Ft())))),Ws=async t=>_.decodeStruct(await Re(Ft(),rt(_.SEL.listings,pt(t))),_.LISTING),is=async t=>_.decodeStruct(await Re(Ft(),rt(_.SEL.bids,pt(t))),_.BID),jo=async t=>_.decodeStruct(await Re(Ft(),rt(_.SEL.lastSale,pt(t))),_.SALEINFO),Ed=async t=>sa(Ft(),rt(_.SEL.pendingWithdrawals,Se(t))),Sd=()=>sa(Ft(),rt(_.SEL.totalVolume)),os=new Map;async function qo(t){if(!t||jt(t)||jt(ut.gns))return null;const e=t.toLowerCase();if(os.has(e))return os.get(e);let r=null;try{const a=_.decodeString(await Re(ut.gns,rt(_.SEL.reverseResolve,Se(t))));r=a&&a.length?a:null}catch{r=null}return os.set(e,r),r}async function Si(t){const e=String(t??"").trim();if(!e||jt(ut.gns))return null;try{const r=_.wBig(await fr(ut.gns,_.encodeStringCall(_.SEL.computeId,e)));if(r!==0n){const a=_.wAddr(await fr(ut.gns,rt(_.SEL.resolveById,pt(r))));if(!jt(a))return a}}catch{}try{const r=_.wAddr(await fr(ut.gns,_.encodeStringCall(_.SEL.resolveByName,e)));if(!jt(r))return r}catch{}return null}const Uo=async()=>_.bitsOf(_.decodeFixedUintArray(await Re(Ft(),_.SEL.listedBitmap),40)),Vo=async()=>_.bitsOf(_.decodeFixedUintArray(await Re(Ft(),_.SEL.bidBitmap),40)),Ti=500;async function Ds(t,e,r){const a=[];for(let s=0;s<t.length;s+=Ti){const i=t.slice(s,s+Ti).map(BigInt),l=await Re(Ft(),_.encodeUintArrayCall(e,i));a.push(..._.decodeStructArray(l,r))}return a}async function Fs(t){return t.length?Ds(t,_.SEL.getListings,_.LISTING):[]}async function Yo(t){return t.length?Ds(t,_.SEL.getBids,_.BID):[]}async function Go(t){return t.length?Ds(t,_.SEL.getLastSales,_.SALEINFO):[]}async function Td(){const[t,e]=await Promise.all([Uo(),Vo()]),r=Array.from(new Set([...t,...e])).sort((c,u)=>c-u),[a,s,i]=await Promise.all([Fs(t),Yo(e),Go(r)]),l={};for(const c of r)l[c]={id:c};return t.forEach((c,u)=>l[c].listing=a[u]),e.forEach((c,u)=>l[c].bid=s[u]),r.forEach((c,u)=>l[c].sale=i[u]),r.map(c=>l[c])}async function Zo(t){if(!t.length)return[];const[e,r,a]=await Promise.all([Fs(t),Yo(t),Go(t)]);return t.map((s,i)=>({id:s,listing:e[i],bid:r[i],sale:a[i]}))}async function Id(t){const e=await jo(t);if(!e.count||e.count===0n)return[];const r=[],a="0x"+_.uintWord(t);let s=Number(e.blockNum),i=0;for(;s>0&&i<4096;){i++;const l=await Gr("eth_getLogs",[{address:Ft(),fromBlock:_.hexQuantity(s),toBlock:_.hexQuantity(s),topics:[[_.TOPIC.Bought,_.TOPIC.OfferAccepted],a]}]);if(!l.length)break;let c=0;for(const u of l){const f=u.topics[0].toLowerCase()===_.TOPIC.Bought,b=_.wAddr(_.strip(f?u.topics[3]:u.topics[2])),p=_.wAddr(_.strip(f?u.topics[2]:u.topics[3])),w=_.words(u.data);r.push({block:Number(BigInt(u.blockNumber)),price:_.wBig(w[0]),seller:b,buyer:p,kind:f?"buy":"accept"});const v=_.wNum(w[1]);(c===0||v<c)&&(c=v)}s=c}return r.sort((l,c)=>c.block-l.block),r}const ls=9e3,Ld=t=>/range|limit|exceed|too many|too large|too wide|more than|response size|block range/i.test(String(t?.message??t?.data?.message??t));async function Ad(t,e,r){const a=[];let s=e,i=ls;for(;s<=r;){const l=Math.min(s+i-1,r);try{const c=await Gr("eth_getLogs",[{...t,fromBlock:_.hexQuantity(s),toBlock:_.hexQuantity(l)}]);a.push(...c),s=l+1,i<ls&&(i=Math.min(ls,i*2))}catch(c){if(i<=1||!Ld(c))throw c;i=Math.max(1,Math.floor(i/2))}}return a}async function Cd(t){try{return _.decodeUintArray(await Re(Ot(),rt(_.SEL.tokensOfOwner,Se(t)))).map(Number).sort((r,a)=>r-a)}catch{}try{return await Od(t)}catch{return Rd(t)}}const Ii=1e3;async function Od(t){const e=Number(ut.maxId)||1e4,r=[];for(let a=0;a<e;a+=Ii){const s=Math.min(a+Ii,e),i=rt(_.SEL.tokensOfOwnerIn,Se(t),pt(a),pt(s));r.push(..._.decodeUintArray(await Re(Ot(),i)).map(Number))}return r.sort((a,s)=>a-s)}async function Rd(t){const e="0x"+_.addrWord(t),r=(await Wo()).number,a=Number(ut.deployBlock)||0,s=await Ad({address:Ot(),topics:[_.TOPIC.Transfer,null,e]},a,r),i=Array.from(new Set(s.map(c=>_.wNum(_.strip(c.topics[3]))))).sort((c,u)=>c-u),l=[];for(const c of i){const u=await Kn(BigInt(c));u&&u.toLowerCase()===t.toLowerCase()&&l.push(c)}return l}const Li=()=>we(Ot(),rt(_.SEL.createWarden));async function Nd(t){const e=await Hn(C.account);if(jt(e))throw new Error("create your warden first");return we(ut.v1,rt(_.SEL.giftRock,pt(t),Se(e)))}const Bd=t=>we(Ot(),rt(_.SEL.wrap,pt(t))),Md=t=>we(Ot(),rt(_.SEL.unwrap,pt(t))),Hd=t=>we(Ot(),rt(_.SEL.rescue,pt(t)));async function Pd(t,e){const r=C.account,a={to:Ot(),data:rt(_.SEL.safeTransferFrom,Se(r),Se(e),pt(t))},s=await Ws(t),l=!jt(s.seller)&&s.seller.toLowerCase()===String(r).toLowerCase()?[{to:Ft(),data:rt(_.SEL.cancelListing,pt(t))},a]:[a];return aa(l,"transfer #"+t)}const Ko=async t=>_.wAddr(await fr(ut.v1,rt(_.SEL.rocks,pt(t))));async function Wd(t,e){const r=async i=>{if(jt(i)||!e)return!1;try{const l=_.wAddr(await fr(i,rt(_.SEL.ownerOf,pt(t))));return!!l&&l.toLowerCase()===e.toLowerCase()}catch{return!1}},[a,s]=await Promise.all([r(ut.wrapperSub100),r(ut.wrapper10k)]);return a?"sub100":s?"tenk":null}function Dd(t,e){const r=t==="tenk"?ut.wrapper10k:ut.wrapperSub100;return we(r,rt(_.SEL.safeTransferFrom,Se(C.account),Se(Ot()),pt(e)))}const Fd=(t,e,r)=>we(Ot(),rt(_.SEL.merge,pt(t),pt(e),pt(r)));async function zd(t){const e=await Hn(C.account);if(jt(e))throw new Error("create your warden first");return aa([{to:ut.v1,data:rt(_.SEL.sellRock,pt(t),pt(_d))},{to:ut.v1,data:rt(_.SEL.giftRock,pt(t),Se(e))},{to:Ot(),data:rt(_.SEL.wrap,pt(t))}],"wrap #"+t)}async function jd(t,e,r=null){const a=await Hn(C.account);if(jt(a))throw new Error("create your warden first");const s=Array.isArray(t)?t:[t];if(!s.length)throw new Error("no dust rocks given");const i=r===null?null:new Set(r.map(String)),l=s.flatMap(u=>[...i===null||i.has(String(u))?[{to:ut.v1,data:rt(_.SEL.giftRock,pt(u),Se(a))}]:[],{to:Ot(),data:rt(_.SEL.absorb,pt(u),pt(e))}]),c=s.length===1?"#"+s[0]:s.length+" dust rocks";return aa(l,`absorb ${c} into #${e}`)}const Xo=t=>we(Ft(),rt(_.SEL.cancelListing,pt(t)));async function Qo(t){const e=await Ws(t);if(jt(e.seller))throw new Error("not listed");return we(Ft(),rt(_.SEL.buy,pt(t)),e.price)}const qd=(t,e)=>we(Ft(),rt(_.SEL.makeOffer,pt(t)),e),Jo=t=>we(Ft(),rt(_.SEL.withdrawOffer,pt(t))),Ud=()=>we(Ft(),rt(_.SEL.withdraw)),Vd=t=>we(Ft(),rt(_.SEL.pruneListing,pt(t)));async function Yd(t,e,r,a=null){const s=await Ps(C.account),i=a?hd(Ft(),t,e,r,a):vd(Ft(),t,e,r),l=(a?"private list #":"list #")+t;return aa(Fo(s,Do(Ot(),Ft()),i),l)}async function Gd(t,e){const r=await Ps(C.account);return aa(Fo(r,Do(Ot(),Ft()),pd(Ft(),t,e)),"accept offer on #"+t)}var Zd=x("<a> </a>"),Kd=x('<a href="#/account"><span class="dot svelte-1jnx671"></span><span class="who svelte-1jnx671"> </span></a> <button type="button" class="svelte-1jnx671">Disconnect</button>',1),Xd=x("<option> </option>"),Qd=x("<option>no wallet</option>"),Jd=x('<select aria-label="Choose wallet"><!><!></select> <button type="button" class="primary svelte-1jnx671">Connect</button>',1),$d=x('<span class="why svelte-1jnx671"> </span>'),tf=x('<div class="netbar svelte-1jnx671"><span> </span> <button type="button" class="svelte-1jnx671"> </button> <!></div>'),ef=x('<div class="netbar bad svelte-1jnx671"> </div>'),rf=x('<header class="svelte-1jnx671"><div class="bar svelte-1jnx671"><a class="brand svelte-1jnx671" href="#/" aria-label="EthereumRock home"><svg class="logo svelte-1jnx671" viewBox="0 0 8 8" shape-rendering="crispEdges" width="27" height="27" aria-hidden="true"><path fill="#78746b" d="M3 1H4V2H5V3H6V7H3V6H2V3H3Z"></path><path fill="#000" fill-opacity="0.902" d="M3 1H4V2H3ZM3 6H4V7H3Z"></path><path fill="#fff" fill-opacity="0.251" d="M4 2H5V3H4Z"></path><path fill="#000" fill-opacity="0.502" d="M2 3H3V5H2ZM5 6H6V7H5Z"></path><path fill="#000" fill-opacity="0.251" d="M5 4H6V6H5Z"></path><path fill="#000" fill-opacity="0.749" d="M2 5H3V6H2ZM4 6H5V7H4Z"></path></svg></a> <nav class="tabs svelte-1jnx671"></nav> <div class="right svelte-1jnx671"><!></div></div> <!> <!></header>');function nf(t,e){Ge(e,!0);let r=A("");ue(()=>{const B=C.providers;B.length&&!B.some(F=>F.info.uuid===n(r))&&m(r,B[0].info.uuid,!0)});let a=A(null);ue(()=>{const B=C.account;if(m(a,null),!B)return;let F=!0;return qo(B).then(Z=>{F&&m(a,Z,!0)}).catch(()=>{}),()=>{F=!1}});let s=A(null);async function i(){m(s,null);try{await C.connect(n(r))}catch(B){m(s,pe(B),!0)}}let l=A(!1),c=A(null);async function u(){m(c,null),m(l,!0);try{await C.switchChain(ut.chainId,{rpcUrl:ut.rpcUrl,chainName:ut.chainId===31337?"Hardhat (31337)":"Chain "+ut.chainId})}catch(B){m(c,pe(B),!0)}m(l,!1)}const f=[{href:"#/",path:"/",label:"Home"},{href:"#/market",path:"/market",label:"Market"},{href:"#/wrap",path:"/wrap",label:"Wrap"}],b=B=>B==="/"?gs.path==="/":gs.path.startsWith(B);var p=rf(),w=o(p),v=d(o(w),2);Tr(v,21,()=>f,B=>B.path,(B,F)=>{var Z=Zd();let _t;var U=o(Z);E(yt=>{Gt(Z,"href",n(F).href),_t=Ur(Z,1,"svelte-1jnx671",null,_t,yt),g(U,n(F).label)},[()=>({active:b(n(F).path)})]),h(B,Z)});var y=d(v,2),I=o(y);{var k=B=>{var F=Kd(),Z=lt(F);let _t;var U=d(o(Z)),yt=o(U),mt=d(Z,2);E((St,Lt)=>{_t=Ur(Z,1,"chip svelte-1jnx671",null,_t,St),Gt(Z,"title","Your account · "+C.account),g(yt,Lt)},[()=>({warn:C.chainId!==ut.chainId,active:b("/account")}),()=>n(a)??Ca(C.account)]),ct("click",mt,()=>C.disconnect()),h(B,F)},R=B=>{var F=Jd(),Z=lt(F),_t=o(Z);Tr(_t,17,()=>C.providers,St=>St.info.uuid,(St,Lt)=>{var se=Xd(),tt=o(se),H={};E(()=>{g(tt,n(Lt).info.name),H!==(H=n(Lt).info.uuid)&&(se.value=(se.__value=n(Lt).info.uuid)??"")}),h(St,se)});var U=d(_t);{var yt=St=>{var Lt=Qd();Lt.value=Lt.__value="",h(St,Lt)};S(U,St=>{C.providers.length||St(yt)})}var mt=d(Z,2);Bs(Z,()=>n(r),St=>m(r,St)),ct("click",mt,i),h(B,F)};S(I,B=>{C.account?B(k):B(R,-1)})}var Y=d(w,2);{var G=B=>{var F=tf(),Z=o(F),_t=o(Z),U=d(Z,2),yt=o(U),mt=d(U,2);{var St=Lt=>{var se=$d(),tt=o(se);E(()=>g(tt,n(c))),h(Lt,se)};S(mt,Lt=>{n(c)&&Lt(St)})}E(()=>{g(_t,`Wrong network. This app is on chain ${ut.chainId}, your wallet is on ${C.chainId??"another chain"??""}.`),U.disabled=n(l),g(yt,n(l)?"switching…":"Switch network")}),ct("click",U,u),h(B,F)};S(Y,B=>{C.account&&C.chainId!==ut.chainId&&B(G)})}var D=d(Y,2);{var nt=B=>{var F=ef(),Z=o(F);E(()=>g(Z,n(s))),h(B,F)};S(D,B=>{n(s)&&!C.account&&B(nt)})}h(t,p),Ze()}Yr(["click"]);Ac();var af=xo('<g><path d="M3 1H4V2H5V3H6V7H3V6H2V3H3Z"></path><path fill="#000" fill-opacity="0.90" d="M3 1H4V2H3ZM3 6H4V7H3Z"></path><path fill="#fff" fill-opacity="0.25" d="M4 2H5V3H4Z"></path><path fill="#000" fill-opacity="0.50" d="M2 3H3V5H2ZM5 6H6V7H5Z"></path><path fill="#000" fill-opacity="0.25" d="M5 4H6V6H5Z"></path><path fill="#000" fill-opacity="0.75" d="M2 5H3V6H2ZM4 6H5V7H4Z"></path></g>'),sf=xo('<svg class="banner svelte-e1tb7l" viewBox="0 0 33 7.6" shape-rendering="crispEdges" aria-hidden="true"></svg>');function of(t){const e=[{x:3.5,scale:.88,h:26,s:10,l:38},{x:8.7,scale:1,h:190,s:74,l:52},{x:13.9,scale:.74,h:30,s:34,l:58},{x:19.1,scale:.94,h:46,s:24,l:76},{x:24.3,scale:.67,h:20,s:22,l:46},{x:29.5,scale:.9,h:348,s:62,l:56}];var r=sf();Tr(r,5,()=>e,mu,(a,s)=>{var i=af(),l=o(i);E(()=>{Gt(i,"transform",`translate(${n(s).x??""} 6.8) scale(${n(s).scale??""}) translate(-4 -7)`),Gt(l,"fill",`hsl(${n(s).h??""},${n(s).s??""}%,${n(s).l??""}%)`)}),h(a,i)}),h(t,r)}var lf=x(`<div class="home svelte-1nmp6pz"><h1 class="svelte-1nmp6pz">EthereumRock</h1> <!> <article class="story svelte-1nmp6pz"><p class="lede svelte-1nmp6pz">On 12/26/2017 the EtherRock project launched, cementing itself as one of the first NFTs on Ethereum mainnet. What most people do
not know is that there was a precursor, seventeen hours earlier. The same developer had already
deployed a version of the smart contract with some bugs in it and replaced it the next morning. Let's call that one
EtherRock v1.</p> <p class="svelte-1nmp6pz">The collection was meant to be a hundred pet rocks. A single mistyped <code class="svelte-1nmp6pz">=</code> in <code class="svelte-1nmp6pz">buyRock</code> left every rock permanently "for sale" at whatever price it had stored and
rocks above 100 had <code class="svelte-1nmp6pz">0</code> stored, so anyone could claim those for the cost of gas.</p> <p class="svelte-1nmp6pz">Both EtherRock contracts predate the ERC-721 standard, so nothing can list them without a proper
wrapper. 2021 brought the first attempt at one for v1, which put the buyRock bug out of reach and arrived as two contracts: "Genesis
Rocks" and "Genesis Rocks: 100-9999", effectively splitting the collectors into the elite hundred and everyone else.
The EtherRock developer had publicly disowned v1 by then and its collection was delisted, and between the split and
the disowning the whole thing was abandoned (again).</p> <p class="svelte-1nmp6pz">EthereumRock is a new shot at this, a better and CROPS aligned one. It is an experiment for the
first 10k rocks: merge two you own and the higher number burns into the lower, so the supply can
shrink back to the 100 originally intended. The collectors have full control over whether it does.</p> <p class="svelte-1nmp6pz">The art carries the same lineage. EtherRock used royalty-free clip art. Genesis Rocks pixelated
it and pinned the result to IPFS, where the whole 100-9999 set shares the same hundred images.
EthereumRock draws every rock on chain from its own seed, so each one is its own picture and
there is nothing left to pin.</p> <p class="svelte-1nmp6pz">The other mistake worth not repeating is a single point of failure, so everything here is on
chain. The art and the metadata are on chain. The marketplace is on chain and takes zero fees.
Even this website is on chain and can be read straight out of the smart contract. All of it
should outlive me, for as long as Ethereum is up and running.</p> <div class="cta svelte-1nmp6pz"><a class="btn primary svelte-1nmp6pz" href="#/market">Browse the market</a> <a class="btn svelte-1nmp6pz" href="#/wrap">Wrap a rock</a></div></article></div>`);function cf(t){var e=lf(),r=d(o(e),2);of(r),h(t,e)}const uf="400px 0px",df=50,ff=200,en=new Map;function vf(t,e){for(en.set(t,e);en.size>ff;)en.delete(en.keys().next().value)}function $o(){en.clear()}let zn=null;con