diff --git a/go-binding/feralfile-exhibition-v4/abi.go b/go-binding/feralfile-exhibition-v4/abi.go index 646ca1c..a9c42f6 100644 --- a/go-binding/feralfile-exhibition-v4/abi.go +++ b/go-binding/feralfile-exhibition-v4/abi.go @@ -62,7 +62,7 @@ type IFeralfileSaleDataSaleData struct { // FeralfileExhibitionV4MetaData contains all meta data concerning the FeralfileExhibitionV4 contract. var FeralfileExhibitionV4MetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"burnable_\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"bridgeable_\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"signer_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"vault_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"costReceiver_\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"contractURI_\",\"type\":\"string\"},{\"internalType\":\"uint256[]\",\"name\":\"seriesIds_\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"seriesMaxSupplies_\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AdvanceAddressAlreadyUsed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAdvanceAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAdvanceAddressesAndAmounts\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAdvanceAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"BurnArtwork\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"BuyArtwork\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"seriesId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"NewArtwork\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"OperatorFilterRegistry\",\"outputs\":[{\"internalType\":\"contractIOperatorFilterRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trustee\",\"type\":\"address\"}],\"name\":\"addTrustee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"advances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"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\":[],\"name\":\"bridgeable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"}],\"name\":\"burnArtworks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"burnable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"codeVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"contractURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"costReceiver\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"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\":\"getArtwork\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"seriesId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"internalType\":\"structFeralfileExhibitionV4.Artwork\",\"name\":\"\",\"type\":\"tuple\"}],\"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\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"seriesId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"internalType\":\"structFeralfileExhibitionV4.MintData[]\",\"name\":\"data\",\"type\":\"tuple[]\"}],\"name\":\"mintArtworks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mintable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseSale\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trustee\",\"type\":\"address\"}],\"name\":\"removeTrustee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resumeSale\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"selling\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"seriesId\",\"type\":\"uint256\"}],\"name\":\"seriesMaxSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"seriesId\",\"type\":\"uint256\"}],\"name\":\"seriesTotalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"costReceiver_\",\"type\":\"address\"}],\"name\":\"setCostReceiver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer_\",\"type\":\"address\"}],\"name\":\"setSigner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"baseURI_\",\"type\":\"string\"}],\"name\":\"setTokenBaseURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vault_\",\"type\":\"address\"}],\"name\":\"setVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"signer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startSale\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopSaleAndBurn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"seriesIds\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"recipientAddresses\",\"type\":\"address[]\"}],\"name\":\"stopSaleAndTransfer\",\"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\":[],\"name\":\"tokenBaseURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"tokensOfOwner\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"trustees\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operatorFilterRegisterAddress\",\"type\":\"address\"}],\"name\":\"updateOperatorFilterRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"contractIFeralfileVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"addresses_\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts_\",\"type\":\"uint256[]\"}],\"name\":\"setAdvanceSetting\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"oldAddresses_\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"newAddresses_\",\"type\":\"address[]\"}],\"name\":\"replaceAdvanceAddresses\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"r_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s_\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"v_\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cost\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiryTime\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"bps\",\"type\":\"uint256\"}],\"internalType\":\"structIFeralfileSaleData.RevenueShare[][]\",\"name\":\"revenueShares\",\"type\":\"tuple[][]\"},{\"internalType\":\"bool\",\"name\":\"payByVaultContract\",\"type\":\"bool\"}],\"internalType\":\"structIFeralfileSaleData.SaleData\",\"name\":\"saleData_\",\"type\":\"tuple\"}],\"name\":\"buyArtworks\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}]", - Bin: "0x6080604052600880546001600160a01b0319166daaeb6d7670e522a718067333cd4e179055600d805463ff000000191663010000001790553480156200004457600080fd5b506040516200550938038062005509833981016040819052620000679162000971565b89898989898989898989858a8a600062000082838262000b40565b50600162000091828262000b40565b505050620000ae620000a86200078f60201b60201c565b62000793565b6008546001600160a01b03163b156200013b57600854604051633e9f1edf60e11b8152306004820152733cc6cdda760b79bafa08df41ecfa224f810dceb660248201526001600160a01b0390911690637d3e3dbe90604401600060405180830381600087803b1580156200012157600080fd5b505af115801562000136573d6000803e3d6000fd5b505050505b6001600160a01b038116620001a25760405162461bcd60e51b815260206004820152602260248201527f45434453415369676e3a207369676e65725f206973207a65726f206164647265604482015261737360f01b60648201526084015b60405180910390fd5b600980546001600160a01b0319166001600160a01b03929092169190911790558951620002205760405162461bcd60e51b815260206004820152602560248201527f466572616c66696c6545786869626974696f6e56343a206e616d655f20697320604482015264656d70747960d81b606482015260840162000199565b6000895111620002835760405162461bcd60e51b815260206004820152602760248201527f466572616c66696c6545786869626974696f6e56343a2073796d626f6c5f20696044820152667320656d70747960c81b606482015260840162000199565b6001600160a01b038516620003015760405162461bcd60e51b815260206004820152603460248201527f466572616c66696c6545786869626974696f6e56343a207661756c744164647260448201527f6573735f206973207a65726f2061646472657373000000000000000000000000606482015260840162000199565b6001600160a01b0384166200037f5760405162461bcd60e51b815260206004820152603460248201527f466572616c66696c6545786869626974696f6e56343a20636f7374526563656960448201527f7665725f206973207a65726f2061646472657373000000000000000000000000606482015260840162000199565b6000835111620003e75760405162461bcd60e51b815260206004820152602c60248201527f466572616c66696c6545786869626974696f6e56343a20636f6e74726163745560448201526b52495f20697320656d70747960a01b606482015260840162000199565b60008251116200044d5760405162461bcd60e51b815260206004820152602a60248201527f466572616c66696c6545786869626974696f6e56343a207365726965734964736044820152695f20697320656d70747960b01b606482015260840162000199565b6000815111620004bb5760405162461bcd60e51b815260206004820152603260248201527f466572616c66696c6545786869626974696f6e56343a205f7365726965734d6160448201527178537570706c69657320697320656d70747960701b606482015260840162000199565b80518251146200054e5760405162461bcd60e51b815260206004820152605160248201527f466572616c66696c6545786869626974696f6e56343a207365726965734d617860448201527f537570706c6965735f20616e64207365726965734964735f206c656e6774687360648201527020617265206e6f74207468652073616d6560781b608482015260a40162000199565b600d805461ffff191689151561ff001916176101008915150217600160201b600160c01b0319166401000000006001600160a01b038781169190910291909117909155600e80546001600160a01b031916918716919091179055600b620005b6848262000b40565b5060005b825181101562000774576000620005d382600162000c22565b90505b83518110156200069057838181518110620005f557620005f562000c3e565b602002602001015184838151811062000612576200061262000c3e565b6020026020010151036200067b5760405162461bcd60e51b815260206004820152602960248201527f466572616c66696c6545786869626974696f6e56343a206475706c6963617465604482015268081cd95c9a595cd25960ba1b606482015260840162000199565b80620006878162000c54565b915050620005d6565b506000828281518110620006a857620006a862000c3e565b6020026020010151116200070e5760405162461bcd60e51b815260206004820152602660248201527f466572616c66696c6545786869626974696f6e56343a207a65726f206d617820604482015265737570706c7960d01b606482015260840162000199565b81818151811062000723576200072362000c3e565b6020026020010151600f600085848151811062000744576200074462000c3e565b602002602001015181526020019081526020016000208190555080806200076b9062000c54565b915050620005ba565b50505050505050505050505050505050505050505062000c70565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715620008265762000826620007e5565b604052919050565b600082601f8301126200084057600080fd5b81516001600160401b038111156200085c576200085c620007e5565b602062000872601f8301601f19168201620007fb565b82815285828487010111156200088757600080fd5b60005b83811015620008a75785810183015182820184015282016200088a565b506000928101909101919091529392505050565b80518015158114620008cc57600080fd5b919050565b80516001600160a01b0381168114620008cc57600080fd5b600082601f830112620008fb57600080fd5b815160206001600160401b03821115620009195762000919620007e5565b8160051b6200092a828201620007fb565b92835284810182019282810190878511156200094557600080fd5b83870192505b8483101562000966578251825291830191908301906200094b565b979650505050505050565b6000806000806000806000806000806101408b8d0312156200099257600080fd5b8a516001600160401b0380821115620009aa57600080fd5b620009b88e838f016200082e565b9b5060208d0151915080821115620009cf57600080fd5b620009dd8e838f016200082e565b9a50620009ed60408e01620008bb565b9950620009fd60608e01620008bb565b985062000a0d60808e01620008d1565b975062000a1d60a08e01620008d1565b965062000a2d60c08e01620008d1565b955060e08d015191508082111562000a4457600080fd5b62000a528e838f016200082e565b94506101008d015191508082111562000a6a57600080fd5b62000a788e838f01620008e9565b93506101208d015191508082111562000a9057600080fd5b5062000a9f8d828e01620008e9565b9150509295989b9194979a5092959850565b600181811c9082168062000ac657607f821691505b60208210810362000ae757634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000b3b57600081815260208120601f850160051c8101602086101562000b165750805b601f850160051c820191505b8181101562000b375782815560010162000b22565b5050505b505050565b81516001600160401b0381111562000b5c5762000b5c620007e5565b62000b748162000b6d845462000ab1565b8462000aed565b602080601f83116001811462000bac576000841562000b935750858301515b600019600386901b1c1916600185901b17855562000b37565b600085815260208120601f198616915b8281101562000bdd5788860151825594840194600190910190840162000bbc565b508582101562000bfc5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b8082018082111562000c385762000c3862000c0c565b92915050565b634e487b7160e01b600052603260045260246000fd5b60006001820162000c695762000c6962000c0c565b5060010190565b6148898062000c806000396000f3fe6080604052600436106103035760003560e01c80636817031b11610190578063b66a0e5d116100dc578063e985e9c511610095578063f07e7fd01161006f578063f07e7fd0146109ff578063f2fde38b14610a1f578063f4e638be14610a3f578063fbfa77cf14610a6757600080fd5b8063e985e9c514610959578063eb5c60f2146109a2578063eee608a4146109cf57600080fd5b8063b66a0e5d146108ba578063b88d4fde146108cf578063b9b8311a146108ef578063c87b56dd14610904578063dc78ac1c14610924578063e8a3d4851461094457600080fd5b80638cba1c6711610149578063926ce44e11610123578063926ce44e1461083e57806395d89b411461086b578063a07c7ce414610880578063a22cb4651461089a57600080fd5b80638cba1c67146107e05780638da5cb5b146108005780638ef79e911461081e57600080fd5b80636817031b146107115780636c19e7831461073157806370a0823114610751578063715018a6146107715780637f06ee06146107865780638462151c146107b357600080fd5b80632977e4b31161024f5780634bf365df1161020857806355367ba9116101e257806355367ba91461067b5780636352211e1461069057806363e60230146106b057806365a46e08146106f157600080fd5b80634bf365df146106265780634e99b80014610647578063530da8ef1461065c57600080fd5b80632977e4b31461057e5780632f745c591461059157806333e364cb146105b15780633c352b0d146105c657806341a5626a146105e657806342842e0e1461060657600080fd5b80631623528f116102bc57806321fe0c641161029657806321fe0c6414610502578063238ac9331461052257806323aed2281461054057806323b872dd1461055e57600080fd5b80631623528f14610483578063167ddf6e146104a357806318160ddd146104de57600080fd5b806301ffc9a71461039457806303120506146103c957806306fdde03146103e9578063081812fc1461040b578063095ea7b314610443578063114ba8ee1461046357600080fd5b3661038f57600e546001600160a01b0316331461038d5760405162461bcd60e51b815260206004820152603c60248201527f466572616c66696c6545786869626974696f6e56343a206f6e6c79206163636560448201527f70742066756e642066726f6d207661756c7420636f6e74726163742e0000000060648201526084015b60405180910390fd5b005b600080fd5b3480156103a057600080fd5b506103b46103af366004613921565b610a87565b60405190151581526020015b60405180910390f35b3480156103d557600080fd5b5061038d6103e4366004613961565b610ad9565b3480156103f557600080fd5b506103fe610b02565b6040516103c091906139cc565b34801561041757600080fd5b5061042b6104263660046139df565b610b94565b6040516001600160a01b0390911681526020016103c0565b34801561044f57600080fd5b5061038d61045e3660046139f8565b610bbb565b34801561046f57600080fd5b5061038d61047e366004613961565b610bd4565b34801561048f57600080fd5b5061038d61049e366004613961565b610bfe565b3480156104af57600080fd5b506104c36104be3660046139df565b610ca7565b604080518251815260209283015192810192909252016103c0565b3480156104ea57600080fd5b506104f4600c5481565b6040519081526020016103c0565b34801561050e57600080fd5b5061038d61051d366004613af6565b610d0a565b34801561052e57600080fd5b506009546001600160a01b031661042b565b34801561054c57600080fd5b50600d5462010000900460ff166103b4565b34801561056a57600080fd5b5061038d610579366004613b2a565b610df4565b61038d61058c366004613b66565b610e47565b34801561059d57600080fd5b506104f46105ac3660046139f8565b611484565b3480156105bd57600080fd5b5061038d61152e565b3480156105d257600080fd5b5061038d6105e1366004613c1e565b6115f1565b3480156105f257600080fd5b5061038d610601366004613c1e565b611791565b34801561061257600080fd5b5061038d610621366004613b2a565b611975565b34801561063257600080fd5b50600d546103b4906301000000900460ff1681565b34801561065357600080fd5b506103fe6119c2565b34801561066857600080fd5b50600d546103b490610100900460ff1681565b34801561068757600080fd5b5061038d611a50565b34801561069c57600080fd5b5061042b6106ab3660046139df565b611b04565b3480156106bc57600080fd5b506103fe6040518060400160405280601581526020017411995c985b199a5b19515e1a1a589a5d1a5bdb958d605a1b81525081565b3480156106fd57600080fd5b5061038d61070c366004613c89565b611b39565b34801561071d57600080fd5b5061038d61072c366004613961565b611e37565b34801561073d57600080fd5b5061038d61074c366004613961565b611ecd565b34801561075d57600080fd5b506104f461076c366004613961565b611f58565b34801561077d57600080fd5b5061038d611fde565b34801561079257600080fd5b506104f46107a13660046139df565b60009081526010602052604090205490565b3480156107bf57600080fd5b506107d36107ce366004613961565b611ff2565b6040516103c09190613d4a565b3480156107ec57600080fd5b5061038d6107fb366004613d8e565b61205e565b34801561080c57600080fd5b506006546001600160a01b031661042b565b34801561082a57600080fd5b5061038d610839366004613e59565b61218d565b34801561084a57600080fd5b506104f4610859366004613961565b60146020526000908152604090205481565b34801561087757600080fd5b506103fe6121fc565b34801561088c57600080fd5b50600d546103b49060ff1681565b3480156108a657600080fd5b5061038d6108b5366004613eba565b61220b565b3480156108c657600080fd5b5061038d61221f565b3480156108db57600080fd5b5061038d6108ea366004613ef1565b61223c565b3480156108fb57600080fd5b5061038d61228a565b34801561091057600080fd5b506103fe61091f3660046139df565b61232b565b34801561093057600080fd5b5061038d61093f366004613961565b612439565b34801561095057600080fd5b506103fe612465565b34801561096557600080fd5b506103b4610974366004613f6c565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b3480156109ae57600080fd5b506104f46109bd3660046139df565b6000908152600f602052604090205490565b3480156109db57600080fd5b506103b46109ea366004613961565b60076020526000908152604090205460ff1681565b348015610a0b57600080fd5b5060085461042b906001600160a01b031681565b348015610a2b57600080fd5b5061038d610a3a366004613961565b612472565b348015610a4b57600080fd5b50600d5461042b9064010000000090046001600160a01b031681565b348015610a7357600080fd5b50600e5461042b906001600160a01b031681565b60006001600160e01b031982166380ac58cd60e01b1480610ab857506001600160e01b03198216635b5e139f60e01b145b80610ad357506301ffc9a760e01b6001600160e01b03198316145b92915050565b610ae16124eb565b6001600160a01b03166000908152600760205260409020805460ff19169055565b606060008054610b1190613f9f565b80601f0160208091040260200160405190810160405280929190818152602001828054610b3d90613f9f565b8015610b8a5780601f10610b5f57610100808354040283529160200191610b8a565b820191906000526020600020905b815481529060010190602001808311610b6d57829003601f168201915b5050505050905090565b6000610b9f82612545565b506000908152600460205260409020546001600160a01b031690565b81610bc58161256a565b610bcf838361263c565b505050565b610bdc6124eb565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b610c066124eb565b6001600160a01b038116610c795760405162461bcd60e51b815260206004820152603460248201527f466572616c66696c6545786869626974696f6e56343a20636f737452656365696044820152737665725f206973207a65726f206164647265737360601b6064820152608401610384565b600d80546001600160a01b0390921664010000000002640100000000600160c01b0319909216919091179055565b6040805180820190915260008082526020820152610cc48261274c565b610ce05760405162461bcd60e51b815260040161038490613fd9565b50600090815260116020908152604091829020825180840190935280548352600101549082015290565b600d5460ff16610d715760405162461bcd60e51b815260206004820152602c60248201527f466572616c66696c6545786869626974696f6e56343a20746f6b656e2069732060448201526b6e6f74206275726e61626c6560a01b6064820152608401610384565b60005b8151811015610df057610da033838381518110610d9357610d93614010565b6020026020010151612769565b610dbc5760405162461bcd60e51b815260040161038490614026565b610dde828281518110610dd157610dd1614010565b60200260200101516127e8565b80610de881614089565b915050610d74565b5050565b826001600160a01b0381163314610e0e57610e0e3361256a565b306001600160a01b03841603610e365760405162461bcd60e51b8152600401610384906140a2565b610e418484846128be565b50505050565b600d5462010000900460ff16610eb25760405162461bcd60e51b815260206004820152602a60248201527f466572616c66696c6545786869626974696f6e56343a2073616c65206973206e6044820152691bdd081cdd185c9d195960b21b6064820152608401610384565b610eba6128ef565b610ec38161296a565b610ed360e0820160c083016140ff565b610f425780353414610f3d5760405162461bcd60e51b815260206004820152602d60248201527f466572616c66696c6545786869626974696f6e56343a20696e76616c6964207060448201526c185e5b595b9d08185b5bdd5b9d609a1b6064820152608401610384565b610fab565b600e54604051632eeee16360e01b81526001600160a01b0390911690632eeee16390610f78908790879087908790600401614304565b600060405180830381600087803b158015610f9257600080fd5b505af1158015610fa6573d6000803e3d6000fd5b505050505b6000463083604051602001610fc293929190614336565b604051602081830303815290604052805190602001209050610fe681868686612ac3565b61100357604051638baa579f60e01b815260040160405180910390fd5b600060208301358335111561103d5761101f6080840184614369565b9050611030602085013585356143b2565b61103a91906143c5565b90505b60008060005b6110506080870187614369565b90508110156113a4576110a63061106d6080890160608a01613961565b61107a60808a018a614369565b8581811061108a5761108a614010565b9050602002013560405180602001604052806000815250612b1b565b60006110b560a0880188614369565b838181106110c5576110c5614010565b90506020028101906110d791906143e7565b808060200260200160405190810160405280939291908181526020016000905b828210156111235761111460408302860136819003810190614430565b815260200190600101906110f7565b50505050509050600085905060005b8251811080156111425750600082115b156112275760006014600085848151811061115f5761115f614010565b6020026020010151600001516001600160a01b03166001600160a01b0316815260200190815260200160002054905060008382101561119e57816111a0565b835b90506111ac8188614486565b965080601460008786815181106111c5576111c5614010565b6020026020010151600001516001600160a01b03166001600160a01b03168152602001908152602001600020600082825461120091906143b2565b90915550611210905081856143b2565b93505050808061121f90614089565b915050611132565b5080156113235760005b825181101561132157600083828151811061124e5761124e614010565b6020026020010151600001519050600061271085848151811061127357611273614010565b6020026020010151602001518561128a9190614499565b61129491906143c5565b600d549091506001600160a01b036401000000009091048116908316036112c8576112bf8188614486565b9650505061130f565b6112d28189614486565b6040519098506001600160a01b0383169082156108fc029083906000818181858888f1935050505015801561130b573d6000803e3d6000fd5b5050505b8061131981614089565b915050611231565b505b6113306080890189614369565b8481811061134057611340614010565b9050602002013588606001602081019061135a9190613961565b6001600160a01b03167f0475389cd69b8d3163620b43283bf74e8fc71020c3c6cef2a529b5c405e9687f60405160405180910390a35050808061139c90614089565b915050611043565b506113af8183614486565b6113be602087013587356143b2565b10156114215760405162461bcd60e51b815260206004820152602c60248201527f466572616c66696c6545786869626974696f6e56343a20746f74616c2062707360448201526b0206f7665722031302c3030360a41b6064820152608401610384565b600061142e8387356143b2565b9050801561147957600d546040516401000000009091046001600160a01b0316906108fc8315029083906000818181858888f19350505050158015611477573d6000803e3d6000fd5b505b505050505050505050565b600061148f83611f58565b82106114f15760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610384565b6001600160a01b038316600090815260126020526040902080548390811061151b5761151b614010565b9060005260206000200154905092915050565b6115366124eb565b600d546301000000900460ff16156115605760405162461bcd60e51b8152600401610384906144b0565b600d5462010000900460ff16156115d65760405162461bcd60e51b815260206004820152603460248201527f466572616c66696c6545786869626974696f6e56343a205f73656c6c696e6720604482015273726571756972656420746f2062652066616c736560601b6064820152608401610384565b6115de6128ef565b600d805462ff0000191662010000179055565b6115f96124eb565b828114611619576040516313086eff60e21b815260040160405180910390fd5b60005b8381101561178a57600085858381811061163857611638614010565b905060200201602081019061164d9190613961565b6001600160a01b03160361167457604051630107349760e51b815260040160405180910390fd5b82828281811061168657611686614010565b905060200201356000036116ad57604051636745f8fb60e01b815260040160405180910390fd5b6000601460008787858181106116c5576116c5614010565b90506020020160208101906116da9190613961565b6001600160a01b03166001600160a01b0316815260200190815260200160002054111561171a576040516328547bdf60e01b815260040160405180910390fd5b82828281811061172c5761172c614010565b905060200201356014600087878581811061174957611749614010565b905060200201602081019061175e9190613961565b6001600160a01b031681526020810191909152604001600020558061178281614089565b91505061161c565b5050505050565b6117996124eb565b8281146117b9576040516313086eff60e21b815260040160405180910390fd5b60005b8381101561178a5760008383838181106117d8576117d8614010565b90506020020160208101906117ed9190613961565b6001600160a01b03160361181457604051630107349760e51b815260040160405180910390fd5b60006014600085858581811061182c5761182c614010565b90506020020160208101906118419190613961565b6001600160a01b03166001600160a01b03168152602001908152602001600020541115611881576040516328547bdf60e01b815260040160405180910390fd5b6014600086868481811061189757611897614010565b90506020020160208101906118ac9190613961565b6001600160a01b03166001600160a01b0316815260200190815260200160002054601460008585858181106118e3576118e3614010565b90506020020160208101906118f89190613961565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506014600086868481811061193257611932614010565b90506020020160208101906119479190613961565b6001600160a01b0316815260208101919091526040016000908120558061196d81614089565b9150506117bc565b826001600160a01b038116331461198f5761198f3361256a565b306001600160a01b038416036119b75760405162461bcd60e51b8152600401610384906140a2565b610e41848484612b4e565b600a80546119cf90613f9f565b80601f01602080910402602001604051908101604052809291908181526020018280546119fb90613f9f565b8015611a485780601f10611a1d57610100808354040283529160200191611a48565b820191906000526020600020905b815481529060010190602001808311611a2b57829003601f168201915b505050505081565b611a586124eb565b600d546301000000900460ff1615611a825760405162461bcd60e51b8152600401610384906144b0565b600d5462010000900460ff16611af65760405162461bcd60e51b815260206004820152603360248201527f466572616c66696c6545786869626974696f6e56343a205f73656c6c696e6720604482015272726571756972656420746f206265207472756560681b6064820152608401610384565b600d805462ff000019169055565b6000818152600260205260408120546001600160a01b031680610ad35760405162461bcd60e51b815260040161038490613fd9565b611b416124eb565b60008251118015611b53575060008151115b611bd35760405162461bcd60e51b815260206004820152604560248201527f466572616c66696c6545786869626974696f6e56343a2073657269657349647360448201527f206f7220726563697069656e74416464726573736573206c656e677468206973606482015264207a65726f60d81b608482015260a401610384565b8051825114611c5f5760405162461bcd60e51b815260206004820152604c60248201527f466572616c66696c6545786869626974696f6e56343a2073657269657349647360448201527f206c656e67746820697320646966666572656e742066726f6d2072656369706960648201526b656e7441646472657373657360a01b608482015260a401610384565b611c67611a50565b30600081815260126020908152604080832080548251818502810185019093528083529192909190830182828015611cbe57602002820191906000526020600020905b815481526020019060010190808311611caa575b5050505050905060005b8151811015611dba576000828281518110611ce557611ce5614010565b602090810291909101810151600081815260118352604080822081518083019092528054825260010154938101939093529092505b87518161ffff161015611da457878161ffff1681518110611d3d57611d3d614010565b6020026020010151826000015103611d92576000878261ffff1681518110611d6757611d67614010565b60200260200101519050611d8c87828660405180602001604052806000815250612b1b565b50611da4565b80611d9c81614504565b915050611d1a565b5050508080611db290614089565b915050611cc8565b50611dc482611f58565b15610e415760405162461bcd60e51b815260206004820152603c60248201527f466572616c66696c6545786869626974696f6e56343a20546f6b656e20666f7260448201527f2073616c652062616c616e63652068617320746f206265207a65726f000000006064820152608401610384565b611e3f6124eb565b6001600160a01b038116611eab5760405162461bcd60e51b815260206004820152602d60248201527f466572616c66696c6545786869626974696f6e56343a207661756c745f20697360448201526c207a65726f206164647265737360981b6064820152608401610384565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b611ed56124eb565b6001600160a01b038116611f365760405162461bcd60e51b815260206004820152602260248201527f45434453415369676e3a207369676e65725f206973207a65726f206164647265604482015261737360f01b6064820152608401610384565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160a01b038216611fc25760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610384565b506001600160a01b031660009081526003602052604090205490565b611fe66124eb565b611ff06000612b69565b565b6001600160a01b03811660009081526012602090815260409182902080548351818402810184019094528084526060939283018282801561205257602002820191906000526020600020905b81548152602001906001019080831161203e575b50505050509050919050565b3360009081526007602052604090205460ff168061208657506006546001600160a01b031633145b61208f57600080fd5b600d546301000000900460ff166121065760405162461bcd60e51b815260206004820152603560248201527f466572616c66696c6545786869626974696f6e56343a20636f6e747261637420604482015274191bd95cdb89dd08185b1b1bddc81d1bc81b5a5b9d605a1b6064820152608401610384565b60005b81811015610bcf5761217b83838381811061212657612126614010565b9050606002016000013584848481811061214257612142614010565b9050606002016020013585858581811061215e5761215e614010565b90506060020160400160208101906121769190613961565b612bbb565b8061218581614089565b915050612109565b6121956124eb565b60008151116121f05760405162461bcd60e51b815260206004820152602160248201527f4552433732314d657461646174613a20626173655552495f20697320656d70746044820152607960f81b6064820152608401610384565b600a610df08282614573565b606060018054610b1190613f9f565b816122158161256a565b610bcf8383612d3d565b6122276124eb565b600d805463ff00000019169055611ff061152e565b836001600160a01b0381163314612256576122563361256a565b306001600160a01b0385160361227e5760405162461bcd60e51b8152600401610384906140a2565b61178a85858585612d48565b6122926124eb565b61229a611a50565b306000908152601260209081526040808320805482518185028101850190935280835291929091908301828280156122f157602002820191906000526020600020905b8154815260200190600101908083116122dd575b5050505050905060005b8151811015610df057612319828281518110610dd157610dd1614010565b8061232381614089565b9150506122fb565b60606000600a805461233c90613f9f565b90501161239a5760405162461bcd60e51b815260206004820152602660248201527f4552433732314d657461646174613a205f746f6b656e4261736555524920697360448201526520656d70747960d01b6064820152608401610384565b6123a38261274c565b6124075760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610384565b600a61241283612d7a565b604051602001612423929190614632565b6040516020818303038152906040529050919050565b6124416124eb565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b600b80546119cf90613f9f565b61247a6124eb565b6001600160a01b0381166124df5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610384565b6124e881612b69565b50565b6006546001600160a01b03163314611ff05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610384565b61254e8161274c565b6124e85760405162461bcd60e51b815260040161038490613fd9565b6008546001600160a01b03163b156124e857600854604051633185c44d60e21b81523060048201526001600160a01b0383811660248301529091169063c617113490604401602060405180830381865afa1580156125cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125f091906146c6565b6124e85760405162461bcd60e51b815260206004820152601760248201527f6f70657261746f72206973206e6f7420616c6c6f7765640000000000000000006044820152606401610384565b600061264782611b04565b9050806001600160a01b0316836001600160a01b0316036126b45760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610384565b336001600160a01b03821614806126d057506126d08133610974565b6127425760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610384565b610bcf8383612e0d565b6000908152600260205260409020546001600160a01b0316151590565b60008061277583611b04565b9050806001600160a01b0316846001600160a01b031614806127bc57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806127e05750836001600160a01b03166127d584610b94565b6001600160a01b0316145b949350505050565b6127f18161274c565b61280d5760405162461bcd60e51b815260040161038490613fd9565b600081815260116020908152604080832081518083018352815480825260019283015482860152855260109093529083208054929391929091906128529084906143b2565b925050819055506001600c600082825461286c91906143b2565b909155505060008281526011602052604081208181556001015561288f82612e7b565b60405182907fbde7938970372996ff103863625e348ef2bf8f38a5b02181be75aafef17c23d590600090a25050565b6128c83382612769565b6128e45760405162461bcd60e51b815260040161038490614026565b610bcf838383612f1e565b60006128fa30611f58565b9050600081116124e85760405162461bcd60e51b815260206004820152603560248201527f466572616c66696c6545786869626974696f6e56343a204e6f20746f6b656e206044820152741bdddb995908189e481d1a194818dbdb9d1c9858dd605a1b6064820152608401610384565b60006129796080830183614369565b9050116129d45760405162461bcd60e51b8152602060048201526024808201527f466572616c66696c6553616c65446174613a20746f6b656e49647320697320656044820152636d70747960e01b6064820152608401610384565b6129e160a0820182614369565b90506129f06080830183614369565b905014612a655760405162461bcd60e51b815260206004820152603d60248201527f466572616c66696c6553616c65446174613a20746f6b656e49647320616e642060448201527f726576656e7565536861726573206c656e677468206d69736d617463680000006064820152608401610384565b428160400135116124e85760405162461bcd60e51b815260206004820152602260248201527f466572616c66696c6553616c65446174613a2073616c65206973206578706972604482015261195960f21b6064820152608401610384565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c859052603c81208190612b009084878761308f565b6009546001600160a01b039081169116149695505050505050565b612b26848484612f1e565b612b32848484846130b7565b610e415760405162461bcd60e51b8152600401610384906146e3565b610bcf8383836040518060200160405280600081525061223c565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000838152600f60205260409020541515612bd584612d7a565b604051602001612be59190614735565b60405160208183030381529060405290612c125760405162461bcd60e51b815260040161038491906139cc565b506000838152600f602090815260408083205460109092529091205410612c8d5760405162461bcd60e51b815260206004820152602960248201527f466572616c66696c6545786869626974696f6e56343a206e6f20736c6f747320604482015268617661696c61626c6560b81b6064820152608401610384565b6001600c6000828254612ca09190614486565b90915550506000838152601060205260408120805460019290612cc4908490614486565b9091555050604080518082018252848152602080820185815260008681526011909252929020905181559051600190910155612d0081836131b5565b8183826001600160a01b03167f407d7da1d3b2b1871fbfa2b5b1c4657a3cc5711d3023c552798551c7ee301eea60405160405180910390a4505050565b610df0338383613330565b612d523383612769565b612d6e5760405162461bcd60e51b815260040161038490614026565b610e4184848484612b1b565b60606000612d87836133fe565b60010190506000816001600160401b03811115612da657612da6613a22565b6040519080825280601f01601f191660200182016040528015612dd0576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084612dda575b509392505050565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190612e4282611b04565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000612e8682611b04565b9050612e968160008460016134d6565b612e9f82611b04565b600083815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526003845282852080546000190190558785526002909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b826001600160a01b0316612f3182611b04565b6001600160a01b031614612f575760405162461bcd60e51b815260040161038490614792565b6001600160a01b038216612fb95760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610384565b612fc683838360016134d6565b826001600160a01b0316612fd982611b04565b6001600160a01b031614612fff5760405162461bcd60e51b815260040161038490614792565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60008060006130a0878787876135ed565b915091506130ad816136b1565b5095945050505050565b60006001600160a01b0384163b156131ad57604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906130fb9033908990889088906004016147d7565b6020604051808303816000875af1925050508015613136575060408051601f3d908101601f191682019092526131339181019061480a565b60015b613193573d808015613164576040519150601f19603f3d011682016040523d82523d6000602084013e613169565b606091505b50805160000361318b5760405162461bcd60e51b8152600401610384906146e3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506127e0565b5060016127e0565b6001600160a01b03821661320b5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610384565b6132148161274c565b156132615760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610384565b61326f6000838360016134d6565b6132788161274c565b156132c55760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610384565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b816001600160a01b0316836001600160a01b0316036133915760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610384565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b831061343d5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310613469576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061348757662386f26fc10000830492506010015b6305f5e100831061349f576305f5e100830492506008015b61271083106134b357612710830492506004015b606483106134c5576064830492506002015b600a8310610ad35760010192915050565b60018111156135455760405162461bcd60e51b815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e7365637574697665207472604482015274185b9cd9995c9cc81b9bdd081cdd5c1c1bdc9d1959605a1b6064820152608401610384565b816001600160a01b038516158015906135705750836001600160a01b0316856001600160a01b031614155b1561357f5761357f85826137fb565b6001600160a01b038416158015906135a95750846001600160a01b0316846001600160a01b031614155b1561178a576001600160a01b03841660009081526012602090815260408083208054600181018255908452828420810185905584845260139092529091205561178a565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561362457506000905060036136a8565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613678573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166136a1576000600192509250506136a8565b9150600090505b94509492505050565b60008160048111156136c5576136c5614827565b036136cd5750565b60018160048111156136e1576136e1614827565b0361372e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610384565b600281600481111561374257613742614827565b0361378f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610384565b60038160048111156137a3576137a3614827565b036124e85760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610384565b6000600161380884611f58565b61381291906143b2565b6000838152601360205260409020549091508082146138b9576001600160a01b038416600090815260126020526040812080548490811061385557613855614010565b906000526020600020015490508060126000876001600160a01b03166001600160a01b03168152602001908152602001600020838154811061389957613899614010565b600091825260208083209091019290925591825260139052604090208190555b60008381526013602090815260408083208390556001600160a01b0387168352601290915290208054806138ef576138ef61483d565b6001900381819060005260206000200160009055905550505050565b6001600160e01b0319811681146124e857600080fd5b60006020828403121561393357600080fd5b813561393e8161390b565b9392505050565b80356001600160a01b038116811461395c57600080fd5b919050565b60006020828403121561397357600080fd5b61393e82613945565b60005b8381101561399757818101518382015260200161397f565b50506000910152565b600081518084526139b881602086016020860161397c565b601f01601f19169290920160200192915050565b60208152600061393e60208301846139a0565b6000602082840312156139f157600080fd5b5035919050565b60008060408385031215613a0b57600080fd5b613a1483613945565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613a6057613a60613a22565b604052919050565b60006001600160401b03821115613a8157613a81613a22565b5060051b60200190565b600082601f830112613a9c57600080fd5b81356020613ab1613aac83613a68565b613a38565b82815260059290921b84018101918181019086841115613ad057600080fd5b8286015b84811015613aeb5780358352918301918301613ad4565b509695505050505050565b600060208284031215613b0857600080fd5b81356001600160401b03811115613b1e57600080fd5b6127e084828501613a8b565b600080600060608486031215613b3f57600080fd5b613b4884613945565b9250613b5660208501613945565b9150604084013590509250925092565b60008060008060808587031215613b7c57600080fd5b8435935060208501359250604085013560ff81168114613b9b57600080fd5b915060608501356001600160401b03811115613bb657600080fd5b850160e08188031215613bc857600080fd5b939692955090935050565b60008083601f840112613be557600080fd5b5081356001600160401b03811115613bfc57600080fd5b6020830191508360208260051b8501011115613c1757600080fd5b9250929050565b60008060008060408587031215613c3457600080fd5b84356001600160401b0380821115613c4b57600080fd5b613c5788838901613bd3565b90965094506020870135915080821115613c7057600080fd5b50613c7d87828801613bd3565b95989497509550505050565b60008060408385031215613c9c57600080fd5b82356001600160401b0380821115613cb357600080fd5b613cbf86838701613a8b565b9350602091508185013581811115613cd657600080fd5b85019050601f81018613613ce957600080fd5b8035613cf7613aac82613a68565b81815260059190911b82018301908381019088831115613d1657600080fd5b928401925b82841015613d3b57613d2c84613945565b82529284019290840190613d1b565b80955050505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015613d8257835183529284019291840191600101613d66565b50909695505050505050565b60008060208385031215613da157600080fd5b82356001600160401b0380821115613db857600080fd5b818501915085601f830112613dcc57600080fd5b813581811115613ddb57600080fd5b866020606083028501011115613df057600080fd5b60209290920196919550909350505050565b60006001600160401b03831115613e1b57613e1b613a22565b613e2e601f8401601f1916602001613a38565b9050828152838383011115613e4257600080fd5b828260208301376000602084830101529392505050565b600060208284031215613e6b57600080fd5b81356001600160401b03811115613e8157600080fd5b8201601f81018413613e9257600080fd5b6127e084823560208401613e02565b80151581146124e857600080fd5b803561395c81613ea1565b60008060408385031215613ecd57600080fd5b613ed683613945565b91506020830135613ee681613ea1565b809150509250929050565b60008060008060808587031215613f0757600080fd5b613f1085613945565b9350613f1e60208601613945565b92506040850135915060608501356001600160401b03811115613f4057600080fd5b8501601f81018713613f5157600080fd5b613f6087823560208401613e02565b91505092959194509250565b60008060408385031215613f7f57600080fd5b613f8883613945565b9150613f9660208401613945565b90509250929050565b600181811c90821680613fb357607f821691505b602082108103613fd357634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526018908201527f4552433732313a20696e76616c696420746f6b656e2049440000000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60006001820161409b5761409b614073565b5060010190565b6020808252603e908201527f466572616c66696c6545786869626974696f6e56343a20436f6e74726163742060408201527f69736e277420616c6c6f77656420746f207265636569766520746f6b656e0000606082015260800190565b60006020828403121561411157600080fd5b813561393e81613ea1565b6000808335601e1984360301811261413357600080fd5b83016020810192503590506001600160401b0381111561415257600080fd5b8060051b3603821315613c1757600080fd5b8183526000602080850194508260005b858110156141aa576001600160a01b0361418d83613945565b168752818301358388015260409687019690910190600101614174565b509495945050505050565b81835260006020808501808196508560051b810191508460005b8781101561423c5782840389528135601e198836030181126141f057600080fd5b870185810190356001600160401b0381111561420b57600080fd5b8060061b360382131561421d57600080fd5b614228868284614164565b9a87019a95505050908401906001016141cf565b5091979650505050505050565b8035825260208082013590830152604080820135908301526001600160a01b0361427560608301613945565b166060830152600061428a608083018361411c565b60e06080860181905285018190526101006001600160fb1b038211156142af57600080fd5b8160051b915081838288013781860192506142cd60a086018661411c565b9250818785030160a08801526142e682850184836141b5565b93505050506142f760c08401613eaf565b80151560c0860152612e05565b84815283602082015260ff8316604082015260806060820152600061432c6080830184614249565b9695505050505050565b8381526001600160a01b038316602082015260606040820181905260009061436090830184614249565b95945050505050565b6000808335601e1984360301811261438057600080fd5b8301803591506001600160401b0382111561439a57600080fd5b6020019150600581901b3603821315613c1757600080fd5b81810381811115610ad357610ad3614073565b6000826143e257634e487b7160e01b600052601260045260246000fd5b500490565b6000808335601e198436030181126143fe57600080fd5b8301803591506001600160401b0382111561441857600080fd5b6020019150600681901b3603821315613c1757600080fd5b60006040828403121561444257600080fd5b604051604081018181106001600160401b038211171561446457614464613a22565b60405261447083613945565b8152602083013560208201528091505092915050565b80820180821115610ad357610ad3614073565b8082028115828204841417610ad357610ad3614073565b60208082526034908201527f466572616c66696c6545786869626974696f6e56343a206d696e7461626c6520604082015273726571756972656420746f2062652066616c736560601b606082015260800190565b600061ffff80831681810361451b5761451b614073565b6001019392505050565b601f821115610bcf57600081815260208120601f850160051c8101602086101561454c5750805b601f850160051c820191505b8181101561456b57828155600101614558565b505050505050565b81516001600160401b0381111561458c5761458c613a22565b6145a08161459a8454613f9f565b84614525565b602080601f8311600181146145d557600084156145bd5750858301515b600019600386901b1c1916600185901b17855561456b565b600085815260208120601f198616915b82811015614604578886015182559484019460019091019084016145e5565b50858210156146225787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600080845461464081613f9f565b60018281168015614658576001811461466d5761469c565b60ff198416875282151583028701945061469c565b8860005260208060002060005b858110156146935781548a82015290840190820161467a565b50505082870194505b50602f60f81b8452865192506146b88382860160208a0161397c565b919092010195945050505050565b6000602082840312156146d857600080fd5b815161393e81613ea1565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b7f466572616c66696c6545786869626974696f6e56343a2073657269657349642081526e03237b2b9b713ba1032bc34b9ba1d1608d1b60208201526000825161478581602f85016020870161397c565b91909101602f0192915050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061432c908301846139a0565b60006020828403121561481c57600080fd5b815161393e8161390b565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603160045260246000fdfea26469706673582212204ff7e6e452d5b4d13fd7f3049373fcbb2ec0c220c727d0b112624b8cbf508da164736f6c63430008110033", + Bin: "0x6080604052600880546001600160a01b0319166daaeb6d7670e522a718067333cd4e179055600d805463ff000000191663010000001790553480156200004457600080fd5b506040516200550938038062005509833981016040819052620000679162000971565b89898989898989898989858a8a600062000082838262000b40565b50600162000091828262000b40565b505050620000ae620000a86200078f60201b60201c565b62000793565b6008546001600160a01b03163b156200013b57600854604051633e9f1edf60e11b8152306004820152733cc6cdda760b79bafa08df41ecfa224f810dceb660248201526001600160a01b0390911690637d3e3dbe90604401600060405180830381600087803b1580156200012157600080fd5b505af115801562000136573d6000803e3d6000fd5b505050505b6001600160a01b038116620001a25760405162461bcd60e51b815260206004820152602260248201527f45434453415369676e3a207369676e65725f206973207a65726f206164647265604482015261737360f01b60648201526084015b60405180910390fd5b600980546001600160a01b0319166001600160a01b03929092169190911790558951620002205760405162461bcd60e51b815260206004820152602560248201527f466572616c66696c6545786869626974696f6e56343a206e616d655f20697320604482015264656d70747960d81b606482015260840162000199565b6000895111620002835760405162461bcd60e51b815260206004820152602760248201527f466572616c66696c6545786869626974696f6e56343a2073796d626f6c5f20696044820152667320656d70747960c81b606482015260840162000199565b6001600160a01b038516620003015760405162461bcd60e51b815260206004820152603460248201527f466572616c66696c6545786869626974696f6e56343a207661756c744164647260448201527f6573735f206973207a65726f2061646472657373000000000000000000000000606482015260840162000199565b6001600160a01b0384166200037f5760405162461bcd60e51b815260206004820152603460248201527f466572616c66696c6545786869626974696f6e56343a20636f7374526563656960448201527f7665725f206973207a65726f2061646472657373000000000000000000000000606482015260840162000199565b6000835111620003e75760405162461bcd60e51b815260206004820152602c60248201527f466572616c66696c6545786869626974696f6e56343a20636f6e74726163745560448201526b52495f20697320656d70747960a01b606482015260840162000199565b60008251116200044d5760405162461bcd60e51b815260206004820152602a60248201527f466572616c66696c6545786869626974696f6e56343a207365726965734964736044820152695f20697320656d70747960b01b606482015260840162000199565b6000815111620004bb5760405162461bcd60e51b815260206004820152603260248201527f466572616c66696c6545786869626974696f6e56343a205f7365726965734d6160448201527178537570706c69657320697320656d70747960701b606482015260840162000199565b80518251146200054e5760405162461bcd60e51b815260206004820152605160248201527f466572616c66696c6545786869626974696f6e56343a207365726965734d617860448201527f537570706c6965735f20616e64207365726965734964735f206c656e6774687360648201527020617265206e6f74207468652073616d6560781b608482015260a40162000199565b600d805461ffff191689151561ff001916176101008915150217600160201b600160c01b0319166401000000006001600160a01b038781169190910291909117909155600e80546001600160a01b031916918716919091179055600b620005b6848262000b40565b5060005b825181101562000774576000620005d382600162000c22565b90505b83518110156200069057838181518110620005f557620005f562000c3e565b602002602001015184838151811062000612576200061262000c3e565b6020026020010151036200067b5760405162461bcd60e51b815260206004820152602960248201527f466572616c66696c6545786869626974696f6e56343a206475706c6963617465604482015268081cd95c9a595cd25960ba1b606482015260840162000199565b80620006878162000c54565b915050620005d6565b506000828281518110620006a857620006a862000c3e565b6020026020010151116200070e5760405162461bcd60e51b815260206004820152602660248201527f466572616c66696c6545786869626974696f6e56343a207a65726f206d617820604482015265737570706c7960d01b606482015260840162000199565b81818151811062000723576200072362000c3e565b6020026020010151600f600085848151811062000744576200074462000c3e565b602002602001015181526020019081526020016000208190555080806200076b9062000c54565b915050620005ba565b50505050505050505050505050505050505050505062000c70565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715620008265762000826620007e5565b604052919050565b600082601f8301126200084057600080fd5b81516001600160401b038111156200085c576200085c620007e5565b602062000872601f8301601f19168201620007fb565b82815285828487010111156200088757600080fd5b60005b83811015620008a75785810183015182820184015282016200088a565b506000928101909101919091529392505050565b80518015158114620008cc57600080fd5b919050565b80516001600160a01b0381168114620008cc57600080fd5b600082601f830112620008fb57600080fd5b815160206001600160401b03821115620009195762000919620007e5565b8160051b6200092a828201620007fb565b92835284810182019282810190878511156200094557600080fd5b83870192505b8483101562000966578251825291830191908301906200094b565b979650505050505050565b6000806000806000806000806000806101408b8d0312156200099257600080fd5b8a516001600160401b0380821115620009aa57600080fd5b620009b88e838f016200082e565b9b5060208d0151915080821115620009cf57600080fd5b620009dd8e838f016200082e565b9a50620009ed60408e01620008bb565b9950620009fd60608e01620008bb565b985062000a0d60808e01620008d1565b975062000a1d60a08e01620008d1565b965062000a2d60c08e01620008d1565b955060e08d015191508082111562000a4457600080fd5b62000a528e838f016200082e565b94506101008d015191508082111562000a6a57600080fd5b62000a788e838f01620008e9565b93506101208d015191508082111562000a9057600080fd5b5062000a9f8d828e01620008e9565b9150509295989b9194979a5092959850565b600181811c9082168062000ac657607f821691505b60208210810362000ae757634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000b3b57600081815260208120601f850160051c8101602086101562000b165750805b601f850160051c820191505b8181101562000b375782815560010162000b22565b5050505b505050565b81516001600160401b0381111562000b5c5762000b5c620007e5565b62000b748162000b6d845462000ab1565b8462000aed565b602080601f83116001811462000bac576000841562000b935750858301515b600019600386901b1c1916600185901b17855562000b37565b600085815260208120601f198616915b8281101562000bdd5788860151825594840194600190910190840162000bbc565b508582101562000bfc5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b8082018082111562000c385762000c3862000c0c565b92915050565b634e487b7160e01b600052603260045260246000fd5b60006001820162000c695762000c6962000c0c565b5060010190565b6148898062000c806000396000f3fe6080604052600436106103035760003560e01c80636817031b11610190578063b66a0e5d116100dc578063e985e9c511610095578063f07e7fd01161006f578063f07e7fd0146109ff578063f2fde38b14610a1f578063f4e638be14610a3f578063fbfa77cf14610a6757600080fd5b8063e985e9c514610959578063eb5c60f2146109a2578063eee608a4146109cf57600080fd5b8063b66a0e5d146108ba578063b88d4fde146108cf578063b9b8311a146108ef578063c87b56dd14610904578063dc78ac1c14610924578063e8a3d4851461094457600080fd5b80638cba1c6711610149578063926ce44e11610123578063926ce44e1461083e57806395d89b411461086b578063a07c7ce414610880578063a22cb4651461089a57600080fd5b80638cba1c67146107e05780638da5cb5b146108005780638ef79e911461081e57600080fd5b80636817031b146107115780636c19e7831461073157806370a0823114610751578063715018a6146107715780637f06ee06146107865780638462151c146107b357600080fd5b80632977e4b31161024f5780634bf365df1161020857806355367ba9116101e257806355367ba91461067b5780636352211e1461069057806363e60230146106b057806365a46e08146106f157600080fd5b80634bf365df146106265780634e99b80014610647578063530da8ef1461065c57600080fd5b80632977e4b31461057e5780632f745c591461059157806333e364cb146105b15780633c352b0d146105c657806341a5626a146105e657806342842e0e1461060657600080fd5b80631623528f116102bc57806321fe0c641161029657806321fe0c6414610502578063238ac9331461052257806323aed2281461054057806323b872dd1461055e57600080fd5b80631623528f14610483578063167ddf6e146104a357806318160ddd146104de57600080fd5b806301ffc9a71461039457806303120506146103c957806306fdde03146103e9578063081812fc1461040b578063095ea7b314610443578063114ba8ee1461046357600080fd5b3661038f57600e546001600160a01b0316331461038d5760405162461bcd60e51b815260206004820152603c60248201527f466572616c66696c6545786869626974696f6e56343a206f6e6c79206163636560448201527f70742066756e642066726f6d207661756c7420636f6e74726163742e0000000060648201526084015b60405180910390fd5b005b600080fd5b3480156103a057600080fd5b506103b46103af366004613921565b610a87565b60405190151581526020015b60405180910390f35b3480156103d557600080fd5b5061038d6103e4366004613961565b610ad9565b3480156103f557600080fd5b506103fe610b02565b6040516103c091906139cc565b34801561041757600080fd5b5061042b6104263660046139df565b610b94565b6040516001600160a01b0390911681526020016103c0565b34801561044f57600080fd5b5061038d61045e3660046139f8565b610bbb565b34801561046f57600080fd5b5061038d61047e366004613961565b610bd4565b34801561048f57600080fd5b5061038d61049e366004613961565b610bfe565b3480156104af57600080fd5b506104c36104be3660046139df565b610ca7565b604080518251815260209283015192810192909252016103c0565b3480156104ea57600080fd5b506104f4600c5481565b6040519081526020016103c0565b34801561050e57600080fd5b5061038d61051d366004613af6565b610d0a565b34801561052e57600080fd5b506009546001600160a01b031661042b565b34801561054c57600080fd5b50600d5462010000900460ff166103b4565b34801561056a57600080fd5b5061038d610579366004613b2a565b610df4565b61038d61058c366004613b66565b610e47565b34801561059d57600080fd5b506104f46105ac3660046139f8565b611484565b3480156105bd57600080fd5b5061038d61152e565b3480156105d257600080fd5b5061038d6105e1366004613c1e565b6115f1565b3480156105f257600080fd5b5061038d610601366004613c1e565b611791565b34801561061257600080fd5b5061038d610621366004613b2a565b611975565b34801561063257600080fd5b50600d546103b4906301000000900460ff1681565b34801561065357600080fd5b506103fe6119c2565b34801561066857600080fd5b50600d546103b490610100900460ff1681565b34801561068757600080fd5b5061038d611a50565b34801561069c57600080fd5b5061042b6106ab3660046139df565b611b04565b3480156106bc57600080fd5b506103fe6040518060400160405280601581526020017411995c985b199a5b19515e1a1a589a5d1a5bdb958d605a1b81525081565b3480156106fd57600080fd5b5061038d61070c366004613c89565b611b39565b34801561071d57600080fd5b5061038d61072c366004613961565b611e37565b34801561073d57600080fd5b5061038d61074c366004613961565b611ecd565b34801561075d57600080fd5b506104f461076c366004613961565b611f58565b34801561077d57600080fd5b5061038d611fde565b34801561079257600080fd5b506104f46107a13660046139df565b60009081526010602052604090205490565b3480156107bf57600080fd5b506107d36107ce366004613961565b611ff2565b6040516103c09190613d4a565b3480156107ec57600080fd5b5061038d6107fb366004613d8e565b61205e565b34801561080c57600080fd5b506006546001600160a01b031661042b565b34801561082a57600080fd5b5061038d610839366004613e59565b61218d565b34801561084a57600080fd5b506104f4610859366004613961565b60146020526000908152604090205481565b34801561087757600080fd5b506103fe6121fc565b34801561088c57600080fd5b50600d546103b49060ff1681565b3480156108a657600080fd5b5061038d6108b5366004613eba565b61220b565b3480156108c657600080fd5b5061038d61221f565b3480156108db57600080fd5b5061038d6108ea366004613ef1565b61223c565b3480156108fb57600080fd5b5061038d61228a565b34801561091057600080fd5b506103fe61091f3660046139df565b61232b565b34801561093057600080fd5b5061038d61093f366004613961565b612439565b34801561095057600080fd5b506103fe612465565b34801561096557600080fd5b506103b4610974366004613f6c565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b3480156109ae57600080fd5b506104f46109bd3660046139df565b6000908152600f602052604090205490565b3480156109db57600080fd5b506103b46109ea366004613961565b60076020526000908152604090205460ff1681565b348015610a0b57600080fd5b5060085461042b906001600160a01b031681565b348015610a2b57600080fd5b5061038d610a3a366004613961565b612472565b348015610a4b57600080fd5b50600d5461042b9064010000000090046001600160a01b031681565b348015610a7357600080fd5b50600e5461042b906001600160a01b031681565b60006001600160e01b031982166380ac58cd60e01b1480610ab857506001600160e01b03198216635b5e139f60e01b145b80610ad357506301ffc9a760e01b6001600160e01b03198316145b92915050565b610ae16124eb565b6001600160a01b03166000908152600760205260409020805460ff19169055565b606060008054610b1190613f9f565b80601f0160208091040260200160405190810160405280929190818152602001828054610b3d90613f9f565b8015610b8a5780601f10610b5f57610100808354040283529160200191610b8a565b820191906000526020600020905b815481529060010190602001808311610b6d57829003601f168201915b5050505050905090565b6000610b9f82612545565b506000908152600460205260409020546001600160a01b031690565b81610bc58161256a565b610bcf838361263c565b505050565b610bdc6124eb565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b610c066124eb565b6001600160a01b038116610c795760405162461bcd60e51b815260206004820152603460248201527f466572616c66696c6545786869626974696f6e56343a20636f737452656365696044820152737665725f206973207a65726f206164647265737360601b6064820152608401610384565b600d80546001600160a01b0390921664010000000002640100000000600160c01b0319909216919091179055565b6040805180820190915260008082526020820152610cc48261274c565b610ce05760405162461bcd60e51b815260040161038490613fd9565b50600090815260116020908152604091829020825180840190935280548352600101549082015290565b600d5460ff16610d715760405162461bcd60e51b815260206004820152602c60248201527f466572616c66696c6545786869626974696f6e56343a20746f6b656e2069732060448201526b6e6f74206275726e61626c6560a01b6064820152608401610384565b60005b8151811015610df057610da033838381518110610d9357610d93614010565b6020026020010151612769565b610dbc5760405162461bcd60e51b815260040161038490614026565b610dde828281518110610dd157610dd1614010565b60200260200101516127e8565b80610de881614089565b915050610d74565b5050565b826001600160a01b0381163314610e0e57610e0e3361256a565b306001600160a01b03841603610e365760405162461bcd60e51b8152600401610384906140a2565b610e418484846128be565b50505050565b600d5462010000900460ff16610eb25760405162461bcd60e51b815260206004820152602a60248201527f466572616c66696c6545786869626974696f6e56343a2073616c65206973206e6044820152691bdd081cdd185c9d195960b21b6064820152608401610384565b610eba6128ef565b610ec38161296a565b610ed360e0820160c083016140ff565b610f425780353414610f3d5760405162461bcd60e51b815260206004820152602d60248201527f466572616c66696c6545786869626974696f6e56343a20696e76616c6964207060448201526c185e5b595b9d08185b5bdd5b9d609a1b6064820152608401610384565b610fab565b600e54604051632eeee16360e01b81526001600160a01b0390911690632eeee16390610f78908790879087908790600401614304565b600060405180830381600087803b158015610f9257600080fd5b505af1158015610fa6573d6000803e3d6000fd5b505050505b6000463083604051602001610fc293929190614336565b604051602081830303815290604052805190602001209050610fe681868686612ac3565b61100357604051638baa579f60e01b815260040160405180910390fd5b600060208301358335111561103d5761101f6080840184614369565b9050611030602085013585356143b2565b61103a91906143c5565b90505b60008060005b6110506080870187614369565b90508110156113a4576110a63061106d6080890160608a01613961565b61107a60808a018a614369565b8581811061108a5761108a614010565b9050602002013560405180602001604052806000815250612b1b565b60006110b560a0880188614369565b838181106110c5576110c5614010565b90506020028101906110d791906143e7565b808060200260200160405190810160405280939291908181526020016000905b828210156111235761111460408302860136819003810190614430565b815260200190600101906110f7565b50505050509050600085905060005b8251811080156111425750600082115b156112275760006014600085848151811061115f5761115f614010565b6020026020010151600001516001600160a01b03166001600160a01b0316815260200190815260200160002054905060008382101561119e57816111a0565b835b90506111ac8188614486565b965080601460008786815181106111c5576111c5614010565b6020026020010151600001516001600160a01b03166001600160a01b03168152602001908152602001600020600082825461120091906143b2565b90915550611210905081856143b2565b93505050808061121f90614089565b915050611132565b5080156113235760005b825181101561132157600083828151811061124e5761124e614010565b6020026020010151600001519050600061271085848151811061127357611273614010565b6020026020010151602001518561128a9190614499565b61129491906143c5565b600d549091506001600160a01b036401000000009091048116908316036112c8576112bf8188614486565b9650505061130f565b6112d28189614486565b6040519098506001600160a01b0383169082156108fc029083906000818181858888f1935050505015801561130b573d6000803e3d6000fd5b5050505b8061131981614089565b915050611231565b505b6113306080890189614369565b8481811061134057611340614010565b9050602002013588606001602081019061135a9190613961565b6001600160a01b03167f0475389cd69b8d3163620b43283bf74e8fc71020c3c6cef2a529b5c405e9687f60405160405180910390a35050808061139c90614089565b915050611043565b506113af8183614486565b6113be602087013587356143b2565b10156114215760405162461bcd60e51b815260206004820152602c60248201527f466572616c66696c6545786869626974696f6e56343a20746f74616c2062707360448201526b0206f7665722031302c3030360a41b6064820152608401610384565b600061142e8387356143b2565b9050801561147957600d546040516401000000009091046001600160a01b0316906108fc8315029083906000818181858888f19350505050158015611477573d6000803e3d6000fd5b505b505050505050505050565b600061148f83611f58565b82106114f15760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610384565b6001600160a01b038316600090815260126020526040902080548390811061151b5761151b614010565b9060005260206000200154905092915050565b6115366124eb565b600d546301000000900460ff16156115605760405162461bcd60e51b8152600401610384906144b0565b600d5462010000900460ff16156115d65760405162461bcd60e51b815260206004820152603460248201527f466572616c66696c6545786869626974696f6e56343a205f73656c6c696e6720604482015273726571756972656420746f2062652066616c736560601b6064820152608401610384565b6115de6128ef565b600d805462ff0000191662010000179055565b6115f96124eb565b828114611619576040516313086eff60e21b815260040160405180910390fd5b60005b8381101561178a57600085858381811061163857611638614010565b905060200201602081019061164d9190613961565b6001600160a01b03160361167457604051630107349760e51b815260040160405180910390fd5b82828281811061168657611686614010565b905060200201356000036116ad57604051636745f8fb60e01b815260040160405180910390fd5b6000601460008787858181106116c5576116c5614010565b90506020020160208101906116da9190613961565b6001600160a01b03166001600160a01b0316815260200190815260200160002054111561171a576040516328547bdf60e01b815260040160405180910390fd5b82828281811061172c5761172c614010565b905060200201356014600087878581811061174957611749614010565b905060200201602081019061175e9190613961565b6001600160a01b031681526020810191909152604001600020558061178281614089565b91505061161c565b5050505050565b6117996124eb565b8281146117b9576040516313086eff60e21b815260040160405180910390fd5b60005b8381101561178a5760008383838181106117d8576117d8614010565b90506020020160208101906117ed9190613961565b6001600160a01b03160361181457604051630107349760e51b815260040160405180910390fd5b60006014600085858581811061182c5761182c614010565b90506020020160208101906118419190613961565b6001600160a01b03166001600160a01b03168152602001908152602001600020541115611881576040516328547bdf60e01b815260040160405180910390fd5b6014600086868481811061189757611897614010565b90506020020160208101906118ac9190613961565b6001600160a01b03166001600160a01b0316815260200190815260200160002054601460008585858181106118e3576118e3614010565b90506020020160208101906118f89190613961565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506014600086868481811061193257611932614010565b90506020020160208101906119479190613961565b6001600160a01b0316815260208101919091526040016000908120558061196d81614089565b9150506117bc565b826001600160a01b038116331461198f5761198f3361256a565b306001600160a01b038416036119b75760405162461bcd60e51b8152600401610384906140a2565b610e41848484612b4e565b600a80546119cf90613f9f565b80601f01602080910402602001604051908101604052809291908181526020018280546119fb90613f9f565b8015611a485780601f10611a1d57610100808354040283529160200191611a48565b820191906000526020600020905b815481529060010190602001808311611a2b57829003601f168201915b505050505081565b611a586124eb565b600d546301000000900460ff1615611a825760405162461bcd60e51b8152600401610384906144b0565b600d5462010000900460ff16611af65760405162461bcd60e51b815260206004820152603360248201527f466572616c66696c6545786869626974696f6e56343a205f73656c6c696e6720604482015272726571756972656420746f206265207472756560681b6064820152608401610384565b600d805462ff000019169055565b6000818152600260205260408120546001600160a01b031680610ad35760405162461bcd60e51b815260040161038490613fd9565b611b416124eb565b60008251118015611b53575060008151115b611bd35760405162461bcd60e51b815260206004820152604560248201527f466572616c66696c6545786869626974696f6e56343a2073657269657349647360448201527f206f7220726563697069656e74416464726573736573206c656e677468206973606482015264207a65726f60d81b608482015260a401610384565b8051825114611c5f5760405162461bcd60e51b815260206004820152604c60248201527f466572616c66696c6545786869626974696f6e56343a2073657269657349647360448201527f206c656e67746820697320646966666572656e742066726f6d2072656369706960648201526b656e7441646472657373657360a01b608482015260a401610384565b611c67611a50565b30600081815260126020908152604080832080548251818502810185019093528083529192909190830182828015611cbe57602002820191906000526020600020905b815481526020019060010190808311611caa575b5050505050905060005b8151811015611dba576000828281518110611ce557611ce5614010565b602090810291909101810151600081815260118352604080822081518083019092528054825260010154938101939093529092505b87518161ffff161015611da457878161ffff1681518110611d3d57611d3d614010565b6020026020010151826000015103611d92576000878261ffff1681518110611d6757611d67614010565b60200260200101519050611d8c87828660405180602001604052806000815250612b1b565b50611da4565b80611d9c81614504565b915050611d1a565b5050508080611db290614089565b915050611cc8565b50611dc482611f58565b15610e415760405162461bcd60e51b815260206004820152603c60248201527f466572616c66696c6545786869626974696f6e56343a20546f6b656e20666f7260448201527f2073616c652062616c616e63652068617320746f206265207a65726f000000006064820152608401610384565b611e3f6124eb565b6001600160a01b038116611eab5760405162461bcd60e51b815260206004820152602d60248201527f466572616c66696c6545786869626974696f6e56343a207661756c745f20697360448201526c207a65726f206164647265737360981b6064820152608401610384565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b611ed56124eb565b6001600160a01b038116611f365760405162461bcd60e51b815260206004820152602260248201527f45434453415369676e3a207369676e65725f206973207a65726f206164647265604482015261737360f01b6064820152608401610384565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160a01b038216611fc25760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610384565b506001600160a01b031660009081526003602052604090205490565b611fe66124eb565b611ff06000612b69565b565b6001600160a01b03811660009081526012602090815260409182902080548351818402810184019094528084526060939283018282801561205257602002820191906000526020600020905b81548152602001906001019080831161203e575b50505050509050919050565b3360009081526007602052604090205460ff168061208657506006546001600160a01b031633145b61208f57600080fd5b600d546301000000900460ff166121065760405162461bcd60e51b815260206004820152603560248201527f466572616c66696c6545786869626974696f6e56343a20636f6e747261637420604482015274191bd95cdb89dd08185b1b1bddc81d1bc81b5a5b9d605a1b6064820152608401610384565b60005b81811015610bcf5761217b83838381811061212657612126614010565b9050606002016000013584848481811061214257612142614010565b9050606002016020013585858581811061215e5761215e614010565b90506060020160400160208101906121769190613961565b612bbb565b8061218581614089565b915050612109565b6121956124eb565b60008151116121f05760405162461bcd60e51b815260206004820152602160248201527f4552433732314d657461646174613a20626173655552495f20697320656d70746044820152607960f81b6064820152608401610384565b600a610df08282614573565b606060018054610b1190613f9f565b816122158161256a565b610bcf8383612d3d565b6122276124eb565b600d805463ff00000019169055611ff061152e565b836001600160a01b0381163314612256576122563361256a565b306001600160a01b0385160361227e5760405162461bcd60e51b8152600401610384906140a2565b61178a85858585612d48565b6122926124eb565b61229a611a50565b306000908152601260209081526040808320805482518185028101850190935280835291929091908301828280156122f157602002820191906000526020600020905b8154815260200190600101908083116122dd575b5050505050905060005b8151811015610df057612319828281518110610dd157610dd1614010565b8061232381614089565b9150506122fb565b60606000600a805461233c90613f9f565b90501161239a5760405162461bcd60e51b815260206004820152602660248201527f4552433732314d657461646174613a205f746f6b656e4261736555524920697360448201526520656d70747960d01b6064820152608401610384565b6123a38261274c565b6124075760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610384565b600a61241283612d7a565b604051602001612423929190614632565b6040516020818303038152906040529050919050565b6124416124eb565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b600b80546119cf90613f9f565b61247a6124eb565b6001600160a01b0381166124df5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610384565b6124e881612b69565b50565b6006546001600160a01b03163314611ff05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610384565b61254e8161274c565b6124e85760405162461bcd60e51b815260040161038490613fd9565b6008546001600160a01b03163b156124e857600854604051633185c44d60e21b81523060048201526001600160a01b0383811660248301529091169063c617113490604401602060405180830381865afa1580156125cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125f091906146c6565b6124e85760405162461bcd60e51b815260206004820152601760248201527f6f70657261746f72206973206e6f7420616c6c6f7765640000000000000000006044820152606401610384565b600061264782611b04565b9050806001600160a01b0316836001600160a01b0316036126b45760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610384565b336001600160a01b03821614806126d057506126d08133610974565b6127425760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610384565b610bcf8383612e0d565b6000908152600260205260409020546001600160a01b0316151590565b60008061277583611b04565b9050806001600160a01b0316846001600160a01b031614806127bc57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806127e05750836001600160a01b03166127d584610b94565b6001600160a01b0316145b949350505050565b6127f18161274c565b61280d5760405162461bcd60e51b815260040161038490613fd9565b600081815260116020908152604080832081518083018352815480825260019283015482860152855260109093529083208054929391929091906128529084906143b2565b925050819055506001600c600082825461286c91906143b2565b909155505060008281526011602052604081208181556001015561288f82612e7b565b60405182907fbde7938970372996ff103863625e348ef2bf8f38a5b02181be75aafef17c23d590600090a25050565b6128c83382612769565b6128e45760405162461bcd60e51b815260040161038490614026565b610bcf838383612f1e565b60006128fa30611f58565b9050600081116124e85760405162461bcd60e51b815260206004820152603560248201527f466572616c66696c6545786869626974696f6e56343a204e6f20746f6b656e206044820152741bdddb995908189e481d1a194818dbdb9d1c9858dd605a1b6064820152608401610384565b60006129796080830183614369565b9050116129d45760405162461bcd60e51b8152602060048201526024808201527f466572616c66696c6553616c65446174613a20746f6b656e49647320697320656044820152636d70747960e01b6064820152608401610384565b6129e160a0820182614369565b90506129f06080830183614369565b905014612a655760405162461bcd60e51b815260206004820152603d60248201527f466572616c66696c6553616c65446174613a20746f6b656e49647320616e642060448201527f726576656e7565536861726573206c656e677468206d69736d617463680000006064820152608401610384565b428160400135116124e85760405162461bcd60e51b815260206004820152602260248201527f466572616c66696c6553616c65446174613a2073616c65206973206578706972604482015261195960f21b6064820152608401610384565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c859052603c81208190612b009084878761308f565b6009546001600160a01b039081169116149695505050505050565b612b26848484612f1e565b612b32848484846130b7565b610e415760405162461bcd60e51b8152600401610384906146e3565b610bcf8383836040518060200160405280600081525061223c565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000838152600f60205260409020541515612bd584612d7a565b604051602001612be59190614735565b60405160208183030381529060405290612c125760405162461bcd60e51b815260040161038491906139cc565b506000838152600f602090815260408083205460109092529091205410612c8d5760405162461bcd60e51b815260206004820152602960248201527f466572616c66696c6545786869626974696f6e56343a206e6f20736c6f747320604482015268617661696c61626c6560b81b6064820152608401610384565b6001600c6000828254612ca09190614486565b90915550506000838152601060205260408120805460019290612cc4908490614486565b9091555050604080518082018252848152602080820185815260008681526011909252929020905181559051600190910155612d0081836131b5565b8183826001600160a01b03167f407d7da1d3b2b1871fbfa2b5b1c4657a3cc5711d3023c552798551c7ee301eea60405160405180910390a4505050565b610df0338383613330565b612d523383612769565b612d6e5760405162461bcd60e51b815260040161038490614026565b610e4184848484612b1b565b60606000612d87836133fe565b60010190506000816001600160401b03811115612da657612da6613a22565b6040519080825280601f01601f191660200182016040528015612dd0576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084612dda575b509392505050565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190612e4282611b04565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000612e8682611b04565b9050612e968160008460016134d6565b612e9f82611b04565b600083815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526003845282852080546000190190558785526002909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b826001600160a01b0316612f3182611b04565b6001600160a01b031614612f575760405162461bcd60e51b815260040161038490614792565b6001600160a01b038216612fb95760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610384565b612fc683838360016134d6565b826001600160a01b0316612fd982611b04565b6001600160a01b031614612fff5760405162461bcd60e51b815260040161038490614792565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60008060006130a0878787876135ed565b915091506130ad816136b1565b5095945050505050565b60006001600160a01b0384163b156131ad57604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906130fb9033908990889088906004016147d7565b6020604051808303816000875af1925050508015613136575060408051601f3d908101601f191682019092526131339181019061480a565b60015b613193573d808015613164576040519150601f19603f3d011682016040523d82523d6000602084013e613169565b606091505b50805160000361318b5760405162461bcd60e51b8152600401610384906146e3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506127e0565b5060016127e0565b6001600160a01b03821661320b5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610384565b6132148161274c565b156132615760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610384565b61326f6000838360016134d6565b6132788161274c565b156132c55760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610384565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b816001600160a01b0316836001600160a01b0316036133915760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610384565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b831061343d5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310613469576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061348757662386f26fc10000830492506010015b6305f5e100831061349f576305f5e100830492506008015b61271083106134b357612710830492506004015b606483106134c5576064830492506002015b600a8310610ad35760010192915050565b60018111156135455760405162461bcd60e51b815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e7365637574697665207472604482015274185b9cd9995c9cc81b9bdd081cdd5c1c1bdc9d1959605a1b6064820152608401610384565b816001600160a01b038516158015906135705750836001600160a01b0316856001600160a01b031614155b1561357f5761357f85826137fb565b6001600160a01b038416158015906135a95750846001600160a01b0316846001600160a01b031614155b1561178a576001600160a01b03841660009081526012602090815260408083208054600181018255908452828420810185905584845260139092529091205561178a565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561362457506000905060036136a8565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613678573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166136a1576000600192509250506136a8565b9150600090505b94509492505050565b60008160048111156136c5576136c5614827565b036136cd5750565b60018160048111156136e1576136e1614827565b0361372e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610384565b600281600481111561374257613742614827565b0361378f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610384565b60038160048111156137a3576137a3614827565b036124e85760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610384565b6000600161380884611f58565b61381291906143b2565b6000838152601360205260409020549091508082146138b9576001600160a01b038416600090815260126020526040812080548490811061385557613855614010565b906000526020600020015490508060126000876001600160a01b03166001600160a01b03168152602001908152602001600020838154811061389957613899614010565b600091825260208083209091019290925591825260139052604090208190555b60008381526013602090815260408083208390556001600160a01b0387168352601290915290208054806138ef576138ef61483d565b6001900381819060005260206000200160009055905550505050565b6001600160e01b0319811681146124e857600080fd5b60006020828403121561393357600080fd5b813561393e8161390b565b9392505050565b80356001600160a01b038116811461395c57600080fd5b919050565b60006020828403121561397357600080fd5b61393e82613945565b60005b8381101561399757818101518382015260200161397f565b50506000910152565b600081518084526139b881602086016020860161397c565b601f01601f19169290920160200192915050565b60208152600061393e60208301846139a0565b6000602082840312156139f157600080fd5b5035919050565b60008060408385031215613a0b57600080fd5b613a1483613945565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613a6057613a60613a22565b604052919050565b60006001600160401b03821115613a8157613a81613a22565b5060051b60200190565b600082601f830112613a9c57600080fd5b81356020613ab1613aac83613a68565b613a38565b82815260059290921b84018101918181019086841115613ad057600080fd5b8286015b84811015613aeb5780358352918301918301613ad4565b509695505050505050565b600060208284031215613b0857600080fd5b81356001600160401b03811115613b1e57600080fd5b6127e084828501613a8b565b600080600060608486031215613b3f57600080fd5b613b4884613945565b9250613b5660208501613945565b9150604084013590509250925092565b60008060008060808587031215613b7c57600080fd5b8435935060208501359250604085013560ff81168114613b9b57600080fd5b915060608501356001600160401b03811115613bb657600080fd5b850160e08188031215613bc857600080fd5b939692955090935050565b60008083601f840112613be557600080fd5b5081356001600160401b03811115613bfc57600080fd5b6020830191508360208260051b8501011115613c1757600080fd5b9250929050565b60008060008060408587031215613c3457600080fd5b84356001600160401b0380821115613c4b57600080fd5b613c5788838901613bd3565b90965094506020870135915080821115613c7057600080fd5b50613c7d87828801613bd3565b95989497509550505050565b60008060408385031215613c9c57600080fd5b82356001600160401b0380821115613cb357600080fd5b613cbf86838701613a8b565b9350602091508185013581811115613cd657600080fd5b85019050601f81018613613ce957600080fd5b8035613cf7613aac82613a68565b81815260059190911b82018301908381019088831115613d1657600080fd5b928401925b82841015613d3b57613d2c84613945565b82529284019290840190613d1b565b80955050505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015613d8257835183529284019291840191600101613d66565b50909695505050505050565b60008060208385031215613da157600080fd5b82356001600160401b0380821115613db857600080fd5b818501915085601f830112613dcc57600080fd5b813581811115613ddb57600080fd5b866020606083028501011115613df057600080fd5b60209290920196919550909350505050565b60006001600160401b03831115613e1b57613e1b613a22565b613e2e601f8401601f1916602001613a38565b9050828152838383011115613e4257600080fd5b828260208301376000602084830101529392505050565b600060208284031215613e6b57600080fd5b81356001600160401b03811115613e8157600080fd5b8201601f81018413613e9257600080fd5b6127e084823560208401613e02565b80151581146124e857600080fd5b803561395c81613ea1565b60008060408385031215613ecd57600080fd5b613ed683613945565b91506020830135613ee681613ea1565b809150509250929050565b60008060008060808587031215613f0757600080fd5b613f1085613945565b9350613f1e60208601613945565b92506040850135915060608501356001600160401b03811115613f4057600080fd5b8501601f81018713613f5157600080fd5b613f6087823560208401613e02565b91505092959194509250565b60008060408385031215613f7f57600080fd5b613f8883613945565b9150613f9660208401613945565b90509250929050565b600181811c90821680613fb357607f821691505b602082108103613fd357634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526018908201527f4552433732313a20696e76616c696420746f6b656e2049440000000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60006001820161409b5761409b614073565b5060010190565b6020808252603e908201527f466572616c66696c6545786869626974696f6e56343a20436f6e74726163742060408201527f69736e277420616c6c6f77656420746f207265636569766520746f6b656e0000606082015260800190565b60006020828403121561411157600080fd5b813561393e81613ea1565b6000808335601e1984360301811261413357600080fd5b83016020810192503590506001600160401b0381111561415257600080fd5b8060051b3603821315613c1757600080fd5b8183526000602080850194508260005b858110156141aa576001600160a01b0361418d83613945565b168752818301358388015260409687019690910190600101614174565b509495945050505050565b81835260006020808501808196508560051b810191508460005b8781101561423c5782840389528135601e198836030181126141f057600080fd5b870185810190356001600160401b0381111561420b57600080fd5b8060061b360382131561421d57600080fd5b614228868284614164565b9a87019a95505050908401906001016141cf565b5091979650505050505050565b8035825260208082013590830152604080820135908301526001600160a01b0361427560608301613945565b166060830152600061428a608083018361411c565b60e06080860181905285018190526101006001600160fb1b038211156142af57600080fd5b8160051b915081838288013781860192506142cd60a086018661411c565b9250818785030160a08801526142e682850184836141b5565b93505050506142f760c08401613eaf565b80151560c0860152612e05565b84815283602082015260ff8316604082015260806060820152600061432c6080830184614249565b9695505050505050565b8381526001600160a01b038316602082015260606040820181905260009061436090830184614249565b95945050505050565b6000808335601e1984360301811261438057600080fd5b8301803591506001600160401b0382111561439a57600080fd5b6020019150600581901b3603821315613c1757600080fd5b81810381811115610ad357610ad3614073565b6000826143e257634e487b7160e01b600052601260045260246000fd5b500490565b6000808335601e198436030181126143fe57600080fd5b8301803591506001600160401b0382111561441857600080fd5b6020019150600681901b3603821315613c1757600080fd5b60006040828403121561444257600080fd5b604051604081018181106001600160401b038211171561446457614464613a22565b60405261447083613945565b8152602083013560208201528091505092915050565b80820180821115610ad357610ad3614073565b8082028115828204841417610ad357610ad3614073565b60208082526034908201527f466572616c66696c6545786869626974696f6e56343a206d696e7461626c6520604082015273726571756972656420746f2062652066616c736560601b606082015260800190565b600061ffff80831681810361451b5761451b614073565b6001019392505050565b601f821115610bcf57600081815260208120601f850160051c8101602086101561454c5750805b601f850160051c820191505b8181101561456b57828155600101614558565b505050505050565b81516001600160401b0381111561458c5761458c613a22565b6145a08161459a8454613f9f565b84614525565b602080601f8311600181146145d557600084156145bd5750858301515b600019600386901b1c1916600185901b17855561456b565b600085815260208120601f198616915b82811015614604578886015182559484019460019091019084016145e5565b50858210156146225787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600080845461464081613f9f565b60018281168015614658576001811461466d5761469c565b60ff198416875282151583028701945061469c565b8860005260208060002060005b858110156146935781548a82015290840190820161467a565b50505082870194505b50602f60f81b8452865192506146b88382860160208a0161397c565b919092010195945050505050565b6000602082840312156146d857600080fd5b815161393e81613ea1565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b7f466572616c66696c6545786869626974696f6e56343a2073657269657349642081526e03237b2b9b713ba1032bc34b9ba1d1608d1b60208201526000825161478581602f85016020870161397c565b91909101602f0192915050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061432c908301846139a0565b60006020828403121561481c57600080fd5b815161393e8161390b565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603160045260246000fdfea2646970667358221220ed1f66c49ad118093466f1603acb917269b39b39f0eb10de0047baaf913089d064736f6c63430008110033", } // FeralfileExhibitionV4ABI is the input ABI used to generate the binding from. diff --git a/go-binding/feralfile-exhibition-v4_2/abi.go b/go-binding/feralfile-exhibition-v4_2/abi.go new file mode 100644 index 0000000..28f2837 --- /dev/null +++ b/go-binding/feralfile-exhibition-v4_2/abi.go @@ -0,0 +1,2812 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package feralfilev4_2 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// FeralfileExhibitionV4Artwork is an auto generated low-level Go binding around an user-defined struct. +type FeralfileExhibitionV4Artwork struct { + SeriesId *big.Int + TokenId *big.Int +} + +// FeralfileExhibitionV4MintData is an auto generated low-level Go binding around an user-defined struct. +type FeralfileExhibitionV4MintData struct { + SeriesId *big.Int + TokenId *big.Int + Owner common.Address +} + +// IFeralfileSaleDataRevenueShare is an auto generated low-level Go binding around an user-defined struct. +type IFeralfileSaleDataRevenueShare struct { + Recipient common.Address + Bps *big.Int +} + +// IFeralfileSaleDataSaleData is an auto generated low-level Go binding around an user-defined struct. +type IFeralfileSaleDataSaleData struct { + Price *big.Int + Cost *big.Int + ExpiryTime *big.Int + Destination common.Address + TokenIds []*big.Int + RevenueShares [][]IFeralfileSaleDataRevenueShare + PayByVaultContract bool +} + +// IFeralfileSaleDataV2SaleDataV2 is an auto generated low-level Go binding around an user-defined struct. +type IFeralfileSaleDataV2SaleDataV2 struct { + Price *big.Int + Cost *big.Int + ExpiryTime *big.Int + Destination common.Address + Nonce *big.Int + SeriesID *big.Int + Quantity uint16 + RevenueShares []IFeralfileSaleDataRevenueShare + PayByVaultContract bool +} + +// FeralfileExhibitionV42MetaData contains all meta data concerning the FeralfileExhibitionV42 contract. +var FeralfileExhibitionV42MetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"burnable_\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"bridgeable_\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"signer_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"vault_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"costReceiver_\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"contractURI_\",\"type\":\"string\"},{\"internalType\":\"uint256[]\",\"name\":\"seriesIds_\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"seriesMaxSupplies_\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"seriesNextSaleTokenIds_\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AdvanceAddressAlreadyUsed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FunctionNotSupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentNonce\",\"type\":\"uint256\"}],\"name\":\"InvalidAccountNonce\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAdvanceAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAdvanceAddressesAndAmounts\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAdvanceAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenIDNotFound\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"BurnArtwork\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"BuyArtwork\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"seriesId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"NewArtwork\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"OperatorFilterRegistry\",\"outputs\":[{\"internalType\":\"contractIOperatorFilterRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trustee\",\"type\":\"address\"}],\"name\":\"addTrustee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"advances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"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\":[],\"name\":\"bridgeable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"}],\"name\":\"burnArtworks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"burnable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"codeVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"contractURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"costReceiver\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"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\":\"getArtwork\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"seriesId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"internalType\":\"structFeralfileExhibitionV4.Artwork\",\"name\":\"\",\"type\":\"tuple\"}],\"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\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"seriesId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"internalType\":\"structFeralfileExhibitionV4.MintData[]\",\"name\":\"data\",\"type\":\"tuple[]\"}],\"name\":\"mintArtworks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mintable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseSale\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trustee\",\"type\":\"address\"}],\"name\":\"removeTrustee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"oldAddresses_\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"newAddresses_\",\"type\":\"address[]\"}],\"name\":\"replaceAdvanceAddresses\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resumeSale\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"selling\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"seriesId\",\"type\":\"uint256\"}],\"name\":\"seriesMaxSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"seriesId\",\"type\":\"uint256\"}],\"name\":\"seriesTotalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"addresses_\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts_\",\"type\":\"uint256[]\"}],\"name\":\"setAdvanceSetting\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"costReceiver_\",\"type\":\"address\"}],\"name\":\"setCostReceiver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer_\",\"type\":\"address\"}],\"name\":\"setSigner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"baseURI_\",\"type\":\"string\"}],\"name\":\"setTokenBaseURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vault_\",\"type\":\"address\"}],\"name\":\"setVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"signer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startSale\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopSaleAndBurn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"seriesIds\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"recipientAddresses\",\"type\":\"address[]\"}],\"name\":\"stopSaleAndTransfer\",\"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\":[],\"name\":\"tokenBaseURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"tokensOfOwner\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"trustees\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operatorFilterRegisterAddress\",\"type\":\"address\"}],\"name\":\"updateOperatorFilterRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"contractIFeralfileVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vaultV2\",\"outputs\":[{\"internalType\":\"contractIFeralfileVaultV2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"r_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s_\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"v_\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cost\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiryTime\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"seriesID\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"quantity\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"bps\",\"type\":\"uint256\"}],\"internalType\":\"structIFeralfileSaleData.RevenueShare[]\",\"name\":\"revenueShares\",\"type\":\"tuple[]\"},{\"internalType\":\"bool\",\"name\":\"payByVaultContract\",\"type\":\"bool\"}],\"internalType\":\"structIFeralfileSaleDataV2.SaleDataV2\",\"name\":\"saleData_\",\"type\":\"tuple\"}],\"name\":\"buyBulkArtworks\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cost\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiryTime\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"bps\",\"type\":\"uint256\"}],\"internalType\":\"structIFeralfileSaleData.RevenueShare[][]\",\"name\":\"revenueShares\",\"type\":\"tuple[][]\"},{\"internalType\":\"bool\",\"name\":\"payByVaultContract\",\"type\":\"bool\"}],\"internalType\":\"structIFeralfileSaleData.SaleData\",\"name\":\"\",\"type\":\"tuple\"}],\"name\":\"buyArtworks\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}]", + Bin: "0x6080604052600880546001600160a01b0319166daaeb6d7670e522a718067333cd4e179055600d805463ff000000191663010000001790553480156200004457600080fd5b506040516200565438038062005654833981016040819052620000679162000a21565b8a8a8a8a8a8a8a8a8a8a89898989898989898989858a8a60006200008c838262000c3e565b5060016200009b828262000c3e565b505050620000b8620000b26200083f60201b60201c565b62000843565b6008546001600160a01b03163b156200014557600854604051633e9f1edf60e11b8152306004820152733cc6cdda760b79bafa08df41ecfa224f810dceb660248201526001600160a01b0390911690637d3e3dbe90604401600060405180830381600087803b1580156200012b57600080fd5b505af115801562000140573d6000803e3d6000fd5b505050505b6001600160a01b038116620001ac5760405162461bcd60e51b815260206004820152602260248201527f45434453415369676e3a207369676e65725f206973207a65726f206164647265604482015261737360f01b60648201526084015b60405180910390fd5b600980546001600160a01b0319166001600160a01b039290921691909117905589516200022a5760405162461bcd60e51b815260206004820152602560248201527f466572616c66696c6545786869626974696f6e56343a206e616d655f20697320604482015264656d70747960d81b6064820152608401620001a3565b60008951116200028d5760405162461bcd60e51b815260206004820152602760248201527f466572616c66696c6545786869626974696f6e56343a2073796d626f6c5f20696044820152667320656d70747960c81b6064820152608401620001a3565b6001600160a01b0385166200030b5760405162461bcd60e51b815260206004820152603460248201527f466572616c66696c6545786869626974696f6e56343a207661756c744164647260448201527f6573735f206973207a65726f20616464726573730000000000000000000000006064820152608401620001a3565b6001600160a01b038416620003895760405162461bcd60e51b815260206004820152603460248201527f466572616c66696c6545786869626974696f6e56343a20636f7374526563656960448201527f7665725f206973207a65726f20616464726573730000000000000000000000006064820152608401620001a3565b6000835111620003f15760405162461bcd60e51b815260206004820152602c60248201527f466572616c66696c6545786869626974696f6e56343a20636f6e74726163745560448201526b52495f20697320656d70747960a01b6064820152608401620001a3565b6000825111620004575760405162461bcd60e51b815260206004820152602a60248201527f466572616c66696c6545786869626974696f6e56343a207365726965734964736044820152695f20697320656d70747960b01b6064820152608401620001a3565b6000815111620004c55760405162461bcd60e51b815260206004820152603260248201527f466572616c66696c6545786869626974696f6e56343a205f7365726965734d6160448201527178537570706c69657320697320656d70747960701b6064820152608401620001a3565b8051825114620005585760405162461bcd60e51b815260206004820152605160248201527f466572616c66696c6545786869626974696f6e56343a207365726965734d617860448201527f537570706c6965735f20616e64207365726965734964735f206c656e6774687360648201527020617265206e6f74207468652073616d6560781b608482015260a401620001a3565b600d805461ffff191689151561ff001916176101008915150217600160201b600160c01b0319166401000000006001600160a01b038781169190910291909117909155600e80546001600160a01b031916918716919091179055600b620005c0848262000c3e565b5060005b82518110156200077e576000620005dd82600162000d20565b90505b83518110156200069a57838181518110620005ff57620005ff62000d3c565b60200260200101518483815181106200061c576200061c62000d3c565b602002602001015103620006855760405162461bcd60e51b815260206004820152602960248201527f466572616c66696c6545786869626974696f6e56343a206475706c6963617465604482015268081cd95c9a595cd25960ba1b6064820152608401620001a3565b80620006918162000d52565b915050620005e0565b506000828281518110620006b257620006b262000d3c565b602002602001015111620007185760405162461bcd60e51b815260206004820152602660248201527f466572616c66696c6545786869626974696f6e56343a207a65726f206d617820604482015265737570706c7960d01b6064820152608401620001a3565b8181815181106200072d576200072d62000d3c565b6020026020010151600f60008584815181106200074e576200074e62000d3c565b60200260200101518152602001908152602001600020819055508080620007759062000d52565b915050620005c4565b50505050505050505050505050505050505050505085601660006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060005b83518110156200082d57818181518110620007dc57620007dc62000d3c565b602002602001015160176000868481518110620007fd57620007fd62000d3c565b60200260200101518152602001908152602001600020819055508080620008249062000d52565b915050620007bd565b50505050505050505050505062000d6e565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715620008d657620008d662000895565b604052919050565b600082601f830112620008f057600080fd5b81516001600160401b038111156200090c576200090c62000895565b602062000922601f8301601f19168201620008ab565b82815285828487010111156200093757600080fd5b60005b83811015620009575785810183015182820184015282016200093a565b506000928101909101919091529392505050565b805180151581146200097c57600080fd5b919050565b80516001600160a01b03811681146200097c57600080fd5b600082601f830112620009ab57600080fd5b815160206001600160401b03821115620009c957620009c962000895565b8160051b620009da828201620008ab565b9283528481018201928281019087851115620009f557600080fd5b83870192505b8483101562000a1657825182529183019190830190620009fb565b979650505050505050565b60008060008060008060008060008060006101608c8e03121562000a4457600080fd5b8b516001600160401b0381111562000a5b57600080fd5b62000a698e828f01620008de565b60208e0151909c5090506001600160401b0381111562000a8857600080fd5b62000a968e828f01620008de565b9a505062000aa760408d016200096b565b985062000ab760608d016200096b565b975062000ac760808d0162000981565b965062000ad760a08d0162000981565b955062000ae760c08d0162000981565b60e08d01519095506001600160401b0381111562000b0457600080fd5b62000b128e828f01620008de565b6101008e015190955090506001600160401b0381111562000b3257600080fd5b62000b408e828f0162000999565b6101208e015190945090506001600160401b0381111562000b6057600080fd5b62000b6e8e828f0162000999565b6101408e015190935090506001600160401b0381111562000b8e57600080fd5b62000b9c8e828f0162000999565b9150509295989b509295989b9093969950565b600181811c9082168062000bc457607f821691505b60208210810362000be557634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000c3957600081815260208120601f850160051c8101602086101562000c145750805b601f850160051c820191505b8181101562000c355782815560010162000c20565b5050505b505050565b81516001600160401b0381111562000c5a5762000c5a62000895565b62000c728162000c6b845462000baf565b8462000beb565b602080601f83116001811462000caa576000841562000c915750858301515b600019600386901b1c1916600185901b17855562000c35565b600085815260208120601f198616915b8281101562000cdb5788860151825594840194600190910190840162000cba565b508582101562000cfa5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b8082018082111562000d365762000d3662000d0a565b92915050565b634e487b7160e01b600052603260045260246000fd5b60006001820162000d675762000d6762000d0a565b5060010190565b6148d68062000d7e6000396000f3fe6080604052600436106103545760003560e01c806365a46e08116101c6578063a22cb465116100f7578063e985e9c511610095578063f07e7fd01161006f578063f07e7fd014610ab9578063f2fde38b14610ad9578063f4e638be14610af9578063fbfa77cf14610b2157600080fd5b8063e985e9c514610a13578063eb5c60f214610a5c578063eee608a414610a8957600080fd5b8063b9b8311a116100d1578063b9b8311a146109a9578063c87b56dd146109be578063dc78ac1c146109de578063e8a3d485146109fe57600080fd5b8063a22cb46514610954578063b66a0e5d14610974578063b88d4fde1461098957600080fd5b80638462151c116101645780638ef79e911161013e5780638ef79e91146108d8578063926ce44e146108f857806395d89b4114610925578063a07c7ce41461093a57600080fd5b80638462151c1461086d5780638cba1c671461089a5780638da5cb5b146108ba57600080fd5b806370a08231116101a057806370a08231146107d5578063715018a6146107f55780637ecebe001461080a5780637f06ee061461084057600080fd5b806365a46e08146107755780636817031b146107955780636c19e783146107b557600080fd5b80632977e4b3116102a05780634bf365df1161023e57806355367ba91161021857806355367ba9146106df5780635eb9bad6146106f45780636352211e1461071457806363e602301461073457600080fd5b80634bf365df1461068a5780634e99b800146106ab578063530da8ef146106c057600080fd5b80633c352b0d1161027a5780633c352b0d1461061757806341a5626a1461063757806342842e0e146106575780634bda5d891461067757600080fd5b80632977e4b3146105cf5780632f745c59146105e257806333e364cb1461060257600080fd5b80631623528f1161030d57806321fe0c64116102e757806321fe0c6414610553578063238ac9331461057357806323aed2281461059157806323b872dd146105af57600080fd5b80631623528f146104d4578063167ddf6e146104f457806318160ddd1461052f57600080fd5b806301ffc9a7146103e5578063031205061461041a57806306fdde031461043a578063081812fc1461045c578063095ea7b314610494578063114ba8ee146104b457600080fd5b366103e057600e546001600160a01b031633146103de5760405162461bcd60e51b815260206004820152603c60248201527f466572616c66696c6545786869626974696f6e56343a206f6e6c79206163636560448201527f70742066756e642066726f6d207661756c7420636f6e74726163742e0000000060648201526084015b60405180910390fd5b005b600080fd5b3480156103f157600080fd5b506104056104003660046139d4565b610b41565b60405190151581526020015b60405180910390f35b34801561042657600080fd5b506103de610435366004613a14565b610b93565b34801561044657600080fd5b5061044f610bbc565b6040516104119190613a7f565b34801561046857600080fd5b5061047c610477366004613a92565b610c4e565b6040516001600160a01b039091168152602001610411565b3480156104a057600080fd5b506103de6104af366004613aab565b610c75565b3480156104c057600080fd5b506103de6104cf366004613a14565b610c8e565b3480156104e057600080fd5b506103de6104ef366004613a14565b610cb8565b34801561050057600080fd5b5061051461050f366004613a92565b610d61565b60408051825181526020928301519281019290925201610411565b34801561053b57600080fd5b50610545600c5481565b604051908152602001610411565b34801561055f57600080fd5b506103de61056e366004613ba9565b610dc4565b34801561057f57600080fd5b506009546001600160a01b031661047c565b34801561059d57600080fd5b50600d5462010000900460ff16610405565b3480156105bb57600080fd5b506103de6105ca366004613bdd565b610eae565b6103de6105dd366004613c2a565b610f01565b3480156105ee57600080fd5b506105456105fd366004613aab565b610f1a565b34801561060e57600080fd5b506103de610fc4565b34801561062357600080fd5b506103de610632366004613cda565b611087565b34801561064357600080fd5b506103de610652366004613cda565b611227565b34801561066357600080fd5b506103de610672366004613bdd565b61140b565b6103de610685366004613d45565b611458565b34801561069657600080fd5b50600d54610405906301000000900460ff1681565b3480156106b757600080fd5b5061044f611b1e565b3480156106cc57600080fd5b50600d5461040590610100900460ff1681565b3480156106eb57600080fd5b506103de611bac565b34801561070057600080fd5b5060165461047c906001600160a01b031681565b34801561072057600080fd5b5061047c61072f366004613a92565b611c60565b34801561074057600080fd5b5061044f6040518060400160405280601581526020017411995c985b199a5b19515e1a1a589a5d1a5bdb958d605a1b81525081565b34801561078157600080fd5b506103de610790366004613da0565b611c95565b3480156107a157600080fd5b506103de6107b0366004613a14565b611f93565b3480156107c157600080fd5b506103de6107d0366004613a14565b612029565b3480156107e157600080fd5b506105456107f0366004613a14565b6120b4565b34801561080157600080fd5b506103de61213a565b34801561081657600080fd5b50610545610825366004613a14565b6001600160a01b031660009081526015602052604090205490565b34801561084c57600080fd5b5061054561085b366004613a92565b60009081526010602052604090205490565b34801561087957600080fd5b5061088d610888366004613a14565b61214e565b6040516104119190613e61565b3480156108a657600080fd5b506103de6108b5366004613ea5565b6121ba565b3480156108c657600080fd5b506006546001600160a01b031661047c565b3480156108e457600080fd5b506103de6108f3366004613f70565b6122e9565b34801561090457600080fd5b50610545610913366004613a14565b60146020526000908152604090205481565b34801561093157600080fd5b5061044f612358565b34801561094657600080fd5b50600d546104059060ff1681565b34801561096057600080fd5b506103de61096f366004613fd1565b612367565b34801561098057600080fd5b506103de61237b565b34801561099557600080fd5b506103de6109a4366004614008565b612398565b3480156109b557600080fd5b506103de6123e6565b3480156109ca57600080fd5b5061044f6109d9366004613a92565b612487565b3480156109ea57600080fd5b506103de6109f9366004613a14565b612595565b348015610a0a57600080fd5b5061044f6125c1565b348015610a1f57600080fd5b50610405610a2e366004614083565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b348015610a6857600080fd5b50610545610a77366004613a92565b6000908152600f602052604090205490565b348015610a9557600080fd5b50610405610aa4366004613a14565b60076020526000908152604090205460ff1681565b348015610ac557600080fd5b5060085461047c906001600160a01b031681565b348015610ae557600080fd5b506103de610af4366004613a14565b6125ce565b348015610b0557600080fd5b50600d5461047c9064010000000090046001600160a01b031681565b348015610b2d57600080fd5b50600e5461047c906001600160a01b031681565b60006001600160e01b031982166380ac58cd60e01b1480610b7257506001600160e01b03198216635b5e139f60e01b145b80610b8d57506301ffc9a760e01b6001600160e01b03198316145b92915050565b610b9b612647565b6001600160a01b03166000908152600760205260409020805460ff19169055565b606060008054610bcb906140b6565b80601f0160208091040260200160405190810160405280929190818152602001828054610bf7906140b6565b8015610c445780601f10610c1957610100808354040283529160200191610c44565b820191906000526020600020905b815481529060010190602001808311610c2757829003601f168201915b5050505050905090565b6000610c59826126a1565b506000908152600460205260409020546001600160a01b031690565b81610c7f816126c6565b610c898383612798565b505050565b610c96612647565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b610cc0612647565b6001600160a01b038116610d335760405162461bcd60e51b815260206004820152603460248201527f466572616c66696c6545786869626974696f6e56343a20636f737452656365696044820152737665725f206973207a65726f206164647265737360601b60648201526084016103d5565b600d80546001600160a01b0390921664010000000002640100000000600160c01b0319909216919091179055565b6040805180820190915260008082526020820152610d7e826128a8565b610d9a5760405162461bcd60e51b81526004016103d5906140f0565b50600090815260116020908152604091829020825180840190935280548352600101549082015290565b600d5460ff16610e2b5760405162461bcd60e51b815260206004820152602c60248201527f466572616c66696c6545786869626974696f6e56343a20746f6b656e2069732060448201526b6e6f74206275726e61626c6560a01b60648201526084016103d5565b60005b8151811015610eaa57610e5a33838381518110610e4d57610e4d614127565b60200260200101516128c5565b610e765760405162461bcd60e51b81526004016103d59061413d565b610e98828281518110610e8b57610e8b614127565b6020026020010151612944565b80610ea2816141a0565b915050610e2e565b5050565b826001600160a01b0381163314610ec857610ec8336126c6565b306001600160a01b03841603610ef05760405162461bcd60e51b81526004016103d5906141b9565b610efb848484612a1a565b50505050565b6040516369bd111d60e11b815260040160405180910390fd5b6000610f25836120b4565b8210610f875760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b60648201526084016103d5565b6001600160a01b0383166000908152601260205260409020805483908110610fb157610fb1614127565b9060005260206000200154905092915050565b610fcc612647565b600d546301000000900460ff1615610ff65760405162461bcd60e51b81526004016103d590614216565b600d5462010000900460ff161561106c5760405162461bcd60e51b815260206004820152603460248201527f466572616c66696c6545786869626974696f6e56343a205f73656c6c696e6720604482015273726571756972656420746f2062652066616c736560601b60648201526084016103d5565b611074612a4b565b600d805462ff0000191662010000179055565b61108f612647565b8281146110af576040516313086eff60e21b815260040160405180910390fd5b60005b838110156112205760008585838181106110ce576110ce614127565b90506020020160208101906110e39190613a14565b6001600160a01b03160361110a57604051630107349760e51b815260040160405180910390fd5b82828281811061111c5761111c614127565b9050602002013560000361114357604051636745f8fb60e01b815260040160405180910390fd5b60006014600087878581811061115b5761115b614127565b90506020020160208101906111709190613a14565b6001600160a01b03166001600160a01b031681526020019081526020016000205411156111b0576040516328547bdf60e01b815260040160405180910390fd5b8282828181106111c2576111c2614127565b90506020020135601460008787858181106111df576111df614127565b90506020020160208101906111f49190613a14565b6001600160a01b0316815260208101919091526040016000205580611218816141a0565b9150506110b2565b5050505050565b61122f612647565b82811461124f576040516313086eff60e21b815260040160405180910390fd5b60005b8381101561122057600083838381811061126e5761126e614127565b90506020020160208101906112839190613a14565b6001600160a01b0316036112aa57604051630107349760e51b815260040160405180910390fd5b6000601460008585858181106112c2576112c2614127565b90506020020160208101906112d79190613a14565b6001600160a01b03166001600160a01b03168152602001908152602001600020541115611317576040516328547bdf60e01b815260040160405180910390fd5b6014600086868481811061132d5761132d614127565b90506020020160208101906113429190613a14565b6001600160a01b03166001600160a01b03168152602001908152602001600020546014600085858581811061137957611379614127565b905060200201602081019061138e9190613a14565b6001600160a01b03166001600160a01b0316815260200190815260200160002081905550601460008686848181106113c8576113c8614127565b90506020020160208101906113dd9190613a14565b6001600160a01b03168152602081019190915260400160009081205580611403816141a0565b915050611252565b826001600160a01b038116331461142557611425336126c6565b306001600160a01b0384160361144d5760405162461bcd60e51b81526004016103d5906141b9565b610efb848484612ac6565b600d5462010000900460ff166114c35760405162461bcd60e51b815260206004820152602a60248201527f466572616c66696c6545786869626974696f6e56343a2073616c65206973206e6044820152691bdd081cdd185c9d195960b21b60648201526084016103d5565b6114cb612a4b565b6114d481612ae1565b6114e66101208201610100830161426a565b61155557803534146115505760405162461bcd60e51b815260206004820152602d60248201527f466572616c66696c6545786869626974696f6e56343a20696e76616c6964207060448201526c185e5b595b9d08185b5bdd5b9d609a1b60648201526084016103d5565b6115be565b60165460405163cdb1f66360e01b81526001600160a01b039091169063cdb1f6639061158b9087908790879087906004016143d3565b600060405180830381600087803b1580156115a557600080fd5b505af11580156115b9573d6000803e3d6000fd5b505050505b60004630836040516020016115d593929190614405565b60408051601f198184030181529190528051602090910120905061160c6116026080840160608501613a14565b8360800135612b3f565b61161881868686612b92565b61163557604051638baa579f60e01b815260040160405180910390fd5b60006020830135833511156116745761165460e0840160c08501614438565b61ffff1661166760208501358535614453565b6116719190614466565b90505b60a0830135600090815260176020526040812054905b61169a60e0860160c08701614438565b61ffff1681101561177b57816116af816128a8565b6116cc576040516352a7a53160e11b815260040160405180910390fd5b826116d6816141a0565b93503090506116e482611c60565b6001600160a01b0316146116f8575061168a565b6117223061170c6080890160608a01613a14565b8360405180602001604052806000815250612bea565b806117336080880160608901613a14565b6001600160a01b03167f0475389cd69b8d3163620b43283bf74e8fc71020c3c6cef2a529b5c405e9687f60405160405180910390a381611772816141a0565b9250505061168a565b60a0850135600090815260176020526040812083905580806117a060e0890189614488565b808060200260200160405190810160405280939291908181526020016000905b828210156117ec576117dd604083028601368190038101906144d1565b815260200190600101906117c0565b50505050509050600086905060005b82518110801561180b5750600082115b156119175760006014600085848151811061182857611828614127565b6020026020010151600001516001600160a01b03166001600160a01b031681526020019081526020016000205490506000838210156118675781611869565b835b90506000818d60c00160208101906118819190614438565b61ffff1661188f9190614527565b905061189b818861453e565b965080601460008887815181106118b4576118b4614127565b6020026020010151600001516001600160a01b03166001600160a01b0316815260200190815260200160002060008282546118ef9190614453565b909155506118ff90508186614453565b9450505050808061190f906141a0565b9150506117fb565b508015611a3b5760005b8251811015611a3957600083828151811061193e5761193e614127565b6020026020010151600001519050600061271085848151811061196357611963614127565b6020026020010151602001518561197a9190614527565b6119849190614466565b90506000818d60c001602081019061199c9190614438565b61ffff166119aa9190614527565b600d549091506001600160a01b036401000000009091048116908416036119df576119d5818861453e565b9650505050611a27565b6119e9818961453e565b6040519098506001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611a22573d6000803e3d6000fd5b505050505b80611a31816141a0565b915050611921565b505b611a45838561453e565b611a5460208b01358b35614453565b1015611ab75760405162461bcd60e51b815260206004820152602c60248201527f466572616c66696c6545786869626974696f6e56343a20746f74616c2062707360448201526b0206f7665722031302c3030360a41b60648201526084016103d5565b6000611ac4858b35614453565b90508015611b0f57600d546040516401000000009091046001600160a01b0316906108fc8315029083906000818181858888f19350505050158015611b0d573d6000803e3d6000fd5b505b50505050505050505050505050565b600a8054611b2b906140b6565b80601f0160208091040260200160405190810160405280929190818152602001828054611b57906140b6565b8015611ba45780601f10611b7957610100808354040283529160200191611ba4565b820191906000526020600020905b815481529060010190602001808311611b8757829003601f168201915b505050505081565b611bb4612647565b600d546301000000900460ff1615611bde5760405162461bcd60e51b81526004016103d590614216565b600d5462010000900460ff16611c525760405162461bcd60e51b815260206004820152603360248201527f466572616c66696c6545786869626974696f6e56343a205f73656c6c696e6720604482015272726571756972656420746f206265207472756560681b60648201526084016103d5565b600d805462ff000019169055565b6000818152600260205260408120546001600160a01b031680610b8d5760405162461bcd60e51b81526004016103d5906140f0565b611c9d612647565b60008251118015611caf575060008151115b611d2f5760405162461bcd60e51b815260206004820152604560248201527f466572616c66696c6545786869626974696f6e56343a2073657269657349647360448201527f206f7220726563697069656e74416464726573736573206c656e677468206973606482015264207a65726f60d81b608482015260a4016103d5565b8051825114611dbb5760405162461bcd60e51b815260206004820152604c60248201527f466572616c66696c6545786869626974696f6e56343a2073657269657349647360448201527f206c656e67746820697320646966666572656e742066726f6d2072656369706960648201526b656e7441646472657373657360a01b608482015260a4016103d5565b611dc3611bac565b30600081815260126020908152604080832080548251818502810185019093528083529192909190830182828015611e1a57602002820191906000526020600020905b815481526020019060010190808311611e06575b5050505050905060005b8151811015611f16576000828281518110611e4157611e41614127565b602090810291909101810151600081815260118352604080822081518083019092528054825260010154938101939093529092505b87518161ffff161015611f0057878161ffff1681518110611e9957611e99614127565b6020026020010151826000015103611eee576000878261ffff1681518110611ec357611ec3614127565b60200260200101519050611ee887828660405180602001604052806000815250612bea565b50611f00565b80611ef881614551565b915050611e76565b5050508080611f0e906141a0565b915050611e24565b50611f20826120b4565b15610efb5760405162461bcd60e51b815260206004820152603c60248201527f466572616c66696c6545786869626974696f6e56343a20546f6b656e20666f7260448201527f2073616c652062616c616e63652068617320746f206265207a65726f0000000060648201526084016103d5565b611f9b612647565b6001600160a01b0381166120075760405162461bcd60e51b815260206004820152602d60248201527f466572616c66696c6545786869626974696f6e56343a207661756c745f20697360448201526c207a65726f206164647265737360981b60648201526084016103d5565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b612031612647565b6001600160a01b0381166120925760405162461bcd60e51b815260206004820152602260248201527f45434453415369676e3a207369676e65725f206973207a65726f206164647265604482015261737360f01b60648201526084016103d5565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160a01b03821661211e5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016103d5565b506001600160a01b031660009081526003602052604090205490565b612142612647565b61214c6000612c1d565b565b6001600160a01b0381166000908152601260209081526040918290208054835181840281018401909452808452606093928301828280156121ae57602002820191906000526020600020905b81548152602001906001019080831161219a575b50505050509050919050565b3360009081526007602052604090205460ff16806121e257506006546001600160a01b031633145b6121eb57600080fd5b600d546301000000900460ff166122625760405162461bcd60e51b815260206004820152603560248201527f466572616c66696c6545786869626974696f6e56343a20636f6e747261637420604482015274191bd95cdb89dd08185b1b1bddc81d1bc81b5a5b9d605a1b60648201526084016103d5565b60005b81811015610c89576122d783838381811061228257612282614127565b9050606002016000013584848481811061229e5761229e614127565b905060600201602001358585858181106122ba576122ba614127565b90506060020160400160208101906122d29190613a14565b612c6f565b806122e1816141a0565b915050612265565b6122f1612647565b600081511161234c5760405162461bcd60e51b815260206004820152602160248201527f4552433732314d657461646174613a20626173655552495f20697320656d70746044820152607960f81b60648201526084016103d5565b600a610eaa82826145c0565b606060018054610bcb906140b6565b81612371816126c6565b610c898383612df1565b612383612647565b600d805463ff0000001916905561214c610fc4565b836001600160a01b03811633146123b2576123b2336126c6565b306001600160a01b038516036123da5760405162461bcd60e51b81526004016103d5906141b9565b61122085858585612dfc565b6123ee612647565b6123f6611bac565b3060009081526012602090815260408083208054825181850281018501909352808352919290919083018282801561244d57602002820191906000526020600020905b815481526020019060010190808311612439575b5050505050905060005b8151811015610eaa57612475828281518110610e8b57610e8b614127565b8061247f816141a0565b915050612457565b60606000600a8054612498906140b6565b9050116124f65760405162461bcd60e51b815260206004820152602660248201527f4552433732314d657461646174613a205f746f6b656e4261736555524920697360448201526520656d70747960d01b60648201526084016103d5565b6124ff826128a8565b6125635760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b60648201526084016103d5565b600a61256e83612e2e565b60405160200161257f92919061467f565b6040516020818303038152906040529050919050565b61259d612647565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b600b8054611b2b906140b6565b6125d6612647565b6001600160a01b03811661263b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103d5565b61264481612c1d565b50565b6006546001600160a01b0316331461214c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103d5565b6126aa816128a8565b6126445760405162461bcd60e51b81526004016103d5906140f0565b6008546001600160a01b03163b1561264457600854604051633185c44d60e21b81523060048201526001600160a01b0383811660248301529091169063c617113490604401602060405180830381865afa158015612728573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061274c9190614713565b6126445760405162461bcd60e51b815260206004820152601760248201527f6f70657261746f72206973206e6f7420616c6c6f77656400000000000000000060448201526064016103d5565b60006127a382611c60565b9050806001600160a01b0316836001600160a01b0316036128105760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084016103d5565b336001600160a01b038216148061282c575061282c8133610a2e565b61289e5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016103d5565b610c898383612ec0565b6000908152600260205260409020546001600160a01b0316151590565b6000806128d183611c60565b9050806001600160a01b0316846001600160a01b0316148061291857506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b8061293c5750836001600160a01b031661293184610c4e565b6001600160a01b0316145b949350505050565b61294d816128a8565b6129695760405162461bcd60e51b81526004016103d5906140f0565b600081815260116020908152604080832081518083018352815480825260019283015482860152855260109093529083208054929391929091906129ae908490614453565b925050819055506001600c60008282546129c89190614453565b90915550506000828152601160205260408120818155600101556129eb82612f2e565b60405182907fbde7938970372996ff103863625e348ef2bf8f38a5b02181be75aafef17c23d590600090a25050565b612a2433826128c5565b612a405760405162461bcd60e51b81526004016103d59061413d565b610c89838383612fd1565b6000612a56306120b4565b9050600081116126445760405162461bcd60e51b815260206004820152603560248201527f466572616c66696c6545786869626974696f6e56343a204e6f20746f6b656e206044820152741bdddb995908189e481d1a194818dbdb9d1c9858dd605a1b60648201526084016103d5565b610c8983838360405180602001604052806000815250612398565b428160400135116126445760405162461bcd60e51b815260206004820152602260248201527f466572616c66696c6553616c65446174613a2073616c65206973206578706972604482015261195960f21b60648201526084016103d5565b6001600160a01b0382166000908152601560205260409020805460018101909155818114610c89576040516301d4b62360e61b81526001600160a01b0384166004820152602481018290526044016103d5565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c859052603c81208190612bcf90848787613142565b6009546001600160a01b039081169116149695505050505050565b612bf5848484612fd1565b612c018484848461316a565b610efb5760405162461bcd60e51b81526004016103d590614730565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000838152600f60205260409020541515612c8984612e2e565b604051602001612c999190614782565b60405160208183030381529060405290612cc65760405162461bcd60e51b81526004016103d59190613a7f565b506000838152600f602090815260408083205460109092529091205410612d415760405162461bcd60e51b815260206004820152602960248201527f466572616c66696c6545786869626974696f6e56343a206e6f20736c6f747320604482015268617661696c61626c6560b81b60648201526084016103d5565b6001600c6000828254612d54919061453e565b90915550506000838152601060205260408120805460019290612d7890849061453e565b9091555050604080518082018252848152602080820185815260008681526011909252929020905181559051600190910155612db48183613268565b8183826001600160a01b03167f407d7da1d3b2b1871fbfa2b5b1c4657a3cc5711d3023c552798551c7ee301eea60405160405180910390a4505050565b610eaa3383836133e3565b612e0633836128c5565b612e225760405162461bcd60e51b81526004016103d59061413d565b610efb84848484612bea565b60606000612e3b836134b1565b60010190506000816001600160401b03811115612e5a57612e5a613ad5565b6040519080825280601f01601f191660200182016040528015612e84576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084612e8e57509392505050565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190612ef582611c60565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000612f3982611c60565b9050612f49816000846001613589565b612f5282611c60565b600083815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526003845282852080546000190190558785526002909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b826001600160a01b0316612fe482611c60565b6001600160a01b03161461300a5760405162461bcd60e51b81526004016103d5906147df565b6001600160a01b03821661306c5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103d5565b6130798383836001613589565b826001600160a01b031661308c82611c60565b6001600160a01b0316146130b25760405162461bcd60e51b81526004016103d5906147df565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6000806000613153878787876136a0565b9150915061316081613764565b5095945050505050565b60006001600160a01b0384163b1561326057604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906131ae903390899088908890600401614824565b6020604051808303816000875af19250505080156131e9575060408051601f3d908101601f191682019092526131e691810190614857565b60015b613246573d808015613217576040519150601f19603f3d011682016040523d82523d6000602084013e61321c565b606091505b50805160000361323e5760405162461bcd60e51b81526004016103d590614730565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061293c565b50600161293c565b6001600160a01b0382166132be5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016103d5565b6132c7816128a8565b156133145760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016103d5565b613322600083836001613589565b61332b816128a8565b156133785760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016103d5565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b816001600160a01b0316836001600160a01b0316036134445760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016103d5565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106134f05772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef8100000000831061351c576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061353a57662386f26fc10000830492506010015b6305f5e1008310613552576305f5e100830492506008015b612710831061356657612710830492506004015b60648310613578576064830492506002015b600a8310610b8d5760010192915050565b60018111156135f85760405162461bcd60e51b815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e7365637574697665207472604482015274185b9cd9995c9cc81b9bdd081cdd5c1c1bdc9d1959605a1b60648201526084016103d5565b816001600160a01b038516158015906136235750836001600160a01b0316856001600160a01b031614155b156136325761363285826138ae565b6001600160a01b0384161580159061365c5750846001600160a01b0316846001600160a01b031614155b15611220576001600160a01b038416600090815260126020908152604080832080546001810182559084528284208101859055848452601390925290912055611220565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156136d7575060009050600361375b565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561372b573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166137545760006001925092505061375b565b9150600090505b94509492505050565b600081600481111561377857613778614874565b036137805750565b600181600481111561379457613794614874565b036137e15760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016103d5565b60028160048111156137f5576137f5614874565b036138425760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016103d5565b600381600481111561385657613856614874565b036126445760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016103d5565b600060016138bb846120b4565b6138c59190614453565b60008381526013602052604090205490915080821461396c576001600160a01b038416600090815260126020526040812080548490811061390857613908614127565b906000526020600020015490508060126000876001600160a01b03166001600160a01b03168152602001908152602001600020838154811061394c5761394c614127565b600091825260208083209091019290925591825260139052604090208190555b60008381526013602090815260408083208390556001600160a01b0387168352601290915290208054806139a2576139a261488a565b6001900381819060005260206000200160009055905550505050565b6001600160e01b03198116811461264457600080fd5b6000602082840312156139e657600080fd5b81356139f1816139be565b9392505050565b80356001600160a01b0381168114613a0f57600080fd5b919050565b600060208284031215613a2657600080fd5b6139f1826139f8565b60005b83811015613a4a578181015183820152602001613a32565b50506000910152565b60008151808452613a6b816020860160208601613a2f565b601f01601f19169290920160200192915050565b6020815260006139f16020830184613a53565b600060208284031215613aa457600080fd5b5035919050565b60008060408385031215613abe57600080fd5b613ac7836139f8565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613b1357613b13613ad5565b604052919050565b60006001600160401b03821115613b3457613b34613ad5565b5060051b60200190565b600082601f830112613b4f57600080fd5b81356020613b64613b5f83613b1b565b613aeb565b82815260059290921b84018101918181019086841115613b8357600080fd5b8286015b84811015613b9e5780358352918301918301613b87565b509695505050505050565b600060208284031215613bbb57600080fd5b81356001600160401b03811115613bd157600080fd5b61293c84828501613b3e565b600080600060608486031215613bf257600080fd5b613bfb846139f8565b9250613c09602085016139f8565b9150604084013590509250925092565b803560ff81168114613a0f57600080fd5b60008060008060808587031215613c4057600080fd5b8435935060208501359250613c5760408601613c19565b915060608501356001600160401b03811115613c7257600080fd5b850160e08188031215613c8457600080fd5b939692955090935050565b60008083601f840112613ca157600080fd5b5081356001600160401b03811115613cb857600080fd5b6020830191508360208260051b8501011115613cd357600080fd5b9250929050565b60008060008060408587031215613cf057600080fd5b84356001600160401b0380821115613d0757600080fd5b613d1388838901613c8f565b90965094506020870135915080821115613d2c57600080fd5b50613d3987828801613c8f565b95989497509550505050565b60008060008060808587031215613d5b57600080fd5b8435935060208501359250613d7260408601613c19565b915060608501356001600160401b03811115613d8d57600080fd5b85016101208188031215613c8457600080fd5b60008060408385031215613db357600080fd5b82356001600160401b0380821115613dca57600080fd5b613dd686838701613b3e565b9350602091508185013581811115613ded57600080fd5b85019050601f81018613613e0057600080fd5b8035613e0e613b5f82613b1b565b81815260059190911b82018301908381019088831115613e2d57600080fd5b928401925b82841015613e5257613e43846139f8565b82529284019290840190613e32565b80955050505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015613e9957835183529284019291840191600101613e7d565b50909695505050505050565b60008060208385031215613eb857600080fd5b82356001600160401b0380821115613ecf57600080fd5b818501915085601f830112613ee357600080fd5b813581811115613ef257600080fd5b866020606083028501011115613f0757600080fd5b60209290920196919550909350505050565b60006001600160401b03831115613f3257613f32613ad5565b613f45601f8401601f1916602001613aeb565b9050828152838383011115613f5957600080fd5b828260208301376000602084830101529392505050565b600060208284031215613f8257600080fd5b81356001600160401b03811115613f9857600080fd5b8201601f81018413613fa957600080fd5b61293c84823560208401613f19565b801515811461264457600080fd5b8035613a0f81613fb8565b60008060408385031215613fe457600080fd5b613fed836139f8565b91506020830135613ffd81613fb8565b809150509250929050565b6000806000806080858703121561401e57600080fd5b614027856139f8565b9350614035602086016139f8565b92506040850135915060608501356001600160401b0381111561405757600080fd5b8501601f8101871361406857600080fd5b61407787823560208401613f19565b91505092959194509250565b6000806040838503121561409657600080fd5b61409f836139f8565b91506140ad602084016139f8565b90509250929050565b600181811c908216806140ca57607f821691505b6020821081036140ea57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526018908201527f4552433732313a20696e76616c696420746f6b656e2049440000000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6000600182016141b2576141b261418a565b5060010190565b6020808252603e908201527f466572616c66696c6545786869626974696f6e56343a20436f6e74726163742060408201527f69736e277420616c6c6f77656420746f207265636569766520746f6b656e0000606082015260800190565b60208082526034908201527f466572616c66696c6545786869626974696f6e56343a206d696e7461626c6520604082015273726571756972656420746f2062652066616c736560601b606082015260800190565b60006020828403121561427c57600080fd5b81356139f181613fb8565b803561ffff81168114613a0f57600080fd5b6000808335601e198436030181126142b057600080fd5b83016020810192503590506001600160401b038111156142cf57600080fd5b8060061b3603821315613cd357600080fd5b8183526000602080850194508260005b85811015614327576001600160a01b0361430a836139f8565b1687528183013583880152604096870196909101906001016142f1565b509495945050505050565b80358252602080820135908301526040808201359083015260006101206001600160a01b03614363606085016139f8565b1660608501526080830135608085015260a083013560a085015261438960c08401614287565b61ffff1660c085015261439f60e0840184614299565b8260e08701526143b283870182846142e1565b925050506101006143c4818501613fc6565b15159401939093525090919050565b84815283602082015260ff831660408201526080606082015260006143fb6080830184614332565b9695505050505050565b8381526001600160a01b038316602082015260606040820181905260009061442f90830184614332565b95945050505050565b60006020828403121561444a57600080fd5b6139f182614287565b81810381811115610b8d57610b8d61418a565b60008261448357634e487b7160e01b600052601260045260246000fd5b500490565b6000808335601e1984360301811261449f57600080fd5b8301803591506001600160401b038211156144b957600080fd5b6020019150600681901b3603821315613cd357600080fd5b6000604082840312156144e357600080fd5b604051604081018181106001600160401b038211171561450557614505613ad5565b604052614511836139f8565b8152602083013560208201528091505092915050565b8082028115828204841417610b8d57610b8d61418a565b80820180821115610b8d57610b8d61418a565b600061ffff8083168181036145685761456861418a565b6001019392505050565b601f821115610c8957600081815260208120601f850160051c810160208610156145995750805b601f850160051c820191505b818110156145b8578281556001016145a5565b505050505050565b81516001600160401b038111156145d9576145d9613ad5565b6145ed816145e784546140b6565b84614572565b602080601f831160018114614622576000841561460a5750858301515b600019600386901b1c1916600185901b1785556145b8565b600085815260208120601f198616915b8281101561465157888601518255948401946001909101908401614632565b508582101561466f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600080845461468d816140b6565b600182811680156146a557600181146146ba576146e9565b60ff19841687528215158302870194506146e9565b8860005260208060002060005b858110156146e05781548a8201529084019082016146c7565b50505082870194505b50602f60f81b8452865192506147058382860160208a01613a2f565b919092010195945050505050565b60006020828403121561472557600080fd5b81516139f181613fb8565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b7f466572616c66696c6545786869626974696f6e56343a2073657269657349642081526e03237b2b9b713ba1032bc34b9ba1d1608d1b6020820152600082516147d281602f850160208701613a2f565b91909101602f0192915050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906143fb90830184613a53565b60006020828403121561486957600080fd5b81516139f1816139be565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603160045260246000fdfea264697066735822122071d46cbc27ebebeb15e75c1bb7446fced15cedc8a00e21e313b2a7e7c345c64864736f6c63430008110033", +} + +// FeralfileExhibitionV42ABI is the input ABI used to generate the binding from. +// Deprecated: Use FeralfileExhibitionV42MetaData.ABI instead. +var FeralfileExhibitionV42ABI = FeralfileExhibitionV42MetaData.ABI + +// FeralfileExhibitionV42Bin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use FeralfileExhibitionV42MetaData.Bin instead. +var FeralfileExhibitionV42Bin = FeralfileExhibitionV42MetaData.Bin + +// DeployFeralfileExhibitionV42 deploys a new Ethereum contract, binding an instance of FeralfileExhibitionV42 to it. +func DeployFeralfileExhibitionV42(auth *bind.TransactOpts, backend bind.ContractBackend, name_ string, symbol_ string, burnable_ bool, bridgeable_ bool, signer_ common.Address, vault_ common.Address, costReceiver_ common.Address, contractURI_ string, seriesIds_ []*big.Int, seriesMaxSupplies_ []*big.Int, seriesNextSaleTokenIds_ []*big.Int) (common.Address, *types.Transaction, *FeralfileExhibitionV42, error) { + parsed, err := FeralfileExhibitionV42MetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(FeralfileExhibitionV42Bin), backend, name_, symbol_, burnable_, bridgeable_, signer_, vault_, costReceiver_, contractURI_, seriesIds_, seriesMaxSupplies_, seriesNextSaleTokenIds_) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &FeralfileExhibitionV42{FeralfileExhibitionV42Caller: FeralfileExhibitionV42Caller{contract: contract}, FeralfileExhibitionV42Transactor: FeralfileExhibitionV42Transactor{contract: contract}, FeralfileExhibitionV42Filterer: FeralfileExhibitionV42Filterer{contract: contract}}, nil +} + +// FeralfileExhibitionV42 is an auto generated Go binding around an Ethereum contract. +type FeralfileExhibitionV42 struct { + FeralfileExhibitionV42Caller // Read-only binding to the contract + FeralfileExhibitionV42Transactor // Write-only binding to the contract + FeralfileExhibitionV42Filterer // Log filterer for contract events +} + +// FeralfileExhibitionV42Caller is an auto generated read-only Go binding around an Ethereum contract. +type FeralfileExhibitionV42Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// FeralfileExhibitionV42Transactor is an auto generated write-only Go binding around an Ethereum contract. +type FeralfileExhibitionV42Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// FeralfileExhibitionV42Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type FeralfileExhibitionV42Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// FeralfileExhibitionV42Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type FeralfileExhibitionV42Session struct { + Contract *FeralfileExhibitionV42 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// FeralfileExhibitionV42CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type FeralfileExhibitionV42CallerSession struct { + Contract *FeralfileExhibitionV42Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// FeralfileExhibitionV42TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type FeralfileExhibitionV42TransactorSession struct { + Contract *FeralfileExhibitionV42Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// FeralfileExhibitionV42Raw is an auto generated low-level Go binding around an Ethereum contract. +type FeralfileExhibitionV42Raw struct { + Contract *FeralfileExhibitionV42 // Generic contract binding to access the raw methods on +} + +// FeralfileExhibitionV42CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type FeralfileExhibitionV42CallerRaw struct { + Contract *FeralfileExhibitionV42Caller // Generic read-only contract binding to access the raw methods on +} + +// FeralfileExhibitionV42TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type FeralfileExhibitionV42TransactorRaw struct { + Contract *FeralfileExhibitionV42Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewFeralfileExhibitionV42 creates a new instance of FeralfileExhibitionV42, bound to a specific deployed contract. +func NewFeralfileExhibitionV42(address common.Address, backend bind.ContractBackend) (*FeralfileExhibitionV42, error) { + contract, err := bindFeralfileExhibitionV42(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &FeralfileExhibitionV42{FeralfileExhibitionV42Caller: FeralfileExhibitionV42Caller{contract: contract}, FeralfileExhibitionV42Transactor: FeralfileExhibitionV42Transactor{contract: contract}, FeralfileExhibitionV42Filterer: FeralfileExhibitionV42Filterer{contract: contract}}, nil +} + +// NewFeralfileExhibitionV42Caller creates a new read-only instance of FeralfileExhibitionV42, bound to a specific deployed contract. +func NewFeralfileExhibitionV42Caller(address common.Address, caller bind.ContractCaller) (*FeralfileExhibitionV42Caller, error) { + contract, err := bindFeralfileExhibitionV42(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &FeralfileExhibitionV42Caller{contract: contract}, nil +} + +// NewFeralfileExhibitionV42Transactor creates a new write-only instance of FeralfileExhibitionV42, bound to a specific deployed contract. +func NewFeralfileExhibitionV42Transactor(address common.Address, transactor bind.ContractTransactor) (*FeralfileExhibitionV42Transactor, error) { + contract, err := bindFeralfileExhibitionV42(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &FeralfileExhibitionV42Transactor{contract: contract}, nil +} + +// NewFeralfileExhibitionV42Filterer creates a new log filterer instance of FeralfileExhibitionV42, bound to a specific deployed contract. +func NewFeralfileExhibitionV42Filterer(address common.Address, filterer bind.ContractFilterer) (*FeralfileExhibitionV42Filterer, error) { + contract, err := bindFeralfileExhibitionV42(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &FeralfileExhibitionV42Filterer{contract: contract}, nil +} + +// bindFeralfileExhibitionV42 binds a generic wrapper to an already deployed contract. +func bindFeralfileExhibitionV42(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := FeralfileExhibitionV42MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _FeralfileExhibitionV42.Contract.FeralfileExhibitionV42Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.FeralfileExhibitionV42Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.FeralfileExhibitionV42Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _FeralfileExhibitionV42.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.contract.Transact(opts, method, params...) +} + +// OperatorFilterRegistry is a free data retrieval call binding the contract method 0xf07e7fd0. +// +// Solidity: function OperatorFilterRegistry() view returns(address) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Caller) OperatorFilterRegistry(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _FeralfileExhibitionV42.contract.Call(opts, &out, "OperatorFilterRegistry") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// OperatorFilterRegistry is a free data retrieval call binding the contract method 0xf07e7fd0. +// +// Solidity: function OperatorFilterRegistry() view returns(address) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) OperatorFilterRegistry() (common.Address, error) { + return _FeralfileExhibitionV42.Contract.OperatorFilterRegistry(&_FeralfileExhibitionV42.CallOpts) +} + +// OperatorFilterRegistry is a free data retrieval call binding the contract method 0xf07e7fd0. +// +// Solidity: function OperatorFilterRegistry() view returns(address) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42CallerSession) OperatorFilterRegistry() (common.Address, error) { + return _FeralfileExhibitionV42.Contract.OperatorFilterRegistry(&_FeralfileExhibitionV42.CallOpts) +} + +// Advances is a free data retrieval call binding the contract method 0x926ce44e. +// +// Solidity: function advances(address ) view returns(uint256) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Caller) Advances(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { + var out []interface{} + err := _FeralfileExhibitionV42.contract.Call(opts, &out, "advances", arg0) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Advances is a free data retrieval call binding the contract method 0x926ce44e. +// +// Solidity: function advances(address ) view returns(uint256) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) Advances(arg0 common.Address) (*big.Int, error) { + return _FeralfileExhibitionV42.Contract.Advances(&_FeralfileExhibitionV42.CallOpts, arg0) +} + +// Advances is a free data retrieval call binding the contract method 0x926ce44e. +// +// Solidity: function advances(address ) view returns(uint256) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42CallerSession) Advances(arg0 common.Address) (*big.Int, error) { + return _FeralfileExhibitionV42.Contract.Advances(&_FeralfileExhibitionV42.CallOpts, arg0) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address owner) view returns(uint256) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Caller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { + var out []interface{} + err := _FeralfileExhibitionV42.contract.Call(opts, &out, "balanceOf", owner) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address owner) view returns(uint256) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) BalanceOf(owner common.Address) (*big.Int, error) { + return _FeralfileExhibitionV42.Contract.BalanceOf(&_FeralfileExhibitionV42.CallOpts, owner) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address owner) view returns(uint256) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42CallerSession) BalanceOf(owner common.Address) (*big.Int, error) { + return _FeralfileExhibitionV42.Contract.BalanceOf(&_FeralfileExhibitionV42.CallOpts, owner) +} + +// Bridgeable is a free data retrieval call binding the contract method 0x530da8ef. +// +// Solidity: function bridgeable() view returns(bool) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Caller) Bridgeable(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _FeralfileExhibitionV42.contract.Call(opts, &out, "bridgeable") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Bridgeable is a free data retrieval call binding the contract method 0x530da8ef. +// +// Solidity: function bridgeable() view returns(bool) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) Bridgeable() (bool, error) { + return _FeralfileExhibitionV42.Contract.Bridgeable(&_FeralfileExhibitionV42.CallOpts) +} + +// Bridgeable is a free data retrieval call binding the contract method 0x530da8ef. +// +// Solidity: function bridgeable() view returns(bool) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42CallerSession) Bridgeable() (bool, error) { + return _FeralfileExhibitionV42.Contract.Bridgeable(&_FeralfileExhibitionV42.CallOpts) +} + +// Burnable is a free data retrieval call binding the contract method 0xa07c7ce4. +// +// Solidity: function burnable() view returns(bool) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Caller) Burnable(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _FeralfileExhibitionV42.contract.Call(opts, &out, "burnable") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Burnable is a free data retrieval call binding the contract method 0xa07c7ce4. +// +// Solidity: function burnable() view returns(bool) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) Burnable() (bool, error) { + return _FeralfileExhibitionV42.Contract.Burnable(&_FeralfileExhibitionV42.CallOpts) +} + +// Burnable is a free data retrieval call binding the contract method 0xa07c7ce4. +// +// Solidity: function burnable() view returns(bool) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42CallerSession) Burnable() (bool, error) { + return _FeralfileExhibitionV42.Contract.Burnable(&_FeralfileExhibitionV42.CallOpts) +} + +// CodeVersion is a free data retrieval call binding the contract method 0x63e60230. +// +// Solidity: function codeVersion() view returns(string) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Caller) CodeVersion(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _FeralfileExhibitionV42.contract.Call(opts, &out, "codeVersion") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// CodeVersion is a free data retrieval call binding the contract method 0x63e60230. +// +// Solidity: function codeVersion() view returns(string) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) CodeVersion() (string, error) { + return _FeralfileExhibitionV42.Contract.CodeVersion(&_FeralfileExhibitionV42.CallOpts) +} + +// CodeVersion is a free data retrieval call binding the contract method 0x63e60230. +// +// Solidity: function codeVersion() view returns(string) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42CallerSession) CodeVersion() (string, error) { + return _FeralfileExhibitionV42.Contract.CodeVersion(&_FeralfileExhibitionV42.CallOpts) +} + +// ContractURI is a free data retrieval call binding the contract method 0xe8a3d485. +// +// Solidity: function contractURI() view returns(string) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Caller) ContractURI(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _FeralfileExhibitionV42.contract.Call(opts, &out, "contractURI") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ContractURI is a free data retrieval call binding the contract method 0xe8a3d485. +// +// Solidity: function contractURI() view returns(string) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) ContractURI() (string, error) { + return _FeralfileExhibitionV42.Contract.ContractURI(&_FeralfileExhibitionV42.CallOpts) +} + +// ContractURI is a free data retrieval call binding the contract method 0xe8a3d485. +// +// Solidity: function contractURI() view returns(string) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42CallerSession) ContractURI() (string, error) { + return _FeralfileExhibitionV42.Contract.ContractURI(&_FeralfileExhibitionV42.CallOpts) +} + +// CostReceiver is a free data retrieval call binding the contract method 0xf4e638be. +// +// Solidity: function costReceiver() view returns(address) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Caller) CostReceiver(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _FeralfileExhibitionV42.contract.Call(opts, &out, "costReceiver") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// CostReceiver is a free data retrieval call binding the contract method 0xf4e638be. +// +// Solidity: function costReceiver() view returns(address) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) CostReceiver() (common.Address, error) { + return _FeralfileExhibitionV42.Contract.CostReceiver(&_FeralfileExhibitionV42.CallOpts) +} + +// CostReceiver is a free data retrieval call binding the contract method 0xf4e638be. +// +// Solidity: function costReceiver() view returns(address) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42CallerSession) CostReceiver() (common.Address, error) { + return _FeralfileExhibitionV42.Contract.CostReceiver(&_FeralfileExhibitionV42.CallOpts) +} + +// GetApproved is a free data retrieval call binding the contract method 0x081812fc. +// +// Solidity: function getApproved(uint256 tokenId) view returns(address) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Caller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { + var out []interface{} + err := _FeralfileExhibitionV42.contract.Call(opts, &out, "getApproved", tokenId) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetApproved is a free data retrieval call binding the contract method 0x081812fc. +// +// Solidity: function getApproved(uint256 tokenId) view returns(address) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) GetApproved(tokenId *big.Int) (common.Address, error) { + return _FeralfileExhibitionV42.Contract.GetApproved(&_FeralfileExhibitionV42.CallOpts, tokenId) +} + +// GetApproved is a free data retrieval call binding the contract method 0x081812fc. +// +// Solidity: function getApproved(uint256 tokenId) view returns(address) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42CallerSession) GetApproved(tokenId *big.Int) (common.Address, error) { + return _FeralfileExhibitionV42.Contract.GetApproved(&_FeralfileExhibitionV42.CallOpts, tokenId) +} + +// GetArtwork is a free data retrieval call binding the contract method 0x167ddf6e. +// +// Solidity: function getArtwork(uint256 tokenId) view returns((uint256,uint256)) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Caller) GetArtwork(opts *bind.CallOpts, tokenId *big.Int) (FeralfileExhibitionV4Artwork, error) { + var out []interface{} + err := _FeralfileExhibitionV42.contract.Call(opts, &out, "getArtwork", tokenId) + + if err != nil { + return *new(FeralfileExhibitionV4Artwork), err + } + + out0 := *abi.ConvertType(out[0], new(FeralfileExhibitionV4Artwork)).(*FeralfileExhibitionV4Artwork) + + return out0, err + +} + +// GetArtwork is a free data retrieval call binding the contract method 0x167ddf6e. +// +// Solidity: function getArtwork(uint256 tokenId) view returns((uint256,uint256)) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) GetArtwork(tokenId *big.Int) (FeralfileExhibitionV4Artwork, error) { + return _FeralfileExhibitionV42.Contract.GetArtwork(&_FeralfileExhibitionV42.CallOpts, tokenId) +} + +// GetArtwork is a free data retrieval call binding the contract method 0x167ddf6e. +// +// Solidity: function getArtwork(uint256 tokenId) view returns((uint256,uint256)) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42CallerSession) GetArtwork(tokenId *big.Int) (FeralfileExhibitionV4Artwork, error) { + return _FeralfileExhibitionV42.Contract.GetArtwork(&_FeralfileExhibitionV42.CallOpts, tokenId) +} + +// IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. +// +// Solidity: function isApprovedForAll(address owner, address operator) view returns(bool) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Caller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) { + var out []interface{} + err := _FeralfileExhibitionV42.contract.Call(opts, &out, "isApprovedForAll", owner, operator) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. +// +// Solidity: function isApprovedForAll(address owner, address operator) view returns(bool) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) { + return _FeralfileExhibitionV42.Contract.IsApprovedForAll(&_FeralfileExhibitionV42.CallOpts, owner, operator) +} + +// IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. +// +// Solidity: function isApprovedForAll(address owner, address operator) view returns(bool) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42CallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) { + return _FeralfileExhibitionV42.Contract.IsApprovedForAll(&_FeralfileExhibitionV42.CallOpts, owner, operator) +} + +// Mintable is a free data retrieval call binding the contract method 0x4bf365df. +// +// Solidity: function mintable() view returns(bool) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Caller) Mintable(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _FeralfileExhibitionV42.contract.Call(opts, &out, "mintable") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Mintable is a free data retrieval call binding the contract method 0x4bf365df. +// +// Solidity: function mintable() view returns(bool) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) Mintable() (bool, error) { + return _FeralfileExhibitionV42.Contract.Mintable(&_FeralfileExhibitionV42.CallOpts) +} + +// Mintable is a free data retrieval call binding the contract method 0x4bf365df. +// +// Solidity: function mintable() view returns(bool) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42CallerSession) Mintable() (bool, error) { + return _FeralfileExhibitionV42.Contract.Mintable(&_FeralfileExhibitionV42.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Caller) Name(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _FeralfileExhibitionV42.contract.Call(opts, &out, "name") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) Name() (string, error) { + return _FeralfileExhibitionV42.Contract.Name(&_FeralfileExhibitionV42.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42CallerSession) Name() (string, error) { + return _FeralfileExhibitionV42.Contract.Name(&_FeralfileExhibitionV42.CallOpts) +} + +// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. +// +// Solidity: function nonces(address owner) view returns(uint256) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Caller) Nonces(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { + var out []interface{} + err := _FeralfileExhibitionV42.contract.Call(opts, &out, "nonces", owner) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. +// +// Solidity: function nonces(address owner) view returns(uint256) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) Nonces(owner common.Address) (*big.Int, error) { + return _FeralfileExhibitionV42.Contract.Nonces(&_FeralfileExhibitionV42.CallOpts, owner) +} + +// Nonces is a free data retrieval call binding the contract method 0x7ecebe00. +// +// Solidity: function nonces(address owner) view returns(uint256) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42CallerSession) Nonces(owner common.Address) (*big.Int, error) { + return _FeralfileExhibitionV42.Contract.Nonces(&_FeralfileExhibitionV42.CallOpts, owner) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Caller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _FeralfileExhibitionV42.contract.Call(opts, &out, "owner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) Owner() (common.Address, error) { + return _FeralfileExhibitionV42.Contract.Owner(&_FeralfileExhibitionV42.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42CallerSession) Owner() (common.Address, error) { + return _FeralfileExhibitionV42.Contract.Owner(&_FeralfileExhibitionV42.CallOpts) +} + +// OwnerOf is a free data retrieval call binding the contract method 0x6352211e. +// +// Solidity: function ownerOf(uint256 tokenId) view returns(address) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Caller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { + var out []interface{} + err := _FeralfileExhibitionV42.contract.Call(opts, &out, "ownerOf", tokenId) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// OwnerOf is a free data retrieval call binding the contract method 0x6352211e. +// +// Solidity: function ownerOf(uint256 tokenId) view returns(address) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) OwnerOf(tokenId *big.Int) (common.Address, error) { + return _FeralfileExhibitionV42.Contract.OwnerOf(&_FeralfileExhibitionV42.CallOpts, tokenId) +} + +// OwnerOf is a free data retrieval call binding the contract method 0x6352211e. +// +// Solidity: function ownerOf(uint256 tokenId) view returns(address) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42CallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) { + return _FeralfileExhibitionV42.Contract.OwnerOf(&_FeralfileExhibitionV42.CallOpts, tokenId) +} + +// Selling is a free data retrieval call binding the contract method 0x23aed228. +// +// Solidity: function selling() view returns(bool) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Caller) Selling(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _FeralfileExhibitionV42.contract.Call(opts, &out, "selling") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Selling is a free data retrieval call binding the contract method 0x23aed228. +// +// Solidity: function selling() view returns(bool) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) Selling() (bool, error) { + return _FeralfileExhibitionV42.Contract.Selling(&_FeralfileExhibitionV42.CallOpts) +} + +// Selling is a free data retrieval call binding the contract method 0x23aed228. +// +// Solidity: function selling() view returns(bool) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42CallerSession) Selling() (bool, error) { + return _FeralfileExhibitionV42.Contract.Selling(&_FeralfileExhibitionV42.CallOpts) +} + +// SeriesMaxSupply is a free data retrieval call binding the contract method 0xeb5c60f2. +// +// Solidity: function seriesMaxSupply(uint256 seriesId) view returns(uint256) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Caller) SeriesMaxSupply(opts *bind.CallOpts, seriesId *big.Int) (*big.Int, error) { + var out []interface{} + err := _FeralfileExhibitionV42.contract.Call(opts, &out, "seriesMaxSupply", seriesId) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// SeriesMaxSupply is a free data retrieval call binding the contract method 0xeb5c60f2. +// +// Solidity: function seriesMaxSupply(uint256 seriesId) view returns(uint256) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) SeriesMaxSupply(seriesId *big.Int) (*big.Int, error) { + return _FeralfileExhibitionV42.Contract.SeriesMaxSupply(&_FeralfileExhibitionV42.CallOpts, seriesId) +} + +// SeriesMaxSupply is a free data retrieval call binding the contract method 0xeb5c60f2. +// +// Solidity: function seriesMaxSupply(uint256 seriesId) view returns(uint256) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42CallerSession) SeriesMaxSupply(seriesId *big.Int) (*big.Int, error) { + return _FeralfileExhibitionV42.Contract.SeriesMaxSupply(&_FeralfileExhibitionV42.CallOpts, seriesId) +} + +// SeriesTotalSupply is a free data retrieval call binding the contract method 0x7f06ee06. +// +// Solidity: function seriesTotalSupply(uint256 seriesId) view returns(uint256) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Caller) SeriesTotalSupply(opts *bind.CallOpts, seriesId *big.Int) (*big.Int, error) { + var out []interface{} + err := _FeralfileExhibitionV42.contract.Call(opts, &out, "seriesTotalSupply", seriesId) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// SeriesTotalSupply is a free data retrieval call binding the contract method 0x7f06ee06. +// +// Solidity: function seriesTotalSupply(uint256 seriesId) view returns(uint256) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) SeriesTotalSupply(seriesId *big.Int) (*big.Int, error) { + return _FeralfileExhibitionV42.Contract.SeriesTotalSupply(&_FeralfileExhibitionV42.CallOpts, seriesId) +} + +// SeriesTotalSupply is a free data retrieval call binding the contract method 0x7f06ee06. +// +// Solidity: function seriesTotalSupply(uint256 seriesId) view returns(uint256) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42CallerSession) SeriesTotalSupply(seriesId *big.Int) (*big.Int, error) { + return _FeralfileExhibitionV42.Contract.SeriesTotalSupply(&_FeralfileExhibitionV42.CallOpts, seriesId) +} + +// Signer is a free data retrieval call binding the contract method 0x238ac933. +// +// Solidity: function signer() view returns(address) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Caller) Signer(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _FeralfileExhibitionV42.contract.Call(opts, &out, "signer") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Signer is a free data retrieval call binding the contract method 0x238ac933. +// +// Solidity: function signer() view returns(address) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) Signer() (common.Address, error) { + return _FeralfileExhibitionV42.Contract.Signer(&_FeralfileExhibitionV42.CallOpts) +} + +// Signer is a free data retrieval call binding the contract method 0x238ac933. +// +// Solidity: function signer() view returns(address) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42CallerSession) Signer() (common.Address, error) { + return _FeralfileExhibitionV42.Contract.Signer(&_FeralfileExhibitionV42.CallOpts) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { + var out []interface{} + err := _FeralfileExhibitionV42.contract.Call(opts, &out, "supportsInterface", interfaceId) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _FeralfileExhibitionV42.Contract.SupportsInterface(&_FeralfileExhibitionV42.CallOpts, interfaceId) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42CallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _FeralfileExhibitionV42.Contract.SupportsInterface(&_FeralfileExhibitionV42.CallOpts, interfaceId) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Caller) Symbol(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _FeralfileExhibitionV42.contract.Call(opts, &out, "symbol") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) Symbol() (string, error) { + return _FeralfileExhibitionV42.Contract.Symbol(&_FeralfileExhibitionV42.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42CallerSession) Symbol() (string, error) { + return _FeralfileExhibitionV42.Contract.Symbol(&_FeralfileExhibitionV42.CallOpts) +} + +// TokenBaseURI is a free data retrieval call binding the contract method 0x4e99b800. +// +// Solidity: function tokenBaseURI() view returns(string) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Caller) TokenBaseURI(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _FeralfileExhibitionV42.contract.Call(opts, &out, "tokenBaseURI") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// TokenBaseURI is a free data retrieval call binding the contract method 0x4e99b800. +// +// Solidity: function tokenBaseURI() view returns(string) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) TokenBaseURI() (string, error) { + return _FeralfileExhibitionV42.Contract.TokenBaseURI(&_FeralfileExhibitionV42.CallOpts) +} + +// TokenBaseURI is a free data retrieval call binding the contract method 0x4e99b800. +// +// Solidity: function tokenBaseURI() view returns(string) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42CallerSession) TokenBaseURI() (string, error) { + return _FeralfileExhibitionV42.Contract.TokenBaseURI(&_FeralfileExhibitionV42.CallOpts) +} + +// TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59. +// +// Solidity: function tokenOfOwnerByIndex(address owner, uint256 index) view returns(uint256) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Caller) TokenOfOwnerByIndex(opts *bind.CallOpts, owner common.Address, index *big.Int) (*big.Int, error) { + var out []interface{} + err := _FeralfileExhibitionV42.contract.Call(opts, &out, "tokenOfOwnerByIndex", owner, index) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59. +// +// Solidity: function tokenOfOwnerByIndex(address owner, uint256 index) view returns(uint256) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) TokenOfOwnerByIndex(owner common.Address, index *big.Int) (*big.Int, error) { + return _FeralfileExhibitionV42.Contract.TokenOfOwnerByIndex(&_FeralfileExhibitionV42.CallOpts, owner, index) +} + +// TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59. +// +// Solidity: function tokenOfOwnerByIndex(address owner, uint256 index) view returns(uint256) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42CallerSession) TokenOfOwnerByIndex(owner common.Address, index *big.Int) (*big.Int, error) { + return _FeralfileExhibitionV42.Contract.TokenOfOwnerByIndex(&_FeralfileExhibitionV42.CallOpts, owner, index) +} + +// TokenURI is a free data retrieval call binding the contract method 0xc87b56dd. +// +// Solidity: function tokenURI(uint256 tokenId) view returns(string) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Caller) TokenURI(opts *bind.CallOpts, tokenId *big.Int) (string, error) { + var out []interface{} + err := _FeralfileExhibitionV42.contract.Call(opts, &out, "tokenURI", tokenId) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// TokenURI is a free data retrieval call binding the contract method 0xc87b56dd. +// +// Solidity: function tokenURI(uint256 tokenId) view returns(string) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) TokenURI(tokenId *big.Int) (string, error) { + return _FeralfileExhibitionV42.Contract.TokenURI(&_FeralfileExhibitionV42.CallOpts, tokenId) +} + +// TokenURI is a free data retrieval call binding the contract method 0xc87b56dd. +// +// Solidity: function tokenURI(uint256 tokenId) view returns(string) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42CallerSession) TokenURI(tokenId *big.Int) (string, error) { + return _FeralfileExhibitionV42.Contract.TokenURI(&_FeralfileExhibitionV42.CallOpts, tokenId) +} + +// TokensOfOwner is a free data retrieval call binding the contract method 0x8462151c. +// +// Solidity: function tokensOfOwner(address owner) view returns(uint256[]) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Caller) TokensOfOwner(opts *bind.CallOpts, owner common.Address) ([]*big.Int, error) { + var out []interface{} + err := _FeralfileExhibitionV42.contract.Call(opts, &out, "tokensOfOwner", owner) + + if err != nil { + return *new([]*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) + + return out0, err + +} + +// TokensOfOwner is a free data retrieval call binding the contract method 0x8462151c. +// +// Solidity: function tokensOfOwner(address owner) view returns(uint256[]) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) TokensOfOwner(owner common.Address) ([]*big.Int, error) { + return _FeralfileExhibitionV42.Contract.TokensOfOwner(&_FeralfileExhibitionV42.CallOpts, owner) +} + +// TokensOfOwner is a free data retrieval call binding the contract method 0x8462151c. +// +// Solidity: function tokensOfOwner(address owner) view returns(uint256[]) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42CallerSession) TokensOfOwner(owner common.Address) ([]*big.Int, error) { + return _FeralfileExhibitionV42.Contract.TokensOfOwner(&_FeralfileExhibitionV42.CallOpts, owner) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _FeralfileExhibitionV42.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) TotalSupply() (*big.Int, error) { + return _FeralfileExhibitionV42.Contract.TotalSupply(&_FeralfileExhibitionV42.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42CallerSession) TotalSupply() (*big.Int, error) { + return _FeralfileExhibitionV42.Contract.TotalSupply(&_FeralfileExhibitionV42.CallOpts) +} + +// Trustees is a free data retrieval call binding the contract method 0xeee608a4. +// +// Solidity: function trustees(address ) view returns(bool) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Caller) Trustees(opts *bind.CallOpts, arg0 common.Address) (bool, error) { + var out []interface{} + err := _FeralfileExhibitionV42.contract.Call(opts, &out, "trustees", arg0) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Trustees is a free data retrieval call binding the contract method 0xeee608a4. +// +// Solidity: function trustees(address ) view returns(bool) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) Trustees(arg0 common.Address) (bool, error) { + return _FeralfileExhibitionV42.Contract.Trustees(&_FeralfileExhibitionV42.CallOpts, arg0) +} + +// Trustees is a free data retrieval call binding the contract method 0xeee608a4. +// +// Solidity: function trustees(address ) view returns(bool) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42CallerSession) Trustees(arg0 common.Address) (bool, error) { + return _FeralfileExhibitionV42.Contract.Trustees(&_FeralfileExhibitionV42.CallOpts, arg0) +} + +// Vault is a free data retrieval call binding the contract method 0xfbfa77cf. +// +// Solidity: function vault() view returns(address) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Caller) Vault(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _FeralfileExhibitionV42.contract.Call(opts, &out, "vault") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Vault is a free data retrieval call binding the contract method 0xfbfa77cf. +// +// Solidity: function vault() view returns(address) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) Vault() (common.Address, error) { + return _FeralfileExhibitionV42.Contract.Vault(&_FeralfileExhibitionV42.CallOpts) +} + +// Vault is a free data retrieval call binding the contract method 0xfbfa77cf. +// +// Solidity: function vault() view returns(address) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42CallerSession) Vault() (common.Address, error) { + return _FeralfileExhibitionV42.Contract.Vault(&_FeralfileExhibitionV42.CallOpts) +} + +// VaultV2 is a free data retrieval call binding the contract method 0x5eb9bad6. +// +// Solidity: function vaultV2() view returns(address) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Caller) VaultV2(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _FeralfileExhibitionV42.contract.Call(opts, &out, "vaultV2") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// VaultV2 is a free data retrieval call binding the contract method 0x5eb9bad6. +// +// Solidity: function vaultV2() view returns(address) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) VaultV2() (common.Address, error) { + return _FeralfileExhibitionV42.Contract.VaultV2(&_FeralfileExhibitionV42.CallOpts) +} + +// VaultV2 is a free data retrieval call binding the contract method 0x5eb9bad6. +// +// Solidity: function vaultV2() view returns(address) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42CallerSession) VaultV2() (common.Address, error) { + return _FeralfileExhibitionV42.Contract.VaultV2(&_FeralfileExhibitionV42.CallOpts) +} + +// AddTrustee is a paid mutator transaction binding the contract method 0xdc78ac1c. +// +// Solidity: function addTrustee(address _trustee) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Transactor) AddTrustee(opts *bind.TransactOpts, _trustee common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV42.contract.Transact(opts, "addTrustee", _trustee) +} + +// AddTrustee is a paid mutator transaction binding the contract method 0xdc78ac1c. +// +// Solidity: function addTrustee(address _trustee) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) AddTrustee(_trustee common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.AddTrustee(&_FeralfileExhibitionV42.TransactOpts, _trustee) +} + +// AddTrustee is a paid mutator transaction binding the contract method 0xdc78ac1c. +// +// Solidity: function addTrustee(address _trustee) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42TransactorSession) AddTrustee(_trustee common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.AddTrustee(&_FeralfileExhibitionV42.TransactOpts, _trustee) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address operator, uint256 tokenId) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Transactor) Approve(opts *bind.TransactOpts, operator common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _FeralfileExhibitionV42.contract.Transact(opts, "approve", operator, tokenId) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address operator, uint256 tokenId) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) Approve(operator common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.Approve(&_FeralfileExhibitionV42.TransactOpts, operator, tokenId) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address operator, uint256 tokenId) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42TransactorSession) Approve(operator common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.Approve(&_FeralfileExhibitionV42.TransactOpts, operator, tokenId) +} + +// BurnArtworks is a paid mutator transaction binding the contract method 0x21fe0c64. +// +// Solidity: function burnArtworks(uint256[] tokenIds) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Transactor) BurnArtworks(opts *bind.TransactOpts, tokenIds []*big.Int) (*types.Transaction, error) { + return _FeralfileExhibitionV42.contract.Transact(opts, "burnArtworks", tokenIds) +} + +// BurnArtworks is a paid mutator transaction binding the contract method 0x21fe0c64. +// +// Solidity: function burnArtworks(uint256[] tokenIds) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) BurnArtworks(tokenIds []*big.Int) (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.BurnArtworks(&_FeralfileExhibitionV42.TransactOpts, tokenIds) +} + +// BurnArtworks is a paid mutator transaction binding the contract method 0x21fe0c64. +// +// Solidity: function burnArtworks(uint256[] tokenIds) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42TransactorSession) BurnArtworks(tokenIds []*big.Int) (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.BurnArtworks(&_FeralfileExhibitionV42.TransactOpts, tokenIds) +} + +// BuyArtworks is a paid mutator transaction binding the contract method 0x2977e4b3. +// +// Solidity: function buyArtworks(bytes32 , bytes32 , uint8 , (uint256,uint256,uint256,address,uint256[],(address,uint256)[][],bool) ) payable returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Transactor) BuyArtworks(opts *bind.TransactOpts, arg0 [32]byte, arg1 [32]byte, arg2 uint8, arg3 IFeralfileSaleDataSaleData) (*types.Transaction, error) { + return _FeralfileExhibitionV42.contract.Transact(opts, "buyArtworks", arg0, arg1, arg2, arg3) +} + +// BuyArtworks is a paid mutator transaction binding the contract method 0x2977e4b3. +// +// Solidity: function buyArtworks(bytes32 , bytes32 , uint8 , (uint256,uint256,uint256,address,uint256[],(address,uint256)[][],bool) ) payable returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) BuyArtworks(arg0 [32]byte, arg1 [32]byte, arg2 uint8, arg3 IFeralfileSaleDataSaleData) (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.BuyArtworks(&_FeralfileExhibitionV42.TransactOpts, arg0, arg1, arg2, arg3) +} + +// BuyArtworks is a paid mutator transaction binding the contract method 0x2977e4b3. +// +// Solidity: function buyArtworks(bytes32 , bytes32 , uint8 , (uint256,uint256,uint256,address,uint256[],(address,uint256)[][],bool) ) payable returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42TransactorSession) BuyArtworks(arg0 [32]byte, arg1 [32]byte, arg2 uint8, arg3 IFeralfileSaleDataSaleData) (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.BuyArtworks(&_FeralfileExhibitionV42.TransactOpts, arg0, arg1, arg2, arg3) +} + +// BuyBulkArtworks is a paid mutator transaction binding the contract method 0x4bda5d89. +// +// Solidity: function buyBulkArtworks(bytes32 r_, bytes32 s_, uint8 v_, (uint256,uint256,uint256,address,uint256,uint256,uint16,(address,uint256)[],bool) saleData_) payable returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Transactor) BuyBulkArtworks(opts *bind.TransactOpts, r_ [32]byte, s_ [32]byte, v_ uint8, saleData_ IFeralfileSaleDataV2SaleDataV2) (*types.Transaction, error) { + return _FeralfileExhibitionV42.contract.Transact(opts, "buyBulkArtworks", r_, s_, v_, saleData_) +} + +// BuyBulkArtworks is a paid mutator transaction binding the contract method 0x4bda5d89. +// +// Solidity: function buyBulkArtworks(bytes32 r_, bytes32 s_, uint8 v_, (uint256,uint256,uint256,address,uint256,uint256,uint16,(address,uint256)[],bool) saleData_) payable returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) BuyBulkArtworks(r_ [32]byte, s_ [32]byte, v_ uint8, saleData_ IFeralfileSaleDataV2SaleDataV2) (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.BuyBulkArtworks(&_FeralfileExhibitionV42.TransactOpts, r_, s_, v_, saleData_) +} + +// BuyBulkArtworks is a paid mutator transaction binding the contract method 0x4bda5d89. +// +// Solidity: function buyBulkArtworks(bytes32 r_, bytes32 s_, uint8 v_, (uint256,uint256,uint256,address,uint256,uint256,uint16,(address,uint256)[],bool) saleData_) payable returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42TransactorSession) BuyBulkArtworks(r_ [32]byte, s_ [32]byte, v_ uint8, saleData_ IFeralfileSaleDataV2SaleDataV2) (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.BuyBulkArtworks(&_FeralfileExhibitionV42.TransactOpts, r_, s_, v_, saleData_) +} + +// MintArtworks is a paid mutator transaction binding the contract method 0x8cba1c67. +// +// Solidity: function mintArtworks((uint256,uint256,address)[] data) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Transactor) MintArtworks(opts *bind.TransactOpts, data []FeralfileExhibitionV4MintData) (*types.Transaction, error) { + return _FeralfileExhibitionV42.contract.Transact(opts, "mintArtworks", data) +} + +// MintArtworks is a paid mutator transaction binding the contract method 0x8cba1c67. +// +// Solidity: function mintArtworks((uint256,uint256,address)[] data) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) MintArtworks(data []FeralfileExhibitionV4MintData) (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.MintArtworks(&_FeralfileExhibitionV42.TransactOpts, data) +} + +// MintArtworks is a paid mutator transaction binding the contract method 0x8cba1c67. +// +// Solidity: function mintArtworks((uint256,uint256,address)[] data) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42TransactorSession) MintArtworks(data []FeralfileExhibitionV4MintData) (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.MintArtworks(&_FeralfileExhibitionV42.TransactOpts, data) +} + +// PauseSale is a paid mutator transaction binding the contract method 0x55367ba9. +// +// Solidity: function pauseSale() returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Transactor) PauseSale(opts *bind.TransactOpts) (*types.Transaction, error) { + return _FeralfileExhibitionV42.contract.Transact(opts, "pauseSale") +} + +// PauseSale is a paid mutator transaction binding the contract method 0x55367ba9. +// +// Solidity: function pauseSale() returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) PauseSale() (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.PauseSale(&_FeralfileExhibitionV42.TransactOpts) +} + +// PauseSale is a paid mutator transaction binding the contract method 0x55367ba9. +// +// Solidity: function pauseSale() returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42TransactorSession) PauseSale() (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.PauseSale(&_FeralfileExhibitionV42.TransactOpts) +} + +// RemoveTrustee is a paid mutator transaction binding the contract method 0x03120506. +// +// Solidity: function removeTrustee(address _trustee) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Transactor) RemoveTrustee(opts *bind.TransactOpts, _trustee common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV42.contract.Transact(opts, "removeTrustee", _trustee) +} + +// RemoveTrustee is a paid mutator transaction binding the contract method 0x03120506. +// +// Solidity: function removeTrustee(address _trustee) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) RemoveTrustee(_trustee common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.RemoveTrustee(&_FeralfileExhibitionV42.TransactOpts, _trustee) +} + +// RemoveTrustee is a paid mutator transaction binding the contract method 0x03120506. +// +// Solidity: function removeTrustee(address _trustee) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42TransactorSession) RemoveTrustee(_trustee common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.RemoveTrustee(&_FeralfileExhibitionV42.TransactOpts, _trustee) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Transactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _FeralfileExhibitionV42.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) RenounceOwnership() (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.RenounceOwnership(&_FeralfileExhibitionV42.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42TransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.RenounceOwnership(&_FeralfileExhibitionV42.TransactOpts) +} + +// ReplaceAdvanceAddresses is a paid mutator transaction binding the contract method 0x41a5626a. +// +// Solidity: function replaceAdvanceAddresses(address[] oldAddresses_, address[] newAddresses_) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Transactor) ReplaceAdvanceAddresses(opts *bind.TransactOpts, oldAddresses_ []common.Address, newAddresses_ []common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV42.contract.Transact(opts, "replaceAdvanceAddresses", oldAddresses_, newAddresses_) +} + +// ReplaceAdvanceAddresses is a paid mutator transaction binding the contract method 0x41a5626a. +// +// Solidity: function replaceAdvanceAddresses(address[] oldAddresses_, address[] newAddresses_) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) ReplaceAdvanceAddresses(oldAddresses_ []common.Address, newAddresses_ []common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.ReplaceAdvanceAddresses(&_FeralfileExhibitionV42.TransactOpts, oldAddresses_, newAddresses_) +} + +// ReplaceAdvanceAddresses is a paid mutator transaction binding the contract method 0x41a5626a. +// +// Solidity: function replaceAdvanceAddresses(address[] oldAddresses_, address[] newAddresses_) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42TransactorSession) ReplaceAdvanceAddresses(oldAddresses_ []common.Address, newAddresses_ []common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.ReplaceAdvanceAddresses(&_FeralfileExhibitionV42.TransactOpts, oldAddresses_, newAddresses_) +} + +// ResumeSale is a paid mutator transaction binding the contract method 0x33e364cb. +// +// Solidity: function resumeSale() returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Transactor) ResumeSale(opts *bind.TransactOpts) (*types.Transaction, error) { + return _FeralfileExhibitionV42.contract.Transact(opts, "resumeSale") +} + +// ResumeSale is a paid mutator transaction binding the contract method 0x33e364cb. +// +// Solidity: function resumeSale() returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) ResumeSale() (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.ResumeSale(&_FeralfileExhibitionV42.TransactOpts) +} + +// ResumeSale is a paid mutator transaction binding the contract method 0x33e364cb. +// +// Solidity: function resumeSale() returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42TransactorSession) ResumeSale() (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.ResumeSale(&_FeralfileExhibitionV42.TransactOpts) +} + +// SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Transactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _FeralfileExhibitionV42.contract.Transact(opts, "safeTransferFrom", from, to, tokenId) +} + +// SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.SafeTransferFrom(&_FeralfileExhibitionV42.TransactOpts, from, to, tokenId) +} + +// SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42TransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.SafeTransferFrom(&_FeralfileExhibitionV42.TransactOpts, from, to, tokenId) +} + +// SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Transactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) { + return _FeralfileExhibitionV42.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, data) +} + +// SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.SafeTransferFrom0(&_FeralfileExhibitionV42.TransactOpts, from, to, tokenId, data) +} + +// SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42TransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.SafeTransferFrom0(&_FeralfileExhibitionV42.TransactOpts, from, to, tokenId, data) +} + +// SetAdvanceSetting is a paid mutator transaction binding the contract method 0x3c352b0d. +// +// Solidity: function setAdvanceSetting(address[] addresses_, uint256[] amounts_) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Transactor) SetAdvanceSetting(opts *bind.TransactOpts, addresses_ []common.Address, amounts_ []*big.Int) (*types.Transaction, error) { + return _FeralfileExhibitionV42.contract.Transact(opts, "setAdvanceSetting", addresses_, amounts_) +} + +// SetAdvanceSetting is a paid mutator transaction binding the contract method 0x3c352b0d. +// +// Solidity: function setAdvanceSetting(address[] addresses_, uint256[] amounts_) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) SetAdvanceSetting(addresses_ []common.Address, amounts_ []*big.Int) (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.SetAdvanceSetting(&_FeralfileExhibitionV42.TransactOpts, addresses_, amounts_) +} + +// SetAdvanceSetting is a paid mutator transaction binding the contract method 0x3c352b0d. +// +// Solidity: function setAdvanceSetting(address[] addresses_, uint256[] amounts_) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42TransactorSession) SetAdvanceSetting(addresses_ []common.Address, amounts_ []*big.Int) (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.SetAdvanceSetting(&_FeralfileExhibitionV42.TransactOpts, addresses_, amounts_) +} + +// SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. +// +// Solidity: function setApprovalForAll(address operator, bool approved) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Transactor) SetApprovalForAll(opts *bind.TransactOpts, operator common.Address, approved bool) (*types.Transaction, error) { + return _FeralfileExhibitionV42.contract.Transact(opts, "setApprovalForAll", operator, approved) +} + +// SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. +// +// Solidity: function setApprovalForAll(address operator, bool approved) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) SetApprovalForAll(operator common.Address, approved bool) (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.SetApprovalForAll(&_FeralfileExhibitionV42.TransactOpts, operator, approved) +} + +// SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. +// +// Solidity: function setApprovalForAll(address operator, bool approved) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42TransactorSession) SetApprovalForAll(operator common.Address, approved bool) (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.SetApprovalForAll(&_FeralfileExhibitionV42.TransactOpts, operator, approved) +} + +// SetCostReceiver is a paid mutator transaction binding the contract method 0x1623528f. +// +// Solidity: function setCostReceiver(address costReceiver_) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Transactor) SetCostReceiver(opts *bind.TransactOpts, costReceiver_ common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV42.contract.Transact(opts, "setCostReceiver", costReceiver_) +} + +// SetCostReceiver is a paid mutator transaction binding the contract method 0x1623528f. +// +// Solidity: function setCostReceiver(address costReceiver_) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) SetCostReceiver(costReceiver_ common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.SetCostReceiver(&_FeralfileExhibitionV42.TransactOpts, costReceiver_) +} + +// SetCostReceiver is a paid mutator transaction binding the contract method 0x1623528f. +// +// Solidity: function setCostReceiver(address costReceiver_) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42TransactorSession) SetCostReceiver(costReceiver_ common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.SetCostReceiver(&_FeralfileExhibitionV42.TransactOpts, costReceiver_) +} + +// SetSigner is a paid mutator transaction binding the contract method 0x6c19e783. +// +// Solidity: function setSigner(address signer_) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Transactor) SetSigner(opts *bind.TransactOpts, signer_ common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV42.contract.Transact(opts, "setSigner", signer_) +} + +// SetSigner is a paid mutator transaction binding the contract method 0x6c19e783. +// +// Solidity: function setSigner(address signer_) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) SetSigner(signer_ common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.SetSigner(&_FeralfileExhibitionV42.TransactOpts, signer_) +} + +// SetSigner is a paid mutator transaction binding the contract method 0x6c19e783. +// +// Solidity: function setSigner(address signer_) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42TransactorSession) SetSigner(signer_ common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.SetSigner(&_FeralfileExhibitionV42.TransactOpts, signer_) +} + +// SetTokenBaseURI is a paid mutator transaction binding the contract method 0x8ef79e91. +// +// Solidity: function setTokenBaseURI(string baseURI_) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Transactor) SetTokenBaseURI(opts *bind.TransactOpts, baseURI_ string) (*types.Transaction, error) { + return _FeralfileExhibitionV42.contract.Transact(opts, "setTokenBaseURI", baseURI_) +} + +// SetTokenBaseURI is a paid mutator transaction binding the contract method 0x8ef79e91. +// +// Solidity: function setTokenBaseURI(string baseURI_) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) SetTokenBaseURI(baseURI_ string) (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.SetTokenBaseURI(&_FeralfileExhibitionV42.TransactOpts, baseURI_) +} + +// SetTokenBaseURI is a paid mutator transaction binding the contract method 0x8ef79e91. +// +// Solidity: function setTokenBaseURI(string baseURI_) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42TransactorSession) SetTokenBaseURI(baseURI_ string) (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.SetTokenBaseURI(&_FeralfileExhibitionV42.TransactOpts, baseURI_) +} + +// SetVault is a paid mutator transaction binding the contract method 0x6817031b. +// +// Solidity: function setVault(address vault_) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Transactor) SetVault(opts *bind.TransactOpts, vault_ common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV42.contract.Transact(opts, "setVault", vault_) +} + +// SetVault is a paid mutator transaction binding the contract method 0x6817031b. +// +// Solidity: function setVault(address vault_) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) SetVault(vault_ common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.SetVault(&_FeralfileExhibitionV42.TransactOpts, vault_) +} + +// SetVault is a paid mutator transaction binding the contract method 0x6817031b. +// +// Solidity: function setVault(address vault_) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42TransactorSession) SetVault(vault_ common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.SetVault(&_FeralfileExhibitionV42.TransactOpts, vault_) +} + +// StartSale is a paid mutator transaction binding the contract method 0xb66a0e5d. +// +// Solidity: function startSale() returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Transactor) StartSale(opts *bind.TransactOpts) (*types.Transaction, error) { + return _FeralfileExhibitionV42.contract.Transact(opts, "startSale") +} + +// StartSale is a paid mutator transaction binding the contract method 0xb66a0e5d. +// +// Solidity: function startSale() returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) StartSale() (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.StartSale(&_FeralfileExhibitionV42.TransactOpts) +} + +// StartSale is a paid mutator transaction binding the contract method 0xb66a0e5d. +// +// Solidity: function startSale() returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42TransactorSession) StartSale() (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.StartSale(&_FeralfileExhibitionV42.TransactOpts) +} + +// StopSaleAndBurn is a paid mutator transaction binding the contract method 0xb9b8311a. +// +// Solidity: function stopSaleAndBurn() returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Transactor) StopSaleAndBurn(opts *bind.TransactOpts) (*types.Transaction, error) { + return _FeralfileExhibitionV42.contract.Transact(opts, "stopSaleAndBurn") +} + +// StopSaleAndBurn is a paid mutator transaction binding the contract method 0xb9b8311a. +// +// Solidity: function stopSaleAndBurn() returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) StopSaleAndBurn() (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.StopSaleAndBurn(&_FeralfileExhibitionV42.TransactOpts) +} + +// StopSaleAndBurn is a paid mutator transaction binding the contract method 0xb9b8311a. +// +// Solidity: function stopSaleAndBurn() returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42TransactorSession) StopSaleAndBurn() (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.StopSaleAndBurn(&_FeralfileExhibitionV42.TransactOpts) +} + +// StopSaleAndTransfer is a paid mutator transaction binding the contract method 0x65a46e08. +// +// Solidity: function stopSaleAndTransfer(uint256[] seriesIds, address[] recipientAddresses) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Transactor) StopSaleAndTransfer(opts *bind.TransactOpts, seriesIds []*big.Int, recipientAddresses []common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV42.contract.Transact(opts, "stopSaleAndTransfer", seriesIds, recipientAddresses) +} + +// StopSaleAndTransfer is a paid mutator transaction binding the contract method 0x65a46e08. +// +// Solidity: function stopSaleAndTransfer(uint256[] seriesIds, address[] recipientAddresses) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) StopSaleAndTransfer(seriesIds []*big.Int, recipientAddresses []common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.StopSaleAndTransfer(&_FeralfileExhibitionV42.TransactOpts, seriesIds, recipientAddresses) +} + +// StopSaleAndTransfer is a paid mutator transaction binding the contract method 0x65a46e08. +// +// Solidity: function stopSaleAndTransfer(uint256[] seriesIds, address[] recipientAddresses) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42TransactorSession) StopSaleAndTransfer(seriesIds []*big.Int, recipientAddresses []common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.StopSaleAndTransfer(&_FeralfileExhibitionV42.TransactOpts, seriesIds, recipientAddresses) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 tokenId) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _FeralfileExhibitionV42.contract.Transact(opts, "transferFrom", from, to, tokenId) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 tokenId) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.TransferFrom(&_FeralfileExhibitionV42.TransactOpts, from, to, tokenId) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 tokenId) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42TransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.TransferFrom(&_FeralfileExhibitionV42.TransactOpts, from, to, tokenId) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Transactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV42.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.TransferOwnership(&_FeralfileExhibitionV42.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42TransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.TransferOwnership(&_FeralfileExhibitionV42.TransactOpts, newOwner) +} + +// UpdateOperatorFilterRegistry is a paid mutator transaction binding the contract method 0x114ba8ee. +// +// Solidity: function updateOperatorFilterRegistry(address operatorFilterRegisterAddress) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Transactor) UpdateOperatorFilterRegistry(opts *bind.TransactOpts, operatorFilterRegisterAddress common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV42.contract.Transact(opts, "updateOperatorFilterRegistry", operatorFilterRegisterAddress) +} + +// UpdateOperatorFilterRegistry is a paid mutator transaction binding the contract method 0x114ba8ee. +// +// Solidity: function updateOperatorFilterRegistry(address operatorFilterRegisterAddress) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) UpdateOperatorFilterRegistry(operatorFilterRegisterAddress common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.UpdateOperatorFilterRegistry(&_FeralfileExhibitionV42.TransactOpts, operatorFilterRegisterAddress) +} + +// UpdateOperatorFilterRegistry is a paid mutator transaction binding the contract method 0x114ba8ee. +// +// Solidity: function updateOperatorFilterRegistry(address operatorFilterRegisterAddress) returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42TransactorSession) UpdateOperatorFilterRegistry(operatorFilterRegisterAddress common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.UpdateOperatorFilterRegistry(&_FeralfileExhibitionV42.TransactOpts, operatorFilterRegisterAddress) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Transactor) Receive(opts *bind.TransactOpts) (*types.Transaction, error) { + return _FeralfileExhibitionV42.contract.RawTransact(opts, nil) // calldata is disallowed for receive function +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Session) Receive() (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.Receive(&_FeralfileExhibitionV42.TransactOpts) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42TransactorSession) Receive() (*types.Transaction, error) { + return _FeralfileExhibitionV42.Contract.Receive(&_FeralfileExhibitionV42.TransactOpts) +} + +// FeralfileExhibitionV42ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the FeralfileExhibitionV42 contract. +type FeralfileExhibitionV42ApprovalIterator struct { + Event *FeralfileExhibitionV42Approval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *FeralfileExhibitionV42ApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV42Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV42Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *FeralfileExhibitionV42ApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *FeralfileExhibitionV42ApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// FeralfileExhibitionV42Approval represents a Approval event raised by the FeralfileExhibitionV42 contract. +type FeralfileExhibitionV42Approval struct { + Owner common.Address + Approved common.Address + TokenId *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*FeralfileExhibitionV42ApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var approvedRule []interface{} + for _, approvedItem := range approved { + approvedRule = append(approvedRule, approvedItem) + } + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) + } + + logs, sub, err := _FeralfileExhibitionV42.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule) + if err != nil { + return nil, err + } + return &FeralfileExhibitionV42ApprovalIterator{contract: _FeralfileExhibitionV42.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *FeralfileExhibitionV42Approval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var approvedRule []interface{} + for _, approvedItem := range approved { + approvedRule = append(approvedRule, approvedItem) + } + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) + } + + logs, sub, err := _FeralfileExhibitionV42.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(FeralfileExhibitionV42Approval) + if err := _FeralfileExhibitionV42.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Filterer) ParseApproval(log types.Log) (*FeralfileExhibitionV42Approval, error) { + event := new(FeralfileExhibitionV42Approval) + if err := _FeralfileExhibitionV42.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// FeralfileExhibitionV42ApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the FeralfileExhibitionV42 contract. +type FeralfileExhibitionV42ApprovalForAllIterator struct { + Event *FeralfileExhibitionV42ApprovalForAll // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *FeralfileExhibitionV42ApprovalForAllIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV42ApprovalForAll) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV42ApprovalForAll) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *FeralfileExhibitionV42ApprovalForAllIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *FeralfileExhibitionV42ApprovalForAllIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// FeralfileExhibitionV42ApprovalForAll represents a ApprovalForAll event raised by the FeralfileExhibitionV42 contract. +type FeralfileExhibitionV42ApprovalForAll struct { + Owner common.Address + Operator common.Address + Approved bool + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31. +// +// Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Filterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*FeralfileExhibitionV42ApprovalForAllIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _FeralfileExhibitionV42.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule) + if err != nil { + return nil, err + } + return &FeralfileExhibitionV42ApprovalForAllIterator{contract: _FeralfileExhibitionV42.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil +} + +// WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31. +// +// Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Filterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *FeralfileExhibitionV42ApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _FeralfileExhibitionV42.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(FeralfileExhibitionV42ApprovalForAll) + if err := _FeralfileExhibitionV42.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31. +// +// Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Filterer) ParseApprovalForAll(log types.Log) (*FeralfileExhibitionV42ApprovalForAll, error) { + event := new(FeralfileExhibitionV42ApprovalForAll) + if err := _FeralfileExhibitionV42.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// FeralfileExhibitionV42BurnArtworkIterator is returned from FilterBurnArtwork and is used to iterate over the raw logs and unpacked data for BurnArtwork events raised by the FeralfileExhibitionV42 contract. +type FeralfileExhibitionV42BurnArtworkIterator struct { + Event *FeralfileExhibitionV42BurnArtwork // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *FeralfileExhibitionV42BurnArtworkIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV42BurnArtwork) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV42BurnArtwork) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *FeralfileExhibitionV42BurnArtworkIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *FeralfileExhibitionV42BurnArtworkIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// FeralfileExhibitionV42BurnArtwork represents a BurnArtwork event raised by the FeralfileExhibitionV42 contract. +type FeralfileExhibitionV42BurnArtwork struct { + TokenId *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBurnArtwork is a free log retrieval operation binding the contract event 0xbde7938970372996ff103863625e348ef2bf8f38a5b02181be75aafef17c23d5. +// +// Solidity: event BurnArtwork(uint256 indexed tokenId) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Filterer) FilterBurnArtwork(opts *bind.FilterOpts, tokenId []*big.Int) (*FeralfileExhibitionV42BurnArtworkIterator, error) { + + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) + } + + logs, sub, err := _FeralfileExhibitionV42.contract.FilterLogs(opts, "BurnArtwork", tokenIdRule) + if err != nil { + return nil, err + } + return &FeralfileExhibitionV42BurnArtworkIterator{contract: _FeralfileExhibitionV42.contract, event: "BurnArtwork", logs: logs, sub: sub}, nil +} + +// WatchBurnArtwork is a free log subscription operation binding the contract event 0xbde7938970372996ff103863625e348ef2bf8f38a5b02181be75aafef17c23d5. +// +// Solidity: event BurnArtwork(uint256 indexed tokenId) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Filterer) WatchBurnArtwork(opts *bind.WatchOpts, sink chan<- *FeralfileExhibitionV42BurnArtwork, tokenId []*big.Int) (event.Subscription, error) { + + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) + } + + logs, sub, err := _FeralfileExhibitionV42.contract.WatchLogs(opts, "BurnArtwork", tokenIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(FeralfileExhibitionV42BurnArtwork) + if err := _FeralfileExhibitionV42.contract.UnpackLog(event, "BurnArtwork", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBurnArtwork is a log parse operation binding the contract event 0xbde7938970372996ff103863625e348ef2bf8f38a5b02181be75aafef17c23d5. +// +// Solidity: event BurnArtwork(uint256 indexed tokenId) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Filterer) ParseBurnArtwork(log types.Log) (*FeralfileExhibitionV42BurnArtwork, error) { + event := new(FeralfileExhibitionV42BurnArtwork) + if err := _FeralfileExhibitionV42.contract.UnpackLog(event, "BurnArtwork", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// FeralfileExhibitionV42BuyArtworkIterator is returned from FilterBuyArtwork and is used to iterate over the raw logs and unpacked data for BuyArtwork events raised by the FeralfileExhibitionV42 contract. +type FeralfileExhibitionV42BuyArtworkIterator struct { + Event *FeralfileExhibitionV42BuyArtwork // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *FeralfileExhibitionV42BuyArtworkIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV42BuyArtwork) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV42BuyArtwork) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *FeralfileExhibitionV42BuyArtworkIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *FeralfileExhibitionV42BuyArtworkIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// FeralfileExhibitionV42BuyArtwork represents a BuyArtwork event raised by the FeralfileExhibitionV42 contract. +type FeralfileExhibitionV42BuyArtwork struct { + Buyer common.Address + TokenId *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBuyArtwork is a free log retrieval operation binding the contract event 0x0475389cd69b8d3163620b43283bf74e8fc71020c3c6cef2a529b5c405e9687f. +// +// Solidity: event BuyArtwork(address indexed buyer, uint256 indexed tokenId) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Filterer) FilterBuyArtwork(opts *bind.FilterOpts, buyer []common.Address, tokenId []*big.Int) (*FeralfileExhibitionV42BuyArtworkIterator, error) { + + var buyerRule []interface{} + for _, buyerItem := range buyer { + buyerRule = append(buyerRule, buyerItem) + } + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) + } + + logs, sub, err := _FeralfileExhibitionV42.contract.FilterLogs(opts, "BuyArtwork", buyerRule, tokenIdRule) + if err != nil { + return nil, err + } + return &FeralfileExhibitionV42BuyArtworkIterator{contract: _FeralfileExhibitionV42.contract, event: "BuyArtwork", logs: logs, sub: sub}, nil +} + +// WatchBuyArtwork is a free log subscription operation binding the contract event 0x0475389cd69b8d3163620b43283bf74e8fc71020c3c6cef2a529b5c405e9687f. +// +// Solidity: event BuyArtwork(address indexed buyer, uint256 indexed tokenId) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Filterer) WatchBuyArtwork(opts *bind.WatchOpts, sink chan<- *FeralfileExhibitionV42BuyArtwork, buyer []common.Address, tokenId []*big.Int) (event.Subscription, error) { + + var buyerRule []interface{} + for _, buyerItem := range buyer { + buyerRule = append(buyerRule, buyerItem) + } + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) + } + + logs, sub, err := _FeralfileExhibitionV42.contract.WatchLogs(opts, "BuyArtwork", buyerRule, tokenIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(FeralfileExhibitionV42BuyArtwork) + if err := _FeralfileExhibitionV42.contract.UnpackLog(event, "BuyArtwork", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBuyArtwork is a log parse operation binding the contract event 0x0475389cd69b8d3163620b43283bf74e8fc71020c3c6cef2a529b5c405e9687f. +// +// Solidity: event BuyArtwork(address indexed buyer, uint256 indexed tokenId) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Filterer) ParseBuyArtwork(log types.Log) (*FeralfileExhibitionV42BuyArtwork, error) { + event := new(FeralfileExhibitionV42BuyArtwork) + if err := _FeralfileExhibitionV42.contract.UnpackLog(event, "BuyArtwork", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// FeralfileExhibitionV42NewArtworkIterator is returned from FilterNewArtwork and is used to iterate over the raw logs and unpacked data for NewArtwork events raised by the FeralfileExhibitionV42 contract. +type FeralfileExhibitionV42NewArtworkIterator struct { + Event *FeralfileExhibitionV42NewArtwork // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *FeralfileExhibitionV42NewArtworkIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV42NewArtwork) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV42NewArtwork) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *FeralfileExhibitionV42NewArtworkIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *FeralfileExhibitionV42NewArtworkIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// FeralfileExhibitionV42NewArtwork represents a NewArtwork event raised by the FeralfileExhibitionV42 contract. +type FeralfileExhibitionV42NewArtwork struct { + Owner common.Address + SeriesId *big.Int + TokenId *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterNewArtwork is a free log retrieval operation binding the contract event 0x407d7da1d3b2b1871fbfa2b5b1c4657a3cc5711d3023c552798551c7ee301eea. +// +// Solidity: event NewArtwork(address indexed owner, uint256 indexed seriesId, uint256 indexed tokenId) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Filterer) FilterNewArtwork(opts *bind.FilterOpts, owner []common.Address, seriesId []*big.Int, tokenId []*big.Int) (*FeralfileExhibitionV42NewArtworkIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var seriesIdRule []interface{} + for _, seriesIdItem := range seriesId { + seriesIdRule = append(seriesIdRule, seriesIdItem) + } + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) + } + + logs, sub, err := _FeralfileExhibitionV42.contract.FilterLogs(opts, "NewArtwork", ownerRule, seriesIdRule, tokenIdRule) + if err != nil { + return nil, err + } + return &FeralfileExhibitionV42NewArtworkIterator{contract: _FeralfileExhibitionV42.contract, event: "NewArtwork", logs: logs, sub: sub}, nil +} + +// WatchNewArtwork is a free log subscription operation binding the contract event 0x407d7da1d3b2b1871fbfa2b5b1c4657a3cc5711d3023c552798551c7ee301eea. +// +// Solidity: event NewArtwork(address indexed owner, uint256 indexed seriesId, uint256 indexed tokenId) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Filterer) WatchNewArtwork(opts *bind.WatchOpts, sink chan<- *FeralfileExhibitionV42NewArtwork, owner []common.Address, seriesId []*big.Int, tokenId []*big.Int) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var seriesIdRule []interface{} + for _, seriesIdItem := range seriesId { + seriesIdRule = append(seriesIdRule, seriesIdItem) + } + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) + } + + logs, sub, err := _FeralfileExhibitionV42.contract.WatchLogs(opts, "NewArtwork", ownerRule, seriesIdRule, tokenIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(FeralfileExhibitionV42NewArtwork) + if err := _FeralfileExhibitionV42.contract.UnpackLog(event, "NewArtwork", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseNewArtwork is a log parse operation binding the contract event 0x407d7da1d3b2b1871fbfa2b5b1c4657a3cc5711d3023c552798551c7ee301eea. +// +// Solidity: event NewArtwork(address indexed owner, uint256 indexed seriesId, uint256 indexed tokenId) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Filterer) ParseNewArtwork(log types.Log) (*FeralfileExhibitionV42NewArtwork, error) { + event := new(FeralfileExhibitionV42NewArtwork) + if err := _FeralfileExhibitionV42.contract.UnpackLog(event, "NewArtwork", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// FeralfileExhibitionV42OwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the FeralfileExhibitionV42 contract. +type FeralfileExhibitionV42OwnershipTransferredIterator struct { + Event *FeralfileExhibitionV42OwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *FeralfileExhibitionV42OwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV42OwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV42OwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *FeralfileExhibitionV42OwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *FeralfileExhibitionV42OwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// FeralfileExhibitionV42OwnershipTransferred represents a OwnershipTransferred event raised by the FeralfileExhibitionV42 contract. +type FeralfileExhibitionV42OwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Filterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*FeralfileExhibitionV42OwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _FeralfileExhibitionV42.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &FeralfileExhibitionV42OwnershipTransferredIterator{contract: _FeralfileExhibitionV42.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Filterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *FeralfileExhibitionV42OwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _FeralfileExhibitionV42.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(FeralfileExhibitionV42OwnershipTransferred) + if err := _FeralfileExhibitionV42.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Filterer) ParseOwnershipTransferred(log types.Log) (*FeralfileExhibitionV42OwnershipTransferred, error) { + event := new(FeralfileExhibitionV42OwnershipTransferred) + if err := _FeralfileExhibitionV42.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// FeralfileExhibitionV42TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the FeralfileExhibitionV42 contract. +type FeralfileExhibitionV42TransferIterator struct { + Event *FeralfileExhibitionV42Transfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *FeralfileExhibitionV42TransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV42Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV42Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *FeralfileExhibitionV42TransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *FeralfileExhibitionV42TransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// FeralfileExhibitionV42Transfer represents a Transfer event raised by the FeralfileExhibitionV42 contract. +type FeralfileExhibitionV42Transfer struct { + From common.Address + To common.Address + TokenId *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*FeralfileExhibitionV42TransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) + } + + logs, sub, err := _FeralfileExhibitionV42.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule) + if err != nil { + return nil, err + } + return &FeralfileExhibitionV42TransferIterator{contract: _FeralfileExhibitionV42.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *FeralfileExhibitionV42Transfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) + } + + logs, sub, err := _FeralfileExhibitionV42.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(FeralfileExhibitionV42Transfer) + if err := _FeralfileExhibitionV42.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) +func (_FeralfileExhibitionV42 *FeralfileExhibitionV42Filterer) ParseTransfer(log types.Log) (*FeralfileExhibitionV42Transfer, error) { + event := new(FeralfileExhibitionV42Transfer) + if err := _FeralfileExhibitionV42.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +}