// Code generated - DO NOT EDIT.
// This file is a generated binding and any manual changes will be lost.

package accessors

import (
	"errors"
	"math/big"
	"strings"

	ethereum "github.com/thetatoken/thetasubchain/eth"
	"github.com/thetatoken/thetasubchain/eth/abi"
	"github.com/thetatoken/thetasubchain/eth/abi/bind"
	"github.com/thetatoken/theta/common"
	"github.com/thetatoken/thetasubchain/eth/core/types"
	"github.com/thetatoken/thetasubchain/eth/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
)

// TNT1155TokenBankMetaData contains all meta data concerning the TNT1155TokenBank contract.
var TNT1155TokenBankMetaData = &bind.MetaData{
	ABI: "[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"mainchainID_\",\"type\":\"uint256\"},{\"internalType\":\"contractChainRegistrar\",\"name\":\"chainRegistrar_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"voucherContractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenID\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"FailedToMintTNT1155Vouchers\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"FailedToSendTFuel\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenContractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenID\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"FailedToUnlockTNT1155Tokens\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"denom\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sourceChainTokenSender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"targetChainID\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"targetChainVoucherReceiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenID\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lockedAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"tokenURI\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenLockNonce\",\"type\":\"uint256\"}],\"name\":\"TNT1155TokenLocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"denom\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"targetChainTokenReceiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenID\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"unlockedAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"sourceChainVoucherBurnNonce\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenUnlockNonce\",\"type\":\"uint256\"}],\"name\":\"TNT1155TokenUnlocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"denom\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sourceChainVoucherOwner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"targetChainTokenReceiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenID\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"burnedAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"voucherBurnNonce\",\"type\":\"uint256\"}],\"name\":\"TNT1155VoucherBurned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"denom\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"targetChainVoucherReceiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"voucherContract\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenID\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mintedAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"sourceChainTokenLockNonce\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"voucherMintNonce\",\"type\":\"uint256\"}],\"name\":\"TNT1155VoucherMinted\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"allDenoms\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"allVouchers\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"denomToVoucherLookup\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"exists\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"denom\",\"type\":\"string\"}],\"name\":\"exists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"voucherAddress\",\"type\":\"address\"}],\"name\":\"exists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"subchainID\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"dynasty\",\"type\":\"uint256\"}],\"name\":\"getAdjustedValidatorSet\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"validators\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"shareAmounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"voucherContractAddr\",\"type\":\"address\"}],\"name\":\"getDenom\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"}],\"name\":\"getMaxProcessedTokenLockNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"}],\"name\":\"getMaxProcessedVoucherBurnNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"eventNonce\",\"type\":\"uint256\"}],\"name\":\"getTokenLockEventHeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"denom\",\"type\":\"string\"}],\"name\":\"getVoucher\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"eventNonce\",\"type\":\"uint256\"}],\"name\":\"getVoucherBurnEventHeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mainchainID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"tokenLockNonceMap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"tokenLockVotingRecords\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"dynasty\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"accumlatedShares\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"tokenUnlockNonceMap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"voucherAddressToDenomLookup\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"denom\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"exists\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"voucherBurnNonceMap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"voucherBurnVotingRecords\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"dynasty\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"accumlatedShares\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"voucherMintNonceMap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"targetChainID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sourceChainTNT1155Contract\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"targetChainVoucherReceiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenID\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lockAmount\",\"type\":\"uint256\"}],\"name\":\"lockTokens\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"denom\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"targetChainVoucherReceiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenID\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"tokenUri\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"dynasty\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sourceChainTokenLockNonce\",\"type\":\"uint256\"}],\"name\":\"mintVouchers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sourceChainVoucherContractAddr\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"targetChainTokenReceiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenID\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"burnAmount\",\"type\":\"uint256\"}],\"name\":\"burnVouchers\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"sourceChainID\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"denom\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"targetChainTokenReceiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenID\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unlockAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"dynasty\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sourceChainVoucherBurnNonce\",\"type\":\"uint256\"}],\"name\":\"unlockTokens\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}]",
	Bin: "0x60806040523480156200001157600080fd5b50604051620063e6380380620063e6833981016040819052620000349162000064565b6001600081905591909155600280546001600160a01b0319166001600160a01b03909216919091179055620000a3565b600080604083850312156200007857600080fd5b825160208401519092506001600160a01b03811681146200009857600080fd5b809150509250929050565b61633380620000b36000396000f3fe6080604052600436106200018b5760003560e01c80638883931e11620000dd578063e59923341162000084578063e599233414620005c8578063e888e05b14620005df578063ebda99621462000604578063f23a6e611462000629578063f6a3d24e1462000659578063f95627ac1462000699578063feaff05214620006ca57600080fd5b80638883931e1462000455578063a2cc69811462000486578063aa861c1514620004ab578063bc197c8114620004e0578063ca207569146200052a578063ccf187c7146200055b578063dd17eb6d146200058c57600080fd5b806327ca4df1116200014257806327ca4df114620002f9578063464216521462000337578063588b1408146200034e57806360569b5e14620003825780636ac739b914620003b7578063740cb7f814620003f3578063766f8fb0146200042457600080fd5b806301ffc9a71462000190578063032c6bf214620001ca578063073b950214620001e35780631527b14d146200020a5780631eb78737146200027b578063261a323e14620002d4575b600080fd5b3480156200019d57600080fd5b50620001b5620001af366004620039cc565b6200070d565b60405190151581526020015b60405180910390f35b620001e1620001db36600462003c33565b62000745565b005b348015620001f057600080fd5b50620001fb60015481565b604051908152602001620001c1565b3480156200021757600080fd5b506200025b62000229366004620039f8565b8051602081830181018051600d825292820191909301209152546001600160a01b03811690600160a01b900460ff1682565b604080516001600160a01b039093168352901515602083015201620001c1565b3480156200028857600080fd5b50620002be6200029a36600462003c10565b600b6020908152600092835260408084209091529082529020805460029091015482565b60408051928352602083019190915201620001c1565b348015620002e157600080fd5b50620001b5620002f3366004620039f8565b620009bb565b3480156200030657600080fd5b506200031e6200031836600462003b56565b620009ff565b6040516001600160a01b039091168152602001620001c1565b620001e1620003483660046200381a565b62000a2a565b3480156200035b57600080fd5b50620003736200036d36600462003b56565b62000dde565b604051620001c1919062003f20565b3480156200038f57600080fd5b50620003a7620003a13660046200371f565b62000e93565b604051620001c1929190620040e8565b348015620003c457600080fd5b50620001fb620003d636600462003c10565b600091825260086020908152604080842092845291905290205490565b3480156200040057600080fd5b50620001fb6200041236600462003b56565b60066020526000908152604090205481565b3480156200043157600080fd5b50620001fb6200044336600462003b56565b6000908152600a602052604090205490565b3480156200046257600080fd5b50620001fb6200047436600462003b56565b60036020526000908152604090205481565b3480156200049357600080fd5b506200031e620004a5366004620039f8565b62000f42565b348015620004b857600080fd5b50620004d0620004ca36600462003c10565b62000fb8565b604051620001c192919062003ea5565b348015620004ed57600080fd5b5062000510620004ff3660046200375f565b63bc197c8160e01b95945050505050565b6040516001600160e01b03199091168152602001620001c1565b3480156200053757600080fd5b50620001fb6200054936600462003b56565b60056020526000908152604090205481565b3480156200056857600080fd5b50620001fb6200057a36600462003b56565b60046020526000908152604090205481565b3480156200059957600080fd5b50620001fb620005ab36600462003c10565b600091825260076020908152604080842092845291905290205490565b620001e1620005d936600462003b8a565b62001272565b348015620005ec57600080fd5b50620001e1620005fe36600462003aaf565b62001741565b3480156200061157600080fd5b5062000373620006233660046200371f565b62001a6b565b3480156200063657600080fd5b50620005106200064836600462003865565b63f23a6e6160e01b95945050505050565b3480156200066657600080fd5b50620001b5620006783660046200371f565b6001600160a01b03166000908152600e602052604090206001015460ff1690565b348015620006a657600080fd5b50620001fb620006b836600462003b56565b60009081526009602052604090205490565b348015620006d757600080fd5b50620002be620006e936600462003c10565b600c6020908152600092835260408084209091529082529020805460029091015482565b60006001600160e01b03198216630271189760e51b14806200073f57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60026000541415620007745760405162461bcd60e51b81526004016200076b90620041b0565b60405180910390fd5b60026000556001600160a01b038516620007a25760405162461bcd60e51b81526004016200076b906200410e565b6000620007af8762001b6b565b9050600080620007bf8362001b78565b9150915080620008285760405162461bcd60e51b815260206004820152602d60248201527f4661696c656420746f206578747261637420636f6e747261637420616464726560448201526c73732066726f6d2064656e6f6d60981b60648201526084016200076b565b60008a8489898c8a8a60405160200162000849979695949392919062003dbd565b6040516020818303038152906040528051906020012090506000620008728c8884893362001bf9565b90508015620009a85760408051602081018252600081529051637921219560e11b81526001600160a01b0386169163f242432a91620008bd9130918f918f918f919060040162003e14565b600060405180830381600087803b158015620008d857600080fd5b505af1925050508015620008ea575060015b6200094757896001600160a01b0316846001600160a01b03167f3f3092a0f441439dbe7753f75c0dca5ffc28476ac33ab74330f0aa82e73dfdc88b8b6040516200093e929190918252602082015260400190565b60405180910390a35b620009528c62001c18565b60008c815260046020526040908190205490517f4a5b7552bbe9e70a8548f7bbc10edd823963920f052f3859337a36c45bf8bb1a906200099e9088908e908e908e908d908890620040a1565b60405180910390a1505b5050600160005550505050505050505050565b600080620009c98362001b6b565b9050600d81604051620009dd919062003ce4565b9081526040519081900360200190205460ff600160a01b909104169392505050565b600f818154811062000a1057600080fd5b6000918252602090912001546001600160a01b0316905081565b6002600054141562000a505760405162461bcd60e51b81526004016200076b90620041b0565b60026000556001600160a01b03831662000a7e5760405162461bcd60e51b81526004016200076b906200410e565b6040516375ed4cb160e11b81526001600160a01b0385166004820152600090309063ebda99629060240160006040518083038186803b15801562000ac157600080fd5b505afa15801562000ad6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000b00919081019062003a30565b905080516000141562000b6e5760405162461bcd60e51b815260206004820152602f60248201527f6661696c656420746f206c6f6f6b75702064656e6f6d20666f7220746865207660448201526e1bdd58da195c8818dbdb9d1c9858dd608a1b60648201526084016200076b565b60405163130d191f60e11b8152309063261a323e9062000b9390849060040162003f20565b60206040518083038186803b15801562000bac57600080fd5b505afa15801562000bc1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000be79190620039ae565b62000c355760405162461bcd60e51b815260206004820152601f60248201527f566f756368657220636f6e747261637420646f6573206e6f742065786973740060448201526064016200076b565b3362000c448682868662001c41565b60008062000c528462001cb6565b915091508062000cb85760405162461bcd60e51b815260206004820152602a60248201527f4661696c656420746f206578747261637420746172676574436861696e49442060448201526966726f6d2064656e6f6d60b01b60648201526084016200076b565b62000cc38262001d47565b600082815260056020526040908190205490517f656ace729da14534acb1e9ea4ca34cf21501689c9ea0a8eff3aebca48f94f68e9062000d0f90879087908c908c908c90889062003f35565b60405180910390a1600260009054906101000a90046001600160a01b03166001600160a01b0316639bbb690a6040518163ffffffff1660e01b815260040160206040518083038186803b15801562000d6657600080fd5b505afa15801562000d7b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000da1919062003b70565b34101562000dc35760405162461bcd60e51b81526004016200076b9062004145565b62000dce8362001d92565b5050600160005550505050505050565b6010818154811062000def57600080fd5b90600052602060002001600091509050805462000e0c90620043fa565b80601f016020809104026020016040519081016040528092919081815260200182805462000e3a90620043fa565b801562000e8b5780601f1062000e5f5761010080835404028352916020019162000e8b565b820191906000526020600020905b81548152906001019060200180831162000e6d57829003601f168201915b505050505081565b600e6020526000908152604090208054819062000eb090620043fa565b80601f016020809104026020016040519081016040528092919081815260200182805462000ede90620043fa565b801562000f2f5780601f1062000f035761010080835404028352916020019162000f2f565b820191906000526020600020905b81548152906001019060200180831162000f1157829003601f168201915b5050506001909301549192505060ff1682565b60008062000f508362001b6b565b90506000600d8260405162000f66919062003ce4565b908152604080516020928190038301812081830190925290546001600160a01b0381168252600160a01b900460ff1615801592820192909252915062000fae57519392505050565b5060009392505050565b6060806000600154461490506000600260009054906101000a90046001600160a01b03166001600160a01b031663a7464b126040518163ffffffff1660e01b815260040160206040518083038186803b1580156200101557600080fd5b505afa1580156200102a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001050919062003b70565b600254604051632f2c13b560e01b81526004810189905291925060009182916001600160a01b031690632f2c13b590602401604080518083038186803b1580156200109a57600080fd5b505afa158015620010af573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010d5919062003be1565b915091506000818015620010f45750620010f088856200224b565b8310155b801562001118575062001115846200110e8a600162002260565b906200224b565b83105b9050848015620011255750805b15620011d65760006200113a89600162002260565b6002546040516343f27e4560e01b8152600481018d9052602481018390529192506001600160a01b0316906343f27e459060440160006040518083038186803b1580156200118757600080fd5b505afa1580156200119c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620011c69190810190620038d5565b975097505050505050506200126b565b6002546040516343f27e4560e01b8152600481018b9052602481018a90526001600160a01b03909116906343f27e459060440160006040518083038186803b1580156200122257600080fd5b505afa15801562001237573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620012619190810190620038d5565b9650965050505050505b9250929050565b60026000541415620012985760405162461bcd60e51b81526004016200076b90620041b0565b6002600055620012aa8486856200226e565b620012f85760405162461bcd60e51b815260206004820181905260248201527f6c6f636b20746f6b656e732073616e69747920636865636b73206661696c656460448201526064016200076b565b604051627eeac760e11b81523060048201526024810183905284906000906001600160a01b0383169062fdd58e9060440160206040518083038186803b1580156200134257600080fd5b505afa15801562001357573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200137d919062003b70565b60408051602081018252600081529051637921219560e11b81529192506001600160a01b0384169163f242432a91620013c191339130918a918a9160040162003e14565b600060405180830381600087803b158015620013dc57600080fd5b505af1158015620013f1573d6000803e3d6000fd5b5050604051627eeac760e11b815230600482015260248101879052600092506001600160a01b038516915062fdd58e9060440160206040518083038186803b1580156200143d57600080fd5b505afa15801562001452573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001478919062003b70565b9050816200148782866200245d565b14620014f25760405162461bcd60e51b815260206004820152603360248201527f4661696c656420746f207472616e7366657220544e543131353520746f6b656e6044820152727320746f2074686520746f6b656e2062616e6b60681b60648201526084016200076b565b505060006200153446604051806040016040528060048152602001633131353560e01b8152506200152e896001600160a01b031660146200246b565b62002624565b9050620015418762002668565b6000878152600360205260409020546200155c8786620026b3565b1562001635577f5ac6d27fa2bb13775fcf7bd9cc03a3f02063b2a2e484aaedc1b1c9d916874f3682338a898989896001600160a01b0316630e89341c8d6040518263ffffffff1660e01b8152600401620015b891815260200190565b60006040518083038186803b158015620015d157600080fd5b505afa158015620015e6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001610919081019062003a30565b886040516200162798979695949392919062003fce565b60405180910390a16200167b565b7f5ac6d27fa2bb13775fcf7bd9cc03a3f02063b2a2e484aaedc1b1c9d916874f3682338a898989876040516200167297969594939291906200403c565b60405180910390a15b600260009054906101000a90046001600160a01b03166001600160a01b0316639bbb690a6040518163ffffffff1660e01b815260040160206040518083038186803b158015620016ca57600080fd5b505afa158015620016df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001705919062003b70565b341015620017275760405162461bcd60e51b81526004016200076b9062004145565b620017328862001d92565b50506001600055505050505050565b60026000541415620017675760405162461bcd60e51b81526004016200076b90620041b0565b60026000556001600160a01b038616620017955760405162461bcd60e51b81526004016200076b906200410e565b6000620017a28862001b6b565b9050600080620017b28362001cb6565b9150915080620018115760405162461bcd60e51b8152602060048201526024808201527f4661696c656420746f206578747261637420636861696e49442066726f6d2064604482015263656e6f6d60e01b60648201526084016200076b565b600082848b8b8b8a8a60405160200162001832979695949392919062003d62565b60405160208183030381529060405280519060200120905060006200185b848884893362002736565b90508015620009a85760405163130d191f60e11b8152309063261a323e906200188990889060040162003f20565b60206040518083038186803b158015620018a257600080fd5b505afa158015620018b7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018dd9190620039ae565b620018f857620018f885620018f2876200274b565b62002796565b60405163a2cc698160e01b8152600090309063a2cc6981906200192090899060040162003f20565b60206040518083038186803b1580156200193957600080fd5b505afa1580156200194e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200197491906200373f565b90506001600160a01b038116620019df5760405162461bcd60e51b815260206004820152602860248201527f74686520766f756368657220666f72207468652064656e6f6d20646f6573206e6044820152671bdd08195e1a5cdd60c21b60648201526084016200076b565b620019ee818d8d8d8d620029c0565b620019f98562002a88565b6000600660008781526020019081526020016000205490507f4fbcffbdf5224654091654ad81a05e276525f0975fd62790b7876d1f7da75a53878e848f8f8d8760405162001a4e979695949392919062003f7f565b60405180910390a150505050600160005550505050505050505050565b6001600160a01b0381166000908152600e6020526040808220815180830190925280546060939291908290829062001aa390620043fa565b80601f016020809104026020016040519081016040528092919081815260200182805462001ad190620043fa565b801562001b225780601f1062001af65761010080835404028352916020019162001b22565b820191906000526020600020905b81548152906001019060200180831162001b0457829003601f168201915b50505091835250506001919091015460ff1615156020918201528101519091501562001b4f575192915050565b5050604080516020810190915260008152919050565b50919050565b60606200073f8262002aa9565b60008060008062001b9085602f60f81b600262002b2f565b915091508062001ba7575060009485945092505050565b60008062001bc48762001bbc86600162004298565b895162002bcb565b915091508062001bdd5750600096879650945050505050565b600062001bea8362002ced565b98600198509650505050505050565b600062001c0e8686868686600a600c62002f08565b9695505050505050565b600081815260046020526040812080546001929062001c3990849062004298565b909155505050565b604051637a94c56560e11b81526001600160a01b038481166004830152602482018490526044820183905285919082169063f5298aca90606401600060405180830381600087803b15801562001c9657600080fd5b505af115801562001cab573d6000803e3d6000fd5b505050505050505050565b60008060008062001cce85602f60f81b600162002b2f565b915091508062001ce5575060009485945092505050565b60008062001cf68760008662002bcb565b915091508062001d0f5750600096879650945050505050565b60008062001d1d84620032ad565b915091508062001d3857506000988998509650505050505050565b50976001975095505050505050565b600081815260056020526040812080546001929062001d6890849062004298565b90915550506000908152600860209081526040808320600583528184205484529091529020439055565b600062001d9f8262003395565b90506000600260009054906101000a90046001600160a01b03166001600160a01b0316639bbb690a6040518163ffffffff1660e01b815260040160206040518083038186803b15801562001df257600080fd5b505afa15801562001e07573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e2d919062003b70565b90508062001e3a57505050565b6002546040805163dba9de6b60e01b8152815160009384936001600160a01b039091169263dba9de6b9260048083019392829003018186803b15801562001e8057600080fd5b505afa15801562001e95573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ebb919062003be1565b915091508062001f065760405162461bcd60e51b81526020600482015260156024820152746661696c656420746f206765742064796e6173747960581b60448201526064016200076b565b60008062001f15868562000fb8565b815191935091508062001f2c575050505050505050565b8082511462001f905760405162461bcd60e51b815260206004820152602960248201527f76616c696461746f7220616e6420736861726520616d6f756e7420636f756e74604482015268040dad2e6dac2e8c6d60bb1b60648201526084016200076b565b6000805b8281101562001fe55762001fce84828151811062001fb65762001fb662004492565b6020026020010151836200226090919063ffffffff16565b91508062001fdc8162004431565b91505062001f94565b508062001ff757505050505050505050565b8660005b838110156200215257600062002043846200203c88858151811062002024576200202462004492565b60200260200101518d6200224b90919063ffffffff16565b90620033b2565b90506200207e8783815181106200205e576200205e62004492565b60200260200101516001600160a01b03166001600160a01b03163b151590565b6200213c5786828151811062002098576200209862004492565b60200260200101516001600160a01b03166108fc829081150290604051600060405180830381858888f193505050506200212d57868281518110620020e157620020e162004492565b60200260200101516001600160a01b03167f562a1007af95860758404d928a251ad8b0062ac50058db9f82dab3fe379f4885826040516200212491815260200190565b60405180910390a25b6200213983826200245d565b92505b5080620021498162004431565b91505062001ffb565b5062002178856200216560018662004371565b815181106200205e576200205e62004492565b6200223f57846200218b60018562004371565b815181106200219e576200219e62004492565b60200260200101516001600160a01b03166108fc829081150290604051600060405180830381858888f193505050506200223f5784620021e060018562004371565b81518110620021f357620021f362004492565b60200260200101516001600160a01b03167f562a1007af95860758404d928a251ad8b0062ac50058db9f82dab3fe379f4885826040516200223691815260200190565b60405180910390a25b50505050505050505050565b600062002259828462004324565b9392505050565b600062002259828462004298565b60006001600160a01b038416620022e65760405162461bcd60e51b815260206004820152603560248201527f736f7572636520636861696e20746f6b656e20616464726573732063616e6e6f6044820152747420626520746865207a65726f206164647265737360581b60648201526084016200076b565b46831415620023385760405162461bcd60e51b815260206004820152601d60248201527f63616e6e6f742073656e6420746f207468652073616d6520636861696e00000060448201526064016200076b565b6001600160a01b038216620023615760405162461bcd60e51b81526004016200076b906200410e565b600154461415801562002375575060015483145b80620024095750600154461480156200240957506002546040516343b71f0560e01b8152600481018590526001600160a01b03909116906343b71f059060240160206040518083038186803b158015620023ce57600080fd5b505afa158015620023e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620024099190620039ae565b620024535760405162461bcd60e51b81526020600482015260196024820152781b9bdd0818481d985b1a59081d185c99d95d10da185a5b9251603a1b60448201526064016200076b565b5060019392505050565b600062002259828462004371565b606060006200247c83600262004324565b6200248990600262004298565b6001600160401b03811115620024a357620024a3620044a8565b6040519080825280601f01601f191660200182016040528015620024ce576020820181803683370190505b509050600360fc1b81600081518110620024ec57620024ec62004492565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106200251e576200251e62004492565b60200101906001600160f81b031916908160001a90535060006200254484600262004324565b6200255190600162004298565b90505b6001811115620025d3576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811062002589576200258962004492565b1a60f81b828281518110620025a257620025a262004492565b60200101906001600160f81b031916908160001a90535060049490941c93620025cb81620043e0565b905062002554565b508315620022595760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016200076b565b6060620026606200263585620033c0565b84846040516020016200264b9392919062003d02565b60405160208183030381529060405262001b6b565b949350505050565b60008181526003602052604081208054600192906200268990849062004298565b90915550506000908152600760209081526040808320600383528184205484529091529020439055565b60008060007f0e89341c5b7431e95282621bb9c54e51fb5c29234df43f9e19151d3892fb038084604051602401620026ed91815260200190565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092178252805190925060009182919082895af195945050505050565b600062001c0e86868686866009600b62002f08565b60008030905060008184604051620027639062003528565b6200277092919062003e50565b604051809103906000f0801580156200278d573d6000803e3d6000fd5b50949350505050565b6000620027a38362001b6b565b60405163130d191f60e11b8152909150309063261a323e90620027cb90849060040162003f20565b60206040518083038186803b158015620027e457600080fd5b505afa158015620027f9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200281f9190620039ae565b15620028795760405162461bcd60e51b815260206004820152602260248201527f616e20766f756368657220636f6e747261637420616c72656164792065786973604482015261747360f01b60648201526084016200076b565b6040805180820182526001600160a01b0384168152600160208201529051600d90620028a790849062003ce4565b90815260408051918290036020908101832084518154958301511515600160a01b026001600160a81b03199096166001600160a01b039182161795909517905582820182528483526001838201529285166000908152600e845220815180519293919262002919928492019062003536565b506020918201516001918201805460ff1916911515919091179055600f80548083019091557f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180546001600160a01b0319166001600160a01b0386161790556010805491820181556000528251620029ba927f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6729092019184019062003536565b50505050565b60405163bb7fde7160e01b815285906001600160a01b0382169063bb7fde7190620029f690889088908890889060040162003e76565b600060405180830381600087803b15801562002a1157600080fd5b505af192505050801562002a23575060015b62002a8057846001600160a01b0316866001600160a01b03167fb805c8a83d186e1abe92168eab0b8bd4516d5b03d455892c92cd868aa526d371868660405162002a77929190918252602082015260400190565b60405180910390a35b505050505050565b600081815260066020526040812080546001929062001c3990849062004298565b60608160005b815181101562002b285762002ae782828151811062002ad25762002ad262004492565b01602001516001600160f81b031916620034d5565b82828151811062002afc5762002afc62004492565b60200101906001600160f81b031916908160001a9053508062002b1f8162004431565b91505062002aaf565b5092915050565b82516000908190859082805b8281101562002bb757876001600160f81b03191684828151811062002b645762002b6462004492565b01602001516001600160f81b031916141562002ba25762002b8760018362004298565b91508682141562002ba25794506001935062002bc392505050565b8062002bae8162004431565b91505062002b3b565b50600080945094505050505b935093915050565b82516060906000908484101562002bf75750506040805160208101909152600080825290915062002bc3565b8084111562002c1b5750506040805160208101909152600080825290915062002bc3565b85600062002c2a86886200245d565b6001600160401b0381111562002c445762002c44620044a8565b6040519080825280601f01601f19166020018201604052801562002c6f576020820181803683370190505b509050865b8681101562001d385782818151811062002c925762002c9262004492565b01602001516001600160f81b0319168262002cae838b6200245d565b8151811062002cc15762002cc162004492565b60200101906001600160f81b031916908160001a9053508062002ce48162004431565b91505062002c74565b60008181808060025b602a81101562002efd5762002d0e61010085620042f2565b935084818151811062002d255762002d2562004492565b016020015160f81c92508462002d3d82600162004298565b8151811062002d505762002d5062004492565b016020015160f81c915060616001600160a01b0384161080159062002d7f57506066836001600160a01b031611155b1562002d9a5762002d9260578462004346565b925062002e0d565b6041836001600160a01b03161015801562002dbf57506046836001600160a01b031611155b1562002dd25762002d9260378462004346565b6030836001600160a01b03161015801562002df757506039836001600160a01b031611155b1562002e0d5762002e0a60308462004346565b92505b6061826001600160a01b03161015801562002e3257506066826001600160a01b031611155b1562002e4d5762002e4560578362004346565b915062002ec0565b6041826001600160a01b03161015801562002e7257506046826001600160a01b031611155b1562002e855762002e4560378362004346565b6030826001600160a01b03161015801562002eaa57506039826001600160a01b031611155b1562002ec05762002ebd60308362004346565b91505b8162002ece846010620042f2565b62002eda91906200426a565b62002ee690856200426a565b935062002ef560028262004298565b905062002cf6565b509195945050505050565b600060015488148062002f9657506002546040516343b71f0560e01b8152600481018a90526001600160a01b03909116906343b71f059060240160206040518083038186803b15801562002f5b57600080fd5b505afa15801562002f70573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002f969190620039ae565b62002fd65760405162461bcd60e51b815260206004820152600f60248201526e125b9d985b1a590818da185a5b9251608a1b60448201526064016200076b565b60008881526020849052604090205462002ff290600162004298565b85146200300257506000620032a2565b600088815260208381526040808320898452909152812060015460609081908c908114156200302e5750465b6200303a818d62000fb8565b9350915060005b8251811015620031b757896001600160a01b03168382815181106200306a576200306a62004492565b60200260200101516001600160a01b0316146200308757620031a2565b6001955060005b60018601548110156200313157856001018181548110620030b357620030b362004492565b6000918252602090912001546001600160a01b038c8116911614156200311c5760405162461bcd60e51b815260206004820152601c60248201527f546869732076616c696461746f7220616c726561647920766f7465640000000060448201526064016200076b565b80620031288162004431565b9150506200308e565b508c85556001808601805491820181556000908152602090200180546001600160a01b0319166001600160a01b038c1617905583516200319c9085908390811062003180576200318062004492565b602002602001015186600201546200226090919063ffffffff16565b60028601555b80620031ae8162004431565b91505062003041565b50505082620031fb5760405162461bcd60e51b815260206004820152600f60248201526e2737ba1030903b30b634b230ba37b960891b60448201526064016200076b565b6000805b825181101562003239576200322283828151811062001fb65762001fb662004492565b915080620032308162004431565b915050620031ff565b50620032478160026200224b565b6002840154620032599060036200224b565b10620032995760008c8152602088905260409020546200327b90600162004298565b60008d8152602089905260409020555060019350620032a292505050565b60009450505050505b979650505050505050565b80516000908190839082805b8281101562003388576030848281518110620032d957620032d962004492565b016020015160f81c108015906200330d5750603984828151811062003302576200330262004492565b016020015160f81c11155b1562003364576200332082600a6200224b565b91506200335c60308583815181106200333d576200333d62004492565b016020015162003351919060f81c6200438b565b839060ff1662002260565b915062003373565b50600096879650945050505050565b806200337f8162004431565b915050620032b9565b5095600195509350505050565b600080600154831415620033ab5750466200073f565b5090919050565b6000620022598284620042db565b606081620033e55750506040805180820190915260018152600360fc1b602082015290565b8160005b8115620034155780620033fc8162004431565b91506200340d9050600a83620042db565b9150620033e9565b6000816001600160401b03811115620034325762003432620044a8565b6040519080825280601f01601f1916602001820160405280156200345d576020820181803683370190505b5090505b841562002660576200347560018362004371565b915062003484600a866200444f565b6200349190603062004298565b60f81b818381518110620034a957620034a962004492565b60200101906001600160f81b031916908160001a905350620034cd600a86620042db565b945062003461565b6000604160f81b6001600160f81b0319831610801590620035045750602d60f91b6001600160f81b0319831611155b1562003524576200351b60f883901c6020620042b3565b60f81b92915050565b5090565b611e2680620044d883390190565b8280546200354490620043fa565b90600052602060002090601f016020900481019282620035685760008555620035b3565b82601f106200358357805160ff1916838001178555620035b3565b82800160010185558215620035b3579182015b82811115620035b357825182559160200191906001019062003596565b50620035249291505b80821115620035245760008155600101620035bc565b600082601f830112620035e457600080fd5b81356020620035fd620035f7836200421a565b620041e7565b80838252828201915082860187848660051b89010111156200361e57600080fd5b60005b858110156200363f5781358452928401929084019060010162003621565b5090979650505050505050565b600082601f8301126200365e57600080fd5b8151602062003671620035f7836200421a565b80838252828201915082860187848660051b89010111156200369257600080fd5b60005b858110156200363f5781518452928401929084019060010162003695565b80518015158114620036c457600080fd5b919050565b600082601f830112620036db57600080fd5b8135620036ec620035f78262004240565b8181528460208386010111156200370257600080fd5b816020850160208301376000918101602001919091529392505050565b6000602082840312156200373257600080fd5b81356200225981620044be565b6000602082840312156200375257600080fd5b81516200225981620044be565b600080600080600060a086880312156200377857600080fd5b85356200378581620044be565b945060208601356200379781620044be565b935060408601356001600160401b0380821115620037b457600080fd5b620037c289838a01620035d2565b94506060880135915080821115620037d957600080fd5b620037e789838a01620035d2565b93506080880135915080821115620037fe57600080fd5b506200380d88828901620036c9565b9150509295509295909350565b600080600080608085870312156200383157600080fd5b84356200383e81620044be565b935060208501356200385081620044be565b93969395505050506040820135916060013590565b600080600080600060a086880312156200387e57600080fd5b85356200388b81620044be565b945060208601356200389d81620044be565b9350604086013592506060860135915060808601356001600160401b03811115620038c757600080fd5b6200380d88828901620036c9565b60008060408385031215620038e957600080fd5b82516001600160401b03808211156200390157600080fd5b818501915085601f8301126200391657600080fd5b8151602062003929620035f7836200421a565b8083825282820191508286018a848660051b89010111156200394a57600080fd5b600096505b848710156200397a5780516200396581620044be565b8352600196909601959183019183016200394f565b50918801519196509093505050808211156200399557600080fd5b50620039a4858286016200364c565b9150509250929050565b600060208284031215620039c157600080fd5b6200225982620036b3565b600060208284031215620039df57600080fd5b81356001600160e01b0319811681146200225957600080fd5b60006020828403121562003a0b57600080fd5b81356001600160401b0381111562003a2257600080fd5b6200266084828501620036c9565b60006020828403121562003a4357600080fd5b81516001600160401b0381111562003a5a57600080fd5b8201601f8101841362003a6c57600080fd5b805162003a7d620035f78262004240565b81815285602083850101111562003a9357600080fd5b62003aa6826020830160208601620043b1565b95945050505050565b600080600080600080600060e0888a03121562003acb57600080fd5b87356001600160401b038082111562003ae357600080fd5b62003af18b838c01620036c9565b985060208a0135915062003b0582620044be565b90965060408901359550606089013594506080890135908082111562003b2a57600080fd5b5062003b398a828b01620036c9565b93505060a0880135915060c0880135905092959891949750929550565b60006020828403121562003b6957600080fd5b5035919050565b60006020828403121562003b8357600080fd5b5051919050565b600080600080600060a0868803121562003ba357600080fd5b85359450602086013562003bb781620044be565b9350604086013562003bc981620044be565b94979396509394606081013594506080013592915050565b6000806040838503121562003bf557600080fd5b8251915062003c0760208401620036b3565b90509250929050565b6000806040838503121562003c2457600080fd5b50508035926020909101359150565b600080600080600080600060e0888a03121562003c4f57600080fd5b8735965060208801356001600160401b0381111562003c6d57600080fd5b62003c7b8a828b01620036c9565b965050604088013562003c8e81620044be565b969995985095966060810135965060808101359560a0820135955060c0909101359350915050565b6000815180845262003cd0816020860160208601620043b1565b601f01601f19169290920160200192915050565b6000825162003cf8818460208701620043b1565b9190910192915050565b6000845162003d16818460208901620043b1565b8083019050602f60f81b808252855162003d38816001850160208a01620043b1565b6001920191820152835162003d55816002840160208801620043b1565b0160020195945050505050565b8781526000875162003d7c816020850160208c01620043b1565b60609790971b6001600160601b03191660209290970191820196909652603481019490945260548401929092526074830152609482015260b4019392505050565b8781526000875162003dd7816020850160208c01620043b1565b60209201918201969096526040810194909452606092831b6001600160601b031916928401929092526074830152609482015260b4019392505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a060808201819052600090620032a29083018462003cb6565b6001600160a01b0383168152604060208201819052600090620026609083018462003cb6565b60018060a01b038516815283602082015282604082015260806060820152600062001c0e608083018462003cb6565b604080825283519082018190526000906020906060840190828701845b8281101562003ee95781516001600160a01b03168452928401929084019060010162003ec2565b5050508381038285015284518082528583019183019060005b818110156200363f5783518352928401929184019160010162003f02565b60208152600062002259602083018462003cb6565b60c08152600062003f4a60c083018962003cb6565b6001600160a01b0397881660208401529590961660408201526060810193909352608083019190915260a09091015292915050565b60e08152600062003f9460e083018a62003cb6565b6001600160a01b0398891660208401529690971660408201526060810194909452608084019290925260a083015260c09091015292915050565b600061010080835262003fe48184018c62003cb6565b6001600160a01b038b81166020860152604085018b9052891660608501526080840188905260a0840187905283810360c0850152905062004026818662003cb6565b9150508260e08301529998505050505050505050565b6000610100808352620040528184018b62003cb6565b6001600160a01b03998a16602085810191909152604085019990995296909816606083015250608081019390935260a083019190915281830360c08301526000835260e0909101520192915050565b60c081526000620040b660c083018962003cb6565b6001600160a01b039790971660208301525060408101949094526060840192909252608083015260a090910152919050565b604081526000620040fd604083018562003cb6565b905082151560208301529392505050565b6020808252601b908201527f63616e6e6f742073656e6420746f207a65726f20616464726573730000000000604082015260600190565b60208082526045908201527f6e6f7420656e6f75676820544675656c20286d73672e76616c75652920746f2060408201527f636f766572207468652063726f73732d636861696e207472616e73616374696f6060820152646e2066656560d81b608082015260a00190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b604051601f8201601f191681016001600160401b0381118282101715620042125762004212620044a8565b604052919050565b60006001600160401b03821115620042365762004236620044a8565b5060051b60200190565b60006001600160401b038211156200425c576200425c620044a8565b50601f01601f191660200190565b60006001600160a01b038281168482168083038211156200428f576200428f62004466565b01949350505050565b60008219821115620042ae57620042ae62004466565b500190565b600060ff821660ff84168060ff03821115620042d357620042d362004466565b019392505050565b600082620042ed57620042ed6200447c565b500490565b60006001600160a01b03828116848216811515828404821116156200431b576200431b62004466565b02949350505050565b600081600019048311821515161562004341576200434162004466565b500290565b60006001600160a01b038381169083168181101562004369576200436962004466565b039392505050565b60008282101562004386576200438662004466565b500390565b600060ff821660ff841680821015620043a857620043a862004466565b90039392505050565b60005b83811015620043ce578181015183820152602001620043b4565b83811115620029ba5750506000910152565b600081620043f257620043f262004466565b506000190190565b600181811c908216806200440f57607f821691505b6020821081141562001b6557634e487b7160e01b600052602260045260246000fd5b600060001982141562004448576200444862004466565b5060010190565b6000826200446157620044616200447c565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114620044d457600080fd5b5056fe60806040523480156200001157600080fd5b5060405162001e2638038062001e2683398101604081905262000034916200014e565b604080516020810190915260008152829062000050816200008f565b50600380546001600160a01b0319166001600160a01b0392909216919091179055805162000086906004906020840190620000a8565b505050620002a1565b8051620000a4906002906020840190620000a8565b5050565b828054620000b6906200024e565b90600052602060002090601f016020900481019282620000da576000855562000125565b82601f10620000f557805160ff191683800117855562000125565b8280016001018555821562000125579182015b828111156200012557825182559160200191906001019062000108565b506200013392915062000137565b5090565b5b8082111562000133576000815560010162000138565b600080604083850312156200016257600080fd5b82516001600160a01b03811681146200017a57600080fd5b602084810151919350906001600160401b03808211156200019a57600080fd5b818601915086601f830112620001af57600080fd5b815181811115620001c457620001c46200028b565b604051601f8201601f19908116603f01168101908382118183101715620001ef57620001ef6200028b565b8160405282815289868487010111156200020857600080fd5b600093505b828410156200022c57848401860151818501870152928501926200020d565b828411156200023e5760008684830101525b8096505050505050509250929050565b600181811c908216806200026357607f821691505b602082108114156200028557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b611b7580620002b16000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80638da5cb5b1161007c5780638da5cb5b146101a4578063a22cb465146101b7578063bb7fde71146101ca578063c370b042146101dd578063e985e9c5146101e5578063f242432a146101f8578063f5298aca1461020b57600080fd5b8062fdd58e146100ce57806301ffc9a7146100f45780630e89341c146101175780632eb2c2d614610137578063442890d51461014c5780634e1273f414610171578063880cdc3114610191575b600080fd5b6100e16100dc3660046114e1565b61021e565b6040519081526020015b60405180910390f35b610107610102366004611682565b6102b5565b60405190151581526020016100eb565b61012a6101253660046116bc565b610307565b6040516100eb9190611841565b61014a610145366004611398565b6103a9565b005b6003546001600160a01b03165b6040516001600160a01b0390911681526020016100eb565b61018461017f3660046115b2565b610440565b6040516100eb9190611800565b61014a61019f36600461134a565b610569565b600354610159906001600160a01b031681565b61014a6101c53660046114a5565b6105fc565b61014a6101d836600461153e565b61060b565b61012a61066f565b6101076101f3366004611365565b610701565b61014a610206366004611441565b61072f565b61014a61021936600461150b565b6107b6565b60006001600160a01b03831661028f5760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b60648201526084015b60405180910390fd5b506000908152602081815260408083206001600160a01b03949094168352929052205490565b60006001600160e01b03198216636cdb3d1360e11b14806102e657506001600160e01b031982166303a24d0760e21b145b8061030157506301ffc9a760e01b6001600160e01b03198316145b92915050565b60008181526005602052604090208054606091906103249061199d565b80601f01602080910402602001604051908101604052809291908181526020018280546103509061199d565b801561039d5780601f106103725761010080835404028352916020019161039d565b820191906000526020600020905b81548152906001019060200180831161038057829003601f168201915b50505050509050919050565b6001600160a01b0385163314806103c557506103c58533610701565b61042c5760405162461bcd60e51b815260206004820152603260248201527f455243313135353a207472616e736665722063616c6c6572206973206e6f74206044820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b6064820152608401610286565b61043985858585856108d8565b5050505050565b606081518351146104a55760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610286565b600083516001600160401b038111156104c0576104c0611a4b565b6040519080825280602002602001820160405280156104e9578160200160208202803683370190505b50905060005b84518110156105615761053485828151811061050d5761050d611a35565b602002602001015185838151811061052757610527611a35565b602002602001015161021e565b82828151811061054657610546611a35565b602090810291909101015261055a81611a04565b90506104ef565b509392505050565b6003546001600160a01b031633146105935760405162461bcd60e51b81526004016102869061192b565b600354604080516001600160a01b03928316815291831660208301527fe2c7d1c4da37855e682bde14f17826d185497973b73fba7554daa6da467058d9910160405180910390a1600380546001600160a01b0319166001600160a01b0392909216919091179055565b610607338383610ab5565b5050565b6003546001600160a01b031633146106355760405162461bcd60e51b81526004016102869061192b565b61065084848460405180602001604052806000815250610b96565b600083815260056020908152604090912082516104399284019061119a565b60606004805461067e9061199d565b80601f01602080910402602001604051908101604052809291908181526020018280546106aa9061199d565b80156106f75780601f106106cc576101008083540402835291602001916106f7565b820191906000526020600020905b8154815290600101906020018083116106da57829003601f168201915b5050505050905090565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b6001600160a01b03851633148061074b575061074b8533610701565b6107a95760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b6064820152608401610286565b6104398585858585610c98565b6003546001600160a01b031633146107e05760405162461bcd60e51b81526004016102869061192b565b806107eb848461021e565b10156108545760405162461bcd60e51b815260206004820152603260248201527f566f7563686572206f776e657220646f6573206e6f74206861766520656e6f7560448201527133b4103130b630b731b2903a3790313ab93760711b6064820152608401610286565b6003546001600160a01b031661086a8482610701565b6108c75760405162461bcd60e51b815260206004820152602860248201527f566f7563686572206f776e657220646964206e6f7420617070726f766520746f60448201526735b2b710313ab93760c11b6064820152608401610286565b6108d2848484610db0565b50505050565b815183511461093a5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608401610286565b6001600160a01b0384166109605760405162461bcd60e51b81526004016102869061189c565b3360005b8451811015610a4757600085828151811061098157610981611a35565b60200260200101519050600085838151811061099f5761099f611a35565b602090810291909101810151600084815280835260408082206001600160a01b038e1683529093529190912054909150818110156109ef5760405162461bcd60e51b8152600401610286906118e1565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290610a2c908490611985565b9250508190555050505080610a4090611a04565b9050610964565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610a97929190611813565b60405180910390a4610aad818787878787610f1a565b505050505050565b816001600160a01b0316836001600160a01b03161415610b295760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610286565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b038416610bf65760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610286565b336000610c0285611085565b90506000610c0f85611085565b90506000868152602081815260408083206001600160a01b038b16845290915281208054879290610c41908490611985565b909155505060408051878152602081018790526001600160a01b03808a169260009291871691600080516020611b20833981519152910160405180910390a4610c8f836000898989896110d0565b50505050505050565b6001600160a01b038416610cbe5760405162461bcd60e51b81526004016102869061189c565b336000610cca85611085565b90506000610cd785611085565b90506000868152602081815260408083206001600160a01b038c16845290915290205485811015610d1a5760405162461bcd60e51b8152600401610286906118e1565b6000878152602081815260408083206001600160a01b038d8116855292528083208985039055908a16825281208054889290610d57908490611985565b909155505060408051888152602081018890526001600160a01b03808b16928c82169291881691600080516020611b20833981519152910160405180910390a4610da5848a8a8a8a8a6110d0565b505050505050505050565b6001600160a01b038316610e125760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610286565b336000610e1e84611085565b90506000610e2b84611085565b60408051602080820183526000918290528882528181528282206001600160a01b038b1683529052205490915084811015610eb45760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608401610286565b6000868152602081815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a9052909290881691600080516020611b20833981519152910160405180910390a4604080516020810190915260009052610c8f565b6001600160a01b0384163b15610aad5760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190610f5e908990899088908890889060040161175d565b602060405180830381600087803b158015610f7857600080fd5b505af1925050508015610fa8575060408051601f3d908101601f19168201909252610fa59181019061169f565b60015b61105557610fb4611a61565b806308c379a01415610fee5750610fc9611a7d565b80610fd45750610ff0565b8060405162461bcd60e51b81526004016102869190611841565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610286565b6001600160e01b0319811663bc197c8160e01b14610c8f5760405162461bcd60e51b815260040161028690611854565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106110bf576110bf611a35565b602090810291909101015292915050565b6001600160a01b0384163b15610aad5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e619061111490899089908890889088906004016117bb565b602060405180830381600087803b15801561112e57600080fd5b505af192505050801561115e575060408051601f3d908101601f1916820190925261115b9181019061169f565b60015b61116a57610fb4611a61565b6001600160e01b0319811663f23a6e6160e01b14610c8f5760405162461bcd60e51b815260040161028690611854565b8280546111a69061199d565b90600052602060002090601f0160209004810192826111c8576000855561120e565b82601f106111e157805160ff191683800117855561120e565b8280016001018555821561120e579182015b8281111561120e5782518255916020019190600101906111f3565b5061121a92915061121e565b5090565b5b8082111561121a576000815560010161121f565b60006001600160401b0383111561124c5761124c611a4b565b604051611263601f8501601f1916602001826119d8565b80915083815284848401111561127857600080fd5b83836020830137600060208583010152509392505050565b80356001600160a01b03811681146112a757600080fd5b919050565b600082601f8301126112bd57600080fd5b813560206112ca82611962565b6040516112d782826119d8565b8381528281019150858301600585901b870184018810156112f757600080fd5b60005b85811015611316578135845292840192908401906001016112fa565b5090979650505050505050565b600082601f83011261133457600080fd5b61134383833560208501611233565b9392505050565b60006020828403121561135c57600080fd5b61134382611290565b6000806040838503121561137857600080fd5b61138183611290565b915061138f60208401611290565b90509250929050565b600080600080600060a086880312156113b057600080fd5b6113b986611290565b94506113c760208701611290565b935060408601356001600160401b03808211156113e357600080fd5b6113ef89838a016112ac565b9450606088013591508082111561140557600080fd5b61141189838a016112ac565b9350608088013591508082111561142757600080fd5b5061143488828901611323565b9150509295509295909350565b600080600080600060a0868803121561145957600080fd5b61146286611290565b945061147060208701611290565b9350604086013592506060860135915060808601356001600160401b0381111561149957600080fd5b61143488828901611323565b600080604083850312156114b857600080fd5b6114c183611290565b9150602083013580151581146114d657600080fd5b809150509250929050565b600080604083850312156114f457600080fd5b6114fd83611290565b946020939093013593505050565b60008060006060848603121561152057600080fd5b61152984611290565b95602085013595506040909401359392505050565b6000806000806080858703121561155457600080fd5b61155d85611290565b9350602085013592506040850135915060608501356001600160401b0381111561158657600080fd5b8501601f8101871361159757600080fd5b6115a687823560208401611233565b91505092959194509250565b600080604083850312156115c557600080fd5b82356001600160401b03808211156115dc57600080fd5b818501915085601f8301126115f057600080fd5b813560206115fd82611962565b60405161160a82826119d8565b8381528281019150858301600585901b870184018b101561162a57600080fd5b600096505b848710156116545761164081611290565b83526001969096019591830191830161162f565b509650508601359250508082111561166b57600080fd5b50611678858286016112ac565b9150509250929050565b60006020828403121561169457600080fd5b813561134381611b06565b6000602082840312156116b157600080fd5b815161134381611b06565b6000602082840312156116ce57600080fd5b5035919050565b600081518084526020808501945080840160005b83811015611705578151875295820195908201906001016116e9565b509495945050505050565b6000815180845260005b818110156117365760208185018101518683018201520161171a565b81811115611748576000602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0386811682528516602082015260a060408201819052600090611789908301866116d5565b828103606084015261179b81866116d5565b905082810360808401526117af8185611710565b98975050505050505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190526000906117f590830184611710565b979650505050505050565b60208152600061134360208301846116d5565b60408152600061182660408301856116d5565b828103602084015261183881856116d5565b95945050505050565b6020815260006113436020830184611710565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b6020808252601c908201527f6f6e6c79206f776e65722063616e206d616b65207468652063616c6c00000000604082015260600190565b60006001600160401b0382111561197b5761197b611a4b565b5060051b60200190565b6000821982111561199857611998611a1f565b500190565b600181811c908216806119b157607f821691505b602082108114156119d257634e487b7160e01b600052602260045260246000fd5b50919050565b601f8201601f191681016001600160401b03811182821017156119fd576119fd611a4b565b6040525050565b6000600019821415611a1857611a18611a1f565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b600060033d1115611a7a5760046000803e5060005160e01c5b90565b600060443d1015611a8b5790565b6040516003193d81016004833e81513d6001600160401b038160248401118184111715611aba57505050505090565b8285019150815181811115611ad25750505050505090565b843d8701016020828501011115611aec5750505050505090565b611afb602082860101876119d8565b509095945050505050565b6001600160e01b031981168114611b1c57600080fd5b5056fec3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62a2646970667358221220465dfd817f60bd1e6ca8d27764d77f7171e9f1230f47c50b194e579b7d8dfc9264736f6c63430008070033a26469706673582212209b6de161e2429f991a70bbcc195b8b3401cb6b03a01bf5b18548c88f1ecd003f64736f6c63430008070033",
}

