UNPKG

@credenza-web3/contracts

Version:

Credenza Contracts

1,250 lines 84 kB
{ "_format": "hh-sol-artifact-1", "contractName": "SellableDeComContract", "sourceName": "contracts/tokens/SellableDeComContract.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": 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": "contractAddress", "type": "address" } ], "name": "addAvailableCurrencyTokenContract", "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": "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": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "requestedAmount", "type": "uint256" }, { "internalType": "address", "name": "recipient", "type": "address" } ], "name": "buyWithEther", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "requestedAmount", "type": "uint256" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "address", "name": "currencyTokenContract", "type": "address" } ], "name": "buyWithToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "requestedAmount", "type": "uint256" }, { "internalType": "address", "name": "recipient", "type": "address" } ], "name": "buyWithToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "clearOwners", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decreaseAvailableMintForSaleAmount", "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": "getAvailableCurrencyTokenContractsList", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getAvailableMintForSaleAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getBeneficiaryAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getDefaultCurrencyTokenContract", "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": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "getPriceEther", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "getPriceFiat", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "currencyContract", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "getPriceToken", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "getPriceToken", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": [], "name": "image", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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": "customerAddress", "type": "address" } ], "name": "isAuthorizedReseller", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "contractAddress", "type": "address" } ], "name": "isAvailableCurrencyTokenContract", "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": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mintBatch", "outputs": [ { "internalType": "uint256[]", "name": "arr", "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": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "ownerTransfer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "readGuestRenderData", "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": "contractAddress", "type": "address" } ], "name": "removeAvailableCurrencyTokenContract", "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": "uint256", "name": "amount", "type": "uint256" } ], "name": "setAvailableMintForSaleAmount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "uri", "type": "string" } ], "name": "setBaseUri", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address payable", "name": "addr", "type": "address" } ], "name": "setBeneficiaryAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenContract", "type": "address" } ], "name": "setDefaultCurrencyTokenContractAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "description", "type": "string" } ], "name": "setDescription", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "newImage", "type": "string" } ], "name": "setImage", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "newName", "type": "string" } ], "name": "setName", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "setOwner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "price", "type": "uint256" } ], "name": "setPriceEther", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "price", "type": "uint256" } ], "name": "setPriceFiat", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "price", "type": "uint256" } ], "name": "setPriceToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "currencyContract", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "price", "type": "uint256" } ], "name": "setPriceToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "newSymbol", "type": "string" } ], "name": "setSymbol", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "string", "name": "_tokenURI", "type": "string" } ], "name": "setTokenURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "index", "type": "uint256" }, { "internalType": "string", "name": "_tokenURI", "type": "string" } ], "name": "setTokenURIByIndex", "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": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenURIByIndex", "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": "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": "0x608060405234801562000010575f80fd5b5060405162003abf38038062003abf8339810160408190526200003391620002b1565b818181815f620000448382620003a3565b506001620000538282620003a3565b50601491506200006690508382620003a3565b506015620000758282620003a3565b506200008a6200008462000094565b620000a4565b505050506200046b565b5f6200009f620001be565b905090565b6007541580620000da5750620000da620000bd62000094565b6001600160a01b03165f9081526006602052604090205460ff1690565b620001365760405162461bcd60e51b815260206004820152602260248201527f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f604482015261371760f11b606482015260840160405180910390fd5b6001600160a01b0381165f9081526006602052604090205460ff16620001bb576001600160a01b0381165f818152600660205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b03191690911790555b50565b5f60143610801590620001db57506009546001600160a01b031633145b15620001ee575060131936013560601c90565b503390565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011262000217575f80fd5b81516001600160401b0380821115620002345762000234620001f3565b604051601f8301601f19908116603f011681019082821181831017156200025f576200025f620001f3565b816040528381526020925086838588010111156200027b575f80fd5b5f91505b838210156200029e57858201830151818301840152908201906200027f565b5f93810190920192909252949350505050565b5f8060408385031215620002c3575f80fd5b82516001600160401b0380821115620002da575f80fd5b620002e88683870162000207565b93506020850151915080821115620002fe575f80fd5b506200030d8582860162000207565b9150509250929050565b600181811c908216806200032c57607f821691505b6020821081036200034b57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200039e575f81815260208120601f850160051c81016020861015620003795750805b601f850160051c820191505b818110156200039a5782815560010162000385565b5050505b505050565b81516001600160401b03811115620003bf57620003bf620001f3565b620003d781620003d0845462000317565b8462000351565b602080601f8311600181146200040d575f8415620003f55750858301515b5f19600386901b1c1916600185901b1785556200039a565b5f85815260208120601f198616915b828110156200043d578886015182559484019460019091019084016200041c565b50858210156200045b57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b61364680620004795f395ff3fe6080604052600436106103ea575f3560e01c80637065cb481161020a578063b68de9741161011e578063d1eff895116100a8578063e1461f1211610078578063e1461f1214610bfa578063e4c4507714610c25578063e985e9c514610c44578063ec6be06e14610c8b578063f3ccaac014610caa575f80fd5b8063d1eff89514610b80578063d36223f114610b9d578063d93f5bed14610bbc578063da74222814610bdb575f80fd5b8063c47f0027116100ee578063c47f002714610ae7578063c87b56dd14610b06578063ce1b815f14610b25578063d0def52114610b42578063d114c9dc14610b61575f80fd5b8063b68de97414610a5e578063b84c824614610a95578063b88d4fde14610ab4578063bb4a6a5d14610ad3575f80fd5b806388d0f86a1161019f578063a0bcfc7f1161016f578063a0bcfc7f146109c2578063a0e67e2b146109e1578063a22cb465146109f5578063adfadad314610a14578063b33a599f14610a3f575f80fd5b806388d0f86a1461093957806390c3f38f1461095857806395d89b41146109775780639eda8aae1461098b575f80fd5b8063724e5c17116101da578063724e5c17146108c75780637fd39247146108e65780638003e27f1461090557806380dc439e14610926575f80fd5b80637065cb481461084b5780637075c2691461086a57806370a082311461088957806371adb5e6146108a8575f80fd5b8063248b71fc116103015780633d6f563f1161029657806346dfdd691161026657806346dfdd69146107b75780635260f5e6146107cb578063572b6c05146107df578063578680be1461080d5780636352211e1461082c575f80fd5b80633d6f563f1461073b5780633de4fdc81461075a57806342842e0e1461077957806342966c6814610798575f80fd5b80632f54bf6e116102d15780632f54bf6e146106a7578063331e29f4146106de5780633a932dba146106fd5780633c695e391461071c575f80fd5b8063248b71fc1461063457806324c85a0914610660578063253d20861461067457806326d2741614610693575f80fd5b8063162094c411610382578063177ed0f311610352578063177ed0f3146105a45780631a092541146105c35780631abe7cb3146105d75780631df5c02c146105f657806323b872dd14610615575f80fd5b8063162094c41461053557806316bef59614610554578063173825d91461057157806317422c9d14610590575f80fd5b806306fdde03116103bd57806306fdde0314610484578063081812fc14610498578063095ea7b3146104cf5780630d8e6e2c146104f0575f80fd5b806301ffc9a7146103ee578063031f5c8714610422578063055789b71461044f57806305cb3d7e14610470575b5f80fd5b3480156103f9575f80fd5b5061040d610408366004612ccc565b610cbe565b60405190151581526020015b60405180910390f35b34801561042d575f80fd5b5061044161043c366004612cfb565b610d0f565b604051908152602001610419565b34801561045a575f80fd5b50610463610d36565b6040516104199190612d72565b34801561047b575f80fd5b50610463610dc2565b34801561048f575f80fd5b50610463610e71565b3480156104a3575f80fd5b506104b76104b2366004612d84565b610e80565b6040516001600160a01b039091168152602001610419565b3480156104da575f80fd5b506104ee6104e9366004612cfb565b610ea5565b005b3480156104fb575f80fd5b5060408051808201909152601d81527f53656c6c61626c654465436f6d436f6e7472616374207620302e322e300000006020820152610463565b348015610540575f80fd5b506104ee61054f366004612e40565b610fd0565b34801561055f575f80fd5b50600d546001600160a01b03166104b7565b34801561057c575f80fd5b506104ee61058b366004612e84565b611010565b34801561059b575f80fd5b50601754610441565b3480156105af575f80fd5b506104416105be366004612d84565b6110d5565b3480156105ce575f80fd5b506104636110ed565b3480156105e2575f80fd5b506104ee6105f1366004612e9f565b6110fc565b348015610601575f80fd5b506104ee610610366004612e84565b61113e565b348015610620575f80fd5b506104ee61062f366004612ebf565b61118f565b34801561063f575f80fd5b5061065361064e366004612cfb565b6111c7565b6040516104199190612efd565b34801561066b575f80fd5b506104636112a6565b34801561067f575f80fd5b506104ee61068e366004612d84565b6112b5565b34801561069e575f80fd5b506104636112eb565b3480156106b2575f80fd5b5061040d6106c1366004612e84565b6001600160a01b03165f9081526006602052604090205460ff1690565b3480156106e9575f80fd5b506104ee6106f8366004612f40565b6112fa565b348015610708575f80fd5b506104ee610717366004612e84565b611337565b348015610727575f80fd5b506104ee610736366004612e84565b61138c565b348015610746575f80fd5b506104ee610755366004612f72565b6113e0565b348015610765575f80fd5b506104ee610774366004612e84565b61141c565b348015610784575f80fd5b506104ee610793366004612ebf565b6114d1565b3480156107a3575f80fd5b506104ee6107b2366004612d84565b6114eb565b3480156107c2575f80fd5b506104ee611525565b3480156107d6575f80fd5b506104ee61156c565b3480156107ea575f80fd5b5061040d6107f9366004612e84565b6009546001600160a01b0391821691161490565b348015610818575f80fd5b506104ee610827366004612e9f565b611613565b348015610837575f80fd5b506104b7610846366004612d84565b61165b565b348015610856575f80fd5b506104ee610865366004612e84565b6116ba565b348015610875575f80fd5b506104ee610884366004612f40565b61176f565b348015610894575f80fd5b506104416108a3366004612e84565b6117ac565b3480156108b3575f80fd5b506104ee6108c2366004612f40565b611830565b3480156108d2575f80fd5b506104ee6108e1366004612fbe565b61186d565b3480156108f1575f80fd5b506104ee610900366004613005565b6118aa565b348015610910575f80fd5b506109196118fd565b6040516104199190613033565b6104ee610934366004613073565b61195c565b348015610944575f80fd5b506104ee610953366004612e9f565b611a58565b348015610963575f80fd5b506104ee610972366004612f40565b611a9a565b348015610982575f80fd5b50610463611ad7565b348015610996575f80fd5b5061040d6109a5366004612e84565b6001600160a01b03165f908152601a602052604090205460ff1690565b3480156109cd575f80fd5b506104ee6109dc366004612f40565b611ae6565b3480156109ec575f80fd5b50610919611b23565b348015610a00575f80fd5b506104ee610a0f3660046130b6565b611b81565b348015610a1f575f80fd5b50610441610a2e366004612d84565b5f908152600b602052604090205490565b348015610a4a575f80fd5b506104ee610a59366004612e84565b611b93565b348015610a69575f80fd5b5061040d610a78366004612e84565b6001600160a01b03165f908152600e602052604090205460ff1690565b348015610aa0575f80fd5b506104ee610aaf366004612f40565b611c55565b348015610abf575f80fd5b506104ee610ace3660046130e2565b611c92565b348015610ade575f80fd5b50610463611ccb565b348015610af2575f80fd5b506104ee610b01366004612f40565b611cd8565b348015610b11575f80fd5b50610463610b20366004612d84565b611d15565b348015610b30575f80fd5b506009546001600160a01b03166104b7565b348015610b4d575f80fd5b50610441610b5c36600461315d565b611e14565b348015610b6c575f80fd5b506104ee610b7b366004613194565b611e51565b348015610b8b575f80fd5b506010546001600160a01b03166104b7565b348015610ba8575f80fd5b506104ee610bb7366004613073565b611ea9565b348015610bc7575f80fd5b506104ee610bd63660046131d7565b611f13565b348015610be6575f80fd5b506104ee610bf5366004612e84565b611f69565b348015610c05575f80fd5b50610441610c14366004612d84565b5f908152600a602052604090205490565b348015610c30575f80fd5b50610463610c3f366004612e9f565b611fb8565b348015610c4f575f80fd5b5061040d610c5e366004613209565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b348015610c96575f80fd5b506104ee610ca5366004612e84565b6120b9565b348015610cb5575f80fd5b5061046361210c565b5f6001600160e01b031982166380ac58cd60e01b1480610cee57506001600160e01b03198216635b5e139f60e01b145b80610d0957506301ffc9a760e01b6001600160e01b03198316145b92915050565b6001600160a01b03919091165f908152600c60209081526040808320938352929052205490565b60198054610d4390613235565b80601f0160208091040260200160405190810160405280929190818152602001828054610d6f90613235565b8015610dba5780601f10610d9157610100808354040283529160200191610dba565b820191905f5260205f20905b815481529060010190602001808311610d9d57829003601f168201915b505050505081565b60605f610dd06108a3612119565b1115610e645760198054610de390613235565b80601f0160208091040260200160405190810160405280929190818152602001828054610e0f90613235565b8015610e5a5780601f10610e3157610100808354040283529160200191610e5a565b820191905f5260205f20905b815481529060010190602001808311610e3d57829003601f168201915b5050505050905090565b60188054610de390613235565b606060148054610de390613235565b5f610e8a82612127565b505f908152600460205260409020546001600160a01b031690565b5f610eaf8261165b565b9050806001600160a01b0316836001600160a01b031603610f215760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b0316610f33612119565b6001600160a01b03161480610f4f5750610f4f81610c5e612119565b610fc15760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610f18565b610fcb8383612185565b505050565b6007541580610fe55750610fe56106c1612119565b6110015760405162461bcd60e51b8152600401610f189061326d565b61100c825f836121f2565b5050565b600754158061102557506110256106c1612119565b6110415760405162461bcd60e51b8152600401610f189061326d565b6001600160a01b0381165f9081526006602052604090205460ff166110a85760405162461bcd60e51b815260206004820152601e60248201527f5461726765742061646472657373206973206e6f7420616e206f776e657200006044820152606401610f18565b6001600160a01b0381165f908152600660205260409020805460ff191690556110d260078261228e565b50565b600d545f90610d09906001600160a01b031683610d0f565b606060088054610de390613235565b600754158061111157506111116106c1612119565b61112d5760405162461bcd60e51b8152600401610f189061326d565b5f918252600a602052604090912055565b600754158061115357506111536106c1612119565b61116f5760405162461bcd60e51b8152600401610f189061326d565b6001600160a01b03165f908152601a60205260409020805460ff19169055565b6111a061119a612119565b8261238d565b6111bc5760405162461bcd60e51b8152600401610f18906132af565b610fcb838383612409565b60075460609015806111df57506111df6106c1612119565b6111fb5760405162461bcd60e51b8152600401610f189061326d565b8167ffffffffffffffff81111561121457611214612d9b565b60405190808252806020026020018201604052801561123d578160200160208202803683370190505b5090505f5b8281101561129f57611258601280546001019055565b5f61126260125490565b905061126e858261256b565b80838381518110611281576112816132fc565b6020908102919091010152508061129781613324565b915050611242565b5092915050565b606060198054610de390613235565b60075415806112ca57506112ca6106c1612119565b6112e65760405162461bcd60e51b8152600401610f189061326d565b601755565b606060188054610de390613235565b600754158061130f575061130f6106c1612119565b61132b5760405162461bcd60e51b8152600401610f189061326d565b601961100c8282613381565b600754158061134c575061134c6106c1612119565b6113685760405162461bcd60e51b8152600401610f189061326d565b600d80546001600160a01b0319166001600160a01b0383161790556110d28161141c565b60075415806113a157506113a16106c1612119565b6113bd5760405162461bcd60e51b8152600401610f189061326d565b6001600160a01b03165f908152601a60205260409020805460ff19166001179055565b60075415806113f557506113f56106c1612119565b6114115760405162461bcd60e51b8152600401610f189061326d565b610fcb8383836121f2565b600754158061143157506114316106c1612119565b61144d5760405162461bcd60e51b8152600401610f189061326d565b6001600160a01b0381165f908152600e602052604090205460ff166110d2576001600160a01b03165f818152600e60205260408120805460ff19166001908117909155600f805491820181559091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180546001600160a01b0319169091179055565b610fcb83838360405180602001604052805f815250611c92565b600754158061150057506115006106c1612119565b61151c5760405162461bcd60e51b8152600401610f189061326d565b6110d2816126f3565b600754158061153a575061153a6106c1612119565b6115565760405162461bcd60e51b8152600401610f189061326d565b60178054905f6115658361343d565b9190505550565b600754158061158157506115816106c1612119565b61159d5760405162461bcd60e51b8152600401610f189061326d565b5f5b600754811015611605575f60065f600784815481106115c0576115c06132fc565b5f918252602080832091909101546001600160a01b031683528201929092526040019020805460ff1916911515919091179055806115fd81613324565b91505061159f565b5061161160075f612c89565b565b600754158061162857506116286106c1612119565b6116445760405162461bcd60e51b8152600401610f189061326d565b600d5461100c906001600160a01b03168383611f13565b5f818152600260205260408120546001600160a01b031680610d095760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610f18565b60075415806116cf57506116cf6106c1612119565b6116eb5760405162461bcd60e51b8152600401610f189061326d565b6001600160a01b0381165f9081526006602052604090205460ff166110d2576001600160a01b03165f818152600660205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b600754158061178457506117846106c1612119565b6117a05760405162461bcd60e51b8152600401610f189061326d565b601861100c8282613381565b5f6001600160a01b0382166118155760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610f18565b506001600160a01b03165f9081526003602052604090205490565b600754158061184557506118456106c1612119565b6118615760405162461bcd60e51b8152600401610f189061326d565b601361100c8282613381565b60405162461bcd60e51b815260206004820152601260248201527113d4115490551253d397d11254d05093115160721b6044820152606401610f18565b60075415806118bf57506118bf6106c1612119565b6118db5760405162461bcd60e51b8152600401610f189061326d565b61100c6118e78361165b565b828460405180602001604052805f815250612785565b6060600f805480602002602001604051908101604052809291908181526020018280548015610e5a57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611935575050505050905090565b6010546001600160a01b03166119718461165b565b6001600160a01b0316146119975760405162461bcd60e51b8152600401610f1890613452565b5f838152600b6020526040902054156119ba576119b58360016127b8565b6119c5565b6119c55f60016127b8565b82156119ff5760105460408051808201909152600381526203078360ec1b6020820152610fcb916001600160a01b03169083908690612785565b5f611a0960175490565b11611a265760405162461bcd60e51b8152600401610f1890613452565b60178054905f611a358361343d565b9190505550611a528160405180602001604052805f8152506128a1565b50505050565b6007541580611a6d5750611a6d6106c1612119565b611a895760405162461bcd60e51b8152600401610f189061326d565b5f918252600b602052604090912055565b6007541580611aaf5750611aaf6106c1612119565b611acb5760405162461bcd60e51b8152600401610f189061326d565b600861100c8282613381565b606060158054610de390613235565b6007541580611afb5750611afb6106c1612119565b611b175760405162461bcd60e51b8152600401610f189061326d565b601661100c8282613381565b60606007805480602002602001604051908101604052809291908181526020018280548015610e5a57602002820191905f5260205f209081546001600160a01b03168152600190910190602001808311611935575050505050905090565b61100c611b8c612119565b83836128d1565b6007541580611ba85750611ba86106c1612119565b611bc45760405162461bcd60e51b8152600401610f189061326d565b6001600160a01b0381165f908152600e602052604090205460ff16611c2b5760405162461bcd60e51b815260206004820181905260248201527f54617267657420636f6e7472616374206973206e6f7420617661696c61626c656044820152606401610f18565b6001600160a01b0381165f908152600e60205260409020805460ff191690556110d2600f8261228e565b6007541580611c6a5750611c6a6106c1612119565b611c865760405162461bcd60e51b8152600401610f189061326d565b601561100c8282613381565b611ca3611c9d612119565b8361238d565b611cbf5760405162461bcd60e51b8152600401610f18906132af565b611a5284848484612785565b60188054610d4390613235565b6007541580611ced5750611ced6106c1612119565b611d095760405162461bcd60e51b8152600401610f189061326d565b601461100c8282613381565b6060611d2082612127565b5f82815260116020908152604080832083805290915281208054611d4390613235565b80601f0160208091040260200160405190810160405280929190818152602001828054611d6f90613235565b8015611dba5780601f10611d9157610100808354040283529160200191611dba565b820191905f5260205f20905b815481529060010190602001808311611d9d57829003601f168201915b505050505090505f611dca61299e565b905080515f03611ddb575092915050565b815115611e0d578082604051602001611df5929190613474565b60405160208183030381529060405292505050919050565b9392505050565b6007545f901580611e2b5750611e2b6106c1612119565b611e475760405162461bcd60e51b8152600401610f189061326d565b611e0d83836128a1565b6007541580611e665750611e666106c1612119565b611e825760405162461bcd60e51b8152600401610f189061326d565b611a528484846040518060400160405280600381526020016203078360ec1b815250612785565b6010546001600160a01b0316611ebe8461165b565b6001600160a01b03161480611ed1575082155b611eed5760405162461bcd60e51b8152600401610f1890613452565b5f611ef7846110d5565b1115611f08576119b58360016129ad565b6119c55f60016129ad565b6007541580611f285750611f286106c1612119565b611f445760405162461bcd60e51b8152600401610f189061326d565b6001600160a01b039092165f908152600c602090815260408083209383529290522055565b6007541580611f7e5750611f7e6106c1612119565b611f9a5760405162461bcd60e51b8152600401610f189061326d565b600980546001600160a01b0319166001600160a01b03831617905550565b6060611fc383612127565b5f83815260116020908152604080832085845290915281208054611fe690613235565b80601f016020809104026020016040519081016040528092919081815260200182805461201290613235565b801561205d5780601f106120345761010080835404028352916020019161205d565b820191905f5260205f20905b81548152906001019060200180831161204057829003601f168201915b505050505090505f61206d61299e565b905080515f0361207f57509050610d09565b8151156120b1578082604051602001612099929190613474565b60405160208183030381529060405292505050610d09565b949350505050565b60075415806120ce57506120ce6106c1612119565b6120ea5760405162461bcd60e51b8152600401610f189061326d565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b60138054610d4390613235565b5f6121226129c6565b905090565b5f818152600260205260409020546001600160a01b03166110d25760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610f18565b5f81815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906121b98261165b565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b5f838152600260205260409020546001600160a01b031661226c5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b6064820152608401610f18565b5f8381526011602090815260408083208584529091529020611a528282613381565b5f5b8254811015610fcb57816001600160a01b03168382815481106122b5576122b56132fc565b5f918252602090912001546001600160a01b03160361237b57825483906122de906001906134a2565b815481106122ee576122ee6132fc565b905f5260205f20015f9054906101000a90046001600160a01b031683828154811061231b5761231b6132fc565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555082805480612356576123566134b5565b5f8281526020902081015f1990810180546001600160a01b0319169055019055505050565b8061238581613324565b915050612290565b5f806123988361165b565b9050806001600160a01b0316846001600160a01b031614806123de57506001600160a01b038082165f9081526005602090815260408083209388168352929052205460ff165b806120b15750836001600160a01b03166123f784610e80565b6001600160a01b031614949350505050565b826001600160a01b031661241c8261165b565b6001600160a01b0316146124425760405162461bcd60e51b8152600401610f18906134c9565b6001600160a01b0382166124a45760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610f18565b826001600160a01b03166124b78261165b565b6001600160a01b0316146124dd5760405162461bcd60e51b8152600401610f18906134c9565b5f81815260046020908152604080832080546001600160a01b03199081169091556001600160a01b038781168086526003855283862080545f1901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b0382166125c15760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610f18565b5f818152600260205260409020546001600160a01b0316156126255760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610f18565b5f818152600260205260409020546001600160a01b0316156126895760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610f18565b6001600160a01b0382165f81815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b5f6126fd8261165b565b90506127088261165b565b5f83815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526003845282852080545f190190558785526002909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b612790848484612409565b61279c848484846129f9565b611a525760405162461bcd60e51b8152600401610f189061350e565b5f828152600b6020526040812054116127e35760405162461bcd60e51b8152600401610f1890613560565b6010546001600160a01b031661280b5760405162461bcd60e51b8152600401610f1890613560565b5f828152600b6020526040812054612824908390613587565b90508034101561286b5760405162461bcd60e51b8152602060048201526012602482015271494e53554646494349454e545f56414c554560701b6044820152606401610f18565b6010546040516001600160a01b03909116903480156108fc02915f818181858888f19350505050158015611a52573d5f803e3d5ffd5b5f6128b0601280546001019055565b5f6128ba60125490565b90506128c6848261256b565b611e0d815f856121f2565b816001600160a01b0316836001600160a01b0316036129325760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610f18565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b606060168054610de390613235565b600d5461100c90839083906001600160a01b0316612afd565b5f601436108015906129e257506009546001600160a01b031633145b156129f4575060131936013560601c90565b503390565b5f6001600160a01b0384163b15612af257836001600160a01b031663150b7a02612a21612119565b8786866040518563ffffffff1660e01b8152600401612a43949392919061359e5