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

package bind

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
)

// PermImplABI is the input ABI used to generate the binding from.
const PermImplABI = "[{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_account\",\"type\":\"address\"},{\"name\":\"_action\",\"type\":\"uint256\"},{\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"updateAccountStatus\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_roleId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_access\",\"type\":\"uint256\"},{\"name\":\"_voter\",\"type\":\"bool\"},{\"name\":\"_admin\",\"type\":\"bool\"},{\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"addNewRole\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_nwAdminOrg\",\"type\":\"string\"},{\"name\":\"_nwAdminRole\",\"type\":\"string\"},{\"name\":\"_oAdminRole\",\"type\":\"string\"}],\"name\":\"setPolicy\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_account\",\"type\":\"address\"},{\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"startBlacklistedAccountRecovery\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_account\",\"type\":\"address\"},{\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"approveOrg\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_action\",\"type\":\"uint256\"},{\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"updateOrgStatus\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_enodeId\",\"type\":\"string\"}],\"name\":\"addAdminNode\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_account\",\"type\":\"address\"},{\"name\":\"_roleId\",\"type\":\"string\"},{\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"assignAdminRole\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"updateNetworkBootStatus\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_account\",\"type\":\"address\"},{\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"approveBlacklistedAccountRecovery\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getNetworkBootStatus\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"addAdminAccount\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"addNode\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_roleId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"removeRole\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"approveBlacklistedNodeRecovery\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_account\",\"type\":\"address\"},{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"validateAccount\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_account\",\"type\":\"address\"},{\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"approveAdminRole\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_account\",\"type\":\"address\"},{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_roleId\",\"type\":\"string\"},{\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"assignAccountRole\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_account\",\"type\":\"address\"},{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"isOrgAdmin\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_breadth\",\"type\":\"uint256\"},{\"name\":\"_depth\",\"type\":\"uint256\"}],\"name\":\"init\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_pOrgId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"addSubOrg\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_action\",\"type\":\"uint256\"},{\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"approveOrgStatus\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"startBlacklistedNodeRecovery\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getPolicyDetails\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"isNetworkAdmin\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_action\",\"type\":\"uint256\"},{\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"updateNodeStatus\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"getPendingOp\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"address\"},{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_nwAdminOrg\",\"type\":\"string\"},{\"name\":\"_nwAdminRole\",\"type\":\"string\"},{\"name\":\"_oAdminRole\",\"type\":\"string\"},{\"name\":\"_networkBootStatus\",\"type\":\"bool\"}],\"name\":\"setMigrationPolicy\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_account\",\"type\":\"address\"},{\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"addOrg\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_permUpgradable\",\"type\":\"address\"},{\"name\":\"_orgManager\",\"type\":\"address\"},{\"name\":\"_rolesManager\",\"type\":\"address\"},{\"name\":\"_accountManager\",\"type\":\"address\"},{\"name\":\"_voterManager\",\"type\":\"address\"},{\"name\":\"_nodeManager\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_networkBootStatus\",\"type\":\"bool\"}],\"name\":\"PermissionsInitialized\",\"type\":\"event\"}]"

var PermImplParsedABI, _ = abi.JSON(strings.NewReader(PermImplABI))

