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

package contract

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

	ethereum "github.com/juncachain/juncachain"
	"github.com/juncachain/juncachain/accounts/abi"
	"github.com/juncachain/juncachain/accounts/abi/bind"
	"github.com/juncachain/juncachain/common"
	"github.com/juncachain/juncachain/core/types"
	"github.com/juncachain/juncachain/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
)

// JRC21PresetMinterMetaData contains all meta data concerning the JRC21PresetMinter contract.
var JRC21PresetMinterMetaData = &bind.MetaData{
	ABI: "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals_\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"issuer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minFee\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINTER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PAUSER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"estimateFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getChainId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"issuer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"setMinFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]",
	Bin: "0x6101606040527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9610140523480156200003757600080fd5b5060405162002779380380620027798339810160408190526200005a91620004bd565b6040805180820190915260018152603160f81b602082015285908190818786866200008d600033620001fb565b620001fb565b600380546001600160a01b0319166001600160a01b0393909316929092179091556002558151620000c690600790602085019062000360565b508051620000dc90600890602084019062000360565b5050825160208085019190912083518483012060e08290526101008190524660a0818152604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81880181905281830187905260608201869052608082019490945230818401528151808203909301835260c0019052805194019390932091935091906080523060601b60c052610120525050600a805461ffff191661010060ff8916021790555062000198915060009050620000873390565b620001c47f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633620001fb565b620001f07f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33620001fb565b5050505050620005c0565b6200020782826200020b565b5050565b6200022282826200024e60201b62000d031760201c565b60008281526001602090815260409091206200024991839062000d87620002ee821b17901c565b505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1662000207576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620002aa3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600062000305836001600160a01b0384166200030e565b90505b92915050565b6000818152600183016020526040812054620003575750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000308565b50600062000308565b8280546200036e906200056d565b90600052602060002090601f016020900481019282620003925760008555620003dd565b82601f10620003ad57805160ff1916838001178555620003dd565b82800160010185558215620003dd579182015b82811115620003dd578251825591602001919060010190620003c0565b50620003eb929150620003ef565b5090565b5b80821115620003eb5760008155600101620003f0565b600082601f8301126200041857600080fd5b81516001600160401b0380821115620004355762000435620005aa565b604051601f8301601f19908116603f01168101908282118183101715620004605762000460620005aa565b816040528381526020925086838588010111156200047d57600080fd5b600091505b83821015620004a1578582018301518183018401529082019062000482565b83821115620004b35760008385830101525b9695505050505050565b600080600080600060a08688031215620004d657600080fd5b85516001600160401b0380821115620004ee57600080fd5b620004fc89838a0162000406565b965060208801519150808211156200051357600080fd5b50620005228882890162000406565b945050604086015160ff811681146200053a57600080fd5b60608701519093506001600160a01b03811681146200055857600080fd5b80925050608086015190509295509295909350565b600181811c908216806200058257607f821691505b60208210811415620005a457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b60805160a05160c05160601c60e05161010051610120516101405161215b6200061e6000396000610bcd015260006111e801526000611237015260006112120152600061116b01526000611195015260006111bf015261215b6000f3fe608060405234801561001057600080fd5b50600436106102115760003560e01c806342966c6811610125578063a217fddf116100ad578063d505accf1161007c578063d505accf14610462578063d539139314610475578063d547741f1461049c578063dd62ed3e146104af578063e63ab1e9146104e857600080fd5b8063a217fddf14610421578063a457c2d714610429578063a9059cbb1461043c578063ca15c8731461044f57600080fd5b80637ecebe00116100f45780637ecebe00146103d85780638456cb59146103eb5780639010d07c146103f357806391d148541461040657806395d89b411461041957600080fd5b806342966c681461037e5780635c975abb1461039157806370a082311461039c57806379cc6790146103c557600080fd5b80632f2ff15d116101a85780633644e515116101775780633644e5151461033557806336568abe1461033d57806339509351146103505780633f4ba83a1461036357806340c10f191461036b57600080fd5b80632f2ff15d146102ea578063313ce567146102ff57806331ac99201461031c5780633408e4701461032f57600080fd5b806318160ddd116101e457806318160ddd146102875780631d1438481461028f57806323b872dd146102b4578063248a9ca3146102c757600080fd5b806301ffc9a71461021657806306fdde031461023e578063095ea7b314610253578063127e8e4d14610266575b600080fd5b610229610224366004611f1f565b61050f565b60405190151581526020015b60405180910390f35b610246610520565b6040516102359190611fbe565b610229610261366004611e97565b6105b2565b610279610274366004611ec1565b6105c8565b604051908152602001610235565b600654610279565b6003546001600160a01b03165b6040516001600160a01b039091168152602001610235565b6102296102c2366004611de8565b6105e2565b6102796102d5366004611ec1565b60009081526020819052604090206001015490565b6102fd6102f8366004611eda565b610691565b005b600a54610100900460ff1660405160ff9091168152602001610235565b6102fd61032a366004611ec1565b6106bc565b46610279565b610279610723565b6102fd61034b366004611eda565b610732565b61022961035e366004611e97565b6107b0565b6102fd6107ec565b6102fd610379366004611e97565b610888565b6102fd61038c366004611ec1565b610921565b600a5460ff16610229565b6102796103aa366004611d9a565b6001600160a01b031660009081526004602052604090205490565b6102fd6103d3366004611e97565b61092e565b6102796103e6366004611d9a565b6109af565b6102fd6109cd565b61029c610401366004611efd565b610a65565b610229610414366004611eda565b610a84565b610246610aad565b610279600081565b610229610437366004611e97565b610abc565b61022961044a366004611e97565b610b55565b61027961045d366004611ec1565b610b62565b6102fd610470366004611e24565b610b79565b6102797f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102fd6104aa366004611eda565b610cdd565b6102796104bd366004611db5565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b6102797f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b600061051a82610d9c565b92915050565b60606007805461052f90612082565b80601f016020809104026020016040519081016040528092919081815260200182805461055b90612082565b80156105a85780601f1061057d576101008083540402835291602001916105a8565b820191906000526020600020905b81548152906001019060200180831161058b57829003601f168201915b5050505050905090565b60006105bf338484610dc1565b50600192915050565b60025460009061051a906105dc8484610ee5565b90610ef1565b60006105ef848484610efd565b6001600160a01b0384166000908152600560209081526040808320338452909152902054828110156106795760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6106868533858403610dc1565b506001949350505050565b6000828152602081905260409020600101546106ad81336110d8565b6106b7838361113c565b505050565b6106c7600033610a84565b61071e5760405162461bcd60e51b815260206004820152602260248201527f4a524332313a206d75737420686176652061646d696e20726f6c6520746f2073604482015261195d60f21b6064820152608401610670565b600255565b600061072d61115e565b905090565b6001600160a01b03811633146107a25760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610670565b6107ac8282611285565b5050565b3360008181526005602090815260408083206001600160a01b038716845290915281205490916105bf9185906107e7908690611ff1565b610dc1565b6108167f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610a84565b61087e5760405162461bcd60e51b815260206004820152603360248201527f4a524332315072657365744d696e7465723a206d75737420686176652070617560448201527273657220726f6c6520746f20756e706175736560681b6064820152608401610670565b6108866112a7565b565b6108b27f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610a84565b6109175760405162461bcd60e51b815260206004820152603060248201527f4a524332315072657365744d696e7465723a206d7573742068617665206d696e60448201526f1d195c881c9bdb19481d1bc81b5a5b9d60821b6064820152608401610670565b6107ac828261133a565b61092b3382611425565b50565b600061093a83336104bd565b9050818110156109985760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b6064820152608401610670565b6109a58333848403610dc1565b6106b78383611425565b6001600160a01b03811660009081526009602052604081205461051a565b6109f77f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610a84565b610a5d5760405162461bcd60e51b815260206004820152603160248201527f4a524332315072657365744d696e7465723a206d75737420686176652070617560448201527073657220726f6c6520746f20706175736560781b6064820152608401610670565b61088661157f565b6000828152600160205260408120610a7d90836115fa565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60606008805461052f90612082565b3360009081526005602090815260408083206001600160a01b038616845290915281205482811015610b3e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610670565b610b4b3385858403610dc1565b5060019392505050565b60006105bf338484610efd565b600081815260016020526040812061051a90611606565b83421115610bc95760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610670565b60007f0000000000000000000000000000000000000000000000000000000000000000888888610bf88c611610565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610c5382611638565b90506000610c6382878787611686565b9050896001600160a01b0316816001600160a01b031614610cc65760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610670565b610cd18a8a8a610dc1565b50505050505050505050565b600082815260208190526040902060010154610cf981336110d8565b6106b78383611285565b610d0d8282610a84565b6107ac576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055610d433390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610a7d836001600160a01b0384166116ae565b60006001600160e01b03198216635a05180f60e01b148061051a575061051a826116fd565b6001600160a01b038316610e235760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610670565b6001600160a01b038216610e845760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610670565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610a7d8284612009565b6000610a7d8284611ff1565b6001600160a01b038316610f615760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610670565b6001600160a01b038216610fc35760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610670565b610fce838383611732565b6001600160a01b038316600090815260046020526040902054818110156110465760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610670565b6001600160a01b0380851660009081526004602052604080822085850390559185168152908120805484929061107d908490611ff1565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516110c991815260200190565b60405180910390a35b50505050565b6110e28282610a84565b6107ac576110fa816001600160a01b0316601461173d565b61110583602061173d565b604051602001611116929190611f49565b60408051601f198184030181529082905262461bcd60e51b825261067091600401611fbe565b6111468282610d03565b60008281526001602052604090206106b79082610d87565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156111b757507f000000000000000000000000000000000000000000000000000000000000000046145b156111e157507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b61128f82826118d9565b60008281526001602052604090206106b7908261193e565b600a5460ff166112f05760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610670565b600a805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b0382166113905760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610670565b61139c60008383611732565b80600660008282546113ae9190611ff1565b90915550506001600160a01b038216600090815260046020526040812080548392906113db908490611ff1565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b0382166114855760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610670565b61149182600083611732565b6001600160a01b038216600090815260046020526040902054818110156115055760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610670565b6001600160a01b0383166000908152600460205260408120838303905560068054849290611534908490612028565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b600a5460ff16156115c55760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610670565b600a805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861131d3390565b6000610a7d8383611953565b600061051a825490565b6001600160a01b03811660009081526009602052604090208054600181018255905b50919050565b600061051a61164561115e565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b60008060006116978787878761197d565b915091506116a481611a6a565b5095945050505050565b60008181526001830160205260408120546116f55750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561051a565b50600061051a565b60006001600160e01b03198216637965db0b60e01b148061051a57506301ffc9a760e01b6001600160e01b031983161461051a565b6106b7838383611c25565b6060600061174c836002612009565b611757906002611ff1565b67ffffffffffffffff81111561176f5761176f61210f565b6040519080825280601f01601f191660200182016040528015611799576020820181803683370190505b509050600360fc1b816000815181106117b4576117b46120f9565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106117e3576117e36120f9565b60200101906001600160f81b031916908160001a9053506000611807846002612009565b611812906001611ff1565b90505b600181111561188a576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611846576118466120f9565b1a60f81b82828151811061185c5761185c6120f9565b60200101906001600160f81b031916908160001a90535060049490941c936118838161206b565b9050611815565b508315610a7d5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610670565b6118e38282610a84565b156107ac576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610a7d836001600160a01b038416611c8b565b600082600001828154811061196a5761196a6120f9565b9060005260206000200154905092915050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156119b45750600090506003611a61565b8460ff16601b141580156119cc57508460ff16601c14155b156119dd5750600090506004611a61565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611a31573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611a5a57600060019250925050611a61565b9150600090505b94509492505050565b6000816004811115611a7e57611a7e6120cd565b1415611a875750565b6001816004811115611a9b57611a9b6120cd565b1415611ae95760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610670565b6002816004811115611afd57611afd6120cd565b1415611b4b5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610670565b6003816004811115611b5f57611b5f6120cd565b1415611bb85760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610670565b6004816004811115611bcc57611bcc6120cd565b141561092b5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610670565b600a5460ff16156106b75760405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b6064820152608401610670565b60008181526001830160205260408120548015611d74576000611caf600183612028565b8554909150600090611cc390600190612028565b9050818114611d28576000866000018281548110611ce357611ce36120f9565b9060005260206000200154905080876000018481548110611d0657611d066120f9565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611d3957611d396120e3565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061051a565b600091505061051a565b80356001600160a01b0381168114611d9557600080fd5b919050565b600060208284031215611dac57600080fd5b610a7d82611d7e565b60008060408385031215611dc857600080fd5b611dd183611d7e565b9150611ddf60208401611d7e565b90509250929050565b600080600060608486031215611dfd57600080fd5b611e0684611d7e565b9250611e1460208501611d7e565b9150604084013590509250925092565b600080600080600080600060e0888a031215611e3f57600080fd5b611e4888611d7e565b9650611e5660208901611d7e565b95506040880135945060608801359350608088013560ff81168114611e7a57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215611eaa57600080fd5b611eb383611d7e565b946020939093013593505050565b600060208284031215611ed357600080fd5b5035919050565b60008060408385031215611eed57600080fd5b82359150611ddf60208401611d7e565b60008060408385031215611f1057600080fd5b50508035926020909101359150565b600060208284031215611f3157600080fd5b81356001600160e01b031981168114610a7d57600080fd5b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351611f8181601785016020880161203f565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351611fb281602884016020880161203f565b01602801949350505050565b6020815260008251806020840152611fdd81604085016020870161203f565b601f01601f19169190910160400192915050565b60008219821115612004576120046120b7565b500190565b6000816000190483118215151615612023576120236120b7565b500290565b60008282101561203a5761203a6120b7565b500390565b60005b8381101561205a578181015183820152602001612042565b838111156110d25750506000910152565b60008161207a5761207a6120b7565b506000190190565b600181811c9082168061209657607f821691505b6020821081141561163257634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfea26469706673582212206079cdf3eb3608a64adc77814b00681144a3af07bc9bf16afd484748bab8220e64736f6c63430008070033",
}

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

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

// DeployJRC21PresetMinter deploys a new Ethereum contract, binding an instance of JRC21PresetMinter to it.
func DeployJRC21PresetMinter(auth *bind.TransactOpts, backend bind.ContractBackend, name string, symbol string, decimals_ uint8, issuer common.Address, minFee *big.Int) (common.Address, *types.Transaction, *JRC21PresetMinter, error) {
	parsed, err := JRC21PresetMinterMetaData.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(JRC21PresetMinterBin), backend, name, symbol, decimals_, issuer, minFee)
	if err != nil {
		return common.Address{}, nil, nil, err
	}
	return address, tx, &JRC21PresetMinter{JRC21PresetMinterCaller: JRC21PresetMinterCaller{contract: contract}, JRC21PresetMinterTransactor: JRC21PresetMinterTransactor{contract: contract}, JRC21PresetMinterFilterer: JRC21PresetMinterFilterer{contract: contract}}, nil
}

// JRC21PresetMinter is an auto generated Go binding around an Ethereum contract.
type JRC21PresetMinter struct {
	JRC21PresetMinterCaller     // Read-only binding to the contract
	JRC21PresetMinterTransactor // Write-only binding to the contract
	JRC21PresetMinterFilterer   // Log filterer for contract events
}

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

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

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

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

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

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

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

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

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

// NewJRC21PresetMinter creates a new instance of JRC21PresetMinter, bound to a specific deployed contract.
func NewJRC21PresetMinter(address common.Address, backend bind.ContractBackend) (*JRC21PresetMinter, error) {
	contract, err := bindJRC21PresetMinter(address, backend, backend, backend)
	if err != nil {
		return nil, err
	}
	return &JRC21PresetMinter{JRC21PresetMinterCaller: JRC21PresetMinterCaller{contract: contract}, JRC21PresetMinterTransactor: JRC21PresetMinterTransactor{contract: contract}, JRC21PresetMinterFilterer: JRC21PresetMinterFilterer{contract: contract}}, nil
}

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

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

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

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

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

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

// DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf.
//
// Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32)
func (_JRC21PresetMinter *JRC21PresetMinterCaller) DEFAULTADMINROLE(opts *bind.CallOpts) ([32]byte, error) {
	var out []interface{}
	err := _JRC21PresetMinter.contract.Call(opts, &out, "DEFAULT_ADMIN_ROLE")

	if err != nil {
		return *new([32]byte), err
	}

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

	return out0, err

}

// DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf.
//
// Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32)
func (_JRC21PresetMinter *JRC21PresetMinterSession) DEFAULTADMINROLE() ([32]byte, error) {
	return _JRC21PresetMinter.Contract.DEFAULTADMINROLE(&_JRC21PresetMinter.CallOpts)
}

// DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf.
//
// Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32)
func (_JRC21PresetMinter *JRC21PresetMinterCallerSession) DEFAULTADMINROLE() ([32]byte, error) {
	return _JRC21PresetMinter.Contract.DEFAULTADMINROLE(&_JRC21PresetMinter.CallOpts)
}

// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515.
//
// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32)
func (_JRC21PresetMinter *JRC21PresetMinterCaller) DOMAINSEPARATOR(opts *bind.CallOpts) ([32]byte, error) {
	var out []interface{}
	err := _JRC21PresetMinter.contract.Call(opts, &out, "DOMAIN_SEPARATOR")

	if err != nil {
		return *new([32]byte), err
	}

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

	return out0, err

}

// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515.
//
// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32)
func (_JRC21PresetMinter *JRC21PresetMinterSession) DOMAINSEPARATOR() ([32]byte, error) {
	return _JRC21PresetMinter.Contract.DOMAINSEPARATOR(&_JRC21PresetMinter.CallOpts)
}

// DOMAINSEPARATOR is a free data retrieval call binding the contract method 0x3644e515.
//
// Solidity: function DOMAIN_SEPARATOR() view returns(bytes32)
func (_JRC21PresetMinter *JRC21PresetMinterCallerSession) DOMAINSEPARATOR() ([32]byte, error) {
	return _JRC21PresetMinter.Contract.DOMAINSEPARATOR(&_JRC21PresetMinter.CallOpts)
}

// MINTERROLE is a free data retrieval call binding the contract method 0xd5391393.
//
// Solidity: function MINTER_ROLE() view returns(bytes32)
func (_JRC21PresetMinter *JRC21PresetMinterCaller) MINTERROLE(opts *bind.CallOpts) ([32]byte, error) {
	var out []interface{}
	err := _JRC21PresetMinter.contract.Call(opts, &out, "MINTER_ROLE")

	if err != nil {
		return *new([32]byte), err
	}

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

	return out0, err

}

// MINTERROLE is a free data retrieval call binding the contract method 0xd5391393.
//
// Solidity: function MINTER_ROLE() view returns(bytes32)
func (_JRC21PresetMinter *JRC21PresetMinterSession) MINTERROLE() ([32]byte, error) {
	return _JRC21PresetMinter.Contract.MINTERROLE(&_JRC21PresetMinter.CallOpts)
}

// MINTERROLE is a free data retrieval call binding the contract method 0xd5391393.
//
// Solidity: function MINTER_ROLE() view returns(bytes32)
func (_JRC21PresetMinter *JRC21PresetMinterCallerSession) MINTERROLE() ([32]byte, error) {
	return _JRC21PresetMinter.Contract.MINTERROLE(&_JRC21PresetMinter.CallOpts)
}

// PAUSERROLE is a free data retrieval call binding the contract method 0xe63ab1e9.
//
// Solidity: function PAUSER_ROLE() view returns(bytes32)
func (_JRC21PresetMinter *JRC21PresetMinterCaller) PAUSERROLE(opts *bind.CallOpts) ([32]byte, error) {
	var out []interface{}
	err := _JRC21PresetMinter.contract.Call(opts, &out, "PAUSER_ROLE")

	if err != nil {
		return *new([32]byte), err
	}

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

	return out0, err

}

// PAUSERROLE is a free data retrieval call binding the contract method 0xe63ab1e9.
//
// Solidity: function PAUSER_ROLE() view returns(bytes32)
func (_JRC21PresetMinter *JRC21PresetMinterSession) PAUSERROLE() ([32]byte, error) {
	return _JRC21PresetMinter.Contract.PAUSERROLE(&_JRC21PresetMinter.CallOpts)
}

// PAUSERROLE is a free data retrieval call binding the contract method 0xe63ab1e9.
//
// Solidity: function PAUSER_ROLE() view returns(bytes32)
func (_JRC21PresetMinter *JRC21PresetMinterCallerSession) PAUSERROLE() ([32]byte, error) {
	return _JRC21PresetMinter.Contract.PAUSERROLE(&_JRC21PresetMinter.CallOpts)
}

// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
//
// Solidity: function allowance(address owner, address spender) view returns(uint256)
func (_JRC21PresetMinter *JRC21PresetMinterCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) {
	var out []interface{}
	err := _JRC21PresetMinter.contract.Call(opts, &out, "allowance", owner, spender)

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

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

	return out0, err

}

// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
//
// Solidity: function allowance(address owner, address spender) view returns(uint256)
func (_JRC21PresetMinter *JRC21PresetMinterSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
	return _JRC21PresetMinter.Contract.Allowance(&_JRC21PresetMinter.CallOpts, owner, spender)
}

// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
//
// Solidity: function allowance(address owner, address spender) view returns(uint256)
func (_JRC21PresetMinter *JRC21PresetMinterCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
	return _JRC21PresetMinter.Contract.Allowance(&_JRC21PresetMinter.CallOpts, owner, spender)
}

// BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
//
// Solidity: function balanceOf(address account) view returns(uint256)
func (_JRC21PresetMinter *JRC21PresetMinterCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) {
	var out []interface{}
	err := _JRC21PresetMinter.contract.Call(opts, &out, "balanceOf", account)

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

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

	return out0, err

}

// BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
//
// Solidity: function balanceOf(address account) view returns(uint256)
func (_JRC21PresetMinter *JRC21PresetMinterSession) BalanceOf(account common.Address) (*big.Int, error) {
	return _JRC21PresetMinter.Contract.BalanceOf(&_JRC21PresetMinter.CallOpts, account)
}

// BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
//
// Solidity: function balanceOf(address account) view returns(uint256)
func (_JRC21PresetMinter *JRC21PresetMinterCallerSession) BalanceOf(account common.Address) (*big.Int, error) {
	return _JRC21PresetMinter.Contract.BalanceOf(&_JRC21PresetMinter.CallOpts, account)
}

// Decimals is a free data retrieval call binding the contract method 0x313ce567.
//
// Solidity: function decimals() view returns(uint8)
func (_JRC21PresetMinter *JRC21PresetMinterCaller) Decimals(opts *bind.CallOpts) (uint8, error) {
	var out []interface{}
	err := _JRC21PresetMinter.contract.Call(opts, &out, "decimals")

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

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

	return out0, err

}

// Decimals is a free data retrieval call binding the contract method 0x313ce567.
//
// Solidity: function decimals() view returns(uint8)
func (_JRC21PresetMinter *JRC21PresetMinterSession) Decimals() (uint8, error) {
	return _JRC21PresetMinter.Contract.Decimals(&_JRC21PresetMinter.CallOpts)
}

// Decimals is a free data retrieval call binding the contract method 0x313ce567.
//
// Solidity: function decimals() view returns(uint8)
func (_JRC21PresetMinter *JRC21PresetMinterCallerSession) Decimals() (uint8, error) {
	return _JRC21PresetMinter.Contract.Decimals(&_JRC21PresetMinter.CallOpts)
}

// EstimateFee is a free data retrieval call binding the contract method 0x127e8e4d.
//
// Solidity: function estimateFee(uint256 value) view returns(uint256)
func (_JRC21PresetMinter *JRC21PresetMinterCaller) EstimateFee(opts *bind.CallOpts, value *big.Int) (*big.Int, error) {
	var out []interface{}
	err := _JRC21PresetMinter.contract.Call(opts, &out, "estimateFee", value)

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

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

	return out0, err

}

// EstimateFee is a free data retrieval call binding the contract method 0x127e8e4d.
//
// Solidity: function estimateFee(uint256 value) view returns(uint256)
func (_JRC21PresetMinter *JRC21PresetMinterSession) EstimateFee(value *big.Int) (*big.Int, error) {
	return _JRC21PresetMinter.Contract.EstimateFee(&_JRC21PresetMinter.CallOpts, value)
}

// EstimateFee is a free data retrieval call binding the contract method 0x127e8e4d.
//
// Solidity: function estimateFee(uint256 value) view returns(uint256)
func (_JRC21PresetMinter *JRC21PresetMinterCallerSession) EstimateFee(value *big.Int) (*big.Int, error) {
	return _JRC21PresetMinter.Contract.EstimateFee(&_JRC21PresetMinter.CallOpts, value)
}

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

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

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

	return out0, err

}

// GetChainId is a free data retrieval call binding the contract method 0x3408e470.
//
// Solidity: function getChainId() view returns(uint256)
func (_JRC21PresetMinter *JRC21PresetMinterSession) GetChainId() (*big.Int, error) {
	return _JRC21PresetMinter.Contract.GetChainId(&_JRC21PresetMinter.CallOpts)
}

