diff --git a/components/02-molecules/edit/FieldsContext.tsx b/components/02-molecules/edit/FieldsContext.tsx index a7e3f1b..391b855 100644 --- a/components/02-molecules/edit/FieldsContext.tsx +++ b/components/02-molecules/edit/FieldsContext.tsx @@ -3,7 +3,7 @@ import React, { createContext, useContext, useState, ReactNode } from "react"; import { isAddress } from "viem"; import _ from "lodash"; import validateBitcoinAddress from "bitcoin-address-validation"; -import { DomainData, TextRecords } from "@/lib/domain-page"; +import { DomainData } from "@/lib/domain-page"; interface FieldsContextType { profileFields: Field[]; @@ -320,13 +320,10 @@ const FieldsProvider: React.FC = ({ children }) => { // Update profile fields with corresponding text values const newProfileFields: Field[] = profileFields.map((field) => { - if (textsKeys.includes(field.label)) { - return { - ...field, - value: String(texts[field.label]), - }; - } - return field; + return { + ...field, + value: String(texts[field.label] ?? ""), + }; }); // Get the names of the coins from the addresses, or an empty array if no addresses exist @@ -351,22 +348,24 @@ const FieldsProvider: React.FC = ({ children }) => { }; } - return addressField; // Return the address field unchanged if no match is found + return { + ...addressField, + value: "", + }; // Return the address field unchanged if no match is found }); const newAccountsFields = accountsFields.map((field) => { - if (textsKeys.includes(field.label)) { - return { - ...field, - value: String(texts[field.label]), - }; - } - return field; + return { + ...field, + value: String(texts[field.label] ?? ""), + }; }); + const newFieldsByTab = { [Tab.Profile]: newProfileFields, [Tab.Accounts]: newAccountsFields, [Tab.Addresses]: populatedAddressFields, }; + [Tab.Profile, Tab.Accounts, Tab.Addresses].forEach((tab) => { setFields(tab, newFieldsByTab[tab]); setInitialFields(tab, newFieldsByTab[tab]); diff --git a/components/organisms/CreateSubdomainModalContent.tsx b/components/organisms/CreateSubdomainModalContent.tsx index 5a07ec0..c2fcc1b 100644 --- a/components/organisms/CreateSubdomainModalContent.tsx +++ b/components/organisms/CreateSubdomainModalContent.tsx @@ -4,8 +4,9 @@ import { buildENSName } from "@namehash/ens-utils"; import { normalize } from "viem/ens"; import { useState } from "react"; import toast from "react-hot-toast"; -import { Address } from "viem"; +import { Address, isAddress } from "viem"; import { useAccount } from "wagmi"; +import { NewSubdomainInfo } from "./NewSubdomainInfo"; interface CreateSubdomainModalContentProps { name: string; @@ -15,6 +16,13 @@ interface CreateSubdomainModalContentProps { alreadyCreatedSubdomains?: string[]; } +enum CreateSubdomainModalSteps { + SubdomainInput = "SubdomainInput", + ProfileSettings = "ProfileSettings", + Confirmation = "Confirmation", + Success = "Success", +} + export const CreateSubdomainModalContent = ({ currentResolverAddress, onCloseModal, @@ -23,9 +31,14 @@ export const CreateSubdomainModalContent = ({ alreadyCreatedSubdomains, }: CreateSubdomainModalContentProps) => { const [newSubdomain, setNewSubdomain] = useState(""); - const [transactionSuccess, setTransactionSuccess] = useState(false); + const [subdomainAddress, setSubdomainAddress] = useState(""); + const [website, setWebsite] = useState(""); + const [description, setDescription] = useState(""); const [isLoading, setIsloading] = useState(false); const authedUser = useAccount(); + const [currentStep, setCurrentStep] = useState( + CreateSubdomainModalSteps.SubdomainInput + ); const isSubdomainInvalid = () => { try { @@ -47,11 +60,14 @@ export const CreateSubdomainModalContent = ({ resolverAddress: currentResolverAddress, signerAddress: authedUser.address!, name: `${newSubdomain}.${name}`, + address: subdomainAddress, + website: website, + description: description, }); if (response?.ok) { !!onRecordsEdited && onRecordsEdited(); - setTransactionSuccess(true); toast.success("Subdomain created successfully 🙂"); + setCurrentStep(CreateSubdomainModalSteps.Success); } } catch (error) { console.log(error); @@ -60,40 +76,127 @@ export const CreateSubdomainModalContent = ({ setIsloading(false); }; + var urlRegex = + /^(?:([A-Za-z]+):)?(\/{0,3})([0-9.\-A-Za-z]+)(?::(\d+))?(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*))?$/; + + // Map each step to a corresponding JSX element + const stepComponents: Record = { + [CreateSubdomainModalSteps.SubdomainInput]: ( + setNewSubdomain(e.target.value.toLowerCase())} + suffix={`.${name}`} + error={isSubdomainInvalid()} + /> + ), + [CreateSubdomainModalSteps.ProfileSettings]: ( + <> +

+ Adjust your information and personalize your profile. +

+ setSubdomainAddress(e.target.value.toLowerCase())} + error={ + subdomainAddress.length && + !isAddress(subdomainAddress) && + "Invalid Address" + } + /> + setWebsite(e.target.value.toLowerCase())} + error={ + website !== "" && !website.match(urlRegex) && "Invalid Website" + } + /> + setDescription(e.target.value.toLowerCase())} + /> + + ), + [CreateSubdomainModalSteps.Confirmation]: ( + <> + + + ), + [CreateSubdomainModalSteps.Success]: ( + <> +

🎉

+
+

+ Congratulations! +

+

New subdomain created!

+
+ + ), + }; + + // Map each step to a corresponding validation function + const stepValidation: Record boolean> = { + [CreateSubdomainModalSteps.SubdomainInput]: () => { + return !!newSubdomain.length; + }, + [CreateSubdomainModalSteps.ProfileSettings]: () => { + return subdomainAddress === "" || isAddress(subdomainAddress); + }, + [CreateSubdomainModalSteps.Confirmation]: () => true, + [CreateSubdomainModalSteps.Success]: () => true, + }; + + const handleNextStep = () => { + switch (currentStep) { + case CreateSubdomainModalSteps.SubdomainInput: + setCurrentStep(CreateSubdomainModalSteps.ProfileSettings); + break; + case CreateSubdomainModalSteps.ProfileSettings: + setCurrentStep(CreateSubdomainModalSteps.Confirmation); + break; + case CreateSubdomainModalSteps.Confirmation: + setCurrentStep(CreateSubdomainModalSteps.Success); + break; + case CreateSubdomainModalSteps.Success: + setCurrentStep(CreateSubdomainModalSteps.SubdomainInput); + break; + } + }; + return (
New subdomain
- {transactionSuccess ? ( - <> -

🎉

-
-

- Congratulations! -

-

New subdomain created!

-
- - ) : ( - setNewSubdomain(e.target.value.toLowerCase())} - suffix={`.${name}`} - error={isSubdomainInvalid()} - /> - )} + {stepComponents[currentStep]} {isLoading &&

Check your wallet

}
- {transactionSuccess ? ( + {currentStep === CreateSubdomainModalSteps.Success ? ( <>
@@ -106,11 +209,22 @@ export const CreateSubdomainModalContent = ({ Cancel
-
- -
+ {currentStep === CreateSubdomainModalSteps.Confirmation ? ( +
+ +
+ ) : ( +
+ +
+ )} )}
diff --git a/components/organisms/NewSubdomainInfo.tsx b/components/organisms/NewSubdomainInfo.tsx new file mode 100644 index 0000000..0617f56 --- /dev/null +++ b/components/organisms/NewSubdomainInfo.tsx @@ -0,0 +1,52 @@ +import { EthSVG } from "@ensdomains/thorin"; +import Avatar from "boring-avatars"; + +interface NewSubdomainInfoProps { + domain: string; + website: string; + description: string; + ethAddress: string; +} + +export const NewSubdomainInfo = ({ + domain = "new domain", + website, + description, + ethAddress, +}: NewSubdomainInfoProps) => { + return ( + <> +

+ Check your information before confirming in your wallet +

+
+
+
+ +
+

{domain}

+

{website}

+
+
+

{description}

+
+ +
+
+
+ +

ETH Address

+
+

{ethAddress}

+
+
+
+ + ); +}; diff --git a/components/organisms/ProfileTabBody.tsx b/components/organisms/ProfileTabBody.tsx index 8d2bb8f..1f1bd13 100644 --- a/components/organisms/ProfileTabBody.tsx +++ b/components/organisms/ProfileTabBody.tsx @@ -133,11 +133,13 @@ export const ProfileTabBody = ({ domainData }: ProfileTabProps) => { )} - + {domainData?.parent && ( + + )}
diff --git a/components/organisms/SubdomainsTabBody.tsx b/components/organisms/SubdomainsTabBody.tsx index 12c2db5..202999f 100644 --- a/components/organisms/SubdomainsTabBody.tsx +++ b/components/organisms/SubdomainsTabBody.tsx @@ -53,7 +53,6 @@ export const SubdomainsTabBody = ({ {subdomainsArray?.length ? ( void; } @@ -34,8 +36,16 @@ export const UserDomainCard = ({ linkedIn, description, onRecordsEdited, + owner, }: UserDomainCardProps) => { const [modalOpen, setModalOpen] = useState(false); + const { address } = useAccount(); + + const { data: authedUserName } = useEnsName({ + address: address, + }); + + const showEditButton: boolean = authedUserName === owner || address === owner; return (
@@ -63,17 +73,19 @@ export const UserDomainCard = ({
)} -
- -
+ {showEditButton && ( +
+ +
+ )}
diff --git a/lib/abi/database-resolver.json b/lib/abi/database-resolver.json index ec62e27..cff0b63 100644 --- a/lib/abi/database-resolver.json +++ b/lib/abi/database-resolver.json @@ -1 +1,1723 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"newGatewayUrl","type":"string","internalType":"string"},{"name":"newOffChainDatabaseTimeoutDuration","type":"uint256","internalType":"uint256"},{"name":"newSigners","type":"address[]","internalType":"address[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"addSigners","inputs":[{"name":"signersToAdd","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addr","inputs":[{"name":"node","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address payable"}],"stateMutability":"view"},{"type":"function","name":"addr","inputs":[{"name":"node","type":"bytes32","internalType":"bytes32"},{"name":"coinType","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"contenthash","inputs":[{"name":"node","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"gatewayDatabaseTimeoutDuration","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"gatewayUrl","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"isSigner","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[{"name":"node","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"register","inputs":[{"name":"node","type":"bytes32","internalType":"bytes32"},{"name":"ttl","type":"uint32","internalType":"uint32"}],"outputs":[],"stateMutability":"view"},{"type":"function","name":"removeSigners","inputs":[{"name":"signersToRemove","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"resolve","inputs":[{"name":"name","type":"bytes","internalType":"bytes"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"resolveWithProof","inputs":[{"name":"response","type":"bytes","internalType":"bytes"},{"name":"extraData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"setAddr","inputs":[{"name":"node","type":"bytes32","internalType":"bytes32"},{"name":"coinType","type":"uint256","internalType":"uint256"},{"name":"a","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setAddr","inputs":[{"name":"node","type":"bytes32","internalType":"bytes32"},{"name":"a","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setContenthash","inputs":[{"name":"node","type":"bytes32","internalType":"bytes32"},{"name":"hash","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setGatewayUrl","inputs":[{"name":"newUrl","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setName","inputs":[{"name":"node","type":"bytes32","internalType":"bytes32"},{"name":"name","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOffChainDatabaseTimoutDuration","inputs":[{"name":"newDuration","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setText","inputs":[{"name":"node","type":"bytes32","internalType":"bytes32"},{"name":"key","type":"string","internalType":"string"},{"name":"value","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"signers","inputs":[],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceID","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"text","inputs":[{"name":"node","type":"bytes32","internalType":"bytes32"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"AddrChanged","inputs":[{"name":"node","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"a","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"AddressChanged","inputs":[{"name":"node","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"coinType","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newAddress","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"ContenthashChanged","inputs":[{"name":"node","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"hash","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"GatewayUrlSet","inputs":[{"name":"previousUrl","type":"string","indexed":true,"internalType":"string"},{"name":"newUrl","type":"string","indexed":true,"internalType":"string"}],"anonymous":false},{"type":"event","name":"L2HandlerContractAddressChanged","inputs":[{"name":"chainId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"previousContractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"newContractAddress","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"L2HandlerDefaultChainIdChanged","inputs":[{"name":"previousChainId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"newChainId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"NameChanged","inputs":[{"name":"node","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"name","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OffChainDatabaseHandlerURLChanged","inputs":[{"name":"previousUrl","type":"string","indexed":true,"internalType":"string"},{"name":"newUrl","type":"string","indexed":true,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OffChainDatabaseTimeoutDurationSet","inputs":[{"name":"previousDuration","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newDuration","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SignerAdded","inputs":[{"name":"addedSigner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SignerRemoved","inputs":[{"name":"removedSigner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"TextChanged","inputs":[{"name":"node","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"indexedKey","type":"string","indexed":true,"internalType":"string"},{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"value","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"error","name":"OffchainLookup","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"urls","type":"string[]","internalType":"string[]"},{"name":"callData","type":"bytes","internalType":"bytes"},{"name":"callbackFunction","type":"bytes4","internalType":"bytes4"},{"name":"extraData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"SignatureVerifier__InvalidSignature","inputs":[{"name":"cause","type":"string","internalType":"string"}]},{"type":"error","name":"StorageHandledByL2","inputs":[{"name":"chainId","type":"uint256","internalType":"uint256"},{"name":"contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"StorageHandledByOffChainDatabase","inputs":[{"name":"sender","type":"tuple","internalType":"struct IWriteDeferral.domainData","components":[{"name":"name","type":"string","internalType":"string"},{"name":"version","type":"string","internalType":"string"},{"name":"chainId","type":"uint64","internalType":"uint64"},{"name":"verifyingContract","type":"address","internalType":"address"}]},{"name":"url","type":"string","internalType":"string"},{"name":"data","type":"tuple","internalType":"struct IWriteDeferral.messageData","components":[{"name":"functionSelector","type":"bytes4","internalType":"bytes4"},{"name":"sender","type":"address","internalType":"address"},{"name":"parameters","type":"tuple[]","internalType":"struct IWriteDeferral.parameter[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"value","type":"string","internalType":"string"}]},{"name":"expirationTimestamp","type":"uint256","internalType":"uint256"}]}]}],"bytecode":{"object":"0x60806040818152346200042057620026d080380380916200002182866200043b565b84398201606083820312620004205782516001600160401b0391908281116200042057840193601f92828487011215620004205785516020918082116200042557601f19978751926200007b858b8a84011601856200043b565b8084528685828401011162000420576200009b918580860191016200045f565b82840151938781015190828211620004205701858782011215620004205780519582871162000425576005918760051b908a5198620000dd8884018b6200043b565b895286808a019282010192831162000420578601905b828210620003ff57505060008054336001600160a01b0319821681178355919892506001600160a01b03919082167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08a80a3815191885b838110620003905750505050508651908596600197885490846200016e8362000484565b80825291838c1689811562000371575060011462000330575b62000195925003856200043b565b84519283116200031c57620001aa9062000484565b818111620002d8575b5088998799989950859183116001146200025a575091600080516020620026b0833981519152988262000205936200020c958a916200024e575b50600019600383901b1c191690821b179055620004c1565b91620004c1565b907f89e3f76277bf08e4371bcc677d04c7d3ab8fcef918f05d5e9668c532f3bd120786519580a3600254826002558352820152a15161212c9081620005848239f35b905086015138620001ed565b898852858820999291908216885b818110620002bf57509282600080516020620026b08339815191529b82936200020c9795620002059710620002a5575b5050811b019055620004c1565b88015160001960f88460031b161c19169055388062000298565b828701518c559a84019a8c9a5091870191870162000268565b8888528588208280850160051c82019288861062000312575b0160051c01905b818110620003075750620001b3565b8881558901620002f8565b92508192620002f1565b634e487b7160e01b88526041600452602488fd5b50508989528487808b208c8c915b8583106200035757505062000195935082010162000187565b80919294505483858b01015201910188908c88936200033e565b915050620001959260ff19851682840152151560051b82010162000187565b8151811015620003eb57808389600193881b8501015116620003b281620004e3565b620003c0575b50016200014a565b7f47d1c22a25bb3a5d4e481b9b1e6944c2eade3181a0a20b495ed61d35b5323f248c80a238620003b8565b634e487b7160e01b8a52603260045260248afd5b81516001600160a01b038116810362000420578152908601908601620000f3565b600080fd5b634e487b7160e01b600052604160045260246000fd5b601f909101601f19168101906001600160401b038211908210176200042557604052565b60005b838110620004735750506000910152565b818101518382015260200162000462565b90600182811c92168015620004b6575b6020831014620004a057565b634e487b7160e01b600052602260045260246000fd5b91607f169162000494565b620004db906020604051928284809451938492016200045f565b810103902090565b6000818152600460205260408120546200057e57600354680100000000000000008110156200056a57600181018060035581101562000556577fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0182905560035491815260046020526040902055600190565b634e487b7160e01b82526032600452602482fd5b634e487b7160e01b82526041600452602482fd5b90509056fe6080604052600436101561001257600080fd5b60003560e01c806301ffc9a71461019d57806310f13a8c146101985780631787080e1461019357806327a5f3af1461018e578063304e6ade146101895780633b3b57de1461014857806346f0975a1461018457806359d1d43c1461017f578063691f343114610148578063715018a61461017a57806377372213146101755780637df73e27146101705780638b95dd711461016b5780638bf165d9146101665780638c92c8c3146101615780638d361e431461015c5780638da5cb5b146101575780639061b92314610152578063b2c20f4e1461014d578063bc1c58d114610148578063d5fa2b0014610143578063e8906a2d1461013e578063f1cb7e0614610139578063f2fde38b146101345763f4d4d2f81461012f57600080fd5b6110ae565b610fe7565b610fd0565b610f02565b610e90565b61065d565b610e19565b610d74565b610cf4565b610c78565b610c0e565b610bcf565b6109a0565b610875565b6107ee565b610793565b61077d565b610674565b6105b9565b610532565b6103c0565b6102d2565b346102a05760203660031901126102a05760043563ffffffff60e01b81168091036102a05761021c90639061b92360e01b811490811561028f575b811561027e575b811561026d575b811561025c575b811561024b575b811561023a575b8115610229575b8115610220575b5060405190151581529081906020820190565b0390f35b90501538610209565b6378e5bf0360e11b81149150610202565b63bc1c58d160e01b811491506101fb565b63691f343160e01b811491506101f4565b631674750f60e21b811491506101ed565b63c869023360e01b811491506101e6565b631101d5ab60e11b811491506101df565b631d9dabef60e11b811491506101d8565b600080fd5b9181601f840112156102a0578235916001600160401b0383116102a057602083818601950101116102a057565b346102a05760603660031901126102a0576001600160401b036024358181116102a0576103039036906004016102a5565b916044359081116102a05761031c9036906004016102a5565b919061032661124b565b938451156103bb576103936103b4936020870151610342611349565b905261035c61034f6114b4565b600435602082015261184c565b602061036789611308565b51015261037387611315565b5161037c611369565b9052602061038988611315565b510192369161094b565b905261039e84611325565b516103a7611388565b9052602061038985611325565b9052611656565b6112f2565b346102a0576020806003193601126102a0576001600160401b036004358181116102a0576103f56104049136906004016102a5565b6103fd611706565b369161094b565b916040519161041d8361041681610a97565b0384610900565b835190811161052d5760019161043c826104378554610a5d565b61175e565b602090601f83116001146104b557509161047582610482959361047c956000916104aa575b508160011b916000199060031b1c19161790565b90556117d9565b916117d9565b907f89e3f76277bf08e4371bcc677d04c7d3ab8fcef918f05d5e9668c532f3bd1207600080a3005b905087015138610461565b600160005290601f1983166000805160206120d7833981519152926000905b82821061051657505092849261047c9592826104829896106104fd575b5050811b0190556117d9565b88015160001960f88460031b161c1916905538806104f1565b808785968294968c015181550195019301906104d4565b6108b4565b346102a05760203660031901126102a0577f96c6caf9f42ebbbb9ba734bc86cf4885bd740fa956cdc9e642cafdb29d1b0e9b6040600435610571611706565b600254908060025582519182526020820152a1005b9060406003198301126102a05760043591602435906001600160401b0382116102a0576105b5916004016102a5565b9091565b346102a0576105c736610586565b90916105d1611297565b928351156103bb57610600602085019283516105eb611349565b90526105f56114b4565b90602082015261184c565b928451156103bb5761064a9360206106459451015261061e85611315565b516040519061062c826108ca565b60048252630d0c2e6d60e31b602083015252369161094b565b61184c565b602061065583611315565b510152611656565b346102a0576020366003190112156113a957600080fd5b346102a0576000806003193601126107325760405180916003549081835260208093018092600383527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90835b81811061071e57505050846106d7910385610900565b60405193838594850191818652518092526040850193925b8281106106fe57505050500390f35b83516001600160a01b0316855286955093810193928101926001016106ef565b8254845292860192600192830192016106c1565b80fd5b60005b8381106107485750506000910152565b8181015183820152602001610738565b9060209161077181518092818552858086019101610735565b601f01601f1916010190565b346102a05761078b36610586565b5050506113a9565b346102a057600080600319360112610732576107ad611706565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b346102a0576107fc36610586565b9091610806611297565b928351156103bb57610820602085019283516105eb611349565b8451156103bb5760206103b49351015261083984611315565b5160405190610847826108ca565b60048252636e616d6560e01b602083015252602061038985611315565b6001600160a01b038116036102a057565b346102a05760203660031901126102a05760043561089281610864565b60018060a01b0316600052600460205260206040600020541515604051908152f35b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761052d57604052565b608081019081106001600160401b0382111761052d57604052565b90601f801991011681019081106001600160401b0382111761052d57604052565b6040519061092e826108e5565b565b6001600160401b03811161052d57601f01601f191660200190565b92919261095782610930565b916109656040519384610900565b8294818452818301116102a0578281602093846000960137010152565b9080601f830112156102a05781602061099d9335910161094b565b90565b346102a05760603660031901126102a0576044356001600160401b0381116102a0576109d0903690600401610982565b6109d861124b565b908151156103bb57610a529060208301516109f1611349565b90526109fe61034f6114b4565b6020610a0985611308565b510152610a1583611315565b51610a1e611429565b9052610a2b602435611ad6565b6020610a3685611315565b510152610a4283611325565b51610a4b61144e565b905261184c565b602061065583611325565b90600182811c92168015610a8d575b6020831014610a7757565b634e487b7160e01b600052602260045260246000fd5b91607f1691610a6c565b90600091600190600154610aaa81610a5d565b8083529260209160018116908115610b155750600114610acb575b50505050565b9293945060016000526000805160206120d7833981519152926000935b858510610b02575050506020925001019038808080610ac5565b8054858501840152938201938101610ae8565b92505050602093945060ff929192191683830152151560051b01019038808080610ac5565b90600091600190600154610b4d81610a5d565b8083529260209160018116908115610b155750600114610b6d5750505050565b9293945060016000526000805160206120d7833981519152926000935b858510610ba4575050506020925001019038808080610ac5565b8054858501840152938201938101610b8a565b6040519061092e82610bc881610b3a565b0383610900565b346102a05760003660031901126102a05761021c604051610bfa81610bf381610a97565b0382610900565b604051918291602083526020830190610758565b346102a05760003660031901126102a0576020600254604051908152f35b9060206003198301126102a0576004356001600160401b03928382116102a057806023830112156102a05781600401359384116102a05760248460051b830101116102a0576024019190565b346102a057610c8636610c2c565b610c8e611706565b60005b818110610c9a57005b8060019160051b840135610cad81610864565b828060a01b0316610cbd81611d04565b610cc9575b5001610c91565b7f3525e22824a8a7df2c9a6029941c824cf95b6447f1e13d5128fd3826d35afe8b600080a238610cc2565b346102a05760003660031901126102a0576000546040516001600160a01b039091168152602090f35b60406003198201126102a0576001600160401b03916004358381116102a05782610d49916004016102a5565b939093926024359182116102a0576105b5916004016102a5565b90602061099d928181520190610758565b346102a057610d8236610d1d565b92509050604051610d92816108ca565b6001815260005b602080821015610db457906060602092828501015201610d99565b5050610e1583610dc2610bb7565b610dcb84611308565b52610dd583611308565b5060405190610dfb82610ded3084896020850161198e565b03601f198101845283610900565b604051630556f18360e41b815294859430600487016119a7565b0390fd5b346102a05760403660031901126102a05760243563ffffffff81168091036102a057610e43611297565b908151156103bb5760208201908151610e5a611349565b9052610e6761034f6114b4565b8351156103bb57602061064a93510152610e8083611315565b51610e89611471565b9052611ad6565b346102a05760403660031901126102a057602435610ead81610864565b610eb5611297565b908151156103bb5760208201908151610ecc611349565b9052610ed961034f6114b4565b8351156103bb57602061064a93510152610ef283611315565b51610efb61144e565b9052611c1a565b346102a057610f1036610c2c565b90610f19611706565b610f2282611234565b90610f306040519283610900565b828252602092602083019060051b8201913683116102a057905b828210610fb75783805160005b818110610f6057005b6001906001600160a01b03610f758286611335565b5116610f8081611e64565b610f8c575b5001610f57565b7f47d1c22a25bb3a5d4e481b9b1e6944c2eade3181a0a20b495ed61d35b5323f24600080a284610f85565b8480918335610fc581610864565b815201910190610f4a565b346102a0576040366003190112156113a957600080fd5b346102a05760203660031901126102a05760043561100481610864565b61100c611706565b6001600160a01b03908116801561105a57600080546001600160a01b03198116831782559092167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346102a0576110bc36610d1d565b92918201926060838503126102a0576001600160401b039280358481116102a057856110e9918301610982565b946020820135858116958682036102a05760408401359081116102a05761113c9561111d8994611126936111379701610982565b95810190611c3b565b9091906001600160a01b0316611db6565b611e4f565b9042116111fa57604051637df73e2760e01b81526001600160a01b03919091166004820152602081602481305afa9081156111f5576000916111c6575b501561118f5761021c9060405191829182610d63565b604051636ee8a75560e01b815260206004820152600e60248201526d34b73b30b634b21039b4b3b732b960911b6044820152606490fd5b6111e8915060203d6020116111ee575b6111e08183610900565b810190611490565b38611179565b503d6111d6565b6114a8565b604051636ee8a75560e01b81526020600482015260116024820152701cda59db985d1d5c9948195e1c1a5c9959607a1b6044820152606490fd5b6001600160401b03811161052d5760051b60200190565b60409060405161125a816108e5565b60038152809160005b60608082101561128f5785516020929161127c826108ca565b8082528382015284820183015201611263565b505091925050565b60409060405191606092606081018181106001600160401b0382111761052d5760405260028152809360005b8381106112d05750505050565b60209084516112de816108ca565b8381528284818301528286010152016112c3565b634e487b7160e01b600052603260045260246000fd5b8051156103bb5760200190565b8051600110156103bb5760400190565b8051600210156103bb5760600190565b80518210156103bb5760209160051b010190565b60405190611356826108ca565b60048252636e6f646560e01b6020830152565b60405190611376826108ca565b60038252626b657960e81b6020830152565b60405190611395826108ca565b600582526476616c756560d81b6020830152565b6040516113b5816108ca565b6001815260005b602090818110156113d75760606020928285010152016113bc565b826113e0610bb7565b6113e982611308565b526113f381611308565b506040519061140a82610ded303660208401611966565b610e15604051928392630556f18360e41b845236903060048601611a4d565b60405190611436826108ca565b6009825268636f696e5f7479706560b81b6020830152565b6040519061145b826108ca565b60078252666164647265737360c81b6020830152565b6040519061147e826108ca565b60038252621d1d1b60ea1b6020830152565b908160209103126102a0575180151581036102a05790565b6040513d6000823e3d90fd5b604051906114c1826108ca565b60208083523683820137565b906114d782610930565b6114e46040519182610900565b82815280926114f5601f1991610930565b0190602036910137565b634e487b7160e01b600052601160045260246000fd5b906001820180921161152357565b6114ff565b9190820180921161152357565b90916060825261155183516080606085015260e0840190610758565b9261156d60209485830151605f19868303016080870152610758565b6040828101516001600160401b031660a08601526060909201516001600160a01b0390811660c086015284820386860152906115a890610b3a565b9382818603910152608084019063ffffffff60e01b84511685528584015116858501528183015194608083860152855180925260a08501928160a08460051b8801019701936000915b84831061160a5750505050505060608091015191015290565b9091929394978480611646600193609f198c82030187528c519083611636835189845289840190610758565b9201519084818403910152610758565b9a019301930191949392906115f1565b604051611662816108ca565b601081526f2230ba30b130b9b2a932b9b7b63b32b960811b602082015260405161168b816108ca565b60018152603160f81b60208201526116a1610921565b9182526020820152600160408201523060608201526116c260025442611528565b6116ca610921565b6000356001600160e01b03191681529233602085015260408401526060830152610e15604051928392634bd55edd60e01b845260048401611535565b6000546001600160a01b0316330361171a57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b90601f821161176b575050565b60019160009060016000526000805160206120d7833981519152906020601f850160051c830194106117b8575b601f0160051c01915b8281106117ae5750505050565b81815583016117a1565b9092508290611798565b906117d560209282815194859201610735565b0190565b6117f190602060405192828480945193849201610735565b810103902090565b60405190611806826108ca565b601082526f181899199a1a9b1b9c1cb0b131b232b360811b6020830152565b9081518110156103bb570160200190565b908160011b918083046002149015171561152357565b906118556117f9565b611868611863845160011b90565b6114cd565b9060009360005b81518110156118ed57806118c861189c6001809486010151600f906118aa61189c838360041c168a611825565b516001600160f81b03191690565b6118c06118b687611836565b918d1a918b611825565b531686611825565b6118e66118dc6118d784611836565b611515565b91891a9187611825565b530161186f565b505060405161060f60f31b602082015292935061099d918391506119159060228301906117c2565b03601f198101835282610900565b90602091808252806000848401376000828201840152601f01601f1916010190565b908060209392818452848401376000828201840152601f01601f1916010190565b9061197e602091949394604084526040840190611923565b6001600160a01b03909416910152565b9160209161197e91959495604085526040850191611945565b93919594929060a085019060018060a01b0316855260209060a06020870152875180915260c0860191602060c08360051b8901019901926000905b838210611a2057505050505094611a059161099d95968583036040870152611945565b631e9a9a5f60e31b6060840152916080818403910152610758565b90919293998380611a3e6001938e8d60bf1990830301875251610758565b9c0192019201909392916119e2565b92909493919460a084019060018060a01b0316845260209060a06020860152865180915260c0850191602060c08360051b8801019801926000905b838210611aaa57505050505084611a05918461099d9697036040860152611923565b90919293988380611ac760019360bf198c82030186528d51610758565b9b019201920190939291611a88565b806000917a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000080821015611c0c575b506d04ee2d6d415b85acef810000000080831015611bfd575b50662386f26fc1000080831015611bee575b506305f5e10080831015611bdf575b5061271080831015611bd0575b506064821015611bc0575b600a80921015611bb6575b600190816021611b6e600187016114cd565b95860101905b611b80575b5050505090565b600019019083906f181899199a1a9b1b9c1cb0b131b232b360811b8282061a835304918215611bb157919082611b74565b611b79565b9160010191611b5c565b9190606460029104910191611b51565b60049193920491019138611b46565b60089193920491019138611b39565b60109193920491019138611b2a565b60209193920491019138611b18565b604093508104915038611aff565b60405161099d91611c2a826108ca565b6014825260601b602082015261184c565b91906040838203126102a05782356001600160401b0381116102a057602091611c65918501610982565b92013561099d81610864565b6003548110156103bb5760036000527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0190600090565b6003548015611cee57600019810190808210156103bb577fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85a600091600383520155600355565b634e487b7160e01b600052603160045260246000fd5b6000818152600460205260409020548015611daf57600019918183019180831161152357600354938401938411611523578383611d5f9460009603611d65575b505050611d4f611ca8565b6000526004602052604060002090565b55600190565b611d4f611d8d91611d85611d7b611da695611c71565b90549060031b1c90565b928391611c71565b90919082549060031b91821b91600019901b1916179055565b55388080611d44565b5050600090565b92909160208151910120906020815191012090604051926020840194601960f81b86526bffffffffffffffffffffffff199060601b1660228501526001600160401b0360c01b9060c01b166036840152603e830152605e820152605e8152611e1d816108e5565b5190207f19457468657265756d205369676e6564204d6573736167653a0a333200000000600052601c52603c60002090565b61099d91611e5c91611ee0565b919091611f34565b80600052600460205260406000205415600014611eda576003546801000000000000000081101561052d5760018101806003558110156103bb5781907fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0155600354906000526004602052604060002055600190565b50600090565b906041815114600014611f0a576105b5916020820151906060604084015193015160001a90612054565b5050600090600290565b60051115611f1e57565b634e487b7160e01b600052602160045260246000fd5b611f3d81611f14565b80611f455750565b611f4e81611f14565b60018103611f9b5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606490fd5b611fa481611f14565b60028103611ff15760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b80611ffd600392611f14565b1461200457565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083116120ca5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156111f55781516001600160a01b038116156120c4579190565b50600190565b5050505060009060039056feb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6a264697066735822122034ed98507cbb54da25bec441826ae8bc1f83c61dff17f7623ce15bc955c3a6b864736f6c6343000818003396c6caf9f42ebbbb9ba734bc86cf4885bd740fa956cdc9e642cafdb29d1b0e9b","sourceMap":"1467:15093:150:-:0;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;1467:15093:150;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1467:15093:150;;734:10:83;-1:-1:-1;;;;;;1467:15093:150;;;;;;-1:-1:-1;;;;;;;;;1467:15093:150;734:10:83;1467:15093:150;;2566:40:75;-1:-1:-1;;2566:40:75;1467:15093:150;;15576:13;;15591:10;;;;;;1467:15093;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1467:15093:150;;14762:34;1467:15093;14762:34;1467:15093;;;;;;-1:-1:-1;;;15672:8:150;1467:15093;;;;;;;;;;;;14762:34;:::i;:::-;;;:::i;:::-;1467:15093;14762:34;1467:15093;;14762:34;;;15111:30;1467:15093;;15111:30;1467:15093;;;;;;15211:65;1467:15093;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1467:15093:150;;;14762:34;1467:15093;;14762:34;1467:15093;;;;;;;;;;;;14762:34;:::i;1467:15093::-;;;;;;;;15672:8;1467:15093;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1467:15093:150;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1467:15093:150;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15603:3;1467:15093;;;;;;;;;;;;;;;;;;;6046:50:164;;;:::i;:::-;15668::150;;15603:3;;1467:15093;15576:13;;15668:50;15699:19;;;;15668:50;;;1467:15093;-1:-1:-1;;;1467:15093:150;;;;;;;;;;;-1:-1:-1;;;;;1467:15093:150;;;;;;;;;;;;;;;;;-1:-1:-1;1467:15093:150;;;;;;-1:-1:-1;1467:15093:150;;;;;-1:-1:-1;1467:15093:150;;;;;;-1:-1:-1;;1467:15093:150;;;;-1:-1:-1;;;;;1467:15093:150;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;1467:15093:150;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::o;2125:404:164:-;-1:-1:-1;1467:15093:150;;;4312:12:164;1467:15093:150;;;;;;;;15672:8;1467:15093;;;;;;;4312:12:164;1467:15093:150;;;15672:8;1467:15093;;;;;;;;;;;15672:8;1467:15093;;;;4312:12:164;1467:15093:150;;;;;;4312:12:164;;2458:11::o;1467:15093:150:-;-1:-1:-1;;;1467:15093:150;;;4312:12:164;1467:15093:150;;;;;-1:-1:-1;;;1467:15093:150;;;4312:12:164;1467:15093:150;;;;2204:319:164;2500:12;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436101561001257600080fd5b60003560e01c806301ffc9a71461019d57806310f13a8c146101985780631787080e1461019357806327a5f3af1461018e578063304e6ade146101895780633b3b57de1461014857806346f0975a1461018457806359d1d43c1461017f578063691f343114610148578063715018a61461017a57806377372213146101755780637df73e27146101705780638b95dd711461016b5780638bf165d9146101665780638c92c8c3146101615780638d361e431461015c5780638da5cb5b146101575780639061b92314610152578063b2c20f4e1461014d578063bc1c58d114610148578063d5fa2b0014610143578063e8906a2d1461013e578063f1cb7e0614610139578063f2fde38b146101345763f4d4d2f81461012f57600080fd5b6110ae565b610fe7565b610fd0565b610f02565b610e90565b61065d565b610e19565b610d74565b610cf4565b610c78565b610c0e565b610bcf565b6109a0565b610875565b6107ee565b610793565b61077d565b610674565b6105b9565b610532565b6103c0565b6102d2565b346102a05760203660031901126102a05760043563ffffffff60e01b81168091036102a05761021c90639061b92360e01b811490811561028f575b811561027e575b811561026d575b811561025c575b811561024b575b811561023a575b8115610229575b8115610220575b5060405190151581529081906020820190565b0390f35b90501538610209565b6378e5bf0360e11b81149150610202565b63bc1c58d160e01b811491506101fb565b63691f343160e01b811491506101f4565b631674750f60e21b811491506101ed565b63c869023360e01b811491506101e6565b631101d5ab60e11b811491506101df565b631d9dabef60e11b811491506101d8565b600080fd5b9181601f840112156102a0578235916001600160401b0383116102a057602083818601950101116102a057565b346102a05760603660031901126102a0576001600160401b036024358181116102a0576103039036906004016102a5565b916044359081116102a05761031c9036906004016102a5565b919061032661124b565b938451156103bb576103936103b4936020870151610342611349565b905261035c61034f6114b4565b600435602082015261184c565b602061036789611308565b51015261037387611315565b5161037c611369565b9052602061038988611315565b510192369161094b565b905261039e84611325565b516103a7611388565b9052602061038985611325565b9052611656565b6112f2565b346102a0576020806003193601126102a0576001600160401b036004358181116102a0576103f56104049136906004016102a5565b6103fd611706565b369161094b565b916040519161041d8361041681610a97565b0384610900565b835190811161052d5760019161043c826104378554610a5d565b61175e565b602090601f83116001146104b557509161047582610482959361047c956000916104aa575b508160011b916000199060031b1c19161790565b90556117d9565b916117d9565b907f89e3f76277bf08e4371bcc677d04c7d3ab8fcef918f05d5e9668c532f3bd1207600080a3005b905087015138610461565b600160005290601f1983166000805160206120d7833981519152926000905b82821061051657505092849261047c9592826104829896106104fd575b5050811b0190556117d9565b88015160001960f88460031b161c1916905538806104f1565b808785968294968c015181550195019301906104d4565b6108b4565b346102a05760203660031901126102a0577f96c6caf9f42ebbbb9ba734bc86cf4885bd740fa956cdc9e642cafdb29d1b0e9b6040600435610571611706565b600254908060025582519182526020820152a1005b9060406003198301126102a05760043591602435906001600160401b0382116102a0576105b5916004016102a5565b9091565b346102a0576105c736610586565b90916105d1611297565b928351156103bb57610600602085019283516105eb611349565b90526105f56114b4565b90602082015261184c565b928451156103bb5761064a9360206106459451015261061e85611315565b516040519061062c826108ca565b60048252630d0c2e6d60e31b602083015252369161094b565b61184c565b602061065583611315565b510152611656565b346102a0576020366003190112156113a957600080fd5b346102a0576000806003193601126107325760405180916003549081835260208093018092600383527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90835b81811061071e57505050846106d7910385610900565b60405193838594850191818652518092526040850193925b8281106106fe57505050500390f35b83516001600160a01b0316855286955093810193928101926001016106ef565b8254845292860192600192830192016106c1565b80fd5b60005b8381106107485750506000910152565b8181015183820152602001610738565b9060209161077181518092818552858086019101610735565b601f01601f1916010190565b346102a05761078b36610586565b5050506113a9565b346102a057600080600319360112610732576107ad611706565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b346102a0576107fc36610586565b9091610806611297565b928351156103bb57610820602085019283516105eb611349565b8451156103bb5760206103b49351015261083984611315565b5160405190610847826108ca565b60048252636e616d6560e01b602083015252602061038985611315565b6001600160a01b038116036102a057565b346102a05760203660031901126102a05760043561089281610864565b60018060a01b0316600052600460205260206040600020541515604051908152f35b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761052d57604052565b608081019081106001600160401b0382111761052d57604052565b90601f801991011681019081106001600160401b0382111761052d57604052565b6040519061092e826108e5565b565b6001600160401b03811161052d57601f01601f191660200190565b92919261095782610930565b916109656040519384610900565b8294818452818301116102a0578281602093846000960137010152565b9080601f830112156102a05781602061099d9335910161094b565b90565b346102a05760603660031901126102a0576044356001600160401b0381116102a0576109d0903690600401610982565b6109d861124b565b908151156103bb57610a529060208301516109f1611349565b90526109fe61034f6114b4565b6020610a0985611308565b510152610a1583611315565b51610a1e611429565b9052610a2b602435611ad6565b6020610a3685611315565b510152610a4283611325565b51610a4b61144e565b905261184c565b602061065583611325565b90600182811c92168015610a8d575b6020831014610a7757565b634e487b7160e01b600052602260045260246000fd5b91607f1691610a6c565b90600091600190600154610aaa81610a5d565b8083529260209160018116908115610b155750600114610acb575b50505050565b9293945060016000526000805160206120d7833981519152926000935b858510610b02575050506020925001019038808080610ac5565b8054858501840152938201938101610ae8565b92505050602093945060ff929192191683830152151560051b01019038808080610ac5565b90600091600190600154610b4d81610a5d565b8083529260209160018116908115610b155750600114610b6d5750505050565b9293945060016000526000805160206120d7833981519152926000935b858510610ba4575050506020925001019038808080610ac5565b8054858501840152938201938101610b8a565b6040519061092e82610bc881610b3a565b0383610900565b346102a05760003660031901126102a05761021c604051610bfa81610bf381610a97565b0382610900565b604051918291602083526020830190610758565b346102a05760003660031901126102a0576020600254604051908152f35b9060206003198301126102a0576004356001600160401b03928382116102a057806023830112156102a05781600401359384116102a05760248460051b830101116102a0576024019190565b346102a057610c8636610c2c565b610c8e611706565b60005b818110610c9a57005b8060019160051b840135610cad81610864565b828060a01b0316610cbd81611d04565b610cc9575b5001610c91565b7f3525e22824a8a7df2c9a6029941c824cf95b6447f1e13d5128fd3826d35afe8b600080a238610cc2565b346102a05760003660031901126102a0576000546040516001600160a01b039091168152602090f35b60406003198201126102a0576001600160401b03916004358381116102a05782610d49916004016102a5565b939093926024359182116102a0576105b5916004016102a5565b90602061099d928181520190610758565b346102a057610d8236610d1d565b92509050604051610d92816108ca565b6001815260005b602080821015610db457906060602092828501015201610d99565b5050610e1583610dc2610bb7565b610dcb84611308565b52610dd583611308565b5060405190610dfb82610ded3084896020850161198e565b03601f198101845283610900565b604051630556f18360e41b815294859430600487016119a7565b0390fd5b346102a05760403660031901126102a05760243563ffffffff81168091036102a057610e43611297565b908151156103bb5760208201908151610e5a611349565b9052610e6761034f6114b4565b8351156103bb57602061064a93510152610e8083611315565b51610e89611471565b9052611ad6565b346102a05760403660031901126102a057602435610ead81610864565b610eb5611297565b908151156103bb5760208201908151610ecc611349565b9052610ed961034f6114b4565b8351156103bb57602061064a93510152610ef283611315565b51610efb61144e565b9052611c1a565b346102a057610f1036610c2c565b90610f19611706565b610f2282611234565b90610f306040519283610900565b828252602092602083019060051b8201913683116102a057905b828210610fb75783805160005b818110610f6057005b6001906001600160a01b03610f758286611335565b5116610f8081611e64565b610f8c575b5001610f57565b7f47d1c22a25bb3a5d4e481b9b1e6944c2eade3181a0a20b495ed61d35b5323f24600080a284610f85565b8480918335610fc581610864565b815201910190610f4a565b346102a0576040366003190112156113a957600080fd5b346102a05760203660031901126102a05760043561100481610864565b61100c611706565b6001600160a01b03908116801561105a57600080546001600160a01b03198116831782559092167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346102a0576110bc36610d1d565b92918201926060838503126102a0576001600160401b039280358481116102a057856110e9918301610982565b946020820135858116958682036102a05760408401359081116102a05761113c9561111d8994611126936111379701610982565b95810190611c3b565b9091906001600160a01b0316611db6565b611e4f565b9042116111fa57604051637df73e2760e01b81526001600160a01b03919091166004820152602081602481305afa9081156111f5576000916111c6575b501561118f5761021c9060405191829182610d63565b604051636ee8a75560e01b815260206004820152600e60248201526d34b73b30b634b21039b4b3b732b960911b6044820152606490fd5b6111e8915060203d6020116111ee575b6111e08183610900565b810190611490565b38611179565b503d6111d6565b6114a8565b604051636ee8a75560e01b81526020600482015260116024820152701cda59db985d1d5c9948195e1c1a5c9959607a1b6044820152606490fd5b6001600160401b03811161052d5760051b60200190565b60409060405161125a816108e5565b60038152809160005b60608082101561128f5785516020929161127c826108ca565b8082528382015284820183015201611263565b505091925050565b60409060405191606092606081018181106001600160401b0382111761052d5760405260028152809360005b8381106112d05750505050565b60209084516112de816108ca565b8381528284818301528286010152016112c3565b634e487b7160e01b600052603260045260246000fd5b8051156103bb5760200190565b8051600110156103bb5760400190565b8051600210156103bb5760600190565b80518210156103bb5760209160051b010190565b60405190611356826108ca565b60048252636e6f646560e01b6020830152565b60405190611376826108ca565b60038252626b657960e81b6020830152565b60405190611395826108ca565b600582526476616c756560d81b6020830152565b6040516113b5816108ca565b6001815260005b602090818110156113d75760606020928285010152016113bc565b826113e0610bb7565b6113e982611308565b526113f381611308565b506040519061140a82610ded303660208401611966565b610e15604051928392630556f18360e41b845236903060048601611a4d565b60405190611436826108ca565b6009825268636f696e5f7479706560b81b6020830152565b6040519061145b826108ca565b60078252666164647265737360c81b6020830152565b6040519061147e826108ca565b60038252621d1d1b60ea1b6020830152565b908160209103126102a0575180151581036102a05790565b6040513d6000823e3d90fd5b604051906114c1826108ca565b60208083523683820137565b906114d782610930565b6114e46040519182610900565b82815280926114f5601f1991610930565b0190602036910137565b634e487b7160e01b600052601160045260246000fd5b906001820180921161152357565b6114ff565b9190820180921161152357565b90916060825261155183516080606085015260e0840190610758565b9261156d60209485830151605f19868303016080870152610758565b6040828101516001600160401b031660a08601526060909201516001600160a01b0390811660c086015284820386860152906115a890610b3a565b9382818603910152608084019063ffffffff60e01b84511685528584015116858501528183015194608083860152855180925260a08501928160a08460051b8801019701936000915b84831061160a5750505050505060608091015191015290565b9091929394978480611646600193609f198c82030187528c519083611636835189845289840190610758565b9201519084818403910152610758565b9a019301930191949392906115f1565b604051611662816108ca565b601081526f2230ba30b130b9b2a932b9b7b63b32b960811b602082015260405161168b816108ca565b60018152603160f81b60208201526116a1610921565b9182526020820152600160408201523060608201526116c260025442611528565b6116ca610921565b6000356001600160e01b03191681529233602085015260408401526060830152610e15604051928392634bd55edd60e01b845260048401611535565b6000546001600160a01b0316330361171a57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b90601f821161176b575050565b60019160009060016000526000805160206120d7833981519152906020601f850160051c830194106117b8575b601f0160051c01915b8281106117ae5750505050565b81815583016117a1565b9092508290611798565b906117d560209282815194859201610735565b0190565b6117f190602060405192828480945193849201610735565b810103902090565b60405190611806826108ca565b601082526f181899199a1a9b1b9c1cb0b131b232b360811b6020830152565b9081518110156103bb570160200190565b908160011b918083046002149015171561152357565b906118556117f9565b611868611863845160011b90565b6114cd565b9060009360005b81518110156118ed57806118c861189c6001809486010151600f906118aa61189c838360041c168a611825565b516001600160f81b03191690565b6118c06118b687611836565b918d1a918b611825565b531686611825565b6118e66118dc6118d784611836565b611515565b91891a9187611825565b530161186f565b505060405161060f60f31b602082015292935061099d918391506119159060228301906117c2565b03601f198101835282610900565b90602091808252806000848401376000828201840152601f01601f1916010190565b908060209392818452848401376000828201840152601f01601f1916010190565b9061197e602091949394604084526040840190611923565b6001600160a01b03909416910152565b9160209161197e91959495604085526040850191611945565b93919594929060a085019060018060a01b0316855260209060a06020870152875180915260c0860191602060c08360051b8901019901926000905b838210611a2057505050505094611a059161099d95968583036040870152611945565b631e9a9a5f60e31b6060840152916080818403910152610758565b90919293998380611a3e6001938e8d60bf1990830301875251610758565b9c0192019201909392916119e2565b92909493919460a084019060018060a01b0316845260209060a06020860152865180915260c0850191602060c08360051b8801019801926000905b838210611aaa57505050505084611a05918461099d9697036040860152611923565b90919293988380611ac760019360bf198c82030186528d51610758565b9b019201920190939291611a88565b806000917a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000080821015611c0c575b506d04ee2d6d415b85acef810000000080831015611bfd575b50662386f26fc1000080831015611bee575b506305f5e10080831015611bdf575b5061271080831015611bd0575b506064821015611bc0575b600a80921015611bb6575b600190816021611b6e600187016114cd565b95860101905b611b80575b5050505090565b600019019083906f181899199a1a9b1b9c1cb0b131b232b360811b8282061a835304918215611bb157919082611b74565b611b79565b9160010191611b5c565b9190606460029104910191611b51565b60049193920491019138611b46565b60089193920491019138611b39565b60109193920491019138611b2a565b60209193920491019138611b18565b604093508104915038611aff565b60405161099d91611c2a826108ca565b6014825260601b602082015261184c565b91906040838203126102a05782356001600160401b0381116102a057602091611c65918501610982565b92013561099d81610864565b6003548110156103bb5760036000527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0190600090565b6003548015611cee57600019810190808210156103bb577fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85a600091600383520155600355565b634e487b7160e01b600052603160045260246000fd5b6000818152600460205260409020548015611daf57600019918183019180831161152357600354938401938411611523578383611d5f9460009603611d65575b505050611d4f611ca8565b6000526004602052604060002090565b55600190565b611d4f611d8d91611d85611d7b611da695611c71565b90549060031b1c90565b928391611c71565b90919082549060031b91821b91600019901b1916179055565b55388080611d44565b5050600090565b92909160208151910120906020815191012090604051926020840194601960f81b86526bffffffffffffffffffffffff199060601b1660228501526001600160401b0360c01b9060c01b166036840152603e830152605e820152605e8152611e1d816108e5565b5190207f19457468657265756d205369676e6564204d6573736167653a0a333200000000600052601c52603c60002090565b61099d91611e5c91611ee0565b919091611f34565b80600052600460205260406000205415600014611eda576003546801000000000000000081101561052d5760018101806003558110156103bb5781907fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0155600354906000526004602052604060002055600190565b50600090565b906041815114600014611f0a576105b5916020820151906060604084015193015160001a90612054565b5050600090600290565b60051115611f1e57565b634e487b7160e01b600052602160045260246000fd5b611f3d81611f14565b80611f455750565b611f4e81611f14565b60018103611f9b5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606490fd5b611fa481611f14565b60028103611ff15760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b80611ffd600392611f14565b1461200457565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083116120ca5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156111f55781516001600160a01b038116156120c4579190565b50600190565b5050505060009060039056feb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6a264697066735822122034ed98507cbb54da25bec441826ae8bc1f83c61dff17f7623ce15bc955c3a6b864736f6c63430008180033","sourceMap":"1467:15093:150:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;1467:15093:150;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15992:50:150;;;:112;;;;1467:15093;15992:173;;;;1467:15093;15992:237;;;;1467:15093;15992:299;;;;1467:15093;15992:361;;;;1467:15093;15992:430;;;;1467:15093;15992:495;;;;1467:15093;15992:558;;;;1467:15093;-1:-1:-1;1467:15093:150;;;;;;;;;;;;;;;;;;;15992:558;16503:47;;;15992:558;;;:495;-1:-1:-1;;;16438:49:150;;;-1:-1:-1;15992:495:150;;:430;-1:-1:-1;;;16369:53:150;;;-1:-1:-1;15992:430:150;;:361;-1:-1:-1;;;16307:46:150;;;-1:-1:-1;15992:361:150;;:299;-1:-1:-1;;;16245:46:150;;;-1:-1:-1;15992:299:150;;:237;-1:-1:-1;;;16181:48:150;;;-1:-1:-1;15992:237:150;;:173;-1:-1:-1;;;16120:45:150;;;-1:-1:-1;15992:173:150;;:112;-1:-1:-1;;;16058:46:150;;;-1:-1:-1;15992:112:150;;1467:15093;-1:-1:-1;1467:15093:150;;;;;;;;;;;;;;;-1:-1:-1;;;;;1467:15093:150;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;1467:15093:150;;;;-1:-1:-1;;;;;1467:15093:150;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;8564:33;;;;:::i;:::-;1467:15093;;;;;;;;;;;;8608:9;:23;;:::i;:::-;1467:15093;;1765:16:165;1668:13;;:::i;:::-;1467:15093:150;;;1692:56:165;;;1765:16;:::i;:::-;1467:15093:150;8641:9;;;:::i;:::-;;:15;:52;8704:9;;;:::i;:::-;;:22;;:::i;:::-;1467:15093;;;8736:9;;;:::i;:::-;;:15;1467:15093;;;;:::i;:::-;8736:21;;8768:9;;;:::i;:::-;;:24;;:::i;:::-;1467:15093;;;8802:9;;;:::i;1467:15093::-;8802:23;;8853:6;:::i;1467:15093::-;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1467:15093:150;;;;;;;;;;;;;;;:::i;:::-;1063:62:75;;:::i;:::-;1467:15093:150;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;14707:10;1467:15093;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;14762:34;1467:15093;;14762:34;1467:15093;-1:-1:-1;1467:15093:150;;;;;;;;;;;;;;;;;;;;;;;14762:34;:::i;:::-;;;:::i;:::-;;;-1:-1:-1;14762:34:150;;1467:15093;;;;;;;;;;;14707:10;1467:15093;;;-1:-1:-1;;1467:15093:150;;-1:-1:-1;;;;;;;;;;;1467:15093:150;-1:-1:-1;1467:15093:150;;;;;;;;;;;;14762:34;1467:15093;;;14762:34;1467:15093;;;;;;;;;;;;;14762:34;:::i;1467:15093::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;1467:15093:150;;;;15211:65;1467:15093;;;1063:62:75;;:::i;:::-;15111:30:150;2940:1;1467:15093;;15111:30;1467:15093;;;;;;;;;;15211:65;1467:15093;;;;-1:-1:-1;;1467:15093:150;;;;;;;;;;;-1:-1:-1;;;;;1467:15093:150;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;9707:33;;;;:::i;:::-;1467:15093;;;;;;1765:16:165;1467:15093:150;;;9751:9;;;:23;;:::i;:::-;1467:15093;;1668:13:165;;:::i;:::-;1692:56;1467:15093:150;1692:56:165;;;1765:16;:::i;:::-;1467:15093:150;;;;;;9898:32;9784:9;1467:15093;;9784:9;;:15;:52;9847:9;;;:::i;:::-;;1467:15093;;;;;;:::i;:::-;;;;-1:-1:-1;;;1467:15093:150;;;;;;;;:::i;:::-;9898:32;:::i;:::-;1467:15093;9880:9;;;:::i;:::-;;:15;:50;9958:6;:::i;1467:15093::-;;;;;;-1:-1:-1;;1467:15093:150;;;-1:-1:-1;1467:15093:150;-1:-1:-1;1467:15093:150;;;;;;;;;;;;;;;;;;;12720:8;1467:15093;;;;;;;;;;;12720:8;1467:15093;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1467:15093:150;;;;;-1:-1:-1;1467:15093:150;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1467:15093:150;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;1467:15093:150;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;1063:62:75;;:::i;:::-;1467:15093:150;;-1:-1:-1;;;;;;1467:15093:150;;;;;;-1:-1:-1;;;;;1467:15093:150;2566:40:75;1467:15093:150;;2566:40:75;1467:15093:150;;;;;;;;;:::i;:::-;7439:33;;;;:::i;:::-;1467:15093;;;;;;1765:16:165;1467:15093:150;;;7483:9;;;:23;;:::i;1765:16:165:-;1467:15093:150;;;;;;;7516:9;;:15;:52;7579:9;;;:::i;:::-;;1467:15093;;;;;;:::i;:::-;;;;-1:-1:-1;;;1467:15093:150;;;;;;7612:9;;;:::i;1467:15093::-;-1:-1:-1;;;;;1467:15093:150;;;;;:::o;:::-;;;;;;-1:-1:-1;;1467:15093:150;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;1467:15093:150;;;;;;-1:-1:-1;1467:15093:150;2940:1;4312:24:164;;1467:15093:150;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1467:15093:150;;;;;;;:::o;:::-;2940:1;1467:15093;;;;;-1:-1:-1;;;;;1467:15093:150;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1467:15093:150;;;;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;-1:-1:-1;;;;;1467:15093:150;;;;;;-1:-1:-1;;1467:15093:150;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;1467:15093:150;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;-1:-1:-1;;1467:15093:150;;;;;;-1:-1:-1;;;;;1467:15093:150;;;;;;;;;;;:::i;:::-;6240:33;;:::i;:::-;1467:15093;;;;;;6527:29;1467:15093;;;;6284:9;:23;;:::i;:::-;1467:15093;;1765:16:165;1668:13;;:::i;1765:16::-;1467:15093:150;6317:9;;;:::i;:::-;;:15;:52;6380:9;;;:::i;:::-;;:28;;:::i;:::-;1467:15093;;6436:26;1467:15093;;6436:26;:::i;:::-;1467:15093;6418:9;;;:::i;:::-;;:15;:44;6473:9;;;:::i;:::-;;:26;;:::i;:::-;1467:15093;;6527:29;:::i;:::-;1467:15093;6509:9;;;:::i;1467:15093::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;14707:10;1467:15093;14707:10;1467:15093;;;;:::i;:::-;;;;;;;14707:10;1467:15093;;;14707:10;;;;1467:15093;;;;;;;;;;:::o;:::-;;;;;14707:10;-1:-1:-1;1467:15093:150;-1:-1:-1;;;;;;;;;;;1467:15093:150;-1:-1:-1;1467:15093:150;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10714:1;1467:15093;10714:1;1467:15093;;;;:::i;:::-;;;;;;;10714:1;1467:15093;;;10714:1;;;;1467:15093;;;;;;;;;:::o;:::-;;;;;10714:1;-1:-1:-1;1467:15093:150;-1:-1:-1;;;;;;;;;;;1467:15093:150;-1:-1:-1;1467:15093:150;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;-1:-1:-1;;1467:15093:150;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;1467:15093:150;;;;;1964:45;1467:15093;;;;;;;;;;-1:-1:-1;;1467:15093:150;;;;;;;-1:-1:-1;;;;;1467:15093:150;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;1063:62:75;;:::i;:::-;14284:1:150;14287:10;;;;;;1467:15093;14299:3;1467:15093;;;;;;;;;;;:::i;:::-;;;;;;;6409:53:164;;;:::i;:::-;14367:55:150;;14299:3;;1467:15093;14272:13;;14367:55;14401:21;14284:1;14401:21;;14367:55;;;1467:15093;;;;;;-1:-1:-1;;1467:15093:150;;;;;;;;-1:-1:-1;;;;;1467:15093:150;;;;;;;;;;-1:-1:-1;;1467:15093:150;;;;;-1:-1:-1;;;;;1467:15093:150;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;10714:1;1467:15093;;-1:-1:-1;1467:15093:150;;;;;;;;;;;;;;;;;;;;;;;10764:184;1467:15093;;;:::i;:::-;10726:20;;;:::i;:::-;;;;;:::i;:::-;;1467:15093;;10800:4;10903:35;10800:4;10903:35;10800:4;10903:35;;1467:15093;10903:35;;;:::i;:::-;;1467:15093;;10903:35;;;;;;:::i;:::-;1467:15093;;-1:-1:-1;;;10764:184:150;;1467:15093;;;10800:4;1467:15093;10764:184;;;:::i;:::-;;;;1467:15093;;;;;;-1:-1:-1;;1467:15093:150;;;;;;;;;;;;;;3913:33;;:::i;:::-;1467:15093;;;;;;;;;3957:9;;;:23;;:::i;:::-;1467:15093;;1765:16:165;1668:13;;:::i;1765:16::-;1467:15093:150;;;;;;4103:21;3990:9;;:15;:52;4053:9;;;:::i;:::-;;:22;;:::i;:::-;1467:15093;;4103:21;:::i;1467:15093::-;;;;;;-1:-1:-1;;1467:15093:150;;;;;;;;;:::i;:::-;5126:33;;:::i;:::-;1467:15093;;;;;;;;;5170:9;;;:23;;:::i;:::-;1467:15093;;1765:16:165;1668:13;;:::i;1765:16::-;1467:15093:150;;;;;;5320:31;5203:9;;:15;:52;5266:9;;;:::i;:::-;;:26;;:::i;:::-;1467:15093;;5320:31;:::i;1467:15093::-;;;;;;;:::i;:::-;1063:62:75;;;:::i;:::-;1467:15093:150;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15591:10:150;;;;;;1467:15093;15603:3;1467:15093;;-1:-1:-1;;;;;15639:15:150;1467:15093;15639:15;;:::i;:::-;1467:15093;;6046:50:164;;;:::i;:::-;15668::150;;15603:3;;1467:15093;15576:13;;15668:50;15699:19;-1:-1:-1;15699:19:150;;15668:50;;;1467:15093;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;1467:15093:150;;;-1:-1:-1;1467:15093:150;-1:-1:-1;1467:15093:150;;;;;;;;-1:-1:-1;;1467:15093:150;;;;;;;;;:::i;:::-;1063:62:75;;:::i;:::-;-1:-1:-1;;;;;1467:15093:150;;;2162:22:75;;1467:15093:150;;2518:6:75;1467:15093:150;;-1:-1:-1;;;;;;1467:15093:150;;;;;;2518:6:75;;1467:15093:150;2566:40:75;2518:6;;2566:40;1467:15093:150;;;;;-1:-1:-1;;;1467:15093:150;;;;;;;;;;;;;;;;;-1:-1:-1;;;1467:15093:150;;;;;;;;;;;;;;:::i;:::-;1007:44:155;;;;1467:15093:150;;;;;;;;-1:-1:-1;;;;;1467:15093:150;;;;;;;;;;;;;;:::i;:::-;;;;;;2828:3;;;1467:15093;;;;;;;;;;;;;;;1180:95:155;1467:15093:150;;;;1116:37:155;1467:15093:150;1207:53:155;1467:15093:150;;;:::i;:::-;1116:37:155;;;;;:::i;:::-;1467:15093:150;;;-1:-1:-1;;;;;1467:15093:150;1207:53:155;:::i;:::-;1180:95;:::i;:::-;1299:15;;-1:-1:-1;1285:119:155;;1467:15093:150;;-1:-1:-1;;;11350:21:150;;-1:-1:-1;;;;;1467:15093:150;;;;;11350:21;;1467:15093;;;;;11350:4;:21;;;;;;;-1:-1:-1;11350:21:150;;;1467:15093;11349:22;;11345:161;;1467:15093;;;;;;;;;:::i;11345:161::-;1467:15093;;-1:-1:-1;;;11394:101:150;;1467:15093;;11394:101;;1467:15093;;;;;;-1:-1:-1;;;1467:15093:150;;;;;;10764:184;11350:21;;;;1467:15093;11350:21;1467:15093;11350:21;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;1285:119:155:-;1467:15093:150;;-1:-1:-1;;;1337:56:155;;1467:15093:150;;1337:56:155;;1467:15093:150;;;;;;-1:-1:-1;;;1467:15093:150;;;;;;10764:184;1467:15093;-1:-1:-1;;;;;1467:15093:150;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;8595:1;1467:15093;;;;-1:-1:-1;1467:15093:150;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;1467:15093:150;;;;;;;9738:1;1467:15093;;;;-1:-1:-1;1467:15093:150;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;8711:1;1467:15093;;;;;;;:::o;:::-;;;8775:1;1467:15093;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;;;1467:15093:150;;;;:::o;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;;;1467:15093:150;;;;:::o;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;;;1467:15093:150;;;;:::o;9103:196::-;1467:15093;;;;;:::i;:::-;10714:1;1467:15093;;9283:8;1467:15093;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10726:20;;;:::i;:::-;;;;;:::i;:::-;;1467:15093;;10800:4;10903:35;10800:4;10903:35;10800:4;9283:8;1467:15093;10903:35;;;:::i;:::-;10764:184;1467:15093;;10764:184;;;;;;;;9283:8;10800:4;;10764:184;;;;:::i;1467:15093::-;;;;;;;:::i;:::-;;;;-1:-1:-1;;;1467:15093:150;;;;:::o;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;;;1467:15093:150;;;;:::o;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;;;1467:15093:150;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;2940:1::-;1467:15093;;;2940:1;;;;;;;;;;489::165;2940::150;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;2828:3:150;2940:1;;;;;;;;;-1:-1:-1;;;;;1467:15093:150;;;2940:1;;;1467:15093;2940:1;;;;;;;1467:15093;2940:1;;;:::i;:::-;;;;;;;;;;;;1467:15093;;;;2940:1;;1467:15093;2940:1;;;;;;1467:15093;2940:1;;;1467:15093;2940:1;;;;;;;;;;1467:15093;;;;;2940:1;1467:15093;;2940:1;;;;;;;;;1467:15093;;2940:1;;;;;;;;;;;;;;;;;;;;;;1467:15093;2940:1;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;1467:15093;;2940:1;;;;;;;;;;;11784:718;1467:15093;;;;;:::i;:::-;;;;-1:-1:-1;;;1467:15093:150;;;;;;;;;:::i;:::-;2682:18;1467:15093;;-1:-1:-1;;;1467:15093:150;2682:18;;;2940:1;;:::i;:::-;1467:15093;;;;11948:235;;1467:15093;2828:3;1467:15093;11948:235;;2940:1;12163:4;11948:235;;;2940:1;12402:68;12440:30;2940:1;12402:15;:68;:::i;:::-;2940:1;;:::i;:::-;-1:-1:-1;12284:7:150;-1:-1:-1;;;;;;12284:7:150;2940:1;;1467:15093;12317:10;1467:15093;12221:264;;2940:1;1467:15093;12221:264;;1467:15093;11948:235;12221:264;;1467:15093;11902:593;1467:15093;;11902:593;;;;;;;;;;;;:::i;1359:130:75:-;1273:6;1467:15093:150;-1:-1:-1;;;;;1467:15093:150;734:10:83;1422:23:75;1467:15093:150;;1359:130:75:o;1467:15093:150:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;14707:10;-1:-1:-1;;1467:15093:150;14707:10;-1:-1:-1;1467:15093:150;-1:-1:-1;;;;;;;;;;;1467:15093:150;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;1467:15093:150;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;;;1467:15093:150;;;;:::o;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;;775:1:165;1467:15093:150;;;;;;;:::o;282:620:165:-;;1467:15093:150;;:::i;:::-;467:24:165;477:13;1467:15093:150;;;;;;477:13:165;467:24;:::i;:::-;543:13;-1:-1:-1;543:13:165;-1:-1:-1;572:3:165;1467:15093:150;;558:12:165;;;;;591:158;822:7;;489:1;591:158;;;;;;;;780:7;;591:158;;;;;780:7;;:::i;:::-;1467:15093:150;-1:-1:-1;;;;;;1467:15093:150;;;780:7:165;763:24;771:5;;;:::i;:::-;763:24;;;;;;:::i;:::-;;591:158;822:7;;:::i;:::-;801:28;809:9;:5;;;:::i;:::-;:9;:::i;:::-;801:28;;;;;;:::i;:::-;;1467:15093:150;543:13:165;;558:12;-1:-1:-1;;1467:15093:150;;-1:-1:-1;;;863:31:165;;;1467:15093:150;558:12:165;;-1:-1:-1;863:31:165;;1467:15093:150;;-1:-1:-1;1467:15093:150;;;;;;;:::i;:::-;863:31:165;1467:15093:150;;863:31:165;;;;;;:::i;1467:15093:150:-;;;;;;;;9283:8;1467:15093;;;;9283:8;1467:15093;;;;;;;;-1:-1:-1;;1467:15093:150;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;1467:15093:150;;;;;;;;-1:-1:-1;;1467:15093:150;;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1467:15093:150;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;1467:15093:150;;;2940:1;1467:15093;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9283:8;1467:15093;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;447:696:84;569:17;-1:-1:-1;10276:8:88;;10267:17;;;;10263:103;;447:696:84;10392:8:88;;10383:17;;;;10379:103;;447:696:84;10508:8:88;;10499:17;;;;10495:103;;447:696:84;10624:7:88;;10615:16;;;;10611:100;;447:696:84;10737:7:88;;10728:16;;;;10724:100;;447:696:84;10841:16:88;10850:7;10841:16;;;10837:100;;447:696:84;10963:7:88;;10954:16;;;10950:66;;447:696:84;589:1;1467:15093:150;;731:76:84;627:18;589:1;1467:15093:150;;627:18:84;:::i;:::-;659:11;731:76;;;820:280;589:1;;;820:280;1113:13;;;;447:696;:::o;820:280::-;-1:-1:-1;;1467:15093:150;;;;-1:-1:-1;;;925:93:84;;;;1467:15093:150;925:93:84;1467:15093:150;1068:10:84;;;1064:21;;820:280;;;;;1064:21;1080:5;;10950:66:88;1467:15093:150;11000:1:88;1467:15093:150;10950:66:88;;;10837:100;1467:15093:150;;10850:7:88;10921:1;1467:15093:150;;;;10837:100:88;;;10724;10808:1;1467:15093:150;;;;;;10724:100:88;;;;10611;10695:1;1467:15093:150;;;;;;10611:100:88;;;;10495:103;10581:2;1467:15093:150;;;;;;10495:103:88;;;;10379;10465:2;1467:15093:150;;;;;;10379:103:88;;;;10263;10349:2;;-1:-1:-1;1467:15093:150;;;-1:-1:-1;10263:103:88;;;1969:238:165;1467:15093:150;;2184:16:165;;1467:15093:150;;;:::i;:::-;2080:2:165;1467:15093:150;;2094:73:165;;1467:15093:150;;;2094:73:165;2184:16;:::i;1467:15093:150:-;;;;;;;;;;;;-1:-1:-1;;;;;1467:15093:150;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;14371:8;1467:15093;;;;;;14371:8;-1:-1:-1;1467:15093:150;;;;-1:-1:-1;1467:15093:150;:::o;:::-;14371:8;1467:15093;;;;;-1:-1:-1;;1467:15093:150;;;;;;;;;;-1:-1:-1;1467:15093:150;14371:8;1467:15093;;;;14371:8;1467:15093;:::o;:::-;;;;;;;;;;;;2697:1388:164;-1:-1:-1;1467:15093:150;;;2900:12:164;1467:15093:150;;;;;2940:1;2934:15:164;;;;-1:-1:-1;;1467:15093:150;;;;;;;;;;14371:8;1467:15093;;;;;;;;;3416:26:164;;3980:19;3416:26;-1:-1:-1;3416:26:164;;3412:398;;2930:1149;3888:15;;;;;:::i;:::-;1467:15093:150;;2900:12:164;1467:15093:150;;;;;;;3980:19:164;1467:15093:150;2900:12:164;4014:11;:::o;3412:398::-;3604:38;:26;3482:22;1467:15093:150;3482:22:164;3716:23;3482:22;;:::i;:::-;1467:15093:150;;;;;;;;;3604:26:164;;;;:::i;:::-;:38;1467:15093:150;;;;;;;;;;;;;;;;;;;;;3716:23:164;1467:15093:150;3412:398:164;;;;;2930:1149;4056:12;;-1:-1:-1;4056:12:164;:::o;1767:518:155:-;;;;1467:15093:150;;;;;2179:18:155;1467:15093:150;;;;;;2219:17:155;1467:15093:150;;;2053:201:155;1467:15093:150;2053:201:155;;1467:15093:150;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1467:15093:150;;;;;;;;;;;;;;;;;;;2053:201:155;;;;;:::i;:::-;1467:15093:150;2026:242:155;;7353:157:85;-1:-1:-1;7353:157:85;1467:15093:150;7353:157:85;1467:15093:150;-1:-1:-1;7353:157:85;1767:518:155;:::o;3661:227:85:-;3849:5;3661:227;3800:27;3661:227;3800:27;:::i;:::-;3849:5;;;;:::i;2125:404:164:-;1467:15093:150;-1:-1:-1;1467:15093:150;4312:12:164;1467:15093:150;;;-1:-1:-1;1467:15093:150;2940:1;4312:24:164;2204:319;1467:15093:150;;;15672:8;1467:15093;;;;;;;4312:12:164;1467:15093:150;;;15672:8;1467:15093;;;;;;;;;;;15672:8;1467:15093;;-1:-1:-1;1467:15093:150;4312:12:164;1467:15093:150;;;-1:-1:-1;1467:15093:150;;4312:12:164;2458:11;:::o;2204:319::-;2500:12;-1:-1:-1;2500:12:164;:::o;2145:730:85:-;;2283:2;1467:15093:150;;2263:22:85;2259:610;2283:2;;;2746:25;2546:180;;;;;;;;;;;;;;-1:-1:-1;2546:180:85;2746:25;;:::i;2259:610::-;2802:56;;2818:1;2802:56;2822:35;2802:56;:::o;1467:15093:150:-;;-1:-1:-1;1467:15093:150;;;:::o;:::-;;;;;;;;;;;;570:511:85;1467:15093:150;;;:::i;:::-;638:29:85;;;683:7;:::o;634:441::-;1467:15093:150;;;:::i;:::-;743:29:85;734:38;;743:29;;1467:15093:150;;-1:-1:-1;;;788:34:85;;1467:15093:150;788:34:85;;;1467:15093:150;;;;;;;;;;;;;10764:184;730:345:85;1467:15093:150;;;:::i;:::-;852:35:85;843:44;;852:35;;1467:15093:150;;-1:-1:-1;;;903:41:85;;1467:15093:150;903:41:85;;;1467:15093:150;;;;;;;;;;;;;10764:184;839:236:85;1467:15093:150;;974:30:85;1467:15093:150;;:::i;:::-;965:39:85;961:114;;570:511::o;961:114::-;1467:15093:150;;-1:-1:-1;;;1020:44:85;;1467:15093:150;1020:44:85;;;1467:15093:150;;;;;;;;;;;-1:-1:-1;;;1467:15093:150;;;;;;10764:184;5009:1456:85;;;;6021:66;6008:79;;6004:161;;1467:15093:150;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6276:24:85;;;;;;;;;;;;;;-1:-1:-1;;;;;1467:15093:150;;6314:20:85;6310:101;;6421:37;5009:1456;:::o;6310:101::-;6350:50;6276:24;6350:50;:::o;6004:161::-;6103:51;;;;6119:1;6103:51;6123:30;6103:51;:::o","linkReferences":{}},"methodIdentifiers":{"addSigners(address[])":"e8906a2d","addr(bytes32)":"3b3b57de","addr(bytes32,uint256)":"f1cb7e06","contenthash(bytes32)":"bc1c58d1","gatewayDatabaseTimeoutDuration()":"8c92c8c3","gatewayUrl()":"8bf165d9","isSigner(address)":"7df73e27","name(bytes32)":"691f3431","owner()":"8da5cb5b","register(bytes32,uint32)":"b2c20f4e","removeSigners(address[])":"8d361e43","renounceOwnership()":"715018a6","resolve(bytes,bytes)":"9061b923","resolveWithProof(bytes,bytes)":"f4d4d2f8","setAddr(bytes32,address)":"d5fa2b00","setAddr(bytes32,uint256,bytes)":"8b95dd71","setContenthash(bytes32,bytes)":"304e6ade","setGatewayUrl(string)":"1787080e","setName(bytes32,string)":"77372213","setOffChainDatabaseTimoutDuration(uint256)":"27a5f3af","setText(bytes32,string,string)":"10f13a8c","signers()":"46f0975a","supportsInterface(bytes4)":"01ffc9a7","text(bytes32,string)":"59d1d43c","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"newGatewayUrl\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"newOffChainDatabaseTimeoutDuration\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"newSigners\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"urls\",\"type\":\"string[]\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"bytes4\",\"name\":\"callbackFunction\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"OffchainLookup\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"cause\",\"type\":\"string\"}],\"name\":\"SignatureVerifier__InvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"StorageHandledByL2\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"chainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"}],\"internalType\":\"struct IWriteDeferral.domainData\",\"name\":\"sender\",\"type\":\"tuple\"},{\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"},{\"components\":[{\"internalType\":\"bytes4\",\"name\":\"functionSelector\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"internalType\":\"struct IWriteDeferral.parameter[]\",\"name\":\"parameters\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"expirationTimestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct IWriteDeferral.messageData\",\"name\":\"data\",\"type\":\"tuple\"}],\"name\":\"StorageHandledByOffChainDatabase\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"a\",\"type\":\"address\"}],\"name\":\"AddrChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"coinType\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"newAddress\",\"type\":\"bytes\"}],\"name\":\"AddressChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"hash\",\"type\":\"bytes\"}],\"name\":\"ContenthashChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"previousUrl\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"newUrl\",\"type\":\"string\"}],\"name\":\"GatewayUrlSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousContractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newContractAddress\",\"type\":\"address\"}],\"name\":\"L2HandlerContractAddressChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"previousChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newChainId\",\"type\":\"uint256\"}],\"name\":\"L2HandlerDefaultChainIdChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"NameChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"previousUrl\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"newUrl\",\"type\":\"string\"}],\"name\":\"OffChainDatabaseHandlerURLChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"previousDuration\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newDuration\",\"type\":\"uint256\"}],\"name\":\"OffChainDatabaseTimeoutDurationSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"addedSigner\",\"type\":\"address\"}],\"name\":\"SignerAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"removedSigner\",\"type\":\"address\"}],\"name\":\"SignerRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"indexedKey\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"TextChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"signersToAdd\",\"type\":\"address[]\"}],\"name\":\"addSigners\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"addr\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"coinType\",\"type\":\"uint256\"}],\"name\":\"addr\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"contenthash\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gatewayDatabaseTimeoutDuration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gatewayUrl\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSigner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"ttl\",\"type\":\"uint32\"}],\"name\":\"register\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"signersToRemove\",\"type\":\"address[]\"}],\"name\":\"removeSigners\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"name\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"response\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"resolveWithProof\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"coinType\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"a\",\"type\":\"bytes\"}],\"name\":\"setAddr\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"a\",\"type\":\"address\"}],\"name\":\"setAddr\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"hash\",\"type\":\"bytes\"}],\"name\":\"setContenthash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"newUrl\",\"type\":\"string\"}],\"name\":\"setGatewayUrl\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"setName\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newDuration\",\"type\":\"uint256\"}],\"name\":\"setOffChainDatabaseTimoutDuration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"setText\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"signers\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"text\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"StorageHandledByL2(uint256,address)\":[{\"details\":\"Error to raise when mutations are being deferred to an L2.\",\"params\":{\"chainId\":\"Chain ID to perform the deferred mutation to.\",\"contractAddress\":\"Contract Address at which the deferred mutation should transact with.\"}}],\"StorageHandledByOffChainDatabase((string,string,uint64,address),string,(bytes4,address,(string,string)[],uint256))\":[{\"details\":\"Error to raise when mutations are being deferred to an Off-Chain Database.\",\"params\":{\"data\":\"the EIP-712 message signing data context used to authorize and instruct the mutation deferred to the off-chain database handler. In order to authorize the deferred mutation to be performed, the user must use the domain definition (sender) and message data (data) to construct a type data signature request defined in EIP-712. This signature, message data (data), and domainData (sender) are then included in the HTTP POST request, denoted sender, data, and signature. Example HTTP POST request: { \\\"sender\\\": , \\\"data\\\": , \\\"signature\\\": }\",\"sender\":\"the EIP-712 domain definition of the corresponding contract performing the off-chain database, write deferral reversion.\",\"url\":\"URL to request to perform the off-chain mutation.\"}}]},\"kind\":\"dev\",\"methods\":{\"addSigners(address[])\":{\"details\":\"Can only be called by the signer manager.\",\"params\":{\"signersToAdd\":\"Signer addresses.\"}},\"addr(bytes32)\":{\"params\":{\"node\":\"The ENS node to query.\"},\"returns\":{\"_0\":\"Always reverts with an OffchainLookup error.\"}},\"addr(bytes32,uint256)\":{\"params\":{\"coinType\":\"The coin type of the corresponding address.\",\"node\":\"The ENS node to query.\"},\"returns\":{\"_0\":\"Always reverts with an OffchainLookup error.\"}},\"constructor\":{\"params\":{\"newGatewayUrl\":\"Gateway URL.\",\"newOffChainDatabaseTimeoutDuration\":\"how long an offchain signature will last\",\"newSigners\":\"Signer addresses.\"}},\"contenthash(bytes32)\":{\"params\":{\"node\":\"The ENS node to query.\"},\"returns\":{\"_0\":\"Always reverts with an OffchainLookup error.\"}},\"isSigner(address)\":{\"returns\":{\"_0\":\"True if a given account is a signer.\"}},\"name(bytes32)\":{\"params\":{\"node\":\"The ENS node to query.\"},\"returns\":{\"_0\":\"Always reverts with an OffchainLookup error.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"register(bytes32,uint32)\":{\"params\":{\"node\":\"The DNS-encoded name to resolve.\",\"ttl\":\"Expiration timestamp of the domain\"}},\"removeSigners(address[])\":{\"details\":\"Can only be called by the signer manager.\",\"params\":{\"signersToRemove\":\"Signer addresses.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"resolve(bytes,bytes)\":{\"params\":{\"data\":\"The ABI encoded data for the underlying resolution function (Eg, addr(bytes32), text(bytes32,string), etc).\",\"name\":\"The DNS-encoded name to resolve.\"},\"returns\":{\"_0\":\"The return data, ABI encoded identically to the underlying function.\"}},\"setAddr(bytes32,address)\":{\"params\":{\"a\":\"The address to set.\",\"node\":\"The node to update.\"}},\"setAddr(bytes32,uint256,bytes)\":{\"params\":{\"a\":\"The address to set.\",\"coinType\":\"The constant used to define the coin type of the corresponding address.\",\"node\":\"The node to update.\"}},\"setContenthash(bytes32,bytes)\":{\"params\":{\"hash\":\"The contenthash to set\",\"node\":\"The node to update.\"}},\"setGatewayUrl(string)\":{\"details\":\"Can only be called by the gateway manager.\",\"params\":{\"newUrl\":\"New gateway URL.\"}},\"setName(bytes32,string)\":{\"params\":{\"node\":\"The node to update.\"}},\"setOffChainDatabaseTimoutDuration(uint256)\":{\"details\":\"Can only be called by the gateway manager.\",\"params\":{\"newDuration\":\"New offChainDatabase timout duration.\"}},\"setText(bytes32,string,string)\":{\"params\":{\"key\":\"The key to set.\",\"node\":\"The node to update.\",\"value\":\"The text data value to set.\"}},\"signers()\":{\"returns\":{\"_0\":\"List of signers.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"interfaceID\":\"Interface ID.\"},\"returns\":{\"_0\":\"True if a given interface ID is supported.\"}},\"text(bytes32,string)\":{\"params\":{\"key\":\"The text data key to query.\",\"node\":\"The ENS node to query.\"},\"returns\":{\"_0\":\"Always reverts with an OffchainLookup error.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"events\":{\"L2HandlerContractAddressChanged(uint256,address,address)\":{\"notice\":\"Event raised when the contractAddress is changed for the L2 handler corresponding to chainId.\"},\"L2HandlerDefaultChainIdChanged(uint256,uint256)\":{\"notice\":\"Event raised when the default chainId is changed for the corresponding L2 handler.\"},\"OffChainDatabaseHandlerURLChanged(string,string)\":{\"notice\":\"Event raised when the url is changed for the corresponding Off-Chain Database handler.\"}},\"kind\":\"user\",\"methods\":{\"addSigners(address[])\":{\"notice\":\"Add a set of new signers.\"},\"addr(bytes32)\":{\"notice\":\"Returns the address associated with an ENS node.\"},\"addr(bytes32,uint256)\":{\"notice\":\"Returns the address associated with an ENS node for the corresponding coinType.\"},\"constructor\":{\"notice\":\"Initializes the contract with the initial parameters.\"},\"contenthash(bytes32)\":{\"notice\":\"Returns the contenthash associated with an ENS node.\"},\"isSigner(address)\":{\"notice\":\"Returns whether a given account is a signer.\"},\"name(bytes32)\":{\"notice\":\"Returns the name associated with an ENS node, for reverse records. Defined in EIP181.\"},\"register(bytes32,uint32)\":{\"notice\":\"Resolves a name, as specified by ENSIP 10 (wildcard).\"},\"removeSigners(address[])\":{\"notice\":\"Remove a set of existing signers.\"},\"resolve(bytes,bytes)\":{\"notice\":\"Resolves a name, as specified by ENSIP 10 (wildcard).\"},\"resolveWithProof(bytes,bytes)\":{\"notice\":\"Callback used by CCIP read compatible clients to verify and parse the response.\"},\"setAddr(bytes32,address)\":{\"notice\":\"Sets the address associated with an ENS node. May only be called by the owner of that node in the ENS registry.\"},\"setAddr(bytes32,uint256,bytes)\":{\"notice\":\"Sets the address associated with an ENS node. May only be called by the owner of that node in the ENS registry.\"},\"setContenthash(bytes32,bytes)\":{\"notice\":\"Sets the contenthash associated with an ENS node. May only be called by the owner of that node in the ENS registry.\"},\"setGatewayUrl(string)\":{\"notice\":\"Set the gateway URL.\"},\"setName(bytes32,string)\":{\"notice\":\"Sets the name associated with an ENS node, for reverse records. May only be called by the owner of that node in the ENS registry.\"},\"setOffChainDatabaseTimoutDuration(uint256)\":{\"notice\":\"Set the offChainDatabase Timeout Duration.\"},\"setText(bytes32,string,string)\":{\"notice\":\"Sets the text data associated with an ENS node and key. May only be called by the owner of that node in the ENS registry.\"},\"signers()\":{\"notice\":\"Returns a list of signers.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Support ERC-165 introspection.\"},\"text(bytes32,string)\":{\"notice\":\"Returns the text data associated with an ENS node and key.\"}},\"notice\":\"Implements an ENS resolver that directs all queries to a CCIP read gateway. Callers must implement EIP 3668 and ENSIP 10.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"packages/contracts/src/DatabaseResolver.sol\":\"DatabaseResolver\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ens-contracts/=node_modules/@ensdomains/ens-contracts/contracts/\",\":@ensdomains/=node_modules/@ensdomains/\",\":@eth-optimism/contracts-bedrock/src/libraries/=packages/contracts/lib/optimism-bedrock-contracts/\",\":@evmgateway/=packages/contracts/src/evmgateway/\",\":@nitro-contracts/=node_modules/@arbitrum/nitro-contracts/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":buffer/=packages/contracts/lib/buffer/contracts/\",\":forge-std/=node_modules/forge-std/src/\",\":forge-std/=packages/contracts/lib/forge-std/src/\",\":optimism-bedrock-contracts/=packages/contracts/lib/optimism-bedrock-contracts/\"],\"viaIR\":true},\"sources\":{\"node_modules/@ensdomains/buffer/contracts/Buffer.sol\":{\"keccak256\":\"0xd6dd3b0b327288f8e1b711a609f4040fea602e2ad4bba9febdf2f33b4e56eb0c\",\"license\":\"BSD-2-Clause\",\"urls\":[\"bzz-raw://78a722152d40d778a97595e5224fac1d138f4e659dcb1a926148909ef4c4bdca\",\"dweb:/ipfs/QmRxScF53x5ywsChLNpMUCdg2TSoCWTfo8G65Mo3sGY55b\"]},\"node_modules/@ensdomains/ens-contracts/contracts/dnsregistrar/OffchainDNSResolver.sol\":{\"keccak256\":\"0x2e0c9c2c85ac06b8a9a012e37e72c5b63b403c027d0cbc0ab1659ddafa26bef4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2deeb76dec14105132945fd40348f15c87656d6a63ebda2a38f53ad4a0b41e33\",\"dweb:/ipfs/QmfFLLdzWWJhx4EBTvj4qSFKB9SoBgeY4MuhFScm6d576E\"]},\"node_modules/@ensdomains/ens-contracts/contracts/dnssec-oracle/BytesUtils.sol\":{\"keccak256\":\"0x4f10902639b85a17ae10745264feff322e793bfb1bc130a9a90efa7dda47c6cc\",\"urls\":[\"bzz-raw://d799f88aea475ae2c65510fc623c45d1af4933a30227c08f64aa657ca27d7238\",\"dweb:/ipfs/QmWDWejYetje7j2DzBNSKm8JBaUiQ6Dink1oKQyKxPu7pP\"]},\"node_modules/@ensdomains/ens-contracts/contracts/dnssec-oracle/DNSSEC.sol\":{\"keccak256\":\"0xee6a236a59e5db8418c98ee4640a91987d26533c02d305cc6c7a37a3ac4ee907\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82f195e62ee06e59e48a69ac2c721706320779d36b4fb5a085fd26a2093a8897\",\"dweb:/ipfs/QmRnCN58XihsJ2zUdxrU5waj6yDn7fJgAbfxve4CFmVZGB\"]},\"node_modules/@ensdomains/ens-contracts/contracts/dnssec-oracle/RRUtils.sol\":{\"keccak256\":\"0x4dd68a6efd7c38f6b0e95ca0c056ecb74f88583da650b1a8639e6e78be36fede\",\"urls\":[\"bzz-raw://d68c689e9fb1f9eb3209640c97c192482adff3badf5b61e34e2c475a64eb1c45\",\"dweb:/ipfs/QmUE5pBBro64R2tnXAAUxvf1G7tzAWfkcYA4iSsbhZUfCj\"]},\"node_modules/@ensdomains/ens-contracts/contracts/registry/ENS.sol\":{\"keccak256\":\"0x7cb1158c7d268b63de1468e28e2711b28d686e2628ddb22da2149cd93ddeafda\",\"urls\":[\"bzz-raw://a7018309acca24b10ea1235b1c27828f29f2ddfabb653a794639baf620dc2314\",\"dweb:/ipfs/QmakFQT5NFvGs3g8xxwtgtWdddq28Wtm6MjNSpJNhV1YpR\"]},\"node_modules/@ensdomains/ens-contracts/contracts/registry/ENSRegistry.sol\":{\"keccak256\":\"0xa7a7a64fb980e521c991415e416fd4106a42f892479805e1daa51ecb0e2e5198\",\"urls\":[\"bzz-raw://9e38bcea7309c8d530266511936ba6aece79c8e892e6beb9cbe1b8e35cbd4bcc\",\"dweb:/ipfs/QmVRmcagSnoryJtcuiYnQgAcQcfm2MPVqsMadNYM89boEJ\"]},\"node_modules/@ensdomains/ens-contracts/contracts/resolvers/profiles/IABIResolver.sol\":{\"keccak256\":\"0x85b373d02d19374fe570af407f459768285704bf7f30ab17c30eabfb5a10e4c3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2046ce3d92d29806d7b447f7ab4227f19b0b2e5c75fd5b4a3fcaef7fe2442141\",\"dweb:/ipfs/QmRgnfWjFetrSJngkhU7Yui1ZcK1MeatvZDpvUTYNuYnND\"]},\"node_modules/@ensdomains/ens-contracts/contracts/resolvers/profiles/IAddrResolver.sol\":{\"keccak256\":\"0x2ad7f2fc60ebe0f93745fe70247f6a854f66af732483fda2a3c5e055614445e8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://43922ba183ff20d87dce7fc5d715e626b26594151e36dcc8d7c6329b9a822963\",\"dweb:/ipfs/QmTg9uHTugTxzqddN68gnhNbGt4bGJBS9mQcss6GYggR4X\"]},\"node_modules/@ensdomains/ens-contracts/contracts/resolvers/profiles/IAddressResolver.sol\":{\"keccak256\":\"0x411447c1e90c51e09702815a85ec725ffbbe37cf96e8cc4d2a8bd4ad8a59d73e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://543aa2756447a428711b69aea79e9f4641c22f8330ba920b2a49fde8d9207f82\",\"dweb:/ipfs/QmTdpcYRWLH3BL7iytnqcSzRojTPe3YettKaTqeCvKPk54\"]},\"node_modules/@ensdomains/ens-contracts/contracts/resolvers/profiles/IContentHashResolver.sol\":{\"keccak256\":\"0xd95cd77684ba5752c428d7dceb4ecc6506ac94f4fbb910489637eb68dcd8e366\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daf1fee7770679bd935b8b5686789a4ecc532caeef5a9b8e1b60ae0c285e743e\",\"dweb:/ipfs/QmSaHBAqtDdbQLH6QN4EbupMrq2ah8g6fqE7fLX1u4cjMZ\"]},\"node_modules/@ensdomains/ens-contracts/contracts/resolvers/profiles/IExtendedDNSResolver.sol\":{\"keccak256\":\"0x541f8799c34ff9e7035d09f06ae0f0f8a16b6065e9b60a15670b957321630f72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6775a4436f3598038158894749dd3ae0531ef5059998efadedd148a0194d15c3\",\"dweb:/ipfs/QmVZb3aTs45VauEQLJBU2WEtCaQ6JRREbrbx4w7SKH8iWs\"]},\"node_modules/@ensdomains/ens-contracts/contracts/resolvers/profiles/IExtendedResolver.sol\":{\"keccak256\":\"0x5d81521cfae7d9a4475d27533cd8ed0d3475d369eb0674fd90ffbdbdf292faa3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d244d15588785044b54c453ab6dc51c616ab70cb8b9e687d3e54565bcae97760\",\"dweb:/ipfs/QmXz4ZZBTFogdkdTV1mcE3ywvL2agKVZHLNNeRHCKVruYM\"]},\"node_modules/@ensdomains/ens-contracts/contracts/resolvers/profiles/INameResolver.sol\":{\"keccak256\":\"0x9ec392b612447b1acbdc01114f2da2837a658d3f3157f60a99c5269f0b623346\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5b2cd9e5339b09f40e82bd91fed7d5f643dd031393eefb9aec588eaba8465049\",\"dweb:/ipfs/QmT2A8eswhJU9YadCs9BtwKNj6YGypntXmFepANQYyGw7x\"]},\"node_modules/@ensdomains/ens-contracts/contracts/resolvers/profiles/IPubkeyResolver.sol\":{\"keccak256\":\"0x69748947093dd2fda9ddcebd0adf19a6d1e7600df1d4b1462a0417156caddca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2f86e50bd17c38fb10feb577d88d8970c585017a391ef10e3aaa3d50f81555\",\"dweb:/ipfs/QmaxLx2pqCUxf9W2dusfviZ9aSiTuVwuekGo73rjvmGifE\"]},\"node_modules/@ensdomains/ens-contracts/contracts/resolvers/profiles/ITextResolver.sol\":{\"keccak256\":\"0x7c5debb3c42cd9f5de2274ea7aa053f238608314b62db441c40e31cea2543fd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://412e34ae2d84d542ffa6791486963f3fe04432a3ffd51877d441256dc2941914\",\"dweb:/ipfs/QmciS4mGAQ6KJtLiLcBFekHKhYAYMmubDWGkpZ3sUFtJPW\"]},\"node_modules/@ensdomains/ens-contracts/contracts/utils/HexUtils.sol\":{\"keccak256\":\"0xcae20ad72181f47dfe7fba7d88e8d902a01576b16e93362878e726989d6cfb4d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://168a51510aa5ad40610254cb466f26c208cd36c11913ee94d001a756449f87f9\",\"dweb:/ipfs/QmP8gqmb93trZsyP22BFCXKz2XaoP9cF9UTjZT2SUdQtcS\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc980984badf3984b6303b377711220e067722bbd6a135b24669ff5069ef9f32\",\"dweb:/ipfs/QmPHXMSXj99XjSVM21YsY6aNtLLjLVXDbyN76J5HQYvvrz\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a367861093b74443b137564d3f3c472f70bcf114739e62059c939f25e315706c\",\"dweb:/ipfs/Qmd7JMpcxD9RuQjK3uM3EzJUgSqdN8vzp8eytEiuwxQJ6h\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b81d9ff6559ea5c47fc573e17ece6d9ba5d6839e213e6ebc3b4c5c8fe4199d7f\",\"dweb:/ipfs/QmPCW1bFisUzJkyjroY3yipwfism9RRCigCcK1hbXtVM8n\"]},\"node_modules/@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x809bc3edb4bcbef8263fa616c1b60ee0004b50a8a1bfa164d8f57fd31f520c58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8b93a1e39a4a19eba1600b92c96f435442db88cac91e315c8291547a2a7bcfe2\",\"dweb:/ipfs/QmTm34KVe6uZBZwq8dZDNWwPcm24qBJdxqL3rPxBJ4LrMv\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c\",\"dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS\"]},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7\",\"dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6\"]},\"packages/contracts/src/DatabaseResolver.sol\":{\"keccak256\":\"0x46d7f16dc0470f19f7e4c8138f0ab6edb1e999a620192bb3060083821522d8c9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0fafd5d82d5fab6533a401b954b1e6e7694cd24bdfcff8d8b04e50bca6669e6\",\"dweb:/ipfs/QmPH411UdQ6b9QgYv1dmv3nL6L6idWz693oxULwyciDVsV\"]},\"packages/contracts/src/IWriteDeferral.sol\":{\"keccak256\":\"0x7494c60231618a4b6e85fc6ee405c42a11f35d7a6845a06a3b9768710a39f1a8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7261bcd4556a9b07dfcc22890076e75f35cba69e73c6e572412fad1994c79514\",\"dweb:/ipfs/QmdqBBERpjZ6W45cL9d3m4bvksHkserMKfe9D3Jcbqxp1v\"]},\"packages/contracts/src/SignatureVerifier.sol\":{\"keccak256\":\"0x159ba38d3916effbc7f04e304aef7e25e629841de8042f0d8930de859ba6ebb3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8126da63e2cb07e7ba394d4e07ef30af10925445bf0f78abd1fc75ac9f3f2d7\",\"dweb:/ipfs/QmYAwQyahaFAyLy2CobgoXTxqWQ8jcerzEv4S8ujMp6hm4\"]},\"packages/contracts/src/utils/EnumerableSetUpgradeable.sol\":{\"keccak256\":\"0x07b74f747c50b7f46f6b892ef3057cf0851ee5d74a98efa94336fe52244013bc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://32b04807b0258c892f167b1a8e3204fa0379e1505f2ff380946edc55d43534b2\",\"dweb:/ipfs/QmSdsAsLezW8vkJTfPsYTBBySXvAggX6yxn6krBK3JcMFD\"]},\"packages/contracts/src/utils/TypeToString.sol\":{\"keccak256\":\"0x21dae9fca5e47dc93ff869ac631be0e6fa43765e93650132e9504ff729720c4f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://924682f33fcb82dbf595082781202939e9a4174a01e8af829be46831ebaeb638\",\"dweb:/ipfs/QmNp3KBgk2QfRsQAAmyCizKAWejSdxM7z8HS7WmGiqqWS5\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"newGatewayUrl","type":"string"},{"internalType":"uint256","name":"newOffChainDatabaseTimeoutDuration","type":"uint256"},{"internalType":"address[]","name":"newSigners","type":"address[]"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"string[]","name":"urls","type":"string[]"},{"internalType":"bytes","name":"callData","type":"bytes"},{"internalType":"bytes4","name":"callbackFunction","type":"bytes4"},{"internalType":"bytes","name":"extraData","type":"bytes"}],"type":"error","name":"OffchainLookup"},{"inputs":[{"internalType":"string","name":"cause","type":"string"}],"type":"error","name":"SignatureVerifier__InvalidSignature"},{"inputs":[{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"contractAddress","type":"address"}],"type":"error","name":"StorageHandledByL2"},{"inputs":[{"internalType":"struct IWriteDeferral.domainData","name":"sender","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint64","name":"chainId","type":"uint64"},{"internalType":"address","name":"verifyingContract","type":"address"}]},{"internalType":"string","name":"url","type":"string"},{"internalType":"struct IWriteDeferral.messageData","name":"data","type":"tuple","components":[{"internalType":"bytes4","name":"functionSelector","type":"bytes4"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"struct IWriteDeferral.parameter[]","name":"parameters","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"value","type":"string"}]},{"internalType":"uint256","name":"expirationTimestamp","type":"uint256"}]}],"type":"error","name":"StorageHandledByOffChainDatabase"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32","indexed":true},{"internalType":"address","name":"a","type":"address","indexed":false}],"type":"event","name":"AddrChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32","indexed":true},{"internalType":"uint256","name":"coinType","type":"uint256","indexed":false},{"internalType":"bytes","name":"newAddress","type":"bytes","indexed":false}],"type":"event","name":"AddressChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32","indexed":true},{"internalType":"bytes","name":"hash","type":"bytes","indexed":false}],"type":"event","name":"ContenthashChanged","anonymous":false},{"inputs":[{"internalType":"string","name":"previousUrl","type":"string","indexed":true},{"internalType":"string","name":"newUrl","type":"string","indexed":true}],"type":"event","name":"GatewayUrlSet","anonymous":false},{"inputs":[{"internalType":"uint256","name":"chainId","type":"uint256","indexed":true},{"internalType":"address","name":"previousContractAddress","type":"address","indexed":true},{"internalType":"address","name":"newContractAddress","type":"address","indexed":true}],"type":"event","name":"L2HandlerContractAddressChanged","anonymous":false},{"inputs":[{"internalType":"uint256","name":"previousChainId","type":"uint256","indexed":true},{"internalType":"uint256","name":"newChainId","type":"uint256","indexed":true}],"type":"event","name":"L2HandlerDefaultChainIdChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32","indexed":true},{"internalType":"string","name":"name","type":"string","indexed":false}],"type":"event","name":"NameChanged","anonymous":false},{"inputs":[{"internalType":"string","name":"previousUrl","type":"string","indexed":true},{"internalType":"string","name":"newUrl","type":"string","indexed":true}],"type":"event","name":"OffChainDatabaseHandlerURLChanged","anonymous":false},{"inputs":[{"internalType":"uint256","name":"previousDuration","type":"uint256","indexed":false},{"internalType":"uint256","name":"newDuration","type":"uint256","indexed":false}],"type":"event","name":"OffChainDatabaseTimeoutDurationSet","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"addedSigner","type":"address","indexed":true}],"type":"event","name":"SignerAdded","anonymous":false},{"inputs":[{"internalType":"address","name":"removedSigner","type":"address","indexed":true}],"type":"event","name":"SignerRemoved","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32","indexed":true},{"internalType":"string","name":"indexedKey","type":"string","indexed":true},{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"value","type":"string","indexed":false}],"type":"event","name":"TextChanged","anonymous":false},{"inputs":[{"internalType":"address[]","name":"signersToAdd","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"addSigners"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"}],"stateMutability":"view","type":"function","name":"addr","outputs":[{"internalType":"address payable","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"uint256","name":"coinType","type":"uint256"}],"stateMutability":"view","type":"function","name":"addr","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"}],"stateMutability":"view","type":"function","name":"contenthash","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"gatewayDatabaseTimeoutDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"gatewayUrl","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"isSigner","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"}],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"uint32","name":"ttl","type":"uint32"}],"stateMutability":"view","type":"function","name":"register"},{"inputs":[{"internalType":"address[]","name":"signersToRemove","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"removeSigners"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"bytes","name":"name","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"view","type":"function","name":"resolve","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"bytes","name":"response","type":"bytes"},{"internalType":"bytes","name":"extraData","type":"bytes"}],"stateMutability":"view","type":"function","name":"resolveWithProof","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"uint256","name":"coinType","type":"uint256"},{"internalType":"bytes","name":"a","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"setAddr"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"address","name":"a","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setAddr"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"bytes","name":"hash","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"setContenthash"},{"inputs":[{"internalType":"string","name":"newUrl","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"setGatewayUrl"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"string","name":"name","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"setName"},{"inputs":[{"internalType":"uint256","name":"newDuration","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setOffChainDatabaseTimoutDuration"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"string","name":"key","type":"string"},{"internalType":"string","name":"value","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"setText"},{"inputs":[],"stateMutability":"view","type":"function","name":"signers","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"stateMutability":"pure","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"view","type":"function","name":"text","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"}],"devdoc":{"kind":"dev","methods":{"addSigners(address[])":{"details":"Can only be called by the signer manager.","params":{"signersToAdd":"Signer addresses."}},"addr(bytes32)":{"params":{"node":"The ENS node to query."},"returns":{"_0":"Always reverts with an OffchainLookup error."}},"addr(bytes32,uint256)":{"params":{"coinType":"The coin type of the corresponding address.","node":"The ENS node to query."},"returns":{"_0":"Always reverts with an OffchainLookup error."}},"constructor":{"params":{"newGatewayUrl":"Gateway URL.","newOffChainDatabaseTimeoutDuration":"how long an offchain signature will last","newSigners":"Signer addresses."}},"contenthash(bytes32)":{"params":{"node":"The ENS node to query."},"returns":{"_0":"Always reverts with an OffchainLookup error."}},"isSigner(address)":{"returns":{"_0":"True if a given account is a signer."}},"name(bytes32)":{"params":{"node":"The ENS node to query."},"returns":{"_0":"Always reverts with an OffchainLookup error."}},"owner()":{"details":"Returns the address of the current owner."},"register(bytes32,uint32)":{"params":{"node":"The DNS-encoded name to resolve.","ttl":"Expiration timestamp of the domain"}},"removeSigners(address[])":{"details":"Can only be called by the signer manager.","params":{"signersToRemove":"Signer addresses."}},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"resolve(bytes,bytes)":{"params":{"data":"The ABI encoded data for the underlying resolution function (Eg, addr(bytes32), text(bytes32,string), etc).","name":"The DNS-encoded name to resolve."},"returns":{"_0":"The return data, ABI encoded identically to the underlying function."}},"setAddr(bytes32,address)":{"params":{"a":"The address to set.","node":"The node to update."}},"setAddr(bytes32,uint256,bytes)":{"params":{"a":"The address to set.","coinType":"The constant used to define the coin type of the corresponding address.","node":"The node to update."}},"setContenthash(bytes32,bytes)":{"params":{"hash":"The contenthash to set","node":"The node to update."}},"setGatewayUrl(string)":{"details":"Can only be called by the gateway manager.","params":{"newUrl":"New gateway URL."}},"setName(bytes32,string)":{"params":{"node":"The node to update."}},"setOffChainDatabaseTimoutDuration(uint256)":{"details":"Can only be called by the gateway manager.","params":{"newDuration":"New offChainDatabase timout duration."}},"setText(bytes32,string,string)":{"params":{"key":"The key to set.","node":"The node to update.","value":"The text data value to set."}},"signers()":{"returns":{"_0":"List of signers."}},"supportsInterface(bytes4)":{"params":{"interfaceID":"Interface ID."},"returns":{"_0":"True if a given interface ID is supported."}},"text(bytes32,string)":{"params":{"key":"The text data key to query.","node":"The ENS node to query."},"returns":{"_0":"Always reverts with an OffchainLookup error."}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{"addSigners(address[])":{"notice":"Add a set of new signers."},"addr(bytes32)":{"notice":"Returns the address associated with an ENS node."},"addr(bytes32,uint256)":{"notice":"Returns the address associated with an ENS node for the corresponding coinType."},"constructor":{"notice":"Initializes the contract with the initial parameters."},"contenthash(bytes32)":{"notice":"Returns the contenthash associated with an ENS node."},"isSigner(address)":{"notice":"Returns whether a given account is a signer."},"name(bytes32)":{"notice":"Returns the name associated with an ENS node, for reverse records. Defined in EIP181."},"register(bytes32,uint32)":{"notice":"Resolves a name, as specified by ENSIP 10 (wildcard)."},"removeSigners(address[])":{"notice":"Remove a set of existing signers."},"resolve(bytes,bytes)":{"notice":"Resolves a name, as specified by ENSIP 10 (wildcard)."},"resolveWithProof(bytes,bytes)":{"notice":"Callback used by CCIP read compatible clients to verify and parse the response."},"setAddr(bytes32,address)":{"notice":"Sets the address associated with an ENS node. May only be called by the owner of that node in the ENS registry."},"setAddr(bytes32,uint256,bytes)":{"notice":"Sets the address associated with an ENS node. May only be called by the owner of that node in the ENS registry."},"setContenthash(bytes32,bytes)":{"notice":"Sets the contenthash associated with an ENS node. May only be called by the owner of that node in the ENS registry."},"setGatewayUrl(string)":{"notice":"Set the gateway URL."},"setName(bytes32,string)":{"notice":"Sets the name associated with an ENS node, for reverse records. May only be called by the owner of that node in the ENS registry."},"setOffChainDatabaseTimoutDuration(uint256)":{"notice":"Set the offChainDatabase Timeout Duration."},"setText(bytes32,string,string)":{"notice":"Sets the text data associated with an ENS node and key. May only be called by the owner of that node in the ENS registry."},"signers()":{"notice":"Returns a list of signers."},"supportsInterface(bytes4)":{"notice":"Support ERC-165 introspection."},"text(bytes32,string)":{"notice":"Returns the text data associated with an ENS node and key."}},"version":1}},"settings":{"remappings":["@ens-contracts/=node_modules/@ensdomains/ens-contracts/contracts/","@ensdomains/=node_modules/@ensdomains/","@eth-optimism/contracts-bedrock/src/libraries/=packages/contracts/lib/optimism-bedrock-contracts/","@evmgateway/=packages/contracts/src/evmgateway/","@nitro-contracts/=node_modules/@arbitrum/nitro-contracts/","@openzeppelin/=node_modules/@openzeppelin/","buffer/=packages/contracts/lib/buffer/contracts/","forge-std/=node_modules/forge-std/src/","forge-std/=packages/contracts/lib/forge-std/src/","optimism-bedrock-contracts/=packages/contracts/lib/optimism-bedrock-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"packages/contracts/src/DatabaseResolver.sol":"DatabaseResolver"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"node_modules/@ensdomains/buffer/contracts/Buffer.sol":{"keccak256":"0xd6dd3b0b327288f8e1b711a609f4040fea602e2ad4bba9febdf2f33b4e56eb0c","urls":["bzz-raw://78a722152d40d778a97595e5224fac1d138f4e659dcb1a926148909ef4c4bdca","dweb:/ipfs/QmRxScF53x5ywsChLNpMUCdg2TSoCWTfo8G65Mo3sGY55b"],"license":"BSD-2-Clause"},"node_modules/@ensdomains/ens-contracts/contracts/dnsregistrar/OffchainDNSResolver.sol":{"keccak256":"0x2e0c9c2c85ac06b8a9a012e37e72c5b63b403c027d0cbc0ab1659ddafa26bef4","urls":["bzz-raw://2deeb76dec14105132945fd40348f15c87656d6a63ebda2a38f53ad4a0b41e33","dweb:/ipfs/QmfFLLdzWWJhx4EBTvj4qSFKB9SoBgeY4MuhFScm6d576E"],"license":"MIT"},"node_modules/@ensdomains/ens-contracts/contracts/dnssec-oracle/BytesUtils.sol":{"keccak256":"0x4f10902639b85a17ae10745264feff322e793bfb1bc130a9a90efa7dda47c6cc","urls":["bzz-raw://d799f88aea475ae2c65510fc623c45d1af4933a30227c08f64aa657ca27d7238","dweb:/ipfs/QmWDWejYetje7j2DzBNSKm8JBaUiQ6Dink1oKQyKxPu7pP"],"license":null},"node_modules/@ensdomains/ens-contracts/contracts/dnssec-oracle/DNSSEC.sol":{"keccak256":"0xee6a236a59e5db8418c98ee4640a91987d26533c02d305cc6c7a37a3ac4ee907","urls":["bzz-raw://82f195e62ee06e59e48a69ac2c721706320779d36b4fb5a085fd26a2093a8897","dweb:/ipfs/QmRnCN58XihsJ2zUdxrU5waj6yDn7fJgAbfxve4CFmVZGB"],"license":"MIT"},"node_modules/@ensdomains/ens-contracts/contracts/dnssec-oracle/RRUtils.sol":{"keccak256":"0x4dd68a6efd7c38f6b0e95ca0c056ecb74f88583da650b1a8639e6e78be36fede","urls":["bzz-raw://d68c689e9fb1f9eb3209640c97c192482adff3badf5b61e34e2c475a64eb1c45","dweb:/ipfs/QmUE5pBBro64R2tnXAAUxvf1G7tzAWfkcYA4iSsbhZUfCj"],"license":null},"node_modules/@ensdomains/ens-contracts/contracts/registry/ENS.sol":{"keccak256":"0x7cb1158c7d268b63de1468e28e2711b28d686e2628ddb22da2149cd93ddeafda","urls":["bzz-raw://a7018309acca24b10ea1235b1c27828f29f2ddfabb653a794639baf620dc2314","dweb:/ipfs/QmakFQT5NFvGs3g8xxwtgtWdddq28Wtm6MjNSpJNhV1YpR"],"license":null},"node_modules/@ensdomains/ens-contracts/contracts/registry/ENSRegistry.sol":{"keccak256":"0xa7a7a64fb980e521c991415e416fd4106a42f892479805e1daa51ecb0e2e5198","urls":["bzz-raw://9e38bcea7309c8d530266511936ba6aece79c8e892e6beb9cbe1b8e35cbd4bcc","dweb:/ipfs/QmVRmcagSnoryJtcuiYnQgAcQcfm2MPVqsMadNYM89boEJ"],"license":null},"node_modules/@ensdomains/ens-contracts/contracts/resolvers/profiles/IABIResolver.sol":{"keccak256":"0x85b373d02d19374fe570af407f459768285704bf7f30ab17c30eabfb5a10e4c3","urls":["bzz-raw://2046ce3d92d29806d7b447f7ab4227f19b0b2e5c75fd5b4a3fcaef7fe2442141","dweb:/ipfs/QmRgnfWjFetrSJngkhU7Yui1ZcK1MeatvZDpvUTYNuYnND"],"license":"MIT"},"node_modules/@ensdomains/ens-contracts/contracts/resolvers/profiles/IAddrResolver.sol":{"keccak256":"0x2ad7f2fc60ebe0f93745fe70247f6a854f66af732483fda2a3c5e055614445e8","urls":["bzz-raw://43922ba183ff20d87dce7fc5d715e626b26594151e36dcc8d7c6329b9a822963","dweb:/ipfs/QmTg9uHTugTxzqddN68gnhNbGt4bGJBS9mQcss6GYggR4X"],"license":"MIT"},"node_modules/@ensdomains/ens-contracts/contracts/resolvers/profiles/IAddressResolver.sol":{"keccak256":"0x411447c1e90c51e09702815a85ec725ffbbe37cf96e8cc4d2a8bd4ad8a59d73e","urls":["bzz-raw://543aa2756447a428711b69aea79e9f4641c22f8330ba920b2a49fde8d9207f82","dweb:/ipfs/QmTdpcYRWLH3BL7iytnqcSzRojTPe3YettKaTqeCvKPk54"],"license":"MIT"},"node_modules/@ensdomains/ens-contracts/contracts/resolvers/profiles/IContentHashResolver.sol":{"keccak256":"0xd95cd77684ba5752c428d7dceb4ecc6506ac94f4fbb910489637eb68dcd8e366","urls":["bzz-raw://daf1fee7770679bd935b8b5686789a4ecc532caeef5a9b8e1b60ae0c285e743e","dweb:/ipfs/QmSaHBAqtDdbQLH6QN4EbupMrq2ah8g6fqE7fLX1u4cjMZ"],"license":"MIT"},"node_modules/@ensdomains/ens-contracts/contracts/resolvers/profiles/IExtendedDNSResolver.sol":{"keccak256":"0x541f8799c34ff9e7035d09f06ae0f0f8a16b6065e9b60a15670b957321630f72","urls":["bzz-raw://6775a4436f3598038158894749dd3ae0531ef5059998efadedd148a0194d15c3","dweb:/ipfs/QmVZb3aTs45VauEQLJBU2WEtCaQ6JRREbrbx4w7SKH8iWs"],"license":"MIT"},"node_modules/@ensdomains/ens-contracts/contracts/resolvers/profiles/IExtendedResolver.sol":{"keccak256":"0x5d81521cfae7d9a4475d27533cd8ed0d3475d369eb0674fd90ffbdbdf292faa3","urls":["bzz-raw://d244d15588785044b54c453ab6dc51c616ab70cb8b9e687d3e54565bcae97760","dweb:/ipfs/QmXz4ZZBTFogdkdTV1mcE3ywvL2agKVZHLNNeRHCKVruYM"],"license":"MIT"},"node_modules/@ensdomains/ens-contracts/contracts/resolvers/profiles/INameResolver.sol":{"keccak256":"0x9ec392b612447b1acbdc01114f2da2837a658d3f3157f60a99c5269f0b623346","urls":["bzz-raw://5b2cd9e5339b09f40e82bd91fed7d5f643dd031393eefb9aec588eaba8465049","dweb:/ipfs/QmT2A8eswhJU9YadCs9BtwKNj6YGypntXmFepANQYyGw7x"],"license":"MIT"},"node_modules/@ensdomains/ens-contracts/contracts/resolvers/profiles/IPubkeyResolver.sol":{"keccak256":"0x69748947093dd2fda9ddcebd0adf19a6d1e7600df1d4b1462a0417156caddca7","urls":["bzz-raw://bc2f86e50bd17c38fb10feb577d88d8970c585017a391ef10e3aaa3d50f81555","dweb:/ipfs/QmaxLx2pqCUxf9W2dusfviZ9aSiTuVwuekGo73rjvmGifE"],"license":"MIT"},"node_modules/@ensdomains/ens-contracts/contracts/resolvers/profiles/ITextResolver.sol":{"keccak256":"0x7c5debb3c42cd9f5de2274ea7aa053f238608314b62db441c40e31cea2543fd5","urls":["bzz-raw://412e34ae2d84d542ffa6791486963f3fe04432a3ffd51877d441256dc2941914","dweb:/ipfs/QmciS4mGAQ6KJtLiLcBFekHKhYAYMmubDWGkpZ3sUFtJPW"],"license":"MIT"},"node_modules/@ensdomains/ens-contracts/contracts/utils/HexUtils.sol":{"keccak256":"0xcae20ad72181f47dfe7fba7d88e8d902a01576b16e93362878e726989d6cfb4d","urls":["bzz-raw://168a51510aa5ad40610254cb466f26c208cd36c11913ee94d001a756449f87f9","dweb:/ipfs/QmP8gqmb93trZsyP22BFCXKz2XaoP9cF9UTjZT2SUdQtcS"],"license":"MIT"},"node_modules/@openzeppelin/contracts/access/Ownable.sol":{"keccak256":"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218","urls":["bzz-raw://fc980984badf3984b6303b377711220e067722bbd6a135b24669ff5069ef9f32","dweb:/ipfs/QmPHXMSXj99XjSVM21YsY6aNtLLjLVXDbyN76J5HQYvvrz"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439","urls":["bzz-raw://a367861093b74443b137564d3f3c472f70bcf114739e62059c939f25e315706c","dweb:/ipfs/Qmd7JMpcxD9RuQjK3uM3EzJUgSqdN8vzp8eytEiuwxQJ6h"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Strings.sol":{"keccak256":"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0","urls":["bzz-raw://b81d9ff6559ea5c47fc573e17ece6d9ba5d6839e213e6ebc3b4c5c8fe4199d7f","dweb:/ipfs/QmPCW1bFisUzJkyjroY3yipwfism9RRCigCcK1hbXtVM8n"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x809bc3edb4bcbef8263fa616c1b60ee0004b50a8a1bfa164d8f57fd31f520c58","urls":["bzz-raw://8b93a1e39a4a19eba1600b92c96f435442db88cac91e315c8291547a2a7bcfe2","dweb:/ipfs/QmTm34KVe6uZBZwq8dZDNWwPcm24qBJdxqL3rPxBJ4LrMv"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol":{"keccak256":"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b","urls":["bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d","dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/Math.sol":{"keccak256":"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3","urls":["bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c","dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol":{"keccak256":"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc","urls":["bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7","dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6"],"license":"MIT"},"packages/contracts/src/DatabaseResolver.sol":{"keccak256":"0x46d7f16dc0470f19f7e4c8138f0ab6edb1e999a620192bb3060083821522d8c9","urls":["bzz-raw://a0fafd5d82d5fab6533a401b954b1e6e7694cd24bdfcff8d8b04e50bca6669e6","dweb:/ipfs/QmPH411UdQ6b9QgYv1dmv3nL6L6idWz693oxULwyciDVsV"],"license":"MIT"},"packages/contracts/src/IWriteDeferral.sol":{"keccak256":"0x7494c60231618a4b6e85fc6ee405c42a11f35d7a6845a06a3b9768710a39f1a8","urls":["bzz-raw://7261bcd4556a9b07dfcc22890076e75f35cba69e73c6e572412fad1994c79514","dweb:/ipfs/QmdqBBERpjZ6W45cL9d3m4bvksHkserMKfe9D3Jcbqxp1v"],"license":"MIT"},"packages/contracts/src/SignatureVerifier.sol":{"keccak256":"0x159ba38d3916effbc7f04e304aef7e25e629841de8042f0d8930de859ba6ebb3","urls":["bzz-raw://e8126da63e2cb07e7ba394d4e07ef30af10925445bf0f78abd1fc75ac9f3f2d7","dweb:/ipfs/QmYAwQyahaFAyLy2CobgoXTxqWQ8jcerzEv4S8ujMp6hm4"],"license":"MIT"},"packages/contracts/src/utils/EnumerableSetUpgradeable.sol":{"keccak256":"0x07b74f747c50b7f46f6b892ef3057cf0851ee5d74a98efa94336fe52244013bc","urls":["bzz-raw://32b04807b0258c892f167b1a8e3204fa0379e1505f2ff380946edc55d43534b2","dweb:/ipfs/QmSdsAsLezW8vkJTfPsYTBBySXvAggX6yxn6krBK3JcMFD"],"license":"MIT"},"packages/contracts/src/utils/TypeToString.sol":{"keccak256":"0x21dae9fca5e47dc93ff869ac631be0e6fa43765e93650132e9504ff729720c4f","urls":["bzz-raw://924682f33fcb82dbf595082781202939e9a4174a01e8af829be46831ebaeb638","dweb:/ipfs/QmNp3KBgk2QfRsQAAmyCizKAWejSdxM7z8HS7WmGiqqWS5"],"license":"Apache-2.0"}},"version":1},"id":150} \ No newline at end of file +{ + "abi": [ + { + "type": "constructor", + "inputs": [ + { "name": "newGatewayUrl", "type": "string", "internalType": "string" }, + { + "name": "newOffChainDatabaseTimeoutDuration", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "newSigners", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "addSigners", + "inputs": [ + { + "name": "signersToAdd", + "type": "address[]", + "internalType": "address[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "addr", + "inputs": [ + { "name": "node", "type": "bytes32", "internalType": "bytes32" } + ], + "outputs": [ + { "name": "", "type": "address", "internalType": "address payable" } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "addr", + "inputs": [ + { "name": "node", "type": "bytes32", "internalType": "bytes32" }, + { "name": "coinType", "type": "uint256", "internalType": "uint256" } + ], + "outputs": [{ "name": "", "type": "bytes", "internalType": "bytes" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "contenthash", + "inputs": [ + { "name": "node", "type": "bytes32", "internalType": "bytes32" } + ], + "outputs": [{ "name": "", "type": "bytes", "internalType": "bytes" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "gatewayDatabaseTimeoutDuration", + "inputs": [], + "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "gatewayUrl", + "inputs": [], + "outputs": [{ "name": "", "type": "string", "internalType": "string" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "isSigner", + "inputs": [ + { "name": "account", "type": "address", "internalType": "address" } + ], + "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "name", + "inputs": [ + { "name": "node", "type": "bytes32", "internalType": "bytes32" } + ], + "outputs": [{ "name": "", "type": "string", "internalType": "string" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [{ "name": "", "type": "address", "internalType": "address" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "register", + "inputs": [ + { "name": "node", "type": "bytes32", "internalType": "bytes32" }, + { "name": "ttl", "type": "uint32", "internalType": "uint32" } + ], + "outputs": [], + "stateMutability": "view" + }, + { + "type": "function", + "name": "removeSigners", + "inputs": [ + { + "name": "signersToRemove", + "type": "address[]", + "internalType": "address[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "renounceOwnership", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "resolve", + "inputs": [ + { "name": "name", "type": "bytes", "internalType": "bytes" }, + { "name": "data", "type": "bytes", "internalType": "bytes" } + ], + "outputs": [{ "name": "", "type": "bytes", "internalType": "bytes" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "resolveWithProof", + "inputs": [ + { "name": "response", "type": "bytes", "internalType": "bytes" }, + { "name": "extraData", "type": "bytes", "internalType": "bytes" } + ], + "outputs": [{ "name": "", "type": "bytes", "internalType": "bytes" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "setAddr", + "inputs": [ + { "name": "node", "type": "bytes32", "internalType": "bytes32" }, + { "name": "coinType", "type": "uint256", "internalType": "uint256" }, + { "name": "a", "type": "bytes", "internalType": "bytes" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setAddr", + "inputs": [ + { "name": "node", "type": "bytes32", "internalType": "bytes32" }, + { "name": "a", "type": "address", "internalType": "address" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setContenthash", + "inputs": [ + { "name": "node", "type": "bytes32", "internalType": "bytes32" }, + { "name": "hash", "type": "bytes", "internalType": "bytes" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setGatewayUrl", + "inputs": [ + { "name": "newUrl", "type": "string", "internalType": "string" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setName", + "inputs": [ + { "name": "node", "type": "bytes32", "internalType": "bytes32" }, + { "name": "name", "type": "string", "internalType": "string" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setOffChainDatabaseTimoutDuration", + "inputs": [ + { "name": "newDuration", "type": "uint256", "internalType": "uint256" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setText", + "inputs": [ + { "name": "node", "type": "bytes32", "internalType": "bytes32" }, + { "name": "key", "type": "string", "internalType": "string" }, + { "name": "value", "type": "string", "internalType": "string" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "signers", + "inputs": [], + "outputs": [ + { "name": "", "type": "address[]", "internalType": "address[]" } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "supportsInterface", + "inputs": [ + { "name": "interfaceID", "type": "bytes4", "internalType": "bytes4" } + ], + "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "text", + "inputs": [ + { "name": "node", "type": "bytes32", "internalType": "bytes32" }, + { "name": "key", "type": "string", "internalType": "string" } + ], + "outputs": [{ "name": "", "type": "string", "internalType": "string" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "transferOwnership", + "inputs": [ + { "name": "newOwner", "type": "address", "internalType": "address" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "AddrChanged", + "inputs": [ + { + "name": "node", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "a", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "AddressChanged", + "inputs": [ + { + "name": "node", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "coinType", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "newAddress", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ContenthashChanged", + "inputs": [ + { + "name": "node", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "hash", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "GatewayUrlSet", + "inputs": [ + { + "name": "previousUrl", + "type": "string", + "indexed": true, + "internalType": "string" + }, + { + "name": "newUrl", + "type": "string", + "indexed": true, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "L2HandlerContractAddressChanged", + "inputs": [ + { + "name": "chainId", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + }, + { + "name": "previousContractAddress", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newContractAddress", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "L2HandlerDefaultChainIdChanged", + "inputs": [ + { + "name": "previousChainId", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + }, + { + "name": "newChainId", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "NameChanged", + "inputs": [ + { + "name": "node", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "name", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OffChainDatabaseHandlerURLChanged", + "inputs": [ + { + "name": "previousUrl", + "type": "string", + "indexed": true, + "internalType": "string" + }, + { + "name": "newUrl", + "type": "string", + "indexed": true, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OffChainDatabaseTimeoutDurationSet", + "inputs": [ + { + "name": "previousDuration", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "newDuration", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "previousOwner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "SignerAdded", + "inputs": [ + { + "name": "addedSigner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "SignerRemoved", + "inputs": [ + { + "name": "removedSigner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "TextChanged", + "inputs": [ + { + "name": "node", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "indexedKey", + "type": "string", + "indexed": true, + "internalType": "string" + }, + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "value", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "error", + "name": "OffchainLookup", + "inputs": [ + { "name": "sender", "type": "address", "internalType": "address" }, + { "name": "urls", "type": "string[]", "internalType": "string[]" }, + { "name": "callData", "type": "bytes", "internalType": "bytes" }, + { + "name": "callbackFunction", + "type": "bytes4", + "internalType": "bytes4" + }, + { "name": "extraData", "type": "bytes", "internalType": "bytes" } + ] + }, + { + "type": "error", + "name": "SignatureVerifier__InvalidSignature", + "inputs": [ + { "name": "cause", "type": "string", "internalType": "string" } + ] + }, + { + "type": "error", + "name": "StorageHandledByL2", + "inputs": [ + { "name": "chainId", "type": "uint256", "internalType": "uint256" }, + { + "name": "contractAddress", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "StorageHandledByOffChainDatabase", + "inputs": [ + { + "name": "sender", + "type": "tuple", + "internalType": "struct IWriteDeferral.domainData", + "components": [ + { "name": "name", "type": "string", "internalType": "string" }, + { "name": "version", "type": "string", "internalType": "string" }, + { "name": "chainId", "type": "uint64", "internalType": "uint64" }, + { + "name": "verifyingContract", + "type": "address", + "internalType": "address" + } + ] + }, + { "name": "url", "type": "string", "internalType": "string" }, + { + "name": "data", + "type": "tuple", + "internalType": "struct IWriteDeferral.messageData", + "components": [ + { + "name": "functionSelector", + "type": "bytes4", + "internalType": "bytes4" + }, + { "name": "sender", "type": "address", "internalType": "address" }, + { + "name": "parameters", + "type": "tuple[]", + "internalType": "struct IWriteDeferral.parameter[]", + "components": [ + { "name": "name", "type": "string", "internalType": "string" }, + { "name": "value", "type": "string", "internalType": "string" } + ] + }, + { + "name": "expirationTimestamp", + "type": "uint256", + "internalType": "uint256" + } + ] + } + ] + } + ], + "bytecode": { + "object": "0x60806040818152346200042057620026d080380380916200002182866200043b565b84398201606083820312620004205782516001600160401b0391908281116200042057840193601f92828487011215620004205785516020918082116200042557601f19978751926200007b858b8a84011601856200043b565b8084528685828401011162000420576200009b918580860191016200045f565b82840151938781015190828211620004205701858782011215620004205780519582871162000425576005918760051b908a5198620000dd8884018b6200043b565b895286808a019282010192831162000420578601905b828210620003ff57505060008054336001600160a01b0319821681178355919892506001600160a01b03919082167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08a80a3815191885b838110620003905750505050508651908596600197885490846200016e8362000484565b80825291838c1689811562000371575060011462000330575b62000195925003856200043b565b84519283116200031c57620001aa9062000484565b818111620002d8575b5088998799989950859183116001146200025a575091600080516020620026b0833981519152988262000205936200020c958a916200024e575b50600019600383901b1c191690821b179055620004c1565b91620004c1565b907f89e3f76277bf08e4371bcc677d04c7d3ab8fcef918f05d5e9668c532f3bd120786519580a3600254826002558352820152a15161212c9081620005848239f35b905086015138620001ed565b898852858820999291908216885b818110620002bf57509282600080516020620026b08339815191529b82936200020c9795620002059710620002a5575b5050811b019055620004c1565b88015160001960f88460031b161c19169055388062000298565b828701518c559a84019a8c9a5091870191870162000268565b8888528588208280850160051c82019288861062000312575b0160051c01905b818110620003075750620001b3565b8881558901620002f8565b92508192620002f1565b634e487b7160e01b88526041600452602488fd5b50508989528487808b208c8c915b8583106200035757505062000195935082010162000187565b80919294505483858b01015201910188908c88936200033e565b915050620001959260ff19851682840152151560051b82010162000187565b8151811015620003eb57808389600193881b8501015116620003b281620004e3565b620003c0575b50016200014a565b7f47d1c22a25bb3a5d4e481b9b1e6944c2eade3181a0a20b495ed61d35b5323f248c80a238620003b8565b634e487b7160e01b8a52603260045260248afd5b81516001600160a01b038116810362000420578152908601908601620000f3565b600080fd5b634e487b7160e01b600052604160045260246000fd5b601f909101601f19168101906001600160401b038211908210176200042557604052565b60005b838110620004735750506000910152565b818101518382015260200162000462565b90600182811c92168015620004b6575b6020831014620004a057565b634e487b7160e01b600052602260045260246000fd5b91607f169162000494565b620004db906020604051928284809451938492016200045f565b810103902090565b6000818152600460205260408120546200057e57600354680100000000000000008110156200056a57600181018060035581101562000556577fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0182905560035491815260046020526040902055600190565b634e487b7160e01b82526032600452602482fd5b634e487b7160e01b82526041600452602482fd5b90509056fe6080604052600436101561001257600080fd5b60003560e01c806301ffc9a71461019d57806310f13a8c146101985780631787080e1461019357806327a5f3af1461018e578063304e6ade146101895780633b3b57de1461014857806346f0975a1461018457806359d1d43c1461017f578063691f343114610148578063715018a61461017a57806377372213146101755780637df73e27146101705780638b95dd711461016b5780638bf165d9146101665780638c92c8c3146101615780638d361e431461015c5780638da5cb5b146101575780639061b92314610152578063b2c20f4e1461014d578063bc1c58d114610148578063d5fa2b0014610143578063e8906a2d1461013e578063f1cb7e0614610139578063f2fde38b146101345763f4d4d2f81461012f57600080fd5b6110ae565b610fe7565b610fd0565b610f02565b610e90565b61065d565b610e19565b610d74565b610cf4565b610c78565b610c0e565b610bcf565b6109a0565b610875565b6107ee565b610793565b61077d565b610674565b6105b9565b610532565b6103c0565b6102d2565b346102a05760203660031901126102a05760043563ffffffff60e01b81168091036102a05761021c90639061b92360e01b811490811561028f575b811561027e575b811561026d575b811561025c575b811561024b575b811561023a575b8115610229575b8115610220575b5060405190151581529081906020820190565b0390f35b90501538610209565b6378e5bf0360e11b81149150610202565b63bc1c58d160e01b811491506101fb565b63691f343160e01b811491506101f4565b631674750f60e21b811491506101ed565b63c869023360e01b811491506101e6565b631101d5ab60e11b811491506101df565b631d9dabef60e11b811491506101d8565b600080fd5b9181601f840112156102a0578235916001600160401b0383116102a057602083818601950101116102a057565b346102a05760603660031901126102a0576001600160401b036024358181116102a0576103039036906004016102a5565b916044359081116102a05761031c9036906004016102a5565b919061032661124b565b938451156103bb576103936103b4936020870151610342611349565b905261035c61034f6114b4565b600435602082015261184c565b602061036789611308565b51015261037387611315565b5161037c611369565b9052602061038988611315565b510192369161094b565b905261039e84611325565b516103a7611388565b9052602061038985611325565b9052611656565b6112f2565b346102a0576020806003193601126102a0576001600160401b036004358181116102a0576103f56104049136906004016102a5565b6103fd611706565b369161094b565b916040519161041d8361041681610a97565b0384610900565b835190811161052d5760019161043c826104378554610a5d565b61175e565b602090601f83116001146104b557509161047582610482959361047c956000916104aa575b508160011b916000199060031b1c19161790565b90556117d9565b916117d9565b907f89e3f76277bf08e4371bcc677d04c7d3ab8fcef918f05d5e9668c532f3bd1207600080a3005b905087015138610461565b600160005290601f1983166000805160206120d7833981519152926000905b82821061051657505092849261047c9592826104829896106104fd575b5050811b0190556117d9565b88015160001960f88460031b161c1916905538806104f1565b808785968294968c015181550195019301906104d4565b6108b4565b346102a05760203660031901126102a0577f96c6caf9f42ebbbb9ba734bc86cf4885bd740fa956cdc9e642cafdb29d1b0e9b6040600435610571611706565b600254908060025582519182526020820152a1005b9060406003198301126102a05760043591602435906001600160401b0382116102a0576105b5916004016102a5565b9091565b346102a0576105c736610586565b90916105d1611297565b928351156103bb57610600602085019283516105eb611349565b90526105f56114b4565b90602082015261184c565b928451156103bb5761064a9360206106459451015261061e85611315565b516040519061062c826108ca565b60048252630d0c2e6d60e31b602083015252369161094b565b61184c565b602061065583611315565b510152611656565b346102a0576020366003190112156113a957600080fd5b346102a0576000806003193601126107325760405180916003549081835260208093018092600383527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90835b81811061071e57505050846106d7910385610900565b60405193838594850191818652518092526040850193925b8281106106fe57505050500390f35b83516001600160a01b0316855286955093810193928101926001016106ef565b8254845292860192600192830192016106c1565b80fd5b60005b8381106107485750506000910152565b8181015183820152602001610738565b9060209161077181518092818552858086019101610735565b601f01601f1916010190565b346102a05761078b36610586565b5050506113a9565b346102a057600080600319360112610732576107ad611706565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b346102a0576107fc36610586565b9091610806611297565b928351156103bb57610820602085019283516105eb611349565b8451156103bb5760206103b49351015261083984611315565b5160405190610847826108ca565b60048252636e616d6560e01b602083015252602061038985611315565b6001600160a01b038116036102a057565b346102a05760203660031901126102a05760043561089281610864565b60018060a01b0316600052600460205260206040600020541515604051908152f35b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761052d57604052565b608081019081106001600160401b0382111761052d57604052565b90601f801991011681019081106001600160401b0382111761052d57604052565b6040519061092e826108e5565b565b6001600160401b03811161052d57601f01601f191660200190565b92919261095782610930565b916109656040519384610900565b8294818452818301116102a0578281602093846000960137010152565b9080601f830112156102a05781602061099d9335910161094b565b90565b346102a05760603660031901126102a0576044356001600160401b0381116102a0576109d0903690600401610982565b6109d861124b565b908151156103bb57610a529060208301516109f1611349565b90526109fe61034f6114b4565b6020610a0985611308565b510152610a1583611315565b51610a1e611429565b9052610a2b602435611ad6565b6020610a3685611315565b510152610a4283611325565b51610a4b61144e565b905261184c565b602061065583611325565b90600182811c92168015610a8d575b6020831014610a7757565b634e487b7160e01b600052602260045260246000fd5b91607f1691610a6c565b90600091600190600154610aaa81610a5d565b8083529260209160018116908115610b155750600114610acb575b50505050565b9293945060016000526000805160206120d7833981519152926000935b858510610b02575050506020925001019038808080610ac5565b8054858501840152938201938101610ae8565b92505050602093945060ff929192191683830152151560051b01019038808080610ac5565b90600091600190600154610b4d81610a5d565b8083529260209160018116908115610b155750600114610b6d5750505050565b9293945060016000526000805160206120d7833981519152926000935b858510610ba4575050506020925001019038808080610ac5565b8054858501840152938201938101610b8a565b6040519061092e82610bc881610b3a565b0383610900565b346102a05760003660031901126102a05761021c604051610bfa81610bf381610a97565b0382610900565b604051918291602083526020830190610758565b346102a05760003660031901126102a0576020600254604051908152f35b9060206003198301126102a0576004356001600160401b03928382116102a057806023830112156102a05781600401359384116102a05760248460051b830101116102a0576024019190565b346102a057610c8636610c2c565b610c8e611706565b60005b818110610c9a57005b8060019160051b840135610cad81610864565b828060a01b0316610cbd81611d04565b610cc9575b5001610c91565b7f3525e22824a8a7df2c9a6029941c824cf95b6447f1e13d5128fd3826d35afe8b600080a238610cc2565b346102a05760003660031901126102a0576000546040516001600160a01b039091168152602090f35b60406003198201126102a0576001600160401b03916004358381116102a05782610d49916004016102a5565b939093926024359182116102a0576105b5916004016102a5565b90602061099d928181520190610758565b346102a057610d8236610d1d565b92509050604051610d92816108ca565b6001815260005b602080821015610db457906060602092828501015201610d99565b5050610e1583610dc2610bb7565b610dcb84611308565b52610dd583611308565b5060405190610dfb82610ded3084896020850161198e565b03601f198101845283610900565b604051630556f18360e41b815294859430600487016119a7565b0390fd5b346102a05760403660031901126102a05760243563ffffffff81168091036102a057610e43611297565b908151156103bb5760208201908151610e5a611349565b9052610e6761034f6114b4565b8351156103bb57602061064a93510152610e8083611315565b51610e89611471565b9052611ad6565b346102a05760403660031901126102a057602435610ead81610864565b610eb5611297565b908151156103bb5760208201908151610ecc611349565b9052610ed961034f6114b4565b8351156103bb57602061064a93510152610ef283611315565b51610efb61144e565b9052611c1a565b346102a057610f1036610c2c565b90610f19611706565b610f2282611234565b90610f306040519283610900565b828252602092602083019060051b8201913683116102a057905b828210610fb75783805160005b818110610f6057005b6001906001600160a01b03610f758286611335565b5116610f8081611e64565b610f8c575b5001610f57565b7f47d1c22a25bb3a5d4e481b9b1e6944c2eade3181a0a20b495ed61d35b5323f24600080a284610f85565b8480918335610fc581610864565b815201910190610f4a565b346102a0576040366003190112156113a957600080fd5b346102a05760203660031901126102a05760043561100481610864565b61100c611706565b6001600160a01b03908116801561105a57600080546001600160a01b03198116831782559092167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346102a0576110bc36610d1d565b92918201926060838503126102a0576001600160401b039280358481116102a057856110e9918301610982565b946020820135858116958682036102a05760408401359081116102a05761113c9561111d8994611126936111379701610982565b95810190611c3b565b9091906001600160a01b0316611db6565b611e4f565b9042116111fa57604051637df73e2760e01b81526001600160a01b03919091166004820152602081602481305afa9081156111f5576000916111c6575b501561118f5761021c9060405191829182610d63565b604051636ee8a75560e01b815260206004820152600e60248201526d34b73b30b634b21039b4b3b732b960911b6044820152606490fd5b6111e8915060203d6020116111ee575b6111e08183610900565b810190611490565b38611179565b503d6111d6565b6114a8565b604051636ee8a75560e01b81526020600482015260116024820152701cda59db985d1d5c9948195e1c1a5c9959607a1b6044820152606490fd5b6001600160401b03811161052d5760051b60200190565b60409060405161125a816108e5565b60038152809160005b60608082101561128f5785516020929161127c826108ca565b8082528382015284820183015201611263565b505091925050565b60409060405191606092606081018181106001600160401b0382111761052d5760405260028152809360005b8381106112d05750505050565b60209084516112de816108ca565b8381528284818301528286010152016112c3565b634e487b7160e01b600052603260045260246000fd5b8051156103bb5760200190565b8051600110156103bb5760400190565b8051600210156103bb5760600190565b80518210156103bb5760209160051b010190565b60405190611356826108ca565b60048252636e6f646560e01b6020830152565b60405190611376826108ca565b60038252626b657960e81b6020830152565b60405190611395826108ca565b600582526476616c756560d81b6020830152565b6040516113b5816108ca565b6001815260005b602090818110156113d75760606020928285010152016113bc565b826113e0610bb7565b6113e982611308565b526113f381611308565b506040519061140a82610ded303660208401611966565b610e15604051928392630556f18360e41b845236903060048601611a4d565b60405190611436826108ca565b6009825268636f696e5f7479706560b81b6020830152565b6040519061145b826108ca565b60078252666164647265737360c81b6020830152565b6040519061147e826108ca565b60038252621d1d1b60ea1b6020830152565b908160209103126102a0575180151581036102a05790565b6040513d6000823e3d90fd5b604051906114c1826108ca565b60208083523683820137565b906114d782610930565b6114e46040519182610900565b82815280926114f5601f1991610930565b0190602036910137565b634e487b7160e01b600052601160045260246000fd5b906001820180921161152357565b6114ff565b9190820180921161152357565b90916060825261155183516080606085015260e0840190610758565b9261156d60209485830151605f19868303016080870152610758565b6040828101516001600160401b031660a08601526060909201516001600160a01b0390811660c086015284820386860152906115a890610b3a565b9382818603910152608084019063ffffffff60e01b84511685528584015116858501528183015194608083860152855180925260a08501928160a08460051b8801019701936000915b84831061160a5750505050505060608091015191015290565b9091929394978480611646600193609f198c82030187528c519083611636835189845289840190610758565b9201519084818403910152610758565b9a019301930191949392906115f1565b604051611662816108ca565b601081526f2230ba30b130b9b2a932b9b7b63b32b960811b602082015260405161168b816108ca565b60018152603160f81b60208201526116a1610921565b9182526020820152600160408201523060608201526116c260025442611528565b6116ca610921565b6000356001600160e01b03191681529233602085015260408401526060830152610e15604051928392634bd55edd60e01b845260048401611535565b6000546001600160a01b0316330361171a57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b90601f821161176b575050565b60019160009060016000526000805160206120d7833981519152906020601f850160051c830194106117b8575b601f0160051c01915b8281106117ae5750505050565b81815583016117a1565b9092508290611798565b906117d560209282815194859201610735565b0190565b6117f190602060405192828480945193849201610735565b810103902090565b60405190611806826108ca565b601082526f181899199a1a9b1b9c1cb0b131b232b360811b6020830152565b9081518110156103bb570160200190565b908160011b918083046002149015171561152357565b906118556117f9565b611868611863845160011b90565b6114cd565b9060009360005b81518110156118ed57806118c861189c6001809486010151600f906118aa61189c838360041c168a611825565b516001600160f81b03191690565b6118c06118b687611836565b918d1a918b611825565b531686611825565b6118e66118dc6118d784611836565b611515565b91891a9187611825565b530161186f565b505060405161060f60f31b602082015292935061099d918391506119159060228301906117c2565b03601f198101835282610900565b90602091808252806000848401376000828201840152601f01601f1916010190565b908060209392818452848401376000828201840152601f01601f1916010190565b9061197e602091949394604084526040840190611923565b6001600160a01b03909416910152565b9160209161197e91959495604085526040850191611945565b93919594929060a085019060018060a01b0316855260209060a06020870152875180915260c0860191602060c08360051b8901019901926000905b838210611a2057505050505094611a059161099d95968583036040870152611945565b631e9a9a5f60e31b6060840152916080818403910152610758565b90919293998380611a3e6001938e8d60bf1990830301875251610758565b9c0192019201909392916119e2565b92909493919460a084019060018060a01b0316845260209060a06020860152865180915260c0850191602060c08360051b8801019801926000905b838210611aaa57505050505084611a05918461099d9697036040860152611923565b90919293988380611ac760019360bf198c82030186528d51610758565b9b019201920190939291611a88565b806000917a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000080821015611c0c575b506d04ee2d6d415b85acef810000000080831015611bfd575b50662386f26fc1000080831015611bee575b506305f5e10080831015611bdf575b5061271080831015611bd0575b506064821015611bc0575b600a80921015611bb6575b600190816021611b6e600187016114cd565b95860101905b611b80575b5050505090565b600019019083906f181899199a1a9b1b9c1cb0b131b232b360811b8282061a835304918215611bb157919082611b74565b611b79565b9160010191611b5c565b9190606460029104910191611b51565b60049193920491019138611b46565b60089193920491019138611b39565b60109193920491019138611b2a565b60209193920491019138611b18565b604093508104915038611aff565b60405161099d91611c2a826108ca565b6014825260601b602082015261184c565b91906040838203126102a05782356001600160401b0381116102a057602091611c65918501610982565b92013561099d81610864565b6003548110156103bb5760036000527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0190600090565b6003548015611cee57600019810190808210156103bb577fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85a600091600383520155600355565b634e487b7160e01b600052603160045260246000fd5b6000818152600460205260409020548015611daf57600019918183019180831161152357600354938401938411611523578383611d5f9460009603611d65575b505050611d4f611ca8565b6000526004602052604060002090565b55600190565b611d4f611d8d91611d85611d7b611da695611c71565b90549060031b1c90565b928391611c71565b90919082549060031b91821b91600019901b1916179055565b55388080611d44565b5050600090565b92909160208151910120906020815191012090604051926020840194601960f81b86526bffffffffffffffffffffffff199060601b1660228501526001600160401b0360c01b9060c01b166036840152603e830152605e820152605e8152611e1d816108e5565b5190207f19457468657265756d205369676e6564204d6573736167653a0a333200000000600052601c52603c60002090565b61099d91611e5c91611ee0565b919091611f34565b80600052600460205260406000205415600014611eda576003546801000000000000000081101561052d5760018101806003558110156103bb5781907fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0155600354906000526004602052604060002055600190565b50600090565b906041815114600014611f0a576105b5916020820151906060604084015193015160001a90612054565b5050600090600290565b60051115611f1e57565b634e487b7160e01b600052602160045260246000fd5b611f3d81611f14565b80611f455750565b611f4e81611f14565b60018103611f9b5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606490fd5b611fa481611f14565b60028103611ff15760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b80611ffd600392611f14565b1461200457565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083116120ca5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156111f55781516001600160a01b038116156120c4579190565b50600190565b5050505060009060039056feb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6a264697066735822122034ed98507cbb54da25bec441826ae8bc1f83c61dff17f7623ce15bc955c3a6b864736f6c6343000818003396c6caf9f42ebbbb9ba734bc86cf4885bd740fa956cdc9e642cafdb29d1b0e9b", + "sourceMap": "1467:15093:150:-:0;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;1467:15093:150;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1467:15093:150;;734:10:83;-1:-1:-1;;;;;;1467:15093:150;;;;;;-1:-1:-1;;;;;;;;;1467:15093:150;734:10:83;1467:15093:150;;2566:40:75;-1:-1:-1;;2566:40:75;1467:15093:150;;15576:13;;15591:10;;;;;;1467:15093;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1467:15093:150;;14762:34;1467:15093;14762:34;1467:15093;;;;;;-1:-1:-1;;;15672:8:150;1467:15093;;;;;;;;;;;;14762:34;:::i;:::-;;;:::i;:::-;1467:15093;14762:34;1467:15093;;14762:34;;;15111:30;1467:15093;;15111:30;1467:15093;;;;;;15211:65;1467:15093;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1467:15093:150;;;14762:34;1467:15093;;14762:34;1467:15093;;;;;;;;;;;;14762:34;:::i;1467:15093::-;;;;;;;;15672:8;1467:15093;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1467:15093:150;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1467:15093:150;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15603:3;1467:15093;;;;;;;;;;;;;;;;;;;6046:50:164;;;:::i;:::-;15668::150;;15603:3;;1467:15093;15576:13;;15668:50;15699:19;;;;15668:50;;;1467:15093;-1:-1:-1;;;1467:15093:150;;;;;;;;;;;-1:-1:-1;;;;;1467:15093:150;;;;;;;;;;;;;;;;;-1:-1:-1;1467:15093:150;;;;;;-1:-1:-1;1467:15093:150;;;;;-1:-1:-1;1467:15093:150;;;;;;-1:-1:-1;;1467:15093:150;;;;-1:-1:-1;;;;;1467:15093:150;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;1467:15093:150;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::o;2125:404:164:-;-1:-1:-1;1467:15093:150;;;4312:12:164;1467:15093:150;;;;;;;;15672:8;1467:15093;;;;;;;4312:12:164;1467:15093:150;;;15672:8;1467:15093;;;;;;;;;;;15672:8;1467:15093;;;;4312:12:164;1467:15093:150;;;;;;4312:12:164;;2458:11::o;1467:15093:150:-;-1:-1:-1;;;1467:15093:150;;;4312:12:164;1467:15093:150;;;;;-1:-1:-1;;;1467:15093:150;;;4312:12:164;1467:15093:150;;;;2204:319:164;2500:12;;;:::o", + "linkReferences": {} + }, + "deployedBytecode": { + "object": "0x6080604052600436101561001257600080fd5b60003560e01c806301ffc9a71461019d57806310f13a8c146101985780631787080e1461019357806327a5f3af1461018e578063304e6ade146101895780633b3b57de1461014857806346f0975a1461018457806359d1d43c1461017f578063691f343114610148578063715018a61461017a57806377372213146101755780637df73e27146101705780638b95dd711461016b5780638bf165d9146101665780638c92c8c3146101615780638d361e431461015c5780638da5cb5b146101575780639061b92314610152578063b2c20f4e1461014d578063bc1c58d114610148578063d5fa2b0014610143578063e8906a2d1461013e578063f1cb7e0614610139578063f2fde38b146101345763f4d4d2f81461012f57600080fd5b6110ae565b610fe7565b610fd0565b610f02565b610e90565b61065d565b610e19565b610d74565b610cf4565b610c78565b610c0e565b610bcf565b6109a0565b610875565b6107ee565b610793565b61077d565b610674565b6105b9565b610532565b6103c0565b6102d2565b346102a05760203660031901126102a05760043563ffffffff60e01b81168091036102a05761021c90639061b92360e01b811490811561028f575b811561027e575b811561026d575b811561025c575b811561024b575b811561023a575b8115610229575b8115610220575b5060405190151581529081906020820190565b0390f35b90501538610209565b6378e5bf0360e11b81149150610202565b63bc1c58d160e01b811491506101fb565b63691f343160e01b811491506101f4565b631674750f60e21b811491506101ed565b63c869023360e01b811491506101e6565b631101d5ab60e11b811491506101df565b631d9dabef60e11b811491506101d8565b600080fd5b9181601f840112156102a0578235916001600160401b0383116102a057602083818601950101116102a057565b346102a05760603660031901126102a0576001600160401b036024358181116102a0576103039036906004016102a5565b916044359081116102a05761031c9036906004016102a5565b919061032661124b565b938451156103bb576103936103b4936020870151610342611349565b905261035c61034f6114b4565b600435602082015261184c565b602061036789611308565b51015261037387611315565b5161037c611369565b9052602061038988611315565b510192369161094b565b905261039e84611325565b516103a7611388565b9052602061038985611325565b9052611656565b6112f2565b346102a0576020806003193601126102a0576001600160401b036004358181116102a0576103f56104049136906004016102a5565b6103fd611706565b369161094b565b916040519161041d8361041681610a97565b0384610900565b835190811161052d5760019161043c826104378554610a5d565b61175e565b602090601f83116001146104b557509161047582610482959361047c956000916104aa575b508160011b916000199060031b1c19161790565b90556117d9565b916117d9565b907f89e3f76277bf08e4371bcc677d04c7d3ab8fcef918f05d5e9668c532f3bd1207600080a3005b905087015138610461565b600160005290601f1983166000805160206120d7833981519152926000905b82821061051657505092849261047c9592826104829896106104fd575b5050811b0190556117d9565b88015160001960f88460031b161c1916905538806104f1565b808785968294968c015181550195019301906104d4565b6108b4565b346102a05760203660031901126102a0577f96c6caf9f42ebbbb9ba734bc86cf4885bd740fa956cdc9e642cafdb29d1b0e9b6040600435610571611706565b600254908060025582519182526020820152a1005b9060406003198301126102a05760043591602435906001600160401b0382116102a0576105b5916004016102a5565b9091565b346102a0576105c736610586565b90916105d1611297565b928351156103bb57610600602085019283516105eb611349565b90526105f56114b4565b90602082015261184c565b928451156103bb5761064a9360206106459451015261061e85611315565b516040519061062c826108ca565b60048252630d0c2e6d60e31b602083015252369161094b565b61184c565b602061065583611315565b510152611656565b346102a0576020366003190112156113a957600080fd5b346102a0576000806003193601126107325760405180916003549081835260208093018092600383527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90835b81811061071e57505050846106d7910385610900565b60405193838594850191818652518092526040850193925b8281106106fe57505050500390f35b83516001600160a01b0316855286955093810193928101926001016106ef565b8254845292860192600192830192016106c1565b80fd5b60005b8381106107485750506000910152565b8181015183820152602001610738565b9060209161077181518092818552858086019101610735565b601f01601f1916010190565b346102a05761078b36610586565b5050506113a9565b346102a057600080600319360112610732576107ad611706565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b346102a0576107fc36610586565b9091610806611297565b928351156103bb57610820602085019283516105eb611349565b8451156103bb5760206103b49351015261083984611315565b5160405190610847826108ca565b60048252636e616d6560e01b602083015252602061038985611315565b6001600160a01b038116036102a057565b346102a05760203660031901126102a05760043561089281610864565b60018060a01b0316600052600460205260206040600020541515604051908152f35b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761052d57604052565b608081019081106001600160401b0382111761052d57604052565b90601f801991011681019081106001600160401b0382111761052d57604052565b6040519061092e826108e5565b565b6001600160401b03811161052d57601f01601f191660200190565b92919261095782610930565b916109656040519384610900565b8294818452818301116102a0578281602093846000960137010152565b9080601f830112156102a05781602061099d9335910161094b565b90565b346102a05760603660031901126102a0576044356001600160401b0381116102a0576109d0903690600401610982565b6109d861124b565b908151156103bb57610a529060208301516109f1611349565b90526109fe61034f6114b4565b6020610a0985611308565b510152610a1583611315565b51610a1e611429565b9052610a2b602435611ad6565b6020610a3685611315565b510152610a4283611325565b51610a4b61144e565b905261184c565b602061065583611325565b90600182811c92168015610a8d575b6020831014610a7757565b634e487b7160e01b600052602260045260246000fd5b91607f1691610a6c565b90600091600190600154610aaa81610a5d565b8083529260209160018116908115610b155750600114610acb575b50505050565b9293945060016000526000805160206120d7833981519152926000935b858510610b02575050506020925001019038808080610ac5565b8054858501840152938201938101610ae8565b92505050602093945060ff929192191683830152151560051b01019038808080610ac5565b90600091600190600154610b4d81610a5d565b8083529260209160018116908115610b155750600114610b6d5750505050565b9293945060016000526000805160206120d7833981519152926000935b858510610ba4575050506020925001019038808080610ac5565b8054858501840152938201938101610b8a565b6040519061092e82610bc881610b3a565b0383610900565b346102a05760003660031901126102a05761021c604051610bfa81610bf381610a97565b0382610900565b604051918291602083526020830190610758565b346102a05760003660031901126102a0576020600254604051908152f35b9060206003198301126102a0576004356001600160401b03928382116102a057806023830112156102a05781600401359384116102a05760248460051b830101116102a0576024019190565b346102a057610c8636610c2c565b610c8e611706565b60005b818110610c9a57005b8060019160051b840135610cad81610864565b828060a01b0316610cbd81611d04565b610cc9575b5001610c91565b7f3525e22824a8a7df2c9a6029941c824cf95b6447f1e13d5128fd3826d35afe8b600080a238610cc2565b346102a05760003660031901126102a0576000546040516001600160a01b039091168152602090f35b60406003198201126102a0576001600160401b03916004358381116102a05782610d49916004016102a5565b939093926024359182116102a0576105b5916004016102a5565b90602061099d928181520190610758565b346102a057610d8236610d1d565b92509050604051610d92816108ca565b6001815260005b602080821015610db457906060602092828501015201610d99565b5050610e1583610dc2610bb7565b610dcb84611308565b52610dd583611308565b5060405190610dfb82610ded3084896020850161198e565b03601f198101845283610900565b604051630556f18360e41b815294859430600487016119a7565b0390fd5b346102a05760403660031901126102a05760243563ffffffff81168091036102a057610e43611297565b908151156103bb5760208201908151610e5a611349565b9052610e6761034f6114b4565b8351156103bb57602061064a93510152610e8083611315565b51610e89611471565b9052611ad6565b346102a05760403660031901126102a057602435610ead81610864565b610eb5611297565b908151156103bb5760208201908151610ecc611349565b9052610ed961034f6114b4565b8351156103bb57602061064a93510152610ef283611315565b51610efb61144e565b9052611c1a565b346102a057610f1036610c2c565b90610f19611706565b610f2282611234565b90610f306040519283610900565b828252602092602083019060051b8201913683116102a057905b828210610fb75783805160005b818110610f6057005b6001906001600160a01b03610f758286611335565b5116610f8081611e64565b610f8c575b5001610f57565b7f47d1c22a25bb3a5d4e481b9b1e6944c2eade3181a0a20b495ed61d35b5323f24600080a284610f85565b8480918335610fc581610864565b815201910190610f4a565b346102a0576040366003190112156113a957600080fd5b346102a05760203660031901126102a05760043561100481610864565b61100c611706565b6001600160a01b03908116801561105a57600080546001600160a01b03198116831782559092167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346102a0576110bc36610d1d565b92918201926060838503126102a0576001600160401b039280358481116102a057856110e9918301610982565b946020820135858116958682036102a05760408401359081116102a05761113c9561111d8994611126936111379701610982565b95810190611c3b565b9091906001600160a01b0316611db6565b611e4f565b9042116111fa57604051637df73e2760e01b81526001600160a01b03919091166004820152602081602481305afa9081156111f5576000916111c6575b501561118f5761021c9060405191829182610d63565b604051636ee8a75560e01b815260206004820152600e60248201526d34b73b30b634b21039b4b3b732b960911b6044820152606490fd5b6111e8915060203d6020116111ee575b6111e08183610900565b810190611490565b38611179565b503d6111d6565b6114a8565b604051636ee8a75560e01b81526020600482015260116024820152701cda59db985d1d5c9948195e1c1a5c9959607a1b6044820152606490fd5b6001600160401b03811161052d5760051b60200190565b60409060405161125a816108e5565b60038152809160005b60608082101561128f5785516020929161127c826108ca565b8082528382015284820183015201611263565b505091925050565b60409060405191606092606081018181106001600160401b0382111761052d5760405260028152809360005b8381106112d05750505050565b60209084516112de816108ca565b8381528284818301528286010152016112c3565b634e487b7160e01b600052603260045260246000fd5b8051156103bb5760200190565b8051600110156103bb5760400190565b8051600210156103bb5760600190565b80518210156103bb5760209160051b010190565b60405190611356826108ca565b60048252636e6f646560e01b6020830152565b60405190611376826108ca565b60038252626b657960e81b6020830152565b60405190611395826108ca565b600582526476616c756560d81b6020830152565b6040516113b5816108ca565b6001815260005b602090818110156113d75760606020928285010152016113bc565b826113e0610bb7565b6113e982611308565b526113f381611308565b506040519061140a82610ded303660208401611966565b610e15604051928392630556f18360e41b845236903060048601611a4d565b60405190611436826108ca565b6009825268636f696e5f7479706560b81b6020830152565b6040519061145b826108ca565b60078252666164647265737360c81b6020830152565b6040519061147e826108ca565b60038252621d1d1b60ea1b6020830152565b908160209103126102a0575180151581036102a05790565b6040513d6000823e3d90fd5b604051906114c1826108ca565b60208083523683820137565b906114d782610930565b6114e46040519182610900565b82815280926114f5601f1991610930565b0190602036910137565b634e487b7160e01b600052601160045260246000fd5b906001820180921161152357565b6114ff565b9190820180921161152357565b90916060825261155183516080606085015260e0840190610758565b9261156d60209485830151605f19868303016080870152610758565b6040828101516001600160401b031660a08601526060909201516001600160a01b0390811660c086015284820386860152906115a890610b3a565b9382818603910152608084019063ffffffff60e01b84511685528584015116858501528183015194608083860152855180925260a08501928160a08460051b8801019701936000915b84831061160a5750505050505060608091015191015290565b9091929394978480611646600193609f198c82030187528c519083611636835189845289840190610758565b9201519084818403910152610758565b9a019301930191949392906115f1565b604051611662816108ca565b601081526f2230ba30b130b9b2a932b9b7b63b32b960811b602082015260405161168b816108ca565b60018152603160f81b60208201526116a1610921565b9182526020820152600160408201523060608201526116c260025442611528565b6116ca610921565b6000356001600160e01b03191681529233602085015260408401526060830152610e15604051928392634bd55edd60e01b845260048401611535565b6000546001600160a01b0316330361171a57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b90601f821161176b575050565b60019160009060016000526000805160206120d7833981519152906020601f850160051c830194106117b8575b601f0160051c01915b8281106117ae5750505050565b81815583016117a1565b9092508290611798565b906117d560209282815194859201610735565b0190565b6117f190602060405192828480945193849201610735565b810103902090565b60405190611806826108ca565b601082526f181899199a1a9b1b9c1cb0b131b232b360811b6020830152565b9081518110156103bb570160200190565b908160011b918083046002149015171561152357565b906118556117f9565b611868611863845160011b90565b6114cd565b9060009360005b81518110156118ed57806118c861189c6001809486010151600f906118aa61189c838360041c168a611825565b516001600160f81b03191690565b6118c06118b687611836565b918d1a918b611825565b531686611825565b6118e66118dc6118d784611836565b611515565b91891a9187611825565b530161186f565b505060405161060f60f31b602082015292935061099d918391506119159060228301906117c2565b03601f198101835282610900565b90602091808252806000848401376000828201840152601f01601f1916010190565b908060209392818452848401376000828201840152601f01601f1916010190565b9061197e602091949394604084526040840190611923565b6001600160a01b03909416910152565b9160209161197e91959495604085526040850191611945565b93919594929060a085019060018060a01b0316855260209060a06020870152875180915260c0860191602060c08360051b8901019901926000905b838210611a2057505050505094611a059161099d95968583036040870152611945565b631e9a9a5f60e31b6060840152916080818403910152610758565b90919293998380611a3e6001938e8d60bf1990830301875251610758565b9c0192019201909392916119e2565b92909493919460a084019060018060a01b0316845260209060a06020860152865180915260c0850191602060c08360051b8801019801926000905b838210611aaa57505050505084611a05918461099d9697036040860152611923565b90919293988380611ac760019360bf198c82030186528d51610758565b9b019201920190939291611a88565b806000917a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000080821015611c0c575b506d04ee2d6d415b85acef810000000080831015611bfd575b50662386f26fc1000080831015611bee575b506305f5e10080831015611bdf575b5061271080831015611bd0575b506064821015611bc0575b600a80921015611bb6575b600190816021611b6e600187016114cd565b95860101905b611b80575b5050505090565b600019019083906f181899199a1a9b1b9c1cb0b131b232b360811b8282061a835304918215611bb157919082611b74565b611b79565b9160010191611b5c565b9190606460029104910191611b51565b60049193920491019138611b46565b60089193920491019138611b39565b60109193920491019138611b2a565b60209193920491019138611b18565b604093508104915038611aff565b60405161099d91611c2a826108ca565b6014825260601b602082015261184c565b91906040838203126102a05782356001600160401b0381116102a057602091611c65918501610982565b92013561099d81610864565b6003548110156103bb5760036000527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0190600090565b6003548015611cee57600019810190808210156103bb577fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85a600091600383520155600355565b634e487b7160e01b600052603160045260246000fd5b6000818152600460205260409020548015611daf57600019918183019180831161152357600354938401938411611523578383611d5f9460009603611d65575b505050611d4f611ca8565b6000526004602052604060002090565b55600190565b611d4f611d8d91611d85611d7b611da695611c71565b90549060031b1c90565b928391611c71565b90919082549060031b91821b91600019901b1916179055565b55388080611d44565b5050600090565b92909160208151910120906020815191012090604051926020840194601960f81b86526bffffffffffffffffffffffff199060601b1660228501526001600160401b0360c01b9060c01b166036840152603e830152605e820152605e8152611e1d816108e5565b5190207f19457468657265756d205369676e6564204d6573736167653a0a333200000000600052601c52603c60002090565b61099d91611e5c91611ee0565b919091611f34565b80600052600460205260406000205415600014611eda576003546801000000000000000081101561052d5760018101806003558110156103bb5781907fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0155600354906000526004602052604060002055600190565b50600090565b906041815114600014611f0a576105b5916020820151906060604084015193015160001a90612054565b5050600090600290565b60051115611f1e57565b634e487b7160e01b600052602160045260246000fd5b611f3d81611f14565b80611f455750565b611f4e81611f14565b60018103611f9b5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606490fd5b611fa481611f14565b60028103611ff15760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b80611ffd600392611f14565b1461200457565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083116120ca5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156111f55781516001600160a01b038116156120c4579190565b50600190565b5050505060009060039056feb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6a264697066735822122034ed98507cbb54da25bec441826ae8bc1f83c61dff17f7623ce15bc955c3a6b864736f6c63430008180033", + "sourceMap": "1467:15093:150:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;1467:15093:150;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15992:50:150;;;:112;;;;1467:15093;15992:173;;;;1467:15093;15992:237;;;;1467:15093;15992:299;;;;1467:15093;15992:361;;;;1467:15093;15992:430;;;;1467:15093;15992:495;;;;1467:15093;15992:558;;;;1467:15093;-1:-1:-1;1467:15093:150;;;;;;;;;;;;;;;;;;;15992:558;16503:47;;;15992:558;;;:495;-1:-1:-1;;;16438:49:150;;;-1:-1:-1;15992:495:150;;:430;-1:-1:-1;;;16369:53:150;;;-1:-1:-1;15992:430:150;;:361;-1:-1:-1;;;16307:46:150;;;-1:-1:-1;15992:361:150;;:299;-1:-1:-1;;;16245:46:150;;;-1:-1:-1;15992:299:150;;:237;-1:-1:-1;;;16181:48:150;;;-1:-1:-1;15992:237:150;;:173;-1:-1:-1;;;16120:45:150;;;-1:-1:-1;15992:173:150;;:112;-1:-1:-1;;;16058:46:150;;;-1:-1:-1;15992:112:150;;1467:15093;-1:-1:-1;1467:15093:150;;;;;;;;;;;;;;;-1:-1:-1;;;;;1467:15093:150;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;1467:15093:150;;;;-1:-1:-1;;;;;1467:15093:150;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;8564:33;;;;:::i;:::-;1467:15093;;;;;;;;;;;;8608:9;:23;;:::i;:::-;1467:15093;;1765:16:165;1668:13;;:::i;:::-;1467:15093:150;;;1692:56:165;;;1765:16;:::i;:::-;1467:15093:150;8641:9;;;:::i;:::-;;:15;:52;8704:9;;;:::i;:::-;;:22;;:::i;:::-;1467:15093;;;8736:9;;;:::i;:::-;;:15;1467:15093;;;;:::i;:::-;8736:21;;8768:9;;;:::i;:::-;;:24;;:::i;:::-;1467:15093;;;8802:9;;;:::i;1467:15093::-;8802:23;;8853:6;:::i;1467:15093::-;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1467:15093:150;;;;;;;;;;;;;;;:::i;:::-;1063:62:75;;:::i;:::-;1467:15093:150;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;14707:10;1467:15093;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;14762:34;1467:15093;;14762:34;1467:15093;-1:-1:-1;1467:15093:150;;;;;;;;;;;;;;;;;;;;;;;14762:34;:::i;:::-;;;:::i;:::-;;;-1:-1:-1;14762:34:150;;1467:15093;;;;;;;;;;;14707:10;1467:15093;;;-1:-1:-1;;1467:15093:150;;-1:-1:-1;;;;;;;;;;;1467:15093:150;-1:-1:-1;1467:15093:150;;;;;;;;;;;;14762:34;1467:15093;;;14762:34;1467:15093;;;;;;;;;;;;;14762:34;:::i;1467:15093::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;1467:15093:150;;;;15211:65;1467:15093;;;1063:62:75;;:::i;:::-;15111:30:150;2940:1;1467:15093;;15111:30;1467:15093;;;;;;;;;;15211:65;1467:15093;;;;-1:-1:-1;;1467:15093:150;;;;;;;;;;;-1:-1:-1;;;;;1467:15093:150;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;9707:33;;;;:::i;:::-;1467:15093;;;;;;1765:16:165;1467:15093:150;;;9751:9;;;:23;;:::i;:::-;1467:15093;;1668:13:165;;:::i;:::-;1692:56;1467:15093:150;1692:56:165;;;1765:16;:::i;:::-;1467:15093:150;;;;;;9898:32;9784:9;1467:15093;;9784:9;;:15;:52;9847:9;;;:::i;:::-;;1467:15093;;;;;;:::i;:::-;;;;-1:-1:-1;;;1467:15093:150;;;;;;;;:::i;:::-;9898:32;:::i;:::-;1467:15093;9880:9;;;:::i;:::-;;:15;:50;9958:6;:::i;1467:15093::-;;;;;;-1:-1:-1;;1467:15093:150;;;-1:-1:-1;1467:15093:150;-1:-1:-1;1467:15093:150;;;;;;;;;;;;;;;;;;;12720:8;1467:15093;;;;;;;;;;;12720:8;1467:15093;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1467:15093:150;;;;;-1:-1:-1;1467:15093:150;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1467:15093:150;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;1467:15093:150;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;1063:62:75;;:::i;:::-;1467:15093:150;;-1:-1:-1;;;;;;1467:15093:150;;;;;;-1:-1:-1;;;;;1467:15093:150;2566:40:75;1467:15093:150;;2566:40:75;1467:15093:150;;;;;;;;;:::i;:::-;7439:33;;;;:::i;:::-;1467:15093;;;;;;1765:16:165;1467:15093:150;;;7483:9;;;:23;;:::i;1765:16:165:-;1467:15093:150;;;;;;;7516:9;;:15;:52;7579:9;;;:::i;:::-;;1467:15093;;;;;;:::i;:::-;;;;-1:-1:-1;;;1467:15093:150;;;;;;7612:9;;;:::i;1467:15093::-;-1:-1:-1;;;;;1467:15093:150;;;;;:::o;:::-;;;;;;-1:-1:-1;;1467:15093:150;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;1467:15093:150;;;;;;-1:-1:-1;1467:15093:150;2940:1;4312:24:164;;1467:15093:150;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1467:15093:150;;;;;;;:::o;:::-;2940:1;1467:15093;;;;;-1:-1:-1;;;;;1467:15093:150;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1467:15093:150;;;;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;-1:-1:-1;;;;;1467:15093:150;;;;;;-1:-1:-1;;1467:15093:150;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;1467:15093:150;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;-1:-1:-1;;1467:15093:150;;;;;;-1:-1:-1;;;;;1467:15093:150;;;;;;;;;;;:::i;:::-;6240:33;;:::i;:::-;1467:15093;;;;;;6527:29;1467:15093;;;;6284:9;:23;;:::i;:::-;1467:15093;;1765:16:165;1668:13;;:::i;1765:16::-;1467:15093:150;6317:9;;;:::i;:::-;;:15;:52;6380:9;;;:::i;:::-;;:28;;:::i;:::-;1467:15093;;6436:26;1467:15093;;6436:26;:::i;:::-;1467:15093;6418:9;;;:::i;:::-;;:15;:44;6473:9;;;:::i;:::-;;:26;;:::i;:::-;1467:15093;;6527:29;:::i;:::-;1467:15093;6509:9;;;:::i;1467:15093::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;14707:10;1467:15093;14707:10;1467:15093;;;;:::i;:::-;;;;;;;14707:10;1467:15093;;;14707:10;;;;1467:15093;;;;;;;;;;:::o;:::-;;;;;14707:10;-1:-1:-1;1467:15093:150;-1:-1:-1;;;;;;;;;;;1467:15093:150;-1:-1:-1;1467:15093:150;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10714:1;1467:15093;10714:1;1467:15093;;;;:::i;:::-;;;;;;;10714:1;1467:15093;;;10714:1;;;;1467:15093;;;;;;;;;:::o;:::-;;;;;10714:1;-1:-1:-1;1467:15093:150;-1:-1:-1;;;;;;;;;;;1467:15093:150;-1:-1:-1;1467:15093:150;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;-1:-1:-1;;1467:15093:150;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;1467:15093:150;;;;;1964:45;1467:15093;;;;;;;;;;-1:-1:-1;;1467:15093:150;;;;;;;-1:-1:-1;;;;;1467:15093:150;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;1063:62:75;;:::i;:::-;14284:1:150;14287:10;;;;;;1467:15093;14299:3;1467:15093;;;;;;;;;;;:::i;:::-;;;;;;;6409:53:164;;;:::i;:::-;14367:55:150;;14299:3;;1467:15093;14272:13;;14367:55;14401:21;14284:1;14401:21;;14367:55;;;1467:15093;;;;;;-1:-1:-1;;1467:15093:150;;;;;;;;-1:-1:-1;;;;;1467:15093:150;;;;;;;;;;-1:-1:-1;;1467:15093:150;;;;;-1:-1:-1;;;;;1467:15093:150;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;10714:1;1467:15093;;-1:-1:-1;1467:15093:150;;;;;;;;;;;;;;;;;;;;;;;10764:184;1467:15093;;;:::i;:::-;10726:20;;;:::i;:::-;;;;;:::i;:::-;;1467:15093;;10800:4;10903:35;10800:4;10903:35;10800:4;10903:35;;1467:15093;10903:35;;;:::i;:::-;;1467:15093;;10903:35;;;;;;:::i;:::-;1467:15093;;-1:-1:-1;;;10764:184:150;;1467:15093;;;10800:4;1467:15093;10764:184;;;:::i;:::-;;;;1467:15093;;;;;;-1:-1:-1;;1467:15093:150;;;;;;;;;;;;;;3913:33;;:::i;:::-;1467:15093;;;;;;;;;3957:9;;;:23;;:::i;:::-;1467:15093;;1765:16:165;1668:13;;:::i;1765:16::-;1467:15093:150;;;;;;4103:21;3990:9;;:15;:52;4053:9;;;:::i;:::-;;:22;;:::i;:::-;1467:15093;;4103:21;:::i;1467:15093::-;;;;;;-1:-1:-1;;1467:15093:150;;;;;;;;;:::i;:::-;5126:33;;:::i;:::-;1467:15093;;;;;;;;;5170:9;;;:23;;:::i;:::-;1467:15093;;1765:16:165;1668:13;;:::i;1765:16::-;1467:15093:150;;;;;;5320:31;5203:9;;:15;:52;5266:9;;;:::i;:::-;;:26;;:::i;:::-;1467:15093;;5320:31;:::i;1467:15093::-;;;;;;;:::i;:::-;1063:62:75;;;:::i;:::-;1467:15093:150;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15591:10:150;;;;;;1467:15093;15603:3;1467:15093;;-1:-1:-1;;;;;15639:15:150;1467:15093;15639:15;;:::i;:::-;1467:15093;;6046:50:164;;;:::i;:::-;15668::150;;15603:3;;1467:15093;15576:13;;15668:50;15699:19;-1:-1:-1;15699:19:150;;15668:50;;;1467:15093;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;1467:15093:150;;;-1:-1:-1;1467:15093:150;-1:-1:-1;1467:15093:150;;;;;;;;-1:-1:-1;;1467:15093:150;;;;;;;;;:::i;:::-;1063:62:75;;:::i;:::-;-1:-1:-1;;;;;1467:15093:150;;;2162:22:75;;1467:15093:150;;2518:6:75;1467:15093:150;;-1:-1:-1;;;;;;1467:15093:150;;;;;;2518:6:75;;1467:15093:150;2566:40:75;2518:6;;2566:40;1467:15093:150;;;;;-1:-1:-1;;;1467:15093:150;;;;;;;;;;;;;;;;;-1:-1:-1;;;1467:15093:150;;;;;;;;;;;;;;:::i;:::-;1007:44:155;;;;1467:15093:150;;;;;;;;-1:-1:-1;;;;;1467:15093:150;;;;;;;;;;;;;;:::i;:::-;;;;;;2828:3;;;1467:15093;;;;;;;;;;;;;;;1180:95:155;1467:15093:150;;;;1116:37:155;1467:15093:150;1207:53:155;1467:15093:150;;;:::i;:::-;1116:37:155;;;;;:::i;:::-;1467:15093:150;;;-1:-1:-1;;;;;1467:15093:150;1207:53:155;:::i;:::-;1180:95;:::i;:::-;1299:15;;-1:-1:-1;1285:119:155;;1467:15093:150;;-1:-1:-1;;;11350:21:150;;-1:-1:-1;;;;;1467:15093:150;;;;;11350:21;;1467:15093;;;;;11350:4;:21;;;;;;;-1:-1:-1;11350:21:150;;;1467:15093;11349:22;;11345:161;;1467:15093;;;;;;;;;:::i;11345:161::-;1467:15093;;-1:-1:-1;;;11394:101:150;;1467:15093;;11394:101;;1467:15093;;;;;;-1:-1:-1;;;1467:15093:150;;;;;;10764:184;11350:21;;;;1467:15093;11350:21;1467:15093;11350:21;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;1285:119:155:-;1467:15093:150;;-1:-1:-1;;;1337:56:155;;1467:15093:150;;1337:56:155;;1467:15093:150;;;;;;-1:-1:-1;;;1467:15093:150;;;;;;10764:184;1467:15093;-1:-1:-1;;;;;1467:15093:150;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;8595:1;1467:15093;;;;-1:-1:-1;1467:15093:150;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;1467:15093:150;;;;;;;9738:1;1467:15093;;;;-1:-1:-1;1467:15093:150;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;8711:1;1467:15093;;;;;;;:::o;:::-;;;8775:1;1467:15093;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;;;1467:15093:150;;;;:::o;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;;;1467:15093:150;;;;:::o;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;;;1467:15093:150;;;;:::o;9103:196::-;1467:15093;;;;;:::i;:::-;10714:1;1467:15093;;9283:8;1467:15093;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10726:20;;;:::i;:::-;;;;;:::i;:::-;;1467:15093;;10800:4;10903:35;10800:4;10903:35;10800:4;9283:8;1467:15093;10903:35;;;:::i;:::-;10764:184;1467:15093;;10764:184;;;;;;;;9283:8;10800:4;;10764:184;;;;:::i;1467:15093::-;;;;;;;:::i;:::-;;;;-1:-1:-1;;;1467:15093:150;;;;:::o;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;;;1467:15093:150;;;;:::o;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;;;1467:15093:150;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;2940:1::-;1467:15093;;;2940:1;;;;;;;;;;489::165;2940::150;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;2828:3:150;2940:1;;;;;;;;;-1:-1:-1;;;;;1467:15093:150;;;2940:1;;;1467:15093;2940:1;;;;;;;1467:15093;2940:1;;;:::i;:::-;;;;;;;;;;;;1467:15093;;;;2940:1;;1467:15093;2940:1;;;;;;1467:15093;2940:1;;;1467:15093;2940:1;;;;;;;;;;1467:15093;;;;;2940:1;1467:15093;;2940:1;;;;;;;;;1467:15093;;2940:1;;;;;;;;;;;;;;;;;;;;;;1467:15093;2940:1;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;1467:15093;;2940:1;;;;;;;;;;;11784:718;1467:15093;;;;;:::i;:::-;;;;-1:-1:-1;;;1467:15093:150;;;;;;;;;:::i;:::-;2682:18;1467:15093;;-1:-1:-1;;;1467:15093:150;2682:18;;;2940:1;;:::i;:::-;1467:15093;;;;11948:235;;1467:15093;2828:3;1467:15093;11948:235;;2940:1;12163:4;11948:235;;;2940:1;12402:68;12440:30;2940:1;12402:15;:68;:::i;:::-;2940:1;;:::i;:::-;-1:-1:-1;12284:7:150;-1:-1:-1;;;;;;12284:7:150;2940:1;;1467:15093;12317:10;1467:15093;12221:264;;2940:1;1467:15093;12221:264;;1467:15093;11948:235;12221:264;;1467:15093;11902:593;1467:15093;;11902:593;;;;;;;;;;;;:::i;1359:130:75:-;1273:6;1467:15093:150;-1:-1:-1;;;;;1467:15093:150;734:10:83;1422:23:75;1467:15093:150;;1359:130:75:o;1467:15093:150:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;14707:10;-1:-1:-1;;1467:15093:150;14707:10;-1:-1:-1;1467:15093:150;-1:-1:-1;;;;;;;;;;;1467:15093:150;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;1467:15093:150;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;;;1467:15093:150;;;;:::o;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;;775:1:165;1467:15093:150;;;;;;;:::o;282:620:165:-;;1467:15093:150;;:::i;:::-;467:24:165;477:13;1467:15093:150;;;;;;477:13:165;467:24;:::i;:::-;543:13;-1:-1:-1;543:13:165;-1:-1:-1;572:3:165;1467:15093:150;;558:12:165;;;;;591:158;822:7;;489:1;591:158;;;;;;;;780:7;;591:158;;;;;780:7;;:::i;:::-;1467:15093:150;-1:-1:-1;;;;;;1467:15093:150;;;780:7:165;763:24;771:5;;;:::i;:::-;763:24;;;;;;:::i;:::-;;591:158;822:7;;:::i;:::-;801:28;809:9;:5;;;:::i;:::-;:9;:::i;:::-;801:28;;;;;;:::i;:::-;;1467:15093:150;543:13:165;;558:12;-1:-1:-1;;1467:15093:150;;-1:-1:-1;;;863:31:165;;;1467:15093:150;558:12:165;;-1:-1:-1;863:31:165;;1467:15093:150;;-1:-1:-1;1467:15093:150;;;;;;;:::i;:::-;863:31:165;1467:15093:150;;863:31:165;;;;;;:::i;1467:15093:150:-;;;;;;;;9283:8;1467:15093;;;;9283:8;1467:15093;;;;;;;;-1:-1:-1;;1467:15093:150;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;1467:15093:150;;;;;;;;-1:-1:-1;;1467:15093:150;;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1467:15093:150;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;1467:15093:150;;;2940:1;1467:15093;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9283:8;1467:15093;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;447:696:84;569:17;-1:-1:-1;10276:8:88;;10267:17;;;;10263:103;;447:696:84;10392:8:88;;10383:17;;;;10379:103;;447:696:84;10508:8:88;;10499:17;;;;10495:103;;447:696:84;10624:7:88;;10615:16;;;;10611:100;;447:696:84;10737:7:88;;10728:16;;;;10724:100;;447:696:84;10841:16:88;10850:7;10841:16;;;10837:100;;447:696:84;10963:7:88;;10954:16;;;10950:66;;447:696:84;589:1;1467:15093:150;;731:76:84;627:18;589:1;1467:15093:150;;627:18:84;:::i;:::-;659:11;731:76;;;820:280;589:1;;;820:280;1113:13;;;;447:696;:::o;820:280::-;-1:-1:-1;;1467:15093:150;;;;-1:-1:-1;;;925:93:84;;;;1467:15093:150;925:93:84;1467:15093:150;1068:10:84;;;1064:21;;820:280;;;;;1064:21;1080:5;;10950:66:88;1467:15093:150;11000:1:88;1467:15093:150;10950:66:88;;;10837:100;1467:15093:150;;10850:7:88;10921:1;1467:15093:150;;;;10837:100:88;;;10724;10808:1;1467:15093:150;;;;;;10724:100:88;;;;10611;10695:1;1467:15093:150;;;;;;10611:100:88;;;;10495:103;10581:2;1467:15093:150;;;;;;10495:103:88;;;;10379;10465:2;1467:15093:150;;;;;;10379:103:88;;;;10263;10349:2;;-1:-1:-1;1467:15093:150;;;-1:-1:-1;10263:103:88;;;1969:238:165;1467:15093:150;;2184:16:165;;1467:15093:150;;;:::i;:::-;2080:2:165;1467:15093:150;;2094:73:165;;1467:15093:150;;;2094:73:165;2184:16;:::i;1467:15093:150:-;;;;;;;;;;;;-1:-1:-1;;;;;1467:15093:150;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;14371:8;1467:15093;;;;;;14371:8;-1:-1:-1;1467:15093:150;;;;-1:-1:-1;1467:15093:150;:::o;:::-;14371:8;1467:15093;;;;;-1:-1:-1;;1467:15093:150;;;;;;;;;;-1:-1:-1;1467:15093:150;14371:8;1467:15093;;;;14371:8;1467:15093;:::o;:::-;;;;;;;;;;;;2697:1388:164;-1:-1:-1;1467:15093:150;;;2900:12:164;1467:15093:150;;;;;2940:1;2934:15:164;;;;-1:-1:-1;;1467:15093:150;;;;;;;;;;14371:8;1467:15093;;;;;;;;;3416:26:164;;3980:19;3416:26;-1:-1:-1;3416:26:164;;3412:398;;2930:1149;3888:15;;;;;:::i;:::-;1467:15093:150;;2900:12:164;1467:15093:150;;;;;;;3980:19:164;1467:15093:150;2900:12:164;4014:11;:::o;3412:398::-;3604:38;:26;3482:22;1467:15093:150;3482:22:164;3716:23;3482:22;;:::i;:::-;1467:15093:150;;;;;;;;;3604:26:164;;;;:::i;:::-;:38;1467:15093:150;;;;;;;;;;;;;;;;;;;;;3716:23:164;1467:15093:150;3412:398:164;;;;;2930:1149;4056:12;;-1:-1:-1;4056:12:164;:::o;1767:518:155:-;;;;1467:15093:150;;;;;2179:18:155;1467:15093:150;;;;;;2219:17:155;1467:15093:150;;;2053:201:155;1467:15093:150;2053:201:155;;1467:15093:150;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1467:15093:150;;;;;;;;;;;;;;;;;;;2053:201:155;;;;;:::i;:::-;1467:15093:150;2026:242:155;;7353:157:85;-1:-1:-1;7353:157:85;1467:15093:150;7353:157:85;1467:15093:150;-1:-1:-1;7353:157:85;1767:518:155;:::o;3661:227:85:-;3849:5;3661:227;3800:27;3661:227;3800:27;:::i;:::-;3849:5;;;;:::i;2125:404:164:-;1467:15093:150;-1:-1:-1;1467:15093:150;4312:12:164;1467:15093:150;;;-1:-1:-1;1467:15093:150;2940:1;4312:24:164;2204:319;1467:15093:150;;;15672:8;1467:15093;;;;;;;4312:12:164;1467:15093:150;;;15672:8;1467:15093;;;;;;;;;;;15672:8;1467:15093;;-1:-1:-1;1467:15093:150;4312:12:164;1467:15093:150;;;-1:-1:-1;1467:15093:150;;4312:12:164;2458:11;:::o;2204:319::-;2500:12;-1:-1:-1;2500:12:164;:::o;2145:730:85:-;;2283:2;1467:15093:150;;2263:22:85;2259:610;2283:2;;;2746:25;2546:180;;;;;;;;;;;;;;-1:-1:-1;2546:180:85;2746:25;;:::i;2259:610::-;2802:56;;2818:1;2802:56;2822:35;2802:56;:::o;1467:15093:150:-;;-1:-1:-1;1467:15093:150;;;:::o;:::-;;;;;;;;;;;;570:511:85;1467:15093:150;;;:::i;:::-;638:29:85;;;683:7;:::o;634:441::-;1467:15093:150;;;:::i;:::-;743:29:85;734:38;;743:29;;1467:15093:150;;-1:-1:-1;;;788:34:85;;1467:15093:150;788:34:85;;;1467:15093:150;;;;;;;;;;;;;10764:184;730:345:85;1467:15093:150;;;:::i;:::-;852:35:85;843:44;;852:35;;1467:15093:150;;-1:-1:-1;;;903:41:85;;1467:15093:150;903:41:85;;;1467:15093:150;;;;;;;;;;;;;10764:184;839:236:85;1467:15093:150;;974:30:85;1467:15093:150;;:::i;:::-;965:39:85;961:114;;570:511::o;961:114::-;1467:15093:150;;-1:-1:-1;;;1020:44:85;;1467:15093:150;1020:44:85;;;1467:15093:150;;;;;;;;;;;-1:-1:-1;;;1467:15093:150;;;;;;10764:184;5009:1456:85;;;;6021:66;6008:79;;6004:161;;1467:15093:150;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6276:24:85;;;;;;;;;;;;;;-1:-1:-1;;;;;1467:15093:150;;6314:20:85;6310:101;;6421:37;5009:1456;:::o;6310:101::-;6350:50;6276:24;6350:50;:::o;6004:161::-;6103:51;;;;6119:1;6103:51;6123:30;6103:51;:::o", + "linkReferences": {} + }, + "methodIdentifiers": { + "addSigners(address[])": "e8906a2d", + "addr(bytes32)": "3b3b57de", + "addr(bytes32,uint256)": "f1cb7e06", + "contenthash(bytes32)": "bc1c58d1", + "gatewayDatabaseTimeoutDuration()": "8c92c8c3", + "gatewayUrl()": "8bf165d9", + "isSigner(address)": "7df73e27", + "name(bytes32)": "691f3431", + "owner()": "8da5cb5b", + "register(bytes32,uint32)": "b2c20f4e", + "removeSigners(address[])": "8d361e43", + "renounceOwnership()": "715018a6", + "resolve(bytes,bytes)": "9061b923", + "resolveWithProof(bytes,bytes)": "f4d4d2f8", + "setAddr(bytes32,address)": "d5fa2b00", + "setAddr(bytes32,uint256,bytes)": "8b95dd71", + "setContenthash(bytes32,bytes)": "304e6ade", + "setGatewayUrl(string)": "1787080e", + "setName(bytes32,string)": "77372213", + "setOffChainDatabaseTimoutDuration(uint256)": "27a5f3af", + "setText(bytes32,string,string)": "10f13a8c", + "signers()": "46f0975a", + "supportsInterface(bytes4)": "01ffc9a7", + "text(bytes32,string)": "59d1d43c", + "transferOwnership(address)": "f2fde38b" + }, + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"newGatewayUrl\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"newOffChainDatabaseTimeoutDuration\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"newSigners\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"urls\",\"type\":\"string[]\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"bytes4\",\"name\":\"callbackFunction\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"OffchainLookup\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"cause\",\"type\":\"string\"}],\"name\":\"SignatureVerifier__InvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"StorageHandledByL2\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"chainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"}],\"internalType\":\"struct IWriteDeferral.domainData\",\"name\":\"sender\",\"type\":\"tuple\"},{\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"},{\"components\":[{\"internalType\":\"bytes4\",\"name\":\"functionSelector\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"internalType\":\"struct IWriteDeferral.parameter[]\",\"name\":\"parameters\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"expirationTimestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct IWriteDeferral.messageData\",\"name\":\"data\",\"type\":\"tuple\"}],\"name\":\"StorageHandledByOffChainDatabase\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"a\",\"type\":\"address\"}],\"name\":\"AddrChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"coinType\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"newAddress\",\"type\":\"bytes\"}],\"name\":\"AddressChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"hash\",\"type\":\"bytes\"}],\"name\":\"ContenthashChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"previousUrl\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"newUrl\",\"type\":\"string\"}],\"name\":\"GatewayUrlSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousContractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newContractAddress\",\"type\":\"address\"}],\"name\":\"L2HandlerContractAddressChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"previousChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newChainId\",\"type\":\"uint256\"}],\"name\":\"L2HandlerDefaultChainIdChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"NameChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"previousUrl\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"newUrl\",\"type\":\"string\"}],\"name\":\"OffChainDatabaseHandlerURLChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"previousDuration\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newDuration\",\"type\":\"uint256\"}],\"name\":\"OffChainDatabaseTimeoutDurationSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"addedSigner\",\"type\":\"address\"}],\"name\":\"SignerAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"removedSigner\",\"type\":\"address\"}],\"name\":\"SignerRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"indexedKey\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"TextChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"signersToAdd\",\"type\":\"address[]\"}],\"name\":\"addSigners\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"addr\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"coinType\",\"type\":\"uint256\"}],\"name\":\"addr\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"contenthash\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gatewayDatabaseTimeoutDuration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gatewayUrl\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSigner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"ttl\",\"type\":\"uint32\"}],\"name\":\"register\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"signersToRemove\",\"type\":\"address[]\"}],\"name\":\"removeSigners\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"name\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"response\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"resolveWithProof\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"coinType\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"a\",\"type\":\"bytes\"}],\"name\":\"setAddr\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"a\",\"type\":\"address\"}],\"name\":\"setAddr\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"hash\",\"type\":\"bytes\"}],\"name\":\"setContenthash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"newUrl\",\"type\":\"string\"}],\"name\":\"setGatewayUrl\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"setName\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newDuration\",\"type\":\"uint256\"}],\"name\":\"setOffChainDatabaseTimoutDuration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"setText\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"signers\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"text\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"StorageHandledByL2(uint256,address)\":[{\"details\":\"Error to raise when mutations are being deferred to an L2.\",\"params\":{\"chainId\":\"Chain ID to perform the deferred mutation to.\",\"contractAddress\":\"Contract Address at which the deferred mutation should transact with.\"}}],\"StorageHandledByOffChainDatabase((string,string,uint64,address),string,(bytes4,address,(string,string)[],uint256))\":[{\"details\":\"Error to raise when mutations are being deferred to an Off-Chain Database.\",\"params\":{\"data\":\"the EIP-712 message signing data context used to authorize and instruct the mutation deferred to the off-chain database handler. In order to authorize the deferred mutation to be performed, the user must use the domain definition (sender) and message data (data) to construct a type data signature request defined in EIP-712. This signature, message data (data), and domainData (sender) are then included in the HTTP POST request, denoted sender, data, and signature. Example HTTP POST request: { \\\"sender\\\": , \\\"data\\\": , \\\"signature\\\": }\",\"sender\":\"the EIP-712 domain definition of the corresponding contract performing the off-chain database, write deferral reversion.\",\"url\":\"URL to request to perform the off-chain mutation.\"}}]},\"kind\":\"dev\",\"methods\":{\"addSigners(address[])\":{\"details\":\"Can only be called by the signer manager.\",\"params\":{\"signersToAdd\":\"Signer addresses.\"}},\"addr(bytes32)\":{\"params\":{\"node\":\"The ENS node to query.\"},\"returns\":{\"_0\":\"Always reverts with an OffchainLookup error.\"}},\"addr(bytes32,uint256)\":{\"params\":{\"coinType\":\"The coin type of the corresponding address.\",\"node\":\"The ENS node to query.\"},\"returns\":{\"_0\":\"Always reverts with an OffchainLookup error.\"}},\"constructor\":{\"params\":{\"newGatewayUrl\":\"Gateway URL.\",\"newOffChainDatabaseTimeoutDuration\":\"how long an offchain signature will last\",\"newSigners\":\"Signer addresses.\"}},\"contenthash(bytes32)\":{\"params\":{\"node\":\"The ENS node to query.\"},\"returns\":{\"_0\":\"Always reverts with an OffchainLookup error.\"}},\"isSigner(address)\":{\"returns\":{\"_0\":\"True if a given account is a signer.\"}},\"name(bytes32)\":{\"params\":{\"node\":\"The ENS node to query.\"},\"returns\":{\"_0\":\"Always reverts with an OffchainLookup error.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"register(bytes32,uint32)\":{\"params\":{\"node\":\"The DNS-encoded name to resolve.\",\"ttl\":\"Expiration timestamp of the domain\"}},\"removeSigners(address[])\":{\"details\":\"Can only be called by the signer manager.\",\"params\":{\"signersToRemove\":\"Signer addresses.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"resolve(bytes,bytes)\":{\"params\":{\"data\":\"The ABI encoded data for the underlying resolution function (Eg, addr(bytes32), text(bytes32,string), etc).\",\"name\":\"The DNS-encoded name to resolve.\"},\"returns\":{\"_0\":\"The return data, ABI encoded identically to the underlying function.\"}},\"setAddr(bytes32,address)\":{\"params\":{\"a\":\"The address to set.\",\"node\":\"The node to update.\"}},\"setAddr(bytes32,uint256,bytes)\":{\"params\":{\"a\":\"The address to set.\",\"coinType\":\"The constant used to define the coin type of the corresponding address.\",\"node\":\"The node to update.\"}},\"setContenthash(bytes32,bytes)\":{\"params\":{\"hash\":\"The contenthash to set\",\"node\":\"The node to update.\"}},\"setGatewayUrl(string)\":{\"details\":\"Can only be called by the gateway manager.\",\"params\":{\"newUrl\":\"New gateway URL.\"}},\"setName(bytes32,string)\":{\"params\":{\"node\":\"The node to update.\"}},\"setOffChainDatabaseTimoutDuration(uint256)\":{\"details\":\"Can only be called by the gateway manager.\",\"params\":{\"newDuration\":\"New offChainDatabase timout duration.\"}},\"setText(bytes32,string,string)\":{\"params\":{\"key\":\"The key to set.\",\"node\":\"The node to update.\",\"value\":\"The text data value to set.\"}},\"signers()\":{\"returns\":{\"_0\":\"List of signers.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"interfaceID\":\"Interface ID.\"},\"returns\":{\"_0\":\"True if a given interface ID is supported.\"}},\"text(bytes32,string)\":{\"params\":{\"key\":\"The text data key to query.\",\"node\":\"The ENS node to query.\"},\"returns\":{\"_0\":\"Always reverts with an OffchainLookup error.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"events\":{\"L2HandlerContractAddressChanged(uint256,address,address)\":{\"notice\":\"Event raised when the contractAddress is changed for the L2 handler corresponding to chainId.\"},\"L2HandlerDefaultChainIdChanged(uint256,uint256)\":{\"notice\":\"Event raised when the default chainId is changed for the corresponding L2 handler.\"},\"OffChainDatabaseHandlerURLChanged(string,string)\":{\"notice\":\"Event raised when the url is changed for the corresponding Off-Chain Database handler.\"}},\"kind\":\"user\",\"methods\":{\"addSigners(address[])\":{\"notice\":\"Add a set of new signers.\"},\"addr(bytes32)\":{\"notice\":\"Returns the address associated with an ENS node.\"},\"addr(bytes32,uint256)\":{\"notice\":\"Returns the address associated with an ENS node for the corresponding coinType.\"},\"constructor\":{\"notice\":\"Initializes the contract with the initial parameters.\"},\"contenthash(bytes32)\":{\"notice\":\"Returns the contenthash associated with an ENS node.\"},\"isSigner(address)\":{\"notice\":\"Returns whether a given account is a signer.\"},\"name(bytes32)\":{\"notice\":\"Returns the name associated with an ENS node, for reverse records. Defined in EIP181.\"},\"register(bytes32,uint32)\":{\"notice\":\"Resolves a name, as specified by ENSIP 10 (wildcard).\"},\"removeSigners(address[])\":{\"notice\":\"Remove a set of existing signers.\"},\"resolve(bytes,bytes)\":{\"notice\":\"Resolves a name, as specified by ENSIP 10 (wildcard).\"},\"resolveWithProof(bytes,bytes)\":{\"notice\":\"Callback used by CCIP read compatible clients to verify and parse the response.\"},\"setAddr(bytes32,address)\":{\"notice\":\"Sets the address associated with an ENS node. May only be called by the owner of that node in the ENS registry.\"},\"setAddr(bytes32,uint256,bytes)\":{\"notice\":\"Sets the address associated with an ENS node. May only be called by the owner of that node in the ENS registry.\"},\"setContenthash(bytes32,bytes)\":{\"notice\":\"Sets the contenthash associated with an ENS node. May only be called by the owner of that node in the ENS registry.\"},\"setGatewayUrl(string)\":{\"notice\":\"Set the gateway URL.\"},\"setName(bytes32,string)\":{\"notice\":\"Sets the name associated with an ENS node, for reverse records. May only be called by the owner of that node in the ENS registry.\"},\"setOffChainDatabaseTimoutDuration(uint256)\":{\"notice\":\"Set the offChainDatabase Timeout Duration.\"},\"setText(bytes32,string,string)\":{\"notice\":\"Sets the text data associated with an ENS node and key. May only be called by the owner of that node in the ENS registry.\"},\"signers()\":{\"notice\":\"Returns a list of signers.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Support ERC-165 introspection.\"},\"text(bytes32,string)\":{\"notice\":\"Returns the text data associated with an ENS node and key.\"}},\"notice\":\"Implements an ENS resolver that directs all queries to a CCIP read gateway. Callers must implement EIP 3668 and ENSIP 10.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"packages/contracts/src/DatabaseResolver.sol\":\"DatabaseResolver\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ens-contracts/=node_modules/@ensdomains/ens-contracts/contracts/\",\":@ensdomains/=node_modules/@ensdomains/\",\":@eth-optimism/contracts-bedrock/src/libraries/=packages/contracts/lib/optimism-bedrock-contracts/\",\":@evmgateway/=packages/contracts/src/evmgateway/\",\":@nitro-contracts/=node_modules/@arbitrum/nitro-contracts/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":buffer/=packages/contracts/lib/buffer/contracts/\",\":forge-std/=node_modules/forge-std/src/\",\":forge-std/=packages/contracts/lib/forge-std/src/\",\":optimism-bedrock-contracts/=packages/contracts/lib/optimism-bedrock-contracts/\"],\"viaIR\":true},\"sources\":{\"node_modules/@ensdomains/buffer/contracts/Buffer.sol\":{\"keccak256\":\"0xd6dd3b0b327288f8e1b711a609f4040fea602e2ad4bba9febdf2f33b4e56eb0c\",\"license\":\"BSD-2-Clause\",\"urls\":[\"bzz-raw://78a722152d40d778a97595e5224fac1d138f4e659dcb1a926148909ef4c4bdca\",\"dweb:/ipfs/QmRxScF53x5ywsChLNpMUCdg2TSoCWTfo8G65Mo3sGY55b\"]},\"node_modules/@ensdomains/ens-contracts/contracts/dnsregistrar/OffchainDNSResolver.sol\":{\"keccak256\":\"0x2e0c9c2c85ac06b8a9a012e37e72c5b63b403c027d0cbc0ab1659ddafa26bef4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2deeb76dec14105132945fd40348f15c87656d6a63ebda2a38f53ad4a0b41e33\",\"dweb:/ipfs/QmfFLLdzWWJhx4EBTvj4qSFKB9SoBgeY4MuhFScm6d576E\"]},\"node_modules/@ensdomains/ens-contracts/contracts/dnssec-oracle/BytesUtils.sol\":{\"keccak256\":\"0x4f10902639b85a17ae10745264feff322e793bfb1bc130a9a90efa7dda47c6cc\",\"urls\":[\"bzz-raw://d799f88aea475ae2c65510fc623c45d1af4933a30227c08f64aa657ca27d7238\",\"dweb:/ipfs/QmWDWejYetje7j2DzBNSKm8JBaUiQ6Dink1oKQyKxPu7pP\"]},\"node_modules/@ensdomains/ens-contracts/contracts/dnssec-oracle/DNSSEC.sol\":{\"keccak256\":\"0xee6a236a59e5db8418c98ee4640a91987d26533c02d305cc6c7a37a3ac4ee907\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82f195e62ee06e59e48a69ac2c721706320779d36b4fb5a085fd26a2093a8897\",\"dweb:/ipfs/QmRnCN58XihsJ2zUdxrU5waj6yDn7fJgAbfxve4CFmVZGB\"]},\"node_modules/@ensdomains/ens-contracts/contracts/dnssec-oracle/RRUtils.sol\":{\"keccak256\":\"0x4dd68a6efd7c38f6b0e95ca0c056ecb74f88583da650b1a8639e6e78be36fede\",\"urls\":[\"bzz-raw://d68c689e9fb1f9eb3209640c97c192482adff3badf5b61e34e2c475a64eb1c45\",\"dweb:/ipfs/QmUE5pBBro64R2tnXAAUxvf1G7tzAWfkcYA4iSsbhZUfCj\"]},\"node_modules/@ensdomains/ens-contracts/contracts/registry/ENS.sol\":{\"keccak256\":\"0x7cb1158c7d268b63de1468e28e2711b28d686e2628ddb22da2149cd93ddeafda\",\"urls\":[\"bzz-raw://a7018309acca24b10ea1235b1c27828f29f2ddfabb653a794639baf620dc2314\",\"dweb:/ipfs/QmakFQT5NFvGs3g8xxwtgtWdddq28Wtm6MjNSpJNhV1YpR\"]},\"node_modules/@ensdomains/ens-contracts/contracts/registry/ENSRegistry.sol\":{\"keccak256\":\"0xa7a7a64fb980e521c991415e416fd4106a42f892479805e1daa51ecb0e2e5198\",\"urls\":[\"bzz-raw://9e38bcea7309c8d530266511936ba6aece79c8e892e6beb9cbe1b8e35cbd4bcc\",\"dweb:/ipfs/QmVRmcagSnoryJtcuiYnQgAcQcfm2MPVqsMadNYM89boEJ\"]},\"node_modules/@ensdomains/ens-contracts/contracts/resolvers/profiles/IABIResolver.sol\":{\"keccak256\":\"0x85b373d02d19374fe570af407f459768285704bf7f30ab17c30eabfb5a10e4c3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2046ce3d92d29806d7b447f7ab4227f19b0b2e5c75fd5b4a3fcaef7fe2442141\",\"dweb:/ipfs/QmRgnfWjFetrSJngkhU7Yui1ZcK1MeatvZDpvUTYNuYnND\"]},\"node_modules/@ensdomains/ens-contracts/contracts/resolvers/profiles/IAddrResolver.sol\":{\"keccak256\":\"0x2ad7f2fc60ebe0f93745fe70247f6a854f66af732483fda2a3c5e055614445e8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://43922ba183ff20d87dce7fc5d715e626b26594151e36dcc8d7c6329b9a822963\",\"dweb:/ipfs/QmTg9uHTugTxzqddN68gnhNbGt4bGJBS9mQcss6GYggR4X\"]},\"node_modules/@ensdomains/ens-contracts/contracts/resolvers/profiles/IAddressResolver.sol\":{\"keccak256\":\"0x411447c1e90c51e09702815a85ec725ffbbe37cf96e8cc4d2a8bd4ad8a59d73e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://543aa2756447a428711b69aea79e9f4641c22f8330ba920b2a49fde8d9207f82\",\"dweb:/ipfs/QmTdpcYRWLH3BL7iytnqcSzRojTPe3YettKaTqeCvKPk54\"]},\"node_modules/@ensdomains/ens-contracts/contracts/resolvers/profiles/IContentHashResolver.sol\":{\"keccak256\":\"0xd95cd77684ba5752c428d7dceb4ecc6506ac94f4fbb910489637eb68dcd8e366\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daf1fee7770679bd935b8b5686789a4ecc532caeef5a9b8e1b60ae0c285e743e\",\"dweb:/ipfs/QmSaHBAqtDdbQLH6QN4EbupMrq2ah8g6fqE7fLX1u4cjMZ\"]},\"node_modules/@ensdomains/ens-contracts/contracts/resolvers/profiles/IExtendedDNSResolver.sol\":{\"keccak256\":\"0x541f8799c34ff9e7035d09f06ae0f0f8a16b6065e9b60a15670b957321630f72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6775a4436f3598038158894749dd3ae0531ef5059998efadedd148a0194d15c3\",\"dweb:/ipfs/QmVZb3aTs45VauEQLJBU2WEtCaQ6JRREbrbx4w7SKH8iWs\"]},\"node_modules/@ensdomains/ens-contracts/contracts/resolvers/profiles/IExtendedResolver.sol\":{\"keccak256\":\"0x5d81521cfae7d9a4475d27533cd8ed0d3475d369eb0674fd90ffbdbdf292faa3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d244d15588785044b54c453ab6dc51c616ab70cb8b9e687d3e54565bcae97760\",\"dweb:/ipfs/QmXz4ZZBTFogdkdTV1mcE3ywvL2agKVZHLNNeRHCKVruYM\"]},\"node_modules/@ensdomains/ens-contracts/contracts/resolvers/profiles/INameResolver.sol\":{\"keccak256\":\"0x9ec392b612447b1acbdc01114f2da2837a658d3f3157f60a99c5269f0b623346\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5b2cd9e5339b09f40e82bd91fed7d5f643dd031393eefb9aec588eaba8465049\",\"dweb:/ipfs/QmT2A8eswhJU9YadCs9BtwKNj6YGypntXmFepANQYyGw7x\"]},\"node_modules/@ensdomains/ens-contracts/contracts/resolvers/profiles/IPubkeyResolver.sol\":{\"keccak256\":\"0x69748947093dd2fda9ddcebd0adf19a6d1e7600df1d4b1462a0417156caddca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2f86e50bd17c38fb10feb577d88d8970c585017a391ef10e3aaa3d50f81555\",\"dweb:/ipfs/QmaxLx2pqCUxf9W2dusfviZ9aSiTuVwuekGo73rjvmGifE\"]},\"node_modules/@ensdomains/ens-contracts/contracts/resolvers/profiles/ITextResolver.sol\":{\"keccak256\":\"0x7c5debb3c42cd9f5de2274ea7aa053f238608314b62db441c40e31cea2543fd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://412e34ae2d84d542ffa6791486963f3fe04432a3ffd51877d441256dc2941914\",\"dweb:/ipfs/QmciS4mGAQ6KJtLiLcBFekHKhYAYMmubDWGkpZ3sUFtJPW\"]},\"node_modules/@ensdomains/ens-contracts/contracts/utils/HexUtils.sol\":{\"keccak256\":\"0xcae20ad72181f47dfe7fba7d88e8d902a01576b16e93362878e726989d6cfb4d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://168a51510aa5ad40610254cb466f26c208cd36c11913ee94d001a756449f87f9\",\"dweb:/ipfs/QmP8gqmb93trZsyP22BFCXKz2XaoP9cF9UTjZT2SUdQtcS\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc980984badf3984b6303b377711220e067722bbd6a135b24669ff5069ef9f32\",\"dweb:/ipfs/QmPHXMSXj99XjSVM21YsY6aNtLLjLVXDbyN76J5HQYvvrz\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a367861093b74443b137564d3f3c472f70bcf114739e62059c939f25e315706c\",\"dweb:/ipfs/Qmd7JMpcxD9RuQjK3uM3EzJUgSqdN8vzp8eytEiuwxQJ6h\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b81d9ff6559ea5c47fc573e17ece6d9ba5d6839e213e6ebc3b4c5c8fe4199d7f\",\"dweb:/ipfs/QmPCW1bFisUzJkyjroY3yipwfism9RRCigCcK1hbXtVM8n\"]},\"node_modules/@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x809bc3edb4bcbef8263fa616c1b60ee0004b50a8a1bfa164d8f57fd31f520c58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8b93a1e39a4a19eba1600b92c96f435442db88cac91e315c8291547a2a7bcfe2\",\"dweb:/ipfs/QmTm34KVe6uZBZwq8dZDNWwPcm24qBJdxqL3rPxBJ4LrMv\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c\",\"dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS\"]},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7\",\"dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6\"]},\"packages/contracts/src/DatabaseResolver.sol\":{\"keccak256\":\"0x46d7f16dc0470f19f7e4c8138f0ab6edb1e999a620192bb3060083821522d8c9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0fafd5d82d5fab6533a401b954b1e6e7694cd24bdfcff8d8b04e50bca6669e6\",\"dweb:/ipfs/QmPH411UdQ6b9QgYv1dmv3nL6L6idWz693oxULwyciDVsV\"]},\"packages/contracts/src/IWriteDeferral.sol\":{\"keccak256\":\"0x7494c60231618a4b6e85fc6ee405c42a11f35d7a6845a06a3b9768710a39f1a8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7261bcd4556a9b07dfcc22890076e75f35cba69e73c6e572412fad1994c79514\",\"dweb:/ipfs/QmdqBBERpjZ6W45cL9d3m4bvksHkserMKfe9D3Jcbqxp1v\"]},\"packages/contracts/src/SignatureVerifier.sol\":{\"keccak256\":\"0x159ba38d3916effbc7f04e304aef7e25e629841de8042f0d8930de859ba6ebb3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8126da63e2cb07e7ba394d4e07ef30af10925445bf0f78abd1fc75ac9f3f2d7\",\"dweb:/ipfs/QmYAwQyahaFAyLy2CobgoXTxqWQ8jcerzEv4S8ujMp6hm4\"]},\"packages/contracts/src/utils/EnumerableSetUpgradeable.sol\":{\"keccak256\":\"0x07b74f747c50b7f46f6b892ef3057cf0851ee5d74a98efa94336fe52244013bc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://32b04807b0258c892f167b1a8e3204fa0379e1505f2ff380946edc55d43534b2\",\"dweb:/ipfs/QmSdsAsLezW8vkJTfPsYTBBySXvAggX6yxn6krBK3JcMFD\"]},\"packages/contracts/src/utils/TypeToString.sol\":{\"keccak256\":\"0x21dae9fca5e47dc93ff869ac631be0e6fa43765e93650132e9504ff729720c4f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://924682f33fcb82dbf595082781202939e9a4174a01e8af829be46831ebaeb638\",\"dweb:/ipfs/QmNp3KBgk2QfRsQAAmyCizKAWejSdxM7z8HS7WmGiqqWS5\"]}},\"version\":1}", + "metadata": { + "compiler": { "version": "0.8.24+commit.e11b9ed9" }, + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "newGatewayUrl", + "type": "string" + }, + { + "internalType": "uint256", + "name": "newOffChainDatabaseTimeoutDuration", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "newSigners", + "type": "address[]" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { "internalType": "address", "name": "sender", "type": "address" }, + { "internalType": "string[]", "name": "urls", "type": "string[]" }, + { "internalType": "bytes", "name": "callData", "type": "bytes" }, + { + "internalType": "bytes4", + "name": "callbackFunction", + "type": "bytes4" + }, + { "internalType": "bytes", "name": "extraData", "type": "bytes" } + ], + "type": "error", + "name": "OffchainLookup" + }, + { + "inputs": [ + { "internalType": "string", "name": "cause", "type": "string" } + ], + "type": "error", + "name": "SignatureVerifier__InvalidSignature" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "chainId", "type": "uint256" }, + { + "internalType": "address", + "name": "contractAddress", + "type": "address" + } + ], + "type": "error", + "name": "StorageHandledByL2" + }, + { + "inputs": [ + { + "internalType": "struct IWriteDeferral.domainData", + "name": "sender", + "type": "tuple", + "components": [ + { "internalType": "string", "name": "name", "type": "string" }, + { + "internalType": "string", + "name": "version", + "type": "string" + }, + { + "internalType": "uint64", + "name": "chainId", + "type": "uint64" + }, + { + "internalType": "address", + "name": "verifyingContract", + "type": "address" + } + ] + }, + { "internalType": "string", "name": "url", "type": "string" }, + { + "internalType": "struct IWriteDeferral.messageData", + "name": "data", + "type": "tuple", + "components": [ + { + "internalType": "bytes4", + "name": "functionSelector", + "type": "bytes4" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "struct IWriteDeferral.parameter[]", + "name": "parameters", + "type": "tuple[]", + "components": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "value", + "type": "string" + } + ] + }, + { + "internalType": "uint256", + "name": "expirationTimestamp", + "type": "uint256" + } + ] + } + ], + "type": "error", + "name": "StorageHandledByOffChainDatabase" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "node", + "type": "bytes32", + "indexed": true + }, + { + "internalType": "address", + "name": "a", + "type": "address", + "indexed": false + } + ], + "type": "event", + "name": "AddrChanged", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "node", + "type": "bytes32", + "indexed": true + }, + { + "internalType": "uint256", + "name": "coinType", + "type": "uint256", + "indexed": false + }, + { + "internalType": "bytes", + "name": "newAddress", + "type": "bytes", + "indexed": false + } + ], + "type": "event", + "name": "AddressChanged", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "node", + "type": "bytes32", + "indexed": true + }, + { + "internalType": "bytes", + "name": "hash", + "type": "bytes", + "indexed": false + } + ], + "type": "event", + "name": "ContenthashChanged", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "string", + "name": "previousUrl", + "type": "string", + "indexed": true + }, + { + "internalType": "string", + "name": "newUrl", + "type": "string", + "indexed": true + } + ], + "type": "event", + "name": "GatewayUrlSet", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "chainId", + "type": "uint256", + "indexed": true + }, + { + "internalType": "address", + "name": "previousContractAddress", + "type": "address", + "indexed": true + }, + { + "internalType": "address", + "name": "newContractAddress", + "type": "address", + "indexed": true + } + ], + "type": "event", + "name": "L2HandlerContractAddressChanged", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "previousChainId", + "type": "uint256", + "indexed": true + }, + { + "internalType": "uint256", + "name": "newChainId", + "type": "uint256", + "indexed": true + } + ], + "type": "event", + "name": "L2HandlerDefaultChainIdChanged", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "node", + "type": "bytes32", + "indexed": true + }, + { + "internalType": "string", + "name": "name", + "type": "string", + "indexed": false + } + ], + "type": "event", + "name": "NameChanged", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "string", + "name": "previousUrl", + "type": "string", + "indexed": true + }, + { + "internalType": "string", + "name": "newUrl", + "type": "string", + "indexed": true + } + ], + "type": "event", + "name": "OffChainDatabaseHandlerURLChanged", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "previousDuration", + "type": "uint256", + "indexed": false + }, + { + "internalType": "uint256", + "name": "newDuration", + "type": "uint256", + "indexed": false + } + ], + "type": "event", + "name": "OffChainDatabaseTimeoutDurationSet", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "previousOwner", + "type": "address", + "indexed": true + }, + { + "internalType": "address", + "name": "newOwner", + "type": "address", + "indexed": true + } + ], + "type": "event", + "name": "OwnershipTransferred", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "addedSigner", + "type": "address", + "indexed": true + } + ], + "type": "event", + "name": "SignerAdded", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "removedSigner", + "type": "address", + "indexed": true + } + ], + "type": "event", + "name": "SignerRemoved", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "node", + "type": "bytes32", + "indexed": true + }, + { + "internalType": "string", + "name": "indexedKey", + "type": "string", + "indexed": true + }, + { + "internalType": "string", + "name": "key", + "type": "string", + "indexed": false + }, + { + "internalType": "string", + "name": "value", + "type": "string", + "indexed": false + } + ], + "type": "event", + "name": "TextChanged", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "signersToAdd", + "type": "address[]" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "addSigners" + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "node", "type": "bytes32" } + ], + "stateMutability": "view", + "type": "function", + "name": "addr", + "outputs": [ + { "internalType": "address payable", "name": "", "type": "address" } + ] + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "node", "type": "bytes32" }, + { "internalType": "uint256", "name": "coinType", "type": "uint256" } + ], + "stateMutability": "view", + "type": "function", + "name": "addr", + "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }] + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "node", "type": "bytes32" } + ], + "stateMutability": "view", + "type": "function", + "name": "contenthash", + "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "gatewayDatabaseTimeoutDuration", + "outputs": [ + { "internalType": "uint256", "name": "", "type": "uint256" } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "gatewayUrl", + "outputs": [ + { "internalType": "string", "name": "", "type": "string" } + ] + }, + { + "inputs": [ + { "internalType": "address", "name": "account", "type": "address" } + ], + "stateMutability": "view", + "type": "function", + "name": "isSigner", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }] + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "node", "type": "bytes32" } + ], + "stateMutability": "view", + "type": "function", + "name": "name", + "outputs": [ + { "internalType": "string", "name": "", "type": "string" } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "owner", + "outputs": [ + { "internalType": "address", "name": "", "type": "address" } + ] + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "node", "type": "bytes32" }, + { "internalType": "uint32", "name": "ttl", "type": "uint32" } + ], + "stateMutability": "view", + "type": "function", + "name": "register" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "signersToRemove", + "type": "address[]" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "removeSigners" + }, + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "function", + "name": "renounceOwnership" + }, + { + "inputs": [ + { "internalType": "bytes", "name": "name", "type": "bytes" }, + { "internalType": "bytes", "name": "data", "type": "bytes" } + ], + "stateMutability": "view", + "type": "function", + "name": "resolve", + "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }] + }, + { + "inputs": [ + { "internalType": "bytes", "name": "response", "type": "bytes" }, + { "internalType": "bytes", "name": "extraData", "type": "bytes" } + ], + "stateMutability": "view", + "type": "function", + "name": "resolveWithProof", + "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }] + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "node", "type": "bytes32" }, + { + "internalType": "uint256", + "name": "coinType", + "type": "uint256" + }, + { "internalType": "bytes", "name": "a", "type": "bytes" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "setAddr" + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "node", "type": "bytes32" }, + { "internalType": "address", "name": "a", "type": "address" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "setAddr" + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "node", "type": "bytes32" }, + { "internalType": "bytes", "name": "hash", "type": "bytes" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "setContenthash" + }, + { + "inputs": [ + { "internalType": "string", "name": "newUrl", "type": "string" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "setGatewayUrl" + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "node", "type": "bytes32" }, + { "internalType": "string", "name": "name", "type": "string" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "setName" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "newDuration", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "setOffChainDatabaseTimoutDuration" + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "node", "type": "bytes32" }, + { "internalType": "string", "name": "key", "type": "string" }, + { "internalType": "string", "name": "value", "type": "string" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "setText" + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "signers", + "outputs": [ + { "internalType": "address[]", "name": "", "type": "address[]" } + ] + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceID", + "type": "bytes4" + } + ], + "stateMutability": "pure", + "type": "function", + "name": "supportsInterface", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }] + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "node", "type": "bytes32" }, + { "internalType": "string", "name": "key", "type": "string" } + ], + "stateMutability": "view", + "type": "function", + "name": "text", + "outputs": [ + { "internalType": "string", "name": "", "type": "string" } + ] + }, + { + "inputs": [ + { "internalType": "address", "name": "newOwner", "type": "address" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "transferOwnership" + } + ], + "devdoc": { + "kind": "dev", + "methods": { + "addSigners(address[])": { + "details": "Can only be called by the signer manager.", + "params": { "signersToAdd": "Signer addresses." } + }, + "addr(bytes32)": { + "params": { "node": "The ENS node to query." }, + "returns": { "_0": "Always reverts with an OffchainLookup error." } + }, + "addr(bytes32,uint256)": { + "params": { + "coinType": "The coin type of the corresponding address.", + "node": "The ENS node to query." + }, + "returns": { "_0": "Always reverts with an OffchainLookup error." } + }, + "constructor": { + "params": { + "newGatewayUrl": "Gateway URL.", + "newOffChainDatabaseTimeoutDuration": "how long an offchain signature will last", + "newSigners": "Signer addresses." + } + }, + "contenthash(bytes32)": { + "params": { "node": "The ENS node to query." }, + "returns": { "_0": "Always reverts with an OffchainLookup error." } + }, + "isSigner(address)": { + "returns": { "_0": "True if a given account is a signer." } + }, + "name(bytes32)": { + "params": { "node": "The ENS node to query." }, + "returns": { "_0": "Always reverts with an OffchainLookup error." } + }, + "owner()": { "details": "Returns the address of the current owner." }, + "register(bytes32,uint32)": { + "params": { + "node": "The DNS-encoded name to resolve.", + "ttl": "Expiration timestamp of the domain" + } + }, + "removeSigners(address[])": { + "details": "Can only be called by the signer manager.", + "params": { "signersToRemove": "Signer addresses." } + }, + "renounceOwnership()": { + "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner." + }, + "resolve(bytes,bytes)": { + "params": { + "data": "The ABI encoded data for the underlying resolution function (Eg, addr(bytes32), text(bytes32,string), etc).", + "name": "The DNS-encoded name to resolve." + }, + "returns": { + "_0": "The return data, ABI encoded identically to the underlying function." + } + }, + "setAddr(bytes32,address)": { + "params": { + "a": "The address to set.", + "node": "The node to update." + } + }, + "setAddr(bytes32,uint256,bytes)": { + "params": { + "a": "The address to set.", + "coinType": "The constant used to define the coin type of the corresponding address.", + "node": "The node to update." + } + }, + "setContenthash(bytes32,bytes)": { + "params": { + "hash": "The contenthash to set", + "node": "The node to update." + } + }, + "setGatewayUrl(string)": { + "details": "Can only be called by the gateway manager.", + "params": { "newUrl": "New gateway URL." } + }, + "setName(bytes32,string)": { + "params": { "node": "The node to update." } + }, + "setOffChainDatabaseTimoutDuration(uint256)": { + "details": "Can only be called by the gateway manager.", + "params": { "newDuration": "New offChainDatabase timout duration." } + }, + "setText(bytes32,string,string)": { + "params": { + "key": "The key to set.", + "node": "The node to update.", + "value": "The text data value to set." + } + }, + "signers()": { "returns": { "_0": "List of signers." } }, + "supportsInterface(bytes4)": { + "params": { "interfaceID": "Interface ID." }, + "returns": { "_0": "True if a given interface ID is supported." } + }, + "text(bytes32,string)": { + "params": { + "key": "The text data key to query.", + "node": "The ENS node to query." + }, + "returns": { "_0": "Always reverts with an OffchainLookup error." } + }, + "transferOwnership(address)": { + "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner." + } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": { + "addSigners(address[])": { "notice": "Add a set of new signers." }, + "addr(bytes32)": { + "notice": "Returns the address associated with an ENS node." + }, + "addr(bytes32,uint256)": { + "notice": "Returns the address associated with an ENS node for the corresponding coinType." + }, + "constructor": { + "notice": "Initializes the contract with the initial parameters." + }, + "contenthash(bytes32)": { + "notice": "Returns the contenthash associated with an ENS node." + }, + "isSigner(address)": { + "notice": "Returns whether a given account is a signer." + }, + "name(bytes32)": { + "notice": "Returns the name associated with an ENS node, for reverse records. Defined in EIP181." + }, + "register(bytes32,uint32)": { + "notice": "Resolves a name, as specified by ENSIP 10 (wildcard)." + }, + "removeSigners(address[])": { + "notice": "Remove a set of existing signers." + }, + "resolve(bytes,bytes)": { + "notice": "Resolves a name, as specified by ENSIP 10 (wildcard)." + }, + "resolveWithProof(bytes,bytes)": { + "notice": "Callback used by CCIP read compatible clients to verify and parse the response." + }, + "setAddr(bytes32,address)": { + "notice": "Sets the address associated with an ENS node. May only be called by the owner of that node in the ENS registry." + }, + "setAddr(bytes32,uint256,bytes)": { + "notice": "Sets the address associated with an ENS node. May only be called by the owner of that node in the ENS registry." + }, + "setContenthash(bytes32,bytes)": { + "notice": "Sets the contenthash associated with an ENS node. May only be called by the owner of that node in the ENS registry." + }, + "setGatewayUrl(string)": { "notice": "Set the gateway URL." }, + "setName(bytes32,string)": { + "notice": "Sets the name associated with an ENS node, for reverse records. May only be called by the owner of that node in the ENS registry." + }, + "setOffChainDatabaseTimoutDuration(uint256)": { + "notice": "Set the offChainDatabase Timeout Duration." + }, + "setText(bytes32,string,string)": { + "notice": "Sets the text data associated with an ENS node and key. May only be called by the owner of that node in the ENS registry." + }, + "signers()": { "notice": "Returns a list of signers." }, + "supportsInterface(bytes4)": { + "notice": "Support ERC-165 introspection." + }, + "text(bytes32,string)": { + "notice": "Returns the text data associated with an ENS node and key." + } + }, + "version": 1 + } + }, + "settings": { + "remappings": [ + "@ens-contracts/=node_modules/@ensdomains/ens-contracts/contracts/", + "@ensdomains/=node_modules/@ensdomains/", + "@eth-optimism/contracts-bedrock/src/libraries/=packages/contracts/lib/optimism-bedrock-contracts/", + "@evmgateway/=packages/contracts/src/evmgateway/", + "@nitro-contracts/=node_modules/@arbitrum/nitro-contracts/", + "@openzeppelin/=node_modules/@openzeppelin/", + "buffer/=packages/contracts/lib/buffer/contracts/", + "forge-std/=node_modules/forge-std/src/", + "forge-std/=packages/contracts/lib/forge-std/src/", + "optimism-bedrock-contracts/=packages/contracts/lib/optimism-bedrock-contracts/" + ], + "optimizer": { "enabled": true, "runs": 200 }, + "metadata": { "bytecodeHash": "ipfs" }, + "compilationTarget": { + "packages/contracts/src/DatabaseResolver.sol": "DatabaseResolver" + }, + "evmVersion": "paris", + "libraries": {}, + "viaIR": true + }, + "sources": { + "node_modules/@ensdomains/buffer/contracts/Buffer.sol": { + "keccak256": "0xd6dd3b0b327288f8e1b711a609f4040fea602e2ad4bba9febdf2f33b4e56eb0c", + "urls": [ + "bzz-raw://78a722152d40d778a97595e5224fac1d138f4e659dcb1a926148909ef4c4bdca", + "dweb:/ipfs/QmRxScF53x5ywsChLNpMUCdg2TSoCWTfo8G65Mo3sGY55b" + ], + "license": "BSD-2-Clause" + }, + "node_modules/@ensdomains/ens-contracts/contracts/dnsregistrar/OffchainDNSResolver.sol": { + "keccak256": "0x2e0c9c2c85ac06b8a9a012e37e72c5b63b403c027d0cbc0ab1659ddafa26bef4", + "urls": [ + "bzz-raw://2deeb76dec14105132945fd40348f15c87656d6a63ebda2a38f53ad4a0b41e33", + "dweb:/ipfs/QmfFLLdzWWJhx4EBTvj4qSFKB9SoBgeY4MuhFScm6d576E" + ], + "license": "MIT" + }, + "node_modules/@ensdomains/ens-contracts/contracts/dnssec-oracle/BytesUtils.sol": { + "keccak256": "0x4f10902639b85a17ae10745264feff322e793bfb1bc130a9a90efa7dda47c6cc", + "urls": [ + "bzz-raw://d799f88aea475ae2c65510fc623c45d1af4933a30227c08f64aa657ca27d7238", + "dweb:/ipfs/QmWDWejYetje7j2DzBNSKm8JBaUiQ6Dink1oKQyKxPu7pP" + ], + "license": null + }, + "node_modules/@ensdomains/ens-contracts/contracts/dnssec-oracle/DNSSEC.sol": { + "keccak256": "0xee6a236a59e5db8418c98ee4640a91987d26533c02d305cc6c7a37a3ac4ee907", + "urls": [ + "bzz-raw://82f195e62ee06e59e48a69ac2c721706320779d36b4fb5a085fd26a2093a8897", + "dweb:/ipfs/QmRnCN58XihsJ2zUdxrU5waj6yDn7fJgAbfxve4CFmVZGB" + ], + "license": "MIT" + }, + "node_modules/@ensdomains/ens-contracts/contracts/dnssec-oracle/RRUtils.sol": { + "keccak256": "0x4dd68a6efd7c38f6b0e95ca0c056ecb74f88583da650b1a8639e6e78be36fede", + "urls": [ + "bzz-raw://d68c689e9fb1f9eb3209640c97c192482adff3badf5b61e34e2c475a64eb1c45", + "dweb:/ipfs/QmUE5pBBro64R2tnXAAUxvf1G7tzAWfkcYA4iSsbhZUfCj" + ], + "license": null + }, + "node_modules/@ensdomains/ens-contracts/contracts/registry/ENS.sol": { + "keccak256": "0x7cb1158c7d268b63de1468e28e2711b28d686e2628ddb22da2149cd93ddeafda", + "urls": [ + "bzz-raw://a7018309acca24b10ea1235b1c27828f29f2ddfabb653a794639baf620dc2314", + "dweb:/ipfs/QmakFQT5NFvGs3g8xxwtgtWdddq28Wtm6MjNSpJNhV1YpR" + ], + "license": null + }, + "node_modules/@ensdomains/ens-contracts/contracts/registry/ENSRegistry.sol": { + "keccak256": "0xa7a7a64fb980e521c991415e416fd4106a42f892479805e1daa51ecb0e2e5198", + "urls": [ + "bzz-raw://9e38bcea7309c8d530266511936ba6aece79c8e892e6beb9cbe1b8e35cbd4bcc", + "dweb:/ipfs/QmVRmcagSnoryJtcuiYnQgAcQcfm2MPVqsMadNYM89boEJ" + ], + "license": null + }, + "node_modules/@ensdomains/ens-contracts/contracts/resolvers/profiles/IABIResolver.sol": { + "keccak256": "0x85b373d02d19374fe570af407f459768285704bf7f30ab17c30eabfb5a10e4c3", + "urls": [ + "bzz-raw://2046ce3d92d29806d7b447f7ab4227f19b0b2e5c75fd5b4a3fcaef7fe2442141", + "dweb:/ipfs/QmRgnfWjFetrSJngkhU7Yui1ZcK1MeatvZDpvUTYNuYnND" + ], + "license": "MIT" + }, + "node_modules/@ensdomains/ens-contracts/contracts/resolvers/profiles/IAddrResolver.sol": { + "keccak256": "0x2ad7f2fc60ebe0f93745fe70247f6a854f66af732483fda2a3c5e055614445e8", + "urls": [ + "bzz-raw://43922ba183ff20d87dce7fc5d715e626b26594151e36dcc8d7c6329b9a822963", + "dweb:/ipfs/QmTg9uHTugTxzqddN68gnhNbGt4bGJBS9mQcss6GYggR4X" + ], + "license": "MIT" + }, + "node_modules/@ensdomains/ens-contracts/contracts/resolvers/profiles/IAddressResolver.sol": { + "keccak256": "0x411447c1e90c51e09702815a85ec725ffbbe37cf96e8cc4d2a8bd4ad8a59d73e", + "urls": [ + "bzz-raw://543aa2756447a428711b69aea79e9f4641c22f8330ba920b2a49fde8d9207f82", + "dweb:/ipfs/QmTdpcYRWLH3BL7iytnqcSzRojTPe3YettKaTqeCvKPk54" + ], + "license": "MIT" + }, + "node_modules/@ensdomains/ens-contracts/contracts/resolvers/profiles/IContentHashResolver.sol": { + "keccak256": "0xd95cd77684ba5752c428d7dceb4ecc6506ac94f4fbb910489637eb68dcd8e366", + "urls": [ + "bzz-raw://daf1fee7770679bd935b8b5686789a4ecc532caeef5a9b8e1b60ae0c285e743e", + "dweb:/ipfs/QmSaHBAqtDdbQLH6QN4EbupMrq2ah8g6fqE7fLX1u4cjMZ" + ], + "license": "MIT" + }, + "node_modules/@ensdomains/ens-contracts/contracts/resolvers/profiles/IExtendedDNSResolver.sol": { + "keccak256": "0x541f8799c34ff9e7035d09f06ae0f0f8a16b6065e9b60a15670b957321630f72", + "urls": [ + "bzz-raw://6775a4436f3598038158894749dd3ae0531ef5059998efadedd148a0194d15c3", + "dweb:/ipfs/QmVZb3aTs45VauEQLJBU2WEtCaQ6JRREbrbx4w7SKH8iWs" + ], + "license": "MIT" + }, + "node_modules/@ensdomains/ens-contracts/contracts/resolvers/profiles/IExtendedResolver.sol": { + "keccak256": "0x5d81521cfae7d9a4475d27533cd8ed0d3475d369eb0674fd90ffbdbdf292faa3", + "urls": [ + "bzz-raw://d244d15588785044b54c453ab6dc51c616ab70cb8b9e687d3e54565bcae97760", + "dweb:/ipfs/QmXz4ZZBTFogdkdTV1mcE3ywvL2agKVZHLNNeRHCKVruYM" + ], + "license": "MIT" + }, + "node_modules/@ensdomains/ens-contracts/contracts/resolvers/profiles/INameResolver.sol": { + "keccak256": "0x9ec392b612447b1acbdc01114f2da2837a658d3f3157f60a99c5269f0b623346", + "urls": [ + "bzz-raw://5b2cd9e5339b09f40e82bd91fed7d5f643dd031393eefb9aec588eaba8465049", + "dweb:/ipfs/QmT2A8eswhJU9YadCs9BtwKNj6YGypntXmFepANQYyGw7x" + ], + "license": "MIT" + }, + "node_modules/@ensdomains/ens-contracts/contracts/resolvers/profiles/IPubkeyResolver.sol": { + "keccak256": "0x69748947093dd2fda9ddcebd0adf19a6d1e7600df1d4b1462a0417156caddca7", + "urls": [ + "bzz-raw://bc2f86e50bd17c38fb10feb577d88d8970c585017a391ef10e3aaa3d50f81555", + "dweb:/ipfs/QmaxLx2pqCUxf9W2dusfviZ9aSiTuVwuekGo73rjvmGifE" + ], + "license": "MIT" + }, + "node_modules/@ensdomains/ens-contracts/contracts/resolvers/profiles/ITextResolver.sol": { + "keccak256": "0x7c5debb3c42cd9f5de2274ea7aa053f238608314b62db441c40e31cea2543fd5", + "urls": [ + "bzz-raw://412e34ae2d84d542ffa6791486963f3fe04432a3ffd51877d441256dc2941914", + "dweb:/ipfs/QmciS4mGAQ6KJtLiLcBFekHKhYAYMmubDWGkpZ3sUFtJPW" + ], + "license": "MIT" + }, + "node_modules/@ensdomains/ens-contracts/contracts/utils/HexUtils.sol": { + "keccak256": "0xcae20ad72181f47dfe7fba7d88e8d902a01576b16e93362878e726989d6cfb4d", + "urls": [ + "bzz-raw://168a51510aa5ad40610254cb466f26c208cd36c11913ee94d001a756449f87f9", + "dweb:/ipfs/QmP8gqmb93trZsyP22BFCXKz2XaoP9cF9UTjZT2SUdQtcS" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/access/Ownable.sol": { + "keccak256": "0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218", + "urls": [ + "bzz-raw://fc980984badf3984b6303b377711220e067722bbd6a135b24669ff5069ef9f32", + "dweb:/ipfs/QmPHXMSXj99XjSVM21YsY6aNtLLjLVXDbyN76J5HQYvvrz" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/utils/Context.sol": { + "keccak256": "0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439", + "urls": [ + "bzz-raw://a367861093b74443b137564d3f3c472f70bcf114739e62059c939f25e315706c", + "dweb:/ipfs/Qmd7JMpcxD9RuQjK3uM3EzJUgSqdN8vzp8eytEiuwxQJ6h" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/utils/Strings.sol": { + "keccak256": "0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0", + "urls": [ + "bzz-raw://b81d9ff6559ea5c47fc573e17ece6d9ba5d6839e213e6ebc3b4c5c8fe4199d7f", + "dweb:/ipfs/QmPCW1bFisUzJkyjroY3yipwfism9RRCigCcK1hbXtVM8n" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/utils/cryptography/ECDSA.sol": { + "keccak256": "0x809bc3edb4bcbef8263fa616c1b60ee0004b50a8a1bfa164d8f57fd31f520c58", + "urls": [ + "bzz-raw://8b93a1e39a4a19eba1600b92c96f435442db88cac91e315c8291547a2a7bcfe2", + "dweb:/ipfs/QmTm34KVe6uZBZwq8dZDNWwPcm24qBJdxqL3rPxBJ4LrMv" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol": { + "keccak256": "0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b", + "urls": [ + "bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d", + "dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol": { + "keccak256": "0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1", + "urls": [ + "bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f", + "dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/utils/math/Math.sol": { + "keccak256": "0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3", + "urls": [ + "bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c", + "dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol": { + "keccak256": "0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc", + "urls": [ + "bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7", + "dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6" + ], + "license": "MIT" + }, + "packages/contracts/src/DatabaseResolver.sol": { + "keccak256": "0x46d7f16dc0470f19f7e4c8138f0ab6edb1e999a620192bb3060083821522d8c9", + "urls": [ + "bzz-raw://a0fafd5d82d5fab6533a401b954b1e6e7694cd24bdfcff8d8b04e50bca6669e6", + "dweb:/ipfs/QmPH411UdQ6b9QgYv1dmv3nL6L6idWz693oxULwyciDVsV" + ], + "license": "MIT" + }, + "packages/contracts/src/IWriteDeferral.sol": { + "keccak256": "0x7494c60231618a4b6e85fc6ee405c42a11f35d7a6845a06a3b9768710a39f1a8", + "urls": [ + "bzz-raw://7261bcd4556a9b07dfcc22890076e75f35cba69e73c6e572412fad1994c79514", + "dweb:/ipfs/QmdqBBERpjZ6W45cL9d3m4bvksHkserMKfe9D3Jcbqxp1v" + ], + "license": "MIT" + }, + "packages/contracts/src/SignatureVerifier.sol": { + "keccak256": "0x159ba38d3916effbc7f04e304aef7e25e629841de8042f0d8930de859ba6ebb3", + "urls": [ + "bzz-raw://e8126da63e2cb07e7ba394d4e07ef30af10925445bf0f78abd1fc75ac9f3f2d7", + "dweb:/ipfs/QmYAwQyahaFAyLy2CobgoXTxqWQ8jcerzEv4S8ujMp6hm4" + ], + "license": "MIT" + }, + "packages/contracts/src/utils/EnumerableSetUpgradeable.sol": { + "keccak256": "0x07b74f747c50b7f46f6b892ef3057cf0851ee5d74a98efa94336fe52244013bc", + "urls": [ + "bzz-raw://32b04807b0258c892f167b1a8e3204fa0379e1505f2ff380946edc55d43534b2", + "dweb:/ipfs/QmSdsAsLezW8vkJTfPsYTBBySXvAggX6yxn6krBK3JcMFD" + ], + "license": "MIT" + }, + "packages/contracts/src/utils/TypeToString.sol": { + "keccak256": "0x21dae9fca5e47dc93ff869ac631be0e6fa43765e93650132e9504ff729720c4f", + "urls": [ + "bzz-raw://924682f33fcb82dbf595082781202939e9a4174a01e8af829be46831ebaeb638", + "dweb:/ipfs/QmNp3KBgk2QfRsQAAmyCizKAWejSdxM7z8HS7WmGiqqWS5" + ], + "license": "Apache-2.0" + } + }, + "version": 1 + }, + "id": 150 +} diff --git a/lib/abi/resolver.json b/lib/abi/resolver.json index 21d81f8..ad50a10 100644 --- a/lib/abi/resolver.json +++ b/lib/abi/resolver.json @@ -157,9 +157,10 @@ "type": "function", "name": "register", "inputs": [ - { "name": "name", "type": "bytes", "internalType": "bytes" }, - { "name": "ttl", "type": "uint32", "internalType": "uint32" }, - { "name": "owner", "type": "address", "internalType": "address" } + { "name": "", "type": "bytes", "internalType": "bytes" }, + { "name": "", "type": "uint32", "internalType": "uint32" }, + { "name": "", "type": "address", "internalType": "address" }, + { "name": "", "type": "bytes[]", "internalType": "bytes[]" } ], "outputs": [], "stateMutability": "view" @@ -208,9 +209,9 @@ "type": "function", "name": "setABI", "inputs": [ - { "name": "node", "type": "bytes32", "internalType": "bytes32" }, - { "name": "contentType", "type": "uint256", "internalType": "uint256" }, - { "name": "data", "type": "bytes", "internalType": "bytes" } + { "name": "", "type": "bytes32", "internalType": "bytes32" }, + { "name": "", "type": "uint256", "internalType": "uint256" }, + { "name": "", "type": "bytes", "internalType": "bytes" } ], "outputs": [], "stateMutability": "view" @@ -219,9 +220,9 @@ "type": "function", "name": "setAddr", "inputs": [ - { "name": "node", "type": "bytes32", "internalType": "bytes32" }, - { "name": "coinType", "type": "uint256", "internalType": "uint256" }, - { "name": "a", "type": "bytes", "internalType": "bytes" } + { "name": "", "type": "bytes32", "internalType": "bytes32" }, + { "name": "", "type": "uint256", "internalType": "uint256" }, + { "name": "", "type": "bytes", "internalType": "bytes" } ], "outputs": [], "stateMutability": "view" @@ -230,8 +231,8 @@ "type": "function", "name": "setAddr", "inputs": [ - { "name": "node", "type": "bytes32", "internalType": "bytes32" }, - { "name": "a", "type": "address", "internalType": "address" } + { "name": "", "type": "bytes32", "internalType": "bytes32" }, + { "name": "", "type": "address", "internalType": "address" } ], "outputs": [], "stateMutability": "view" @@ -240,8 +241,8 @@ "type": "function", "name": "setContenthash", "inputs": [ - { "name": "node", "type": "bytes32", "internalType": "bytes32" }, - { "name": "hash", "type": "bytes", "internalType": "bytes" } + { "name": "", "type": "bytes32", "internalType": "bytes32" }, + { "name": "", "type": "bytes", "internalType": "bytes" } ], "outputs": [], "stateMutability": "view" @@ -287,9 +288,9 @@ "type": "function", "name": "setPubkey", "inputs": [ - { "name": "node", "type": "bytes32", "internalType": "bytes32" }, - { "name": "x", "type": "bytes32", "internalType": "bytes32" }, - { "name": "y", "type": "bytes32", "internalType": "bytes32" } + { "name": "", "type": "bytes32", "internalType": "bytes32" }, + { "name": "", "type": "bytes32", "internalType": "bytes32" }, + { "name": "", "type": "bytes32", "internalType": "bytes32" } ], "outputs": [], "stateMutability": "view" @@ -298,9 +299,9 @@ "type": "function", "name": "setText", "inputs": [ - { "name": "node", "type": "bytes32", "internalType": "bytes32" }, - { "name": "key", "type": "string", "internalType": "string" }, - { "name": "value", "type": "string", "internalType": "string" } + { "name": "", "type": "bytes32", "internalType": "bytes32" }, + { "name": "", "type": "string", "internalType": "string" }, + { "name": "", "type": "string", "internalType": "string" } ], "outputs": [], "stateMutability": "view" @@ -337,8 +338,8 @@ "type": "function", "name": "transfer", "inputs": [ - { "name": "node", "type": "bytes32", "internalType": "bytes32" }, - { "name": "owner", "type": "address", "internalType": "address" } + { "name": "", "type": "bytes32", "internalType": "bytes32" }, + { "name": "", "type": "address", "internalType": "address" } ], "outputs": [], "stateMutability": "view" @@ -750,21 +751,8 @@ "type": "tuple", "internalType": "struct IWriteDeferral.messageData", "components": [ - { - "name": "functionSelector", - "type": "bytes4", - "internalType": "bytes4" - }, + { "name": "callData", "type": "bytes", "internalType": "bytes" }, { "name": "sender", "type": "address", "internalType": "address" }, - { - "name": "parameters", - "type": "tuple[]", - "internalType": "struct IWriteDeferral.parameter[]", - "components": [ - { "name": "name", "type": "string", "internalType": "string" }, - { "name": "value", "type": "string", "internalType": "string" } - ] - }, { "name": "expirationTimestamp", "type": "uint256", diff --git a/lib/create-subdomain/service.ts b/lib/create-subdomain/service.ts index 2e1c477..faf1fe7 100644 --- a/lib/create-subdomain/service.ts +++ b/lib/create-subdomain/service.ts @@ -1,29 +1,80 @@ -import { Address, toHex } from "viem"; +import { + Address, + encodeFunctionData, + fromBytes, + Hash, + namehash, + toHex, +} from "viem"; import { getRevertErrorData, handleDBStorage } from "../utils/blockchain-txs"; import { DomainData, MessageData } from "../utils/types"; import { publicClient } from "../wallet/wallet-config"; import DomainResolverABI from "../abi/resolver.json"; import toast from "react-hot-toast"; +import { getCoderByCoinName } from "@ensdomains/address-encoder"; interface CreateSubdomainArgs { resolverAddress: Address; signerAddress: Address; name: string; + address: string; + website: string; + description: string; } +// TO-DO: Fix function later to accept more text / address params export const createSubdomain = async ({ resolverAddress, signerAddress, name, + address, + website, + description, }: CreateSubdomainArgs) => { + const calls: Hash[] = []; + + if (website) { + const websiteCallData = encodeFunctionData({ + functionName: "setText", + abi: DomainResolverABI, + args: [namehash(name), "url", website], + }); + + calls.push(websiteCallData); + } + + if (description) { + const descriptionCallData = encodeFunctionData({ + functionName: "setText", + abi: DomainResolverABI, + args: [namehash(name), "description", description], + }); + + calls.push(descriptionCallData); + } + + // set address + if (address) { + const coder = getCoderByCoinName("eth"); + const addressEncoded = fromBytes(coder.decode(address), "hex"); + + const addressCallData = encodeFunctionData({ + functionName: "setAddr", + abi: DomainResolverABI, + args: [namehash(name), 60, addressEncoded], + }); + + calls.push(addressCallData); + } + try { const dnsName = toHex(name), - ttl = 300, - owner = signerAddress + ttl = 300, + owner = signerAddress; await publicClient.simulateContract({ functionName: "register", abi: DomainResolverABI, - args: [dnsName, ttl, owner], + args: [dnsName, ttl, owner, calls], account: signerAddress, address: resolverAddress, }); diff --git a/lib/domain-page/ensService.ts b/lib/domain-page/ensService.ts index 2eda6e3..b1cdc33 100644 --- a/lib/domain-page/ensService.ts +++ b/lib/domain-page/ensService.ts @@ -52,6 +52,7 @@ export const getENSDomainData = async ( const domainData = await formatSubgraphDomainData(data); return domainData; } else { + console.log(error); toast.error("An Error occurred while loading the data"); } return null; @@ -106,6 +107,7 @@ const getENSDomainDataThroughResolver = async ( ): Promise => { const resolverAdd = await getResolver(publicClient, { name }); + const metadataUrl = await publicClient.readContract({ address: resolverAdd!, abi: [parseAbiItem("function metadata() returns (string)")], diff --git a/lib/domain-page/utils.ts b/lib/domain-page/utils.ts index 4da5db2..9e22151 100644 --- a/lib/domain-page/utils.ts +++ b/lib/domain-page/utils.ts @@ -19,7 +19,9 @@ export const transformTextRecords = ( }; export const getCoinNameByType = (coin: string) => { - return coinTypeToNameMap[parseInt(coin) as CoinType][0].toString(); + const coinNameArr = coinTypeToNameMap[parseInt(coin) as CoinType]; // Doesn't include 1 + const coinName = coinNameArr ? coinNameArr[0] : ""; + return coinName; }; export const updateAvatarInTexts = ( diff --git a/lib/utils/blockchain-txs.ts b/lib/utils/blockchain-txs.ts index 0ae2cc7..81f4c6c 100644 --- a/lib/utils/blockchain-txs.ts +++ b/lib/utils/blockchain-txs.ts @@ -124,13 +124,11 @@ export async function handleDBStorage({ url, message, authenticatedAddress, - multicall, }: { domain: DomainData; url: string; message: MessageData; authenticatedAddress: `0x${string}`; - multicall?: boolean; }): Promise { const client = createWalletClient({ account: authenticatedAddress, @@ -143,40 +141,22 @@ export async function handleDBStorage({ message, types: { Message: [ - { name: "functionSelector", type: "bytes4" }, + { name: "callData", type: "bytes" }, { name: "sender", type: "address" }, - { name: "parameters", type: "Parameter[]" }, { name: "expirationTimestamp", type: "uint256" }, ], - Parameter: [ - { name: "name", type: "string" }, - { name: "value", type: "string" }, - ], }, primaryType: "Message", }); - let callData; - if (multicall) { - callData = message.parameters[0].value as `0x${string}`; - } else { - callData = encodeFunctionData({ - abi: DomainResolverABI, - functionName: message.functionSelector, - args: message.parameters.map((arg) => arg.value), - }); - } - - const dbRecordsSavingResponse = await ccipRequest({ + return await ccipRequest({ body: { - data: callData, + data: message.callData, signature: { message, domain, signature }, sender: message.sender, }, url, }); - - return dbRecordsSavingResponse; } /* @@ -348,6 +328,7 @@ export const setDomainRecords = async ({ if (!client) throw new Error("WalletClient not found"); + // duplicated function logic on service.ts - createSubdomain const calls: Hash[] = []; for (let i = 0; i < Object.keys(textRecords).length; i++) { @@ -420,7 +401,6 @@ export const setDomainRecords = async ({ url, message, authenticatedAddress, - multicall: true, }); return 200; diff --git a/lib/utils/types.ts b/lib/utils/types.ts index ba3c3fd..cd4f52a 100644 --- a/lib/utils/types.ts +++ b/lib/utils/types.ts @@ -14,27 +14,16 @@ export type DomainData = { verifyingContract: `0x${string}`; }; -/** - * @notice Struct used to define a parameter for off-chain Database Handler deferral. - * @param name The variable name of the parameter. - * @param value The string encoded value representation of the parameter. - */ -export type Parameter = { - name: string; - value: string; -}; - /** * @notice Struct used to define the message context used to construct a typed data signature, defined in EIP-712, * to authorize and define the deferred mutation being performed. - * @param functionSelector The function selector of the corresponding mutation. + * @param callData The encoded function call data of the mutation. * @param sender The address of the user performing the mutation (msg.sender). - * @param parameter[] A list of pairs defining the inputs used to perform the deferred mutation. + * @param expirationTimestamp The timestamp at which the mutation will expire. */ export type MessageData = { - functionSelector: `0x${string}`; + callData: `0x${string}`; sender: `0x${string}`; - parameters: Parameter[]; expirationTimestamp: bigint; }; diff --git a/pages/domains/[name]/index.tsx b/pages/domains/[name]/index.tsx index 06e9e28..0c376f0 100644 --- a/pages/domains/[name]/index.tsx +++ b/pages/domains/[name]/index.tsx @@ -49,7 +49,7 @@ export function ManageNamePageContent({ name }: { name: string }) { useEffect(() => { handleFetchENSDomainData(); - }, []); + }, [name]); if (!ensData && error) { return ( @@ -96,6 +96,7 @@ export function ManageNamePageContent({ name }: { name: string }) {