// PermImplBin is the compiled bytecode used for deploying new contracts.
var PermImplBin = "0x60806040526003600955600a805460ff191690553480156200002057600080fd5b5060405160c08062007181833981018060405260c08110156200004257600080fd5b508051602082015160408301516060840151608085015160a090950151600580546001600160a01b039687166001600160a01b03199182161790915560048054958716958216959095179094556001805493861693851693909317909255600080549185169184169190911790556002805494841694831694909417909355600380549290931691161790556170a380620000de6000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063655a8ef511610104578063b5546564116100a2578063dbfad71111610071578063dbfad71114611196578063f346a3a714611263578063f5ad584a146113cf578063f922f802146114df576101cf565b8063b554656414610ed8578063c3dc8e0914610f55578063cc9ba6fa1461101c578063d1aa0c2014611170576101cf565b80638baa8191116100de5780638baa819114610ba65780639bd3810114610cea578063a5843f0814610d9e578063a64d286014610dc1576101cf565b8063655a8ef5146109ac5780636b568d7614610a735780638884304114610b27576101cf565b8063404bf3eb116101715780634cbfa82e1161014b5780634cbfa82e146107f05780634fe57e7a146107f857806359a260a31461081e5780635ca5adbe146108e5576101cf565b8063404bf3eb1461068157806344478e79146107555780634b20f45f14610771576101cf565b80631c249912116101ad5780631c249912146104485780633bc07dea146104c75780633cf5f33b146105965780633f25c28814610613576101cf565b806304e81f1e146101d45780631b04c2761461025d5780631b6102201461033a575b600080fd5b61025b600480360360808110156101ea57600080fd5b810190602081018135600160201b81111561020457600080fd5b82018360208201111561021657600080fd5b803590602001918460018302840111600160201b8311171561023757600080fd5b91935091506001600160a01b038135811691602081013591604090910135166115ae565b005b61025b600480360360c081101561027357600080fd5b810190602081018135600160201b81111561028d57600080fd5b82018360208201111561029f57600080fd5b803590602001918460018302840111600160201b831117156102c057600080fd5b919390929091602081019035600160201b8111156102dd57600080fd5b8201836020820111156102ef57600080fd5b803590602001918460018302840111600160201b8311171561031057600080fd5b919350915080359060208101351515906040810135151590606001356001600160a01b0316611801565b61025b6004803603606081101561035057600080fd5b810190602081018135600160201b81111561036a57600080fd5b82018360208201111561037c57600080fd5b803590602001918460018302840111600160201b8311171561039d57600080fd5b919390929091602081019035600160201b8111156103ba57600080fd5b8201836020820111156103cc57600080fd5b803590602001918460018302840111600160201b831117156103ed57600080fd5b919390929091602081019035600160201b81111561040a57600080fd5b82018360208201111561041c57600080fd5b803590602001918460018302840111600160201b8311171561043d57600080fd5b509092509050611ac3565b61025b6004803603606081101561045e57600080fd5b810190602081018135600160201b81111561047857600080fd5b82018360208201111561048a57600080fd5b803590602001918460018302840111600160201b831117156104ab57600080fd5b91935091506001600160a01b0381358116916020013516611c02565b61025b600480360360808110156104dd57600080fd5b810190602081018135600160201b8111156104f757600080fd5b82018360208201111561050957600080fd5b803590602001918460018302840111600160201b8311171561052a57600080fd5b919390929091602081019035600160201b81111561054757600080fd5b82018360208201111561055957600080fd5b803590602001918460018302840111600160201b8311171561057a57600080fd5b91935091506001600160a01b0381358116916020013516611f01565b61025b600480360360608110156105ac57600080fd5b810190602081018135600160201b8111156105c657600080fd5b8201836020820111156105d857600080fd5b803590602001918460018302840111600160201b831117156105f957600080fd5b9193509150803590602001356001600160a01b0316612487565b61025b6004803603602081101561062957600080fd5b810190602081018135600160201b81111561064357600080fd5b82018360208201111561065557600080fd5b803590602001918460018302840111600160201b8311171561067657600080fd5b50909250905061278f565b61025b6004803603608081101561069757600080fd5b810190602081018135600160201b8111156106b157600080fd5b8201836020820111156106c357600080fd5b803590602001918460018302840111600160201b831117156106e457600080fd5b919390926001600160a01b0383351692604081019060200135600160201b81111561070e57600080fd5b82018360208201111561072057600080fd5b803590602001918460018302840111600160201b8311171561074157600080fd5b9193509150356001600160a01b03166129a3565b61075d612d62565b604080519115158252519081900360200190f35b61025b6004803603606081101561078757600080fd5b810190602081018135600160201b8111156107a157600080fd5b8201836020820111156107b357600080fd5b803590602001918460018302840111600160201b831117156107d457600080fd5b91935091506001600160a01b0381358116916020013516612ec0565b61075d613109565b61025b6004803603602081101561080e57600080fd5b50356001600160a01b0316613113565b61025b6004803603606081101561083457600080fd5b810190602081018135600160201b81111561084e57600080fd5b82018360208201111561086057600080fd5b803590602001918460018302840111600160201b8311171561088157600080fd5b919390929091602081019035600160201b81111561089e57600080fd5b8201836020820111156108b057600080fd5b803590602001918460018302840111600160201b831117156108d157600080fd5b9193509150356001600160a01b0316613434565b61025b600480360360608110156108fb57600080fd5b810190602081018135600160201b81111561091557600080fd5b82018360208201111561092757600080fd5b803590602001918460018302840111600160201b8311171561094857600080fd5b919390929091602081019035600160201b81111561096557600080fd5b82018360208201111561097757600080fd5b803590602001918460018302840111600160201b8311171561099857600080fd5b9193509150356001600160a01b03166136b0565b61025b600480360360608110156109c257600080fd5b810190602081018135600160201b8111156109dc57600080fd5b8201836020820111156109ee57600080fd5b803590602001918460018302840111600160201b83111715610a0f57600080fd5b919390929091602081019035600160201b811115610a2c57600080fd5b820183602082011115610a3e57600080fd5b803590602001918460018302840111600160201b83111715610a5f57600080fd5b9193509150356001600160a01b0316613b72565b61075d60048036036040811015610a8957600080fd5b6001600160a01b038235169190810190604081016020820135600160201b811115610ab357600080fd5b820183602082011115610ac557600080fd5b803590602001918460018302840111600160201b83111715610ae657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550613dd6945050505050565b61025b60048036036060811015610b3d57600080fd5b810190602081018135600160201b811115610b5757600080fd5b820183602082011115610b6957600080fd5b803590602001918460018302840111600160201b83111715610b8a57600080fd5b91935091506001600160a01b0381358116916020013516613ec4565b61025b60048036036080811015610bbc57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b811115610be657600080fd5b820183602082011115610bf857600080fd5b803590602001918460018302840111600160201b83111715610c1957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610c6b57600080fd5b820183602082011115610c7d57600080fd5b803590602001918460018302840111600160201b83111715610c9e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550505090356001600160a01b031691506143199050565b61075d60048036036040811015610d0057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b811115610d2a57600080fd5b820183602082011115610d3c57600080fd5b803590602001918460018302840111600160201b83111715610d5d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550614827945050505050565b61025b60048036036040811015610db457600080fd5b5080359060200135614bdf565b61025b60048036036080811015610dd757600080fd5b810190602081018135600160201b811115610df157600080fd5b820183602082011115610e0357600080fd5b803590602001918460018302840111600160201b83111715610e2457600080fd5b919390929091602081019035600160201b811115610e4157600080fd5b820183602082011115610e5357600080fd5b803590602001918460018302840111600160201b83111715610e7457600080fd5b919390929091602081019035600160201b811115610e9157600080fd5b820183602082011115610ea357600080fd5b803590602001918460018302840111600160201b83111715610ec457600080fd5b9193509150356001600160a01b031661509a565b61025b60048036036060811015610eee57600080fd5b810190602081018135600160201b811115610f0857600080fd5b820183602082011115610f1a57600080fd5b803590602001918460018302840111600160201b83111715610f3b57600080fd5b9193509150803590602001356001600160a01b0316615468565b61025b60048036036060811015610f6b57600080fd5b810190602081018135600160201b811115610f8557600080fd5b820183602082011115610f9757600080fd5b803590602001918460018302840111600160201b83111715610fb857600080fd5b919390929091602081019035600160201b811115610fd557600080fd5b820183602082011115610fe757600080fd5b803590602001918460018302840111600160201b8311171561100857600080fd5b9193509150356001600160a01b03166157c1565b611024615add565b604080518215156060820152608080825286519082015285519091829160208084019284019160a08501918a019080838360005b83811015611070578181015183820152602001611058565b50505050905090810190601f16801561109d5780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b838110156110d05781810151838201526020016110b8565b50505050905090810190601f1680156110fd5780820380516001836020036101000a031916815260200191505b50848103825286518152865160209182019188019080838360005b83811015611130578181015183820152602001611118565b50505050905090810190601f16801561115d5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b61075d6004803603602081101561118657600080fd5b50356001600160a01b0316615cb0565b61025b600480360360808110156111ac57600080fd5b810190602081018135600160201b8111156111c657600080fd5b8201836020820111156111d857600080fd5b803590602001918460018302840111600160201b831117156111f957600080fd5b919390929091602081019035600160201b81111561121657600080fd5b82018360208201111561122857600080fd5b803590602001918460018302840111600160201b8311171561124957600080fd5b9193509150803590602001356001600160a01b0316615eb4565b6112d16004803603602081101561127957600080fd5b810190602081018135600160201b81111561129357600080fd5b8201836020820111156112a557600080fd5b803590602001918460018302840111600160201b831117156112c657600080fd5b50909250905061610c565b604051808060200180602001856001600160a01b03166001600160a01b03168152602001848152602001838103835287818151815260200191508051906020019080838360005b83811015611330578181015183820152602001611318565b50505050905090810190601f16801561135d5780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b83811015611390578181015183820152602001611378565b50505050905090810190601f1680156113bd5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b61025b600480360360808110156113e557600080fd5b810190602081018135600160201b8111156113ff57600080fd5b82018360208201111561141157600080fd5b803590602001918460018302840111600160201b8311171561143257600080fd5b919390929091602081019035600160201b81111561144f57600080fd5b82018360208201111561146157600080fd5b803590602001918460018302840111600160201b8311171561148257600080fd5b919390929091602081019035600160201b81111561149f57600080fd5b8201836020820111156114b157600080fd5b803590602001918460018302840111600160201b831117156114d257600080fd5b9193509150351515616274565b61025b600480360360808110156114f557600080fd5b810190602081018135600160201b81111561150f57600080fd5b82018360208201111561152157600080fd5b803590602001918460018302840111600160201b8311171561154257600080fd5b919390929091602081019035600160201b81111561155f57600080fd5b82018360208201111561157157600080fd5b803590602001918460018302840111600160201b8311171561159257600080fd5b91935091506001600160a01b0381358116916020013516616363565b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156115fc57600080fd5b505afa158015611610573d6000803e3d6000fd5b505050506040513d602081101561162657600080fd5b50516001600160a01b0316331461167157604051600160e51b62461bcd0281526004018080602001828103825260288152602001806170086028913960400191505060405180910390fd5b8085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506116b59250849150839050614827565b15156001146116f857604051600160e51b62461bcd0281526004018080602001828103825260228152602001806170566022913960400191505060405180910390fd5b83600114806117075750836002145b806117125750836003145b151561175257604051600160e51b62461bcd028152600401808060200182810382526025815260200180616fe36025913960400191505060405180910390fd5b600054604051600160e11b63425bd4250281526001600160a01b03878116602483015260448201879052606060048301908152606483018a90529216916384b7a84a918a918a918a918a918190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156117e057600080fd5b505af11580156117f4573d6000803e3d6000fd5b5050505050505050505050565b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561184f57600080fd5b505afa158015611863573d6000803e3d6000fd5b505050506040513d602081101561187957600080fd5b50516001600160a01b031633146118c457604051600160e51b62461bcd0281526004018080602001828103825260288152602001806170086028913960400191505060405180910390fd5b85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611906925083915061690c9050565b151560011461194d5760408051600160e51b62461bcd02815260206004820152601a6024820152600080516020616fa3833981519152604482015290519081900360640190fd5b8187878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506119919250849150839050614827565b15156001146119d457604051600160e51b62461bcd0281526004018080602001828103825260228152602001806170566022913960400191505060405180910390fd5b600154604051600160e01b637b713579028152604481018990528715156064820152861515608482015260a06004820190815260a482018d90526001600160a01b0390921691637b713579918e918e918e918e918e918e918e91908190602481019060c4018a8a80828437600083820152601f01601f191690910184810383528881526020019050888880828437600081840152601f19601f8201169050808301925050509950505050505050505050600060405180830381600087803b158015611a9e57600080fd5b505af1158015611ab2573d6000803e3d6000fd5b505050505050505050505050505050565b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b158015611b1157600080fd5b505afa158015611b25573d6000803e3d6000fd5b505050506040513d6020811015611b3b57600080fd5b50516001600160a01b03163314611b8657604051600160e51b62461bcd0281526004018080602001828103825260288152602001806170086028913960400191505060405180910390fd5b600a5460009060ff1615611bd25760408051600160e51b62461bcd02815260206004820152601d6024820152600080516020616fc3833981519152604482015290519081900360640190fd5b611bde60068888616f14565b50611beb60078686616f14565b50611bf860088484616f14565b5050505050505050565b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b158015611c5057600080fd5b505afa158015611c64573d6000803e3d6000fd5b505050506040513d6020811015611c7a57600080fd5b50516001600160a01b03163314611cc557604051600160e51b62461bcd0281526004018080602001828103825260288152602001806170086028913960400191505060405180910390fd5b80611ccf81615cb0565b1515600114611d1257604051600160e51b62461bcd0281526004018080602001828103825260268152602001806170306026913960400191505060405180910390fd5b600054604051600160e11b63425bd4250281526001600160a01b03858116602483015260046044830181905260608382019081526064840189905291909316926384b7a84a928992899289929091908190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611da457600080fd5b505af1158015611db8573d6000803e3d6000fd5b505060028054604051600160e01b63e98ac22d0281526001600160a01b03888116606483015260066084830181905260a060048401908152815460001960018216156101000201169590950460a4840181905291909316955063e98ac22d945091928a928a928a928692909182916024820191604481019160c49091019086908015611e855780601f10611e5a57610100808354040283529160200191611e85565b820191906000526020600020905b815481529060010190602001808311611e6857829003601f168201915b50508481038352878152602001888880828437600081840152601f19601f82011690508083019250505084810382526000815260200160200198505050505050505050600060405180830381600087803b158015611ee257600080fd5b505af1158015611ef6573d6000803e3d6000fd5b505050505050505050565b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b158015611f4f57600080fd5b505afa158015611f63573d6000803e3d6000fd5b505050506040513d6020811015611f7957600080fd5b50516001600160a01b03163314611fc457604051600160e51b62461bcd0281526004018080602001828103825260288152602001806170086028913960400191505060405180910390fd5b80611fce81615cb0565b151560011461201157604051600160e51b62461bcd0281526004018080602001828103825260268152602001806170306026913960400191505060405180910390fd5b61205387878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600192506169fb915050565b15156001146120ac5760408051600160e51b62461bcd02815260206004820152601260248201527f4e6f7468696e6720746f20617070726f76650000000000000000000000000000604482015290519081900360640190fd5b60068054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815261214693909290918301828280156121395780601f1061210e57610100808354040283529160200191612139565b820191906000526020600020905b81548152906001019060200180831161211c57829003601f168201915b5050505050836001616a68565b1561247e5760048054604051600160e11b637181418b0281526020928101928352602481018990526001600160a01b039091169163e3028316918a918a918190604401848480828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b1580156121c557600080fd5b505af11580156121d9573d6000803e3d6000fd5b505060018054600954604051600160e01b637b71357902815260448101829052606481018490526084810184905260a0600482019081526008805460026000198289161561010002019091160460a484018190526001600160a01b039095169750637b7135799650948e948e94939192839290918291602481019160c4909101908a9080156122a95780601f1061227e576101008083540402835291602001916122a9565b820191906000526020600020905b81548152906001019060200180831161228c57829003601f168201915b50508381038252878152602001888880828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b1580156122f757600080fd5b505af115801561230b573d6000803e3d6000fd5b505060035460408051600160e11b63435e1b2902815260048101918252604481018990526001600160a01b0390921693506386bc36529250889188918c918c919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b1580156123b857600080fd5b505af11580156123cc573d6000803e3d6000fd5b505060005460408051600160e01b63c214e5e50281526001600160a01b03888116602483015260048201928352604482018c9052909216935063c214e5e592508a918a9188918190606401858580828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b15801561245457600080fd5b505af1158015612468573d6000803e3d6000fd5b505050506040513d6020811015611ef657600080fd5b50505050505050565b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156124d557600080fd5b505afa1580156124e9573d6000803e3d6000fd5b505050506040513d60208110156124ff57600080fd5b50516001600160a01b0316331461254a57604051600160e51b62461bcd0281526004018080602001828103825260288152602001806170086028913960400191505060405180910390fd5b8061255481615cb0565b151560011461259757604051600160e51b62461bcd0281526004018080602001828103825260268152602001806170306026913960400191505060405180910390fd5b6004805460408051600160e01b630cc2749302815260248101879052928301908152604483018790526000926001600160a01b0390921691630cc27493918991899189918190606401858580828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b15801561261d57600080fd5b505af1158015612631573d6000803e3d6000fd5b505050506040513d602081101561264757600080fd5b505160028054604051600160e01b63e98ac22d0281526000606482018190526084820185905260a0600483019081526006805460001960018216156101000201169590950460a484018190529596506001600160a01b039093169463e98ac22d94938c938c939289929182916024820191604481019160c4909101908a9080156127125780601f106126e757610100808354040283529160200191612712565b820191906000526020600020905b8154815290600101906020018083116126f557829003601f168201915b50508481038352878152602001888880828437600081840152601f19601f82011690508083019250505084810382526000815260200160200198505050505050505050600060405180830381600087803b15801561276f57600080fd5b505af1158015612783573d6000803e3d6000fd5b50505050505050505050565b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156127dd57600080fd5b505afa1580156127f1573d6000803e3d6000fd5b505050506040513d602081101561280757600080fd5b50516001600160a01b0316331461285257604051600160e51b62461bcd0281526004018080602001828103825260288152602001806170086028913960400191505060405180910390fd5b600a5460009060ff161561289e5760408051600160e51b62461bcd02815260206004820152601d6024820152600080516020616fc3833981519152604482015290519081900360640190fd5b60035460408051600160e21b6338ec276102815260048101918252604481018590526001600160a01b039092169163e3b09d84918691869160069181906024810190606401868680828437600083820152601f01601f19169091018481038352855460026000196101006001841615020190911604808252602090910191508590801561296c5780601f106129415761010080835404028352916020019161296c565b820191906000526020600020905b81548152906001019060200180831161294f57829003601f168201915b505095505050505050600060405180830381600087803b15801561298f57600080fd5b505af115801561247e573d6000803e3d6000fd5b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156129f157600080fd5b505afa158015612a05573d6000803e3d6000fd5b505050506040513d6020811015612a1b57600080fd5b50516001600160a01b03163314612a6657604051600160e51b62461bcd0281526004018080602001828103825260288152602001806170086028913960400191505060405180910390fd5b85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612aa89250839150616b629050565b1515600114612af95760408051600160e51b62461bcd0281526020600482015260126024820152600160721b711bdc99c8191bd95cc81b9bdd08195e1a5cdd02604482015290519081900360640190fd5b81612b0381615cb0565b1515600114612b4657604051600160e51b62461bcd0281526004018080602001828103825260268152602001806170306026913960400191505060405180910390fd5b600054604051600160e01b63e3483a9d0281526001600160a01b0388811660048301908152600160648401819052608060248501908152608485018d9052929094169363e3483a9d938b938e938e938d938d9391929190604481019060a401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b158015612c0957600080fd5b505af1158015612c1d573d6000803e3d6000fd5b505060028054604051600160e01b63e98ac22d0281526001600160a01b038b8116606483015260046084830181905260a08382019081526006805460001960018216156101000201169690960460a4850181905292909416965063e98ac22d95508e938e938e9382916024810191604482019160c401908a908015612ce35780601f10612cb857610100808354040283529160200191612ce3565b820191906000526020600020905b815481529060010190602001808311612cc657829003601f168201915b50508481038352878152602001888880828437600081840152601f19601f82011690508083019250505084810382526000815260200160200198505050505050505050600060405180830381600087803b158015612d4057600080fd5b505af1158015612d54573d6000803e3d6000fd5b505050505050505050505050565b60055460408051600160e21b63395c945702815290516000926001600160a01b03169163e572515c916004808301926020929190829003018186803b158015612daa57600080fd5b505afa158015612dbe573d6000803e3d6000fd5b505050506040513d6020811015612dd457600080fd5b50516001600160a01b03163314612e1f57604051600160e51b62461bcd0281526004018080602001828103825260288152602001806170086028913960400191505060405180910390fd5b600a5460009060ff1615612e6b5760408051600160e51b62461bcd02815260206004820152601d6024820152600080516020616fc3833981519152604482015290519081900360640190fd5b600a805460ff1916600117908190556040805160ff9290921615158252517f04f651be6fb8fc575d94591e56e9f6e66e33ef23e949765918b3bdae50c617cf9181900360200190a1600a5460ff1691505b5090565b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b158015612f0e57600080fd5b505afa158015612f22573d6000803e3d6000fd5b505050506040513d6020811015612f3857600080fd5b50516001600160a01b03163314612f8357604051600160e51b62461bcd0281526004018080602001828103825260288152602001806170086028913960400191505060405180910390fd5b80612f8d81615cb0565b1515600114612fd057604051600160e51b62461bcd0281526004018080602001828103825260268152602001806170306026913960400191505060405180910390fd5b60068054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815261306a939092909183018282801561305d5780601f106130325761010080835404028352916020019161305d565b820191906000526020600020905b81548152906001019060200180831161304057829003601f168201915b5050505050836006616a68565b1561310257600054604051600160e11b63425bd4250281526001600160a01b0385811660248301526005604483018190526060600484019081526064840189905291909316926384b7a84a928992899289929091908190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611ee257600080fd5b5050505050565b600a5460ff165b90565b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561316157600080fd5b505afa158015613175573d6000803e3d6000fd5b505050506040513d602081101561318b57600080fd5b50516001600160a01b031633146131d657604051600160e51b62461bcd0281526004018080602001828103825260288152602001806170086028913960400191505060405180910390fd5b600a5460009060ff16156132225760408051600160e51b62461bcd02815260206004820152601d6024820152600080516020616fc3833981519152604482015290519081900360640190fd5b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526132bc93909290918301828280156132af5780601f10613284576101008083540402835291602001916132af565b820191906000526020600020905b81548152906001019060200180831161329257829003601f168201915b5050505050836001616c27565b600054604051600160e01b63e3483a9d0281526001600160a01b038481166004830190815260026064840181905260806024850190815260068054600019600182161561010002011683900460848701819052949096169563e3483a9d95899591946007949390929091604481019160a490910190879080156133805780601f1061335557610100808354040283529160200191613380565b820191906000526020600020905b81548152906001019060200180831161336357829003601f168201915b50508381038252855460026000196101006001841615020190911604808252602090910190869080156133f45780601f106133c9576101008083540402835291602001916133f4565b820191906000526020600020905b8154815290600101906020018083116133d757829003601f168201915b50509650505050505050600060405180830381600087803b15801561341857600080fd5b505af115801561342c573d6000803e3d6000fd5b505050505050565b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561348257600080fd5b505afa158015613496573d6000803e3d6000fd5b505050506040513d60208110156134ac57600080fd5b50516001600160a01b031633146134f757604051600160e51b62461bcd0281526004018080602001828103825260288152602001806170086028913960400191505060405180910390fd5b84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613539925083915061690c9050565b15156001146135805760408051600160e51b62461bcd02815260206004820152601a6024820152600080516020616fa3833981519152604482015290519081900360640190fd5b8186868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506135c49250849150839050614827565b151560011461360757604051600160e51b62461bcd0281526004018080602001828103825260228152602001806170566022913960400191505060405180910390fd5b60035460408051600160e01b633f5e1a4502815260048101918252604481018890526001600160a01b0390921691633f5e1a4591899189918d918d919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015612d4057600080fd5b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156136fe57600080fd5b505afa158015613712573d6000803e3d6000fd5b505050506040513d602081101561372857600080fd5b50516001600160a01b0316331461377357604051600160e51b62461bcd0281526004018080602001828103825260288152602001806170086028913960400191505060405180910390fd5b82828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506137b5925083915061690c9050565b15156001146137fc5760408051600160e51b62461bcd02815260206004820152601a6024820152600080516020616fa3833981519152604482015290519081900360640190fd5b8184848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506138409250849150839050614827565b151560011461388357604051600160e51b62461bcd0281526004018080602001828103825260228152602001806170566022913960400191505060405180910390fd5b60408051602080820190815260078054600260001961010060018416150201909116049383018490529290918291606090910190849080156139065780601f106138db57610100808354040283529160200191613906565b820191906000526020600020905b8154815290600101906020018083116138e957829003601f168201915b50509250505060405160208183030381529060405280519060200120888860405160200180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040528051906020012014158015613a7357506040805160208082019081526008805460026000196101006001841615020190911604938301849052929091829160609091019084908015613a015780601f106139d657610100808354040283529160200191613a01565b820191906000526020600020905b8154815290600101906020018083116139e457829003601f168201915b50509250505060405160208183030381529060405280519060200120888860405160200180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040528051906020012014155b1515613ac95760408051600160e51b62461bcd02815260206004820152601d60248201527f61646d696e20726f6c65732063616e6e6f742062652072656d6f766564000000604482015290519081900360640190fd5b60015460408051600160e11b63531a180902815260048101918252604481018a90526001600160a01b039092169163a6343012918b918b918b918b919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015612d4057600080fd5b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b158015613bc057600080fd5b505afa158015613bd4573d6000803e3d6000fd5b505050506040513d6020811015613bea57600080fd5b50516001600160a01b03163314613c3557604051600160e51b62461bcd0281526004018080602001828103825260288152602001806170086028913960400191505060405180910390fd5b80613c3f81615cb0565b1515600114613c8257604051600160e51b62461bcd0281526004018080602001828103825260268152602001806170306026913960400191505060405180910390fd5b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152613d1c9390929091830182828015613d0f5780601f10613ce457610100808354040283529160200191613d0f565b820191906000526020600020905b815481529060010190602001808311613cf257829003601f168201915b5050505050836005616a68565b1561342c57600354604051600160e11b63066280a3028152600560448201819052606060048301908152606483018790526001600160a01b0390931692630cc5014692889288928c928c92919081906024810190608401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b15801561276f57600080fd5b6000805460408051600160e11b6335ab46bb0281526001600160a01b0386811660048301908152602483019384528651604484015286519190941693636b568d76938893889360649091019060208501908083838c5b83811015613e44578181015183820152602001613e2c565b50505050905090810190601f168015613e715780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b158015613e8f57600080fd5b505afa158015613ea3573d6000803e3d6000fd5b505050506040513d6020811015613eb957600080fd5b505190505b92915050565b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b158015613f1257600080fd5b505afa158015613f26573d6000803e3d6000fd5b505050506040513d6020811015613f3c57600080fd5b50516001600160a01b03163314613f8757604051600160e51b62461bcd0281526004018080602001828103825260288152602001806170086028913960400191505060405180910390fd5b80613f9181615cb0565b1515600114613fd457604051600160e51b62461bcd0281526004018080602001828103825260268152602001806170306026913960400191505060405180910390fd5b60068054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815261406e93909290918301828280156140615780601f1061403657610100808354040283529160200191614061565b820191906000526020600020905b81548152906001019060200180831161404457829003601f168201915b5050505050836004616a68565b156131025760008054604051600160e01b631d09dc930281526020600482019081526024820188905283926001600160a01b031691631d09dc93918a918a91908190604401848480828437600081840152601f19601f82011690508083019250505093505050506040805180830381600087803b1580156140ee57600080fd5b505af1158015614102573d6000803e3d6000fd5b505050506040513d604081101561411857600080fd5b508051602090910151909250905081156141c65760068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526141c693909290918301828280156141b95780601f1061418e576101008083540402835291602001916141b9565b820191906000526020600020905b81548152906001019060200180831161419c57829003601f168201915b5050505050826000616c27565b6000805460408051600160e01b63c214e5e50281526001600160a01b03898116602483015260048201928352604482018b90529092169163c214e5e5918b918b918b918190606401858580828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b15801561424b57600080fd5b505af115801561425f573d6000803e3d6000fd5b505050506040513d602081101561427557600080fd5b505190508015611bf85760068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152611bf8939092909183018282801561430c5780601f106142e15761010080835404028352916020019161430c565b820191906000526020600020905b8154815290600101906020018083116142ef57829003601f168201915b5050505050876001616c27565b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561436757600080fd5b505afa15801561437b573d6000803e3d6000fd5b505050506040513d602081101561439157600080fd5b50516001600160a01b031633146143dc57604051600160e51b62461bcd0281526004018080602001828103825260288152602001806170086028913960400191505060405180910390fd5b80836143e88282614827565b151560011461442b57604051600160e51b62461bcd0281526004018080602001828103825260228152602001806170566022913960400191505060405180910390fd5b846144358161690c565b151560011461447c5760408051600160e51b62461bcd02815260206004820152601a6024820152600080516020616fa3833981519152604482015290519081900360640190fd5b6144868787613dd6565b15156001146144df5760408051600160e51b62461bcd02815260206004820152601d60248201527f6f7065726174696f6e2063616e6e6f7420626520706572666f726d6564000000604482015290519081900360640190fd5b6144e98587616dbd565b15156001146145425760408051600160e51b62461bcd02815260206004820152601460248201527f726f6c6520646f6573206e6f7420657869737473000000000000000000000000604482015290519081900360640190fd5b6001546000906001600160a01b031663be322e54878961456181616dd8565b6040518463ffffffff1660e01b815260040180806020018060200180602001848103845287818151815260200191508051906020019080838360005b838110156145b557818101518382015260200161459d565b50505050905090810190601f1680156145e25780820380516001836020036101000a031916815260200191505b50848103835286518152865160209182019188019080838360005b838110156146155781810151838201526020016145fd565b50505050905090810190601f1680156146425780820380516001836020036101000a031916815260200191505b50848103825285518152855160209182019187019080838360005b8381101561467557818101518382015260200161465d565b50505050905090810190601f1680156146a25780820380516001836020036101000a031916815260200191505b50965050505050505060206040518083038186803b1580156146c357600080fd5b505afa1580156146d7573d6000803e3d6000fd5b505050506040513d60208110156146ed57600080fd5b505160008054604051600160e21b63050e95810281526001600160a01b038c81166004830190815285151560648401526080602484019081528d5160848501528d51969750919093169463143a5604948e948e948e948a9492939092604483019260a401916020890191908190849084905b8381101561477757818101518382015260200161475f565b50505050905090810190601f1680156147a45780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b838110156147d75781810151838201526020016147bf565b50505050905090810190601f1680156148045780820380516001836020036101000a031916815260200191505b509650505050505050600060405180830381600087803b158015612d4057600080fd5b600080546001600160a01b031663e8b42bf4848461484481616dd8565b6040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b031681526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156148ac578181015183820152602001614894565b50505050905090810190601f1680156148d95780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561490c5781810151838201526020016148f4565b50505050905090810190601f1680156149395780820380516001836020036101000a031916815260200191505b509550505050505060206040518083038186803b15801561495957600080fd5b505afa15801561496d573d6000803e3d6000fd5b505050506040513d602081101561498357600080fd5b50511561499257506001613ebe565b6001546000805460408051600160e01b6381d66b230281526001600160a01b03888116600483015291519482169463be322e549493909216926381d66b2392602480840193829003018186803b1580156149eb57600080fd5b505afa1580156149ff573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015614a2857600080fd5b810190808051600160201b811115614a3f57600080fd5b82016020810184811115614a5257600080fd5b8151600160201b811182820187101715614a6b57600080fd5b505092919050505084614a7d86616dd8565b6040518463ffffffff1660e01b815260040180806020018060200180602001848103845287818151815260200191508051906020019080838360005b83811015614ad1578181015183820152602001614ab9565b50505050905090810190601f168015614afe5780820380516001836020036101000a031916815260200191505b50848103835286518152865160209182019188019080838360005b83811015614b31578181015183820152602001614b19565b50505050905090810190601f168015614b5e5780820380516001836020036101000a031916815260200191505b50848103825285518152855160209182019187019080838360005b83811015614b91578181015183820152602001614b79565b50505050905090810190601f168015614bbe5780820380516001836020036101000a031916815260200191505b50965050505050505060206040518083038186803b158015613e8f57600080fd5b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b158015614c2d57600080fd5b505afa158015614c41573d6000803e3d6000fd5b505050506040513d6020811015614c5757600080fd5b50516001600160a01b03163314614ca257604051600160e51b62461bcd0281526004018080602001828103825260288152602001806170086028913960400191505060405180910390fd5b600a5460009060ff1615614cee5760408051600160e51b62461bcd02815260206004820152601d6024820152600080516020616fc3833981519152604482015290519081900360640190fd5b60048054604051600160e01b639e58eb9f028152602481018690526044810185905260609281019283526006805460026000196001831615610100020190911604606483018190526001600160a01b0390931693639e58eb9f9391928892889291829160849091019086908015614da65780601f10614d7b57610100808354040283529160200191614da6565b820191906000526020600020905b815481529060010190602001808311614d8957829003601f168201915b5050945050505050600060405180830381600087803b158015614dc857600080fd5b505af1158015614ddc573d6000803e3d6000fd5b505060018054600954604051600160e01b637b71357902815260448101829052606481018490526084810184905260a0600482019081526007805460026000198289161561010002019091160460a484018190526001600160a01b039095169750637b71357996509460069490928392918291602481019160c49091019089908015614ea95780601f10614e7e57610100808354040283529160200191614ea9565b820191906000526020600020905b815481529060010190602001808311614e8c57829003601f168201915b5050838103825287546002600019610100600184161502019091160480825260209091019088908015614f1d5780601f10614ef257610100808354040283529160200191614f1d565b820191906000526020600020905b815481529060010190602001808311614f0057829003601f168201915b5050975050505050505050600060405180830381600087803b158015614f4257600080fd5b505af1158015614f56573d6000803e3d6000fd5b505060005460408051600160e01b63cef7f6af028152600481019182526007805460026000196001831615610100020190911604604483018190526001600160a01b03909416955063cef7f6af945092600892918291602482019160640190869080156150045780601f10614fd957610100808354040283529160200191615004565b820191906000526020600020905b815481529060010190602001808311614fe757829003601f168201915b50508381038252845460026000196101006001841615020190911604808252602090910190859080156150785780601f1061504d57610100808354040283529160200191615078565b820191906000526020600020905b81548152906001019060200180831161505b57829003601f168201915b5050945050505050600060405180830381600087803b15801561298f57600080fd5b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156150e857600080fd5b505afa1580156150fc573d6000803e3d6000fd5b505050506040513d602081101561511257600080fd5b50516001600160a01b0316331461515d57604051600160e51b62461bcd0281526004018080602001828103825260288152602001806170086028913960400191505060405180910390fd5b86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061519f9250839150616b629050565b15156001146151f05760408051600160e51b62461bcd0281526020600482015260126024820152600160721b711bdc99c8191bd95cc81b9bdd08195e1a5cdd02604482015290519081900360640190fd5b8188888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506152349250849150839050614827565b151560011461527757604051600160e51b62461bcd0281526004018080602001828103825260228152602001806170566022913960400191505060405180910390fd5b6004805460408051600160e71b623f2a69028152928301908152604483018c90526001600160a01b0390911691631f953480918d918d918d918d919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561531f57600080fd5b505af1158015615333573d6000803e3d6000fd5b5050505060608a8a8a8a60405160200180858580828437600160f91b6017029201918252506001018383808284376040805191909301818103601f1901825290925250955050891593506117f4925050505760035460408051600160e01b633f5e1a4502815260048101918252604481018990526001600160a01b0390921691633f5e1a45918a918a918691819060248101906064018686808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015615419578181015183820152602001615401565b50505050905090810190601f1680156154465780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015611a9e57600080fd5b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156154b657600080fd5b505afa1580156154ca573d6000803e3d6000fd5b505050506040513d60208110156154e057600080fd5b50516001600160a01b0316331461552b57604051600160e51b62461bcd0281526004018080602001828103825260288152602001806170086028913960400191505060405180910390fd5b8061553581615cb0565b151560011461557857604051600160e51b62461bcd0281526004018080602001828103825260268152602001806170306026913960400191505060405180910390fd5b82600114806155875750826002145b15156155dd5760408051600160e51b62461bcd02815260206004820152601560248201527f4f7065726174696f6e206e6f7420616c6c6f7765640000000000000000000000604482015290519081900360640190fd5b60008084600114156155f55750600290506003615606565b846002141561560657506003905060055b61564787878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508592506169fb915050565b15156001146156a05760408051600160e51b62461bcd02815260206004820152601560248201527f6f7065726174696f6e206e6f7420616c6c6f7765640000000000000000000000604482015290519081900360640190fd5b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152615739939092909183018282801561572d5780601f106157025761010080835404028352916020019161572d565b820191906000526020600020905b81548152906001019060200180831161571057829003601f168201915b50505050508584616a68565b1561247e576004805460408051600160e01b6314f775f902815260248101899052928301908152604483018990526001600160a01b03909116916314f775f9918a918a918a918190606401858580828437600081840152601f19601f820116905080830192505050945050505050600060405180830381600087803b1580156117e057600080fd5b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561580f57600080fd5b505afa158015615823573d6000803e3d6000fd5b505050506040513d602081101561583957600080fd5b50516001600160a01b0316331461588457604051600160e51b62461bcd0281526004018080602001828103825260288152602001806170086028913960400191505060405180910390fd5b8061588e81615cb0565b15156001146158d157604051600160e51b62461bcd0281526004018080602001828103825260268152602001806170306026913960400191505060405180910390fd5b600354604051600160e11b63066280a30281526004604482018190526060828201908152606483018790526001600160a01b0390931692630cc5014692889288928c928c92919081906024810190608401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b15801561598557600080fd5b505af1158015615999573d6000803e3d6000fd5b505060028054604051600160e01b63e98ac22d02815260006064820181905260056084830181905260a0600484019081526006805460001960018216156101000201169690960460a485018190526001600160a01b03909516975063e98ac22d96508d948d948d948d9490939092909182916024820191604481019160c4909101908c908015615a6a5780601f10615a3f57610100808354040283529160200191615a6a565b820191906000526020600020905b815481529060010190602001808311615a4d57829003601f168201915b505084810383528981526020018a8a80828437600083820152601f01601f191690910185810383528881526020019050888880828437600081840152601f19601f8201169050808301925050509a5050505050505050505050600060405180830381600087803b15801561276f57600080fd5b600a5460068054604080516020601f6002600019600187161561010002019095169490940493840181900481028201810190925282815260609485948594600094919360079360089360ff909116928691830182828015615b7f5780601f10615b5457610100808354040283529160200191615b7f565b820191906000526020600020905b815481529060010190602001808311615b6257829003601f168201915b5050865460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815295995088945092508401905082828015615c0d5780601f10615be257610100808354040283529160200191615c0d565b820191906000526020600020905b815481529060010190602001808311615bf057829003601f168201915b5050855460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815295985087945092508401905082828015615c9b5780601f10615c7057610100808354040283529160200191615c9b565b820191906000526020600020905b815481529060010190602001808311615c7e57829003601f168201915b50505050509150935093509350935090919293565b60408051602080820190815260078054600260001961010060018416150201909116049383018490526000939092829160609091019084908015615d355780601f10615d0a57610100808354040283529160200191615d35565b820191906000526020600020905b815481529060010190602001808311615d1857829003601f168201915b505060408051601f19818403018152828252805160209091012060008054600160e01b6381d66b230285526001600160a01b038a8116600487015293519297509290921694506381d66b239350602480840193829003018186803b158015615d9c57600080fd5b505afa158015615db0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015615dd957600080fd5b810190808051600160201b811115615df057600080fd5b82016020810184811115615e0357600080fd5b8151600160201b811182820187101715615e1c57600080fd5b50509291905050506040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015615e64578181015183820152602001615e4c565b50505050905090810190601f168015615e915780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120149050919050565b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b158015615f0257600080fd5b505afa158015615f16573d6000803e3d6000fd5b505050506040513d6020811015615f2c57600080fd5b50516001600160a01b03163314615f7757604051600160e51b62461bcd0281526004018080602001828103825260288152602001806170086028913960400191505060405180910390fd5b8086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250615fbb9250849150839050614827565b1515600114615ffe57604051600160e51b62461bcd0281526004018080602001828103825260228152602001806170566022913960400191505060405180910390fd5b836001148061600d5750836002145b806160185750836003145b151561605857604051600160e51b62461bcd028152600401808060200182810382526025815260200180616fe36025913960400191505060405180910390fd5b600354604051600160e11b63066280a302815260448101869052606060048201908152606482018890526001600160a01b0390921691630cc5014691899189918d918d918b919081906024810190608401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015612d4057600080fd5b600254604051600160e21b62539ab302815260206004820190815260248201849052606092839260009283926001600160a01b03169163014e6acc9189918991908190604401848480828437600081840152601f19601f820116905080830192505050935050505060006040518083038186803b15801561618c57600080fd5b505afa1580156161a0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260808110156161c957600080fd5b810190808051600160201b8111156161e057600080fd5b820160208101848111156161f357600080fd5b8151600160201b81118282018710171561620c57600080fd5b50509291906020018051600160201b81111561622757600080fd5b8201602081018481111561623a57600080fd5b8151600160201b81118282018710171561625357600080fd5b50506020820151604090920151949b909a5090985092965091945050505050565b6005546001600160a01b031633146162d65760408051600160e51b62461bcd02815260206004820152600e60248201527f696e76616c69642063616c6c6572000000000000000000000000000000000000604482015290519081900360640190fd5b600a5460009060ff16156163225760408051600160e51b62461bcd02815260206004820152601d6024820152600080516020616fc3833981519152604482015290519081900360640190fd5b61632e60068989616f14565b5061633b60078787616f14565b5061634860088585616f14565b5050600a805460ff1916911515919091179055505050505050565b600560009054906101000a90046001600160a01b03166001600160a01b031663e572515c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156163b157600080fd5b505afa1580156163c5573d6000803e3d6000fd5b505050506040513d60208110156163db57600080fd5b50516001600160a01b0316331461642657604051600160e51b62461bcd0281526004018080602001828103825260288152602001806170086028913960400191505060405180910390fd5b600a5460019060ff16151581146164755760408051600160e51b62461bcd02815260206004820152601d6024820152600080516020616fc3833981519152604482015290519081900360640190fd5b8161647f81615cb0565b15156001146164c257604051600160e51b62461bcd0281526004018080602001828103825260268152602001806170306026913960400191505060405180910390fd5b60028054604051600160e01b63e98ac22d0281526001600160a01b03878116606483015260016084830181905260a06004840190815260068054600019818516156101000201169690960460a48501819052929094169463e98ac22d9490938e938e938e938e938e9382916024810191604482019160c401908c90801561658a5780601f1061655f5761010080835404028352916020019161658a565b820191906000526020600020905b81548152906001019060200180831161656d57829003601f168201915b505084810383528981526020018a8a80828437600083820152601f01601f191690910185810383528881526020019050888880828437600081840152601f19601f8201169050808301925050509a5050505050505050505050600060405180830381600087803b1580156165fd57600080fd5b505af1158015616611573d6000803e3d6000fd5b505060048054604051600160e01b63f9953de50281526020928101928352602481018c90526001600160a01b03909116935063f9953de592508b918b918190604401848480828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561668f57600080fd5b505af11580156166a3573d6000803e3d6000fd5b505060035460408051600160e11b6354bd220302815260048101918252604481018a90526001600160a01b03909216935063a97a44069250899189918d918d919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561675057600080fd5b505af1158015616764573d6000803e3d6000fd5b505050506167a88489898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613dd692505050565b15156001146168015760408051600160e51b62461bcd02815260206004820152601d60248201527f4f7065726174696f6e2063616e6e6f7420626520706572666f726d6564000000604482015290519081900360640190fd5b600054604051600160e01b63e3483a9d0281526001600160a01b0386811660048301908152600160648401819052608060248501908152608485018d9052929094169363e3483a9d9389938e938e93600893909290604481019060a401878780828437600083820152601f01601f1916909101848103835286546002600019610100600184161502019091160480825260209091019150869080156168e75780601f106168bc576101008083540402835291602001916168e7565b820191906000526020600020905b8154815290600101906020018083116168ca57829003601f168201915b5050975050505050505050600060405180830381600087803b158015612d4057600080fd5b6004805460408051600160e01b638c8642df0281526002602482018190529381019182528451604482015284516000946001600160a01b0390941693638c8642df93879391929091829160649091019060208601908083838c5b8381101561697e578181015183820152602001616966565b50505050905090810190601f1680156169ab5780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b1580156169c957600080fd5b505afa1580156169dd573d6000803e3d6000fd5b505050506040513d60208110156169f357600080fd5b505192915050565b6004805460408051600160e01b638c8642df028152602481018590529283019081528451604484015284516000936001600160a01b0390931692638c8642df9287928792829160649091019060208601908083838c83811015613e44578181015183820152602001613e2c565b600254604051600160e21b632c084e190281526001600160a01b03848116602483015260448201849052606060048301908152865160648401528651600094929092169263b02138649288928892889282916084019060208701908083838d5b83811015616ae0578181015183820152602001616ac8565b50505050905090810190601f168015616b0d5780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b158015616b2e57600080fd5b505af1158015616b42573d6000803e3d6000fd5b505050506040513d6020811015616b5857600080fd5b5051949350505050565b600480546040517fffe40d1d00000000000000000000000000000000000000000000000000000000815260209281018381528451602483015284516000946001600160a01b039094169363ffe40d1d9387939283926044909201918501908083838b5b83811015616bdd578181015183820152602001616bc5565b50505050905090810190601f168015616c0a5780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b1580156169c957600080fd5b8015616d015760025460408051600160e01b635607395b0281526001600160a01b03858116602483015260048201928352865160448301528651931692635607395b9287928792829160640190602086019080838360005b83811015616c97578181015183820152602001616c7f565b50505050905090810190601f168015616cc45780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b158015616ce457600080fd5b505af1158015616cf8573d6000803e3d6000fd5b50505050616db8565b60025460408051600160e11b632ce5eb7f0281526001600160a01b038581166024830152600482019283528651604483015286519316926359cbd6fe9287928792829160640190602086019080838360005b83811015616d6b578181015183820152602001616d53565b50505050905090810190601f168015616d985780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b15801561298f57600080fd5b505050565b6001546000906001600160a01b031663abf5739f8484614a7d815b60048054604051600160e11b630bbe46c502815260209281018381528451602483015284516060946001600160a01b039094169363177c8d8a93879392839260449092019185019080838360005b83811015616e3e578181015183820152602001616e26565b50505050905090810190601f168015616e6b5780820380516001836020036101000a031916815260200191505b509250505060006040518083038186803b158015616e8857600080fd5b505afa158015616e9c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015616ec557600080fd5b810190808051600160201b811115616edc57600080fd5b82016020810184811115616eef57600080fd5b8151600160201b811182820187101715616f0857600080fd5b50909695505050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10616f555782800160ff19823516178555616f82565b82800160010185558215616f82579182015b82811115616f82578235825591602001919060010190616f67565b50612ebc926131109250905b80821115612ebc5760008155600101616f8e56fe6f7267206e6f7420696e20617070726f76656420737461747573000000000000496e636f7272656374206e6574776f726b20626f6f7420737461747573000000696e76616c696420616374696f6e2e206f7065726174696f6e206e6f7420616c6c6f77656463616e2062652063616c6c656420627920696e7465726661636520636f6e7472616374206f6e6c796163636f756e74206973206e6f742061206e6574776f726b2061646d696e206163636f756e746163636f756e74206973206e6f742061206f72672061646d696e206163636f756e74a165627a7a7230582047eb5d5106c9085018e51aa9094a706fff1dfed139d9e1e83d83ee3d32fec65b0029"