// GetChainId is a free data retrieval call binding the contract method 0x3408e470.
//
// Solidity: function getChainId() view returns(uint256)
func (_JRC21PresetMinter *JRC21PresetMinterCallerSession) GetChainId() (*big.Int, error) {
	return _JRC21PresetMinter.Contract.GetChainId(&_JRC21PresetMinter.CallOpts)
}

// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3.
//
// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32)
func (_JRC21PresetMinter *JRC21PresetMinterCaller) GetRoleAdmin(opts *bind.CallOpts, role [32]byte) ([32]byte, error) {
	var out []interface{}
	err := _JRC21PresetMinter.contract.Call(opts, &out, "getRoleAdmin", role)

	if err != nil {
		return *new([32]byte), err
	}

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

	return out0, err

}

// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3.
//
// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32)
func (_JRC21PresetMinter *JRC21PresetMinterSession) GetRoleAdmin(role [32]byte) ([32]byte, error) {
	return _JRC21PresetMinter.Contract.GetRoleAdmin(&_JRC21PresetMinter.CallOpts, role)
}

// GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3.
//
// Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32)
func (_JRC21PresetMinter *JRC21PresetMinterCallerSession) GetRoleAdmin(role [32]byte) ([32]byte, error) {
	return _JRC21PresetMinter.Contract.GetRoleAdmin(&_JRC21PresetMinter.CallOpts, role)
}

// GetRoleMember is a free data retrieval call binding the contract method 0x9010d07c.
//
// Solidity: function getRoleMember(bytes32 role, uint256 index) view returns(address)
func (_JRC21PresetMinter *JRC21PresetMinterCaller) GetRoleMember(opts *bind.CallOpts, role [32]byte, index *big.Int) (common.Address, error) {
	var out []interface{}
	err := _JRC21PresetMinter.contract.Call(opts, &out, "getRoleMember", role, index)

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

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

	return out0, err

}

// GetRoleMember is a free data retrieval call binding the contract method 0x9010d07c.
//
// Solidity: function getRoleMember(bytes32 role, uint256 index) view returns(address)
func (_JRC21PresetMinter *JRC21PresetMinterSession) GetRoleMember(role [32]byte, index *big.Int) (common.Address, error) {
	return _JRC21PresetMinter.Contract.GetRoleMember(&_JRC21PresetMinter.CallOpts, role, index)
}

// GetRoleMember is a free data retrieval call binding the contract method 0x9010d07c.
//
// Solidity: function getRoleMember(bytes32 role, uint256 index) view returns(address)
func (_JRC21PresetMinter *JRC21PresetMinterCallerSession) GetRoleMember(role [32]byte, index *big.Int) (common.Address, error) {
	return _JRC21PresetMinter.Contract.GetRoleMember(&_JRC21PresetMinter.CallOpts, role, index)
}

// GetRoleMemberCount is a free data retrieval call binding the contract method 0xca15c873.
//
// Solidity: function getRoleMemberCount(bytes32 role) view returns(uint256)
func (_JRC21PresetMinter *JRC21PresetMinterCaller) GetRoleMemberCount(opts *bind.CallOpts, role [32]byte) (*big.Int, error) {
	var out []interface{}
	err := _JRC21PresetMinter.contract.Call(opts, &out, "getRoleMemberCount", role)

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

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

	return out0, err

}

// GetRoleMemberCount is a free data retrieval call binding the contract method 0xca15c873.
//
// Solidity: function getRoleMemberCount(bytes32 role) view returns(uint256)
func (_JRC21PresetMinter *JRC21PresetMinterSession) GetRoleMemberCount(role [32]byte) (*big.Int, error) {
	return _JRC21PresetMinter.Contract.GetRoleMemberCount(&_JRC21PresetMinter.CallOpts, role)
}

// GetRoleMemberCount is a free data retrieval call binding the contract method 0xca15c873.
//
// Solidity: function getRoleMemberCount(bytes32 role) view returns(uint256)
func (_JRC21PresetMinter *JRC21PresetMinterCallerSession) GetRoleMemberCount(role [32]byte) (*big.Int, error) {
	return _JRC21PresetMinter.Contract.GetRoleMemberCount(&_JRC21PresetMinter.CallOpts, role)
}

// HasRole is a free data retrieval call binding the contract method 0x91d14854.
//
// Solidity: function hasRole(bytes32 role, address account) view returns(bool)
func (_JRC21PresetMinter *JRC21PresetMinterCaller) HasRole(opts *bind.CallOpts, role [32]byte, account common.Address) (bool, error) {
	var out []interface{}
	err := _JRC21PresetMinter.contract.Call(opts, &out, "hasRole", role, account)

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

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

	return out0, err

}

// HasRole is a free data retrieval call binding the contract method 0x91d14854.
//
// Solidity: function hasRole(bytes32 role, address account) view returns(bool)
func (_JRC21PresetMinter *JRC21PresetMinterSession) HasRole(role [32]byte, account common.Address) (bool, error) {
	return _JRC21PresetMinter.Contract.HasRole(&_JRC21PresetMinter.CallOpts, role, account)
}

// HasRole is a free data retrieval call binding the contract method 0x91d14854.
//
// Solidity: function hasRole(bytes32 role, address account) view returns(bool)
func (_JRC21PresetMinter *JRC21PresetMinterCallerSession) HasRole(role [32]byte, account common.Address) (bool, error) {
	return _JRC21PresetMinter.Contract.HasRole(&_JRC21PresetMinter.CallOpts, role, account)
}

// Issuer is a free data retrieval call binding the contract method 0x1d143848.
//
// Solidity: function issuer() view returns(address)
func (_JRC21PresetMinter *JRC21PresetMinterCaller) Issuer(opts *bind.CallOpts) (common.Address, error) {
	var out []interface{}
	err := _JRC21PresetMinter.contract.Call(opts, &out, "issuer")

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

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

	return out0, err

}

// Issuer is a free data retrieval call binding the contract method 0x1d143848.
//
// Solidity: function issuer() view returns(address)
func (_JRC21PresetMinter *JRC21PresetMinterSession) Issuer() (common.Address, error) {
	return _JRC21PresetMinter.Contract.Issuer(&_JRC21PresetMinter.CallOpts)
}

// Issuer is a free data retrieval call binding the contract method 0x1d143848.
//
// Solidity: function issuer() view returns(address)
func (_JRC21PresetMinter *JRC21PresetMinterCallerSession) Issuer() (common.Address, error) {
	return _JRC21PresetMinter.Contract.Issuer(&_JRC21PresetMinter.CallOpts)
}

// Name is a free data retrieval call binding the contract method 0x06fdde03.
//
// Solidity: function name() view returns(string)
func (_JRC21PresetMinter *JRC21PresetMinterCaller) Name(opts *bind.CallOpts) (string, error) {
	var out []interface{}
	err := _JRC21PresetMinter.contract.Call(opts, &out, "name")

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

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

	return out0, err

}

// Name is a free data retrieval call binding the contract method 0x06fdde03.
//
// Solidity: function name() view returns(string)
func (_JRC21PresetMinter *JRC21PresetMinterSession) Name() (string, error) {
	return _JRC21PresetMinter.Contract.Name(&_JRC21PresetMinter.CallOpts)
}

// Name is a free data retrieval call binding the contract method 0x06fdde03.
//
// Solidity: function name() view returns(string)
func (_JRC21PresetMinter *JRC21PresetMinterCallerSession) Name() (string, error) {
	return _JRC21PresetMinter.Contract.Name(&_JRC21PresetMinter.CallOpts)
}

// Nonces is a free data retrieval call binding the contract method 0x7ecebe00.
//
// Solidity: function nonces(address owner) view returns(uint256)
func (_JRC21PresetMinter *JRC21PresetMinterCaller) Nonces(opts *bind.CallOpts, owner common.Address) (*big.Int, error) {
	var out []interface{}
	err := _JRC21PresetMinter.contract.Call(opts, &out, "nonces", owner)

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

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

	return out0, err

}

// Nonces is a free data retrieval call binding the contract method 0x7ecebe00.
//
// Solidity: function nonces(address owner) view returns(uint256)
func (_JRC21PresetMinter *JRC21PresetMinterSession) Nonces(owner common.Address) (*big.Int, error) {
	return _JRC21PresetMinter.Contract.Nonces(&_JRC21PresetMinter.CallOpts, owner)
}

