2016-03-21 14:34:49 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								// Copyright 2016 The go-ethereum Authors  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// This file is part of the go-ethereum library.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// The go-ethereum library is free software: you can redistribute it and/or modify  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// it under the terms of the GNU Lesser General Public License as published by  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// the Free Software Foundation, either version 3 of the License, or  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// (at your option) any later version.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// The go-ethereum library is distributed in the hope that it will be useful,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// but WITHOUT ANY WARRANTY; without even the implied warranty of  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// GNU Lesser General Public License for more details.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// You should have received a copy of the GNU Lesser General Public License  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								package  bind  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								import  "github.com/ethereum/go-ethereum/accounts/abi"  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// tmplData is the data structure required to fill the binding template.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								type  tmplData  struct  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Package    string                    // Name of the package to place the generated file in 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Contracts  map [ string ] * tmplContract  // List of contracts to generate into this file 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// tmplContract contains the data needed to generate an individual contract binding.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								type  tmplContract  struct  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Type         string                  // Type name of the main contract binding 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									InputABI     string                  // JSON ABI used as the input to generate the binding from 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									InputBin     string                  // Optional EVM bytecode used to denetare deploy code from 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Constructor  abi . Method              // Contract constructor for deploy parametrization 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Calls        map [ string ] * tmplMethod  // Contract calls that only read state data 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Transacts    map [ string ] * tmplMethod  // Contract calls that write state data 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-05 12:39:24 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Events       map [ string ] * tmplEvent   // Contract events accessors 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-21 14:34:49 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// tmplMethod is a wrapper around an abi.Method that contains a few preprocessed  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// and cached data fields.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								type  tmplMethod  struct  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Original    abi . Method  // Original method as parsed by the abi package 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Normalized  abi . Method  // Normalized version of the parsed method (capitalized names, non-anonymous args/returns) 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-05 12:39:24 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Structured  bool        // Whether the returns should be accumulated into a struct 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// tmplEvent is a wrapper around an a  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								type  tmplEvent  struct  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Original    abi . Event  // Original event as parsed by the abi package 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Normalized  abi . Event  // Normalized version of the parsed fields 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-21 14:34:49 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-09-05 19:07:57 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// tmplSource is language to template mapping containing all the supported  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// programming languages the package can generate to.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  tmplSource  =  map [ Lang ] string {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									LangGo :    tmplSourceGo , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									LangJava :  tmplSourceJava , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// tmplSourceGo is the Go source template use to generate the contract binding  
						 
					
						
							
								
									
										
										
										
											2016-03-21 14:34:49 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								// based on.  
						 
					
						
							
								
									
										
										
										
											2016-09-05 19:07:57 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								const  tmplSourceGo  =  `  
						 
					
						
							
								
									
										
										
										
											2017-07-24 08:09:03 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// Code generated - DO NOT EDIT.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// This file is a generated binding and any manual changes will be lost.  
						 
					
						
							
								
									
										
										
										
											2016-03-21 14:34:49 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								package  { { . Package } }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-10-05 13:24:54 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								import  (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"math/big" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"strings" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ethereum  "github.com/ethereum/go-ethereum" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"github.com/ethereum/go-ethereum/accounts/abi" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"github.com/ethereum/go-ethereum/accounts/abi/bind" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"github.com/ethereum/go-ethereum/common" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"github.com/ethereum/go-ethereum/core/types" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"github.com/ethereum/go-ethereum/event" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Reference imports to suppress errors if they are not otherwise used.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									_  =  big . NewInt 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									_  =  strings . NewReader 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									_  =  ethereum . NotFound 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									_  =  abi . U256 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									_  =  bind . Bind 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									_  =  common . Big1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									_  =  types . BloomLookup 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									_  =  event . NewSubscription 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-21 14:34:49 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{ { range  $ contract  :=  . Contracts } }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// {{.Type}}ABI is the input ABI used to generate the binding from. 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-05 19:07:57 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									const  { { . Type } } ABI  =  "{{.InputABI}}" 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-21 14:34:49 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ { if  . InputBin } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// {{.Type}}Bin is the compiled bytecode used for deploying new contracts. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										const  { { . Type } } Bin  =  `  + " ` " + `{{.InputBin}}` + " ` " +  ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// Deploy{{.Type}} deploys a new Ethereum contract, binding an instance of {{.Type}} to it. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										func  Deploy { { . Type } } ( auth  * bind . TransactOpts ,  backend  bind . ContractBackend  { { range  . Constructor . Inputs } } ,  { { . Name } }  { { bindtype  . Type } } { { end } } )  ( common . Address ,  * types . Transaction ,  * { { . Type } } ,  error )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										  parsed ,  err  :=  abi . JSON ( strings . NewReader ( { { . Type } } ABI ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										  if  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										    return  common . Address { } ,  nil ,  nil ,  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										  address ,  tx ,  contract ,  err  :=  bind . DeployContract ( auth ,  parsed ,  common . FromHex ( { { . Type } } Bin ) ,  backend  { { range  . Constructor . Inputs } } ,  { { . Name } } { { end } } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										  if  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										    return  common . Address { } ,  nil ,  nil ,  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										  } 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-05 12:39:24 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										  return  address ,  tx ,  & { { . Type } } {  { { . Type } } Caller :  { { . Type } } Caller { contract :  contract } ,  { { . Type } } Transactor :  { { . Type } } Transactor { contract :  contract } ,  { { . Type } } Filterer :  { { . Type } } Filterer { contract :  contract }  } ,  nil 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-21 14:34:49 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ { end } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// {{.Type}} is an auto generated Go binding around an Ethereum contract. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									type  { { . Type } }  struct  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									  { { . Type } } Caller      // Read-only binding to the contract 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									  { { . Type } } Transactor  // Write-only binding to the contract 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-05 12:39:24 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										{ { . Type } } Filterer    // Log filterer for contract events 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-21 14:34:49 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// {{.Type}}Caller is an auto generated read-only Go binding around an Ethereum contract. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									type  { { . Type } } Caller  struct  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									  contract  * bind . BoundContract  // Generic contract wrapper for the low level calls 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// {{.Type}}Transactor is an auto generated write-only Go binding around an Ethereum contract. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									type  { { . Type } } Transactor  struct  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									  contract  * bind . BoundContract  // Generic contract wrapper for the low level calls 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-01-05 12:39:24 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// {{.Type}}Filterer is an auto generated log filtering Go binding around an Ethereum contract events. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									type  { { . Type } } Filterer  struct  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									  contract  * bind . BoundContract  // Generic contract wrapper for the low level calls 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-21 14:34:49 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									// {{.Type}}Session is an auto generated Go binding around an Ethereum contract, 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// with pre-set call and transact options. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									type  { { . Type } } Session  struct  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									  Contract      * { { . Type } }         // Generic contract binding to set the session for 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									  CallOpts      bind . CallOpts      // Call options to use throughout this session 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									  TransactOpts  bind . TransactOpts  // Transaction auth options to use throughout this session 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// {{.Type}}CallerSession is an auto generated read-only Go binding around an Ethereum contract, 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// with pre-set call options. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									type  { { . Type } } CallerSession  struct  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									  Contract  * { { . Type } } Caller  // Generic contract caller binding to set the session for 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									  CallOpts  bind . CallOpts     // Call options to use throughout this session 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// {{.Type}}TransactorSession is an auto generated write-only Go binding around an Ethereum contract, 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// with pre-set transact options. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									type  { { . Type } } TransactorSession  struct  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									  Contract      * { { . Type } } Transactor  // Generic contract transactor binding to set the session for 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									  TransactOpts  bind . TransactOpts     // Transaction auth options to use throughout this session 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-01 13:02:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// {{.Type}}Raw is an auto generated low-level Go binding around an Ethereum contract. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									type  { { . Type } } Raw  struct  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									  Contract  * { { . Type } }  // Generic contract binding to access the raw methods on 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// {{.Type}}CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									type  { { . Type } } CallerRaw  struct  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Contract  * { { . Type } } Caller  // Generic read-only contract binding to access the raw methods on 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// {{.Type}}TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									type  { { . Type } } TransactorRaw  struct  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Contract  * { { . Type } } Transactor  // Generic write-only contract binding to access the raw methods on 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-21 14:34:49 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									// New{{.Type}} creates a new instance of {{.Type}}, bound to a specific deployed contract. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									func  New { { . Type } } ( address  common . Address ,  backend  bind . ContractBackend )  ( * { { . Type } } ,  error )  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-05 12:39:24 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									  contract ,  err  :=  bind { { . Type } } ( address ,  backend ,  backend ,  backend ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-21 14:34:49 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									  if  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									    return  nil ,  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									  } 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-05 12:39:24 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									  return  & { { . Type } } {  { { . Type } } Caller :  { { . Type } } Caller { contract :  contract } ,  { { . Type } } Transactor :  { { . Type } } Transactor { contract :  contract } ,  { { . Type } } Filterer :  { { . Type } } Filterer { contract :  contract }  } ,  nil 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-21 14:34:49 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// New{{.Type}}Caller creates a new read-only instance of {{.Type}}, bound to a specific deployed contract. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									func  New { { . Type } } Caller ( address  common . Address ,  caller  bind . ContractCaller )  ( * { { . Type } } Caller ,  error )  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-05 12:39:24 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									  contract ,  err  :=  bind { { . Type } } ( address ,  caller ,  nil ,  nil ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-21 14:34:49 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									  if  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									    return  nil ,  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									  return  & { { . Type } } Caller { contract :  contract } ,  nil 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// New{{.Type}}Transactor creates a new write-only instance of {{.Type}}, bound to a specific deployed contract. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									func  New { { . Type } } Transactor ( address  common . Address ,  transactor  bind . ContractTransactor )  ( * { { . Type } } Transactor ,  error )  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-05 12:39:24 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									  contract ,  err  :=  bind { { . Type } } ( address ,  nil ,  transactor ,  nil ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-21 14:34:49 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									  if  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									    return  nil ,  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									  return  & { { . Type } } Transactor { contract :  contract } ,  nil 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-01-05 12:39:24 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// New{{.Type}}Filterer creates a new log filterer instance of {{.Type}}, bound to a specific deployed contract. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 	func  New { { . Type } } Filterer ( address  common . Address ,  filterer  bind . ContractFilterer )  ( * { { . Type } } Filterer ,  error )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 	  contract ,  err  :=  bind { { . Type } } ( address ,  nil ,  nil ,  filterer ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 	  if  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 	    return  nil ,  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 	  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 	  return  & { { . Type } } Filterer { contract :  contract } ,  nil 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 	} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-21 14:34:49 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									// bind{{.Type}} binds a generic wrapper to an already deployed contract. 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-05 12:39:24 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									func  bind { { . Type } } ( address  common . Address ,  caller  bind . ContractCaller ,  transactor  bind . ContractTransactor ,  filterer  bind . ContractFilterer )  ( * bind . BoundContract ,  error )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-21 14:34:49 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									  parsed ,  err  :=  abi . JSON ( strings . NewReader ( { { . Type } } ABI ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									  if  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									    return  nil ,  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									  } 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-05 12:39:24 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									  return  bind . NewBoundContract ( address ,  parsed ,  caller ,  transactor ,  filterer ) ,  nil 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-21 14:34:49 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-01 13:02:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// Call invokes the (constant) contract method with params as input values and 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// sets the output to result. The result type might be a single field for simple 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// returns, a slice of interfaces for anonymous returns and a struct for named 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// returns. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									func  ( _ { { $ contract . Type } }  * { { $ contract . Type } } Raw )  Call ( opts  * bind . CallOpts ,  result  interface { } ,  method  string ,  params  ... interface { } )  error  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  _ { { $ contract . Type } } . Contract . { { $ contract . Type } } Caller . contract . Call ( opts ,  result ,  method ,  params ... ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// Transfer initiates a plain transaction to move funds to the contract, calling 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// its default method if one is available. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									func  ( _ { { $ contract . Type } }  * { { $ contract . Type } } Raw )  Transfer ( opts  * bind . TransactOpts )  ( * types . Transaction ,  error )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  _ { { $ contract . Type } } . Contract . { { $ contract . Type } } Transactor . contract . Transfer ( opts ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// Transact invokes the (paid) contract method with params as input values. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									func  ( _ { { $ contract . Type } }  * { { $ contract . Type } } Raw )  Transact ( opts  * bind . TransactOpts ,  method  string ,  params  ... interface { } )  ( * types . Transaction ,  error )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  _ { { $ contract . Type } } . Contract . { { $ contract . Type } } Transactor . contract . Transact ( opts ,  method ,  params ... ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// Call invokes the (constant) contract method with params as input values and 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// sets the output to result. The result type might be a single field for simple 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// returns, a slice of interfaces for anonymous returns and a struct for named 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// returns. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									func  ( _ { { $ contract . Type } }  * { { $ contract . Type } } CallerRaw )  Call ( opts  * bind . CallOpts ,  result  interface { } ,  method  string ,  params  ... interface { } )  error  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  _ { { $ contract . Type } } . Contract . contract . Call ( opts ,  result ,  method ,  params ... ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// Transfer initiates a plain transaction to move funds to the contract, calling 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// its default method if one is available. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									func  ( _ { { $ contract . Type } }  * { { $ contract . Type } } TransactorRaw )  Transfer ( opts  * bind . TransactOpts )  ( * types . Transaction ,  error )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  _ { { $ contract . Type } } . Contract . contract . Transfer ( opts ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// Transact invokes the (paid) contract method with params as input values. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									func  ( _ { { $ contract . Type } }  * { { $ contract . Type } } TransactorRaw )  Transact ( opts  * bind . TransactOpts ,  method  string ,  params  ... interface { } )  ( * types . Transaction ,  error )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  _ { { $ contract . Type } } . Contract . contract . Transact ( opts ,  method ,  params ... ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-21 14:34:49 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									{ { range  . Calls } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// {{.Normalized.Name}} is a free data retrieval call binding the contract method 0x{{printf "%x" .Original.Id}}. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// Solidity: {{.Original.String}} 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-31 12:45:30 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										func  ( _ { { $ contract . Type } }  * { { $ contract . Type } } Caller )  { { . Normalized . Name } } ( opts  * bind . CallOpts  { { range  . Normalized . Inputs } } ,  { { . Name } }  { { bindtype  . Type } }  { { end } } )  ( { { if  . Structured } } struct {  { { range  . Normalized . Outputs } } { { . Name } }  { { bindtype  . Type } } ; { { end } }  } , { { else } } { { range  . Normalized . Outputs } } { { bindtype  . Type } } , { { end } } { { end } }  error )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											{ { if  . Structured } } ret  :=  new ( struct { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												{ { range  . Normalized . Outputs } } { { . Name } }  { { bindtype  . Type } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												{ { end } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} ) { { else } } var  ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												{ { range  $ i ,  $ _  :=  . Normalized . Outputs } } ret { { $ i } }  =  new ( { { bindtype  . Type } } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												{ { end } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											) { { end } } 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-12 16:28:18 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											out  :=  { { if  . Structured } } ret { { else } } { { if  eq  ( len  . Normalized . Outputs )  1 } } ret0 { { else } } & [ ] interface { } { 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-21 14:34:49 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
												{ { range  $ i ,  $ _  :=  . Normalized . Outputs } } ret { { $ i } } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												{ { end } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} { { end } } { { end } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											err  :=  _ { { $ contract . Type } } . contract . Call ( opts ,  out ,  "{{.Original.Name}}"  { { range  . Normalized . Inputs } } ,  { { . Name } } { { end } } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  { { if  . Structured } } * ret , { { else } } { { range  $ i ,  $ _  :=  . Normalized . Outputs } } * ret { { $ i } } , { { end } } { { end } }  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// {{.Normalized.Name}} is a free data retrieval call binding the contract method 0x{{printf "%x" .Original.Id}}. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// Solidity: {{.Original.String}} 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-31 12:45:30 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										func  ( _ { { $ contract . Type } }  * { { $ contract . Type } } Session )  { { . Normalized . Name } } ( { { range  $ i ,  $ _  :=  . Normalized . Inputs } } { { if  ne  $ i  0 } } , { { end } }  { { . Name } }  { { bindtype  . Type } }  { { end } } )  ( { { if  . Structured } } struct {  { { range  . Normalized . Outputs } } { { . Name } }  { { bindtype  . Type } } ; { { end } }  } ,  { { else } }  { { range  . Normalized . Outputs } } { { bindtype  . Type } } , { { end } }  { { end } }  error )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-21 14:34:49 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										  return  _ { { $ contract . Type } } . Contract . { { . Normalized . Name } } ( & _ { { $ contract . Type } } . CallOpts  { { range  . Normalized . Inputs } } ,  { { . Name } } { { end } } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// {{.Normalized.Name}} is a free data retrieval call binding the contract method 0x{{printf "%x" .Original.Id}}. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// Solidity: {{.Original.String}} 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-31 12:45:30 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										func  ( _ { { $ contract . Type } }  * { { $ contract . Type } } CallerSession )  { { . Normalized . Name } } ( { { range  $ i ,  $ _  :=  . Normalized . Inputs } } { { if  ne  $ i  0 } } , { { end } }  { { . Name } }  { { bindtype  . Type } }  { { end } } )  ( { { if  . Structured } } struct {  { { range  . Normalized . Outputs } } { { . Name } }  { { bindtype  . Type } } ; { { end } }  } ,  { { else } }  { { range  . Normalized . Outputs } } { { bindtype  . Type } } , { { end } }  { { end } }  error )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-21 14:34:49 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										  return  _ { { $ contract . Type } } . Contract . { { . Normalized . Name } } ( & _ { { $ contract . Type } } . CallOpts  { { range  . Normalized . Inputs } } ,  { { . Name } } { { end } } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ { end } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ { range  . Transacts } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// {{.Normalized.Name}} is a paid mutator transaction binding the contract method 0x{{printf "%x" .Original.Id}}. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// Solidity: {{.Original.String}} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										func  ( _ { { $ contract . Type } }  * { { $ contract . Type } } Transactor )  { { . Normalized . Name } } ( opts  * bind . TransactOpts  { { range  . Normalized . Inputs } } ,  { { . Name } }  { { bindtype  . Type } }  { { end } } )  ( * types . Transaction ,  error )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  _ { { $ contract . Type } } . contract . Transact ( opts ,  "{{.Original.Name}}"  { { range  . Normalized . Inputs } } ,  { { . Name } } { { end } } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// {{.Normalized.Name}} is a paid mutator transaction binding the contract method 0x{{printf "%x" .Original.Id}}. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// Solidity: {{.Original.String}} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										func  ( _ { { $ contract . Type } }  * { { $ contract . Type } } Session )  { { . Normalized . Name } } ( { { range  $ i ,  $ _  :=  . Normalized . Inputs } } { { if  ne  $ i  0 } } , { { end } }  { { . Name } }  { { bindtype  . Type } }  { { end } } )  ( * types . Transaction ,  error )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										  return  _ { { $ contract . Type } } . Contract . { { . Normalized . Name } } ( & _ { { $ contract . Type } } . TransactOpts  { { range  $ i ,  $ _  :=  . Normalized . Inputs } } ,  { { . Name } } { { end } } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// {{.Normalized.Name}} is a paid mutator transaction binding the contract method 0x{{printf "%x" .Original.Id}}. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// Solidity: {{.Original.String}} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										func  ( _ { { $ contract . Type } }  * { { $ contract . Type } } TransactorSession )  { { . Normalized . Name } } ( { { range  $ i ,  $ _  :=  . Normalized . Inputs } } { { if  ne  $ i  0 } } , { { end } }  { { . Name } }  { { bindtype  . Type } }  { { end } } )  ( * types . Transaction ,  error )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										  return  _ { { $ contract . Type } } . Contract . { { . Normalized . Name } } ( & _ { { $ contract . Type } } . TransactOpts  { { range  $ i ,  $ _  :=  . Normalized . Inputs } } ,  { { . Name } } { { end } } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ { end } } 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-05 12:39:24 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ { range  . Events } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// {{$contract.Type}}{{.Normalized.Name}}Iterator is returned from Filter{{.Normalized.Name}} and is used to iterate over the raw logs and unpacked data for {{.Normalized.Name}} events raised by the {{$contract.Type}} contract. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										type  { { $ contract . Type } } { { . Normalized . Name } } Iterator  struct  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Event  * { { $ contract . Type } } { { . Normalized . Name } }  // Event containing the contract specifics and raw log 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											contract  * bind . BoundContract  // Generic contract to use for unpacking event data 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											event     string               // Event name to use for unpacking event data 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											logs  chan  types . Log         // Log channel receiving the found contract events 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											sub   ethereum . Subscription  // Subscription for errors, completion and termination 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											done  bool                   // Whether the subscription completed delivering logs 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											fail  error                  // Occurred error to stop iteration 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// Next advances the iterator to the subsequent event, returning whether there 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// are any more events found. In case of a retrieval or parsing error, false is 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// returned and Error() can be queried for the exact failure. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										func  ( it  * { { $ contract . Type } } { { . Normalized . Name } } Iterator )  Next ( )  bool  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// If the iterator failed, stop iterating 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( it . fail  !=  nil )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												return  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// If the iterator completed, deliver directly whatever's available 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( it . done )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												select  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												case  log  :=  <- it . logs : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													it . Event  =  new ( { { $ contract . Type } } { { . Normalized . Name } } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													if  err  :=  it . contract . UnpackLog ( it . Event ,  it . event ,  log ) ;  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														it . fail  =  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														return  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													it . Event . Raw  =  log 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													return  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													return  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// Iterator still in progress, wait for either a data or an error event 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											select  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											case  log  :=  <- it . logs : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												it . Event  =  new ( { { $ contract . Type } } { { . Normalized . Name } } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  err  :=  it . contract . UnpackLog ( it . Event ,  it . event ,  log ) ;  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													it . fail  =  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													return  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												it . Event . Raw  =  log 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												return  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											case  err  :=  <- it . sub . Err ( ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												it . done  =  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												it . fail  =  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												return  it . Next ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// Error returns any retrieval or parsing error occurred during filtering. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										func  ( it  * { { $ contract . Type } } { { . Normalized . Name } } Iterator )  Error ( )  error  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  it . fail 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// Close terminates the iteration process, releasing any pending underlying 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// resources. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										func  ( it  * { { $ contract . Type } } { { . Normalized . Name } } Iterator )  Close ( )  error  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											it . sub . Unsubscribe ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  nil 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// {{$contract.Type}}{{.Normalized.Name}} represents a {{.Normalized.Name}} event raised by the {{$contract.Type}} contract. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										type  { { $ contract . Type } } { { . Normalized . Name } }  struct  {  { { range  . Normalized . Inputs } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											{ { capitalise  . Name } }  { { if  . Indexed } } { { bindtopictype  . Type } } { { else } } { { bindtype  . Type } } { { end } } ;  { { end } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Raw  types . Log  // Blockchain specific contextual infos 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// Filter{{.Normalized.Name}} is a free log retrieval operation binding the contract event 0x{{printf "%x" .Original.Id}}. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// Solidity: {{.Original.String}} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 		func  ( _ { { $ contract . Type } }  * { { $ contract . Type } } Filterer )  Filter { { . Normalized . Name } } ( opts  * bind . FilterOpts { { range  . Normalized . Inputs } } { { if  . Indexed } } ,  { { . Name } }  [ ] { { bindtype  . Type } } { { end } } { { end } } )  ( * { { $ contract . Type } } { { . Normalized . Name } } Iterator ,  error )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											{ { range  . Normalized . Inputs } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											{ { if  . Indexed } } var  { { . Name } } Rule  [ ] interface { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											for  _ ,  { { . Name } } Item  :=  range  { { . Name } }  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												{ { . Name } } Rule  =  append ( { { . Name } } Rule ,  { { . Name } } Item ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} { { end } } { { end } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											logs ,  sub ,  err  :=  _ { { $ contract . Type } } . contract . FilterLogs ( opts ,  "{{.Original.Name}}" { { range  . Normalized . Inputs } } { { if  . Indexed } } ,  { { . Name } } Rule { { end } } { { end } } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												return  nil ,  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  & { { $ contract . Type } } { { . Normalized . Name } } Iterator { contract :  _ { { $ contract . Type } } . contract ,  event :  "{{.Original.Name}}" ,  logs :  logs ,  sub :  sub } ,  nil 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 		} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// Watch{{.Normalized.Name}} is a free log subscription operation binding the contract event 0x{{printf "%x" .Original.Id}}. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// Solidity: {{.Original.String}} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										func  ( _ { { $ contract . Type } }  * { { $ contract . Type } } Filterer )  Watch { { . Normalized . Name } } ( opts  * bind . WatchOpts ,  sink  chan <-  * { { $ contract . Type } } { { . Normalized . Name } } { { range  . Normalized . Inputs } } { { if  . Indexed } } ,  { { . Name } }  [ ] { { bindtype  . Type } } { { end } } { { end } } )  ( event . Subscription ,  error )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											{ { range  . Normalized . Inputs } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											{ { if  . Indexed } } var  { { . Name } } Rule  [ ] interface { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											for  _ ,  { { . Name } } Item  :=  range  { { . Name } }  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												{ { . Name } } Rule  =  append ( { { . Name } } Rule ,  { { . Name } } Item ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} { { end } } { { end } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											logs ,  sub ,  err  :=  _ { { $ contract . Type } } . contract . WatchLogs ( opts ,  "{{.Original.Name}}" { { range  . Normalized . Inputs } } { { if  . Indexed } } ,  { { . Name } } Rule { { end } } { { end } } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												return  nil ,  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  event . NewSubscription ( func ( quit  <- chan  struct { } )  error  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												defer  sub . Unsubscribe ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												for  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													select  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													case  log  :=  <- logs : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														// New log arrived, parse the event and forward to the user 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														event  :=  new ( { { $ contract . Type } } { { . Normalized . Name } } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														if  err  :=  _ { { $ contract . Type } } . contract . UnpackLog ( event ,  "{{.Original.Name}}" ,  log ) ;  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
															return  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														event . Raw  =  log 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														select  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														case  sink  <-  event : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														case  err  :=  <- sub . Err ( ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
															return  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														case  <- quit : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
															return  nil 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													case  err  :=  <- sub . Err ( ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														return  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													case  <- quit : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														return  nil 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} ) ,  nil 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 	{ { end } } 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-21 14:34:49 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{ { end } }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								`  
						 
					
						
							
								
									
										
										
										
											2016-09-05 19:07:57 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// tmplSourceJava is the Java source template use to generate the contract binding  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// based on.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  tmplSourceJava  =  `  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// This file is an automatically generated Java binding. Do not modify as any  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// change will likely be lost upon the next re-generation!  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								package  { { . Package } } ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								import  org . ethereum . geth . * ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								import  org . ethereum . geth . internal . * ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{ { range  $ contract  :=  . Contracts } }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									public  class  { { . Type } }  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// ABI is the input ABI used to generate the binding from. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										public  final  static  String  ABI  =  "{{.InputABI}}" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ { if  . InputBin } } 
							 
						 
					
						
							
								
									
										
										
										
											2016-11-11 10:27:30 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											// BYTECODE is the compiled bytecode used for deploying new contracts. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											public  final  static  byte [ ]  BYTECODE  =  "{{.InputBin}}" . getBytes ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-05 19:07:57 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// deploy deploys a new Ethereum contract, binding an instance of {{.Type}} to it. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											public  static  { { . Type } }  deploy ( TransactOpts  auth ,  EthereumClient  client { { range  . Constructor . Inputs } } ,  { { bindtype  . Type } }  { { . Name } } { { end } } )  throws  Exception  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												Interfaces  args  =  Geth . newInterfaces ( { { ( len  . Constructor . Inputs ) } } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												{ { range  $ index ,  $ element  :=  . Constructor . Inputs } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												  args . set ( { { $ index } } ,  Geth . newInterface ( ) ) ;  args . get ( { { $ index } } ) . set { { namedtype  ( bindtype  . Type )  . Type } } ( { { . Name } } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												{ { end } } 
							 
						 
					
						
							
								
									
										
										
										
											2016-11-11 10:27:30 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												return  new  { { . Type } } ( Geth . deployContract ( auth ,  ABI ,  BYTECODE ,  client ,  args ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-05 19:07:57 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// Internal constructor used by contract deployment. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											private  { { . Type } } ( BoundContract  deployment )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												this . Address   =  deployment . getAddress ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												this . Deployer  =  deployment . getDeployer ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												this . Contract  =  deployment ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ { end } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// Ethereum address where this contract is located at. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										public  final  Address  Address ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// Ethereum transaction in which this contract was deployed (if known!). 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										public  final  Transaction  Deployer ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// Contract instance bound to a blockchain address. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										private  final  BoundContract  Contract ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// Creates a new instance of {{.Type}}, bound to a specific deployed contract. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										public  { { . Type } } ( Address  address ,  EthereumClient  client )  throws  Exception  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											this ( Geth . bindContract ( address ,  ABI ,  client ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ { range  . Calls } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											{ { if  gt  ( len  . Normalized . Outputs )  1 } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// {{capitalise .Normalized.Name}}Results is the output of a call to {{.Normalized.Name}}. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											public  class  { { capitalise  . Normalized . Name } } Results  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												{ { range  $ index ,  $ item  :=  . Normalized . Outputs } } public  { { bindtype  . Type } }  { { if  ne  . Name  "" } } { { . Name } } { { else } } Return { { $ index } } { { end } } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												{ { end } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											{ { end } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// {{.Normalized.Name}} is a free data retrieval call binding the contract method 0x{{printf "%x" .Original.Id}}. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// Solidity: {{.Original.String}} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											public  { { if  gt  ( len  . Normalized . Outputs )  1 } } { { capitalise  . Normalized . Name } } Results { { else } } { { range  . Normalized . Outputs } } { { bindtype  . Type } } { { end } } { { end } }  { { . Normalized . Name } } ( CallOpts  opts { { range  . Normalized . Inputs } } ,  { { bindtype  . Type } }  { { . Name } } { { end } } )  throws  Exception  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												Interfaces  args  =  Geth . newInterfaces ( { { ( len  . Normalized . Inputs ) } } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												{ { range  $ index ,  $ item  :=  . Normalized . Inputs } } args . set ( { { $ index } } ,  Geth . newInterface ( ) ) ;  args . get ( { { $ index } } ) . set { { namedtype  ( bindtype  . Type )  . Type } } ( { { . Name } } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												{ { end } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												Interfaces  results  =  Geth . newInterfaces ( { { ( len  . Normalized . Outputs ) } } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												{ { range  $ index ,  $ item  :=  . Normalized . Outputs } } Interface  result { { $ index } }  =  Geth . newInterface ( ) ;  result { { $ index } } . setDefault { { namedtype  ( bindtype  . Type )  . Type } } ( ) ;  results . set ( { { $ index } } ,  result { { $ index } } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												{ { end } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( opts  ==  null )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													opts  =  Geth . newCallOpts ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												this . Contract . call ( opts ,  results ,  "{{.Original.Name}}" ,  args ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												{ { if  gt  ( len  . Normalized . Outputs )  1 } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													{ { capitalise  . Normalized . Name } } Results  result  =  new  { { capitalise  . Normalized . Name } } Results ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													{ { range  $ index ,  $ item  :=  . Normalized . Outputs } } result . { { if  ne  . Name  "" } } { { . Name } } { { else } } Return { { $ index } } { { end } }  =  results . get ( { { $ index } } ) . get { { namedtype  ( bindtype  . Type )  . Type } } ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													{ { end } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													return  result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												{ { else } } { { range  . Normalized . Outputs } } return  results . get ( 0 ) . get { { namedtype  ( bindtype  . Type )  . Type } } ( ) ; { { end } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												{ { end } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ { end } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ { range  . Transacts } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// {{.Normalized.Name}} is a paid mutator transaction binding the contract method 0x{{printf "%x" .Original.Id}}. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// Solidity: {{.Original.String}} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											public  Transaction  { { . Normalized . Name } } ( TransactOpts  opts { { range  . Normalized . Inputs } } ,  { { bindtype  . Type } }  { { . Name } } { { end } } )  throws  Exception  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												Interfaces  args  =  Geth . newInterfaces ( { { ( len  . Normalized . Inputs ) } } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												{ { range  $ index ,  $ item  :=  . Normalized . Inputs } } args . set ( { { $ index } } ,  Geth . newInterface ( ) ) ;  args . get ( { { $ index } } ) . set { { namedtype  ( bindtype  . Type )  . Type } } ( { { . Name } } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												{ { end } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												return  this . Contract . transact ( opts ,  "{{.Original.Name}}" 	,  args ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ { end } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{ { end } }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								`