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 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:27:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Libraries  map [ string ] string         // Map the bytecode's link pattern to the library name 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-25 21:03:22 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Structs    map [ string ] * tmplStruct    // Contract struct type definitions 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-21 14:34:49 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 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 
							 
						 
					
						
							
								
									
										
										
										
											2020-09-20 11:43:57 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									InputBin     string                  // Optional EVM bytecode used to generate deploy code from 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-02 09:52:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									FuncSigs     map [ string ] string       // Optional map: string signature -> 4-byte signature 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-21 14:34:49 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									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 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-15 15:23:58 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Fallback     * tmplMethod             // Additional special fallback function 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Receive      * tmplMethod             // Additional special receive function 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-05 12:39:24 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Events       map [ string ] * tmplEvent   // Contract events accessors 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:27:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Libraries    map [ string ] string       // Same as tmplData, but filtered to only keep what the contract needs 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-25 21:03:22 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Library      bool                    // Indicator whether the contract is a library 
							 
						 
					
						
							
								
									
										
										
										
											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 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-09-20 11:43:57 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// tmplEvent is a wrapper around an abi.Event that contains a few preprocessed  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// and cached data fields.  
						 
					
						
							
								
									
										
										
										
											2018-01-05 12:39:24 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								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 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-07-03 18:17:43 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// tmplField is a wrapper around a struct field with binding language  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// struct type definition and relative filed name.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								type  tmplField  struct  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Type     string    // Field type representation depends on target binding language 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Name     string    // Field name converted from the raw user-defined field name 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									SolKind  abi . Type  // Raw abi type information 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-09-20 11:43:57 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// tmplStruct is a wrapper around an abi.tuple and contains an auto-generated  
						 
					
						
							
								
									
										
										
										
											2019-07-03 18:17:43 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// struct name.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								type  tmplStruct  struct  {  
						 
					
						
							
								
									
										
										
										
											2019-10-31 21:17:51 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Name    string        // Auto-generated struct name(before solidity v0.5.11) or raw name. 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-03 18:17:43 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Fields  [ ] * tmplField  // Struct fields definition depends on the binding language. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											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 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-09-20 11:43:57 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// tmplSourceGo is the Go source template that the generated Go contract binding  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// is 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 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									_  =  bind . Bind 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									_  =  common . Big1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									_  =  types . BloomLookup 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									_  =  event . NewSubscription 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-11-25 21:03:22 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{ { $ structs  :=  . Structs } }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{ { range  $ structs } }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// {{.Name}} is an auto generated low-level Go binding around an user-defined struct. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									type  { { . Name } }  struct  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ { range  $ field  :=  . Fields } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ { $ field . Name } }  { { $ field . Type } } { { end } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{ { end } }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											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 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-07-02 09:52:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									{ { if  $ contract . FuncSigs } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// {{.Type}}FuncSigs maps the 4-byte function signature to its string representation. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var  { { . Type } } FuncSigs  =  map [ string ] string { 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:27:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											{ { range  $ strsig ,  $ binsig  :=  . FuncSigs } } "{{$binsig}}" :  "{{$strsig}}" , 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-02 09:52:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											{ { end } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ { end } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-21 14:34:49 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									{ { if  . InputBin } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// {{.Type}}Bin is the compiled bytecode used for deploying new contracts. 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:27:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										var  { { . Type } } Bin  =  "0x{{.InputBin}}" 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-21 14:34:49 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// Deploy{{.Type}} deploys a new Ethereum contract, binding an instance of {{.Type}} to it. 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-03 18:17:43 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										func  Deploy { { . Type } } ( auth  * bind . TransactOpts ,  backend  bind . ContractBackend  { { range  . Constructor . Inputs } } ,  { { . Name } }  { { bindtype  . Type  $ structs } } { { end } } )  ( common . Address ,  * types . Transaction ,  * { { . Type } } ,  error )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-21 14:34:49 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										  parsed ,  err  :=  abi . JSON ( strings . NewReader ( { { . Type } } ABI ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										  if  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										    return  common . Address { } ,  nil ,  nil ,  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										  } 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:27:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										  { { range  $ pattern ,  $ name  :=  . Libraries } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											{ { decapitalise  $ name } } Addr ,  _ ,  _ ,  _  :=  Deploy { { capitalise  $ name } } ( auth ,  backend ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											{ { $ contract . Type } } Bin  =  strings . Replace ( { { $ contract . Type } } Bin ,  "__${{$pattern}}$__" ,  { { decapitalise  $ name } } Addr . String ( ) [ 2 : ] ,  - 1 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										  { { end } } 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-21 14:34:49 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										  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 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-03 18:17:43 +08: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. 
							 
						 
					
						
							
								
									
										
										
										
											2020-09-28 14:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									func  ( _ { { $ contract . Type } }  * { { $ contract . Type } } Raw )  Call ( opts  * bind . CallOpts ,  result  * [ ] interface { } ,  method  string ,  params  ... interface { } )  error  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-01 13:02:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										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. 
							 
						 
					
						
							
								
									
										
										
										
											2020-09-28 14:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									func  ( _ { { $ contract . Type } }  * { { $ contract . Type } } CallerRaw )  Call ( opts  * bind . CallOpts ,  result  * [ ] interface { } ,  method  string ,  params  ... interface { } )  error  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-01 13:02:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										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 } } 
							 
						 
					
						
							
								
									
										
										
										
											2019-08-02 15:20:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// {{.Normalized.Name}} is a free data retrieval call binding the contract method 0x{{printf "%x" .Original.ID}}. 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-21 14:34:49 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										// 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-12 12:21:40 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// Solidity: {{.Original.String}} 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-03 18:17:43 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										func  ( _ { { $ contract . Type } }  * { { $ contract . Type } } Caller )  { { . Normalized . Name } } ( opts  * bind . CallOpts  { { range  . Normalized . Inputs } } ,  { { . Name } }  { { bindtype  . Type  $ structs } }  { { end } } )  ( { { if  . Structured } } struct {  { { range  . Normalized . Outputs } } { { . Name } }  { { bindtype  . Type  $ structs } } ; { { end } }  } , { { else } } { { range  . Normalized . Outputs } } { { bindtype  . Type  $ structs } } , { { end } } { { end } }  error )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-09-28 14:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											var  out  [ ] interface { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											err  :=  _ { { $ contract . Type } } . contract . Call ( opts ,  & out ,  "{{.Original.Name}}"  { { range  . Normalized . Inputs } } ,  { { . Name } } { { end } } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											{ { if  . Structured } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											outstruct  :=  new ( struct {  { { range  . Normalized . Outputs } }  { { . Name } }  { { bindtype  . Type  $ structs } } ;  { { end } }  } ) 
							 
						 
					
						
							
								
									
										
										
										
											2020-12-12 04:16:34 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												return  * outstruct ,  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2020-09-28 14:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											{ { range  $ i ,  $ t  :=  . Normalized . Outputs } }  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											outstruct . { { . Name } }  =  out [ { { $ i } } ] . ( { { bindtype  . Type  $ structs } } ) { { end } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  * outstruct ,  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											{ { else } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												return  { { range  $ i ,  $ _  :=  . Normalized . Outputs } } * new ( { { bindtype  . Type  $ structs } } ) ,  { { end } }  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											{ { range  $ i ,  $ t  :=  . Normalized . Outputs } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											out { { $ i } }  :=  * abi . ConvertType ( out [ { { $ i } } ] ,  new ( { { bindtype  . Type  $ structs } } ) ) . ( * { { bindtype  . Type  $ structs } } ) { { end } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  { { range  $ i ,  $ t  :=  . Normalized . Outputs } } out { { $ i } } ,  { { end } }  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											{ { end } } 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-21 14:34:49 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-08-02 15:20:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// {{.Normalized.Name}} is a free data retrieval call binding the contract method 0x{{printf "%x" .Original.ID}}. 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-21 14:34:49 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										// 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-12 12:21:40 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// Solidity: {{.Original.String}} 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-03 18:17:43 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										func  ( _ { { $ contract . Type } }  * { { $ contract . Type } } Session )  { { . Normalized . Name } } ( { { range  $ i ,  $ _  :=  . Normalized . Inputs } } { { if  ne  $ i  0 } } , { { end } }  { { . Name } }  { { bindtype  . Type  $ structs } }  { { end } } )  ( { { if  . Structured } } struct {  { { range  . Normalized . Outputs } } { { . Name } }  { { bindtype  . Type  $ structs } } ; { { end } }  } ,  { { else } }  { { range  . Normalized . Outputs } } { { bindtype  . Type  $ structs } } , { { 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 } } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-08-02 15:20:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// {{.Normalized.Name}} is a free data retrieval call binding the contract method 0x{{printf "%x" .Original.ID}}. 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-21 14:34:49 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										// 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-12 12:21:40 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// Solidity: {{.Original.String}} 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-03 18:17:43 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										func  ( _ { { $ contract . Type } }  * { { $ contract . Type } } CallerSession )  { { . Normalized . Name } } ( { { range  $ i ,  $ _  :=  . Normalized . Inputs } } { { if  ne  $ i  0 } } , { { end } }  { { . Name } }  { { bindtype  . Type  $ structs } }  { { end } } )  ( { { if  . Structured } } struct {  { { range  . Normalized . Outputs } } { { . Name } }  { { bindtype  . Type  $ structs } } ; { { end } }  } ,  { { else } }  { { range  . Normalized . Outputs } } { { bindtype  . Type  $ structs } } , { { 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 } } 
							 
						 
					
						
							
								
									
										
										
										
											2019-08-02 15:20:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// {{.Normalized.Name}} is a paid mutator transaction binding the contract method 0x{{printf "%x" .Original.ID}}. 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-21 14:34:49 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										// 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-12 12:21:40 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// Solidity: {{.Original.String}} 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-03 18:17:43 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										func  ( _ { { $ contract . Type } }  * { { $ contract . Type } } Transactor )  { { . Normalized . Name } } ( opts  * bind . TransactOpts  { { range  . Normalized . Inputs } } ,  { { . Name } }  { { bindtype  . Type  $ structs } }  { { end } } )  ( * types . Transaction ,  error )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-21 14:34:49 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											return  _ { { $ contract . Type } } . contract . Transact ( opts ,  "{{.Original.Name}}"  { { range  . Normalized . Inputs } } ,  { { . Name } } { { end } } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-08-02 15:20:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// {{.Normalized.Name}} is a paid mutator transaction binding the contract method 0x{{printf "%x" .Original.ID}}. 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-21 14:34:49 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										// 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-12 12:21:40 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// Solidity: {{.Original.String}} 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-03 18:17:43 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										func  ( _ { { $ contract . Type } }  * { { $ contract . Type } } Session )  { { . Normalized . Name } } ( { { range  $ i ,  $ _  :=  . Normalized . Inputs } } { { if  ne  $ i  0 } } , { { end } }  { { . Name } }  { { bindtype  . Type  $ structs } }  { { end } } )  ( * types . Transaction ,  error )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-21 14:34:49 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										  return  _ { { $ contract . Type } } . Contract . { { . Normalized . Name } } ( & _ { { $ contract . Type } } . TransactOpts  { { range  $ i ,  $ _  :=  . Normalized . Inputs } } ,  { { . Name } } { { end } } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-08-02 15:20:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// {{.Normalized.Name}} is a paid mutator transaction binding the contract method 0x{{printf "%x" .Original.ID}}. 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-21 14:34:49 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										// 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-12 12:21:40 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// Solidity: {{.Original.String}} 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-03 18:17:43 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										func  ( _ { { $ contract . Type } }  * { { $ contract . Type } } TransactorSession )  { { . Normalized . Name } } ( { { range  $ i ,  $ _  :=  . Normalized . Inputs } } { { if  ne  $ i  0 } } , { { end } }  { { . Name } }  { { bindtype  . Type  $ structs } }  { { end } } )  ( * types . Transaction ,  error )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-21 14:34:49 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										  return  _ { { $ contract . Type } } . Contract . { { . Normalized . Name } } ( & _ { { $ contract . Type } } . TransactOpts  { { range  $ i ,  $ _  :=  . Normalized . Inputs } } ,  { { . Name } } { { end } } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ { end } } 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-05 12:39:24 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-04-15 15:23:58 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									{ { if  . Fallback } }  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// Fallback is a paid mutator transaction binding the contract fallback function. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-12 12:21:40 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// Solidity: {{.Fallback.Original.String}} 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-15 15:23:58 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										func  ( _ { { $ contract . Type } }  * { { $ contract . Type } } Transactor )  Fallback ( opts  * bind . TransactOpts ,  calldata  [ ] byte )  ( * types . Transaction ,  error )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  _ { { $ contract . Type } } . contract . RawTransact ( opts ,  calldata ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// Fallback is a paid mutator transaction binding the contract fallback function. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-12 12:21:40 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// Solidity: {{.Fallback.Original.String}} 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-15 15:23:58 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										func  ( _ { { $ contract . Type } }  * { { $ contract . Type } } Session )  Fallback ( calldata  [ ] byte )  ( * types . Transaction ,  error )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										  return  _ { { $ contract . Type } } . Contract . Fallback ( & _ { { $ contract . Type } } . TransactOpts ,  calldata ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// Fallback is a paid mutator transaction binding the contract fallback function. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										//  
							 
						 
					
						
							
								
									
										
										
										
											2020-05-12 12:21:40 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// Solidity: {{.Fallback.Original.String}} 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-15 15:23:58 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										func  ( _ { { $ contract . Type } }  * { { $ contract . Type } } TransactorSession )  Fallback ( calldata  [ ] byte )  ( * types . Transaction ,  error )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										  return  _ { { $ contract . Type } } . Contract . Fallback ( & _ { { $ contract . Type } } . TransactOpts ,  calldata ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ { end } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ { if  . Receive } }  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// Receive is a paid mutator transaction binding the contract receive function. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-12 12:21:40 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// Solidity: {{.Receive.Original.String}} 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-15 15:23:58 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										func  ( _ { { $ contract . Type } }  * { { $ contract . Type } } Transactor )  Receive ( opts  * bind . TransactOpts )  ( * types . Transaction ,  error )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  _ { { $ contract . Type } } . contract . RawTransact ( opts ,  nil )  // calldata is disallowed for receive function 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// Receive is a paid mutator transaction binding the contract receive function. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-12 12:21:40 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// Solidity: {{.Receive.Original.String}} 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-15 15:23:58 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										func  ( _ { { $ contract . Type } }  * { { $ contract . Type } } Session )  Receive ( )  ( * types . Transaction ,  error )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										  return  _ { { $ contract . Type } } . Contract . Receive ( & _ { { $ contract . Type } } . TransactOpts ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// Receive is a paid mutator transaction binding the contract receive function. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										//  
							 
						 
					
						
							
								
									
										
										
										
											2020-05-12 12:21:40 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// Solidity: {{.Receive.Original.String}} 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-15 15:23:58 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										func  ( _ { { $ contract . Type } }  * { { $ contract . Type } } TransactorSession )  Receive ( )  ( * types . Transaction ,  error )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										  return  _ { { $ contract . Type } } . Contract . Receive ( & _ { { $ contract . Type } } . TransactOpts ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ { 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 } } 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-03 18:17:43 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											{ { capitalise  . Name } }  { { if  . Indexed } } { { bindtopictype  . Type  $ structs } } { { else } } { { bindtype  . Type  $ structs } } { { end } } ;  { { end } } 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-05 12:39:24 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											Raw  types . Log  // Blockchain specific contextual infos 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-08-02 15:20:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// Filter{{.Normalized.Name}} is a free log retrieval operation binding the contract event 0x{{printf "%x" .Original.ID}}. 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-05 12:39:24 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-12 12:21:40 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// Solidity: {{.Original.String}} 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-03 18:17:43 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 		func  ( _ { { $ contract . Type } }  * { { $ contract . Type } } Filterer )  Filter { { . Normalized . Name } } ( opts  * bind . FilterOpts { { range  . Normalized . Inputs } } { { if  . Indexed } } ,  { { . Name } }  [ ] { { bindtype  . Type  $ structs } } { { end } } { { end } } )  ( * { { $ contract . Type } } { { . Normalized . Name } } Iterator ,  error )  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-05 12:39:24 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											{ { 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 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 		} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-08-02 15:20:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// Watch{{.Normalized.Name}} is a free log subscription operation binding the contract event 0x{{printf "%x" .Original.ID}}. 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-05 12:39:24 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-12 12:21:40 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// Solidity: {{.Original.String}} 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-03 18:17:43 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										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  $ structs } } { { end } } { { end } } )  ( event . Subscription ,  error )  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-05 12:39:24 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											{ { 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 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
											 
										
											
												all: on-chain oracle checkpoint syncing (#19543)
* all: implement simple checkpoint syncing
cmd, les, node: remove callback mechanism
cmd, node: remove callback definition
les: simplify the registrar
les: expose checkpoint rpc services in the light client
les, light: don't store untrusted receipt
cmd, contracts, les: discard stale checkpoint
cmd, contracts/registrar: loose restriction of registeration
cmd, contracts: add replay-protection
all: off-chain multi-signature contract
params: deploy checkpoint contract for rinkeby
cmd/registrar: add raw signing mode for registrar
cmd/registrar, contracts/registrar, les: fixed messages
* cmd/registrar, contracts/registrar: fix lints
* accounts/abi/bind, les: address comments
* cmd, contracts, les, light, params: minor checkpoint sync cleanups
* cmd, eth, les, light: move checkpoint config to config file
* cmd, eth, les, params: address comments
* eth, les, params: address comments
* cmd: polish up the checkpoint admin CLI
* cmd, contracts, params: deploy new version contract
* cmd/checkpoint-admin: add another flag for clef mode signing
* cmd, contracts, les: rename and regen checkpoint oracle with abigen
											 
										 
										
											2019-06-28 15:34:02 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-08-02 15:20:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// Parse{{.Normalized.Name}} is a log parse operation binding the contract event 0x{{printf "%x" .Original.ID}}. 
							 
						 
					
						
							
								
									
										
											 
										
											
												all: on-chain oracle checkpoint syncing (#19543)
* all: implement simple checkpoint syncing
cmd, les, node: remove callback mechanism
cmd, node: remove callback definition
les: simplify the registrar
les: expose checkpoint rpc services in the light client
les, light: don't store untrusted receipt
cmd, contracts, les: discard stale checkpoint
cmd, contracts/registrar: loose restriction of registeration
cmd, contracts: add replay-protection
all: off-chain multi-signature contract
params: deploy checkpoint contract for rinkeby
cmd/registrar: add raw signing mode for registrar
cmd/registrar, contracts/registrar, les: fixed messages
* cmd/registrar, contracts/registrar: fix lints
* accounts/abi/bind, les: address comments
* cmd, contracts, les, light, params: minor checkpoint sync cleanups
* cmd, eth, les, light: move checkpoint config to config file
* cmd, eth, les, params: address comments
* eth, les, params: address comments
* cmd: polish up the checkpoint admin CLI
* cmd, contracts, params: deploy new version contract
* cmd/checkpoint-admin: add another flag for clef mode signing
* cmd, contracts, les: rename and regen checkpoint oracle with abigen
											 
										 
										
											2019-06-28 15:34:02 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-12 12:21:40 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// Solidity: {{.Original.String}} 
							 
						 
					
						
							
								
									
										
											 
										
											
												all: on-chain oracle checkpoint syncing (#19543)
* all: implement simple checkpoint syncing
cmd, les, node: remove callback mechanism
cmd, node: remove callback definition
les: simplify the registrar
les: expose checkpoint rpc services in the light client
les, light: don't store untrusted receipt
cmd, contracts, les: discard stale checkpoint
cmd, contracts/registrar: loose restriction of registeration
cmd, contracts: add replay-protection
all: off-chain multi-signature contract
params: deploy checkpoint contract for rinkeby
cmd/registrar: add raw signing mode for registrar
cmd/registrar, contracts/registrar, les: fixed messages
* cmd/registrar, contracts/registrar: fix lints
* accounts/abi/bind, les: address comments
* cmd, contracts, les, light, params: minor checkpoint sync cleanups
* cmd, eth, les, light: move checkpoint config to config file
* cmd, eth, les, params: address comments
* eth, les, params: address comments
* cmd: polish up the checkpoint admin CLI
* cmd, contracts, params: deploy new version contract
* cmd/checkpoint-admin: add another flag for clef mode signing
* cmd, contracts, les: rename and regen checkpoint oracle with abigen
											 
										 
										
											2019-06-28 15:34:02 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										func  ( _ { { $ contract . Type } }  * { { $ contract . Type } } Filterer )  Parse { { . Normalized . Name } } ( log  types . Log )  ( * { { $ contract . Type } } { { . Normalized . Name } } ,  error )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											event  :=  new ( { { $ contract . Type } } { { . Normalized . Name } } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  err  :=  _ { { $ contract . Type } } . contract . UnpackLog ( event ,  "{{.Original.Name}}" ,  log ) ;  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												return  nil ,  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2020-11-13 13:43:15 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											event . Raw  =  log 
							 
						 
					
						
							
								
									
										
											 
										
											
												all: on-chain oracle checkpoint syncing (#19543)
* all: implement simple checkpoint syncing
cmd, les, node: remove callback mechanism
cmd, node: remove callback definition
les: simplify the registrar
les: expose checkpoint rpc services in the light client
les, light: don't store untrusted receipt
cmd, contracts, les: discard stale checkpoint
cmd, contracts/registrar: loose restriction of registeration
cmd, contracts: add replay-protection
all: off-chain multi-signature contract
params: deploy checkpoint contract for rinkeby
cmd/registrar: add raw signing mode for registrar
cmd/registrar, contracts/registrar, les: fixed messages
* cmd/registrar, contracts/registrar: fix lints
* accounts/abi/bind, les: address comments
* cmd, contracts, les, light, params: minor checkpoint sync cleanups
* cmd, eth, les, light: move checkpoint config to config file
* cmd, eth, les, params: address comments
* eth, les, params: address comments
* cmd: polish up the checkpoint admin CLI
* cmd, contracts, params: deploy new version contract
* cmd/checkpoint-admin: add another flag for clef mode signing
* cmd, contracts, les: rename and regen checkpoint oracle with abigen
											 
										 
										
											2019-06-28 15:34:02 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  event ,  nil 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-01-05 12:39:24 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 	{ { end } } 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-21 14:34:49 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{ { end } }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								`  
						 
					
						
							
								
									
										
										
										
											2016-09-05 19:07:57 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-09-20 11:43:57 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// tmplSourceJava is the Java source template that the generated Java contract binding  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// is based on.  
						 
					
						
							
								
									
										
										
										
											2016-09-05 19:07:57 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								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 . * ;  
						 
					
						
							
								
									
										
										
										
											2019-07-02 09:52:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								import  java . util . * ;  
						 
					
						
							
								
									
										
										
										
											2016-09-05 19:07:57 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-11-25 21:03:22 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{ { $ structs  :=  . Structs } }  
						 
					
						
							
								
									
										
										
										
											2016-09-05 19:07:57 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{ { range  $ contract  :=  . Contracts } }  
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:27:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{ { if  not  . Library } } public  { { end } } class  { { . Type } }  {  
						 
					
						
							
								
									
										
										
										
											2019-06-27 16:48:13 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// ABI is the input ABI used to generate the binding from. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									public  final  static  String  ABI  =  "{{.InputABI}}" ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-02 09:52:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									{ { if  $ contract . FuncSigs } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// {{.Type}}FuncSigs maps the 4-byte function signature to its string representation. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										public  final  static  Map < String ,  String >  { { . Type } } FuncSigs ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										static  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Hashtable < String ,  String >  temp  =  new  Hashtable < String ,  String > ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:27:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											{ { range  $ strsig ,  $ binsig  :=  . FuncSigs } } temp . put ( "{{$binsig}}" ,  "{{$strsig}}" ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-02 09:52:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											{ { end } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											{ { . Type } } FuncSigs  =  Collections . unmodifiableMap ( temp ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ { end } } 
							 
						 
					
						
							
								
									
										
										
										
											2019-06-27 16:48:13 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									{ { if  . InputBin } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// BYTECODE is the compiled bytecode used for deploying new contracts. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									public  final  static  String  BYTECODE  =  "0x{{.InputBin}}" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// deploy deploys a new Ethereum contract, binding an instance of {{.Type}} to it. 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-03 18:17:43 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									public  static  { { . Type } }  deploy ( TransactOpts  auth ,  EthereumClient  client { { range  . Constructor . Inputs } } ,  { { bindtype  . Type  $ structs } }  { { . Name } } { { end } } )  throws  Exception  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-06-27 16:48:13 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Interfaces  args  =  Geth . newInterfaces ( { { ( len  . Constructor . Inputs ) } } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:27:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										String  bytecode  =  BYTECODE ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ { if  . Libraries } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// "link" contract to dependent libraries by deploying them first. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ { range  $ pattern ,  $ name  :=  . Libraries } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ { capitalise  $ name } }  { { decapitalise  $ name } } Inst  =  { { capitalise  $ name } } . deploy ( auth ,  client ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										bytecode  =  bytecode . replace ( "__${{$pattern}}$__" ,  { { decapitalise  $ name } } Inst . Address . getHex ( ) . substring ( 2 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ { end } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ { end } } 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-03 18:17:43 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										{ { range  $ index ,  $ element  :=  . Constructor . Inputs } } Interface  arg { { $ index } }  =  Geth . newInterface ( ) ; arg { { $ index } } . set { { namedtype  ( bindtype  . Type  $ structs )  . Type } } ( { { . Name } } ) ; args . set ( { { $ index } } , arg { { $ index } } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-05 19:07:57 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										{ { end } } 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:27:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  new  { { . Type } } ( Geth . deployContract ( auth ,  ABI ,  Geth . decodeFromHex ( bytecode ) ,  client ,  args ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-06-27 16:48:13 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-05 19:07:57 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-06-27 16:48:13 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// Internal constructor used by contract deployment. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									private  { { . Type } } ( BoundContract  deployment )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										this . Address   =  deployment . getAddress ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										this . Deployer  =  deployment . getDeployer ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										this . Contract  =  deployment ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ { end } } 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-05 19:07:57 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-06-27 16:48:13 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// Ethereum address where this contract is located at. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									public  final  Address  Address ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-05 19:07:57 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-06-27 16:48:13 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// Ethereum transaction in which this contract was deployed (if known!). 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									public  final  Transaction  Deployer ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-05 19:07:57 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-06-27 16:48:13 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// Contract instance bound to a blockchain address. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									private  final  BoundContract  Contract ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-05 19:07:57 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-06-27 16:48:13 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// 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 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-05 19:07:57 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-06-27 16:48:13 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									{ { 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  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-03 18:17:43 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										{ { range  $ index ,  $ item  :=  . Normalized . Outputs } } public  { { bindtype  . Type  $ structs } }  { { if  ne  . Name  "" } } { { . Name } } { { else } } Return { { $ index } } { { end } } ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-06-27 16:48:13 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										{ { end } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ { end } } 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-05 19:07:57 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-08-02 15:20:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// {{.Normalized.Name}} is a free data retrieval call binding the contract method 0x{{printf "%x" .Original.ID}}. 
							 
						 
					
						
							
								
									
										
										
										
											2019-06-27 16:48:13 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// Solidity: {{.Original.String}} 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-07 09:24:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									public  { { if  gt  ( len  . Normalized . Outputs )  1 } } { { capitalise  . Normalized . Name } } Results { { else  if  eq  ( len  . Normalized . Outputs )  0 } } void { { else } } { { range  . Normalized . Outputs } } { { bindtype  . Type  $ structs } } { { end } } { { end } }  { { . Normalized . Name } } ( CallOpts  opts { { range  . Normalized . Inputs } } ,  { { bindtype  . Type  $ structs } }  { { . Name } } { { end } } )  throws  Exception  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-06-27 16:48:13 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Interfaces  args  =  Geth . newInterfaces ( { { ( len  . Normalized . Inputs ) } } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-03 18:17:43 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										{ { range  $ index ,  $ item  :=  . Normalized . Inputs } } Interface  arg { { $ index } }  =  Geth . newInterface ( ) ; arg { { $ index } } . set { { namedtype  ( bindtype  . Type  $ structs )  . Type } } ( { { . Name } } ) ; args . set ( { { $ index } } , arg { { $ index } } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-06-27 16:48:13 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										{ { end } } 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-05 19:07:57 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-06-27 16:48:13 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Interfaces  results  =  Geth . newInterfaces ( { { ( len  . Normalized . Outputs ) } } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-03 18:17:43 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										{ { range  $ index ,  $ item  :=  . Normalized . Outputs } } Interface  result { { $ index } }  =  Geth . newInterface ( ) ;  result { { $ index } } . setDefault { { namedtype  ( bindtype  . Type  $ structs )  . Type } } ( ) ;  results . set ( { { $ index } } ,  result { { $ index } } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-05 19:07:57 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										{ { end } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-06-27 16:48:13 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										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 ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-03 18:17:43 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											{ { range  $ index ,  $ item  :=  . Normalized . Outputs } } result . { { if  ne  . Name  "" } } { { . Name } } { { else } } Return { { $ index } } { { end } }  =  results . get ( { { $ index } } ) . get { { namedtype  ( bindtype  . Type  $ structs )  . Type } } ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-06-27 16:48:13 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											{ { end } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  result ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-03 18:17:43 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										{ { else } } { { range  . Normalized . Outputs } } return  results . get ( 0 ) . get { { namedtype  ( bindtype  . Type  $ structs )  . Type } } ( ) ; { { end } } 
							 
						 
					
						
							
								
									
										
										
										
											2019-06-27 16:48:13 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										{ { end } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ { end } } 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-05 19:07:57 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-06-27 16:48:13 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									{ { range  . Transacts } } 
							 
						 
					
						
							
								
									
										
										
										
											2019-08-02 15:20:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// {{.Normalized.Name}} is a paid mutator transaction binding the contract method 0x{{printf "%x" .Original.ID}}. 
							 
						 
					
						
							
								
									
										
										
										
											2019-06-27 16:48:13 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// Solidity: {{.Original.String}} 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-03 18:17:43 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									public  Transaction  { { . Normalized . Name } } ( TransactOpts  opts { { range  . Normalized . Inputs } } ,  { { bindtype  . Type  $ structs } }  { { . Name } } { { end } } )  throws  Exception  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-06-27 16:48:13 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Interfaces  args  =  Geth . newInterfaces ( { { ( len  . Normalized . Inputs ) } } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-03 18:17:43 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										{ { range  $ index ,  $ item  :=  . Normalized . Inputs } } Interface  arg { { $ index } }  =  Geth . newInterface ( ) ; arg { { $ index } } . set { { namedtype  ( bindtype  . Type  $ structs )  . Type } } ( { { . Name } } ) ; args . set ( { { $ index } } , arg { { $ index } } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-05 19:07:57 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										{ { end } } 
							 
						 
					
						
							
								
									
										
										
										
											2019-06-27 16:48:13 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  this . Contract . transact ( opts ,  "{{.Original.Name}}" 	,  args ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-05 19:07:57 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2019-06-27 16:48:13 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									{ { end } } 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-15 15:23:58 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { { if  . Fallback } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// Fallback is a paid mutator transaction binding the contract fallback function. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-12 12:21:40 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// Solidity: {{.Fallback.Original.String}} 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-15 15:23:58 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									public  Transaction  Fallback ( TransactOpts  opts ,  byte [ ]  calldata )  throws  Exception  {  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  this . Contract . rawTransact ( opts ,  calldata ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { { end } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { { if  . Receive } } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// Receive is a paid mutator transaction binding the contract receive function. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-12 12:21:40 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// Solidity: {{.Receive.Original.String}} 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-15 15:23:58 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									public  Transaction  Receive ( TransactOpts  opts )  throws  Exception  {  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  this . Contract . rawTransact ( opts ,  null ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { { end } } 
							 
						 
					
						
							
								
									
										
										
										
											2019-06-27 16:48:13 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2016-09-05 19:07:57 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{ { end } }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								`