// Nonces is a free data retrieval call binding the contract method 0x7ecebe00.
//
// Solidity: function nonces(address owner) view returns(uint256)
func (_JRC21PresetMinter *JRC21PresetMinterCallerSession) Nonces(owner common.Address) (*big.Int, error) {
	return _JRC21PresetMinter.Contract.Nonces(&_JRC21PresetMinter.CallOpts, owner)
}

// Paused is a free data retrieval call binding the contract method 0x5c975abb.
//
// Solidity: function paused() view returns(bool)
func (_JRC21PresetMinter *JRC21PresetMinterCaller) Paused(opts *bind.CallOpts) (bool, error) {
	var out []interface{}
	err := _JRC21PresetMinter.contract.Call(opts, &out, "paused")

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

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

	return out0, err

}

// Paused is a free data retrieval call binding the contract method 0x5c975abb.
//
// Solidity: function paused() view returns(bool)
func (_JRC21PresetMinter *JRC21PresetMinterSession) Paused() (bool, error) {
	return _JRC21PresetMinter.Contract.Paused(&_JRC21PresetMinter.CallOpts)
}

// Paused is a free data retrieval call binding the contract method 0x5c975abb.
//
// Solidity: function paused() view returns(bool)
func (_JRC21PresetMinter *JRC21PresetMinterCallerSession) Paused() (bool, error) {
	return _JRC21PresetMinter.Contract.Paused(&_JRC21PresetMinter.CallOpts)
}

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

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

// Symbol is a free data retrieval call binding the contract method 0x95d89b41.
//
// Solidity: function symbol() view returns(string)
func (_JRC21PresetMinter *JRC21PresetMinterCaller) Symbol(opts *bind.CallOpts) (string, error) {
	var out []interface{}
	err := _JRC21PresetMinter.contract.Call(opts, &out, "symbol")

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

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

	return out0, err

}

// Symbol is a free data retrieval call binding the contract method 0x95d89b41.
//
// Solidity: function symbol() view returns(string)
func (_JRC21PresetMinter *JRC21PresetMinterSession) Symbol() (string, error) {
	return _JRC21PresetMinter.Contract.Symbol(&_JRC21PresetMinter.CallOpts)
}

// Symbol is a free data retrieval call binding the contract method 0x95d89b41.
//
// Solidity: function symbol() view returns(string)
func (_JRC21PresetMinter *JRC21PresetMinterCallerSession) Symbol() (string, error) {
	return _JRC21PresetMinter.Contract.Symbol(&_JRC21PresetMinter.CallOpts)
}

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

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

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

	return out0, err

}

// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
//
// Solidity: function totalSupply() view returns(uint256)
func (_JRC21PresetMinter *JRC21PresetMinterSession) TotalSupply() (*big.Int, error) {
	return _JRC21PresetMinter.Contract.TotalSupply(&_JRC21PresetMinter.CallOpts)
}

// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
//
// Solidity: function totalSupply() view returns(uint256)
func (_JRC21PresetMinter *JRC21PresetMinterCallerSession) TotalSupply() (*big.Int, error) {
	return _JRC21PresetMinter.Contract.TotalSupply(&_JRC21PresetMinter.CallOpts)
}

// Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
//
// Solidity: function approve(address spender, uint256 amount) returns(bool)
func (_JRC21PresetMinter *JRC21PresetMinterTransactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) {
	return _JRC21PresetMinter.contract.Transact(opts, "approve", spender, amount)
}

// Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
//
// Solidity: function approve(address spender, uint256 amount) returns(bool)
func (_JRC21PresetMinter *JRC21PresetMinterSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) {
	return _JRC21PresetMinter.Contract.Approve(&_JRC21PresetMinter.TransactOpts, spender, amount)
}

// Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
//
// Solidity: function approve(address spender, uint256 amount) returns(bool)
func (_JRC21PresetMinter *JRC21PresetMinterTransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) {
	return _JRC21PresetMinter.Contract.Approve(&_JRC21PresetMinter.TransactOpts, spender, amount)
}

// Burn is a paid mutator transaction binding the contract method 0x42966c68.
//
// Solidity: function burn(uint256 amount) returns()
func (_JRC21PresetMinter *JRC21PresetMinterTransactor) Burn(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) {
	return _JRC21PresetMinter.contract.Transact(opts, "burn", amount)
}

// Burn is a paid mutator transaction binding the contract method 0x42966c68.
//
// Solidity: function burn(uint256 amount) returns()
func (_JRC21PresetMinter *JRC21PresetMinterSession) Burn(amount *big.Int) (*types.Transaction, error) {
	return _JRC21PresetMinter.Contract.Burn(&_JRC21PresetMinter.TransactOpts, amount)
}

// Burn is a paid mutator transaction binding the contract method 0x42966c68.
//
// Solidity: function burn(uint256 amount) returns()
func (_JRC21PresetMinter *JRC21PresetMinterTransactorSession) Burn(amount *big.Int) (*types.Transaction, error) {
	return _JRC21PresetMinter.Contract.Burn(&_JRC21PresetMinter.TransactOpts, amount)
}

// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790.
//
// Solidity: function burnFrom(address account, uint256 amount) returns()
func (_JRC21PresetMinter *JRC21PresetMinterTransactor) BurnFrom(opts *bind.TransactOpts, account common.Address, amount *big.Int) (*types.Transaction, error) {
	return _JRC21PresetMinter.contract.Transact(opts, "burnFrom", account, amount)
}

// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790.
//
// Solidity: function burnFrom(address account, uint256 amount) returns()
func (_JRC21PresetMinter *JRC21PresetMinterSession) BurnFrom(account common.Address, amount *big.Int) (*types.Transaction, error) {
	return _JRC21PresetMinter.Contract.BurnFrom(&_JRC21PresetMinter.TransactOpts, account, amount)
}

// BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790.
//
// Solidity: function burnFrom(address account, uint256 amount) returns()
func (_JRC21PresetMinter *JRC21PresetMinterTransactorSession) BurnFrom(account common.Address, amount *big.Int) (*types.Transaction, error) {
	return _JRC21PresetMinter.Contract.BurnFrom(&_JRC21PresetMinter.TransactOpts, account, amount)
}

// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
//
// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
func (_JRC21PresetMinter *JRC21PresetMinterTransactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
	return _JRC21PresetMinter.contract.Transact(opts, "decreaseAllowance", spender, subtractedValue)
}

// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
//
// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
func (_JRC21PresetMinter *JRC21PresetMinterSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
	return _JRC21PresetMinter.Contract.DecreaseAllowance(&_JRC21PresetMinter.TransactOpts, spender, subtractedValue)
}

// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
//
// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
func (_JRC21PresetMinter *JRC21PresetMinterTransactorSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
	return _JRC21PresetMinter.Contract.DecreaseAllowance(&_JRC21PresetMinter.TransactOpts, spender, subtractedValue)
}

// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d.
//
// Solidity: function grantRole(bytes32 role, address account) returns()
func (_JRC21PresetMinter *JRC21PresetMinterTransactor) GrantRole(opts *bind.TransactOpts, role [32]byte, account common.Address) (*types.Transaction, error) {
	return _JRC21PresetMinter.contract.Transact(opts, "grantRole", role, account)
}

// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d.
//
// Solidity: function grantRole(bytes32 role, address account) returns()
func (_JRC21PresetMinter *JRC21PresetMinterSession) GrantRole(role [32]byte, account common.Address) (*types.Transaction, error) {
	return _JRC21PresetMinter.Contract.GrantRole(&_JRC21PresetMinter.TransactOpts, role, account)
}

// GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d.
//
// Solidity: function grantRole(bytes32 role, address account) returns()
func (_JRC21PresetMinter *JRC21PresetMinterTransactorSession) GrantRole(role [32]byte, account common.Address) (*types.Transaction, error) {
	return _JRC21PresetMinter.Contract.GrantRole(&_JRC21PresetMinter.TransactOpts, role, account)
}

// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
//
// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
func (_JRC21PresetMinter *JRC21PresetMinterTransactor) IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
	return _JRC21PresetMinter.contract.Transact(opts, "increaseAllowance", spender, addedValue)
}

// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
//
// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
func (_JRC21PresetMinter *JRC21PresetMinterSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
	return _JRC21PresetMinter.Contract.IncreaseAllowance(&_JRC21PresetMinter.TransactOpts, spender, addedValue)
}

// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
//
// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
func (_JRC21PresetMinter *JRC21PresetMinterTransactorSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
	return _JRC21PresetMinter.Contract.IncreaseAllowance(&_JRC21PresetMinter.TransactOpts, spender, addedValue)
}

