let msgMagicHashDigest,v_btc,r_btc,s_btc,sig,messageHash,btcPublicKey,ordAddress,provider,chainId,ethAddress,enableQG,tipCreator,introMsg,ethContractAddress,ethContractSymbol,targetChainName,ethMsg,quark20Msg,targetChainId,targetChainRPC,targetChainExplorer,targetChainCurrencyName,targetChainCurrencySymbol,enableApp,enableRecursion,tipSatAmount,parcelHighLight,sid,ethContracAbi,isHolder,currentTextInscription,canInscribe,balanceInscriber,serverUrl0,serverUrl1,selfSat,characterCount=0,word="";const quarkLogoInscription="a0f1089d6871763d1368f60aeb7ccb60614e34f8595a39d85957ba30f999693ei0",ownerOverride=!1,initGate=async()=>{serverUrl0="",serverUrl1="",document.body.style="overflow: hidden;margin: 0 !important;padding: 0 !important;background-color: black;";const e=document.createElement("div");e.setAttribute("id","atomView");const t=document.createElement("div");t.setAttribute("id","overlay0"),t.style="position: absolute;width: 100% !important;height: 100% !important;display: block;z-index: 9;";const n=document.createElementNS("http://www.w3.org/2000/svg","svg");n.setAttribute("width","100%"),n.setAttribute("height","100%"),n.setAttribute("viewBox","0 0 4096 4096");const r=document.createElementNS("http://www.w3.org/2000/svg","animateTransform");r.setAttribute("attributeType","xml"),r.setAttribute("attributeName","transform"),r.setAttribute("type","translate"),r.setAttribute("values","0,0; 0,5; 0,10; 0,5; 0,0"),r.setAttribute("keyTimes","0; 0.25; 0.5; 0.75; 1"),r.setAttribute("dur","7s"),r.setAttribute("repeatCount","indefinite"),r.setAttribute("calcMode","spline"),r.setAttribute("keySplines",".42 0 .58 1; .42 0 .58 1; .42 0 .58 1; .42 0 .58 1");const i=document.createElementNS("http://www.w3.org/2000/svg","g");i.setAttribute("transform","translate(520 500) scale(25 25)"),i.setAttribute("fill","#FEFFFE");const a=(e,t)=>{const n=document.createElementNS("http://www.w3.org/2000/svg","circle");n.setAttribute("cx",`${e}`),n.setAttribute("cy",`${t}`),n.setAttribute("r","2.5"),i.append(n)},s=10.7,o=6.8;a(70.7,66.8);for(let e=0;e<7;e++)a(20+10*e+s,26.8),a(30.7,30+10*e+o),a(90.7,30+10*e+o),a(20+10*e+s,96.8);const d=document.createElementNS("http://www.w3.org/2000/svg","g");d.setAttribute("transform","translate(520 500) scale(25 25)"),d.setAttribute("fill","#FEFFFE");const c=document.createElementNS("http://www.w3.org/2000/svg","circle");c.setAttribute("cx","80.7"),c.setAttribute("cy","66.8"),c.setAttribute("r","2.5"),d.append(c),c.append(r),n.append(i),n.append(d),t.append(n),e.append(t);const l=document.createElement("canvas");l.setAttribute("id","atomCanvas"),e.append(l),document.body.appendChild(e),document.getElementById("atomCanvas").width=window.innerWidth,document.getElementById("atomCanvas").height=window.innerHeight;const p=await fetch("/content/d94a775355aa322080db915da5eaee0b60fb5fd1464c170e67375e8487741a08i0"),m=document.createElement("script");m.innerHTML=decodeURIComponent(escape(atob(await p.text()))),document.body.appendChild(m),window.enableApp=window.fullScreen||window.innerWidth==screen.width||window.innerWidth>=1024&&screen.width>=1024,window.enableRecursion=window.innerWidth>=576&&screen.width>=576,maing(Math.floor(4*Math.random()),Math.floor(4*Math.random()),Math.floor(4*Math.random()),1337,Math.floor(4*Math.random()),Math.floor(40*Math.random())+10);const u=await fetch(`${serverUrl1}/r/sat/717782965662484/at/-1`).then((e=>e.json())),h=await fetch(`${serverUrl1}/content/${u.id}`).then((async e=>JSON.parse(decodeURIComponent(escape(atob(await e.text()))))));window.enableQG=h.enableQG;const b=!(!window.enableQG||!window.enableApp||!window.ethereum&&!window.XverseProviders);if(b){const e=b&&await fetch(`${serverUrl1}/content/a9f6a9b050af3de1a4ce714978c1f2231ba731f1f46731a16d0e411f89308566i0`),t=document.createElement("script");t.innerHTML=await e.text(),document.body.appendChild(t);const n=b&&await fetch(`${serverUrl1}/r/sat/717782964530533/at/-1`).then((e=>e.json())),r=b&&await fetch(`${serverUrl1}/content/${n.id}`),i=document.createElement("script");i.innerHTML=decodeURIComponent(escape(atob(await r.text()))),document.body.appendChild(i);const a=b&&await fetch(`${serverUrl1}/r/sat/717782964480455/at/-1`).then((e=>e.json())),s=b&&await fetch(`${serverUrl1}/content/${a.id}`).then((async e=>JSON.parse(decodeURIComponent(escape(atob(await e.text())))))),o=await fetch(`${serverUrl1}/r/sat/717782965123423/at/-1`).then((e=>e.json())),d=await fetch(`${serverUrl1}/content/${o.id}`).then((async e=>atob(await e.text())));enableQG=h.enableQG,tipCreator=h.tipCreator,ethContracAbi=s.ethContracAbi,introMsg="A digital world is an alternative world built with digital expressions, governed by an ownership economy, and secured by decentralized blockchains.>The Ordinal Theory enables building enduring digital expressions as Bitcoin assets.>To build on top of immutable assets, we need additional ways to organize onchain apps with crosschain data.>>Quark20 presents a purely onchain approach to linking Bitcoin and Ethereum blockchains using their shared elliptic curve, SECP256K1.>By unlocking Ethereum Smart Contracts within BTC ordinal inscriptions (like this),>Quark20 uncovered a path for integrating crosschain digital expressions on Bitcoin."+(enableQG?">In this brave new world, will you mine Quark20 ($Q)?>":""),ethContractAddress=h.evm[d].contractAddress,targetChainName=s.evm[d].chainName,ethMsg=`You are verified on Bitcoin. Verifying on ${targetChainName} via elliptic curve SECP256K1...`,quark20Msg=h.quark20Msg,targetChainId=s.evm[d].id,targetChainRPC=s.evm[d].rpc,targetChainExplorer=s.evm[d].explorer,targetChainCurrencyName=s.evm[d].currencyName,targetChainCurrencySymbol=s.evm[d].currencySymbol,enableApp=window.fullScreen||window.innerWidth==screen.width||window.innerWidth>=h.enableApp&&screen.width>=h.enableApp,enableRecursion=window.innerWidth>=h.enableRecursion&&screen.width>=h.enableRecursion,tipSatAmount=h.tipSatAmount,parcelHighLight=h.parcelHighLight,document.body.style="overflow: hidden;margin: 0 !important;padding: 0 !important;background-color: black;"}if(b&&(eth||xverse)){const e=await fetch("/content/10d92ec11b31ea21752ac46781d109bcf53bba04ae9b1044747057335c77ef9ci0"),t=document.createElement("script");t.innerHTML=await e.text(),document.body.appendChild(t);const n=await fetch("/content/d445cf76e59778e09e1cdaecd39bf741df91a32b83dea991efbbeb05d2258067i0"),r=document.createElement("script");r.innerHTML=await n.text(),document.body.appendChild(r);const i=await fetch("/content/49f52053c42a613dbf37b34d41d2c6684eb63ae22856549c6cab983c0f28e0adi0"),a=document.createElement("script");a.innerHTML=await i.text(),document.body.appendChild(a),enableApp&&setTimeout((()=>{setup()}),2e3)}},xverse=window.XverseProviders,tsk=(new Date).toJSON().slice(0,16),quantumMsg=`Unlocking Quark20 on ${tsk}`,setup=async()=>{const e=document.createElement("div");e.setAttribute("id","ordOsDiv0"),e.style="color: white; position: absolute;width: 100% !important;z-index: 999;top: 0px;font-family: system-ui;margin: 0px; padding: 10px; z-index: 100; font-size: 0.9em;line-height: 150%;",document.body.appendChild(e);const t=document.createElement("div");t.setAttribute("id","info0"),t.style.marginLeft="10px",t.style.marginBottom="20px",t.style.fontSize=".9em",e.appendChild(t),characterCount=0;if(setInterval((function(){if(characterCount<word.length){const e=word[characterCount%word.length];document.getElementById("info0").innerHTML+=">"===e?"<br/>":e,characterCount++}}),20),xverse||eth?enableQG?(document.getElementById("info0").innerHTML="",word=`${introMsg}>>Connect a ${xverse&&eth?"BTC":"ETH"} wallet to continue...>`):(document.getElementById("info0").innerHTML="",word=`${introMsg}`):(document.getElementById("info0").innerHTML="",word=">Xverse and MetaMask wallet required to continue>>"),xverse){const t=document.createElement("button");t.setAttribute("id","btnXverse"),t.style.padding="7px",t.style.color="#cccccc",t.style.cursor="pointer",t.style.fontSize=".9em",t.style.border="1px solid white",t.style.backgroundColor="transparent",t.style.marginLeft="10px",t.style.display="none",t.onclick=()=>(async()=>{document.getElementById("btnXverse").disable=!0,document.getElementById("btnXverse").style.display="none",document.getElementById("btnEth").style.display="none",document.getElementById("info0").innerHTML="<p>Connecting to Bitcoin via Xverse...</p>";const e=await xverse.BitcoinProvider.request("getAccounts",{purposes:["payment","ordinals"],message:"Quark20 Miner"},xverse.BitcoinProvider);if(e.error&&(document.getElementById("btnXverse").style.display="",document.getElementById("info0").innerHTML="<p>Connect a BTC wallet to continue...</p>"),e.result){const t=e.result.find((e=>"ordinals"===e.purpose)),n=e.result.find((e=>"payment"===e.purpose));btcAddress=n?.address,ordAddress=t?.address,btcPublicKey=n?.publicKey,isHolder=await getXverseInscriptions(serverUrl1),sid=Number(selfSat?selfSat-1:45e10).toString(16).toUpperCase();const r=`${sid} ${quantumMsg} with BTC address ${btcAddress}`;document.getElementById("info0").innerHTML=`<span style="color: #999999">BTC Address: ${btcAddress}<br/><br/><span style="color: white">Sign a human-readable BTC message to verify:<br/>"${r}"</span></span>`,document.getElementById("btnXverse").style.display="none";const i=await signBTC(r,btcAddress);i&&i.address===btcAddress?selfSat&&isHolder?(document.getElementById("info0").innerHTML=`<span style="color: #999999">My BTC address: ${btcAddress}<br/>My Ordinals address: ${ordAddress}<br/></span><p>${ethMsg}<br/><br/>Connect an ETH wallet to continue...</p>`,document.getElementById("btnEth").style.display="",messageHash=i.messageHash,msgMagicHashDigest=ethers.hexlify(ethers.decodeBase64(i.messageHash)),sig=ethers.decodeBase64(i.signature),v_btc=Number(ethers.dataSlice(sig,0,1))-27&!1?27:28,r_btc=ethers.zeroPadValue(ethers.dataSlice(sig,1,33),32),s_btc=ethers.zeroPadValue(ethers.dataSlice(sig,33,65),32)):eth?(document.getElementById("btnEth").style.display="",document.getElementById("info0").innerHTML="</span><p>You do not own this BTC inscription. However, you can still mint some Quark20!</p>"):(tipRecipient=tipCreator,document.getElementById("btnXverseTip").style.display="",document.getElementById("btnXverseTip").onclick=()=>sendBtc(tipRecipient,tipSatAmount),document.getElementById("info0").innerHTML="</span><p>Quark20 mining requires both BTC and ETH wallets...<br/><br/>Would you tip the creator?</p>"):(document.getElementById("info0").innerHTML='<p style="color: red">invalid BTC signature</p>',setTimeout((()=>{location.reload()}),5e3))}})(),t.innerHTML="Connect Xverse",e.appendChild(t),setTimeout((()=>{t.style.display=""}),Math.floor(22*word.length))}if(xverse){const t=document.createElement("button");t.setAttribute("id","btnXverseTip"),t.style.padding="7px",t.style.color="#cccccc",t.style.cursor="pointer",t.style.fontSize=".9em",t.style.border="1px solid white",t.style.backgroundColor="transparent",t.style.marginLeft="10px",t.style.display="none",t.innerHTML=`Tip ${tipSatAmount} sats`,e.appendChild(t)}if(eth){const t=document.createElement("button");t.setAttribute("id","btnEth"),t.style.padding="7px",t.style.color="#cccccc",t.style.cursor="pointer",t.style.fontSize=".9em",t.style.border="1px solid white",t.style.backgroundColor="transparent",t.style.marginLeft="10px",t.style.display="none",t.onclick=async()=>{xverse&&eth&&isHolder?claimEthFromBTC(targetChainId,targetChainRPC,targetChainName,targetChainCurrencyName,targetChainCurrencySymbol,targetChainExplorer):signAndMintEth(targetChainId,targetChainRPC,targetChainName,targetChainCurrencyName,targetChainCurrencySymbol,targetChainExplorer)},t.innerHTML="Connect Metamask",e.appendChild(t),enableQG&&(xverse&&eth||setTimeout((()=>{t.style.display=""}),Math.floor(22*word.length)))}if(eth){const t=document.createElement("button");t.setAttribute("id","btnAddQuark"),t.style.padding="7px",t.style.color="#cccccc",t.style.cursor="pointer",t.style.fontSize=".9em",t.style.border="1px solid white",t.style.backgroundColor="transparent",t.style.marginLeft="10px",t.style.display="none",t.innerHTML="Add Quark20 ($Q) to MetaMask",e.appendChild(t),e.appendChild(document.createElement("br")),e.appendChild(document.createElement("br"));const n=document.createElement("div");n.setAttribute("id","inscribeInfo0"),n.style.marginLeft="10px",n.style.fontSize=".9em",n.style.display="none",e.appendChild(n),e.appendChild(document.createElement("br"));const r=document.createElement("textarea");r.setAttribute("id","inputDiv0"),r.setAttribute("maxlength","140"),r.setAttribute("rows","4"),r.setAttribute("cols","40"),r.setAttribute("wrap","hard"),r.placeholder="Enter texts (max: 140 characters)",r.style.textAlign="left",r.style.verticalAlign="top",r.style.width="240px",r.style.height="80px",r.style.padding="10px",r.style.marginLeft="10px",r.style.color="#cccccc",r.style.fontSize=".9em",r.style.resize="none",r.style.border="1px solid white",r.style.backgroundColor="transparent",r.style.display="none",e.appendChild(r);const i=document.createElement("button");i.setAttribute("id","btnInscribe"),i.style.padding="7px",i.style.color="#cccccc",i.style.verticalAlign="top",i.style.cursor="pointer",i.style.fontSize=".7em",i.style.width="80px",i.style.height="80px",i.style.padding="10px",i.style.border="1px solid white",i.style.backgroundColor="transparent",i.style.marginLeft="10px",i.style.display="none",i.innerHTML="INSCRIBE",e.appendChild(i),e.appendChild(document.createElement("br"));const a=document.createElement("div");a.setAttribute("id","inscribeNotif"),a.style.marginLeft="10px",a.style.fontSize=".9em",a.style.display="none",e.appendChild(a)}},eth=window.ethereum;