// DeployPermImpl deploys a new Ethereum contract, binding an instance of PermImpl to it.
func DeployPermImpl(auth *bind.TransactOpts, backend bind.ContractBackend, _permUpgradable common.Address, _orgManager common.Address, _rolesManager common.Address, _accountManager common.Address, _voterManager common.Address, _nodeManager common.Address) (common.Address, *types.Transaction, *PermImpl, error) {
	parsed, err := abi.JSON(strings.NewReader(PermImplABI))
	if err != nil {
		return common.Address{}, nil, nil, err
	}

	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(PermImplBin), backend, _permUpgradable, _orgManager, _rolesManager, _accountManager, _voterManager, _nodeManager)
	if err != nil {
		return common.Address{}, nil, nil, err
	}
	return address, tx, &PermImpl{PermImplCaller: PermImplCaller{contract: contract}, PermImplTransactor: PermImplTransactor{contract: contract}, PermImplFilterer: PermImplFilterer{contract: contract}}, nil
}

// PermImpl is an auto generated Go binding around an Ethereum contract.
type PermImpl struct {
	PermImplCaller     // Read-only binding to the contract
	PermImplTransactor // Write-only binding to the contract
	PermImplFilterer   // Log filterer for contract events
}

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

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

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

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

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

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

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

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

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