// TNT1155TokenBankABI is the input ABI used to generate the binding from.
// Deprecated: Use TNT1155TokenBankMetaData.ABI instead.
var TNT1155TokenBankABI = TNT1155TokenBankMetaData.ABI

// TNT1155TokenBankBin is the compiled bytecode used for deploying new contracts.
// Deprecated: Use TNT1155TokenBankMetaData.Bin instead.
var TNT1155TokenBankBin = TNT1155TokenBankMetaData.Bin

// DeployTNT1155TokenBank deploys a new Ethereum contract, binding an instance of TNT1155TokenBank to it.
func DeployTNT1155TokenBank(auth *bind.TransactOpts, backend bind.ContractBackend, mainchainID_ *big.Int, chainRegistrar_ common.Address) (common.Address, *types.Transaction, *TNT1155TokenBank, error) {
	parsed, err := TNT1155TokenBankMetaData.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(TNT1155TokenBankBin), backend, mainchainID_, chainRegistrar_)
	if err != nil {
		return common.Address{}, nil, nil, err
	}
	return address, tx, &TNT1155TokenBank{TNT1155TokenBankCaller: TNT1155TokenBankCaller{contract: contract}, TNT1155TokenBankTransactor: TNT1155TokenBankTransactor{contract: contract}, TNT1155TokenBankFilterer: TNT1155TokenBankFilterer{contract: contract}}, nil
}

