[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "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": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "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": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "ERC712_VERSION", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MINTER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "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": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "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": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "getAttributes", "outputs": [ { "internalType": "uint256", "name": "attributes", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getChainId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getDomainSeperator", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": "address", "name": "_user", "type": "address" }, { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "_attributes", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_user", "type": "address" }, { "internalType": "uint256", "name": "_num", "type": "uint256" } ], "name": "mintBatch", "outputs": [], "stateMutability": "nonpayable", "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": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenID", "type": "uint256" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "royaltyAmount", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "royaltyRecipient", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "royaltyValue", "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": "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": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "baseURI", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "setRoyalties", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenRangeStart", "type": "uint256" }, { "internalType": "uint256", "name": "_tokenRangeEnd", "type": "uint256" } ], "name": "setTokenRange", "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": [], "name": "tokenRangeEnd", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokenRangeStart", "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" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "_attributes", "type": "uint256" } ], "name": "updateAttributes", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
6080604052600b805460ff191690556127106012553480156200002157600080fd5b50604080518082018252600a808252692a32b9ba37333a3c3cbd60b11b602080840182905284518086019095529184529083015290600062000064838262000333565b50600162000073828262000333565b506200008591506000905033620000e3565b620000b17f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633620000e3565b60408051808201909152600a8152692a32b9ba37333a3c3cbd60b11b6020820152620000dd9062000188565b620003ff565b6000828152600a602090815260408083206001600160a01b038516845290915290205460ff1662000184576000828152600a602090815260408083206001600160a01b03851684529091529020805460ff19166001179055620001433390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600b5460ff1615620001d15760405162461bcd60e51b815260206004820152600e60248201526d185b1c9958591e481a5b9a5d195960921b604482015260640160405180910390fd5b620001dc81620001ec565b50600b805460ff19166001179055565b6040518060800160405280604f815260200162002ce0604f9139805160209182012082519282019290922060408051808201825260018152603160f81b90840152805180840194909452838101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608401523060808401524660a0808501919091528151808503909101815260c090930190528151910120600c55565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002b957607f821691505b602082108103620002da57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200032e57600081815260208120601f850160051c81016020861015620003095750805b601f850160051c820191505b818110156200032a5782815560010162000315565b5050505b505050565b81516001600160401b038111156200034f576200034f6200028e565b6200036781620003608454620002a4565b84620002e0565b602080601f8311600181146200039f5760008415620003865750858301515b600019600386901b1c1916600185901b1785556200032a565b600085815260208120601f198616915b82811015620003d057888601518255948401946001909101908401620003af565b5085821015620003ef5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6128d1806200040f6000396000f3fe608060405234801561001057600080fd5b50600436106102325760003560e01c80634c00de821161013057806392167667116100b8578063c87b56dd1161007c578063c87b56dd146104d7578063d00ff23f146104ea578063d5391393146104fd578063d547741f14610524578063e985e9c51461053757600080fd5b8063921676671461049857806395d89b41146104a1578063a217fddf146104a9578063a22cb465146104b1578063b88d4fde146104c457600080fd5b80636352211e116100ff5780636352211e1461043957806370a082311461044c578063719fa76d1461045f5780638c7ea24b1461047257806391d148541461048557600080fd5b80634c00de82146103f75780634f6ccce71461040a57806355f804b31461041d5780635fc205881461043057600080fd5b806323b872dd116101be5780632f745c59116101825780632f745c59146103985780633408e470146103ab57806336568abe146103b157806342842e0e146103c45780634378a6e3146103d757600080fd5b806323b872dd1461030a578063248a9ca31461031d578063248b71fc146103405780632a55205a146103535780632f2ff15d1461038557600080fd5b80630f7e5970116102055780630f7e5970146102b4578063156e29f6146102d457806318160ddd146102e75780631dd03502146102f957806320379ee51461030257600080fd5b806301ffc9a71461023757806306fdde031461025f578063081812fc14610274578063095ea7b31461029f575b600080fd5b61024a6102453660046120af565b610573565b60405190151581526020015b60405180910390f35b610267610584565b604051610256919061211c565b61028761028236600461212f565b610616565b6040516001600160a01b039091168152602001610256565b6102b26102ad366004612164565b61063d565b005b610267604051806040016040528060018152602001603160f81b81525081565b6102b26102e236600461218e565b610757565b6008545b604051908152602001610256565b6102eb60115481565b600c546102eb565b6102b26103183660046121c1565b610915565b6102eb61032b36600461212f565b6000908152600a602052604090206001015490565b6102b261034e366004612164565b610946565b6103666103613660046121fd565b610a9c565b604080516001600160a01b039093168352602083019190915201610256565b6102b261039336600461221f565b610aec565b6102eb6103a6366004612164565b610b11565b466102eb565b6102b26103bf36600461221f565b610ba7565b6102b26103d23660046121c1565b610c25565b6102eb6103e536600461212f565b60009081526010602052604090205490565b601454610287906001600160a01b031681565b6102eb61041836600461212f565b610c40565b6102b261042b3660046122d7565b610cd3565b6102eb60135481565b61028761044736600461212f565b610d06565b6102eb61045a366004612320565b610d66565b6102b261046d3660046121fd565b610dec565b6102b2610480366004612164565b610e1e565b61024a61049336600461221f565b610ef1565b6102eb60125481565b610267610f1c565b6102eb600081565b6102b26104bf36600461233b565b610f2b565b6102b26104d2366004612377565b610f36565b6102676104e536600461212f565b610f6e565b6102b26104f83660046121fd565b610fd5565b6102eb7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102b261053236600461221f565b6110ac565b61024a6105453660046123f3565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b600061057e826110d1565b92915050565b6060600080546105939061241d565b80601f01602080910402602001604051908101604052809291908181526020018280546105bf9061241d565b801561060c5780601f106105e15761010080835404028352916020019161060c565b820191906000526020600020905b8154815290600101906020018083116105ef57829003601f168201915b5050505050905090565b6000610621826110f6565b506000908152600460205260409020546001600160a01b031690565b600061064882610d06565b9050806001600160a01b0316836001600160a01b0316036106ba5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806106d657506106d68133610545565b6107485760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016106b1565b6107528383611158565b505050565b6107817f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610ef1565b61079d5760405162461bcd60e51b81526004016106b190612457565b6001600160a01b0383166107ff5760405162461bcd60e51b8152602060048201526024808201527f546573746e667478797a3a206d696e7420746f20746865207a65726f206164646044820152637265737360e01b60648201526084016106b1565b6000828152600260205260409020546001600160a01b0316156108755760405162461bcd60e51b815260206004820152602860248201527f546573746e667478797a3a204552433732313a20746f6b656e20616c726561646044820152671e481b5a5b9d195960c21b60648201526084016106b1565b601154821015801561088957506012548211155b6108e35760405162461bcd60e51b815260206004820152602560248201527f546573746e667478797a3a20546f6b656e206964206d75737420626520696e2060448201526472616e676560d81b60648201526084016106b1565b601180549060006108f3836124af565b919050555061090283836111c6565b6000918252601060205260409091205550565b61091f33826111e0565b61093b5760405162461bcd60e51b81526004016106b1906124c8565b61075283838361125f565b6109707f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610ef1565b61098c5760405162461bcd60e51b81526004016106b190612457565b806000036109f15760405162461bcd60e51b815260206004820152602c60248201527f4469737472696275746f723a204e756d626572206f6620746f6b656e7320636160448201526b6e6e6f74206265207a65726f60a01b60648201526084016106b1565b60125481601154610a029190612515565b1115610a5e5760405162461bcd60e51b815260206004820152602560248201527f4469737472696275746f723a2044697374204d6178696d756d206361702072656044820152641858da195960da1b60648201526084016106b1565b60005b818110156107525760118054906000610a79836124af565b9190505550610a8a836011546111c6565b80610a94816124af565b915050610a61565b60408051808201909152600d546001600160a01b0316808252600e54602083018190529091600091670de0b6b3a764000090610ad89086612528565b610ae2919061253f565b9150509250929050565b6000828152600a6020526040902060010154610b07816113d0565b61075283836113da565b6000610b1c83610d66565b8210610b7e5760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b60648201526084016106b1565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b6001600160a01b0381163314610c175760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016106b1565b610c218282611460565b5050565b61075283838360405180602001604052806000815250610f36565b6000610c4b60085490565b8210610cae5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b60648201526084016106b1565b60088281548110610cc157610cc1612561565b90600052602060002001549050919050565b610cde600033610ef1565b610cfa5760405162461bcd60e51b81526004016106b190612577565b600f610c218282612606565b6000818152600260205260408120546001600160a01b03168061057e5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016106b1565b60006001600160a01b038216610dd05760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016106b1565b506001600160a01b031660009081526003602052604090205490565b610df7600033610ef1565b610e135760405162461bcd60e51b81526004016106b190612577565b601191909155601255565b610e29600033610ef1565b610e4f5760405162461bcd60e51b815260206004820152600060248201526044016106b1565b610e5982826114c7565b6001600160a01b038216600003610ecb5760405162461bcd60e51b815260206004820152603060248201527f526f79616c747920726563697069656e7420616464726573732063616e6e6f7460448201526f206265205a65726f204164647265737360801b60648201526084016106b1565b601480546001600160a01b0319166001600160a01b039390931692909217909155601355565b6000918252600a602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600180546105939061241d565b610c21338383611558565b610f4033836111e0565b610f5c5760405162461bcd60e51b81526004016106b1906124c8565b610f6884848484611626565b50505050565b6060610f79826110f6565b6000610f83611659565b90506000815111610fa35760405180602001604052806000815250610fce565b80610fad84611668565b604051602001610fbe9291906126c6565b6040516020818303038152906040525b9392505050565b610fe0600033610ef1565b6110365760405162461bcd60e51b815260206004820152602160248201527f546573746e667478797a3a2043616c6c6572206973206e6f742061206f776e656044820152603960f91b60648201526084016106b1565b6000828152600260205260409020546001600160a01b031661109a5760405162461bcd60e51b815260206004820181905260248201527f546573746e667478797a3a20546f6b656e20646f6573206e6f7420657869737460448201526064016106b1565b60009182526010602052604090912055565b6000828152600a60205260409020600101546110c7816113d0565b6107528383611460565b60006001600160e01b0319821663152a902d60e11b148061057e575061057e826116fb565b6000818152600260205260409020546001600160a01b03166111555760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016106b1565b50565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061118d82610d06565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b610c21828260405180602001604052806000815250611720565b6000806111ec83610d06565b9050806001600160a01b0316846001600160a01b0316148061123357506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806112575750836001600160a01b031661124c84610616565b6001600160a01b0316145b949350505050565b826001600160a01b031661127282610d06565b6001600160a01b0316146112985760405162461bcd60e51b81526004016106b1906126f5565b6001600160a01b0382166112fa5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016106b1565b6113078383836001611753565b826001600160a01b031661131a82610d06565b6001600160a01b0316146113405760405162461bcd60e51b81526004016106b1906126f5565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6111558133611893565b6113e48282610ef1565b610c21576000828152600a602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561141c3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b61146a8282610ef1565b15610c21576000828152600a602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b670de0b6b3a764000081111561151f5760405162461bcd60e51b815260206004820152601a60248201527f45524332393831526f79616c746965733a20546f6f206869676800000000000060448201526064016106b1565b604080518082019091526001600160a01b039092168083526020909201819052600d80546001600160a01b031916909217909155600e55565b816001600160a01b0316836001600160a01b0316036115b95760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016106b1565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61163184848461125f565b61163d848484846118ec565b610f685760405162461bcd60e51b81526004016106b19061273a565b6060600f80546105939061241d565b60606000611675836119ed565b600101905060008167ffffffffffffffff8111156116955761169561224b565b6040519080825280601f01601f1916602001820160405280156116bf576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846116c957509392505050565b60006001600160e01b03198216637965db0b60e01b148061057e575061057e82611ac5565b61172a8383611aea565b61173760008484846118ec565b6107525760405162461bcd60e51b81526004016106b19061273a565b61175f84848484611c83565b60018111156117ce5760405162461bcd60e51b815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e7365637574697665207472604482015274185b9cd9995c9cc81b9bdd081cdd5c1c1bdc9d1959605a1b60648201526084016106b1565b816001600160a01b03851661182a5761182581600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b61184d565b836001600160a01b0316856001600160a01b03161461184d5761184d8582611d0b565b6001600160a01b0384166118695761186481611da8565b61188c565b846001600160a01b0316846001600160a01b03161461188c5761188c8482611e57565b5050505050565b61189d8282610ef1565b610c21576118aa81611e9b565b6118b5836020611ead565b6040516020016118c692919061278c565b60408051601f198184030181529082905262461bcd60e51b82526106b19160040161211c565b60006001600160a01b0384163b156119e257604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611930903390899088908890600401612801565b6020604051808303816000875af192505050801561196b575060408051601f3d908101601f191682019092526119689181019061283e565b60015b6119c8573d808015611999576040519150601f19603f3d011682016040523d82523d6000602084013e61199e565b606091505b5080516000036119c05760405162461bcd60e51b81526004016106b19061273a565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611257565b506001949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611a2c5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611a58576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611a7657662386f26fc10000830492506010015b6305f5e1008310611a8e576305f5e100830492506008015b6127108310611aa257612710830492506004015b60648310611ab4576064830492506002015b600a831061057e5760010192915050565b60006001600160e01b0319821663780e9d6360e01b148061057e575061057e82612049565b6001600160a01b038216611b405760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016106b1565b6000818152600260205260409020546001600160a01b031615611ba55760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016106b1565b611bb3600083836001611753565b6000818152600260205260409020546001600160a01b031615611c185760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016106b1565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001811115610f68576001600160a01b03841615611cc9576001600160a01b03841660009081526003602052604081208054839290611cc390849061285b565b90915550505b6001600160a01b03831615610f68576001600160a01b03831660009081526003602052604081208054839290611d00908490612515565b909155505050505050565b60006001611d1884610d66565b611d22919061285b565b600083815260076020526040902054909150808214611d75576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b600854600090611dba9060019061285b565b60008381526009602052604081205460088054939450909284908110611de257611de2612561565b906000526020600020015490508060088381548110611e0357611e03612561565b6000918252602080832090910192909255828152600990915260408082208490558582528120556008805480611e3b57611e3b61286e565b6001900381819060005260206000200160009055905550505050565b6000611e6283610d66565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b606061057e6001600160a01b03831660145b60606000611ebc836002612528565b611ec7906002612515565b67ffffffffffffffff811115611edf57611edf61224b565b6040519080825280601f01601f191660200182016040528015611f09576020820181803683370190505b509050600360fc1b81600081518110611f2457611f24612561565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611f5357611f53612561565b60200101906001600160f81b031916908160001a9053506000611f77846002612528565b611f82906001612515565b90505b6001811115611ffa576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611fb657611fb6612561565b1a60f81b828281518110611fcc57611fcc612561565b60200101906001600160f81b031916908160001a90535060049490941c93611ff381612884565b9050611f85565b508315610fce5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016106b1565b60006001600160e01b031982166380ac58cd60e01b148061207a57506001600160e01b03198216635b5e139f60e01b145b8061057e57506301ffc9a760e01b6001600160e01b031983161461057e565b6001600160e01b03198116811461115557600080fd5b6000602082840312156120c157600080fd5b8135610fce81612099565b60005b838110156120e75781810151838201526020016120cf565b50506000910152565b600081518084526121088160208601602086016120cc565b601f01601f19169290920160200192915050565b602081526000610fce60208301846120f0565b60006020828403121561214157600080fd5b5035919050565b80356001600160a01b038116811461215f57600080fd5b919050565b6000806040838503121561217757600080fd5b61218083612148565b946020939093013593505050565b6000806000606084860312156121a357600080fd5b6121ac84612148565b95602085013595506040909401359392505050565b6000806000606084860312156121d657600080fd5b6121df84612148565b92506121ed60208501612148565b9150604084013590509250925092565b6000806040838503121561221057600080fd5b50508035926020909101359150565b6000806040838503121561223257600080fd5b8235915061224260208401612148565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff8084111561227c5761227c61224b565b604051601f8501601f19908116603f011681019082821181831017156122a4576122a461224b565b816040528093508581528686860111156122bd57600080fd5b858560208301376000602087830101525050509392505050565b6000602082840312156122e957600080fd5b813567ffffffffffffffff81111561230057600080fd5b8201601f8101841361231157600080fd5b61125784823560208401612261565b60006020828403121561233257600080fd5b610fce82612148565b6000806040838503121561234e57600080fd5b61235783612148565b91506020830135801515811461236c57600080fd5b809150509250929050565b6000806000806080858703121561238d57600080fd5b61239685612148565b93506123a460208601612148565b925060408501359150606085013567ffffffffffffffff8111156123c757600080fd5b8501601f810187136123d857600080fd5b6123e787823560208401612261565b91505092959194509250565b6000806040838503121561240657600080fd5b61240f83612148565b915061224260208401612148565b600181811c9082168061243157607f821691505b60208210810361245157634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526022908201527f546573746e667478797a3a2043616c6c6572206973206e6f742061206d696e7460408201526132b960f11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6000600182016124c1576124c1612499565b5060010190565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b8082018082111561057e5761057e612499565b808202811582820484141761057e5761057e612499565b60008261255c57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60208082526021908201527f546573746e667478797a3a2043616c6c6572206973206e6f7420612061646d696040820152603760f91b606082015260800190565b601f82111561075257600081815260208120601f850160051c810160208610156125df5750805b601f850160051c820191505b818110156125fe578281556001016125eb565b505050505050565b815167ffffffffffffffff8111156126205761262061224b565b6126348161262e845461241d565b846125b8565b602080601f83116001811461266957600084156126515750858301515b600019600386901b1c1916600185901b1785556125fe565b600085815260208120601f198616915b8281101561269857888601518255948401946001909101908401612679565b50858210156126b65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600083516126d88184602088016120cc565b8351908301906126ec8183602088016120cc565b01949350505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516127c48160178501602088016120cc565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516127f58160288401602088016120cc565b01602801949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612834908301846120f0565b9695505050505050565b60006020828403121561285057600080fd5b8151610fce81612099565b8181038181111561057e5761057e612499565b634e487b7160e01b600052603160045260246000fd5b60008161289357612893612499565b50600019019056fea264697066735822122082fec802ba63210e082a9652d768517e7bad76c3e188470f9d840aeadb4ea93364736f6c63430008120033454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c6164647265737320766572696679696e67436f6e74726163742c627974657333322073616c7429