[ { "inputs": [ { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" }, { "internalType": "uint96", "name": "initialTokenSupply", "type": "uint96" }, { "internalType": "address", "name": "initialSupplyOwner", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AlreadyInitialized", "type": "error" }, { "inputs": [], "name": "ApprovalCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "DNAlreadyInitialized", "type": "error" }, { "inputs": [], "name": "DNNotInitialized", "type": "error" }, { "inputs": [], "name": "FnSelectorNotRecognized", "type": "error" }, { "inputs": [], "name": "InsufficientAllowance", "type": "error" }, { "inputs": [], "name": "InsufficientBalance", "type": "error" }, { "inputs": [], "name": "InvalidUnit", "type": "error" }, { "inputs": [], "name": "LinkMirrorContractFailed", "type": "error" }, { "inputs": [], "name": "MirrorAddressIsZero", "type": "error" }, { "inputs": [], "name": "NewOwnerIsZeroAddress", "type": "error" }, { "inputs": [], "name": "NoHandoverRequest", "type": "error" }, { "inputs": [], "name": "SenderNotMirror", "type": "error" }, { "inputs": [], "name": "TokenDoesNotExist", "type": "error" }, { "inputs": [], "name": "TotalSupplyOverflow", "type": "error" }, { "inputs": [], "name": "TransferCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "TransferFromIncorrectOwner", "type": "error" }, { "inputs": [], "name": "TransferToZeroAddress", "type": "error" }, { "inputs": [], "name": "Unauthorized", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "OwnershipHandoverCanceled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "OwnershipHandoverRequested", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "oldOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "status", "type": "bool" } ], "name": "SkipNFTSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "stateMutability": "payable", "type": "fallback" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "cancelOwnershipHandover", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "completeOwnershipHandover", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "getSkipNFT", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "mirrorERC721", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "result", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "ownershipHandoverExpiresAt", "outputs": [ { "internalType": "uint256", "name": "result", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "requestOwnershipHandover", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "baseURI_", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "skipNFT", "type": "bool" } ], "name": "setSkipNFT", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60806040523480156200001157600080fd5b5060405162003c5138038062003c51833981016040819052620000349162000487565b6200003f33620000bf565b60006200004d8582620005c2565b5060016200005c8482620005c2565b506000336040516200006e90620003b4565b6001600160a01b039091168152602001604051809103906000f0801580156200009b573d6000803e3d6000fd5b509050620000b46001600160601b0384168383620000fb565b50505050506200068e565b6001600160a01b0316638b78c6d8198190558060007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b68a20d6e21d0e52553095468a20d6e21d0e5255308906001600160a01b0316156200013957604051633ab534b960e21b815260040160405180910390fd5b6001600160a01b03821662000161576040516339a84a7b60e01b815260040160405180910390fd5b630f4599e560005233602052602060006024601c6000865af160016000511416620001945763d125259c6000526004601cfd5b805463ffffffff60201b19166401000000001781556001810180546001600160a01b0384166001600160a01b03199091161790558315620002b7576001600160a01b038316620001f757604051633a954ecd60e21b815260040160405180910390fd5b606084901c670de0b6b3a7640000850463fffffffe1017156200022d5760405163e5cfe95760e01b815260040160405180910390fd5b80546001600160a01b0316600160a01b6001600160601b0386160217815560006200025884620002bd565b80546001600160601b038716600160a01b026001600160a01b0391821617825560008781529192508516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602082a3620002b584600162000323565b505b50505050565b6001600160a01b038116600090815268a20d6e21d0e52553136020526040902080546b01000000000000000000000090046001166200031e57805460ff60581b19166b01000000000000000000000060ff843b151560020260011716021781555b919050565b60006200033083620002bd565b80549091506b01000000000000000000000090046002161515821515146200037c57805460ff6b01000000000000000000000080830482166002189091160260ff60581b199091161781555b8115156000528260601b60601c7fb5a1de456fff688115a4f75380060c23c8532d14ff85f687cc871456d642039360206000a2505050565b610e408062002e1183390190565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620003ea57600080fd5b81516001600160401b0380821115620004075762000407620003c2565b604051601f8301601f19908116603f01168101908282118183101715620004325762000432620003c2565b816040528381526020925086838588010111156200044f57600080fd5b600091505b8382101562000473578582018301518183018401529082019062000454565b600093810190920192909252949350505050565b600080600080608085870312156200049e57600080fd5b84516001600160401b0380821115620004b657600080fd5b620004c488838901620003d8565b95506020870151915080821115620004db57600080fd5b50620004ea87828801620003d8565b604087015190945090506001600160601b03811681146200050a57600080fd5b60608601519092506001600160a01b03811681146200052857600080fd5b939692955090935050565b600181811c908216806200054857607f821691505b6020821081036200056957634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620005bd57600081815260208120601f850160051c81016020861015620005985750805b601f850160051c820191505b81811015620005b957828155600101620005a4565b5050505b505050565b81516001600160401b03811115620005de57620005de620003c2565b620005f681620005ef845462000533565b846200056f565b602080601f8311600181146200062e5760008415620006155750858301515b600019600386901b1c1916600185901b178555620005b9565b600085815260208120601f198616915b828110156200065f578886015182559484019460019091019084016200063e565b50858210156200067e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612773806200069e6000396000f3fe6080604052600436106101795760003560e01c806354d1f13d116100cb57806395d89b411161007f578063f04e283e11610059578063f04e283e146106da578063f2fde38b146106ed578063fee81cf4146107005761018b565b806395d89b4114610666578063a9059cbb1461067b578063dd62ed3e1461069b5761018b565b806370a08231116100b057806370a08231146105f2578063715018a6146106455780638da5cb5b1461064d5761018b565b806354d1f13d146105ca57806355f804b3146105d25761018b565b8063274e430b1161012d5780633ccfd60b116101075780633ccfd60b1461055b57806340c10f19146105705780634ef41efc146105905761018b565b8063274e430b146104ff5780632a6a935d1461051f578063313ce5671461053f5761018b565b806318160ddd1161015e57806318160ddd1461049b57806323b872dd146104d757806325692962146104f75761018b565b806306fdde0314610440578063095ea7b31461046b5761018b565b3661018b57341561018957600080fd5b005b68a20d6e21d0e525530860003560e01c63e5eb36c88190036101f25760018201546001600160a01b031633146101d45760405163ce5a776b60e01b815260040160405180910390fd5b6101e8600435602435604435606435610733565b6101f26001610baa565b8063813500fc0361025e5760018201546001600160a01b0316331461022a5760405163ce5a776b60e01b815260040160405180910390fd5b600435602890815260443560145268a20d6e21d0e525530b60009081526048812091526024351515905561025e6001610baa565b8063e985e9c503610288576000610279600435602435610bb4565b9050610286811515610baa565b505b80636352211e036102af576102af6102a1600435610bdd565b6001600160a01b0316610baa565b806324359879036102c8576102c86102a1600435610c0a565b8063d10b6e0c036103295760018201546001600160a01b031633146103005760405163ce5a776b60e01b815260040160405180910390fd5b6000610313600435602435604435610c67565b9050610327816001600160a01b0316610baa565b505b8063081812fc03610342576103426102a1600435610d65565b8063f5b100ea03610386576001600160a01b0360043516600090815268a20d6e21d0e5255313602052604090205461038690600160801b900463ffffffff16610baa565b8063e2c79281036103b25768a20d6e21d0e5255308546103b290600160801b900463ffffffff16610baa565b8063c87b56dd036103f95760206040510160405260006103d96103d460043590565b610db1565b90506020810360408251016000818301526020825280601f01601f191682f35b8063b7a94eb80361040e5761040e6001610baa565b6040517f3c10b94e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b34801561044c57600080fd5b50610455610dfa565b60405161046291906123af565b60405180910390f35b34801561047757600080fd5b5061048b6104863660046123f9565b610e8c565b6040519015158152602001610462565b3480156104a757600080fd5b5068a20d6e21d0e525530854600160a01b90046bffffffffffffffffffffffff165b604051908152602001610462565b3480156104e357600080fd5b5061048b6104f2366004612423565b610ea2565b610189610f29565b34801561050b57600080fd5b5061048b61051a36600461245f565b610f79565b34801561052b57600080fd5b5061048b61053a36600461247a565b610fc6565b34801561054b57600080fd5b5060405160128152602001610462565b34801561056757600080fd5b50610189610fda565b34801561057c57600080fd5b5061018961058b3660046123f9565b610fed565b34801561059c57600080fd5b5068a20d6e21d0e5255309546001600160a01b03165b6040516001600160a01b039091168152602001610462565b610189611003565b3480156105de57600080fd5b506101896105ed36600461249c565b61103f565b3480156105fe57600080fd5b506104c961060d36600461245f565b6001600160a01b0316600090815268a20d6e21d0e52553136020526040902054600160a01b90046bffffffffffffffffffffffff1690565b610189611059565b34801561065957600080fd5b50638b78c6d819546105b2565b34801561067257600080fd5b5061045561106b565b34801561068757600080fd5b5061048b6106963660046123f9565b61107a565b3480156106a757600080fd5b506104c96106b636600461250e565b602890815260149190915268a20d6e21d0e525530f60009081526048812091525490565b6101896106e836600461245f565b611087565b6101896106fb36600461245f565b6110c7565b34801561070c57600080fd5b506104c961071b36600461245f565b63389a75e1600c908152600091909152602090205490565b6001600160a01b03831661075a57604051633a954ecd60e21b815260040160405180910390fd5b68a20d6e21d0e52553095468a20d6e21d0e5255308906001600160a01b03166107965760405163040739bf60e41b815260040160405180910390fd5b600a81016002820160006107e0836107bc640100000000891089025b6000190160011b90565b60008160031c8360601b0180546007841660051b1c63ffffffff1691505092915050565b63ffffffff1681526020810191909152604001600020546001600160a01b0387811691161461083b576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b856001600160a01b0316836001600160a01b0316146108b55761085e8684610bb4565b6108b557826001600160a01b031661087585610d65565b6001600160a01b0316146108b5576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038681166000908152600b84016020526040808220928816825290208154670de0b6b3a7640000906008860190600160a01b90046bffffffffffffffffffffffff168083111561091f57604051631e9acf1760e31b815260040160405180910390fd5b84546bffffffffffffffffffffffff918490038216600160a01b9081026001600160a01b039283161787558554818104841686019093160291161783556005860160601b600889901c015460ff89161c600116156109b0576005860160601b600889901c018054600160ff8b161b191690556000888152600487016020526040902080546001600160a01b03191690555b6001600160a01b038a166000908152602082905260408120855460001963ffffffff600160801b80840482169290920180821690920263ffffffff60801b19909316929092178855600381901c631fffffff16606084901b015492939260059190911b60e0161c1690506000610a30886000198d01600190811b016107bc565b606084901b631fffffff600383901c1601805460e0600584901b1681811c861863ffffffff16901b1890559050610a9e8860001963ffffffff851601600190811b01838160031c8360601b016007831660051b815480821c841863ffffffff16821b81188355505050505050565b5050835463ffffffff60801b198116600160801b9182900463ffffffff8181166001810182169094029290921787556001600160a01b038d16600090815260208690526040902060601b631fffffff600383901c1601805460e060059390931b9290921682811c8e1890931690921b1890559050610b65868a610b21878e6110ee565b84600183038060021c8560601b0180546003831660061b92508463ffffffff168460201b178082851c1867ffffffffffffffff16841b821883555050505050505050565b50816000528860601b60601c8a60601b60601c7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60206000a350505050505050505050565b8060005260206000f35b6028818152601483905268a20d6e21d0e525530b60009081526048812091525415155b92915050565b6000610be882611184565b610c055760405163677510db60e11b815260040160405180910390fd5b610bd7825b600068a20d6e21d0e525530868a20d6e21d0e525530a82610c4068a20d6e21d0e52553126107bc640100000000881088026107b2565b63ffffffff1681526020810191909152604001600020546001600160a01b03169392505050565b600068a20d6e21d0e525530868a20d6e21d0e525530a82610c9d68a20d6e21d0e52553126107bc640100000000891089026107b2565b63ffffffff1681526020810191909152604001600020546001600160a01b03908116925083168214610d0957610cd38284610bb4565b610d09576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000848152600482016020526040902080546001600160a01b0319166001600160a01b0387169081179091556005820160601b600886901c018054600160ff881690811b1991909116921515901b919091179055509392505050565b6000610d7082611184565b610d8d5760405163677510db60e11b815260040160405180910390fd5b50600090815268a20d6e21d0e525530c60205260409020546001600160a01b031690565b606060028054610dc090612541565b159050610df5576002610dd2836111a1565b604051602001610de392919061257b565b60405160208183030381529060405290505b919050565b606060008054610e0990612541565b80601f0160208091040260200160405190810160405280929190818152602001828054610e3590612541565b8015610e825780601f10610e5757610100808354040283529160200191610e82565b820191906000526020600020905b815481529060010190602001808311610e6557829003601f168201915b5050505050905090565b6000610e993384846111e5565b50600192915050565b336028908152601484905268a20d6e21d0e525530f6000908152604881209181905281549091906000198114610f125780841115610f0c576040517f13be252b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83810382555b610f1d868686611247565b50600195945050505050565b60006202a30067ffffffffffffffff164201905063389a75e1600c5233600052806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d600080a250565b6001600160a01b038116600090815268a20d6e21d0e5255313602052604081208054600160581b9004600116610fb357823b5b9392505050565b54600160581b9004600216151592915050565b6000610fd23383611c0c565b506001919050565b610fe2611c92565b610feb33611cad565b565b610ff5611c92565b610fff8282611cc9565b5050565b63389a75e1600c523360005260006020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92600080a2565b611047611c92565b6002611054828483612666565b505050565b611061611c92565b610feb6000612137565b606060018054610e0990612541565b6000610e99338484611247565b61108f611c92565b63389a75e1600c52806000526020600c2080544211156110b757636f5e88186000526004601cfd5b600090556110c481612137565b50565b6110cf611c92565b8060601b6110e557637448fbae6000526004601cfd5b6110c481612137565b8154600160601b900463ffffffff1668a20d6e21d0e52553088161117d57805463ffffffff198116600163ffffffff92831601918216908117835585546fffffffff0000000000000000000000001916600160601b82021786556000818152600284016020526040902080546001600160a01b0319166001600160a01b03871617905590925061117d57600080fd5b5092915050565b60008061119083610c0a565b6001600160a01b0316141592915050565b60606080604051019050602081016040526000815280600019835b928101926030600a8206018453600a9004806111bc575050819003601f19909101908152919050565b6028828152601484905268a20d6e21d0e525530f600090815260488120915281905560008181526001600160a01b0380841691908516907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590602090a3505050565b6001600160a01b03821661126e57604051633a954ecd60e21b815260040160405180910390fd5b6001600160a01b038316600090815268a20d6e21d0e52553136020526040812068a20d6e21d0e5255308916112a285612175565b60018401549091506001600160a01b03166112d05760405163040739bf60e41b815260040160405180910390fd5b61133260405180610140016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600063ffffffff16815260200160008152602001600063ffffffff1681525090565b825463ffffffff600160801b808304821660408501528454041660608301526bffffffffffffffffffffffff600160a01b909104168086111561138857604051631e9acf1760e31b815260040160405180910390fd5b83546bffffffffffffffffffffffff91879003828116600160a01b9081026001600160a01b03938416178755855481810485168a01948516909102921691909117845560408301519091906113fe906113e6670de0b6b3a764000090565b84816113f4576113f4612727565b0480821191030290565b83528354600160581b900460021661145957876001600160a01b0316896001600160a01b03160361143757825160408401510360608401525b611453670de0b6b3a76400008204846060015180821191030290565b60208401525b5050611463600190565b156116ee576000611495826040015161148a84600001518560200151808218908211021890565b808218908211021890565b9050806114a257506116ee565b8151819003825260208201805182900390526001600160a01b03808816908916036114d75760608201805190910190526116ee565b600061153e828a8a6040805180820182526000815260606020808301828152845163144027d381526001600160a01b03978816928101929092529490951685840152848101526080840185815260059590951b840160a09081019092529390915201815290565b6001600160a01b03808b166000908152600889016020526040808220928c16825290209192509061156f868b6110ee565b63ffffffff1660e08601526060850151938401935b6040860180516000190190819052600381901c606085901b015460009160051b60e0161c63ffffffff16606084901b600384901c01805460e0600586901b1681811c63ffffffff948516908118909416901b189055905061162c8a600a01828960e0015185600183038060021c8560601b0180546003831660061b92508463ffffffff168460201b178082851c1867ffffffffffffffff16841b821883555050505050505050565b84518181526020018552600881901c60058b0160601b015460ff82161c6001161561168a5760058a0160601b600882901c018054600160ff84161b19169055600081815260048b016020526040902080546001600160a01b03191690555b508481600101915081036115845760608601819052865463ffffffff808316600160801b90810263ffffffff60801b19938416178a5560408901518b54921602911617885560018901546116e89085906001600160a01b03166121d8565b50505050505b80516020820151855463ffffffff600160801b80830482168401859003608087018190529091160263ffffffff60801b19909116178655600a860191600091611737910161220d565b8654600160601b900463ffffffff1661012085015283519091501561192057606089901b6001176020828101919091526001600160a01b038a166000908152600888019091526040808220908501518551810360a08701819052885463ffffffff909116600160801b0263ffffffff60801b199091161788556101208601515b60001991909101600381901c606084901b0154909190600090600584901b60e0161c63ffffffff1663ffffffff166000198101600281901c60608a901b01805460069290921b60c01682811c67ffffffffffffffff16901b909118905590508551602080880151600884901b17825201865260011561184b5760068b0160601b600882901c018054600160ff84161b191690555b84156118855760098b0160601b631fffffff600384901c1601805460e0600585901b1681811c841863ffffffff16901b1890556001909101905b600881901c60058c0160601b015460ff82161c600116156118d95760058b0160601b600882901c018054600160ff84161b19169055600081815260048c016020526040902080546001600160a01b03191690555b508660a0015182036117b757831561191b5763ffffffff811661012088018190528a546fffffffff0000000000000000000000001916600160601b909102178a555b505050505b602083015115611ba557606088901b60208201526001600160a01b03881660009081526008870160205260409020611958858a6110ee565b63ffffffff1660e08501526000670de0b6b3a76400008854600160a01b90046bffffffffffffffffffffffff168161199257611992612727565b89549190049150640100000000900463ffffffff1681811180159091021761010086015260608501516020860151810160c08701819052875463ffffffff60801b1916600160801b63ffffffff928316021788558954680100000000000000009004165b600087610120015163ffffffff168263ffffffff1614611a465760098b0160601b631fffffff600384901c160154600183019260e060059190911b161c63ffffffff1663ffffffff169050611aa5565b506101008701515b611a5f87600019830160011b6107bc565b63ffffffff1615611a9157611a8a611a7e8c6006018360010187612254565b85811180159091021790565b9050611a4e565b600181018481118015909102176101008901525b600881901c60068c0160601b018054600160ff84161b8019909116179055600383901c606086901b018054600585901b60e01681811c841863ffffffff16901b189055611b3c87828a60e0015186806001019750600183038060021c8560601b0180546003831660061b92508463ffffffff168460201b178082851c1867ffffffffffffffff16841b821883555050505050505050565b8551602080880151600884901b178252018652508660c0015182036119f657895461010088015163ffffffff9081166401000000000267ffffffff0000000019919093166801000000000000000002166bffffffffffffffff0000000019909116171789555050505b60408101515115611bc9576001860154611bc99082906001600160a01b031661234f565b5050846000528560601b60601c8760601b60601c7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60206000a350505050505050565b6000611c1783612175565b8054909150600160581b9004600216151582151514611c5a57805460ff600160581b8083048216600218909116026bff0000000000000000000000199091161781555b8115156000528260601b60601c7fb5a1de456fff688115a4f75380060c23c8532d14ff85f687cc871456d642039360206000a2505050565b638b78c6d819543314610feb576382b429006000526004601cfd5b60003860003847855af16110c45763b12d13eb6000526004601cfd5b6001600160a01b038216611cf057604051633a954ecd60e21b815260040160405180910390fd5b6000611cfb83612175565b68a20d6e21d0e52553095490915068a20d6e21d0e5255308906001600160a01b0316611d3a5760405163040739bf60e41b815260040160405180910390fd5b60408051608081018252600080825260208201819052918101829052606081019190915282546bffffffffffffffffffffffff600160a01b80830482168701918216026001600160a01b03909216919091178455670de0b6b3a7640000810460408301525081546001600160a01b038116600160a01b918290046bffffffffffffffffffffffff908116870190811690920217835560009081611df4606083901c670de0b6b3a7640000840463fffffffe10171515151590565b9050868210811715611e32576040517fe5cfe95700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b508454670de0b6b3a76400009091049150600160581b90046002166120fa576001600160a01b03861660009081526008840160205260408082208654918501519092600a870192600160801b900463ffffffff1691611e97908381039084100261220d565b90508060400151516000146120f55760608a901b602082015260408082015151885463ffffffff600160801b80830482169093018116830263ffffffff60801b19928316178b55928901518b5493169091029116178855611ef8888b6110ee565b63ffffffff90811660608801528754600160601b810482166020890152640100000000810482168781118015909102178852680100000000000000009004165b6000876020015163ffffffff168263ffffffff1614611f87576009890160601b631fffffff600384901c160154600183019260e060059190911b161c63ffffffff1663ffffffff169050611fde565b5086515b611f9c85600019830160011b6107bc565b63ffffffff1615611fce57611fc7611fbb8a600601836001018a612254565b88811180159091021790565b9050611f8b565b6001810187811180159091021788525b600881901c60068a0160601b018054600160ff84161b8019909116179055600384901c606087901b018054600586901b60e01681811c841863ffffffff16901b18905561207585828a6060015187806001019850600183038060021c8560601b0180546003831660061b92508463ffffffff168460201b178082851c1867ffffffffffffffff16841b821883555050505050505050565b8251602080850151600884901b1782520183525086604001518303611f38578651885463ffffffff83811668010000000000000000026bffffffff0000000000000000199190931664010000000002166bffffffffffffffff00000000199091161717885560018801546120f39083906001600160a01b031661234f565b505b505050505b60008581526001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602082a3505050505050565b638b78c6d81980546001600160a01b039092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a355565b6001600160a01b038116600090815268a20d6e21d0e5255313602052604090208054600160581b9004600116610df55780546bff00000000000000000000001916600160581b60ff933b1515600202600117939093169290920291909117815590565b6020820151805160051b60840160808203915060208282601c85016000875af160018351141661220757600082fd5b50505050565b61223160405180606001604052806000815260200160008152602001606081525090565b604051828152806020018360051b81016040528183604001528083525050919050565b6000801990508360601b8360081c81018054198560ff161c8560ff161b806122a9578460081c83015b600183019250825419915080831182171561227d57808311156122a75760ff86191691821b90911c905b505b80156123455782820360081b7e1f0d1e100c1d070f090b19131c1706010e11080a1a141802121b1503160405821960010183166101e07a1412563212c14164235266736f7425221143267a4524367526767760fc7b2aaaaaaaba69a69a6db6db6db2cb2cb2ce739ce73def7bdeffffffff840260f81c161b60f71c1690811c63d76453e004601f169190911a1717858111878210176000031793505b5050509392505050565b60408201516040810363263c69d68152602080820152815160051b604401915060208183601c84016000875af160018251141661220757600081fd5b60005b838110156123a657818101518382015260200161238e565b50506000910152565b60208152600082518060208401526123ce81604085016020870161238b565b601f01601f19169190910160400192915050565b80356001600160a01b0381168114610df557600080fd5b6000806040838503121561240c57600080fd5b612415836123e2565b946020939093013593505050565b60008060006060848603121561243857600080fd5b612441846123e2565b925061244f602085016123e2565b9150604084013590509250925092565b60006020828403121561247157600080fd5b610fac826123e2565b60006020828403121561248c57600080fd5b81358015158114610fac57600080fd5b600080602083850312156124af57600080fd5b823567ffffffffffffffff808211156124c757600080fd5b818501915085601f8301126124db57600080fd5b8135818111156124ea57600080fd5b8660208285010111156124fc57600080fd5b60209290920196919550909350505050565b6000806040838503121561252157600080fd5b61252a836123e2565b9150612538602084016123e2565b90509250929050565b600181811c9082168061255557607f821691505b60208210810361257557634e487b7160e01b600052602260045260246000fd5b50919050565b600080845461258981612541565b600182811680156125a157600181146125b6576125e5565b60ff19841687528215158302870194506125e5565b8860005260208060002060005b858110156125dc5781548a8201529084019082016125c3565b50505082870194505b5050505083516125f981836020880161238b565b01949350505050565b634e487b7160e01b600052604160045260246000fd5b601f82111561105457600081815260208120601f850160051c8101602086101561263f5750805b601f850160051c820191505b8181101561265e5782815560010161264b565b505050505050565b67ffffffffffffffff83111561267e5761267e612602565b6126928361268c8354612541565b83612618565b6000601f8411600181146126c657600085156126ae5750838201355b600019600387901b1c1916600186901b178355612720565b600083815260209020601f19861690835b828110156126f757868501358255602094850194600190920191016126d7565b50868210156127145760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b634e487b7160e01b600052601260045260246000fdfea26469706673582212205ab3069beee8ed8044a407070547599970ad47064e64b90f26cc8c7a8cad555f64736f6c63430008140033608060405234801561001057600080fd5b50604051610e40380380610e4083398101604081905261002f9161005c565b683602298b8c10b0123180546001600160a01b0319166001600160a01b039290921691909117905561008c565b60006020828403121561006e57600080fd5b81516001600160a01b038116811461008557600080fd5b9392505050565b610da58061009b6000396000f3fe60806040526004361061012d5760003560e01c80636cef16e6116100a557806397e5311c11610074578063b88d4fde11610059578063b88d4fde14610584578063c87b56dd14610597578063e985e9c5146105b75761013f565b806397e5311c1461054f578063a22cb465146105645761013f565b80636cef16e6146104df57806370a08231146104f45780638da5cb5b1461051457806395d89b411461053a5761013f565b806318160ddd116100fc57806324359879116100e1578063243598791461048c57806342842e0e146104ac5780636352211e146104bf5761013f565b806318160ddd1461045657806323b872dd146104795761013f565b806301ffc9a71461039757806306fdde03146103e9578063081812fc1461040b578063095ea7b3146104435761013f565b3661013f57341561013d57600080fd5b005b683602298b8c10b0123060003560e01c63263c69d68190036101f55781546001600160a01b0316331461018557604051631b1e598960e11b815260040160405180910390fd5b600435602401602081033560051b81015b8082146101e85781358060601c816001168260a01b60a81c811583028284027fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600038a4505050816020019150610196565b5050600160005260206000f35b8063144027d30361028b5781546001600160a01b0316331461022a57604051631b1e598960e11b815260040160405180910390fd5b600435602435604435602401602081033560051b81015b80821461027c57813583857fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600038a4816020019150610241565b50505050600160005260206000f35b80630f4599e5036103655760018201546001600160a01b0316156102fa5760018201546001600160a01b03166004356001600160a01b0316146102fa576040517fc59ec47a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81546001600160a01b03161561033c576040517fbf656a4600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815473ffffffffffffffffffffffffffffffffffffffff19163317825560016000908152602090f35b6040517f3c10b94e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3480156103a357600080fd5b506103d46103b2366004610b18565b6301ffc9a760e09190911c9081146380ac58cd821417635b5e139f9091141790565b60405190151581526020015b60405180910390f35b3480156103f557600080fd5b506103fe6105d7565b6040516103e09190610b61565b34801561041757600080fd5b5061042b610426366004610baf565b6105ed565b6040516001600160a01b0390911681526020016103e0565b61013d610451366004610be4565b610605565b34801561046257600080fd5b5061046b61068b565b6040519081526020016103e0565b61013d610487366004610c0e565b61069d565b34801561049857600080fd5b5061042b6104a7366004610baf565b61072c565b61013d6104ba366004610c0e565b61073e565b3480156104cb57600080fd5b5061042b6104da366004610baf565b610770565b3480156104eb57600080fd5b506103d4610782565b34801561050057600080fd5b5061046b61050f366004610c4a565b61084a565b34801561052057600080fd5b50683602298b8c10b01232546001600160a01b031661042b565b34801561054657600080fd5b506103fe610865565b34801561055b57600080fd5b5061042b610876565b34801561057057600080fd5b5061013d61057f366004610c65565b6108c4565b61013d610592366004610ca1565b610947565b3480156105a357600080fd5b506103fe6105b2366004610baf565b6109a2565b3480156105c357600080fd5b506103d46105d2366004610d3c565b6109b2565b60606105e86306fdde0360006109de565b905090565b60006105ff63081812fc836000610a44565b92915050565b600061060f610876565b90508260601b60601c925060405163d10b6e0c600052836020528260405233606052602060006064601c34865af1601f3d111661064f573d6000823e3d81fd5b806040525060006060528183600c5160601c7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600038a4505050565b60006105e863e2c79281600080610a44565b60006106a7610876565b90508360601b60601c93508260601b60601c925060405163e5eb36c881528460208201528360408201528260608201523360808201526020816084601c840134865af16001825114166106fd573d6000823e3d81fd5b508183857fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600038a450505050565b60006105ff6324359879836000610a44565b61074983838361069d565b813b1561076b5761076b83838360405180602001604052806000815250610a8c565b505050565b60006105ff636352211e836000610a44565b600080600061078f610876565b9050638da5cb5b600052602060006004601c845afa600c51683602298b8c10b0123254601f3d119290921660609190911c029250683602298b8c10b01230906001600160a01b03908116908416811461083f5760028201805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0386811691821790925560405190918316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35b600194505050505090565b60006105ff63f5b100ea836001600160a01b03166000610a44565b60606105e86395d89b4160006109de565b683602298b8c10b01230546001600160a01b0316806108c1576040517f5b2a47ae00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b90565b60006108ce610876565b90508260601b60601c925060405163813500fc6000528360205282151560405233606052602060006064601c34865af160016000511416610912573d6000823e3d81fd5b83337f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160206040a36040525050600060605250565b61095285858561069d565b833b1561099b5761099b85858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610a8c92505050565b5050505050565b60606105ff63c87b56dd836109de565b60006109d563e985e9c5846001600160a01b0316846001600160a01b0316610a44565b15159392505050565b606060006109ea610876565b9050604051915083600052826020526000806024601c845afa610a10573d6000833e3d82fd5b60206000803e6020600051833e8151602060005101602084013e815160208301016000815260208101604052505092915050565b600080610a4f610876565b9050604051856000528460205283604052602060006044601c855afa601f3d1116610a7d573d6000823e3d81fd5b60405250506000519392505050565b60405163150b7a028082523360208301528560601b60601c604083015283606083015260808083015282518060a08401528015610ad3578060c08401826020870160045afa505b60208360a48301601c860160008a5af1610af6573d15610af6573d6000843e3d83fd5b508060e01b825114610b105763d1a57ed66000526004601cfd5b505050505050565b600060208284031215610b2a57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610b5a57600080fd5b9392505050565b600060208083528351808285015260005b81811015610b8e57858101830151858201604001528201610b72565b506000604082860101526040601f19601f8301168501019250505092915050565b600060208284031215610bc157600080fd5b5035919050565b80356001600160a01b0381168114610bdf57600080fd5b919050565b60008060408385031215610bf757600080fd5b610c0083610bc8565b946020939093013593505050565b600080600060608486031215610c2357600080fd5b610c2c84610bc8565b9250610c3a60208501610bc8565b9150604084013590509250925092565b600060208284031215610c5c57600080fd5b610b5a82610bc8565b60008060408385031215610c7857600080fd5b610c8183610bc8565b915060208301358015158114610c9657600080fd5b809150509250929050565b600080600080600060808688031215610cb957600080fd5b610cc286610bc8565b9450610cd060208701610bc8565b935060408601359250606086013567ffffffffffffffff80821115610cf457600080fd5b818801915088601f830112610d0857600080fd5b813581811115610d1757600080fd5b896020828501011115610d2957600080fd5b9699959850939650602001949392505050565b60008060408385031215610d4f57600080fd5b610d5883610bc8565b9150610d6660208401610bc8565b9050925092905056fea26469706673582212209a2c7b87e7ba22bbc1a1e76ba9635ed9ad72b94596e7fefd52afd6be29c9240664736f6c63430008140033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000f0e8e396adcbf00000000000000000000000000000a3a8a394887ac2103f1897329aae309be07e214f000000000000000000000000000000000000000000000000000000000000000a546573746572313033320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000075445535431323300000000000000000000000000000000000000000000000000
0xa26469706673582212209a2c7b87e7ba22bbc1a1e76ba9635ed9ad72b94596e7fefd52afd6be29c9240664736f6c63430008140033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000f0e8e396adcbf00000000000000000000000000000a3a8a394887ac2103f1897329aae309be07e214f000000000000000000000000000000000000000000000000000000000000000a546573746572313033320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000075445535431323300000000000000000000000000000000000000000000000000