// TNT1155TokenBank is an auto generated Go binding around an Ethereum contract.
type TNT1155TokenBank struct {
	TNT1155TokenBankCaller     // Read-only binding to the contract
	TNT1155TokenBankTransactor // Write-only binding to the contract
	TNT1155TokenBankFilterer   // Log filterer for contract events
}

// TNT1155TokenBankCaller is an auto generated read-only Go binding around an Ethereum contract.
type TNT1155TokenBankCaller struct {
	contract *bind.BoundContract // Generic contract wrapper for the low level calls
}

// TNT1155TokenBankTransactor is an auto generated write-only Go binding around an Ethereum contract.
type TNT1155TokenBankTransactor struct {
	contract *bind.BoundContract // Generic contract wrapper for the low level calls
}

// TNT1155TokenBankFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
type TNT1155TokenBankFilterer struct {
	contract *bind.BoundContract // Generic contract wrapper for the low level calls
}

// TNT1155TokenBankSession is an auto generated Go binding around an Ethereum contract,
// with pre-set call and transact options.
type TNT1155TokenBankSession struct {
	Contract     *TNT1155TokenBank // 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
}

// TNT1155TokenBankCallerSession is an auto generated read-only Go binding around an Ethereum contract,
// with pre-set call options.
type TNT1155TokenBankCallerSession struct {
	Contract *TNT1155TokenBankCaller // Generic contract caller binding to set the session for
	CallOpts bind.CallOpts           // Call options to use throughout this session
}