// Mint is a paid mutator transaction binding the contract method 0x40c10f19.
//
// Solidity: function mint(address to, uint256 amount) returns()
func (_JRC21PresetMinter *JRC21PresetMinterTransactor) Mint(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) {
	return _JRC21PresetMinter.contract.Transact(opts, "mint", to, amount)
}

// Mint is a paid mutator transaction binding the contract method 0x40c10f19.
//
// Solidity: function mint(address to, uint256 amount) returns()
func (_JRC21PresetMinter *JRC21PresetMinterSession) Mint(to common.Address, amount *big.Int) (*types.Transaction, error) {
	return _JRC21PresetMinter.Contract.Mint(&_JRC21PresetMinter.TransactOpts, to, amount)
}

// Mint is a paid mutator transaction binding the contract method 0x40c10f19.
//
// Solidity: function mint(address to, uint256 amount) returns()
func (_JRC21PresetMinter *JRC21PresetMinterTransactorSession) Mint(to common.Address, amount *big.Int) (*types.Transaction, error) {
	return _JRC21PresetMinter.Contract.Mint(&_JRC21PresetMinter.TransactOpts, to, amount)
}

// Pause is a paid mutator transaction binding the contract method 0x8456cb59.
//
// Solidity: function pause() returns()
func (_JRC21PresetMinter *JRC21PresetMinterTransactor) Pause(opts *bind.TransactOpts) (*types.Transaction, error) {
	return _JRC21PresetMinter.contract.Transact(opts, "pause")
}

// Pause is a paid mutator transaction binding the contract method 0x8456cb59.
//
// Solidity: function pause() returns()
func (_JRC21PresetMinter *JRC21PresetMinterSession) Pause() (*types.Transaction, error) {
	return _JRC21PresetMinter.Contract.Pause(&_JRC21PresetMinter.TransactOpts)
}

// Pause is a paid mutator transaction binding the contract method 0x8456cb59.
//
// Solidity: function pause() returns()
func (_JRC21PresetMinter *JRC21PresetMinterTransactorSession) Pause() (*types.Transaction, error) {
	return _JRC21PresetMinter.Contract.Pause(&_JRC21PresetMinter.TransactOpts)
}

// Permit is a paid mutator transaction binding the contract method 0xd505accf.
//
// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns()
func (_JRC21PresetMinter *JRC21PresetMinterTransactor) Permit(opts *bind.TransactOpts, owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) {
	return _JRC21PresetMinter.contract.Transact(opts, "permit", owner, spender, value, deadline, v, r, s)
}

// Permit is a paid mutator transaction binding the contract method 0xd505accf.
//
// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns()
func (_JRC21PresetMinter *JRC21PresetMinterSession) Permit(owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) {
	return _JRC21PresetMinter.Contract.Permit(&_JRC21PresetMinter.TransactOpts, owner, spender, value, deadline, v, r, s)
}

// Permit is a paid mutator transaction binding the contract method 0xd505accf.
//
// Solidity: function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns()
func (_JRC21PresetMinter *JRC21PresetMinterTransactorSession) Permit(owner common.Address, spender common.Address, value *big.Int, deadline *big.Int, v uint8, r [32]byte, s [32]byte) (*types.Transaction, error) {
	return _JRC21PresetMinter.Contract.Permit(&_JRC21PresetMinter.TransactOpts, owner, spender, value, deadline, v, r, s)
}

// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe.
//
// Solidity: function renounceRole(bytes32 role, address account) returns()
func (_JRC21PresetMinter *JRC21PresetMinterTransactor) RenounceRole(opts *bind.TransactOpts, role [32]byte, account common.Address) (*types.Transaction, error) {
	return _JRC21PresetMinter.contract.Transact(opts, "renounceRole", role, account)
}

// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe.
//
// Solidity: function renounceRole(bytes32 role, address account) returns()
func (_JRC21PresetMinter *JRC21PresetMinterSession) RenounceRole(role [32]byte, account common.Address) (*types.Transaction, error) {
	return _JRC21PresetMinter.Contract.RenounceRole(&_JRC21PresetMinter.TransactOpts, role, account)
}

// RenounceRole is a paid mutator transaction binding the contract method 0x36568abe.
//
// Solidity: function renounceRole(bytes32 role, address account) returns()
func (_JRC21PresetMinter *JRC21PresetMinterTransactorSession) RenounceRole(role [32]byte, account common.Address) (*types.Transaction, error) {
	return _JRC21PresetMinter.Contract.RenounceRole(&_JRC21PresetMinter.TransactOpts, role, account)
}

// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f.
//
// Solidity: function revokeRole(bytes32 role, address account) returns()
func (_JRC21PresetMinter *JRC21PresetMinterTransactor) RevokeRole(opts *bind.TransactOpts, role [32]byte, account common.Address) (*types.Transaction, error) {
	return _JRC21PresetMinter.contract.Transact(opts, "revokeRole", role, account)
}

// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f.
//
// Solidity: function revokeRole(bytes32 role, address account) returns()
func (_JRC21PresetMinter *JRC21PresetMinterSession) RevokeRole(role [32]byte, account common.Address) (*types.Transaction, error) {
	return _JRC21PresetMinter.Contract.RevokeRole(&_JRC21PresetMinter.TransactOpts, role, account)
}

// RevokeRole is a paid mutator transaction binding the contract method 0xd547741f.
//
// Solidity: function revokeRole(bytes32 role, address account) returns()
func (_JRC21PresetMinter *JRC21PresetMinterTransactorSession) RevokeRole(role [32]byte, account common.Address) (*types.Transaction, error) {
	return _JRC21PresetMinter.Contract.RevokeRole(&_JRC21PresetMinter.TransactOpts, role, account)
}

// SetMinFee is a paid mutator transaction binding the contract method 0x31ac9920.
//
// Solidity: function setMinFee(uint256 value) returns()
func (_JRC21PresetMinter *JRC21PresetMinterTransactor) SetMinFee(opts *bind.TransactOpts, value *big.Int) (*types.Transaction, error) {
	return _JRC21PresetMinter.contract.Transact(opts, "setMinFee", value)
}

// SetMinFee is a paid mutator transaction binding the contract method 0x31ac9920.
//
// Solidity: function setMinFee(uint256 value) returns()
func (_JRC21PresetMinter *JRC21PresetMinterSession) SetMinFee(value *big.Int) (*types.Transaction, error) {
	return _JRC21PresetMinter.Contract.SetMinFee(&_JRC21PresetMinter.TransactOpts, value)
}

// SetMinFee is a paid mutator transaction binding the contract method 0x31ac9920.
//
// Solidity: function setMinFee(uint256 value) returns()
func (_JRC21PresetMinter *JRC21PresetMinterTransactorSession) SetMinFee(value *big.Int) (*types.Transaction, error) {
	return _JRC21PresetMinter.Contract.SetMinFee(&_JRC21PresetMinter.TransactOpts, value)
}

// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
//
// Solidity: function transfer(address recipient, uint256 amount) returns(bool)
func (_JRC21PresetMinter *JRC21PresetMinterTransactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
	return _JRC21PresetMinter.contract.Transact(opts, "transfer", recipient, amount)
}

// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
//
// Solidity: function transfer(address recipient, uint256 amount) returns(bool)
func (_JRC21PresetMinter *JRC21PresetMinterSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
	return _JRC21PresetMinter.Contract.Transfer(&_JRC21PresetMinter.TransactOpts, recipient, amount)
}

// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
//
// Solidity: function transfer(address recipient, uint256 amount) returns(bool)
func (_JRC21PresetMinter *JRC21PresetMinterTransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
	return _JRC21PresetMinter.Contract.Transfer(&_JRC21PresetMinter.TransactOpts, recipient, amount)
}

// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
//
// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
func (_JRC21PresetMinter *JRC21PresetMinterTransactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
	return _JRC21PresetMinter.contract.Transact(opts, "transferFrom", sender, recipient, amount)
}

// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
//
// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
func (_JRC21PresetMinter *JRC21PresetMinterSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
	return _JRC21PresetMinter.Contract.TransferFrom(&_JRC21PresetMinter.TransactOpts, sender, recipient, amount)
}

// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
//
// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
func (_JRC21PresetMinter *JRC21PresetMinterTransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
	return _JRC21PresetMinter.Contract.TransferFrom(&_JRC21PresetMinter.TransactOpts, sender, recipient, amount)
}

// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a.
//
// Solidity: function unpause() returns()
func (_JRC21PresetMinter *JRC21PresetMinterTransactor) Unpause(opts *bind.TransactOpts) (*types.Transaction, error) {
	return _JRC21PresetMinter.contract.Transact(opts, "unpause")
}

// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a.
//
// Solidity: function unpause() returns()
func (_JRC21PresetMinter *JRC21PresetMinterSession) Unpause() (*types.Transaction, error) {
	return _JRC21PresetMinter.Contract.Unpause(&_JRC21PresetMinter.TransactOpts)
}

// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a.
//
// Solidity: function unpause() returns()
func (_JRC21PresetMinter *JRC21PresetMinterTransactorSession) Unpause() (*types.Transaction, error) {
	return _JRC21PresetMinter.Contract.Unpause(&_JRC21PresetMinter.TransactOpts)
}

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

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

// JRC21PresetMinterApproval represents a Approval event raised by the JRC21PresetMinter contract.
type JRC21PresetMinterApproval struct {
	Owner   common.Address
	Spender common.Address
	Value   *big.Int
	Raw     types.Log // Blockchain specific contextual infos
}

// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
//
// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
func (_JRC21PresetMinter *JRC21PresetMinterFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*JRC21PresetMinterApprovalIterator, error) {

	var ownerRule []interface{}
	for _, ownerItem := range owner {
		ownerRule = append(ownerRule, ownerItem)
	}
	var spenderRule []interface{}
	for _, spenderItem := range spender {
		spenderRule = append(spenderRule, spenderItem)
	}

	logs, sub, err := _JRC21PresetMinter.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule)
	if err != nil {
		return nil, err
	}
	return &JRC21PresetMinterApprovalIterator{contract: _JRC21PresetMinter.contract, event: "Approval", logs: logs, sub: sub}, nil
}

// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
//
// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
func (_JRC21PresetMinter *JRC21PresetMinterFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *JRC21PresetMinterApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) {

	var ownerRule []interface{}
	for _, ownerItem := range owner {
		ownerRule = append(ownerRule, ownerItem)
	}
	var spenderRule []interface{}
	for _, spenderItem := range spender {
		spenderRule = append(spenderRule, spenderItem)
	}

	logs, sub, err := _JRC21PresetMinter.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule)
	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(JRC21PresetMinterApproval)
				if err := _JRC21PresetMinter.contract.UnpackLog(event, "Approval", log); err != nil {
					return err
				}
				event.Raw = log

				select {
				case sink <- event:
				case err := <-sub.Err():
					return err
				case <-quit:
					return nil
				}
			case err := <-sub.Err():
				return err
			case <-quit:
				return nil
			}
		}
	}), nil
}

// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
//
// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
func (_JRC21PresetMinter *JRC21PresetMinterFilterer) ParseApproval(log types.Log) (*JRC21PresetMinterApproval, error) {
	event := new(JRC21PresetMinterApproval)
	if err := _JRC21PresetMinter.contract.UnpackLog(event, "Approval", log); err != nil {
		return nil, err
	}
	event.Raw = log
	return event, nil
}

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

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

// JRC21PresetMinterPaused represents a Paused event raised by the JRC21PresetMinter contract.
type JRC21PresetMinterPaused struct {
	Account common.Address
	Raw     types.Log // Blockchain specific contextual infos
}

// FilterPaused is a free log retrieval operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258.
//
// Solidity: event Paused(address account)
func (_JRC21PresetMinter *JRC21PresetMinterFilterer) FilterPaused(opts *bind.FilterOpts) (*JRC21PresetMinterPausedIterator, error) {

	logs, sub, err := _JRC21PresetMinter.contract.FilterLogs(opts, "Paused")
	if err != nil {
		return nil, err
	}
	return &JRC21PresetMinterPausedIterator{contract: _JRC21PresetMinter.contract, event: "Paused", logs: logs, sub: sub}, nil
}

