[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "ApprovalCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "ApprovalQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "BalanceQueryForZeroAddress", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "numerator", "type": "uint256" }, { "internalType": "uint256", "name": "denominator", "type": "uint256" } ], "name": "ERC2981InvalidDefaultRoyalty", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC2981InvalidDefaultRoyaltyReceiver", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "numerator", "type": "uint256" }, { "internalType": "uint256", "name": "denominator", "type": "uint256" } ], "name": "ERC2981InvalidTokenRoyalty", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC2981InvalidTokenRoyaltyReceiver", "type": "error" }, { "inputs": [], "name": "MintERC2309QuantityExceedsLimit", "type": "error" }, { "inputs": [], "name": "MintToZeroAddress", "type": "error" }, { "inputs": [], "name": "MintZeroQuantity", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [], "name": "OwnerQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "OwnershipNotInitializedForExtraData", "type": "error" }, { "inputs": [], "name": "TransferCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "TransferFromIncorrectOwner", "type": "error" }, { "inputs": [], "name": "TransferToNonERC721ReceiverImplementer", "type": "error" }, { "inputs": [], "name": "TransferToZeroAddress", "type": "error" }, { "inputs": [], "name": "URIQueryForNonexistentToken", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "fromTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "toTokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" } ], "name": "ConsecutiveTransfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "ownerAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "startWith", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amountMinted", "type": "uint256" } ], "name": "DevMintEvent", "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": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "MAX_PUBLIC_MINT_PER_WALLET", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_PUBLIC_PER_TX", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_maxFreeMintPerAddr", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_maxFreeMintSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_maxMintPerTx", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_maxSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_mintPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "devMint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "devSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "devTotal", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "flipPublicSale", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "count", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "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": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "publicSaleActive", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "royaltyAdd", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "_salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "uri", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_receiver", "type": "address" }, { "internalType": "uint96", "name": "_feeNumerator", "type": "uint96" } ], "name": "setDefaultRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "setFreeAmount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_newMaxMintPerTx", "type": "uint256" } ], "name": "setMaxMintPerTx", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_newPrice", "type": "uint256" } ], "name": "setPrice", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "name": "setTokenRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "token_price", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "withdraw", "outputs": [], "stateMutability": "payable", "type": "function" } ]
6080604052610177600d55661c6bf526340000600e8190556002600f9081555f60108190556011556012556013805460ff1916905560145534801562000043575f80fd5b50336040518060400160405280601781526020017f4475616c6974696573204f66205265666c656374696f6e000000000000000000815250604051806040016040528060048152602001632227a32960e11b8152508160029081620000a99190620002d2565b506003620000b88282620002d2565b505f805550506001600160a01b038116620000ed57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b620000f88162000112565b5060016009556200010c3361012c62000163565b6200039e565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b601880546001600160a01b0319166001600160a01b0384161790556200018a82826200018e565b5050565b6127106001600160601b038216811015620001cf57604051636f483d0960e01b81526001600160601b038316600482015260248101829052604401620000e4565b6001600160a01b038316620001fa57604051635b6cc80560e11b81525f6004820152602401620000e4565b50604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600a55565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200025d57607f821691505b6020821081036200027c57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620002cd57805f5260205f20601f840160051c81016020851015620002a95750805b601f840160051c820191505b81811015620002ca575f8155600101620002b5565b50505b505050565b81516001600160401b03811115620002ee57620002ee62000234565b6200030681620002ff845462000248565b8462000282565b602080601f8311600181146200033c575f8415620003245750858301515b5f19600386901b1c1916600185901b17855562000396565b5f85815260208120601f198616915b828110156200036c578886015182559484019460019091019084016200034b565b50858210156200038a57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b611da180620003ac5f395ff3fe60806040526004361061023e575f3560e01c80636c0360eb116101345780639cb57d20116100b3578063bc8893b411610078578063bc8893b4146105f8578063c87b56dd14610611578063c8d5ed681461059f578063de314a5914610630578063e985e9c514610645578063f2fde38b14610664575f80fd5b80639cb57d201461058a5780639f55252e1461059f578063a0712d68146105b3578063a22cb465146105c6578063b88d4fde146105e5575f80fd5b806388084605116100f957806388084605146105075780638da5cb5b1461051b57806391b7f5ed1461053857806392910eec1461055757806395d89b4114610576575f80fd5b80636c0360eb1461049757806370a08231146104ab578063715018a6146104ca5780637b4fd96e146104de5780637c69e207146104f3575f80fd5b806323b872dd116101c057806355f804b31161018557806355f804b3146104065780635e1c4b6014610425578063616cdb1e1461043a5780636352211e1461045957806367a4f4a914610478575f80fd5b806323b872dd146103855780632a55205a146103985780633ccfd60b146103d657806341c66d0a146103de57806342842e0e146103f3575f80fd5b8063095ea7b311610206578063095ea7b3146103125780630afb04db1461032557806318160ddd1461033a578063190866921461035157806322f4596f14610370575f80fd5b806301ffc9a7146102425780630387da421461027657806304634d8d1461029957806306fdde03146102ba578063081812fc146102db575b5f80fd5b34801561024d575f80fd5b5061026161025c366004611787565b610683565b60405190151581526020015b60405180910390f35b348015610281575f80fd5b5061028b600e5481565b60405190815260200161026d565b3480156102a4575f80fd5b506102b86102b33660046117d3565b6106ef565b005b3480156102c5575f80fd5b506102ce610718565b60405161026d9190611851565b3480156102e6575f80fd5b506102fa6102f5366004611863565b6107a8565b6040516001600160a01b03909116815260200161026d565b6102b861032036600461187a565b6107ea565b348015610330575f80fd5b5061028b600c5481565b348015610345575f80fd5b506001545f540361028b565b34801561035c575f80fd5b506018546102fa906001600160a01b031681565b34801561037b575f80fd5b5061028b600d5481565b6102b86103933660046118a2565b610888565b3480156103a3575f80fd5b506103b76103b23660046118db565b610a18565b604080516001600160a01b03909316835260208301919091520161026d565b6102b8610a3d565b3480156103e9575f80fd5b5061028b60125481565b6102b86104013660046118a2565b610aab565b348015610411575f80fd5b506102b8610420366004611982565b610aca565b348015610430575f80fd5b5061028b60115481565b348015610445575f80fd5b506102b8610454366004611863565b610ade565b348015610464575f80fd5b506102fa610473366004611863565b610aeb565b348015610483575f80fd5b506102b86104923660046119c7565b610af5565b3480156104a2575f80fd5b506102ce610b15565b3480156104b6575f80fd5b5061028b6104c53660046119e8565b610ba1565b3480156104d5575f80fd5b506102b8610bee565b3480156104e9575f80fd5b5061028b60145481565b3480156104fe575f80fd5b506102b8610bff565b348015610512575f80fd5b506102b8610c72565b348015610526575f80fd5b506008546001600160a01b03166102fa565b348015610543575f80fd5b506102b8610552366004611863565b610c8e565b348015610562575f80fd5b506102b8610571366004611863565b610c9b565b348015610581575f80fd5b506102ce610ca8565b348015610595575f80fd5b5061028b60105481565b3480156105aa575f80fd5b5061028b600281565b6102b86105c1366004611863565b610cb7565b3480156105d1575f80fd5b506102b86105e0366004611a01565b610e79565b6102b86105f3366004611a3a565b610ee4565b348015610603575f80fd5b506015546102619060ff1681565b34801561061c575f80fd5b506102ce61062b366004611863565b610f2e565b34801561063b575f80fd5b5061028b600f5481565b348015610650575f80fd5b5061026161065f366004611ab1565b610fcf565b34801561066f575f80fd5b506102b861067e3660046119e8565b610ffc565b5f6001600160e01b0319821663152a902d60e11b14806106b357506301ffc9a760e01b6001600160e01b03198316145b806106ce57506380ac58cd60e01b6001600160e01b03198316145b806106e95750635b5e139f60e01b6001600160e01b03198316145b92915050565b601880546001600160a01b0319166001600160a01b0384161790556107148282611039565b5050565b60606002805461072790611ad9565b80601f016020809104026020016040519081016040528092919081815260200182805461075390611ad9565b801561079e5780601f106107755761010080835404028352916020019161079e565b820191905f5260205f20905b81548152906001019060200180831161078157829003601f168201915b5050505050905090565b5f6107b2826110db565b6107cf576040516333d1c03960e21b815260040160405180910390fd5b505f908152600660205260409020546001600160a01b031690565b5f6107f482610aeb565b9050336001600160a01b0382161461082d576108108133610fcf565b61082d576040516367d9dca160e11b815260040160405180910390fd5b5f8281526006602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b5f61089282611100565b9050836001600160a01b0316816001600160a01b0316146108c55760405162a1148160e81b815260040160405180910390fd5b5f8281526006602052604090208054338082146001600160a01b03881690911417610911576108f48633610fcf565b61091157604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b03851661093857604051633a954ecd60e21b815260040160405180910390fd5b8015610942575f82555b6001600160a01b038681165f9081526005602052604080822080545f19019055918716808252919020805460010190554260a01b17600160e11b175f85815260046020526040812091909155600160e11b841690036109ce57600184015f8181526004602052604081205490036109cc575f5481146109cc575f8181526004602052604090208490555b505b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b505050505050565b5f805f610a258585611168565b6018546001600160a01b031697909650945050505050565b610a45611212565b610a4d61123f565b6040515f90339047908381818185875af1925050503d805f8114610a8c576040519150601f19603f3d011682016040523d82523d5f602084013e610a91565b606091505b5050905080610a9e575f80fd5b50610aa96001600955565b565b610ac583838360405180602001604052805f815250610ee4565b505050565b610ad2611212565b60166107148282611b55565b610ae6611212565b600f55565b5f6106e982611100565b610afd611212565b6018546107149083906001600160a01b031683611298565b60168054610b2290611ad9565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4e90611ad9565b8015610b995780601f10610b7057610100808354040283529160200191610b99565b820191905f5260205f20905b815481529060010190602001808311610b7c57829003601f168201915b505050505081565b5f6001600160a01b038216610bc9576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b03165f9081526005602052604090205467ffffffffffffffff1690565b610bf6611212565b610aa95f611358565b610c07611212565b601254600c5f828254610c1a9190611c25565b9091555050600c5460125460408051338152602081019390935282810191909152517f8d8664e4328cbcd16b52db004cff5622d17995140cefada9f4578b857f9b204e9181900360600190a1610aa9336012546113a9565b610c7a611212565b6015805460ff19811660ff90911615179055565b610c96611212565b600e55565b610ca3611212565b601155565b60606003805461072790611ad9565b600e546011545f90610cca906001611c25565b83610cd76001545f540390565b610ce19190611c25565b108015610d095750601054335f90815260176020526040902054610d06908590611c25565b11155b80610d1e57506008546001600160a01b031633145b90508015610d2a575f91505b610d348284611c38565b341015610d885760405162461bcd60e51b815260206004820152601d60248201527f506c656173652073656e642074686520657861637420616d6f756e742e00000060448201526064015b60405180910390fd5b601254600d54610d989190611c4f565b610da3906001611c25565b83610db06001545f540390565b610dba9190611c25565b10610df35760405162461bcd60e51b8152602060048201526009602482015268536f6c64206f75742160b81b6044820152606401610d7f565b600f54610e01906001611c25565b8310610e455760405162461bcd60e51b815260206004820152601360248201527226b0bc103832b9102a2c103932b0b1b432b21760691b6044820152606401610d7f565b8015610e6f57335f9081526017602052604081208054859290610e69908490611c25565b90915550505b610ac533846113a9565b335f8181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610eef848484610888565b6001600160a01b0383163b15610f2857610f0b848484846113c2565b610f28576040516368d2bf6b60e11b815260040160405180910390fd5b50505050565b6060610f39826110db565b610f9d5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610d7f565b6016610fa8836114aa565b604051602001610fb9929190611c62565b6040516020818303038152906040529050919050565b6001600160a01b039182165f90815260076020908152604080832093909416825291909152205460ff1690565b611004611212565b6001600160a01b03811661102d57604051631e4fbdf760e01b81525f6004820152602401610d7f565b61103681611358565b50565b6127106001600160601b03821681101561107857604051636f483d0960e01b81526001600160601b038316600482015260248101829052604401610d7f565b6001600160a01b0383166110a157604051635b6cc80560e11b81525f6004820152602401610d7f565b50604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600a55565b5f8054821080156106e95750505f90815260046020526040902054600160e01b161590565b5f815f5481101561114f575f8181526004602052604081205490600160e01b8216900361114d575b805f0361114657505f19015f81815260046020526040902054611128565b9392505050565b505b604051636f96cda160e11b815260040160405180910390fd5b5f828152600b602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b03169282019290925282916111dc575060408051808201909152600a546001600160a01b0381168252600160a01b90046001600160601b031660208201525b60208101515f90612710906111fa906001600160601b031687611c38565b6112049190611cf5565b915196919550909350505050565b6008546001600160a01b03163314610aa95760405163118cdaa760e01b8152336004820152602401610d7f565b6002600954036112915760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610d7f565b6002600955565b6127106001600160601b0382168110156112de5760405163dfd1fc1b60e01b8152600481018590526001600160601b038316602482015260448101829052606401610d7f565b6001600160a01b03831661130e57604051634b4f842960e11b8152600481018590525f6024820152604401610d7f565b506040805180820182526001600160a01b0393841681526001600160601b0392831660208083019182525f968752600b90529190942093519051909116600160a01b029116179055565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b610714828260405180602001604052805f81525061153a565b604051630a85bd0160e11b81525f906001600160a01b0385169063150b7a02906113f6903390899088908890600401611d14565b6020604051808303815f875af1925050508015611430575060408051601f3d908101601f1916820190925261142d91810190611d50565b60015b61148c573d80801561145d576040519150601f19603f3d011682016040523d82523d5f602084013e611462565b606091505b5080515f03611484576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b60605f6114b6836115a3565b60010190505f8167ffffffffffffffff8111156114d5576114d56118fb565b6040519080825280601f01601f1916602001820160405280156114ff576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461150957509392505050565b611544838361167a565b6001600160a01b0383163b15610ac5575f548281035b61156c5f8683806001019450866113c2565b611589576040516368d2bf6b60e11b815260040160405180910390fd5b81811061155a57815f541461159c575f80fd5b5050505050565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106115e15772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef8100000000831061160d576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061162b57662386f26fc10000830492506010015b6305f5e1008310611643576305f5e100830492506008015b612710831061165757612710830492506004015b60648310611669576064830492506002015b600a83106106e95760010192915050565b5f80549082900361169e5760405163b562e8dd60e01b815260040160405180910390fd5b6001600160a01b0383165f8181526005602090815260408083208054680100000000000000018802019055848352600490915281206001851460e11b4260a01b178317905582840190839083907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4600183015b81811461174a5780835f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4600101611714565b50815f0361176a57604051622e076360e81b815260040160405180910390fd5b5f5550505050565b6001600160e01b031981168114611036575f80fd5b5f60208284031215611797575f80fd5b813561114681611772565b80356001600160a01b03811681146117b8575f80fd5b919050565b80356001600160601b03811681146117b8575f80fd5b5f80604083850312156117e4575f80fd5b6117ed836117a2565b91506117fb602084016117bd565b90509250929050565b5f5b8381101561181e578181015183820152602001611806565b50505f910152565b5f815180845261183d816020860160208601611804565b601f01601f19169290920160200192915050565b602081525f6111466020830184611826565b5f60208284031215611873575f80fd5b5035919050565b5f806040838503121561188b575f80fd5b611894836117a2565b946020939093013593505050565b5f805f606084860312156118b4575f80fd5b6118bd846117a2565b92506118cb602085016117a2565b9150604084013590509250925092565b5f80604083850312156118ec575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52604160045260245ffd5b5f67ffffffffffffffff80841115611929576119296118fb565b604051601f8501601f19908116603f01168101908282118183101715611951576119516118fb565b81604052809350858152868686011115611969575f80fd5b858560208301375f602087830101525050509392505050565b5f60208284031215611992575f80fd5b813567ffffffffffffffff8111156119a8575f80fd5b8201601f810184136119b8575f80fd5b6114a28482356020840161190f565b5f80604083850312156119d8575f80fd5b823591506117fb602084016117bd565b5f602082840312156119f8575f80fd5b611146826117a2565b5f8060408385031215611a12575f80fd5b611a1b836117a2565b915060208301358015158114611a2f575f80fd5b809150509250929050565b5f805f8060808587031215611a4d575f80fd5b611a56856117a2565b9350611a64602086016117a2565b925060408501359150606085013567ffffffffffffffff811115611a86575f80fd5b8501601f81018713611a96575f80fd5b611aa58782356020840161190f565b91505092959194509250565b5f8060408385031215611ac2575f80fd5b611acb836117a2565b91506117fb602084016117a2565b600181811c90821680611aed57607f821691505b602082108103611b0b57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610ac557805f5260205f20601f840160051c81016020851015611b365750805b601f840160051c820191505b8181101561159c575f8155600101611b42565b815167ffffffffffffffff811115611b6f57611b6f6118fb565b611b8381611b7d8454611ad9565b84611b11565b602080601f831160018114611bb6575f8415611b9f5750858301515b5f19600386901b1c1916600185901b178555610a10565b5f85815260208120601f198616915b82811015611be457888601518255948401946001909101908401611bc5565b5085821015611c0157878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b808201808211156106e9576106e9611c11565b80820281158282048414176106e9576106e9611c11565b818103818111156106e9576106e9611c11565b5f808454611c6f81611ad9565b60018281168015611c875760018114611c9c57611cc8565b60ff1984168752821515830287019450611cc8565b885f526020805f205f5b85811015611cbf5781548a820152908401908201611ca6565b50505082870194505b505050508351611cdc818360208801611804565b64173539b7b760d91b9101908152600501949350505050565b5f82611d0f57634e487b7160e01b5f52601260045260245ffd5b500490565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f90611d4690830184611826565b9695505050505050565b5f60208284031215611d60575f80fd5b81516111468161177256fea26469706673582212205a6a4374c77186e1623b4f8217f8e1efcf33d32f6eb7b3d9f1e40236f350f4db64736f6c63430008160033