// TNT1155TokenBankTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
// with pre-set transact options.
type TNT1155TokenBankTransactorSession struct {
	Contract     *TNT1155TokenBankTransactor // Generic contract transactor binding to set the session for
	TransactOpts bind.TransactOpts           // Transaction auth options to use throughout this session
}

// TNT1155TokenBankRaw is an auto generated low-level Go binding around an Ethereum contract.
type TNT1155TokenBankRaw struct {
	Contract *TNT1155TokenBank // Generic contract binding to access the raw methods on
}

// TNT1155TokenBankCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
type TNT1155TokenBankCallerRaw struct {
	Contract *TNT1155TokenBankCaller // Generic read-only contract binding to access the raw methods on
}

// TNT1155TokenBankTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
type TNT1155TokenBankTransactorRaw struct {
	Contract *TNT1155TokenBankTransactor // Generic write-only contract binding to access the raw methods on
}

// NewTNT1155TokenBank creates a new instance of TNT1155TokenBank, bound to a specific deployed contract.
func NewTNT1155TokenBank(address common.Address, backend bind.ContractBackend) (*TNT1155TokenBank, error) {
	contract, err := bindTNT1155TokenBank(address, backend, backend, backend)
	if err != nil {
		return nil, err
	}
	return &TNT1155TokenBank{TNT1155TokenBankCaller: TNT1155TokenBankCaller{contract: contract}, TNT1155TokenBankTransactor: TNT1155TokenBankTransactor{contract: contract}, TNT1155TokenBankFilterer: TNT1155TokenBankFilterer{contract: contract}}, nil
}

// NewTNT1155TokenBankCaller creates a new read-only instance of TNT1155TokenBank, bound to a specific deployed contract.
func NewTNT1155TokenBankCaller(address common.Address, caller bind.ContractCaller) (*TNT1155TokenBankCaller, error) {
	contract, err := bindTNT1155TokenBank(address, caller, nil, nil)
	if err != nil {
		return nil, err
	}
	return &TNT1155TokenBankCaller{contract: contract}, nil
}

// NewTNT1155TokenBankTransactor creates a new write-only instance of TNT1155TokenBank, bound to a specific deployed contract.
func NewTNT1155TokenBankTransactor(address common.Address, transactor bind.ContractTransactor) (*TNT1155TokenBankTransactor, error) {
	contract, err := bindTNT1155TokenBank(address, nil, transactor, nil)
	if err != nil {
		return nil, err
	}
	return &TNT1155TokenBankTransactor{contract: contract}, nil
}

// NewTNT1155TokenBankFilterer creates a new log filterer instance of TNT1155TokenBank, bound to a specific deployed contract.
func NewTNT1155TokenBankFilterer(address common.Address, filterer bind.ContractFilterer) (*TNT1155TokenBankFilterer, error) {
	contract, err := bindTNT1155TokenBank(address, nil, nil, filterer)
	if err != nil {
		return nil, err
	}
	return &TNT1155TokenBankFilterer{contract: contract}, nil
}

// bindTNT1155TokenBank binds a generic wrapper to an already deployed contract.
func bindTNT1155TokenBank(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
	parsed, err := abi.JSON(strings.NewReader(TNT1155TokenBankABI))
	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 (_TNT1155TokenBank *TNT1155TokenBankRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
	return _TNT1155TokenBank.Contract.TNT1155TokenBankCaller.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 (_TNT1155TokenBank *TNT1155TokenBankRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
	return _TNT1155TokenBank.Contract.TNT1155TokenBankTransactor.contract.Transfer(opts)
}

// Transact invokes the (paid) contract method with params as input values.
func (_TNT1155TokenBank *TNT1155TokenBankRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
	return _TNT1155TokenBank.Contract.TNT1155TokenBankTransactor.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 (_TNT1155TokenBank *TNT1155TokenBankCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
	return _TNT1155TokenBank.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 (_TNT1155TokenBank *TNT1155TokenBankTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
	return _TNT1155TokenBank.Contract.contract.Transfer(opts)
}

// Transact invokes the (paid) contract method with params as input values.
func (_TNT1155TokenBank *TNT1155TokenBankTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
	return _TNT1155TokenBank.Contract.contract.Transact(opts, method, params...)
}

// AllDenoms is a free data retrieval call binding the contract method 0x588b1408.
//
// Solidity: function allDenoms(uint256 ) view returns(string)
func (_TNT1155TokenBank *TNT1155TokenBankCaller) AllDenoms(opts *bind.CallOpts, arg0 *big.Int) (string, error) {
	var out []interface{}
	err := _TNT1155TokenBank.contract.Call(opts, &out, "allDenoms", arg0)

	if err != nil {
		return *new(string), err
	}

	out0 := *abi.ConvertType(out[0], new(string)).(*string)

	return out0, err

}

// AllDenoms is a free data retrieval call binding the contract method 0x588b1408.
//
// Solidity: function allDenoms(uint256 ) view returns(string)
func (_TNT1155TokenBank *TNT1155TokenBankSession) AllDenoms(arg0 *big.Int) (string, error) {
	return _TNT1155TokenBank.Contract.AllDenoms(&_TNT1155TokenBank.CallOpts, arg0)
}

// AllDenoms is a free data retrieval call binding the contract method 0x588b1408.
//
// Solidity: function allDenoms(uint256 ) view returns(string)
func (_TNT1155TokenBank *TNT1155TokenBankCallerSession) AllDenoms(arg0 *big.Int) (string, error) {
	return _TNT1155TokenBank.Contract.AllDenoms(&_TNT1155TokenBank.CallOpts, arg0)
}

// AllVouchers is a free data retrieval call binding the contract method 0x27ca4df1.
//
// Solidity: function allVouchers(uint256 ) view returns(address)
func (_TNT1155TokenBank *TNT1155TokenBankCaller) AllVouchers(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) {
	var out []interface{}
	err := _TNT1155TokenBank.contract.Call(opts, &out, "allVouchers", arg0)

	if err != nil {
		return *new(common.Address), err
	}

	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)

	return out0, err

}

// AllVouchers is a free data retrieval call binding the contract method 0x27ca4df1.
//
// Solidity: function allVouchers(uint256 ) view returns(address)
func (_TNT1155TokenBank *TNT1155TokenBankSession) AllVouchers(arg0 *big.Int) (common.Address, error) {
	return _TNT1155TokenBank.Contract.AllVouchers(&_TNT1155TokenBank.CallOpts, arg0)
}

// AllVouchers is a free data retrieval call binding the contract method 0x27ca4df1.
//
// Solidity: function allVouchers(uint256 ) view returns(address)
func (_TNT1155TokenBank *TNT1155TokenBankCallerSession) AllVouchers(arg0 *big.Int) (common.Address, error) {
	return _TNT1155TokenBank.Contract.AllVouchers(&_TNT1155TokenBank.CallOpts, arg0)
}

// DenomToVoucherLookup is a free data retrieval call binding the contract method 0x1527b14d.
//
// Solidity: function denomToVoucherLookup(string ) view returns(address contractAddress, bool exists)
func (_TNT1155TokenBank *TNT1155TokenBankCaller) DenomToVoucherLookup(opts *bind.CallOpts, arg0 string) (struct {
	ContractAddress common.Address
	Exists          bool
}, error) {
	var out []interface{}
	err := _TNT1155TokenBank.contract.Call(opts, &out, "denomToVoucherLookup", arg0)

	outstruct := new(struct {
		ContractAddress common.Address
		Exists          bool
	})
	if err != nil {
		return *outstruct, err
	}

	outstruct.ContractAddress = *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
	outstruct.Exists = *abi.ConvertType(out[1], new(bool)).(*bool)

	return *outstruct, err

}

// DenomToVoucherLookup is a free data retrieval call binding the contract method 0x1527b14d.
//
// Solidity: function denomToVoucherLookup(string ) view returns(address contractAddress, bool exists)
func (_TNT1155TokenBank *TNT1155TokenBankSession) DenomToVoucherLookup(arg0 string) (struct {
	ContractAddress common.Address
	Exists          bool
}, error) {
	return _TNT1155TokenBank.Contract.DenomToVoucherLookup(&_TNT1155TokenBank.CallOpts, arg0)
}

// DenomToVoucherLookup is a free data retrieval call binding the contract method 0x1527b14d.
//
// Solidity: function denomToVoucherLookup(string ) view returns(address contractAddress, bool exists)
func (_TNT1155TokenBank *TNT1155TokenBankCallerSession) DenomToVoucherLookup(arg0 string) (struct {
	ContractAddress common.Address
	Exists          bool
}, error) {
	return _TNT1155TokenBank.Contract.DenomToVoucherLookup(&_TNT1155TokenBank.CallOpts, arg0)
}

// Exists is a free data retrieval call binding the contract method 0x261a323e.
//
// Solidity: function exists(string denom) view returns(bool)
func (_TNT1155TokenBank *TNT1155TokenBankCaller) Exists(opts *bind.CallOpts, denom string) (bool, error) {
	var out []interface{}
	err := _TNT1155TokenBank.contract.Call(opts, &out, "exists", denom)

	if err != nil {
		return *new(bool), err
	}

	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)

	return out0, err

}

// Exists is a free data retrieval call binding the contract method 0x261a323e.
//
// Solidity: function exists(string denom) view returns(bool)
func (_TNT1155TokenBank *TNT1155TokenBankSession) Exists(denom string) (bool, error) {
	return _TNT1155TokenBank.Contract.Exists(&_TNT1155TokenBank.CallOpts, denom)
}

// Exists is a free data retrieval call binding the contract method 0x261a323e.
//
// Solidity: function exists(string denom) view returns(bool)
func (_TNT1155TokenBank *TNT1155TokenBankCallerSession) Exists(denom string) (bool, error) {
	return _TNT1155TokenBank.Contract.Exists(&_TNT1155TokenBank.CallOpts, denom)
}

// Exists0 is a free data retrieval call binding the contract method 0xf6a3d24e.
//
// Solidity: function exists(address voucherAddress) view returns(bool)
func (_TNT1155TokenBank *TNT1155TokenBankCaller) Exists0(opts *bind.CallOpts, voucherAddress common.Address) (bool, error) {
	var out []interface{}
	err := _TNT1155TokenBank.contract.Call(opts, &out, "exists0", voucherAddress)

	if err != nil {
		return *new(bool), err
	}

	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)

	return out0, err

}

// Exists0 is a free data retrieval call binding the contract method 0xf6a3d24e.
//
// Solidity: function exists(address voucherAddress) view returns(bool)
func (_TNT1155TokenBank *TNT1155TokenBankSession) Exists0(voucherAddress common.Address) (bool, error) {
	return _TNT1155TokenBank.Contract.Exists0(&_TNT1155TokenBank.CallOpts, voucherAddress)
}

// Exists0 is a free data retrieval call binding the contract method 0xf6a3d24e.
//
// Solidity: function exists(address voucherAddress) view returns(bool)
func (_TNT1155TokenBank *TNT1155TokenBankCallerSession) Exists0(voucherAddress common.Address) (bool, error) {
	return _TNT1155TokenBank.Contract.Exists0(&_TNT1155TokenBank.CallOpts, voucherAddress)
}

// GetAdjustedValidatorSet is a free data retrieval call binding the contract method 0xaa861c15.
//
// Solidity: function getAdjustedValidatorSet(uint256 subchainID, uint256 dynasty) view returns(address[] validators, uint256[] shareAmounts)
func (_TNT1155TokenBank *TNT1155TokenBankCaller) GetAdjustedValidatorSet(opts *bind.CallOpts, subchainID *big.Int, dynasty *big.Int) (struct {
	Validators   []common.Address
	ShareAmounts []*big.Int
}, error) {
	var out []interface{}
	err := _TNT1155TokenBank.contract.Call(opts, &out, "getAdjustedValidatorSet", subchainID, dynasty)

	outstruct := new(struct {
		Validators   []common.Address
		ShareAmounts []*big.Int
	})
	if err != nil {
		return *outstruct, err
	}

	outstruct.Validators = *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address)
	outstruct.ShareAmounts = *abi.ConvertType(out[1], new([]*big.Int)).(*[]*big.Int)

	return *outstruct, err

}

// GetAdjustedValidatorSet is a free data retrieval call binding the contract method 0xaa861c15.
//
// Solidity: function getAdjustedValidatorSet(uint256 subchainID, uint256 dynasty) view returns(address[] validators, uint256[] shareAmounts)
func (_TNT1155TokenBank *TNT1155TokenBankSession) GetAdjustedValidatorSet(subchainID *big.Int, dynasty *big.Int) (struct {
	Validators   []common.Address
	ShareAmounts []*big.Int
}, error) {
	return _TNT1155TokenBank.Contract.GetAdjustedValidatorSet(&_TNT1155TokenBank.CallOpts, subchainID, dynasty)
}

// GetAdjustedValidatorSet is a free data retrieval call binding the contract method 0xaa861c15.
//
// Solidity: function getAdjustedValidatorSet(uint256 subchainID, uint256 dynasty) view returns(address[] validators, uint256[] shareAmounts)
func (_TNT1155TokenBank *TNT1155TokenBankCallerSession) GetAdjustedValidatorSet(subchainID *big.Int, dynasty *big.Int) (struct {
	Validators   []common.Address
	ShareAmounts []*big.Int
}, error) {
	return _TNT1155TokenBank.Contract.GetAdjustedValidatorSet(&_TNT1155TokenBank.CallOpts, subchainID, dynasty)
}

// GetDenom is a free data retrieval call binding the contract method 0xebda9962.
//
// Solidity: function getDenom(address voucherContractAddr) view returns(string)
func (_TNT1155TokenBank *TNT1155TokenBankCaller) GetDenom(opts *bind.CallOpts, voucherContractAddr common.Address) (string, error) {
	var out []interface{}
	err := _TNT1155TokenBank.contract.Call(opts, &out, "getDenom", voucherContractAddr)

	if err != nil {
		return *new(string), err
	}

	out0 := *abi.ConvertType(out[0], new(string)).(*string)

	return out0, err

}

