let characterCount=0,word="";const eth=window.ethereum,initGate=async()=>{document.body.style="overflow: hidden;margin: 0 !important;padding: 0 !important;background-color: black;";const t=document.createElement("div");t.setAttribute("id","atomView");const e=document.createElement("div");e.setAttribute("id","overlay0"),e.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 o=document.createElementNS("http://www.w3.org/2000/svg","animateTransform");o.setAttribute("attributeType","xml"),o.setAttribute("attributeName","transform"),o.setAttribute("type","translate"),o.setAttribute("values","0,0; 0,-5; 0,0; 0,5; 0,0"),o.setAttribute("keyTimes","0; 0.25; 0.5; 0.75; 1"),o.setAttribute("dur","1s"),o.setAttribute("repeatCount","indefinite"),o.setAttribute("calcMode","spline"),o.setAttribute("keySplines",".42 0 .58 1; .42 0 .58 1; .42 0 .58 1; .42 0 .58 1");const s=document.createElementNS("http://www.w3.org/2000/svg","g");s.setAttribute("transform","translate(700 700) scale(25 25)"),s.setAttribute("fill","#FEFFFE");const r=document.createElementNS("http://www.w3.org/2000/svg","path");r.setAttribute("fill-rule","nonzero"),r.setAttribute("d","m84.094 72.849c.288 2.083.856 3.639 1.701 4.67 1.547 1.877 4.196 2.815 7.949 2.815 2.248 0 4.073-.247 5.475-.742 2.66-.949 3.99-2.712 3.99-5.289 0-1.506-.66-2.671-1.979-3.496-1.32-.804-3.392-1.515-6.218-2.134l-4.825-1.082c-4.743-1.073-8.021-2.238-9.836-3.496-3.072-2.103-4.609-5.392-4.609-9.867 0-4.083 1.485-7.475 4.454-10.176 2.97-2.701 7.331-4.052 13.084-4.052 4.805 0 8.903 1.273 12.295 3.82 3.393 2.547 5.171 6.243 5.336 11.089h-9.156c-.165-2.743-1.361-4.691-3.588-5.846-1.484-.763-3.33-1.145-5.536-1.145-2.454 0-4.413.495-5.877 1.485s-2.196 2.371-2.196 4.145c0 1.629.721 2.846 2.165 3.65.928.536 2.907 1.165 5.939 1.887l7.856 1.886c3.444.825 6.042 1.928 7.795 3.31 2.722 2.145 4.083 5.248 4.083 9.31 0 4.166-1.593 7.625-4.779 10.378s-7.686 4.129-13.502 4.129c-5.938 0-10.609-1.356-14.011-4.068-3.403-2.711-5.104-6.438-5.104-11.181z");const i=o.cloneNode(!0),a=document.createElementNS("http://www.w3.org/2000/svg","path");a.setAttribute("fill-rule","nonzero"),a.setAttribute("d","m28 26v76h66v-7h-58v-62h58v-7z"),s.append(r),r.append(i),s.append(a),n.append(s),e.append(n),t.append(e);const c=document.createElement("canvas");if(c.setAttribute("id","atomCanvas"),t.append(c),document.body.appendChild(t),document.getElementById("atomCanvas").width=window.innerWidth,document.getElementById("atomCanvas").height=window.innerHeight,eth){const t=await fetch(`${serverUrl}/content/10d92ec11b31ea21752ac46781d109bcf53bba04ae9b1044747057335c77ef9ci0`),e=document.createElement("script");e.innerHTML=await t.text(),document.body.appendChild(e),(window.fullScreen||window.innerWidth==screen.width||window.innerWidth>=1024)&&setTimeout((()=>{setup()}),2e3)}},setup=async()=>{let t,e="";const n="Forging a Mithril Key to unlock the Quantum Gate...";function o(t){for(var e="",n=0;n<t.length;n++)e+=t.charCodeAt(n).toString(16);return e}const s=async()=>{document.getElementById("overlay0").style.display="none";const s=await eth.request({method:"eth_requestAccounts"}).catch((t=>{4001===t.code?console.log("Please connect to MetaMask."):(document.getElementById("btnEth").style.display="",console.error(t))}));e=s[0],console.log("ethAddress",e),document.getElementById("info0").innerHTML="",document.getElementById("infoEth").innerHTML=`<p style="color: #999999">ETH Address: ${e}<br/><br/><span style="color: white">${n}</span></p>`,document.getElementById("btnEth").style.display="none";const r=new ethers.BrowserProvider(window.ethereum),i=(await r.getNetwork()).chainId,a=Number(i);console.log("chainId",a),1444673419!==a&&(document.getElementById("btnEth").style.display="",await switchToSkale(),location.reload());const c=await r.getSigner();t=c;const l=await(async()=>{try{const t=e,s=o(n);return await eth.request({method:"personal_sign",params:[s,t]})}catch(t){return console.error(t),null}})();console.log("signedData",l);const d=Signature.from(l);console.log("r",d.r),console.log("s",d.s),console.log("v",d.v);const u=ethers.verifyMessage(o(n),l);console.log("Recovered Address:",u);const m=new ethers.Contract("0x9385A660b79D451e61D7A16Aa5cB7E1a65817e4f",["function unlock(string message, uint8 v, bytes32 r, bytes32 s) public returns ()"],t),h=await m.unlock(o(n),d.v,d.r,d.s);h&&h.hash&&(console.log("tx hash",h.hash),document.getElementById("infoEth").innerHTML='<p style="color: #999999">Verifying signed messages...<br/>Minting 0-99 tokens using SKALE RNG via Europa Hub Testnet...<br/>Just a moment...<br/>And, Good Luck!</p>',await h.wait(),document.getElementById("infoEth").innerHTML=`<p style="color: #999999">TX: ${h.hash}<br/><br/><b style="color: white">You unlocked the Quantum Gate!</b></p>`,console.log("done"))},r=document.createElement("div");r.setAttribute("id","ordOsDiv0"),r.style="color: white; position: absolute;width: 100% !important;z-index: 999;top: 0px;font-family: system-ui;margin: 0px; padding: 0px",document.getElementById("atomView").appendChild(r);const i=document.createElement("div");i.setAttribute("id","info0"),i.style.marginLeft="10px",i.style.marginBottom="20px",i.style.fontSize=".9em",r.appendChild(i);const a=document.createElement("div");if(a.setAttribute("id","infoEth"),a.style.marginLeft="10px",a.style.fontSize=".9em",r.appendChild(a),setInterval((function(){if(characterCount<word.length){const t=word[characterCount%word.length];document.getElementById("info0").innerHTML+=">"===t?"<br/>":t,characterCount++}}),40),eth?(document.getElementById("info0").innerHTML="",word=">Welcome to the Quantum Gate, a gate in-between BTC and SKALE...>>Connect MetaMask to unlock...>"):(document.getElementById("info0").innerHTML="",word=">No Metamask Wallet detected>>"),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.onclick=async()=>{e||s()},t.innerHTML="Unlock",r.appendChild(t)}},switchToSkale=async()=>{eth.request({method:"wallet_addEthereumChain",params:[{chainId:`0x${1444673419..toString(16)}`,rpcUrls:["https://testnet.skalenodes.com/v1/juicy-low-small-testnet"],chainName:"SKALE Europa Hub Testnet",nativeCurrency:{name:"sFUEL",symbol:"sFUEL",decimals:18},blockExplorerUrls:["https://juicy-low-small-testnet.explorer.testnet.skalenodes.com/"]}]})};