// NewPermImpl creates a new instance of PermImpl, bound to a specific deployed contract.
func NewPermImpl(address common.Address, backend bind.ContractBackend) (*PermImpl, error) {
	contract, err := bindPermImpl(address, backend, backend, backend)
	if err != nil {
		return nil, err
	}
	return &PermImpl{PermImplCaller: PermImplCaller{contract: contract}, PermImplTransactor: PermImplTransactor{contract: contract}, PermImplFilterer: PermImplFilterer{contract: contract}}, nil
}

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

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

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

// bindPermImpl binds a generic wrapper to an already deployed contract.
func bindPermImpl(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
	parsed, err := abi.JSON(strings.NewReader(PermImplABI))
	if err != nil {
		return nil, err
	}
	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
}

// Call invokes the (constant) contract method with params as input values and
// sets the output to result. The result type might be a single field for simple
// returns, a slice of interfaces for anonymous returns and a struct for named
// returns.
func (_PermImpl *PermImplRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
	return _PermImpl.Contract.PermImplCaller.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 (_PermImpl *PermImplRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
	return _PermImpl.Contract.PermImplTransactor.contract.Transfer(opts)
}

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

// Call invokes the (constant) contract method with params as input values and
// sets the output to result. The result type might be a single field for simple
// returns, a slice of interfaces for anonymous returns and a struct for named
// returns.
func (_PermImpl *PermImplCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
	return _PermImpl.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 (_PermImpl *PermImplTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
	return _PermImpl.Contract.contract.Transfer(opts)
}

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

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

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

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

	return out0, err

}

// GetNetworkBootStatus is a free data retrieval call binding the contract method 0x4cbfa82e.
//
// Solidity: function getNetworkBootStatus() view returns(bool)
func (_PermImpl *PermImplSession) GetNetworkBootStatus() (bool, error) {
	return _PermImpl.Contract.GetNetworkBootStatus(&_PermImpl.CallOpts)
}

// GetNetworkBootStatus is a free data retrieval call binding the contract method 0x4cbfa82e.
//
// Solidity: function getNetworkBootStatus() view returns(bool)
func (_PermImpl *PermImplCallerSession) GetNetworkBootStatus() (bool, error) {
	return _PermImpl.Contract.GetNetworkBootStatus(&_PermImpl.CallOpts)
}

// GetPendingOp is a free data retrieval call binding the contract method 0xf346a3a7.
//
// Solidity: function getPendingOp(string _orgId) view returns(string, string, address, uint256)
func (_PermImpl *PermImplCaller) GetPendingOp(opts *bind.CallOpts, _orgId string) (string, string, common.Address, *big.Int, error) {
	var out []interface{}
	err := _PermImpl.contract.Call(opts, &out, "getPendingOp", _orgId)

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

	out0 := *abi.ConvertType(out[0], new(string)).(*string)
	out1 := *abi.ConvertType(out[1], new(string)).(*string)
	out2 := *abi.ConvertType(out[2], new(common.Address)).(*common.Address)
	out3 := *abi.ConvertType(out[3], new(*big.Int)).(**big.Int)

	return out0, out1, out2, out3, err

}

// GetPendingOp is a free data retrieval call binding the contract method 0xf346a3a7.
//
// Solidity: function getPendingOp(string _orgId) view returns(string, string, address, uint256)
func (_PermImpl *PermImplSession) GetPendingOp(_orgId string) (string, string, common.Address, *big.Int, error) {
	return _PermImpl.Contract.GetPendingOp(&_PermImpl.CallOpts, _orgId)
}

// GetPendingOp is a free data retrieval call binding the contract method 0xf346a3a7.
//
// Solidity: function getPendingOp(string _orgId) view returns(string, string, address, uint256)
func (_PermImpl *PermImplCallerSession) GetPendingOp(_orgId string) (string, string, common.Address, *big.Int, error) {
	return _PermImpl.Contract.GetPendingOp(&_PermImpl.CallOpts, _orgId)
}

// GetPolicyDetails is a free data retrieval call binding the contract method 0xcc9ba6fa.
//
// Solidity: function getPolicyDetails() view returns(string, string, string, bool)
func (_PermImpl *PermImplCaller) GetPolicyDetails(opts *bind.CallOpts) (string, string, string, bool, error) {
	var out []interface{}
	err := _PermImpl.contract.Call(opts, &out, "getPolicyDetails")

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

	out0 := *abi.ConvertType(out[0], new(string)).(*string)
	out1 := *abi.ConvertType(out[1], new(string)).(*string)
	out2 := *abi.ConvertType(out[2], new(string)).(*string)
	out3 := *abi.ConvertType(out[3], new(bool)).(*bool)

	return out0, out1, out2, out3, err

}

// GetPolicyDetails is a free data retrieval call binding the contract method 0xcc9ba6fa.
//
// Solidity: function getPolicyDetails() view returns(string, string, string, bool)
func (_PermImpl *PermImplSession) GetPolicyDetails() (string, string, string, bool, error) {
	return _PermImpl.Contract.GetPolicyDetails(&_PermImpl.CallOpts)
}

// GetPolicyDetails is a free data retrieval call binding the contract method 0xcc9ba6fa.
//
// Solidity: function getPolicyDetails() view returns(string, string, string, bool)
func (_PermImpl *PermImplCallerSession) GetPolicyDetails() (string, string, string, bool, error) {
	return _PermImpl.Contract.GetPolicyDetails(&_PermImpl.CallOpts)
}

// IsNetworkAdmin is a free data retrieval call binding the contract method 0xd1aa0c20.
//
// Solidity: function isNetworkAdmin(address _account) view returns(bool)
func (_PermImpl *PermImplCaller) IsNetworkAdmin(opts *bind.CallOpts, _account common.Address) (bool, error) {
	var out []interface{}
	err := _PermImpl.contract.Call(opts, &out, "isNetworkAdmin", _account)

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

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

	return out0, err

}

// IsNetworkAdmin is a free data retrieval call binding the contract method 0xd1aa0c20.
//
// Solidity: function isNetworkAdmin(address _account) view returns(bool)
func (_PermImpl *PermImplSession) IsNetworkAdmin(_account common.Address) (bool, error) {
	return _PermImpl.Contract.IsNetworkAdmin(&_PermImpl.CallOpts, _account)
}

// IsNetworkAdmin is a free data retrieval call binding the contract method 0xd1aa0c20.
//
// Solidity: function isNetworkAdmin(address _account) view returns(bool)
func (_PermImpl *PermImplCallerSession) IsNetworkAdmin(_account common.Address) (bool, error) {
	return _PermImpl.Contract.IsNetworkAdmin(&_PermImpl.CallOpts, _account)
}

// IsOrgAdmin is a free data retrieval call binding the contract method 0x9bd38101.
//
// Solidity: function isOrgAdmin(address _account, string _orgId) view returns(bool)
func (_PermImpl *PermImplCaller) IsOrgAdmin(opts *bind.CallOpts, _account common.Address, _orgId string) (bool, error) {
	var out []interface{}
	err := _PermImpl.contract.Call(opts, &out, "isOrgAdmin", _account, _orgId)

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

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

	return out0, err

}

// IsOrgAdmin is a free data retrieval call binding the contract method 0x9bd38101.
//
// Solidity: function isOrgAdmin(address _account, string _orgId) view returns(bool)
func (_PermImpl *PermImplSession) IsOrgAdmin(_account common.Address, _orgId string) (bool, error) {
	return _PermImpl.Contract.IsOrgAdmin(&_PermImpl.CallOpts, _account, _orgId)
}

// IsOrgAdmin is a free data retrieval call binding the contract method 0x9bd38101.
//
// Solidity: function isOrgAdmin(address _account, string _orgId) view returns(bool)
func (_PermImpl *PermImplCallerSession) IsOrgAdmin(_account common.Address, _orgId string) (bool, error) {
	return _PermImpl.Contract.IsOrgAdmin(&_PermImpl.CallOpts, _account, _orgId)
}

// ValidateAccount is a free data retrieval call binding the contract method 0x6b568d76.
//
// Solidity: function validateAccount(address _account, string _orgId) view returns(bool)
func (_PermImpl *PermImplCaller) ValidateAccount(opts *bind.CallOpts, _account common.Address, _orgId string) (bool, error) {
	var out []interface{}
	err := _PermImpl.contract.Call(opts, &out, "validateAccount", _account, _orgId)

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

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

	return out0, err

}

// ValidateAccount is a free data retrieval call binding the contract method 0x6b568d76.
//
// Solidity: function validateAccount(address _account, string _orgId) view returns(bool)
func (_PermImpl *PermImplSession) ValidateAccount(_account common.Address, _orgId string) (bool, error) {
	return _PermImpl.Contract.ValidateAccount(&_PermImpl.CallOpts, _account, _orgId)
}

// ValidateAccount is a free data retrieval call binding the contract method 0x6b568d76.
//
// Solidity: function validateAccount(address _account, string _orgId) view returns(bool)
func (_PermImpl *PermImplCallerSession) ValidateAccount(_account common.Address, _orgId string) (bool, error) {
	return _PermImpl.Contract.ValidateAccount(&_PermImpl.CallOpts, _account, _orgId)
}

// AddAdminAccount is a paid mutator transaction binding the contract method 0x4fe57e7a.
//
// Solidity: function addAdminAccount(address _account) returns()
func (_PermImpl *PermImplTransactor) AddAdminAccount(opts *bind.TransactOpts, _account common.Address) (*types.Transaction, error) {
	return _PermImpl.contract.Transact(opts, "addAdminAccount", _account)
}

// AddAdminAccount is a paid mutator transaction binding the contract method 0x4fe57e7a.
//
// Solidity: function addAdminAccount(address _account) returns()
func (_PermImpl *PermImplSession) AddAdminAccount(_account common.Address) (*types.Transaction, error) {
	return _PermImpl.Contract.AddAdminAccount(&_PermImpl.TransactOpts, _account)
}

// AddAdminAccount is a paid mutator transaction binding the contract method 0x4fe57e7a.
//
// Solidity: function addAdminAccount(address _account) returns()
func (_PermImpl *PermImplTransactorSession) AddAdminAccount(_account common.Address) (*types.Transaction, error) {
	return _PermImpl.Contract.AddAdminAccount(&_PermImpl.TransactOpts, _account)
}

// AddAdminNode is a paid mutator transaction binding the contract method 0x3f25c288.
//
// Solidity: function addAdminNode(string _enodeId) returns()
func (_PermImpl *PermImplTransactor) AddAdminNode(opts *bind.TransactOpts, _enodeId string) (*types.Transaction, error) {
	return _PermImpl.contract.Transact(opts, "addAdminNode", _enodeId)
}

// AddAdminNode is a paid mutator transaction binding the contract method 0x3f25c288.
//
// Solidity: function addAdminNode(string _enodeId) returns()
func (_PermImpl *PermImplSession) AddAdminNode(_enodeId string) (*types.Transaction, error) {
	return _PermImpl.Contract.AddAdminNode(&_PermImpl.TransactOpts, _enodeId)
}

// AddAdminNode is a paid mutator transaction binding the contract method 0x3f25c288.
//
// Solidity: function addAdminNode(string _enodeId) returns()
func (_PermImpl *PermImplTransactorSession) AddAdminNode(_enodeId string) (*types.Transaction, error) {
	return _PermImpl.Contract.AddAdminNode(&_PermImpl.TransactOpts, _enodeId)
}

// AddNewRole is a paid mutator transaction binding the contract method 0x1b04c276.
//
// Solidity: function addNewRole(string _roleId, string _orgId, uint256 _access, bool _voter, bool _admin, address _caller) returns()
func (_PermImpl *PermImplTransactor) AddNewRole(opts *bind.TransactOpts, _roleId string, _orgId string, _access *big.Int, _voter bool, _admin bool, _caller common.Address) (*types.Transaction, error) {
	return _PermImpl.contract.Transact(opts, "addNewRole", _roleId, _orgId, _access, _voter, _admin, _caller)
}

// AddNewRole is a paid mutator transaction binding the contract method 0x1b04c276.
//
// Solidity: function addNewRole(string _roleId, string _orgId, uint256 _access, bool _voter, bool _admin, address _caller) returns()
func (_PermImpl *PermImplSession) AddNewRole(_roleId string, _orgId string, _access *big.Int, _voter bool, _admin bool, _caller common.Address) (*types.Transaction, error) {
	return _PermImpl.Contract.AddNewRole(&_PermImpl.TransactOpts, _roleId, _orgId, _access, _voter, _admin, _caller)
}

// AddNewRole is a paid mutator transaction binding the contract method 0x1b04c276.
//
// Solidity: function addNewRole(string _roleId, string _orgId, uint256 _access, bool _voter, bool _admin, address _caller) returns()
func (_PermImpl *PermImplTransactorSession) AddNewRole(_roleId string, _orgId string, _access *big.Int, _voter bool, _admin bool, _caller common.Address) (*types.Transaction, error) {
	return _PermImpl.Contract.AddNewRole(&_PermImpl.TransactOpts, _roleId, _orgId, _access, _voter, _admin, _caller)
}

// AddNode is a paid mutator transaction binding the contract method 0x59a260a3.
//
// Solidity: function addNode(string _orgId, string _enodeId, address _caller) returns()
func (_PermImpl *PermImplTransactor) AddNode(opts *bind.TransactOpts, _orgId string, _enodeId string, _caller common.Address) (*types.Transaction, error) {
	return _PermImpl.contract.Transact(opts, "addNode", _orgId, _enodeId, _caller)
}

// AddNode is a paid mutator transaction binding the contract method 0x59a260a3.
//
// Solidity: function addNode(string _orgId, string _enodeId, address _caller) returns()
func (_PermImpl *PermImplSession) AddNode(_orgId string, _enodeId string, _caller common.Address) (*types.Transaction, error) {
	return _PermImpl.Contract.AddNode(&_PermImpl.TransactOpts, _orgId, _enodeId, _caller)
}

// AddNode is a paid mutator transaction binding the contract method 0x59a260a3.
//
// Solidity: function addNode(string _orgId, string _enodeId, address _caller) returns()
func (_PermImpl *PermImplTransactorSession) AddNode(_orgId string, _enodeId string, _caller common.Address) (*types.Transaction, error) {
	return _PermImpl.Contract.AddNode(&_PermImpl.TransactOpts, _orgId, _enodeId, _caller)
}

// AddOrg is a paid mutator transaction binding the contract method 0xf922f802.
//
// Solidity: function addOrg(string _orgId, string _enodeId, address _account, address _caller) returns()
func (_PermImpl *PermImplTransactor) AddOrg(opts *bind.TransactOpts, _orgId string, _enodeId string, _account common.Address, _caller common.Address) (*types.Transaction, error) {
	return _PermImpl.contract.Transact(opts, "addOrg", _orgId, _enodeId, _account, _caller)
}

// AddOrg is a paid mutator transaction binding the contract method 0xf922f802.
//
// Solidity: function addOrg(string _orgId, string _enodeId, address _account, address _caller) returns()
func (_PermImpl *PermImplSession) AddOrg(_orgId string, _enodeId string, _account common.Address, _caller common.Address) (*types.Transaction, error) {
	return _PermImpl.Contract.AddOrg(&_PermImpl.TransactOpts, _orgId, _enodeId, _account, _caller)
}

// AddOrg is a paid mutator transaction binding the contract method 0xf922f802.
//
// Solidity: function addOrg(string _orgId, string _enodeId, address _account, address _caller) returns()
func (_PermImpl *PermImplTransactorSession) AddOrg(_orgId string, _enodeId string, _account common.Address, _caller common.Address) (*types.Transaction, error) {
	return _PermImpl.Contract.AddOrg(&_PermImpl.TransactOpts, _orgId, _enodeId, _account, _caller)
}

// AddSubOrg is a paid mutator transaction binding the contract method 0xa64d2860.
//
// Solidity: function addSubOrg(string _pOrgId, string _orgId, string _enodeId, address _caller) returns()
func (_PermImpl *PermImplTransactor) AddSubOrg(opts *bind.TransactOpts, _pOrgId string, _orgId string, _enodeId string, _caller common.Address) (*types.Transaction, error) {
	return _PermImpl.contract.Transact(opts, "addSubOrg", _pOrgId, _orgId, _enodeId, _caller)
}

// AddSubOrg is a paid mutator transaction binding the contract method 0xa64d2860.
//
// Solidity: function addSubOrg(string _pOrgId, string _orgId, string _enodeId, address _caller) returns()
func (_PermImpl *PermImplSession) AddSubOrg(_pOrgId string, _orgId string, _enodeId string, _caller common.Address) (*types.Transaction, error) {
	return _PermImpl.Contract.AddSubOrg(&_PermImpl.TransactOpts, _pOrgId, _orgId, _enodeId, _caller)
}

// AddSubOrg is a paid mutator transaction binding the contract method 0xa64d2860.
//
// Solidity: function addSubOrg(string _pOrgId, string _orgId, string _enodeId, address _caller) returns()
func (_PermImpl *PermImplTransactorSession) AddSubOrg(_pOrgId string, _orgId string, _enodeId string, _caller common.Address) (*types.Transaction, error) {
	return _PermImpl.Contract.AddSubOrg(&_PermImpl.TransactOpts, _pOrgId, _orgId, _enodeId, _caller)
}

// ApproveAdminRole is a paid mutator transaction binding the contract method 0x88843041.
//
// Solidity: function approveAdminRole(string _orgId, address _account, address _caller) returns()
func (_PermImpl *PermImplTransactor) ApproveAdminRole(opts *bind.TransactOpts, _orgId string, _account common.Address, _caller common.Address) (*types.Transaction, error) {
	return _PermImpl.contract.Transact(opts, "approveAdminRole", _orgId, _account, _caller)
}

// ApproveAdminRole is a paid mutator transaction binding the contract method 0x88843041.
//
// Solidity: function approveAdminRole(string _orgId, address _account, address _caller) returns()
func (_PermImpl *PermImplSession) ApproveAdminRole(_orgId string, _account common.Address, _caller common.Address) (*types.Transaction, error) {
	return _PermImpl.Contract.ApproveAdminRole(&_PermImpl.TransactOpts, _orgId, _account, _caller)
}

// ApproveAdminRole is a paid mutator transaction binding the contract method 0x88843041.
//
// Solidity: function approveAdminRole(string _orgId, address _account, address _caller) returns()
func (_PermImpl *PermImplTransactorSession) ApproveAdminRole(_orgId string, _account common.Address, _caller common.Address) (*types.Transaction, error) {
	return _PermImpl.Contract.ApproveAdminRole(&_PermImpl.TransactOpts, _orgId, _account, _caller)
}

// ApproveBlacklistedAccountRecovery is a paid mutator transaction binding the contract method 0x4b20f45f.
//
// Solidity: function approveBlacklistedAccountRecovery(string _orgId, address _account, address _caller) returns()
func (_PermImpl *PermImplTransactor) ApproveBlacklistedAccountRecovery(opts *bind.TransactOpts, _orgId string, _account common.Address, _caller common.Address) (*types.Transaction, error) {
	return _PermImpl.contract.Transact(opts, "approveBlacklistedAccountRecovery", _orgId, _account, _caller)
}

// ApproveBlacklistedAccountRecovery is a paid mutator transaction binding the contract method 0x4b20f45f.
//
// Solidity: function approveBlacklistedAccountRecovery(string _orgId, address _account, address _caller) returns()
func (_PermImpl *PermImplSession) ApproveBlacklistedAccountRecovery(_orgId string, _account common.Address, _caller common.Address) (*types.Transaction, error) {
	return _PermImpl.Contract.ApproveBlacklistedAccountRecovery(&_PermImpl.TransactOpts, _orgId, _account, _caller)
}

// ApproveBlacklistedAccountRecovery is a paid mutator transaction binding the contract method 0x4b20f45f.
//
// Solidity: function approveBlacklistedAccountRecovery(string _orgId, address _account, address _caller) returns()
func (_PermImpl *PermImplTransactorSession) ApproveBlacklistedAccountRecovery(_orgId string, _account common.Address, _caller common.Address) (*types.Transaction, error) {
	return _PermImpl.Contract.ApproveBlacklistedAccountRecovery(&_PermImpl.TransactOpts, _orgId, _account, _caller)
}

// ApproveBlacklistedNodeRecovery is a paid mutator transaction binding the contract method 0x655a8ef5.
//
// Solidity: function approveBlacklistedNodeRecovery(string _orgId, string _enodeId, address _caller) returns()
func (_PermImpl *PermImplTransactor) ApproveBlacklistedNodeRecovery(opts *bind.TransactOpts, _orgId string, _enodeId string, _caller common.Address) (*types.Transaction, error) {
	return _PermImpl.contract.Transact(opts, "approveBlacklistedNodeRecovery", _orgId, _enodeId, _caller)
}

// ApproveBlacklistedNodeRecovery is a paid mutator transaction binding the contract method 0x655a8ef5.
//
// Solidity: function approveBlacklistedNodeRecovery(string _orgId, string _enodeId, address _caller) returns()
func (_PermImpl *PermImplSession) ApproveBlacklistedNodeRecovery(_orgId string, _enodeId string, _caller common.Address) (*types.Transaction, error) {
	return _PermImpl.Contract.ApproveBlacklistedNodeRecovery(&_PermImpl.TransactOpts, _orgId, _enodeId, _caller)
}

// ApproveBlacklistedNodeRecovery is a paid mutator transaction binding the contract method 0x655a8ef5.
//
// Solidity: function approveBlacklistedNodeRecovery(string _orgId, string _enodeId, address _caller) returns()
func (_PermImpl *PermImplTransactorSession) ApproveBlacklistedNodeRecovery(_orgId string, _enodeId string, _caller common.Address) (*types.Transaction, error) {
	return _PermImpl.Contract.ApproveBlacklistedNodeRecovery(&_PermImpl.TransactOpts, _orgId, _enodeId, _caller)
}

// ApproveOrg is a paid mutator transaction binding the contract method 0x3bc07dea.
//
// Solidity: function approveOrg(string _orgId, string _enodeId, address _account, address _caller) returns()
func (_PermImpl *PermImplTransactor) ApproveOrg(opts *bind.TransactOpts, _orgId string, _enodeId string, _account common.Address, _caller common.Address) (*types.Transaction, error) {
	return _PermImpl.contract.Transact(opts, "approveOrg", _orgId, _enodeId, _account, _caller)
}

// ApproveOrg is a paid mutator transaction binding the contract method 0x3bc07dea.
//
// Solidity: function approveOrg(string _orgId, string _enodeId, address _account, address _caller) returns()
func (_PermImpl *PermImplSession) ApproveOrg(_orgId string, _enodeId string, _account common.Address, _caller common.Address) (*types.Transaction, error) {
	return _PermImpl.Contract.ApproveOrg(&_PermImpl.TransactOpts, _orgId, _enodeId, _account, _caller)
}

// ApproveOrg is a paid mutator transaction binding the contract method 0x3bc07dea.
//
// Solidity: function approveOrg(string _orgId, string _enodeId, address _account, address _caller) returns()
func (_PermImpl *PermImplTransactorSession) ApproveOrg(_orgId string, _enodeId string, _account common.Address, _caller common.Address) (*types.Transaction, error) {
	return _PermImpl.Contract.ApproveOrg(&_PermImpl.TransactOpts, _orgId, _enodeId, _account, _caller)
}

// ApproveOrgStatus is a paid mutator transaction binding the contract method 0xb5546564.
//
// Solidity: function approveOrgStatus(string _orgId, uint256 _action, address _caller) returns()
func (_PermImpl *PermImplTransactor) ApproveOrgStatus(opts *bind.TransactOpts, _orgId string, _action *big.Int, _caller common.Address) (*types.Transaction, error) {
	return _PermImpl.contract.Transact(opts, "approveOrgStatus", _orgId, _action, _caller)
}

// ApproveOrgStatus is a paid mutator transaction binding the contract method 0xb5546564.
//
// Solidity: function approveOrgStatus(string _orgId, uint256 _action, address _caller) returns()
func (_PermImpl *PermImplSession) ApproveOrgStatus(_orgId string, _action *big.Int, _caller common.Address) (*types.Transaction, error) {
	return _PermImpl.Contract.ApproveOrgStatus(&_PermImpl.TransactOpts, _orgId, _action, _caller)
}

// ApproveOrgStatus is a paid mutator transaction binding the contract method 0xb5546564.
//
// Solidity: function approveOrgStatus(string _orgId, uint256 _action, address _caller) returns()
func (_PermImpl *PermImplTransactorSession) ApproveOrgStatus(_orgId string, _action *big.Int, _caller common.Address) (*types.Transaction, error) {
	return _PermImpl.Contract.ApproveOrgStatus(&_PermImpl.TransactOpts, _orgId, _action, _caller)
}

// AssignAccountRole is a paid mutator transaction binding the contract method 0x8baa8191.
//
// Solidity: function assignAccountRole(address _account, string _orgId, string _roleId, address _caller) returns()
func (_PermImpl *PermImplTransactor) AssignAccountRole(opts *bind.TransactOpts, _account common.Address, _orgId string, _roleId string, _caller common.Address) (*types.Transaction, error) {
	return _PermImpl.contract.Transact(opts, "assignAccountRole", _account, _orgId, _roleId, _caller)
}

// AssignAccountRole is a paid mutator transaction binding the contract method 0x8baa8191.
//
// Solidity: function assignAccountRole(address _account, string _orgId, string _roleId, address _caller) returns()
func (_PermImpl *PermImplSession) AssignAccountRole(_account common.Address, _orgId string, _roleId string, _caller common.Address) (*types.Transaction, error) {
	return _PermImpl.Contract.AssignAccountRole(&_PermImpl.TransactOpts, _account, _orgId, _roleId, _caller)
}

// AssignAccountRole is a paid mutator transaction binding the contract method 0x8baa8191.
//
// Solidity: function assignAccountRole(address _account, string _orgId, string _roleId, address _caller) returns()
func (_PermImpl *PermImplTransactorSession) AssignAccountRole(_account common.Address, _orgId string, _roleId string, _caller common.Address) (*types.Transaction, error) {
	return _PermImpl.Contract.AssignAccountRole(&_PermImpl.TransactOpts, _account, _orgId, _roleId, _caller)
}

// AssignAdminRole is a paid mutator transaction binding the contract method 0x404bf3eb.
//
// Solidity: function assignAdminRole(string _orgId, address _account, string _roleId, address _caller) returns()
func (_PermImpl *PermImplTransactor) AssignAdminRole(opts *bind.TransactOpts, _orgId string, _account common.Address, _roleId string, _caller common.Address) (*types.Transaction, error) {
	return _PermImpl.contract.Transact(opts, "assignAdminRole", _orgId, _account, _roleId, _caller)
}

// AssignAdminRole is a paid mutator transaction binding the contract method 0x404bf3eb.
//
// Solidity: function assignAdminRole(string _orgId, address _account, string _roleId, address _caller) returns()
func (_PermImpl *PermImplSession) AssignAdminRole(_orgId string, _account common.Address, _roleId string, _caller common.Address) (*types.Transaction, error) {
	return _PermImpl.Contract.AssignAdminRole(&_PermImpl.TransactOpts, _orgId, _account, _roleId, _caller)
}

// AssignAdminRole is a paid mutator transaction binding the contract method 0x404bf3eb.
//
// Solidity: function assignAdminRole(string _orgId, address _account, string _roleId, address _caller) returns()
func (_PermImpl *PermImplTransactorSession) AssignAdminRole(_orgId string, _account common.Address, _roleId string, _caller common.Address) (*types.Transaction, error) {
	return _PermImpl.Contract.AssignAdminRole(&_PermImpl.TransactOpts, _orgId, _account, _roleId, _caller)
}

// Init is a paid mutator transaction binding the contract method 0xa5843f08.
//
// Solidity: function init(uint256 _breadth, uint256 _depth) returns()
func (_PermImpl *PermImplTransactor) Init(opts *bind.TransactOpts, _breadth *big.Int, _depth *big.Int) (*types.Transaction, error) {
	return _PermImpl.contract.Transact(opts, "init", _breadth, _depth)
}

// Init is a paid mutator transaction binding the contract method 0xa5843f08.
//
// Solidity: function init(uint256 _breadth, uint256 _depth) returns()
func (_PermImpl *PermImplSession) Init(_breadth *big.Int, _depth *big.Int) (*types.Transaction, error) {
	return _PermImpl.Contract.Init(&_PermImpl.TransactOpts, _breadth, _depth)
}

// Init is a paid mutator transaction binding the contract method 0xa5843f08.
//
// Solidity: function init(uint256 _breadth, uint256 _depth) returns()
func (_PermImpl *PermImplTransactorSession) Init(_breadth *big.Int, _depth *big.Int) (*types.Transaction, error) {
	return _PermImpl.Contract.Init(&_PermImpl.TransactOpts, _breadth, _depth)
}

// RemoveRole is a paid mutator transaction binding the contract method 0x5ca5adbe.
//
// Solidity: function removeRole(string _roleId, string _orgId, address _caller) returns()
func (_PermImpl *PermImplTransactor) RemoveRole(opts *bind.TransactOpts, _roleId string, _orgId string, _caller common.Address) (*types.Transaction, error) {
	return _PermImpl.contract.Transact(opts, "removeRole", _roleId, _orgId, _caller)
}

// RemoveRole is a paid mutator transaction binding the contract method 0x5ca5adbe.
//
// Solidity: function removeRole(string _roleId, string _orgId, address _caller) returns()
func (_PermImpl *PermImplSession) RemoveRole(_roleId string, _orgId string, _caller common.Address) (*types.Transaction, error) {
	return _PermImpl.Contract.RemoveRole(&_PermImpl.TransactOpts, _roleId, _orgId, _caller)
}

// RemoveRole is a paid mutator transaction binding the contract method 0x5ca5adbe.
//
// Solidity: function removeRole(string _roleId, string _orgId, address _caller) returns()
func (_PermImpl *PermImplTransactorSession) RemoveRole(_roleId string, _orgId string, _caller common.Address) (*types.Transaction, error) {
	return _PermImpl.Contract.RemoveRole(&_PermImpl.TransactOpts, _roleId, _orgId, _caller)
}

// SetMigrationPolicy is a paid mutator transaction binding the contract method 0xf5ad584a.
//
// Solidity: function setMigrationPolicy(string _nwAdminOrg, string _nwAdminRole, string _oAdminRole, bool _networkBootStatus) returns()
func (_PermImpl *PermImplTransactor) SetMigrationPolicy(opts *bind.TransactOpts, _nwAdminOrg string, _nwAdminRole string, _oAdminRole string, _networkBootStatus bool) (*types.Transaction, error) {
	return _PermImpl.contract.Transact(opts, "setMigrationPolicy", _nwAdminOrg, _nwAdminRole, _oAdminRole, _networkBootStatus)
}

// SetMigrationPolicy is a paid mutator transaction binding the contract method 0xf5ad584a.
//
// Solidity: function setMigrationPolicy(string _nwAdminOrg, string _nwAdminRole, string _oAdminRole, bool _networkBootStatus) returns()
func (_PermImpl *PermImplSession) SetMigrationPolicy(_nwAdminOrg string, _nwAdminRole string, _oAdminRole string, _networkBootStatus bool) (*types.Transaction, error) {
	return _PermImpl.Contract.SetMigrationPolicy(&_PermImpl.TransactOpts, _nwAdminOrg, _nwAdminRole, _oAdminRole, _networkBootStatus)
}

// SetMigrationPolicy is a paid mutator transaction binding the contract method 0xf5ad584a.
//
// Solidity: function setMigrationPolicy(string _nwAdminOrg, string _nwAdminRole, string _oAdminRole, bool _networkBootStatus) returns()
func (_PermImpl *PermImplTransactorSession) SetMigrationPolicy(_nwAdminOrg string, _nwAdminRole string, _oAdminRole string, _networkBootStatus bool) (*types.Transaction, error) {
	return _PermImpl.Contract.SetMigrationPolicy(&_PermImpl.TransactOpts, _nwAdminOrg, _nwAdminRole, _oAdminRole, _networkBootStatus)
}

// SetPolicy is a paid mutator transaction binding the contract method 0x1b610220.
//
// Solidity: function setPolicy(string _nwAdminOrg, string _nwAdminRole, string _oAdminRole) returns()
func (_PermImpl *PermImplTransactor) SetPolicy(opts *bind.TransactOpts, _nwAdminOrg string, _nwAdminRole string, _oAdminRole string) (*types.Transaction, error) {
	return _PermImpl.contract.Transact(opts, "setPolicy", _nwAdminOrg, _nwAdminRole, _oAdminRole)
}

// SetPolicy is a paid mutator transaction binding the contract method 0x1b610220.
//
// Solidity: function setPolicy(string _nwAdminOrg, string _nwAdminRole, string _oAdminRole) returns()
func (_PermImpl *PermImplSession) SetPolicy(_nwAdminOrg string, _nwAdminRole string, _oAdminRole string) (*types.Transaction, error) {
	return _PermImpl.Contract.SetPolicy(&_PermImpl.TransactOpts, _nwAdminOrg, _nwAdminRole, _oAdminRole)
}

// SetPolicy is a paid mutator transaction binding the contract method 0x1b610220.
//
// Solidity: function setPolicy(string _nwAdminOrg, string _nwAdminRole, string _oAdminRole) returns()
func (_PermImpl *PermImplTransactorSession) SetPolicy(_nwAdminOrg string, _nwAdminRole string, _oAdminRole string) (*types.Transaction, error) {
	return _PermImpl.Contract.SetPolicy(&_PermImpl.TransactOpts, _nwAdminOrg, _nwAdminRole, _oAdminRole)
}

// StartBlacklistedAccountRecovery is a paid mutator transaction binding the contract method 0x1c249912.
//
// Solidity: function startBlacklistedAccountRecovery(string _orgId, address _account, address _caller) returns()
func (_PermImpl *PermImplTransactor) StartBlacklistedAccountRecovery(opts *bind.TransactOpts, _orgId string, _account common.Address, _caller common.Address) (*types.Transaction, error) {
	return _PermImpl.contract.Transact(opts, "startBlacklistedAccountRecovery", _orgId, _account, _caller)
}

// StartBlacklistedAccountRecovery is a paid mutator transaction binding the contract method 0x1c249912.
//
// Solidity: function startBlacklistedAccountRecovery(string _orgId, address _account, address _caller) returns()
func (_PermImpl *PermImplSession) StartBlacklistedAccountRecovery(_orgId string, _account common.Address, _caller common.Address) (*types.Transaction, error) {
	return _PermImpl.Contract.StartBlacklistedAccountRecovery(&_PermImpl.TransactOpts, _orgId, _account, _caller)
}

// StartBlacklistedAccountRecovery is a paid mutator transaction binding the contract method 0x1c249912.
//
// Solidity: function startBlacklistedAccountRecovery(string _orgId, address _account, address _caller) returns()
func (_PermImpl *PermImplTransactorSession) StartBlacklistedAccountRecovery(_orgId string, _account common.Address, _caller common.Address) (*types.Transaction, error) {
	return _PermImpl.Contract.StartBlacklistedAccountRecovery(&_PermImpl.TransactOpts, _orgId, _account, _caller)
}

// StartBlacklistedNodeRecovery is a paid mutator transaction binding the contract method 0xc3dc8e09.
//
// Solidity: function startBlacklistedNodeRecovery(string _orgId, string _enodeId, address _caller) returns()
func (_PermImpl *PermImplTransactor) StartBlacklistedNodeRecovery(opts *bind.TransactOpts, _orgId string, _enodeId string, _caller common.Address) (*types.Transaction, error) {
	return _PermImpl.contract.Transact(opts, "startBlacklistedNodeRecovery", _orgId, _enodeId, _caller)
}

// StartBlacklistedNodeRecovery is a paid mutator transaction binding the contract method 0xc3dc8e09.
//
// Solidity: function startBlacklistedNodeRecovery(string _orgId, string _enodeId, address _caller) returns()
func (_PermImpl *PermImplSession) StartBlacklistedNodeRecovery(_orgId string, _enodeId string, _caller common.Address) (*types.Transaction, error) {
	return _PermImpl.Contract.StartBlacklistedNodeRecovery(&_PermImpl.TransactOpts, _orgId, _enodeId, _caller)
}

// StartBlacklistedNodeRecovery is a paid mutator transaction binding the contract method 0xc3dc8e09.
//
// Solidity: function startBlacklistedNodeRecovery(string _orgId, string _enodeId, address _caller) returns()
func (_PermImpl *PermImplTransactorSession) StartBlacklistedNodeRecovery(_orgId string, _enodeId string, _caller common.Address) (*types.Transaction, error) {
	return _PermImpl.Contract.StartBlacklistedNodeRecovery(&_PermImpl.TransactOpts, _orgId, _enodeId, _caller)
}

// UpdateAccountStatus is a paid mutator transaction binding the contract method 0x04e81f1e.
//
// Solidity: function updateAccountStatus(string _orgId, address _account, uint256 _action, address _caller) returns()
func (_PermImpl *PermImplTransactor) UpdateAccountStatus(opts *bind.TransactOpts, _orgId string, _account common.Address, _action *big.Int, _caller common.Address) (*types.Transaction, error) {
	return _PermImpl.contract.Transact(opts, "updateAccountStatus", _orgId, _account, _action, _caller)
}

// UpdateAccountStatus is a paid mutator transaction binding the contract method 0x04e81f1e.
//
// Solidity: function updateAccountStatus(string _orgId, address _account, uint256 _action, address _caller) returns()
func (_PermImpl *PermImplSession) UpdateAccountStatus(_orgId string, _account common.Address, _action *big.Int, _caller common.Address) (*types.Transaction, error) {
	return _PermImpl.Contract.UpdateAccountStatus(&_PermImpl.TransactOpts, _orgId, _account, _action, _caller)
}

// UpdateAccountStatus is a paid mutator transaction binding the contract method 0x04e81f1e.
//
// Solidity: function updateAccountStatus(string _orgId, address _account, uint256 _action, address _caller) returns()
func (_PermImpl *PermImplTransactorSession) UpdateAccountStatus(_orgId string, _account common.Address, _action *big.Int, _caller common.Address) (*types.Transaction, error) {
	return _PermImpl.Contract.UpdateAccountStatus(&_PermImpl.TransactOpts, _orgId, _account, _action, _caller)
}

// UpdateNetworkBootStatus is a paid mutator transaction binding the contract method 0x44478e79.
//
// Solidity: function updateNetworkBootStatus() returns(bool)
func (_PermImpl *PermImplTransactor) UpdateNetworkBootStatus(opts *bind.TransactOpts) (*types.Transaction, error) {
	return _PermImpl.contract.Transact(opts, "updateNetworkBootStatus")
}

// UpdateNetworkBootStatus is a paid mutator transaction binding the contract method 0x44478e79.
//
// Solidity: function updateNetworkBootStatus() returns(bool)
func (_PermImpl *PermImplSession) UpdateNetworkBootStatus() (*types.Transaction, error) {
	return _PermImpl.Contract.UpdateNetworkBootStatus(&_PermImpl.TransactOpts)
}

// UpdateNetworkBootStatus is a paid mutator transaction binding the contract method 0x44478e79.
//
// Solidity: function updateNetworkBootStatus() returns(bool)
func (_PermImpl *PermImplTransactorSession) UpdateNetworkBootStatus() (*types.Transaction, error) {
	return _PermImpl.Contract.UpdateNetworkBootStatus(&_PermImpl.TransactOpts)
}

// UpdateNodeStatus is a paid mutator transaction binding the contract method 0xdbfad711.
//
// Solidity: function updateNodeStatus(string _orgId, string _enodeId, uint256 _action, address _caller) returns()
func (_PermImpl *PermImplTransactor) UpdateNodeStatus(opts *bind.TransactOpts, _orgId string, _enodeId string, _action *big.Int, _caller common.Address) (*types.Transaction, error) {
	return _PermImpl.contract.Transact(opts, "updateNodeStatus", _orgId, _enodeId, _action, _caller)
}

// UpdateNodeStatus is a paid mutator transaction binding the contract method 0xdbfad711.
//
// Solidity: function updateNodeStatus(string _orgId, string _enodeId, uint256 _action, address _caller) returns()
func (_PermImpl *PermImplSession) UpdateNodeStatus(_orgId string, _enodeId string, _action *big.Int, _caller common.Address) (*types.Transaction, error) {
	return _PermImpl.Contract.UpdateNodeStatus(&_PermImpl.TransactOpts, _orgId, _enodeId, _action, _caller)
}

// UpdateNodeStatus is a paid mutator transaction binding the contract method 0xdbfad711.
//
// Solidity: function updateNodeStatus(string _orgId, string _enodeId, uint256 _action, address _caller) returns()
func (_PermImpl *PermImplTransactorSession) UpdateNodeStatus(_orgId string, _enodeId string, _action *big.Int, _caller common.Address) (*types.Transaction, error) {
	return _PermImpl.Contract.UpdateNodeStatus(&_PermImpl.TransactOpts, _orgId, _enodeId, _action, _caller)
}

// UpdateOrgStatus is a paid mutator transaction binding the contract method 0x3cf5f33b.
//
// Solidity: function updateOrgStatus(string _orgId, uint256 _action, address _caller) returns()
func (_PermImpl *PermImplTransactor) UpdateOrgStatus(opts *bind.TransactOpts, _orgId string, _action *big.Int, _caller common.Address) (*types.Transaction, error) {
	return _PermImpl.contract.Transact(opts, "updateOrgStatus", _orgId, _action, _caller)
}

// UpdateOrgStatus is a paid mutator transaction binding the contract method 0x3cf5f33b.
//
// Solidity: function updateOrgStatus(string _orgId, uint256 _action, address _caller) returns()
func (_PermImpl *PermImplSession) UpdateOrgStatus(_orgId string, _action *big.Int, _caller common.Address) (*types.Transaction, error) {
	return _PermImpl.Contract.UpdateOrgStatus(&_PermImpl.TransactOpts, _orgId, _action, _caller)
}

// UpdateOrgStatus is a paid mutator transaction binding the contract method 0x3cf5f33b.
//
// Solidity: function updateOrgStatus(string _orgId, uint256 _action, address _caller) returns()
func (_PermImpl *PermImplTransactorSession) UpdateOrgStatus(_orgId string, _action *big.Int, _caller common.Address) (*types.Transaction, error) {
	return _PermImpl.Contract.UpdateOrgStatus(&_PermImpl.TransactOpts, _orgId, _action, _caller)
}

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

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

// PermImplPermissionsInitialized represents a PermissionsInitialized event raised by the PermImpl contract.
type PermImplPermissionsInitialized struct {
	NetworkBootStatus bool
	Raw               types.Log // Blockchain specific contextual infos
}

// FilterPermissionsInitialized is a free log retrieval operation binding the contract event 0x04f651be6fb8fc575d94591e56e9f6e66e33ef23e949765918b3bdae50c617cf.
//
// Solidity: event PermissionsInitialized(bool _networkBootStatus)
func (_PermImpl *PermImplFilterer) FilterPermissionsInitialized(opts *bind.FilterOpts) (*PermImplPermissionsInitializedIterator, error) {

	logs, sub, err := _PermImpl.contract.FilterLogs(opts, "PermissionsInitialized")
	if err != nil {
		return nil, err
	}
	return &PermImplPermissionsInitializedIterator{contract: _PermImpl.contract, event: "PermissionsInitialized", logs: logs, sub: sub}, nil
}

var PermissionsInitializedTopicHash = "0x04f651be6fb8fc575d94591e56e9f6e66e33ef23e949765918b3bdae50c617cf"

// WatchPermissionsInitialized is a free log subscription operation binding the contract event 0x04f651be6fb8fc575d94591e56e9f6e66e33ef23e949765918b3bdae50c617cf.
//
// Solidity: event PermissionsInitialized(bool _networkBootStatus)
func (_PermImpl *PermImplFilterer) WatchPermissionsInitialized(opts *bind.WatchOpts, sink chan<- *PermImplPermissionsInitialized) (event.Subscription, error) {

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

// ParsePermissionsInitialized is a log parse operation binding the contract event 0x04f651be6fb8fc575d94591e56e9f6e66e33ef23e949765918b3bdae50c617cf.
//
// Solidity: event PermissionsInitialized(bool _networkBootStatus)
func (_PermImpl *PermImplFilterer) ParsePermissionsInitialized(log types.Log) (*PermImplPermissionsInitialized, error) {
	event := new(PermImplPermissionsInitialized)
	if err := _PermImpl.contract.UnpackLog(event, "PermissionsInitialized", log); err != nil {
		return nil, err
	}
	return event, nil
}