// GetDenom is a free data retrieval call binding the contract method 0xebda9962.
//
// Solidity: function getDenom(address voucherContractAddr) view returns(string)
func (_TNT1155TokenBank *TNT1155TokenBankSession) GetDenom(voucherContractAddr common.Address) (string, error) {
	return _TNT1155TokenBank.Contract.GetDenom(&_TNT1155TokenBank.CallOpts, voucherContractAddr)
}

// GetDenom is a free data retrieval call binding the contract method 0xebda9962.
//
// Solidity: function getDenom(address voucherContractAddr) view returns(string)
func (_TNT1155TokenBank *TNT1155TokenBankCallerSession) GetDenom(voucherContractAddr common.Address) (string, error) {
	return _TNT1155TokenBank.Contract.GetDenom(&_TNT1155TokenBank.CallOpts, voucherContractAddr)
}

// GetMaxProcessedTokenLockNonce is a free data retrieval call binding the contract method 0xf95627ac.
//
// Solidity: function getMaxProcessedTokenLockNonce(uint256 chainID) view returns(uint256)
func (_TNT1155TokenBank *TNT1155TokenBankCaller) GetMaxProcessedTokenLockNonce(opts *bind.CallOpts, chainID *big.Int) (*big.Int, error) {
	var out []interface{}
	err := _TNT1155TokenBank.contract.Call(opts, &out, "getMaxProcessedTokenLockNonce", chainID)

	if err != nil {
		return *new(*big.Int), err
	}

	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)

	return out0, err

}

// GetMaxProcessedTokenLockNonce is a free data retrieval call binding the contract method 0xf95627ac.
//
// Solidity: function getMaxProcessedTokenLockNonce(uint256 chainID) view returns(uint256)
func (_TNT1155TokenBank *TNT1155TokenBankSession) GetMaxProcessedTokenLockNonce(chainID *big.Int) (*big.Int, error) {
	return _TNT1155TokenBank.Contract.GetMaxProcessedTokenLockNonce(&_TNT1155TokenBank.CallOpts, chainID)
}

// GetMaxProcessedTokenLockNonce is a free data retrieval call binding the contract method 0xf95627ac.
//
// Solidity: function getMaxProcessedTokenLockNonce(uint256 chainID) view returns(uint256)
func (_TNT1155TokenBank *TNT1155TokenBankCallerSession) GetMaxProcessedTokenLockNonce(chainID *big.Int) (*big.Int, error) {
	return _TNT1155TokenBank.Contract.GetMaxProcessedTokenLockNonce(&_TNT1155TokenBank.CallOpts, chainID)
}

// GetMaxProcessedVoucherBurnNonce is a free data retrieval call binding the contract method 0x766f8fb0.
//
// Solidity: function getMaxProcessedVoucherBurnNonce(uint256 chainID) view returns(uint256)
func (_TNT1155TokenBank *TNT1155TokenBankCaller) GetMaxProcessedVoucherBurnNonce(opts *bind.CallOpts, chainID *big.Int) (*big.Int, error) {
	var out []interface{}
	err := _TNT1155TokenBank.contract.Call(opts, &out, "getMaxProcessedVoucherBurnNonce", chainID)

	if err != nil {
		return *new(*big.Int), err
	}

	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)

	return out0, err

}

// GetMaxProcessedVoucherBurnNonce is a free data retrieval call binding the contract method 0x766f8fb0.
//
// Solidity: function getMaxProcessedVoucherBurnNonce(uint256 chainID) view returns(uint256)
func (_TNT1155TokenBank *TNT1155TokenBankSession) GetMaxProcessedVoucherBurnNonce(chainID *big.Int) (*big.Int, error) {
	return _TNT1155TokenBank.Contract.GetMaxProcessedVoucherBurnNonce(&_TNT1155TokenBank.CallOpts, chainID)
}

// GetMaxProcessedVoucherBurnNonce is a free data retrieval call binding the contract method 0x766f8fb0.
//
// Solidity: function getMaxProcessedVoucherBurnNonce(uint256 chainID) view returns(uint256)
func (_TNT1155TokenBank *TNT1155TokenBankCallerSession) GetMaxProcessedVoucherBurnNonce(chainID *big.Int) (*big.Int, error) {
	return _TNT1155TokenBank.Contract.GetMaxProcessedVoucherBurnNonce(&_TNT1155TokenBank.CallOpts, chainID)
}

// GetTokenLockEventHeight is a free data retrieval call binding the contract method 0xdd17eb6d.
//
// Solidity: function getTokenLockEventHeight(uint256 chainID, uint256 eventNonce) view returns(uint256)
func (_TNT1155TokenBank *TNT1155TokenBankCaller) GetTokenLockEventHeight(opts *bind.CallOpts, chainID *big.Int, eventNonce *big.Int) (*big.Int, error) {
	var out []interface{}
	err := _TNT1155TokenBank.contract.Call(opts, &out, "getTokenLockEventHeight", chainID, eventNonce)

	if err != nil {
		return *new(*big.Int), err
	}

	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)

	return out0, err

}

// GetTokenLockEventHeight is a free data retrieval call binding the contract method 0xdd17eb6d.
//
// Solidity: function getTokenLockEventHeight(uint256 chainID, uint256 eventNonce) view returns(uint256)
func (_TNT1155TokenBank *TNT1155TokenBankSession) GetTokenLockEventHeight(chainID *big.Int, eventNonce *big.Int) (*big.Int, error) {
	return _TNT1155TokenBank.Contract.GetTokenLockEventHeight(&_TNT1155TokenBank.CallOpts, chainID, eventNonce)
}

// GetTokenLockEventHeight is a free data retrieval call binding the contract method 0xdd17eb6d.
//
// Solidity: function getTokenLockEventHeight(uint256 chainID, uint256 eventNonce) view returns(uint256)
func (_TNT1155TokenBank *TNT1155TokenBankCallerSession) GetTokenLockEventHeight(chainID *big.Int, eventNonce *big.Int) (*big.Int, error) {
	return _TNT1155TokenBank.Contract.GetTokenLockEventHeight(&_TNT1155TokenBank.CallOpts, chainID, eventNonce)
}

// GetVoucher is a free data retrieval call binding the contract method 0xa2cc6981.
//
// Solidity: function getVoucher(string denom) view returns(address)
func (_TNT1155TokenBank *TNT1155TokenBankCaller) GetVoucher(opts *bind.CallOpts, denom string) (common.Address, error) {
	var out []interface{}
	err := _TNT1155TokenBank.contract.Call(opts, &out, "getVoucher", denom)

	if err != nil {
		return *new(common.Address), err
	}

	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)

	return out0, err

}

// GetVoucher is a free data retrieval call binding the contract method 0xa2cc6981.
//
// Solidity: function getVoucher(string denom) view returns(address)
func (_TNT1155TokenBank *TNT1155TokenBankSession) GetVoucher(denom string) (common.Address, error) {
	return _TNT1155TokenBank.Contract.GetVoucher(&_TNT1155TokenBank.CallOpts, denom)
}

// GetVoucher is a free data retrieval call binding the contract method 0xa2cc6981.
//
// Solidity: function getVoucher(string denom) view returns(address)
func (_TNT1155TokenBank *TNT1155TokenBankCallerSession) GetVoucher(denom string) (common.Address, error) {
	return _TNT1155TokenBank.Contract.GetVoucher(&_TNT1155TokenBank.CallOpts, denom)
}

// GetVoucherBurnEventHeight is a free data retrieval call binding the contract method 0x6ac739b9.
//
// Solidity: function getVoucherBurnEventHeight(uint256 chainID, uint256 eventNonce) view returns(uint256)
func (_TNT1155TokenBank *TNT1155TokenBankCaller) GetVoucherBurnEventHeight(opts *bind.CallOpts, chainID *big.Int, eventNonce *big.Int) (*big.Int, error) {
	var out []interface{}
	err := _TNT1155TokenBank.contract.Call(opts, &out, "getVoucherBurnEventHeight", chainID, eventNonce)

	if err != nil {
		return *new(*big.Int), err
	}

	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)

	return out0, err

}

// GetVoucherBurnEventHeight is a free data retrieval call binding the contract method 0x6ac739b9.
//
// Solidity: function getVoucherBurnEventHeight(uint256 chainID, uint256 eventNonce) view returns(uint256)
func (_TNT1155TokenBank *TNT1155TokenBankSession) GetVoucherBurnEventHeight(chainID *big.Int, eventNonce *big.Int) (*big.Int, error) {
	return _TNT1155TokenBank.Contract.GetVoucherBurnEventHeight(&_TNT1155TokenBank.CallOpts, chainID, eventNonce)
}

// GetVoucherBurnEventHeight is a free data retrieval call binding the contract method 0x6ac739b9.
//
// Solidity: function getVoucherBurnEventHeight(uint256 chainID, uint256 eventNonce) view returns(uint256)
func (_TNT1155TokenBank *TNT1155TokenBankCallerSession) GetVoucherBurnEventHeight(chainID *big.Int, eventNonce *big.Int) (*big.Int, error) {
	return _TNT1155TokenBank.Contract.GetVoucherBurnEventHeight(&_TNT1155TokenBank.CallOpts, chainID, eventNonce)
}

// MainchainID is a free data retrieval call binding the contract method 0x073b9502.
//
// Solidity: function mainchainID() view returns(uint256)
func (_TNT1155TokenBank *TNT1155TokenBankCaller) MainchainID(opts *bind.CallOpts) (*big.Int, error) {
	var out []interface{}
	err := _TNT1155TokenBank.contract.Call(opts, &out, "mainchainID")

	if err != nil {
		return *new(*big.Int), err
	}

	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)

	return out0, err

}

// MainchainID is a free data retrieval call binding the contract method 0x073b9502.
//
// Solidity: function mainchainID() view returns(uint256)
func (_TNT1155TokenBank *TNT1155TokenBankSession) MainchainID() (*big.Int, error) {
	return _TNT1155TokenBank.Contract.MainchainID(&_TNT1155TokenBank.CallOpts)
}

// MainchainID is a free data retrieval call binding the contract method 0x073b9502.
//
// Solidity: function mainchainID() view returns(uint256)
func (_TNT1155TokenBank *TNT1155TokenBankCallerSession) MainchainID() (*big.Int, error) {
	return _TNT1155TokenBank.Contract.MainchainID(&_TNT1155TokenBank.CallOpts)
}

// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
//
// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
func (_TNT1155TokenBank *TNT1155TokenBankCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
	var out []interface{}
	err := _TNT1155TokenBank.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 (_TNT1155TokenBank *TNT1155TokenBankSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
	return _TNT1155TokenBank.Contract.SupportsInterface(&_TNT1155TokenBank.CallOpts, interfaceId)
}

// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
//
// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
func (_TNT1155TokenBank *TNT1155TokenBankCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
	return _TNT1155TokenBank.Contract.SupportsInterface(&_TNT1155TokenBank.CallOpts, interfaceId)
}

// TokenLockNonceMap is a free data retrieval call binding the contract method 0x8883931e.
//
// Solidity: function tokenLockNonceMap(uint256 ) view returns(uint256)
func (_TNT1155TokenBank *TNT1155TokenBankCaller) TokenLockNonceMap(opts *bind.CallOpts, arg0 *big.Int) (*big.Int, error) {
	var out []interface{}
	err := _TNT1155TokenBank.contract.Call(opts, &out, "tokenLockNonceMap", arg0)

	if err != nil {
		return *new(*big.Int), err
	}

	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)

	return out0, err

}

// TokenLockNonceMap is a free data retrieval call binding the contract method 0x8883931e.
//
// Solidity: function tokenLockNonceMap(uint256 ) view returns(uint256)
func (_TNT1155TokenBank *TNT1155TokenBankSession) TokenLockNonceMap(arg0 *big.Int) (*big.Int, error) {
	return _TNT1155TokenBank.Contract.TokenLockNonceMap(&_TNT1155TokenBank.CallOpts, arg0)
}

// TokenLockNonceMap is a free data retrieval call binding the contract method 0x8883931e.
//
// Solidity: function tokenLockNonceMap(uint256 ) view returns(uint256)
func (_TNT1155TokenBank *TNT1155TokenBankCallerSession) TokenLockNonceMap(arg0 *big.Int) (*big.Int, error) {
	return _TNT1155TokenBank.Contract.TokenLockNonceMap(&_TNT1155TokenBank.CallOpts, arg0)
}

// TokenLockVotingRecords is a free data retrieval call binding the contract method 0x1eb78737.
//
// Solidity: function tokenLockVotingRecords(uint256 , bytes32 ) view returns(uint256 dynasty, uint256 accumlatedShares)
func (_TNT1155TokenBank *TNT1155TokenBankCaller) TokenLockVotingRecords(opts *bind.CallOpts, arg0 *big.Int, arg1 [32]byte) (struct {
	Dynasty          *big.Int
	AccumlatedShares *big.Int
}, error) {
	var out []interface{}
	err := _TNT1155TokenBank.contract.Call(opts, &out, "tokenLockVotingRecords", arg0, arg1)

	outstruct := new(struct {
		Dynasty          *big.Int
		AccumlatedShares *big.Int
	})
	if err != nil {
		return *outstruct, err
	}

	outstruct.Dynasty = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
	outstruct.AccumlatedShares = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int)

	return *outstruct, err

}

// TokenLockVotingRecords is a free data retrieval call binding the contract method 0x1eb78737.
//
// Solidity: function tokenLockVotingRecords(uint256 , bytes32 ) view returns(uint256 dynasty, uint256 accumlatedShares)
func (_TNT1155TokenBank *TNT1155TokenBankSession) TokenLockVotingRecords(arg0 *big.Int, arg1 [32]byte) (struct {
	Dynasty          *big.Int
	AccumlatedShares *big.Int
}, error) {
	return _TNT1155TokenBank.Contract.TokenLockVotingRecords(&_TNT1155TokenBank.CallOpts, arg0, arg1)
}

// TokenLockVotingRecords is a free data retrieval call binding the contract method 0x1eb78737.
//
// Solidity: function tokenLockVotingRecords(uint256 , bytes32 ) view returns(uint256 dynasty, uint256 accumlatedShares)
func (_TNT1155TokenBank *TNT1155TokenBankCallerSession) TokenLockVotingRecords(arg0 *big.Int, arg1 [32]byte) (struct {
	Dynasty          *big.Int
	AccumlatedShares *big.Int
}, error) {
	return _TNT1155TokenBank.Contract.TokenLockVotingRecords(&_TNT1155TokenBank.CallOpts, arg0, arg1)
}

// TokenUnlockNonceMap is a free data retrieval call binding the contract method 0xccf187c7.
//
// Solidity: function tokenUnlockNonceMap(uint256 ) view returns(uint256)
func (_TNT1155TokenBank *TNT1155TokenBankCaller) TokenUnlockNonceMap(opts *bind.CallOpts, arg0 *big.Int) (*big.Int, error) {
	var out []interface{}
	err := _TNT1155TokenBank.contract.Call(opts, &out, "tokenUnlockNonceMap", arg0)

	if err != nil {
		return *new(*big.Int), err
	}

	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)

	return out0, err

}

// TokenUnlockNonceMap is a free data retrieval call binding the contract method 0xccf187c7.
//
// Solidity: function tokenUnlockNonceMap(uint256 ) view returns(uint256)
func (_TNT1155TokenBank *TNT1155TokenBankSession) TokenUnlockNonceMap(arg0 *big.Int) (*big.Int, error) {
	return _TNT1155TokenBank.Contract.TokenUnlockNonceMap(&_TNT1155TokenBank.CallOpts, arg0)
}

// TokenUnlockNonceMap is a free data retrieval call binding the contract method 0xccf187c7.
//
// Solidity: function tokenUnlockNonceMap(uint256 ) view returns(uint256)
func (_TNT1155TokenBank *TNT1155TokenBankCallerSession) TokenUnlockNonceMap(arg0 *big.Int) (*big.Int, error) {
	return _TNT1155TokenBank.Contract.TokenUnlockNonceMap(&_TNT1155TokenBank.CallOpts, arg0)
}

// VoucherAddressToDenomLookup is a free data retrieval call binding the contract method 0x60569b5e.
//
// Solidity: function voucherAddressToDenomLookup(address ) view returns(string denom, bool exists)
func (_TNT1155TokenBank *TNT1155TokenBankCaller) VoucherAddressToDenomLookup(opts *bind.CallOpts, arg0 common.Address) (struct {
	Denom  string
	Exists bool
}, error) {
	var out []interface{}
	err := _TNT1155TokenBank.contract.Call(opts, &out, "voucherAddressToDenomLookup", arg0)

	outstruct := new(struct {
		Denom  string
		Exists bool
	})
	if err != nil {
		return *outstruct, err
	}

	outstruct.Denom = *abi.ConvertType(out[0], new(string)).(*string)
	outstruct.Exists = *abi.ConvertType(out[1], new(bool)).(*bool)

	return *outstruct, err

}

