github.com/klaytn/klaytn@v1.10.2/contracts/sc_erc721_no_uri/sc_nft_no_uri.go (about)

     1  // Code generated - DO NOT EDIT.
     2  // This file is a generated binding and any manual changes will be lost.
     3  
     4  package scnft_no_uri
     5  
     6  import (
     7  	"math/big"
     8  	"strings"
     9  
    10  	"github.com/klaytn/klaytn"
    11  	"github.com/klaytn/klaytn/accounts/abi"
    12  	"github.com/klaytn/klaytn/accounts/abi/bind"
    13  	"github.com/klaytn/klaytn/blockchain/types"
    14  	"github.com/klaytn/klaytn/common"
    15  	"github.com/klaytn/klaytn/event"
    16  )
    17  
    18  // Reference imports to suppress errors if they are not otherwise used.
    19  var (
    20  	_ = big.NewInt
    21  	_ = strings.NewReader
    22  	_ = klaytn.NotFound
    23  	_ = bind.Bind
    24  	_ = common.Big1
    25  	_ = types.BloomLookup
    26  	_ = event.NewSubscription
    27  )
    28  
    29  // AddressABI is the input ABI used to generate the binding from.
    30  const AddressABI = "[]"
    31  
    32  // AddressBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
    33  const AddressBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820b7534b8b203852d9ead56352219b5abb5424533d9bb1b9cf84c0b1d15d11fee50029`
    34  
    35  // AddressBin is the compiled bytecode used for deploying new contracts.
    36  var AddressBin = "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820b7534b8b203852d9ead56352219b5abb5424533d9bb1b9cf84c0b1d15d11fee50029"
    37  
    38  // DeployAddress deploys a new Klaytn contract, binding an instance of Address to it.
    39  func DeployAddress(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Address, error) {
    40  	parsed, err := abi.JSON(strings.NewReader(AddressABI))
    41  	if err != nil {
    42  		return common.Address{}, nil, nil, err
    43  	}
    44  
    45  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(AddressBin), backend)
    46  	if err != nil {
    47  		return common.Address{}, nil, nil, err
    48  	}
    49  	return address, tx, &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil
    50  }
    51  
    52  // Address is an auto generated Go binding around a Klaytn contract.
    53  type Address struct {
    54  	AddressCaller     // Read-only binding to the contract
    55  	AddressTransactor // Write-only binding to the contract
    56  	AddressFilterer   // Log filterer for contract events
    57  }
    58  
    59  // AddressCaller is an auto generated read-only Go binding around a Klaytn contract.
    60  type AddressCaller struct {
    61  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    62  }
    63  
    64  // AddressTransactor is an auto generated write-only Go binding around a Klaytn contract.
    65  type AddressTransactor struct {
    66  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    67  }
    68  
    69  // AddressFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
    70  type AddressFilterer struct {
    71  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    72  }
    73  
    74  // AddressSession is an auto generated Go binding around a Klaytn contract,
    75  // with pre-set call and transact options.
    76  type AddressSession struct {
    77  	Contract     *Address          // Generic contract binding to set the session for
    78  	CallOpts     bind.CallOpts     // Call options to use throughout this session
    79  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
    80  }
    81  
    82  // AddressCallerSession is an auto generated read-only Go binding around a Klaytn contract,
    83  // with pre-set call options.
    84  type AddressCallerSession struct {
    85  	Contract *AddressCaller // Generic contract caller binding to set the session for
    86  	CallOpts bind.CallOpts  // Call options to use throughout this session
    87  }
    88  
    89  // AddressTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
    90  // with pre-set transact options.
    91  type AddressTransactorSession struct {
    92  	Contract     *AddressTransactor // Generic contract transactor binding to set the session for
    93  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
    94  }
    95  
    96  // AddressRaw is an auto generated low-level Go binding around a Klaytn contract.
    97  type AddressRaw struct {
    98  	Contract *Address // Generic contract binding to access the raw methods on
    99  }
   100  
   101  // AddressCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
   102  type AddressCallerRaw struct {
   103  	Contract *AddressCaller // Generic read-only contract binding to access the raw methods on
   104  }
   105  
   106  // AddressTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
   107  type AddressTransactorRaw struct {
   108  	Contract *AddressTransactor // Generic write-only contract binding to access the raw methods on
   109  }
   110  
   111  // NewAddress creates a new instance of Address, bound to a specific deployed contract.
   112  func NewAddress(address common.Address, backend bind.ContractBackend) (*Address, error) {
   113  	contract, err := bindAddress(address, backend, backend, backend)
   114  	if err != nil {
   115  		return nil, err
   116  	}
   117  	return &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil
   118  }
   119  
   120  // NewAddressCaller creates a new read-only instance of Address, bound to a specific deployed contract.
   121  func NewAddressCaller(address common.Address, caller bind.ContractCaller) (*AddressCaller, error) {
   122  	contract, err := bindAddress(address, caller, nil, nil)
   123  	if err != nil {
   124  		return nil, err
   125  	}
   126  	return &AddressCaller{contract: contract}, nil
   127  }
   128  
   129  // NewAddressTransactor creates a new write-only instance of Address, bound to a specific deployed contract.
   130  func NewAddressTransactor(address common.Address, transactor bind.ContractTransactor) (*AddressTransactor, error) {
   131  	contract, err := bindAddress(address, nil, transactor, nil)
   132  	if err != nil {
   133  		return nil, err
   134  	}
   135  	return &AddressTransactor{contract: contract}, nil
   136  }
   137  
   138  // NewAddressFilterer creates a new log filterer instance of Address, bound to a specific deployed contract.
   139  func NewAddressFilterer(address common.Address, filterer bind.ContractFilterer) (*AddressFilterer, error) {
   140  	contract, err := bindAddress(address, nil, nil, filterer)
   141  	if err != nil {
   142  		return nil, err
   143  	}
   144  	return &AddressFilterer{contract: contract}, nil
   145  }
   146  
   147  // bindAddress binds a generic wrapper to an already deployed contract.
   148  func bindAddress(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   149  	parsed, err := abi.JSON(strings.NewReader(AddressABI))
   150  	if err != nil {
   151  		return nil, err
   152  	}
   153  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   154  }
   155  
   156  // Call invokes the (constant) contract method with params as input values and
   157  // sets the output to result. The result type might be a single field for simple
   158  // returns, a slice of interfaces for anonymous returns and a struct for named
   159  // returns.
   160  func (_Address *AddressRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   161  	return _Address.Contract.AddressCaller.contract.Call(opts, result, method, params...)
   162  }
   163  
   164  // Transfer initiates a plain transaction to move funds to the contract, calling
   165  // its default method if one is available.
   166  func (_Address *AddressRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   167  	return _Address.Contract.AddressTransactor.contract.Transfer(opts)
   168  }
   169  
   170  // Transact invokes the (paid) contract method with params as input values.
   171  func (_Address *AddressRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   172  	return _Address.Contract.AddressTransactor.contract.Transact(opts, method, params...)
   173  }
   174  
   175  // Call invokes the (constant) contract method with params as input values and
   176  // sets the output to result. The result type might be a single field for simple
   177  // returns, a slice of interfaces for anonymous returns and a struct for named
   178  // returns.
   179  func (_Address *AddressCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   180  	return _Address.Contract.contract.Call(opts, result, method, params...)
   181  }
   182  
   183  // Transfer initiates a plain transaction to move funds to the contract, calling
   184  // its default method if one is available.
   185  func (_Address *AddressTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   186  	return _Address.Contract.contract.Transfer(opts)
   187  }
   188  
   189  // Transact invokes the (paid) contract method with params as input values.
   190  func (_Address *AddressTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   191  	return _Address.Contract.contract.Transact(opts, method, params...)
   192  }
   193  
   194  // CountersABI is the input ABI used to generate the binding from.
   195  const CountersABI = "[]"
   196  
   197  // CountersBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
   198  const CountersBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058207329cab25de591c35947480820e66bd7e2d232979872616f21ac6e5783a017700029`
   199  
   200  // CountersBin is the compiled bytecode used for deploying new contracts.
   201  var CountersBin = "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058207329cab25de591c35947480820e66bd7e2d232979872616f21ac6e5783a017700029"
   202  
   203  // DeployCounters deploys a new Klaytn contract, binding an instance of Counters to it.
   204  func DeployCounters(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Counters, error) {
   205  	parsed, err := abi.JSON(strings.NewReader(CountersABI))
   206  	if err != nil {
   207  		return common.Address{}, nil, nil, err
   208  	}
   209  
   210  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(CountersBin), backend)
   211  	if err != nil {
   212  		return common.Address{}, nil, nil, err
   213  	}
   214  	return address, tx, &Counters{CountersCaller: CountersCaller{contract: contract}, CountersTransactor: CountersTransactor{contract: contract}, CountersFilterer: CountersFilterer{contract: contract}}, nil
   215  }
   216  
   217  // Counters is an auto generated Go binding around a Klaytn contract.
   218  type Counters struct {
   219  	CountersCaller     // Read-only binding to the contract
   220  	CountersTransactor // Write-only binding to the contract
   221  	CountersFilterer   // Log filterer for contract events
   222  }
   223  
   224  // CountersCaller is an auto generated read-only Go binding around a Klaytn contract.
   225  type CountersCaller struct {
   226  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   227  }
   228  
   229  // CountersTransactor is an auto generated write-only Go binding around a Klaytn contract.
   230  type CountersTransactor struct {
   231  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   232  }
   233  
   234  // CountersFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
   235  type CountersFilterer struct {
   236  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   237  }
   238  
   239  // CountersSession is an auto generated Go binding around a Klaytn contract,
   240  // with pre-set call and transact options.
   241  type CountersSession struct {
   242  	Contract     *Counters         // Generic contract binding to set the session for
   243  	CallOpts     bind.CallOpts     // Call options to use throughout this session
   244  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   245  }
   246  
   247  // CountersCallerSession is an auto generated read-only Go binding around a Klaytn contract,
   248  // with pre-set call options.
   249  type CountersCallerSession struct {
   250  	Contract *CountersCaller // Generic contract caller binding to set the session for
   251  	CallOpts bind.CallOpts   // Call options to use throughout this session
   252  }
   253  
   254  // CountersTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
   255  // with pre-set transact options.
   256  type CountersTransactorSession struct {
   257  	Contract     *CountersTransactor // Generic contract transactor binding to set the session for
   258  	TransactOpts bind.TransactOpts   // Transaction auth options to use throughout this session
   259  }
   260  
   261  // CountersRaw is an auto generated low-level Go binding around a Klaytn contract.
   262  type CountersRaw struct {
   263  	Contract *Counters // Generic contract binding to access the raw methods on
   264  }
   265  
   266  // CountersCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
   267  type CountersCallerRaw struct {
   268  	Contract *CountersCaller // Generic read-only contract binding to access the raw methods on
   269  }
   270  
   271  // CountersTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
   272  type CountersTransactorRaw struct {
   273  	Contract *CountersTransactor // Generic write-only contract binding to access the raw methods on
   274  }
   275  
   276  // NewCounters creates a new instance of Counters, bound to a specific deployed contract.
   277  func NewCounters(address common.Address, backend bind.ContractBackend) (*Counters, error) {
   278  	contract, err := bindCounters(address, backend, backend, backend)
   279  	if err != nil {
   280  		return nil, err
   281  	}
   282  	return &Counters{CountersCaller: CountersCaller{contract: contract}, CountersTransactor: CountersTransactor{contract: contract}, CountersFilterer: CountersFilterer{contract: contract}}, nil
   283  }
   284  
   285  // NewCountersCaller creates a new read-only instance of Counters, bound to a specific deployed contract.
   286  func NewCountersCaller(address common.Address, caller bind.ContractCaller) (*CountersCaller, error) {
   287  	contract, err := bindCounters(address, caller, nil, nil)
   288  	if err != nil {
   289  		return nil, err
   290  	}
   291  	return &CountersCaller{contract: contract}, nil
   292  }
   293  
   294  // NewCountersTransactor creates a new write-only instance of Counters, bound to a specific deployed contract.
   295  func NewCountersTransactor(address common.Address, transactor bind.ContractTransactor) (*CountersTransactor, error) {
   296  	contract, err := bindCounters(address, nil, transactor, nil)
   297  	if err != nil {
   298  		return nil, err
   299  	}
   300  	return &CountersTransactor{contract: contract}, nil
   301  }
   302  
   303  // NewCountersFilterer creates a new log filterer instance of Counters, bound to a specific deployed contract.
   304  func NewCountersFilterer(address common.Address, filterer bind.ContractFilterer) (*CountersFilterer, error) {
   305  	contract, err := bindCounters(address, nil, nil, filterer)
   306  	if err != nil {
   307  		return nil, err
   308  	}
   309  	return &CountersFilterer{contract: contract}, nil
   310  }
   311  
   312  // bindCounters binds a generic wrapper to an already deployed contract.
   313  func bindCounters(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   314  	parsed, err := abi.JSON(strings.NewReader(CountersABI))
   315  	if err != nil {
   316  		return nil, err
   317  	}
   318  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   319  }
   320  
   321  // Call invokes the (constant) contract method with params as input values and
   322  // sets the output to result. The result type might be a single field for simple
   323  // returns, a slice of interfaces for anonymous returns and a struct for named
   324  // returns.
   325  func (_Counters *CountersRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   326  	return _Counters.Contract.CountersCaller.contract.Call(opts, result, method, params...)
   327  }
   328  
   329  // Transfer initiates a plain transaction to move funds to the contract, calling
   330  // its default method if one is available.
   331  func (_Counters *CountersRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   332  	return _Counters.Contract.CountersTransactor.contract.Transfer(opts)
   333  }
   334  
   335  // Transact invokes the (paid) contract method with params as input values.
   336  func (_Counters *CountersRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   337  	return _Counters.Contract.CountersTransactor.contract.Transact(opts, method, params...)
   338  }
   339  
   340  // Call invokes the (constant) contract method with params as input values and
   341  // sets the output to result. The result type might be a single field for simple
   342  // returns, a slice of interfaces for anonymous returns and a struct for named
   343  // returns.
   344  func (_Counters *CountersCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   345  	return _Counters.Contract.contract.Call(opts, result, method, params...)
   346  }
   347  
   348  // Transfer initiates a plain transaction to move funds to the contract, calling
   349  // its default method if one is available.
   350  func (_Counters *CountersTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   351  	return _Counters.Contract.contract.Transfer(opts)
   352  }
   353  
   354  // Transact invokes the (paid) contract method with params as input values.
   355  func (_Counters *CountersTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   356  	return _Counters.Contract.contract.Transact(opts, method, params...)
   357  }
   358  
   359  // ERC165ABI is the input ABI used to generate the binding from.
   360  const ERC165ABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}]"
   361  
   362  // ERC165BinRuntime is the compiled bytecode used for adding genesis block without deploying code.
   363  const ERC165BinRuntime = ``
   364  
   365  // ERC165FuncSigs maps the 4-byte function signature to its string representation.
   366  var ERC165FuncSigs = map[string]string{
   367  	"01ffc9a7": "supportsInterface(bytes4)",
   368  }
   369  
   370  // ERC165 is an auto generated Go binding around a Klaytn contract.
   371  type ERC165 struct {
   372  	ERC165Caller     // Read-only binding to the contract
   373  	ERC165Transactor // Write-only binding to the contract
   374  	ERC165Filterer   // Log filterer for contract events
   375  }
   376  
   377  // ERC165Caller is an auto generated read-only Go binding around a Klaytn contract.
   378  type ERC165Caller struct {
   379  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   380  }
   381  
   382  // ERC165Transactor is an auto generated write-only Go binding around a Klaytn contract.
   383  type ERC165Transactor struct {
   384  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   385  }
   386  
   387  // ERC165Filterer is an auto generated log filtering Go binding around a Klaytn contract events.
   388  type ERC165Filterer struct {
   389  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   390  }
   391  
   392  // ERC165Session is an auto generated Go binding around a Klaytn contract,
   393  // with pre-set call and transact options.
   394  type ERC165Session struct {
   395  	Contract     *ERC165           // Generic contract binding to set the session for
   396  	CallOpts     bind.CallOpts     // Call options to use throughout this session
   397  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   398  }
   399  
   400  // ERC165CallerSession is an auto generated read-only Go binding around a Klaytn contract,
   401  // with pre-set call options.
   402  type ERC165CallerSession struct {
   403  	Contract *ERC165Caller // Generic contract caller binding to set the session for
   404  	CallOpts bind.CallOpts // Call options to use throughout this session
   405  }
   406  
   407  // ERC165TransactorSession is an auto generated write-only Go binding around a Klaytn contract,
   408  // with pre-set transact options.
   409  type ERC165TransactorSession struct {
   410  	Contract     *ERC165Transactor // Generic contract transactor binding to set the session for
   411  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   412  }
   413  
   414  // ERC165Raw is an auto generated low-level Go binding around a Klaytn contract.
   415  type ERC165Raw struct {
   416  	Contract *ERC165 // Generic contract binding to access the raw methods on
   417  }
   418  
   419  // ERC165CallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
   420  type ERC165CallerRaw struct {
   421  	Contract *ERC165Caller // Generic read-only contract binding to access the raw methods on
   422  }
   423  
   424  // ERC165TransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
   425  type ERC165TransactorRaw struct {
   426  	Contract *ERC165Transactor // Generic write-only contract binding to access the raw methods on
   427  }
   428  
   429  // NewERC165 creates a new instance of ERC165, bound to a specific deployed contract.
   430  func NewERC165(address common.Address, backend bind.ContractBackend) (*ERC165, error) {
   431  	contract, err := bindERC165(address, backend, backend, backend)
   432  	if err != nil {
   433  		return nil, err
   434  	}
   435  	return &ERC165{ERC165Caller: ERC165Caller{contract: contract}, ERC165Transactor: ERC165Transactor{contract: contract}, ERC165Filterer: ERC165Filterer{contract: contract}}, nil
   436  }
   437  
   438  // NewERC165Caller creates a new read-only instance of ERC165, bound to a specific deployed contract.
   439  func NewERC165Caller(address common.Address, caller bind.ContractCaller) (*ERC165Caller, error) {
   440  	contract, err := bindERC165(address, caller, nil, nil)
   441  	if err != nil {
   442  		return nil, err
   443  	}
   444  	return &ERC165Caller{contract: contract}, nil
   445  }
   446  
   447  // NewERC165Transactor creates a new write-only instance of ERC165, bound to a specific deployed contract.
   448  func NewERC165Transactor(address common.Address, transactor bind.ContractTransactor) (*ERC165Transactor, error) {
   449  	contract, err := bindERC165(address, nil, transactor, nil)
   450  	if err != nil {
   451  		return nil, err
   452  	}
   453  	return &ERC165Transactor{contract: contract}, nil
   454  }
   455  
   456  // NewERC165Filterer creates a new log filterer instance of ERC165, bound to a specific deployed contract.
   457  func NewERC165Filterer(address common.Address, filterer bind.ContractFilterer) (*ERC165Filterer, error) {
   458  	contract, err := bindERC165(address, nil, nil, filterer)
   459  	if err != nil {
   460  		return nil, err
   461  	}
   462  	return &ERC165Filterer{contract: contract}, nil
   463  }
   464  
   465  // bindERC165 binds a generic wrapper to an already deployed contract.
   466  func bindERC165(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   467  	parsed, err := abi.JSON(strings.NewReader(ERC165ABI))
   468  	if err != nil {
   469  		return nil, err
   470  	}
   471  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   472  }
   473  
   474  // Call invokes the (constant) contract method with params as input values and
   475  // sets the output to result. The result type might be a single field for simple
   476  // returns, a slice of interfaces for anonymous returns and a struct for named
   477  // returns.
   478  func (_ERC165 *ERC165Raw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   479  	return _ERC165.Contract.ERC165Caller.contract.Call(opts, result, method, params...)
   480  }
   481  
   482  // Transfer initiates a plain transaction to move funds to the contract, calling
   483  // its default method if one is available.
   484  func (_ERC165 *ERC165Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   485  	return _ERC165.Contract.ERC165Transactor.contract.Transfer(opts)
   486  }
   487  
   488  // Transact invokes the (paid) contract method with params as input values.
   489  func (_ERC165 *ERC165Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   490  	return _ERC165.Contract.ERC165Transactor.contract.Transact(opts, method, params...)
   491  }
   492  
   493  // Call invokes the (constant) contract method with params as input values and
   494  // sets the output to result. The result type might be a single field for simple
   495  // returns, a slice of interfaces for anonymous returns and a struct for named
   496  // returns.
   497  func (_ERC165 *ERC165CallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   498  	return _ERC165.Contract.contract.Call(opts, result, method, params...)
   499  }
   500  
   501  // Transfer initiates a plain transaction to move funds to the contract, calling
   502  // its default method if one is available.
   503  func (_ERC165 *ERC165TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   504  	return _ERC165.Contract.contract.Transfer(opts)
   505  }
   506  
   507  // Transact invokes the (paid) contract method with params as input values.
   508  func (_ERC165 *ERC165TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   509  	return _ERC165.Contract.contract.Transact(opts, method, params...)
   510  }
   511  
   512  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
   513  //
   514  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
   515  func (_ERC165 *ERC165Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
   516  	var (
   517  		ret0 = new(bool)
   518  	)
   519  	out := ret0
   520  	err := _ERC165.contract.Call(opts, out, "supportsInterface", interfaceId)
   521  	return *ret0, err
   522  }
   523  
   524  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
   525  //
   526  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
   527  func (_ERC165 *ERC165Session) SupportsInterface(interfaceId [4]byte) (bool, error) {
   528  	return _ERC165.Contract.SupportsInterface(&_ERC165.CallOpts, interfaceId)
   529  }
   530  
   531  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
   532  //
   533  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
   534  func (_ERC165 *ERC165CallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
   535  	return _ERC165.Contract.SupportsInterface(&_ERC165.CallOpts, interfaceId)
   536  }
   537  
   538  // ERC721ABI is the input ABI used to generate the binding from.
   539  const ERC721ABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"}]"
   540  
   541  // ERC721BinRuntime is the compiled bytecode used for adding genesis block without deploying code.
   542  const ERC721BinRuntime = `608060405234801561001057600080fd5b506004361061009e5760003560e01c80636352211e116100665780636352211e146101b157806370a08231146101ce578063a22cb46514610206578063b88d4fde14610234578063e985e9c5146102fa5761009e565b806301ffc9a7146100a3578063081812fc146100de578063095ea7b31461011757806323b872dd1461014557806342842e0e1461017b575b600080fd5b6100ca600480360360208110156100b957600080fd5b50356001600160e01b031916610328565b604080519115158252519081900360200190f35b6100fb600480360360208110156100f457600080fd5b5035610347565b604080516001600160a01b039092168252519081900360200190f35b6101436004803603604081101561012d57600080fd5b506001600160a01b0381351690602001356103ac565b005b6101436004803603606081101561015b57600080fd5b506001600160a01b038135811691602081013590911690604001356104c3565b6101436004803603606081101561019157600080fd5b506001600160a01b0381358116916020810135909116906040013561051b565b6100fb600480360360208110156101c757600080fd5b5035610536565b6101f4600480360360208110156101e457600080fd5b50356001600160a01b0316610593565b60408051918252519081900360200190f35b6101436004803603604081101561021c57600080fd5b506001600160a01b03813516906020013515156105fe565b6101436004803603608081101561024a57600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561028557600080fd5b82018360208201111561029757600080fd5b803590602001918460018302840111640100000000831117156102b957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506106cd945050505050565b6100ca6004803603604081101561031057600080fd5b506001600160a01b0381358116916020013516610728565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061035282610756565b61039057604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610c72602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006103b782610536565b9050806001600160a01b0316836001600160a01b0316141561040d57604051600160e51b62461bcd028152600401808060200182810382526021815260200180610cc76021913960400191505060405180910390fd5b336001600160a01b038216148061042957506104298133610728565b61046757604051600160e51b62461bcd028152600401808060200182810382526038815260200180610be76038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6104cd3382610773565b61050b57604051600160e51b62461bcd028152600401808060200182810382526031815260200180610ce86031913960400191505060405180910390fd5b61051683838361081a565b505050565b610516838383604051806020016040528060008152506106cd565b6000818152600160205260408120546001600160a01b03168061058d57604051600160e51b62461bcd028152600401808060200182810382526029815260200180610c496029913960400191505060405180910390fd5b92915050565b60006001600160a01b0382166105dd57604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610c1f602a913960400191505060405180910390fd5b6001600160a01b038216600090815260036020526040902061058d90610964565b6001600160a01b03821633141561065f5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6106d88484846104c3565b6106e484848484610968565b61072257604051600160e51b62461bcd028152600401808060200182810382526032815260200180610b656032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b600061077e82610756565b6107bc57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610bbb602c913960400191505060405180910390fd5b60006107c783610536565b9050806001600160a01b0316846001600160a01b031614806108025750836001600160a01b03166107f784610347565b6001600160a01b0316145b8061081257506108128185610728565b949350505050565b826001600160a01b031661082d82610536565b6001600160a01b03161461087557604051600160e51b62461bcd028152600401808060200182810382526029815260200180610c9e6029913960400191505060405180910390fd5b6001600160a01b0382166108bd57604051600160e51b62461bcd028152600401808060200182810382526024815260200180610b976024913960400191505060405180910390fd5b6108c681610aa1565b6001600160a01b03831660009081526003602052604090206108e790610ade565b6001600160a01b038216600090815260036020526040902061090890610af5565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5490565b600061097c846001600160a01b0316610afe565b61098857506001610812565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a055781810151838201526020016109ed565b50505050905090810190601f168015610a325780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610a5457600080fd5b505af1158015610a68573d6000803e3d6000fd5b505050506040513d6020811015610a7e57600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b031615610adb57600081815260026020526040902080546001600160a01b03191690555b50565b8054610af190600163ffffffff610b0416565b9055565b80546001019055565b3b151590565b600082821115610b5e5760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a72305820729ef652fa5b3de930aa2053816415426d90b8ede7f21175faa42825db4887780029`
   543  
   544  // ERC721FuncSigs maps the 4-byte function signature to its string representation.
   545  var ERC721FuncSigs = map[string]string{
   546  	"095ea7b3": "approve(address,uint256)",
   547  	"70a08231": "balanceOf(address)",
   548  	"081812fc": "getApproved(uint256)",
   549  	"e985e9c5": "isApprovedForAll(address,address)",
   550  	"6352211e": "ownerOf(uint256)",
   551  	"42842e0e": "safeTransferFrom(address,address,uint256)",
   552  	"b88d4fde": "safeTransferFrom(address,address,uint256,bytes)",
   553  	"a22cb465": "setApprovalForAll(address,bool)",
   554  	"01ffc9a7": "supportsInterface(bytes4)",
   555  	"23b872dd": "transferFrom(address,address,uint256)",
   556  }
   557  
   558  // ERC721Bin is the compiled bytecode used for deploying new contracts.
   559  var ERC721Bin = "0x608060405234801561001057600080fd5b506100276301ffc9a760e01b61004260201b60201c565b61003d6380ac58cd60e01b61004260201b60201c565b610110565b7fffffffff0000000000000000000000000000000000000000000000000000000080821614156100d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b610d448061011f6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80636352211e116100665780636352211e146101b157806370a08231146101ce578063a22cb46514610206578063b88d4fde14610234578063e985e9c5146102fa5761009e565b806301ffc9a7146100a3578063081812fc146100de578063095ea7b31461011757806323b872dd1461014557806342842e0e1461017b575b600080fd5b6100ca600480360360208110156100b957600080fd5b50356001600160e01b031916610328565b604080519115158252519081900360200190f35b6100fb600480360360208110156100f457600080fd5b5035610347565b604080516001600160a01b039092168252519081900360200190f35b6101436004803603604081101561012d57600080fd5b506001600160a01b0381351690602001356103ac565b005b6101436004803603606081101561015b57600080fd5b506001600160a01b038135811691602081013590911690604001356104c3565b6101436004803603606081101561019157600080fd5b506001600160a01b0381358116916020810135909116906040013561051b565b6100fb600480360360208110156101c757600080fd5b5035610536565b6101f4600480360360208110156101e457600080fd5b50356001600160a01b0316610593565b60408051918252519081900360200190f35b6101436004803603604081101561021c57600080fd5b506001600160a01b03813516906020013515156105fe565b6101436004803603608081101561024a57600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561028557600080fd5b82018360208201111561029757600080fd5b803590602001918460018302840111640100000000831117156102b957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506106cd945050505050565b6100ca6004803603604081101561031057600080fd5b506001600160a01b0381358116916020013516610728565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061035282610756565b61039057604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610c72602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006103b782610536565b9050806001600160a01b0316836001600160a01b0316141561040d57604051600160e51b62461bcd028152600401808060200182810382526021815260200180610cc76021913960400191505060405180910390fd5b336001600160a01b038216148061042957506104298133610728565b61046757604051600160e51b62461bcd028152600401808060200182810382526038815260200180610be76038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6104cd3382610773565b61050b57604051600160e51b62461bcd028152600401808060200182810382526031815260200180610ce86031913960400191505060405180910390fd5b61051683838361081a565b505050565b610516838383604051806020016040528060008152506106cd565b6000818152600160205260408120546001600160a01b03168061058d57604051600160e51b62461bcd028152600401808060200182810382526029815260200180610c496029913960400191505060405180910390fd5b92915050565b60006001600160a01b0382166105dd57604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610c1f602a913960400191505060405180910390fd5b6001600160a01b038216600090815260036020526040902061058d90610964565b6001600160a01b03821633141561065f5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6106d88484846104c3565b6106e484848484610968565b61072257604051600160e51b62461bcd028152600401808060200182810382526032815260200180610b656032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b600061077e82610756565b6107bc57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610bbb602c913960400191505060405180910390fd5b60006107c783610536565b9050806001600160a01b0316846001600160a01b031614806108025750836001600160a01b03166107f784610347565b6001600160a01b0316145b8061081257506108128185610728565b949350505050565b826001600160a01b031661082d82610536565b6001600160a01b03161461087557604051600160e51b62461bcd028152600401808060200182810382526029815260200180610c9e6029913960400191505060405180910390fd5b6001600160a01b0382166108bd57604051600160e51b62461bcd028152600401808060200182810382526024815260200180610b976024913960400191505060405180910390fd5b6108c681610aa1565b6001600160a01b03831660009081526003602052604090206108e790610ade565b6001600160a01b038216600090815260036020526040902061090890610af5565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5490565b600061097c846001600160a01b0316610afe565b61098857506001610812565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a055781810151838201526020016109ed565b50505050905090810190601f168015610a325780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610a5457600080fd5b505af1158015610a68573d6000803e3d6000fd5b505050506040513d6020811015610a7e57600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b031615610adb57600081815260026020526040902080546001600160a01b03191690555b50565b8054610af190600163ffffffff610b0416565b9055565b80546001019055565b3b151590565b600082821115610b5e5760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a72305820729ef652fa5b3de930aa2053816415426d90b8ede7f21175faa42825db4887780029"
   560  
   561  // DeployERC721 deploys a new Klaytn contract, binding an instance of ERC721 to it.
   562  func DeployERC721(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC721, error) {
   563  	parsed, err := abi.JSON(strings.NewReader(ERC721ABI))
   564  	if err != nil {
   565  		return common.Address{}, nil, nil, err
   566  	}
   567  
   568  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(ERC721Bin), backend)
   569  	if err != nil {
   570  		return common.Address{}, nil, nil, err
   571  	}
   572  	return address, tx, &ERC721{ERC721Caller: ERC721Caller{contract: contract}, ERC721Transactor: ERC721Transactor{contract: contract}, ERC721Filterer: ERC721Filterer{contract: contract}}, nil
   573  }
   574  
   575  // ERC721 is an auto generated Go binding around a Klaytn contract.
   576  type ERC721 struct {
   577  	ERC721Caller     // Read-only binding to the contract
   578  	ERC721Transactor // Write-only binding to the contract
   579  	ERC721Filterer   // Log filterer for contract events
   580  }
   581  
   582  // ERC721Caller is an auto generated read-only Go binding around a Klaytn contract.
   583  type ERC721Caller struct {
   584  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   585  }
   586  
   587  // ERC721Transactor is an auto generated write-only Go binding around a Klaytn contract.
   588  type ERC721Transactor struct {
   589  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   590  }
   591  
   592  // ERC721Filterer is an auto generated log filtering Go binding around a Klaytn contract events.
   593  type ERC721Filterer struct {
   594  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   595  }
   596  
   597  // ERC721Session is an auto generated Go binding around a Klaytn contract,
   598  // with pre-set call and transact options.
   599  type ERC721Session struct {
   600  	Contract     *ERC721           // Generic contract binding to set the session for
   601  	CallOpts     bind.CallOpts     // Call options to use throughout this session
   602  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   603  }
   604  
   605  // ERC721CallerSession is an auto generated read-only Go binding around a Klaytn contract,
   606  // with pre-set call options.
   607  type ERC721CallerSession struct {
   608  	Contract *ERC721Caller // Generic contract caller binding to set the session for
   609  	CallOpts bind.CallOpts // Call options to use throughout this session
   610  }
   611  
   612  // ERC721TransactorSession is an auto generated write-only Go binding around a Klaytn contract,
   613  // with pre-set transact options.
   614  type ERC721TransactorSession struct {
   615  	Contract     *ERC721Transactor // Generic contract transactor binding to set the session for
   616  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   617  }
   618  
   619  // ERC721Raw is an auto generated low-level Go binding around a Klaytn contract.
   620  type ERC721Raw struct {
   621  	Contract *ERC721 // Generic contract binding to access the raw methods on
   622  }
   623  
   624  // ERC721CallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
   625  type ERC721CallerRaw struct {
   626  	Contract *ERC721Caller // Generic read-only contract binding to access the raw methods on
   627  }
   628  
   629  // ERC721TransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
   630  type ERC721TransactorRaw struct {
   631  	Contract *ERC721Transactor // Generic write-only contract binding to access the raw methods on
   632  }
   633  
   634  // NewERC721 creates a new instance of ERC721, bound to a specific deployed contract.
   635  func NewERC721(address common.Address, backend bind.ContractBackend) (*ERC721, error) {
   636  	contract, err := bindERC721(address, backend, backend, backend)
   637  	if err != nil {
   638  		return nil, err
   639  	}
   640  	return &ERC721{ERC721Caller: ERC721Caller{contract: contract}, ERC721Transactor: ERC721Transactor{contract: contract}, ERC721Filterer: ERC721Filterer{contract: contract}}, nil
   641  }
   642  
   643  // NewERC721Caller creates a new read-only instance of ERC721, bound to a specific deployed contract.
   644  func NewERC721Caller(address common.Address, caller bind.ContractCaller) (*ERC721Caller, error) {
   645  	contract, err := bindERC721(address, caller, nil, nil)
   646  	if err != nil {
   647  		return nil, err
   648  	}
   649  	return &ERC721Caller{contract: contract}, nil
   650  }
   651  
   652  // NewERC721Transactor creates a new write-only instance of ERC721, bound to a specific deployed contract.
   653  func NewERC721Transactor(address common.Address, transactor bind.ContractTransactor) (*ERC721Transactor, error) {
   654  	contract, err := bindERC721(address, nil, transactor, nil)
   655  	if err != nil {
   656  		return nil, err
   657  	}
   658  	return &ERC721Transactor{contract: contract}, nil
   659  }
   660  
   661  // NewERC721Filterer creates a new log filterer instance of ERC721, bound to a specific deployed contract.
   662  func NewERC721Filterer(address common.Address, filterer bind.ContractFilterer) (*ERC721Filterer, error) {
   663  	contract, err := bindERC721(address, nil, nil, filterer)
   664  	if err != nil {
   665  		return nil, err
   666  	}
   667  	return &ERC721Filterer{contract: contract}, nil
   668  }
   669  
   670  // bindERC721 binds a generic wrapper to an already deployed contract.
   671  func bindERC721(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   672  	parsed, err := abi.JSON(strings.NewReader(ERC721ABI))
   673  	if err != nil {
   674  		return nil, err
   675  	}
   676  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   677  }
   678  
   679  // Call invokes the (constant) contract method with params as input values and
   680  // sets the output to result. The result type might be a single field for simple
   681  // returns, a slice of interfaces for anonymous returns and a struct for named
   682  // returns.
   683  func (_ERC721 *ERC721Raw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   684  	return _ERC721.Contract.ERC721Caller.contract.Call(opts, result, method, params...)
   685  }
   686  
   687  // Transfer initiates a plain transaction to move funds to the contract, calling
   688  // its default method if one is available.
   689  func (_ERC721 *ERC721Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   690  	return _ERC721.Contract.ERC721Transactor.contract.Transfer(opts)
   691  }
   692  
   693  // Transact invokes the (paid) contract method with params as input values.
   694  func (_ERC721 *ERC721Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   695  	return _ERC721.Contract.ERC721Transactor.contract.Transact(opts, method, params...)
   696  }
   697  
   698  // Call invokes the (constant) contract method with params as input values and
   699  // sets the output to result. The result type might be a single field for simple
   700  // returns, a slice of interfaces for anonymous returns and a struct for named
   701  // returns.
   702  func (_ERC721 *ERC721CallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   703  	return _ERC721.Contract.contract.Call(opts, result, method, params...)
   704  }
   705  
   706  // Transfer initiates a plain transaction to move funds to the contract, calling
   707  // its default method if one is available.
   708  func (_ERC721 *ERC721TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   709  	return _ERC721.Contract.contract.Transfer(opts)
   710  }
   711  
   712  // Transact invokes the (paid) contract method with params as input values.
   713  func (_ERC721 *ERC721TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   714  	return _ERC721.Contract.contract.Transact(opts, method, params...)
   715  }
   716  
   717  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
   718  //
   719  // Solidity: function balanceOf(address owner) view returns(uint256)
   720  func (_ERC721 *ERC721Caller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) {
   721  	var (
   722  		ret0 = new(*big.Int)
   723  	)
   724  	out := ret0
   725  	err := _ERC721.contract.Call(opts, out, "balanceOf", owner)
   726  	return *ret0, err
   727  }
   728  
   729  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
   730  //
   731  // Solidity: function balanceOf(address owner) view returns(uint256)
   732  func (_ERC721 *ERC721Session) BalanceOf(owner common.Address) (*big.Int, error) {
   733  	return _ERC721.Contract.BalanceOf(&_ERC721.CallOpts, owner)
   734  }
   735  
   736  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
   737  //
   738  // Solidity: function balanceOf(address owner) view returns(uint256)
   739  func (_ERC721 *ERC721CallerSession) BalanceOf(owner common.Address) (*big.Int, error) {
   740  	return _ERC721.Contract.BalanceOf(&_ERC721.CallOpts, owner)
   741  }
   742  
   743  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
   744  //
   745  // Solidity: function getApproved(uint256 tokenId) view returns(address)
   746  func (_ERC721 *ERC721Caller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
   747  	var (
   748  		ret0 = new(common.Address)
   749  	)
   750  	out := ret0
   751  	err := _ERC721.contract.Call(opts, out, "getApproved", tokenId)
   752  	return *ret0, err
   753  }
   754  
   755  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
   756  //
   757  // Solidity: function getApproved(uint256 tokenId) view returns(address)
   758  func (_ERC721 *ERC721Session) GetApproved(tokenId *big.Int) (common.Address, error) {
   759  	return _ERC721.Contract.GetApproved(&_ERC721.CallOpts, tokenId)
   760  }
   761  
   762  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
   763  //
   764  // Solidity: function getApproved(uint256 tokenId) view returns(address)
   765  func (_ERC721 *ERC721CallerSession) GetApproved(tokenId *big.Int) (common.Address, error) {
   766  	return _ERC721.Contract.GetApproved(&_ERC721.CallOpts, tokenId)
   767  }
   768  
   769  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
   770  //
   771  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
   772  func (_ERC721 *ERC721Caller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) {
   773  	var (
   774  		ret0 = new(bool)
   775  	)
   776  	out := ret0
   777  	err := _ERC721.contract.Call(opts, out, "isApprovedForAll", owner, operator)
   778  	return *ret0, err
   779  }
   780  
   781  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
   782  //
   783  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
   784  func (_ERC721 *ERC721Session) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
   785  	return _ERC721.Contract.IsApprovedForAll(&_ERC721.CallOpts, owner, operator)
   786  }
   787  
   788  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
   789  //
   790  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
   791  func (_ERC721 *ERC721CallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
   792  	return _ERC721.Contract.IsApprovedForAll(&_ERC721.CallOpts, owner, operator)
   793  }
   794  
   795  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
   796  //
   797  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
   798  func (_ERC721 *ERC721Caller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
   799  	var (
   800  		ret0 = new(common.Address)
   801  	)
   802  	out := ret0
   803  	err := _ERC721.contract.Call(opts, out, "ownerOf", tokenId)
   804  	return *ret0, err
   805  }
   806  
   807  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
   808  //
   809  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
   810  func (_ERC721 *ERC721Session) OwnerOf(tokenId *big.Int) (common.Address, error) {
   811  	return _ERC721.Contract.OwnerOf(&_ERC721.CallOpts, tokenId)
   812  }
   813  
   814  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
   815  //
   816  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
   817  func (_ERC721 *ERC721CallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
   818  	return _ERC721.Contract.OwnerOf(&_ERC721.CallOpts, tokenId)
   819  }
   820  
   821  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
   822  //
   823  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
   824  func (_ERC721 *ERC721Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
   825  	var (
   826  		ret0 = new(bool)
   827  	)
   828  	out := ret0
   829  	err := _ERC721.contract.Call(opts, out, "supportsInterface", interfaceId)
   830  	return *ret0, err
   831  }
   832  
   833  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
   834  //
   835  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
   836  func (_ERC721 *ERC721Session) SupportsInterface(interfaceId [4]byte) (bool, error) {
   837  	return _ERC721.Contract.SupportsInterface(&_ERC721.CallOpts, interfaceId)
   838  }
   839  
   840  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
   841  //
   842  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
   843  func (_ERC721 *ERC721CallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
   844  	return _ERC721.Contract.SupportsInterface(&_ERC721.CallOpts, interfaceId)
   845  }
   846  
   847  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
   848  //
   849  // Solidity: function approve(address to, uint256 tokenId) returns()
   850  func (_ERC721 *ERC721Transactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
   851  	return _ERC721.contract.Transact(opts, "approve", to, tokenId)
   852  }
   853  
   854  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
   855  //
   856  // Solidity: function approve(address to, uint256 tokenId) returns()
   857  func (_ERC721 *ERC721Session) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
   858  	return _ERC721.Contract.Approve(&_ERC721.TransactOpts, to, tokenId)
   859  }
   860  
   861  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
   862  //
   863  // Solidity: function approve(address to, uint256 tokenId) returns()
   864  func (_ERC721 *ERC721TransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
   865  	return _ERC721.Contract.Approve(&_ERC721.TransactOpts, to, tokenId)
   866  }
   867  
   868  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
   869  //
   870  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
   871  func (_ERC721 *ERC721Transactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
   872  	return _ERC721.contract.Transact(opts, "safeTransferFrom", from, to, tokenId)
   873  }
   874  
   875  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
   876  //
   877  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
   878  func (_ERC721 *ERC721Session) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
   879  	return _ERC721.Contract.SafeTransferFrom(&_ERC721.TransactOpts, from, to, tokenId)
   880  }
   881  
   882  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
   883  //
   884  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
   885  func (_ERC721 *ERC721TransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
   886  	return _ERC721.Contract.SafeTransferFrom(&_ERC721.TransactOpts, from, to, tokenId)
   887  }
   888  
   889  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
   890  //
   891  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
   892  func (_ERC721 *ERC721Transactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
   893  	return _ERC721.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, _data)
   894  }
   895  
   896  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
   897  //
   898  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
   899  func (_ERC721 *ERC721Session) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
   900  	return _ERC721.Contract.SafeTransferFrom0(&_ERC721.TransactOpts, from, to, tokenId, _data)
   901  }
   902  
   903  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
   904  //
   905  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
   906  func (_ERC721 *ERC721TransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
   907  	return _ERC721.Contract.SafeTransferFrom0(&_ERC721.TransactOpts, from, to, tokenId, _data)
   908  }
   909  
   910  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
   911  //
   912  // Solidity: function setApprovalForAll(address to, bool approved) returns()
   913  func (_ERC721 *ERC721Transactor) SetApprovalForAll(opts *bind.TransactOpts, to common.Address, approved bool) (*types.Transaction, error) {
   914  	return _ERC721.contract.Transact(opts, "setApprovalForAll", to, approved)
   915  }
   916  
   917  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
   918  //
   919  // Solidity: function setApprovalForAll(address to, bool approved) returns()
   920  func (_ERC721 *ERC721Session) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
   921  	return _ERC721.Contract.SetApprovalForAll(&_ERC721.TransactOpts, to, approved)
   922  }
   923  
   924  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
   925  //
   926  // Solidity: function setApprovalForAll(address to, bool approved) returns()
   927  func (_ERC721 *ERC721TransactorSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
   928  	return _ERC721.Contract.SetApprovalForAll(&_ERC721.TransactOpts, to, approved)
   929  }
   930  
   931  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
   932  //
   933  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
   934  func (_ERC721 *ERC721Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
   935  	return _ERC721.contract.Transact(opts, "transferFrom", from, to, tokenId)
   936  }
   937  
   938  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
   939  //
   940  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
   941  func (_ERC721 *ERC721Session) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
   942  	return _ERC721.Contract.TransferFrom(&_ERC721.TransactOpts, from, to, tokenId)
   943  }
   944  
   945  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
   946  //
   947  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
   948  func (_ERC721 *ERC721TransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
   949  	return _ERC721.Contract.TransferFrom(&_ERC721.TransactOpts, from, to, tokenId)
   950  }
   951  
   952  // ERC721ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC721 contract.
   953  type ERC721ApprovalIterator struct {
   954  	Event *ERC721Approval // Event containing the contract specifics and raw log
   955  
   956  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   957  	event    string              // Event name to use for unpacking event data
   958  
   959  	logs chan types.Log      // Log channel receiving the found contract events
   960  	sub  klaytn.Subscription // Subscription for errors, completion and termination
   961  	done bool                // Whether the subscription completed delivering logs
   962  	fail error               // Occurred error to stop iteration
   963  }
   964  
   965  // Next advances the iterator to the subsequent event, returning whether there
   966  // are any more events found. In case of a retrieval or parsing error, false is
   967  // returned and Error() can be queried for the exact failure.
   968  func (it *ERC721ApprovalIterator) Next() bool {
   969  	// If the iterator failed, stop iterating
   970  	if it.fail != nil {
   971  		return false
   972  	}
   973  	// If the iterator completed, deliver directly whatever's available
   974  	if it.done {
   975  		select {
   976  		case log := <-it.logs:
   977  			it.Event = new(ERC721Approval)
   978  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   979  				it.fail = err
   980  				return false
   981  			}
   982  			it.Event.Raw = log
   983  			return true
   984  
   985  		default:
   986  			return false
   987  		}
   988  	}
   989  	// Iterator still in progress, wait for either a data or an error event
   990  	select {
   991  	case log := <-it.logs:
   992  		it.Event = new(ERC721Approval)
   993  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   994  			it.fail = err
   995  			return false
   996  		}
   997  		it.Event.Raw = log
   998  		return true
   999  
  1000  	case err := <-it.sub.Err():
  1001  		it.done = true
  1002  		it.fail = err
  1003  		return it.Next()
  1004  	}
  1005  }
  1006  
  1007  // Error returns any retrieval or parsing error occurred during filtering.
  1008  func (it *ERC721ApprovalIterator) Error() error {
  1009  	return it.fail
  1010  }
  1011  
  1012  // Close terminates the iteration process, releasing any pending underlying
  1013  // resources.
  1014  func (it *ERC721ApprovalIterator) Close() error {
  1015  	it.sub.Unsubscribe()
  1016  	return nil
  1017  }
  1018  
  1019  // ERC721Approval represents a Approval event raised by the ERC721 contract.
  1020  type ERC721Approval struct {
  1021  	Owner    common.Address
  1022  	Approved common.Address
  1023  	TokenId  *big.Int
  1024  	Raw      types.Log // Blockchain specific contextual infos
  1025  }
  1026  
  1027  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  1028  //
  1029  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  1030  func (_ERC721 *ERC721Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ERC721ApprovalIterator, error) {
  1031  
  1032  	var ownerRule []interface{}
  1033  	for _, ownerItem := range owner {
  1034  		ownerRule = append(ownerRule, ownerItem)
  1035  	}
  1036  	var approvedRule []interface{}
  1037  	for _, approvedItem := range approved {
  1038  		approvedRule = append(approvedRule, approvedItem)
  1039  	}
  1040  	var tokenIdRule []interface{}
  1041  	for _, tokenIdItem := range tokenId {
  1042  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  1043  	}
  1044  
  1045  	logs, sub, err := _ERC721.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  1046  	if err != nil {
  1047  		return nil, err
  1048  	}
  1049  	return &ERC721ApprovalIterator{contract: _ERC721.contract, event: "Approval", logs: logs, sub: sub}, nil
  1050  }
  1051  
  1052  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  1053  //
  1054  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  1055  func (_ERC721 *ERC721Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721Approval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  1056  
  1057  	var ownerRule []interface{}
  1058  	for _, ownerItem := range owner {
  1059  		ownerRule = append(ownerRule, ownerItem)
  1060  	}
  1061  	var approvedRule []interface{}
  1062  	for _, approvedItem := range approved {
  1063  		approvedRule = append(approvedRule, approvedItem)
  1064  	}
  1065  	var tokenIdRule []interface{}
  1066  	for _, tokenIdItem := range tokenId {
  1067  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  1068  	}
  1069  
  1070  	logs, sub, err := _ERC721.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  1071  	if err != nil {
  1072  		return nil, err
  1073  	}
  1074  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1075  		defer sub.Unsubscribe()
  1076  		for {
  1077  			select {
  1078  			case log := <-logs:
  1079  				// New log arrived, parse the event and forward to the user
  1080  				event := new(ERC721Approval)
  1081  				if err := _ERC721.contract.UnpackLog(event, "Approval", log); err != nil {
  1082  					return err
  1083  				}
  1084  				event.Raw = log
  1085  
  1086  				select {
  1087  				case sink <- event:
  1088  				case err := <-sub.Err():
  1089  					return err
  1090  				case <-quit:
  1091  					return nil
  1092  				}
  1093  			case err := <-sub.Err():
  1094  				return err
  1095  			case <-quit:
  1096  				return nil
  1097  			}
  1098  		}
  1099  	}), nil
  1100  }
  1101  
  1102  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  1103  //
  1104  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  1105  func (_ERC721 *ERC721Filterer) ParseApproval(log types.Log) (*ERC721Approval, error) {
  1106  	event := new(ERC721Approval)
  1107  	if err := _ERC721.contract.UnpackLog(event, "Approval", log); err != nil {
  1108  		return nil, err
  1109  	}
  1110  	return event, nil
  1111  }
  1112  
  1113  // ERC721ApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the ERC721 contract.
  1114  type ERC721ApprovalForAllIterator struct {
  1115  	Event *ERC721ApprovalForAll // Event containing the contract specifics and raw log
  1116  
  1117  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1118  	event    string              // Event name to use for unpacking event data
  1119  
  1120  	logs chan types.Log      // Log channel receiving the found contract events
  1121  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  1122  	done bool                // Whether the subscription completed delivering logs
  1123  	fail error               // Occurred error to stop iteration
  1124  }
  1125  
  1126  // Next advances the iterator to the subsequent event, returning whether there
  1127  // are any more events found. In case of a retrieval or parsing error, false is
  1128  // returned and Error() can be queried for the exact failure.
  1129  func (it *ERC721ApprovalForAllIterator) Next() bool {
  1130  	// If the iterator failed, stop iterating
  1131  	if it.fail != nil {
  1132  		return false
  1133  	}
  1134  	// If the iterator completed, deliver directly whatever's available
  1135  	if it.done {
  1136  		select {
  1137  		case log := <-it.logs:
  1138  			it.Event = new(ERC721ApprovalForAll)
  1139  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1140  				it.fail = err
  1141  				return false
  1142  			}
  1143  			it.Event.Raw = log
  1144  			return true
  1145  
  1146  		default:
  1147  			return false
  1148  		}
  1149  	}
  1150  	// Iterator still in progress, wait for either a data or an error event
  1151  	select {
  1152  	case log := <-it.logs:
  1153  		it.Event = new(ERC721ApprovalForAll)
  1154  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1155  			it.fail = err
  1156  			return false
  1157  		}
  1158  		it.Event.Raw = log
  1159  		return true
  1160  
  1161  	case err := <-it.sub.Err():
  1162  		it.done = true
  1163  		it.fail = err
  1164  		return it.Next()
  1165  	}
  1166  }
  1167  
  1168  // Error returns any retrieval or parsing error occurred during filtering.
  1169  func (it *ERC721ApprovalForAllIterator) Error() error {
  1170  	return it.fail
  1171  }
  1172  
  1173  // Close terminates the iteration process, releasing any pending underlying
  1174  // resources.
  1175  func (it *ERC721ApprovalForAllIterator) Close() error {
  1176  	it.sub.Unsubscribe()
  1177  	return nil
  1178  }
  1179  
  1180  // ERC721ApprovalForAll represents a ApprovalForAll event raised by the ERC721 contract.
  1181  type ERC721ApprovalForAll struct {
  1182  	Owner    common.Address
  1183  	Operator common.Address
  1184  	Approved bool
  1185  	Raw      types.Log // Blockchain specific contextual infos
  1186  }
  1187  
  1188  // FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  1189  //
  1190  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  1191  func (_ERC721 *ERC721Filterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ERC721ApprovalForAllIterator, error) {
  1192  
  1193  	var ownerRule []interface{}
  1194  	for _, ownerItem := range owner {
  1195  		ownerRule = append(ownerRule, ownerItem)
  1196  	}
  1197  	var operatorRule []interface{}
  1198  	for _, operatorItem := range operator {
  1199  		operatorRule = append(operatorRule, operatorItem)
  1200  	}
  1201  
  1202  	logs, sub, err := _ERC721.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  1203  	if err != nil {
  1204  		return nil, err
  1205  	}
  1206  	return &ERC721ApprovalForAllIterator{contract: _ERC721.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil
  1207  }
  1208  
  1209  // WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  1210  //
  1211  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  1212  func (_ERC721 *ERC721Filterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ERC721ApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) {
  1213  
  1214  	var ownerRule []interface{}
  1215  	for _, ownerItem := range owner {
  1216  		ownerRule = append(ownerRule, ownerItem)
  1217  	}
  1218  	var operatorRule []interface{}
  1219  	for _, operatorItem := range operator {
  1220  		operatorRule = append(operatorRule, operatorItem)
  1221  	}
  1222  
  1223  	logs, sub, err := _ERC721.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  1224  	if err != nil {
  1225  		return nil, err
  1226  	}
  1227  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1228  		defer sub.Unsubscribe()
  1229  		for {
  1230  			select {
  1231  			case log := <-logs:
  1232  				// New log arrived, parse the event and forward to the user
  1233  				event := new(ERC721ApprovalForAll)
  1234  				if err := _ERC721.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  1235  					return err
  1236  				}
  1237  				event.Raw = log
  1238  
  1239  				select {
  1240  				case sink <- event:
  1241  				case err := <-sub.Err():
  1242  					return err
  1243  				case <-quit:
  1244  					return nil
  1245  				}
  1246  			case err := <-sub.Err():
  1247  				return err
  1248  			case <-quit:
  1249  				return nil
  1250  			}
  1251  		}
  1252  	}), nil
  1253  }
  1254  
  1255  // ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  1256  //
  1257  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  1258  func (_ERC721 *ERC721Filterer) ParseApprovalForAll(log types.Log) (*ERC721ApprovalForAll, error) {
  1259  	event := new(ERC721ApprovalForAll)
  1260  	if err := _ERC721.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  1261  		return nil, err
  1262  	}
  1263  	return event, nil
  1264  }
  1265  
  1266  // ERC721TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC721 contract.
  1267  type ERC721TransferIterator struct {
  1268  	Event *ERC721Transfer // Event containing the contract specifics and raw log
  1269  
  1270  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1271  	event    string              // Event name to use for unpacking event data
  1272  
  1273  	logs chan types.Log      // Log channel receiving the found contract events
  1274  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  1275  	done bool                // Whether the subscription completed delivering logs
  1276  	fail error               // Occurred error to stop iteration
  1277  }
  1278  
  1279  // Next advances the iterator to the subsequent event, returning whether there
  1280  // are any more events found. In case of a retrieval or parsing error, false is
  1281  // returned and Error() can be queried for the exact failure.
  1282  func (it *ERC721TransferIterator) Next() bool {
  1283  	// If the iterator failed, stop iterating
  1284  	if it.fail != nil {
  1285  		return false
  1286  	}
  1287  	// If the iterator completed, deliver directly whatever's available
  1288  	if it.done {
  1289  		select {
  1290  		case log := <-it.logs:
  1291  			it.Event = new(ERC721Transfer)
  1292  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1293  				it.fail = err
  1294  				return false
  1295  			}
  1296  			it.Event.Raw = log
  1297  			return true
  1298  
  1299  		default:
  1300  			return false
  1301  		}
  1302  	}
  1303  	// Iterator still in progress, wait for either a data or an error event
  1304  	select {
  1305  	case log := <-it.logs:
  1306  		it.Event = new(ERC721Transfer)
  1307  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1308  			it.fail = err
  1309  			return false
  1310  		}
  1311  		it.Event.Raw = log
  1312  		return true
  1313  
  1314  	case err := <-it.sub.Err():
  1315  		it.done = true
  1316  		it.fail = err
  1317  		return it.Next()
  1318  	}
  1319  }
  1320  
  1321  // Error returns any retrieval or parsing error occurred during filtering.
  1322  func (it *ERC721TransferIterator) Error() error {
  1323  	return it.fail
  1324  }
  1325  
  1326  // Close terminates the iteration process, releasing any pending underlying
  1327  // resources.
  1328  func (it *ERC721TransferIterator) Close() error {
  1329  	it.sub.Unsubscribe()
  1330  	return nil
  1331  }
  1332  
  1333  // ERC721Transfer represents a Transfer event raised by the ERC721 contract.
  1334  type ERC721Transfer struct {
  1335  	From    common.Address
  1336  	To      common.Address
  1337  	TokenId *big.Int
  1338  	Raw     types.Log // Blockchain specific contextual infos
  1339  }
  1340  
  1341  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  1342  //
  1343  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  1344  func (_ERC721 *ERC721Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ERC721TransferIterator, error) {
  1345  
  1346  	var fromRule []interface{}
  1347  	for _, fromItem := range from {
  1348  		fromRule = append(fromRule, fromItem)
  1349  	}
  1350  	var toRule []interface{}
  1351  	for _, toItem := range to {
  1352  		toRule = append(toRule, toItem)
  1353  	}
  1354  	var tokenIdRule []interface{}
  1355  	for _, tokenIdItem := range tokenId {
  1356  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  1357  	}
  1358  
  1359  	logs, sub, err := _ERC721.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  1360  	if err != nil {
  1361  		return nil, err
  1362  	}
  1363  	return &ERC721TransferIterator{contract: _ERC721.contract, event: "Transfer", logs: logs, sub: sub}, nil
  1364  }
  1365  
  1366  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  1367  //
  1368  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  1369  func (_ERC721 *ERC721Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721Transfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  1370  
  1371  	var fromRule []interface{}
  1372  	for _, fromItem := range from {
  1373  		fromRule = append(fromRule, fromItem)
  1374  	}
  1375  	var toRule []interface{}
  1376  	for _, toItem := range to {
  1377  		toRule = append(toRule, toItem)
  1378  	}
  1379  	var tokenIdRule []interface{}
  1380  	for _, tokenIdItem := range tokenId {
  1381  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  1382  	}
  1383  
  1384  	logs, sub, err := _ERC721.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  1385  	if err != nil {
  1386  		return nil, err
  1387  	}
  1388  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1389  		defer sub.Unsubscribe()
  1390  		for {
  1391  			select {
  1392  			case log := <-logs:
  1393  				// New log arrived, parse the event and forward to the user
  1394  				event := new(ERC721Transfer)
  1395  				if err := _ERC721.contract.UnpackLog(event, "Transfer", log); err != nil {
  1396  					return err
  1397  				}
  1398  				event.Raw = log
  1399  
  1400  				select {
  1401  				case sink <- event:
  1402  				case err := <-sub.Err():
  1403  					return err
  1404  				case <-quit:
  1405  					return nil
  1406  				}
  1407  			case err := <-sub.Err():
  1408  				return err
  1409  			case <-quit:
  1410  				return nil
  1411  			}
  1412  		}
  1413  	}), nil
  1414  }
  1415  
  1416  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  1417  //
  1418  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  1419  func (_ERC721 *ERC721Filterer) ParseTransfer(log types.Log) (*ERC721Transfer, error) {
  1420  	event := new(ERC721Transfer)
  1421  	if err := _ERC721.contract.UnpackLog(event, "Transfer", log); err != nil {
  1422  		return nil, err
  1423  	}
  1424  	return event, nil
  1425  }
  1426  
  1427  // ERC721BurnableABI is the input ABI used to generate the binding from.
  1428  const ERC721BurnableABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"}]"
  1429  
  1430  // ERC721BurnableBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  1431  const ERC721BurnableBinRuntime = `608060405234801561001057600080fd5b50600436106100a95760003560e01c806342966c681161007157806342966c68146101bc5780636352211e146101d957806370a08231146101f6578063a22cb4651461022e578063b88d4fde1461025c578063e985e9c514610322576100a9565b806301ffc9a7146100ae578063081812fc146100e9578063095ea7b31461012257806323b872dd1461015057806342842e0e14610186575b600080fd5b6100d5600480360360208110156100c457600080fd5b50356001600160e01b031916610350565b604080519115158252519081900360200190f35b610106600480360360208110156100ff57600080fd5b503561036f565b604080516001600160a01b039092168252519081900360200190f35b61014e6004803603604081101561013857600080fd5b506001600160a01b0381351690602001356103d4565b005b61014e6004803603606081101561016657600080fd5b506001600160a01b038135811691602081013590911690604001356104eb565b61014e6004803603606081101561019c57600080fd5b506001600160a01b03813581169160208101359091169060400135610543565b61014e600480360360208110156101d257600080fd5b503561055e565b610106600480360360208110156101ef57600080fd5b50356105b2565b61021c6004803603602081101561020c57600080fd5b50356001600160a01b031661060f565b60408051918252519081900360200190f35b61014e6004803603604081101561024457600080fd5b506001600160a01b038135169060200135151561067a565b61014e6004803603608081101561027257600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156102ad57600080fd5b8201836020820111156102bf57600080fd5b803590602001918460018302840111640100000000831117156102e157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610749945050505050565b6100d56004803603604081101561033857600080fd5b506001600160a01b03813581169160200135166107a4565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061037a826107d2565b6103b857604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610dd8602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006103df826105b2565b9050806001600160a01b0316836001600160a01b0316141561043557604051600160e51b62461bcd028152600401808060200182810382526021815260200180610e2d6021913960400191505060405180910390fd5b336001600160a01b0382161480610451575061045181336107a4565b61048f57604051600160e51b62461bcd028152600401808060200182810382526038815260200180610d4d6038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6104f533826107ef565b61053357604051600160e51b62461bcd028152600401808060200182810382526031815260200180610e4e6031913960400191505060405180910390fd5b61053e838383610896565b505050565b61053e83838360405180602001604052806000815250610749565b61056833826107ef565b6105a657604051600160e51b62461bcd028152600401808060200182810382526030815260200180610ea46030913960400191505060405180910390fd5b6105af816109e0565b50565b6000818152600160205260408120546001600160a01b03168061060957604051600160e51b62461bcd028152600401808060200182810382526029815260200180610daf6029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661065957604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610d85602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600360205260409020610609906109f2565b6001600160a01b0382163314156106db5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6107548484846104eb565b610760848484846109f6565b61079e57604051600160e51b62461bcd028152600401808060200182810382526032815260200180610ccb6032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b60006107fa826107d2565b61083857604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610d21602c913960400191505060405180910390fd5b6000610843836105b2565b9050806001600160a01b0316846001600160a01b0316148061087e5750836001600160a01b03166108738461036f565b6001600160a01b0316145b8061088e575061088e81856107a4565b949350505050565b826001600160a01b03166108a9826105b2565b6001600160a01b0316146108f157604051600160e51b62461bcd028152600401808060200182810382526029815260200180610e046029913960400191505060405180910390fd5b6001600160a01b03821661093957604051600160e51b62461bcd028152600401808060200182810382526024815260200180610cfd6024913960400191505060405180910390fd5b61094281610b2f565b6001600160a01b038316600090815260036020526040902061096390610b6a565b6001600160a01b038216600090815260036020526040902061098490610b81565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6105af6109ec826105b2565b82610b8a565b5490565b6000610a0a846001600160a01b0316610c64565b610a165750600161088e565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a93578181015183820152602001610a7b565b50505050905090810190601f168015610ac05780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610ae257600080fd5b505af1158015610af6573d6000803e3d6000fd5b505050506040513d6020811015610b0c57600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b0316156105af57600090815260026020526040902080546001600160a01b0319169055565b8054610b7d90600163ffffffff610c6a16565b9055565b80546001019055565b816001600160a01b0316610b9d826105b2565b6001600160a01b031614610be557604051600160e51b62461bcd028152600401808060200182810382526025815260200180610e7f6025913960400191505060405180910390fd5b610bee81610b2f565b6001600160a01b0382166000908152600360205260409020610c0f90610b6a565b60008181526001602052604080822080546001600160a01b0319169055518291906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b3b151590565b600082821115610cc45760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665644552433732313a206275726e206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a7230582035986e074f001b98f3d4f8e669063ef8d5efcf5cb63f5103e5e5296048223c1d0029`
  1432  
  1433  // ERC721BurnableFuncSigs maps the 4-byte function signature to its string representation.
  1434  var ERC721BurnableFuncSigs = map[string]string{
  1435  	"095ea7b3": "approve(address,uint256)",
  1436  	"70a08231": "balanceOf(address)",
  1437  	"42966c68": "burn(uint256)",
  1438  	"081812fc": "getApproved(uint256)",
  1439  	"e985e9c5": "isApprovedForAll(address,address)",
  1440  	"6352211e": "ownerOf(uint256)",
  1441  	"42842e0e": "safeTransferFrom(address,address,uint256)",
  1442  	"b88d4fde": "safeTransferFrom(address,address,uint256,bytes)",
  1443  	"a22cb465": "setApprovalForAll(address,bool)",
  1444  	"01ffc9a7": "supportsInterface(bytes4)",
  1445  	"23b872dd": "transferFrom(address,address,uint256)",
  1446  }
  1447  
  1448  // ERC721BurnableBin is the compiled bytecode used for deploying new contracts.
  1449  var ERC721BurnableBin = "0x608060405261001a6301ffc9a760e01b61003560201b60201c565b6100306380ac58cd60e01b61003560201b60201c565b610103565b7fffffffff0000000000000000000000000000000000000000000000000000000080821614156100c657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b610eff806101126000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806342966c681161007157806342966c68146101bc5780636352211e146101d957806370a08231146101f6578063a22cb4651461022e578063b88d4fde1461025c578063e985e9c514610322576100a9565b806301ffc9a7146100ae578063081812fc146100e9578063095ea7b31461012257806323b872dd1461015057806342842e0e14610186575b600080fd5b6100d5600480360360208110156100c457600080fd5b50356001600160e01b031916610350565b604080519115158252519081900360200190f35b610106600480360360208110156100ff57600080fd5b503561036f565b604080516001600160a01b039092168252519081900360200190f35b61014e6004803603604081101561013857600080fd5b506001600160a01b0381351690602001356103d4565b005b61014e6004803603606081101561016657600080fd5b506001600160a01b038135811691602081013590911690604001356104eb565b61014e6004803603606081101561019c57600080fd5b506001600160a01b03813581169160208101359091169060400135610543565b61014e600480360360208110156101d257600080fd5b503561055e565b610106600480360360208110156101ef57600080fd5b50356105b2565b61021c6004803603602081101561020c57600080fd5b50356001600160a01b031661060f565b60408051918252519081900360200190f35b61014e6004803603604081101561024457600080fd5b506001600160a01b038135169060200135151561067a565b61014e6004803603608081101561027257600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156102ad57600080fd5b8201836020820111156102bf57600080fd5b803590602001918460018302840111640100000000831117156102e157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610749945050505050565b6100d56004803603604081101561033857600080fd5b506001600160a01b03813581169160200135166107a4565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061037a826107d2565b6103b857604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610dd8602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006103df826105b2565b9050806001600160a01b0316836001600160a01b0316141561043557604051600160e51b62461bcd028152600401808060200182810382526021815260200180610e2d6021913960400191505060405180910390fd5b336001600160a01b0382161480610451575061045181336107a4565b61048f57604051600160e51b62461bcd028152600401808060200182810382526038815260200180610d4d6038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6104f533826107ef565b61053357604051600160e51b62461bcd028152600401808060200182810382526031815260200180610e4e6031913960400191505060405180910390fd5b61053e838383610896565b505050565b61053e83838360405180602001604052806000815250610749565b61056833826107ef565b6105a657604051600160e51b62461bcd028152600401808060200182810382526030815260200180610ea46030913960400191505060405180910390fd5b6105af816109e0565b50565b6000818152600160205260408120546001600160a01b03168061060957604051600160e51b62461bcd028152600401808060200182810382526029815260200180610daf6029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661065957604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610d85602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600360205260409020610609906109f2565b6001600160a01b0382163314156106db5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6107548484846104eb565b610760848484846109f6565b61079e57604051600160e51b62461bcd028152600401808060200182810382526032815260200180610ccb6032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b60006107fa826107d2565b61083857604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610d21602c913960400191505060405180910390fd5b6000610843836105b2565b9050806001600160a01b0316846001600160a01b0316148061087e5750836001600160a01b03166108738461036f565b6001600160a01b0316145b8061088e575061088e81856107a4565b949350505050565b826001600160a01b03166108a9826105b2565b6001600160a01b0316146108f157604051600160e51b62461bcd028152600401808060200182810382526029815260200180610e046029913960400191505060405180910390fd5b6001600160a01b03821661093957604051600160e51b62461bcd028152600401808060200182810382526024815260200180610cfd6024913960400191505060405180910390fd5b61094281610b2f565b6001600160a01b038316600090815260036020526040902061096390610b6a565b6001600160a01b038216600090815260036020526040902061098490610b81565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6105af6109ec826105b2565b82610b8a565b5490565b6000610a0a846001600160a01b0316610c64565b610a165750600161088e565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a93578181015183820152602001610a7b565b50505050905090810190601f168015610ac05780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610ae257600080fd5b505af1158015610af6573d6000803e3d6000fd5b505050506040513d6020811015610b0c57600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b0316156105af57600090815260026020526040902080546001600160a01b0319169055565b8054610b7d90600163ffffffff610c6a16565b9055565b80546001019055565b816001600160a01b0316610b9d826105b2565b6001600160a01b031614610be557604051600160e51b62461bcd028152600401808060200182810382526025815260200180610e7f6025913960400191505060405180910390fd5b610bee81610b2f565b6001600160a01b0382166000908152600360205260409020610c0f90610b6a565b60008181526001602052604080822080546001600160a01b0319169055518291906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b3b151590565b600082821115610cc45760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665644552433732313a206275726e206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a7230582035986e074f001b98f3d4f8e669063ef8d5efcf5cb63f5103e5e5296048223c1d0029"
  1450  
  1451  // DeployERC721Burnable deploys a new Klaytn contract, binding an instance of ERC721Burnable to it.
  1452  func DeployERC721Burnable(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC721Burnable, error) {
  1453  	parsed, err := abi.JSON(strings.NewReader(ERC721BurnableABI))
  1454  	if err != nil {
  1455  		return common.Address{}, nil, nil, err
  1456  	}
  1457  
  1458  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(ERC721BurnableBin), backend)
  1459  	if err != nil {
  1460  		return common.Address{}, nil, nil, err
  1461  	}
  1462  	return address, tx, &ERC721Burnable{ERC721BurnableCaller: ERC721BurnableCaller{contract: contract}, ERC721BurnableTransactor: ERC721BurnableTransactor{contract: contract}, ERC721BurnableFilterer: ERC721BurnableFilterer{contract: contract}}, nil
  1463  }
  1464  
  1465  // ERC721Burnable is an auto generated Go binding around a Klaytn contract.
  1466  type ERC721Burnable struct {
  1467  	ERC721BurnableCaller     // Read-only binding to the contract
  1468  	ERC721BurnableTransactor // Write-only binding to the contract
  1469  	ERC721BurnableFilterer   // Log filterer for contract events
  1470  }
  1471  
  1472  // ERC721BurnableCaller is an auto generated read-only Go binding around a Klaytn contract.
  1473  type ERC721BurnableCaller struct {
  1474  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1475  }
  1476  
  1477  // ERC721BurnableTransactor is an auto generated write-only Go binding around a Klaytn contract.
  1478  type ERC721BurnableTransactor struct {
  1479  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1480  }
  1481  
  1482  // ERC721BurnableFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
  1483  type ERC721BurnableFilterer struct {
  1484  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1485  }
  1486  
  1487  // ERC721BurnableSession is an auto generated Go binding around a Klaytn contract,
  1488  // with pre-set call and transact options.
  1489  type ERC721BurnableSession struct {
  1490  	Contract     *ERC721Burnable   // Generic contract binding to set the session for
  1491  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  1492  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  1493  }
  1494  
  1495  // ERC721BurnableCallerSession is an auto generated read-only Go binding around a Klaytn contract,
  1496  // with pre-set call options.
  1497  type ERC721BurnableCallerSession struct {
  1498  	Contract *ERC721BurnableCaller // Generic contract caller binding to set the session for
  1499  	CallOpts bind.CallOpts         // Call options to use throughout this session
  1500  }
  1501  
  1502  // ERC721BurnableTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  1503  // with pre-set transact options.
  1504  type ERC721BurnableTransactorSession struct {
  1505  	Contract     *ERC721BurnableTransactor // Generic contract transactor binding to set the session for
  1506  	TransactOpts bind.TransactOpts         // Transaction auth options to use throughout this session
  1507  }
  1508  
  1509  // ERC721BurnableRaw is an auto generated low-level Go binding around a Klaytn contract.
  1510  type ERC721BurnableRaw struct {
  1511  	Contract *ERC721Burnable // Generic contract binding to access the raw methods on
  1512  }
  1513  
  1514  // ERC721BurnableCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  1515  type ERC721BurnableCallerRaw struct {
  1516  	Contract *ERC721BurnableCaller // Generic read-only contract binding to access the raw methods on
  1517  }
  1518  
  1519  // ERC721BurnableTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  1520  type ERC721BurnableTransactorRaw struct {
  1521  	Contract *ERC721BurnableTransactor // Generic write-only contract binding to access the raw methods on
  1522  }
  1523  
  1524  // NewERC721Burnable creates a new instance of ERC721Burnable, bound to a specific deployed contract.
  1525  func NewERC721Burnable(address common.Address, backend bind.ContractBackend) (*ERC721Burnable, error) {
  1526  	contract, err := bindERC721Burnable(address, backend, backend, backend)
  1527  	if err != nil {
  1528  		return nil, err
  1529  	}
  1530  	return &ERC721Burnable{ERC721BurnableCaller: ERC721BurnableCaller{contract: contract}, ERC721BurnableTransactor: ERC721BurnableTransactor{contract: contract}, ERC721BurnableFilterer: ERC721BurnableFilterer{contract: contract}}, nil
  1531  }
  1532  
  1533  // NewERC721BurnableCaller creates a new read-only instance of ERC721Burnable, bound to a specific deployed contract.
  1534  func NewERC721BurnableCaller(address common.Address, caller bind.ContractCaller) (*ERC721BurnableCaller, error) {
  1535  	contract, err := bindERC721Burnable(address, caller, nil, nil)
  1536  	if err != nil {
  1537  		return nil, err
  1538  	}
  1539  	return &ERC721BurnableCaller{contract: contract}, nil
  1540  }
  1541  
  1542  // NewERC721BurnableTransactor creates a new write-only instance of ERC721Burnable, bound to a specific deployed contract.
  1543  func NewERC721BurnableTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC721BurnableTransactor, error) {
  1544  	contract, err := bindERC721Burnable(address, nil, transactor, nil)
  1545  	if err != nil {
  1546  		return nil, err
  1547  	}
  1548  	return &ERC721BurnableTransactor{contract: contract}, nil
  1549  }
  1550  
  1551  // NewERC721BurnableFilterer creates a new log filterer instance of ERC721Burnable, bound to a specific deployed contract.
  1552  func NewERC721BurnableFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC721BurnableFilterer, error) {
  1553  	contract, err := bindERC721Burnable(address, nil, nil, filterer)
  1554  	if err != nil {
  1555  		return nil, err
  1556  	}
  1557  	return &ERC721BurnableFilterer{contract: contract}, nil
  1558  }
  1559  
  1560  // bindERC721Burnable binds a generic wrapper to an already deployed contract.
  1561  func bindERC721Burnable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  1562  	parsed, err := abi.JSON(strings.NewReader(ERC721BurnableABI))
  1563  	if err != nil {
  1564  		return nil, err
  1565  	}
  1566  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  1567  }
  1568  
  1569  // Call invokes the (constant) contract method with params as input values and
  1570  // sets the output to result. The result type might be a single field for simple
  1571  // returns, a slice of interfaces for anonymous returns and a struct for named
  1572  // returns.
  1573  func (_ERC721Burnable *ERC721BurnableRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  1574  	return _ERC721Burnable.Contract.ERC721BurnableCaller.contract.Call(opts, result, method, params...)
  1575  }
  1576  
  1577  // Transfer initiates a plain transaction to move funds to the contract, calling
  1578  // its default method if one is available.
  1579  func (_ERC721Burnable *ERC721BurnableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1580  	return _ERC721Burnable.Contract.ERC721BurnableTransactor.contract.Transfer(opts)
  1581  }
  1582  
  1583  // Transact invokes the (paid) contract method with params as input values.
  1584  func (_ERC721Burnable *ERC721BurnableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1585  	return _ERC721Burnable.Contract.ERC721BurnableTransactor.contract.Transact(opts, method, params...)
  1586  }
  1587  
  1588  // Call invokes the (constant) contract method with params as input values and
  1589  // sets the output to result. The result type might be a single field for simple
  1590  // returns, a slice of interfaces for anonymous returns and a struct for named
  1591  // returns.
  1592  func (_ERC721Burnable *ERC721BurnableCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  1593  	return _ERC721Burnable.Contract.contract.Call(opts, result, method, params...)
  1594  }
  1595  
  1596  // Transfer initiates a plain transaction to move funds to the contract, calling
  1597  // its default method if one is available.
  1598  func (_ERC721Burnable *ERC721BurnableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1599  	return _ERC721Burnable.Contract.contract.Transfer(opts)
  1600  }
  1601  
  1602  // Transact invokes the (paid) contract method with params as input values.
  1603  func (_ERC721Burnable *ERC721BurnableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1604  	return _ERC721Burnable.Contract.contract.Transact(opts, method, params...)
  1605  }
  1606  
  1607  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  1608  //
  1609  // Solidity: function balanceOf(address owner) view returns(uint256)
  1610  func (_ERC721Burnable *ERC721BurnableCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) {
  1611  	var (
  1612  		ret0 = new(*big.Int)
  1613  	)
  1614  	out := ret0
  1615  	err := _ERC721Burnable.contract.Call(opts, out, "balanceOf", owner)
  1616  	return *ret0, err
  1617  }
  1618  
  1619  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  1620  //
  1621  // Solidity: function balanceOf(address owner) view returns(uint256)
  1622  func (_ERC721Burnable *ERC721BurnableSession) BalanceOf(owner common.Address) (*big.Int, error) {
  1623  	return _ERC721Burnable.Contract.BalanceOf(&_ERC721Burnable.CallOpts, owner)
  1624  }
  1625  
  1626  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  1627  //
  1628  // Solidity: function balanceOf(address owner) view returns(uint256)
  1629  func (_ERC721Burnable *ERC721BurnableCallerSession) BalanceOf(owner common.Address) (*big.Int, error) {
  1630  	return _ERC721Burnable.Contract.BalanceOf(&_ERC721Burnable.CallOpts, owner)
  1631  }
  1632  
  1633  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  1634  //
  1635  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  1636  func (_ERC721Burnable *ERC721BurnableCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  1637  	var (
  1638  		ret0 = new(common.Address)
  1639  	)
  1640  	out := ret0
  1641  	err := _ERC721Burnable.contract.Call(opts, out, "getApproved", tokenId)
  1642  	return *ret0, err
  1643  }
  1644  
  1645  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  1646  //
  1647  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  1648  func (_ERC721Burnable *ERC721BurnableSession) GetApproved(tokenId *big.Int) (common.Address, error) {
  1649  	return _ERC721Burnable.Contract.GetApproved(&_ERC721Burnable.CallOpts, tokenId)
  1650  }
  1651  
  1652  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  1653  //
  1654  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  1655  func (_ERC721Burnable *ERC721BurnableCallerSession) GetApproved(tokenId *big.Int) (common.Address, error) {
  1656  	return _ERC721Burnable.Contract.GetApproved(&_ERC721Burnable.CallOpts, tokenId)
  1657  }
  1658  
  1659  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  1660  //
  1661  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  1662  func (_ERC721Burnable *ERC721BurnableCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) {
  1663  	var (
  1664  		ret0 = new(bool)
  1665  	)
  1666  	out := ret0
  1667  	err := _ERC721Burnable.contract.Call(opts, out, "isApprovedForAll", owner, operator)
  1668  	return *ret0, err
  1669  }
  1670  
  1671  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  1672  //
  1673  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  1674  func (_ERC721Burnable *ERC721BurnableSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  1675  	return _ERC721Burnable.Contract.IsApprovedForAll(&_ERC721Burnable.CallOpts, owner, operator)
  1676  }
  1677  
  1678  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  1679  //
  1680  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  1681  func (_ERC721Burnable *ERC721BurnableCallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  1682  	return _ERC721Burnable.Contract.IsApprovedForAll(&_ERC721Burnable.CallOpts, owner, operator)
  1683  }
  1684  
  1685  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  1686  //
  1687  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  1688  func (_ERC721Burnable *ERC721BurnableCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  1689  	var (
  1690  		ret0 = new(common.Address)
  1691  	)
  1692  	out := ret0
  1693  	err := _ERC721Burnable.contract.Call(opts, out, "ownerOf", tokenId)
  1694  	return *ret0, err
  1695  }
  1696  
  1697  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  1698  //
  1699  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  1700  func (_ERC721Burnable *ERC721BurnableSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
  1701  	return _ERC721Burnable.Contract.OwnerOf(&_ERC721Burnable.CallOpts, tokenId)
  1702  }
  1703  
  1704  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  1705  //
  1706  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  1707  func (_ERC721Burnable *ERC721BurnableCallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
  1708  	return _ERC721Burnable.Contract.OwnerOf(&_ERC721Burnable.CallOpts, tokenId)
  1709  }
  1710  
  1711  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  1712  //
  1713  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  1714  func (_ERC721Burnable *ERC721BurnableCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
  1715  	var (
  1716  		ret0 = new(bool)
  1717  	)
  1718  	out := ret0
  1719  	err := _ERC721Burnable.contract.Call(opts, out, "supportsInterface", interfaceId)
  1720  	return *ret0, err
  1721  }
  1722  
  1723  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  1724  //
  1725  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  1726  func (_ERC721Burnable *ERC721BurnableSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  1727  	return _ERC721Burnable.Contract.SupportsInterface(&_ERC721Burnable.CallOpts, interfaceId)
  1728  }
  1729  
  1730  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  1731  //
  1732  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  1733  func (_ERC721Burnable *ERC721BurnableCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  1734  	return _ERC721Burnable.Contract.SupportsInterface(&_ERC721Burnable.CallOpts, interfaceId)
  1735  }
  1736  
  1737  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  1738  //
  1739  // Solidity: function approve(address to, uint256 tokenId) returns()
  1740  func (_ERC721Burnable *ERC721BurnableTransactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  1741  	return _ERC721Burnable.contract.Transact(opts, "approve", to, tokenId)
  1742  }
  1743  
  1744  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  1745  //
  1746  // Solidity: function approve(address to, uint256 tokenId) returns()
  1747  func (_ERC721Burnable *ERC721BurnableSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  1748  	return _ERC721Burnable.Contract.Approve(&_ERC721Burnable.TransactOpts, to, tokenId)
  1749  }
  1750  
  1751  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  1752  //
  1753  // Solidity: function approve(address to, uint256 tokenId) returns()
  1754  func (_ERC721Burnable *ERC721BurnableTransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  1755  	return _ERC721Burnable.Contract.Approve(&_ERC721Burnable.TransactOpts, to, tokenId)
  1756  }
  1757  
  1758  // Burn is a paid mutator transaction binding the contract method 0x42966c68.
  1759  //
  1760  // Solidity: function burn(uint256 tokenId) returns()
  1761  func (_ERC721Burnable *ERC721BurnableTransactor) Burn(opts *bind.TransactOpts, tokenId *big.Int) (*types.Transaction, error) {
  1762  	return _ERC721Burnable.contract.Transact(opts, "burn", tokenId)
  1763  }
  1764  
  1765  // Burn is a paid mutator transaction binding the contract method 0x42966c68.
  1766  //
  1767  // Solidity: function burn(uint256 tokenId) returns()
  1768  func (_ERC721Burnable *ERC721BurnableSession) Burn(tokenId *big.Int) (*types.Transaction, error) {
  1769  	return _ERC721Burnable.Contract.Burn(&_ERC721Burnable.TransactOpts, tokenId)
  1770  }
  1771  
  1772  // Burn is a paid mutator transaction binding the contract method 0x42966c68.
  1773  //
  1774  // Solidity: function burn(uint256 tokenId) returns()
  1775  func (_ERC721Burnable *ERC721BurnableTransactorSession) Burn(tokenId *big.Int) (*types.Transaction, error) {
  1776  	return _ERC721Burnable.Contract.Burn(&_ERC721Burnable.TransactOpts, tokenId)
  1777  }
  1778  
  1779  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  1780  //
  1781  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  1782  func (_ERC721Burnable *ERC721BurnableTransactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  1783  	return _ERC721Burnable.contract.Transact(opts, "safeTransferFrom", from, to, tokenId)
  1784  }
  1785  
  1786  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  1787  //
  1788  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  1789  func (_ERC721Burnable *ERC721BurnableSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  1790  	return _ERC721Burnable.Contract.SafeTransferFrom(&_ERC721Burnable.TransactOpts, from, to, tokenId)
  1791  }
  1792  
  1793  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  1794  //
  1795  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  1796  func (_ERC721Burnable *ERC721BurnableTransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  1797  	return _ERC721Burnable.Contract.SafeTransferFrom(&_ERC721Burnable.TransactOpts, from, to, tokenId)
  1798  }
  1799  
  1800  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  1801  //
  1802  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
  1803  func (_ERC721Burnable *ERC721BurnableTransactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
  1804  	return _ERC721Burnable.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, _data)
  1805  }
  1806  
  1807  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  1808  //
  1809  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
  1810  func (_ERC721Burnable *ERC721BurnableSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
  1811  	return _ERC721Burnable.Contract.SafeTransferFrom0(&_ERC721Burnable.TransactOpts, from, to, tokenId, _data)
  1812  }
  1813  
  1814  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  1815  //
  1816  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
  1817  func (_ERC721Burnable *ERC721BurnableTransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
  1818  	return _ERC721Burnable.Contract.SafeTransferFrom0(&_ERC721Burnable.TransactOpts, from, to, tokenId, _data)
  1819  }
  1820  
  1821  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  1822  //
  1823  // Solidity: function setApprovalForAll(address to, bool approved) returns()
  1824  func (_ERC721Burnable *ERC721BurnableTransactor) SetApprovalForAll(opts *bind.TransactOpts, to common.Address, approved bool) (*types.Transaction, error) {
  1825  	return _ERC721Burnable.contract.Transact(opts, "setApprovalForAll", to, approved)
  1826  }
  1827  
  1828  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  1829  //
  1830  // Solidity: function setApprovalForAll(address to, bool approved) returns()
  1831  func (_ERC721Burnable *ERC721BurnableSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
  1832  	return _ERC721Burnable.Contract.SetApprovalForAll(&_ERC721Burnable.TransactOpts, to, approved)
  1833  }
  1834  
  1835  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  1836  //
  1837  // Solidity: function setApprovalForAll(address to, bool approved) returns()
  1838  func (_ERC721Burnable *ERC721BurnableTransactorSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
  1839  	return _ERC721Burnable.Contract.SetApprovalForAll(&_ERC721Burnable.TransactOpts, to, approved)
  1840  }
  1841  
  1842  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  1843  //
  1844  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  1845  func (_ERC721Burnable *ERC721BurnableTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  1846  	return _ERC721Burnable.contract.Transact(opts, "transferFrom", from, to, tokenId)
  1847  }
  1848  
  1849  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  1850  //
  1851  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  1852  func (_ERC721Burnable *ERC721BurnableSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  1853  	return _ERC721Burnable.Contract.TransferFrom(&_ERC721Burnable.TransactOpts, from, to, tokenId)
  1854  }
  1855  
  1856  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  1857  //
  1858  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  1859  func (_ERC721Burnable *ERC721BurnableTransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  1860  	return _ERC721Burnable.Contract.TransferFrom(&_ERC721Burnable.TransactOpts, from, to, tokenId)
  1861  }
  1862  
  1863  // ERC721BurnableApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC721Burnable contract.
  1864  type ERC721BurnableApprovalIterator struct {
  1865  	Event *ERC721BurnableApproval // Event containing the contract specifics and raw log
  1866  
  1867  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1868  	event    string              // Event name to use for unpacking event data
  1869  
  1870  	logs chan types.Log      // Log channel receiving the found contract events
  1871  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  1872  	done bool                // Whether the subscription completed delivering logs
  1873  	fail error               // Occurred error to stop iteration
  1874  }
  1875  
  1876  // Next advances the iterator to the subsequent event, returning whether there
  1877  // are any more events found. In case of a retrieval or parsing error, false is
  1878  // returned and Error() can be queried for the exact failure.
  1879  func (it *ERC721BurnableApprovalIterator) Next() bool {
  1880  	// If the iterator failed, stop iterating
  1881  	if it.fail != nil {
  1882  		return false
  1883  	}
  1884  	// If the iterator completed, deliver directly whatever's available
  1885  	if it.done {
  1886  		select {
  1887  		case log := <-it.logs:
  1888  			it.Event = new(ERC721BurnableApproval)
  1889  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1890  				it.fail = err
  1891  				return false
  1892  			}
  1893  			it.Event.Raw = log
  1894  			return true
  1895  
  1896  		default:
  1897  			return false
  1898  		}
  1899  	}
  1900  	// Iterator still in progress, wait for either a data or an error event
  1901  	select {
  1902  	case log := <-it.logs:
  1903  		it.Event = new(ERC721BurnableApproval)
  1904  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1905  			it.fail = err
  1906  			return false
  1907  		}
  1908  		it.Event.Raw = log
  1909  		return true
  1910  
  1911  	case err := <-it.sub.Err():
  1912  		it.done = true
  1913  		it.fail = err
  1914  		return it.Next()
  1915  	}
  1916  }
  1917  
  1918  // Error returns any retrieval or parsing error occurred during filtering.
  1919  func (it *ERC721BurnableApprovalIterator) Error() error {
  1920  	return it.fail
  1921  }
  1922  
  1923  // Close terminates the iteration process, releasing any pending underlying
  1924  // resources.
  1925  func (it *ERC721BurnableApprovalIterator) Close() error {
  1926  	it.sub.Unsubscribe()
  1927  	return nil
  1928  }
  1929  
  1930  // ERC721BurnableApproval represents a Approval event raised by the ERC721Burnable contract.
  1931  type ERC721BurnableApproval struct {
  1932  	Owner    common.Address
  1933  	Approved common.Address
  1934  	TokenId  *big.Int
  1935  	Raw      types.Log // Blockchain specific contextual infos
  1936  }
  1937  
  1938  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  1939  //
  1940  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  1941  func (_ERC721Burnable *ERC721BurnableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ERC721BurnableApprovalIterator, error) {
  1942  
  1943  	var ownerRule []interface{}
  1944  	for _, ownerItem := range owner {
  1945  		ownerRule = append(ownerRule, ownerItem)
  1946  	}
  1947  	var approvedRule []interface{}
  1948  	for _, approvedItem := range approved {
  1949  		approvedRule = append(approvedRule, approvedItem)
  1950  	}
  1951  	var tokenIdRule []interface{}
  1952  	for _, tokenIdItem := range tokenId {
  1953  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  1954  	}
  1955  
  1956  	logs, sub, err := _ERC721Burnable.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  1957  	if err != nil {
  1958  		return nil, err
  1959  	}
  1960  	return &ERC721BurnableApprovalIterator{contract: _ERC721Burnable.contract, event: "Approval", logs: logs, sub: sub}, nil
  1961  }
  1962  
  1963  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  1964  //
  1965  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  1966  func (_ERC721Burnable *ERC721BurnableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721BurnableApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  1967  
  1968  	var ownerRule []interface{}
  1969  	for _, ownerItem := range owner {
  1970  		ownerRule = append(ownerRule, ownerItem)
  1971  	}
  1972  	var approvedRule []interface{}
  1973  	for _, approvedItem := range approved {
  1974  		approvedRule = append(approvedRule, approvedItem)
  1975  	}
  1976  	var tokenIdRule []interface{}
  1977  	for _, tokenIdItem := range tokenId {
  1978  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  1979  	}
  1980  
  1981  	logs, sub, err := _ERC721Burnable.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  1982  	if err != nil {
  1983  		return nil, err
  1984  	}
  1985  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1986  		defer sub.Unsubscribe()
  1987  		for {
  1988  			select {
  1989  			case log := <-logs:
  1990  				// New log arrived, parse the event and forward to the user
  1991  				event := new(ERC721BurnableApproval)
  1992  				if err := _ERC721Burnable.contract.UnpackLog(event, "Approval", log); err != nil {
  1993  					return err
  1994  				}
  1995  				event.Raw = log
  1996  
  1997  				select {
  1998  				case sink <- event:
  1999  				case err := <-sub.Err():
  2000  					return err
  2001  				case <-quit:
  2002  					return nil
  2003  				}
  2004  			case err := <-sub.Err():
  2005  				return err
  2006  			case <-quit:
  2007  				return nil
  2008  			}
  2009  		}
  2010  	}), nil
  2011  }
  2012  
  2013  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  2014  //
  2015  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  2016  func (_ERC721Burnable *ERC721BurnableFilterer) ParseApproval(log types.Log) (*ERC721BurnableApproval, error) {
  2017  	event := new(ERC721BurnableApproval)
  2018  	if err := _ERC721Burnable.contract.UnpackLog(event, "Approval", log); err != nil {
  2019  		return nil, err
  2020  	}
  2021  	return event, nil
  2022  }
  2023  
  2024  // ERC721BurnableApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the ERC721Burnable contract.
  2025  type ERC721BurnableApprovalForAllIterator struct {
  2026  	Event *ERC721BurnableApprovalForAll // Event containing the contract specifics and raw log
  2027  
  2028  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2029  	event    string              // Event name to use for unpacking event data
  2030  
  2031  	logs chan types.Log      // Log channel receiving the found contract events
  2032  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  2033  	done bool                // Whether the subscription completed delivering logs
  2034  	fail error               // Occurred error to stop iteration
  2035  }
  2036  
  2037  // Next advances the iterator to the subsequent event, returning whether there
  2038  // are any more events found. In case of a retrieval or parsing error, false is
  2039  // returned and Error() can be queried for the exact failure.
  2040  func (it *ERC721BurnableApprovalForAllIterator) Next() bool {
  2041  	// If the iterator failed, stop iterating
  2042  	if it.fail != nil {
  2043  		return false
  2044  	}
  2045  	// If the iterator completed, deliver directly whatever's available
  2046  	if it.done {
  2047  		select {
  2048  		case log := <-it.logs:
  2049  			it.Event = new(ERC721BurnableApprovalForAll)
  2050  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2051  				it.fail = err
  2052  				return false
  2053  			}
  2054  			it.Event.Raw = log
  2055  			return true
  2056  
  2057  		default:
  2058  			return false
  2059  		}
  2060  	}
  2061  	// Iterator still in progress, wait for either a data or an error event
  2062  	select {
  2063  	case log := <-it.logs:
  2064  		it.Event = new(ERC721BurnableApprovalForAll)
  2065  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2066  			it.fail = err
  2067  			return false
  2068  		}
  2069  		it.Event.Raw = log
  2070  		return true
  2071  
  2072  	case err := <-it.sub.Err():
  2073  		it.done = true
  2074  		it.fail = err
  2075  		return it.Next()
  2076  	}
  2077  }
  2078  
  2079  // Error returns any retrieval or parsing error occurred during filtering.
  2080  func (it *ERC721BurnableApprovalForAllIterator) Error() error {
  2081  	return it.fail
  2082  }
  2083  
  2084  // Close terminates the iteration process, releasing any pending underlying
  2085  // resources.
  2086  func (it *ERC721BurnableApprovalForAllIterator) Close() error {
  2087  	it.sub.Unsubscribe()
  2088  	return nil
  2089  }
  2090  
  2091  // ERC721BurnableApprovalForAll represents a ApprovalForAll event raised by the ERC721Burnable contract.
  2092  type ERC721BurnableApprovalForAll struct {
  2093  	Owner    common.Address
  2094  	Operator common.Address
  2095  	Approved bool
  2096  	Raw      types.Log // Blockchain specific contextual infos
  2097  }
  2098  
  2099  // FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  2100  //
  2101  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  2102  func (_ERC721Burnable *ERC721BurnableFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ERC721BurnableApprovalForAllIterator, error) {
  2103  
  2104  	var ownerRule []interface{}
  2105  	for _, ownerItem := range owner {
  2106  		ownerRule = append(ownerRule, ownerItem)
  2107  	}
  2108  	var operatorRule []interface{}
  2109  	for _, operatorItem := range operator {
  2110  		operatorRule = append(operatorRule, operatorItem)
  2111  	}
  2112  
  2113  	logs, sub, err := _ERC721Burnable.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  2114  	if err != nil {
  2115  		return nil, err
  2116  	}
  2117  	return &ERC721BurnableApprovalForAllIterator{contract: _ERC721Burnable.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil
  2118  }
  2119  
  2120  // WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  2121  //
  2122  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  2123  func (_ERC721Burnable *ERC721BurnableFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ERC721BurnableApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) {
  2124  
  2125  	var ownerRule []interface{}
  2126  	for _, ownerItem := range owner {
  2127  		ownerRule = append(ownerRule, ownerItem)
  2128  	}
  2129  	var operatorRule []interface{}
  2130  	for _, operatorItem := range operator {
  2131  		operatorRule = append(operatorRule, operatorItem)
  2132  	}
  2133  
  2134  	logs, sub, err := _ERC721Burnable.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  2135  	if err != nil {
  2136  		return nil, err
  2137  	}
  2138  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2139  		defer sub.Unsubscribe()
  2140  		for {
  2141  			select {
  2142  			case log := <-logs:
  2143  				// New log arrived, parse the event and forward to the user
  2144  				event := new(ERC721BurnableApprovalForAll)
  2145  				if err := _ERC721Burnable.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  2146  					return err
  2147  				}
  2148  				event.Raw = log
  2149  
  2150  				select {
  2151  				case sink <- event:
  2152  				case err := <-sub.Err():
  2153  					return err
  2154  				case <-quit:
  2155  					return nil
  2156  				}
  2157  			case err := <-sub.Err():
  2158  				return err
  2159  			case <-quit:
  2160  				return nil
  2161  			}
  2162  		}
  2163  	}), nil
  2164  }
  2165  
  2166  // ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  2167  //
  2168  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  2169  func (_ERC721Burnable *ERC721BurnableFilterer) ParseApprovalForAll(log types.Log) (*ERC721BurnableApprovalForAll, error) {
  2170  	event := new(ERC721BurnableApprovalForAll)
  2171  	if err := _ERC721Burnable.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  2172  		return nil, err
  2173  	}
  2174  	return event, nil
  2175  }
  2176  
  2177  // ERC721BurnableTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC721Burnable contract.
  2178  type ERC721BurnableTransferIterator struct {
  2179  	Event *ERC721BurnableTransfer // Event containing the contract specifics and raw log
  2180  
  2181  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2182  	event    string              // Event name to use for unpacking event data
  2183  
  2184  	logs chan types.Log      // Log channel receiving the found contract events
  2185  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  2186  	done bool                // Whether the subscription completed delivering logs
  2187  	fail error               // Occurred error to stop iteration
  2188  }
  2189  
  2190  // Next advances the iterator to the subsequent event, returning whether there
  2191  // are any more events found. In case of a retrieval or parsing error, false is
  2192  // returned and Error() can be queried for the exact failure.
  2193  func (it *ERC721BurnableTransferIterator) Next() bool {
  2194  	// If the iterator failed, stop iterating
  2195  	if it.fail != nil {
  2196  		return false
  2197  	}
  2198  	// If the iterator completed, deliver directly whatever's available
  2199  	if it.done {
  2200  		select {
  2201  		case log := <-it.logs:
  2202  			it.Event = new(ERC721BurnableTransfer)
  2203  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2204  				it.fail = err
  2205  				return false
  2206  			}
  2207  			it.Event.Raw = log
  2208  			return true
  2209  
  2210  		default:
  2211  			return false
  2212  		}
  2213  	}
  2214  	// Iterator still in progress, wait for either a data or an error event
  2215  	select {
  2216  	case log := <-it.logs:
  2217  		it.Event = new(ERC721BurnableTransfer)
  2218  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2219  			it.fail = err
  2220  			return false
  2221  		}
  2222  		it.Event.Raw = log
  2223  		return true
  2224  
  2225  	case err := <-it.sub.Err():
  2226  		it.done = true
  2227  		it.fail = err
  2228  		return it.Next()
  2229  	}
  2230  }
  2231  
  2232  // Error returns any retrieval or parsing error occurred during filtering.
  2233  func (it *ERC721BurnableTransferIterator) Error() error {
  2234  	return it.fail
  2235  }
  2236  
  2237  // Close terminates the iteration process, releasing any pending underlying
  2238  // resources.
  2239  func (it *ERC721BurnableTransferIterator) Close() error {
  2240  	it.sub.Unsubscribe()
  2241  	return nil
  2242  }
  2243  
  2244  // ERC721BurnableTransfer represents a Transfer event raised by the ERC721Burnable contract.
  2245  type ERC721BurnableTransfer struct {
  2246  	From    common.Address
  2247  	To      common.Address
  2248  	TokenId *big.Int
  2249  	Raw     types.Log // Blockchain specific contextual infos
  2250  }
  2251  
  2252  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  2253  //
  2254  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  2255  func (_ERC721Burnable *ERC721BurnableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ERC721BurnableTransferIterator, error) {
  2256  
  2257  	var fromRule []interface{}
  2258  	for _, fromItem := range from {
  2259  		fromRule = append(fromRule, fromItem)
  2260  	}
  2261  	var toRule []interface{}
  2262  	for _, toItem := range to {
  2263  		toRule = append(toRule, toItem)
  2264  	}
  2265  	var tokenIdRule []interface{}
  2266  	for _, tokenIdItem := range tokenId {
  2267  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  2268  	}
  2269  
  2270  	logs, sub, err := _ERC721Burnable.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  2271  	if err != nil {
  2272  		return nil, err
  2273  	}
  2274  	return &ERC721BurnableTransferIterator{contract: _ERC721Burnable.contract, event: "Transfer", logs: logs, sub: sub}, nil
  2275  }
  2276  
  2277  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  2278  //
  2279  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  2280  func (_ERC721Burnable *ERC721BurnableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721BurnableTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  2281  
  2282  	var fromRule []interface{}
  2283  	for _, fromItem := range from {
  2284  		fromRule = append(fromRule, fromItem)
  2285  	}
  2286  	var toRule []interface{}
  2287  	for _, toItem := range to {
  2288  		toRule = append(toRule, toItem)
  2289  	}
  2290  	var tokenIdRule []interface{}
  2291  	for _, tokenIdItem := range tokenId {
  2292  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  2293  	}
  2294  
  2295  	logs, sub, err := _ERC721Burnable.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  2296  	if err != nil {
  2297  		return nil, err
  2298  	}
  2299  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2300  		defer sub.Unsubscribe()
  2301  		for {
  2302  			select {
  2303  			case log := <-logs:
  2304  				// New log arrived, parse the event and forward to the user
  2305  				event := new(ERC721BurnableTransfer)
  2306  				if err := _ERC721Burnable.contract.UnpackLog(event, "Transfer", log); err != nil {
  2307  					return err
  2308  				}
  2309  				event.Raw = log
  2310  
  2311  				select {
  2312  				case sink <- event:
  2313  				case err := <-sub.Err():
  2314  					return err
  2315  				case <-quit:
  2316  					return nil
  2317  				}
  2318  			case err := <-sub.Err():
  2319  				return err
  2320  			case <-quit:
  2321  				return nil
  2322  			}
  2323  		}
  2324  	}), nil
  2325  }
  2326  
  2327  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  2328  //
  2329  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  2330  func (_ERC721Burnable *ERC721BurnableFilterer) ParseTransfer(log types.Log) (*ERC721BurnableTransfer, error) {
  2331  	event := new(ERC721BurnableTransfer)
  2332  	if err := _ERC721Burnable.contract.UnpackLog(event, "Transfer", log); err != nil {
  2333  		return nil, err
  2334  	}
  2335  	return event, nil
  2336  }
  2337  
  2338  // ERC721MintableABI is the input ABI used to generate the binding from.
  2339  const ERC721MintableABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isMinter\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"}]"
  2340  
  2341  // ERC721MintableBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  2342  const ERC721MintableBinRuntime = `608060405234801561001057600080fd5b50600436106100ea5760003560e01c806370a082311161008c578063a22cb46511610066578063a22cb465146102ac578063aa271e1a146102da578063b88d4fde14610300578063e985e9c5146103c6576100ea565b806370a0823114610246578063983b2d561461027e57806398650275146102a4576100ea565b806323b872dd116100c857806323b872dd1461019157806340c10f19146101c757806342842e0e146101f35780636352211e14610229576100ea565b806301ffc9a7146100ef578063081812fc1461012a578063095ea7b314610163575b600080fd5b6101166004803603602081101561010557600080fd5b50356001600160e01b0319166103f4565b604080519115158252519081900360200190f35b6101476004803603602081101561014057600080fd5b5035610413565b604080516001600160a01b039092168252519081900360200190f35b61018f6004803603604081101561017957600080fd5b506001600160a01b038135169060200135610478565b005b61018f600480360360608110156101a757600080fd5b506001600160a01b0381358116916020810135909116906040013561058f565b610116600480360360408110156101dd57600080fd5b506001600160a01b0381351690602001356105e7565b61018f6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610643565b6101476004803603602081101561023f57600080fd5b503561065e565b61026c6004803603602081101561025c57600080fd5b50356001600160a01b03166106bb565b60408051918252519081900360200190f35b61018f6004803603602081101561029457600080fd5b50356001600160a01b0316610726565b61018f610779565b61018f600480360360408110156102c257600080fd5b506001600160a01b0381351690602001351515610784565b610116600480360360208110156102f057600080fd5b50356001600160a01b0316610853565b61018f6004803603608081101561031657600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561035157600080fd5b82018360208201111561036357600080fd5b8035906020019184600183028401116401000000008311171561038557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610866945050505050565b610116600480360360408110156103dc57600080fd5b506001600160a01b03813581169160200135166108c1565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061041e826108ef565b61045c57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180611179602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006104838261065e565b9050806001600160a01b0316836001600160a01b031614156104d957604051600160e51b62461bcd0281526004018080602001828103825260218152602001806111f06021913960400191505060405180910390fd5b336001600160a01b03821614806104f557506104f581336108c1565b61053357604051600160e51b62461bcd02815260040180806020018281038252603881526020018061109d6038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b610599338261090c565b6105d757604051600160e51b62461bcd0281526004018080602001828103825260318152602001806112116031913960400191505060405180910390fd5b6105e28383836109b3565b505050565b60006105f233610853565b61063057604051600160e51b62461bcd0281526004018080602001828103825260308152602001806111286030913960400191505060405180910390fd5b61063a8383610afd565b50600192915050565b6105e283838360405180602001604052806000815250610866565b6000818152600160205260408120546001600160a01b0316806106b557604051600160e51b62461bcd0281526004018080602001828103825260298152602001806110ff6029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661070557604051600160e51b62461bcd02815260040180806020018281038252602a8152602001806110d5602a913960400191505060405180910390fd5b6001600160a01b03821660009081526003602052604090206106b590610c34565b61072f33610853565b61076d57604051600160e51b62461bcd0281526004018080602001828103825260308152602001806111286030913960400191505060405180910390fd5b61077681610c38565b50565b61078233610c80565b565b6001600160a01b0382163314156107e55760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b60006106b560058363ffffffff610cc816565b61087184848461058f565b61087d84848484610d32565b6108bb57604051600160e51b62461bcd02815260040180806020018281038252603281526020018061101b6032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b6000610917826108ef565b61095557604051600160e51b62461bcd02815260040180806020018281038252602c815260200180611071602c913960400191505060405180910390fd5b60006109608361065e565b9050806001600160a01b0316846001600160a01b0316148061099b5750836001600160a01b031661099084610413565b6001600160a01b0316145b806109ab57506109ab81856108c1565b949350505050565b826001600160a01b03166109c68261065e565b6001600160a01b031614610a0e57604051600160e51b62461bcd0281526004018080602001828103825260298152602001806111c76029913960400191505060405180910390fd5b6001600160a01b038216610a5657604051600160e51b62461bcd02815260040180806020018281038252602481526020018061104d6024913960400191505060405180910390fd5b610a5f81610e6b565b6001600160a01b0383166000908152600360205260409020610a8090610ea6565b6001600160a01b0382166000908152600360205260409020610aa190610ebd565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b038216610b5b5760408051600160e51b62461bcd02815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b610b64816108ef565b15610bb95760408051600160e51b62461bcd02815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015290519081900360640190fd5b600081815260016020908152604080832080546001600160a01b0319166001600160a01b038716908117909155835260039091529020610bf890610ebd565b60405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b5490565b610c4960058263ffffffff610ec616565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b610c9160058263ffffffff610f4a16565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b038216610d1257604051600160e51b62461bcd0281526004018080602001828103825260228152602001806111a56022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6000610d46846001600160a01b0316610fb4565b610d52575060016109ab565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610dcf578181015183820152602001610db7565b50505050905090810190601f168015610dfc5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610e1e57600080fd5b505af1158015610e32573d6000803e3d6000fd5b505050506040513d6020811015610e4857600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b03161561077657600090815260026020526040902080546001600160a01b0319169055565b8054610eb990600163ffffffff610fba16565b9055565b80546001019055565b610ed08282610cc8565b15610f255760408051600160e51b62461bcd02815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b610f548282610cc8565b610f9257604051600160e51b62461bcd0281526004018080602001828103825260218152602001806111586021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b3b151590565b6000828211156110145760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c654552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e526f6c65733a206163636f756e7420697320746865207a65726f20616464726573734552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a72305820615522abbf018be3fc06c552bdc2a00a1abcf4fd411e92871c9cf0a7bfe052280029`
  2343  
  2344  // ERC721MintableFuncSigs maps the 4-byte function signature to its string representation.
  2345  var ERC721MintableFuncSigs = map[string]string{
  2346  	"983b2d56": "addMinter(address)",
  2347  	"095ea7b3": "approve(address,uint256)",
  2348  	"70a08231": "balanceOf(address)",
  2349  	"081812fc": "getApproved(uint256)",
  2350  	"e985e9c5": "isApprovedForAll(address,address)",
  2351  	"aa271e1a": "isMinter(address)",
  2352  	"40c10f19": "mint(address,uint256)",
  2353  	"6352211e": "ownerOf(uint256)",
  2354  	"98650275": "renounceMinter()",
  2355  	"42842e0e": "safeTransferFrom(address,address,uint256)",
  2356  	"b88d4fde": "safeTransferFrom(address,address,uint256,bytes)",
  2357  	"a22cb465": "setApprovalForAll(address,bool)",
  2358  	"01ffc9a7": "supportsInterface(bytes4)",
  2359  	"23b872dd": "transferFrom(address,address,uint256)",
  2360  }
  2361  
  2362  // ERC721MintableBin is the compiled bytecode used for deploying new contracts.
  2363  var ERC721MintableBin = "0x60806040526200001c6301ffc9a760e01b6200004b60201b60201c565b620000346380ac58cd60e01b6200004b60201b60201c565b62000045336200011a60201b60201c565b62000293565b7fffffffff000000000000000000000000000000000000000000000000000000008082161415620000dd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b620001358160056200016c60201b62000ec61790919060201c565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6200017e82826200021060201b60201c565b15620001eb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006001600160a01b03821662000273576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180620015106022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b61126d80620002a36000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806370a082311161008c578063a22cb46511610066578063a22cb465146102ac578063aa271e1a146102da578063b88d4fde14610300578063e985e9c5146103c6576100ea565b806370a0823114610246578063983b2d561461027e57806398650275146102a4576100ea565b806323b872dd116100c857806323b872dd1461019157806340c10f19146101c757806342842e0e146101f35780636352211e14610229576100ea565b806301ffc9a7146100ef578063081812fc1461012a578063095ea7b314610163575b600080fd5b6101166004803603602081101561010557600080fd5b50356001600160e01b0319166103f4565b604080519115158252519081900360200190f35b6101476004803603602081101561014057600080fd5b5035610413565b604080516001600160a01b039092168252519081900360200190f35b61018f6004803603604081101561017957600080fd5b506001600160a01b038135169060200135610478565b005b61018f600480360360608110156101a757600080fd5b506001600160a01b0381358116916020810135909116906040013561058f565b610116600480360360408110156101dd57600080fd5b506001600160a01b0381351690602001356105e7565b61018f6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610643565b6101476004803603602081101561023f57600080fd5b503561065e565b61026c6004803603602081101561025c57600080fd5b50356001600160a01b03166106bb565b60408051918252519081900360200190f35b61018f6004803603602081101561029457600080fd5b50356001600160a01b0316610726565b61018f610779565b61018f600480360360408110156102c257600080fd5b506001600160a01b0381351690602001351515610784565b610116600480360360208110156102f057600080fd5b50356001600160a01b0316610853565b61018f6004803603608081101561031657600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561035157600080fd5b82018360208201111561036357600080fd5b8035906020019184600183028401116401000000008311171561038557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610866945050505050565b610116600480360360408110156103dc57600080fd5b506001600160a01b03813581169160200135166108c1565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061041e826108ef565b61045c57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180611179602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006104838261065e565b9050806001600160a01b0316836001600160a01b031614156104d957604051600160e51b62461bcd0281526004018080602001828103825260218152602001806111f06021913960400191505060405180910390fd5b336001600160a01b03821614806104f557506104f581336108c1565b61053357604051600160e51b62461bcd02815260040180806020018281038252603881526020018061109d6038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b610599338261090c565b6105d757604051600160e51b62461bcd0281526004018080602001828103825260318152602001806112116031913960400191505060405180910390fd5b6105e28383836109b3565b505050565b60006105f233610853565b61063057604051600160e51b62461bcd0281526004018080602001828103825260308152602001806111286030913960400191505060405180910390fd5b61063a8383610afd565b50600192915050565b6105e283838360405180602001604052806000815250610866565b6000818152600160205260408120546001600160a01b0316806106b557604051600160e51b62461bcd0281526004018080602001828103825260298152602001806110ff6029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661070557604051600160e51b62461bcd02815260040180806020018281038252602a8152602001806110d5602a913960400191505060405180910390fd5b6001600160a01b03821660009081526003602052604090206106b590610c34565b61072f33610853565b61076d57604051600160e51b62461bcd0281526004018080602001828103825260308152602001806111286030913960400191505060405180910390fd5b61077681610c38565b50565b61078233610c80565b565b6001600160a01b0382163314156107e55760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b60006106b560058363ffffffff610cc816565b61087184848461058f565b61087d84848484610d32565b6108bb57604051600160e51b62461bcd02815260040180806020018281038252603281526020018061101b6032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b6000610917826108ef565b61095557604051600160e51b62461bcd02815260040180806020018281038252602c815260200180611071602c913960400191505060405180910390fd5b60006109608361065e565b9050806001600160a01b0316846001600160a01b0316148061099b5750836001600160a01b031661099084610413565b6001600160a01b0316145b806109ab57506109ab81856108c1565b949350505050565b826001600160a01b03166109c68261065e565b6001600160a01b031614610a0e57604051600160e51b62461bcd0281526004018080602001828103825260298152602001806111c76029913960400191505060405180910390fd5b6001600160a01b038216610a5657604051600160e51b62461bcd02815260040180806020018281038252602481526020018061104d6024913960400191505060405180910390fd5b610a5f81610e6b565b6001600160a01b0383166000908152600360205260409020610a8090610ea6565b6001600160a01b0382166000908152600360205260409020610aa190610ebd565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b038216610b5b5760408051600160e51b62461bcd02815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b610b64816108ef565b15610bb95760408051600160e51b62461bcd02815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015290519081900360640190fd5b600081815260016020908152604080832080546001600160a01b0319166001600160a01b038716908117909155835260039091529020610bf890610ebd565b60405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b5490565b610c4960058263ffffffff610ec616565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b610c9160058263ffffffff610f4a16565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b038216610d1257604051600160e51b62461bcd0281526004018080602001828103825260228152602001806111a56022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6000610d46846001600160a01b0316610fb4565b610d52575060016109ab565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610dcf578181015183820152602001610db7565b50505050905090810190601f168015610dfc5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610e1e57600080fd5b505af1158015610e32573d6000803e3d6000fd5b505050506040513d6020811015610e4857600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b03161561077657600090815260026020526040902080546001600160a01b0319169055565b8054610eb990600163ffffffff610fba16565b9055565b80546001019055565b610ed08282610cc8565b15610f255760408051600160e51b62461bcd02815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b610f548282610cc8565b610f9257604051600160e51b62461bcd0281526004018080602001828103825260218152602001806111586021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b3b151590565b6000828211156110145760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c654552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e526f6c65733a206163636f756e7420697320746865207a65726f20616464726573734552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a72305820615522abbf018be3fc06c552bdc2a00a1abcf4fd411e92871c9cf0a7bfe052280029526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373"
  2364  
  2365  // DeployERC721Mintable deploys a new Klaytn contract, binding an instance of ERC721Mintable to it.
  2366  func DeployERC721Mintable(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC721Mintable, error) {
  2367  	parsed, err := abi.JSON(strings.NewReader(ERC721MintableABI))
  2368  	if err != nil {
  2369  		return common.Address{}, nil, nil, err
  2370  	}
  2371  
  2372  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(ERC721MintableBin), backend)
  2373  	if err != nil {
  2374  		return common.Address{}, nil, nil, err
  2375  	}
  2376  	return address, tx, &ERC721Mintable{ERC721MintableCaller: ERC721MintableCaller{contract: contract}, ERC721MintableTransactor: ERC721MintableTransactor{contract: contract}, ERC721MintableFilterer: ERC721MintableFilterer{contract: contract}}, nil
  2377  }
  2378  
  2379  // ERC721Mintable is an auto generated Go binding around a Klaytn contract.
  2380  type ERC721Mintable struct {
  2381  	ERC721MintableCaller     // Read-only binding to the contract
  2382  	ERC721MintableTransactor // Write-only binding to the contract
  2383  	ERC721MintableFilterer   // Log filterer for contract events
  2384  }
  2385  
  2386  // ERC721MintableCaller is an auto generated read-only Go binding around a Klaytn contract.
  2387  type ERC721MintableCaller struct {
  2388  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2389  }
  2390  
  2391  // ERC721MintableTransactor is an auto generated write-only Go binding around a Klaytn contract.
  2392  type ERC721MintableTransactor struct {
  2393  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2394  }
  2395  
  2396  // ERC721MintableFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
  2397  type ERC721MintableFilterer struct {
  2398  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2399  }
  2400  
  2401  // ERC721MintableSession is an auto generated Go binding around a Klaytn contract,
  2402  // with pre-set call and transact options.
  2403  type ERC721MintableSession struct {
  2404  	Contract     *ERC721Mintable   // Generic contract binding to set the session for
  2405  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  2406  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  2407  }
  2408  
  2409  // ERC721MintableCallerSession is an auto generated read-only Go binding around a Klaytn contract,
  2410  // with pre-set call options.
  2411  type ERC721MintableCallerSession struct {
  2412  	Contract *ERC721MintableCaller // Generic contract caller binding to set the session for
  2413  	CallOpts bind.CallOpts         // Call options to use throughout this session
  2414  }
  2415  
  2416  // ERC721MintableTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  2417  // with pre-set transact options.
  2418  type ERC721MintableTransactorSession struct {
  2419  	Contract     *ERC721MintableTransactor // Generic contract transactor binding to set the session for
  2420  	TransactOpts bind.TransactOpts         // Transaction auth options to use throughout this session
  2421  }
  2422  
  2423  // ERC721MintableRaw is an auto generated low-level Go binding around a Klaytn contract.
  2424  type ERC721MintableRaw struct {
  2425  	Contract *ERC721Mintable // Generic contract binding to access the raw methods on
  2426  }
  2427  
  2428  // ERC721MintableCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  2429  type ERC721MintableCallerRaw struct {
  2430  	Contract *ERC721MintableCaller // Generic read-only contract binding to access the raw methods on
  2431  }
  2432  
  2433  // ERC721MintableTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  2434  type ERC721MintableTransactorRaw struct {
  2435  	Contract *ERC721MintableTransactor // Generic write-only contract binding to access the raw methods on
  2436  }
  2437  
  2438  // NewERC721Mintable creates a new instance of ERC721Mintable, bound to a specific deployed contract.
  2439  func NewERC721Mintable(address common.Address, backend bind.ContractBackend) (*ERC721Mintable, error) {
  2440  	contract, err := bindERC721Mintable(address, backend, backend, backend)
  2441  	if err != nil {
  2442  		return nil, err
  2443  	}
  2444  	return &ERC721Mintable{ERC721MintableCaller: ERC721MintableCaller{contract: contract}, ERC721MintableTransactor: ERC721MintableTransactor{contract: contract}, ERC721MintableFilterer: ERC721MintableFilterer{contract: contract}}, nil
  2445  }
  2446  
  2447  // NewERC721MintableCaller creates a new read-only instance of ERC721Mintable, bound to a specific deployed contract.
  2448  func NewERC721MintableCaller(address common.Address, caller bind.ContractCaller) (*ERC721MintableCaller, error) {
  2449  	contract, err := bindERC721Mintable(address, caller, nil, nil)
  2450  	if err != nil {
  2451  		return nil, err
  2452  	}
  2453  	return &ERC721MintableCaller{contract: contract}, nil
  2454  }
  2455  
  2456  // NewERC721MintableTransactor creates a new write-only instance of ERC721Mintable, bound to a specific deployed contract.
  2457  func NewERC721MintableTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC721MintableTransactor, error) {
  2458  	contract, err := bindERC721Mintable(address, nil, transactor, nil)
  2459  	if err != nil {
  2460  		return nil, err
  2461  	}
  2462  	return &ERC721MintableTransactor{contract: contract}, nil
  2463  }
  2464  
  2465  // NewERC721MintableFilterer creates a new log filterer instance of ERC721Mintable, bound to a specific deployed contract.
  2466  func NewERC721MintableFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC721MintableFilterer, error) {
  2467  	contract, err := bindERC721Mintable(address, nil, nil, filterer)
  2468  	if err != nil {
  2469  		return nil, err
  2470  	}
  2471  	return &ERC721MintableFilterer{contract: contract}, nil
  2472  }
  2473  
  2474  // bindERC721Mintable binds a generic wrapper to an already deployed contract.
  2475  func bindERC721Mintable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  2476  	parsed, err := abi.JSON(strings.NewReader(ERC721MintableABI))
  2477  	if err != nil {
  2478  		return nil, err
  2479  	}
  2480  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  2481  }
  2482  
  2483  // Call invokes the (constant) contract method with params as input values and
  2484  // sets the output to result. The result type might be a single field for simple
  2485  // returns, a slice of interfaces for anonymous returns and a struct for named
  2486  // returns.
  2487  func (_ERC721Mintable *ERC721MintableRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  2488  	return _ERC721Mintable.Contract.ERC721MintableCaller.contract.Call(opts, result, method, params...)
  2489  }
  2490  
  2491  // Transfer initiates a plain transaction to move funds to the contract, calling
  2492  // its default method if one is available.
  2493  func (_ERC721Mintable *ERC721MintableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  2494  	return _ERC721Mintable.Contract.ERC721MintableTransactor.contract.Transfer(opts)
  2495  }
  2496  
  2497  // Transact invokes the (paid) contract method with params as input values.
  2498  func (_ERC721Mintable *ERC721MintableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  2499  	return _ERC721Mintable.Contract.ERC721MintableTransactor.contract.Transact(opts, method, params...)
  2500  }
  2501  
  2502  // Call invokes the (constant) contract method with params as input values and
  2503  // sets the output to result. The result type might be a single field for simple
  2504  // returns, a slice of interfaces for anonymous returns and a struct for named
  2505  // returns.
  2506  func (_ERC721Mintable *ERC721MintableCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  2507  	return _ERC721Mintable.Contract.contract.Call(opts, result, method, params...)
  2508  }
  2509  
  2510  // Transfer initiates a plain transaction to move funds to the contract, calling
  2511  // its default method if one is available.
  2512  func (_ERC721Mintable *ERC721MintableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  2513  	return _ERC721Mintable.Contract.contract.Transfer(opts)
  2514  }
  2515  
  2516  // Transact invokes the (paid) contract method with params as input values.
  2517  func (_ERC721Mintable *ERC721MintableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  2518  	return _ERC721Mintable.Contract.contract.Transact(opts, method, params...)
  2519  }
  2520  
  2521  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  2522  //
  2523  // Solidity: function balanceOf(address owner) view returns(uint256)
  2524  func (_ERC721Mintable *ERC721MintableCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) {
  2525  	var (
  2526  		ret0 = new(*big.Int)
  2527  	)
  2528  	out := ret0
  2529  	err := _ERC721Mintable.contract.Call(opts, out, "balanceOf", owner)
  2530  	return *ret0, err
  2531  }
  2532  
  2533  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  2534  //
  2535  // Solidity: function balanceOf(address owner) view returns(uint256)
  2536  func (_ERC721Mintable *ERC721MintableSession) BalanceOf(owner common.Address) (*big.Int, error) {
  2537  	return _ERC721Mintable.Contract.BalanceOf(&_ERC721Mintable.CallOpts, owner)
  2538  }
  2539  
  2540  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  2541  //
  2542  // Solidity: function balanceOf(address owner) view returns(uint256)
  2543  func (_ERC721Mintable *ERC721MintableCallerSession) BalanceOf(owner common.Address) (*big.Int, error) {
  2544  	return _ERC721Mintable.Contract.BalanceOf(&_ERC721Mintable.CallOpts, owner)
  2545  }
  2546  
  2547  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  2548  //
  2549  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  2550  func (_ERC721Mintable *ERC721MintableCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  2551  	var (
  2552  		ret0 = new(common.Address)
  2553  	)
  2554  	out := ret0
  2555  	err := _ERC721Mintable.contract.Call(opts, out, "getApproved", tokenId)
  2556  	return *ret0, err
  2557  }
  2558  
  2559  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  2560  //
  2561  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  2562  func (_ERC721Mintable *ERC721MintableSession) GetApproved(tokenId *big.Int) (common.Address, error) {
  2563  	return _ERC721Mintable.Contract.GetApproved(&_ERC721Mintable.CallOpts, tokenId)
  2564  }
  2565  
  2566  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  2567  //
  2568  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  2569  func (_ERC721Mintable *ERC721MintableCallerSession) GetApproved(tokenId *big.Int) (common.Address, error) {
  2570  	return _ERC721Mintable.Contract.GetApproved(&_ERC721Mintable.CallOpts, tokenId)
  2571  }
  2572  
  2573  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  2574  //
  2575  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  2576  func (_ERC721Mintable *ERC721MintableCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) {
  2577  	var (
  2578  		ret0 = new(bool)
  2579  	)
  2580  	out := ret0
  2581  	err := _ERC721Mintable.contract.Call(opts, out, "isApprovedForAll", owner, operator)
  2582  	return *ret0, err
  2583  }
  2584  
  2585  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  2586  //
  2587  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  2588  func (_ERC721Mintable *ERC721MintableSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  2589  	return _ERC721Mintable.Contract.IsApprovedForAll(&_ERC721Mintable.CallOpts, owner, operator)
  2590  }
  2591  
  2592  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  2593  //
  2594  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  2595  func (_ERC721Mintable *ERC721MintableCallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  2596  	return _ERC721Mintable.Contract.IsApprovedForAll(&_ERC721Mintable.CallOpts, owner, operator)
  2597  }
  2598  
  2599  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
  2600  //
  2601  // Solidity: function isMinter(address account) view returns(bool)
  2602  func (_ERC721Mintable *ERC721MintableCaller) IsMinter(opts *bind.CallOpts, account common.Address) (bool, error) {
  2603  	var (
  2604  		ret0 = new(bool)
  2605  	)
  2606  	out := ret0
  2607  	err := _ERC721Mintable.contract.Call(opts, out, "isMinter", account)
  2608  	return *ret0, err
  2609  }
  2610  
  2611  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
  2612  //
  2613  // Solidity: function isMinter(address account) view returns(bool)
  2614  func (_ERC721Mintable *ERC721MintableSession) IsMinter(account common.Address) (bool, error) {
  2615  	return _ERC721Mintable.Contract.IsMinter(&_ERC721Mintable.CallOpts, account)
  2616  }
  2617  
  2618  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
  2619  //
  2620  // Solidity: function isMinter(address account) view returns(bool)
  2621  func (_ERC721Mintable *ERC721MintableCallerSession) IsMinter(account common.Address) (bool, error) {
  2622  	return _ERC721Mintable.Contract.IsMinter(&_ERC721Mintable.CallOpts, account)
  2623  }
  2624  
  2625  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  2626  //
  2627  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  2628  func (_ERC721Mintable *ERC721MintableCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  2629  	var (
  2630  		ret0 = new(common.Address)
  2631  	)
  2632  	out := ret0
  2633  	err := _ERC721Mintable.contract.Call(opts, out, "ownerOf", tokenId)
  2634  	return *ret0, err
  2635  }
  2636  
  2637  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  2638  //
  2639  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  2640  func (_ERC721Mintable *ERC721MintableSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
  2641  	return _ERC721Mintable.Contract.OwnerOf(&_ERC721Mintable.CallOpts, tokenId)
  2642  }
  2643  
  2644  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  2645  //
  2646  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  2647  func (_ERC721Mintable *ERC721MintableCallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
  2648  	return _ERC721Mintable.Contract.OwnerOf(&_ERC721Mintable.CallOpts, tokenId)
  2649  }
  2650  
  2651  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  2652  //
  2653  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  2654  func (_ERC721Mintable *ERC721MintableCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
  2655  	var (
  2656  		ret0 = new(bool)
  2657  	)
  2658  	out := ret0
  2659  	err := _ERC721Mintable.contract.Call(opts, out, "supportsInterface", interfaceId)
  2660  	return *ret0, err
  2661  }
  2662  
  2663  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  2664  //
  2665  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  2666  func (_ERC721Mintable *ERC721MintableSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  2667  	return _ERC721Mintable.Contract.SupportsInterface(&_ERC721Mintable.CallOpts, interfaceId)
  2668  }
  2669  
  2670  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  2671  //
  2672  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  2673  func (_ERC721Mintable *ERC721MintableCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  2674  	return _ERC721Mintable.Contract.SupportsInterface(&_ERC721Mintable.CallOpts, interfaceId)
  2675  }
  2676  
  2677  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
  2678  //
  2679  // Solidity: function addMinter(address account) returns()
  2680  func (_ERC721Mintable *ERC721MintableTransactor) AddMinter(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) {
  2681  	return _ERC721Mintable.contract.Transact(opts, "addMinter", account)
  2682  }
  2683  
  2684  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
  2685  //
  2686  // Solidity: function addMinter(address account) returns()
  2687  func (_ERC721Mintable *ERC721MintableSession) AddMinter(account common.Address) (*types.Transaction, error) {
  2688  	return _ERC721Mintable.Contract.AddMinter(&_ERC721Mintable.TransactOpts, account)
  2689  }
  2690  
  2691  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
  2692  //
  2693  // Solidity: function addMinter(address account) returns()
  2694  func (_ERC721Mintable *ERC721MintableTransactorSession) AddMinter(account common.Address) (*types.Transaction, error) {
  2695  	return _ERC721Mintable.Contract.AddMinter(&_ERC721Mintable.TransactOpts, account)
  2696  }
  2697  
  2698  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  2699  //
  2700  // Solidity: function approve(address to, uint256 tokenId) returns()
  2701  func (_ERC721Mintable *ERC721MintableTransactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  2702  	return _ERC721Mintable.contract.Transact(opts, "approve", to, tokenId)
  2703  }
  2704  
  2705  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  2706  //
  2707  // Solidity: function approve(address to, uint256 tokenId) returns()
  2708  func (_ERC721Mintable *ERC721MintableSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  2709  	return _ERC721Mintable.Contract.Approve(&_ERC721Mintable.TransactOpts, to, tokenId)
  2710  }
  2711  
  2712  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  2713  //
  2714  // Solidity: function approve(address to, uint256 tokenId) returns()
  2715  func (_ERC721Mintable *ERC721MintableTransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  2716  	return _ERC721Mintable.Contract.Approve(&_ERC721Mintable.TransactOpts, to, tokenId)
  2717  }
  2718  
  2719  // Mint is a paid mutator transaction binding the contract method 0x40c10f19.
  2720  //
  2721  // Solidity: function mint(address to, uint256 tokenId) returns(bool)
  2722  func (_ERC721Mintable *ERC721MintableTransactor) Mint(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  2723  	return _ERC721Mintable.contract.Transact(opts, "mint", to, tokenId)
  2724  }
  2725  
  2726  // Mint is a paid mutator transaction binding the contract method 0x40c10f19.
  2727  //
  2728  // Solidity: function mint(address to, uint256 tokenId) returns(bool)
  2729  func (_ERC721Mintable *ERC721MintableSession) Mint(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  2730  	return _ERC721Mintable.Contract.Mint(&_ERC721Mintable.TransactOpts, to, tokenId)
  2731  }
  2732  
  2733  // Mint is a paid mutator transaction binding the contract method 0x40c10f19.
  2734  //
  2735  // Solidity: function mint(address to, uint256 tokenId) returns(bool)
  2736  func (_ERC721Mintable *ERC721MintableTransactorSession) Mint(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  2737  	return _ERC721Mintable.Contract.Mint(&_ERC721Mintable.TransactOpts, to, tokenId)
  2738  }
  2739  
  2740  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
  2741  //
  2742  // Solidity: function renounceMinter() returns()
  2743  func (_ERC721Mintable *ERC721MintableTransactor) RenounceMinter(opts *bind.TransactOpts) (*types.Transaction, error) {
  2744  	return _ERC721Mintable.contract.Transact(opts, "renounceMinter")
  2745  }
  2746  
  2747  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
  2748  //
  2749  // Solidity: function renounceMinter() returns()
  2750  func (_ERC721Mintable *ERC721MintableSession) RenounceMinter() (*types.Transaction, error) {
  2751  	return _ERC721Mintable.Contract.RenounceMinter(&_ERC721Mintable.TransactOpts)
  2752  }
  2753  
  2754  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
  2755  //
  2756  // Solidity: function renounceMinter() returns()
  2757  func (_ERC721Mintable *ERC721MintableTransactorSession) RenounceMinter() (*types.Transaction, error) {
  2758  	return _ERC721Mintable.Contract.RenounceMinter(&_ERC721Mintable.TransactOpts)
  2759  }
  2760  
  2761  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  2762  //
  2763  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  2764  func (_ERC721Mintable *ERC721MintableTransactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  2765  	return _ERC721Mintable.contract.Transact(opts, "safeTransferFrom", from, to, tokenId)
  2766  }
  2767  
  2768  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  2769  //
  2770  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  2771  func (_ERC721Mintable *ERC721MintableSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  2772  	return _ERC721Mintable.Contract.SafeTransferFrom(&_ERC721Mintable.TransactOpts, from, to, tokenId)
  2773  }
  2774  
  2775  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  2776  //
  2777  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  2778  func (_ERC721Mintable *ERC721MintableTransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  2779  	return _ERC721Mintable.Contract.SafeTransferFrom(&_ERC721Mintable.TransactOpts, from, to, tokenId)
  2780  }
  2781  
  2782  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  2783  //
  2784  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
  2785  func (_ERC721Mintable *ERC721MintableTransactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
  2786  	return _ERC721Mintable.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, _data)
  2787  }
  2788  
  2789  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  2790  //
  2791  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
  2792  func (_ERC721Mintable *ERC721MintableSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
  2793  	return _ERC721Mintable.Contract.SafeTransferFrom0(&_ERC721Mintable.TransactOpts, from, to, tokenId, _data)
  2794  }
  2795  
  2796  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  2797  //
  2798  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
  2799  func (_ERC721Mintable *ERC721MintableTransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
  2800  	return _ERC721Mintable.Contract.SafeTransferFrom0(&_ERC721Mintable.TransactOpts, from, to, tokenId, _data)
  2801  }
  2802  
  2803  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  2804  //
  2805  // Solidity: function setApprovalForAll(address to, bool approved) returns()
  2806  func (_ERC721Mintable *ERC721MintableTransactor) SetApprovalForAll(opts *bind.TransactOpts, to common.Address, approved bool) (*types.Transaction, error) {
  2807  	return _ERC721Mintable.contract.Transact(opts, "setApprovalForAll", to, approved)
  2808  }
  2809  
  2810  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  2811  //
  2812  // Solidity: function setApprovalForAll(address to, bool approved) returns()
  2813  func (_ERC721Mintable *ERC721MintableSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
  2814  	return _ERC721Mintable.Contract.SetApprovalForAll(&_ERC721Mintable.TransactOpts, to, approved)
  2815  }
  2816  
  2817  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  2818  //
  2819  // Solidity: function setApprovalForAll(address to, bool approved) returns()
  2820  func (_ERC721Mintable *ERC721MintableTransactorSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
  2821  	return _ERC721Mintable.Contract.SetApprovalForAll(&_ERC721Mintable.TransactOpts, to, approved)
  2822  }
  2823  
  2824  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  2825  //
  2826  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  2827  func (_ERC721Mintable *ERC721MintableTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  2828  	return _ERC721Mintable.contract.Transact(opts, "transferFrom", from, to, tokenId)
  2829  }
  2830  
  2831  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  2832  //
  2833  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  2834  func (_ERC721Mintable *ERC721MintableSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  2835  	return _ERC721Mintable.Contract.TransferFrom(&_ERC721Mintable.TransactOpts, from, to, tokenId)
  2836  }
  2837  
  2838  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  2839  //
  2840  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  2841  func (_ERC721Mintable *ERC721MintableTransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  2842  	return _ERC721Mintable.Contract.TransferFrom(&_ERC721Mintable.TransactOpts, from, to, tokenId)
  2843  }
  2844  
  2845  // ERC721MintableApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC721Mintable contract.
  2846  type ERC721MintableApprovalIterator struct {
  2847  	Event *ERC721MintableApproval // Event containing the contract specifics and raw log
  2848  
  2849  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2850  	event    string              // Event name to use for unpacking event data
  2851  
  2852  	logs chan types.Log      // Log channel receiving the found contract events
  2853  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  2854  	done bool                // Whether the subscription completed delivering logs
  2855  	fail error               // Occurred error to stop iteration
  2856  }
  2857  
  2858  // Next advances the iterator to the subsequent event, returning whether there
  2859  // are any more events found. In case of a retrieval or parsing error, false is
  2860  // returned and Error() can be queried for the exact failure.
  2861  func (it *ERC721MintableApprovalIterator) Next() bool {
  2862  	// If the iterator failed, stop iterating
  2863  	if it.fail != nil {
  2864  		return false
  2865  	}
  2866  	// If the iterator completed, deliver directly whatever's available
  2867  	if it.done {
  2868  		select {
  2869  		case log := <-it.logs:
  2870  			it.Event = new(ERC721MintableApproval)
  2871  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2872  				it.fail = err
  2873  				return false
  2874  			}
  2875  			it.Event.Raw = log
  2876  			return true
  2877  
  2878  		default:
  2879  			return false
  2880  		}
  2881  	}
  2882  	// Iterator still in progress, wait for either a data or an error event
  2883  	select {
  2884  	case log := <-it.logs:
  2885  		it.Event = new(ERC721MintableApproval)
  2886  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2887  			it.fail = err
  2888  			return false
  2889  		}
  2890  		it.Event.Raw = log
  2891  		return true
  2892  
  2893  	case err := <-it.sub.Err():
  2894  		it.done = true
  2895  		it.fail = err
  2896  		return it.Next()
  2897  	}
  2898  }
  2899  
  2900  // Error returns any retrieval or parsing error occurred during filtering.
  2901  func (it *ERC721MintableApprovalIterator) Error() error {
  2902  	return it.fail
  2903  }
  2904  
  2905  // Close terminates the iteration process, releasing any pending underlying
  2906  // resources.
  2907  func (it *ERC721MintableApprovalIterator) Close() error {
  2908  	it.sub.Unsubscribe()
  2909  	return nil
  2910  }
  2911  
  2912  // ERC721MintableApproval represents a Approval event raised by the ERC721Mintable contract.
  2913  type ERC721MintableApproval struct {
  2914  	Owner    common.Address
  2915  	Approved common.Address
  2916  	TokenId  *big.Int
  2917  	Raw      types.Log // Blockchain specific contextual infos
  2918  }
  2919  
  2920  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  2921  //
  2922  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  2923  func (_ERC721Mintable *ERC721MintableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ERC721MintableApprovalIterator, error) {
  2924  
  2925  	var ownerRule []interface{}
  2926  	for _, ownerItem := range owner {
  2927  		ownerRule = append(ownerRule, ownerItem)
  2928  	}
  2929  	var approvedRule []interface{}
  2930  	for _, approvedItem := range approved {
  2931  		approvedRule = append(approvedRule, approvedItem)
  2932  	}
  2933  	var tokenIdRule []interface{}
  2934  	for _, tokenIdItem := range tokenId {
  2935  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  2936  	}
  2937  
  2938  	logs, sub, err := _ERC721Mintable.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  2939  	if err != nil {
  2940  		return nil, err
  2941  	}
  2942  	return &ERC721MintableApprovalIterator{contract: _ERC721Mintable.contract, event: "Approval", logs: logs, sub: sub}, nil
  2943  }
  2944  
  2945  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  2946  //
  2947  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  2948  func (_ERC721Mintable *ERC721MintableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721MintableApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  2949  
  2950  	var ownerRule []interface{}
  2951  	for _, ownerItem := range owner {
  2952  		ownerRule = append(ownerRule, ownerItem)
  2953  	}
  2954  	var approvedRule []interface{}
  2955  	for _, approvedItem := range approved {
  2956  		approvedRule = append(approvedRule, approvedItem)
  2957  	}
  2958  	var tokenIdRule []interface{}
  2959  	for _, tokenIdItem := range tokenId {
  2960  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  2961  	}
  2962  
  2963  	logs, sub, err := _ERC721Mintable.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  2964  	if err != nil {
  2965  		return nil, err
  2966  	}
  2967  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2968  		defer sub.Unsubscribe()
  2969  		for {
  2970  			select {
  2971  			case log := <-logs:
  2972  				// New log arrived, parse the event and forward to the user
  2973  				event := new(ERC721MintableApproval)
  2974  				if err := _ERC721Mintable.contract.UnpackLog(event, "Approval", log); err != nil {
  2975  					return err
  2976  				}
  2977  				event.Raw = log
  2978  
  2979  				select {
  2980  				case sink <- event:
  2981  				case err := <-sub.Err():
  2982  					return err
  2983  				case <-quit:
  2984  					return nil
  2985  				}
  2986  			case err := <-sub.Err():
  2987  				return err
  2988  			case <-quit:
  2989  				return nil
  2990  			}
  2991  		}
  2992  	}), nil
  2993  }
  2994  
  2995  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  2996  //
  2997  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  2998  func (_ERC721Mintable *ERC721MintableFilterer) ParseApproval(log types.Log) (*ERC721MintableApproval, error) {
  2999  	event := new(ERC721MintableApproval)
  3000  	if err := _ERC721Mintable.contract.UnpackLog(event, "Approval", log); err != nil {
  3001  		return nil, err
  3002  	}
  3003  	return event, nil
  3004  }
  3005  
  3006  // ERC721MintableApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the ERC721Mintable contract.
  3007  type ERC721MintableApprovalForAllIterator struct {
  3008  	Event *ERC721MintableApprovalForAll // Event containing the contract specifics and raw log
  3009  
  3010  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3011  	event    string              // Event name to use for unpacking event data
  3012  
  3013  	logs chan types.Log      // Log channel receiving the found contract events
  3014  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  3015  	done bool                // Whether the subscription completed delivering logs
  3016  	fail error               // Occurred error to stop iteration
  3017  }
  3018  
  3019  // Next advances the iterator to the subsequent event, returning whether there
  3020  // are any more events found. In case of a retrieval or parsing error, false is
  3021  // returned and Error() can be queried for the exact failure.
  3022  func (it *ERC721MintableApprovalForAllIterator) Next() bool {
  3023  	// If the iterator failed, stop iterating
  3024  	if it.fail != nil {
  3025  		return false
  3026  	}
  3027  	// If the iterator completed, deliver directly whatever's available
  3028  	if it.done {
  3029  		select {
  3030  		case log := <-it.logs:
  3031  			it.Event = new(ERC721MintableApprovalForAll)
  3032  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3033  				it.fail = err
  3034  				return false
  3035  			}
  3036  			it.Event.Raw = log
  3037  			return true
  3038  
  3039  		default:
  3040  			return false
  3041  		}
  3042  	}
  3043  	// Iterator still in progress, wait for either a data or an error event
  3044  	select {
  3045  	case log := <-it.logs:
  3046  		it.Event = new(ERC721MintableApprovalForAll)
  3047  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3048  			it.fail = err
  3049  			return false
  3050  		}
  3051  		it.Event.Raw = log
  3052  		return true
  3053  
  3054  	case err := <-it.sub.Err():
  3055  		it.done = true
  3056  		it.fail = err
  3057  		return it.Next()
  3058  	}
  3059  }
  3060  
  3061  // Error returns any retrieval or parsing error occurred during filtering.
  3062  func (it *ERC721MintableApprovalForAllIterator) Error() error {
  3063  	return it.fail
  3064  }
  3065  
  3066  // Close terminates the iteration process, releasing any pending underlying
  3067  // resources.
  3068  func (it *ERC721MintableApprovalForAllIterator) Close() error {
  3069  	it.sub.Unsubscribe()
  3070  	return nil
  3071  }
  3072  
  3073  // ERC721MintableApprovalForAll represents a ApprovalForAll event raised by the ERC721Mintable contract.
  3074  type ERC721MintableApprovalForAll struct {
  3075  	Owner    common.Address
  3076  	Operator common.Address
  3077  	Approved bool
  3078  	Raw      types.Log // Blockchain specific contextual infos
  3079  }
  3080  
  3081  // FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  3082  //
  3083  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  3084  func (_ERC721Mintable *ERC721MintableFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ERC721MintableApprovalForAllIterator, error) {
  3085  
  3086  	var ownerRule []interface{}
  3087  	for _, ownerItem := range owner {
  3088  		ownerRule = append(ownerRule, ownerItem)
  3089  	}
  3090  	var operatorRule []interface{}
  3091  	for _, operatorItem := range operator {
  3092  		operatorRule = append(operatorRule, operatorItem)
  3093  	}
  3094  
  3095  	logs, sub, err := _ERC721Mintable.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  3096  	if err != nil {
  3097  		return nil, err
  3098  	}
  3099  	return &ERC721MintableApprovalForAllIterator{contract: _ERC721Mintable.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil
  3100  }
  3101  
  3102  // WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  3103  //
  3104  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  3105  func (_ERC721Mintable *ERC721MintableFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ERC721MintableApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) {
  3106  
  3107  	var ownerRule []interface{}
  3108  	for _, ownerItem := range owner {
  3109  		ownerRule = append(ownerRule, ownerItem)
  3110  	}
  3111  	var operatorRule []interface{}
  3112  	for _, operatorItem := range operator {
  3113  		operatorRule = append(operatorRule, operatorItem)
  3114  	}
  3115  
  3116  	logs, sub, err := _ERC721Mintable.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  3117  	if err != nil {
  3118  		return nil, err
  3119  	}
  3120  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3121  		defer sub.Unsubscribe()
  3122  		for {
  3123  			select {
  3124  			case log := <-logs:
  3125  				// New log arrived, parse the event and forward to the user
  3126  				event := new(ERC721MintableApprovalForAll)
  3127  				if err := _ERC721Mintable.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  3128  					return err
  3129  				}
  3130  				event.Raw = log
  3131  
  3132  				select {
  3133  				case sink <- event:
  3134  				case err := <-sub.Err():
  3135  					return err
  3136  				case <-quit:
  3137  					return nil
  3138  				}
  3139  			case err := <-sub.Err():
  3140  				return err
  3141  			case <-quit:
  3142  				return nil
  3143  			}
  3144  		}
  3145  	}), nil
  3146  }
  3147  
  3148  // ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  3149  //
  3150  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  3151  func (_ERC721Mintable *ERC721MintableFilterer) ParseApprovalForAll(log types.Log) (*ERC721MintableApprovalForAll, error) {
  3152  	event := new(ERC721MintableApprovalForAll)
  3153  	if err := _ERC721Mintable.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  3154  		return nil, err
  3155  	}
  3156  	return event, nil
  3157  }
  3158  
  3159  // ERC721MintableMinterAddedIterator is returned from FilterMinterAdded and is used to iterate over the raw logs and unpacked data for MinterAdded events raised by the ERC721Mintable contract.
  3160  type ERC721MintableMinterAddedIterator struct {
  3161  	Event *ERC721MintableMinterAdded // Event containing the contract specifics and raw log
  3162  
  3163  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3164  	event    string              // Event name to use for unpacking event data
  3165  
  3166  	logs chan types.Log      // Log channel receiving the found contract events
  3167  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  3168  	done bool                // Whether the subscription completed delivering logs
  3169  	fail error               // Occurred error to stop iteration
  3170  }
  3171  
  3172  // Next advances the iterator to the subsequent event, returning whether there
  3173  // are any more events found. In case of a retrieval or parsing error, false is
  3174  // returned and Error() can be queried for the exact failure.
  3175  func (it *ERC721MintableMinterAddedIterator) Next() bool {
  3176  	// If the iterator failed, stop iterating
  3177  	if it.fail != nil {
  3178  		return false
  3179  	}
  3180  	// If the iterator completed, deliver directly whatever's available
  3181  	if it.done {
  3182  		select {
  3183  		case log := <-it.logs:
  3184  			it.Event = new(ERC721MintableMinterAdded)
  3185  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3186  				it.fail = err
  3187  				return false
  3188  			}
  3189  			it.Event.Raw = log
  3190  			return true
  3191  
  3192  		default:
  3193  			return false
  3194  		}
  3195  	}
  3196  	// Iterator still in progress, wait for either a data or an error event
  3197  	select {
  3198  	case log := <-it.logs:
  3199  		it.Event = new(ERC721MintableMinterAdded)
  3200  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3201  			it.fail = err
  3202  			return false
  3203  		}
  3204  		it.Event.Raw = log
  3205  		return true
  3206  
  3207  	case err := <-it.sub.Err():
  3208  		it.done = true
  3209  		it.fail = err
  3210  		return it.Next()
  3211  	}
  3212  }
  3213  
  3214  // Error returns any retrieval or parsing error occurred during filtering.
  3215  func (it *ERC721MintableMinterAddedIterator) Error() error {
  3216  	return it.fail
  3217  }
  3218  
  3219  // Close terminates the iteration process, releasing any pending underlying
  3220  // resources.
  3221  func (it *ERC721MintableMinterAddedIterator) Close() error {
  3222  	it.sub.Unsubscribe()
  3223  	return nil
  3224  }
  3225  
  3226  // ERC721MintableMinterAdded represents a MinterAdded event raised by the ERC721Mintable contract.
  3227  type ERC721MintableMinterAdded struct {
  3228  	Account common.Address
  3229  	Raw     types.Log // Blockchain specific contextual infos
  3230  }
  3231  
  3232  // FilterMinterAdded is a free log retrieval operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
  3233  //
  3234  // Solidity: event MinterAdded(address indexed account)
  3235  func (_ERC721Mintable *ERC721MintableFilterer) FilterMinterAdded(opts *bind.FilterOpts, account []common.Address) (*ERC721MintableMinterAddedIterator, error) {
  3236  
  3237  	var accountRule []interface{}
  3238  	for _, accountItem := range account {
  3239  		accountRule = append(accountRule, accountItem)
  3240  	}
  3241  
  3242  	logs, sub, err := _ERC721Mintable.contract.FilterLogs(opts, "MinterAdded", accountRule)
  3243  	if err != nil {
  3244  		return nil, err
  3245  	}
  3246  	return &ERC721MintableMinterAddedIterator{contract: _ERC721Mintable.contract, event: "MinterAdded", logs: logs, sub: sub}, nil
  3247  }
  3248  
  3249  // WatchMinterAdded is a free log subscription operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
  3250  //
  3251  // Solidity: event MinterAdded(address indexed account)
  3252  func (_ERC721Mintable *ERC721MintableFilterer) WatchMinterAdded(opts *bind.WatchOpts, sink chan<- *ERC721MintableMinterAdded, account []common.Address) (event.Subscription, error) {
  3253  
  3254  	var accountRule []interface{}
  3255  	for _, accountItem := range account {
  3256  		accountRule = append(accountRule, accountItem)
  3257  	}
  3258  
  3259  	logs, sub, err := _ERC721Mintable.contract.WatchLogs(opts, "MinterAdded", accountRule)
  3260  	if err != nil {
  3261  		return nil, err
  3262  	}
  3263  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3264  		defer sub.Unsubscribe()
  3265  		for {
  3266  			select {
  3267  			case log := <-logs:
  3268  				// New log arrived, parse the event and forward to the user
  3269  				event := new(ERC721MintableMinterAdded)
  3270  				if err := _ERC721Mintable.contract.UnpackLog(event, "MinterAdded", log); err != nil {
  3271  					return err
  3272  				}
  3273  				event.Raw = log
  3274  
  3275  				select {
  3276  				case sink <- event:
  3277  				case err := <-sub.Err():
  3278  					return err
  3279  				case <-quit:
  3280  					return nil
  3281  				}
  3282  			case err := <-sub.Err():
  3283  				return err
  3284  			case <-quit:
  3285  				return nil
  3286  			}
  3287  		}
  3288  	}), nil
  3289  }
  3290  
  3291  // ParseMinterAdded is a log parse operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
  3292  //
  3293  // Solidity: event MinterAdded(address indexed account)
  3294  func (_ERC721Mintable *ERC721MintableFilterer) ParseMinterAdded(log types.Log) (*ERC721MintableMinterAdded, error) {
  3295  	event := new(ERC721MintableMinterAdded)
  3296  	if err := _ERC721Mintable.contract.UnpackLog(event, "MinterAdded", log); err != nil {
  3297  		return nil, err
  3298  	}
  3299  	return event, nil
  3300  }
  3301  
  3302  // ERC721MintableMinterRemovedIterator is returned from FilterMinterRemoved and is used to iterate over the raw logs and unpacked data for MinterRemoved events raised by the ERC721Mintable contract.
  3303  type ERC721MintableMinterRemovedIterator struct {
  3304  	Event *ERC721MintableMinterRemoved // Event containing the contract specifics and raw log
  3305  
  3306  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3307  	event    string              // Event name to use for unpacking event data
  3308  
  3309  	logs chan types.Log      // Log channel receiving the found contract events
  3310  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  3311  	done bool                // Whether the subscription completed delivering logs
  3312  	fail error               // Occurred error to stop iteration
  3313  }
  3314  
  3315  // Next advances the iterator to the subsequent event, returning whether there
  3316  // are any more events found. In case of a retrieval or parsing error, false is
  3317  // returned and Error() can be queried for the exact failure.
  3318  func (it *ERC721MintableMinterRemovedIterator) Next() bool {
  3319  	// If the iterator failed, stop iterating
  3320  	if it.fail != nil {
  3321  		return false
  3322  	}
  3323  	// If the iterator completed, deliver directly whatever's available
  3324  	if it.done {
  3325  		select {
  3326  		case log := <-it.logs:
  3327  			it.Event = new(ERC721MintableMinterRemoved)
  3328  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3329  				it.fail = err
  3330  				return false
  3331  			}
  3332  			it.Event.Raw = log
  3333  			return true
  3334  
  3335  		default:
  3336  			return false
  3337  		}
  3338  	}
  3339  	// Iterator still in progress, wait for either a data or an error event
  3340  	select {
  3341  	case log := <-it.logs:
  3342  		it.Event = new(ERC721MintableMinterRemoved)
  3343  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3344  			it.fail = err
  3345  			return false
  3346  		}
  3347  		it.Event.Raw = log
  3348  		return true
  3349  
  3350  	case err := <-it.sub.Err():
  3351  		it.done = true
  3352  		it.fail = err
  3353  		return it.Next()
  3354  	}
  3355  }
  3356  
  3357  // Error returns any retrieval or parsing error occurred during filtering.
  3358  func (it *ERC721MintableMinterRemovedIterator) Error() error {
  3359  	return it.fail
  3360  }
  3361  
  3362  // Close terminates the iteration process, releasing any pending underlying
  3363  // resources.
  3364  func (it *ERC721MintableMinterRemovedIterator) Close() error {
  3365  	it.sub.Unsubscribe()
  3366  	return nil
  3367  }
  3368  
  3369  // ERC721MintableMinterRemoved represents a MinterRemoved event raised by the ERC721Mintable contract.
  3370  type ERC721MintableMinterRemoved struct {
  3371  	Account common.Address
  3372  	Raw     types.Log // Blockchain specific contextual infos
  3373  }
  3374  
  3375  // FilterMinterRemoved is a free log retrieval operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
  3376  //
  3377  // Solidity: event MinterRemoved(address indexed account)
  3378  func (_ERC721Mintable *ERC721MintableFilterer) FilterMinterRemoved(opts *bind.FilterOpts, account []common.Address) (*ERC721MintableMinterRemovedIterator, error) {
  3379  
  3380  	var accountRule []interface{}
  3381  	for _, accountItem := range account {
  3382  		accountRule = append(accountRule, accountItem)
  3383  	}
  3384  
  3385  	logs, sub, err := _ERC721Mintable.contract.FilterLogs(opts, "MinterRemoved", accountRule)
  3386  	if err != nil {
  3387  		return nil, err
  3388  	}
  3389  	return &ERC721MintableMinterRemovedIterator{contract: _ERC721Mintable.contract, event: "MinterRemoved", logs: logs, sub: sub}, nil
  3390  }
  3391  
  3392  // WatchMinterRemoved is a free log subscription operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
  3393  //
  3394  // Solidity: event MinterRemoved(address indexed account)
  3395  func (_ERC721Mintable *ERC721MintableFilterer) WatchMinterRemoved(opts *bind.WatchOpts, sink chan<- *ERC721MintableMinterRemoved, account []common.Address) (event.Subscription, error) {
  3396  
  3397  	var accountRule []interface{}
  3398  	for _, accountItem := range account {
  3399  		accountRule = append(accountRule, accountItem)
  3400  	}
  3401  
  3402  	logs, sub, err := _ERC721Mintable.contract.WatchLogs(opts, "MinterRemoved", accountRule)
  3403  	if err != nil {
  3404  		return nil, err
  3405  	}
  3406  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3407  		defer sub.Unsubscribe()
  3408  		for {
  3409  			select {
  3410  			case log := <-logs:
  3411  				// New log arrived, parse the event and forward to the user
  3412  				event := new(ERC721MintableMinterRemoved)
  3413  				if err := _ERC721Mintable.contract.UnpackLog(event, "MinterRemoved", log); err != nil {
  3414  					return err
  3415  				}
  3416  				event.Raw = log
  3417  
  3418  				select {
  3419  				case sink <- event:
  3420  				case err := <-sub.Err():
  3421  					return err
  3422  				case <-quit:
  3423  					return nil
  3424  				}
  3425  			case err := <-sub.Err():
  3426  				return err
  3427  			case <-quit:
  3428  				return nil
  3429  			}
  3430  		}
  3431  	}), nil
  3432  }
  3433  
  3434  // ParseMinterRemoved is a log parse operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
  3435  //
  3436  // Solidity: event MinterRemoved(address indexed account)
  3437  func (_ERC721Mintable *ERC721MintableFilterer) ParseMinterRemoved(log types.Log) (*ERC721MintableMinterRemoved, error) {
  3438  	event := new(ERC721MintableMinterRemoved)
  3439  	if err := _ERC721Mintable.contract.UnpackLog(event, "MinterRemoved", log); err != nil {
  3440  		return nil, err
  3441  	}
  3442  	return event, nil
  3443  }
  3444  
  3445  // ERC721MintableTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC721Mintable contract.
  3446  type ERC721MintableTransferIterator struct {
  3447  	Event *ERC721MintableTransfer // Event containing the contract specifics and raw log
  3448  
  3449  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3450  	event    string              // Event name to use for unpacking event data
  3451  
  3452  	logs chan types.Log      // Log channel receiving the found contract events
  3453  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  3454  	done bool                // Whether the subscription completed delivering logs
  3455  	fail error               // Occurred error to stop iteration
  3456  }
  3457  
  3458  // Next advances the iterator to the subsequent event, returning whether there
  3459  // are any more events found. In case of a retrieval or parsing error, false is
  3460  // returned and Error() can be queried for the exact failure.
  3461  func (it *ERC721MintableTransferIterator) Next() bool {
  3462  	// If the iterator failed, stop iterating
  3463  	if it.fail != nil {
  3464  		return false
  3465  	}
  3466  	// If the iterator completed, deliver directly whatever's available
  3467  	if it.done {
  3468  		select {
  3469  		case log := <-it.logs:
  3470  			it.Event = new(ERC721MintableTransfer)
  3471  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3472  				it.fail = err
  3473  				return false
  3474  			}
  3475  			it.Event.Raw = log
  3476  			return true
  3477  
  3478  		default:
  3479  			return false
  3480  		}
  3481  	}
  3482  	// Iterator still in progress, wait for either a data or an error event
  3483  	select {
  3484  	case log := <-it.logs:
  3485  		it.Event = new(ERC721MintableTransfer)
  3486  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3487  			it.fail = err
  3488  			return false
  3489  		}
  3490  		it.Event.Raw = log
  3491  		return true
  3492  
  3493  	case err := <-it.sub.Err():
  3494  		it.done = true
  3495  		it.fail = err
  3496  		return it.Next()
  3497  	}
  3498  }
  3499  
  3500  // Error returns any retrieval or parsing error occurred during filtering.
  3501  func (it *ERC721MintableTransferIterator) Error() error {
  3502  	return it.fail
  3503  }
  3504  
  3505  // Close terminates the iteration process, releasing any pending underlying
  3506  // resources.
  3507  func (it *ERC721MintableTransferIterator) Close() error {
  3508  	it.sub.Unsubscribe()
  3509  	return nil
  3510  }
  3511  
  3512  // ERC721MintableTransfer represents a Transfer event raised by the ERC721Mintable contract.
  3513  type ERC721MintableTransfer struct {
  3514  	From    common.Address
  3515  	To      common.Address
  3516  	TokenId *big.Int
  3517  	Raw     types.Log // Blockchain specific contextual infos
  3518  }
  3519  
  3520  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  3521  //
  3522  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  3523  func (_ERC721Mintable *ERC721MintableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ERC721MintableTransferIterator, error) {
  3524  
  3525  	var fromRule []interface{}
  3526  	for _, fromItem := range from {
  3527  		fromRule = append(fromRule, fromItem)
  3528  	}
  3529  	var toRule []interface{}
  3530  	for _, toItem := range to {
  3531  		toRule = append(toRule, toItem)
  3532  	}
  3533  	var tokenIdRule []interface{}
  3534  	for _, tokenIdItem := range tokenId {
  3535  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  3536  	}
  3537  
  3538  	logs, sub, err := _ERC721Mintable.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  3539  	if err != nil {
  3540  		return nil, err
  3541  	}
  3542  	return &ERC721MintableTransferIterator{contract: _ERC721Mintable.contract, event: "Transfer", logs: logs, sub: sub}, nil
  3543  }
  3544  
  3545  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  3546  //
  3547  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  3548  func (_ERC721Mintable *ERC721MintableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721MintableTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  3549  
  3550  	var fromRule []interface{}
  3551  	for _, fromItem := range from {
  3552  		fromRule = append(fromRule, fromItem)
  3553  	}
  3554  	var toRule []interface{}
  3555  	for _, toItem := range to {
  3556  		toRule = append(toRule, toItem)
  3557  	}
  3558  	var tokenIdRule []interface{}
  3559  	for _, tokenIdItem := range tokenId {
  3560  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  3561  	}
  3562  
  3563  	logs, sub, err := _ERC721Mintable.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  3564  	if err != nil {
  3565  		return nil, err
  3566  	}
  3567  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3568  		defer sub.Unsubscribe()
  3569  		for {
  3570  			select {
  3571  			case log := <-logs:
  3572  				// New log arrived, parse the event and forward to the user
  3573  				event := new(ERC721MintableTransfer)
  3574  				if err := _ERC721Mintable.contract.UnpackLog(event, "Transfer", log); err != nil {
  3575  					return err
  3576  				}
  3577  				event.Raw = log
  3578  
  3579  				select {
  3580  				case sink <- event:
  3581  				case err := <-sub.Err():
  3582  					return err
  3583  				case <-quit:
  3584  					return nil
  3585  				}
  3586  			case err := <-sub.Err():
  3587  				return err
  3588  			case <-quit:
  3589  				return nil
  3590  			}
  3591  		}
  3592  	}), nil
  3593  }
  3594  
  3595  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  3596  //
  3597  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  3598  func (_ERC721Mintable *ERC721MintableFilterer) ParseTransfer(log types.Log) (*ERC721MintableTransfer, error) {
  3599  	event := new(ERC721MintableTransfer)
  3600  	if err := _ERC721Mintable.contract.UnpackLog(event, "Transfer", log); err != nil {
  3601  		return nil, err
  3602  	}
  3603  	return event, nil
  3604  }
  3605  
  3606  // ERC721ServiceChainABI is the input ABI used to generate the binding from.
  3607  const ERC721ServiceChainABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_uid\",\"type\":\"uint256\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"requestValueTransfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_bridge\",\"type\":\"address\"}],\"name\":\"setBridge\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"bridge\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_bridge\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"}]"
  3608  
  3609  // ERC721ServiceChainBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  3610  const ERC721ServiceChainBinRuntime = ``
  3611  
  3612  // ERC721ServiceChainFuncSigs maps the 4-byte function signature to its string representation.
  3613  var ERC721ServiceChainFuncSigs = map[string]string{
  3614  	"095ea7b3": "approve(address,uint256)",
  3615  	"70a08231": "balanceOf(address)",
  3616  	"e78cea92": "bridge()",
  3617  	"081812fc": "getApproved(uint256)",
  3618  	"e985e9c5": "isApprovedForAll(address,address)",
  3619  	"8f32d59b": "isOwner()",
  3620  	"8da5cb5b": "owner()",
  3621  	"6352211e": "ownerOf(uint256)",
  3622  	"715018a6": "renounceOwnership()",
  3623  	"3f4c4e3d": "requestValueTransfer(uint256,address,bytes)",
  3624  	"42842e0e": "safeTransferFrom(address,address,uint256)",
  3625  	"b88d4fde": "safeTransferFrom(address,address,uint256,bytes)",
  3626  	"a22cb465": "setApprovalForAll(address,bool)",
  3627  	"8dd14802": "setBridge(address)",
  3628  	"01ffc9a7": "supportsInterface(bytes4)",
  3629  	"23b872dd": "transferFrom(address,address,uint256)",
  3630  	"f2fde38b": "transferOwnership(address)",
  3631  }
  3632  
  3633  // ERC721ServiceChain is an auto generated Go binding around a Klaytn contract.
  3634  type ERC721ServiceChain struct {
  3635  	ERC721ServiceChainCaller     // Read-only binding to the contract
  3636  	ERC721ServiceChainTransactor // Write-only binding to the contract
  3637  	ERC721ServiceChainFilterer   // Log filterer for contract events
  3638  }
  3639  
  3640  // ERC721ServiceChainCaller is an auto generated read-only Go binding around a Klaytn contract.
  3641  type ERC721ServiceChainCaller struct {
  3642  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  3643  }
  3644  
  3645  // ERC721ServiceChainTransactor is an auto generated write-only Go binding around a Klaytn contract.
  3646  type ERC721ServiceChainTransactor struct {
  3647  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  3648  }
  3649  
  3650  // ERC721ServiceChainFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
  3651  type ERC721ServiceChainFilterer struct {
  3652  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  3653  }
  3654  
  3655  // ERC721ServiceChainSession is an auto generated Go binding around a Klaytn contract,
  3656  // with pre-set call and transact options.
  3657  type ERC721ServiceChainSession struct {
  3658  	Contract     *ERC721ServiceChain // Generic contract binding to set the session for
  3659  	CallOpts     bind.CallOpts       // Call options to use throughout this session
  3660  	TransactOpts bind.TransactOpts   // Transaction auth options to use throughout this session
  3661  }
  3662  
  3663  // ERC721ServiceChainCallerSession is an auto generated read-only Go binding around a Klaytn contract,
  3664  // with pre-set call options.
  3665  type ERC721ServiceChainCallerSession struct {
  3666  	Contract *ERC721ServiceChainCaller // Generic contract caller binding to set the session for
  3667  	CallOpts bind.CallOpts             // Call options to use throughout this session
  3668  }
  3669  
  3670  // ERC721ServiceChainTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  3671  // with pre-set transact options.
  3672  type ERC721ServiceChainTransactorSession struct {
  3673  	Contract     *ERC721ServiceChainTransactor // Generic contract transactor binding to set the session for
  3674  	TransactOpts bind.TransactOpts             // Transaction auth options to use throughout this session
  3675  }
  3676  
  3677  // ERC721ServiceChainRaw is an auto generated low-level Go binding around a Klaytn contract.
  3678  type ERC721ServiceChainRaw struct {
  3679  	Contract *ERC721ServiceChain // Generic contract binding to access the raw methods on
  3680  }
  3681  
  3682  // ERC721ServiceChainCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  3683  type ERC721ServiceChainCallerRaw struct {
  3684  	Contract *ERC721ServiceChainCaller // Generic read-only contract binding to access the raw methods on
  3685  }
  3686  
  3687  // ERC721ServiceChainTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  3688  type ERC721ServiceChainTransactorRaw struct {
  3689  	Contract *ERC721ServiceChainTransactor // Generic write-only contract binding to access the raw methods on
  3690  }
  3691  
  3692  // NewERC721ServiceChain creates a new instance of ERC721ServiceChain, bound to a specific deployed contract.
  3693  func NewERC721ServiceChain(address common.Address, backend bind.ContractBackend) (*ERC721ServiceChain, error) {
  3694  	contract, err := bindERC721ServiceChain(address, backend, backend, backend)
  3695  	if err != nil {
  3696  		return nil, err
  3697  	}
  3698  	return &ERC721ServiceChain{ERC721ServiceChainCaller: ERC721ServiceChainCaller{contract: contract}, ERC721ServiceChainTransactor: ERC721ServiceChainTransactor{contract: contract}, ERC721ServiceChainFilterer: ERC721ServiceChainFilterer{contract: contract}}, nil
  3699  }
  3700  
  3701  // NewERC721ServiceChainCaller creates a new read-only instance of ERC721ServiceChain, bound to a specific deployed contract.
  3702  func NewERC721ServiceChainCaller(address common.Address, caller bind.ContractCaller) (*ERC721ServiceChainCaller, error) {
  3703  	contract, err := bindERC721ServiceChain(address, caller, nil, nil)
  3704  	if err != nil {
  3705  		return nil, err
  3706  	}
  3707  	return &ERC721ServiceChainCaller{contract: contract}, nil
  3708  }
  3709  
  3710  // NewERC721ServiceChainTransactor creates a new write-only instance of ERC721ServiceChain, bound to a specific deployed contract.
  3711  func NewERC721ServiceChainTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC721ServiceChainTransactor, error) {
  3712  	contract, err := bindERC721ServiceChain(address, nil, transactor, nil)
  3713  	if err != nil {
  3714  		return nil, err
  3715  	}
  3716  	return &ERC721ServiceChainTransactor{contract: contract}, nil
  3717  }
  3718  
  3719  // NewERC721ServiceChainFilterer creates a new log filterer instance of ERC721ServiceChain, bound to a specific deployed contract.
  3720  func NewERC721ServiceChainFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC721ServiceChainFilterer, error) {
  3721  	contract, err := bindERC721ServiceChain(address, nil, nil, filterer)
  3722  	if err != nil {
  3723  		return nil, err
  3724  	}
  3725  	return &ERC721ServiceChainFilterer{contract: contract}, nil
  3726  }
  3727  
  3728  // bindERC721ServiceChain binds a generic wrapper to an already deployed contract.
  3729  func bindERC721ServiceChain(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  3730  	parsed, err := abi.JSON(strings.NewReader(ERC721ServiceChainABI))
  3731  	if err != nil {
  3732  		return nil, err
  3733  	}
  3734  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  3735  }
  3736  
  3737  // Call invokes the (constant) contract method with params as input values and
  3738  // sets the output to result. The result type might be a single field for simple
  3739  // returns, a slice of interfaces for anonymous returns and a struct for named
  3740  // returns.
  3741  func (_ERC721ServiceChain *ERC721ServiceChainRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  3742  	return _ERC721ServiceChain.Contract.ERC721ServiceChainCaller.contract.Call(opts, result, method, params...)
  3743  }
  3744  
  3745  // Transfer initiates a plain transaction to move funds to the contract, calling
  3746  // its default method if one is available.
  3747  func (_ERC721ServiceChain *ERC721ServiceChainRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  3748  	return _ERC721ServiceChain.Contract.ERC721ServiceChainTransactor.contract.Transfer(opts)
  3749  }
  3750  
  3751  // Transact invokes the (paid) contract method with params as input values.
  3752  func (_ERC721ServiceChain *ERC721ServiceChainRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  3753  	return _ERC721ServiceChain.Contract.ERC721ServiceChainTransactor.contract.Transact(opts, method, params...)
  3754  }
  3755  
  3756  // Call invokes the (constant) contract method with params as input values and
  3757  // sets the output to result. The result type might be a single field for simple
  3758  // returns, a slice of interfaces for anonymous returns and a struct for named
  3759  // returns.
  3760  func (_ERC721ServiceChain *ERC721ServiceChainCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  3761  	return _ERC721ServiceChain.Contract.contract.Call(opts, result, method, params...)
  3762  }
  3763  
  3764  // Transfer initiates a plain transaction to move funds to the contract, calling
  3765  // its default method if one is available.
  3766  func (_ERC721ServiceChain *ERC721ServiceChainTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  3767  	return _ERC721ServiceChain.Contract.contract.Transfer(opts)
  3768  }
  3769  
  3770  // Transact invokes the (paid) contract method with params as input values.
  3771  func (_ERC721ServiceChain *ERC721ServiceChainTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  3772  	return _ERC721ServiceChain.Contract.contract.Transact(opts, method, params...)
  3773  }
  3774  
  3775  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  3776  //
  3777  // Solidity: function balanceOf(address owner) view returns(uint256)
  3778  func (_ERC721ServiceChain *ERC721ServiceChainCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) {
  3779  	var (
  3780  		ret0 = new(*big.Int)
  3781  	)
  3782  	out := ret0
  3783  	err := _ERC721ServiceChain.contract.Call(opts, out, "balanceOf", owner)
  3784  	return *ret0, err
  3785  }
  3786  
  3787  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  3788  //
  3789  // Solidity: function balanceOf(address owner) view returns(uint256)
  3790  func (_ERC721ServiceChain *ERC721ServiceChainSession) BalanceOf(owner common.Address) (*big.Int, error) {
  3791  	return _ERC721ServiceChain.Contract.BalanceOf(&_ERC721ServiceChain.CallOpts, owner)
  3792  }
  3793  
  3794  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  3795  //
  3796  // Solidity: function balanceOf(address owner) view returns(uint256)
  3797  func (_ERC721ServiceChain *ERC721ServiceChainCallerSession) BalanceOf(owner common.Address) (*big.Int, error) {
  3798  	return _ERC721ServiceChain.Contract.BalanceOf(&_ERC721ServiceChain.CallOpts, owner)
  3799  }
  3800  
  3801  // Bridge is a free data retrieval call binding the contract method 0xe78cea92.
  3802  //
  3803  // Solidity: function bridge() view returns(address)
  3804  func (_ERC721ServiceChain *ERC721ServiceChainCaller) Bridge(opts *bind.CallOpts) (common.Address, error) {
  3805  	var (
  3806  		ret0 = new(common.Address)
  3807  	)
  3808  	out := ret0
  3809  	err := _ERC721ServiceChain.contract.Call(opts, out, "bridge")
  3810  	return *ret0, err
  3811  }
  3812  
  3813  // Bridge is a free data retrieval call binding the contract method 0xe78cea92.
  3814  //
  3815  // Solidity: function bridge() view returns(address)
  3816  func (_ERC721ServiceChain *ERC721ServiceChainSession) Bridge() (common.Address, error) {
  3817  	return _ERC721ServiceChain.Contract.Bridge(&_ERC721ServiceChain.CallOpts)
  3818  }
  3819  
  3820  // Bridge is a free data retrieval call binding the contract method 0xe78cea92.
  3821  //
  3822  // Solidity: function bridge() view returns(address)
  3823  func (_ERC721ServiceChain *ERC721ServiceChainCallerSession) Bridge() (common.Address, error) {
  3824  	return _ERC721ServiceChain.Contract.Bridge(&_ERC721ServiceChain.CallOpts)
  3825  }
  3826  
  3827  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  3828  //
  3829  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  3830  func (_ERC721ServiceChain *ERC721ServiceChainCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  3831  	var (
  3832  		ret0 = new(common.Address)
  3833  	)
  3834  	out := ret0
  3835  	err := _ERC721ServiceChain.contract.Call(opts, out, "getApproved", tokenId)
  3836  	return *ret0, err
  3837  }
  3838  
  3839  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  3840  //
  3841  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  3842  func (_ERC721ServiceChain *ERC721ServiceChainSession) GetApproved(tokenId *big.Int) (common.Address, error) {
  3843  	return _ERC721ServiceChain.Contract.GetApproved(&_ERC721ServiceChain.CallOpts, tokenId)
  3844  }
  3845  
  3846  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  3847  //
  3848  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  3849  func (_ERC721ServiceChain *ERC721ServiceChainCallerSession) GetApproved(tokenId *big.Int) (common.Address, error) {
  3850  	return _ERC721ServiceChain.Contract.GetApproved(&_ERC721ServiceChain.CallOpts, tokenId)
  3851  }
  3852  
  3853  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  3854  //
  3855  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  3856  func (_ERC721ServiceChain *ERC721ServiceChainCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) {
  3857  	var (
  3858  		ret0 = new(bool)
  3859  	)
  3860  	out := ret0
  3861  	err := _ERC721ServiceChain.contract.Call(opts, out, "isApprovedForAll", owner, operator)
  3862  	return *ret0, err
  3863  }
  3864  
  3865  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  3866  //
  3867  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  3868  func (_ERC721ServiceChain *ERC721ServiceChainSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  3869  	return _ERC721ServiceChain.Contract.IsApprovedForAll(&_ERC721ServiceChain.CallOpts, owner, operator)
  3870  }
  3871  
  3872  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  3873  //
  3874  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  3875  func (_ERC721ServiceChain *ERC721ServiceChainCallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  3876  	return _ERC721ServiceChain.Contract.IsApprovedForAll(&_ERC721ServiceChain.CallOpts, owner, operator)
  3877  }
  3878  
  3879  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  3880  //
  3881  // Solidity: function isOwner() view returns(bool)
  3882  func (_ERC721ServiceChain *ERC721ServiceChainCaller) IsOwner(opts *bind.CallOpts) (bool, error) {
  3883  	var (
  3884  		ret0 = new(bool)
  3885  	)
  3886  	out := ret0
  3887  	err := _ERC721ServiceChain.contract.Call(opts, out, "isOwner")
  3888  	return *ret0, err
  3889  }
  3890  
  3891  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  3892  //
  3893  // Solidity: function isOwner() view returns(bool)
  3894  func (_ERC721ServiceChain *ERC721ServiceChainSession) IsOwner() (bool, error) {
  3895  	return _ERC721ServiceChain.Contract.IsOwner(&_ERC721ServiceChain.CallOpts)
  3896  }
  3897  
  3898  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  3899  //
  3900  // Solidity: function isOwner() view returns(bool)
  3901  func (_ERC721ServiceChain *ERC721ServiceChainCallerSession) IsOwner() (bool, error) {
  3902  	return _ERC721ServiceChain.Contract.IsOwner(&_ERC721ServiceChain.CallOpts)
  3903  }
  3904  
  3905  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  3906  //
  3907  // Solidity: function owner() view returns(address)
  3908  func (_ERC721ServiceChain *ERC721ServiceChainCaller) Owner(opts *bind.CallOpts) (common.Address, error) {
  3909  	var (
  3910  		ret0 = new(common.Address)
  3911  	)
  3912  	out := ret0
  3913  	err := _ERC721ServiceChain.contract.Call(opts, out, "owner")
  3914  	return *ret0, err
  3915  }
  3916  
  3917  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  3918  //
  3919  // Solidity: function owner() view returns(address)
  3920  func (_ERC721ServiceChain *ERC721ServiceChainSession) Owner() (common.Address, error) {
  3921  	return _ERC721ServiceChain.Contract.Owner(&_ERC721ServiceChain.CallOpts)
  3922  }
  3923  
  3924  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  3925  //
  3926  // Solidity: function owner() view returns(address)
  3927  func (_ERC721ServiceChain *ERC721ServiceChainCallerSession) Owner() (common.Address, error) {
  3928  	return _ERC721ServiceChain.Contract.Owner(&_ERC721ServiceChain.CallOpts)
  3929  }
  3930  
  3931  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  3932  //
  3933  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  3934  func (_ERC721ServiceChain *ERC721ServiceChainCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  3935  	var (
  3936  		ret0 = new(common.Address)
  3937  	)
  3938  	out := ret0
  3939  	err := _ERC721ServiceChain.contract.Call(opts, out, "ownerOf", tokenId)
  3940  	return *ret0, err
  3941  }
  3942  
  3943  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  3944  //
  3945  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  3946  func (_ERC721ServiceChain *ERC721ServiceChainSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
  3947  	return _ERC721ServiceChain.Contract.OwnerOf(&_ERC721ServiceChain.CallOpts, tokenId)
  3948  }
  3949  
  3950  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  3951  //
  3952  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  3953  func (_ERC721ServiceChain *ERC721ServiceChainCallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
  3954  	return _ERC721ServiceChain.Contract.OwnerOf(&_ERC721ServiceChain.CallOpts, tokenId)
  3955  }
  3956  
  3957  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  3958  //
  3959  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  3960  func (_ERC721ServiceChain *ERC721ServiceChainCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
  3961  	var (
  3962  		ret0 = new(bool)
  3963  	)
  3964  	out := ret0
  3965  	err := _ERC721ServiceChain.contract.Call(opts, out, "supportsInterface", interfaceId)
  3966  	return *ret0, err
  3967  }
  3968  
  3969  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  3970  //
  3971  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  3972  func (_ERC721ServiceChain *ERC721ServiceChainSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  3973  	return _ERC721ServiceChain.Contract.SupportsInterface(&_ERC721ServiceChain.CallOpts, interfaceId)
  3974  }
  3975  
  3976  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  3977  //
  3978  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  3979  func (_ERC721ServiceChain *ERC721ServiceChainCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  3980  	return _ERC721ServiceChain.Contract.SupportsInterface(&_ERC721ServiceChain.CallOpts, interfaceId)
  3981  }
  3982  
  3983  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  3984  //
  3985  // Solidity: function approve(address to, uint256 tokenId) returns()
  3986  func (_ERC721ServiceChain *ERC721ServiceChainTransactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  3987  	return _ERC721ServiceChain.contract.Transact(opts, "approve", to, tokenId)
  3988  }
  3989  
  3990  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  3991  //
  3992  // Solidity: function approve(address to, uint256 tokenId) returns()
  3993  func (_ERC721ServiceChain *ERC721ServiceChainSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  3994  	return _ERC721ServiceChain.Contract.Approve(&_ERC721ServiceChain.TransactOpts, to, tokenId)
  3995  }
  3996  
  3997  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  3998  //
  3999  // Solidity: function approve(address to, uint256 tokenId) returns()
  4000  func (_ERC721ServiceChain *ERC721ServiceChainTransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  4001  	return _ERC721ServiceChain.Contract.Approve(&_ERC721ServiceChain.TransactOpts, to, tokenId)
  4002  }
  4003  
  4004  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  4005  //
  4006  // Solidity: function renounceOwnership() returns()
  4007  func (_ERC721ServiceChain *ERC721ServiceChainTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) {
  4008  	return _ERC721ServiceChain.contract.Transact(opts, "renounceOwnership")
  4009  }
  4010  
  4011  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  4012  //
  4013  // Solidity: function renounceOwnership() returns()
  4014  func (_ERC721ServiceChain *ERC721ServiceChainSession) RenounceOwnership() (*types.Transaction, error) {
  4015  	return _ERC721ServiceChain.Contract.RenounceOwnership(&_ERC721ServiceChain.TransactOpts)
  4016  }
  4017  
  4018  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  4019  //
  4020  // Solidity: function renounceOwnership() returns()
  4021  func (_ERC721ServiceChain *ERC721ServiceChainTransactorSession) RenounceOwnership() (*types.Transaction, error) {
  4022  	return _ERC721ServiceChain.Contract.RenounceOwnership(&_ERC721ServiceChain.TransactOpts)
  4023  }
  4024  
  4025  // RequestValueTransfer is a paid mutator transaction binding the contract method 0x3f4c4e3d.
  4026  //
  4027  // Solidity: function requestValueTransfer(uint256 _uid, address _to, bytes _extraData) returns()
  4028  func (_ERC721ServiceChain *ERC721ServiceChainTransactor) RequestValueTransfer(opts *bind.TransactOpts, _uid *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) {
  4029  	return _ERC721ServiceChain.contract.Transact(opts, "requestValueTransfer", _uid, _to, _extraData)
  4030  }
  4031  
  4032  // RequestValueTransfer is a paid mutator transaction binding the contract method 0x3f4c4e3d.
  4033  //
  4034  // Solidity: function requestValueTransfer(uint256 _uid, address _to, bytes _extraData) returns()
  4035  func (_ERC721ServiceChain *ERC721ServiceChainSession) RequestValueTransfer(_uid *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) {
  4036  	return _ERC721ServiceChain.Contract.RequestValueTransfer(&_ERC721ServiceChain.TransactOpts, _uid, _to, _extraData)
  4037  }
  4038  
  4039  // RequestValueTransfer is a paid mutator transaction binding the contract method 0x3f4c4e3d.
  4040  //
  4041  // Solidity: function requestValueTransfer(uint256 _uid, address _to, bytes _extraData) returns()
  4042  func (_ERC721ServiceChain *ERC721ServiceChainTransactorSession) RequestValueTransfer(_uid *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) {
  4043  	return _ERC721ServiceChain.Contract.RequestValueTransfer(&_ERC721ServiceChain.TransactOpts, _uid, _to, _extraData)
  4044  }
  4045  
  4046  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  4047  //
  4048  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  4049  func (_ERC721ServiceChain *ERC721ServiceChainTransactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  4050  	return _ERC721ServiceChain.contract.Transact(opts, "safeTransferFrom", from, to, tokenId)
  4051  }
  4052  
  4053  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  4054  //
  4055  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  4056  func (_ERC721ServiceChain *ERC721ServiceChainSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  4057  	return _ERC721ServiceChain.Contract.SafeTransferFrom(&_ERC721ServiceChain.TransactOpts, from, to, tokenId)
  4058  }
  4059  
  4060  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  4061  //
  4062  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  4063  func (_ERC721ServiceChain *ERC721ServiceChainTransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  4064  	return _ERC721ServiceChain.Contract.SafeTransferFrom(&_ERC721ServiceChain.TransactOpts, from, to, tokenId)
  4065  }
  4066  
  4067  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  4068  //
  4069  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
  4070  func (_ERC721ServiceChain *ERC721ServiceChainTransactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
  4071  	return _ERC721ServiceChain.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, _data)
  4072  }
  4073  
  4074  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  4075  //
  4076  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
  4077  func (_ERC721ServiceChain *ERC721ServiceChainSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
  4078  	return _ERC721ServiceChain.Contract.SafeTransferFrom0(&_ERC721ServiceChain.TransactOpts, from, to, tokenId, _data)
  4079  }
  4080  
  4081  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  4082  //
  4083  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
  4084  func (_ERC721ServiceChain *ERC721ServiceChainTransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
  4085  	return _ERC721ServiceChain.Contract.SafeTransferFrom0(&_ERC721ServiceChain.TransactOpts, from, to, tokenId, _data)
  4086  }
  4087  
  4088  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  4089  //
  4090  // Solidity: function setApprovalForAll(address to, bool approved) returns()
  4091  func (_ERC721ServiceChain *ERC721ServiceChainTransactor) SetApprovalForAll(opts *bind.TransactOpts, to common.Address, approved bool) (*types.Transaction, error) {
  4092  	return _ERC721ServiceChain.contract.Transact(opts, "setApprovalForAll", to, approved)
  4093  }
  4094  
  4095  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  4096  //
  4097  // Solidity: function setApprovalForAll(address to, bool approved) returns()
  4098  func (_ERC721ServiceChain *ERC721ServiceChainSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
  4099  	return _ERC721ServiceChain.Contract.SetApprovalForAll(&_ERC721ServiceChain.TransactOpts, to, approved)
  4100  }
  4101  
  4102  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  4103  //
  4104  // Solidity: function setApprovalForAll(address to, bool approved) returns()
  4105  func (_ERC721ServiceChain *ERC721ServiceChainTransactorSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
  4106  	return _ERC721ServiceChain.Contract.SetApprovalForAll(&_ERC721ServiceChain.TransactOpts, to, approved)
  4107  }
  4108  
  4109  // SetBridge is a paid mutator transaction binding the contract method 0x8dd14802.
  4110  //
  4111  // Solidity: function setBridge(address _bridge) returns()
  4112  func (_ERC721ServiceChain *ERC721ServiceChainTransactor) SetBridge(opts *bind.TransactOpts, _bridge common.Address) (*types.Transaction, error) {
  4113  	return _ERC721ServiceChain.contract.Transact(opts, "setBridge", _bridge)
  4114  }
  4115  
  4116  // SetBridge is a paid mutator transaction binding the contract method 0x8dd14802.
  4117  //
  4118  // Solidity: function setBridge(address _bridge) returns()
  4119  func (_ERC721ServiceChain *ERC721ServiceChainSession) SetBridge(_bridge common.Address) (*types.Transaction, error) {
  4120  	return _ERC721ServiceChain.Contract.SetBridge(&_ERC721ServiceChain.TransactOpts, _bridge)
  4121  }
  4122  
  4123  // SetBridge is a paid mutator transaction binding the contract method 0x8dd14802.
  4124  //
  4125  // Solidity: function setBridge(address _bridge) returns()
  4126  func (_ERC721ServiceChain *ERC721ServiceChainTransactorSession) SetBridge(_bridge common.Address) (*types.Transaction, error) {
  4127  	return _ERC721ServiceChain.Contract.SetBridge(&_ERC721ServiceChain.TransactOpts, _bridge)
  4128  }
  4129  
  4130  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  4131  //
  4132  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  4133  func (_ERC721ServiceChain *ERC721ServiceChainTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  4134  	return _ERC721ServiceChain.contract.Transact(opts, "transferFrom", from, to, tokenId)
  4135  }
  4136  
  4137  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  4138  //
  4139  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  4140  func (_ERC721ServiceChain *ERC721ServiceChainSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  4141  	return _ERC721ServiceChain.Contract.TransferFrom(&_ERC721ServiceChain.TransactOpts, from, to, tokenId)
  4142  }
  4143  
  4144  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  4145  //
  4146  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  4147  func (_ERC721ServiceChain *ERC721ServiceChainTransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  4148  	return _ERC721ServiceChain.Contract.TransferFrom(&_ERC721ServiceChain.TransactOpts, from, to, tokenId)
  4149  }
  4150  
  4151  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  4152  //
  4153  // Solidity: function transferOwnership(address newOwner) returns()
  4154  func (_ERC721ServiceChain *ERC721ServiceChainTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) {
  4155  	return _ERC721ServiceChain.contract.Transact(opts, "transferOwnership", newOwner)
  4156  }
  4157  
  4158  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  4159  //
  4160  // Solidity: function transferOwnership(address newOwner) returns()
  4161  func (_ERC721ServiceChain *ERC721ServiceChainSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  4162  	return _ERC721ServiceChain.Contract.TransferOwnership(&_ERC721ServiceChain.TransactOpts, newOwner)
  4163  }
  4164  
  4165  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  4166  //
  4167  // Solidity: function transferOwnership(address newOwner) returns()
  4168  func (_ERC721ServiceChain *ERC721ServiceChainTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  4169  	return _ERC721ServiceChain.Contract.TransferOwnership(&_ERC721ServiceChain.TransactOpts, newOwner)
  4170  }
  4171  
  4172  // ERC721ServiceChainApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC721ServiceChain contract.
  4173  type ERC721ServiceChainApprovalIterator struct {
  4174  	Event *ERC721ServiceChainApproval // Event containing the contract specifics and raw log
  4175  
  4176  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4177  	event    string              // Event name to use for unpacking event data
  4178  
  4179  	logs chan types.Log      // Log channel receiving the found contract events
  4180  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  4181  	done bool                // Whether the subscription completed delivering logs
  4182  	fail error               // Occurred error to stop iteration
  4183  }
  4184  
  4185  // Next advances the iterator to the subsequent event, returning whether there
  4186  // are any more events found. In case of a retrieval or parsing error, false is
  4187  // returned and Error() can be queried for the exact failure.
  4188  func (it *ERC721ServiceChainApprovalIterator) Next() bool {
  4189  	// If the iterator failed, stop iterating
  4190  	if it.fail != nil {
  4191  		return false
  4192  	}
  4193  	// If the iterator completed, deliver directly whatever's available
  4194  	if it.done {
  4195  		select {
  4196  		case log := <-it.logs:
  4197  			it.Event = new(ERC721ServiceChainApproval)
  4198  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4199  				it.fail = err
  4200  				return false
  4201  			}
  4202  			it.Event.Raw = log
  4203  			return true
  4204  
  4205  		default:
  4206  			return false
  4207  		}
  4208  	}
  4209  	// Iterator still in progress, wait for either a data or an error event
  4210  	select {
  4211  	case log := <-it.logs:
  4212  		it.Event = new(ERC721ServiceChainApproval)
  4213  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4214  			it.fail = err
  4215  			return false
  4216  		}
  4217  		it.Event.Raw = log
  4218  		return true
  4219  
  4220  	case err := <-it.sub.Err():
  4221  		it.done = true
  4222  		it.fail = err
  4223  		return it.Next()
  4224  	}
  4225  }
  4226  
  4227  // Error returns any retrieval or parsing error occurred during filtering.
  4228  func (it *ERC721ServiceChainApprovalIterator) Error() error {
  4229  	return it.fail
  4230  }
  4231  
  4232  // Close terminates the iteration process, releasing any pending underlying
  4233  // resources.
  4234  func (it *ERC721ServiceChainApprovalIterator) Close() error {
  4235  	it.sub.Unsubscribe()
  4236  	return nil
  4237  }
  4238  
  4239  // ERC721ServiceChainApproval represents a Approval event raised by the ERC721ServiceChain contract.
  4240  type ERC721ServiceChainApproval struct {
  4241  	Owner    common.Address
  4242  	Approved common.Address
  4243  	TokenId  *big.Int
  4244  	Raw      types.Log // Blockchain specific contextual infos
  4245  }
  4246  
  4247  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  4248  //
  4249  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  4250  func (_ERC721ServiceChain *ERC721ServiceChainFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ERC721ServiceChainApprovalIterator, error) {
  4251  
  4252  	var ownerRule []interface{}
  4253  	for _, ownerItem := range owner {
  4254  		ownerRule = append(ownerRule, ownerItem)
  4255  	}
  4256  	var approvedRule []interface{}
  4257  	for _, approvedItem := range approved {
  4258  		approvedRule = append(approvedRule, approvedItem)
  4259  	}
  4260  	var tokenIdRule []interface{}
  4261  	for _, tokenIdItem := range tokenId {
  4262  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  4263  	}
  4264  
  4265  	logs, sub, err := _ERC721ServiceChain.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  4266  	if err != nil {
  4267  		return nil, err
  4268  	}
  4269  	return &ERC721ServiceChainApprovalIterator{contract: _ERC721ServiceChain.contract, event: "Approval", logs: logs, sub: sub}, nil
  4270  }
  4271  
  4272  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  4273  //
  4274  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  4275  func (_ERC721ServiceChain *ERC721ServiceChainFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721ServiceChainApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  4276  
  4277  	var ownerRule []interface{}
  4278  	for _, ownerItem := range owner {
  4279  		ownerRule = append(ownerRule, ownerItem)
  4280  	}
  4281  	var approvedRule []interface{}
  4282  	for _, approvedItem := range approved {
  4283  		approvedRule = append(approvedRule, approvedItem)
  4284  	}
  4285  	var tokenIdRule []interface{}
  4286  	for _, tokenIdItem := range tokenId {
  4287  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  4288  	}
  4289  
  4290  	logs, sub, err := _ERC721ServiceChain.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  4291  	if err != nil {
  4292  		return nil, err
  4293  	}
  4294  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4295  		defer sub.Unsubscribe()
  4296  		for {
  4297  			select {
  4298  			case log := <-logs:
  4299  				// New log arrived, parse the event and forward to the user
  4300  				event := new(ERC721ServiceChainApproval)
  4301  				if err := _ERC721ServiceChain.contract.UnpackLog(event, "Approval", log); err != nil {
  4302  					return err
  4303  				}
  4304  				event.Raw = log
  4305  
  4306  				select {
  4307  				case sink <- event:
  4308  				case err := <-sub.Err():
  4309  					return err
  4310  				case <-quit:
  4311  					return nil
  4312  				}
  4313  			case err := <-sub.Err():
  4314  				return err
  4315  			case <-quit:
  4316  				return nil
  4317  			}
  4318  		}
  4319  	}), nil
  4320  }
  4321  
  4322  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  4323  //
  4324  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  4325  func (_ERC721ServiceChain *ERC721ServiceChainFilterer) ParseApproval(log types.Log) (*ERC721ServiceChainApproval, error) {
  4326  	event := new(ERC721ServiceChainApproval)
  4327  	if err := _ERC721ServiceChain.contract.UnpackLog(event, "Approval", log); err != nil {
  4328  		return nil, err
  4329  	}
  4330  	return event, nil
  4331  }
  4332  
  4333  // ERC721ServiceChainApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the ERC721ServiceChain contract.
  4334  type ERC721ServiceChainApprovalForAllIterator struct {
  4335  	Event *ERC721ServiceChainApprovalForAll // Event containing the contract specifics and raw log
  4336  
  4337  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4338  	event    string              // Event name to use for unpacking event data
  4339  
  4340  	logs chan types.Log      // Log channel receiving the found contract events
  4341  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  4342  	done bool                // Whether the subscription completed delivering logs
  4343  	fail error               // Occurred error to stop iteration
  4344  }
  4345  
  4346  // Next advances the iterator to the subsequent event, returning whether there
  4347  // are any more events found. In case of a retrieval or parsing error, false is
  4348  // returned and Error() can be queried for the exact failure.
  4349  func (it *ERC721ServiceChainApprovalForAllIterator) Next() bool {
  4350  	// If the iterator failed, stop iterating
  4351  	if it.fail != nil {
  4352  		return false
  4353  	}
  4354  	// If the iterator completed, deliver directly whatever's available
  4355  	if it.done {
  4356  		select {
  4357  		case log := <-it.logs:
  4358  			it.Event = new(ERC721ServiceChainApprovalForAll)
  4359  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4360  				it.fail = err
  4361  				return false
  4362  			}
  4363  			it.Event.Raw = log
  4364  			return true
  4365  
  4366  		default:
  4367  			return false
  4368  		}
  4369  	}
  4370  	// Iterator still in progress, wait for either a data or an error event
  4371  	select {
  4372  	case log := <-it.logs:
  4373  		it.Event = new(ERC721ServiceChainApprovalForAll)
  4374  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4375  			it.fail = err
  4376  			return false
  4377  		}
  4378  		it.Event.Raw = log
  4379  		return true
  4380  
  4381  	case err := <-it.sub.Err():
  4382  		it.done = true
  4383  		it.fail = err
  4384  		return it.Next()
  4385  	}
  4386  }
  4387  
  4388  // Error returns any retrieval or parsing error occurred during filtering.
  4389  func (it *ERC721ServiceChainApprovalForAllIterator) Error() error {
  4390  	return it.fail
  4391  }
  4392  
  4393  // Close terminates the iteration process, releasing any pending underlying
  4394  // resources.
  4395  func (it *ERC721ServiceChainApprovalForAllIterator) Close() error {
  4396  	it.sub.Unsubscribe()
  4397  	return nil
  4398  }
  4399  
  4400  // ERC721ServiceChainApprovalForAll represents a ApprovalForAll event raised by the ERC721ServiceChain contract.
  4401  type ERC721ServiceChainApprovalForAll struct {
  4402  	Owner    common.Address
  4403  	Operator common.Address
  4404  	Approved bool
  4405  	Raw      types.Log // Blockchain specific contextual infos
  4406  }
  4407  
  4408  // FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  4409  //
  4410  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  4411  func (_ERC721ServiceChain *ERC721ServiceChainFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ERC721ServiceChainApprovalForAllIterator, error) {
  4412  
  4413  	var ownerRule []interface{}
  4414  	for _, ownerItem := range owner {
  4415  		ownerRule = append(ownerRule, ownerItem)
  4416  	}
  4417  	var operatorRule []interface{}
  4418  	for _, operatorItem := range operator {
  4419  		operatorRule = append(operatorRule, operatorItem)
  4420  	}
  4421  
  4422  	logs, sub, err := _ERC721ServiceChain.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  4423  	if err != nil {
  4424  		return nil, err
  4425  	}
  4426  	return &ERC721ServiceChainApprovalForAllIterator{contract: _ERC721ServiceChain.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil
  4427  }
  4428  
  4429  // WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  4430  //
  4431  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  4432  func (_ERC721ServiceChain *ERC721ServiceChainFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ERC721ServiceChainApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) {
  4433  
  4434  	var ownerRule []interface{}
  4435  	for _, ownerItem := range owner {
  4436  		ownerRule = append(ownerRule, ownerItem)
  4437  	}
  4438  	var operatorRule []interface{}
  4439  	for _, operatorItem := range operator {
  4440  		operatorRule = append(operatorRule, operatorItem)
  4441  	}
  4442  
  4443  	logs, sub, err := _ERC721ServiceChain.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  4444  	if err != nil {
  4445  		return nil, err
  4446  	}
  4447  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4448  		defer sub.Unsubscribe()
  4449  		for {
  4450  			select {
  4451  			case log := <-logs:
  4452  				// New log arrived, parse the event and forward to the user
  4453  				event := new(ERC721ServiceChainApprovalForAll)
  4454  				if err := _ERC721ServiceChain.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  4455  					return err
  4456  				}
  4457  				event.Raw = log
  4458  
  4459  				select {
  4460  				case sink <- event:
  4461  				case err := <-sub.Err():
  4462  					return err
  4463  				case <-quit:
  4464  					return nil
  4465  				}
  4466  			case err := <-sub.Err():
  4467  				return err
  4468  			case <-quit:
  4469  				return nil
  4470  			}
  4471  		}
  4472  	}), nil
  4473  }
  4474  
  4475  // ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  4476  //
  4477  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  4478  func (_ERC721ServiceChain *ERC721ServiceChainFilterer) ParseApprovalForAll(log types.Log) (*ERC721ServiceChainApprovalForAll, error) {
  4479  	event := new(ERC721ServiceChainApprovalForAll)
  4480  	if err := _ERC721ServiceChain.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  4481  		return nil, err
  4482  	}
  4483  	return event, nil
  4484  }
  4485  
  4486  // ERC721ServiceChainOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the ERC721ServiceChain contract.
  4487  type ERC721ServiceChainOwnershipTransferredIterator struct {
  4488  	Event *ERC721ServiceChainOwnershipTransferred // Event containing the contract specifics and raw log
  4489  
  4490  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4491  	event    string              // Event name to use for unpacking event data
  4492  
  4493  	logs chan types.Log      // Log channel receiving the found contract events
  4494  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  4495  	done bool                // Whether the subscription completed delivering logs
  4496  	fail error               // Occurred error to stop iteration
  4497  }
  4498  
  4499  // Next advances the iterator to the subsequent event, returning whether there
  4500  // are any more events found. In case of a retrieval or parsing error, false is
  4501  // returned and Error() can be queried for the exact failure.
  4502  func (it *ERC721ServiceChainOwnershipTransferredIterator) Next() bool {
  4503  	// If the iterator failed, stop iterating
  4504  	if it.fail != nil {
  4505  		return false
  4506  	}
  4507  	// If the iterator completed, deliver directly whatever's available
  4508  	if it.done {
  4509  		select {
  4510  		case log := <-it.logs:
  4511  			it.Event = new(ERC721ServiceChainOwnershipTransferred)
  4512  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4513  				it.fail = err
  4514  				return false
  4515  			}
  4516  			it.Event.Raw = log
  4517  			return true
  4518  
  4519  		default:
  4520  			return false
  4521  		}
  4522  	}
  4523  	// Iterator still in progress, wait for either a data or an error event
  4524  	select {
  4525  	case log := <-it.logs:
  4526  		it.Event = new(ERC721ServiceChainOwnershipTransferred)
  4527  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4528  			it.fail = err
  4529  			return false
  4530  		}
  4531  		it.Event.Raw = log
  4532  		return true
  4533  
  4534  	case err := <-it.sub.Err():
  4535  		it.done = true
  4536  		it.fail = err
  4537  		return it.Next()
  4538  	}
  4539  }
  4540  
  4541  // Error returns any retrieval or parsing error occurred during filtering.
  4542  func (it *ERC721ServiceChainOwnershipTransferredIterator) Error() error {
  4543  	return it.fail
  4544  }
  4545  
  4546  // Close terminates the iteration process, releasing any pending underlying
  4547  // resources.
  4548  func (it *ERC721ServiceChainOwnershipTransferredIterator) Close() error {
  4549  	it.sub.Unsubscribe()
  4550  	return nil
  4551  }
  4552  
  4553  // ERC721ServiceChainOwnershipTransferred represents a OwnershipTransferred event raised by the ERC721ServiceChain contract.
  4554  type ERC721ServiceChainOwnershipTransferred struct {
  4555  	PreviousOwner common.Address
  4556  	NewOwner      common.Address
  4557  	Raw           types.Log // Blockchain specific contextual infos
  4558  }
  4559  
  4560  // FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  4561  //
  4562  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  4563  func (_ERC721ServiceChain *ERC721ServiceChainFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*ERC721ServiceChainOwnershipTransferredIterator, error) {
  4564  
  4565  	var previousOwnerRule []interface{}
  4566  	for _, previousOwnerItem := range previousOwner {
  4567  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  4568  	}
  4569  	var newOwnerRule []interface{}
  4570  	for _, newOwnerItem := range newOwner {
  4571  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  4572  	}
  4573  
  4574  	logs, sub, err := _ERC721ServiceChain.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  4575  	if err != nil {
  4576  		return nil, err
  4577  	}
  4578  	return &ERC721ServiceChainOwnershipTransferredIterator{contract: _ERC721ServiceChain.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil
  4579  }
  4580  
  4581  // WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  4582  //
  4583  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  4584  func (_ERC721ServiceChain *ERC721ServiceChainFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *ERC721ServiceChainOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) {
  4585  
  4586  	var previousOwnerRule []interface{}
  4587  	for _, previousOwnerItem := range previousOwner {
  4588  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  4589  	}
  4590  	var newOwnerRule []interface{}
  4591  	for _, newOwnerItem := range newOwner {
  4592  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  4593  	}
  4594  
  4595  	logs, sub, err := _ERC721ServiceChain.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  4596  	if err != nil {
  4597  		return nil, err
  4598  	}
  4599  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4600  		defer sub.Unsubscribe()
  4601  		for {
  4602  			select {
  4603  			case log := <-logs:
  4604  				// New log arrived, parse the event and forward to the user
  4605  				event := new(ERC721ServiceChainOwnershipTransferred)
  4606  				if err := _ERC721ServiceChain.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  4607  					return err
  4608  				}
  4609  				event.Raw = log
  4610  
  4611  				select {
  4612  				case sink <- event:
  4613  				case err := <-sub.Err():
  4614  					return err
  4615  				case <-quit:
  4616  					return nil
  4617  				}
  4618  			case err := <-sub.Err():
  4619  				return err
  4620  			case <-quit:
  4621  				return nil
  4622  			}
  4623  		}
  4624  	}), nil
  4625  }
  4626  
  4627  // ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  4628  //
  4629  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  4630  func (_ERC721ServiceChain *ERC721ServiceChainFilterer) ParseOwnershipTransferred(log types.Log) (*ERC721ServiceChainOwnershipTransferred, error) {
  4631  	event := new(ERC721ServiceChainOwnershipTransferred)
  4632  	if err := _ERC721ServiceChain.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  4633  		return nil, err
  4634  	}
  4635  	return event, nil
  4636  }
  4637  
  4638  // ERC721ServiceChainTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC721ServiceChain contract.
  4639  type ERC721ServiceChainTransferIterator struct {
  4640  	Event *ERC721ServiceChainTransfer // Event containing the contract specifics and raw log
  4641  
  4642  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4643  	event    string              // Event name to use for unpacking event data
  4644  
  4645  	logs chan types.Log      // Log channel receiving the found contract events
  4646  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  4647  	done bool                // Whether the subscription completed delivering logs
  4648  	fail error               // Occurred error to stop iteration
  4649  }
  4650  
  4651  // Next advances the iterator to the subsequent event, returning whether there
  4652  // are any more events found. In case of a retrieval or parsing error, false is
  4653  // returned and Error() can be queried for the exact failure.
  4654  func (it *ERC721ServiceChainTransferIterator) Next() bool {
  4655  	// If the iterator failed, stop iterating
  4656  	if it.fail != nil {
  4657  		return false
  4658  	}
  4659  	// If the iterator completed, deliver directly whatever's available
  4660  	if it.done {
  4661  		select {
  4662  		case log := <-it.logs:
  4663  			it.Event = new(ERC721ServiceChainTransfer)
  4664  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4665  				it.fail = err
  4666  				return false
  4667  			}
  4668  			it.Event.Raw = log
  4669  			return true
  4670  
  4671  		default:
  4672  			return false
  4673  		}
  4674  	}
  4675  	// Iterator still in progress, wait for either a data or an error event
  4676  	select {
  4677  	case log := <-it.logs:
  4678  		it.Event = new(ERC721ServiceChainTransfer)
  4679  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4680  			it.fail = err
  4681  			return false
  4682  		}
  4683  		it.Event.Raw = log
  4684  		return true
  4685  
  4686  	case err := <-it.sub.Err():
  4687  		it.done = true
  4688  		it.fail = err
  4689  		return it.Next()
  4690  	}
  4691  }
  4692  
  4693  // Error returns any retrieval or parsing error occurred during filtering.
  4694  func (it *ERC721ServiceChainTransferIterator) Error() error {
  4695  	return it.fail
  4696  }
  4697  
  4698  // Close terminates the iteration process, releasing any pending underlying
  4699  // resources.
  4700  func (it *ERC721ServiceChainTransferIterator) Close() error {
  4701  	it.sub.Unsubscribe()
  4702  	return nil
  4703  }
  4704  
  4705  // ERC721ServiceChainTransfer represents a Transfer event raised by the ERC721ServiceChain contract.
  4706  type ERC721ServiceChainTransfer struct {
  4707  	From    common.Address
  4708  	To      common.Address
  4709  	TokenId *big.Int
  4710  	Raw     types.Log // Blockchain specific contextual infos
  4711  }
  4712  
  4713  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  4714  //
  4715  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  4716  func (_ERC721ServiceChain *ERC721ServiceChainFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ERC721ServiceChainTransferIterator, error) {
  4717  
  4718  	var fromRule []interface{}
  4719  	for _, fromItem := range from {
  4720  		fromRule = append(fromRule, fromItem)
  4721  	}
  4722  	var toRule []interface{}
  4723  	for _, toItem := range to {
  4724  		toRule = append(toRule, toItem)
  4725  	}
  4726  	var tokenIdRule []interface{}
  4727  	for _, tokenIdItem := range tokenId {
  4728  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  4729  	}
  4730  
  4731  	logs, sub, err := _ERC721ServiceChain.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  4732  	if err != nil {
  4733  		return nil, err
  4734  	}
  4735  	return &ERC721ServiceChainTransferIterator{contract: _ERC721ServiceChain.contract, event: "Transfer", logs: logs, sub: sub}, nil
  4736  }
  4737  
  4738  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  4739  //
  4740  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  4741  func (_ERC721ServiceChain *ERC721ServiceChainFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721ServiceChainTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  4742  
  4743  	var fromRule []interface{}
  4744  	for _, fromItem := range from {
  4745  		fromRule = append(fromRule, fromItem)
  4746  	}
  4747  	var toRule []interface{}
  4748  	for _, toItem := range to {
  4749  		toRule = append(toRule, toItem)
  4750  	}
  4751  	var tokenIdRule []interface{}
  4752  	for _, tokenIdItem := range tokenId {
  4753  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  4754  	}
  4755  
  4756  	logs, sub, err := _ERC721ServiceChain.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  4757  	if err != nil {
  4758  		return nil, err
  4759  	}
  4760  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4761  		defer sub.Unsubscribe()
  4762  		for {
  4763  			select {
  4764  			case log := <-logs:
  4765  				// New log arrived, parse the event and forward to the user
  4766  				event := new(ERC721ServiceChainTransfer)
  4767  				if err := _ERC721ServiceChain.contract.UnpackLog(event, "Transfer", log); err != nil {
  4768  					return err
  4769  				}
  4770  				event.Raw = log
  4771  
  4772  				select {
  4773  				case sink <- event:
  4774  				case err := <-sub.Err():
  4775  					return err
  4776  				case <-quit:
  4777  					return nil
  4778  				}
  4779  			case err := <-sub.Err():
  4780  				return err
  4781  			case <-quit:
  4782  				return nil
  4783  			}
  4784  		}
  4785  	}), nil
  4786  }
  4787  
  4788  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  4789  //
  4790  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  4791  func (_ERC721ServiceChain *ERC721ServiceChainFilterer) ParseTransfer(log types.Log) (*ERC721ServiceChainTransfer, error) {
  4792  	event := new(ERC721ServiceChainTransfer)
  4793  	if err := _ERC721ServiceChain.contract.UnpackLog(event, "Transfer", log); err != nil {
  4794  		return nil, err
  4795  	}
  4796  	return event, nil
  4797  }
  4798  
  4799  // IERC165ABI is the input ABI used to generate the binding from.
  4800  const IERC165ABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]"
  4801  
  4802  // IERC165BinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  4803  const IERC165BinRuntime = ``
  4804  
  4805  // IERC165FuncSigs maps the 4-byte function signature to its string representation.
  4806  var IERC165FuncSigs = map[string]string{
  4807  	"01ffc9a7": "supportsInterface(bytes4)",
  4808  }
  4809  
  4810  // IERC165 is an auto generated Go binding around a Klaytn contract.
  4811  type IERC165 struct {
  4812  	IERC165Caller     // Read-only binding to the contract
  4813  	IERC165Transactor // Write-only binding to the contract
  4814  	IERC165Filterer   // Log filterer for contract events
  4815  }
  4816  
  4817  // IERC165Caller is an auto generated read-only Go binding around a Klaytn contract.
  4818  type IERC165Caller struct {
  4819  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4820  }
  4821  
  4822  // IERC165Transactor is an auto generated write-only Go binding around a Klaytn contract.
  4823  type IERC165Transactor struct {
  4824  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4825  }
  4826  
  4827  // IERC165Filterer is an auto generated log filtering Go binding around a Klaytn contract events.
  4828  type IERC165Filterer struct {
  4829  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4830  }
  4831  
  4832  // IERC165Session is an auto generated Go binding around a Klaytn contract,
  4833  // with pre-set call and transact options.
  4834  type IERC165Session struct {
  4835  	Contract     *IERC165          // Generic contract binding to set the session for
  4836  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  4837  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  4838  }
  4839  
  4840  // IERC165CallerSession is an auto generated read-only Go binding around a Klaytn contract,
  4841  // with pre-set call options.
  4842  type IERC165CallerSession struct {
  4843  	Contract *IERC165Caller // Generic contract caller binding to set the session for
  4844  	CallOpts bind.CallOpts  // Call options to use throughout this session
  4845  }
  4846  
  4847  // IERC165TransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  4848  // with pre-set transact options.
  4849  type IERC165TransactorSession struct {
  4850  	Contract     *IERC165Transactor // Generic contract transactor binding to set the session for
  4851  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
  4852  }
  4853  
  4854  // IERC165Raw is an auto generated low-level Go binding around a Klaytn contract.
  4855  type IERC165Raw struct {
  4856  	Contract *IERC165 // Generic contract binding to access the raw methods on
  4857  }
  4858  
  4859  // IERC165CallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  4860  type IERC165CallerRaw struct {
  4861  	Contract *IERC165Caller // Generic read-only contract binding to access the raw methods on
  4862  }
  4863  
  4864  // IERC165TransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  4865  type IERC165TransactorRaw struct {
  4866  	Contract *IERC165Transactor // Generic write-only contract binding to access the raw methods on
  4867  }
  4868  
  4869  // NewIERC165 creates a new instance of IERC165, bound to a specific deployed contract.
  4870  func NewIERC165(address common.Address, backend bind.ContractBackend) (*IERC165, error) {
  4871  	contract, err := bindIERC165(address, backend, backend, backend)
  4872  	if err != nil {
  4873  		return nil, err
  4874  	}
  4875  	return &IERC165{IERC165Caller: IERC165Caller{contract: contract}, IERC165Transactor: IERC165Transactor{contract: contract}, IERC165Filterer: IERC165Filterer{contract: contract}}, nil
  4876  }
  4877  
  4878  // NewIERC165Caller creates a new read-only instance of IERC165, bound to a specific deployed contract.
  4879  func NewIERC165Caller(address common.Address, caller bind.ContractCaller) (*IERC165Caller, error) {
  4880  	contract, err := bindIERC165(address, caller, nil, nil)
  4881  	if err != nil {
  4882  		return nil, err
  4883  	}
  4884  	return &IERC165Caller{contract: contract}, nil
  4885  }
  4886  
  4887  // NewIERC165Transactor creates a new write-only instance of IERC165, bound to a specific deployed contract.
  4888  func NewIERC165Transactor(address common.Address, transactor bind.ContractTransactor) (*IERC165Transactor, error) {
  4889  	contract, err := bindIERC165(address, nil, transactor, nil)
  4890  	if err != nil {
  4891  		return nil, err
  4892  	}
  4893  	return &IERC165Transactor{contract: contract}, nil
  4894  }
  4895  
  4896  // NewIERC165Filterer creates a new log filterer instance of IERC165, bound to a specific deployed contract.
  4897  func NewIERC165Filterer(address common.Address, filterer bind.ContractFilterer) (*IERC165Filterer, error) {
  4898  	contract, err := bindIERC165(address, nil, nil, filterer)
  4899  	if err != nil {
  4900  		return nil, err
  4901  	}
  4902  	return &IERC165Filterer{contract: contract}, nil
  4903  }
  4904  
  4905  // bindIERC165 binds a generic wrapper to an already deployed contract.
  4906  func bindIERC165(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  4907  	parsed, err := abi.JSON(strings.NewReader(IERC165ABI))
  4908  	if err != nil {
  4909  		return nil, err
  4910  	}
  4911  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  4912  }
  4913  
  4914  // Call invokes the (constant) contract method with params as input values and
  4915  // sets the output to result. The result type might be a single field for simple
  4916  // returns, a slice of interfaces for anonymous returns and a struct for named
  4917  // returns.
  4918  func (_IERC165 *IERC165Raw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  4919  	return _IERC165.Contract.IERC165Caller.contract.Call(opts, result, method, params...)
  4920  }
  4921  
  4922  // Transfer initiates a plain transaction to move funds to the contract, calling
  4923  // its default method if one is available.
  4924  func (_IERC165 *IERC165Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  4925  	return _IERC165.Contract.IERC165Transactor.contract.Transfer(opts)
  4926  }
  4927  
  4928  // Transact invokes the (paid) contract method with params as input values.
  4929  func (_IERC165 *IERC165Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  4930  	return _IERC165.Contract.IERC165Transactor.contract.Transact(opts, method, params...)
  4931  }
  4932  
  4933  // Call invokes the (constant) contract method with params as input values and
  4934  // sets the output to result. The result type might be a single field for simple
  4935  // returns, a slice of interfaces for anonymous returns and a struct for named
  4936  // returns.
  4937  func (_IERC165 *IERC165CallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  4938  	return _IERC165.Contract.contract.Call(opts, result, method, params...)
  4939  }
  4940  
  4941  // Transfer initiates a plain transaction to move funds to the contract, calling
  4942  // its default method if one is available.
  4943  func (_IERC165 *IERC165TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  4944  	return _IERC165.Contract.contract.Transfer(opts)
  4945  }
  4946  
  4947  // Transact invokes the (paid) contract method with params as input values.
  4948  func (_IERC165 *IERC165TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  4949  	return _IERC165.Contract.contract.Transact(opts, method, params...)
  4950  }
  4951  
  4952  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  4953  //
  4954  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  4955  func (_IERC165 *IERC165Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
  4956  	var (
  4957  		ret0 = new(bool)
  4958  	)
  4959  	out := ret0
  4960  	err := _IERC165.contract.Call(opts, out, "supportsInterface", interfaceId)
  4961  	return *ret0, err
  4962  }
  4963  
  4964  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  4965  //
  4966  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  4967  func (_IERC165 *IERC165Session) SupportsInterface(interfaceId [4]byte) (bool, error) {
  4968  	return _IERC165.Contract.SupportsInterface(&_IERC165.CallOpts, interfaceId)
  4969  }
  4970  
  4971  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  4972  //
  4973  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  4974  func (_IERC165 *IERC165CallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  4975  	return _IERC165.Contract.SupportsInterface(&_IERC165.CallOpts, interfaceId)
  4976  }
  4977  
  4978  // IERC721ABI is the input ABI used to generate the binding from.
  4979  const IERC721ABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"name\":\"operator\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"balance\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"operator\",\"type\":\"address\"},{\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"}]"
  4980  
  4981  // IERC721BinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  4982  const IERC721BinRuntime = ``
  4983  
  4984  // IERC721FuncSigs maps the 4-byte function signature to its string representation.
  4985  var IERC721FuncSigs = map[string]string{
  4986  	"095ea7b3": "approve(address,uint256)",
  4987  	"70a08231": "balanceOf(address)",
  4988  	"081812fc": "getApproved(uint256)",
  4989  	"e985e9c5": "isApprovedForAll(address,address)",
  4990  	"6352211e": "ownerOf(uint256)",
  4991  	"42842e0e": "safeTransferFrom(address,address,uint256)",
  4992  	"b88d4fde": "safeTransferFrom(address,address,uint256,bytes)",
  4993  	"a22cb465": "setApprovalForAll(address,bool)",
  4994  	"01ffc9a7": "supportsInterface(bytes4)",
  4995  	"23b872dd": "transferFrom(address,address,uint256)",
  4996  }
  4997  
  4998  // IERC721 is an auto generated Go binding around a Klaytn contract.
  4999  type IERC721 struct {
  5000  	IERC721Caller     // Read-only binding to the contract
  5001  	IERC721Transactor // Write-only binding to the contract
  5002  	IERC721Filterer   // Log filterer for contract events
  5003  }
  5004  
  5005  // IERC721Caller is an auto generated read-only Go binding around a Klaytn contract.
  5006  type IERC721Caller struct {
  5007  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5008  }
  5009  
  5010  // IERC721Transactor is an auto generated write-only Go binding around a Klaytn contract.
  5011  type IERC721Transactor struct {
  5012  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5013  }
  5014  
  5015  // IERC721Filterer is an auto generated log filtering Go binding around a Klaytn contract events.
  5016  type IERC721Filterer struct {
  5017  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5018  }
  5019  
  5020  // IERC721Session is an auto generated Go binding around a Klaytn contract,
  5021  // with pre-set call and transact options.
  5022  type IERC721Session struct {
  5023  	Contract     *IERC721          // Generic contract binding to set the session for
  5024  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  5025  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  5026  }
  5027  
  5028  // IERC721CallerSession is an auto generated read-only Go binding around a Klaytn contract,
  5029  // with pre-set call options.
  5030  type IERC721CallerSession struct {
  5031  	Contract *IERC721Caller // Generic contract caller binding to set the session for
  5032  	CallOpts bind.CallOpts  // Call options to use throughout this session
  5033  }
  5034  
  5035  // IERC721TransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  5036  // with pre-set transact options.
  5037  type IERC721TransactorSession struct {
  5038  	Contract     *IERC721Transactor // Generic contract transactor binding to set the session for
  5039  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
  5040  }
  5041  
  5042  // IERC721Raw is an auto generated low-level Go binding around a Klaytn contract.
  5043  type IERC721Raw struct {
  5044  	Contract *IERC721 // Generic contract binding to access the raw methods on
  5045  }
  5046  
  5047  // IERC721CallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  5048  type IERC721CallerRaw struct {
  5049  	Contract *IERC721Caller // Generic read-only contract binding to access the raw methods on
  5050  }
  5051  
  5052  // IERC721TransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  5053  type IERC721TransactorRaw struct {
  5054  	Contract *IERC721Transactor // Generic write-only contract binding to access the raw methods on
  5055  }
  5056  
  5057  // NewIERC721 creates a new instance of IERC721, bound to a specific deployed contract.
  5058  func NewIERC721(address common.Address, backend bind.ContractBackend) (*IERC721, error) {
  5059  	contract, err := bindIERC721(address, backend, backend, backend)
  5060  	if err != nil {
  5061  		return nil, err
  5062  	}
  5063  	return &IERC721{IERC721Caller: IERC721Caller{contract: contract}, IERC721Transactor: IERC721Transactor{contract: contract}, IERC721Filterer: IERC721Filterer{contract: contract}}, nil
  5064  }
  5065  
  5066  // NewIERC721Caller creates a new read-only instance of IERC721, bound to a specific deployed contract.
  5067  func NewIERC721Caller(address common.Address, caller bind.ContractCaller) (*IERC721Caller, error) {
  5068  	contract, err := bindIERC721(address, caller, nil, nil)
  5069  	if err != nil {
  5070  		return nil, err
  5071  	}
  5072  	return &IERC721Caller{contract: contract}, nil
  5073  }
  5074  
  5075  // NewIERC721Transactor creates a new write-only instance of IERC721, bound to a specific deployed contract.
  5076  func NewIERC721Transactor(address common.Address, transactor bind.ContractTransactor) (*IERC721Transactor, error) {
  5077  	contract, err := bindIERC721(address, nil, transactor, nil)
  5078  	if err != nil {
  5079  		return nil, err
  5080  	}
  5081  	return &IERC721Transactor{contract: contract}, nil
  5082  }
  5083  
  5084  // NewIERC721Filterer creates a new log filterer instance of IERC721, bound to a specific deployed contract.
  5085  func NewIERC721Filterer(address common.Address, filterer bind.ContractFilterer) (*IERC721Filterer, error) {
  5086  	contract, err := bindIERC721(address, nil, nil, filterer)
  5087  	if err != nil {
  5088  		return nil, err
  5089  	}
  5090  	return &IERC721Filterer{contract: contract}, nil
  5091  }
  5092  
  5093  // bindIERC721 binds a generic wrapper to an already deployed contract.
  5094  func bindIERC721(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  5095  	parsed, err := abi.JSON(strings.NewReader(IERC721ABI))
  5096  	if err != nil {
  5097  		return nil, err
  5098  	}
  5099  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  5100  }
  5101  
  5102  // Call invokes the (constant) contract method with params as input values and
  5103  // sets the output to result. The result type might be a single field for simple
  5104  // returns, a slice of interfaces for anonymous returns and a struct for named
  5105  // returns.
  5106  func (_IERC721 *IERC721Raw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  5107  	return _IERC721.Contract.IERC721Caller.contract.Call(opts, result, method, params...)
  5108  }
  5109  
  5110  // Transfer initiates a plain transaction to move funds to the contract, calling
  5111  // its default method if one is available.
  5112  func (_IERC721 *IERC721Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  5113  	return _IERC721.Contract.IERC721Transactor.contract.Transfer(opts)
  5114  }
  5115  
  5116  // Transact invokes the (paid) contract method with params as input values.
  5117  func (_IERC721 *IERC721Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  5118  	return _IERC721.Contract.IERC721Transactor.contract.Transact(opts, method, params...)
  5119  }
  5120  
  5121  // Call invokes the (constant) contract method with params as input values and
  5122  // sets the output to result. The result type might be a single field for simple
  5123  // returns, a slice of interfaces for anonymous returns and a struct for named
  5124  // returns.
  5125  func (_IERC721 *IERC721CallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  5126  	return _IERC721.Contract.contract.Call(opts, result, method, params...)
  5127  }
  5128  
  5129  // Transfer initiates a plain transaction to move funds to the contract, calling
  5130  // its default method if one is available.
  5131  func (_IERC721 *IERC721TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  5132  	return _IERC721.Contract.contract.Transfer(opts)
  5133  }
  5134  
  5135  // Transact invokes the (paid) contract method with params as input values.
  5136  func (_IERC721 *IERC721TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  5137  	return _IERC721.Contract.contract.Transact(opts, method, params...)
  5138  }
  5139  
  5140  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  5141  //
  5142  // Solidity: function balanceOf(address owner) view returns(uint256 balance)
  5143  func (_IERC721 *IERC721Caller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) {
  5144  	var (
  5145  		ret0 = new(*big.Int)
  5146  	)
  5147  	out := ret0
  5148  	err := _IERC721.contract.Call(opts, out, "balanceOf", owner)
  5149  	return *ret0, err
  5150  }
  5151  
  5152  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  5153  //
  5154  // Solidity: function balanceOf(address owner) view returns(uint256 balance)
  5155  func (_IERC721 *IERC721Session) BalanceOf(owner common.Address) (*big.Int, error) {
  5156  	return _IERC721.Contract.BalanceOf(&_IERC721.CallOpts, owner)
  5157  }
  5158  
  5159  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  5160  //
  5161  // Solidity: function balanceOf(address owner) view returns(uint256 balance)
  5162  func (_IERC721 *IERC721CallerSession) BalanceOf(owner common.Address) (*big.Int, error) {
  5163  	return _IERC721.Contract.BalanceOf(&_IERC721.CallOpts, owner)
  5164  }
  5165  
  5166  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  5167  //
  5168  // Solidity: function getApproved(uint256 tokenId) view returns(address operator)
  5169  func (_IERC721 *IERC721Caller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  5170  	var (
  5171  		ret0 = new(common.Address)
  5172  	)
  5173  	out := ret0
  5174  	err := _IERC721.contract.Call(opts, out, "getApproved", tokenId)
  5175  	return *ret0, err
  5176  }
  5177  
  5178  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  5179  //
  5180  // Solidity: function getApproved(uint256 tokenId) view returns(address operator)
  5181  func (_IERC721 *IERC721Session) GetApproved(tokenId *big.Int) (common.Address, error) {
  5182  	return _IERC721.Contract.GetApproved(&_IERC721.CallOpts, tokenId)
  5183  }
  5184  
  5185  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  5186  //
  5187  // Solidity: function getApproved(uint256 tokenId) view returns(address operator)
  5188  func (_IERC721 *IERC721CallerSession) GetApproved(tokenId *big.Int) (common.Address, error) {
  5189  	return _IERC721.Contract.GetApproved(&_IERC721.CallOpts, tokenId)
  5190  }
  5191  
  5192  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  5193  //
  5194  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  5195  func (_IERC721 *IERC721Caller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) {
  5196  	var (
  5197  		ret0 = new(bool)
  5198  	)
  5199  	out := ret0
  5200  	err := _IERC721.contract.Call(opts, out, "isApprovedForAll", owner, operator)
  5201  	return *ret0, err
  5202  }
  5203  
  5204  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  5205  //
  5206  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  5207  func (_IERC721 *IERC721Session) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  5208  	return _IERC721.Contract.IsApprovedForAll(&_IERC721.CallOpts, owner, operator)
  5209  }
  5210  
  5211  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  5212  //
  5213  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  5214  func (_IERC721 *IERC721CallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  5215  	return _IERC721.Contract.IsApprovedForAll(&_IERC721.CallOpts, owner, operator)
  5216  }
  5217  
  5218  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  5219  //
  5220  // Solidity: function ownerOf(uint256 tokenId) view returns(address owner)
  5221  func (_IERC721 *IERC721Caller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  5222  	var (
  5223  		ret0 = new(common.Address)
  5224  	)
  5225  	out := ret0
  5226  	err := _IERC721.contract.Call(opts, out, "ownerOf", tokenId)
  5227  	return *ret0, err
  5228  }
  5229  
  5230  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  5231  //
  5232  // Solidity: function ownerOf(uint256 tokenId) view returns(address owner)
  5233  func (_IERC721 *IERC721Session) OwnerOf(tokenId *big.Int) (common.Address, error) {
  5234  	return _IERC721.Contract.OwnerOf(&_IERC721.CallOpts, tokenId)
  5235  }
  5236  
  5237  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  5238  //
  5239  // Solidity: function ownerOf(uint256 tokenId) view returns(address owner)
  5240  func (_IERC721 *IERC721CallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
  5241  	return _IERC721.Contract.OwnerOf(&_IERC721.CallOpts, tokenId)
  5242  }
  5243  
  5244  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  5245  //
  5246  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  5247  func (_IERC721 *IERC721Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
  5248  	var (
  5249  		ret0 = new(bool)
  5250  	)
  5251  	out := ret0
  5252  	err := _IERC721.contract.Call(opts, out, "supportsInterface", interfaceId)
  5253  	return *ret0, err
  5254  }
  5255  
  5256  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  5257  //
  5258  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  5259  func (_IERC721 *IERC721Session) SupportsInterface(interfaceId [4]byte) (bool, error) {
  5260  	return _IERC721.Contract.SupportsInterface(&_IERC721.CallOpts, interfaceId)
  5261  }
  5262  
  5263  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  5264  //
  5265  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  5266  func (_IERC721 *IERC721CallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  5267  	return _IERC721.Contract.SupportsInterface(&_IERC721.CallOpts, interfaceId)
  5268  }
  5269  
  5270  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  5271  //
  5272  // Solidity: function approve(address to, uint256 tokenId) returns()
  5273  func (_IERC721 *IERC721Transactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  5274  	return _IERC721.contract.Transact(opts, "approve", to, tokenId)
  5275  }
  5276  
  5277  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  5278  //
  5279  // Solidity: function approve(address to, uint256 tokenId) returns()
  5280  func (_IERC721 *IERC721Session) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  5281  	return _IERC721.Contract.Approve(&_IERC721.TransactOpts, to, tokenId)
  5282  }
  5283  
  5284  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  5285  //
  5286  // Solidity: function approve(address to, uint256 tokenId) returns()
  5287  func (_IERC721 *IERC721TransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  5288  	return _IERC721.Contract.Approve(&_IERC721.TransactOpts, to, tokenId)
  5289  }
  5290  
  5291  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  5292  //
  5293  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  5294  func (_IERC721 *IERC721Transactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  5295  	return _IERC721.contract.Transact(opts, "safeTransferFrom", from, to, tokenId)
  5296  }
  5297  
  5298  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  5299  //
  5300  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  5301  func (_IERC721 *IERC721Session) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  5302  	return _IERC721.Contract.SafeTransferFrom(&_IERC721.TransactOpts, from, to, tokenId)
  5303  }
  5304  
  5305  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  5306  //
  5307  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  5308  func (_IERC721 *IERC721TransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  5309  	return _IERC721.Contract.SafeTransferFrom(&_IERC721.TransactOpts, from, to, tokenId)
  5310  }
  5311  
  5312  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  5313  //
  5314  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns()
  5315  func (_IERC721 *IERC721Transactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
  5316  	return _IERC721.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, data)
  5317  }
  5318  
  5319  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  5320  //
  5321  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns()
  5322  func (_IERC721 *IERC721Session) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
  5323  	return _IERC721.Contract.SafeTransferFrom0(&_IERC721.TransactOpts, from, to, tokenId, data)
  5324  }
  5325  
  5326  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  5327  //
  5328  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns()
  5329  func (_IERC721 *IERC721TransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
  5330  	return _IERC721.Contract.SafeTransferFrom0(&_IERC721.TransactOpts, from, to, tokenId, data)
  5331  }
  5332  
  5333  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  5334  //
  5335  // Solidity: function setApprovalForAll(address operator, bool _approved) returns()
  5336  func (_IERC721 *IERC721Transactor) SetApprovalForAll(opts *bind.TransactOpts, operator common.Address, _approved bool) (*types.Transaction, error) {
  5337  	return _IERC721.contract.Transact(opts, "setApprovalForAll", operator, _approved)
  5338  }
  5339  
  5340  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  5341  //
  5342  // Solidity: function setApprovalForAll(address operator, bool _approved) returns()
  5343  func (_IERC721 *IERC721Session) SetApprovalForAll(operator common.Address, _approved bool) (*types.Transaction, error) {
  5344  	return _IERC721.Contract.SetApprovalForAll(&_IERC721.TransactOpts, operator, _approved)
  5345  }
  5346  
  5347  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  5348  //
  5349  // Solidity: function setApprovalForAll(address operator, bool _approved) returns()
  5350  func (_IERC721 *IERC721TransactorSession) SetApprovalForAll(operator common.Address, _approved bool) (*types.Transaction, error) {
  5351  	return _IERC721.Contract.SetApprovalForAll(&_IERC721.TransactOpts, operator, _approved)
  5352  }
  5353  
  5354  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  5355  //
  5356  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  5357  func (_IERC721 *IERC721Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  5358  	return _IERC721.contract.Transact(opts, "transferFrom", from, to, tokenId)
  5359  }
  5360  
  5361  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  5362  //
  5363  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  5364  func (_IERC721 *IERC721Session) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  5365  	return _IERC721.Contract.TransferFrom(&_IERC721.TransactOpts, from, to, tokenId)
  5366  }
  5367  
  5368  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  5369  //
  5370  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  5371  func (_IERC721 *IERC721TransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  5372  	return _IERC721.Contract.TransferFrom(&_IERC721.TransactOpts, from, to, tokenId)
  5373  }
  5374  
  5375  // IERC721ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IERC721 contract.
  5376  type IERC721ApprovalIterator struct {
  5377  	Event *IERC721Approval // Event containing the contract specifics and raw log
  5378  
  5379  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  5380  	event    string              // Event name to use for unpacking event data
  5381  
  5382  	logs chan types.Log      // Log channel receiving the found contract events
  5383  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  5384  	done bool                // Whether the subscription completed delivering logs
  5385  	fail error               // Occurred error to stop iteration
  5386  }
  5387  
  5388  // Next advances the iterator to the subsequent event, returning whether there
  5389  // are any more events found. In case of a retrieval or parsing error, false is
  5390  // returned and Error() can be queried for the exact failure.
  5391  func (it *IERC721ApprovalIterator) Next() bool {
  5392  	// If the iterator failed, stop iterating
  5393  	if it.fail != nil {
  5394  		return false
  5395  	}
  5396  	// If the iterator completed, deliver directly whatever's available
  5397  	if it.done {
  5398  		select {
  5399  		case log := <-it.logs:
  5400  			it.Event = new(IERC721Approval)
  5401  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5402  				it.fail = err
  5403  				return false
  5404  			}
  5405  			it.Event.Raw = log
  5406  			return true
  5407  
  5408  		default:
  5409  			return false
  5410  		}
  5411  	}
  5412  	// Iterator still in progress, wait for either a data or an error event
  5413  	select {
  5414  	case log := <-it.logs:
  5415  		it.Event = new(IERC721Approval)
  5416  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5417  			it.fail = err
  5418  			return false
  5419  		}
  5420  		it.Event.Raw = log
  5421  		return true
  5422  
  5423  	case err := <-it.sub.Err():
  5424  		it.done = true
  5425  		it.fail = err
  5426  		return it.Next()
  5427  	}
  5428  }
  5429  
  5430  // Error returns any retrieval or parsing error occurred during filtering.
  5431  func (it *IERC721ApprovalIterator) Error() error {
  5432  	return it.fail
  5433  }
  5434  
  5435  // Close terminates the iteration process, releasing any pending underlying
  5436  // resources.
  5437  func (it *IERC721ApprovalIterator) Close() error {
  5438  	it.sub.Unsubscribe()
  5439  	return nil
  5440  }
  5441  
  5442  // IERC721Approval represents a Approval event raised by the IERC721 contract.
  5443  type IERC721Approval struct {
  5444  	Owner    common.Address
  5445  	Approved common.Address
  5446  	TokenId  *big.Int
  5447  	Raw      types.Log // Blockchain specific contextual infos
  5448  }
  5449  
  5450  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  5451  //
  5452  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  5453  func (_IERC721 *IERC721Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*IERC721ApprovalIterator, error) {
  5454  
  5455  	var ownerRule []interface{}
  5456  	for _, ownerItem := range owner {
  5457  		ownerRule = append(ownerRule, ownerItem)
  5458  	}
  5459  	var approvedRule []interface{}
  5460  	for _, approvedItem := range approved {
  5461  		approvedRule = append(approvedRule, approvedItem)
  5462  	}
  5463  	var tokenIdRule []interface{}
  5464  	for _, tokenIdItem := range tokenId {
  5465  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  5466  	}
  5467  
  5468  	logs, sub, err := _IERC721.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  5469  	if err != nil {
  5470  		return nil, err
  5471  	}
  5472  	return &IERC721ApprovalIterator{contract: _IERC721.contract, event: "Approval", logs: logs, sub: sub}, nil
  5473  }
  5474  
  5475  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  5476  //
  5477  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  5478  func (_IERC721 *IERC721Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC721Approval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  5479  
  5480  	var ownerRule []interface{}
  5481  	for _, ownerItem := range owner {
  5482  		ownerRule = append(ownerRule, ownerItem)
  5483  	}
  5484  	var approvedRule []interface{}
  5485  	for _, approvedItem := range approved {
  5486  		approvedRule = append(approvedRule, approvedItem)
  5487  	}
  5488  	var tokenIdRule []interface{}
  5489  	for _, tokenIdItem := range tokenId {
  5490  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  5491  	}
  5492  
  5493  	logs, sub, err := _IERC721.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  5494  	if err != nil {
  5495  		return nil, err
  5496  	}
  5497  	return event.NewSubscription(func(quit <-chan struct{}) error {
  5498  		defer sub.Unsubscribe()
  5499  		for {
  5500  			select {
  5501  			case log := <-logs:
  5502  				// New log arrived, parse the event and forward to the user
  5503  				event := new(IERC721Approval)
  5504  				if err := _IERC721.contract.UnpackLog(event, "Approval", log); err != nil {
  5505  					return err
  5506  				}
  5507  				event.Raw = log
  5508  
  5509  				select {
  5510  				case sink <- event:
  5511  				case err := <-sub.Err():
  5512  					return err
  5513  				case <-quit:
  5514  					return nil
  5515  				}
  5516  			case err := <-sub.Err():
  5517  				return err
  5518  			case <-quit:
  5519  				return nil
  5520  			}
  5521  		}
  5522  	}), nil
  5523  }
  5524  
  5525  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  5526  //
  5527  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  5528  func (_IERC721 *IERC721Filterer) ParseApproval(log types.Log) (*IERC721Approval, error) {
  5529  	event := new(IERC721Approval)
  5530  	if err := _IERC721.contract.UnpackLog(event, "Approval", log); err != nil {
  5531  		return nil, err
  5532  	}
  5533  	return event, nil
  5534  }
  5535  
  5536  // IERC721ApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the IERC721 contract.
  5537  type IERC721ApprovalForAllIterator struct {
  5538  	Event *IERC721ApprovalForAll // Event containing the contract specifics and raw log
  5539  
  5540  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  5541  	event    string              // Event name to use for unpacking event data
  5542  
  5543  	logs chan types.Log      // Log channel receiving the found contract events
  5544  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  5545  	done bool                // Whether the subscription completed delivering logs
  5546  	fail error               // Occurred error to stop iteration
  5547  }
  5548  
  5549  // Next advances the iterator to the subsequent event, returning whether there
  5550  // are any more events found. In case of a retrieval or parsing error, false is
  5551  // returned and Error() can be queried for the exact failure.
  5552  func (it *IERC721ApprovalForAllIterator) Next() bool {
  5553  	// If the iterator failed, stop iterating
  5554  	if it.fail != nil {
  5555  		return false
  5556  	}
  5557  	// If the iterator completed, deliver directly whatever's available
  5558  	if it.done {
  5559  		select {
  5560  		case log := <-it.logs:
  5561  			it.Event = new(IERC721ApprovalForAll)
  5562  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5563  				it.fail = err
  5564  				return false
  5565  			}
  5566  			it.Event.Raw = log
  5567  			return true
  5568  
  5569  		default:
  5570  			return false
  5571  		}
  5572  	}
  5573  	// Iterator still in progress, wait for either a data or an error event
  5574  	select {
  5575  	case log := <-it.logs:
  5576  		it.Event = new(IERC721ApprovalForAll)
  5577  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5578  			it.fail = err
  5579  			return false
  5580  		}
  5581  		it.Event.Raw = log
  5582  		return true
  5583  
  5584  	case err := <-it.sub.Err():
  5585  		it.done = true
  5586  		it.fail = err
  5587  		return it.Next()
  5588  	}
  5589  }
  5590  
  5591  // Error returns any retrieval or parsing error occurred during filtering.
  5592  func (it *IERC721ApprovalForAllIterator) Error() error {
  5593  	return it.fail
  5594  }
  5595  
  5596  // Close terminates the iteration process, releasing any pending underlying
  5597  // resources.
  5598  func (it *IERC721ApprovalForAllIterator) Close() error {
  5599  	it.sub.Unsubscribe()
  5600  	return nil
  5601  }
  5602  
  5603  // IERC721ApprovalForAll represents a ApprovalForAll event raised by the IERC721 contract.
  5604  type IERC721ApprovalForAll struct {
  5605  	Owner    common.Address
  5606  	Operator common.Address
  5607  	Approved bool
  5608  	Raw      types.Log // Blockchain specific contextual infos
  5609  }
  5610  
  5611  // FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  5612  //
  5613  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  5614  func (_IERC721 *IERC721Filterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*IERC721ApprovalForAllIterator, error) {
  5615  
  5616  	var ownerRule []interface{}
  5617  	for _, ownerItem := range owner {
  5618  		ownerRule = append(ownerRule, ownerItem)
  5619  	}
  5620  	var operatorRule []interface{}
  5621  	for _, operatorItem := range operator {
  5622  		operatorRule = append(operatorRule, operatorItem)
  5623  	}
  5624  
  5625  	logs, sub, err := _IERC721.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  5626  	if err != nil {
  5627  		return nil, err
  5628  	}
  5629  	return &IERC721ApprovalForAllIterator{contract: _IERC721.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil
  5630  }
  5631  
  5632  // WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  5633  //
  5634  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  5635  func (_IERC721 *IERC721Filterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *IERC721ApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) {
  5636  
  5637  	var ownerRule []interface{}
  5638  	for _, ownerItem := range owner {
  5639  		ownerRule = append(ownerRule, ownerItem)
  5640  	}
  5641  	var operatorRule []interface{}
  5642  	for _, operatorItem := range operator {
  5643  		operatorRule = append(operatorRule, operatorItem)
  5644  	}
  5645  
  5646  	logs, sub, err := _IERC721.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  5647  	if err != nil {
  5648  		return nil, err
  5649  	}
  5650  	return event.NewSubscription(func(quit <-chan struct{}) error {
  5651  		defer sub.Unsubscribe()
  5652  		for {
  5653  			select {
  5654  			case log := <-logs:
  5655  				// New log arrived, parse the event and forward to the user
  5656  				event := new(IERC721ApprovalForAll)
  5657  				if err := _IERC721.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  5658  					return err
  5659  				}
  5660  				event.Raw = log
  5661  
  5662  				select {
  5663  				case sink <- event:
  5664  				case err := <-sub.Err():
  5665  					return err
  5666  				case <-quit:
  5667  					return nil
  5668  				}
  5669  			case err := <-sub.Err():
  5670  				return err
  5671  			case <-quit:
  5672  				return nil
  5673  			}
  5674  		}
  5675  	}), nil
  5676  }
  5677  
  5678  // ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  5679  //
  5680  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  5681  func (_IERC721 *IERC721Filterer) ParseApprovalForAll(log types.Log) (*IERC721ApprovalForAll, error) {
  5682  	event := new(IERC721ApprovalForAll)
  5683  	if err := _IERC721.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  5684  		return nil, err
  5685  	}
  5686  	return event, nil
  5687  }
  5688  
  5689  // IERC721TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IERC721 contract.
  5690  type IERC721TransferIterator struct {
  5691  	Event *IERC721Transfer // Event containing the contract specifics and raw log
  5692  
  5693  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  5694  	event    string              // Event name to use for unpacking event data
  5695  
  5696  	logs chan types.Log      // Log channel receiving the found contract events
  5697  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  5698  	done bool                // Whether the subscription completed delivering logs
  5699  	fail error               // Occurred error to stop iteration
  5700  }
  5701  
  5702  // Next advances the iterator to the subsequent event, returning whether there
  5703  // are any more events found. In case of a retrieval or parsing error, false is
  5704  // returned and Error() can be queried for the exact failure.
  5705  func (it *IERC721TransferIterator) Next() bool {
  5706  	// If the iterator failed, stop iterating
  5707  	if it.fail != nil {
  5708  		return false
  5709  	}
  5710  	// If the iterator completed, deliver directly whatever's available
  5711  	if it.done {
  5712  		select {
  5713  		case log := <-it.logs:
  5714  			it.Event = new(IERC721Transfer)
  5715  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5716  				it.fail = err
  5717  				return false
  5718  			}
  5719  			it.Event.Raw = log
  5720  			return true
  5721  
  5722  		default:
  5723  			return false
  5724  		}
  5725  	}
  5726  	// Iterator still in progress, wait for either a data or an error event
  5727  	select {
  5728  	case log := <-it.logs:
  5729  		it.Event = new(IERC721Transfer)
  5730  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5731  			it.fail = err
  5732  			return false
  5733  		}
  5734  		it.Event.Raw = log
  5735  		return true
  5736  
  5737  	case err := <-it.sub.Err():
  5738  		it.done = true
  5739  		it.fail = err
  5740  		return it.Next()
  5741  	}
  5742  }
  5743  
  5744  // Error returns any retrieval or parsing error occurred during filtering.
  5745  func (it *IERC721TransferIterator) Error() error {
  5746  	return it.fail
  5747  }
  5748  
  5749  // Close terminates the iteration process, releasing any pending underlying
  5750  // resources.
  5751  func (it *IERC721TransferIterator) Close() error {
  5752  	it.sub.Unsubscribe()
  5753  	return nil
  5754  }
  5755  
  5756  // IERC721Transfer represents a Transfer event raised by the IERC721 contract.
  5757  type IERC721Transfer struct {
  5758  	From    common.Address
  5759  	To      common.Address
  5760  	TokenId *big.Int
  5761  	Raw     types.Log // Blockchain specific contextual infos
  5762  }
  5763  
  5764  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  5765  //
  5766  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  5767  func (_IERC721 *IERC721Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*IERC721TransferIterator, error) {
  5768  
  5769  	var fromRule []interface{}
  5770  	for _, fromItem := range from {
  5771  		fromRule = append(fromRule, fromItem)
  5772  	}
  5773  	var toRule []interface{}
  5774  	for _, toItem := range to {
  5775  		toRule = append(toRule, toItem)
  5776  	}
  5777  	var tokenIdRule []interface{}
  5778  	for _, tokenIdItem := range tokenId {
  5779  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  5780  	}
  5781  
  5782  	logs, sub, err := _IERC721.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  5783  	if err != nil {
  5784  		return nil, err
  5785  	}
  5786  	return &IERC721TransferIterator{contract: _IERC721.contract, event: "Transfer", logs: logs, sub: sub}, nil
  5787  }
  5788  
  5789  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  5790  //
  5791  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  5792  func (_IERC721 *IERC721Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC721Transfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  5793  
  5794  	var fromRule []interface{}
  5795  	for _, fromItem := range from {
  5796  		fromRule = append(fromRule, fromItem)
  5797  	}
  5798  	var toRule []interface{}
  5799  	for _, toItem := range to {
  5800  		toRule = append(toRule, toItem)
  5801  	}
  5802  	var tokenIdRule []interface{}
  5803  	for _, tokenIdItem := range tokenId {
  5804  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  5805  	}
  5806  
  5807  	logs, sub, err := _IERC721.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  5808  	if err != nil {
  5809  		return nil, err
  5810  	}
  5811  	return event.NewSubscription(func(quit <-chan struct{}) error {
  5812  		defer sub.Unsubscribe()
  5813  		for {
  5814  			select {
  5815  			case log := <-logs:
  5816  				// New log arrived, parse the event and forward to the user
  5817  				event := new(IERC721Transfer)
  5818  				if err := _IERC721.contract.UnpackLog(event, "Transfer", log); err != nil {
  5819  					return err
  5820  				}
  5821  				event.Raw = log
  5822  
  5823  				select {
  5824  				case sink <- event:
  5825  				case err := <-sub.Err():
  5826  					return err
  5827  				case <-quit:
  5828  					return nil
  5829  				}
  5830  			case err := <-sub.Err():
  5831  				return err
  5832  			case <-quit:
  5833  				return nil
  5834  			}
  5835  		}
  5836  	}), nil
  5837  }
  5838  
  5839  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  5840  //
  5841  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  5842  func (_IERC721 *IERC721Filterer) ParseTransfer(log types.Log) (*IERC721Transfer, error) {
  5843  	event := new(IERC721Transfer)
  5844  	if err := _IERC721.contract.UnpackLog(event, "Transfer", log); err != nil {
  5845  		return nil, err
  5846  	}
  5847  	return event, nil
  5848  }
  5849  
  5850  // IERC721BridgeReceiverABI is the input ABI used to generate the binding from.
  5851  const IERC721BridgeReceiverABI = "[{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
  5852  
  5853  // IERC721BridgeReceiverBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  5854  const IERC721BridgeReceiverBinRuntime = ``
  5855  
  5856  // IERC721BridgeReceiverFuncSigs maps the 4-byte function signature to its string representation.
  5857  var IERC721BridgeReceiverFuncSigs = map[string]string{
  5858  	"cf0da290": "onERC721Received(address,uint256,address,bytes)",
  5859  }
  5860  
  5861  // IERC721BridgeReceiver is an auto generated Go binding around a Klaytn contract.
  5862  type IERC721BridgeReceiver struct {
  5863  	IERC721BridgeReceiverCaller     // Read-only binding to the contract
  5864  	IERC721BridgeReceiverTransactor // Write-only binding to the contract
  5865  	IERC721BridgeReceiverFilterer   // Log filterer for contract events
  5866  }
  5867  
  5868  // IERC721BridgeReceiverCaller is an auto generated read-only Go binding around a Klaytn contract.
  5869  type IERC721BridgeReceiverCaller struct {
  5870  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5871  }
  5872  
  5873  // IERC721BridgeReceiverTransactor is an auto generated write-only Go binding around a Klaytn contract.
  5874  type IERC721BridgeReceiverTransactor struct {
  5875  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5876  }
  5877  
  5878  // IERC721BridgeReceiverFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
  5879  type IERC721BridgeReceiverFilterer struct {
  5880  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5881  }
  5882  
  5883  // IERC721BridgeReceiverSession is an auto generated Go binding around a Klaytn contract,
  5884  // with pre-set call and transact options.
  5885  type IERC721BridgeReceiverSession struct {
  5886  	Contract     *IERC721BridgeReceiver // Generic contract binding to set the session for
  5887  	CallOpts     bind.CallOpts          // Call options to use throughout this session
  5888  	TransactOpts bind.TransactOpts      // Transaction auth options to use throughout this session
  5889  }
  5890  
  5891  // IERC721BridgeReceiverCallerSession is an auto generated read-only Go binding around a Klaytn contract,
  5892  // with pre-set call options.
  5893  type IERC721BridgeReceiverCallerSession struct {
  5894  	Contract *IERC721BridgeReceiverCaller // Generic contract caller binding to set the session for
  5895  	CallOpts bind.CallOpts                // Call options to use throughout this session
  5896  }
  5897  
  5898  // IERC721BridgeReceiverTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  5899  // with pre-set transact options.
  5900  type IERC721BridgeReceiverTransactorSession struct {
  5901  	Contract     *IERC721BridgeReceiverTransactor // Generic contract transactor binding to set the session for
  5902  	TransactOpts bind.TransactOpts                // Transaction auth options to use throughout this session
  5903  }
  5904  
  5905  // IERC721BridgeReceiverRaw is an auto generated low-level Go binding around a Klaytn contract.
  5906  type IERC721BridgeReceiverRaw struct {
  5907  	Contract *IERC721BridgeReceiver // Generic contract binding to access the raw methods on
  5908  }
  5909  
  5910  // IERC721BridgeReceiverCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  5911  type IERC721BridgeReceiverCallerRaw struct {
  5912  	Contract *IERC721BridgeReceiverCaller // Generic read-only contract binding to access the raw methods on
  5913  }
  5914  
  5915  // IERC721BridgeReceiverTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  5916  type IERC721BridgeReceiverTransactorRaw struct {
  5917  	Contract *IERC721BridgeReceiverTransactor // Generic write-only contract binding to access the raw methods on
  5918  }
  5919  
  5920  // NewIERC721BridgeReceiver creates a new instance of IERC721BridgeReceiver, bound to a specific deployed contract.
  5921  func NewIERC721BridgeReceiver(address common.Address, backend bind.ContractBackend) (*IERC721BridgeReceiver, error) {
  5922  	contract, err := bindIERC721BridgeReceiver(address, backend, backend, backend)
  5923  	if err != nil {
  5924  		return nil, err
  5925  	}
  5926  	return &IERC721BridgeReceiver{IERC721BridgeReceiverCaller: IERC721BridgeReceiverCaller{contract: contract}, IERC721BridgeReceiverTransactor: IERC721BridgeReceiverTransactor{contract: contract}, IERC721BridgeReceiverFilterer: IERC721BridgeReceiverFilterer{contract: contract}}, nil
  5927  }
  5928  
  5929  // NewIERC721BridgeReceiverCaller creates a new read-only instance of IERC721BridgeReceiver, bound to a specific deployed contract.
  5930  func NewIERC721BridgeReceiverCaller(address common.Address, caller bind.ContractCaller) (*IERC721BridgeReceiverCaller, error) {
  5931  	contract, err := bindIERC721BridgeReceiver(address, caller, nil, nil)
  5932  	if err != nil {
  5933  		return nil, err
  5934  	}
  5935  	return &IERC721BridgeReceiverCaller{contract: contract}, nil
  5936  }
  5937  
  5938  // NewIERC721BridgeReceiverTransactor creates a new write-only instance of IERC721BridgeReceiver, bound to a specific deployed contract.
  5939  func NewIERC721BridgeReceiverTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC721BridgeReceiverTransactor, error) {
  5940  	contract, err := bindIERC721BridgeReceiver(address, nil, transactor, nil)
  5941  	if err != nil {
  5942  		return nil, err
  5943  	}
  5944  	return &IERC721BridgeReceiverTransactor{contract: contract}, nil
  5945  }
  5946  
  5947  // NewIERC721BridgeReceiverFilterer creates a new log filterer instance of IERC721BridgeReceiver, bound to a specific deployed contract.
  5948  func NewIERC721BridgeReceiverFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC721BridgeReceiverFilterer, error) {
  5949  	contract, err := bindIERC721BridgeReceiver(address, nil, nil, filterer)
  5950  	if err != nil {
  5951  		return nil, err
  5952  	}
  5953  	return &IERC721BridgeReceiverFilterer{contract: contract}, nil
  5954  }
  5955  
  5956  // bindIERC721BridgeReceiver binds a generic wrapper to an already deployed contract.
  5957  func bindIERC721BridgeReceiver(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  5958  	parsed, err := abi.JSON(strings.NewReader(IERC721BridgeReceiverABI))
  5959  	if err != nil {
  5960  		return nil, err
  5961  	}
  5962  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  5963  }
  5964  
  5965  // Call invokes the (constant) contract method with params as input values and
  5966  // sets the output to result. The result type might be a single field for simple
  5967  // returns, a slice of interfaces for anonymous returns and a struct for named
  5968  // returns.
  5969  func (_IERC721BridgeReceiver *IERC721BridgeReceiverRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  5970  	return _IERC721BridgeReceiver.Contract.IERC721BridgeReceiverCaller.contract.Call(opts, result, method, params...)
  5971  }
  5972  
  5973  // Transfer initiates a plain transaction to move funds to the contract, calling
  5974  // its default method if one is available.
  5975  func (_IERC721BridgeReceiver *IERC721BridgeReceiverRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  5976  	return _IERC721BridgeReceiver.Contract.IERC721BridgeReceiverTransactor.contract.Transfer(opts)
  5977  }
  5978  
  5979  // Transact invokes the (paid) contract method with params as input values.
  5980  func (_IERC721BridgeReceiver *IERC721BridgeReceiverRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  5981  	return _IERC721BridgeReceiver.Contract.IERC721BridgeReceiverTransactor.contract.Transact(opts, method, params...)
  5982  }
  5983  
  5984  // Call invokes the (constant) contract method with params as input values and
  5985  // sets the output to result. The result type might be a single field for simple
  5986  // returns, a slice of interfaces for anonymous returns and a struct for named
  5987  // returns.
  5988  func (_IERC721BridgeReceiver *IERC721BridgeReceiverCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  5989  	return _IERC721BridgeReceiver.Contract.contract.Call(opts, result, method, params...)
  5990  }
  5991  
  5992  // Transfer initiates a plain transaction to move funds to the contract, calling
  5993  // its default method if one is available.
  5994  func (_IERC721BridgeReceiver *IERC721BridgeReceiverTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  5995  	return _IERC721BridgeReceiver.Contract.contract.Transfer(opts)
  5996  }
  5997  
  5998  // Transact invokes the (paid) contract method with params as input values.
  5999  func (_IERC721BridgeReceiver *IERC721BridgeReceiverTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  6000  	return _IERC721BridgeReceiver.Contract.contract.Transact(opts, method, params...)
  6001  }
  6002  
  6003  // OnERC721Received is a paid mutator transaction binding the contract method 0xcf0da290.
  6004  //
  6005  // Solidity: function onERC721Received(address _from, uint256 _tokenId, address _to, bytes _extraData) returns()
  6006  func (_IERC721BridgeReceiver *IERC721BridgeReceiverTransactor) OnERC721Received(opts *bind.TransactOpts, _from common.Address, _tokenId *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) {
  6007  	return _IERC721BridgeReceiver.contract.Transact(opts, "onERC721Received", _from, _tokenId, _to, _extraData)
  6008  }
  6009  
  6010  // OnERC721Received is a paid mutator transaction binding the contract method 0xcf0da290.
  6011  //
  6012  // Solidity: function onERC721Received(address _from, uint256 _tokenId, address _to, bytes _extraData) returns()
  6013  func (_IERC721BridgeReceiver *IERC721BridgeReceiverSession) OnERC721Received(_from common.Address, _tokenId *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) {
  6014  	return _IERC721BridgeReceiver.Contract.OnERC721Received(&_IERC721BridgeReceiver.TransactOpts, _from, _tokenId, _to, _extraData)
  6015  }
  6016  
  6017  // OnERC721Received is a paid mutator transaction binding the contract method 0xcf0da290.
  6018  //
  6019  // Solidity: function onERC721Received(address _from, uint256 _tokenId, address _to, bytes _extraData) returns()
  6020  func (_IERC721BridgeReceiver *IERC721BridgeReceiverTransactorSession) OnERC721Received(_from common.Address, _tokenId *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) {
  6021  	return _IERC721BridgeReceiver.Contract.OnERC721Received(&_IERC721BridgeReceiver.TransactOpts, _from, _tokenId, _to, _extraData)
  6022  }
  6023  
  6024  // IERC721ReceiverABI is the input ABI used to generate the binding from.
  6025  const IERC721ReceiverABI = "[{\"constant\":false,\"inputs\":[{\"name\":\"operator\",\"type\":\"address\"},{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes4\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
  6026  
  6027  // IERC721ReceiverBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  6028  const IERC721ReceiverBinRuntime = ``
  6029  
  6030  // IERC721ReceiverFuncSigs maps the 4-byte function signature to its string representation.
  6031  var IERC721ReceiverFuncSigs = map[string]string{
  6032  	"150b7a02": "onERC721Received(address,address,uint256,bytes)",
  6033  }
  6034  
  6035  // IERC721Receiver is an auto generated Go binding around a Klaytn contract.
  6036  type IERC721Receiver struct {
  6037  	IERC721ReceiverCaller     // Read-only binding to the contract
  6038  	IERC721ReceiverTransactor // Write-only binding to the contract
  6039  	IERC721ReceiverFilterer   // Log filterer for contract events
  6040  }
  6041  
  6042  // IERC721ReceiverCaller is an auto generated read-only Go binding around a Klaytn contract.
  6043  type IERC721ReceiverCaller struct {
  6044  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6045  }
  6046  
  6047  // IERC721ReceiverTransactor is an auto generated write-only Go binding around a Klaytn contract.
  6048  type IERC721ReceiverTransactor struct {
  6049  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6050  }
  6051  
  6052  // IERC721ReceiverFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
  6053  type IERC721ReceiverFilterer struct {
  6054  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6055  }
  6056  
  6057  // IERC721ReceiverSession is an auto generated Go binding around a Klaytn contract,
  6058  // with pre-set call and transact options.
  6059  type IERC721ReceiverSession struct {
  6060  	Contract     *IERC721Receiver  // Generic contract binding to set the session for
  6061  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  6062  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  6063  }
  6064  
  6065  // IERC721ReceiverCallerSession is an auto generated read-only Go binding around a Klaytn contract,
  6066  // with pre-set call options.
  6067  type IERC721ReceiverCallerSession struct {
  6068  	Contract *IERC721ReceiverCaller // Generic contract caller binding to set the session for
  6069  	CallOpts bind.CallOpts          // Call options to use throughout this session
  6070  }
  6071  
  6072  // IERC721ReceiverTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  6073  // with pre-set transact options.
  6074  type IERC721ReceiverTransactorSession struct {
  6075  	Contract     *IERC721ReceiverTransactor // Generic contract transactor binding to set the session for
  6076  	TransactOpts bind.TransactOpts          // Transaction auth options to use throughout this session
  6077  }
  6078  
  6079  // IERC721ReceiverRaw is an auto generated low-level Go binding around a Klaytn contract.
  6080  type IERC721ReceiverRaw struct {
  6081  	Contract *IERC721Receiver // Generic contract binding to access the raw methods on
  6082  }
  6083  
  6084  // IERC721ReceiverCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  6085  type IERC721ReceiverCallerRaw struct {
  6086  	Contract *IERC721ReceiverCaller // Generic read-only contract binding to access the raw methods on
  6087  }
  6088  
  6089  // IERC721ReceiverTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  6090  type IERC721ReceiverTransactorRaw struct {
  6091  	Contract *IERC721ReceiverTransactor // Generic write-only contract binding to access the raw methods on
  6092  }
  6093  
  6094  // NewIERC721Receiver creates a new instance of IERC721Receiver, bound to a specific deployed contract.
  6095  func NewIERC721Receiver(address common.Address, backend bind.ContractBackend) (*IERC721Receiver, error) {
  6096  	contract, err := bindIERC721Receiver(address, backend, backend, backend)
  6097  	if err != nil {
  6098  		return nil, err
  6099  	}
  6100  	return &IERC721Receiver{IERC721ReceiverCaller: IERC721ReceiverCaller{contract: contract}, IERC721ReceiverTransactor: IERC721ReceiverTransactor{contract: contract}, IERC721ReceiverFilterer: IERC721ReceiverFilterer{contract: contract}}, nil
  6101  }
  6102  
  6103  // NewIERC721ReceiverCaller creates a new read-only instance of IERC721Receiver, bound to a specific deployed contract.
  6104  func NewIERC721ReceiverCaller(address common.Address, caller bind.ContractCaller) (*IERC721ReceiverCaller, error) {
  6105  	contract, err := bindIERC721Receiver(address, caller, nil, nil)
  6106  	if err != nil {
  6107  		return nil, err
  6108  	}
  6109  	return &IERC721ReceiverCaller{contract: contract}, nil
  6110  }
  6111  
  6112  // NewIERC721ReceiverTransactor creates a new write-only instance of IERC721Receiver, bound to a specific deployed contract.
  6113  func NewIERC721ReceiverTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC721ReceiverTransactor, error) {
  6114  	contract, err := bindIERC721Receiver(address, nil, transactor, nil)
  6115  	if err != nil {
  6116  		return nil, err
  6117  	}
  6118  	return &IERC721ReceiverTransactor{contract: contract}, nil
  6119  }
  6120  
  6121  // NewIERC721ReceiverFilterer creates a new log filterer instance of IERC721Receiver, bound to a specific deployed contract.
  6122  func NewIERC721ReceiverFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC721ReceiverFilterer, error) {
  6123  	contract, err := bindIERC721Receiver(address, nil, nil, filterer)
  6124  	if err != nil {
  6125  		return nil, err
  6126  	}
  6127  	return &IERC721ReceiverFilterer{contract: contract}, nil
  6128  }
  6129  
  6130  // bindIERC721Receiver binds a generic wrapper to an already deployed contract.
  6131  func bindIERC721Receiver(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  6132  	parsed, err := abi.JSON(strings.NewReader(IERC721ReceiverABI))
  6133  	if err != nil {
  6134  		return nil, err
  6135  	}
  6136  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  6137  }
  6138  
  6139  // Call invokes the (constant) contract method with params as input values and
  6140  // sets the output to result. The result type might be a single field for simple
  6141  // returns, a slice of interfaces for anonymous returns and a struct for named
  6142  // returns.
  6143  func (_IERC721Receiver *IERC721ReceiverRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  6144  	return _IERC721Receiver.Contract.IERC721ReceiverCaller.contract.Call(opts, result, method, params...)
  6145  }
  6146  
  6147  // Transfer initiates a plain transaction to move funds to the contract, calling
  6148  // its default method if one is available.
  6149  func (_IERC721Receiver *IERC721ReceiverRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  6150  	return _IERC721Receiver.Contract.IERC721ReceiverTransactor.contract.Transfer(opts)
  6151  }
  6152  
  6153  // Transact invokes the (paid) contract method with params as input values.
  6154  func (_IERC721Receiver *IERC721ReceiverRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  6155  	return _IERC721Receiver.Contract.IERC721ReceiverTransactor.contract.Transact(opts, method, params...)
  6156  }
  6157  
  6158  // Call invokes the (constant) contract method with params as input values and
  6159  // sets the output to result. The result type might be a single field for simple
  6160  // returns, a slice of interfaces for anonymous returns and a struct for named
  6161  // returns.
  6162  func (_IERC721Receiver *IERC721ReceiverCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  6163  	return _IERC721Receiver.Contract.contract.Call(opts, result, method, params...)
  6164  }
  6165  
  6166  // Transfer initiates a plain transaction to move funds to the contract, calling
  6167  // its default method if one is available.
  6168  func (_IERC721Receiver *IERC721ReceiverTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  6169  	return _IERC721Receiver.Contract.contract.Transfer(opts)
  6170  }
  6171  
  6172  // Transact invokes the (paid) contract method with params as input values.
  6173  func (_IERC721Receiver *IERC721ReceiverTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  6174  	return _IERC721Receiver.Contract.contract.Transact(opts, method, params...)
  6175  }
  6176  
  6177  // OnERC721Received is a paid mutator transaction binding the contract method 0x150b7a02.
  6178  //
  6179  // Solidity: function onERC721Received(address operator, address from, uint256 tokenId, bytes data) returns(bytes4)
  6180  func (_IERC721Receiver *IERC721ReceiverTransactor) OnERC721Received(opts *bind.TransactOpts, operator common.Address, from common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
  6181  	return _IERC721Receiver.contract.Transact(opts, "onERC721Received", operator, from, tokenId, data)
  6182  }
  6183  
  6184  // OnERC721Received is a paid mutator transaction binding the contract method 0x150b7a02.
  6185  //
  6186  // Solidity: function onERC721Received(address operator, address from, uint256 tokenId, bytes data) returns(bytes4)
  6187  func (_IERC721Receiver *IERC721ReceiverSession) OnERC721Received(operator common.Address, from common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
  6188  	return _IERC721Receiver.Contract.OnERC721Received(&_IERC721Receiver.TransactOpts, operator, from, tokenId, data)
  6189  }
  6190  
  6191  // OnERC721Received is a paid mutator transaction binding the contract method 0x150b7a02.
  6192  //
  6193  // Solidity: function onERC721Received(address operator, address from, uint256 tokenId, bytes data) returns(bytes4)
  6194  func (_IERC721Receiver *IERC721ReceiverTransactorSession) OnERC721Received(operator common.Address, from common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
  6195  	return _IERC721Receiver.Contract.OnERC721Received(&_IERC721Receiver.TransactOpts, operator, from, tokenId, data)
  6196  }
  6197  
  6198  // MinterRoleABI is the input ABI used to generate the binding from.
  6199  const MinterRoleABI = "[{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isMinter\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterRemoved\",\"type\":\"event\"}]"
  6200  
  6201  // MinterRoleBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  6202  const MinterRoleBinRuntime = ``
  6203  
  6204  // MinterRoleFuncSigs maps the 4-byte function signature to its string representation.
  6205  var MinterRoleFuncSigs = map[string]string{
  6206  	"983b2d56": "addMinter(address)",
  6207  	"aa271e1a": "isMinter(address)",
  6208  	"98650275": "renounceMinter()",
  6209  }
  6210  
  6211  // MinterRole is an auto generated Go binding around a Klaytn contract.
  6212  type MinterRole struct {
  6213  	MinterRoleCaller     // Read-only binding to the contract
  6214  	MinterRoleTransactor // Write-only binding to the contract
  6215  	MinterRoleFilterer   // Log filterer for contract events
  6216  }
  6217  
  6218  // MinterRoleCaller is an auto generated read-only Go binding around a Klaytn contract.
  6219  type MinterRoleCaller struct {
  6220  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6221  }
  6222  
  6223  // MinterRoleTransactor is an auto generated write-only Go binding around a Klaytn contract.
  6224  type MinterRoleTransactor struct {
  6225  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6226  }
  6227  
  6228  // MinterRoleFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
  6229  type MinterRoleFilterer struct {
  6230  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6231  }
  6232  
  6233  // MinterRoleSession is an auto generated Go binding around a Klaytn contract,
  6234  // with pre-set call and transact options.
  6235  type MinterRoleSession struct {
  6236  	Contract     *MinterRole       // Generic contract binding to set the session for
  6237  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  6238  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  6239  }
  6240  
  6241  // MinterRoleCallerSession is an auto generated read-only Go binding around a Klaytn contract,
  6242  // with pre-set call options.
  6243  type MinterRoleCallerSession struct {
  6244  	Contract *MinterRoleCaller // Generic contract caller binding to set the session for
  6245  	CallOpts bind.CallOpts     // Call options to use throughout this session
  6246  }
  6247  
  6248  // MinterRoleTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  6249  // with pre-set transact options.
  6250  type MinterRoleTransactorSession struct {
  6251  	Contract     *MinterRoleTransactor // Generic contract transactor binding to set the session for
  6252  	TransactOpts bind.TransactOpts     // Transaction auth options to use throughout this session
  6253  }
  6254  
  6255  // MinterRoleRaw is an auto generated low-level Go binding around a Klaytn contract.
  6256  type MinterRoleRaw struct {
  6257  	Contract *MinterRole // Generic contract binding to access the raw methods on
  6258  }
  6259  
  6260  // MinterRoleCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  6261  type MinterRoleCallerRaw struct {
  6262  	Contract *MinterRoleCaller // Generic read-only contract binding to access the raw methods on
  6263  }
  6264  
  6265  // MinterRoleTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  6266  type MinterRoleTransactorRaw struct {
  6267  	Contract *MinterRoleTransactor // Generic write-only contract binding to access the raw methods on
  6268  }
  6269  
  6270  // NewMinterRole creates a new instance of MinterRole, bound to a specific deployed contract.
  6271  func NewMinterRole(address common.Address, backend bind.ContractBackend) (*MinterRole, error) {
  6272  	contract, err := bindMinterRole(address, backend, backend, backend)
  6273  	if err != nil {
  6274  		return nil, err
  6275  	}
  6276  	return &MinterRole{MinterRoleCaller: MinterRoleCaller{contract: contract}, MinterRoleTransactor: MinterRoleTransactor{contract: contract}, MinterRoleFilterer: MinterRoleFilterer{contract: contract}}, nil
  6277  }
  6278  
  6279  // NewMinterRoleCaller creates a new read-only instance of MinterRole, bound to a specific deployed contract.
  6280  func NewMinterRoleCaller(address common.Address, caller bind.ContractCaller) (*MinterRoleCaller, error) {
  6281  	contract, err := bindMinterRole(address, caller, nil, nil)
  6282  	if err != nil {
  6283  		return nil, err
  6284  	}
  6285  	return &MinterRoleCaller{contract: contract}, nil
  6286  }
  6287  
  6288  // NewMinterRoleTransactor creates a new write-only instance of MinterRole, bound to a specific deployed contract.
  6289  func NewMinterRoleTransactor(address common.Address, transactor bind.ContractTransactor) (*MinterRoleTransactor, error) {
  6290  	contract, err := bindMinterRole(address, nil, transactor, nil)
  6291  	if err != nil {
  6292  		return nil, err
  6293  	}
  6294  	return &MinterRoleTransactor{contract: contract}, nil
  6295  }
  6296  
  6297  // NewMinterRoleFilterer creates a new log filterer instance of MinterRole, bound to a specific deployed contract.
  6298  func NewMinterRoleFilterer(address common.Address, filterer bind.ContractFilterer) (*MinterRoleFilterer, error) {
  6299  	contract, err := bindMinterRole(address, nil, nil, filterer)
  6300  	if err != nil {
  6301  		return nil, err
  6302  	}
  6303  	return &MinterRoleFilterer{contract: contract}, nil
  6304  }
  6305  
  6306  // bindMinterRole binds a generic wrapper to an already deployed contract.
  6307  func bindMinterRole(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  6308  	parsed, err := abi.JSON(strings.NewReader(MinterRoleABI))
  6309  	if err != nil {
  6310  		return nil, err
  6311  	}
  6312  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  6313  }
  6314  
  6315  // Call invokes the (constant) contract method with params as input values and
  6316  // sets the output to result. The result type might be a single field for simple
  6317  // returns, a slice of interfaces for anonymous returns and a struct for named
  6318  // returns.
  6319  func (_MinterRole *MinterRoleRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  6320  	return _MinterRole.Contract.MinterRoleCaller.contract.Call(opts, result, method, params...)
  6321  }
  6322  
  6323  // Transfer initiates a plain transaction to move funds to the contract, calling
  6324  // its default method if one is available.
  6325  func (_MinterRole *MinterRoleRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  6326  	return _MinterRole.Contract.MinterRoleTransactor.contract.Transfer(opts)
  6327  }
  6328  
  6329  // Transact invokes the (paid) contract method with params as input values.
  6330  func (_MinterRole *MinterRoleRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  6331  	return _MinterRole.Contract.MinterRoleTransactor.contract.Transact(opts, method, params...)
  6332  }
  6333  
  6334  // Call invokes the (constant) contract method with params as input values and
  6335  // sets the output to result. The result type might be a single field for simple
  6336  // returns, a slice of interfaces for anonymous returns and a struct for named
  6337  // returns.
  6338  func (_MinterRole *MinterRoleCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  6339  	return _MinterRole.Contract.contract.Call(opts, result, method, params...)
  6340  }
  6341  
  6342  // Transfer initiates a plain transaction to move funds to the contract, calling
  6343  // its default method if one is available.
  6344  func (_MinterRole *MinterRoleTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  6345  	return _MinterRole.Contract.contract.Transfer(opts)
  6346  }
  6347  
  6348  // Transact invokes the (paid) contract method with params as input values.
  6349  func (_MinterRole *MinterRoleTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  6350  	return _MinterRole.Contract.contract.Transact(opts, method, params...)
  6351  }
  6352  
  6353  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
  6354  //
  6355  // Solidity: function isMinter(address account) view returns(bool)
  6356  func (_MinterRole *MinterRoleCaller) IsMinter(opts *bind.CallOpts, account common.Address) (bool, error) {
  6357  	var (
  6358  		ret0 = new(bool)
  6359  	)
  6360  	out := ret0
  6361  	err := _MinterRole.contract.Call(opts, out, "isMinter", account)
  6362  	return *ret0, err
  6363  }
  6364  
  6365  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
  6366  //
  6367  // Solidity: function isMinter(address account) view returns(bool)
  6368  func (_MinterRole *MinterRoleSession) IsMinter(account common.Address) (bool, error) {
  6369  	return _MinterRole.Contract.IsMinter(&_MinterRole.CallOpts, account)
  6370  }
  6371  
  6372  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
  6373  //
  6374  // Solidity: function isMinter(address account) view returns(bool)
  6375  func (_MinterRole *MinterRoleCallerSession) IsMinter(account common.Address) (bool, error) {
  6376  	return _MinterRole.Contract.IsMinter(&_MinterRole.CallOpts, account)
  6377  }
  6378  
  6379  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
  6380  //
  6381  // Solidity: function addMinter(address account) returns()
  6382  func (_MinterRole *MinterRoleTransactor) AddMinter(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) {
  6383  	return _MinterRole.contract.Transact(opts, "addMinter", account)
  6384  }
  6385  
  6386  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
  6387  //
  6388  // Solidity: function addMinter(address account) returns()
  6389  func (_MinterRole *MinterRoleSession) AddMinter(account common.Address) (*types.Transaction, error) {
  6390  	return _MinterRole.Contract.AddMinter(&_MinterRole.TransactOpts, account)
  6391  }
  6392  
  6393  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
  6394  //
  6395  // Solidity: function addMinter(address account) returns()
  6396  func (_MinterRole *MinterRoleTransactorSession) AddMinter(account common.Address) (*types.Transaction, error) {
  6397  	return _MinterRole.Contract.AddMinter(&_MinterRole.TransactOpts, account)
  6398  }
  6399  
  6400  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
  6401  //
  6402  // Solidity: function renounceMinter() returns()
  6403  func (_MinterRole *MinterRoleTransactor) RenounceMinter(opts *bind.TransactOpts) (*types.Transaction, error) {
  6404  	return _MinterRole.contract.Transact(opts, "renounceMinter")
  6405  }
  6406  
  6407  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
  6408  //
  6409  // Solidity: function renounceMinter() returns()
  6410  func (_MinterRole *MinterRoleSession) RenounceMinter() (*types.Transaction, error) {
  6411  	return _MinterRole.Contract.RenounceMinter(&_MinterRole.TransactOpts)
  6412  }
  6413  
  6414  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
  6415  //
  6416  // Solidity: function renounceMinter() returns()
  6417  func (_MinterRole *MinterRoleTransactorSession) RenounceMinter() (*types.Transaction, error) {
  6418  	return _MinterRole.Contract.RenounceMinter(&_MinterRole.TransactOpts)
  6419  }
  6420  
  6421  // MinterRoleMinterAddedIterator is returned from FilterMinterAdded and is used to iterate over the raw logs and unpacked data for MinterAdded events raised by the MinterRole contract.
  6422  type MinterRoleMinterAddedIterator struct {
  6423  	Event *MinterRoleMinterAdded // Event containing the contract specifics and raw log
  6424  
  6425  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  6426  	event    string              // Event name to use for unpacking event data
  6427  
  6428  	logs chan types.Log      // Log channel receiving the found contract events
  6429  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  6430  	done bool                // Whether the subscription completed delivering logs
  6431  	fail error               // Occurred error to stop iteration
  6432  }
  6433  
  6434  // Next advances the iterator to the subsequent event, returning whether there
  6435  // are any more events found. In case of a retrieval or parsing error, false is
  6436  // returned and Error() can be queried for the exact failure.
  6437  func (it *MinterRoleMinterAddedIterator) Next() bool {
  6438  	// If the iterator failed, stop iterating
  6439  	if it.fail != nil {
  6440  		return false
  6441  	}
  6442  	// If the iterator completed, deliver directly whatever's available
  6443  	if it.done {
  6444  		select {
  6445  		case log := <-it.logs:
  6446  			it.Event = new(MinterRoleMinterAdded)
  6447  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6448  				it.fail = err
  6449  				return false
  6450  			}
  6451  			it.Event.Raw = log
  6452  			return true
  6453  
  6454  		default:
  6455  			return false
  6456  		}
  6457  	}
  6458  	// Iterator still in progress, wait for either a data or an error event
  6459  	select {
  6460  	case log := <-it.logs:
  6461  		it.Event = new(MinterRoleMinterAdded)
  6462  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6463  			it.fail = err
  6464  			return false
  6465  		}
  6466  		it.Event.Raw = log
  6467  		return true
  6468  
  6469  	case err := <-it.sub.Err():
  6470  		it.done = true
  6471  		it.fail = err
  6472  		return it.Next()
  6473  	}
  6474  }
  6475  
  6476  // Error returns any retrieval or parsing error occurred during filtering.
  6477  func (it *MinterRoleMinterAddedIterator) Error() error {
  6478  	return it.fail
  6479  }
  6480  
  6481  // Close terminates the iteration process, releasing any pending underlying
  6482  // resources.
  6483  func (it *MinterRoleMinterAddedIterator) Close() error {
  6484  	it.sub.Unsubscribe()
  6485  	return nil
  6486  }
  6487  
  6488  // MinterRoleMinterAdded represents a MinterAdded event raised by the MinterRole contract.
  6489  type MinterRoleMinterAdded struct {
  6490  	Account common.Address
  6491  	Raw     types.Log // Blockchain specific contextual infos
  6492  }
  6493  
  6494  // FilterMinterAdded is a free log retrieval operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
  6495  //
  6496  // Solidity: event MinterAdded(address indexed account)
  6497  func (_MinterRole *MinterRoleFilterer) FilterMinterAdded(opts *bind.FilterOpts, account []common.Address) (*MinterRoleMinterAddedIterator, error) {
  6498  
  6499  	var accountRule []interface{}
  6500  	for _, accountItem := range account {
  6501  		accountRule = append(accountRule, accountItem)
  6502  	}
  6503  
  6504  	logs, sub, err := _MinterRole.contract.FilterLogs(opts, "MinterAdded", accountRule)
  6505  	if err != nil {
  6506  		return nil, err
  6507  	}
  6508  	return &MinterRoleMinterAddedIterator{contract: _MinterRole.contract, event: "MinterAdded", logs: logs, sub: sub}, nil
  6509  }
  6510  
  6511  // WatchMinterAdded is a free log subscription operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
  6512  //
  6513  // Solidity: event MinterAdded(address indexed account)
  6514  func (_MinterRole *MinterRoleFilterer) WatchMinterAdded(opts *bind.WatchOpts, sink chan<- *MinterRoleMinterAdded, account []common.Address) (event.Subscription, error) {
  6515  
  6516  	var accountRule []interface{}
  6517  	for _, accountItem := range account {
  6518  		accountRule = append(accountRule, accountItem)
  6519  	}
  6520  
  6521  	logs, sub, err := _MinterRole.contract.WatchLogs(opts, "MinterAdded", accountRule)
  6522  	if err != nil {
  6523  		return nil, err
  6524  	}
  6525  	return event.NewSubscription(func(quit <-chan struct{}) error {
  6526  		defer sub.Unsubscribe()
  6527  		for {
  6528  			select {
  6529  			case log := <-logs:
  6530  				// New log arrived, parse the event and forward to the user
  6531  				event := new(MinterRoleMinterAdded)
  6532  				if err := _MinterRole.contract.UnpackLog(event, "MinterAdded", log); err != nil {
  6533  					return err
  6534  				}
  6535  				event.Raw = log
  6536  
  6537  				select {
  6538  				case sink <- event:
  6539  				case err := <-sub.Err():
  6540  					return err
  6541  				case <-quit:
  6542  					return nil
  6543  				}
  6544  			case err := <-sub.Err():
  6545  				return err
  6546  			case <-quit:
  6547  				return nil
  6548  			}
  6549  		}
  6550  	}), nil
  6551  }
  6552  
  6553  // ParseMinterAdded is a log parse operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
  6554  //
  6555  // Solidity: event MinterAdded(address indexed account)
  6556  func (_MinterRole *MinterRoleFilterer) ParseMinterAdded(log types.Log) (*MinterRoleMinterAdded, error) {
  6557  	event := new(MinterRoleMinterAdded)
  6558  	if err := _MinterRole.contract.UnpackLog(event, "MinterAdded", log); err != nil {
  6559  		return nil, err
  6560  	}
  6561  	return event, nil
  6562  }
  6563  
  6564  // MinterRoleMinterRemovedIterator is returned from FilterMinterRemoved and is used to iterate over the raw logs and unpacked data for MinterRemoved events raised by the MinterRole contract.
  6565  type MinterRoleMinterRemovedIterator struct {
  6566  	Event *MinterRoleMinterRemoved // Event containing the contract specifics and raw log
  6567  
  6568  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  6569  	event    string              // Event name to use for unpacking event data
  6570  
  6571  	logs chan types.Log      // Log channel receiving the found contract events
  6572  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  6573  	done bool                // Whether the subscription completed delivering logs
  6574  	fail error               // Occurred error to stop iteration
  6575  }
  6576  
  6577  // Next advances the iterator to the subsequent event, returning whether there
  6578  // are any more events found. In case of a retrieval or parsing error, false is
  6579  // returned and Error() can be queried for the exact failure.
  6580  func (it *MinterRoleMinterRemovedIterator) Next() bool {
  6581  	// If the iterator failed, stop iterating
  6582  	if it.fail != nil {
  6583  		return false
  6584  	}
  6585  	// If the iterator completed, deliver directly whatever's available
  6586  	if it.done {
  6587  		select {
  6588  		case log := <-it.logs:
  6589  			it.Event = new(MinterRoleMinterRemoved)
  6590  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6591  				it.fail = err
  6592  				return false
  6593  			}
  6594  			it.Event.Raw = log
  6595  			return true
  6596  
  6597  		default:
  6598  			return false
  6599  		}
  6600  	}
  6601  	// Iterator still in progress, wait for either a data or an error event
  6602  	select {
  6603  	case log := <-it.logs:
  6604  		it.Event = new(MinterRoleMinterRemoved)
  6605  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6606  			it.fail = err
  6607  			return false
  6608  		}
  6609  		it.Event.Raw = log
  6610  		return true
  6611  
  6612  	case err := <-it.sub.Err():
  6613  		it.done = true
  6614  		it.fail = err
  6615  		return it.Next()
  6616  	}
  6617  }
  6618  
  6619  // Error returns any retrieval or parsing error occurred during filtering.
  6620  func (it *MinterRoleMinterRemovedIterator) Error() error {
  6621  	return it.fail
  6622  }
  6623  
  6624  // Close terminates the iteration process, releasing any pending underlying
  6625  // resources.
  6626  func (it *MinterRoleMinterRemovedIterator) Close() error {
  6627  	it.sub.Unsubscribe()
  6628  	return nil
  6629  }
  6630  
  6631  // MinterRoleMinterRemoved represents a MinterRemoved event raised by the MinterRole contract.
  6632  type MinterRoleMinterRemoved struct {
  6633  	Account common.Address
  6634  	Raw     types.Log // Blockchain specific contextual infos
  6635  }
  6636  
  6637  // FilterMinterRemoved is a free log retrieval operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
  6638  //
  6639  // Solidity: event MinterRemoved(address indexed account)
  6640  func (_MinterRole *MinterRoleFilterer) FilterMinterRemoved(opts *bind.FilterOpts, account []common.Address) (*MinterRoleMinterRemovedIterator, error) {
  6641  
  6642  	var accountRule []interface{}
  6643  	for _, accountItem := range account {
  6644  		accountRule = append(accountRule, accountItem)
  6645  	}
  6646  
  6647  	logs, sub, err := _MinterRole.contract.FilterLogs(opts, "MinterRemoved", accountRule)
  6648  	if err != nil {
  6649  		return nil, err
  6650  	}
  6651  	return &MinterRoleMinterRemovedIterator{contract: _MinterRole.contract, event: "MinterRemoved", logs: logs, sub: sub}, nil
  6652  }
  6653  
  6654  // WatchMinterRemoved is a free log subscription operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
  6655  //
  6656  // Solidity: event MinterRemoved(address indexed account)
  6657  func (_MinterRole *MinterRoleFilterer) WatchMinterRemoved(opts *bind.WatchOpts, sink chan<- *MinterRoleMinterRemoved, account []common.Address) (event.Subscription, error) {
  6658  
  6659  	var accountRule []interface{}
  6660  	for _, accountItem := range account {
  6661  		accountRule = append(accountRule, accountItem)
  6662  	}
  6663  
  6664  	logs, sub, err := _MinterRole.contract.WatchLogs(opts, "MinterRemoved", accountRule)
  6665  	if err != nil {
  6666  		return nil, err
  6667  	}
  6668  	return event.NewSubscription(func(quit <-chan struct{}) error {
  6669  		defer sub.Unsubscribe()
  6670  		for {
  6671  			select {
  6672  			case log := <-logs:
  6673  				// New log arrived, parse the event and forward to the user
  6674  				event := new(MinterRoleMinterRemoved)
  6675  				if err := _MinterRole.contract.UnpackLog(event, "MinterRemoved", log); err != nil {
  6676  					return err
  6677  				}
  6678  				event.Raw = log
  6679  
  6680  				select {
  6681  				case sink <- event:
  6682  				case err := <-sub.Err():
  6683  					return err
  6684  				case <-quit:
  6685  					return nil
  6686  				}
  6687  			case err := <-sub.Err():
  6688  				return err
  6689  			case <-quit:
  6690  				return nil
  6691  			}
  6692  		}
  6693  	}), nil
  6694  }
  6695  
  6696  // ParseMinterRemoved is a log parse operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
  6697  //
  6698  // Solidity: event MinterRemoved(address indexed account)
  6699  func (_MinterRole *MinterRoleFilterer) ParseMinterRemoved(log types.Log) (*MinterRoleMinterRemoved, error) {
  6700  	event := new(MinterRoleMinterRemoved)
  6701  	if err := _MinterRole.contract.UnpackLog(event, "MinterRemoved", log); err != nil {
  6702  		return nil, err
  6703  	}
  6704  	return event, nil
  6705  }
  6706  
  6707  // OwnableABI is the input ABI used to generate the binding from.
  6708  const OwnableABI = "[{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"}]"
  6709  
  6710  // OwnableBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  6711  const OwnableBinRuntime = ``
  6712  
  6713  // OwnableFuncSigs maps the 4-byte function signature to its string representation.
  6714  var OwnableFuncSigs = map[string]string{
  6715  	"8f32d59b": "isOwner()",
  6716  	"8da5cb5b": "owner()",
  6717  	"715018a6": "renounceOwnership()",
  6718  	"f2fde38b": "transferOwnership(address)",
  6719  }
  6720  
  6721  // Ownable is an auto generated Go binding around a Klaytn contract.
  6722  type Ownable struct {
  6723  	OwnableCaller     // Read-only binding to the contract
  6724  	OwnableTransactor // Write-only binding to the contract
  6725  	OwnableFilterer   // Log filterer for contract events
  6726  }
  6727  
  6728  // OwnableCaller is an auto generated read-only Go binding around a Klaytn contract.
  6729  type OwnableCaller struct {
  6730  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6731  }
  6732  
  6733  // OwnableTransactor is an auto generated write-only Go binding around a Klaytn contract.
  6734  type OwnableTransactor struct {
  6735  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6736  }
  6737  
  6738  // OwnableFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
  6739  type OwnableFilterer struct {
  6740  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6741  }
  6742  
  6743  // OwnableSession is an auto generated Go binding around a Klaytn contract,
  6744  // with pre-set call and transact options.
  6745  type OwnableSession struct {
  6746  	Contract     *Ownable          // Generic contract binding to set the session for
  6747  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  6748  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  6749  }
  6750  
  6751  // OwnableCallerSession is an auto generated read-only Go binding around a Klaytn contract,
  6752  // with pre-set call options.
  6753  type OwnableCallerSession struct {
  6754  	Contract *OwnableCaller // Generic contract caller binding to set the session for
  6755  	CallOpts bind.CallOpts  // Call options to use throughout this session
  6756  }
  6757  
  6758  // OwnableTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  6759  // with pre-set transact options.
  6760  type OwnableTransactorSession struct {
  6761  	Contract     *OwnableTransactor // Generic contract transactor binding to set the session for
  6762  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
  6763  }
  6764  
  6765  // OwnableRaw is an auto generated low-level Go binding around a Klaytn contract.
  6766  type OwnableRaw struct {
  6767  	Contract *Ownable // Generic contract binding to access the raw methods on
  6768  }
  6769  
  6770  // OwnableCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  6771  type OwnableCallerRaw struct {
  6772  	Contract *OwnableCaller // Generic read-only contract binding to access the raw methods on
  6773  }
  6774  
  6775  // OwnableTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  6776  type OwnableTransactorRaw struct {
  6777  	Contract *OwnableTransactor // Generic write-only contract binding to access the raw methods on
  6778  }
  6779  
  6780  // NewOwnable creates a new instance of Ownable, bound to a specific deployed contract.
  6781  func NewOwnable(address common.Address, backend bind.ContractBackend) (*Ownable, error) {
  6782  	contract, err := bindOwnable(address, backend, backend, backend)
  6783  	if err != nil {
  6784  		return nil, err
  6785  	}
  6786  	return &Ownable{OwnableCaller: OwnableCaller{contract: contract}, OwnableTransactor: OwnableTransactor{contract: contract}, OwnableFilterer: OwnableFilterer{contract: contract}}, nil
  6787  }
  6788  
  6789  // NewOwnableCaller creates a new read-only instance of Ownable, bound to a specific deployed contract.
  6790  func NewOwnableCaller(address common.Address, caller bind.ContractCaller) (*OwnableCaller, error) {
  6791  	contract, err := bindOwnable(address, caller, nil, nil)
  6792  	if err != nil {
  6793  		return nil, err
  6794  	}
  6795  	return &OwnableCaller{contract: contract}, nil
  6796  }
  6797  
  6798  // NewOwnableTransactor creates a new write-only instance of Ownable, bound to a specific deployed contract.
  6799  func NewOwnableTransactor(address common.Address, transactor bind.ContractTransactor) (*OwnableTransactor, error) {
  6800  	contract, err := bindOwnable(address, nil, transactor, nil)
  6801  	if err != nil {
  6802  		return nil, err
  6803  	}
  6804  	return &OwnableTransactor{contract: contract}, nil
  6805  }
  6806  
  6807  // NewOwnableFilterer creates a new log filterer instance of Ownable, bound to a specific deployed contract.
  6808  func NewOwnableFilterer(address common.Address, filterer bind.ContractFilterer) (*OwnableFilterer, error) {
  6809  	contract, err := bindOwnable(address, nil, nil, filterer)
  6810  	if err != nil {
  6811  		return nil, err
  6812  	}
  6813  	return &OwnableFilterer{contract: contract}, nil
  6814  }
  6815  
  6816  // bindOwnable binds a generic wrapper to an already deployed contract.
  6817  func bindOwnable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  6818  	parsed, err := abi.JSON(strings.NewReader(OwnableABI))
  6819  	if err != nil {
  6820  		return nil, err
  6821  	}
  6822  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  6823  }
  6824  
  6825  // Call invokes the (constant) contract method with params as input values and
  6826  // sets the output to result. The result type might be a single field for simple
  6827  // returns, a slice of interfaces for anonymous returns and a struct for named
  6828  // returns.
  6829  func (_Ownable *OwnableRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  6830  	return _Ownable.Contract.OwnableCaller.contract.Call(opts, result, method, params...)
  6831  }
  6832  
  6833  // Transfer initiates a plain transaction to move funds to the contract, calling
  6834  // its default method if one is available.
  6835  func (_Ownable *OwnableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  6836  	return _Ownable.Contract.OwnableTransactor.contract.Transfer(opts)
  6837  }
  6838  
  6839  // Transact invokes the (paid) contract method with params as input values.
  6840  func (_Ownable *OwnableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  6841  	return _Ownable.Contract.OwnableTransactor.contract.Transact(opts, method, params...)
  6842  }
  6843  
  6844  // Call invokes the (constant) contract method with params as input values and
  6845  // sets the output to result. The result type might be a single field for simple
  6846  // returns, a slice of interfaces for anonymous returns and a struct for named
  6847  // returns.
  6848  func (_Ownable *OwnableCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  6849  	return _Ownable.Contract.contract.Call(opts, result, method, params...)
  6850  }
  6851  
  6852  // Transfer initiates a plain transaction to move funds to the contract, calling
  6853  // its default method if one is available.
  6854  func (_Ownable *OwnableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  6855  	return _Ownable.Contract.contract.Transfer(opts)
  6856  }
  6857  
  6858  // Transact invokes the (paid) contract method with params as input values.
  6859  func (_Ownable *OwnableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  6860  	return _Ownable.Contract.contract.Transact(opts, method, params...)
  6861  }
  6862  
  6863  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  6864  //
  6865  // Solidity: function isOwner() view returns(bool)
  6866  func (_Ownable *OwnableCaller) IsOwner(opts *bind.CallOpts) (bool, error) {
  6867  	var (
  6868  		ret0 = new(bool)
  6869  	)
  6870  	out := ret0
  6871  	err := _Ownable.contract.Call(opts, out, "isOwner")
  6872  	return *ret0, err
  6873  }
  6874  
  6875  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  6876  //
  6877  // Solidity: function isOwner() view returns(bool)
  6878  func (_Ownable *OwnableSession) IsOwner() (bool, error) {
  6879  	return _Ownable.Contract.IsOwner(&_Ownable.CallOpts)
  6880  }
  6881  
  6882  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  6883  //
  6884  // Solidity: function isOwner() view returns(bool)
  6885  func (_Ownable *OwnableCallerSession) IsOwner() (bool, error) {
  6886  	return _Ownable.Contract.IsOwner(&_Ownable.CallOpts)
  6887  }
  6888  
  6889  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  6890  //
  6891  // Solidity: function owner() view returns(address)
  6892  func (_Ownable *OwnableCaller) Owner(opts *bind.CallOpts) (common.Address, error) {
  6893  	var (
  6894  		ret0 = new(common.Address)
  6895  	)
  6896  	out := ret0
  6897  	err := _Ownable.contract.Call(opts, out, "owner")
  6898  	return *ret0, err
  6899  }
  6900  
  6901  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  6902  //
  6903  // Solidity: function owner() view returns(address)
  6904  func (_Ownable *OwnableSession) Owner() (common.Address, error) {
  6905  	return _Ownable.Contract.Owner(&_Ownable.CallOpts)
  6906  }
  6907  
  6908  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  6909  //
  6910  // Solidity: function owner() view returns(address)
  6911  func (_Ownable *OwnableCallerSession) Owner() (common.Address, error) {
  6912  	return _Ownable.Contract.Owner(&_Ownable.CallOpts)
  6913  }
  6914  
  6915  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  6916  //
  6917  // Solidity: function renounceOwnership() returns()
  6918  func (_Ownable *OwnableTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) {
  6919  	return _Ownable.contract.Transact(opts, "renounceOwnership")
  6920  }
  6921  
  6922  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  6923  //
  6924  // Solidity: function renounceOwnership() returns()
  6925  func (_Ownable *OwnableSession) RenounceOwnership() (*types.Transaction, error) {
  6926  	return _Ownable.Contract.RenounceOwnership(&_Ownable.TransactOpts)
  6927  }
  6928  
  6929  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  6930  //
  6931  // Solidity: function renounceOwnership() returns()
  6932  func (_Ownable *OwnableTransactorSession) RenounceOwnership() (*types.Transaction, error) {
  6933  	return _Ownable.Contract.RenounceOwnership(&_Ownable.TransactOpts)
  6934  }
  6935  
  6936  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  6937  //
  6938  // Solidity: function transferOwnership(address newOwner) returns()
  6939  func (_Ownable *OwnableTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) {
  6940  	return _Ownable.contract.Transact(opts, "transferOwnership", newOwner)
  6941  }
  6942  
  6943  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  6944  //
  6945  // Solidity: function transferOwnership(address newOwner) returns()
  6946  func (_Ownable *OwnableSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  6947  	return _Ownable.Contract.TransferOwnership(&_Ownable.TransactOpts, newOwner)
  6948  }
  6949  
  6950  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  6951  //
  6952  // Solidity: function transferOwnership(address newOwner) returns()
  6953  func (_Ownable *OwnableTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  6954  	return _Ownable.Contract.TransferOwnership(&_Ownable.TransactOpts, newOwner)
  6955  }
  6956  
  6957  // OwnableOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the Ownable contract.
  6958  type OwnableOwnershipTransferredIterator struct {
  6959  	Event *OwnableOwnershipTransferred // Event containing the contract specifics and raw log
  6960  
  6961  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  6962  	event    string              // Event name to use for unpacking event data
  6963  
  6964  	logs chan types.Log      // Log channel receiving the found contract events
  6965  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  6966  	done bool                // Whether the subscription completed delivering logs
  6967  	fail error               // Occurred error to stop iteration
  6968  }
  6969  
  6970  // Next advances the iterator to the subsequent event, returning whether there
  6971  // are any more events found. In case of a retrieval or parsing error, false is
  6972  // returned and Error() can be queried for the exact failure.
  6973  func (it *OwnableOwnershipTransferredIterator) Next() bool {
  6974  	// If the iterator failed, stop iterating
  6975  	if it.fail != nil {
  6976  		return false
  6977  	}
  6978  	// If the iterator completed, deliver directly whatever's available
  6979  	if it.done {
  6980  		select {
  6981  		case log := <-it.logs:
  6982  			it.Event = new(OwnableOwnershipTransferred)
  6983  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6984  				it.fail = err
  6985  				return false
  6986  			}
  6987  			it.Event.Raw = log
  6988  			return true
  6989  
  6990  		default:
  6991  			return false
  6992  		}
  6993  	}
  6994  	// Iterator still in progress, wait for either a data or an error event
  6995  	select {
  6996  	case log := <-it.logs:
  6997  		it.Event = new(OwnableOwnershipTransferred)
  6998  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6999  			it.fail = err
  7000  			return false
  7001  		}
  7002  		it.Event.Raw = log
  7003  		return true
  7004  
  7005  	case err := <-it.sub.Err():
  7006  		it.done = true
  7007  		it.fail = err
  7008  		return it.Next()
  7009  	}
  7010  }
  7011  
  7012  // Error returns any retrieval or parsing error occurred during filtering.
  7013  func (it *OwnableOwnershipTransferredIterator) Error() error {
  7014  	return it.fail
  7015  }
  7016  
  7017  // Close terminates the iteration process, releasing any pending underlying
  7018  // resources.
  7019  func (it *OwnableOwnershipTransferredIterator) Close() error {
  7020  	it.sub.Unsubscribe()
  7021  	return nil
  7022  }
  7023  
  7024  // OwnableOwnershipTransferred represents a OwnershipTransferred event raised by the Ownable contract.
  7025  type OwnableOwnershipTransferred struct {
  7026  	PreviousOwner common.Address
  7027  	NewOwner      common.Address
  7028  	Raw           types.Log // Blockchain specific contextual infos
  7029  }
  7030  
  7031  // FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  7032  //
  7033  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  7034  func (_Ownable *OwnableFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*OwnableOwnershipTransferredIterator, error) {
  7035  
  7036  	var previousOwnerRule []interface{}
  7037  	for _, previousOwnerItem := range previousOwner {
  7038  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  7039  	}
  7040  	var newOwnerRule []interface{}
  7041  	for _, newOwnerItem := range newOwner {
  7042  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  7043  	}
  7044  
  7045  	logs, sub, err := _Ownable.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  7046  	if err != nil {
  7047  		return nil, err
  7048  	}
  7049  	return &OwnableOwnershipTransferredIterator{contract: _Ownable.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil
  7050  }
  7051  
  7052  // WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  7053  //
  7054  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  7055  func (_Ownable *OwnableFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *OwnableOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) {
  7056  
  7057  	var previousOwnerRule []interface{}
  7058  	for _, previousOwnerItem := range previousOwner {
  7059  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  7060  	}
  7061  	var newOwnerRule []interface{}
  7062  	for _, newOwnerItem := range newOwner {
  7063  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  7064  	}
  7065  
  7066  	logs, sub, err := _Ownable.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  7067  	if err != nil {
  7068  		return nil, err
  7069  	}
  7070  	return event.NewSubscription(func(quit <-chan struct{}) error {
  7071  		defer sub.Unsubscribe()
  7072  		for {
  7073  			select {
  7074  			case log := <-logs:
  7075  				// New log arrived, parse the event and forward to the user
  7076  				event := new(OwnableOwnershipTransferred)
  7077  				if err := _Ownable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  7078  					return err
  7079  				}
  7080  				event.Raw = log
  7081  
  7082  				select {
  7083  				case sink <- event:
  7084  				case err := <-sub.Err():
  7085  					return err
  7086  				case <-quit:
  7087  					return nil
  7088  				}
  7089  			case err := <-sub.Err():
  7090  				return err
  7091  			case <-quit:
  7092  				return nil
  7093  			}
  7094  		}
  7095  	}), nil
  7096  }
  7097  
  7098  // ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  7099  //
  7100  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  7101  func (_Ownable *OwnableFilterer) ParseOwnershipTransferred(log types.Log) (*OwnableOwnershipTransferred, error) {
  7102  	event := new(OwnableOwnershipTransferred)
  7103  	if err := _Ownable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  7104  		return nil, err
  7105  	}
  7106  	return event, nil
  7107  }
  7108  
  7109  // RolesABI is the input ABI used to generate the binding from.
  7110  const RolesABI = "[]"
  7111  
  7112  // RolesBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  7113  const RolesBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a7230582026429ed555f83236ac076363d644804ff5b0baa4e098f1d4ef783a49049f7df70029`
  7114  
  7115  // RolesBin is the compiled bytecode used for deploying new contracts.
  7116  var RolesBin = "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a7230582026429ed555f83236ac076363d644804ff5b0baa4e098f1d4ef783a49049f7df70029"
  7117  
  7118  // DeployRoles deploys a new Klaytn contract, binding an instance of Roles to it.
  7119  func DeployRoles(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Roles, error) {
  7120  	parsed, err := abi.JSON(strings.NewReader(RolesABI))
  7121  	if err != nil {
  7122  		return common.Address{}, nil, nil, err
  7123  	}
  7124  
  7125  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(RolesBin), backend)
  7126  	if err != nil {
  7127  		return common.Address{}, nil, nil, err
  7128  	}
  7129  	return address, tx, &Roles{RolesCaller: RolesCaller{contract: contract}, RolesTransactor: RolesTransactor{contract: contract}, RolesFilterer: RolesFilterer{contract: contract}}, nil
  7130  }
  7131  
  7132  // Roles is an auto generated Go binding around a Klaytn contract.
  7133  type Roles struct {
  7134  	RolesCaller     // Read-only binding to the contract
  7135  	RolesTransactor // Write-only binding to the contract
  7136  	RolesFilterer   // Log filterer for contract events
  7137  }
  7138  
  7139  // RolesCaller is an auto generated read-only Go binding around a Klaytn contract.
  7140  type RolesCaller struct {
  7141  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7142  }
  7143  
  7144  // RolesTransactor is an auto generated write-only Go binding around a Klaytn contract.
  7145  type RolesTransactor struct {
  7146  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7147  }
  7148  
  7149  // RolesFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
  7150  type RolesFilterer struct {
  7151  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7152  }
  7153  
  7154  // RolesSession is an auto generated Go binding around a Klaytn contract,
  7155  // with pre-set call and transact options.
  7156  type RolesSession struct {
  7157  	Contract     *Roles            // Generic contract binding to set the session for
  7158  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  7159  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  7160  }
  7161  
  7162  // RolesCallerSession is an auto generated read-only Go binding around a Klaytn contract,
  7163  // with pre-set call options.
  7164  type RolesCallerSession struct {
  7165  	Contract *RolesCaller  // Generic contract caller binding to set the session for
  7166  	CallOpts bind.CallOpts // Call options to use throughout this session
  7167  }
  7168  
  7169  // RolesTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  7170  // with pre-set transact options.
  7171  type RolesTransactorSession struct {
  7172  	Contract     *RolesTransactor  // Generic contract transactor binding to set the session for
  7173  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  7174  }
  7175  
  7176  // RolesRaw is an auto generated low-level Go binding around a Klaytn contract.
  7177  type RolesRaw struct {
  7178  	Contract *Roles // Generic contract binding to access the raw methods on
  7179  }
  7180  
  7181  // RolesCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  7182  type RolesCallerRaw struct {
  7183  	Contract *RolesCaller // Generic read-only contract binding to access the raw methods on
  7184  }
  7185  
  7186  // RolesTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  7187  type RolesTransactorRaw struct {
  7188  	Contract *RolesTransactor // Generic write-only contract binding to access the raw methods on
  7189  }
  7190  
  7191  // NewRoles creates a new instance of Roles, bound to a specific deployed contract.
  7192  func NewRoles(address common.Address, backend bind.ContractBackend) (*Roles, error) {
  7193  	contract, err := bindRoles(address, backend, backend, backend)
  7194  	if err != nil {
  7195  		return nil, err
  7196  	}
  7197  	return &Roles{RolesCaller: RolesCaller{contract: contract}, RolesTransactor: RolesTransactor{contract: contract}, RolesFilterer: RolesFilterer{contract: contract}}, nil
  7198  }
  7199  
  7200  // NewRolesCaller creates a new read-only instance of Roles, bound to a specific deployed contract.
  7201  func NewRolesCaller(address common.Address, caller bind.ContractCaller) (*RolesCaller, error) {
  7202  	contract, err := bindRoles(address, caller, nil, nil)
  7203  	if err != nil {
  7204  		return nil, err
  7205  	}
  7206  	return &RolesCaller{contract: contract}, nil
  7207  }
  7208  
  7209  // NewRolesTransactor creates a new write-only instance of Roles, bound to a specific deployed contract.
  7210  func NewRolesTransactor(address common.Address, transactor bind.ContractTransactor) (*RolesTransactor, error) {
  7211  	contract, err := bindRoles(address, nil, transactor, nil)
  7212  	if err != nil {
  7213  		return nil, err
  7214  	}
  7215  	return &RolesTransactor{contract: contract}, nil
  7216  }
  7217  
  7218  // NewRolesFilterer creates a new log filterer instance of Roles, bound to a specific deployed contract.
  7219  func NewRolesFilterer(address common.Address, filterer bind.ContractFilterer) (*RolesFilterer, error) {
  7220  	contract, err := bindRoles(address, nil, nil, filterer)
  7221  	if err != nil {
  7222  		return nil, err
  7223  	}
  7224  	return &RolesFilterer{contract: contract}, nil
  7225  }
  7226  
  7227  // bindRoles binds a generic wrapper to an already deployed contract.
  7228  func bindRoles(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  7229  	parsed, err := abi.JSON(strings.NewReader(RolesABI))
  7230  	if err != nil {
  7231  		return nil, err
  7232  	}
  7233  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  7234  }
  7235  
  7236  // Call invokes the (constant) contract method with params as input values and
  7237  // sets the output to result. The result type might be a single field for simple
  7238  // returns, a slice of interfaces for anonymous returns and a struct for named
  7239  // returns.
  7240  func (_Roles *RolesRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  7241  	return _Roles.Contract.RolesCaller.contract.Call(opts, result, method, params...)
  7242  }
  7243  
  7244  // Transfer initiates a plain transaction to move funds to the contract, calling
  7245  // its default method if one is available.
  7246  func (_Roles *RolesRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  7247  	return _Roles.Contract.RolesTransactor.contract.Transfer(opts)
  7248  }
  7249  
  7250  // Transact invokes the (paid) contract method with params as input values.
  7251  func (_Roles *RolesRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  7252  	return _Roles.Contract.RolesTransactor.contract.Transact(opts, method, params...)
  7253  }
  7254  
  7255  // Call invokes the (constant) contract method with params as input values and
  7256  // sets the output to result. The result type might be a single field for simple
  7257  // returns, a slice of interfaces for anonymous returns and a struct for named
  7258  // returns.
  7259  func (_Roles *RolesCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  7260  	return _Roles.Contract.contract.Call(opts, result, method, params...)
  7261  }
  7262  
  7263  // Transfer initiates a plain transaction to move funds to the contract, calling
  7264  // its default method if one is available.
  7265  func (_Roles *RolesTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  7266  	return _Roles.Contract.contract.Transfer(opts)
  7267  }
  7268  
  7269  // Transact invokes the (paid) contract method with params as input values.
  7270  func (_Roles *RolesTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  7271  	return _Roles.Contract.contract.Transact(opts, method, params...)
  7272  }
  7273  
  7274  // SafeMathABI is the input ABI used to generate the binding from.
  7275  const SafeMathABI = "[]"
  7276  
  7277  // SafeMathBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  7278  const SafeMathBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058201aa360e6241ae1bc829140fb38ae5ca1672181b2a5c529c4ca3a045ed2896feb0029`
  7279  
  7280  // SafeMathBin is the compiled bytecode used for deploying new contracts.
  7281  var SafeMathBin = "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058201aa360e6241ae1bc829140fb38ae5ca1672181b2a5c529c4ca3a045ed2896feb0029"
  7282  
  7283  // DeploySafeMath deploys a new Klaytn contract, binding an instance of SafeMath to it.
  7284  func DeploySafeMath(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *SafeMath, error) {
  7285  	parsed, err := abi.JSON(strings.NewReader(SafeMathABI))
  7286  	if err != nil {
  7287  		return common.Address{}, nil, nil, err
  7288  	}
  7289  
  7290  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(SafeMathBin), backend)
  7291  	if err != nil {
  7292  		return common.Address{}, nil, nil, err
  7293  	}
  7294  	return address, tx, &SafeMath{SafeMathCaller: SafeMathCaller{contract: contract}, SafeMathTransactor: SafeMathTransactor{contract: contract}, SafeMathFilterer: SafeMathFilterer{contract: contract}}, nil
  7295  }
  7296  
  7297  // SafeMath is an auto generated Go binding around a Klaytn contract.
  7298  type SafeMath struct {
  7299  	SafeMathCaller     // Read-only binding to the contract
  7300  	SafeMathTransactor // Write-only binding to the contract
  7301  	SafeMathFilterer   // Log filterer for contract events
  7302  }
  7303  
  7304  // SafeMathCaller is an auto generated read-only Go binding around a Klaytn contract.
  7305  type SafeMathCaller struct {
  7306  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7307  }
  7308  
  7309  // SafeMathTransactor is an auto generated write-only Go binding around a Klaytn contract.
  7310  type SafeMathTransactor struct {
  7311  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7312  }
  7313  
  7314  // SafeMathFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
  7315  type SafeMathFilterer struct {
  7316  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7317  }
  7318  
  7319  // SafeMathSession is an auto generated Go binding around a Klaytn contract,
  7320  // with pre-set call and transact options.
  7321  type SafeMathSession struct {
  7322  	Contract     *SafeMath         // Generic contract binding to set the session for
  7323  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  7324  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  7325  }
  7326  
  7327  // SafeMathCallerSession is an auto generated read-only Go binding around a Klaytn contract,
  7328  // with pre-set call options.
  7329  type SafeMathCallerSession struct {
  7330  	Contract *SafeMathCaller // Generic contract caller binding to set the session for
  7331  	CallOpts bind.CallOpts   // Call options to use throughout this session
  7332  }
  7333  
  7334  // SafeMathTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  7335  // with pre-set transact options.
  7336  type SafeMathTransactorSession struct {
  7337  	Contract     *SafeMathTransactor // Generic contract transactor binding to set the session for
  7338  	TransactOpts bind.TransactOpts   // Transaction auth options to use throughout this session
  7339  }
  7340  
  7341  // SafeMathRaw is an auto generated low-level Go binding around a Klaytn contract.
  7342  type SafeMathRaw struct {
  7343  	Contract *SafeMath // Generic contract binding to access the raw methods on
  7344  }
  7345  
  7346  // SafeMathCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  7347  type SafeMathCallerRaw struct {
  7348  	Contract *SafeMathCaller // Generic read-only contract binding to access the raw methods on
  7349  }
  7350  
  7351  // SafeMathTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  7352  type SafeMathTransactorRaw struct {
  7353  	Contract *SafeMathTransactor // Generic write-only contract binding to access the raw methods on
  7354  }
  7355  
  7356  // NewSafeMath creates a new instance of SafeMath, bound to a specific deployed contract.
  7357  func NewSafeMath(address common.Address, backend bind.ContractBackend) (*SafeMath, error) {
  7358  	contract, err := bindSafeMath(address, backend, backend, backend)
  7359  	if err != nil {
  7360  		return nil, err
  7361  	}
  7362  	return &SafeMath{SafeMathCaller: SafeMathCaller{contract: contract}, SafeMathTransactor: SafeMathTransactor{contract: contract}, SafeMathFilterer: SafeMathFilterer{contract: contract}}, nil
  7363  }
  7364  
  7365  // NewSafeMathCaller creates a new read-only instance of SafeMath, bound to a specific deployed contract.
  7366  func NewSafeMathCaller(address common.Address, caller bind.ContractCaller) (*SafeMathCaller, error) {
  7367  	contract, err := bindSafeMath(address, caller, nil, nil)
  7368  	if err != nil {
  7369  		return nil, err
  7370  	}
  7371  	return &SafeMathCaller{contract: contract}, nil
  7372  }
  7373  
  7374  // NewSafeMathTransactor creates a new write-only instance of SafeMath, bound to a specific deployed contract.
  7375  func NewSafeMathTransactor(address common.Address, transactor bind.ContractTransactor) (*SafeMathTransactor, error) {
  7376  	contract, err := bindSafeMath(address, nil, transactor, nil)
  7377  	if err != nil {
  7378  		return nil, err
  7379  	}
  7380  	return &SafeMathTransactor{contract: contract}, nil
  7381  }
  7382  
  7383  // NewSafeMathFilterer creates a new log filterer instance of SafeMath, bound to a specific deployed contract.
  7384  func NewSafeMathFilterer(address common.Address, filterer bind.ContractFilterer) (*SafeMathFilterer, error) {
  7385  	contract, err := bindSafeMath(address, nil, nil, filterer)
  7386  	if err != nil {
  7387  		return nil, err
  7388  	}
  7389  	return &SafeMathFilterer{contract: contract}, nil
  7390  }
  7391  
  7392  // bindSafeMath binds a generic wrapper to an already deployed contract.
  7393  func bindSafeMath(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  7394  	parsed, err := abi.JSON(strings.NewReader(SafeMathABI))
  7395  	if err != nil {
  7396  		return nil, err
  7397  	}
  7398  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  7399  }
  7400  
  7401  // Call invokes the (constant) contract method with params as input values and
  7402  // sets the output to result. The result type might be a single field for simple
  7403  // returns, a slice of interfaces for anonymous returns and a struct for named
  7404  // returns.
  7405  func (_SafeMath *SafeMathRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  7406  	return _SafeMath.Contract.SafeMathCaller.contract.Call(opts, result, method, params...)
  7407  }
  7408  
  7409  // Transfer initiates a plain transaction to move funds to the contract, calling
  7410  // its default method if one is available.
  7411  func (_SafeMath *SafeMathRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  7412  	return _SafeMath.Contract.SafeMathTransactor.contract.Transfer(opts)
  7413  }
  7414  
  7415  // Transact invokes the (paid) contract method with params as input values.
  7416  func (_SafeMath *SafeMathRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  7417  	return _SafeMath.Contract.SafeMathTransactor.contract.Transact(opts, method, params...)
  7418  }
  7419  
  7420  // Call invokes the (constant) contract method with params as input values and
  7421  // sets the output to result. The result type might be a single field for simple
  7422  // returns, a slice of interfaces for anonymous returns and a struct for named
  7423  // returns.
  7424  func (_SafeMath *SafeMathCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  7425  	return _SafeMath.Contract.contract.Call(opts, result, method, params...)
  7426  }
  7427  
  7428  // Transfer initiates a plain transaction to move funds to the contract, calling
  7429  // its default method if one is available.
  7430  func (_SafeMath *SafeMathTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  7431  	return _SafeMath.Contract.contract.Transfer(opts)
  7432  }
  7433  
  7434  // Transact invokes the (paid) contract method with params as input values.
  7435  func (_SafeMath *SafeMathTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  7436  	return _SafeMath.Contract.contract.Transact(opts, method, params...)
  7437  }
  7438  
  7439  // ServiceChainNFTNoURIABI is the input ABI used to generate the binding from.
  7440  const ServiceChainNFTNoURIABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_uid\",\"type\":\"uint256\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"requestValueTransfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_user\",\"type\":\"address\"},{\"name\":\"_startID\",\"type\":\"uint256\"},{\"name\":\"_endID\",\"type\":\"uint256\"}],\"name\":\"registerBulk\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_bridge\",\"type\":\"address\"}],\"name\":\"setBridge\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isMinter\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"bridge\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_bridge\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"}]"
  7441  
  7442  // ServiceChainNFTNoURIBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  7443  const ServiceChainNFTNoURIBinRuntime = `608060405234801561001057600080fd5b506004361061014d5760003560e01c80637a9adac6116100c3578063a22cb4651161007c578063a22cb46514610421578063aa271e1a1461044f578063b88d4fde14610475578063e78cea921461053b578063e985e9c514610543578063f2fde38b146105715761014d565b80637a9adac61461038b5780638da5cb5b146103bd5780638dd14802146103c55780638f32d59b146103eb578063983b2d56146103f357806398650275146104195761014d565b806340c10f191161011557806340c10f19146102af57806342842e0e146102db57806342966c68146103115780636352211e1461032e57806370a082311461034b578063715018a6146103835761014d565b806301ffc9a714610152578063081812fc1461018d578063095ea7b3146101c657806323b872dd146101f45780633f4c4e3d1461022a575b600080fd5b6101796004803603602081101561016857600080fd5b50356001600160e01b031916610597565b604080519115158252519081900360200190f35b6101aa600480360360208110156101a357600080fd5b50356105b6565b604080516001600160a01b039092168252519081900360200190f35b6101f2600480360360408110156101dc57600080fd5b506001600160a01b03813516906020013561061b565b005b6101f26004803603606081101561020a57600080fd5b506001600160a01b03813581169160208101359091169060400135610732565b6101f26004803603606081101561024057600080fd5b8135916001600160a01b036020820135169181019060608101604082013564010000000081111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460018302840111640100000000831117156102a457600080fd5b50909250905061078a565b610179600480360360408110156102c557600080fd5b506001600160a01b038135169060200135610857565b6101f2600480360360608110156102f157600080fd5b506001600160a01b038135811691602081013590911690604001356108b3565b6101f26004803603602081101561032757600080fd5b50356108ce565b6101aa6004803603602081101561034457600080fd5b5035610922565b6103716004803603602081101561036157600080fd5b50356001600160a01b031661097f565b60408051918252519081900360200190f35b6101f26109ea565b6101f2600480360360608110156103a157600080fd5b506001600160a01b038135169060208101359060400135610a7e565b6101aa610aeb565b6101f2600480360360208110156103db57600080fd5b50356001600160a01b0316610afa565b610179610bcc565b6101f26004803603602081101561040957600080fd5b50356001600160a01b0316610bdd565b6101f2610c2d565b6101f26004803603604081101561043757600080fd5b506001600160a01b0381351690602001351515610c38565b6101796004803603602081101561046557600080fd5b50356001600160a01b0316610d07565b6101f26004803603608081101561048b57600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156104c657600080fd5b8201836020820111156104d857600080fd5b803590602001918460018302840111640100000000831117156104fa57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610d1a945050505050565b6101aa610d6f565b6101796004803603604081101561055957600080fd5b506001600160a01b0381358116916020013516610d7e565b6101f26004803603602081101561058757600080fd5b50356001600160a01b0316610dac565b6001600160e01b03191660009081526020819052604090205460ff1690565b60006105c182610dff565b6105ff57604051600160e51b62461bcd02815260040180806020018281038252602c81526020018061183f602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b600061062682610922565b9050806001600160a01b0316836001600160a01b0316141561067c57604051600160e51b62461bcd0281526004018080602001828103825260218152602001806118d66021913960400191505060405180910390fd5b336001600160a01b038216148061069857506106988133610d7e565b6106d657604051600160e51b62461bcd0281526004018080602001828103825260388152602001806117636038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b61073c3382610e1c565b61077a57604051600160e51b62461bcd0281526004018080602001828103825260318152602001806118f76031913960400191505060405180910390fd5b610785838383610ec3565b505050565b6007546107a29033906001600160a01b031686610732565b600754604051600160e41b630cf0da290281523360048201818152602483018890526001600160a01b0387811660448501526080606485019081526084850187905294169363cf0da290938992899289928992919060a401848480828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561083957600080fd5b505af115801561084d573d6000803e3d6000fd5b5050505050505050565b600061086233610d07565b6108a057604051600160e51b62461bcd0281526004018080602001828103825260308152602001806117ee6030913960400191505060405180910390fd5b6108aa838361100d565b50600192915050565b61078583838360405180602001604052806000815250610d1a565b6108d83382610e1c565b61091657604051600160e51b62461bcd02815260040180806020018281038252603081526020018061194d6030913960400191505060405180910390fd5b61091f81611144565b50565b6000818152600160205260408120546001600160a01b03168061097957604051600160e51b62461bcd0281526004018080602001828103825260298152602001806117c56029913960400191505060405180910390fd5b92915050565b60006001600160a01b0382166109c957604051600160e51b62461bcd02815260040180806020018281038252602a81526020018061179b602a913960400191505060405180910390fd5b6001600160a01b038216600090815260036020526040902061097990611156565b6109f2610bcc565b610a345760408051600160e51b62461bcd028152602060048201819052602482015260008051602061186b833981519152604482015290519081900360640190fd5b6006546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600680546001600160a01b0319169055565b610a86610bcc565b610ac85760408051600160e51b62461bcd028152602060048201819052602482015260008051602061186b833981519152604482015290519081900360640190fd5b815b81811015610ae557610adc8482610857565b50600101610aca565b50505050565b6006546001600160a01b031690565b610b02610bcc565b610b445760408051600160e51b62461bcd028152602060048201819052602482015260008051602061186b833981519152604482015290519081900360640190fd5b610b56816001600160a01b031661115a565b610baa5760408051600160e51b62461bcd02815260206004820152601860248201527f627269646765206973206e6f74206120636f6e74726163740000000000000000604482015290519081900360640190fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b0316331490565b610be633610d07565b610c2457604051600160e51b62461bcd0281526004018080602001828103825260308152602001806117ee6030913960400191505060405180910390fd5b61091f81611160565b610c36336111a8565b565b6001600160a01b038216331415610c995760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b600061097960058363ffffffff6111f016565b610d25848484610732565b610d318484848461125a565b610ae557604051600160e51b62461bcd0281526004018080602001828103825260328152602001806116bb6032913960400191505060405180910390fd5b6007546001600160a01b031681565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b610db4610bcc565b610df65760408051600160e51b62461bcd028152602060048201819052602482015260008051602061186b833981519152604482015290519081900360640190fd5b61091f81611393565b6000908152600160205260409020546001600160a01b0316151590565b6000610e2782610dff565b610e6557604051600160e51b62461bcd02815260040180806020018281038252602c815260200180611737602c913960400191505060405180910390fd5b6000610e7083610922565b9050806001600160a01b0316846001600160a01b03161480610eab5750836001600160a01b0316610ea0846105b6565b6001600160a01b0316145b80610ebb5750610ebb8185610d7e565b949350505050565b826001600160a01b0316610ed682610922565b6001600160a01b031614610f1e57604051600160e51b62461bcd0281526004018080602001828103825260298152602001806118ad6029913960400191505060405180910390fd5b6001600160a01b038216610f6657604051600160e51b62461bcd0281526004018080602001828103825260248152602001806117136024913960400191505060405180910390fd5b610f6f81611437565b6001600160a01b0383166000908152600360205260409020610f9090611472565b6001600160a01b0382166000908152600360205260409020610fb190611489565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b03821661106b5760408051600160e51b62461bcd02815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b61107481610dff565b156110c95760408051600160e51b62461bcd02815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015290519081900360640190fd5b600081815260016020908152604080832080546001600160a01b0319166001600160a01b03871690811790915583526003909152902061110890611489565b60405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b61091f61115082610922565b82611492565b5490565b3b151590565b61117160058263ffffffff61156c16565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6111b960058263ffffffff6115f016565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b03821661123a57604051600160e51b62461bcd02815260040180806020018281038252602281526020018061188b6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b600061126e846001600160a01b031661115a565b61127a57506001610ebb565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b838110156112f75781810151838201526020016112df565b50505050905090810190601f1680156113245780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561134657600080fd5b505af115801561135a573d6000803e3d6000fd5b505050506040513d602081101561137057600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6001600160a01b0381166113db57604051600160e51b62461bcd0281526004018080602001828103825260268152602001806116ed6026913960400191505060405180910390fd5b6006546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b6000818152600260205260409020546001600160a01b03161561091f57600090815260026020526040902080546001600160a01b0319169055565b805461148590600163ffffffff61165a16565b9055565b80546001019055565b816001600160a01b03166114a582610922565b6001600160a01b0316146114ed57604051600160e51b62461bcd0281526004018080602001828103825260258152602001806119286025913960400191505060405180910390fd5b6114f681611437565b6001600160a01b038216600090815260036020526040902061151790611472565b60008181526001602052604080822080546001600160a01b0319169055518291906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b61157682826111f0565b156115cb5760408051600160e51b62461bcd02815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b6115fa82826111f0565b61163857604051600160e51b62461bcd02815260040180806020018281038252602181526020018061181e6021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b6000828211156116b45760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c654552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572526f6c65733a206163636f756e7420697320746865207a65726f20616464726573734552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665644552433732313a206275726e206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a72305820a5f3ec0ec1c34b54821789aed004f766f6f7c6990f063cda51c4cf499bff03b60029`
  7444  
  7445  // ServiceChainNFTNoURIFuncSigs maps the 4-byte function signature to its string representation.
  7446  var ServiceChainNFTNoURIFuncSigs = map[string]string{
  7447  	"983b2d56": "addMinter(address)",
  7448  	"095ea7b3": "approve(address,uint256)",
  7449  	"70a08231": "balanceOf(address)",
  7450  	"e78cea92": "bridge()",
  7451  	"42966c68": "burn(uint256)",
  7452  	"081812fc": "getApproved(uint256)",
  7453  	"e985e9c5": "isApprovedForAll(address,address)",
  7454  	"aa271e1a": "isMinter(address)",
  7455  	"8f32d59b": "isOwner()",
  7456  	"40c10f19": "mint(address,uint256)",
  7457  	"8da5cb5b": "owner()",
  7458  	"6352211e": "ownerOf(uint256)",
  7459  	"7a9adac6": "registerBulk(address,uint256,uint256)",
  7460  	"98650275": "renounceMinter()",
  7461  	"715018a6": "renounceOwnership()",
  7462  	"3f4c4e3d": "requestValueTransfer(uint256,address,bytes)",
  7463  	"42842e0e": "safeTransferFrom(address,address,uint256)",
  7464  	"b88d4fde": "safeTransferFrom(address,address,uint256,bytes)",
  7465  	"a22cb465": "setApprovalForAll(address,bool)",
  7466  	"8dd14802": "setBridge(address)",
  7467  	"01ffc9a7": "supportsInterface(bytes4)",
  7468  	"23b872dd": "transferFrom(address,address,uint256)",
  7469  	"f2fde38b": "transferOwnership(address)",
  7470  }
  7471  
  7472  // ServiceChainNFTNoURIBin is the compiled bytecode used for deploying new contracts.
  7473  var ServiceChainNFTNoURIBin = "0x60806040523480156200001157600080fd5b5060405160208062001e58833981018060405260208110156200003357600080fd5b505180620000687f01ffc9a700000000000000000000000000000000000000000000000000000000620000f6602090811b901c565b620000806380ac58cd60e01b620000f660201b60201c565b6200009133620001c560201b60201c565b600680546001600160a01b0319163317908190556040516001600160a01b0391909116906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3620000ee816200021760201b60201c565b50506200047e565b7fffffffff0000000000000000000000000000000000000000000000000000000080821614156200018857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b620001e08160056200034060201b6200156c1790919060201c565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b62000227620003e460201b60201c565b6200029357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b620002b2816001600160a01b0316620003f560201b6200115a1760201c565b6200031e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f627269646765206973206e6f74206120636f6e74726163740000000000000000604482015290519081900360640190fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b620003528282620003fb60201b60201c565b15620003bf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b6006546001600160a01b0316331490565b3b151590565b60006001600160a01b0382166200045e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018062001e366022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6119a8806200048e6000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80637a9adac6116100c3578063a22cb4651161007c578063a22cb46514610421578063aa271e1a1461044f578063b88d4fde14610475578063e78cea921461053b578063e985e9c514610543578063f2fde38b146105715761014d565b80637a9adac61461038b5780638da5cb5b146103bd5780638dd14802146103c55780638f32d59b146103eb578063983b2d56146103f357806398650275146104195761014d565b806340c10f191161011557806340c10f19146102af57806342842e0e146102db57806342966c68146103115780636352211e1461032e57806370a082311461034b578063715018a6146103835761014d565b806301ffc9a714610152578063081812fc1461018d578063095ea7b3146101c657806323b872dd146101f45780633f4c4e3d1461022a575b600080fd5b6101796004803603602081101561016857600080fd5b50356001600160e01b031916610597565b604080519115158252519081900360200190f35b6101aa600480360360208110156101a357600080fd5b50356105b6565b604080516001600160a01b039092168252519081900360200190f35b6101f2600480360360408110156101dc57600080fd5b506001600160a01b03813516906020013561061b565b005b6101f26004803603606081101561020a57600080fd5b506001600160a01b03813581169160208101359091169060400135610732565b6101f26004803603606081101561024057600080fd5b8135916001600160a01b036020820135169181019060608101604082013564010000000081111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460018302840111640100000000831117156102a457600080fd5b50909250905061078a565b610179600480360360408110156102c557600080fd5b506001600160a01b038135169060200135610857565b6101f2600480360360608110156102f157600080fd5b506001600160a01b038135811691602081013590911690604001356108b3565b6101f26004803603602081101561032757600080fd5b50356108ce565b6101aa6004803603602081101561034457600080fd5b5035610922565b6103716004803603602081101561036157600080fd5b50356001600160a01b031661097f565b60408051918252519081900360200190f35b6101f26109ea565b6101f2600480360360608110156103a157600080fd5b506001600160a01b038135169060208101359060400135610a7e565b6101aa610aeb565b6101f2600480360360208110156103db57600080fd5b50356001600160a01b0316610afa565b610179610bcc565b6101f26004803603602081101561040957600080fd5b50356001600160a01b0316610bdd565b6101f2610c2d565b6101f26004803603604081101561043757600080fd5b506001600160a01b0381351690602001351515610c38565b6101796004803603602081101561046557600080fd5b50356001600160a01b0316610d07565b6101f26004803603608081101561048b57600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156104c657600080fd5b8201836020820111156104d857600080fd5b803590602001918460018302840111640100000000831117156104fa57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610d1a945050505050565b6101aa610d6f565b6101796004803603604081101561055957600080fd5b506001600160a01b0381358116916020013516610d7e565b6101f26004803603602081101561058757600080fd5b50356001600160a01b0316610dac565b6001600160e01b03191660009081526020819052604090205460ff1690565b60006105c182610dff565b6105ff57604051600160e51b62461bcd02815260040180806020018281038252602c81526020018061183f602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b600061062682610922565b9050806001600160a01b0316836001600160a01b0316141561067c57604051600160e51b62461bcd0281526004018080602001828103825260218152602001806118d66021913960400191505060405180910390fd5b336001600160a01b038216148061069857506106988133610d7e565b6106d657604051600160e51b62461bcd0281526004018080602001828103825260388152602001806117636038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b61073c3382610e1c565b61077a57604051600160e51b62461bcd0281526004018080602001828103825260318152602001806118f76031913960400191505060405180910390fd5b610785838383610ec3565b505050565b6007546107a29033906001600160a01b031686610732565b600754604051600160e41b630cf0da290281523360048201818152602483018890526001600160a01b0387811660448501526080606485019081526084850187905294169363cf0da290938992899289928992919060a401848480828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561083957600080fd5b505af115801561084d573d6000803e3d6000fd5b5050505050505050565b600061086233610d07565b6108a057604051600160e51b62461bcd0281526004018080602001828103825260308152602001806117ee6030913960400191505060405180910390fd5b6108aa838361100d565b50600192915050565b61078583838360405180602001604052806000815250610d1a565b6108d83382610e1c565b61091657604051600160e51b62461bcd02815260040180806020018281038252603081526020018061194d6030913960400191505060405180910390fd5b61091f81611144565b50565b6000818152600160205260408120546001600160a01b03168061097957604051600160e51b62461bcd0281526004018080602001828103825260298152602001806117c56029913960400191505060405180910390fd5b92915050565b60006001600160a01b0382166109c957604051600160e51b62461bcd02815260040180806020018281038252602a81526020018061179b602a913960400191505060405180910390fd5b6001600160a01b038216600090815260036020526040902061097990611156565b6109f2610bcc565b610a345760408051600160e51b62461bcd028152602060048201819052602482015260008051602061186b833981519152604482015290519081900360640190fd5b6006546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600680546001600160a01b0319169055565b610a86610bcc565b610ac85760408051600160e51b62461bcd028152602060048201819052602482015260008051602061186b833981519152604482015290519081900360640190fd5b815b81811015610ae557610adc8482610857565b50600101610aca565b50505050565b6006546001600160a01b031690565b610b02610bcc565b610b445760408051600160e51b62461bcd028152602060048201819052602482015260008051602061186b833981519152604482015290519081900360640190fd5b610b56816001600160a01b031661115a565b610baa5760408051600160e51b62461bcd02815260206004820152601860248201527f627269646765206973206e6f74206120636f6e74726163740000000000000000604482015290519081900360640190fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b0316331490565b610be633610d07565b610c2457604051600160e51b62461bcd0281526004018080602001828103825260308152602001806117ee6030913960400191505060405180910390fd5b61091f81611160565b610c36336111a8565b565b6001600160a01b038216331415610c995760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b600061097960058363ffffffff6111f016565b610d25848484610732565b610d318484848461125a565b610ae557604051600160e51b62461bcd0281526004018080602001828103825260328152602001806116bb6032913960400191505060405180910390fd5b6007546001600160a01b031681565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b610db4610bcc565b610df65760408051600160e51b62461bcd028152602060048201819052602482015260008051602061186b833981519152604482015290519081900360640190fd5b61091f81611393565b6000908152600160205260409020546001600160a01b0316151590565b6000610e2782610dff565b610e6557604051600160e51b62461bcd02815260040180806020018281038252602c815260200180611737602c913960400191505060405180910390fd5b6000610e7083610922565b9050806001600160a01b0316846001600160a01b03161480610eab5750836001600160a01b0316610ea0846105b6565b6001600160a01b0316145b80610ebb5750610ebb8185610d7e565b949350505050565b826001600160a01b0316610ed682610922565b6001600160a01b031614610f1e57604051600160e51b62461bcd0281526004018080602001828103825260298152602001806118ad6029913960400191505060405180910390fd5b6001600160a01b038216610f6657604051600160e51b62461bcd0281526004018080602001828103825260248152602001806117136024913960400191505060405180910390fd5b610f6f81611437565b6001600160a01b0383166000908152600360205260409020610f9090611472565b6001600160a01b0382166000908152600360205260409020610fb190611489565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b03821661106b5760408051600160e51b62461bcd02815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b61107481610dff565b156110c95760408051600160e51b62461bcd02815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015290519081900360640190fd5b600081815260016020908152604080832080546001600160a01b0319166001600160a01b03871690811790915583526003909152902061110890611489565b60405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b61091f61115082610922565b82611492565b5490565b3b151590565b61117160058263ffffffff61156c16565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6111b960058263ffffffff6115f016565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b03821661123a57604051600160e51b62461bcd02815260040180806020018281038252602281526020018061188b6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b600061126e846001600160a01b031661115a565b61127a57506001610ebb565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b838110156112f75781810151838201526020016112df565b50505050905090810190601f1680156113245780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561134657600080fd5b505af115801561135a573d6000803e3d6000fd5b505050506040513d602081101561137057600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6001600160a01b0381166113db57604051600160e51b62461bcd0281526004018080602001828103825260268152602001806116ed6026913960400191505060405180910390fd5b6006546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b6000818152600260205260409020546001600160a01b03161561091f57600090815260026020526040902080546001600160a01b0319169055565b805461148590600163ffffffff61165a16565b9055565b80546001019055565b816001600160a01b03166114a582610922565b6001600160a01b0316146114ed57604051600160e51b62461bcd0281526004018080602001828103825260258152602001806119286025913960400191505060405180910390fd5b6114f681611437565b6001600160a01b038216600090815260036020526040902061151790611472565b60008181526001602052604080822080546001600160a01b0319169055518291906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b61157682826111f0565b156115cb5760408051600160e51b62461bcd02815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b6115fa82826111f0565b61163857604051600160e51b62461bcd02815260040180806020018281038252602181526020018061181e6021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b6000828211156116b45760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c654552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572526f6c65733a206163636f756e7420697320746865207a65726f20616464726573734552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665644552433732313a206275726e206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a72305820a5f3ec0ec1c34b54821789aed004f766f6f7c6990f063cda51c4cf499bff03b60029526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373"
  7474  
  7475  // DeployServiceChainNFTNoURI deploys a new Klaytn contract, binding an instance of ServiceChainNFTNoURI to it.
  7476  func DeployServiceChainNFTNoURI(auth *bind.TransactOpts, backend bind.ContractBackend, _bridge common.Address) (common.Address, *types.Transaction, *ServiceChainNFTNoURI, error) {
  7477  	parsed, err := abi.JSON(strings.NewReader(ServiceChainNFTNoURIABI))
  7478  	if err != nil {
  7479  		return common.Address{}, nil, nil, err
  7480  	}
  7481  
  7482  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(ServiceChainNFTNoURIBin), backend, _bridge)
  7483  	if err != nil {
  7484  		return common.Address{}, nil, nil, err
  7485  	}
  7486  	return address, tx, &ServiceChainNFTNoURI{ServiceChainNFTNoURICaller: ServiceChainNFTNoURICaller{contract: contract}, ServiceChainNFTNoURITransactor: ServiceChainNFTNoURITransactor{contract: contract}, ServiceChainNFTNoURIFilterer: ServiceChainNFTNoURIFilterer{contract: contract}}, nil
  7487  }
  7488  
  7489  // ServiceChainNFTNoURI is an auto generated Go binding around a Klaytn contract.
  7490  type ServiceChainNFTNoURI struct {
  7491  	ServiceChainNFTNoURICaller     // Read-only binding to the contract
  7492  	ServiceChainNFTNoURITransactor // Write-only binding to the contract
  7493  	ServiceChainNFTNoURIFilterer   // Log filterer for contract events
  7494  }
  7495  
  7496  // ServiceChainNFTNoURICaller is an auto generated read-only Go binding around a Klaytn contract.
  7497  type ServiceChainNFTNoURICaller struct {
  7498  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7499  }
  7500  
  7501  // ServiceChainNFTNoURITransactor is an auto generated write-only Go binding around a Klaytn contract.
  7502  type ServiceChainNFTNoURITransactor struct {
  7503  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7504  }
  7505  
  7506  // ServiceChainNFTNoURIFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
  7507  type ServiceChainNFTNoURIFilterer struct {
  7508  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7509  }
  7510  
  7511  // ServiceChainNFTNoURISession is an auto generated Go binding around a Klaytn contract,
  7512  // with pre-set call and transact options.
  7513  type ServiceChainNFTNoURISession struct {
  7514  	Contract     *ServiceChainNFTNoURI // Generic contract binding to set the session for
  7515  	CallOpts     bind.CallOpts         // Call options to use throughout this session
  7516  	TransactOpts bind.TransactOpts     // Transaction auth options to use throughout this session
  7517  }
  7518  
  7519  // ServiceChainNFTNoURICallerSession is an auto generated read-only Go binding around a Klaytn contract,
  7520  // with pre-set call options.
  7521  type ServiceChainNFTNoURICallerSession struct {
  7522  	Contract *ServiceChainNFTNoURICaller // Generic contract caller binding to set the session for
  7523  	CallOpts bind.CallOpts               // Call options to use throughout this session
  7524  }
  7525  
  7526  // ServiceChainNFTNoURITransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  7527  // with pre-set transact options.
  7528  type ServiceChainNFTNoURITransactorSession struct {
  7529  	Contract     *ServiceChainNFTNoURITransactor // Generic contract transactor binding to set the session for
  7530  	TransactOpts bind.TransactOpts               // Transaction auth options to use throughout this session
  7531  }
  7532  
  7533  // ServiceChainNFTNoURIRaw is an auto generated low-level Go binding around a Klaytn contract.
  7534  type ServiceChainNFTNoURIRaw struct {
  7535  	Contract *ServiceChainNFTNoURI // Generic contract binding to access the raw methods on
  7536  }
  7537  
  7538  // ServiceChainNFTNoURICallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  7539  type ServiceChainNFTNoURICallerRaw struct {
  7540  	Contract *ServiceChainNFTNoURICaller // Generic read-only contract binding to access the raw methods on
  7541  }
  7542  
  7543  // ServiceChainNFTNoURITransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  7544  type ServiceChainNFTNoURITransactorRaw struct {
  7545  	Contract *ServiceChainNFTNoURITransactor // Generic write-only contract binding to access the raw methods on
  7546  }
  7547  
  7548  // NewServiceChainNFTNoURI creates a new instance of ServiceChainNFTNoURI, bound to a specific deployed contract.
  7549  func NewServiceChainNFTNoURI(address common.Address, backend bind.ContractBackend) (*ServiceChainNFTNoURI, error) {
  7550  	contract, err := bindServiceChainNFTNoURI(address, backend, backend, backend)
  7551  	if err != nil {
  7552  		return nil, err
  7553  	}
  7554  	return &ServiceChainNFTNoURI{ServiceChainNFTNoURICaller: ServiceChainNFTNoURICaller{contract: contract}, ServiceChainNFTNoURITransactor: ServiceChainNFTNoURITransactor{contract: contract}, ServiceChainNFTNoURIFilterer: ServiceChainNFTNoURIFilterer{contract: contract}}, nil
  7555  }
  7556  
  7557  // NewServiceChainNFTNoURICaller creates a new read-only instance of ServiceChainNFTNoURI, bound to a specific deployed contract.
  7558  func NewServiceChainNFTNoURICaller(address common.Address, caller bind.ContractCaller) (*ServiceChainNFTNoURICaller, error) {
  7559  	contract, err := bindServiceChainNFTNoURI(address, caller, nil, nil)
  7560  	if err != nil {
  7561  		return nil, err
  7562  	}
  7563  	return &ServiceChainNFTNoURICaller{contract: contract}, nil
  7564  }
  7565  
  7566  // NewServiceChainNFTNoURITransactor creates a new write-only instance of ServiceChainNFTNoURI, bound to a specific deployed contract.
  7567  func NewServiceChainNFTNoURITransactor(address common.Address, transactor bind.ContractTransactor) (*ServiceChainNFTNoURITransactor, error) {
  7568  	contract, err := bindServiceChainNFTNoURI(address, nil, transactor, nil)
  7569  	if err != nil {
  7570  		return nil, err
  7571  	}
  7572  	return &ServiceChainNFTNoURITransactor{contract: contract}, nil
  7573  }
  7574  
  7575  // NewServiceChainNFTNoURIFilterer creates a new log filterer instance of ServiceChainNFTNoURI, bound to a specific deployed contract.
  7576  func NewServiceChainNFTNoURIFilterer(address common.Address, filterer bind.ContractFilterer) (*ServiceChainNFTNoURIFilterer, error) {
  7577  	contract, err := bindServiceChainNFTNoURI(address, nil, nil, filterer)
  7578  	if err != nil {
  7579  		return nil, err
  7580  	}
  7581  	return &ServiceChainNFTNoURIFilterer{contract: contract}, nil
  7582  }
  7583  
  7584  // bindServiceChainNFTNoURI binds a generic wrapper to an already deployed contract.
  7585  func bindServiceChainNFTNoURI(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  7586  	parsed, err := abi.JSON(strings.NewReader(ServiceChainNFTNoURIABI))
  7587  	if err != nil {
  7588  		return nil, err
  7589  	}
  7590  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  7591  }
  7592  
  7593  // Call invokes the (constant) contract method with params as input values and
  7594  // sets the output to result. The result type might be a single field for simple
  7595  // returns, a slice of interfaces for anonymous returns and a struct for named
  7596  // returns.
  7597  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURIRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  7598  	return _ServiceChainNFTNoURI.Contract.ServiceChainNFTNoURICaller.contract.Call(opts, result, method, params...)
  7599  }
  7600  
  7601  // Transfer initiates a plain transaction to move funds to the contract, calling
  7602  // its default method if one is available.
  7603  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURIRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  7604  	return _ServiceChainNFTNoURI.Contract.ServiceChainNFTNoURITransactor.contract.Transfer(opts)
  7605  }
  7606  
  7607  // Transact invokes the (paid) contract method with params as input values.
  7608  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURIRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  7609  	return _ServiceChainNFTNoURI.Contract.ServiceChainNFTNoURITransactor.contract.Transact(opts, method, params...)
  7610  }
  7611  
  7612  // Call invokes the (constant) contract method with params as input values and
  7613  // sets the output to result. The result type might be a single field for simple
  7614  // returns, a slice of interfaces for anonymous returns and a struct for named
  7615  // returns.
  7616  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURICallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  7617  	return _ServiceChainNFTNoURI.Contract.contract.Call(opts, result, method, params...)
  7618  }
  7619  
  7620  // Transfer initiates a plain transaction to move funds to the contract, calling
  7621  // its default method if one is available.
  7622  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURITransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  7623  	return _ServiceChainNFTNoURI.Contract.contract.Transfer(opts)
  7624  }
  7625  
  7626  // Transact invokes the (paid) contract method with params as input values.
  7627  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURITransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  7628  	return _ServiceChainNFTNoURI.Contract.contract.Transact(opts, method, params...)
  7629  }
  7630  
  7631  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  7632  //
  7633  // Solidity: function balanceOf(address owner) view returns(uint256)
  7634  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURICaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) {
  7635  	var (
  7636  		ret0 = new(*big.Int)
  7637  	)
  7638  	out := ret0
  7639  	err := _ServiceChainNFTNoURI.contract.Call(opts, out, "balanceOf", owner)
  7640  	return *ret0, err
  7641  }
  7642  
  7643  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  7644  //
  7645  // Solidity: function balanceOf(address owner) view returns(uint256)
  7646  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURISession) BalanceOf(owner common.Address) (*big.Int, error) {
  7647  	return _ServiceChainNFTNoURI.Contract.BalanceOf(&_ServiceChainNFTNoURI.CallOpts, owner)
  7648  }
  7649  
  7650  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  7651  //
  7652  // Solidity: function balanceOf(address owner) view returns(uint256)
  7653  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURICallerSession) BalanceOf(owner common.Address) (*big.Int, error) {
  7654  	return _ServiceChainNFTNoURI.Contract.BalanceOf(&_ServiceChainNFTNoURI.CallOpts, owner)
  7655  }
  7656  
  7657  // Bridge is a free data retrieval call binding the contract method 0xe78cea92.
  7658  //
  7659  // Solidity: function bridge() view returns(address)
  7660  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURICaller) Bridge(opts *bind.CallOpts) (common.Address, error) {
  7661  	var (
  7662  		ret0 = new(common.Address)
  7663  	)
  7664  	out := ret0
  7665  	err := _ServiceChainNFTNoURI.contract.Call(opts, out, "bridge")
  7666  	return *ret0, err
  7667  }
  7668  
  7669  // Bridge is a free data retrieval call binding the contract method 0xe78cea92.
  7670  //
  7671  // Solidity: function bridge() view returns(address)
  7672  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURISession) Bridge() (common.Address, error) {
  7673  	return _ServiceChainNFTNoURI.Contract.Bridge(&_ServiceChainNFTNoURI.CallOpts)
  7674  }
  7675  
  7676  // Bridge is a free data retrieval call binding the contract method 0xe78cea92.
  7677  //
  7678  // Solidity: function bridge() view returns(address)
  7679  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURICallerSession) Bridge() (common.Address, error) {
  7680  	return _ServiceChainNFTNoURI.Contract.Bridge(&_ServiceChainNFTNoURI.CallOpts)
  7681  }
  7682  
  7683  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  7684  //
  7685  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  7686  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURICaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  7687  	var (
  7688  		ret0 = new(common.Address)
  7689  	)
  7690  	out := ret0
  7691  	err := _ServiceChainNFTNoURI.contract.Call(opts, out, "getApproved", tokenId)
  7692  	return *ret0, err
  7693  }
  7694  
  7695  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  7696  //
  7697  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  7698  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURISession) GetApproved(tokenId *big.Int) (common.Address, error) {
  7699  	return _ServiceChainNFTNoURI.Contract.GetApproved(&_ServiceChainNFTNoURI.CallOpts, tokenId)
  7700  }
  7701  
  7702  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  7703  //
  7704  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  7705  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURICallerSession) GetApproved(tokenId *big.Int) (common.Address, error) {
  7706  	return _ServiceChainNFTNoURI.Contract.GetApproved(&_ServiceChainNFTNoURI.CallOpts, tokenId)
  7707  }
  7708  
  7709  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  7710  //
  7711  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  7712  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURICaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) {
  7713  	var (
  7714  		ret0 = new(bool)
  7715  	)
  7716  	out := ret0
  7717  	err := _ServiceChainNFTNoURI.contract.Call(opts, out, "isApprovedForAll", owner, operator)
  7718  	return *ret0, err
  7719  }
  7720  
  7721  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  7722  //
  7723  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  7724  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURISession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  7725  	return _ServiceChainNFTNoURI.Contract.IsApprovedForAll(&_ServiceChainNFTNoURI.CallOpts, owner, operator)
  7726  }
  7727  
  7728  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  7729  //
  7730  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  7731  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURICallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  7732  	return _ServiceChainNFTNoURI.Contract.IsApprovedForAll(&_ServiceChainNFTNoURI.CallOpts, owner, operator)
  7733  }
  7734  
  7735  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
  7736  //
  7737  // Solidity: function isMinter(address account) view returns(bool)
  7738  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURICaller) IsMinter(opts *bind.CallOpts, account common.Address) (bool, error) {
  7739  	var (
  7740  		ret0 = new(bool)
  7741  	)
  7742  	out := ret0
  7743  	err := _ServiceChainNFTNoURI.contract.Call(opts, out, "isMinter", account)
  7744  	return *ret0, err
  7745  }
  7746  
  7747  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
  7748  //
  7749  // Solidity: function isMinter(address account) view returns(bool)
  7750  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURISession) IsMinter(account common.Address) (bool, error) {
  7751  	return _ServiceChainNFTNoURI.Contract.IsMinter(&_ServiceChainNFTNoURI.CallOpts, account)
  7752  }
  7753  
  7754  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
  7755  //
  7756  // Solidity: function isMinter(address account) view returns(bool)
  7757  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURICallerSession) IsMinter(account common.Address) (bool, error) {
  7758  	return _ServiceChainNFTNoURI.Contract.IsMinter(&_ServiceChainNFTNoURI.CallOpts, account)
  7759  }
  7760  
  7761  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  7762  //
  7763  // Solidity: function isOwner() view returns(bool)
  7764  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURICaller) IsOwner(opts *bind.CallOpts) (bool, error) {
  7765  	var (
  7766  		ret0 = new(bool)
  7767  	)
  7768  	out := ret0
  7769  	err := _ServiceChainNFTNoURI.contract.Call(opts, out, "isOwner")
  7770  	return *ret0, err
  7771  }
  7772  
  7773  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  7774  //
  7775  // Solidity: function isOwner() view returns(bool)
  7776  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURISession) IsOwner() (bool, error) {
  7777  	return _ServiceChainNFTNoURI.Contract.IsOwner(&_ServiceChainNFTNoURI.CallOpts)
  7778  }
  7779  
  7780  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  7781  //
  7782  // Solidity: function isOwner() view returns(bool)
  7783  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURICallerSession) IsOwner() (bool, error) {
  7784  	return _ServiceChainNFTNoURI.Contract.IsOwner(&_ServiceChainNFTNoURI.CallOpts)
  7785  }
  7786  
  7787  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  7788  //
  7789  // Solidity: function owner() view returns(address)
  7790  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURICaller) Owner(opts *bind.CallOpts) (common.Address, error) {
  7791  	var (
  7792  		ret0 = new(common.Address)
  7793  	)
  7794  	out := ret0
  7795  	err := _ServiceChainNFTNoURI.contract.Call(opts, out, "owner")
  7796  	return *ret0, err
  7797  }
  7798  
  7799  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  7800  //
  7801  // Solidity: function owner() view returns(address)
  7802  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURISession) Owner() (common.Address, error) {
  7803  	return _ServiceChainNFTNoURI.Contract.Owner(&_ServiceChainNFTNoURI.CallOpts)
  7804  }
  7805  
  7806  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  7807  //
  7808  // Solidity: function owner() view returns(address)
  7809  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURICallerSession) Owner() (common.Address, error) {
  7810  	return _ServiceChainNFTNoURI.Contract.Owner(&_ServiceChainNFTNoURI.CallOpts)
  7811  }
  7812  
  7813  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  7814  //
  7815  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  7816  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURICaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  7817  	var (
  7818  		ret0 = new(common.Address)
  7819  	)
  7820  	out := ret0
  7821  	err := _ServiceChainNFTNoURI.contract.Call(opts, out, "ownerOf", tokenId)
  7822  	return *ret0, err
  7823  }
  7824  
  7825  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  7826  //
  7827  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  7828  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURISession) OwnerOf(tokenId *big.Int) (common.Address, error) {
  7829  	return _ServiceChainNFTNoURI.Contract.OwnerOf(&_ServiceChainNFTNoURI.CallOpts, tokenId)
  7830  }
  7831  
  7832  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  7833  //
  7834  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  7835  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURICallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
  7836  	return _ServiceChainNFTNoURI.Contract.OwnerOf(&_ServiceChainNFTNoURI.CallOpts, tokenId)
  7837  }
  7838  
  7839  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  7840  //
  7841  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  7842  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURICaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
  7843  	var (
  7844  		ret0 = new(bool)
  7845  	)
  7846  	out := ret0
  7847  	err := _ServiceChainNFTNoURI.contract.Call(opts, out, "supportsInterface", interfaceId)
  7848  	return *ret0, err
  7849  }
  7850  
  7851  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  7852  //
  7853  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  7854  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURISession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  7855  	return _ServiceChainNFTNoURI.Contract.SupportsInterface(&_ServiceChainNFTNoURI.CallOpts, interfaceId)
  7856  }
  7857  
  7858  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  7859  //
  7860  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  7861  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURICallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  7862  	return _ServiceChainNFTNoURI.Contract.SupportsInterface(&_ServiceChainNFTNoURI.CallOpts, interfaceId)
  7863  }
  7864  
  7865  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
  7866  //
  7867  // Solidity: function addMinter(address account) returns()
  7868  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURITransactor) AddMinter(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) {
  7869  	return _ServiceChainNFTNoURI.contract.Transact(opts, "addMinter", account)
  7870  }
  7871  
  7872  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
  7873  //
  7874  // Solidity: function addMinter(address account) returns()
  7875  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURISession) AddMinter(account common.Address) (*types.Transaction, error) {
  7876  	return _ServiceChainNFTNoURI.Contract.AddMinter(&_ServiceChainNFTNoURI.TransactOpts, account)
  7877  }
  7878  
  7879  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
  7880  //
  7881  // Solidity: function addMinter(address account) returns()
  7882  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURITransactorSession) AddMinter(account common.Address) (*types.Transaction, error) {
  7883  	return _ServiceChainNFTNoURI.Contract.AddMinter(&_ServiceChainNFTNoURI.TransactOpts, account)
  7884  }
  7885  
  7886  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  7887  //
  7888  // Solidity: function approve(address to, uint256 tokenId) returns()
  7889  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURITransactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  7890  	return _ServiceChainNFTNoURI.contract.Transact(opts, "approve", to, tokenId)
  7891  }
  7892  
  7893  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  7894  //
  7895  // Solidity: function approve(address to, uint256 tokenId) returns()
  7896  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURISession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  7897  	return _ServiceChainNFTNoURI.Contract.Approve(&_ServiceChainNFTNoURI.TransactOpts, to, tokenId)
  7898  }
  7899  
  7900  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  7901  //
  7902  // Solidity: function approve(address to, uint256 tokenId) returns()
  7903  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURITransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  7904  	return _ServiceChainNFTNoURI.Contract.Approve(&_ServiceChainNFTNoURI.TransactOpts, to, tokenId)
  7905  }
  7906  
  7907  // Burn is a paid mutator transaction binding the contract method 0x42966c68.
  7908  //
  7909  // Solidity: function burn(uint256 tokenId) returns()
  7910  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURITransactor) Burn(opts *bind.TransactOpts, tokenId *big.Int) (*types.Transaction, error) {
  7911  	return _ServiceChainNFTNoURI.contract.Transact(opts, "burn", tokenId)
  7912  }
  7913  
  7914  // Burn is a paid mutator transaction binding the contract method 0x42966c68.
  7915  //
  7916  // Solidity: function burn(uint256 tokenId) returns()
  7917  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURISession) Burn(tokenId *big.Int) (*types.Transaction, error) {
  7918  	return _ServiceChainNFTNoURI.Contract.Burn(&_ServiceChainNFTNoURI.TransactOpts, tokenId)
  7919  }
  7920  
  7921  // Burn is a paid mutator transaction binding the contract method 0x42966c68.
  7922  //
  7923  // Solidity: function burn(uint256 tokenId) returns()
  7924  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURITransactorSession) Burn(tokenId *big.Int) (*types.Transaction, error) {
  7925  	return _ServiceChainNFTNoURI.Contract.Burn(&_ServiceChainNFTNoURI.TransactOpts, tokenId)
  7926  }
  7927  
  7928  // Mint is a paid mutator transaction binding the contract method 0x40c10f19.
  7929  //
  7930  // Solidity: function mint(address to, uint256 tokenId) returns(bool)
  7931  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURITransactor) Mint(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  7932  	return _ServiceChainNFTNoURI.contract.Transact(opts, "mint", to, tokenId)
  7933  }
  7934  
  7935  // Mint is a paid mutator transaction binding the contract method 0x40c10f19.
  7936  //
  7937  // Solidity: function mint(address to, uint256 tokenId) returns(bool)
  7938  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURISession) Mint(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  7939  	return _ServiceChainNFTNoURI.Contract.Mint(&_ServiceChainNFTNoURI.TransactOpts, to, tokenId)
  7940  }
  7941  
  7942  // Mint is a paid mutator transaction binding the contract method 0x40c10f19.
  7943  //
  7944  // Solidity: function mint(address to, uint256 tokenId) returns(bool)
  7945  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURITransactorSession) Mint(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  7946  	return _ServiceChainNFTNoURI.Contract.Mint(&_ServiceChainNFTNoURI.TransactOpts, to, tokenId)
  7947  }
  7948  
  7949  // RegisterBulk is a paid mutator transaction binding the contract method 0x7a9adac6.
  7950  //
  7951  // Solidity: function registerBulk(address _user, uint256 _startID, uint256 _endID) returns()
  7952  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURITransactor) RegisterBulk(opts *bind.TransactOpts, _user common.Address, _startID *big.Int, _endID *big.Int) (*types.Transaction, error) {
  7953  	return _ServiceChainNFTNoURI.contract.Transact(opts, "registerBulk", _user, _startID, _endID)
  7954  }
  7955  
  7956  // RegisterBulk is a paid mutator transaction binding the contract method 0x7a9adac6.
  7957  //
  7958  // Solidity: function registerBulk(address _user, uint256 _startID, uint256 _endID) returns()
  7959  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURISession) RegisterBulk(_user common.Address, _startID *big.Int, _endID *big.Int) (*types.Transaction, error) {
  7960  	return _ServiceChainNFTNoURI.Contract.RegisterBulk(&_ServiceChainNFTNoURI.TransactOpts, _user, _startID, _endID)
  7961  }
  7962  
  7963  // RegisterBulk is a paid mutator transaction binding the contract method 0x7a9adac6.
  7964  //
  7965  // Solidity: function registerBulk(address _user, uint256 _startID, uint256 _endID) returns()
  7966  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURITransactorSession) RegisterBulk(_user common.Address, _startID *big.Int, _endID *big.Int) (*types.Transaction, error) {
  7967  	return _ServiceChainNFTNoURI.Contract.RegisterBulk(&_ServiceChainNFTNoURI.TransactOpts, _user, _startID, _endID)
  7968  }
  7969  
  7970  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
  7971  //
  7972  // Solidity: function renounceMinter() returns()
  7973  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURITransactor) RenounceMinter(opts *bind.TransactOpts) (*types.Transaction, error) {
  7974  	return _ServiceChainNFTNoURI.contract.Transact(opts, "renounceMinter")
  7975  }
  7976  
  7977  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
  7978  //
  7979  // Solidity: function renounceMinter() returns()
  7980  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURISession) RenounceMinter() (*types.Transaction, error) {
  7981  	return _ServiceChainNFTNoURI.Contract.RenounceMinter(&_ServiceChainNFTNoURI.TransactOpts)
  7982  }
  7983  
  7984  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
  7985  //
  7986  // Solidity: function renounceMinter() returns()
  7987  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURITransactorSession) RenounceMinter() (*types.Transaction, error) {
  7988  	return _ServiceChainNFTNoURI.Contract.RenounceMinter(&_ServiceChainNFTNoURI.TransactOpts)
  7989  }
  7990  
  7991  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  7992  //
  7993  // Solidity: function renounceOwnership() returns()
  7994  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURITransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) {
  7995  	return _ServiceChainNFTNoURI.contract.Transact(opts, "renounceOwnership")
  7996  }
  7997  
  7998  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  7999  //
  8000  // Solidity: function renounceOwnership() returns()
  8001  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURISession) RenounceOwnership() (*types.Transaction, error) {
  8002  	return _ServiceChainNFTNoURI.Contract.RenounceOwnership(&_ServiceChainNFTNoURI.TransactOpts)
  8003  }
  8004  
  8005  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  8006  //
  8007  // Solidity: function renounceOwnership() returns()
  8008  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURITransactorSession) RenounceOwnership() (*types.Transaction, error) {
  8009  	return _ServiceChainNFTNoURI.Contract.RenounceOwnership(&_ServiceChainNFTNoURI.TransactOpts)
  8010  }
  8011  
  8012  // RequestValueTransfer is a paid mutator transaction binding the contract method 0x3f4c4e3d.
  8013  //
  8014  // Solidity: function requestValueTransfer(uint256 _uid, address _to, bytes _extraData) returns()
  8015  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURITransactor) RequestValueTransfer(opts *bind.TransactOpts, _uid *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) {
  8016  	return _ServiceChainNFTNoURI.contract.Transact(opts, "requestValueTransfer", _uid, _to, _extraData)
  8017  }
  8018  
  8019  // RequestValueTransfer is a paid mutator transaction binding the contract method 0x3f4c4e3d.
  8020  //
  8021  // Solidity: function requestValueTransfer(uint256 _uid, address _to, bytes _extraData) returns()
  8022  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURISession) RequestValueTransfer(_uid *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) {
  8023  	return _ServiceChainNFTNoURI.Contract.RequestValueTransfer(&_ServiceChainNFTNoURI.TransactOpts, _uid, _to, _extraData)
  8024  }
  8025  
  8026  // RequestValueTransfer is a paid mutator transaction binding the contract method 0x3f4c4e3d.
  8027  //
  8028  // Solidity: function requestValueTransfer(uint256 _uid, address _to, bytes _extraData) returns()
  8029  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURITransactorSession) RequestValueTransfer(_uid *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) {
  8030  	return _ServiceChainNFTNoURI.Contract.RequestValueTransfer(&_ServiceChainNFTNoURI.TransactOpts, _uid, _to, _extraData)
  8031  }
  8032  
  8033  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  8034  //
  8035  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  8036  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURITransactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  8037  	return _ServiceChainNFTNoURI.contract.Transact(opts, "safeTransferFrom", from, to, tokenId)
  8038  }
  8039  
  8040  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  8041  //
  8042  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  8043  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURISession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  8044  	return _ServiceChainNFTNoURI.Contract.SafeTransferFrom(&_ServiceChainNFTNoURI.TransactOpts, from, to, tokenId)
  8045  }
  8046  
  8047  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  8048  //
  8049  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  8050  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURITransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  8051  	return _ServiceChainNFTNoURI.Contract.SafeTransferFrom(&_ServiceChainNFTNoURI.TransactOpts, from, to, tokenId)
  8052  }
  8053  
  8054  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  8055  //
  8056  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
  8057  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURITransactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
  8058  	return _ServiceChainNFTNoURI.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, _data)
  8059  }
  8060  
  8061  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  8062  //
  8063  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
  8064  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURISession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
  8065  	return _ServiceChainNFTNoURI.Contract.SafeTransferFrom0(&_ServiceChainNFTNoURI.TransactOpts, from, to, tokenId, _data)
  8066  }
  8067  
  8068  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  8069  //
  8070  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
  8071  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURITransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
  8072  	return _ServiceChainNFTNoURI.Contract.SafeTransferFrom0(&_ServiceChainNFTNoURI.TransactOpts, from, to, tokenId, _data)
  8073  }
  8074  
  8075  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  8076  //
  8077  // Solidity: function setApprovalForAll(address to, bool approved) returns()
  8078  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURITransactor) SetApprovalForAll(opts *bind.TransactOpts, to common.Address, approved bool) (*types.Transaction, error) {
  8079  	return _ServiceChainNFTNoURI.contract.Transact(opts, "setApprovalForAll", to, approved)
  8080  }
  8081  
  8082  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  8083  //
  8084  // Solidity: function setApprovalForAll(address to, bool approved) returns()
  8085  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURISession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
  8086  	return _ServiceChainNFTNoURI.Contract.SetApprovalForAll(&_ServiceChainNFTNoURI.TransactOpts, to, approved)
  8087  }
  8088  
  8089  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  8090  //
  8091  // Solidity: function setApprovalForAll(address to, bool approved) returns()
  8092  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURITransactorSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
  8093  	return _ServiceChainNFTNoURI.Contract.SetApprovalForAll(&_ServiceChainNFTNoURI.TransactOpts, to, approved)
  8094  }
  8095  
  8096  // SetBridge is a paid mutator transaction binding the contract method 0x8dd14802.
  8097  //
  8098  // Solidity: function setBridge(address _bridge) returns()
  8099  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURITransactor) SetBridge(opts *bind.TransactOpts, _bridge common.Address) (*types.Transaction, error) {
  8100  	return _ServiceChainNFTNoURI.contract.Transact(opts, "setBridge", _bridge)
  8101  }
  8102  
  8103  // SetBridge is a paid mutator transaction binding the contract method 0x8dd14802.
  8104  //
  8105  // Solidity: function setBridge(address _bridge) returns()
  8106  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURISession) SetBridge(_bridge common.Address) (*types.Transaction, error) {
  8107  	return _ServiceChainNFTNoURI.Contract.SetBridge(&_ServiceChainNFTNoURI.TransactOpts, _bridge)
  8108  }
  8109  
  8110  // SetBridge is a paid mutator transaction binding the contract method 0x8dd14802.
  8111  //
  8112  // Solidity: function setBridge(address _bridge) returns()
  8113  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURITransactorSession) SetBridge(_bridge common.Address) (*types.Transaction, error) {
  8114  	return _ServiceChainNFTNoURI.Contract.SetBridge(&_ServiceChainNFTNoURI.TransactOpts, _bridge)
  8115  }
  8116  
  8117  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  8118  //
  8119  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  8120  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURITransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  8121  	return _ServiceChainNFTNoURI.contract.Transact(opts, "transferFrom", from, to, tokenId)
  8122  }
  8123  
  8124  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  8125  //
  8126  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  8127  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURISession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  8128  	return _ServiceChainNFTNoURI.Contract.TransferFrom(&_ServiceChainNFTNoURI.TransactOpts, from, to, tokenId)
  8129  }
  8130  
  8131  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  8132  //
  8133  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  8134  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURITransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  8135  	return _ServiceChainNFTNoURI.Contract.TransferFrom(&_ServiceChainNFTNoURI.TransactOpts, from, to, tokenId)
  8136  }
  8137  
  8138  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  8139  //
  8140  // Solidity: function transferOwnership(address newOwner) returns()
  8141  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURITransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) {
  8142  	return _ServiceChainNFTNoURI.contract.Transact(opts, "transferOwnership", newOwner)
  8143  }
  8144  
  8145  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  8146  //
  8147  // Solidity: function transferOwnership(address newOwner) returns()
  8148  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURISession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  8149  	return _ServiceChainNFTNoURI.Contract.TransferOwnership(&_ServiceChainNFTNoURI.TransactOpts, newOwner)
  8150  }
  8151  
  8152  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  8153  //
  8154  // Solidity: function transferOwnership(address newOwner) returns()
  8155  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURITransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  8156  	return _ServiceChainNFTNoURI.Contract.TransferOwnership(&_ServiceChainNFTNoURI.TransactOpts, newOwner)
  8157  }
  8158  
  8159  // ServiceChainNFTNoURIApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ServiceChainNFTNoURI contract.
  8160  type ServiceChainNFTNoURIApprovalIterator struct {
  8161  	Event *ServiceChainNFTNoURIApproval // Event containing the contract specifics and raw log
  8162  
  8163  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  8164  	event    string              // Event name to use for unpacking event data
  8165  
  8166  	logs chan types.Log      // Log channel receiving the found contract events
  8167  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  8168  	done bool                // Whether the subscription completed delivering logs
  8169  	fail error               // Occurred error to stop iteration
  8170  }
  8171  
  8172  // Next advances the iterator to the subsequent event, returning whether there
  8173  // are any more events found. In case of a retrieval or parsing error, false is
  8174  // returned and Error() can be queried for the exact failure.
  8175  func (it *ServiceChainNFTNoURIApprovalIterator) Next() bool {
  8176  	// If the iterator failed, stop iterating
  8177  	if it.fail != nil {
  8178  		return false
  8179  	}
  8180  	// If the iterator completed, deliver directly whatever's available
  8181  	if it.done {
  8182  		select {
  8183  		case log := <-it.logs:
  8184  			it.Event = new(ServiceChainNFTNoURIApproval)
  8185  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8186  				it.fail = err
  8187  				return false
  8188  			}
  8189  			it.Event.Raw = log
  8190  			return true
  8191  
  8192  		default:
  8193  			return false
  8194  		}
  8195  	}
  8196  	// Iterator still in progress, wait for either a data or an error event
  8197  	select {
  8198  	case log := <-it.logs:
  8199  		it.Event = new(ServiceChainNFTNoURIApproval)
  8200  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8201  			it.fail = err
  8202  			return false
  8203  		}
  8204  		it.Event.Raw = log
  8205  		return true
  8206  
  8207  	case err := <-it.sub.Err():
  8208  		it.done = true
  8209  		it.fail = err
  8210  		return it.Next()
  8211  	}
  8212  }
  8213  
  8214  // Error returns any retrieval or parsing error occurred during filtering.
  8215  func (it *ServiceChainNFTNoURIApprovalIterator) Error() error {
  8216  	return it.fail
  8217  }
  8218  
  8219  // Close terminates the iteration process, releasing any pending underlying
  8220  // resources.
  8221  func (it *ServiceChainNFTNoURIApprovalIterator) Close() error {
  8222  	it.sub.Unsubscribe()
  8223  	return nil
  8224  }
  8225  
  8226  // ServiceChainNFTNoURIApproval represents a Approval event raised by the ServiceChainNFTNoURI contract.
  8227  type ServiceChainNFTNoURIApproval struct {
  8228  	Owner    common.Address
  8229  	Approved common.Address
  8230  	TokenId  *big.Int
  8231  	Raw      types.Log // Blockchain specific contextual infos
  8232  }
  8233  
  8234  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  8235  //
  8236  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  8237  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURIFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ServiceChainNFTNoURIApprovalIterator, error) {
  8238  
  8239  	var ownerRule []interface{}
  8240  	for _, ownerItem := range owner {
  8241  		ownerRule = append(ownerRule, ownerItem)
  8242  	}
  8243  	var approvedRule []interface{}
  8244  	for _, approvedItem := range approved {
  8245  		approvedRule = append(approvedRule, approvedItem)
  8246  	}
  8247  	var tokenIdRule []interface{}
  8248  	for _, tokenIdItem := range tokenId {
  8249  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  8250  	}
  8251  
  8252  	logs, sub, err := _ServiceChainNFTNoURI.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  8253  	if err != nil {
  8254  		return nil, err
  8255  	}
  8256  	return &ServiceChainNFTNoURIApprovalIterator{contract: _ServiceChainNFTNoURI.contract, event: "Approval", logs: logs, sub: sub}, nil
  8257  }
  8258  
  8259  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  8260  //
  8261  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  8262  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURIFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ServiceChainNFTNoURIApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  8263  
  8264  	var ownerRule []interface{}
  8265  	for _, ownerItem := range owner {
  8266  		ownerRule = append(ownerRule, ownerItem)
  8267  	}
  8268  	var approvedRule []interface{}
  8269  	for _, approvedItem := range approved {
  8270  		approvedRule = append(approvedRule, approvedItem)
  8271  	}
  8272  	var tokenIdRule []interface{}
  8273  	for _, tokenIdItem := range tokenId {
  8274  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  8275  	}
  8276  
  8277  	logs, sub, err := _ServiceChainNFTNoURI.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  8278  	if err != nil {
  8279  		return nil, err
  8280  	}
  8281  	return event.NewSubscription(func(quit <-chan struct{}) error {
  8282  		defer sub.Unsubscribe()
  8283  		for {
  8284  			select {
  8285  			case log := <-logs:
  8286  				// New log arrived, parse the event and forward to the user
  8287  				event := new(ServiceChainNFTNoURIApproval)
  8288  				if err := _ServiceChainNFTNoURI.contract.UnpackLog(event, "Approval", log); err != nil {
  8289  					return err
  8290  				}
  8291  				event.Raw = log
  8292  
  8293  				select {
  8294  				case sink <- event:
  8295  				case err := <-sub.Err():
  8296  					return err
  8297  				case <-quit:
  8298  					return nil
  8299  				}
  8300  			case err := <-sub.Err():
  8301  				return err
  8302  			case <-quit:
  8303  				return nil
  8304  			}
  8305  		}
  8306  	}), nil
  8307  }
  8308  
  8309  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  8310  //
  8311  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  8312  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURIFilterer) ParseApproval(log types.Log) (*ServiceChainNFTNoURIApproval, error) {
  8313  	event := new(ServiceChainNFTNoURIApproval)
  8314  	if err := _ServiceChainNFTNoURI.contract.UnpackLog(event, "Approval", log); err != nil {
  8315  		return nil, err
  8316  	}
  8317  	return event, nil
  8318  }
  8319  
  8320  // ServiceChainNFTNoURIApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the ServiceChainNFTNoURI contract.
  8321  type ServiceChainNFTNoURIApprovalForAllIterator struct {
  8322  	Event *ServiceChainNFTNoURIApprovalForAll // Event containing the contract specifics and raw log
  8323  
  8324  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  8325  	event    string              // Event name to use for unpacking event data
  8326  
  8327  	logs chan types.Log      // Log channel receiving the found contract events
  8328  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  8329  	done bool                // Whether the subscription completed delivering logs
  8330  	fail error               // Occurred error to stop iteration
  8331  }
  8332  
  8333  // Next advances the iterator to the subsequent event, returning whether there
  8334  // are any more events found. In case of a retrieval or parsing error, false is
  8335  // returned and Error() can be queried for the exact failure.
  8336  func (it *ServiceChainNFTNoURIApprovalForAllIterator) Next() bool {
  8337  	// If the iterator failed, stop iterating
  8338  	if it.fail != nil {
  8339  		return false
  8340  	}
  8341  	// If the iterator completed, deliver directly whatever's available
  8342  	if it.done {
  8343  		select {
  8344  		case log := <-it.logs:
  8345  			it.Event = new(ServiceChainNFTNoURIApprovalForAll)
  8346  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8347  				it.fail = err
  8348  				return false
  8349  			}
  8350  			it.Event.Raw = log
  8351  			return true
  8352  
  8353  		default:
  8354  			return false
  8355  		}
  8356  	}
  8357  	// Iterator still in progress, wait for either a data or an error event
  8358  	select {
  8359  	case log := <-it.logs:
  8360  		it.Event = new(ServiceChainNFTNoURIApprovalForAll)
  8361  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8362  			it.fail = err
  8363  			return false
  8364  		}
  8365  		it.Event.Raw = log
  8366  		return true
  8367  
  8368  	case err := <-it.sub.Err():
  8369  		it.done = true
  8370  		it.fail = err
  8371  		return it.Next()
  8372  	}
  8373  }
  8374  
  8375  // Error returns any retrieval or parsing error occurred during filtering.
  8376  func (it *ServiceChainNFTNoURIApprovalForAllIterator) Error() error {
  8377  	return it.fail
  8378  }
  8379  
  8380  // Close terminates the iteration process, releasing any pending underlying
  8381  // resources.
  8382  func (it *ServiceChainNFTNoURIApprovalForAllIterator) Close() error {
  8383  	it.sub.Unsubscribe()
  8384  	return nil
  8385  }
  8386  
  8387  // ServiceChainNFTNoURIApprovalForAll represents a ApprovalForAll event raised by the ServiceChainNFTNoURI contract.
  8388  type ServiceChainNFTNoURIApprovalForAll struct {
  8389  	Owner    common.Address
  8390  	Operator common.Address
  8391  	Approved bool
  8392  	Raw      types.Log // Blockchain specific contextual infos
  8393  }
  8394  
  8395  // FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  8396  //
  8397  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  8398  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURIFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ServiceChainNFTNoURIApprovalForAllIterator, error) {
  8399  
  8400  	var ownerRule []interface{}
  8401  	for _, ownerItem := range owner {
  8402  		ownerRule = append(ownerRule, ownerItem)
  8403  	}
  8404  	var operatorRule []interface{}
  8405  	for _, operatorItem := range operator {
  8406  		operatorRule = append(operatorRule, operatorItem)
  8407  	}
  8408  
  8409  	logs, sub, err := _ServiceChainNFTNoURI.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  8410  	if err != nil {
  8411  		return nil, err
  8412  	}
  8413  	return &ServiceChainNFTNoURIApprovalForAllIterator{contract: _ServiceChainNFTNoURI.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil
  8414  }
  8415  
  8416  // WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  8417  //
  8418  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  8419  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURIFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ServiceChainNFTNoURIApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) {
  8420  
  8421  	var ownerRule []interface{}
  8422  	for _, ownerItem := range owner {
  8423  		ownerRule = append(ownerRule, ownerItem)
  8424  	}
  8425  	var operatorRule []interface{}
  8426  	for _, operatorItem := range operator {
  8427  		operatorRule = append(operatorRule, operatorItem)
  8428  	}
  8429  
  8430  	logs, sub, err := _ServiceChainNFTNoURI.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  8431  	if err != nil {
  8432  		return nil, err
  8433  	}
  8434  	return event.NewSubscription(func(quit <-chan struct{}) error {
  8435  		defer sub.Unsubscribe()
  8436  		for {
  8437  			select {
  8438  			case log := <-logs:
  8439  				// New log arrived, parse the event and forward to the user
  8440  				event := new(ServiceChainNFTNoURIApprovalForAll)
  8441  				if err := _ServiceChainNFTNoURI.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  8442  					return err
  8443  				}
  8444  				event.Raw = log
  8445  
  8446  				select {
  8447  				case sink <- event:
  8448  				case err := <-sub.Err():
  8449  					return err
  8450  				case <-quit:
  8451  					return nil
  8452  				}
  8453  			case err := <-sub.Err():
  8454  				return err
  8455  			case <-quit:
  8456  				return nil
  8457  			}
  8458  		}
  8459  	}), nil
  8460  }
  8461  
  8462  // ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  8463  //
  8464  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  8465  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURIFilterer) ParseApprovalForAll(log types.Log) (*ServiceChainNFTNoURIApprovalForAll, error) {
  8466  	event := new(ServiceChainNFTNoURIApprovalForAll)
  8467  	if err := _ServiceChainNFTNoURI.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  8468  		return nil, err
  8469  	}
  8470  	return event, nil
  8471  }
  8472  
  8473  // ServiceChainNFTNoURIMinterAddedIterator is returned from FilterMinterAdded and is used to iterate over the raw logs and unpacked data for MinterAdded events raised by the ServiceChainNFTNoURI contract.
  8474  type ServiceChainNFTNoURIMinterAddedIterator struct {
  8475  	Event *ServiceChainNFTNoURIMinterAdded // Event containing the contract specifics and raw log
  8476  
  8477  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  8478  	event    string              // Event name to use for unpacking event data
  8479  
  8480  	logs chan types.Log      // Log channel receiving the found contract events
  8481  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  8482  	done bool                // Whether the subscription completed delivering logs
  8483  	fail error               // Occurred error to stop iteration
  8484  }
  8485  
  8486  // Next advances the iterator to the subsequent event, returning whether there
  8487  // are any more events found. In case of a retrieval or parsing error, false is
  8488  // returned and Error() can be queried for the exact failure.
  8489  func (it *ServiceChainNFTNoURIMinterAddedIterator) Next() bool {
  8490  	// If the iterator failed, stop iterating
  8491  	if it.fail != nil {
  8492  		return false
  8493  	}
  8494  	// If the iterator completed, deliver directly whatever's available
  8495  	if it.done {
  8496  		select {
  8497  		case log := <-it.logs:
  8498  			it.Event = new(ServiceChainNFTNoURIMinterAdded)
  8499  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8500  				it.fail = err
  8501  				return false
  8502  			}
  8503  			it.Event.Raw = log
  8504  			return true
  8505  
  8506  		default:
  8507  			return false
  8508  		}
  8509  	}
  8510  	// Iterator still in progress, wait for either a data or an error event
  8511  	select {
  8512  	case log := <-it.logs:
  8513  		it.Event = new(ServiceChainNFTNoURIMinterAdded)
  8514  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8515  			it.fail = err
  8516  			return false
  8517  		}
  8518  		it.Event.Raw = log
  8519  		return true
  8520  
  8521  	case err := <-it.sub.Err():
  8522  		it.done = true
  8523  		it.fail = err
  8524  		return it.Next()
  8525  	}
  8526  }
  8527  
  8528  // Error returns any retrieval or parsing error occurred during filtering.
  8529  func (it *ServiceChainNFTNoURIMinterAddedIterator) Error() error {
  8530  	return it.fail
  8531  }
  8532  
  8533  // Close terminates the iteration process, releasing any pending underlying
  8534  // resources.
  8535  func (it *ServiceChainNFTNoURIMinterAddedIterator) Close() error {
  8536  	it.sub.Unsubscribe()
  8537  	return nil
  8538  }
  8539  
  8540  // ServiceChainNFTNoURIMinterAdded represents a MinterAdded event raised by the ServiceChainNFTNoURI contract.
  8541  type ServiceChainNFTNoURIMinterAdded struct {
  8542  	Account common.Address
  8543  	Raw     types.Log // Blockchain specific contextual infos
  8544  }
  8545  
  8546  // FilterMinterAdded is a free log retrieval operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
  8547  //
  8548  // Solidity: event MinterAdded(address indexed account)
  8549  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURIFilterer) FilterMinterAdded(opts *bind.FilterOpts, account []common.Address) (*ServiceChainNFTNoURIMinterAddedIterator, error) {
  8550  
  8551  	var accountRule []interface{}
  8552  	for _, accountItem := range account {
  8553  		accountRule = append(accountRule, accountItem)
  8554  	}
  8555  
  8556  	logs, sub, err := _ServiceChainNFTNoURI.contract.FilterLogs(opts, "MinterAdded", accountRule)
  8557  	if err != nil {
  8558  		return nil, err
  8559  	}
  8560  	return &ServiceChainNFTNoURIMinterAddedIterator{contract: _ServiceChainNFTNoURI.contract, event: "MinterAdded", logs: logs, sub: sub}, nil
  8561  }
  8562  
  8563  // WatchMinterAdded is a free log subscription operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
  8564  //
  8565  // Solidity: event MinterAdded(address indexed account)
  8566  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURIFilterer) WatchMinterAdded(opts *bind.WatchOpts, sink chan<- *ServiceChainNFTNoURIMinterAdded, account []common.Address) (event.Subscription, error) {
  8567  
  8568  	var accountRule []interface{}
  8569  	for _, accountItem := range account {
  8570  		accountRule = append(accountRule, accountItem)
  8571  	}
  8572  
  8573  	logs, sub, err := _ServiceChainNFTNoURI.contract.WatchLogs(opts, "MinterAdded", accountRule)
  8574  	if err != nil {
  8575  		return nil, err
  8576  	}
  8577  	return event.NewSubscription(func(quit <-chan struct{}) error {
  8578  		defer sub.Unsubscribe()
  8579  		for {
  8580  			select {
  8581  			case log := <-logs:
  8582  				// New log arrived, parse the event and forward to the user
  8583  				event := new(ServiceChainNFTNoURIMinterAdded)
  8584  				if err := _ServiceChainNFTNoURI.contract.UnpackLog(event, "MinterAdded", log); err != nil {
  8585  					return err
  8586  				}
  8587  				event.Raw = log
  8588  
  8589  				select {
  8590  				case sink <- event:
  8591  				case err := <-sub.Err():
  8592  					return err
  8593  				case <-quit:
  8594  					return nil
  8595  				}
  8596  			case err := <-sub.Err():
  8597  				return err
  8598  			case <-quit:
  8599  				return nil
  8600  			}
  8601  		}
  8602  	}), nil
  8603  }
  8604  
  8605  // ParseMinterAdded is a log parse operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
  8606  //
  8607  // Solidity: event MinterAdded(address indexed account)
  8608  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURIFilterer) ParseMinterAdded(log types.Log) (*ServiceChainNFTNoURIMinterAdded, error) {
  8609  	event := new(ServiceChainNFTNoURIMinterAdded)
  8610  	if err := _ServiceChainNFTNoURI.contract.UnpackLog(event, "MinterAdded", log); err != nil {
  8611  		return nil, err
  8612  	}
  8613  	return event, nil
  8614  }
  8615  
  8616  // ServiceChainNFTNoURIMinterRemovedIterator is returned from FilterMinterRemoved and is used to iterate over the raw logs and unpacked data for MinterRemoved events raised by the ServiceChainNFTNoURI contract.
  8617  type ServiceChainNFTNoURIMinterRemovedIterator struct {
  8618  	Event *ServiceChainNFTNoURIMinterRemoved // Event containing the contract specifics and raw log
  8619  
  8620  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  8621  	event    string              // Event name to use for unpacking event data
  8622  
  8623  	logs chan types.Log      // Log channel receiving the found contract events
  8624  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  8625  	done bool                // Whether the subscription completed delivering logs
  8626  	fail error               // Occurred error to stop iteration
  8627  }
  8628  
  8629  // Next advances the iterator to the subsequent event, returning whether there
  8630  // are any more events found. In case of a retrieval or parsing error, false is
  8631  // returned and Error() can be queried for the exact failure.
  8632  func (it *ServiceChainNFTNoURIMinterRemovedIterator) Next() bool {
  8633  	// If the iterator failed, stop iterating
  8634  	if it.fail != nil {
  8635  		return false
  8636  	}
  8637  	// If the iterator completed, deliver directly whatever's available
  8638  	if it.done {
  8639  		select {
  8640  		case log := <-it.logs:
  8641  			it.Event = new(ServiceChainNFTNoURIMinterRemoved)
  8642  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8643  				it.fail = err
  8644  				return false
  8645  			}
  8646  			it.Event.Raw = log
  8647  			return true
  8648  
  8649  		default:
  8650  			return false
  8651  		}
  8652  	}
  8653  	// Iterator still in progress, wait for either a data or an error event
  8654  	select {
  8655  	case log := <-it.logs:
  8656  		it.Event = new(ServiceChainNFTNoURIMinterRemoved)
  8657  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8658  			it.fail = err
  8659  			return false
  8660  		}
  8661  		it.Event.Raw = log
  8662  		return true
  8663  
  8664  	case err := <-it.sub.Err():
  8665  		it.done = true
  8666  		it.fail = err
  8667  		return it.Next()
  8668  	}
  8669  }
  8670  
  8671  // Error returns any retrieval or parsing error occurred during filtering.
  8672  func (it *ServiceChainNFTNoURIMinterRemovedIterator) Error() error {
  8673  	return it.fail
  8674  }
  8675  
  8676  // Close terminates the iteration process, releasing any pending underlying
  8677  // resources.
  8678  func (it *ServiceChainNFTNoURIMinterRemovedIterator) Close() error {
  8679  	it.sub.Unsubscribe()
  8680  	return nil
  8681  }
  8682  
  8683  // ServiceChainNFTNoURIMinterRemoved represents a MinterRemoved event raised by the ServiceChainNFTNoURI contract.
  8684  type ServiceChainNFTNoURIMinterRemoved struct {
  8685  	Account common.Address
  8686  	Raw     types.Log // Blockchain specific contextual infos
  8687  }
  8688  
  8689  // FilterMinterRemoved is a free log retrieval operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
  8690  //
  8691  // Solidity: event MinterRemoved(address indexed account)
  8692  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURIFilterer) FilterMinterRemoved(opts *bind.FilterOpts, account []common.Address) (*ServiceChainNFTNoURIMinterRemovedIterator, error) {
  8693  
  8694  	var accountRule []interface{}
  8695  	for _, accountItem := range account {
  8696  		accountRule = append(accountRule, accountItem)
  8697  	}
  8698  
  8699  	logs, sub, err := _ServiceChainNFTNoURI.contract.FilterLogs(opts, "MinterRemoved", accountRule)
  8700  	if err != nil {
  8701  		return nil, err
  8702  	}
  8703  	return &ServiceChainNFTNoURIMinterRemovedIterator{contract: _ServiceChainNFTNoURI.contract, event: "MinterRemoved", logs: logs, sub: sub}, nil
  8704  }
  8705  
  8706  // WatchMinterRemoved is a free log subscription operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
  8707  //
  8708  // Solidity: event MinterRemoved(address indexed account)
  8709  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURIFilterer) WatchMinterRemoved(opts *bind.WatchOpts, sink chan<- *ServiceChainNFTNoURIMinterRemoved, account []common.Address) (event.Subscription, error) {
  8710  
  8711  	var accountRule []interface{}
  8712  	for _, accountItem := range account {
  8713  		accountRule = append(accountRule, accountItem)
  8714  	}
  8715  
  8716  	logs, sub, err := _ServiceChainNFTNoURI.contract.WatchLogs(opts, "MinterRemoved", accountRule)
  8717  	if err != nil {
  8718  		return nil, err
  8719  	}
  8720  	return event.NewSubscription(func(quit <-chan struct{}) error {
  8721  		defer sub.Unsubscribe()
  8722  		for {
  8723  			select {
  8724  			case log := <-logs:
  8725  				// New log arrived, parse the event and forward to the user
  8726  				event := new(ServiceChainNFTNoURIMinterRemoved)
  8727  				if err := _ServiceChainNFTNoURI.contract.UnpackLog(event, "MinterRemoved", log); err != nil {
  8728  					return err
  8729  				}
  8730  				event.Raw = log
  8731  
  8732  				select {
  8733  				case sink <- event:
  8734  				case err := <-sub.Err():
  8735  					return err
  8736  				case <-quit:
  8737  					return nil
  8738  				}
  8739  			case err := <-sub.Err():
  8740  				return err
  8741  			case <-quit:
  8742  				return nil
  8743  			}
  8744  		}
  8745  	}), nil
  8746  }
  8747  
  8748  // ParseMinterRemoved is a log parse operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
  8749  //
  8750  // Solidity: event MinterRemoved(address indexed account)
  8751  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURIFilterer) ParseMinterRemoved(log types.Log) (*ServiceChainNFTNoURIMinterRemoved, error) {
  8752  	event := new(ServiceChainNFTNoURIMinterRemoved)
  8753  	if err := _ServiceChainNFTNoURI.contract.UnpackLog(event, "MinterRemoved", log); err != nil {
  8754  		return nil, err
  8755  	}
  8756  	return event, nil
  8757  }
  8758  
  8759  // ServiceChainNFTNoURIOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the ServiceChainNFTNoURI contract.
  8760  type ServiceChainNFTNoURIOwnershipTransferredIterator struct {
  8761  	Event *ServiceChainNFTNoURIOwnershipTransferred // Event containing the contract specifics and raw log
  8762  
  8763  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  8764  	event    string              // Event name to use for unpacking event data
  8765  
  8766  	logs chan types.Log      // Log channel receiving the found contract events
  8767  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  8768  	done bool                // Whether the subscription completed delivering logs
  8769  	fail error               // Occurred error to stop iteration
  8770  }
  8771  
  8772  // Next advances the iterator to the subsequent event, returning whether there
  8773  // are any more events found. In case of a retrieval or parsing error, false is
  8774  // returned and Error() can be queried for the exact failure.
  8775  func (it *ServiceChainNFTNoURIOwnershipTransferredIterator) Next() bool {
  8776  	// If the iterator failed, stop iterating
  8777  	if it.fail != nil {
  8778  		return false
  8779  	}
  8780  	// If the iterator completed, deliver directly whatever's available
  8781  	if it.done {
  8782  		select {
  8783  		case log := <-it.logs:
  8784  			it.Event = new(ServiceChainNFTNoURIOwnershipTransferred)
  8785  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8786  				it.fail = err
  8787  				return false
  8788  			}
  8789  			it.Event.Raw = log
  8790  			return true
  8791  
  8792  		default:
  8793  			return false
  8794  		}
  8795  	}
  8796  	// Iterator still in progress, wait for either a data or an error event
  8797  	select {
  8798  	case log := <-it.logs:
  8799  		it.Event = new(ServiceChainNFTNoURIOwnershipTransferred)
  8800  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8801  			it.fail = err
  8802  			return false
  8803  		}
  8804  		it.Event.Raw = log
  8805  		return true
  8806  
  8807  	case err := <-it.sub.Err():
  8808  		it.done = true
  8809  		it.fail = err
  8810  		return it.Next()
  8811  	}
  8812  }
  8813  
  8814  // Error returns any retrieval or parsing error occurred during filtering.
  8815  func (it *ServiceChainNFTNoURIOwnershipTransferredIterator) Error() error {
  8816  	return it.fail
  8817  }
  8818  
  8819  // Close terminates the iteration process, releasing any pending underlying
  8820  // resources.
  8821  func (it *ServiceChainNFTNoURIOwnershipTransferredIterator) Close() error {
  8822  	it.sub.Unsubscribe()
  8823  	return nil
  8824  }
  8825  
  8826  // ServiceChainNFTNoURIOwnershipTransferred represents a OwnershipTransferred event raised by the ServiceChainNFTNoURI contract.
  8827  type ServiceChainNFTNoURIOwnershipTransferred struct {
  8828  	PreviousOwner common.Address
  8829  	NewOwner      common.Address
  8830  	Raw           types.Log // Blockchain specific contextual infos
  8831  }
  8832  
  8833  // FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  8834  //
  8835  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  8836  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURIFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*ServiceChainNFTNoURIOwnershipTransferredIterator, error) {
  8837  
  8838  	var previousOwnerRule []interface{}
  8839  	for _, previousOwnerItem := range previousOwner {
  8840  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  8841  	}
  8842  	var newOwnerRule []interface{}
  8843  	for _, newOwnerItem := range newOwner {
  8844  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  8845  	}
  8846  
  8847  	logs, sub, err := _ServiceChainNFTNoURI.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  8848  	if err != nil {
  8849  		return nil, err
  8850  	}
  8851  	return &ServiceChainNFTNoURIOwnershipTransferredIterator{contract: _ServiceChainNFTNoURI.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil
  8852  }
  8853  
  8854  // WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  8855  //
  8856  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  8857  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURIFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *ServiceChainNFTNoURIOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) {
  8858  
  8859  	var previousOwnerRule []interface{}
  8860  	for _, previousOwnerItem := range previousOwner {
  8861  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  8862  	}
  8863  	var newOwnerRule []interface{}
  8864  	for _, newOwnerItem := range newOwner {
  8865  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  8866  	}
  8867  
  8868  	logs, sub, err := _ServiceChainNFTNoURI.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  8869  	if err != nil {
  8870  		return nil, err
  8871  	}
  8872  	return event.NewSubscription(func(quit <-chan struct{}) error {
  8873  		defer sub.Unsubscribe()
  8874  		for {
  8875  			select {
  8876  			case log := <-logs:
  8877  				// New log arrived, parse the event and forward to the user
  8878  				event := new(ServiceChainNFTNoURIOwnershipTransferred)
  8879  				if err := _ServiceChainNFTNoURI.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  8880  					return err
  8881  				}
  8882  				event.Raw = log
  8883  
  8884  				select {
  8885  				case sink <- event:
  8886  				case err := <-sub.Err():
  8887  					return err
  8888  				case <-quit:
  8889  					return nil
  8890  				}
  8891  			case err := <-sub.Err():
  8892  				return err
  8893  			case <-quit:
  8894  				return nil
  8895  			}
  8896  		}
  8897  	}), nil
  8898  }
  8899  
  8900  // ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  8901  //
  8902  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  8903  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURIFilterer) ParseOwnershipTransferred(log types.Log) (*ServiceChainNFTNoURIOwnershipTransferred, error) {
  8904  	event := new(ServiceChainNFTNoURIOwnershipTransferred)
  8905  	if err := _ServiceChainNFTNoURI.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  8906  		return nil, err
  8907  	}
  8908  	return event, nil
  8909  }
  8910  
  8911  // ServiceChainNFTNoURITransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ServiceChainNFTNoURI contract.
  8912  type ServiceChainNFTNoURITransferIterator struct {
  8913  	Event *ServiceChainNFTNoURITransfer // Event containing the contract specifics and raw log
  8914  
  8915  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  8916  	event    string              // Event name to use for unpacking event data
  8917  
  8918  	logs chan types.Log      // Log channel receiving the found contract events
  8919  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  8920  	done bool                // Whether the subscription completed delivering logs
  8921  	fail error               // Occurred error to stop iteration
  8922  }
  8923  
  8924  // Next advances the iterator to the subsequent event, returning whether there
  8925  // are any more events found. In case of a retrieval or parsing error, false is
  8926  // returned and Error() can be queried for the exact failure.
  8927  func (it *ServiceChainNFTNoURITransferIterator) Next() bool {
  8928  	// If the iterator failed, stop iterating
  8929  	if it.fail != nil {
  8930  		return false
  8931  	}
  8932  	// If the iterator completed, deliver directly whatever's available
  8933  	if it.done {
  8934  		select {
  8935  		case log := <-it.logs:
  8936  			it.Event = new(ServiceChainNFTNoURITransfer)
  8937  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8938  				it.fail = err
  8939  				return false
  8940  			}
  8941  			it.Event.Raw = log
  8942  			return true
  8943  
  8944  		default:
  8945  			return false
  8946  		}
  8947  	}
  8948  	// Iterator still in progress, wait for either a data or an error event
  8949  	select {
  8950  	case log := <-it.logs:
  8951  		it.Event = new(ServiceChainNFTNoURITransfer)
  8952  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8953  			it.fail = err
  8954  			return false
  8955  		}
  8956  		it.Event.Raw = log
  8957  		return true
  8958  
  8959  	case err := <-it.sub.Err():
  8960  		it.done = true
  8961  		it.fail = err
  8962  		return it.Next()
  8963  	}
  8964  }
  8965  
  8966  // Error returns any retrieval or parsing error occurred during filtering.
  8967  func (it *ServiceChainNFTNoURITransferIterator) Error() error {
  8968  	return it.fail
  8969  }
  8970  
  8971  // Close terminates the iteration process, releasing any pending underlying
  8972  // resources.
  8973  func (it *ServiceChainNFTNoURITransferIterator) Close() error {
  8974  	it.sub.Unsubscribe()
  8975  	return nil
  8976  }
  8977  
  8978  // ServiceChainNFTNoURITransfer represents a Transfer event raised by the ServiceChainNFTNoURI contract.
  8979  type ServiceChainNFTNoURITransfer struct {
  8980  	From    common.Address
  8981  	To      common.Address
  8982  	TokenId *big.Int
  8983  	Raw     types.Log // Blockchain specific contextual infos
  8984  }
  8985  
  8986  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  8987  //
  8988  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  8989  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURIFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ServiceChainNFTNoURITransferIterator, error) {
  8990  
  8991  	var fromRule []interface{}
  8992  	for _, fromItem := range from {
  8993  		fromRule = append(fromRule, fromItem)
  8994  	}
  8995  	var toRule []interface{}
  8996  	for _, toItem := range to {
  8997  		toRule = append(toRule, toItem)
  8998  	}
  8999  	var tokenIdRule []interface{}
  9000  	for _, tokenIdItem := range tokenId {
  9001  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  9002  	}
  9003  
  9004  	logs, sub, err := _ServiceChainNFTNoURI.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  9005  	if err != nil {
  9006  		return nil, err
  9007  	}
  9008  	return &ServiceChainNFTNoURITransferIterator{contract: _ServiceChainNFTNoURI.contract, event: "Transfer", logs: logs, sub: sub}, nil
  9009  }
  9010  
  9011  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  9012  //
  9013  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  9014  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURIFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ServiceChainNFTNoURITransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  9015  
  9016  	var fromRule []interface{}
  9017  	for _, fromItem := range from {
  9018  		fromRule = append(fromRule, fromItem)
  9019  	}
  9020  	var toRule []interface{}
  9021  	for _, toItem := range to {
  9022  		toRule = append(toRule, toItem)
  9023  	}
  9024  	var tokenIdRule []interface{}
  9025  	for _, tokenIdItem := range tokenId {
  9026  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  9027  	}
  9028  
  9029  	logs, sub, err := _ServiceChainNFTNoURI.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  9030  	if err != nil {
  9031  		return nil, err
  9032  	}
  9033  	return event.NewSubscription(func(quit <-chan struct{}) error {
  9034  		defer sub.Unsubscribe()
  9035  		for {
  9036  			select {
  9037  			case log := <-logs:
  9038  				// New log arrived, parse the event and forward to the user
  9039  				event := new(ServiceChainNFTNoURITransfer)
  9040  				if err := _ServiceChainNFTNoURI.contract.UnpackLog(event, "Transfer", log); err != nil {
  9041  					return err
  9042  				}
  9043  				event.Raw = log
  9044  
  9045  				select {
  9046  				case sink <- event:
  9047  				case err := <-sub.Err():
  9048  					return err
  9049  				case <-quit:
  9050  					return nil
  9051  				}
  9052  			case err := <-sub.Err():
  9053  				return err
  9054  			case <-quit:
  9055  				return nil
  9056  			}
  9057  		}
  9058  	}), nil
  9059  }
  9060  
  9061  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  9062  //
  9063  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  9064  func (_ServiceChainNFTNoURI *ServiceChainNFTNoURIFilterer) ParseTransfer(log types.Log) (*ServiceChainNFTNoURITransfer, error) {
  9065  	event := new(ServiceChainNFTNoURITransfer)
  9066  	if err := _ServiceChainNFTNoURI.contract.UnpackLog(event, "Transfer", log); err != nil {
  9067  		return nil, err
  9068  	}
  9069  	return event, nil
  9070  }