UNPKG

@credenza-web3/contracts

Version:

Credenza Contracts

750 lines 54.6 kB
{ "_format": "hh-sol-artifact-1", "contractName": "AdDeComContract", "sourceName": "contracts/tokens/AdDeComContract.sol", "abi": [ { "inputs": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" } ], "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": false, "internalType": "uint256", "name": "_fromTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "_toTokenId", "type": "uint256" } ], "name": "BatchMetadataUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "MetadataUpdate", "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": [ { "internalType": "address", "name": "customerAddress", "type": "address" } ], "name": "addAuthorizedReseller", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "addOwner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "adminTransfer", "outputs": [], "stateMutability": "nonpayable", "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": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "clearOwners", "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": [], "name": "getDescription", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getOwners", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getTrustedForwarder", "outputs": [ { "internalType": "address", "name": "forwarder", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getVersion", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "pure", "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": "customerAddress", "type": "address" } ], "name": "isAuthorizedReseller", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "addr", "type": "address" } ], "name": "isOwner", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "forwarder", "type": "address" } ], "name": "isTrustedForwarder", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "string", "name": "tokenURI", "type": "string" } ], "name": "mint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": [], "name": "ownerRenderData", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "unitID", "type": "uint256" } ], "name": "readAdRenderData", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "readOwnerRenderData", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "readRenderData", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "customerAddress", "type": "address" } ], "name": "removeAuthorizedReseller", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "removeOwner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renderData", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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": "description", "type": "string" } ], "name": "setDescription", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_forwarder", "type": "address" } ], "name": "setTrustedForwarder", "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": [ { "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": "unitID", "type": "uint256" }, { "internalType": "string", "name": "HTMLstring", "type": "string" } ], "name": "writeAdRenderData", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "HTMLstring", "type": "string" } ], "name": "writeOwnerRenderData", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "HTMLstring", "type": "string" } ], "name": "writeRenderData", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ], "bytecode": "0x608060405234801562000010575f80fd5b506040516200284f3803806200284f833981016040819052620000339162000297565b818181815f62000044838262000389565b50600162000053828262000389565b505050620000706200006a6200007a60201b60201c565b6200008a565b5050505062000451565b5f62000085620001a4565b905090565b6008541580620000c05750620000c0620000a36200007a565b6001600160a01b03165f9081526007602052604090205460ff1690565b6200011c5760405162461bcd60e51b815260206004820152602260248201527f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f604482015261371760f11b606482015260840160405180910390fd5b6001600160a01b0381165f9081526007602052604090205460ff16620001a1576001600160a01b0381165f818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b03191690911790555b50565b5f60143610801590620001c15750600a546001600160a01b031633145b15620001d4575060131936013560601c90565b503390565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112620001fd575f80fd5b81516001600160401b03808211156200021a576200021a620001d9565b604051601f8301601f19908116603f01168101908282118183101715620002455762000245620001d9565b8160405283815260209250868385880101111562000261575f80fd5b5f91505b8382101562000284578582018301518183018401529082019062000265565b5f93810190920192909252949350505050565b5f8060408385031215620002a9575f80fd5b82516001600160401b0380821115620002c0575f80fd5b620002ce86838701620001ed565b93506020850151915080821115620002e4575f80fd5b50620002f385828601620001ed565b9150509250929050565b600181811c908216806200031257607f821691505b6020821081036200033157634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000384575f81815260208120601f850160051c810160208610156200035f5750805b601f850160051c820191505b8181101562000380578281556001016200036b565b5050505b505050565b81516001600160401b03811115620003a557620003a5620001d9565b620003bd81620003b68454620002fd565b8462000337565b602080601f831160018114620003f3575f8415620003db5750858301515b5f19600386901b1c1916600185901b17855562000380565b5f85815260208120601f198616915b82811015620004235788860151825594840194600190910190840162000402565b50858210156200044157878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b6123f0806200045f5f395ff3fe608060405234801561000f575f80fd5b5060043610610229575f3560e01c8063572b6c051161012a578063a0e67e2b116100b4578063ce1b815f11610079578063ce1b815f146104f9578063d0def5211461050a578063da7422281461051d578063e985e9c514610530578063f17e48ec1461056b575f80fd5b8063a0e67e2b146104a3578063a22cb465146104b8578063b88d4fde146104cb578063bb4a6a5d146104de578063c87b56dd146104e6575f80fd5b806370a08231116100fa57806370a082311461042957806390c3f38f1461044a57806395d89b411461045d578063973e132c146104655780639eda8aae14610478575f80fd5b8063572b6c05146103ce5780636352211e146103f05780637065cb48146104035780637075c26914610416575f80fd5b80631a092541116101b6578063331e29f41161017b578063331e29f41461037a5780633c695e391461038d57806342842e0e146103a057806342966c68146103b35780635260f5e6146103c6575f80fd5b80631a092541146103195780631df5c02c1461032157806323b872dd1461033457806324c85a09146103475780632f54bf6e1461034f575f80fd5b8063081812fc116101fc578063081812fc1461027a578063095ea7b3146102a55780630d8e6e2c146102ba5780631378bd93146102f3578063173825d914610306575f80fd5b806301ffc9a71461022d578063055789b71461025557806305cb3d7e1461026a57806306fdde0314610272575b5f80fd5b61024061023b366004611cc4565b61057e565b60405190151581526020015b60405180910390f35b61025d6105a8565b60405161024c9190611d2c565b61025d610634565b61025d6106e3565b61028d610288366004611d3e565b6106f1565b6040516001600160a01b03909116815260200161024c565b6102b86102b3366004611d70565b610716565b005b60408051808201909152601781527f41644465436f6d436f6e7472616374207620302e302e31000000000000000000602082015261025d565b61025d610301366004611d3e565b610841565b6102b8610314366004611d98565b6108e0565b61025d6109a5565b6102b861032f366004611d98565b6109b4565b6102b8610342366004611db1565b610a05565b61025d610a3d565b61024061035d366004611d98565b6001600160a01b03165f9081526007602052604090205460ff1690565b6102b8610388366004611e8f565b610a4c565b6102b861039b366004611d98565b610a8d565b6102b86103ae366004611db1565b610ae1565b6102b86103c1366004611d3e565b610afb565b6102b8610b35565b6102406103dc366004611d98565b600a546001600160a01b0391821691161490565b61028d6103fe366004611d3e565b610bdc565b6102b8610411366004611d98565b610c3b565b6102b8610424366004611e8f565b610cf0565b61043c610437366004611d98565b610d2d565b60405190815260200161024c565b6102b8610458366004611e8f565b610db1565b61025d610dee565b6102b8610473366004611ec1565b610dfd565b610240610486366004611d98565b6001600160a01b03165f908152600e602052604090205460ff1690565b6104ab610e45565b60405161024c9190611f05565b6102b86104c6366004611f51565b610ea4565b6102b86104d9366004611f8a565b610eb6565b61025d610ef5565b61025d6104f4366004611d3e565b610f02565b600a546001600160a01b031661028d565b61043c610518366004612001565b61100c565b6102b861052b366004611d98565b611074565b61024061053e366004612036565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b6102b8610579366004611d70565b6110c3565b5f6001600160e01b03198216632483248360e11b14806105a257506105a282611116565b92915050565b600d80546105b590612067565b80601f01602080910402602001604051908101604052809291908181526020018280546105e190612067565b801561062c5780601f106106035761010080835404028352916020019161062c565b820191905f5260205f20905b81548152906001019060200180831161060f57829003601f168201915b505050505081565b60605f610642610437611165565b11156106d657600d805461065590612067565b80601f016020809104026020016040519081016040528092919081815260200182805461068190612067565b80156106cc5780601f106106a3576101008083540402835291602001916106cc565b820191905f5260205f20905b8154815290600101906020018083116106af57829003601f168201915b5050505050905090565b600c805461065590612067565b60605f805461065590612067565b5f6106fb82611173565b505f908152600460205260409020546001600160a01b031690565b5f61072082610bdc565b9050806001600160a01b0316836001600160a01b0316036107925760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b03166107a4611165565b6001600160a01b031614806107c057506107c08161053e611165565b6108325760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610789565b61083c83836111d1565b505050565b5f818152600f6020526040902080546060919061085d90612067565b80601f016020809104026020016040519081016040528092919081815260200182805461088990612067565b80156108d45780601f106108ab576101008083540402835291602001916108d4565b820191905f5260205f20905b8154815290600101906020018083116108b757829003601f168201915b50505050509050919050565b60085415806108f557506108f561035d611165565b6109115760405162461bcd60e51b81526004016107899061209f565b6001600160a01b0381165f9081526007602052604090205460ff166109785760405162461bcd60e51b815260206004820152601e60248201527f5461726765742061646472657373206973206e6f7420616e206f776e657200006044820152606401610789565b6001600160a01b0381165f908152600760205260409020805460ff191690556109a260088261123e565b50565b60606009805461065590612067565b60085415806109c957506109c961035d611165565b6109e55760405162461bcd60e51b81526004016107899061209f565b6001600160a01b03165f908152600e60205260409020805460ff19169055565b610a16610a10611165565b8261133d565b610a325760405162461bcd60e51b8152600401610789906120e1565b61083c8383836113b9565b6060600d805461065590612067565b6008541580610a615750610a6161035d611165565b610a7d5760405162461bcd60e51b81526004016107899061209f565b600d610a89828261217b565b5050565b6008541580610aa25750610aa261035d611165565b610abe5760405162461bcd60e51b81526004016107899061209f565b6001600160a01b03165f908152600e60205260409020805460ff19166001179055565b61083c83838360405180602001604052805f815250610eb6565b6008541580610b105750610b1061035d611165565b610b2c5760405162461bcd60e51b81526004016107899061209f565b6109a28161151b565b6008541580610b4a5750610b4a61035d611165565b610b665760405162461bcd60e51b81526004016107899061209f565b5f5b600854811015610bce575f60075f60088481548110610b8957610b89612237565b5f918252602080832091909101546001600160a01b031683528201929092526040019020805460ff191691151591909117905580610bc68161225f565b915050610b68565b50610bda60085f611c49565b565b5f818152600260205260408120546001600160a01b0316806105a25760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610789565b6008541580610c505750610c5061035d611165565b610c6c5760405162461bcd60e51b81526004016107899061209f565b6001600160a01b0381165f9081526007602052604090205460ff166109a2576001600160a01b03165f818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6008541580610d055750610d0561035d611165565b610d215760405162461bcd60e51b81526004016107899061209f565b600c610a89828261217b565b5f6001600160a01b038216610d965760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610789565b506001600160a01b03165f9081526003602052604090205490565b6008541580610dc65750610dc661035d611165565b610de25760405162461bcd60e51b81526004016107899061209f565b6009610a89828261217b565b60606001805461065590612067565b6008541580610e125750610e1261035d611165565b610e2e5760405162461bcd60e51b81526004016107899061209f565b5f828152600f6020526040902061083c828261217b565b606060088054806020026020016040519081016040528092919081815260200182805480156106cc57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610e7d575050505050905090565b610a89610eaf611165565b8383611559565b610ec7610ec1611165565b8361133d565b610ee35760405162461bcd60e51b8152600401610789906120e1565b610eef84848484611626565b50505050565b600c80546105b590612067565b6060610f0d82611173565b5f8281526006602052604081208054610f2590612067565b80601f0160208091040260200160405190810160405280929190818152602001828054610f5190612067565b8015610f9c5780601f10610f7357610100808354040283529160200191610f9c565b820191905f5260205f20905b815481529060010190602001808311610f7f57829003601f168201915b505050505090505f610fb860408051602081019091525f815290565b905080515f03610fc9575092915050565b815115610ffb578082604051602001610fe3929190612277565b60405160208183030381529060405292505050919050565b61100484611659565b949350505050565b6008545f901580611023575061102361035d611165565b61103f5760405162461bcd60e51b81526004016107899061209f565b61104d600b80546001019055565b5f611057600b5490565b905061106384826116c8565b61106d8184611850565b9392505050565b6008541580611089575061108961035d611165565b6110a55760405162461bcd60e51b81526004016107899061209f565b600a80546001600160a01b0319166001600160a01b03831617905550565b60085415806110d857506110d861035d611165565b6110f45760405162461bcd60e51b81526004016107899061209f565b610a8961110082610bdc565b838360405180602001604052805f815250611626565b5f6001600160e01b031982166380ac58cd60e01b148061114657506001600160e01b03198216635b5e139f60e01b145b806105a257506301ffc9a760e01b6001600160e01b03198316146105a2565b5f61116e611919565b905090565b5f818152600260205260409020546001600160a01b03166109a25760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610789565b5f81815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061120582610bdc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b5f5b825481101561083c57816001600160a01b031683828154811061126557611265612237565b5f918252602090912001546001600160a01b03160361132b578254839061128e906001906122a5565b8154811061129e5761129e612237565b905f5260205f20015f9054906101000a90046001600160a01b03168382815481106112cb576112cb612237565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555082805480611306576113066122b8565b5f8281526020902081015f1990810180546001600160a01b0319169055019055505050565b806113358161225f565b915050611240565b5f8061134883610bdc565b9050806001600160a01b0316846001600160a01b0316148061138e57506001600160a01b038082165f9081526005602090815260408083209388168352929052205460ff165b806110045750836001600160a01b03166113a7846106f1565b6001600160a01b031614949350505050565b826001600160a01b03166113cc82610bdc565b6001600160a01b0316146113f25760405162461bcd60e51b8152600401610789906122cc565b6001600160a01b0382166114545760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610789565b826001600160a01b031661146782610bdc565b6001600160a01b03161461148d5760405162461bcd60e51b8152600401610789906122cc565b5f81815260046020908152604080832080546001600160a01b03199081169091556001600160a01b038781168086526003855283862080545f1901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6115248161194c565b5f818152600660205260409020805461153c90612067565b1590506109a2575f8181526006602052604081206109a291611c64565b816001600160a01b0316836001600160a01b0316036115ba5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610789565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6116318484846113b9565b61163d848484846119de565b610eef5760405162461bcd60e51b815260040161078990612311565b606061166482611173565b5f61167960408051602081019091525f815290565b90505f8151116116975760405180602001604052805f81525061106d565b806116a184611ae2565b6040516020016116b2929190612277565b6040516020818303038152906040529392505050565b6001600160a01b03821661171e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610789565b5f818152600260205260409020546001600160a01b0316156117825760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610789565b5f818152600260205260409020546001600160a01b0316156117e65760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610789565b6001600160a01b0382165f81815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b5f828152600260205260409020546001600160a01b03166118ca5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b6064820152608401610789565b5f8281526006602052604090206118e1828261217b565b506040518281527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a15050565b5f601436108015906119355750600a546001600160a01b031633145b15611947575060131936013560601c90565b503390565b5f61195682610bdc565b905061196182610bdc565b5f83815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526003845282852080545f190190558785526002909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b5f6001600160a01b0384163b15611ad757836001600160a01b031663150b7a02611a06611165565b8786866040518563ffffffff1660e01b8152600401611a289493929190612363565b6020604051808303815f875af1925050508015611a62575060408051601f3d908101601f19168201909252611a5f9181019061239f565b60015b611abd573d808015611a8f576040519150601f19603f3d011682016040523d82523d5f602084013e611a94565b606091505b5080515f03611ab55760405162461bcd60e51b815260040161078990612311565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611004565b506001949350505050565b60605f611aee83611b72565b60010190505f8167ffffffffffffffff811115611b0d57611b0d611dea565b6040519080825280601f01601f191660200182016040528015611b37576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084611b4157509392505050565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611bb05772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611bdc576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611bfa57662386f26fc10000830492506010015b6305f5e1008310611c12576305f5e100830492506008015b6127108310611c2657612710830492506004015b60648310611c38576064830492506002015b600a83106105a25760010192915050565b5080545f8255905f5260205f20908101906109a29190611c97565b508054611c7090612067565b5f825580601f10611c7f575050565b601f0160209004905f5260205f20908101906109a291905b5b80821115611cab575f8155600101611c98565b5090565b6001600160e01b0319811681146109a2575f80fd5b5f60208284031215611cd4575f80fd5b813561106d81611caf565b5f5b83811015611cf9578181015183820152602001611ce1565b50505f910152565b5f8151808452611d18816020860160208601611cdf565b601f01601f19169290920160200192915050565b602081525f61106d6020830184611d01565b5f60208284031215611d4e575f80fd5b5035919050565b80356001600160a01b0381168114611d6b575f80fd5b919050565b5f8060408385031215611d81575f80fd5b611d8a83611d55565b946020939093013593505050565b5f60208284031215611da8575f80fd5b61106d82611d55565b5f805f60608486031215611dc3575f80fd5b611dcc84611d55565b9250611dda60208501611d55565b9150604084013590509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f67ffffffffffffffff80841115611e1857611e18611dea565b604051601f8501601f19908116603f01168101908282118183101715611e4057611e40611dea565b81604052809350858152868686011115611e58575f80fd5b858560208301375f602087830101525050509392505050565b5f82601f830112611e80575f80fd5b61106d83833560208501611dfe565b5f60208284031215611e9f575f80fd5b813567ffffffffffffffff811115611eb5575f80fd5b61100484828501611e71565b5f8060408385031215611ed2575f80fd5b82359150602083013567ffffffffffffffff811115611eef575f80fd5b611efb85828601611e71565b9150509250929050565b602080825282518282018190525f9190848201906040850190845b81811015611f455783516001600160a01b031683529284019291840191600101611f20565b50909695505050505050565b5f8060408385031215611f62575f80fd5b611f6b83611d55565b915060208301358015158114611f7f575f80fd5b809150509250929050565b5f805f8060808587031215611f9d575f80fd5b611fa685611d55565b9350611fb460208601611d55565b925060408501359150606085013567ffffffffffffffff811115611fd6575f80fd5b8501601f81018713611fe6575f80fd5b611ff587823560208401611dfe565b91505092959194509250565b5f8060408385031215612012575f80fd5b61201b83611d55565b9150602083013567ffffffffffffffff811115611eef575f80fd5b5f8060408385031215612047575f80fd5b61205083611d55565b915061205e60208401611d55565b90509250929050565b600181811c9082168061207b57607f821691505b60208210810361209957634e487b7160e01b5f52602260045260245ffd5b50919050565b60208082526022908201527f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f604082015261371760f11b606082015260800190565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b601f82111561083c575f81815260208120601f850160051c810160208610156121545750805b601f850160051c820191505b8181101561217357828155600101612160565b505050505050565b815167ffffffffffffffff81111561219557612195611dea565b6121a9816121a38454612067565b8461212e565b602080601f8311600181146121dc575f84156121c55750858301515b5f19600386901b1c1916600185901b178555612173565b5f85815260208120601f198616915b8281101561220a578886015182559484019460019091019084016121eb565b508582101561222757878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600182016122705761227061224b565b5060010190565b5f8351612288818460208801611cdf565b83519083019061229c818360208801611cdf565b01949350505050565b818103818111156105a2576105a261224b565b634e487b7160e01b5f52603160045260245ffd5b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f9061239590830184611d01565b9695505050505050565b5f602082840312156123af575f80fd5b815161106d81611caf56fea2646970667358221220bd64da08757f919e92ca1b9dfae502bc4dc1a55656dae9c7d83c2ffffd5a5ffd64736f6c63430008140033", "deployedBytecode": "0x608060405234801561000f575f80fd5b5060043610610229575f3560e01c8063572b6c051161012a578063a0e67e2b116100b4578063ce1b815f11610079578063ce1b815f146104f9578063d0def5211461050a578063da7422281461051d578063e985e9c514610530578063f17e48ec1461056b575f80fd5b8063a0e67e2b146104a3578063a22cb465146104b8578063b88d4fde146104cb578063bb4a6a5d146104de578063c87b56dd146104e6575f80fd5b806370a08231116100fa57806370a082311461042957806390c3f38f1461044a57806395d89b411461045d578063973e132c146104655780639eda8aae14610478575f80fd5b8063572b6c05146103ce5780636352211e146103f05780637065cb48146104035780637075c26914610416575f80fd5b80631a092541116101b6578063331e29f41161017b578063331e29f41461037a5780633c695e391461038d57806342842e0e146103a057806342966c68146103b35780635260f5e6146103c6575f80fd5b80631a092541146103195780631df5c02c1461032157806323b872dd1461033457806324c85a09146103475780632f54bf6e1461034f575f80fd5b8063081812fc116101fc578063081812fc1461027a578063095ea7b3146102a55780630d8e6e2c146102ba5780631378bd93146102f3578063173825d914610306575f80fd5b806301ffc9a71461022d578063055789b71461025557806305cb3d7e1461026a57806306fdde0314610272575b5f80fd5b61024061023b366004611cc4565b61057e565b60405190151581526020015b60405180910390f35b61025d6105a8565b60405161024c9190611d2c565b61025d610634565b61025d6106e3565b61028d610288366004611d3e565b6106f1565b6040516001600160a01b03909116815260200161024c565b6102b86102b3366004611d70565b610716565b005b60408051808201909152601781527f41644465436f6d436f6e7472616374207620302e302e31000000000000000000602082015261025d565b61025d610301366004611d3e565b610841565b6102b8610314366004611d98565b6108e0565b61025d6109a5565b6102b861032f366004611d98565b6109b4565b6102b8610342366004611db1565b610a05565b61025d610a3d565b61024061035d366004611d98565b6001600160a01b03165f9081526007602052604090205460ff1690565b6102b8610388366004611e8f565b610a4c565b6102b861039b366004611d98565b610a8d565b6102b86103ae366004611db1565b610ae1565b6102b86103c1366004611d3e565b610afb565b6102b8610b35565b6102406103dc366004611d98565b600a546001600160a01b0391821691161490565b61028d6103fe366004611d3e565b610bdc565b6102b8610411366004611d98565b610c3b565b6102b8610424366004611e8f565b610cf0565b61043c610437366004611d98565b610d2d565b60405190815260200161024c565b6102b8610458366004611e8f565b610db1565b61025d610dee565b6102b8610473366004611ec1565b610dfd565b610240610486366004611d98565b6001600160a01b03165f908152600e602052604090205460ff1690565b6104ab610e45565b60405161024c9190611f05565b6102b86104c6366004611f51565b610ea4565b6102b86104d9366004611f8a565b610eb6565b61025d610ef5565b61025d6104f4366004611d3e565b610f02565b600a546001600160a01b031661028d565b61043c610518366004612001565b61100c565b6102b861052b366004611d98565b611074565b61024061053e366004612036565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b6102b8610579366004611d70565b6110c3565b5f6001600160e01b03198216632483248360e11b14806105a257506105a282611116565b92915050565b600d80546105b590612067565b80601f01602080910402602001604051908101604052809291908181526020018280546105e190612067565b801561062c5780601f106106035761010080835404028352916020019161062c565b820191905f5260205f20905b81548152906001019060200180831161060f57829003601f168201915b505050505081565b60605f610642610437611165565b11156106d657600d805461065590612067565b80601f016020809104026020016040519081016040528092919081815260200182805461068190612067565b80156106cc5780601f106106a3576101008083540402835291602001916106cc565b820191905f5260205f20905b8154815290600101906020018083116106af57829003601f168201915b5050505050905090565b600c805461065590612067565b60605f805461065590612067565b5f6106fb82611173565b505f908152600460205260409020546001600160a01b031690565b5f61072082610bdc565b9050806001600160a01b0316836001600160a01b0316036107925760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b03166107a4611165565b6001600160a01b031614806107c057506107c08161053e611165565b6108325760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610789565b61083c83836111d1565b505050565b5f818152600f6020526040902080546060919061085d90612067565b80601f016020809104026020016040519081016040528092919081815260200182805461088990612067565b80156108d45780601f106108ab576101008083540402835291602001916108d4565b820191905f5260205f20905b8154815290600101906020018083116108b757829003601f168201915b50505050509050919050565b60085415806108f557506108f561035d611165565b6109115760405162461bcd60e51b81526004016107899061209f565b6001600160a01b0381165f9081526007602052604090205460ff166109785760405162461bcd60e51b815260206004820152601e60248201527f5461726765742061646472657373206973206e6f7420616e206f776e657200006044820152606401610789565b6001600160a01b0381165f908152600760205260409020805460ff191690556109a260088261123e565b50565b60606009805461065590612067565b60085415806109c957506109c961035d611165565b6109e55760405162461bcd60e51b81526004016107899061209f565b6001600160a01b03165f908152600e60205260409020805460ff19169055565b610a16610a10611165565b8261133d565b610a325760405162461bcd60e51b8152600401610789906120e1565b61083c8383836113b9565b6060600d805461065590612067565b6008541580610a615750610a6161035d611165565b610a7d5760405162461bcd60e51b81526004016107899061209f565b600d610a89828261217b565b5050565b6008541580610aa25750610aa261035d611165565b610abe5760405162461bcd60e51b81526004016107899061209f565b6001600160a01b03165f908152600e60205260409020805460ff19166001179055565b61083c83838360405180602001604052805f815250610eb6565b6008541580610b105750610b1061035d611165565b610b2c5760405162461bcd60e51b81526004016107899061209f565b6109a28161151b565b6008541580610b4a5750610b4a61035d611165565b610b665760405162461bcd60e51b81526004016107899061209f565b5f5b600854811015610bce575f60075f60088481548110610b8957610b89612237565b5f918252602080832091909101546001600160a01b031683528201929092526040019020805460ff191691151591909117905580610bc68161225f565b915050610b68565b50610bda60085f611c49565b565b5f818152600260205260408120546001600160a01b0316806105a25760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610789565b6008541580610c505750610c5061035d611165565b610c6c5760405162461bcd60e51b81526004016107899061209f565b6001600160a01b0381165f9081526007602052604090205460ff166109a2576001600160a01b03165f818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6008541580610d055750610d0561035d611165565b610d215760405162461bcd60e51b81526004016107899061209f565b600c610a89828261217b565b5f6001600160a01b038216610d965760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610789565b506001600160a01b03165f9081526003602052604090205490565b6008541580610dc65750610dc661035d611165565b610de25760405162461bcd60e51b81526004016107899061209f565b6009610a89828261217b565b60606001805461065590612067565b6008541580610e125750610e1261035d611165565b610e2e5760405162461bcd60e51b81526004016107899061209f565b5f828152600f6020526040902061083c828261217b565b606060088054806020026020016040519081016040528092919081815260200182805480156106cc57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610e7d575050505050905090565b610a89610eaf611165565b8383611559565b610ec7610ec1611165565b8361133d565b610ee35760405162461bcd60e51b8152600401610789906120e1565b610eef84848484611626565b50505050565b600c80546105b590612067565b6060610f0d82611173565b5f8281526006602052604081208054610f2590612067565b80601f0160208091040260200160405190810160405280929190818152602001828054610f5190612067565b8015610f9c5780601f10610f7357610100808354040283529160200191610f9c565b820191905f5260205f20905b815481529060010190602001808311610f7f57829003601f168201915b505050505090505f610fb860408051602081019091525f815290565b905080515f03610fc9575092915050565b815115610ffb578082604051602001610fe3929190612277565b60405160208183030381529060405292505050919050565b61100484611659565b949350505050565b6008545f901580611023575061102361035d611165565b61103f5760405162461bcd60e51b81526004016107899061209f565b61104d600b80546001019055565b5f611057600b5490565b905061106384826116c8565b61106d8184611850565b9392505050565b6008541580611089575061108961035d611165565b6110a55760405162461bcd60e51b81526004016107899061209f565b600a80546001600160a01b0319166001600160a01b03831617905550565b60085415806110d857506110d861035d611165565b6110f45760405162461bcd60e51b81526004016107899061209f565b610a8961110082610bdc565b838360405180602001604052805f815250611626565b5f6001600160e01b031982166380ac58cd60e01b148061114657506001600160e01b03198216635b5e139f60e01b145b806105a257506301ffc9a760e01b6001600160e01b03198316146105a2565b5f61116e611919565b905090565b5f818152600260205260409020546001600160a01b03166109a25760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610789565b5f81815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061120582610bdc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b5f5b825481101561083c57816001600160a01b031683828154811061126557611265612237565b5f918252602090912001546001600160a01b03160361132b578254839061128e906001906122a5565b8154811061129e5761129e612237565b905f5260205f20015f9054906101000a90046001600160a01b03168382815481106112cb576112cb612237565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555082805480611306576113066122b8565b5f8281526020902081015f1990810180546001600160a01b0319169055019055505050565b806113358161225f565b915050611240565b5f8061134883610bdc565b9050806001600160a01b0316846001600160a01b0316148061138e57506001600160a01b038082165f9081526005602090815260408083209388168352929052205460ff165b806110045750836001600160a01b03166113a7846106f1565b6001600160a01b031614949350505050565b826001600160a01b03166113cc82610bdc565b6001600160a01b0316146113f25760405162461bcd60e51b8152600401610789906122cc565b6001600160a01b0382166114545760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610789565b826001600160a01b031661146782610bdc565b6001600160a01b03161461148d5760405162461bcd60e51b8152600401610789906122cc565b5f81815260046020908152604080832080546001600160a01b03199081169091556001600160a01b038781168086526003855283862080545f1901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6115248161194c565b5f818152600660205260409020805461153c90612067565b1590506109a2575f8181526006602052604081206109a291611c64565b816001600160a01b0316836001600160a01b0316036115ba5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610789565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6116318484846113b9565b61163d848484846119de565b610eef5760405162461bcd60e51b815260040161078990612311565b606061166482611173565b5f61167960408051602081019091525f815290565b90505f8151116116975760405180602001604052805f81525061106d565b806116a184611ae2565b6040516020016116b2929190612277565b6040516020818303038152906040529392505050565b6001600160a01b03821661171e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610789565b5f818152600260205260409020546001600160a01b0316156117825760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610789565b5f818152600260205260409020546001600160a01b0316156117e65760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610789565b6001600160a01b0382165f81815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b5f828152600260205260409020546001600160a01b03166118ca5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b6064820152608401610789565b5f8281526006602052604090206118e1828261217b565b506040518281527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a15050565b5f601436108015906119355750600a546001600160a01b031633145b15611947575060131936013560601c90565b503390565b5f61195682610bdc565b905061196182610bdc565b5f83815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526003845282852080545f190190558785526002909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b5f6001600160a01b0384163b15611ad757836001600160a01b031663150b7a02611a06611165565b8786866040518563ffffffff1660e01b8152600401611a289493929190612363565b6020604051808303815f875af1925050508015611a62575060408051601f3d908101601f19168201909252611a5f9181019061239f565b60015b611abd573d808015611a8f576040519150601f19603f3d011682016040523d82523d5f602084013e611a94565b606091505b5080515f03611ab55760405162461bcd60e51b815260040161078990612311565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611004565b506001949350505050565b60605f611aee83611b72565b60010190505f8167ffffffffffffffff811115611b0d57611b0d611dea565b6040519080825280601f01601f191660200182016040528015611b3