// VoucherAddressToDenomLookup is a free data retrieval call binding the contract method 0x60569b5e.
//
// Solidity: function voucherAddressToDenomLookup(address ) view returns(string denom, bool exists)
func (_TNT1155TokenBank *TNT1155TokenBankSession) VoucherAddressToDenomLookup(arg0 common.Address) (struct {
	Denom  string
	Exists bool
}, error) {
	return _TNT1155TokenBank.Contract.VoucherAddressToDenomLookup(&_TNT1155TokenBank.CallOpts, arg0)
}

// VoucherAddressToDenomLookup is a free data retrieval call binding the contract method 0x60569b5e.
//
// Solidity: function voucherAddressToDenomLookup(address ) view returns(string denom, bool exists)
func (_TNT1155TokenBank *TNT1155TokenBankCallerSession) VoucherAddressToDenomLookup(arg0 common.Address) (struct {
	Denom  string
	Exists bool
}, error) {
	return _TNT1155TokenBank.Contract.VoucherAddressToDenomLookup(&_TNT1155TokenBank.CallOpts, arg0)
}

// VoucherBurnNonceMap is a free data retrieval call binding the contract method 0xca207569.
//
// Solidity: function voucherBurnNonceMap(uint256 ) view returns(uint256)
func (_TNT1155TokenBank *TNT1155TokenBankCaller) VoucherBurnNonceMap(opts *bind.CallOpts, arg0 *big.Int) (*big.Int, error) {
	var out []interface{}
	err := _TNT1155TokenBank.contract.Call(opts, &out, "voucherBurnNonceMap", arg0)

	if err != nil {
		return *new(*big.Int), err
	}

	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)

	return out0, err

}

// VoucherBurnNonceMap is a free data retrieval call binding the contract method 0xca207569.
//
// Solidity: function voucherBurnNonceMap(uint256 ) view returns(uint256)
func (_TNT1155TokenBank *TNT1155TokenBankSession) VoucherBurnNonceMap(arg0 *big.Int) (*big.Int, error) {
	return _TNT1155TokenBank.Contract.VoucherBurnNonceMap(&_TNT1155TokenBank.CallOpts, arg0)
}

// VoucherBurnNonceMap is a free data retrieval call binding the contract method 0xca207569.
//
// Solidity: function voucherBurnNonceMap(uint256 ) view returns(uint256)
func (_TNT1155TokenBank *TNT1155TokenBankCallerSession) VoucherBurnNonceMap(arg0 *big.Int) (*big.Int, error) {
	return _TNT1155TokenBank.Contract.VoucherBurnNonceMap(&_TNT1155TokenBank.CallOpts, arg0)
}

// VoucherBurnVotingRecords is a free data retrieval call binding the contract method 0xfeaff052.
//
// Solidity: function voucherBurnVotingRecords(uint256 , bytes32 ) view returns(uint256 dynasty, uint256 accumlatedShares)
func (_TNT1155TokenBank *TNT1155TokenBankCaller) VoucherBurnVotingRecords(opts *bind.CallOpts, arg0 *big.Int, arg1 [32]byte) (struct {
	Dynasty          *big.Int
	AccumlatedShares *big.Int
}, error) {
	var out []interface{}
	err := _TNT1155TokenBank.contract.Call(opts, &out, "voucherBurnVotingRecords", arg0, arg1)

	outstruct := new(struct {
		Dynasty          *big.Int
		AccumlatedShares *big.Int
	})
	if err != nil {
		return *outstruct, err
	}

	outstruct.Dynasty = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
	outstruct.AccumlatedShares = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int)

	return *outstruct, err

}

// VoucherBurnVotingRecords is a free data retrieval call binding the contract method 0xfeaff052.
//
// Solidity: function voucherBurnVotingRecords(uint256 , bytes32 ) view returns(uint256 dynasty, uint256 accumlatedShares)
func (_TNT1155TokenBank *TNT1155TokenBankSession) VoucherBurnVotingRecords(arg0 *big.Int, arg1 [32]byte) (struct {
	Dynasty          *big.Int
	AccumlatedShares *big.Int
}, error) {
	return _TNT1155TokenBank.Contract.VoucherBurnVotingRecords(&_TNT1155TokenBank.CallOpts, arg0, arg1)
}

// VoucherBurnVotingRecords is a free data retrieval call binding the contract method 0xfeaff052.
//
// Solidity: function voucherBurnVotingRecords(uint256 , bytes32 ) view returns(uint256 dynasty, uint256 accumlatedShares)
func (_TNT1155TokenBank *TNT1155TokenBankCallerSession) VoucherBurnVotingRecords(arg0 *big.Int, arg1 [32]byte) (struct {
	Dynasty          *big.Int
	AccumlatedShares *big.Int
}, error) {
	return _TNT1155TokenBank.Contract.VoucherBurnVotingRecords(&_TNT1155TokenBank.CallOpts, arg0, arg1)
}

// VoucherMintNonceMap is a free data retrieval call binding the contract method 0x740cb7f8.
//
// Solidity: function voucherMintNonceMap(uint256 ) view returns(uint256)
func (_TNT1155TokenBank *TNT1155TokenBankCaller) VoucherMintNonceMap(opts *bind.CallOpts, arg0 *big.Int) (*big.Int, error) {
	var out []interface{}
	err := _TNT1155TokenBank.contract.Call(opts, &out, "voucherMintNonceMap", arg0)

	if err != nil {
		return *new(*big.Int), err
	}

	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)

	return out0, err

}

// VoucherMintNonceMap is a free data retrieval call binding the contract method 0x740cb7f8.
//
// Solidity: function voucherMintNonceMap(uint256 ) view returns(uint256)
func (_TNT1155TokenBank *TNT1155TokenBankSession) VoucherMintNonceMap(arg0 *big.Int) (*big.Int, error) {
	return _TNT1155TokenBank.Contract.VoucherMintNonceMap(&_TNT1155TokenBank.CallOpts, arg0)
}

// VoucherMintNonceMap is a free data retrieval call binding the contract method 0x740cb7f8.
//
// Solidity: function voucherMintNonceMap(uint256 ) view returns(uint256)
func (_TNT1155TokenBank *TNT1155TokenBankCallerSession) VoucherMintNonceMap(arg0 *big.Int) (*big.Int, error) {
	return _TNT1155TokenBank.Contract.VoucherMintNonceMap(&_TNT1155TokenBank.CallOpts, arg0)
}

// BurnVouchers is a paid mutator transaction binding the contract method 0x46421652.
//
// Solidity: function burnVouchers(address sourceChainVoucherContractAddr, address targetChainTokenReceiver, uint256 tokenID, uint256 burnAmount) payable returns()
func (_TNT1155TokenBank *TNT1155TokenBankTransactor) BurnVouchers(opts *bind.TransactOpts, sourceChainVoucherContractAddr common.Address, targetChainTokenReceiver common.Address, tokenID *big.Int, burnAmount *big.Int) (*types.Transaction, error) {
	return _TNT1155TokenBank.contract.Transact(opts, "burnVouchers", sourceChainVoucherContractAddr, targetChainTokenReceiver, tokenID, burnAmount)
}

// BurnVouchers is a paid mutator transaction binding the contract method 0x46421652.
//
// Solidity: function burnVouchers(address sourceChainVoucherContractAddr, address targetChainTokenReceiver, uint256 tokenID, uint256 burnAmount) payable returns()
func (_TNT1155TokenBank *TNT1155TokenBankSession) BurnVouchers(sourceChainVoucherContractAddr common.Address, targetChainTokenReceiver common.Address, tokenID *big.Int, burnAmount *big.Int) (*types.Transaction, error) {
	return _TNT1155TokenBank.Contract.BurnVouchers(&_TNT1155TokenBank.TransactOpts, sourceChainVoucherContractAddr, targetChainTokenReceiver, tokenID, burnAmount)
}

// BurnVouchers is a paid mutator transaction binding the contract method 0x46421652.
//
// Solidity: function burnVouchers(address sourceChainVoucherContractAddr, address targetChainTokenReceiver, uint256 tokenID, uint256 burnAmount) payable returns()
func (_TNT1155TokenBank *TNT1155TokenBankTransactorSession) BurnVouchers(sourceChainVoucherContractAddr common.Address, targetChainTokenReceiver common.Address, tokenID *big.Int, burnAmount *big.Int) (*types.Transaction, error) {
	return _TNT1155TokenBank.Contract.BurnVouchers(&_TNT1155TokenBank.TransactOpts, sourceChainVoucherContractAddr, targetChainTokenReceiver, tokenID, burnAmount)
}

// LockTokens is a paid mutator transaction binding the contract method 0xe5992334.
//
// Solidity: function lockTokens(uint256 targetChainID, address sourceChainTNT1155Contract, address targetChainVoucherReceiver, uint256 tokenID, uint256 lockAmount) payable returns()
func (_TNT1155TokenBank *TNT1155TokenBankTransactor) LockTokens(opts *bind.TransactOpts, targetChainID *big.Int, sourceChainTNT1155Contract common.Address, targetChainVoucherReceiver common.Address, tokenID *big.Int, lockAmount *big.Int) (*types.Transaction, error) {
	return _TNT1155TokenBank.contract.Transact(opts, "lockTokens", targetChainID, sourceChainTNT1155Contract, targetChainVoucherReceiver, tokenID, lockAmount)
}

// LockTokens is a paid mutator transaction binding the contract method 0xe5992334.
//
// Solidity: function lockTokens(uint256 targetChainID, address sourceChainTNT1155Contract, address targetChainVoucherReceiver, uint256 tokenID, uint256 lockAmount) payable returns()
func (_TNT1155TokenBank *TNT1155TokenBankSession) LockTokens(targetChainID *big.Int, sourceChainTNT1155Contract common.Address, targetChainVoucherReceiver common.Address, tokenID *big.Int, lockAmount *big.Int) (*types.Transaction, error) {
	return _TNT1155TokenBank.Contract.LockTokens(&_TNT1155TokenBank.TransactOpts, targetChainID, sourceChainTNT1155Contract, targetChainVoucherReceiver, tokenID, lockAmount)
}

// LockTokens is a paid mutator transaction binding the contract method 0xe5992334.
//
// Solidity: function lockTokens(uint256 targetChainID, address sourceChainTNT1155Contract, address targetChainVoucherReceiver, uint256 tokenID, uint256 lockAmount) payable returns()
func (_TNT1155TokenBank *TNT1155TokenBankTransactorSession) LockTokens(targetChainID *big.Int, sourceChainTNT1155Contract common.Address, targetChainVoucherReceiver common.Address, tokenID *big.Int, lockAmount *big.Int) (*types.Transaction, error) {
	return _TNT1155TokenBank.Contract.LockTokens(&_TNT1155TokenBank.TransactOpts, targetChainID, sourceChainTNT1155Contract, targetChainVoucherReceiver, tokenID, lockAmount)
}

// MintVouchers is a paid mutator transaction binding the contract method 0xe888e05b.
//
// Solidity: function mintVouchers(string denom, address targetChainVoucherReceiver, uint256 tokenID, uint256 mintAmount, string tokenUri, uint256 dynasty, uint256 sourceChainTokenLockNonce) returns()
func (_TNT1155TokenBank *TNT1155TokenBankTransactor) MintVouchers(opts *bind.TransactOpts, denom string, targetChainVoucherReceiver common.Address, tokenID *big.Int, mintAmount *big.Int, tokenUri string, dynasty *big.Int, sourceChainTokenLockNonce *big.Int) (*types.Transaction, error) {
	return _TNT1155TokenBank.contract.Transact(opts, "mintVouchers", denom, targetChainVoucherReceiver, tokenID, mintAmount, tokenUri, dynasty, sourceChainTokenLockNonce)
}

// MintVouchers is a paid mutator transaction binding the contract method 0xe888e05b.
//
// Solidity: function mintVouchers(string denom, address targetChainVoucherReceiver, uint256 tokenID, uint256 mintAmount, string tokenUri, uint256 dynasty, uint256 sourceChainTokenLockNonce) returns()
func (_TNT1155TokenBank *TNT1155TokenBankSession) MintVouchers(denom string, targetChainVoucherReceiver common.Address, tokenID *big.Int, mintAmount *big.Int, tokenUri string, dynasty *big.Int, sourceChainTokenLockNonce *big.Int) (*types.Transaction, error) {
	return _TNT1155TokenBank.Contract.MintVouchers(&_TNT1155TokenBank.TransactOpts, denom, targetChainVoucherReceiver, tokenID, mintAmount, tokenUri, dynasty, sourceChainTokenLockNonce)
}

// MintVouchers is a paid mutator transaction binding the contract method 0xe888e05b.
//
// Solidity: function mintVouchers(string denom, address targetChainVoucherReceiver, uint256 tokenID, uint256 mintAmount, string tokenUri, uint256 dynasty, uint256 sourceChainTokenLockNonce) returns()
func (_TNT1155TokenBank *TNT1155TokenBankTransactorSession) MintVouchers(denom string, targetChainVoucherReceiver common.Address, tokenID *big.Int, mintAmount *big.Int, tokenUri string, dynasty *big.Int, sourceChainTokenLockNonce *big.Int) (*types.Transaction, error) {
	return _TNT1155TokenBank.Contract.MintVouchers(&_TNT1155TokenBank.TransactOpts, denom, targetChainVoucherReceiver, tokenID, mintAmount, tokenUri, dynasty, sourceChainTokenLockNonce)
}

// OnERC1155BatchReceived is a paid mutator transaction binding the contract method 0xbc197c81.
//
// Solidity: function onERC1155BatchReceived(address , address , uint256[] , uint256[] , bytes ) returns(bytes4)
func (_TNT1155TokenBank *TNT1155TokenBankTransactor) OnERC1155BatchReceived(opts *bind.TransactOpts, arg0 common.Address, arg1 common.Address, arg2 []*big.Int, arg3 []*big.Int, arg4 []byte) (*types.Transaction, error) {
	return _TNT1155TokenBank.contract.Transact(opts, "onERC1155BatchReceived", arg0, arg1, arg2, arg3, arg4)
}

// OnERC1155BatchReceived is a paid mutator transaction binding the contract method 0xbc197c81.
//
// Solidity: function onERC1155BatchReceived(address , address , uint256[] , uint256[] , bytes ) returns(bytes4)
func (_TNT1155TokenBank *TNT1155TokenBankSession) OnERC1155BatchReceived(arg0 common.Address, arg1 common.Address, arg2 []*big.Int, arg3 []*big.Int, arg4 []byte) (*types.Transaction, error) {
	return _TNT1155TokenBank.Contract.OnERC1155BatchReceived(&_TNT1155TokenBank.TransactOpts, arg0, arg1, arg2, arg3, arg4)
}

// OnERC1155BatchReceived is a paid mutator transaction binding the contract method 0xbc197c81.
//
// Solidity: function onERC1155BatchReceived(address , address , uint256[] , uint256[] , bytes ) returns(bytes4)
func (_TNT1155TokenBank *TNT1155TokenBankTransactorSession) OnERC1155BatchReceived(arg0 common.Address, arg1 common.Address, arg2 []*big.Int, arg3 []*big.Int, arg4 []byte) (*types.Transaction, error) {
	return _TNT1155TokenBank.Contract.OnERC1155BatchReceived(&_TNT1155TokenBank.TransactOpts, arg0, arg1, arg2, arg3, arg4)
}

// OnERC1155Received is a paid mutator transaction binding the contract method 0xf23a6e61.
//
// Solidity: function onERC1155Received(address , address , uint256 , uint256 , bytes ) returns(bytes4)
func (_TNT1155TokenBank *TNT1155TokenBankTransactor) OnERC1155Received(opts *bind.TransactOpts, arg0 common.Address, arg1 common.Address, arg2 *big.Int, arg3 *big.Int, arg4 []byte) (*types.Transaction, error) {
	return _TNT1155TokenBank.contract.Transact(opts, "onERC1155Received", arg0, arg1, arg2, arg3, arg4)
}

// OnERC1155Received is a paid mutator transaction binding the contract method 0xf23a6e61.
//
// Solidity: function onERC1155Received(address , address , uint256 , uint256 , bytes ) returns(bytes4)
func (_TNT1155TokenBank *TNT1155TokenBankSession) OnERC1155Received(arg0 common.Address, arg1 common.Address, arg2 *big.Int, arg3 *big.Int, arg4 []byte) (*types.Transaction, error) {
	return _TNT1155TokenBank.Contract.OnERC1155Received(&_TNT1155TokenBank.TransactOpts, arg0, arg1, arg2, arg3, arg4)
}

// OnERC1155Received is a paid mutator transaction binding the contract method 0xf23a6e61.
//
// Solidity: function onERC1155Received(address , address , uint256 , uint256 , bytes ) returns(bytes4)
func (_TNT1155TokenBank *TNT1155TokenBankTransactorSession) OnERC1155Received(arg0 common.Address, arg1 common.Address, arg2 *big.Int, arg3 *big.Int, arg4 []byte) (*types.Transaction, error) {
	return _TNT1155TokenBank.Contract.OnERC1155Received(&_TNT1155TokenBank.TransactOpts, arg0, arg1, arg2, arg3, arg4)
}

