[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AlreadyInitialized", "type": "error" }, { "inputs": [], "name": "ExpiredSignature", "type": "error" }, { "inputs": [], "name": "InvalidSignature", "type": "error" }, { "inputs": [], "name": "OnlyAdminCanPerformThisAction", "type": "error" }, { "inputs": [], "name": "OnlyAuthorizedCanPerformThisAction", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "admin", "type": "address" } ], "name": "AdminSet", "type": "event" }, { "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": false, "internalType": "enum Types.AssetKind", "name": "assetKind", "type": "uint8" }, { "indexed": false, "internalType": "address", "name": "deployAddress", "type": "address" }, { "indexed": false, "internalType": "address", "name": "admin", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "blockNumber", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "chainId", "type": "uint256" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "mintManager", "type": "address" } ], "name": "MintManagerSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "uri", "type": "string" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Minted", "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": "admin", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "assetName", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "assetSymbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "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": "deployBlockNumber", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_assetName", "type": "string" }, { "internalType": "string", "name": "_assetSymbol", "type": "string" }, { "internalType": "uint256", "name": "_deployBlockNumber", "type": "uint256" }, { "components": [ { "internalType": "address", "name": "signer", "type": "address" }, { "internalType": "bytes", "name": "signature", "type": "bytes" }, { "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "internalType": "struct Types.Sign", "name": "_sign", "type": "tuple" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "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": [], "name": "isInitialized", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "mintManager", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "enum Types.AssetKind", "name": "kind", "type": "uint8" }, { "internalType": "uint256", "name": "batchId", "type": "uint256" }, { "internalType": "uint256", "name": "tierId", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "mintAmount", "type": "uint256" }, { "internalType": "string", "name": "uri", "type": "string" }, { "internalType": "address", "name": "swapToken", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "address", "name": "target", "type": "address" }, { "internalType": "bytes32[]", "name": "proof", "type": "bytes32[]" } ], "internalType": "struct Types.Asset", "name": "asset", "type": "tuple" } ], "name": "safeMint", "outputs": [], "stateMutability": "nonpayable", "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": "nonpayable", "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": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_admin", "type": "address" } ], "name": "setAdmin", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_mintManager", "type": "address" } ], "name": "setMintManager", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_uri", "type": "string" } ], "name": "setURI", "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": "index", "type": "uint256" } ], "name": "tokenByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenOfOwnerByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "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": "nonpayable", "type": "function" } ]
60e0604052602f608081815290620025af60a03980516200002991601091602090910190620000b1565b503480156200003757600080fd5b5060405180604001604052806008815260200167417373657437323160c01b81525060405180604001604052806008815260200167415353455437323160c01b815250816000908051906020019062000092929190620000b1565b508051620000a8906001906020840190620000b1565b50505062000193565b828054620000bf9062000157565b90600052602060002090601f016020900481019282620000e357600085556200012e565b82601f10620000fe57805160ff19168380011785556200012e565b828001600101855582156200012e579182015b828111156200012e57825182559160200191906001019062000111565b506200013c92915062000140565b5090565b5b808211156200013c576000815560010162000141565b600181811c908216806200016c57607f821691505b6020821081036200018d57634e487b7160e01b600052602260045260246000fd5b50919050565b61240c80620001a36000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c80636c0360eb116100f95780639ae4704b11610097578063c87b56dd11610071578063c87b56dd14610390578063c9230c5d146103a3578063e985e9c5146103ab578063f851a440146103e757600080fd5b80639ae4704b14610357578063a22cb4651461036a578063b88d4fde1461037d57600080fd5b806370a08231116100d357806370a08231146103165780637e4edf70146103295780638830eac01461033c57806395d89b411461034f57600080fd5b80636c0360eb146102e85780636cde2877146102f0578063704b6c021461030357600080fd5b8063206288d311610166578063392e53cd11610140578063392e53cd146102a257806342842e0e146102af5780634f6ccce7146102c25780636352211e146102d557600080fd5b8063206288d31461027357806323b872dd1461027c5780632f745c591461028f57600080fd5b8063081812fc116101a2578063081812fc1461021b578063095ea7b314610246578063176de7a81461025957806318160ddd1461026157600080fd5b806301ffc9a7146101c957806302fe5305146101f157806306fdde0314610206575b600080fd5b6101dc6101d7366004611c83565b6103fa565b60405190151581526020015b60405180910390f35b6102046101ff366004611d2c565b61040b565b005b61020e61044d565b6040516101e89190611dcd565b61022e610229366004611de0565b6104df565b6040516001600160a01b0390911681526020016101e8565b610204610254366004611e15565b610506565b61020e610620565b6008545b6040519081526020016101e8565b610265600c5481565b61020461028a366004611e3f565b6106ae565b61026561029d366004611e15565b6106df565b600f546101dc9060ff1681565b6102046102bd366004611e3f565b610775565b6102656102d0366004611de0565b610790565b61022e6102e3366004611de0565b610823565b61020e610883565b6102046102fe366004611e7b565b610890565b610204610311366004611eb7565b610987565b610265610324366004611eb7565b610a07565b600a5461022e906001600160a01b031681565b61020461034a366004611eb7565b610a8d565b61020e610b06565b610204610365366004611f14565b610b15565b610204610378366004611fb7565b610d7f565b61020461038b366004611ff3565b610d8a565b61020e61039e366004611de0565b610dc2565b61020e610e29565b6101dc6103b936600461206f565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b600b5461022e906001600160a01b031681565b600061040582610e36565b92915050565b600b546001600160a01b0316331461043657604051632d9f475960e21b815260040160405180910390fd5b8051610449906010906020840190611b60565b5050565b6060600d805461045c906120a2565b80601f0160208091040260200160405190810160405280929190818152602001828054610488906120a2565b80156104d55780601f106104aa576101008083540402835291602001916104d5565b820191906000526020600020905b8154815290600101906020018083116104b857829003601f168201915b5050505050905090565b60006104ea82610e5b565b506000908152600460205260409020546001600160a01b031690565b600061051182610823565b9050806001600160a01b0316836001600160a01b0316036105835760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061059f575061059f81336103b9565b6106115760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161057a565b61061b8383610ebd565b505050565b600e805461062d906120a2565b80601f0160208091040260200160405190810160405280929190818152602001828054610659906120a2565b80156106a65780601f1061067b576101008083540402835291602001916106a6565b820191906000526020600020905b81548152906001019060200180831161068957829003601f168201915b505050505081565b6106b83382610f2b565b6106d45760405162461bcd60e51b815260040161057a906120dc565b61061b838383610faa565b60006106ea83610a07565b821061074c5760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b606482015260840161057a565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b61061b83838360405180602001604052806000815250610d8a565b600061079b60085490565b82106107fe5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b606482015260840161057a565b600882815481106108115761081161212a565b90600052602060002001549050919050565b6000818152600260205260408120546001600160a01b0316806104055760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161057a565b6010805461062d906120a2565b600b546001600160a01b031633148015906108b65750600a546001600160a01b03163314155b156108d45760405163460b541960e01b815260040160405180910390fd5b60006108e360a0830183612140565b6040516020016108f4929190612187565b60408051601f1981840301815291905280516020909101209050610928610922610100840160e08501611eb7565b82611151565b7ff5c82eda717141c5f0cfeb894e7b7819c158a337b62ec13d412aecad30b0ad9e61095a610100840160e08501611eb7565b8261096860a0860186612140565b600160405161097b959493929190612197565b60405180910390a15050565b600b546001600160a01b031633146109b257604051632d9f475960e21b815260040160405180910390fd5b600b80546001600160a01b0319166001600160a01b0383169081179091556040519081527f8fe72c3e0020beb3234e76ae6676fa576fbfcae600af1c4fea44784cf0db329c906020015b60405180910390a150565b60006001600160a01b038216610a715760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161057a565b506001600160a01b031660009081526003602052604090205490565b600b546001600160a01b03163314610ab857604051632d9f475960e21b815260040160405180910390fd5b600a80546001600160a01b0319166001600160a01b0383169081179091556040519081527f1d5842357c4a776fb6862c5c2e200a5298bf9273363ee80b93672a76a12ae7ec906020016109fc565b6060600e805461045c906120a2565b600f5460ff1615610b385760405162dc149f60e41b815260040160405180910390fd5b42610b496040830135610e106121ff565b1015610b685760405163df4cc36d60e01b815260040160405180910390fd5b6000610b776020830183611eb7565b604051602001610bb691906d02232b83637bc9020b9b9b2ba1d160951b815260609190911b6bffffffffffffffffffffffff1916600e82015260220190565b604051602081830303815290604052805190602001209050610c9e828060200190610be19190612140565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051610c989350610c389250869188013590602001918252602082015260400190565b60408051601f1981840301815282825280516020918201207f19457468657265756d205369676e6564204d6573736167653a0a33320000000084830152603c8085019190915282518085039091018152605c909301909152815191012090565b9061129f565b600b80546001600160a01b0319166001600160a01b0392909216919091179055610ccb6020830183611eb7565b600b546001600160a01b03908116911614610cf957604051638baa579f60e01b815260040160405180910390fd5b600c839055610d0a600d8888611be4565b50610d17600e8686611be4565b50600f805460ff19166001908117909155600b54600c546040517f077a2a8da1a7b212213da9e31691518e97e1afff04870013bc5162a887a9756993610d6e93909230926001600160a01b0390921691469061222d565b60405180910390a150505050505050565b6104493383836112c3565b610d943383610f2b565b610db05760405162461bcd60e51b815260040161057a906120dc565b610dbc84848484611391565b50505050565b6060610dcd82610e5b565b6000610dd76113c4565b90506000815111610df75760405180602001604052806000815250610e22565b80610e01846113d3565b604051602001610e12929190612277565b6040516020818303038152906040525b9392505050565b600d805461062d906120a2565b60006001600160e01b0319821663780e9d6360e01b14806104055750610405826114d4565b6000818152600260205260409020546001600160a01b0316610eba5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161057a565b50565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610ef282610823565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610f3783610823565b9050806001600160a01b0316846001600160a01b03161480610f7e57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b80610fa25750836001600160a01b0316610f97846104df565b6001600160a01b0316145b949350505050565b826001600160a01b0316610fbd82610823565b6001600160a01b0316146110215760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b606482015260840161057a565b6001600160a01b0382166110835760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161057a565b61108e838383611524565b611099600082610ebd565b6001600160a01b03831660009081526003602052604081208054600192906110c29084906122a6565b90915550506001600160a01b03821660009081526003602052604081208054600192906110f09084906121ff565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b0382166111a75760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161057a565b6000818152600260205260409020546001600160a01b03161561120c5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161057a565b61121860008383611524565b6001600160a01b03821660009081526003602052604081208054600192906112419084906121ff565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60008060006112ae858561152f565b915091506112bb81611574565b509392505050565b816001600160a01b0316836001600160a01b0316036113245760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161057a565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61139c848484610faa565b6113a88484848461172a565b610dbc5760405162461bcd60e51b815260040161057a906122bd565b60606010805461045c906120a2565b6060816000036113fa5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611424578061140e8161230f565b915061141d9050600a8361233e565b91506113fe565b60008167ffffffffffffffff81111561143f5761143f611ca0565b6040519080825280601f01601f191660200182016040528015611469576020820181803683370190505b5090505b8415610fa25761147e6001836122a6565b915061148b600a86612352565b6114969060306121ff565b60f81b8183815181106114ab576114ab61212a565b60200101906001600160f81b031916908160001a9053506114cd600a8661233e565b945061146d565b60006001600160e01b031982166380ac58cd60e01b148061150557506001600160e01b03198216635b5e139f60e01b145b8061040557506301ffc9a760e01b6001600160e01b0319831614610405565b61061b83838361182b565b60008082516041036115655760208301516040840151606085015160001a611559878285856118e3565b9450945050505061156d565b506000905060025b9250929050565b600081600481111561158857611588612217565b036115905750565b60018160048111156115a4576115a4612217565b036115f15760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161057a565b600281600481111561160557611605612217565b036116525760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161057a565b600381600481111561166657611666612217565b036116be5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161057a565b60048160048111156116d2576116d2612217565b03610eba5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161057a565b60006001600160a01b0384163b1561182057604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061176e903390899088908890600401612366565b6020604051808303816000875af19250505080156117a9575060408051601f3d908101601f191682019092526117a6918101906123a3565b60015b611806573d8080156117d7576040519150601f19603f3d011682016040523d82523d6000602084013e6117dc565b606091505b5080516000036117fe5760405162461bcd60e51b815260040161057a906122bd565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610fa2565b506001949350505050565b6001600160a01b0383166118865761188181600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b6118a9565b816001600160a01b0316836001600160a01b0316146118a9576118a983826119d0565b6001600160a01b0382166118c05761061b81611a6d565b826001600160a01b0316826001600160a01b03161461061b5761061b8282611b1c565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561191a57506000905060036119c7565b8460ff16601b1415801561193257508460ff16601c14155b1561194357506000905060046119c7565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611997573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166119c0576000600192509250506119c7565b9150600090505b94509492505050565b600060016119dd84610a07565b6119e791906122a6565b600083815260076020526040902054909150808214611a3a576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b600854600090611a7f906001906122a6565b60008381526009602052604081205460088054939450909284908110611aa757611aa761212a565b906000526020600020015490508060088381548110611ac857611ac861212a565b6000918252602080832090910192909255828152600990915260408082208490558582528120556008805480611b0057611b006123c0565b6001900381819060005260206000200160009055905550505050565b6000611b2783610a07565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b828054611b6c906120a2565b90600052602060002090601f016020900481019282611b8e5760008555611bd4565b82601f10611ba757805160ff1916838001178555611bd4565b82800160010185558215611bd4579182015b82811115611bd4578251825591602001919060010190611bb9565b50611be0929150611c58565b5090565b828054611bf0906120a2565b90600052602060002090601f016020900481019282611c125760008555611bd4565b82601f10611c2b5782800160ff19823516178555611bd4565b82800160010185558215611bd4579182015b82811115611bd4578235825591602001919060010190611c3d565b5b80821115611be05760008155600101611c59565b6001600160e01b031981168114610eba57600080fd5b600060208284031215611c9557600080fd5b8135610e2281611c6d565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115611cd157611cd1611ca0565b604051601f8501601f19908116603f01168101908282118183101715611cf957611cf9611ca0565b81604052809350858152868686011115611d1257600080fd5b858560208301376000602087830101525050509392505050565b600060208284031215611d3e57600080fd5b813567ffffffffffffffff811115611d5557600080fd5b8201601f81018413611d6657600080fd5b610fa284823560208401611cb6565b60005b83811015611d90578181015183820152602001611d78565b83811115610dbc5750506000910152565b60008151808452611db9816020860160208601611d75565b601f01601f19169290920160200192915050565b602081526000610e226020830184611da1565b600060208284031215611df257600080fd5b5035919050565b80356001600160a01b0381168114611e1057600080fd5b919050565b60008060408385031215611e2857600080fd5b611e3183611df9565b946020939093013593505050565b600080600060608486031215611e5457600080fd5b611e5d84611df9565b9250611e6b60208501611df9565b9150604084013590509250925092565b600060208284031215611e8d57600080fd5b813567ffffffffffffffff811115611ea457600080fd5b82016101408185031215610e2257600080fd5b600060208284031215611ec957600080fd5b610e2282611df9565b60008083601f840112611ee457600080fd5b50813567ffffffffffffffff811115611efc57600080fd5b60208301915083602082850101111561156d57600080fd5b60008060008060008060808789031215611f2d57600080fd5b863567ffffffffffffffff80821115611f4557600080fd5b611f518a838b01611ed2565b90985096506020890135915080821115611f6a57600080fd5b611f768a838b01611ed2565b9096509450604089013593506060890135915080821115611f9657600080fd5b5087016060818a031215611fa957600080fd5b809150509295509295509295565b60008060408385031215611fca57600080fd5b611fd383611df9565b915060208301358015158114611fe857600080fd5b809150509250929050565b6000806000806080858703121561200957600080fd5b61201285611df9565b935061202060208601611df9565b925060408501359150606085013567ffffffffffffffff81111561204357600080fd5b8501601f8101871361205457600080fd5b61206387823560208401611cb6565b91505092959194509250565b6000806040838503121561208257600080fd5b61208b83611df9565b915061209960208401611df9565b90509250929050565b600181811c908216806120b657607f821691505b6020821081036120d657634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261215757600080fd5b83018035915067ffffffffffffffff82111561217257600080fd5b60200191503681900382131561156d57600080fd5b8183823760009101908152919050565b6001600160a01b0386168152602081018590526080604082018190528101839052828460a0830137600060a08483010152600060a0601f19601f86011683010190508260608301529695505050505050565b634e487b7160e01b600052601160045260246000fd5b60008219821115612212576122126121e9565b500190565b634e487b7160e01b600052602160045260246000fd5b60a081016003871061224f57634e487b7160e01b600052602160045260246000fd5b9581526001600160a01b03948516602082015292909316604083015260608201526080015290565b60008351612289818460208801611d75565b83519083019061229d818360208801611d75565b01949350505050565b6000828210156122b8576122b86121e9565b500390565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b600060018201612321576123216121e9565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60008261234d5761234d612328565b500490565b60008261236157612361612328565b500690565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061239990830184611da1565b9695505050505050565b6000602082840312156123b557600080fd5b8151610e2281611c6d565b634e487b7160e01b600052603160045260246000fdfea26469706673582212204a6401bc631991930cc4d783951b3ef02c484f0eaefb4119ff0eb43b0cf87ed564736f6c634300080d003368747470733a2f2f696f2e386d696e742e696f2f6d656469612d62617463682d6974656d732f6d657461646174612f