// WatchPaused is a free log subscription operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258.
//
// Solidity: event Paused(address account)
func (_JRC21PresetMinter *JRC21PresetMinterFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *JRC21PresetMinterPaused) (event.Subscription, error) {

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

// ParsePaused is a log parse operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258.
//
// Solidity: event Paused(address account)
func (_JRC21PresetMinter *JRC21PresetMinterFilterer) ParsePaused(log types.Log) (*JRC21PresetMinterPaused, error) {
	event := new(JRC21PresetMinterPaused)
	if err := _JRC21PresetMinter.contract.UnpackLog(event, "Paused", log); err != nil {
		return nil, err
	}
	event.Raw = log
	return event, nil
}

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

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

// JRC21PresetMinterRoleAdminChanged represents a RoleAdminChanged event raised by the JRC21PresetMinter contract.
type JRC21PresetMinterRoleAdminChanged struct {
	Role              [32]byte
	PreviousAdminRole [32]byte
	NewAdminRole      [32]byte
	Raw               types.Log // Blockchain specific contextual infos
}

// FilterRoleAdminChanged is a free log retrieval operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff.
//
// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
func (_JRC21PresetMinter *JRC21PresetMinterFilterer) FilterRoleAdminChanged(opts *bind.FilterOpts, role [][32]byte, previousAdminRole [][32]byte, newAdminRole [][32]byte) (*JRC21PresetMinterRoleAdminChangedIterator, error) {

	var roleRule []interface{}
	for _, roleItem := range role {
		roleRule = append(roleRule, roleItem)
	}
	var previousAdminRoleRule []interface{}
	for _, previousAdminRoleItem := range previousAdminRole {
		previousAdminRoleRule = append(previousAdminRoleRule, previousAdminRoleItem)
	}
	var newAdminRoleRule []interface{}
	for _, newAdminRoleItem := range newAdminRole {
		newAdminRoleRule = append(newAdminRoleRule, newAdminRoleItem)
	}

	logs, sub, err := _JRC21PresetMinter.contract.FilterLogs(opts, "RoleAdminChanged", roleRule, previousAdminRoleRule, newAdminRoleRule)
	if err != nil {
		return nil, err
	}
	return &JRC21PresetMinterRoleAdminChangedIterator{contract: _JRC21PresetMinter.contract, event: "RoleAdminChanged", logs: logs, sub: sub}, nil
}

// WatchRoleAdminChanged is a free log subscription operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff.
//
// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
func (_JRC21PresetMinter *JRC21PresetMinterFilterer) WatchRoleAdminChanged(opts *bind.WatchOpts, sink chan<- *JRC21PresetMinterRoleAdminChanged, role [][32]byte, previousAdminRole [][32]byte, newAdminRole [][32]byte) (event.Subscription, error) {

	var roleRule []interface{}
	for _, roleItem := range role {
		roleRule = append(roleRule, roleItem)
	}
	var previousAdminRoleRule []interface{}
	for _, previousAdminRoleItem := range previousAdminRole {
		previousAdminRoleRule = append(previousAdminRoleRule, previousAdminRoleItem)
	}
	var newAdminRoleRule []interface{}
	for _, newAdminRoleItem := range newAdminRole {
		newAdminRoleRule = append(newAdminRoleRule, newAdminRoleItem)
	}

	logs, sub, err := _JRC21PresetMinter.contract.WatchLogs(opts, "RoleAdminChanged", roleRule, previousAdminRoleRule, newAdminRoleRule)
	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(JRC21PresetMinterRoleAdminChanged)
				if err := _JRC21PresetMinter.contract.UnpackLog(event, "RoleAdminChanged", 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
}

// ParseRoleAdminChanged is a log parse operation binding the contract event 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff.
//
// Solidity: event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
func (_JRC21PresetMinter *JRC21PresetMinterFilterer) ParseRoleAdminChanged(log types.Log) (*JRC21PresetMinterRoleAdminChanged, error) {
	event := new(JRC21PresetMinterRoleAdminChanged)
	if err := _JRC21PresetMinter.contract.UnpackLog(event, "RoleAdminChanged", log); err != nil {
		return nil, err
	}
	event.Raw = log
	return event, nil
}

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

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

// JRC21PresetMinterRoleGranted represents a RoleGranted event raised by the JRC21PresetMinter contract.
type JRC21PresetMinterRoleGranted struct {
	Role    [32]byte
	Account common.Address
	Sender  common.Address
	Raw     types.Log // Blockchain specific contextual infos
}

// FilterRoleGranted is a free log retrieval operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d.
//
// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
func (_JRC21PresetMinter *JRC21PresetMinterFilterer) FilterRoleGranted(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*JRC21PresetMinterRoleGrantedIterator, error) {

	var roleRule []interface{}
	for _, roleItem := range role {
		roleRule = append(roleRule, roleItem)
	}
	var accountRule []interface{}
	for _, accountItem := range account {
		accountRule = append(accountRule, accountItem)
	}
	var senderRule []interface{}
	for _, senderItem := range sender {
		senderRule = append(senderRule, senderItem)
	}

	logs, sub, err := _JRC21PresetMinter.contract.FilterLogs(opts, "RoleGranted", roleRule, accountRule, senderRule)
	if err != nil {
		return nil, err
	}
	return &JRC21PresetMinterRoleGrantedIterator{contract: _JRC21PresetMinter.contract, event: "RoleGranted", logs: logs, sub: sub}, nil
}

// WatchRoleGranted is a free log subscription operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d.
//
// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
func (_JRC21PresetMinter *JRC21PresetMinterFilterer) WatchRoleGranted(opts *bind.WatchOpts, sink chan<- *JRC21PresetMinterRoleGranted, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) {

	var roleRule []interface{}
	for _, roleItem := range role {
		roleRule = append(roleRule, roleItem)
	}
	var accountRule []interface{}
	for _, accountItem := range account {
		accountRule = append(accountRule, accountItem)
	}
	var senderRule []interface{}
	for _, senderItem := range sender {
		senderRule = append(senderRule, senderItem)
	}

	logs, sub, err := _JRC21PresetMinter.contract.WatchLogs(opts, "RoleGranted", roleRule, accountRule, senderRule)
	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(JRC21PresetMinterRoleGranted)
				if err := _JRC21PresetMinter.contract.UnpackLog(event, "RoleGranted", 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
}

// ParseRoleGranted is a log parse operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d.
//
// Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
func (_JRC21PresetMinter *JRC21PresetMinterFilterer) ParseRoleGranted(log types.Log) (*JRC21PresetMinterRoleGranted, error) {
	event := new(JRC21PresetMinterRoleGranted)
	if err := _JRC21PresetMinter.contract.UnpackLog(event, "RoleGranted", log); err != nil {
		return nil, err
	}
	event.Raw = log
	return event, nil
}

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

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

// JRC21PresetMinterRoleRevoked represents a RoleRevoked event raised by the JRC21PresetMinter contract.
type JRC21PresetMinterRoleRevoked struct {
	Role    [32]byte
	Account common.Address
	Sender  common.Address
	Raw     types.Log // Blockchain specific contextual infos
}

// FilterRoleRevoked is a free log retrieval operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b.
//
// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
func (_JRC21PresetMinter *JRC21PresetMinterFilterer) FilterRoleRevoked(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*JRC21PresetMinterRoleRevokedIterator, error) {

	var roleRule []interface{}
	for _, roleItem := range role {
		roleRule = append(roleRule, roleItem)
	}
	var accountRule []interface{}
	for _, accountItem := range account {
		accountRule = append(accountRule, accountItem)
	}
	var senderRule []interface{}
	for _, senderItem := range sender {
		senderRule = append(senderRule, senderItem)
	}

	logs, sub, err := _JRC21PresetMinter.contract.FilterLogs(opts, "RoleRevoked", roleRule, accountRule, senderRule)
	if err != nil {
		return nil, err
	}
	return &JRC21PresetMinterRoleRevokedIterator{contract: _JRC21PresetMinter.contract, event: "RoleRevoked", logs: logs, sub: sub}, nil
}

// WatchRoleRevoked is a free log subscription operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b.
//
// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
func (_JRC21PresetMinter *JRC21PresetMinterFilterer) WatchRoleRevoked(opts *bind.WatchOpts, sink chan<- *JRC21PresetMinterRoleRevoked, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) {

	var roleRule []interface{}
	for _, roleItem := range role {
		roleRule = append(roleRule, roleItem)
	}
	var accountRule []interface{}
	for _, accountItem := range account {
		accountRule = append(accountRule, accountItem)
	}
	var senderRule []interface{}
	for _, senderItem := range sender {
		senderRule = append(senderRule, senderItem)
	}

	logs, sub, err := _JRC21PresetMinter.contract.WatchLogs(opts, "RoleRevoked", roleRule, accountRule, senderRule)
	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(JRC21PresetMinterRoleRevoked)
				if err := _JRC21PresetMinter.contract.UnpackLog(event, "RoleRevoked", 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
}

// ParseRoleRevoked is a log parse operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b.
//
// Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
func (_JRC21PresetMinter *JRC21PresetMinterFilterer) ParseRoleRevoked(log types.Log) (*JRC21PresetMinterRoleRevoked, error) {
	event := new(JRC21PresetMinterRoleRevoked)
	if err := _JRC21PresetMinter.contract.UnpackLog(event, "RoleRevoked", log); err != nil {
		return nil, err
	}
	event.Raw = log
	return event, nil
}

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

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

// JRC21PresetMinterTransfer represents a Transfer event raised by the JRC21PresetMinter contract.
type JRC21PresetMinterTransfer struct {
	From  common.Address
	To    common.Address
	Value *big.Int
	Raw   types.Log // Blockchain specific contextual infos
}

// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
//
// Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
func (_JRC21PresetMinter *JRC21PresetMinterFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*JRC21PresetMinterTransferIterator, error) {

	var fromRule []interface{}
	for _, fromItem := range from {
		fromRule = append(fromRule, fromItem)
	}
	var toRule []interface{}
	for _, toItem := range to {
		toRule = append(toRule, toItem)
	}

	logs, sub, err := _JRC21PresetMinter.contract.FilterLogs(opts, "Transfer", fromRule, toRule)
	if err != nil {
		return nil, err
	}
	return &JRC21PresetMinterTransferIterator{contract: _JRC21PresetMinter.contract, event: "Transfer", logs: logs, sub: sub}, nil
}

// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
//
// Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
func (_JRC21PresetMinter *JRC21PresetMinterFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *JRC21PresetMinterTransfer, from []common.Address, to []common.Address) (event.Subscription, error) {

	var fromRule []interface{}
	for _, fromItem := range from {
		fromRule = append(fromRule, fromItem)
	}
	var toRule []interface{}
	for _, toItem := range to {
		toRule = append(toRule, toItem)
	}

	logs, sub, err := _JRC21PresetMinter.contract.WatchLogs(opts, "Transfer", fromRule, toRule)
	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(JRC21PresetMinterTransfer)
				if err := _JRC21PresetMinter.contract.UnpackLog(event, "Transfer", log); err != nil {
					return err
				}
				event.Raw = log

				select {
				case sink <- event:
				case err := <-sub.Err():
					return err
				case <-quit:
					return nil
				}
			case err := <-sub.Err():
				return err
			case <-quit:
				return nil
			}
		}
	}), nil
}

// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
//
// Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
func (_JRC21PresetMinter *JRC21PresetMinterFilterer) ParseTransfer(log types.Log) (*JRC21PresetMinterTransfer, error) {
	event := new(JRC21PresetMinterTransfer)
	if err := _JRC21PresetMinter.contract.UnpackLog(event, "Transfer", log); err != nil {
		return nil, err
	}
	event.Raw = log
	return event, nil
}

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

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

// JRC21PresetMinterUnpaused represents a Unpaused event raised by the JRC21PresetMinter contract.
type JRC21PresetMinterUnpaused struct {
	Account common.Address
	Raw     types.Log // Blockchain specific contextual infos
}

// FilterUnpaused is a free log retrieval operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa.
//
// Solidity: event Unpaused(address account)
func (_JRC21PresetMinter *JRC21PresetMinterFilterer) FilterUnpaused(opts *bind.FilterOpts) (*JRC21PresetMinterUnpausedIterator, error) {

	logs, sub, err := _JRC21PresetMinter.contract.FilterLogs(opts, "Unpaused")
	if err != nil {
		return nil, err
	}
	return &JRC21PresetMinterUnpausedIterator{contract: _JRC21PresetMinter.contract, event: "Unpaused", logs: logs, sub: sub}, nil
}

// WatchUnpaused is a free log subscription operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa.
//
// Solidity: event Unpaused(address account)
func (_JRC21PresetMinter *JRC21PresetMinterFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *JRC21PresetMinterUnpaused) (event.Subscription, error) {

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

// ParseUnpaused is a log parse operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa.
//
// Solidity: event Unpaused(address account)
func (_JRC21PresetMinter *JRC21PresetMinterFilterer) ParseUnpaused(log types.Log) (*JRC21PresetMinterUnpaused, error) {
	event := new(JRC21PresetMinterUnpaused)
	if err := _JRC21PresetMinter.contract.UnpackLog(event, "Unpaused", log); err != nil {
		return nil, err
	}
	event.Raw = log
	return event, nil
}