// UnlockTokens is a paid mutator transaction binding the contract method 0x032c6bf2.
//
// Solidity: function unlockTokens(uint256 sourceChainID, string denom, address targetChainTokenReceiver, uint256 tokenID, uint256 unlockAmount, uint256 dynasty, uint256 sourceChainVoucherBurnNonce) payable returns()
func (_TNT1155TokenBank *TNT1155TokenBankTransactor) UnlockTokens(opts *bind.TransactOpts, sourceChainID *big.Int, denom string, targetChainTokenReceiver common.Address, tokenID *big.Int, unlockAmount *big.Int, dynasty *big.Int, sourceChainVoucherBurnNonce *big.Int) (*types.Transaction, error) {
	return _TNT1155TokenBank.contract.Transact(opts, "unlockTokens", sourceChainID, denom, targetChainTokenReceiver, tokenID, unlockAmount, dynasty, sourceChainVoucherBurnNonce)
}

// UnlockTokens is a paid mutator transaction binding the contract method 0x032c6bf2.
//
// Solidity: function unlockTokens(uint256 sourceChainID, string denom, address targetChainTokenReceiver, uint256 tokenID, uint256 unlockAmount, uint256 dynasty, uint256 sourceChainVoucherBurnNonce) payable returns()
func (_TNT1155TokenBank *TNT1155TokenBankSession) UnlockTokens(sourceChainID *big.Int, denom string, targetChainTokenReceiver common.Address, tokenID *big.Int, unlockAmount *big.Int, dynasty *big.Int, sourceChainVoucherBurnNonce *big.Int) (*types.Transaction, error) {
	return _TNT1155TokenBank.Contract.UnlockTokens(&_TNT1155TokenBank.TransactOpts, sourceChainID, denom, targetChainTokenReceiver, tokenID, unlockAmount, dynasty, sourceChainVoucherBurnNonce)
}

// UnlockTokens is a paid mutator transaction binding the contract method 0x032c6bf2.
//
// Solidity: function unlockTokens(uint256 sourceChainID, string denom, address targetChainTokenReceiver, uint256 tokenID, uint256 unlockAmount, uint256 dynasty, uint256 sourceChainVoucherBurnNonce) payable returns()
func (_TNT1155TokenBank *TNT1155TokenBankTransactorSession) UnlockTokens(sourceChainID *big.Int, denom string, targetChainTokenReceiver common.Address, tokenID *big.Int, unlockAmount *big.Int, dynasty *big.Int, sourceChainVoucherBurnNonce *big.Int) (*types.Transaction, error) {
	return _TNT1155TokenBank.Contract.UnlockTokens(&_TNT1155TokenBank.TransactOpts, sourceChainID, denom, targetChainTokenReceiver, tokenID, unlockAmount, dynasty, sourceChainVoucherBurnNonce)
}

// TNT1155TokenBankFailedToMintTNT1155VouchersIterator is returned from FilterFailedToMintTNT1155Vouchers and is used to iterate over the raw logs and unpacked data for FailedToMintTNT1155Vouchers events raised by the TNT1155TokenBank contract.
type TNT1155TokenBankFailedToMintTNT1155VouchersIterator struct {
	Event *TNT1155TokenBankFailedToMintTNT1155Vouchers // 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 *TNT1155TokenBankFailedToMintTNT1155VouchersIterator) 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(TNT1155TokenBankFailedToMintTNT1155Vouchers)
			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(TNT1155TokenBankFailedToMintTNT1155Vouchers)
		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 *TNT1155TokenBankFailedToMintTNT1155VouchersIterator) Error() error {
	return it.fail
}

// Close terminates the iteration process, releasing any pending underlying
// resources.
func (it *TNT1155TokenBankFailedToMintTNT1155VouchersIterator) Close() error {
	it.sub.Unsubscribe()
	return nil
}

// TNT1155TokenBankFailedToMintTNT1155Vouchers represents a FailedToMintTNT1155Vouchers event raised by the TNT1155TokenBank contract.
type TNT1155TokenBankFailedToMintTNT1155Vouchers struct {
	VoucherContractAddress common.Address
	Receiver               common.Address
	TokenID                *big.Int
	Amount                 *big.Int
	Raw                    types.Log // Blockchain specific contextual infos
}

// FilterFailedToMintTNT1155Vouchers is a free log retrieval operation binding the contract event 0xb805c8a83d186e1abe92168eab0b8bd4516d5b03d455892c92cd868aa526d371.
//
// Solidity: event FailedToMintTNT1155Vouchers(address indexed voucherContractAddress, address indexed receiver, uint256 tokenID, uint256 amount)
func (_TNT1155TokenBank *TNT1155TokenBankFilterer) FilterFailedToMintTNT1155Vouchers(opts *bind.FilterOpts, voucherContractAddress []common.Address, receiver []common.Address) (*TNT1155TokenBankFailedToMintTNT1155VouchersIterator, error) {

	var voucherContractAddressRule []interface{}
	for _, voucherContractAddressItem := range voucherContractAddress {
		voucherContractAddressRule = append(voucherContractAddressRule, voucherContractAddressItem)
	}
	var receiverRule []interface{}
	for _, receiverItem := range receiver {
		receiverRule = append(receiverRule, receiverItem)
	}

	logs, sub, err := _TNT1155TokenBank.contract.FilterLogs(opts, "FailedToMintTNT1155Vouchers", voucherContractAddressRule, receiverRule)
	if err != nil {
		return nil, err
	}
	return &TNT1155TokenBankFailedToMintTNT1155VouchersIterator{contract: _TNT1155TokenBank.contract, event: "FailedToMintTNT1155Vouchers", logs: logs, sub: sub}, nil
}

// WatchFailedToMintTNT1155Vouchers is a free log subscription operation binding the contract event 0xb805c8a83d186e1abe92168eab0b8bd4516d5b03d455892c92cd868aa526d371.
//
// Solidity: event FailedToMintTNT1155Vouchers(address indexed voucherContractAddress, address indexed receiver, uint256 tokenID, uint256 amount)
func (_TNT1155TokenBank *TNT1155TokenBankFilterer) WatchFailedToMintTNT1155Vouchers(opts *bind.WatchOpts, sink chan<- *TNT1155TokenBankFailedToMintTNT1155Vouchers, voucherContractAddress []common.Address, receiver []common.Address) (event.Subscription, error) {

	var voucherContractAddressRule []interface{}
	for _, voucherContractAddressItem := range voucherContractAddress {
		voucherContractAddressRule = append(voucherContractAddressRule, voucherContractAddressItem)
	}
	var receiverRule []interface{}
	for _, receiverItem := range receiver {
		receiverRule = append(receiverRule, receiverItem)
	}

	logs, sub, err := _TNT1155TokenBank.contract.WatchLogs(opts, "FailedToMintTNT1155Vouchers", voucherContractAddressRule, receiverRule)
	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(TNT1155TokenBankFailedToMintTNT1155Vouchers)
				if err := _TNT1155TokenBank.contract.UnpackLog(event, "FailedToMintTNT1155Vouchers", 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
}

// ParseFailedToMintTNT1155Vouchers is a log parse operation binding the contract event 0xb805c8a83d186e1abe92168eab0b8bd4516d5b03d455892c92cd868aa526d371.
//
// Solidity: event FailedToMintTNT1155Vouchers(address indexed voucherContractAddress, address indexed receiver, uint256 tokenID, uint256 amount)
func (_TNT1155TokenBank *TNT1155TokenBankFilterer) ParseFailedToMintTNT1155Vouchers(log types.Log) (*TNT1155TokenBankFailedToMintTNT1155Vouchers, error) {
	event := new(TNT1155TokenBankFailedToMintTNT1155Vouchers)
	if err := _TNT1155TokenBank.contract.UnpackLog(event, "FailedToMintTNT1155Vouchers", log); err != nil {
		return nil, err
	}
	event.Raw = log
	return event, nil
}

// TNT1155TokenBankFailedToSendTFuelIterator is returned from FilterFailedToSendTFuel and is used to iterate over the raw logs and unpacked data for FailedToSendTFuel events raised by the TNT1155TokenBank contract.
type TNT1155TokenBankFailedToSendTFuelIterator struct {
	Event *TNT1155TokenBankFailedToSendTFuel // 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 *TNT1155TokenBankFailedToSendTFuelIterator) 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(TNT1155TokenBankFailedToSendTFuel)
			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(TNT1155TokenBankFailedToSendTFuel)
		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 *TNT1155TokenBankFailedToSendTFuelIterator) Error() error {
	return it.fail
}

// Close terminates the iteration process, releasing any pending underlying
// resources.
func (it *TNT1155TokenBankFailedToSendTFuelIterator) Close() error {
	it.sub.Unsubscribe()
	return nil
}

// TNT1155TokenBankFailedToSendTFuel represents a FailedToSendTFuel event raised by the TNT1155TokenBank contract.
type TNT1155TokenBankFailedToSendTFuel struct {
	Receiver common.Address
	Amount   *big.Int
	Raw      types.Log // Blockchain specific contextual infos
}

// FilterFailedToSendTFuel is a free log retrieval operation binding the contract event 0x562a1007af95860758404d928a251ad8b0062ac50058db9f82dab3fe379f4885.
//
// Solidity: event FailedToSendTFuel(address indexed receiver, uint256 amount)
func (_TNT1155TokenBank *TNT1155TokenBankFilterer) FilterFailedToSendTFuel(opts *bind.FilterOpts, receiver []common.Address) (*TNT1155TokenBankFailedToSendTFuelIterator, error) {

	var receiverRule []interface{}
	for _, receiverItem := range receiver {
		receiverRule = append(receiverRule, receiverItem)
	}

	logs, sub, err := _TNT1155TokenBank.contract.FilterLogs(opts, "FailedToSendTFuel", receiverRule)
	if err != nil {
		return nil, err
	}
	return &TNT1155TokenBankFailedToSendTFuelIterator{contract: _TNT1155TokenBank.contract, event: "FailedToSendTFuel", logs: logs, sub: sub}, nil
}

// WatchFailedToSendTFuel is a free log subscription operation binding the contract event 0x562a1007af95860758404d928a251ad8b0062ac50058db9f82dab3fe379f4885.
//
// Solidity: event FailedToSendTFuel(address indexed receiver, uint256 amount)
func (_TNT1155TokenBank *TNT1155TokenBankFilterer) WatchFailedToSendTFuel(opts *bind.WatchOpts, sink chan<- *TNT1155TokenBankFailedToSendTFuel, receiver []common.Address) (event.Subscription, error) {

	var receiverRule []interface{}
	for _, receiverItem := range receiver {
		receiverRule = append(receiverRule, receiverItem)
	}

	logs, sub, err := _TNT1155TokenBank.contract.WatchLogs(opts, "FailedToSendTFuel", receiverRule)
	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(TNT1155TokenBankFailedToSendTFuel)
				if err := _TNT1155TokenBank.contract.UnpackLog(event, "FailedToSendTFuel", 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
}

// ParseFailedToSendTFuel is a log parse operation binding the contract event 0x562a1007af95860758404d928a251ad8b0062ac50058db9f82dab3fe379f4885.
//
// Solidity: event FailedToSendTFuel(address indexed receiver, uint256 amount)
func (_TNT1155TokenBank *TNT1155TokenBankFilterer) ParseFailedToSendTFuel(log types.Log) (*TNT1155TokenBankFailedToSendTFuel, error) {
	event := new(TNT1155TokenBankFailedToSendTFuel)
	if err := _TNT1155TokenBank.contract.UnpackLog(event, "FailedToSendTFuel", log); err != nil {
		return nil, err
	}
	event.Raw = log
	return event, nil
}

// TNT1155TokenBankFailedToUnlockTNT1155TokensIterator is returned from FilterFailedToUnlockTNT1155Tokens and is used to iterate over the raw logs and unpacked data for FailedToUnlockTNT1155Tokens events raised by the TNT1155TokenBank contract.
type TNT1155TokenBankFailedToUnlockTNT1155TokensIterator struct {
	Event *TNT1155TokenBankFailedToUnlockTNT1155Tokens // 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 *TNT1155TokenBankFailedToUnlockTNT1155TokensIterator) 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(TNT1155TokenBankFailedToUnlockTNT1155Tokens)
			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(TNT1155TokenBankFailedToUnlockTNT1155Tokens)
		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 *TNT1155TokenBankFailedToUnlockTNT1155TokensIterator) Error() error {
	return it.fail
}

// Close terminates the iteration process, releasing any pending underlying
// resources.
func (it *TNT1155TokenBankFailedToUnlockTNT1155TokensIterator) Close() error {
	it.sub.Unsubscribe()
	return nil
}

// TNT1155TokenBankFailedToUnlockTNT1155Tokens represents a FailedToUnlockTNT1155Tokens event raised by the TNT1155TokenBank contract.
type TNT1155TokenBankFailedToUnlockTNT1155Tokens struct {
	TokenContractAddress common.Address
	Receiver             common.Address
	TokenID              *big.Int
	Amount               *big.Int
	Raw                  types.Log // Blockchain specific contextual infos
}

// FilterFailedToUnlockTNT1155Tokens is a free log retrieval operation binding the contract event 0x3f3092a0f441439dbe7753f75c0dca5ffc28476ac33ab74330f0aa82e73dfdc8.
//
// Solidity: event FailedToUnlockTNT1155Tokens(address indexed tokenContractAddress, address indexed receiver, uint256 tokenID, uint256 amount)
func (_TNT1155TokenBank *TNT1155TokenBankFilterer) FilterFailedToUnlockTNT1155Tokens(opts *bind.FilterOpts, tokenContractAddress []common.Address, receiver []common.Address) (*TNT1155TokenBankFailedToUnlockTNT1155TokensIterator, error) {

	var tokenContractAddressRule []interface{}
	for _, tokenContractAddressItem := range tokenContractAddress {
		tokenContractAddressRule = append(tokenContractAddressRule, tokenContractAddressItem)
	}
	var receiverRule []interface{}
	for _, receiverItem := range receiver {
		receiverRule = append(receiverRule, receiverItem)
	}

	logs, sub, err := _TNT1155TokenBank.contract.FilterLogs(opts, "FailedToUnlockTNT1155Tokens", tokenContractAddressRule, receiverRule)
	if err != nil {
		return nil, err
	}
	return &TNT1155TokenBankFailedToUnlockTNT1155TokensIterator{contract: _TNT1155TokenBank.contract, event: "FailedToUnlockTNT1155Tokens", logs: logs, sub: sub}, nil
}

// WatchFailedToUnlockTNT1155Tokens is a free log subscription operation binding the contract event 0x3f3092a0f441439dbe7753f75c0dca5ffc28476ac33ab74330f0aa82e73dfdc8.
//
// Solidity: event FailedToUnlockTNT1155Tokens(address indexed tokenContractAddress, address indexed receiver, uint256 tokenID, uint256 amount)
func (_TNT1155TokenBank *TNT1155TokenBankFilterer) WatchFailedToUnlockTNT1155Tokens(opts *bind.WatchOpts, sink chan<- *TNT1155TokenBankFailedToUnlockTNT1155Tokens, tokenContractAddress []common.Address, receiver []common.Address) (event.Subscription, error) {

	var tokenContractAddressRule []interface{}
	for _, tokenContractAddressItem := range tokenContractAddress {
		tokenContractAddressRule = append(tokenContractAddressRule, tokenContractAddressItem)
	}
	var receiverRule []interface{}
	for _, receiverItem := range receiver {
		receiverRule = append(receiverRule, receiverItem)
	}

	logs, sub, err := _TNT1155TokenBank.contract.WatchLogs(opts, "FailedToUnlockTNT1155Tokens", tokenContractAddressRule, receiverRule)
	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(TNT1155TokenBankFailedToUnlockTNT1155Tokens)
				if err := _TNT1155TokenBank.contract.UnpackLog(event, "FailedToUnlockTNT1155Tokens", 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
}

// ParseFailedToUnlockTNT1155Tokens is a log parse operation binding the contract event 0x3f3092a0f441439dbe7753f75c0dca5ffc28476ac33ab74330f0aa82e73dfdc8.
//
// Solidity: event FailedToUnlockTNT1155Tokens(address indexed tokenContractAddress, address indexed receiver, uint256 tokenID, uint256 amount)
func (_TNT1155TokenBank *TNT1155TokenBankFilterer) ParseFailedToUnlockTNT1155Tokens(log types.Log) (*TNT1155TokenBankFailedToUnlockTNT1155Tokens, error) {
	event := new(TNT1155TokenBankFailedToUnlockTNT1155Tokens)
	if err := _TNT1155TokenBank.contract.UnpackLog(event, "FailedToUnlockTNT1155Tokens", log); err != nil {
		return nil, err
	}
	event.Raw = log
	return event, nil
}

// TNT1155TokenBankTNT1155TokenLockedIterator is returned from FilterTNT1155TokenLocked and is used to iterate over the raw logs and unpacked data for TNT1155TokenLocked events raised by the TNT1155TokenBank contract.
type TNT1155TokenBankTNT1155TokenLockedIterator struct {
	Event *TNT1155TokenBankTNT1155TokenLocked // 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 *TNT1155TokenBankTNT1155TokenLockedIterator) 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(TNT1155TokenBankTNT1155TokenLocked)
			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(TNT1155TokenBankTNT1155TokenLocked)
		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 *TNT1155TokenBankTNT1155TokenLockedIterator) Error() error {
	return it.fail
}

// Close terminates the iteration process, releasing any pending underlying
// resources.
func (it *TNT1155TokenBankTNT1155TokenLockedIterator) Close() error {
	it.sub.Unsubscribe()
	return nil
}

// TNT1155TokenBankTNT1155TokenLocked represents a TNT1155TokenLocked event raised by the TNT1155TokenBank contract.
type TNT1155TokenBankTNT1155TokenLocked struct {
	Denom                      string
	SourceChainTokenSender     common.Address
	TargetChainID              *big.Int
	TargetChainVoucherReceiver common.Address
	TokenID                    *big.Int
	LockedAmount               *big.Int
	TokenURI                   string
	TokenLockNonce             *big.Int
	Raw                        types.Log // Blockchain specific contextual infos
}

// FilterTNT1155TokenLocked is a free log retrieval operation binding the contract event 0x5ac6d27fa2bb13775fcf7bd9cc03a3f02063b2a2e484aaedc1b1c9d916874f36.
//
// Solidity: event TNT1155TokenLocked(string denom, address sourceChainTokenSender, uint256 targetChainID, address targetChainVoucherReceiver, uint256 tokenID, uint256 lockedAmount, string tokenURI, uint256 tokenLockNonce)
func (_TNT1155TokenBank *TNT1155TokenBankFilterer) FilterTNT1155TokenLocked(opts *bind.FilterOpts) (*TNT1155TokenBankTNT1155TokenLockedIterator, error) {

	logs, sub, err := _TNT1155TokenBank.contract.FilterLogs(opts, "TNT1155TokenLocked")
	if err != nil {
		return nil, err
	}
	return &TNT1155TokenBankTNT1155TokenLockedIterator{contract: _TNT1155TokenBank.contract, event: "TNT1155TokenLocked", logs: logs, sub: sub}, nil
}

// WatchTNT1155TokenLocked is a free log subscription operation binding the contract event 0x5ac6d27fa2bb13775fcf7bd9cc03a3f02063b2a2e484aaedc1b1c9d916874f36.
//
// Solidity: event TNT1155TokenLocked(string denom, address sourceChainTokenSender, uint256 targetChainID, address targetChainVoucherReceiver, uint256 tokenID, uint256 lockedAmount, string tokenURI, uint256 tokenLockNonce)
func (_TNT1155TokenBank *TNT1155TokenBankFilterer) WatchTNT1155TokenLocked(opts *bind.WatchOpts, sink chan<- *TNT1155TokenBankTNT1155TokenLocked) (event.Subscription, error) {

	logs, sub, err := _TNT1155TokenBank.contract.WatchLogs(opts, "TNT1155TokenLocked")
	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(TNT1155TokenBankTNT1155TokenLocked)
				if err := _TNT1155TokenBank.contract.UnpackLog(event, "TNT1155TokenLocked", 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
}

// ParseTNT1155TokenLocked is a log parse operation binding the contract event 0x5ac6d27fa2bb13775fcf7bd9cc03a3f02063b2a2e484aaedc1b1c9d916874f36.
//
// Solidity: event TNT1155TokenLocked(string denom, address sourceChainTokenSender, uint256 targetChainID, address targetChainVoucherReceiver, uint256 tokenID, uint256 lockedAmount, string tokenURI, uint256 tokenLockNonce)
func (_TNT1155TokenBank *TNT1155TokenBankFilterer) ParseTNT1155TokenLocked(log types.Log) (*TNT1155TokenBankTNT1155TokenLocked, error) {
	event := new(TNT1155TokenBankTNT1155TokenLocked)
	if err := _TNT1155TokenBank.contract.UnpackLog(event, "TNT1155TokenLocked", log); err != nil {
		return nil, err
	}
	event.Raw = log
	return event, nil
}

// TNT1155TokenBankTNT1155TokenUnlockedIterator is returned from FilterTNT1155TokenUnlocked and is used to iterate over the raw logs and unpacked data for TNT1155TokenUnlocked events raised by the TNT1155TokenBank contract.
type TNT1155TokenBankTNT1155TokenUnlockedIterator struct {
	Event *TNT1155TokenBankTNT1155TokenUnlocked // 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 *TNT1155TokenBankTNT1155TokenUnlockedIterator) 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(TNT1155TokenBankTNT1155TokenUnlocked)
			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(TNT1155TokenBankTNT1155TokenUnlocked)
		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 *TNT1155TokenBankTNT1155TokenUnlockedIterator) Error() error {
	return it.fail
}

// Close terminates the iteration process, releasing any pending underlying
// resources.
func (it *TNT1155TokenBankTNT1155TokenUnlockedIterator) Close() error {
	it.sub.Unsubscribe()
	return nil
}

// TNT1155TokenBankTNT1155TokenUnlocked represents a TNT1155TokenUnlocked event raised by the TNT1155TokenBank contract.
type TNT1155TokenBankTNT1155TokenUnlocked struct {
	Denom                       string
	TargetChainTokenReceiver    common.Address
	TokenID                     *big.Int
	UnlockedAmount              *big.Int
	SourceChainVoucherBurnNonce *big.Int
	TokenUnlockNonce            *big.Int
	Raw                         types.Log // Blockchain specific contextual infos
}

// FilterTNT1155TokenUnlocked is a free log retrieval operation binding the contract event 0x4a5b7552bbe9e70a8548f7bbc10edd823963920f052f3859337a36c45bf8bb1a.
//
// Solidity: event TNT1155TokenUnlocked(string denom, address targetChainTokenReceiver, uint256 tokenID, uint256 unlockedAmount, uint256 sourceChainVoucherBurnNonce, uint256 tokenUnlockNonce)
func (_TNT1155TokenBank *TNT1155TokenBankFilterer) FilterTNT1155TokenUnlocked(opts *bind.FilterOpts) (*TNT1155TokenBankTNT1155TokenUnlockedIterator, error) {

	logs, sub, err := _TNT1155TokenBank.contract.FilterLogs(opts, "TNT1155TokenUnlocked")
	if err != nil {
		return nil, err
	}
	return &TNT1155TokenBankTNT1155TokenUnlockedIterator{contract: _TNT1155TokenBank.contract, event: "TNT1155TokenUnlocked", logs: logs, sub: sub}, nil
}

// WatchTNT1155TokenUnlocked is a free log subscription operation binding the contract event 0x4a5b7552bbe9e70a8548f7bbc10edd823963920f052f3859337a36c45bf8bb1a.
//
// Solidity: event TNT1155TokenUnlocked(string denom, address targetChainTokenReceiver, uint256 tokenID, uint256 unlockedAmount, uint256 sourceChainVoucherBurnNonce, uint256 tokenUnlockNonce)
func (_TNT1155TokenBank *TNT1155TokenBankFilterer) WatchTNT1155TokenUnlocked(opts *bind.WatchOpts, sink chan<- *TNT1155TokenBankTNT1155TokenUnlocked) (event.Subscription, error) {

	logs, sub, err := _TNT1155TokenBank.contract.WatchLogs(opts, "TNT1155TokenUnlocked")
	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(TNT1155TokenBankTNT1155TokenUnlocked)
				if err := _TNT1155TokenBank.contract.UnpackLog(event, "TNT1155TokenUnlocked", 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
}

// ParseTNT1155TokenUnlocked is a log parse operation binding the contract event 0x4a5b7552bbe9e70a8548f7bbc10edd823963920f052f3859337a36c45bf8bb1a.
//
// Solidity: event TNT1155TokenUnlocked(string denom, address targetChainTokenReceiver, uint256 tokenID, uint256 unlockedAmount, uint256 sourceChainVoucherBurnNonce, uint256 tokenUnlockNonce)
func (_TNT1155TokenBank *TNT1155TokenBankFilterer) ParseTNT1155TokenUnlocked(log types.Log) (*TNT1155TokenBankTNT1155TokenUnlocked, error) {
	event := new(TNT1155TokenBankTNT1155TokenUnlocked)
	if err := _TNT1155TokenBank.contract.UnpackLog(event, "TNT1155TokenUnlocked", log); err != nil {
		return nil, err
	}
	event.Raw = log
	return event, nil
}

// TNT1155TokenBankTNT1155VoucherBurnedIterator is returned from FilterTNT1155VoucherBurned and is used to iterate over the raw logs and unpacked data for TNT1155VoucherBurned events raised by the TNT1155TokenBank contract.
type TNT1155TokenBankTNT1155VoucherBurnedIterator struct {
	Event *TNT1155TokenBankTNT1155VoucherBurned // 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 *TNT1155TokenBankTNT1155VoucherBurnedIterator) 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(TNT1155TokenBankTNT1155VoucherBurned)
			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(TNT1155TokenBankTNT1155VoucherBurned)
		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 *TNT1155TokenBankTNT1155VoucherBurnedIterator) Error() error {
	return it.fail
}

// Close terminates the iteration process, releasing any pending underlying
// resources.
func (it *TNT1155TokenBankTNT1155VoucherBurnedIterator) Close() error {
	it.sub.Unsubscribe()
	return nil
}

// TNT1155TokenBankTNT1155VoucherBurned represents a TNT1155VoucherBurned event raised by the TNT1155TokenBank contract.
type TNT1155TokenBankTNT1155VoucherBurned struct {
	Denom                    string
	SourceChainVoucherOwner  common.Address
	TargetChainTokenReceiver common.Address
	TokenID                  *big.Int
	BurnedAmount             *big.Int
	VoucherBurnNonce         *big.Int
	Raw                      types.Log // Blockchain specific contextual infos
}

// FilterTNT1155VoucherBurned is a free log retrieval operation binding the contract event 0x656ace729da14534acb1e9ea4ca34cf21501689c9ea0a8eff3aebca48f94f68e.
//
// Solidity: event TNT1155VoucherBurned(string denom, address sourceChainVoucherOwner, address targetChainTokenReceiver, uint256 tokenID, uint256 burnedAmount, uint256 voucherBurnNonce)
func (_TNT1155TokenBank *TNT1155TokenBankFilterer) FilterTNT1155VoucherBurned(opts *bind.FilterOpts) (*TNT1155TokenBankTNT1155VoucherBurnedIterator, error) {

	logs, sub, err := _TNT1155TokenBank.contract.FilterLogs(opts, "TNT1155VoucherBurned")
	if err != nil {
		return nil, err
	}
	return &TNT1155TokenBankTNT1155VoucherBurnedIterator{contract: _TNT1155TokenBank.contract, event: "TNT1155VoucherBurned", logs: logs, sub: sub}, nil
}

// WatchTNT1155VoucherBurned is a free log subscription operation binding the contract event 0x656ace729da14534acb1e9ea4ca34cf21501689c9ea0a8eff3aebca48f94f68e.
//
// Solidity: event TNT1155VoucherBurned(string denom, address sourceChainVoucherOwner, address targetChainTokenReceiver, uint256 tokenID, uint256 burnedAmount, uint256 voucherBurnNonce)
func (_TNT1155TokenBank *TNT1155TokenBankFilterer) WatchTNT1155VoucherBurned(opts *bind.WatchOpts, sink chan<- *TNT1155TokenBankTNT1155VoucherBurned) (event.Subscription, error) {

	logs, sub, err := _TNT1155TokenBank.contract.WatchLogs(opts, "TNT1155VoucherBurned")
	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(TNT1155TokenBankTNT1155VoucherBurned)
				if err := _TNT1155TokenBank.contract.UnpackLog(event, "TNT1155VoucherBurned", 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
}

// ParseTNT1155VoucherBurned is a log parse operation binding the contract event 0x656ace729da14534acb1e9ea4ca34cf21501689c9ea0a8eff3aebca48f94f68e.
//
// Solidity: event TNT1155VoucherBurned(string denom, address sourceChainVoucherOwner, address targetChainTokenReceiver, uint256 tokenID, uint256 burnedAmount, uint256 voucherBurnNonce)
func (_TNT1155TokenBank *TNT1155TokenBankFilterer) ParseTNT1155VoucherBurned(log types.Log) (*TNT1155TokenBankTNT1155VoucherBurned, error) {
	event := new(TNT1155TokenBankTNT1155VoucherBurned)
	if err := _TNT1155TokenBank.contract.UnpackLog(event, "TNT1155VoucherBurned", log); err != nil {
		return nil, err
	}
	event.Raw = log
	return event, nil
}

// TNT1155TokenBankTNT1155VoucherMintedIterator is returned from FilterTNT1155VoucherMinted and is used to iterate over the raw logs and unpacked data for TNT1155VoucherMinted events raised by the TNT1155TokenBank contract.
type TNT1155TokenBankTNT1155VoucherMintedIterator struct {
	Event *TNT1155TokenBankTNT1155VoucherMinted // 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 *TNT1155TokenBankTNT1155VoucherMintedIterator) 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(TNT1155TokenBankTNT1155VoucherMinted)
			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(TNT1155TokenBankTNT1155VoucherMinted)
		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 *TNT1155TokenBankTNT1155VoucherMintedIterator) Error() error {
	return it.fail
}

// Close terminates the iteration process, releasing any pending underlying
// resources.
func (it *TNT1155TokenBankTNT1155VoucherMintedIterator) Close() error {
	it.sub.Unsubscribe()
	return nil
}

// TNT1155TokenBankTNT1155VoucherMinted represents a TNT1155VoucherMinted event raised by the TNT1155TokenBank contract.
type TNT1155TokenBankTNT1155VoucherMinted struct {
	Denom                      string
	TargetChainVoucherReceiver common.Address
	VoucherContract            common.Address
	TokenID                    *big.Int
	MintedAmount               *big.Int
	SourceChainTokenLockNonce  *big.Int
	VoucherMintNonce           *big.Int
	Raw                        types.Log // Blockchain specific contextual infos
}

// FilterTNT1155VoucherMinted is a free log retrieval operation binding the contract event 0x4fbcffbdf5224654091654ad81a05e276525f0975fd62790b7876d1f7da75a53.
//
// Solidity: event TNT1155VoucherMinted(string denom, address targetChainVoucherReceiver, address voucherContract, uint256 tokenID, uint256 mintedAmount, uint256 sourceChainTokenLockNonce, uint256 voucherMintNonce)
func (_TNT1155TokenBank *TNT1155TokenBankFilterer) FilterTNT1155VoucherMinted(opts *bind.FilterOpts) (*TNT1155TokenBankTNT1155VoucherMintedIterator, error) {

	logs, sub, err := _TNT1155TokenBank.contract.FilterLogs(opts, "TNT1155VoucherMinted")
	if err != nil {
		return nil, err
	}
	return &TNT1155TokenBankTNT1155VoucherMintedIterator{contract: _TNT1155TokenBank.contract, event: "TNT1155VoucherMinted", logs: logs, sub: sub}, nil
}

// WatchTNT1155VoucherMinted is a free log subscription operation binding the contract event 0x4fbcffbdf5224654091654ad81a05e276525f0975fd62790b7876d1f7da75a53.
//
// Solidity: event TNT1155VoucherMinted(string denom, address targetChainVoucherReceiver, address voucherContract, uint256 tokenID, uint256 mintedAmount, uint256 sourceChainTokenLockNonce, uint256 voucherMintNonce)
func (_TNT1155TokenBank *TNT1155TokenBankFilterer) WatchTNT1155VoucherMinted(opts *bind.WatchOpts, sink chan<- *TNT1155TokenBankTNT1155VoucherMinted) (event.Subscription, error) {

	logs, sub, err := _TNT1155TokenBank.contract.WatchLogs(opts, "TNT1155VoucherMinted")
	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(TNT1155TokenBankTNT1155VoucherMinted)
				if err := _TNT1155TokenBank.contract.UnpackLog(event, "TNT1155VoucherMinted", 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
}

// ParseTNT1155VoucherMinted is a log parse operation binding the contract event 0x4fbcffbdf5224654091654ad81a05e276525f0975fd62790b7876d1f7da75a53.
//
// Solidity: event TNT1155VoucherMinted(string denom, address targetChainVoucherReceiver, address voucherContract, uint256 tokenID, uint256 mintedAmount, uint256 sourceChainTokenLockNonce, uint256 voucherMintNonce)
func (_TNT1155TokenBank *TNT1155TokenBankFilterer) ParseTNT1155VoucherMinted(log types.Log) (*TNT1155TokenBankTNT1155VoucherMinted, error) {
	event := new(TNT1155TokenBankTNT1155VoucherMinted)
	if err := _TNT1155TokenBank.contract.UnpackLog(event, "TNT1155VoucherMinted", log); err != nil {
		return nil, err
	}
	event.Raw = log
	return event, nil
}
