diff --git a/build/travis-install-linux.sh b/build/travis-install-linux.sh index de6cd95e2..e18e2139e 100755 --- a/build/travis-install-linux.sh +++ b/build/travis-install-linux.sh @@ -23,15 +23,8 @@ echo "---> building geth done" echo "---> cloning quorum-cloud and quorum-acceptance-tests ..." git clone https://github.com/jpmorganchase/quorum-acceptance-tests.git ${TRAVIS_HOME}/quorum-acceptance-tests -# use quorum-geth-upgrade-1.9.7 branch -cd ${TRAVIS_HOME}/quorum-acceptance-tests -git checkout quorum-geth-upgrade-1.9.7 -cd - git clone https://github.com/jpmorganchase/quorum-cloud.git ${TRAVIS_HOME}/quorum-cloud -# use quorum-geth-upgrade-1.9.7 branch -cd ${TRAVIS_HOME}/quorum-cloud -git checkout quorum-geth-upgrade-1.9.7 -cd - + echo "---> cloning done" echo "---> getting tessera jar ..." diff --git a/core/types/permissions_cache.go b/core/types/permissions_cache.go index 84a05376a..8f8a7c51c 100644 --- a/core/types/permissions_cache.go +++ b/core/types/permissions_cache.go @@ -1,12 +1,12 @@ package types import ( + "errors" "math/big" "sync" - "github.com/ethereum/go-ethereum/p2p/enode" - "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/p2p/enode" lru "github.com/hashicorp/golang-lru" ) @@ -110,60 +110,38 @@ type PermissionConfig struct { SubOrgBreadth *big.Int `json:"subOrgBreadth"` } -type OrgKey struct { - OrgId string -} - -type NodeKey struct { - OrgId string - Url string -} - -type RoleKey struct { - OrgId string - RoleId string -} - -type AccountKey struct { - AcctId common.Address -} - -type OrgCache struct { - c *lru.Cache - mux sync.Mutex -} - -type NodeCache struct { - c *lru.Cache -} - -type RoleCache struct { - c *lru.Cache -} - -type AcctCache struct { - c *lru.Cache -} - -func NewOrgCache() *OrgCache { - c, _ := lru.New(defaultOrgMapLimit) - return &OrgCache{c, sync.Mutex{}} -} - -func NewNodeCache() *NodeCache { - c, _ := lru.New(defaultNodeMapLimit) - return &NodeCache{c} -} - -func NewRoleCache() *RoleCache { - c, _ := lru.New(defaultRoleMapLimit) - return &RoleCache{c} -} - -func NewAcctCache() *AcctCache { - c, _ := lru.New(defaultAccountMapLimit) - return &AcctCache{c} -} +var ( + ErrNotNetworkAdmin = errors.New("Operation can be performed by network admin only. Account not a network admin.") + ErrNotOrgAdmin = errors.New("Operation can be performed by org admin only. Account not a org admin.") + ErrNodePresent = errors.New("EnodeId already part of network.") + ErrInvalidNode = errors.New("Invalid enode id") + ErrInvalidAccount = errors.New("Invalid account id") + ErrOrgExists = errors.New("Org already exist") + ErrPendingApprovals = errors.New("Pending approvals for the organization. Approve first") + ErrNothingToApprove = errors.New("Nothing to approve") + ErrOpNotAllowed = errors.New("Operation not allowed") + ErrNodeOrgMismatch = errors.New("Enode id passed does not belong to the organization.") + ErrBlacklistedNode = errors.New("Blacklisted node. Operation not allowed") + ErrBlacklistedAccount = errors.New("Blacklisted account. Operation not allowed") + ErrAccountOrgAdmin = errors.New("Account already org admin for the org") + ErrOrgAdminExists = errors.New("Org admin exist for the org") + ErrAccountInUse = errors.New("Account already in use in another organization") + ErrRoleExists = errors.New("Role exist for the org") + ErrRoleActive = errors.New("Accounts linked to the role. Cannot be removed") + ErrAdminRoles = errors.New("Admin role cannot be removed") + ErrInvalidOrgName = errors.New("Org id cannot contain special characters") + ErrInvalidParentOrg = errors.New("Invalid parent org id") + ErrAccountNotThere = errors.New("Account does not exist") + ErrOrgNotOwner = errors.New("Account does not belong to this org") + ErrMaxDepth = errors.New("Max depth for sub orgs reached") + ErrMaxBreadth = errors.New("Max breadth for sub orgs reached") + ErrNodeDoesNotExists = errors.New("Node does not exist") + ErrOrgDoesNotExists = errors.New("Org does not exist") + ErrInactiveRole = errors.New("Role is already inactive") + ErrInvalidRole = errors.New("Invalid role") + ErrInvalidInput = errors.New("Invalid input") + ErrNotMasterOrg = errors.New("Org is not a master org") +) var syncStarted = false @@ -172,15 +150,114 @@ var QIP714BlockReached = false var networkAdminRole string var orgAdminRole string -const defaultOrgMapLimit = 2000 -const defaultRoleMapLimit = 2500 -const defaultNodeMapLimit = 1000 -const defaultAccountMapLimit = 6000 +var ( + OrgInfoMap *OrgCache + NodeInfoMap *NodeCache + RoleInfoMap *RoleCache + AcctInfoMap *AcctCache +) -var OrgInfoMap = NewOrgCache() -var NodeInfoMap = NewNodeCache() -var RoleInfoMap = NewRoleCache() -var AcctInfoMap = NewAcctCache() +type OrgKey struct { + OrgId string +} + +type OrgCache struct { + c *lru.Cache + mux sync.Mutex + evicted bool + populateCacheFunc func(orgId string) (*OrgInfo, error) +} + +func (o *OrgCache) PopulateCacheFunc(cf func(string) (*OrgInfo, error)) { + o.populateCacheFunc = cf +} + +func NewOrgCache(cacheSize int) *OrgCache { + orgCache := OrgCache{evicted: false} + onEvictedFunc := func(k interface{}, v interface{}) { + orgCache.evicted = true + } + orgCache.c, _ = lru.NewWithEvict(cacheSize, onEvictedFunc) + return &orgCache +} + +type RoleKey struct { + OrgId string + RoleId string +} + +type RoleCache struct { + c *lru.Cache + evicted bool + populateCacheFunc func(*RoleKey) (*RoleInfo, error) +} + +func (r *RoleCache) PopulateCacheFunc(cf func(*RoleKey) (*RoleInfo, error)) { + r.populateCacheFunc = cf +} + +func NewRoleCache(cacheSize int) *RoleCache { + roleCache := RoleCache{evicted: false} + onEvictedFunc := func(k interface{}, v interface{}) { + roleCache.evicted = true + } + roleCache.c, _ = lru.NewWithEvict(cacheSize, onEvictedFunc) + return &roleCache +} + +type NodeKey struct { + OrgId string + Url string +} + +type NodeCache struct { + c *lru.Cache + evicted bool + populateCacheFunc func(string) (*NodeInfo, error) + populateAndValidateFunc func(string, string) bool +} + +func (n *NodeCache) PopulateValidateFunc(cf func(string, string) bool) { + n.populateAndValidateFunc = cf +} + +func (n *NodeCache) PopulateCacheFunc(cf func(string) (*NodeInfo, error)) { + n.populateCacheFunc = cf +} + +func NewNodeCache(cacheSize int) *NodeCache { + nodeCache := NodeCache{evicted: false} + onEvictedFunc := func(k interface{}, v interface{}) { + nodeCache.evicted = true + + } + nodeCache.c, _ = lru.NewWithEvict(cacheSize, onEvictedFunc) + return &nodeCache +} + +type AccountKey struct { + AcctId common.Address +} + +type AcctCache struct { + c *lru.Cache + evicted bool + populateCacheFunc func(account common.Address) (*AccountInfo, error) +} + +func (a *AcctCache) PopulateCacheFunc(cf func(common.Address) (*AccountInfo, error)) { + a.populateCacheFunc = cf +} + +func NewAcctCache(cacheSize int) *AcctCache { + acctCache := AcctCache{evicted: false} + onEvictedFunc := func(k interface{}, v interface{}) { + acctCache.evicted = true + } + + acctCache.c, _ = lru.NewWithEvict(cacheSize, onEvictedFunc) + return &acctCache +} func (pc *PermissionConfig) IsEmpty() bool { return pc.InterfAddress == common.HexToAddress("0x0") @@ -233,6 +310,17 @@ func (o *OrgCache) UpsertOrg(orgId, parentOrg, ultimateParent string, level *big o.c.Add(key, norg) } +func (o *OrgCache) UpsertOrgWithSubOrgList(orgRec *OrgInfo) { + var key OrgKey + if orgRec.ParentOrgId == "" { + key = OrgKey{OrgId: orgRec.OrgId} + } else { + key = OrgKey{OrgId: orgRec.ParentOrgId + "." + orgRec.OrgId} + } + orgRec.FullOrgId = key.OrgId + o.c.Add(key, orgRec) +} + func containsKey(s []string, e string) bool { for _, a := range s { if a == e { @@ -242,14 +330,25 @@ func containsKey(s []string, e string) bool { return false } -func (o *OrgCache) GetOrg(orgId string) *OrgInfo { - defer o.mux.Unlock() - o.mux.Lock() +func (o *OrgCache) GetOrg(orgId string) (*OrgInfo, error) { key := OrgKey{OrgId: orgId} if ent, ok := o.c.Get(key); ok { - return ent.(*OrgInfo) + return ent.(*OrgInfo), nil } - return nil + // check if the org cache is evicted. if yes we need + // fetch the record from the contract + if o.evicted { + // call cache population function to populate from contract + orgRec, err := o.populateCacheFunc(orgId) + if err != nil { + return nil, err + } + // insert the received record into cache + o.UpsertOrgWithSubOrgList(orgRec) + //return the record + return orgRec, nil + } + return nil, ErrOrgDoesNotExists } func (o *OrgCache) GetOrgList() []OrgInfo { @@ -267,15 +366,30 @@ func (n *NodeCache) UpsertNode(orgId string, url string, status NodeStatus) { n.c.Add(key, &NodeInfo{orgId, url, status}) } -func (n *NodeCache) GetNodeByUrl(url string) *NodeInfo { +func (n *NodeCache) GetNodeByUrl(url string) (*NodeInfo, error) { for _, k := range n.c.Keys() { ent := k.(NodeKey) if ent.Url == url { v, _ := n.c.Get(ent) - return v.(*NodeInfo) + return v.(*NodeInfo), nil } } - return nil + // check if the node cache is evicted. if yes we need + // fetch the record from the contract + if n.evicted { + + // call cache population function to populate from contract + nodeRec, err := n.populateCacheFunc(url) + if err != nil { + return nil, err + } + + // insert the received record into cache + n.UpsertNode(nodeRec.OrgId, nodeRec.Url, nodeRec.Status) + //return the record + return nodeRec, err + } + return nil, ErrNodeDoesNotExists } func (n *NodeCache) GetNodeList() []NodeInfo { @@ -293,11 +407,25 @@ func (a *AcctCache) UpsertAccount(orgId string, role string, acct common.Address a.c.Add(key, &AccountInfo{orgId, role, acct, orgAdmin, status}) } -func (a *AcctCache) GetAccount(acct common.Address) *AccountInfo { +func (a *AcctCache) GetAccount(acct common.Address) (*AccountInfo, error) { if v, ok := a.c.Get(AccountKey{acct}); ok { - return v.(*AccountInfo) + return v.(*AccountInfo), nil } - return nil + + // check if the account cache is evicted. if yes we need + // fetch the record from the contract + if a.evicted { + // call function to populate cache with the record + acctRec, err := a.populateCacheFunc(acct) + // insert the received record into cache + if err != nil { + return nil, err + } + a.UpsertAccount(acctRec.OrgId, acctRec.RoleId, acctRec.AcctId, acctRec.IsOrgAdmin, acctRec.Status) + //return the record + return acctRec, nil + } + return nil, nil } func (a *AcctCache) GetAcctList() []AccountInfo { @@ -328,7 +456,12 @@ func (a *AcctCache) GetAcctListRole(orgId, roleId string) []AccountInfo { v, _ := a.c.Get(k) vp := v.(*AccountInfo) - if vp.RoleId == roleId && (vp.OrgId == orgId || OrgInfoMap.GetOrg(vp.OrgId).UltimateParent == orgId) { + orgRec, err := OrgInfoMap.GetOrg(vp.OrgId) + if err != nil { + return nil + } + + if vp.RoleId == roleId && (vp.OrgId == orgId || (orgRec != nil && orgRec.UltimateParent == orgId)) { alist = append(alist, *vp) } } @@ -341,12 +474,26 @@ func (r *RoleCache) UpsertRole(orgId string, role string, voter bool, admin bool } -func (r *RoleCache) GetRole(orgId string, roleId string) *RoleInfo { +func (r *RoleCache) GetRole(orgId string, roleId string) (*RoleInfo, error) { key := RoleKey{OrgId: orgId, RoleId: roleId} if ent, ok := r.c.Get(key); ok { - return ent.(*RoleInfo) + return ent.(*RoleInfo), nil } - return nil + // check if the role cache is evicted. if yes we need + // fetch the record from the contract + if r.evicted { + // call cache population function to populate from contract + roleRec, err := r.populateCacheFunc(&RoleKey{RoleId: roleId, OrgId: orgId}) + if err != nil { + return nil, err + } + // insert the received record into cache + r.UpsertRole(roleRec.OrgId, roleRec.RoleId, roleRec.IsVoter, roleRec.IsAdmin, roleRec.Access, roleRec.Active) + + //return the record + return roleRec, nil + } + return nil, ErrInvalidRole } func (r *RoleCache) GetRoleList() []RoleInfo { @@ -369,21 +516,23 @@ func GetAcctAccess(acctId common.Address) AccessType { } // check if the org status is fine to do the transaction - a := AcctInfoMap.GetAccount(acctId) + a, _ := AcctInfoMap.GetAccount(acctId) if a != nil && a.Status == AcctActive { // get the org details and ultimate org details. check org status // if the org is not approved or pending suspension - o := OrgInfoMap.GetOrg(a.OrgId) + o, _ := OrgInfoMap.GetOrg(a.OrgId) if o != nil && (o.Status == OrgApproved || o.Status == OrgPendingSuspension) { - u := OrgInfoMap.GetOrg(o.UltimateParent) + u, _ := OrgInfoMap.GetOrg(o.UltimateParent) if u != nil && (u.Status == OrgApproved || u.Status == OrgPendingSuspension) { if a.RoleId == networkAdminRole || a.RoleId == orgAdminRole { return FullAccess } - if r := RoleInfoMap.GetRole(a.OrgId, a.RoleId); r != nil && r.Active { + r, _ := RoleInfoMap.GetRole(a.OrgId, a.RoleId) + if r != nil && r.Active { return r.Access } - if r := RoleInfoMap.GetRole(o.UltimateParent, a.RoleId); r != nil && r.Active { + r, _ = RoleInfoMap.GetRole(o.UltimateParent, a.RoleId) + if r != nil && r.Active { return r.Access } } @@ -392,6 +541,7 @@ func GetAcctAccess(acctId common.Address) AccessType { return DefaultAccess } +// validates if the account can transact from the current node func ValidateNodeForTxn(hexnodeId string, from common.Address) bool { if !QIP714BlockReached || hexnodeId == "" { return true @@ -402,20 +552,32 @@ func ValidateNodeForTxn(hexnodeId string, from common.Address) bool { return false } - ac := AcctInfoMap.GetAccount(from) + ac, _ := AcctInfoMap.GetAccount(from) if ac == nil { return true } - ultimateParent := OrgInfoMap.GetOrg(ac.OrgId).UltimateParent + acOrgRec, err := OrgInfoMap.GetOrg(ac.OrgId) + if err != nil { + return false + } + // scan through the node list and validate for _, n := range NodeInfoMap.GetNodeList() { - if OrgInfoMap.GetOrg(n.OrgId).UltimateParent == ultimateParent { + orgRec, err := OrgInfoMap.GetOrg(n.OrgId) + if err != nil { + return false + } + if orgRec.UltimateParent == acOrgRec.UltimateParent { recEnodeId, _ := enode.ParseV4(n.Url) - if recEnodeId.ID() == passedEnodeId.ID() { + if recEnodeId.ID() == passedEnodeId.ID() && n.Status == NodeApproved { return true } } } + if NodeInfoMap.evicted { + return NodeInfoMap.populateAndValidateFunc(hexnodeId, acOrgRec.UltimateParent) + } + return false } diff --git a/core/types/permissions_cache_test.go b/core/types/permissions_cache_test.go index f0ea8ed6b..f4e8adb73 100644 --- a/core/types/permissions_cache_test.go +++ b/core/types/permissions_cache_test.go @@ -8,6 +8,7 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/params" testifyassert "github.com/stretchr/testify/assert" ) @@ -51,16 +52,20 @@ func TestSetDefaults(t *testing.T) { func TestOrgCache_UpsertOrg(t *testing.T) { assert := testifyassert.New(t) + OrgInfoMap = NewOrgCache(params.DEFAULT_ORGCACHE_SIZE) + //add a org and get the org details OrgInfoMap.UpsertOrg(NETWORKADMIN, "", NETWORKADMIN, big.NewInt(1), OrgApproved) - orgInfo := OrgInfoMap.GetOrg(NETWORKADMIN) + orgInfo, err := OrgInfoMap.GetOrg(NETWORKADMIN) + assert.True(err == nil, "errors encountered") assert.False(orgInfo == nil, fmt.Sprintf("Expected org details, got nil")) assert.True(orgInfo.OrgId == NETWORKADMIN, fmt.Sprintf("Expected org id %v, got %v", NETWORKADMIN, orgInfo.OrgId)) // update org status to suspended OrgInfoMap.UpsertOrg(NETWORKADMIN, "", NETWORKADMIN, big.NewInt(1), OrgSuspended) - orgInfo = OrgInfoMap.GetOrg(NETWORKADMIN) + orgInfo, err = OrgInfoMap.GetOrg(NETWORKADMIN) + assert.True(err == nil, "errors encountered") assert.True(orgInfo.Status == OrgSuspended, fmt.Sprintf("Expected org status %v, got %v", OrgSuspended, orgInfo.Status)) @@ -83,9 +88,13 @@ func TestOrgCache_UpsertOrg(t *testing.T) { func TestNodeCache_UpsertNode(t *testing.T) { assert := testifyassert.New(t) + NodeInfoMap = NewNodeCache(params.DEFAULT_NODECACHE_SIZE) + // add a node into the cache and validate NodeInfoMap.UpsertNode(NETWORKADMIN, NODE1, NodeApproved) - nodeInfo := NodeInfoMap.GetNodeByUrl(NODE1) + nodeInfo, err := NodeInfoMap.GetNodeByUrl(NODE1) + assert.True(err == nil, fmt.Sprintf("got errors in node fetch")) + assert.False(nodeInfo == nil, fmt.Sprintf("Expected node details, got nil")) assert.True(nodeInfo.OrgId == NETWORKADMIN, fmt.Sprintf("Expected org id for node %v, got %v", NETWORKADMIN, nodeInfo.OrgId)) assert.True(nodeInfo.Url == NODE1, fmt.Sprintf("Expected node id %v, got %v", NODE1, nodeInfo.Url)) @@ -97,16 +106,21 @@ func TestNodeCache_UpsertNode(t *testing.T) { // check node details update by updating node status NodeInfoMap.UpsertNode(ORGADMIN, NODE2, NodeDeactivated) - nodeInfo = NodeInfoMap.GetNodeByUrl(NODE2) + nodeInfo, err = NodeInfoMap.GetNodeByUrl(NODE2) + assert.True(err == nil, fmt.Sprintf("got errors in node fetch")) + assert.True(nodeInfo.Status == NodeDeactivated, fmt.Sprintf("Expected node status %v, got %v", NodeDeactivated, nodeInfo.Status)) } func TestRoleCache_UpsertRole(t *testing.T) { assert := testifyassert.New(t) + RoleInfoMap = NewRoleCache(params.DEFAULT_ROLECACHE_SIZE) + // add a role into the cache and validate RoleInfoMap.UpsertRole(NETWORKADMIN, NETWORKADMIN, true, true, FullAccess, true) - roleInfo := RoleInfoMap.GetRole(NETWORKADMIN, NETWORKADMIN) + roleInfo, err := RoleInfoMap.GetRole(NETWORKADMIN, NETWORKADMIN) + assert.True(err == nil, "errors encountered") assert.False(roleInfo == nil, fmt.Sprintf("Expected role details, got nil")) assert.True(roleInfo.OrgId == NETWORKADMIN, fmt.Sprintf("Expected org id for node %v, got %v", NETWORKADMIN, roleInfo.OrgId)) assert.True(roleInfo.RoleId == NETWORKADMIN, fmt.Sprintf("Expected node id %v, got %v", NETWORKADMIN, roleInfo.RoleId)) @@ -118,16 +132,22 @@ func TestRoleCache_UpsertRole(t *testing.T) { // update role status and validate RoleInfoMap.UpsertRole(ORGADMIN, ORGADMIN, true, true, FullAccess, false) - roleInfo = RoleInfoMap.GetRole(ORGADMIN, ORGADMIN) + roleInfo, err = RoleInfoMap.GetRole(ORGADMIN, ORGADMIN) + assert.True(err == nil, "errors encountered") + assert.True(!roleInfo.Active, fmt.Sprintf("Expected role active status to be %v, got %v", true, roleInfo.Active)) } func TestAcctCache_UpsertAccount(t *testing.T) { assert := testifyassert.New(t) + AcctInfoMap = NewAcctCache(params.DEFAULT_ACCOUNTCACHE_SIZE) + // add an account into the cache and validate AcctInfoMap.UpsertAccount(NETWORKADMIN, NETWORKADMIN, Acct1, true, AcctActive) - acctInfo := AcctInfoMap.GetAccount(Acct1) + acctInfo, err := AcctInfoMap.GetAccount(Acct1) + assert.True(err == nil) + assert.False(acctInfo == nil, fmt.Sprintf("Expected account details, got nil")) assert.True(acctInfo.OrgId == NETWORKADMIN, fmt.Sprintf("Expected org id for the account to be %v, got %v", NETWORKADMIN, acctInfo.OrgId)) assert.True(acctInfo.AcctId == Acct1, fmt.Sprintf("Expected account id %x, got %x", Acct1, acctInfo.AcctId)) @@ -139,7 +159,9 @@ func TestAcctCache_UpsertAccount(t *testing.T) { // update account status and validate AcctInfoMap.UpsertAccount(ORGADMIN, ORGADMIN, Acct2, true, AcctBlacklisted) - acctInfo = AcctInfoMap.GetAccount(Acct2) + acctInfo, err = AcctInfoMap.GetAccount(Acct2) + assert.True(err == nil) + assert.True(acctInfo.Status == AcctBlacklisted, fmt.Sprintf("Expected account status to be %v, got %v", AcctBlacklisted, acctInfo.Status)) // validate the list for org and role functions @@ -234,11 +256,12 @@ func TestValidateNodeForTxn_whenUsingOnlyHexNodeId(t *testing.T) { // test the cache limit func TestLRUCacheLimit(t *testing.T) { - for i := 0; i < defaultOrgMapLimit; i++ { + for i := 0; i < params.DEFAULT_ORGCACHE_SIZE; i++ { orgName := "ORG" + strconv.Itoa(i) OrgInfoMap.UpsertOrg(orgName, "", NETWORKADMIN, big.NewInt(1), OrgApproved) } - o := OrgInfoMap.GetOrg("ORG1") + o, err := OrgInfoMap.GetOrg("ORG1") + testifyassert.True(t, err == nil) testifyassert.True(t, o != nil) } diff --git a/params/quorum.go b/params/quorum.go index 7d060d4f1..827404cb6 100644 --- a/params/quorum.go +++ b/params/quorum.go @@ -1,7 +1,11 @@ package params const ( - PERMISSIONED_CONFIG = "permissioned-nodes.json" - BLACKLIST_CONFIG = "disallowed-nodes.json" - PERMISSION_MODEL_CONFIG = "permission-config.json" + PERMISSIONED_CONFIG = "permissioned-nodes.json" + BLACKLIST_CONFIG = "disallowed-nodes.json" + PERMISSION_MODEL_CONFIG = "permission-config.json" + DEFAULT_ORGCACHE_SIZE = 2000 + DEFAULT_ROLECACHE_SIZE = 2500 + DEFAULT_NODECACHE_SIZE = 1000 + DEFAULT_ACCOUNTCACHE_SIZE = 6000 ) diff --git a/permission/api.go b/permission/api.go index 486b365be..a13fb61cb 100644 --- a/permission/api.go +++ b/permission/api.go @@ -102,52 +102,7 @@ type PendingOpInfo struct { PendingOp string `json:"pendingOp"` } -type ExecStatus struct { - Status bool `json:"status"` - Msg string `json:"msg"` -} - -func (e ExecStatus) OpStatus() (string, error) { - if e.Status { - return e.Msg, nil - } - return "", fmt.Errorf("%s", e.Msg) -} - -var ( - ErrNotNetworkAdmin = ExecStatus{false, "Operation can be performed by network admin only. Account not a network admin."} - ErrNotOrgAdmin = ExecStatus{false, "Operation can be performed by org admin only. Account not a org admin."} - ErrNodePresent = ExecStatus{false, "EnodeId already part of network."} - ErrInvalidNode = ExecStatus{false, "Invalid enode id"} - ErrInvalidAccount = ExecStatus{false, "Invalid account id"} - ErrOrgExists = ExecStatus{false, "Org already exists"} - ErrPendingApprovals = ExecStatus{false, "Pending approvals for the organization. Approve first"} - ErrNothingToApprove = ExecStatus{false, "Nothing to approve"} - ErrOpNotAllowed = ExecStatus{false, "Operation not allowed"} - ErrNodeOrgMismatch = ExecStatus{false, "Enode id passed does not belong to the organization."} - ErrBlacklistedNode = ExecStatus{false, "Blacklisted node. Operation not allowed"} - ErrBlacklistedAccount = ExecStatus{false, "Blacklisted account. Operation not allowed"} - ErrAccountOrgAdmin = ExecStatus{false, "Account already org admin for the org"} - ErrOrgAdminExists = ExecStatus{false, "Org admin exists for the org"} - ErrAccountInUse = ExecStatus{false, "Account already in use in another organization"} - ErrRoleExists = ExecStatus{false, "Role exists for the org"} - ErrRoleActive = ExecStatus{false, "Accounts linked to the role. Cannot be removed"} - ErrAdminRoles = ExecStatus{false, "Admin role cannot be removed"} - ErrInvalidOrgName = ExecStatus{false, "Org id cannot contain special characters"} - ErrInvalidParentOrg = ExecStatus{false, "Invalid parent org id"} - ErrAccountNotThere = ExecStatus{false, "Account does not exists"} - ErrOrgNotOwner = ExecStatus{false, "Account does not belong to this org"} - ErrMaxDepth = ExecStatus{false, "Max depth for sub orgs reached"} - ErrMaxBreadth = ExecStatus{false, "Max breadth for sub orgs reached"} - ErrNodeDoesNotExists = ExecStatus{false, "Node does not exists"} - ErrOrgDoesNotExists = ExecStatus{false, "Org does not exists"} - ErrInactiveRole = ExecStatus{false, "Role is already inactive"} - ErrInvalidRole = ExecStatus{false, "Invalid role"} - ErrInvalidInput = ExecStatus{false, "Invalid input"} - ErrNotMasterOrg = ExecStatus{false, "Org is not a master org"} - - ExecSuccess = ExecStatus{true, "Action completed successfully"} -) +var actionSuccess = "Action completed successfully" // NewQuorumControlsAPI creates a new QuorumControlsAPI to access quorum services func NewQuorumControlsAPI(p *PermissionCtrl) *QuorumControlsAPI { @@ -171,7 +126,12 @@ func (q *QuorumControlsAPI) AcctList() []types.AccountInfo { } func (q *QuorumControlsAPI) GetOrgDetails(orgId string) (types.OrgDetailInfo, error) { - if o := types.OrgInfoMap.GetOrg(orgId); o == nil { + o, err := types.OrgInfoMap.GetOrg(orgId) + if err != nil { + return types.OrgDetailInfo{}, err + } + + if o == nil { return types.OrgDetailInfo{}, errors.New("org does not exist") } var acctList []types.AccountInfo @@ -192,89 +152,97 @@ func (q *QuorumControlsAPI) GetOrgDetails(orgId string) (types.OrgDetailInfo, er nodeList = append(nodeList, a) } } - return types.OrgDetailInfo{NodeList: nodeList, RoleList: roleList, AcctList: acctList, SubOrgList: types.OrgInfoMap.GetOrg(orgId).SubOrgList}, nil + orgRec, err := types.OrgInfoMap.GetOrg(orgId) + if err != nil { + return types.OrgDetailInfo{}, err + } + + if orgRec == nil { + return types.OrgDetailInfo{NodeList: nodeList, RoleList: roleList, AcctList: acctList}, nil + } + return types.OrgDetailInfo{NodeList: nodeList, RoleList: roleList, AcctList: acctList, SubOrgList: orgRec.SubOrgList}, nil } -func (q *QuorumControlsAPI) initOp(txa ethapi.SendTxArgs) (*pbind.PermInterfaceSession, ExecStatus) { +func (q *QuorumControlsAPI) initOp(txa ethapi.SendTxArgs) (*pbind.PermInterfaceSession, error) { var err error var w accounts.Wallet w, err = q.validateAccount(txa.From) if err != nil { - return nil, ErrInvalidAccount + return nil, types.ErrInvalidAccount } pinterf := q.newPermInterfaceSession(w, txa) - return pinterf, ExecSuccess + return pinterf, nil } func reportExecError(action PermAction, err error) (string, error) { log.Error("Failed to execute permission action", "action", action, "err", err) msg := fmt.Sprintf("failed to execute permissions action: %v", err) - return ExecStatus{false, msg}.OpStatus() + return "", errors.New(msg) } func (q *QuorumControlsAPI) AddOrg(orgId string, url string, acct common.Address, txa ethapi.SendTxArgs) (string, error) { - pinterf, execStatus := q.initOp(txa) - if execStatus != ExecSuccess { - return execStatus.OpStatus() + pinterf, err := q.initOp(txa) + if err != nil { + return "", err } args := txArgs{orgId: orgId, url: url, acctId: acct, txa: txa} - if execStatus := q.valAddOrg(args, pinterf); execStatus != ExecSuccess { - return execStatus.OpStatus() + if err := q.valAddOrg(args, pinterf); err != nil { + return "", err } tx, err := pinterf.AddOrg(args.orgId, args.url, args.acctId) if err != nil { return reportExecError(AddOrg, err) } log.Debug("executed permission action", "action", AddOrg, "tx", tx) - return ExecSuccess.OpStatus() + return actionSuccess, nil } func (q *QuorumControlsAPI) AddSubOrg(porgId, orgId string, url string, txa ethapi.SendTxArgs) (string, error) { - pinterf, execStatus := q.initOp(txa) - if execStatus != ExecSuccess { - return execStatus.OpStatus() + pinterf, err := q.initOp(txa) + if err != nil { + return "", err } args := txArgs{porgId: porgId, orgId: orgId, url: url, txa: txa} - if execStatus := q.valAddSubOrg(args, pinterf); execStatus != ExecSuccess { - return execStatus.OpStatus() + if err := q.valAddSubOrg(args, pinterf); err != nil { + return "", err } tx, err := pinterf.AddSubOrg(args.porgId, args.orgId, args.url) if err != nil { return reportExecError(AddSubOrg, err) } log.Debug("executed permission action", "action", AddSubOrg, "tx", tx) - return ExecSuccess.OpStatus() + return actionSuccess, nil } func (q *QuorumControlsAPI) ApproveOrg(orgId string, url string, acct common.Address, txa ethapi.SendTxArgs) (string, error) { - pinterf, execStatus := q.initOp(txa) - if execStatus != ExecSuccess { - return execStatus.OpStatus() + pinterf, err := q.initOp(txa) + if err != nil { + return "", err } args := txArgs{orgId: orgId, url: url, acctId: acct, txa: txa} - if execStatus := q.valApproveOrg(args, pinterf); execStatus != ExecSuccess { - return execStatus.OpStatus() + if err := q.valApproveOrg(args, pinterf); err != nil { + return "", err } tx, err := pinterf.ApproveOrg(args.orgId, args.url, args.acctId) if err != nil { return reportExecError(ApproveOrg, err) } log.Debug("executed permission action", "action", ApproveOrg, "tx", tx) - return ExecSuccess.OpStatus() + return actionSuccess, nil } func (q *QuorumControlsAPI) UpdateOrgStatus(orgId string, status uint8, txa ethapi.SendTxArgs) (string, error) { - pinterf, execStatus := q.initOp(txa) - if execStatus != ExecSuccess { - return execStatus.OpStatus() + pinterf, err := q.initOp(txa) + if err != nil { + return "", err } args := txArgs{orgId: orgId, action: status, txa: txa} - if execStatus := q.valUpdateOrgStatus(args, pinterf); execStatus != ExecSuccess { - return execStatus.OpStatus() + if err := q.valUpdateOrgStatus(args, pinterf); err != nil { + return "", err } // and in suspended state for suspension revoke tx, err := pinterf.UpdateOrgStatus(args.orgId, big.NewInt(int64(args.action))) @@ -282,17 +250,17 @@ func (q *QuorumControlsAPI) UpdateOrgStatus(orgId string, status uint8, txa etha return reportExecError(UpdateOrgStatus, err) } log.Debug("executed permission action", "action", UpdateOrgStatus, "tx", tx) - return ExecSuccess.OpStatus() + return actionSuccess, nil } func (q *QuorumControlsAPI) AddNode(orgId string, url string, txa ethapi.SendTxArgs) (string, error) { - pinterf, execStatus := q.initOp(txa) - if execStatus != ExecSuccess { - return execStatus.OpStatus() + pinterf, err := q.initOp(txa) + if err != nil { + return "", err } args := txArgs{orgId: orgId, url: url, txa: txa} - if execStatus := q.valAddNode(args, pinterf); execStatus != ExecSuccess { - return execStatus.OpStatus() + if err := q.valAddNode(args, pinterf); err != nil { + return "", err } // check if node is already there tx, err := pinterf.AddNode(args.orgId, args.url) @@ -300,17 +268,17 @@ func (q *QuorumControlsAPI) AddNode(orgId string, url string, txa ethapi.SendTxA return reportExecError(AddNode, err) } log.Debug("executed permission action", "action", AddNode, "tx", tx) - return ExecSuccess.OpStatus() + return actionSuccess, nil } func (q *QuorumControlsAPI) UpdateNodeStatus(orgId string, url string, action uint8, txa ethapi.SendTxArgs) (string, error) { - pinterf, execStatus := q.initOp(txa) - if execStatus != ExecSuccess { - return execStatus.OpStatus() + pinterf, err := q.initOp(txa) + if err != nil { + return "", err } args := txArgs{orgId: orgId, url: url, action: action, txa: txa} - if execStatus := q.valUpdateNodeStatus(args, UpdateNodeStatus, pinterf); execStatus != ExecSuccess { - return execStatus.OpStatus() + if err := q.valUpdateNodeStatus(args, UpdateNodeStatus, pinterf); err != nil { + return "", err } // check node status for operation tx, err := pinterf.UpdateNodeStatus(args.orgId, args.url, big.NewInt(int64(args.action))) @@ -318,17 +286,17 @@ func (q *QuorumControlsAPI) UpdateNodeStatus(orgId string, url string, action ui return reportExecError(UpdateNodeStatus, err) } log.Debug("executed permission action", "action", UpdateNodeStatus, "tx", tx) - return ExecSuccess.OpStatus() + return actionSuccess, nil } func (q *QuorumControlsAPI) ApproveOrgStatus(orgId string, status uint8, txa ethapi.SendTxArgs) (string, error) { - pinterf, execStatus := q.initOp(txa) - if execStatus != ExecSuccess { - return execStatus.OpStatus() + pinterf, err := q.initOp(txa) + if err != nil { + return "", err } args := txArgs{orgId: orgId, action: status, txa: txa} - if execStatus := q.valApproveOrgStatus(args, pinterf); execStatus != ExecSuccess { - return execStatus.OpStatus() + if err := q.valApproveOrgStatus(args, pinterf); err != nil { + return "", err } // validate that status change is pending approval tx, err := pinterf.ApproveOrgStatus(args.orgId, big.NewInt(int64(args.action))) @@ -336,17 +304,17 @@ func (q *QuorumControlsAPI) ApproveOrgStatus(orgId string, status uint8, txa eth return reportExecError(ApproveOrgStatus, err) } log.Debug("executed permission action", "action", ApproveOrgStatus, "tx", tx) - return ExecSuccess.OpStatus() + return actionSuccess, nil } func (q *QuorumControlsAPI) AssignAdminRole(orgId string, acct common.Address, roleId string, txa ethapi.SendTxArgs) (string, error) { - pinterf, execStatus := q.initOp(txa) - if execStatus != ExecSuccess { - return execStatus.OpStatus() + pinterf, err := q.initOp(txa) + if err != nil { + return "", err } args := txArgs{orgId: orgId, acctId: acct, roleId: roleId, txa: txa} - if execStatus := q.valAssignAdminRole(args, pinterf); execStatus != ExecSuccess { - return execStatus.OpStatus() + if err := q.valAssignAdminRole(args, pinterf); err != nil { + return "", err } // check if account is already in use in another org tx, err := pinterf.AssignAdminRole(args.orgId, args.acctId, args.roleId) @@ -354,17 +322,17 @@ func (q *QuorumControlsAPI) AssignAdminRole(orgId string, acct common.Address, r return reportExecError(AssignAdminRole, err) } log.Debug("executed permission action", "action", AssignAdminRole, "tx", tx) - return ExecSuccess.OpStatus() + return actionSuccess, nil } func (q *QuorumControlsAPI) ApproveAdminRole(orgId string, acct common.Address, txa ethapi.SendTxArgs) (string, error) { - pinterf, execStatus := q.initOp(txa) - if execStatus != ExecSuccess { - return execStatus.OpStatus() + pinterf, err := q.initOp(txa) + if err != nil { + return "", err } args := txArgs{orgId: orgId, acctId: acct, txa: txa} - if execStatus := q.valApproveAdminRole(args, pinterf); execStatus != ExecSuccess { - return execStatus.OpStatus() + if err := q.valApproveAdminRole(args, pinterf); err != nil { + return "", err } // check if anything is pending approval tx, err := pinterf.ApproveAdminRole(args.orgId, args.acctId) @@ -372,17 +340,17 @@ func (q *QuorumControlsAPI) ApproveAdminRole(orgId string, acct common.Address, return reportExecError(ApproveAdminRole, err) } log.Debug("executed permission action", "action", ApproveAdminRole, "tx", tx) - return ExecSuccess.OpStatus() + return actionSuccess, nil } func (q *QuorumControlsAPI) AddNewRole(orgId string, roleId string, access uint8, isVoter bool, isAdmin bool, txa ethapi.SendTxArgs) (string, error) { - pinterf, execStatus := q.initOp(txa) - if execStatus != ExecSuccess { - return execStatus.OpStatus() + pinterf, err := q.initOp(txa) + if err != nil { + return "", err } args := txArgs{orgId: orgId, roleId: roleId, accessType: access, isVoter: isVoter, isAdmin: isAdmin, txa: txa} - if execStatus := q.valAddNewRole(args, pinterf); execStatus != ExecSuccess { - return execStatus.OpStatus() + if err := q.valAddNewRole(args, pinterf); err != nil { + return "", err } // check if role is already there in the org tx, err := pinterf.AddNewRole(args.roleId, args.orgId, big.NewInt(int64(args.accessType)), args.isVoter, args.isAdmin) @@ -390,188 +358,191 @@ func (q *QuorumControlsAPI) AddNewRole(orgId string, roleId string, access uint8 return reportExecError(AddNewRole, err) } log.Debug("executed permission action", "action", AddNewRole, "tx", tx) - return ExecSuccess.OpStatus() + return actionSuccess, nil } func (q *QuorumControlsAPI) RemoveRole(orgId string, roleId string, txa ethapi.SendTxArgs) (string, error) { - pinterf, execStatus := q.initOp(txa) - if execStatus != ExecSuccess { - return execStatus.OpStatus() + pinterf, err := q.initOp(txa) + if err != nil { + return "", err } args := txArgs{orgId: orgId, roleId: roleId, txa: txa} - if execStatus := q.valRemoveRole(args, pinterf); execStatus != ExecSuccess { - return execStatus.OpStatus() + if err := q.valRemoveRole(args, pinterf); err != nil { + return "", err } tx, err := pinterf.RemoveRole(args.roleId, args.orgId) if err != nil { return reportExecError(RemoveRole, err) } log.Debug("executed permission action", "action", RemoveRole, "tx", tx) - return ExecSuccess.OpStatus() + return actionSuccess, nil } func (q *QuorumControlsAPI) AddAccountToOrg(acct common.Address, orgId string, roleId string, txa ethapi.SendTxArgs) (string, error) { - pinterf, execStatus := q.initOp(txa) - if execStatus != ExecSuccess { - return execStatus.OpStatus() + pinterf, err := q.initOp(txa) + if err != nil { + return "", err } args := txArgs{orgId: orgId, roleId: roleId, acctId: acct, txa: txa} - if execStatus := q.valAssignRole(args, pinterf); execStatus != ExecSuccess { - return execStatus.OpStatus() + if err := q.valAssignRole(args, pinterf); err != nil { + return "", err } tx, err := pinterf.AssignAccountRole(args.acctId, args.orgId, args.roleId) if err != nil { return reportExecError(AddAccountToOrg, err) } log.Debug("executed permission action", "action", AddAccountToOrg, "tx", tx) - return ExecSuccess.OpStatus() + return actionSuccess, nil } func (q *QuorumControlsAPI) ChangeAccountRole(acct common.Address, orgId string, roleId string, txa ethapi.SendTxArgs) (string, error) { - pinterf, execStatus := q.initOp(txa) - if execStatus != ExecSuccess { - return execStatus.OpStatus() + pinterf, err := q.initOp(txa) + if err != nil { + return "", err } args := txArgs{orgId: orgId, roleId: roleId, acctId: acct, txa: txa} - if execStatus := q.valAssignRole(args, pinterf); execStatus != ExecSuccess { - return execStatus.OpStatus() + if err := q.valAssignRole(args, pinterf); err != nil { + return "", err } tx, err := pinterf.AssignAccountRole(args.acctId, args.orgId, args.roleId) if err != nil { return reportExecError(ChangeAccountRole, err) } log.Debug("executed permission action", "action", ChangeAccountRole, "tx", tx) - return ExecSuccess.OpStatus() + return actionSuccess, nil } func (q *QuorumControlsAPI) UpdateAccountStatus(orgId string, acct common.Address, status uint8, txa ethapi.SendTxArgs) (string, error) { - pinterf, execStatus := q.initOp(txa) - if execStatus != ExecSuccess { - return execStatus.OpStatus() + pinterf, err := q.initOp(txa) + if err != nil { + return "", err } args := txArgs{orgId: orgId, acctId: acct, action: status, txa: txa} - if execStatus := q.valUpdateAccountStatus(args, UpdateAccountStatus, pinterf); execStatus != ExecSuccess { - return execStatus.OpStatus() + if err := q.valUpdateAccountStatus(args, UpdateAccountStatus, pinterf); err != nil { + return "", err } tx, err := pinterf.UpdateAccountStatus(args.orgId, args.acctId, big.NewInt(int64(args.action))) if err != nil { return reportExecError(UpdateAccountStatus, err) } log.Debug("executed permission action", "action", UpdateAccountStatus, "tx", tx) - return ExecSuccess.OpStatus() + return actionSuccess, nil } func (q *QuorumControlsAPI) RecoverBlackListedNode(orgId string, enodeId string, txa ethapi.SendTxArgs) (string, error) { - pinterf, execStatus := q.initOp(txa) - if execStatus != ExecSuccess { - return execStatus.OpStatus() + pinterf, err := q.initOp(txa) + if err != nil { + return "", err } args := txArgs{orgId: orgId, url: enodeId, txa: txa} - if execStatus := q.valRecoverNode(args, pinterf, InitiateNodeRecovery); execStatus != ExecSuccess { - return execStatus.OpStatus() + if err := q.valRecoverNode(args, pinterf, InitiateNodeRecovery); err != nil { + return "", err } tx, err := pinterf.StartBlacklistedNodeRecovery(args.orgId, args.url) if err != nil { return reportExecError(InitiateNodeRecovery, err) } log.Debug("executed permission action", "action", InitiateNodeRecovery, "tx", tx) - return ExecSuccess.OpStatus() + return actionSuccess, nil } func (q *QuorumControlsAPI) ApproveBlackListedNodeRecovery(orgId string, enodeId string, txa ethapi.SendTxArgs) (string, error) { - pinterf, execStatus := q.initOp(txa) - if execStatus != ExecSuccess { - return execStatus.OpStatus() + pinterf, err := q.initOp(txa) + if err != nil { + return "", err } args := txArgs{orgId: orgId, url: enodeId, txa: txa} - if execStatus := q.valRecoverNode(args, pinterf, ApproveNodeRecovery); execStatus != ExecSuccess { - return execStatus.OpStatus() + if err := q.valRecoverNode(args, pinterf, ApproveNodeRecovery); err != nil { + return "", err } tx, err := pinterf.ApproveBlacklistedNodeRecovery(args.orgId, args.url) if err != nil { return reportExecError(ApproveNodeRecovery, err) } log.Debug("executed permission action", "action", ApproveNodeRecovery, "tx", tx) - return ExecSuccess.OpStatus() + return actionSuccess, nil } func (q *QuorumControlsAPI) RecoverBlackListedAccount(orgId string, acctId common.Address, txa ethapi.SendTxArgs) (string, error) { - pinterf, execStatus := q.initOp(txa) - if execStatus != ExecSuccess { - return execStatus.OpStatus() + pinterf, err := q.initOp(txa) + if err != nil { + return "", err } args := txArgs{orgId: orgId, acctId: acctId, txa: txa} - if execStatus := q.valRecoverAccount(args, pinterf, InitiateAccountRecovery); execStatus != ExecSuccess { - return execStatus.OpStatus() + if err := q.valRecoverAccount(args, pinterf, InitiateAccountRecovery); err != nil { + return "", err } tx, err := pinterf.StartBlacklistedAccountRecovery(args.orgId, args.acctId) if err != nil { return reportExecError(InitiateAccountRecovery, err) } log.Debug("executed permission action", "action", InitiateAccountRecovery, "tx", tx) - return ExecSuccess.OpStatus() + return actionSuccess, nil } func (q *QuorumControlsAPI) ApproveBlackListedAccountRecovery(orgId string, acctId common.Address, txa ethapi.SendTxArgs) (string, error) { - pinterf, execStatus := q.initOp(txa) - if execStatus != ExecSuccess { - return execStatus.OpStatus() + pinterf, err := q.initOp(txa) + if err != nil { + return "", err } args := txArgs{orgId: orgId, acctId: acctId, txa: txa} - if execStatus := q.valRecoverAccount(args, pinterf, ApproveAccountRecovery); execStatus != ExecSuccess { - return execStatus.OpStatus() + if err := q.valRecoverAccount(args, pinterf, ApproveAccountRecovery); err != nil { + return "", err } tx, err := pinterf.ApproveBlacklistedAccountRecovery(args.orgId, args.acctId) if err != nil { return reportExecError(ApproveAccountRecovery, err) } log.Debug("executed permission action", "action", ApproveAccountRecovery, "tx", tx) - return ExecSuccess.OpStatus() + return actionSuccess, nil } // check if the account is network admin func (q *QuorumControlsAPI) isNetworkAdmin(account common.Address) bool { - ac := types.AcctInfoMap.GetAccount(account) + ac, _ := types.AcctInfoMap.GetAccount(account) return ac != nil && ac.RoleId == q.permCtrl.permConfig.NwAdminRole } -func (q *QuorumControlsAPI) isOrgAdmin(account common.Address, orgId string) (ExecStatus, error) { - org := types.OrgInfoMap.GetOrg(orgId) - if org == nil { - return ErrOrgDoesNotExists, errors.New("invalid org") +func (q *QuorumControlsAPI) isOrgAdmin(account common.Address, orgId string) error { + org, err := types.OrgInfoMap.GetOrg(orgId) + if err != nil { + return err } - ac := types.AcctInfoMap.GetAccount(account) + if org == nil { + return types.ErrOrgDoesNotExists + } + ac, _ := types.AcctInfoMap.GetAccount(account) if ac == nil { - return ErrNotOrgAdmin, errors.New("not org admin") + return types.ErrNotOrgAdmin } // check if the account is network admin if !(ac.IsOrgAdmin && (ac.OrgId == orgId || ac.OrgId == org.UltimateParent)) { - return ErrNotOrgAdmin, errors.New("not org admin") + return types.ErrNotOrgAdmin } - return ExecSuccess, nil + return nil } -func (q *QuorumControlsAPI) validateOrg(orgId, pOrgId string) (ExecStatus, error) { +func (q *QuorumControlsAPI) validateOrg(orgId, pOrgId string) error { // validate Parent org id if pOrgId != "" { - if types.OrgInfoMap.GetOrg(pOrgId) == nil { - return ErrInvalidParentOrg, errors.New("invalid parent org") + if _, err := types.OrgInfoMap.GetOrg(pOrgId); err != nil { + return types.ErrInvalidParentOrg } locOrgId := pOrgId + "." + orgId - if types.OrgInfoMap.GetOrg(locOrgId) != nil { - return ErrOrgExists, errors.New("org exists") + if lorgRec, _ := types.OrgInfoMap.GetOrg(locOrgId); lorgRec != nil { + return types.ErrOrgExists } - } else if types.OrgInfoMap.GetOrg(orgId) != nil { - return ErrOrgExists, errors.New("org exists") + } else if orgRec, _ := types.OrgInfoMap.GetOrg(orgId); orgRec != nil { + return types.ErrOrgExists } - return ExecSuccess, nil + return nil } func (q *QuorumControlsAPI) validatePendingOp(authOrg, orgId, url string, account common.Address, pendingOp int64, pinterf *pbind.PermInterfaceSession) bool { @@ -584,96 +555,105 @@ func (q *QuorumControlsAPI) checkPendingOp(orgId string, pinterf *pbind.PermInte return err == nil && op.Int64() != 0 } -func (q *QuorumControlsAPI) checkOrgStatus(orgId string, op uint8) (ExecStatus, error) { - org := types.OrgInfoMap.GetOrg(orgId) +func (q *QuorumControlsAPI) checkOrgStatus(orgId string, op uint8) error { + org, _ := types.OrgInfoMap.GetOrg(orgId) if org == nil { - return ErrOrgDoesNotExists, errors.New("org does not exist") + return types.ErrOrgDoesNotExists } // check if its a master org. operation is allowed only if its a master org if org.Level.Cmp(big.NewInt(1)) != 0 { - return ErrNotMasterOrg, errors.New("org not a master org") + return types.ErrNotMasterOrg } if !((op == 1 && org.Status == types.OrgApproved) || (op == 2 && org.Status == types.OrgSuspended)) { - return ErrOpNotAllowed, errors.New("operation not allowed for current status") + return types.ErrOpNotAllowed } - return ExecSuccess, nil + return nil } -func (q *QuorumControlsAPI) valNodeStatusChange(orgId, url string, op NodeUpdateAction, permAction PermAction) (ExecStatus, error) { +func (q *QuorumControlsAPI) valNodeStatusChange(orgId, url string, op NodeUpdateAction, permAction PermAction) error { // validates if the enode is linked the passed organization // validate node id and if len(url) == 0 { - return ErrInvalidNode, errors.New("invalid node id") + return types.ErrInvalidNode } - if execStatus, err := q.valNodeDetails(url); err != nil && execStatus != ErrNodePresent { - return execStatus, errors.New("node not found") + if err := q.valNodeDetails(url); err != nil && err.Error() != types.ErrNodePresent.Error() { + return err } - node := types.NodeInfoMap.GetNodeByUrl(url) - if node != nil { - if node.OrgId != orgId { - return ErrNodeOrgMismatch, errors.New("node does not belong to the organization passed") - } - - if node.Status == types.NodeBlackListed && op != RecoverBlacklistedNode { - return ErrBlacklistedNode, errors.New("blacklisted node. operation not allowed") - } - - // validate the op and node status and check if the op can be performed - if (permAction == UpdateNodeStatus && (op != SuspendNode && op != ActivateSuspendedNode && op != BlacklistNode)) || - (permAction == InitiateNodeRecovery && op != RecoverBlacklistedNode) || - (permAction == ApproveNodeRecovery && op != ApproveBlacklistedNodeRecovery) { - return ErrOpNotAllowed, errors.New("invalid node status change operation") - } - - if (op == SuspendNode && node.Status != types.NodeApproved) || - (op == ActivateSuspendedNode && node.Status != types.NodeDeactivated) || - (op == BlacklistNode && node.Status == types.NodeRecoveryInitiated) || - (op == RecoverBlacklistedNode && node.Status != types.NodeBlackListed) || - (op == ApproveBlacklistedNodeRecovery && node.Status != types.NodeRecoveryInitiated) { - return ErrOpNotAllowed, errors.New("node status change cannot be performed") - } - } else { - return ErrNodeDoesNotExists, errors.New("node does not exist") + node, err := types.NodeInfoMap.GetNodeByUrl(url) + if err != nil { + return err } - return ExecSuccess, nil + if node.OrgId != orgId { + return types.ErrNodeOrgMismatch + } + + if node.Status == types.NodeBlackListed && op != RecoverBlacklistedNode { + return types.ErrBlacklistedNode + } + + // validate the op and node status and check if the op can be performed + if (permAction == UpdateNodeStatus && (op != SuspendNode && op != ActivateSuspendedNode && op != BlacklistNode)) || + (permAction == InitiateNodeRecovery && op != RecoverBlacklistedNode) || + (permAction == ApproveNodeRecovery && op != ApproveBlacklistedNodeRecovery) { + return types.ErrOpNotAllowed + } + + if (op == SuspendNode && node.Status != types.NodeApproved) || + (op == ActivateSuspendedNode && node.Status != types.NodeDeactivated) || + (op == BlacklistNode && node.Status == types.NodeRecoveryInitiated) || + (op == RecoverBlacklistedNode && node.Status != types.NodeBlackListed) || + (op == ApproveBlacklistedNodeRecovery && node.Status != types.NodeRecoveryInitiated) { + return types.ErrOpNotAllowed + } + + return nil } func (q *QuorumControlsAPI) validateRole(orgId, roleId string) bool { - r := types.RoleInfoMap.GetRole(orgId, roleId) - if r == nil { - r = types.RoleInfoMap.GetRole(types.OrgInfoMap.GetOrg(orgId).UltimateParent, roleId) + var r *types.RoleInfo + r, err := types.RoleInfoMap.GetRole(orgId, roleId) + if err != nil { + return false + } + + orgRec, err := types.OrgInfoMap.GetOrg(orgId) + if err != nil { + return false + } + r, err = types.RoleInfoMap.GetRole(orgRec.UltimateParent, roleId) + if err != nil { + return false } return r != nil && r.Active } -func (q *QuorumControlsAPI) valAccountStatusChange(orgId string, account common.Address, permAction PermAction, op AccountUpdateAction) (ExecStatus, error) { +func (q *QuorumControlsAPI) valAccountStatusChange(orgId string, account common.Address, permAction PermAction, op AccountUpdateAction) error { // validates if the enode is linked the passed organization - ac := types.AcctInfoMap.GetAccount(account) - - if ac == nil { - return ErrAccountNotThere, errors.New("account not there") + ac, err := types.AcctInfoMap.GetAccount(account) + if err != nil { + return err } if ac.IsOrgAdmin && (ac.RoleId == q.permCtrl.permConfig.NwAdminRole || ac.RoleId == q.permCtrl.permConfig.OrgAdminRole) && (op == 1 || op == 3) { - return ErrOpNotAllowed, errors.New("operation not allowed on org admin account") + return types.ErrOpNotAllowed } if ac.OrgId != orgId { - return ErrOrgNotOwner, errors.New("account does not belong to the organization passed") + return types.ErrOrgNotOwner } if (permAction == UpdateAccountStatus && (op != SuspendAccount && op != ActivateSuspendedAccount && op != BlacklistAccount)) || (permAction == InitiateAccountRecovery && op != RecoverBlacklistedAccount) || (permAction == ApproveAccountRecovery && op != ApproveBlacklistedAccountRecovery) { - return ErrOpNotAllowed, errors.New("invalid account status change operation") + return types.ErrOpNotAllowed } if ac.Status == types.AcctBlacklisted && op != RecoverBlacklistedAccount { - return ErrBlacklistedAccount, errors.New("blacklisted account. operation not allowed") + return types.ErrBlacklistedAccount } if (op == SuspendAccount && ac.Status != types.AcctActive) || @@ -681,41 +661,42 @@ func (q *QuorumControlsAPI) valAccountStatusChange(orgId string, account common. (op == BlacklistAccount && ac.Status == types.AcctRecoveryInitiated) || (op == RecoverBlacklistedAccount && ac.Status != types.AcctBlacklisted) || (op == ApproveBlacklistedAccountRecovery && ac.Status != types.AcctRecoveryInitiated) { - return ErrOpNotAllowed, errors.New("account status change cannot be performed") + return types.ErrOpNotAllowed } - return ExecSuccess, nil + return nil } -func (q *QuorumControlsAPI) checkOrgAdminExists(orgId, roleId string, account common.Address) (ExecStatus, error) { - ac := types.AcctInfoMap.GetAccount(account) - - if ac != nil { +func (q *QuorumControlsAPI) checkOrgAdminExists(orgId, roleId string, account common.Address) error { + if ac, _ := types.AcctInfoMap.GetAccount(account); ac != nil { if ac.OrgId != orgId { - return ErrAccountInUse, errors.New("account part of another org") + return types.ErrAccountInUse } if roleId != "" && roleId == q.permCtrl.permConfig.OrgAdminRole && ac.IsOrgAdmin { - return ErrAccountOrgAdmin, errors.New("account already org admin for the org") + return types.ErrAccountOrgAdmin } } - return ExecSuccess, nil + return nil } -func (q *QuorumControlsAPI) valSubOrgBreadthDepth(porgId string) (ExecStatus, error) { - org := types.OrgInfoMap.GetOrg(porgId) +func (q *QuorumControlsAPI) valSubOrgBreadthDepth(porgId string) error { + org, err := types.OrgInfoMap.GetOrg(porgId) + if err != nil { + return types.ErrOpNotAllowed + } if q.permCtrl.permConfig.SubOrgDepth.Cmp(org.Level) == 0 { - return ErrMaxDepth, errors.New("max depth for sub orgs reached") + return types.ErrMaxDepth } if q.permCtrl.permConfig.SubOrgBreadth.Cmp(big.NewInt(int64(len(org.SubOrgList)))) == 0 { - return ErrMaxBreadth, errors.New("max breadth for sub orgs reached") + return types.ErrMaxBreadth } - return ExecSuccess, nil + return nil } func (q *QuorumControlsAPI) checkNodeExists(url, enodeId string) bool { - node := types.NodeInfoMap.GetNodeByUrl(url) + node, _ := types.NodeInfoMap.GetNodeByUrl(url) if node != nil { return true } @@ -731,123 +712,123 @@ func (q *QuorumControlsAPI) checkNodeExists(url, enodeId string) bool { return false } -func (q *QuorumControlsAPI) valNodeDetails(url string) (ExecStatus, error) { +func (q *QuorumControlsAPI) valNodeDetails(url string) error { // validate node id and if len(url) != 0 { enodeDet, err := enode.ParseV4(url) if err != nil { - return ErrInvalidNode, errors.New("invalid node id") + return types.ErrInvalidNode } // check if node already there if q.checkNodeExists(url, enodeDet.EnodeID()) { - return ErrNodePresent, errors.New("duplicate node") + return types.ErrNodePresent } } - return ExecSuccess, nil + return nil } // all validations for add org operation -func (q *QuorumControlsAPI) valAddOrg(args txArgs, pinterf *pbind.PermInterfaceSession) ExecStatus { +func (q *QuorumControlsAPI) valAddOrg(args txArgs, pinterf *pbind.PermInterfaceSession) error { // check if the org id contains "." if args.orgId == "" || args.url == "" || args.acctId == (common.Address{0}) { - return ErrInvalidInput + return types.ErrInvalidInput } if !isStringAlphaNumeric(args.orgId) { - return ErrInvalidOrgName + return types.ErrInvalidOrgName } // check if caller is network admin if !q.isNetworkAdmin(args.txa.From) { - return ErrNotNetworkAdmin + return types.ErrNotNetworkAdmin } // check if any previous op is pending approval for network admin if q.checkPendingOp(q.permCtrl.permConfig.NwAdminOrg, pinterf) { - return ErrPendingApprovals + return types.ErrPendingApprovals } // check if org already exists - if execStatus, er := q.validateOrg(args.orgId, ""); er != nil { - return execStatus + if er := q.validateOrg(args.orgId, ""); er != nil { + return er } // validate node id and - if execStatus, er := q.valNodeDetails(args.url); er != nil { - return execStatus + if er := q.valNodeDetails(args.url); er != nil { + return er } // check if account is already part of another org - if execStatus, er := q.checkOrgAdminExists(args.orgId, "", args.acctId); er != nil { - return execStatus + if er := q.checkOrgAdminExists(args.orgId, "", args.acctId); er != nil { + return er } - return ExecSuccess + return nil } -func (q *QuorumControlsAPI) valApproveOrg(args txArgs, pinterf *pbind.PermInterfaceSession) ExecStatus { +func (q *QuorumControlsAPI) valApproveOrg(args txArgs, pinterf *pbind.PermInterfaceSession) error { // check caller is network admin if !q.isNetworkAdmin(args.txa.From) { - return ErrNotNetworkAdmin + return types.ErrNotNetworkAdmin } // check if anything pending approval if !q.validatePendingOp(q.permCtrl.permConfig.NwAdminOrg, args.orgId, args.url, args.acctId, 1, pinterf) { - return ErrNothingToApprove + return types.ErrNothingToApprove } - return ExecSuccess + return nil } -func (q *QuorumControlsAPI) valAddSubOrg(args txArgs, pinterf *pbind.PermInterfaceSession) ExecStatus { +func (q *QuorumControlsAPI) valAddSubOrg(args txArgs, pinterf *pbind.PermInterfaceSession) error { // check if the org id contains "." if args.orgId == "" { - return ErrInvalidInput + return types.ErrInvalidInput } if !isStringAlphaNumeric(args.orgId) { - return ErrInvalidOrgName + return types.ErrInvalidOrgName } // check if caller is network admin - if execStatus, er := q.isOrgAdmin(args.txa.From, args.porgId); er != nil { - return execStatus + if er := q.isOrgAdmin(args.txa.From, args.porgId); er != nil { + return er } // check if org already exists - if execStatus, er := q.validateOrg(args.orgId, args.porgId); er != nil { - return execStatus + if er := q.validateOrg(args.orgId, args.porgId); er != nil { + return er } - if execStatus, er := q.valSubOrgBreadthDepth(args.porgId); er != nil { - return execStatus + if er := q.valSubOrgBreadthDepth(args.porgId); er != nil { + return er } - if execStatus, er := q.valNodeDetails(args.url); er != nil { - return execStatus + if er := q.valNodeDetails(args.url); er != nil { + return er } - return ExecSuccess + return nil } -func (q *QuorumControlsAPI) valUpdateOrgStatus(args txArgs, pinterf *pbind.PermInterfaceSession) ExecStatus { +func (q *QuorumControlsAPI) valUpdateOrgStatus(args txArgs, pinterf *pbind.PermInterfaceSession) error { // check if called is network admin if !q.isNetworkAdmin(args.txa.From) { - return ErrNotNetworkAdmin + return types.ErrNotNetworkAdmin } if OrgUpdateAction(args.action) != SuspendOrg && OrgUpdateAction(args.action) != ActivateSuspendedOrg { - return ErrOpNotAllowed + return types.ErrOpNotAllowed } //check if passed org id is network admin org. update should not be allowed if args.orgId == q.permCtrl.permConfig.NwAdminOrg { - return ErrOpNotAllowed + return types.ErrOpNotAllowed } // check if status update can be performed. Org should be approved for suspension - if execStatus, er := q.checkOrgStatus(args.orgId, args.action); er != nil { - return execStatus + if er := q.checkOrgStatus(args.orgId, args.action); er != nil { + return er } - return ExecSuccess + return nil } -func (q *QuorumControlsAPI) valApproveOrgStatus(args txArgs, pinterf *pbind.PermInterfaceSession) ExecStatus { +func (q *QuorumControlsAPI) valApproveOrgStatus(args txArgs, pinterf *pbind.PermInterfaceSession) error { // check if called is network admin if !q.isNetworkAdmin(args.txa.From) { - return ErrNotNetworkAdmin + return types.ErrNotNetworkAdmin } // check if anything is pending approval var pendingOp int64 @@ -856,204 +837,204 @@ func (q *QuorumControlsAPI) valApproveOrgStatus(args txArgs, pinterf *pbind.Perm } else if args.action == 2 { pendingOp = 3 } else { - return ErrOpNotAllowed + return types.ErrOpNotAllowed } if !q.validatePendingOp(q.permCtrl.permConfig.NwAdminOrg, args.orgId, "", common.Address{}, pendingOp, pinterf) { - return ErrNothingToApprove + return types.ErrNothingToApprove } - return ExecSuccess + return nil } -func (q *QuorumControlsAPI) valAddNode(args txArgs, pinterf *pbind.PermInterfaceSession) ExecStatus { +func (q *QuorumControlsAPI) valAddNode(args txArgs, pinterf *pbind.PermInterfaceSession) error { if args.url == "" { - return ErrInvalidInput + return types.ErrInvalidInput } // check if caller is network admin - if execStatus, er := q.isOrgAdmin(args.txa.From, args.orgId); er != nil { - return execStatus + if er := q.isOrgAdmin(args.txa.From, args.orgId); er != nil { + return er } - if execStatus, er := q.valNodeDetails(args.url); er != nil { - return execStatus + if er := q.valNodeDetails(args.url); er != nil { + return er } - return ExecSuccess + return nil } -func (q *QuorumControlsAPI) valUpdateNodeStatus(args txArgs, permAction PermAction, pinterf *pbind.PermInterfaceSession) ExecStatus { +func (q *QuorumControlsAPI) valUpdateNodeStatus(args txArgs, permAction PermAction, pinterf *pbind.PermInterfaceSession) error { // check if org admin // check if caller is network admin - if execStatus, er := q.isOrgAdmin(args.txa.From, args.orgId); er != nil { - return execStatus + if er := q.isOrgAdmin(args.txa.From, args.orgId); er != nil { + return er } // validation status change is with in allowed set - if execStatus, er := q.valNodeStatusChange(args.orgId, args.url, NodeUpdateAction(args.action), permAction); er != nil { - return execStatus + if er := q.valNodeStatusChange(args.orgId, args.url, NodeUpdateAction(args.action), permAction); er != nil { + return er } - return ExecSuccess + return nil } -func (q *QuorumControlsAPI) valAssignAdminRole(args txArgs, pinterf *pbind.PermInterfaceSession) ExecStatus { +func (q *QuorumControlsAPI) valAssignAdminRole(args txArgs, pinterf *pbind.PermInterfaceSession) error { if args.acctId == (common.Address{0}) { - return ErrInvalidInput + return types.ErrInvalidInput } // check if caller is network admin if args.roleId != q.permCtrl.permConfig.OrgAdminRole && args.roleId != q.permCtrl.permConfig.NwAdminRole { - return ErrOpNotAllowed + return types.ErrOpNotAllowed } if !q.isNetworkAdmin(args.txa.From) { - return ErrNotNetworkAdmin + return types.ErrNotNetworkAdmin } - if _, err := q.validateOrg(args.orgId, ""); err == nil { - return ErrOrgDoesNotExists + if err := q.validateOrg(args.orgId, ""); err == nil { + return types.ErrOrgDoesNotExists } // check if account is already part of another org - if execStatus, er := q.checkOrgAdminExists(args.orgId, args.roleId, args.acctId); er != nil && execStatus != ErrOrgAdminExists { - return execStatus + if er := q.checkOrgAdminExists(args.orgId, args.roleId, args.acctId); er != nil && er.Error() != types.ErrOrgAdminExists.Error() { + return er } - return ExecSuccess + return nil } -func (q *QuorumControlsAPI) valApproveAdminRole(args txArgs, pinterf *pbind.PermInterfaceSession) ExecStatus { +func (q *QuorumControlsAPI) valApproveAdminRole(args txArgs, pinterf *pbind.PermInterfaceSession) error { // check if caller is network admin if !q.isNetworkAdmin(args.txa.From) { - return ErrNotNetworkAdmin + return types.ErrNotNetworkAdmin } // check if the org exists // check if account is valid - ac := types.AcctInfoMap.GetAccount(args.acctId) + ac, _ := types.AcctInfoMap.GetAccount(args.acctId) if ac == nil { - return ErrInvalidAccount + return types.ErrInvalidAccount } // validate pending op if !q.validatePendingOp(q.permCtrl.permConfig.NwAdminOrg, ac.OrgId, "", args.acctId, 4, pinterf) { - return ErrNothingToApprove + return types.ErrNothingToApprove } - return ExecSuccess + return nil } -func (q *QuorumControlsAPI) valAddNewRole(args txArgs, pinterf *pbind.PermInterfaceSession) ExecStatus { +func (q *QuorumControlsAPI) valAddNewRole(args txArgs, pinterf *pbind.PermInterfaceSession) error { if args.roleId == "" { - return ErrInvalidInput + return types.ErrInvalidInput } // check if caller is network admin - if execStatus, er := q.isOrgAdmin(args.txa.From, args.orgId); er != nil { - return execStatus + if er := q.isOrgAdmin(args.txa.From, args.orgId); er != nil { + return er } // validate if role is already present - if types.RoleInfoMap.GetRole(args.orgId, args.roleId) != nil { - return ErrRoleExists + if roleRec, _ := types.RoleInfoMap.GetRole(args.orgId, args.roleId); roleRec != nil { + return types.ErrRoleExists } - return ExecSuccess + return nil } -func (q *QuorumControlsAPI) valRemoveRole(args txArgs, pinterf *pbind.PermInterfaceSession) ExecStatus { +func (q *QuorumControlsAPI) valRemoveRole(args txArgs, pinterf *pbind.PermInterfaceSession) error { // check if caller is network admin - if execStatus, er := q.isOrgAdmin(args.txa.From, args.orgId); er != nil { - return execStatus + if er := q.isOrgAdmin(args.txa.From, args.orgId); er != nil { + return er } // admin roles cannot be removed if args.roleId == q.permCtrl.permConfig.OrgAdminRole || args.roleId == q.permCtrl.permConfig.NwAdminRole { - return ErrAdminRoles + return types.ErrAdminRoles } // check if role is alraedy inactive - r := types.RoleInfoMap.GetRole(args.orgId, args.roleId) + r, _ := types.RoleInfoMap.GetRole(args.orgId, args.roleId) if r == nil { - return ErrInvalidRole + return types.ErrInvalidRole } else if !r.Active { - return ErrInactiveRole + return types.ErrInactiveRole } // check if the role has active accounts. if yes operations should not be allowed if len(types.AcctInfoMap.GetAcctListRole(args.orgId, args.roleId)) != 0 { - return ErrRoleActive + return types.ErrRoleActive } - return ExecSuccess + return nil } -func (q *QuorumControlsAPI) valAssignRole(args txArgs, pinterf *pbind.PermInterfaceSession) ExecStatus { +func (q *QuorumControlsAPI) valAssignRole(args txArgs, pinterf *pbind.PermInterfaceSession) error { if args.acctId == (common.Address{0}) { - return ErrInvalidInput + return types.ErrInvalidInput } if args.roleId == q.permCtrl.permConfig.OrgAdminRole || args.roleId == q.permCtrl.permConfig.NwAdminRole { - return ErrInvalidRole + return types.ErrInvalidRole } // check if caller is network admin - if execStatus, er := q.isOrgAdmin(args.txa.From, args.orgId); er != nil { - return execStatus + if er := q.isOrgAdmin(args.txa.From, args.orgId); er != nil { + return er } // check if the role is valid if !q.validateRole(args.orgId, args.roleId) { - return ErrInvalidRole + return types.ErrInvalidRole } // check if the account is part of another org - if ac := types.AcctInfoMap.GetAccount(args.acctId); ac != nil { - if ac.OrgId != args.orgId { - return ErrAccountInUse + if ac, _ := types.AcctInfoMap.GetAccount(args.acctId); ac != nil { + if ac != nil && ac.OrgId != args.orgId { + return types.ErrAccountInUse } } - return ExecSuccess + return nil } -func (q *QuorumControlsAPI) valUpdateAccountStatus(args txArgs, permAction PermAction, pinterf *pbind.PermInterfaceSession) ExecStatus { +func (q *QuorumControlsAPI) valUpdateAccountStatus(args txArgs, permAction PermAction, pinterf *pbind.PermInterfaceSession) error { // check if the caller is org admin - if execStatus, er := q.isOrgAdmin(args.txa.From, args.orgId); er != nil { - return execStatus + if er := q.isOrgAdmin(args.txa.From, args.orgId); er != nil { + return er } // validation status change is with in allowed set - if execStatus, er := q.valAccountStatusChange(args.orgId, args.acctId, permAction, AccountUpdateAction(args.action)); er != nil { - return execStatus + if er := q.valAccountStatusChange(args.orgId, args.acctId, permAction, AccountUpdateAction(args.action)); er != nil { + return er } - return ExecSuccess + return nil } -func (q *QuorumControlsAPI) valRecoverNode(args txArgs, pinterf *pbind.PermInterfaceSession, action PermAction) ExecStatus { +func (q *QuorumControlsAPI) valRecoverNode(args txArgs, pinterf *pbind.PermInterfaceSession, action PermAction) error { // check if the caller is org admin if !q.isNetworkAdmin(args.txa.From) { - return ErrNotNetworkAdmin + return types.ErrNotNetworkAdmin } // validate inputs - org id is valid, node is valid and in blacklisted state - if execStatus, _ := q.validateOrg(args.orgId, ""); execStatus != ErrOrgExists { - return ErrInvalidOrgName + if err := q.validateOrg(args.orgId, ""); err.Error() != types.ErrOrgExists.Error() { + return types.ErrInvalidOrgName } if action == InitiateNodeRecovery { - if execStatus, _ := q.valNodeStatusChange(args.orgId, args.url, 4, InitiateAccountRecovery); execStatus != ExecSuccess { - return execStatus + if err := q.valNodeStatusChange(args.orgId, args.url, 4, InitiateAccountRecovery); err != nil { + return err } // check no pending approval items if q.checkPendingOp(q.permCtrl.permConfig.NwAdminOrg, pinterf) { - return ErrPendingApprovals + return types.ErrPendingApprovals } } else { // validate inputs - org id is valid, node is valid pending recovery state - if execStatus, _ := q.valNodeStatusChange(args.orgId, args.url, 5, ApproveNodeRecovery); execStatus != ExecSuccess { - return execStatus + if err := q.valNodeStatusChange(args.orgId, args.url, 5, ApproveNodeRecovery); err != nil { + return err } // check that there is a pending approval item for node recovery if !q.validatePendingOp(q.permCtrl.permConfig.NwAdminOrg, args.orgId, args.url, common.Address{}, 5, pinterf) { - return ErrNothingToApprove + return types.ErrNothingToApprove } } // if it is approval ensure that - return ExecSuccess + return nil } -func (q *QuorumControlsAPI) valRecoverAccount(args txArgs, pinterf *pbind.PermInterfaceSession, action PermAction) ExecStatus { +func (q *QuorumControlsAPI) valRecoverAccount(args txArgs, pinterf *pbind.PermInterfaceSession, action PermAction) error { // check if the caller is org admin if !q.isNetworkAdmin(args.txa.From) { - return ErrNotNetworkAdmin + return types.ErrNotNetworkAdmin } var opAction AccountUpdateAction @@ -1063,18 +1044,18 @@ func (q *QuorumControlsAPI) valRecoverAccount(args txArgs, pinterf *pbind.PermIn opAction = ApproveBlacklistedAccountRecovery } - if execStatus, err := q.valAccountStatusChange(args.orgId, args.acctId, action, opAction); err != nil { - return execStatus + if err := q.valAccountStatusChange(args.orgId, args.acctId, action, opAction); err != nil { + return err } if action == InitiateAccountRecovery && q.checkPendingOp(q.permCtrl.permConfig.NwAdminOrg, pinterf) { - return ErrPendingApprovals + return types.ErrPendingApprovals } if action == ApproveAccountRecovery && !q.validatePendingOp(q.permCtrl.permConfig.NwAdminOrg, args.orgId, "", args.acctId, 6, pinterf) { - return ErrNothingToApprove + return types.ErrNothingToApprove } - return ExecSuccess + return nil } // validateAccount validates the account and returns the wallet associated with that for signing the transaction diff --git a/permission/bind/accounts.go b/permission/bind/accounts.go index b6c73f0e1..2ca44957e 100644 --- a/permission/bind/accounts.go +++ b/permission/bind/accounts.go @@ -31,7 +31,7 @@ var ( const AcctManagerABI = "[{\"constant\":false,\"inputs\":[{\"name\":\"_account\",\"type\":\"address\"},{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_roleId\",\"type\":\"string\"},{\"name\":\"_adminRole\",\"type\":\"bool\"}],\"name\":\"assignAccountRole\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"removeExistingAdmin\",\"outputs\":[{\"name\":\"voterUpdate\",\"type\":\"bool\"},{\"name\":\"account\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"getAccountDetails\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"},{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"uint256\"},{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getNumberOfAccounts\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"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\":true,\"inputs\":[{\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"getAccountRole\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_account\",\"type\":\"address\"},{\"name\":\"_action\",\"type\":\"uint256\"}],\"name\":\"updateAccountStatus\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"orgAdminExists\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_aIndex\",\"type\":\"uint256\"}],\"name\":\"getAccountDetailsFromIndex\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"},{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"uint256\"},{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"addNewAdmin\",\"outputs\":[{\"name\":\"voterUpdate\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_nwAdminRole\",\"type\":\"string\"},{\"name\":\"_oAdminRole\",\"type\":\"string\"}],\"name\":\"setDefaults\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_account\",\"type\":\"address\"},{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_roleId\",\"type\":\"string\"},{\"name\":\"_status\",\"type\":\"uint256\"}],\"name\":\"assignAdminRole\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_account\",\"type\":\"address\"},{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_ultParent\",\"type\":\"string\"}],\"name\":\"checkOrgAdmin\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_permUpgradable\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_account\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_roleId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_orgAdmin\",\"type\":\"bool\"},{\"indexed\":false,\"name\":\"_status\",\"type\":\"uint256\"}],\"name\":\"AccountAccessModified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_account\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_roleId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_orgAdmin\",\"type\":\"bool\"}],\"name\":\"AccountAccessRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_account\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_status\",\"type\":\"uint256\"}],\"name\":\"AccountStatusChanged\",\"type\":\"event\"}]" // AcctManagerBin is the compiled bytecode used for deploying new contracts. -var AcctManagerBin = "0x608060405234801561001057600080fd5b50604051602080613a988339810180604052602081101561003057600080fd5b505160008054600160a060020a03909216600160a060020a0319909216919091179055613a36806100626000396000f3fe608060405234801561001057600080fd5b50600436106100d35760003560e060020a9004806384b7a84a11610090578063c214e5e51161006a578063c214e5e5146105fb578063cef7f6af14610674578063e3483a9d14610736578063e8b42bf414610808576100d3565b806384b7a84a146104b9578063950145cf14610538578063b2018568146105de576100d3565b8063143a5604146100d85780631d09dc93146101ae5780632aceb53414610241578063309e36ef146103705780636b568d761461038a57806381d66b231461041e575b600080fd5b6101ac600480360360808110156100ee57600080fd5b600160a060020a03823516919081019060408101602082013564010000000081111561011957600080fd5b82018360208201111561012b57600080fd5b8035906020019184600183028401116401000000008311171561014d57600080fd5b91939092909160208101903564010000000081111561016b57600080fd5b82018360208201111561017d57600080fd5b8035906020019184600183028401116401000000008311171561019f57600080fd5b9193509150351515610945565b005b61021e600480360360208110156101c457600080fd5b8101906020810181356401000000008111156101df57600080fd5b8201836020820111156101f157600080fd5b8035906020019184600183028401116401000000008311171561021357600080fd5b509092509050610d40565b604080519215158352600160a060020a0390911660208301528051918290030190f35b6102676004803603602081101561025757600080fd5b5035600160a060020a03166112dd565b6040518086600160a060020a0316600160a060020a03168152602001806020018060200185815260200184151515158152602001838103835287818151815260200191508051906020019080838360005b838110156102d05781810151838201526020016102b8565b50505050905090810190601f1680156102fd5780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b83811015610330578181015183820152602001610318565b50505050905090810190601f16801561035d5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b61037861154b565b60408051918252519081900360200190f35b61040a600480360360408110156103a057600080fd5b600160a060020a0382351691908101906040810160208201356401000000008111156103cb57600080fd5b8201836020820111156103dd57600080fd5b803590602001918460018302840111640100000000831117156103ff57600080fd5b509092509050611552565b604080519115158252519081900360200190f35b6104446004803603602081101561043457600080fd5b5035600160a060020a03166116ad565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561047e578181015183820152602001610466565b50505050905090810190601f1680156104ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101ac600480360360608110156104cf57600080fd5b8101906020810181356401000000008111156104ea57600080fd5b8201836020820111156104fc57600080fd5b8035906020019184600183028401116401000000008311171561051e57600080fd5b9193509150600160a060020a03813516906020013561182f565b61040a6004803603602081101561054e57600080fd5b81019060208101813564010000000081111561056957600080fd5b82018360208201111561057b57600080fd5b8035906020019184600183028401116401000000008311171561059d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611f5f945050505050565b610267600480360360208110156105f457600080fd5b50356120da565b61040a6004803603604081101561061157600080fd5b81019060208101813564010000000081111561062c57600080fd5b82018360208201111561063e57600080fd5b8035906020019184600183028401116401000000008311171561066057600080fd5b919350915035600160a060020a03166122c4565b6101ac6004803603604081101561068a57600080fd5b8101906020810181356401000000008111156106a557600080fd5b8201836020820111156106b757600080fd5b803590602001918460018302840111640100000000831117156106d957600080fd5b9193909290916020810190356401000000008111156106f757600080fd5b82018360208201111561070957600080fd5b8035906020019184600183028401116401000000008311171561072b57600080fd5b509092509050612913565b6101ac6004803603608081101561074c57600080fd5b600160a060020a03823516919081019060408101602082013564010000000081111561077757600080fd5b82018360208201111561078957600080fd5b803590602001918460018302840111640100000000831117156107ab57600080fd5b9193909290916020810190356401000000008111156107c957600080fd5b8201836020820111156107db57600080fd5b803590602001918460018302840111640100000000831117156107fd57600080fd5b9193509150356129fc565b61040a6004803603606081101561081e57600080fd5b600160a060020a03823516919081019060408101602082013564010000000081111561084957600080fd5b82018360208201111561085b57600080fd5b8035906020019184600183028401116401000000008311171561087d57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156108d057600080fd5b8201836020820111156108e257600080fd5b8035906020019184600183028401116401000000008311171561090457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612d6b945050505050565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561099557600080fd5b505afa1580156109a9573d6000803e3d6000fd5b505050506040513d60208110156109bf57600080fd5b5051600160a060020a03163314610a0e576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a9833981519152604482015290519081900360640190fd5b6040805160208082019081526004805460026000196101006001841615020190911604938301849052929091829160609091019084908015610a915780601f10610a6657610100808354040283529160200191610a91565b820191906000526020600020905b815481529060010190602001808311610a7457829003601f168201915b50509250505060405160208183030381529060405280519060200120838360405160200180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040528051906020012014158015610c7f57506040805160208082019081526005805460026000196101006001841615020190911604938301849052929091829160609091019084908015610b8c5780601f10610b6157610100808354040283529160200191610b8c565b820191906000526020600020905b815481529060010190602001808311610b6f57829003601f168201915b50509250505060405160208183030381529060405280519060200120838360405160200180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040526040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015610c34578181015183820152602001610c1c565b50505050905090810190601f168015610c615780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040528051906020012014155b1515610cbf5760405160e560020a62461bcd0281526004018080602001828103825260408152602001806139666040913960400191505060405180910390fd5b610d388686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250600292508791506132d29050565b505050505050565b60008054604080517f0e32cf9000000000000000000000000000000000000000000000000000000000815290518392600160a060020a031691630e32cf90916004808301926020929190829003018186803b158015610d9e57600080fd5b505afa158015610db2573d6000803e3d6000fd5b505050506040513d6020811015610dc857600080fd5b5051600160a060020a03163314610e17576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a9833981519152604482015290519081900360640190fd5b610e5684848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f5f92505050565b156112cf576000610ede60066000878760405160200180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120815260200190815260200160002060009054906101000a9004600160a060020a03166136b6565b90506006600182815481101515610ef157fe5b9060005260206000209060050201600301819055506000600182815481101515610f1757fe5b906000526020600020906005020160040160006101000a81548160ff0219169083151502179055507f68e62a03aeb0a125c2fc869eed72f2fca473680987bdd680c093a534e17cc776600182815481101515610f6f57fe5b600091825260209091206005909102015460018054600160a060020a039092169184908110610f9a57fe5b9060005260206000209060050201600101600184815481101515610fba57fe5b9060005260206000209060050201600201600185815481101515610fda57fe5b60009182526020909120600460059092020101546001805460ff909216918790811061100257fe5b60009182526020918290206003600590920201015460408051600160a060020a038816815284151560608201526080810183905260a0938101848152875460026000196101006001841615020190911604948201859052929390929183019060c0840190889080156110b55780601f1061108a576101008083540402835291602001916110b5565b820191906000526020600020905b81548152906001019060200180831161109857829003601f168201915b50508381038252865460026000196101006001841615020190911604808252602090910190879080156111295780601f106110fe57610100808354040283529160200191611129565b820191906000526020600020905b81548152906001019060200180831161110c57829003601f168201915b505097505050505050505060405180910390a160408051602080820190815260048054600260001961010060018416150201909116049383018490529290918291606090910190849080156111bf5780601f10611194576101008083540402835291602001916111bf565b820191906000526020600020905b8154815290600101906020018083116111a257829003601f168201915b505092505050604051602081830303815290604052805190602001206001828154811015156111ea57fe5b60009182526020918290206040805180850194855260026005909402909201830180546000196101006001831615020116939093049082018190529192918291606001908490801561127d5780601f106112525761010080835404028352916020019161127d565b820191906000526020600020905b81548152906001019060200180831161126057829003601f168201915b50509250505060405160208183030381529060405280519060200120146001828154811015156112a957fe5b6000918252602090912060059091020154909350600160a060020a031691506112d69050565b5060009050805b9250929050565b600160a060020a038116600090815260026020526040812054606090819083908190151561135a575050604080518082018252600481527f4e4f4e45000000000000000000000000000000000000000000000000000000006020808301919091528251908101909252600080835286955090935090915080611542565b6000611365876136b6565b905060018181548110151561137657fe5b600091825260209091206005909102015460018054600160a060020a0390921691839081106113a157fe5b90600052602060002090600502016001016001838154811015156113c157fe5b90600052602060002090600502016002016001848154811015156113e157fe5b90600052602060002090600502016003015460018581548110151561140257fe5b600091825260209182902060046005909202010154845460408051601f6002600019600186161561010002019094169390930492830185900485028101850190915281815260ff909216928691908301828280156114a15780601f10611476576101008083540402835291602001916114a1565b820191906000526020600020905b81548152906001019060200180831161148457829003601f168201915b5050865460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529599508894509250840190508282801561152f5780601f106115045761010080835404028352916020019161152f565b820191906000526020600020905b81548152906001019060200180831161151257829003601f168201915b5050505050925095509550955095509550505b91939590929450565b6001545b90565b600160a060020a0383166000908152600260205260408120541515611579575060016116a6565b6000611584856136b6565b9050838360405160200180806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509350505050604051602081830303815290604052805190602001206001828154811015156115e857fe5b906000526020600020906005020160010160405160200180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156116855780601f1061165a57610100808354040283529160200191611685565b820191906000526020600020905b81548152906001019060200180831161166857829003601f168201915b50509250505060405160208183030381529060405280519060200120149150505b9392505050565b600160a060020a0381166000908152600260205260409020546060901515611709575060408051808201909152600481527f4e4f4e4500000000000000000000000000000000000000000000000000000000602082015261182a565b6000611714836136b6565b905060018181548110151561172557fe5b90600052602060002090600502016003015460001415156117f357600180548290811061174e57fe5b600091825260209182902060026005909202018101805460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835291929091908301828280156117e65780601f106117bb576101008083540402835291602001916117e6565b820191906000526020600020905b8154815290600101906020018083116117c957829003601f168201915b505050505091505061182a565b505060408051808201909152600481527f4e4f4e450000000000000000000000000000000000000000000000000000000060208201525b919050565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561187f57600080fd5b505afa158015611893573d6000803e3d6000fd5b505050506040513d60208110156118a957600080fd5b5051600160a060020a031633146118f8576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a9833981519152604482015290519081900360640190fd5b83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250600160a060020a0387168152600260205260409020548693501515915061199d9050576040805160e560020a62461bcd02815260206004820152601760248201527f6163636f756e7420646f6573206e6f7420657869737473000000000000000000604482015290519081900360640190fd5b816040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156119de5781810151838201526020016119c6565b50505050905090810190601f168015611a0b5780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001206001611a31836136b6565b81548110611a3b57fe5b90600052602060002090600502016001016040516020018080602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015611ad85780601f10611aad57610100808354040283529160200191611ad8565b820191906000526020600020905b815481529060010190602001808311611abb57829003601f168201915b50509250505060405160208183030381529060405280519060200120141515611b4b576040805160e560020a62461bcd02815260206004820152601860248201527f6163636f756e7420696e20646966666572656e74206f72670000000000000000604482015290519081900360640190fd5b600083118015611b5b5750600683105b1515611bb1576040805160e560020a62461bcd02815260206004820152601d60248201527f696e76616c696420737461747573206368616e67652072657175657374000000604482015290519081900360640190fd5b611bff8487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602081019091529081529250612d6b915050565b151560011415611c435760405160e560020a62461bcd0281526004018080602001828103825260318152602001806139da6031913960400191505060405180910390fd5b60008360011415611cc0576001611c59866136b6565b81548110611c6357fe5b9060005260206000209060050201600301546002141515611cb85760405160e560020a62461bcd0281526004018080602001828103825260398152602001806139056039913960400191505060405180910390fd5b506004611ea9565b8360021415611d3b576001611cd4866136b6565b81548110611cde57fe5b9060005260206000209060050201600301546004141515611d335760405160e560020a62461bcd02815260040180806020018281038252603c8152602001806138c9603c913960400191505060405180910390fd5b506002611ea9565b8360031415611db7576001611d4f866136b6565b81548110611d5957fe5b906000526020600020906005020160030154600514151515611daf5760405160e560020a62461bcd0281526004018080602001828103825260388152602001806138716038913960400191505060405180910390fd5b506005611ea9565b8360041415611e32576001611dcb866136b6565b81548110611dd557fe5b9060005260206000209060050201600301546005141515611e2a5760405160e560020a62461bcd0281526004018080602001828103825260348152602001806139a66034913960400191505060405180910390fd5b506007611ea9565b8360051415611ea9576001611e46866136b6565b81548110611e5057fe5b9060005260206000209060050201600301546007141515611ea55760405160e560020a62461bcd0281526004018080602001828103825260388152602001806138396038913960400191505060405180910390fd5b5060025b806001611eb5876136b6565b81548110611ebf57fe5b9060005260206000209060050201600301819055507f36b0ea38154dec5e98b6bf928b971a9db5e8cd4b6946350e9e43fb9848c70b25858888846040518085600160a060020a0316600160a060020a03168152602001806020018381526020018281038252858582818152602001925080828437600083820152604051601f909101601f191690920182900397509095505050505050a150505050505050565b600080600160a060020a031660066000846040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015611fb0578181015183820152602001611f98565b50505050905090810190601f168015611fdd5780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208652908501959095525050500160002054600160a060020a0316146120d257600060066000846040516020018080602001828103825283818151815260200191508051906020019080838360005b8381101561205c578181015183820152602001612044565b50505050905090810190601f1680156120895780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208652908501959095525050500160002054600160a060020a031690506120c7816136d5565b60021491505061182a565b506000919050565b60006060806000806001868154811015156120f157fe5b600091825260209091206005909102015460018054600160a060020a03909216918890811061211c57fe5b906000526020600020906005020160010160018881548110151561213c57fe5b906000526020600020906005020160020160018981548110151561215c57fe5b90600052602060002090600502016003015460018a81548110151561217d57fe5b600091825260209182902060046005909202010154845460408051601f6002600019600186161561010002019094169390930492830185900485028101850190915281815260ff9092169286919083018282801561221c5780601f106121f15761010080835404028352916020019161221c565b820191906000526020600020905b8154815290600101906020018083116121ff57829003601f168201915b5050865460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959950889450925084019050828280156122aa5780601f1061227f576101008083540402835291602001916122aa565b820191906000526020600020905b81548152906001019060200180831161228d57829003601f168201915b505050505092509450945094509450945091939590929450565b60008060009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561231657600080fd5b505afa15801561232a573d6000803e3d6000fd5b505050506040513d602081101561234057600080fd5b5051600160a060020a0316331461238f576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a9833981519152604482015290519081900360640190fd5b606061239a836116ad565b905060006123a7846136d5565b905060006123b4856136b6565b604080516020808201908152600580546002600019610100600184161502019091160493830184905293945091829160600190849080156124365780601f1061240b57610100808354040283529160200191612436565b820191906000526020600020905b81548152906001019060200180831161241957829003601f168201915b50509250505060405160208183030381529060405280519060200120836040516020018080602001828103825283818151815260200191508051906020019080838360005b8381101561249357818101518382015260200161247b565b50505050905090810190601f1680156124c05780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001201480156124e85750816001145b15612578578460066000898960405160200180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120815260200190815260200160002060006101000a815481600160a060020a030219169083600160a060020a031602179055505b600260018281548110151561258957fe5b906000526020600020906005020160030181905550600180828154811015156125ae57fe5b906000526020600020906005020160040160006101000a81548160ff0219169083151502179055507f68e62a03aeb0a125c2fc869eed72f2fca473680987bdd680c093a534e17cc7768560018381548110151561260757fe5b906000526020600020906005020160010160018481548110151561262757fe5b906000526020600020906005020160020160018581548110151561264757fe5b60009182526020909120600460059092020101546001805460ff909216918790811061266f57fe5b60009182526020918290206003600590920201015460408051600160a060020a038816815284151560608201526080810183905260a0938101848152875460026000196101006001841615020190911604948201859052929390929183019060c0840190889080156127225780601f106126f757610100808354040283529160200191612722565b820191906000526020600020905b81548152906001019060200180831161270557829003601f168201915b50508381038252865460026000196101006001841615020190911604808252602090910190879080156127965780601f1061276b57610100808354040283529160200191612796565b820191906000526020600020905b81548152906001019060200180831161277957829003601f168201915b505097505050505050505060405180910390a1604080516020808201908152600480546002600019610100600184161502019091160493830184905292909182916060909101908490801561282c5780601f106128015761010080835404028352916020019161282c565b820191906000526020600020905b81548152906001019060200180831161280f57829003601f168201915b5050925050506040516020818303038152906040528051906020012060018281548110151561285757fe5b6000918252602091829020604080518085019485526002600590940290920183018054600019610100600183161502011693909304908201819052919291829160600190849080156128ea5780601f106128bf576101008083540402835291602001916128ea565b820191906000526020600020905b8154815290600101906020018083116128cd57829003601f168201915b505092505050604051602081830303815290604052805190602001201493505050509392505050565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561296357600080fd5b505afa158015612977573d6000803e3d6000fd5b505050506040513d602081101561298d57600080fd5b5051600160a060020a031633146129dc576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a9833981519152604482015290519081900360640190fd5b6129e860048585613732565b506129f560058383613732565b5050505050565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b158015612a4c57600080fd5b505afa158015612a60573d6000803e3d6000fd5b505050506040513d6020811015612a7657600080fd5b5051600160a060020a03163314612ac5576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a9833981519152604482015290519081900360640190fd5b6040805160208082019081526005805460026000196101006001841615020190911604938301849052929091829160609091019084908015612b485780601f10612b1d57610100808354040283529160200191612b48565b820191906000526020600020905b815481529060010190602001808311612b2b57829003601f168201915b50509250505060405160208183030381529060405280519060200120838360405160200180806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509350505050604051602081830303815290604052805190602001201480612cb257506040805160208082019081526004805460026000196101006001841615020190911604938301849052929091829160609091019084908015612c415780601f10612c1657610100808354040283529160200191612c41565b820191906000526020600020905b815481529060010190602001808311612c2457829003601f168201915b50509250505060405160208183030381529060405280519060200120838360405160200180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120145b1515612cf25760405160e560020a62461bcd02815260040180806020018281038252602881526020018061393e6028913960400191505060405180910390fd5b610d388686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250879250600191506132d29050565b60408051602080820190815260048054600260001961010060018416150201909116049383018490526000939092829160609091019084908015612df05780601f10612dc557610100808354040283529160200191612df0565b820191906000526020600020905b815481529060010190602001808311612dd357829003601f168201915b50509250505060405160208183030381529060405280519060200120612e15856116ad565b6040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015612e55578181015183820152602001612e3d565b50505050905090810190601f168015612e825780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001201415613163576000612eae856136b6565b9050836040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015612ef1578181015183820152602001612ed9565b50505050905090810190601f168015612f1e5780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120600182815481101515612f4857fe5b90600052602060002090600502016001016040516020018080602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015612fe55780601f10612fba57610100808354040283529160200191612fe5565b820191906000526020600020905b815481529060010190602001808311612fc857829003601f168201915b50509250505060405160208183030381529060405280519060200120148061315b5750826040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015613049578181015183820152602001613031565b50505050905090810190601f1680156130765780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001206001828154811015156130a057fe5b9060005260206000209060050201600101604051602001808060200182810382528381815460018160011615610100020316600290048152602001915080546001816001161561010002031660029004801561313d5780601f106131125761010080835404028352916020019161313d565b820191906000526020600020905b81548152906001019060200180831161312057829003601f168201915b50509250505060405160208183030381529060405280519060200120145b9150506116a6565b83600160a060020a031660066000856040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156131b257818101518382015260200161319a565b50505050905090810190601f1680156131df5780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208652908501959095525050500160002054600160a060020a031614806132ca575083600160a060020a031660066000846040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015613268578181015183820152602001613250565b50505050905090810190601f1680156132955780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208652908501959095525050500160002054600160a060020a0316145b949350505050565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561332257600080fd5b505afa158015613336573d6000803e3d6000fd5b505050506040513d602081101561334c57600080fd5b5051600160a060020a0316331461339b576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a9833981519152604482015290519081900360640190fd5b60006133a6866136b6565b600160a060020a0387166000908152600260205260409020549091501561345857836001828154811015156133d757fe5b906000526020600020906005020160020190805190602001906133fb9291906137b0565b508260018281548110151561340c57fe5b9060005260206000209060050201600301819055508160018281548110151561343157fe5b60009182526020909120600590910201600401805460ff1916911515919091179055613580565b60038054600190810191829055600160a060020a03888116600081815260026020908152604080832096909655855160a0810187529283528281018b81529583018a905260608301899052871515608084015284548086018087559590925282517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf66005909302928301805473ffffffffffffffffffffffffffffffffffffffff191691909516178455945180519495929461353d937fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf79093019291909101906137b0565b50604082015180516135599160028401916020909101906137b0565b50606082015160038201556080909101516004909101805460ff1916911515919091179055505b7f68e62a03aeb0a125c2fc869eed72f2fca473680987bdd680c093a534e17cc77686868685876040518086600160a060020a0316600160a060020a03168152602001806020018060200185151515158152602001848152602001838103835287818151815260200191508051906020019080838360005b8381101561360f5781810151838201526020016135f7565b50505050905090810190601f16801561363c5780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b8381101561366f578181015183820152602001613657565b50505050905090810190601f16801561369c5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a1505050505050565b600160a060020a03166000908152600260205260409020546000190190565b600160a060020a03811660009081526002602052604081205415156136fc5750600061182a565b6000613707836136b6565b905060018181548110151561371857fe5b906000526020600020906005020160030154915050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106137735782800160ff198235161785556137a0565b828001600101855582156137a0579182015b828111156137a0578235825591602001919060010190613785565b506137ac92915061381e565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106137f157805160ff19168380011785556137a0565b828001600101855582156137a0579182015b828111156137a0578251825591602001919060010190613803565b61154f91905b808211156137ac576000815560010161382456fe6163636f756e74207265636f76657279206e6f7420696e697469617465642e206f7065726174696f6e2063616e6e6f7420626520646f6e656163636f756e7420697320616c726561647920626c61636b6c69737465642e206f7065726174696f6e2063616e6e6f7420626520646f6e65696e76616c69642063616c6c65720000000000000000000000000000000000006163636f756e74206973206e6f7420696e2073757370656e646564207374617475732e206f7065726174696f6e2063616e6e6f7420626520646f6e656163636f756e74206973206e6f7420696e20616374697665207374617475732e206f7065726174696f6e2063616e6e6f7420626520646f6e6563616e2062652063616c6c656420746f2061737369676e2061646d696e20726f6c6573206f6e6c7963616e6e6f742062652063616c6c65642066726f2061737369676e696e67206f72672061646d696e20616e64206e6574776f726b2061646d696e20726f6c65736163636f756e74206973206e6f7420626c61636b6c69737465642e206f7065726174696f6e2063616e6e6f7420626520646f6e65737461747573206368616e6765206e6f7420706f737369626c6520666f72206f72672061646d696e206163636f756e7473a165627a7a723058201c5a325c0aae4af718809d85eb2233b1f7a8e746089ae0c33fecc7b57673bd190029" +var AcctManagerBin = "0x608060405234801561001057600080fd5b50604051602080613a988339810180604052602081101561003057600080fd5b505160008054600160a060020a03909216600160a060020a0319909216919091179055613a36806100626000396000f3fe608060405234801561001057600080fd5b50600436106100d35760003560e060020a9004806384b7a84a11610090578063c214e5e51161006a578063c214e5e5146105fb578063cef7f6af14610674578063e3483a9d14610736578063e8b42bf414610808576100d3565b806384b7a84a146104b9578063950145cf14610538578063b2018568146105de576100d3565b8063143a5604146100d85780631d09dc93146101ae5780632aceb53414610241578063309e36ef146103705780636b568d761461038a57806381d66b231461041e575b600080fd5b6101ac600480360360808110156100ee57600080fd5b600160a060020a03823516919081019060408101602082013564010000000081111561011957600080fd5b82018360208201111561012b57600080fd5b8035906020019184600183028401116401000000008311171561014d57600080fd5b91939092909160208101903564010000000081111561016b57600080fd5b82018360208201111561017d57600080fd5b8035906020019184600183028401116401000000008311171561019f57600080fd5b9193509150351515610945565b005b61021e600480360360208110156101c457600080fd5b8101906020810181356401000000008111156101df57600080fd5b8201836020820111156101f157600080fd5b8035906020019184600183028401116401000000008311171561021357600080fd5b509092509050610d40565b604080519215158352600160a060020a0390911660208301528051918290030190f35b6102676004803603602081101561025757600080fd5b5035600160a060020a03166112dd565b6040518086600160a060020a0316600160a060020a03168152602001806020018060200185815260200184151515158152602001838103835287818151815260200191508051906020019080838360005b838110156102d05781810151838201526020016102b8565b50505050905090810190601f1680156102fd5780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b83811015610330578181015183820152602001610318565b50505050905090810190601f16801561035d5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b61037861154b565b60408051918252519081900360200190f35b61040a600480360360408110156103a057600080fd5b600160a060020a0382351691908101906040810160208201356401000000008111156103cb57600080fd5b8201836020820111156103dd57600080fd5b803590602001918460018302840111640100000000831117156103ff57600080fd5b509092509050611552565b604080519115158252519081900360200190f35b6104446004803603602081101561043457600080fd5b5035600160a060020a03166116ad565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561047e578181015183820152602001610466565b50505050905090810190601f1680156104ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101ac600480360360608110156104cf57600080fd5b8101906020810181356401000000008111156104ea57600080fd5b8201836020820111156104fc57600080fd5b8035906020019184600183028401116401000000008311171561051e57600080fd5b9193509150600160a060020a03813516906020013561182f565b61040a6004803603602081101561054e57600080fd5b81019060208101813564010000000081111561056957600080fd5b82018360208201111561057b57600080fd5b8035906020019184600183028401116401000000008311171561059d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611f5f945050505050565b610267600480360360208110156105f457600080fd5b50356120da565b61040a6004803603604081101561061157600080fd5b81019060208101813564010000000081111561062c57600080fd5b82018360208201111561063e57600080fd5b8035906020019184600183028401116401000000008311171561066057600080fd5b919350915035600160a060020a03166122c4565b6101ac6004803603604081101561068a57600080fd5b8101906020810181356401000000008111156106a557600080fd5b8201836020820111156106b757600080fd5b803590602001918460018302840111640100000000831117156106d957600080fd5b9193909290916020810190356401000000008111156106f757600080fd5b82018360208201111561070957600080fd5b8035906020019184600183028401116401000000008311171561072b57600080fd5b509092509050612913565b6101ac6004803603608081101561074c57600080fd5b600160a060020a03823516919081019060408101602082013564010000000081111561077757600080fd5b82018360208201111561078957600080fd5b803590602001918460018302840111640100000000831117156107ab57600080fd5b9193909290916020810190356401000000008111156107c957600080fd5b8201836020820111156107db57600080fd5b803590602001918460018302840111640100000000831117156107fd57600080fd5b9193509150356129fc565b61040a6004803603606081101561081e57600080fd5b600160a060020a03823516919081019060408101602082013564010000000081111561084957600080fd5b82018360208201111561085b57600080fd5b8035906020019184600183028401116401000000008311171561087d57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156108d057600080fd5b8201836020820111156108e257600080fd5b8035906020019184600183028401116401000000008311171561090457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612d6b945050505050565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561099557600080fd5b505afa1580156109a9573d6000803e3d6000fd5b505050506040513d60208110156109bf57600080fd5b5051600160a060020a03163314610a0e576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a9833981519152604482015290519081900360640190fd5b6040805160208082019081526004805460026000196101006001841615020190911604938301849052929091829160609091019084908015610a915780601f10610a6657610100808354040283529160200191610a91565b820191906000526020600020905b815481529060010190602001808311610a7457829003601f168201915b50509250505060405160208183030381529060405280519060200120838360405160200180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040528051906020012014158015610c7f57506040805160208082019081526005805460026000196101006001841615020190911604938301849052929091829160609091019084908015610b8c5780601f10610b6157610100808354040283529160200191610b8c565b820191906000526020600020905b815481529060010190602001808311610b6f57829003601f168201915b50509250505060405160208183030381529060405280519060200120838360405160200180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040526040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015610c34578181015183820152602001610c1c565b50505050905090810190601f168015610c615780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040528051906020012014155b1515610cbf5760405160e560020a62461bcd0281526004018080602001828103825260408152602001806139666040913960400191505060405180910390fd5b610d388686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250600292508791506132d29050565b505050505050565b60008054604080517f0e32cf9000000000000000000000000000000000000000000000000000000000815290518392600160a060020a031691630e32cf90916004808301926020929190829003018186803b158015610d9e57600080fd5b505afa158015610db2573d6000803e3d6000fd5b505050506040513d6020811015610dc857600080fd5b5051600160a060020a03163314610e17576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a9833981519152604482015290519081900360640190fd5b610e5684848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f5f92505050565b156112cf576000610ede60066000878760405160200180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120815260200190815260200160002060009054906101000a9004600160a060020a03166136b6565b90506006600182815481101515610ef157fe5b9060005260206000209060050201600301819055506000600182815481101515610f1757fe5b906000526020600020906005020160040160006101000a81548160ff0219169083151502179055507f68e62a03aeb0a125c2fc869eed72f2fca473680987bdd680c093a534e17cc776600182815481101515610f6f57fe5b600091825260209091206005909102015460018054600160a060020a039092169184908110610f9a57fe5b9060005260206000209060050201600101600184815481101515610fba57fe5b9060005260206000209060050201600201600185815481101515610fda57fe5b60009182526020909120600460059092020101546001805460ff909216918790811061100257fe5b60009182526020918290206003600590920201015460408051600160a060020a038816815284151560608201526080810183905260a0938101848152875460026000196101006001841615020190911604948201859052929390929183019060c0840190889080156110b55780601f1061108a576101008083540402835291602001916110b5565b820191906000526020600020905b81548152906001019060200180831161109857829003601f168201915b50508381038252865460026000196101006001841615020190911604808252602090910190879080156111295780601f106110fe57610100808354040283529160200191611129565b820191906000526020600020905b81548152906001019060200180831161110c57829003601f168201915b505097505050505050505060405180910390a160408051602080820190815260048054600260001961010060018416150201909116049383018490529290918291606090910190849080156111bf5780601f10611194576101008083540402835291602001916111bf565b820191906000526020600020905b8154815290600101906020018083116111a257829003601f168201915b505092505050604051602081830303815290604052805190602001206001828154811015156111ea57fe5b60009182526020918290206040805180850194855260026005909402909201830180546000196101006001831615020116939093049082018190529192918291606001908490801561127d5780601f106112525761010080835404028352916020019161127d565b820191906000526020600020905b81548152906001019060200180831161126057829003601f168201915b50509250505060405160208183030381529060405280519060200120146001828154811015156112a957fe5b6000918252602090912060059091020154909350600160a060020a031691506112d69050565b5060009050805b9250929050565b600160a060020a038116600090815260026020526040812054606090819083908190151561135a575050604080518082018252600481527f4e4f4e45000000000000000000000000000000000000000000000000000000006020808301919091528251908101909252600080835286955090935090915080611542565b6000611365876136b6565b905060018181548110151561137657fe5b600091825260209091206005909102015460018054600160a060020a0390921691839081106113a157fe5b90600052602060002090600502016001016001838154811015156113c157fe5b90600052602060002090600502016002016001848154811015156113e157fe5b90600052602060002090600502016003015460018581548110151561140257fe5b600091825260209182902060046005909202010154845460408051601f6002600019600186161561010002019094169390930492830185900485028101850190915281815260ff909216928691908301828280156114a15780601f10611476576101008083540402835291602001916114a1565b820191906000526020600020905b81548152906001019060200180831161148457829003601f168201915b5050865460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529599508894509250840190508282801561152f5780601f106115045761010080835404028352916020019161152f565b820191906000526020600020905b81548152906001019060200180831161151257829003601f168201915b5050505050925095509550955095509550505b91939590929450565b6001545b90565b600160a060020a0383166000908152600260205260408120541515611579575060016116a6565b6000611584856136b6565b9050838360405160200180806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509350505050604051602081830303815290604052805190602001206001828154811015156115e857fe5b906000526020600020906005020160010160405160200180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156116855780601f1061165a57610100808354040283529160200191611685565b820191906000526020600020905b81548152906001019060200180831161166857829003601f168201915b50509250505060405160208183030381529060405280519060200120149150505b9392505050565b600160a060020a0381166000908152600260205260409020546060901515611709575060408051808201909152600481527f4e4f4e4500000000000000000000000000000000000000000000000000000000602082015261182a565b6000611714836136b6565b905060018181548110151561172557fe5b90600052602060002090600502016003015460001415156117f357600180548290811061174e57fe5b600091825260209182902060026005909202018101805460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835291929091908301828280156117e65780601f106117bb576101008083540402835291602001916117e6565b820191906000526020600020905b8154815290600101906020018083116117c957829003601f168201915b505050505091505061182a565b505060408051808201909152600481527f4e4f4e450000000000000000000000000000000000000000000000000000000060208201525b919050565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561187f57600080fd5b505afa158015611893573d6000803e3d6000fd5b505050506040513d60208110156118a957600080fd5b5051600160a060020a031633146118f8576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a9833981519152604482015290519081900360640190fd5b83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250600160a060020a0387168152600260205260409020548693501515915061199d9050576040805160e560020a62461bcd02815260206004820152601760248201527f6163636f756e7420646f6573206e6f7420657869737473000000000000000000604482015290519081900360640190fd5b816040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156119de5781810151838201526020016119c6565b50505050905090810190601f168015611a0b5780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001206001611a31836136b6565b81548110611a3b57fe5b90600052602060002090600502016001016040516020018080602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015611ad85780601f10611aad57610100808354040283529160200191611ad8565b820191906000526020600020905b815481529060010190602001808311611abb57829003601f168201915b50509250505060405160208183030381529060405280519060200120141515611b4b576040805160e560020a62461bcd02815260206004820152601860248201527f6163636f756e7420696e20646966666572656e74206f72670000000000000000604482015290519081900360640190fd5b600083118015611b5b5750600683105b1515611bb1576040805160e560020a62461bcd02815260206004820152601d60248201527f696e76616c696420737461747573206368616e67652072657175657374000000604482015290519081900360640190fd5b611bff8487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602081019091529081529250612d6b915050565b151560011415611c435760405160e560020a62461bcd0281526004018080602001828103825260318152602001806139da6031913960400191505060405180910390fd5b60008360011415611cc0576001611c59866136b6565b81548110611c6357fe5b9060005260206000209060050201600301546002141515611cb85760405160e560020a62461bcd0281526004018080602001828103825260398152602001806139056039913960400191505060405180910390fd5b506004611ea9565b8360021415611d3b576001611cd4866136b6565b81548110611cde57fe5b9060005260206000209060050201600301546004141515611d335760405160e560020a62461bcd02815260040180806020018281038252603c8152602001806138c9603c913960400191505060405180910390fd5b506002611ea9565b8360031415611db7576001611d4f866136b6565b81548110611d5957fe5b906000526020600020906005020160030154600514151515611daf5760405160e560020a62461bcd0281526004018080602001828103825260388152602001806138716038913960400191505060405180910390fd5b506005611ea9565b8360041415611e32576001611dcb866136b6565b81548110611dd557fe5b9060005260206000209060050201600301546005141515611e2a5760405160e560020a62461bcd0281526004018080602001828103825260348152602001806139a66034913960400191505060405180910390fd5b506007611ea9565b8360051415611ea9576001611e46866136b6565b81548110611e5057fe5b9060005260206000209060050201600301546007141515611ea55760405160e560020a62461bcd0281526004018080602001828103825260388152602001806138396038913960400191505060405180910390fd5b5060025b806001611eb5876136b6565b81548110611ebf57fe5b9060005260206000209060050201600301819055507f36b0ea38154dec5e98b6bf928b971a9db5e8cd4b6946350e9e43fb9848c70b25858888846040518085600160a060020a0316600160a060020a03168152602001806020018381526020018281038252858582818152602001925080828437600083820152604051601f909101601f191690920182900397509095505050505050a150505050505050565b600080600160a060020a031660066000846040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015611fb0578181015183820152602001611f98565b50505050905090810190601f168015611fdd5780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208652908501959095525050500160002054600160a060020a0316146120d257600060066000846040516020018080602001828103825283818151815260200191508051906020019080838360005b8381101561205c578181015183820152602001612044565b50505050905090810190601f1680156120895780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208652908501959095525050500160002054600160a060020a031690506120c7816136d5565b60021491505061182a565b506000919050565b60006060806000806001868154811015156120f157fe5b600091825260209091206005909102015460018054600160a060020a03909216918890811061211c57fe5b906000526020600020906005020160010160018881548110151561213c57fe5b906000526020600020906005020160020160018981548110151561215c57fe5b90600052602060002090600502016003015460018a81548110151561217d57fe5b600091825260209182902060046005909202010154845460408051601f6002600019600186161561010002019094169390930492830185900485028101850190915281815260ff9092169286919083018282801561221c5780601f106121f15761010080835404028352916020019161221c565b820191906000526020600020905b8154815290600101906020018083116121ff57829003601f168201915b5050865460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959950889450925084019050828280156122aa5780601f1061227f576101008083540402835291602001916122aa565b820191906000526020600020905b81548152906001019060200180831161228d57829003601f168201915b505050505092509450945094509450945091939590929450565b60008060009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561231657600080fd5b505afa15801561232a573d6000803e3d6000fd5b505050506040513d602081101561234057600080fd5b5051600160a060020a0316331461238f576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a9833981519152604482015290519081900360640190fd5b606061239a836116ad565b905060006123a7846136d5565b905060006123b4856136b6565b604080516020808201908152600580546002600019610100600184161502019091160493830184905293945091829160600190849080156124365780601f1061240b57610100808354040283529160200191612436565b820191906000526020600020905b81548152906001019060200180831161241957829003601f168201915b50509250505060405160208183030381529060405280519060200120836040516020018080602001828103825283818151815260200191508051906020019080838360005b8381101561249357818101518382015260200161247b565b50505050905090810190601f1680156124c05780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001201480156124e85750816001145b15612578578460066000898960405160200180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120815260200190815260200160002060006101000a815481600160a060020a030219169083600160a060020a031602179055505b600260018281548110151561258957fe5b906000526020600020906005020160030181905550600180828154811015156125ae57fe5b906000526020600020906005020160040160006101000a81548160ff0219169083151502179055507f68e62a03aeb0a125c2fc869eed72f2fca473680987bdd680c093a534e17cc7768560018381548110151561260757fe5b906000526020600020906005020160010160018481548110151561262757fe5b906000526020600020906005020160020160018581548110151561264757fe5b60009182526020909120600460059092020101546001805460ff909216918790811061266f57fe5b60009182526020918290206003600590920201015460408051600160a060020a038816815284151560608201526080810183905260a0938101848152875460026000196101006001841615020190911604948201859052929390929183019060c0840190889080156127225780601f106126f757610100808354040283529160200191612722565b820191906000526020600020905b81548152906001019060200180831161270557829003601f168201915b50508381038252865460026000196101006001841615020190911604808252602090910190879080156127965780601f1061276b57610100808354040283529160200191612796565b820191906000526020600020905b81548152906001019060200180831161277957829003601f168201915b505097505050505050505060405180910390a1604080516020808201908152600480546002600019610100600184161502019091160493830184905292909182916060909101908490801561282c5780601f106128015761010080835404028352916020019161282c565b820191906000526020600020905b81548152906001019060200180831161280f57829003601f168201915b5050925050506040516020818303038152906040528051906020012060018281548110151561285757fe5b6000918252602091829020604080518085019485526002600590940290920183018054600019610100600183161502011693909304908201819052919291829160600190849080156128ea5780601f106128bf576101008083540402835291602001916128ea565b820191906000526020600020905b8154815290600101906020018083116128cd57829003601f168201915b505092505050604051602081830303815290604052805190602001201493505050509392505050565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561296357600080fd5b505afa158015612977573d6000803e3d6000fd5b505050506040513d602081101561298d57600080fd5b5051600160a060020a031633146129dc576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a9833981519152604482015290519081900360640190fd5b6129e860048585613732565b506129f560058383613732565b5050505050565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b158015612a4c57600080fd5b505afa158015612a60573d6000803e3d6000fd5b505050506040513d6020811015612a7657600080fd5b5051600160a060020a03163314612ac5576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a9833981519152604482015290519081900360640190fd5b6040805160208082019081526005805460026000196101006001841615020190911604938301849052929091829160609091019084908015612b485780601f10612b1d57610100808354040283529160200191612b48565b820191906000526020600020905b815481529060010190602001808311612b2b57829003601f168201915b50509250505060405160208183030381529060405280519060200120838360405160200180806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509350505050604051602081830303815290604052805190602001201480612cb257506040805160208082019081526004805460026000196101006001841615020190911604938301849052929091829160609091019084908015612c415780601f10612c1657610100808354040283529160200191612c41565b820191906000526020600020905b815481529060010190602001808311612c2457829003601f168201915b50509250505060405160208183030381529060405280519060200120838360405160200180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120145b1515612cf25760405160e560020a62461bcd02815260040180806020018281038252602881526020018061393e6028913960400191505060405180910390fd5b610d388686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250879250600191506132d29050565b60408051602080820190815260048054600260001961010060018416150201909116049383018490526000939092829160609091019084908015612df05780601f10612dc557610100808354040283529160200191612df0565b820191906000526020600020905b815481529060010190602001808311612dd357829003601f168201915b50509250505060405160208183030381529060405280519060200120612e15856116ad565b6040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015612e55578181015183820152602001612e3d565b50505050905090810190601f168015612e825780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001201415613163576000612eae856136b6565b9050836040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015612ef1578181015183820152602001612ed9565b50505050905090810190601f168015612f1e5780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120600182815481101515612f4857fe5b90600052602060002090600502016001016040516020018080602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015612fe55780601f10612fba57610100808354040283529160200191612fe5565b820191906000526020600020905b815481529060010190602001808311612fc857829003601f168201915b50509250505060405160208183030381529060405280519060200120148061315b5750826040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015613049578181015183820152602001613031565b50505050905090810190601f1680156130765780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001206001828154811015156130a057fe5b9060005260206000209060050201600101604051602001808060200182810382528381815460018160011615610100020316600290048152602001915080546001816001161561010002031660029004801561313d5780601f106131125761010080835404028352916020019161313d565b820191906000526020600020905b81548152906001019060200180831161312057829003601f168201915b50509250505060405160208183030381529060405280519060200120145b9150506116a6565b83600160a060020a031660066000856040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156131b257818101518382015260200161319a565b50505050905090810190601f1680156131df5780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208652908501959095525050500160002054600160a060020a031614806132ca575083600160a060020a031660066000846040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015613268578181015183820152602001613250565b50505050905090810190601f1680156132955780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208652908501959095525050500160002054600160a060020a0316145b949350505050565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561332257600080fd5b505afa158015613336573d6000803e3d6000fd5b505050506040513d602081101561334c57600080fd5b5051600160a060020a0316331461339b576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a9833981519152604482015290519081900360640190fd5b60006133a6866136b6565b600160a060020a0387166000908152600260205260409020549091501561345857836001828154811015156133d757fe5b906000526020600020906005020160020190805190602001906133fb9291906137b0565b508260018281548110151561340c57fe5b9060005260206000209060050201600301819055508160018281548110151561343157fe5b60009182526020909120600590910201600401805460ff1916911515919091179055613580565b60038054600190810191829055600160a060020a03888116600081815260026020908152604080832096909655855160a0810187529283528281018b81529583018a905260608301899052871515608084015284548086018087559590925282517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf66005909302928301805473ffffffffffffffffffffffffffffffffffffffff191691909516178455945180519495929461353d937fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf79093019291909101906137b0565b50604082015180516135599160028401916020909101906137b0565b50606082015160038201556080909101516004909101805460ff1916911515919091179055505b7f68e62a03aeb0a125c2fc869eed72f2fca473680987bdd680c093a534e17cc77686868685876040518086600160a060020a0316600160a060020a03168152602001806020018060200185151515158152602001848152602001838103835287818151815260200191508051906020019080838360005b8381101561360f5781810151838201526020016135f7565b50505050905090810190601f16801561363c5780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b8381101561366f578181015183820152602001613657565b50505050905090810190601f16801561369c5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a1505050505050565b600160a060020a03166000908152600260205260409020546000190190565b600160a060020a03811660009081526002602052604081205415156136fc5750600061182a565b6000613707836136b6565b905060018181548110151561371857fe5b906000526020600020906005020160030154915050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106137735782800160ff198235161785556137a0565b828001600101855582156137a0579182015b828111156137a0578235825591602001919060010190613785565b506137ac92915061381e565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106137f157805160ff19168380011785556137a0565b828001600101855582156137a0579182015b828111156137a0578251825591602001919060010190613803565b61154f91905b808211156137ac576000815560010161382456fe6163636f756e74207265636f76657279206e6f7420696e697469617465642e206f7065726174696f6e2063616e6e6f7420626520646f6e656163636f756e7420697320616c726561647920626c61636b6c69737465642e206f7065726174696f6e2063616e6e6f7420626520646f6e65696e76616c69642063616c6c65720000000000000000000000000000000000006163636f756e74206973206e6f7420696e2073757370656e646564207374617475732e206f7065726174696f6e2063616e6e6f7420626520646f6e656163636f756e74206973206e6f7420696e20616374697665207374617475732e206f7065726174696f6e2063616e6e6f7420626520646f6e6563616e2062652063616c6c656420746f2061737369676e2061646d696e20726f6c6573206f6e6c7963616e6e6f742062652063616c6c65642066726f2061737369676e696e67206f72672061646d696e20616e64206e6574776f726b2061646d696e20726f6c65736163636f756e74206973206e6f7420626c61636b6c69737465642e206f7065726174696f6e2063616e6e6f7420626520646f6e65737461747573206368616e6765206e6f7420706f737369626c6520666f72206f72672061646d696e206163636f756e7473a165627a7a7230582064ba630c6e00d18cb409b33a435adcbf4b4351acc2024f5ade55e7381c75c23e0029" // DeployAcctManager deploys a new Ethereum contract, binding an instance of AcctManager to it. func DeployAcctManager(auth *bind.TransactOpts, backend bind.ContractBackend, _permUpgradable common.Address) (common.Address, *types.Transaction, *AcctManager, error) { diff --git a/permission/bind/nodes.go b/permission/bind/nodes.go index fc1ad466e..06b40a7fe 100644 --- a/permission/bind/nodes.go +++ b/permission/bind/nodes.go @@ -31,7 +31,7 @@ var ( const NodeManagerABI = "[{\"constant\":false,\"inputs\":[{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_action\",\"type\":\"uint256\"}],\"name\":\"updateNodeStatus\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"enodeId\",\"type\":\"string\"}],\"name\":\"getNodeDetails\",\"outputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_nodeStatus\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"addOrgNode\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"approveNode\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_nodeIndex\",\"type\":\"uint256\"}],\"name\":\"getNodeDetailsFromIndex\",\"outputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_nodeStatus\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"addNode\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getNumberOfNodes\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"addAdminNode\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_permUpgradable\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_enodeId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"NodeProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_enodeId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"NodeApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_enodeId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"NodeDeactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_enodeId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"NodeActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_enodeId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"NodeBlacklisted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_enodeId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"NodeRecoveryInitiated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_enodeId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"NodeRecoveryCompleted\",\"type\":\"event\"}]" // NodeManagerBin is the compiled bytecode used for deploying new contracts. -var NodeManagerBin = "0x608060405234801561001057600080fd5b506040516020806124338339810180604052602081101561003057600080fd5b505160008054600160a060020a03909216600160a060020a03199092169190911790556123d1806100626000396000f3fe608060405234801561001057600080fd5b506004361061008c5760003560e060020a9004806397c07a9b1161005f57806397c07a9b1461042e578063a97a44061461044b578063b81c806a1461050d578063e3b09d84146102aa5761008c565b80630cc50146146100915780633f0e0e47146101555780633f5e1a45146102aa57806386bc36521461036c575b600080fd5b610153600480360360608110156100a757600080fd5b8101906020810181356401000000008111156100c257600080fd5b8201836020820111156100d457600080fd5b803590602001918460018302840111640100000000831117156100f657600080fd5b91939092909160208101903564010000000081111561011457600080fd5b82018360208201111561012657600080fd5b8035906020019184600183028401116401000000008311171561014857600080fd5b919350915035610527565b005b6101c56004803603602081101561016b57600080fd5b81019060208101813564010000000081111561018657600080fd5b82018360208201111561019857600080fd5b803590602001918460018302840111640100000000831117156101ba57600080fd5b509092509050610f34565b604051808060200180602001848152602001838103835286818151815260200191508051906020019080838360005b8381101561020c5781810151838201526020016101f4565b50505050905090810190601f1680156102395780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561026c578181015183820152602001610254565b50505050905090810190601f1680156102995780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b610153600480360360408110156102c057600080fd5b8101906020810181356401000000008111156102db57600080fd5b8201836020820111156102ed57600080fd5b8035906020019184600183028401116401000000008311171561030f57600080fd5b91939092909160208101903564010000000081111561032d57600080fd5b82018360208201111561033f57600080fd5b8035906020019184600183028401116401000000008311171561036157600080fd5b509092509050611106565b6101536004803603604081101561038257600080fd5b81019060208101813564010000000081111561039d57600080fd5b8201836020820111156103af57600080fd5b803590602001918460018302840111640100000000831117156103d157600080fd5b9193909290916020810190356401000000008111156103ef57600080fd5b82018360208201111561040157600080fd5b8035906020019184600183028401116401000000008311171561042357600080fd5b5090925090506114dd565b6101c56004803603602081101561044457600080fd5b50356119fc565b6101536004803603604081101561046157600080fd5b81019060208101813564010000000081111561047c57600080fd5b82018360208201111561048e57600080fd5b803590602001918460018302840111640100000000831117156104b057600080fd5b9193909290916020810190356401000000008111156104ce57600080fd5b8201836020820111156104e057600080fd5b8035906020019184600183028401116401000000008311171561050257600080fd5b509092509050611b8b565b610515611f62565b60408051918252519081900360200190f35b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561057757600080fd5b505afa15801561058b573d6000803e3d6000fd5b505050506040513d60208110156105a157600080fd5b5051600160a060020a031633146105f0576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020612333833981519152604482015290519081900360640190fd5b84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602080820181815288519383019390935287516002975093955087945091928392606090920191850190808383895b8381101561066d578181015183820152602001610655565b50505050905090810190601f16801561069a5780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208652908501959095525050500160002054151561071a576040805160e560020a62461bcd02815260206004820152601e60248201527f70617373656420656e6f646520696420646f6573206e6f742065786973740000604482015290519081900360640190fd5b61078d86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250611f6992505050565b15156107cd5760405160e560020a62461bcd02815260040180806020018281038252602a8152602001806122e9602a913960400191505060405180910390fd5b81600114806107dc5750816002145b806107e75750816003145b806107f25750816004145b806107fd5750816005145b151561083d5760405160e560020a62461bcd0281526004018080602001828103825260268152602001806123536026913960400191505060405180910390fd5b81600114156109bd5761088586868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506120cb92505050565b6002146108ca576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020612313833981519152604482015290519081900360640190fd5b6003600161090d88888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506121a892505050565b8154811061091757fe5b9060005260206000209060030201600201819055507fc6c3720fe673e87bb26e06be713d514278aa94c3939cfe7c64b9bea4d486824a868686866040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a1610f2c565b8160021415610b3d57610a0586868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506120cb92505050565b600314610a4a576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020612313833981519152604482015290519081900360640190fd5b60026001610a8d88888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506121a892505050565b81548110610a9757fe5b9060005260206000209060030201600201819055507f49796be3ca168a59c8ae46c75a36a9bb3a84753d3e12a812f93ae010e783b14f868686866040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a1610f2c565b8160031415610c395760046001610b8988888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506121a892505050565b81548110610b9357fe5b9060005260206000209060030201600201819055507f4714623279994517c446c8fb72c3fdaca26434da1e2490d3976fe0cd880cfa7a868686866040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a1610f2c565b8160041415610db957610c8186868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506120cb92505050565b600414610cc6576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020612313833981519152604482015290519081900360640190fd5b60056001610d0988888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506121a892505050565b81548110610d1357fe5b9060005260206000209060030201600201819055507ffd385c618a1e89d01fb9a21780846793e282e8bc0b60caf6ccb3e422d543fbfb868686866040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a1610f2c565b610df886868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506120cb92505050565b600514610e3d576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020612313833981519152604482015290519081900360640190fd5b60026001610e8088888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506121a892505050565b81548110610e8a57fe5b9060005260206000209060030201600201819055507f787d7bc525e7c4658c64e3e456d974a1be21cc196e8162a4bf1337a12cb38dac868686866040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a15b505050505050565b606080600080610f7986868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506121a892505050565b9050600181815481101515610f8a57fe5b9060005260206000209060030201600101600182815481101515610faa57fe5b9060005260206000209060030201600001600183815481101515610fca57fe5b60009182526020918290206002600390920201810154845460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835290928591908301828280156110635780601f1061103857610100808354040283529160200191611063565b820191906000526020600020905b81548152906001019060200180831161104657829003601f168201915b5050855460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959850879450925084019050828280156110f15780601f106110c6576101008083540402835291602001916110f1565b820191906000526020600020905b8154815290600101906020018083116110d457829003601f168201915b50505050509150935093509350509250925092565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561115657600080fd5b505afa15801561116a573d6000803e3d6000fd5b505050506040513d602081101561118057600080fd5b5051600160a060020a031633146111cf576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020612333833981519152604482015290519081900360640190fd5b83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602080820181815288519383019390935287516002975093955087945091928392606090920191850190808383895b8381101561124c578181015183820152602001611234565b50505050905090810190601f1680156112795780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208652908501959095525050500160002054156112f8576040805160e560020a62461bcd02815260206004820152601660248201527f70617373656420656e6f64652069642065786973747300000000000000000000604482015290519081900360640190fd5b6003805460010190819055604080516020808201908152918101879052600291600091899189918190606001848480828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120815260200190815260200160002081905550600160606040519081016040528087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250604080516020601f88018190048102820181019092528681529181019190879087908190840183828082843760009201829052509385525050600260209384015250835460018101808655948252908290208351805160039093029091019261142392849290910190612250565b50602082810151805161143c9260018501920190612250565b50604082015181600201555050507f0413ce00d5de406d9939003416263a7530eaeb13f9d281c8baeba1601def960d858585856040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a15050505050565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561152d57600080fd5b505afa158015611541573d6000803e3d6000fd5b505050506040513d602081101561155757600080fd5b5051600160a060020a031633146115a6576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020612333833981519152604482015290519081900360640190fd5b83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602080820181815288519383019390935287516002975093955087945091928392606090920191850190808383895b8381101561162357818101518382015260200161160b565b50505050905090810190601f1680156116505780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181528151602092830120865290850195909552505050016000205415156116d0576040805160e560020a62461bcd02815260206004820152601e60248201527f70617373656420656e6f646520696420646f6573206e6f742065786973740000604482015290519081900360640190fd5b61174385858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f89018190048102820181019092528781529250879150869081908401838280828437600092019190915250611f6992505050565b15156117835760405160e560020a62461bcd02815260040180806020018281038252602d815260200180612379602d913960400191505060405180910390fd5b6117c285858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506120cb92505050565b600114611819576040805160e560020a62461bcd02815260206004820152601c60248201527f6e6f7468696e672070656e64696e6720666f7220617070726f76616c00000000604482015290519081900360640190fd5b600061185a86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506121a892505050565b9050600260018281548110151561186d57fe5b9060005260206000209060030201600201819055507f0413ce00d5de406d9939003416263a7530eaeb13f9d281c8baeba1601def960d6001828154811015156118b257fe5b90600052602060002090600302016000016001838154811015156118d257fe5b90600052602060002090600302016001016040518080602001806020018381038352858181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156119705780601f1061194557610100808354040283529160200191611970565b820191906000526020600020905b81548152906001019060200180831161195357829003601f168201915b50508381038252845460026000196101006001841615020190911604808252602090910190859080156119e45780601f106119b9576101008083540402835291602001916119e4565b820191906000526020600020905b8154815290600101906020018083116119c757829003601f168201915b505094505050505060405180910390a1505050505050565b6060806000600184815481101515611a1057fe5b9060005260206000209060030201600101600185815481101515611a3057fe5b9060005260206000209060030201600001600186815481101515611a5057fe5b60009182526020918290206002600390920201810154845460408051601f600019610100600186161502019093169490940491820185900485028401850190528083529092859190830182828015611ae95780601f10611abe57610100808354040283529160200191611ae9565b820191906000526020600020905b815481529060010190602001808311611acc57829003601f168201915b5050855460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815295985087945092508401905082828015611b775780601f10611b4c57610100808354040283529160200191611b77565b820191906000526020600020905b815481529060010190602001808311611b5a57829003601f168201915b505050505091509250925092509193909250565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b158015611bdb57600080fd5b505afa158015611bef573d6000803e3d6000fd5b505050506040513d6020811015611c0557600080fd5b5051600160a060020a03163314611c54576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020612333833981519152604482015290519081900360640190fd5b83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602080820181815288519383019390935287516002975093955087945091928392606090920191850190808383895b83811015611cd1578181015183820152602001611cb9565b50505050905090810190601f168015611cfe5780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181528151602092830120865290850195909552505050016000205415611d7d576040805160e560020a62461bcd02815260206004820152601660248201527f70617373656420656e6f64652069642065786973747300000000000000000000604482015290519081900360640190fd5b6003805460010190819055604080516020808201908152918101879052600291600091899189918190606001848480828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120815260200190815260200160002081905550600160606040519081016040528087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250604080516020601f880181900481028201810190925286815291810191908790879081908401838280828437600092018290525093855250506001602093840181905285549081018087559583529183902084518051600390940290910193611ea893859350910190612250565b506020828101518051611ec19260018501920190612250565b50604082015181600201555050507fb1a7eec7dd1a516c3132d6d1f770758b19aa34c3a07c138caf662688b7e3556f858585856040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a15050505050565b6003545b90565b6000816040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015611fac578181015183820152602001611f94565b50505050905090810190601f168015611fd95780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001206001611fff856121a8565b8154811061200957fe5b906000526020600020906003020160010160405160200180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156120a65780601f1061207b576101008083540402835291602001916120a6565b820191906000526020600020905b81548152906001019060200180831161208957829003601f168201915b5050925050506040516020818303038152906040528051906020012014905092915050565b600060026000836040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156121125781810151838201526020016120fa565b50505050905090810190601f16801561213f5780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040528051906020012081526020019081526020016000205460001415612179575060006121a3565b6001612184836121a8565b8154811061218e57fe5b90600052602060002090600302016002015490505b919050565b6000600160026000846040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156121f15781810151838201526020016121d9565b50505050905090810190601f16801561221e5780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120815260200190815260200160002054039050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061229157805160ff19168380011785556122be565b828001600101855582156122be579182015b828111156122be5782518255916020019190600101906122a3565b506122ca9291506122ce565b5090565b611f6691905b808211156122ca57600081556001016122d456fe656e6f646520696420646f6573206e6f742062656c6f6e6720746f2074686520706173736564206f72676f7065726174696f6e2063616e6e6f7420626520706572666f726d6564000000696e76616c69642063616c6c6572000000000000000000000000000000000000696e76616c6964206f7065726174696f6e2e2077726f6e6720616374696f6e20706173736564656e6f646520696420646f6573206e6f742062656c6f6e6720746f2074686520706173736564206f7267206964a165627a7a723058201a5cc0493d4a8b1449c8570e60c82a29866f17bbfc4e65b2665c9f27a95dc0f70029" +var NodeManagerBin = "0x608060405234801561001057600080fd5b506040516020806125388339810180604052602081101561003057600080fd5b505160008054600160a060020a03909216600160a060020a03199092169190911790556124d6806100626000396000f3fe608060405234801561001057600080fd5b506004361061008c5760003560e060020a9004806397c07a9b1161005f57806397c07a9b1461042e578063a97a44061461044b578063b81c806a1461050d578063e3b09d84146102aa5761008c565b80630cc50146146100915780633f0e0e47146101555780633f5e1a45146102aa57806386bc36521461036c575b600080fd5b610153600480360360608110156100a757600080fd5b8101906020810181356401000000008111156100c257600080fd5b8201836020820111156100d457600080fd5b803590602001918460018302840111640100000000831117156100f657600080fd5b91939092909160208101903564010000000081111561011457600080fd5b82018360208201111561012657600080fd5b8035906020019184600183028401116401000000008311171561014857600080fd5b919350915035610527565b005b6101c56004803603602081101561016b57600080fd5b81019060208101813564010000000081111561018657600080fd5b82018360208201111561019857600080fd5b803590602001918460018302840111640100000000831117156101ba57600080fd5b509092509050610f34565b604051808060200180602001848152602001838103835286818151815260200191508051906020019080838360005b8381101561020c5781810151838201526020016101f4565b50505050905090810190601f1680156102395780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561026c578181015183820152602001610254565b50505050905090810190601f1680156102995780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b610153600480360360408110156102c057600080fd5b8101906020810181356401000000008111156102db57600080fd5b8201836020820111156102ed57600080fd5b8035906020019184600183028401116401000000008311171561030f57600080fd5b91939092909160208101903564010000000081111561032d57600080fd5b82018360208201111561033f57600080fd5b8035906020019184600183028401116401000000008311171561036157600080fd5b50909250905061120b565b6101536004803603604081101561038257600080fd5b81019060208101813564010000000081111561039d57600080fd5b8201836020820111156103af57600080fd5b803590602001918460018302840111640100000000831117156103d157600080fd5b9193909290916020810190356401000000008111156103ef57600080fd5b82018360208201111561040157600080fd5b8035906020019184600183028401116401000000008311171561042357600080fd5b5090925090506115e2565b6101c56004803603602081101561044457600080fd5b5035611b01565b6101536004803603604081101561046157600080fd5b81019060208101813564010000000081111561047c57600080fd5b82018360208201111561048e57600080fd5b803590602001918460018302840111640100000000831117156104b057600080fd5b9193909290916020810190356401000000008111156104ce57600080fd5b8201836020820111156104e057600080fd5b8035906020019184600183028401116401000000008311171561050257600080fd5b509092509050611c90565b610515612067565b60408051918252519081900360200190f35b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561057757600080fd5b505afa15801561058b573d6000803e3d6000fd5b505050506040513d60208110156105a157600080fd5b5051600160a060020a031633146105f0576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020612438833981519152604482015290519081900360640190fd5b84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602080820181815288519383019390935287516002975093955087945091928392606090920191850190808383895b8381101561066d578181015183820152602001610655565b50505050905090810190601f16801561069a5780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208652908501959095525050500160002054151561071a576040805160e560020a62461bcd02815260206004820152601e60248201527f70617373656420656e6f646520696420646f6573206e6f742065786973740000604482015290519081900360640190fd5b61078d86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a01819004810282018101909252888152925088915087908190840183828082843760009201919091525061206e92505050565b15156107cd5760405160e560020a62461bcd02815260040180806020018281038252602a8152602001806123ee602a913960400191505060405180910390fd5b81600114806107dc5750816002145b806107e75750816003145b806107f25750816004145b806107fd5750816005145b151561083d5760405160e560020a62461bcd0281526004018080602001828103825260268152602001806124586026913960400191505060405180910390fd5b81600114156109bd5761088586868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506121d092505050565b6002146108ca576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020612418833981519152604482015290519081900360640190fd5b6003600161090d88888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506122ad92505050565b8154811061091757fe5b9060005260206000209060030201600201819055507fc6c3720fe673e87bb26e06be713d514278aa94c3939cfe7c64b9bea4d486824a868686866040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a1610f2c565b8160021415610b3d57610a0586868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506121d092505050565b600314610a4a576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020612418833981519152604482015290519081900360640190fd5b60026001610a8d88888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506122ad92505050565b81548110610a9757fe5b9060005260206000209060030201600201819055507f49796be3ca168a59c8ae46c75a36a9bb3a84753d3e12a812f93ae010e783b14f868686866040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a1610f2c565b8160031415610c395760046001610b8988888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506122ad92505050565b81548110610b9357fe5b9060005260206000209060030201600201819055507f4714623279994517c446c8fb72c3fdaca26434da1e2490d3976fe0cd880cfa7a868686866040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a1610f2c565b8160041415610db957610c8186868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506121d092505050565b600414610cc6576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020612418833981519152604482015290519081900360640190fd5b60056001610d0988888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506122ad92505050565b81548110610d1357fe5b9060005260206000209060030201600201819055507ffd385c618a1e89d01fb9a21780846793e282e8bc0b60caf6ccb3e422d543fbfb868686866040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a1610f2c565b610df886868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506121d092505050565b600514610e3d576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020612418833981519152604482015290519081900360640190fd5b60026001610e8088888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506122ad92505050565b81548110610e8a57fe5b9060005260206000209060030201600201819055507f787d7bc525e7c4658c64e3e456d974a1be21cc196e8162a4bf1337a12cb38dac868686866040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a15b505050505050565b606080600060026000836040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015610f7e578181015183820152602001610f66565b50505050905090810190601f168015610fab5780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001208152602001908152602001600020546000141561103c5784846000602060405190810160405280600081525092919082828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250969950919750919550611204945050505050565b600061107d86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506122ad92505050565b905060018181548110151561108e57fe5b90600052602060002090600302016001016001828154811015156110ae57fe5b90600052602060002090600302016000016001838154811015156110ce57fe5b60009182526020918290206002600390920201810154845460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835290928591908301828280156111675780601f1061113c57610100808354040283529160200191611167565b820191906000526020600020905b81548152906001019060200180831161114a57829003601f168201915b5050855460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959850879450925084019050828280156111f55780601f106111ca576101008083540402835291602001916111f5565b820191906000526020600020905b8154815290600101906020018083116111d857829003601f168201915b50505050509150935093509350505b9250925092565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561125b57600080fd5b505afa15801561126f573d6000803e3d6000fd5b505050506040513d602081101561128557600080fd5b5051600160a060020a031633146112d4576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020612438833981519152604482015290519081900360640190fd5b83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602080820181815288519383019390935287516002975093955087945091928392606090920191850190808383895b83811015611351578181015183820152602001611339565b50505050905090810190601f16801561137e5780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208652908501959095525050500160002054156113fd576040805160e560020a62461bcd02815260206004820152601660248201527f70617373656420656e6f64652069642065786973747300000000000000000000604482015290519081900360640190fd5b6003805460010190819055604080516020808201908152918101879052600291600091899189918190606001848480828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120815260200190815260200160002081905550600160606040519081016040528087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250604080516020601f88018190048102820181019092528681529181019190879087908190840183828082843760009201829052509385525050600260209384015250835460018101808655948252908290208351805160039093029091019261152892849290910190612355565b5060208281015180516115419260018501920190612355565b50604082015181600201555050507f0413ce00d5de406d9939003416263a7530eaeb13f9d281c8baeba1601def960d858585856040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a15050505050565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561163257600080fd5b505afa158015611646573d6000803e3d6000fd5b505050506040513d602081101561165c57600080fd5b5051600160a060020a031633146116ab576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020612438833981519152604482015290519081900360640190fd5b83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602080820181815288519383019390935287516002975093955087945091928392606090920191850190808383895b83811015611728578181015183820152602001611710565b50505050905090810190601f1680156117555780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181528151602092830120865290850195909552505050016000205415156117d5576040805160e560020a62461bcd02815260206004820152601e60248201527f70617373656420656e6f646520696420646f6573206e6f742065786973740000604482015290519081900360640190fd5b61184885858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8901819004810282018101909252878152925087915086908190840183828082843760009201919091525061206e92505050565b15156118885760405160e560020a62461bcd02815260040180806020018281038252602d81526020018061247e602d913960400191505060405180910390fd5b6118c785858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506121d092505050565b60011461191e576040805160e560020a62461bcd02815260206004820152601c60248201527f6e6f7468696e672070656e64696e6720666f7220617070726f76616c00000000604482015290519081900360640190fd5b600061195f86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506122ad92505050565b9050600260018281548110151561197257fe5b9060005260206000209060030201600201819055507f0413ce00d5de406d9939003416263a7530eaeb13f9d281c8baeba1601def960d6001828154811015156119b757fe5b90600052602060002090600302016000016001838154811015156119d757fe5b9060005260206000209060030201600101604051808060200180602001838103835285818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015611a755780601f10611a4a57610100808354040283529160200191611a75565b820191906000526020600020905b815481529060010190602001808311611a5857829003601f168201915b5050838103825284546002600019610100600184161502019091160480825260209091019085908015611ae95780601f10611abe57610100808354040283529160200191611ae9565b820191906000526020600020905b815481529060010190602001808311611acc57829003601f168201915b505094505050505060405180910390a1505050505050565b6060806000600184815481101515611b1557fe5b9060005260206000209060030201600101600185815481101515611b3557fe5b9060005260206000209060030201600001600186815481101515611b5557fe5b60009182526020918290206002600390920201810154845460408051601f600019610100600186161502019093169490940491820185900485028401850190528083529092859190830182828015611bee5780601f10611bc357610100808354040283529160200191611bee565b820191906000526020600020905b815481529060010190602001808311611bd157829003601f168201915b5050855460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815295985087945092508401905082828015611c7c5780601f10611c5157610100808354040283529160200191611c7c565b820191906000526020600020905b815481529060010190602001808311611c5f57829003601f168201915b505050505091509250925092509193909250565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b158015611ce057600080fd5b505afa158015611cf4573d6000803e3d6000fd5b505050506040513d6020811015611d0a57600080fd5b5051600160a060020a03163314611d59576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020612438833981519152604482015290519081900360640190fd5b83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602080820181815288519383019390935287516002975093955087945091928392606090920191850190808383895b83811015611dd6578181015183820152602001611dbe565b50505050905090810190601f168015611e035780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181528151602092830120865290850195909552505050016000205415611e82576040805160e560020a62461bcd02815260206004820152601660248201527f70617373656420656e6f64652069642065786973747300000000000000000000604482015290519081900360640190fd5b6003805460010190819055604080516020808201908152918101879052600291600091899189918190606001848480828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120815260200190815260200160002081905550600160606040519081016040528087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250604080516020601f880181900481028201810190925286815291810191908790879081908401838280828437600092018290525093855250506001602093840181905285549081018087559583529183902084518051600390940290910193611fad93859350910190612355565b506020828101518051611fc69260018501920190612355565b50604082015181600201555050507fb1a7eec7dd1a516c3132d6d1f770758b19aa34c3a07c138caf662688b7e3556f858585856040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a15050505050565b6003545b90565b6000816040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156120b1578181015183820152602001612099565b50505050905090810190601f1680156120de5780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001206001612104856122ad565b8154811061210e57fe5b906000526020600020906003020160010160405160200180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156121ab5780601f10612180576101008083540402835291602001916121ab565b820191906000526020600020905b81548152906001019060200180831161218e57829003601f168201915b5050925050506040516020818303038152906040528051906020012014905092915050565b600060026000836040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156122175781810151838201526020016121ff565b50505050905090810190601f1680156122445780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001208152602001908152602001600020546000141561227e575060006122a8565b6001612289836122ad565b8154811061229357fe5b90600052602060002090600302016002015490505b919050565b6000600160026000846040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156122f65781810151838201526020016122de565b50505050905090810190601f1680156123235780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120815260200190815260200160002054039050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061239657805160ff19168380011785556123c3565b828001600101855582156123c3579182015b828111156123c35782518255916020019190600101906123a8565b506123cf9291506123d3565b5090565b61206b91905b808211156123cf57600081556001016123d956fe656e6f646520696420646f6573206e6f742062656c6f6e6720746f2074686520706173736564206f72676f7065726174696f6e2063616e6e6f7420626520706572666f726d6564000000696e76616c69642063616c6c6572000000000000000000000000000000000000696e76616c6964206f7065726174696f6e2e2077726f6e6720616374696f6e20706173736564656e6f646520696420646f6573206e6f742062656c6f6e6720746f2074686520706173736564206f7267206964a165627a7a7230582056e58e3bf58b0c0c90d997e73401ac42acb39bacd2aafecf52dca6e05fb2f3250029" // DeployNodeManager deploys a new Ethereum contract, binding an instance of NodeManager to it. func DeployNodeManager(auth *bind.TransactOpts, backend bind.ContractBackend, _permUpgradable common.Address) (common.Address, *types.Transaction, *NodeManager, error) { diff --git a/permission/bind/org.go b/permission/bind/org.go index 83155348d..eeccff683 100644 --- a/permission/bind/org.go +++ b/permission/bind/org.go @@ -28,10 +28,10 @@ var ( ) // OrgManagerABI is the input ABI used to generate the binding from. -const OrgManagerABI = "[{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_action\",\"type\":\"uint256\"}],\"name\":\"updateOrg\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_action\",\"type\":\"uint256\"}],\"name\":\"approveOrgStatusUpdate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"getUltimateParent\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_pOrgId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"addSubOrg\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"_getOrgIndex\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_orgIndex\",\"type\":\"uint256\"}],\"name\":\"getOrgInfo\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getNumberOfOrgs\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_orgStatus\",\"type\":\"uint256\"}],\"name\":\"checkOrgStatus\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_breadth\",\"type\":\"uint256\"},{\"name\":\"_depth\",\"type\":\"uint256\"}],\"name\":\"setUpOrg\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"approveOrg\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"addOrg\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"checkOrgExists\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_permUpgradable\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_porgId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_ultParent\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_level\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"_status\",\"type\":\"uint256\"}],\"name\":\"OrgApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_porgId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_ultParent\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_level\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"_status\",\"type\":\"uint256\"}],\"name\":\"OrgPendingApproval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_porgId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_ultParent\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_level\",\"type\":\"uint256\"}],\"name\":\"OrgSuspended\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_porgId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_ultParent\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_level\",\"type\":\"uint256\"}],\"name\":\"OrgSuspensionRevoked\",\"type\":\"event\"}]" +const OrgManagerABI = "[{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_action\",\"type\":\"uint256\"}],\"name\":\"updateOrg\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_action\",\"type\":\"uint256\"}],\"name\":\"approveOrgStatusUpdate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"getUltimateParent\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_pOrgId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"addSubOrg\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_orgIndex\",\"type\":\"uint256\"}],\"name\":\"getOrgInfo\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"getSubOrgIndexes\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getNumberOfOrgs\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_orgStatus\",\"type\":\"uint256\"}],\"name\":\"checkOrgStatus\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_breadth\",\"type\":\"uint256\"},{\"name\":\"_depth\",\"type\":\"uint256\"}],\"name\":\"setUpOrg\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"approveOrg\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"getOrgDetails\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"addOrg\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"checkOrgExists\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_permUpgradable\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_porgId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_ultParent\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_level\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"_status\",\"type\":\"uint256\"}],\"name\":\"OrgApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_porgId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_ultParent\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_level\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"_status\",\"type\":\"uint256\"}],\"name\":\"OrgPendingApproval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_porgId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_ultParent\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_level\",\"type\":\"uint256\"}],\"name\":\"OrgSuspended\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_porgId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_ultParent\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_level\",\"type\":\"uint256\"}],\"name\":\"OrgSuspensionRevoked\",\"type\":\"event\"}]" // OrgManagerBin is the compiled bytecode used for deploying new contracts. -var OrgManagerBin = "0x60806040526001805460a060020a60ff021916905560046002819055600355600060065534801561002f57600080fd5b506040516020806133d18339810180604052602081101561004f57600080fd5b505160018054600160a060020a031916600160a060020a039092169190911790556133528061007f6000396000f3fe608060405234801561001057600080fd5b50600436106100b85760003560e060020a900480637755ebdd116100755780637755ebdd1461056d5780638c8642df146105755780639e58eb9f14610631578063e3028316146106a7578063f9953de514610717578063ffe40d1d14610787576100b8565b80630cc27493146100bd57806314f775f91461013f578063177c8d8a146101b15780631f95348014610296578063320d2c39146103585780635c4f32ee146103fe575b600080fd5b61012d600480360360408110156100d357600080fd5b8101906020810181356401000000008111156100ee57600080fd5b82018360208201111561010057600080fd5b8035906020019184600183028401116401000000008311171561012257600080fd5b91935091503561082d565b60408051918252519081900360200190f35b6101af6004803603604081101561015557600080fd5b81019060208101813564010000000081111561017057600080fd5b82018360208201111561018257600080fd5b803590602001918460018302840111640100000000831117156101a457600080fd5b919350915035610bd8565b005b610221600480360360208110156101c757600080fd5b8101906020810181356401000000008111156101e257600080fd5b8201836020820111156101f457600080fd5b8035906020019184600183028401116401000000008311171561021657600080fd5b509092509050610dcf565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561025b578181015183820152602001610243565b50505050905090810190601f1680156102885780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101af600480360360408110156102ac57600080fd5b8101906020810181356401000000008111156102c757600080fd5b8201836020820111156102d957600080fd5b803590602001918460018302840111640100000000831117156102fb57600080fd5b91939092909160208101903564010000000081111561031957600080fd5b82018360208201111561032b57600080fd5b8035906020019184600183028401116401000000008311171561034d57600080fd5b509092509050610f94565b61012d6004803603602081101561036e57600080fd5b81019060208101813564010000000081111561038957600080fd5b82018360208201111561039b57600080fd5b803590602001918460018302840111640100000000831117156103bd57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611198945050505050565b61041b6004803603602081101561041457600080fd5b5035611225565b60405180806020018060200180602001868152602001858152602001848103845289818151815260200191508051906020019080838360005b8381101561046c578181015183820152602001610454565b50505050905090810190601f1680156104995780820380516001836020036101000a031916815260200191505b5084810383528851815288516020918201918a019080838360005b838110156104cc5781810151838201526020016104b4565b50505050905090810190601f1680156104f95780820380516001836020036101000a031916815260200191505b50848103825287518152875160209182019189019080838360005b8381101561052c578181015183820152602001610514565b50505050905090810190601f1680156105595780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b61012d61149a565b61061d6004803603604081101561058b57600080fd5b8101906020810181356401000000008111156105a657600080fd5b8201836020820111156105b857600080fd5b803590602001918460018302840111640100000000831117156105da57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050913592506114a1915050565b604080519115158252519081900360200190f35b6101af6004803603606081101561064757600080fd5b81019060208101813564010000000081111561066257600080fd5b82018360208201111561067457600080fd5b8035906020019184600183028401116401000000008311171561069657600080fd5b919350915080359060200135611567565b6101af600480360360208110156106bd57600080fd5b8101906020810181356401000000008111156106d857600080fd5b8201836020820111156106ea57600080fd5b8035906020019184600183028401116401000000008311171561070c57600080fd5b50909250905061168a565b6101af6004803603602081101561072d57600080fd5b81019060208101813564010000000081111561074857600080fd5b82018360208201111561075a57600080fd5b8035906020019184600183028401116401000000008311171561077c57600080fd5b509092509050611a9a565b61061d6004803603602081101561079d57600080fd5b8101906020810181356401000000008111156107b857600080fd5b8201836020820111156107ca57600080fd5b803590602001918460018302840111640100000000831117156107ec57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611c4e945050505050565b600154604080517f0e32cf900000000000000000000000000000000000000000000000000000000081529051600092600160a060020a031691630e32cf90916004808301926020929190829003018186803b15801561088b57600080fd5b505afa15801561089f573d6000803e3d6000fd5b505050506040513d60208110156108b557600080fd5b5051600160a060020a03163314610904576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206132ac833981519152604482015290519081900360640190fd5b83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506109469250839150611c4e9050565b151560011461099f576040805160e560020a62461bcd02815260206004820152601260248201527f6f726720646f6573206e6f742065786973740000000000000000000000000000604482015290519081900360640190fd5b82600114806109ae5750826002145b15156109ee5760405160e560020a62461bcd0281526004018080602001828103825260258152602001806132606025913960400191505060405180910390fd5b6000610a2f86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061119892505050565b9050600481815481101515610a4057fe5b9060005260206000209060080201600601546001141515610a955760405160e560020a62461bcd0281526004018080602001828103825260278152602001806132856027913960400191505060405180910390fd5b6000808560011415610aac57506002905080610abd565b8560021415610abd57506004905060035b610afe88888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508692506114a1915050565b1515600114610b415760405160e560020a62461bcd0281526004018080602001828103825260278152602001806132cc6027913960400191505060405180910390fd5b8560011415610b8e57610b8988888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611cdc92505050565b610bcd565b610bcd88888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f9e92505050565b979650505050505050565b600160009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b158015610c2957600080fd5b505afa158015610c3d573d6000803e3d6000fd5b505050506040513d6020811015610c5357600080fd5b5051600160a060020a03163314610ca2576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206132ac833981519152604482015290519081900360640190fd5b82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610ce49250839150611c4e9050565b1515600114610d3d576040805160e560020a62461bcd02815260206004820152601260248201527f6f726720646f6573206e6f742065786973740000000000000000000000000000604482015290519081900360640190fd5b8160011415610d8a57610d8584848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061214b92505050565b610dc9565b610dc984848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061241192505050565b50505050565b600154604080517f0e32cf900000000000000000000000000000000000000000000000000000000081529051606092600160a060020a031691630e32cf90916004808301926020929190829003018186803b158015610e2d57600080fd5b505afa158015610e41573d6000803e3d6000fd5b505050506040513d6020811015610e5757600080fd5b5051600160a060020a03163314610ea6576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206132ac833981519152604482015290519081900360640190fd5b6004610ee784848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061119892505050565b81548110610ef157fe5b6000918252602091829020600460089092020101805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015610f875780601f10610f5c57610100808354040283529160200191610f87565b820191906000526020600020905b815481529060010190602001808311610f6a57829003601f168201915b5050505050905092915050565b600160009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b158015610fe557600080fd5b505afa158015610ff9573d6000803e3d6000fd5b505050506040513d602081101561100f57600080fd5b5051600160a060020a0316331461105e576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206132ac833981519152604482015290519081900360640190fd5b83838383604051602001808585808284377f2e00000000000000000000000000000000000000000000000000000000000000920191825250600101838380828437808301925050509450505050506040516020818303038152906040526110c481611c4e565b15611119576040805160e560020a62461bcd02815260206004820152600a60248201527f6f72672065786973747300000000000000000000000000000000000000000000604482015290519081900360640190fd5b61119185858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f89018190048102820181019092528781529250879150869081908401838280828437600092019190915250600292508291506124d89050565b5050505050565b6000600160056000846040516020018082805190602001908083835b602083106111d35780518252601f1990920191602091820191016111b4565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120815260200190815260200160002054039050919050565b606080606060008060048681548110151561123c57fe5b906000526020600020906008020160000160048781548110151561125c57fe5b906000526020600020906008020160020160048881548110151561127c57fe5b906000526020600020906008020160040160048981548110151561129c57fe5b90600052602060002090600802016006015460048a8154811015156112bd57fe5b906000526020600020906008020160010154848054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113645780601f1061133957610100808354040283529160200191611364565b820191906000526020600020905b81548152906001019060200180831161134757829003601f168201915b5050875460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959a50899450925084019050828280156113f25780601f106113c7576101008083540402835291602001916113f2565b820191906000526020600020905b8154815290600101906020018083116113d557829003601f168201915b5050865460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959950889450925084019050828280156114805780601f1061145557610100808354040283529160200191611480565b820191906000526020600020905b81548152906001019060200180831161146357829003601f168201915b505050505092509450945094509450945091939590929450565b6004545b90565b6000806114ad84611198565b905060056000856040516020018082805190602001908083835b602083106114e65780518252601f1990920191602091820191016114c7565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012081526020019081526020016000205460001415801561155f57508260048281548110151561154b57fe5b906000526020600020906008020160010154145b949350505050565b600160009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156115b857600080fd5b505afa1580156115cc573d6000803e3d6000fd5b505050506040513d60208110156115e257600080fd5b5051600160a060020a03163314611631576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206132ac833981519152604482015290519081900360640190fd5b6040805160208181018352600082528251601f87018290048202810182019093528583526116809290879087908190840183828082843760009201919091525060019250600291506124d89050565b6002556003555050565b600160009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156116db57600080fd5b505afa1580156116ef573d6000803e3d6000fd5b505050506040513d602081101561170557600080fd5b5051600160a060020a03163314611754576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206132ac833981519152604482015290519081900360640190fd5b61179682828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600192506114a1915050565b15156001146117ef576040805160e560020a62461bcd02815260206004820152601260248201527f6e6f7468696e6720746f20617070726f76650000000000000000000000000000604482015290519081900360640190fd5b600061183083838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061119892505050565b9050600260048281548110151561184357fe5b9060005260206000209060080201600101819055507fd705723a50859c9cc1d3953e10b8b9478820e7a62927ad3215897ed87b20591c60048281548110151561188857fe5b90600052602060002090600802016000016004838154811015156118a857fe5b90600052602060002090600802016002016004848154811015156118c857fe5b90600052602060002090600802016004016004858154811015156118e857fe5b9060005260206000209060080201600601546002604051808060200180602001806020018681526020018581526020018481038452898181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156119995780601f1061196e57610100808354040283529160200191611999565b820191906000526020600020905b81548152906001019060200180831161197c57829003601f168201915b5050848103835288546002600019610100600184161502019091160480825260209091019089908015611a0d5780601f106119e257610100808354040283529160200191611a0d565b820191906000526020600020905b8154815290600101906020018083116119f057829003601f168201915b5050848103825287546002600019610100600184161502019091160480825260209091019088908015611a815780601f10611a5657610100808354040283529160200191611a81565b820191906000526020600020905b815481529060010190602001808311611a6457829003601f168201915b50509850505050505050505060405180910390a1505050565b600160009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b158015611aeb57600080fd5b505afa158015611aff573d6000803e3d6000fd5b505050506040513d6020811015611b1557600080fd5b5051600160a060020a03163314611b64576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206132ac833981519152604482015290519081900360640190fd5b81818080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ba69250839150611c4e9050565b15611bfb576040805160e560020a62461bcd02815260206004820152600a60248201527f6f72672065786973747300000000000000000000000000000000000000000000604482015290519081900360640190fd5b6040805160208181018352600082528251601f8601829004820281018201909352848352611c4992908690869081908401838280828437600092019190915250600192508291506124d89050565b505050565b600060056000836040516020018082805190602001908083835b60208310611c875780518252601f199092019160209182019101611c68565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120815260200190815260200160002054600014159050919050565b611ce78160026114a1565b1515600114611d2a5760405160e560020a62461bcd0281526004018080602001828103825260348152602001806132f36034913960400191505060405180910390fd5b6000611d3582611198565b90506003600482815481101515611d4857fe5b9060005260206000209060080201600101819055507f0e8b7be64e0c730234ba2cd252b227fb481d7a247ba806d1941144c535bf054b600482815481101515611d8d57fe5b9060005260206000209060080201600001600483815481101515611dad57fe5b9060005260206000209060080201600201600484815481101515611dcd57fe5b9060005260206000209060080201600401600485815481101515611ded57fe5b906000526020600020906008020160060154600360405180806020018060200180602001868152602001858152602001848103845289818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015611e9e5780601f10611e7357610100808354040283529160200191611e9e565b820191906000526020600020905b815481529060010190602001808311611e8157829003601f168201915b5050848103835288546002600019610100600184161502019091160480825260209091019089908015611f125780601f10611ee757610100808354040283529160200191611f12565b820191906000526020600020905b815481529060010190602001808311611ef557829003601f168201915b5050848103825287546002600019610100600184161502019091160480825260209091019088908015611f865780601f10611f5b57610100808354040283529160200191611f86565b820191906000526020600020905b815481529060010190602001808311611f6957829003601f168201915b50509850505050505050505060405180910390a15050565b611fa98160046114a1565b1515600114612002576040805160e560020a62461bcd02815260206004820152601a60248201527f6f7267206e6f7420696e2073757370656e646564207374617465000000000000604482015290519081900360640190fd5b600061200d82611198565b9050600560048281548110151561202057fe5b9060005260206000209060080201600101819055507f0e8b7be64e0c730234ba2cd252b227fb481d7a247ba806d1941144c535bf054b60048281548110151561206557fe5b906000526020600020906008020160000160048381548110151561208557fe5b90600052602060002090600802016002016004848154811015156120a557fe5b90600052602060002090600802016004016004858154811015156120c557fe5b906000526020600020906008020160060154600560405180806020018060200180602001868152602001858152602001848103845289818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015611e9e5780601f10611e7357610100808354040283529160200191611e9e565b6121568160036114a1565b15156001146121af576040805160e560020a62461bcd02815260206004820152601260248201527f6e6f7468696e6720746f20617070726f76650000000000000000000000000000604482015290519081900360640190fd5b60006121ba82611198565b9050600480828154811015156121cc57fe5b9060005260206000209060080201600101819055507f73ccf8d6c8385bf5347269bd59712da33183c1a5e1702494bcdb87d0f4674d9660048281548110151561221157fe5b906000526020600020906008020160000160048381548110151561223157fe5b906000526020600020906008020160020160048481548110151561225157fe5b906000526020600020906008020160040160048581548110151561227157fe5b600091825260209182902060066008909202010154604080516060810183905260808082528754600260001961010060018416150201909116049082018190529293909283929183019183019060a0840190899080156123125780601f106122e757610100808354040283529160200191612312565b820191906000526020600020905b8154815290600101906020018083116122f557829003601f168201915b50508481038352875460026000196101006001841615020190911604808252602090910190889080156123865780601f1061235b57610100808354040283529160200191612386565b820191906000526020600020905b81548152906001019060200180831161236957829003601f168201915b50508481038252865460026000196101006001841615020190911604808252602090910190879080156123fa5780601f106123cf576101008083540402835291602001916123fa565b820191906000526020600020905b8154815290600101906020018083116123dd57829003601f168201915b505097505050505050505060405180910390a15050565b61241c8160056114a1565b1515600114612475576040805160e560020a62461bcd02815260206004820152601260248201527f6e6f7468696e6720746f20617070726f76650000000000000000000000000000604482015290519081900360640190fd5b600061248082611198565b9050600260048281548110151561249357fe5b9060005260206000209060080201600101819055507f882f030c609566cd82918a97d457fd48f9cfcefd11282e2654cde3f94579c15f60048281548110151561221157fe5b60008080600185141561255a57856040516020018082805190602001908083835b602083106125185780518252601f1990920191602091820191016124f9565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012091506126b2565b866040516020018082805190602001908083835b6020831061258d5780518252601f19909201916020918201910161256e565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120925086866040516020018083805190602001908083835b602083106125fe5780518252601f1990920191602091820191016125df565b6001836020036101000a038019825116818451168082178552505050505050905001807f2e0000000000000000000000000000000000000000000000000000000000000081525060010182805190602001908083835b602083106126735780518252601f199092019160209182019101612654565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040528051906020012091505b6006805460019081019182905560008481526005602052604081209290925560048054916126e291908301613026565b905085600114156127a757856004828154811015156126fd57fe5b906000526020600020906008020160060181905550600060048281548110151561272357fe5b9060005260206000209060080201600501819055508660048281548110151561274857fe5b9060005260206000209060080201600301908051906020019061276c929190613052565b508660048281548110151561277d57fe5b906000526020600020906008020160040190805190602001906127a1929190613052565b50612b04565b6000848152600560205260409020546003546004805460001990930194509091849081106127d157fe5b60009182526020909120600760089092020101541061283a576040805160e560020a62461bcd02815260206004820152601660248201527f62726561647468206c6576656c20657863656564656400000000000000000000604482015290519081900360640190fd5b600254600480548490811061284b57fe5b9060005260206000209060080201600601541015156128b4576040805160e560020a62461bcd02815260206004820152601460248201527f6465707468206c6576656c206578636565646564000000000000000000000000604482015290519081900360640190fd5b60048054839081106128c257fe5b9060005260206000209060080201600601546001016004828154811015156128e657fe5b9060005260206000209060080201600601819055508160048281548110151561290b57fe5b6000918252602090912060056008909202010155600480548390811061292d57fe5b906000526020600020906008020160040160048281548110151561294d57fe5b9060005260206000209060080201600401908054600181600116156101000203166002900461297d9291906130d0565b50600060048381548110151561298f57fe5b906000526020600020906008020160070180548091906001016129b29190613145565b9050816004848154811015156129c457fe5b9060005260206000209060080201600701828154811015156129e257fe5b906000526020600020018190555088886040516020018083805190602001908083835b60208310612a245780518252601f199092019160209182019101612a05565b6001836020036101000a038019825116818451168082178552505050505050905001807f2e0000000000000000000000000000000000000000000000000000000000000081525060010182805190602001908083835b60208310612a995780518252601f199092019160209182019101612a7a565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052600483815481101515612add57fe5b90600052602060002090600802016003019080519060200190612b01929190613052565b50505b86600482815481101515612b1457fe5b90600052602060002090600802016000019080519060200190612b38929190613052565b5087600482815481101515612b4957fe5b90600052602060002090600802016002019080519060200190612b6d929190613052565b5084600482815481101515612b7e57fe5b9060005260206000209060080201600101819055508460011415612dde577f0e8b7be64e0c730234ba2cd252b227fb481d7a247ba806d1941144c535bf054b600482815481101515612bcc57fe5b9060005260206000209060080201600001600483815481101515612bec57fe5b9060005260206000209060080201600201600484815481101515612c0c57fe5b9060005260206000209060080201600401600485815481101515612c2c57fe5b906000526020600020906008020160060154600160405180806020018060200180602001868152602001858152602001848103845289818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015612cdd5780601f10612cb257610100808354040283529160200191612cdd565b820191906000526020600020905b815481529060010190602001808311612cc057829003601f168201915b5050848103835288546002600019610100600184161502019091160480825260209091019089908015612d515780601f10612d2657610100808354040283529160200191612d51565b820191906000526020600020905b815481529060010190602001808311612d3457829003601f168201915b5050848103825287546002600019610100600184161502019091160480825260209091019088908015612dc55780601f10612d9a57610100808354040283529160200191612dc5565b820191906000526020600020905b815481529060010190602001808311612da857829003601f168201915b50509850505050505050505060405180910390a161301c565b7fd705723a50859c9cc1d3953e10b8b9478820e7a62927ad3215897ed87b20591c600482815481101515612e0e57fe5b9060005260206000209060080201600001600483815481101515612e2e57fe5b9060005260206000209060080201600201600484815481101515612e4e57fe5b9060005260206000209060080201600401600485815481101515612e6e57fe5b906000526020600020906008020160060154600260405180806020018060200180602001868152602001858152602001848103845289818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015612f1f5780601f10612ef457610100808354040283529160200191612f1f565b820191906000526020600020905b815481529060010190602001808311612f0257829003601f168201915b5050848103835288546002600019610100600184161502019091160480825260209091019089908015612f935780601f10612f6857610100808354040283529160200191612f93565b820191906000526020600020905b815481529060010190602001808311612f7657829003601f168201915b50508481038252875460026000196101006001841615020190911604808252602090910190889080156130075780601f10612fdc57610100808354040283529160200191613007565b820191906000526020600020905b815481529060010190602001808311612fea57829003601f168201915b50509850505050505050505060405180910390a15b5050505050505050565b815481835581811115611c4957600802816008028360005260206000209182019101611c499190613169565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061309357805160ff19168380011785556130c0565b828001600101855582156130c0579182015b828111156130c05782518255916020019190600101906130a5565b506130cc9291506131e0565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061310957805485556130c0565b828001600101855582156130c057600052602060002091601f016020900482015b828111156130c057825482559160010191906001019061312a565b815481835581811115611c4957600083815260209020611c499181019083016131e0565b61149e91905b808211156130cc57600061318382826131fa565b600182016000905560028201600061319b91906131fa565b6131a96003830160006131fa565b6131b76004830160006131fa565b600582016000905560068201600090556007820160006131d79190613241565b5060080161316f565b61149e91905b808211156130cc57600081556001016131e6565b50805460018160011615610100020316600290046000825580601f10613220575061323e565b601f01602090049060005260206000209081019061323e91906131e0565b50565b508054600082559060005260206000209081019061323e91906131e056fe696e76616c696420616374696f6e2e206f7065726174696f6e206e6f7420616c6c6f7765646e6f742061206d6173746572206f72672e206f7065726174696f6e206e6f7420616c6c6f776564696e76616c69642063616c6c65720000000000000000000000000000000000006f72672073746174757320646f6573206e6f7420616c6c6f7720746865206f7065726174696f6e6f7267206e6f7420696e20617070726f766564207374617475732e206f7065726174696f6e2063616e6e6f7420626520646f6e65a165627a7a723058203b2b8769881d26946728f07f7714a49fa6ac1429f95775815420baa4a6cc26260029" +var OrgManagerBin = "0x60806040526001805460a060020a60ff021916905560046002819055600355600060065534801561002f57600080fd5b506040516020806139c78339810180604052602081101561004f57600080fd5b505160018054600160a060020a031916600160a060020a039092169190911790556139488061007f6000396000f3fe608060405234801561001057600080fd5b50600436106100d35760003560e060020a900480637755ebdd11610090578063e30283161161006a578063e3028316146106dc578063f4d6d9f51461074c578063f9953de5146107bc578063ffe40d1d1461082c576100d3565b80637755ebdd146105a25780638c8642df146105aa5780639e58eb9f14610666576100d3565b80630cc27493146100d857806314f775f91461015a578063177c8d8a146101cc5780631f953480146102b15780635c4f32ee146103735780635e99f6e5146104e2575b600080fd5b610148600480360360408110156100ee57600080fd5b81019060208101813564010000000081111561010957600080fd5b82018360208201111561011b57600080fd5b8035906020019184600183028401116401000000008311171561013d57600080fd5b9193509150356108d2565b60408051918252519081900360200190f35b6101ca6004803603604081101561017057600080fd5b81019060208101813564010000000081111561018b57600080fd5b82018360208201111561019d57600080fd5b803590602001918460018302840111640100000000831117156101bf57600080fd5b919350915035610c7d565b005b61023c600480360360208110156101e257600080fd5b8101906020810181356401000000008111156101fd57600080fd5b82018360208201111561020f57600080fd5b8035906020019184600183028401116401000000008311171561023157600080fd5b509092509050610e74565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561027657818101518382015260200161025e565b50505050905090810190601f1680156102a35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101ca600480360360408110156102c757600080fd5b8101906020810181356401000000008111156102e257600080fd5b8201836020820111156102f457600080fd5b8035906020019184600183028401116401000000008311171561031657600080fd5b91939092909160208101903564010000000081111561033457600080fd5b82018360208201111561034657600080fd5b8035906020019184600183028401116401000000008311171561036857600080fd5b50909250905061103a565b6103906004803603602081101561038957600080fd5b503561123e565b60405180806020018060200180602001868152602001858152602001848103845289818151815260200191508051906020019080838360005b838110156103e15781810151838201526020016103c9565b50505050905090810190601f16801561040e5780820380516001836020036101000a031916815260200191505b5084810383528851815288516020918201918a019080838360005b83811015610441578181015183820152602001610429565b50505050905090810190601f16801561046e5780820380516001836020036101000a031916815260200191505b50848103825287518152875160209182019189019080838360005b838110156104a1578181015183820152602001610489565b50505050905090810190601f1680156104ce5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b610552600480360360208110156104f857600080fd5b81019060208101813564010000000081111561051357600080fd5b82018360208201111561052557600080fd5b8035906020019184600183028401116401000000008311171561054757600080fd5b5090925090506114b3565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561058e578181015183820152602001610576565b505050509050019250505060405180910390f35b610148611608565b610652600480360360408110156105c057600080fd5b8101906020810181356401000000008111156105db57600080fd5b8201836020820111156105ed57600080fd5b8035906020019184600183028401116401000000008311171561060f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550509135925061160f915050565b604080519115158252519081900360200190f35b6101ca6004803603606081101561067c57600080fd5b81019060208101813564010000000081111561069757600080fd5b8201836020820111156106a957600080fd5b803590602001918460018302840111640100000000831117156106cb57600080fd5b919350915080359060200135611767565b6101ca600480360360208110156106f257600080fd5b81019060208101813564010000000081111561070d57600080fd5b82018360208201111561071f57600080fd5b8035906020019184600183028401116401000000008311171561074157600080fd5b50909250905061188a565b6103906004803603602081101561076257600080fd5b81019060208101813564010000000081111561077d57600080fd5b82018360208201111561078f57600080fd5b803590602001918460018302840111640100000000831117156107b157600080fd5b509092509050611c9a565b6101ca600480360360208110156107d257600080fd5b8101906020810181356401000000008111156107ed57600080fd5b8201836020820111156107ff57600080fd5b8035906020019184600183028401116401000000008311171561082157600080fd5b509092509050612003565b6106526004803603602081101561084257600080fd5b81019060208101813564010000000081111561085d57600080fd5b82018360208201111561086f57600080fd5b8035906020019184600183028401116401000000008311171561089157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506121b7945050505050565b600154604080517f0e32cf900000000000000000000000000000000000000000000000000000000081529051600092600160a060020a031691630e32cf90916004808301926020929190829003018186803b15801561093057600080fd5b505afa158015610944573d6000803e3d6000fd5b505050506040513d602081101561095a57600080fd5b5051600160a060020a031633146109a9576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a2833981519152604482015290519081900360640190fd5b83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506109eb92508391506121b79050565b1515600114610a44576040805160e560020a62461bcd02815260206004820152601260248201527f6f726720646f6573206e6f742065786973740000000000000000000000000000604482015290519081900360640190fd5b8260011480610a535750826002145b1515610a935760405160e560020a62461bcd0281526004018080602001828103825260258152602001806138566025913960400191505060405180910390fd5b6000610ad486868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061224592505050565b9050600481815481101515610ae557fe5b9060005260206000209060080201600601546001141515610b3a5760405160e560020a62461bcd02815260040180806020018281038252602781526020018061387b6027913960400191505060405180910390fd5b6000808560011415610b5157506002905080610b62565b8560021415610b6257506004905060035b610ba388888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525086925061160f915050565b1515600114610be65760405160e560020a62461bcd0281526004018080602001828103825260278152602001806138c26027913960400191505060405180910390fd5b8560011415610c3357610c2e88888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506122d292505050565b610c72565b610c7288888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061259492505050565b979650505050505050565b600160009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b158015610cce57600080fd5b505afa158015610ce2573d6000803e3d6000fd5b505050506040513d6020811015610cf857600080fd5b5051600160a060020a03163314610d47576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a2833981519152604482015290519081900360640190fd5b82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610d8992508391506121b79050565b1515600114610de2576040805160e560020a62461bcd02815260206004820152601260248201527f6f726720646f6573206e6f742065786973740000000000000000000000000000604482015290519081900360640190fd5b8160011415610e2f57610e2a84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061274192505050565b610e6e565b610e6e84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612a0792505050565b50505050565b600154604080517f0e32cf900000000000000000000000000000000000000000000000000000000081529051606092600160a060020a031691630e32cf90916004808301926020929190829003018186803b158015610ed257600080fd5b505afa158015610ee6573d6000803e3d6000fd5b505050506040513d6020811015610efc57600080fd5b5051600160a060020a03163314610f4b576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a2833981519152604482015290519081900360640190fd5b6004610f8c84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061224592505050565b81548110610f9657fe5b6000918252602091829020600460089092020101805460408051601f600260001961010060018716150201909416939093049283018590048502810185019091528181529283018282801561102c5780601f106110015761010080835404028352916020019161102c565b820191906000526020600020905b81548152906001019060200180831161100f57829003601f168201915b505050505090505b92915050565b600160009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561108b57600080fd5b505afa15801561109f573d6000803e3d6000fd5b505050506040513d60208110156110b557600080fd5b5051600160a060020a03163314611104576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a2833981519152604482015290519081900360640190fd5b83838383604051602001808585808284377f2e000000000000000000000000000000000000000000000000000000000000009201918252506001018383808284378083019250505094505050505060405160208183030381529060405261116a816121b7565b156111bf576040805160e560020a62461bcd02815260206004820152600a60248201527f6f72672065786973747300000000000000000000000000000000000000000000604482015290519081900360640190fd5b61123785858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8901819004810282018101909252878152925087915086908190840183828082843760009201919091525060029250829150612ace9050565b5050505050565b606080606060008060048681548110151561125557fe5b906000526020600020906008020160000160048781548110151561127557fe5b906000526020600020906008020160020160048881548110151561129557fe5b90600052602060002090600802016004016004898154811015156112b557fe5b90600052602060002090600802016006015460048a8154811015156112d657fe5b906000526020600020906008020160010154848054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561137d5780601f106113525761010080835404028352916020019161137d565b820191906000526020600020905b81548152906001019060200180831161136057829003601f168201915b5050875460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959a508994509250840190508282801561140b5780601f106113e05761010080835404028352916020019161140b565b820191906000526020600020905b8154815290600101906020018083116113ee57829003601f168201915b5050865460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959950889450925084019050828280156114995780601f1061146e57610100808354040283529160200191611499565b820191906000526020600020905b81548152906001019060200180831161147c57829003601f168201915b505050505092509450945094509450945091939590929450565b60606114f483838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506121b792505050565b151560011461154d576040805160e560020a62461bcd02815260206004820152601260248201527f6f726720646f6573206e6f742065786973740000000000000000000000000000604482015290519081900360640190fd5b600061158e84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061224592505050565b905060048181548110151561159f57fe5b90600052602060002090600802016007018054806020026020016040519081016040528092919081815260200182805480156115fa57602002820191906000526020600020905b8154815260200190600101908083116115e6575b505050505091505092915050565b6004545b90565b600060056000846040516020018082805190602001908083835b602083106116485780518252601f199092019160209182019101611629565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120815260200190815260200160002054600014156116a257506000611034565b60006116ad84612245565b905060056000856040516020018082805190602001908083835b602083106116e65780518252601f1990920191602091820191016116c7565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012081526020019081526020016000205460001415801561175f57508260048281548110151561174b57fe5b906000526020600020906008020160010154145b949350505050565b600160009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156117b857600080fd5b505afa1580156117cc573d6000803e3d6000fd5b505050506040513d60208110156117e257600080fd5b5051600160a060020a03163314611831576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a2833981519152604482015290519081900360640190fd5b6040805160208181018352600082528251601f8701829004820281018201909352858352611880929087908790819084018382808284376000920191909152506001925060029150612ace9050565b6002556003555050565b600160009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156118db57600080fd5b505afa1580156118ef573d6000803e3d6000fd5b505050506040513d602081101561190557600080fd5b5051600160a060020a03163314611954576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a2833981519152604482015290519081900360640190fd5b61199682828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061160f915050565b15156001146119ef576040805160e560020a62461bcd02815260206004820152601260248201527f6e6f7468696e6720746f20617070726f76650000000000000000000000000000604482015290519081900360640190fd5b6000611a3083838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061224592505050565b90506002600482815481101515611a4357fe5b9060005260206000209060080201600101819055507fd705723a50859c9cc1d3953e10b8b9478820e7a62927ad3215897ed87b20591c600482815481101515611a8857fe5b9060005260206000209060080201600001600483815481101515611aa857fe5b9060005260206000209060080201600201600484815481101515611ac857fe5b9060005260206000209060080201600401600485815481101515611ae857fe5b906000526020600020906008020160060154600260405180806020018060200180602001868152602001858152602001848103845289818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015611b995780601f10611b6e57610100808354040283529160200191611b99565b820191906000526020600020905b815481529060010190602001808311611b7c57829003601f168201915b5050848103835288546002600019610100600184161502019091160480825260209091019089908015611c0d5780601f10611be257610100808354040283529160200191611c0d565b820191906000526020600020905b815481529060010190602001808311611bf057829003601f168201915b5050848103825287546002600019610100600184161502019091160480825260209091019088908015611c815780601f10611c5657610100808354040283529160200191611c81565b820191906000526020600020905b815481529060010190602001808311611c6457829003601f168201915b50509850505050505050505060405180910390a1505050565b6060806060600080611ce187878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506121b792505050565b1515611d5057868660008083838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602081810183528382528251908101909252918152949d509b50929950939750919550611ff9945050505050565b6000611d9188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061224592505050565b9050600481815481101515611da257fe5b9060005260206000209060080201600001600482815481101515611dc257fe5b9060005260206000209060080201600201600483815481101515611de257fe5b9060005260206000209060080201600401600484815481101515611e0257fe5b906000526020600020906008020160060154600485815481101515611e2357fe5b906000526020600020906008020160010154848054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611eca5780601f10611e9f57610100808354040283529160200191611eca565b820191906000526020600020905b815481529060010190602001808311611ead57829003601f168201915b5050875460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959a5089945092508401905082828015611f585780601f10611f2d57610100808354040283529160200191611f58565b820191906000526020600020905b815481529060010190602001808311611f3b57829003601f168201915b5050865460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815295995088945092508401905082828015611fe65780601f10611fbb57610100808354040283529160200191611fe6565b820191906000526020600020905b815481529060010190602001808311611fc957829003601f168201915b5050505050925095509550955095509550505b9295509295909350565b600160009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561205457600080fd5b505afa158015612068573d6000803e3d6000fd5b505050506040513d602081101561207e57600080fd5b5051600160a060020a031633146120cd576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a2833981519152604482015290519081900360640190fd5b81818080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061210f92508391506121b79050565b15612164576040805160e560020a62461bcd02815260206004820152600a60248201527f6f72672065786973747300000000000000000000000000000000000000000000604482015290519081900360640190fd5b6040805160208181018352600082528251601f86018290048202810182019093528483526121b29290869086908190840183828082843760009201919091525060019250829150612ace9050565b505050565b600060056000836040516020018082805190602001908083835b602083106121f05780518252601f1990920191602091820191016121d1565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120815260200190815260200160002054600014159050919050565b6000600160056000846040516020018082805190602001908083835b602083106122805780518252601f199092019160209182019101612261565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120815260200190815260200160002054039050919050565b6122dd81600261160f565b15156001146123205760405160e560020a62461bcd0281526004018080602001828103825260348152602001806138e96034913960400191505060405180910390fd5b600061232b82612245565b9050600360048281548110151561233e57fe5b9060005260206000209060080201600101819055507f0e8b7be64e0c730234ba2cd252b227fb481d7a247ba806d1941144c535bf054b60048281548110151561238357fe5b90600052602060002090600802016000016004838154811015156123a357fe5b90600052602060002090600802016002016004848154811015156123c357fe5b90600052602060002090600802016004016004858154811015156123e357fe5b9060005260206000209060080201600601546003604051808060200180602001806020018681526020018581526020018481038452898181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156124945780601f1061246957610100808354040283529160200191612494565b820191906000526020600020905b81548152906001019060200180831161247757829003601f168201915b50508481038352885460026000196101006001841615020190911604808252602090910190899080156125085780601f106124dd57610100808354040283529160200191612508565b820191906000526020600020905b8154815290600101906020018083116124eb57829003601f168201915b505084810382528754600260001961010060018416150201909116048082526020909101908890801561257c5780601f106125515761010080835404028352916020019161257c565b820191906000526020600020905b81548152906001019060200180831161255f57829003601f168201915b50509850505050505050505060405180910390a15050565b61259f81600461160f565b15156001146125f8576040805160e560020a62461bcd02815260206004820152601a60248201527f6f7267206e6f7420696e2073757370656e646564207374617465000000000000604482015290519081900360640190fd5b600061260382612245565b9050600560048281548110151561261657fe5b9060005260206000209060080201600101819055507f0e8b7be64e0c730234ba2cd252b227fb481d7a247ba806d1941144c535bf054b60048281548110151561265b57fe5b906000526020600020906008020160000160048381548110151561267b57fe5b906000526020600020906008020160020160048481548110151561269b57fe5b90600052602060002090600802016004016004858154811015156126bb57fe5b9060005260206000209060080201600601546005604051808060200180602001806020018681526020018581526020018481038452898181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156124945780601f1061246957610100808354040283529160200191612494565b61274c81600361160f565b15156001146127a5576040805160e560020a62461bcd02815260206004820152601260248201527f6e6f7468696e6720746f20617070726f76650000000000000000000000000000604482015290519081900360640190fd5b60006127b082612245565b9050600480828154811015156127c257fe5b9060005260206000209060080201600101819055507f73ccf8d6c8385bf5347269bd59712da33183c1a5e1702494bcdb87d0f4674d9660048281548110151561280757fe5b906000526020600020906008020160000160048381548110151561282757fe5b906000526020600020906008020160020160048481548110151561284757fe5b906000526020600020906008020160040160048581548110151561286757fe5b600091825260209182902060066008909202010154604080516060810183905260808082528754600260001961010060018416150201909116049082018190529293909283929183019183019060a0840190899080156129085780601f106128dd57610100808354040283529160200191612908565b820191906000526020600020905b8154815290600101906020018083116128eb57829003601f168201915b505084810383528754600260001961010060018416150201909116048082526020909101908890801561297c5780601f106129515761010080835404028352916020019161297c565b820191906000526020600020905b81548152906001019060200180831161295f57829003601f168201915b50508481038252865460026000196101006001841615020190911604808252602090910190879080156129f05780601f106129c5576101008083540402835291602001916129f0565b820191906000526020600020905b8154815290600101906020018083116129d357829003601f168201915b505097505050505050505060405180910390a15050565b612a1281600561160f565b1515600114612a6b576040805160e560020a62461bcd02815260206004820152601260248201527f6e6f7468696e6720746f20617070726f76650000000000000000000000000000604482015290519081900360640190fd5b6000612a7682612245565b90506002600482815481101515612a8957fe5b9060005260206000209060080201600101819055507f882f030c609566cd82918a97d457fd48f9cfcefd11282e2654cde3f94579c15f60048281548110151561280757fe5b600080806001851415612b5057856040516020018082805190602001908083835b60208310612b0e5780518252601f199092019160209182019101612aef565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052805190602001209150612ca8565b866040516020018082805190602001908083835b60208310612b835780518252601f199092019160209182019101612b64565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120925086866040516020018083805190602001908083835b60208310612bf45780518252601f199092019160209182019101612bd5565b6001836020036101000a038019825116818451168082178552505050505050905001807f2e0000000000000000000000000000000000000000000000000000000000000081525060010182805190602001908083835b60208310612c695780518252601f199092019160209182019101612c4a565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040528051906020012091505b600680546001908101918290556000848152600560205260408120929092556004805491612cd89190830161361c565b90508560011415612d9d5785600482815481101515612cf357fe5b9060005260206000209060080201600601819055506000600482815481101515612d1957fe5b90600052602060002090600802016005018190555086600482815481101515612d3e57fe5b90600052602060002090600802016003019080519060200190612d62929190613648565b5086600482815481101515612d7357fe5b90600052602060002090600802016004019080519060200190612d97929190613648565b506130fa565b600084815260056020526040902054600354600480546000199093019450909184908110612dc757fe5b600091825260209091206007600890920201015410612e30576040805160e560020a62461bcd02815260206004820152601660248201527f62726561647468206c6576656c20657863656564656400000000000000000000604482015290519081900360640190fd5b6002546004805484908110612e4157fe5b906000526020600020906008020160060154101515612eaa576040805160e560020a62461bcd02815260206004820152601460248201527f6465707468206c6576656c206578636565646564000000000000000000000000604482015290519081900360640190fd5b6004805483908110612eb857fe5b906000526020600020906008020160060154600101600482815481101515612edc57fe5b90600052602060002090600802016006018190555081600482815481101515612f0157fe5b60009182526020909120600560089092020101556004805483908110612f2357fe5b9060005260206000209060080201600401600482815481101515612f4357fe5b90600052602060002090600802016004019080546001816001161561010002031660029004612f739291906136c6565b506000600483815481101515612f8557fe5b90600052602060002090600802016007018054809190600101612fa8919061373b565b905081600484815481101515612fba57fe5b906000526020600020906008020160070182815481101515612fd857fe5b906000526020600020018190555088886040516020018083805190602001908083835b6020831061301a5780518252601f199092019160209182019101612ffb565b6001836020036101000a038019825116818451168082178552505050505050905001807f2e0000000000000000000000000000000000000000000000000000000000000081525060010182805190602001908083835b6020831061308f5780518252601f199092019160209182019101613070565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526004838154811015156130d357fe5b906000526020600020906008020160030190805190602001906130f7929190613648565b50505b8660048281548110151561310a57fe5b9060005260206000209060080201600001908051906020019061312e929190613648565b508760048281548110151561313f57fe5b90600052602060002090600802016002019080519060200190613163929190613648565b508460048281548110151561317457fe5b90600052602060002090600802016001018190555084600114156133d4577f0e8b7be64e0c730234ba2cd252b227fb481d7a247ba806d1941144c535bf054b6004828154811015156131c257fe5b90600052602060002090600802016000016004838154811015156131e257fe5b906000526020600020906008020160020160048481548110151561320257fe5b906000526020600020906008020160040160048581548110151561322257fe5b9060005260206000209060080201600601546001604051808060200180602001806020018681526020018581526020018481038452898181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156132d35780601f106132a8576101008083540402835291602001916132d3565b820191906000526020600020905b8154815290600101906020018083116132b657829003601f168201915b50508481038352885460026000196101006001841615020190911604808252602090910190899080156133475780601f1061331c57610100808354040283529160200191613347565b820191906000526020600020905b81548152906001019060200180831161332a57829003601f168201915b50508481038252875460026000196101006001841615020190911604808252602090910190889080156133bb5780601f10613390576101008083540402835291602001916133bb565b820191906000526020600020905b81548152906001019060200180831161339e57829003601f168201915b50509850505050505050505060405180910390a1613612565b7fd705723a50859c9cc1d3953e10b8b9478820e7a62927ad3215897ed87b20591c60048281548110151561340457fe5b906000526020600020906008020160000160048381548110151561342457fe5b906000526020600020906008020160020160048481548110151561344457fe5b906000526020600020906008020160040160048581548110151561346457fe5b9060005260206000209060080201600601546002604051808060200180602001806020018681526020018581526020018481038452898181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156135155780601f106134ea57610100808354040283529160200191613515565b820191906000526020600020905b8154815290600101906020018083116134f857829003601f168201915b50508481038352885460026000196101006001841615020190911604808252602090910190899080156135895780601f1061355e57610100808354040283529160200191613589565b820191906000526020600020905b81548152906001019060200180831161356c57829003601f168201915b50508481038252875460026000196101006001841615020190911604808252602090910190889080156135fd5780601f106135d2576101008083540402835291602001916135fd565b820191906000526020600020905b8154815290600101906020018083116135e057829003601f168201915b50509850505050505050505060405180910390a15b5050505050505050565b8154818355818111156121b2576008028160080283600052602060002091820191016121b2919061375f565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061368957805160ff19168380011785556136b6565b828001600101855582156136b6579182015b828111156136b657825182559160200191906001019061369b565b506136c29291506137d6565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106136ff57805485556136b6565b828001600101855582156136b657600052602060002091601f016020900482015b828111156136b6578254825591600101919060010190613720565b8154818355818111156121b2576000838152602090206121b29181019083016137d6565b61160c91905b808211156136c257600061377982826137f0565b600182016000905560028201600061379191906137f0565b61379f6003830160006137f0565b6137ad6004830160006137f0565b600582016000905560068201600090556007820160006137cd9190613837565b50600801613765565b61160c91905b808211156136c257600081556001016137dc565b50805460018160011615610100020316600290046000825580601f106138165750613834565b601f01602090049060005260206000209081019061383491906137d6565b50565b508054600082559060005260206000209081019061383491906137d656fe696e76616c696420616374696f6e2e206f7065726174696f6e206e6f7420616c6c6f7765646e6f742061206d6173746572206f72672e206f7065726174696f6e206e6f7420616c6c6f776564696e76616c69642063616c6c65720000000000000000000000000000000000006f72672073746174757320646f6573206e6f7420616c6c6f7720746865206f7065726174696f6e6f7267206e6f7420696e20617070726f766564207374617475732e206f7065726174696f6e2063616e6e6f7420626520646f6e65a165627a7a7230582095292109a21e643d36753da64a1264f306e4f58969f791397d752271faaea41f0029" // DeployOrgManager deploys a new Ethereum contract, binding an instance of OrgManager to it. func DeployOrgManager(auth *bind.TransactOpts, backend bind.ContractBackend, _permUpgradable common.Address) (common.Address, *types.Transaction, *OrgManager, error) { @@ -189,32 +189,6 @@ func (_OrgManager *OrgManagerTransactorRaw) Transact(opts *bind.TransactOpts, me return _OrgManager.Contract.contract.Transact(opts, method, params...) } -// GetOrgIndex is a free data retrieval call binding the contract method 0x320d2c39. -// -// Solidity: function _getOrgIndex(string _orgId) constant returns(uint256) -func (_OrgManager *OrgManagerCaller) GetOrgIndex(opts *bind.CallOpts, _orgId string) (*big.Int, error) { - var ( - ret0 = new(*big.Int) - ) - out := ret0 - err := _OrgManager.contract.Call(opts, out, "_getOrgIndex", _orgId) - return *ret0, err -} - -// GetOrgIndex is a free data retrieval call binding the contract method 0x320d2c39. -// -// Solidity: function _getOrgIndex(string _orgId) constant returns(uint256) -func (_OrgManager *OrgManagerSession) GetOrgIndex(_orgId string) (*big.Int, error) { - return _OrgManager.Contract.GetOrgIndex(&_OrgManager.CallOpts, _orgId) -} - -// GetOrgIndex is a free data retrieval call binding the contract method 0x320d2c39. -// -// Solidity: function _getOrgIndex(string _orgId) constant returns(uint256) -func (_OrgManager *OrgManagerCallerSession) GetOrgIndex(_orgId string) (*big.Int, error) { - return _OrgManager.Contract.GetOrgIndex(&_OrgManager.CallOpts, _orgId) -} - // CheckOrgExists is a free data retrieval call binding the contract method 0xffe40d1d. // // Solidity: function checkOrgExists(string _orgId) constant returns(bool) @@ -293,6 +267,42 @@ func (_OrgManager *OrgManagerCallerSession) GetNumberOfOrgs() (*big.Int, error) return _OrgManager.Contract.GetNumberOfOrgs(&_OrgManager.CallOpts) } +// GetOrgDetails is a free data retrieval call binding the contract method 0xf4d6d9f5. +// +// Solidity: function getOrgDetails(string _orgId) constant returns(string, string, string, uint256, uint256) +func (_OrgManager *OrgManagerCaller) GetOrgDetails(opts *bind.CallOpts, _orgId string) (string, string, string, *big.Int, *big.Int, error) { + var ( + ret0 = new(string) + ret1 = new(string) + ret2 = new(string) + ret3 = new(*big.Int) + ret4 = new(*big.Int) + ) + out := &[]interface{}{ + ret0, + ret1, + ret2, + ret3, + ret4, + } + err := _OrgManager.contract.Call(opts, out, "getOrgDetails", _orgId) + return *ret0, *ret1, *ret2, *ret3, *ret4, err +} + +// GetOrgDetails is a free data retrieval call binding the contract method 0xf4d6d9f5. +// +// Solidity: function getOrgDetails(string _orgId) constant returns(string, string, string, uint256, uint256) +func (_OrgManager *OrgManagerSession) GetOrgDetails(_orgId string) (string, string, string, *big.Int, *big.Int, error) { + return _OrgManager.Contract.GetOrgDetails(&_OrgManager.CallOpts, _orgId) +} + +// GetOrgDetails is a free data retrieval call binding the contract method 0xf4d6d9f5. +// +// Solidity: function getOrgDetails(string _orgId) constant returns(string, string, string, uint256, uint256) +func (_OrgManager *OrgManagerCallerSession) GetOrgDetails(_orgId string) (string, string, string, *big.Int, *big.Int, error) { + return _OrgManager.Contract.GetOrgDetails(&_OrgManager.CallOpts, _orgId) +} + // GetOrgInfo is a free data retrieval call binding the contract method 0x5c4f32ee. // // Solidity: function getOrgInfo(uint256 _orgIndex) constant returns(string, string, string, uint256, uint256) @@ -329,6 +339,32 @@ func (_OrgManager *OrgManagerCallerSession) GetOrgInfo(_orgIndex *big.Int) (stri return _OrgManager.Contract.GetOrgInfo(&_OrgManager.CallOpts, _orgIndex) } +// GetSubOrgIndexes is a free data retrieval call binding the contract method 0x5e99f6e5. +// +// Solidity: function getSubOrgIndexes(string _orgId) constant returns(uint256[]) +func (_OrgManager *OrgManagerCaller) GetSubOrgIndexes(opts *bind.CallOpts, _orgId string) ([]*big.Int, error) { + var ( + ret0 = new([]*big.Int) + ) + out := ret0 + err := _OrgManager.contract.Call(opts, out, "getSubOrgIndexes", _orgId) + return *ret0, err +} + +// GetSubOrgIndexes is a free data retrieval call binding the contract method 0x5e99f6e5. +// +// Solidity: function getSubOrgIndexes(string _orgId) constant returns(uint256[]) +func (_OrgManager *OrgManagerSession) GetSubOrgIndexes(_orgId string) ([]*big.Int, error) { + return _OrgManager.Contract.GetSubOrgIndexes(&_OrgManager.CallOpts, _orgId) +} + +// GetSubOrgIndexes is a free data retrieval call binding the contract method 0x5e99f6e5. +// +// Solidity: function getSubOrgIndexes(string _orgId) constant returns(uint256[]) +func (_OrgManager *OrgManagerCallerSession) GetSubOrgIndexes(_orgId string) ([]*big.Int, error) { + return _OrgManager.Contract.GetSubOrgIndexes(&_OrgManager.CallOpts, _orgId) +} + // GetUltimateParent is a free data retrieval call binding the contract method 0x177c8d8a. // // Solidity: function getUltimateParent(string _orgId) constant returns(string) diff --git a/permission/bind/permission_impl.go b/permission/bind/permission_impl.go index 8926836ac..57244887f 100644 --- a/permission/bind/permission_impl.go +++ b/permission/bind/permission_impl.go @@ -31,7 +31,7 @@ var ( 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\"}]" // PermImplBin is the compiled bytecode used for deploying new contracts. -var PermImplBin = "0x60806040526003600955600a805460ff191690553480156200002057600080fd5b5060405160c08062007532833981018060405260c08110156200004257600080fd5b508051602082015160408301516060840151608085015160a09095015160058054600160a060020a03968716600160a060020a031991821617909155600480549587169582169590951790945560018054938616938516939093179092556000805491851691841691909117905560028054948416948316949094179093556003805492909316911617905561745480620000de6000396000f3fe608060405234801561001057600080fd5b50600436106101d35760003560e060020a90048063655a8ef511610108578063b5546564116100a6578063dbfad71111610075578063dbfad7111461119a578063f346a3a714611267578063f5ad584a146113d3578063f922f802146114e3576101d3565b8063b554656414610edc578063c3dc8e0914610f59578063cc9ba6fa14611020578063d1aa0c2014611174576101d3565b80638baa8191116100e25780638baa819114610baa5780639bd3810114610cee578063a5843f0814610da2578063a64d286014610dc5576101d3565b8063655a8ef5146109b05780636b568d7614610a775780638884304114610b2b576101d3565b8063404bf3eb116101755780634cbfa82e1161014f5780634cbfa82e146107f45780634fe57e7a146107fc57806359a260a3146108225780635ca5adbe146108e9576101d3565b8063404bf3eb1461068557806344478e79146107595780634b20f45f14610775576101d3565b80631c249912116101b15780631c2499121461044c5780633bc07dea146104cb5780633cf5f33b1461059a5780633f25c28814610617576101d3565b806304e81f1e146101d85780631b04c276146102615780631b6102201461033e575b600080fd5b61025f600480360360808110156101ee57600080fd5b810190602081018135602060020a81111561020857600080fd5b82018360208201111561021a57600080fd5b803590602001918460018302840111602060020a8311171561023b57600080fd5b9193509150600160a060020a038135811691602081013591604090910135166115b2565b005b61025f600480360360c081101561027757600080fd5b810190602081018135602060020a81111561029157600080fd5b8201836020820111156102a357600080fd5b803590602001918460018302840111602060020a831117156102c457600080fd5b919390929091602081019035602060020a8111156102e157600080fd5b8201836020820111156102f357600080fd5b803590602001918460018302840111602060020a8311171561031457600080fd5b91935091508035906020810135151590604081013515159060600135600160a060020a031661181e565b61025f6004803603606081101561035457600080fd5b810190602081018135602060020a81111561036e57600080fd5b82018360208201111561038057600080fd5b803590602001918460018302840111602060020a831117156103a157600080fd5b919390929091602081019035602060020a8111156103be57600080fd5b8201836020820111156103d057600080fd5b803590602001918460018302840111602060020a831117156103f157600080fd5b919390929091602081019035602060020a81111561040e57600080fd5b82018360208201111561042057600080fd5b803590602001918460018302840111602060020a8311171561044157600080fd5b509092509050611af9565b61025f6004803603606081101561046257600080fd5b810190602081018135602060020a81111561047c57600080fd5b82018360208201111561048e57600080fd5b803590602001918460018302840111602060020a831117156104af57600080fd5b9193509150600160a060020a0381358116916020013516611c3b565b61025f600480360360808110156104e157600080fd5b810190602081018135602060020a8111156104fb57600080fd5b82018360208201111561050d57600080fd5b803590602001918460018302840111602060020a8311171561052e57600080fd5b919390929091602081019035602060020a81111561054b57600080fd5b82018360208201111561055d57600080fd5b803590602001918460018302840111602060020a8311171561057e57600080fd5b9193509150600160a060020a0381358116916020013516611f53565b61025f600480360360608110156105b057600080fd5b810190602081018135602060020a8111156105ca57600080fd5b8201836020820111156105dc57600080fd5b803590602001918460018302840111602060020a831117156105fd57600080fd5b919350915080359060200135600160a060020a0316612534565b61025f6004803603602081101561062d57600080fd5b810190602081018135602060020a81111561064757600080fd5b82018360208201111561065957600080fd5b803590602001918460018302840111602060020a8311171561067a57600080fd5b509092509050612855565b61025f6004803603608081101561069b57600080fd5b810190602081018135602060020a8111156106b557600080fd5b8201836020820111156106c757600080fd5b803590602001918460018302840111602060020a831117156106e857600080fd5b91939092600160a060020a0383351692604081019060200135602060020a81111561071257600080fd5b82018360208201111561072457600080fd5b803590602001918460018302840111602060020a8311171561074557600080fd5b919350915035600160a060020a0316612a82565b610761612e62565b604080519115158252519081900360200190f35b61025f6004803603606081101561078b57600080fd5b810190602081018135602060020a8111156107a557600080fd5b8201836020820111156107b757600080fd5b803590602001918460018302840111602060020a831117156107d857600080fd5b9193509150600160a060020a0381358116916020013516612f9a565b6107616131fc565b61025f6004803603602081101561081257600080fd5b5035600160a060020a0316613206565b61025f6004803603606081101561083857600080fd5b810190602081018135602060020a81111561085257600080fd5b82018360208201111561086457600080fd5b803590602001918460018302840111602060020a8311171561088557600080fd5b919390929091602081019035602060020a8111156108a257600080fd5b8201836020820111156108b457600080fd5b803590602001918460018302840111602060020a831117156108d557600080fd5b919350915035600160a060020a0316613540565b61025f600480360360608110156108ff57600080fd5b810190602081018135602060020a81111561091957600080fd5b82018360208201111561092b57600080fd5b803590602001918460018302840111602060020a8311171561094c57600080fd5b919390929091602081019035602060020a81111561096957600080fd5b82018360208201111561097b57600080fd5b803590602001918460018302840111602060020a8311171561099c57600080fd5b919350915035600160a060020a03166137d5565b61025f600480360360608110156109c657600080fd5b810190602081018135602060020a8111156109e057600080fd5b8201836020820111156109f257600080fd5b803590602001918460018302840111602060020a83111715610a1357600080fd5b919390929091602081019035602060020a811115610a3057600080fd5b820183602082011115610a4257600080fd5b803590602001918460018302840111602060020a83111715610a6357600080fd5b919350915035600160a060020a0316613cb0565b61076160048036036040811015610a8d57600080fd5b600160a060020a038235169190810190604081016020820135602060020a811115610ab757600080fd5b820183602082011115610ac957600080fd5b803590602001918460018302840111602060020a83111715610aea57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550613f2d945050505050565b61025f60048036036060811015610b4157600080fd5b810190602081018135602060020a811115610b5b57600080fd5b820183602082011115610b6d57600080fd5b803590602001918460018302840111602060020a83111715610b8e57600080fd5b9193509150600160a060020a0381358116916020013516614031565b61025f60048036036080811015610bc057600080fd5b600160a060020a038235169190810190604081016020820135602060020a811115610bea57600080fd5b820183602082011115610bfc57600080fd5b803590602001918460018302840111602060020a83111715610c1d57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a811115610c6f57600080fd5b820183602082011115610c8157600080fd5b803590602001918460018302840111602060020a83111715610ca257600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050509035600160a060020a031691506144b59050565b61076160048036036040811015610d0457600080fd5b600160a060020a038235169190810190604081016020820135602060020a811115610d2e57600080fd5b820183602082011115610d4057600080fd5b803590602001918460018302840111602060020a83111715610d6157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506149df945050505050565b61025f60048036036040811015610db857600080fd5b5080359060200135614db3565b61025f60048036036080811015610ddb57600080fd5b810190602081018135602060020a811115610df557600080fd5b820183602082011115610e0757600080fd5b803590602001918460018302840111602060020a83111715610e2857600080fd5b919390929091602081019035602060020a811115610e4557600080fd5b820183602082011115610e5757600080fd5b803590602001918460018302840111602060020a83111715610e7857600080fd5b919390929091602081019035602060020a811115610e9557600080fd5b820183602082011115610ea757600080fd5b803590602001918460018302840111602060020a83111715610ec857600080fd5b919350915035600160a060020a03166152b3565b61025f60048036036060811015610ef257600080fd5b810190602081018135602060020a811115610f0c57600080fd5b820183602082011115610f1e57600080fd5b803590602001918460018302840111602060020a83111715610f3f57600080fd5b919350915080359060200135600160a060020a03166156d8565b61025f60048036036060811015610f6f57600080fd5b810190602081018135602060020a811115610f8957600080fd5b820183602082011115610f9b57600080fd5b803590602001918460018302840111602060020a83111715610fbc57600080fd5b919390929091602081019035602060020a811115610fd957600080fd5b820183602082011115610feb57600080fd5b803590602001918460018302840111602060020a8311171561100c57600080fd5b919350915035600160a060020a0316615a4a565b611028615d7f565b604080518215156060820152608080825286519082015285519091829160208084019284019160a08501918a019080838360005b8381101561107457818101518382015260200161105c565b50505050905090810190601f1680156110a15780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b838110156110d45781810151838201526020016110bc565b50505050905090810190601f1680156111015780820380516001836020036101000a031916815260200191505b50848103825286518152865160209182019188019080838360005b8381101561113457818101518382015260200161111c565b50505050905090810190601f1680156111615780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b6107616004803603602081101561118a57600080fd5b5035600160a060020a0316615f52565b61025f600480360360808110156111b057600080fd5b810190602081018135602060020a8111156111ca57600080fd5b8201836020820111156111dc57600080fd5b803590602001918460018302840111602060020a831117156111fd57600080fd5b919390929091602081019035602060020a81111561121a57600080fd5b82018360208201111561122c57600080fd5b803590602001918460018302840111602060020a8311171561124d57600080fd5b919350915080359060200135600160a060020a031661616c565b6112d56004803603602081101561127d57600080fd5b810190602081018135602060020a81111561129757600080fd5b8201836020820111156112a957600080fd5b803590602001918460018302840111602060020a831117156112ca57600080fd5b5090925090506163dd565b60405180806020018060200185600160a060020a0316600160a060020a03168152602001848152602001838103835287818151815260200191508051906020019080838360005b8381101561133457818101518382015260200161131c565b50505050905090810190601f1680156113615780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b8381101561139457818101518382015260200161137c565b50505050905090810190601f1680156113c15780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b61025f600480360360808110156113e957600080fd5b810190602081018135602060020a81111561140357600080fd5b82018360208201111561141557600080fd5b803590602001918460018302840111602060020a8311171561143657600080fd5b919390929091602081019035602060020a81111561145357600080fd5b82018360208201111561146557600080fd5b803590602001918460018302840111602060020a8311171561148657600080fd5b919390929091602081019035602060020a8111156114a357600080fd5b8201836020820111156114b557600080fd5b803590602001918460018302840111602060020a831117156114d657600080fd5b919350915035151561655c565b61025f600480360360808110156114f957600080fd5b810190602081018135602060020a81111561151357600080fd5b82018360208201111561152557600080fd5b803590602001918460018302840111602060020a8311171561154657600080fd5b919390929091602081019035602060020a81111561156357600080fd5b82018360208201111561157557600080fd5b803590602001918460018302840111602060020a8311171561159657600080fd5b9193509150600160a060020a038135811691602001351661664b565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561160357600080fd5b505afa158015611617573d6000803e3d6000fd5b505050506040513d602081101561162d57600080fd5b5051600160a060020a031633146116785760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b8085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506116bc92508491508390506149df565b15156001146116ff5760405160e560020a62461bcd0281526004018080602001828103825260228152602001806174076022913960400191505060405180910390fd5b836001148061170e5750836002145b806117195750836003145b15156117595760405160e560020a62461bcd0281526004018080602001828103825260258152602001806173946025913960400191505060405180910390fd5b6000546040517f84b7a84a000000000000000000000000000000000000000000000000000000008152600160a060020a03878116602483015260448201879052606060048301908152606483018a90529216916384b7a84a918a918a918a918a918190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156117fd57600080fd5b505af1158015611811573d6000803e3d6000fd5b5050505050505050505050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561186f57600080fd5b505afa158015611883573d6000803e3d6000fd5b505050506040513d602081101561189957600080fd5b5051600160a060020a031633146118e45760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506119269250839150616c399050565b151560011461196d576040805160e560020a62461bcd02815260206004820152601a6024820152600080516020617354833981519152604482015290519081900360640190fd5b8187878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506119b192508491508390506149df565b15156001146119f45760405160e560020a62461bcd0281526004018080602001828103825260228152602001806174076022913960400191505060405180910390fd5b6001546040517f7b713579000000000000000000000000000000000000000000000000000000008152604481018990528715156064820152861515608482015260a06004820190815260a482018d9052600160a060020a0390921691637b713579918e918e918e918e918e918e918e91908190602481019060c4018a8a80828437600083820152601f01601f191690910184810383528881526020019050888880828437600081840152601f19601f8201169050808301925050509950505050505050505050600060405180830381600087803b158015611ad457600080fd5b505af1158015611ae8573d6000803e3d6000fd5b505050505050505050505050505050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015611b4a57600080fd5b505afa158015611b5e573d6000803e3d6000fd5b505050506040513d6020811015611b7457600080fd5b5051600160a060020a03163314611bbf5760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b600a5460009060ff1615611c0b576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020617374833981519152604482015290519081900360640190fd5b611c17600688886172c5565b50611c24600786866172c5565b50611c31600884846172c5565b5050505050505050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015611c8c57600080fd5b505afa158015611ca0573d6000803e3d6000fd5b505050506040513d6020811015611cb657600080fd5b5051600160a060020a03163314611d015760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b80611d0b81615f52565b1515600114611d4e5760405160e560020a62461bcd0281526004018080602001828103825260268152602001806173e16026913960400191505060405180910390fd5b6000546040517f84b7a84a000000000000000000000000000000000000000000000000000000008152600160a060020a03858116602483015260046044830181905260608382019081526064840189905291909316926384b7a84a928992899289929091908190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611df657600080fd5b505af1158015611e0a573d6000803e3d6000fd5b50506002805460405160e060020a63e98ac22d028152600160a060020a03888116606483015260066084830181905260a060048401908152815460001960018216156101000201169590950460a4840181905291909316955063e98ac22d945091928a928a928a928692909182916024820191604481019160c49091019086908015611ed75780601f10611eac57610100808354040283529160200191611ed7565b820191906000526020600020905b815481529060010190602001808311611eba57829003601f168201915b50508481038352878152602001888880828437600081840152601f19601f82011690508083019250505084810382526000815260200160200198505050505050505050600060405180830381600087803b158015611f3457600080fd5b505af1158015611f48573d6000803e3d6000fd5b505050505050505050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015611fa457600080fd5b505afa158015611fb8573d6000803e3d6000fd5b505050506040513d6020811015611fce57600080fd5b5051600160a060020a031633146120195760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b8061202381615f52565b15156001146120665760405160e560020a62461bcd0281526004018080602001828103825260268152602001806173e16026913960400191505060405180910390fd5b6120a887878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250616d3e915050565b1515600114612101576040805160e560020a62461bcd02815260206004820152601260248201527f4e6f7468696e6720746f20617070726f76650000000000000000000000000000604482015290519081900360640190fd5b60068054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815261219b939092909183018282801561218e5780601f106121635761010080835404028352916020019161218e565b820191906000526020600020905b81548152906001019060200180831161217157829003601f168201915b5050505050836001616dc1565b1561252b57600480546040517fe3028316000000000000000000000000000000000000000000000000000000008152602092810192835260248101899052600160a060020a039091169163e3028316918a918a918190604401848480828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561223057600080fd5b505af1158015612244573d6000803e3d6000fd5b5050600180546009546040517f7b71357900000000000000000000000000000000000000000000000000000000815260448101829052606481018490526084810184905260a0600482019081526008805460026000198289161561010002019091160460a48401819052600160a060020a039095169750637b7135799650948e948e94939192839290918291602481019160c4909101908a90801561232a5780601f106122ff5761010080835404028352916020019161232a565b820191906000526020600020905b81548152906001019060200180831161230d57829003601f168201915b50508381038252878152602001888880828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b15801561237857600080fd5b505af115801561238c573d6000803e3d6000fd5b5050600354604080517f86bc36520000000000000000000000000000000000000000000000000000000081526004810191825260448101899052600160a060020a0390921693506386bc36529250889188918c918c919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561244f57600080fd5b505af1158015612463573d6000803e3d6000fd5b5050600054604080517fc214e5e5000000000000000000000000000000000000000000000000000000008152600160a060020a03888116602483015260048201928352604482018c9052909216935063c214e5e592508a918a9188918190606401858580828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b15801561250157600080fd5b505af1158015612515573d6000803e3d6000fd5b505050506040513d6020811015611f4857600080fd5b50505050505050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561258557600080fd5b505afa158015612599573d6000803e3d6000fd5b505050506040513d60208110156125af57600080fd5b5051600160a060020a031633146125fa5760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b8061260481615f52565b15156001146126475760405160e560020a62461bcd0281526004018080602001828103825260268152602001806173e16026913960400191505060405180910390fd5b60048054604080517f0cc274930000000000000000000000000000000000000000000000000000000081526024810187905292830190815260448301879052600092600160a060020a0390921691630cc27493918991899189918190606401858580828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b1580156126e357600080fd5b505af11580156126f7573d6000803e3d6000fd5b505050506040513d602081101561270d57600080fd5b50516002805460405160e060020a63e98ac22d0281526000606482018190526084820185905260a0600483019081526006805460001960018216156101000201169590950460a48401819052959650600160a060020a039093169463e98ac22d94938c938c939289929182916024820191604481019160c4909101908a9080156127d85780601f106127ad576101008083540402835291602001916127d8565b820191906000526020600020905b8154815290600101906020018083116127bb57829003601f168201915b50508481038352878152602001888880828437600081840152601f19601f82011690508083019250505084810382526000815260200160200198505050505050505050600060405180830381600087803b15801561283557600080fd5b505af1158015612849573d6000803e3d6000fd5b50505050505050505050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156128a657600080fd5b505afa1580156128ba573d6000803e3d6000fd5b505050506040513d60208110156128d057600080fd5b5051600160a060020a0316331461291b5760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b600a5460009060ff1615612967576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020617374833981519152604482015290519081900360640190fd5b600354604080517fe3b09d840000000000000000000000000000000000000000000000000000000081526004810191825260448101859052600160a060020a039092169163e3b09d84918691869160069181906024810190606401868680828437600083820152601f01601f191690910184810383528554600260001961010060018416150201909116048082526020909101915085908015612a4b5780601f10612a2057610100808354040283529160200191612a4b565b820191906000526020600020905b815481529060010190602001808311612a2e57829003601f168201915b505095505050505050600060405180830381600087803b158015612a6e57600080fd5b505af115801561252b573d6000803e3d6000fd5b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015612ad357600080fd5b505afa158015612ae7573d6000803e3d6000fd5b505050506040513d6020811015612afd57600080fd5b5051600160a060020a03163314612b485760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612b8a9250839150616ed19050565b1515600114612be3576040805160e560020a62461bcd02815260206004820152601260248201527f6f726720646f6573206e6f742065786973740000000000000000000000000000604482015290519081900360640190fd5b81612bed81615f52565b1515600114612c305760405160e560020a62461bcd0281526004018080602001828103825260268152602001806173e16026913960400191505060405180910390fd5b6000546040517fe3483a9d000000000000000000000000000000000000000000000000000000008152600160a060020a0388811660048301908152600160648401819052608060248501908152608485018d9052929094169363e3483a9d938b938e938e938d938d9391929190604481019060a401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b158015612d0957600080fd5b505af1158015612d1d573d6000803e3d6000fd5b50506002805460405160e060020a63e98ac22d028152600160a060020a038b8116606483015260046084830181905260a08382019081526006805460001960018216156101000201169690960460a4850181905292909416965063e98ac22d95508e938e938e9382916024810191604482019160c401908a908015612de35780601f10612db857610100808354040283529160200191612de3565b820191906000526020600020905b815481529060010190602001808311612dc657829003601f168201915b50508481038352878152602001888880828437600081840152601f19601f82011690508083019250505084810382526000815260200160200198505050505050505050600060405180830381600087803b158015612e4057600080fd5b505af1158015612e54573d6000803e3d6000fd5b505050505050505050505050565b600554604080517fe572515c0000000000000000000000000000000000000000000000000000000081529051600092600160a060020a03169163e572515c916004808301926020929190829003018186803b158015612ec057600080fd5b505afa158015612ed4573d6000803e3d6000fd5b505050506040513d6020811015612eea57600080fd5b5051600160a060020a03163314612f355760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b600a5460009060ff1615612f81576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020617374833981519152604482015290519081900360640190fd5b600a805460ff19166001179081905560ff1691505b5090565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015612feb57600080fd5b505afa158015612fff573d6000803e3d6000fd5b505050506040513d602081101561301557600080fd5b5051600160a060020a031633146130605760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b8061306a81615f52565b15156001146130ad5760405160e560020a62461bcd0281526004018080602001828103825260268152602001806173e16026913960400191505060405180910390fd5b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152613147939092909183018282801561313a5780601f1061310f5761010080835404028352916020019161313a565b820191906000526020600020905b81548152906001019060200180831161311d57829003601f168201915b5050505050836006616dc1565b156131f5576000546040517f84b7a84a000000000000000000000000000000000000000000000000000000008152600160a060020a0385811660248301526005604483018190526060600484019081526064840189905291909316926384b7a84a928992899289929091908190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611f3457600080fd5b5050505050565b600a5460ff165b90565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561325757600080fd5b505afa15801561326b573d6000803e3d6000fd5b505050506040513d602081101561328157600080fd5b5051600160a060020a031633146132cc5760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b600a5460009060ff1615613318576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020617374833981519152604482015290519081900360640190fd5b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526133b293909290918301828280156133a55780601f1061337a576101008083540402835291602001916133a5565b820191906000526020600020905b81548152906001019060200180831161338857829003601f168201915b5050505050836001616f96565b6000546040517fe3483a9d000000000000000000000000000000000000000000000000000000008152600160a060020a038481166004830190815260026064840181905260806024850190815260068054600019600182161561010002011683900460848701819052949096169563e3483a9d95899591946007949390929091604481019160a4909101908790801561348c5780601f106134615761010080835404028352916020019161348c565b820191906000526020600020905b81548152906001019060200180831161346f57829003601f168201915b50508381038252855460026000196101006001841615020190911604808252602090910190869080156135005780601f106134d557610100808354040283529160200191613500565b820191906000526020600020905b8154815290600101906020018083116134e357829003601f168201915b50509650505050505050600060405180830381600087803b15801561352457600080fd5b505af1158015613538573d6000803e3d6000fd5b505050505050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561359157600080fd5b505afa1580156135a5573d6000803e3d6000fd5b505050506040513d60208110156135bb57600080fd5b5051600160a060020a031633146136065760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506136489250839150616c399050565b151560011461368f576040805160e560020a62461bcd02815260206004820152601a6024820152600080516020617354833981519152604482015290519081900360640190fd5b8186868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506136d392508491508390506149df565b15156001146137165760405160e560020a62461bcd0281526004018080602001828103825260228152602001806174076022913960400191505060405180910390fd5b600354604080517f3f5e1a450000000000000000000000000000000000000000000000000000000081526004810191825260448101889052600160a060020a0390921691633f5e1a4591899189918d918d919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015612e4057600080fd5b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561382657600080fd5b505afa15801561383a573d6000803e3d6000fd5b505050506040513d602081101561385057600080fd5b5051600160a060020a0316331461389b5760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b82828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506138dd9250839150616c399050565b1515600114613924576040805160e560020a62461bcd02815260206004820152601a6024820152600080516020617354833981519152604482015290519081900360640190fd5b8184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061396892508491508390506149df565b15156001146139ab5760405160e560020a62461bcd0281526004018080602001828103825260228152602001806174076022913960400191505060405180910390fd5b6040805160208082019081526007805460026000196101006001841615020190911604938301849052929091829160609091019084908015613a2e5780601f10613a0357610100808354040283529160200191613a2e565b820191906000526020600020905b815481529060010190602001808311613a1157829003601f168201915b50509250505060405160208183030381529060405280519060200120888860405160200180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040528051906020012014158015613b9b57506040805160208082019081526008805460026000196101006001841615020190911604938301849052929091829160609091019084908015613b295780601f10613afe57610100808354040283529160200191613b29565b820191906000526020600020905b815481529060010190602001808311613b0c57829003601f168201915b50509250505060405160208183030381529060405280519060200120888860405160200180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040528051906020012014155b1515613bf1576040805160e560020a62461bcd02815260206004820152601d60248201527f61646d696e20726f6c65732063616e6e6f742062652072656d6f766564000000604482015290519081900360640190fd5b600154604080517fa634301200000000000000000000000000000000000000000000000000000000815260048101918252604481018a9052600160a060020a039092169163a6343012918b918b918b918b919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015612e4057600080fd5b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015613d0157600080fd5b505afa158015613d15573d6000803e3d6000fd5b505050506040513d6020811015613d2b57600080fd5b5051600160a060020a03163314613d765760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b80613d8081615f52565b1515600114613dc35760405160e560020a62461bcd0281526004018080602001828103825260268152602001806173e16026913960400191505060405180910390fd5b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152613e5d9390929091830182828015613e505780601f10613e2557610100808354040283529160200191613e50565b820191906000526020600020905b815481529060010190602001808311613e3357829003601f168201915b5050505050836005616dc1565b15613538576003546040517f0cc5014600000000000000000000000000000000000000000000000000000000815260056044820181905260606004830190815260648301879052600160a060020a0390931692630cc5014692889288928c928c92919081906024810190608401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b15801561283557600080fd5b60008054604080517f6b568d76000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301908152602483019384528651604484015286519190941693636b568d76938893889360649091019060208501908083838c5b83811015613fb1578181015183820152602001613f99565b50505050905090810190601f168015613fde5780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b158015613ffc57600080fd5b505afa158015614010573d6000803e3d6000fd5b505050506040513d602081101561402657600080fd5b505190505b92915050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561408257600080fd5b505afa158015614096573d6000803e3d6000fd5b505050506040513d60208110156140ac57600080fd5b5051600160a060020a031633146140f75760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b8061410181615f52565b15156001146141445760405160e560020a62461bcd0281526004018080602001828103825260268152602001806173e16026913960400191505060405180910390fd5b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526141de93909290918301828280156141d15780601f106141a6576101008083540402835291602001916141d1565b820191906000526020600020905b8154815290600101906020018083116141b457829003601f168201915b5050505050836004616dc1565b156131f557600080546040517f1d09dc93000000000000000000000000000000000000000000000000000000008152602060048201908152602482018890528392600160a060020a031691631d09dc93918a918a91908190604401848480828437600081840152601f19601f82011690508083019250505093505050506040805180830381600087803b15801561427457600080fd5b505af1158015614288573d6000803e3d6000fd5b505050506040513d604081101561429e57600080fd5b5080516020909101519092509050811561434c5760068054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815261434c939092909183018282801561433f5780601f106143145761010080835404028352916020019161433f565b820191906000526020600020905b81548152906001019060200180831161432257829003601f168201915b5050505050826000616f96565b60008054604080517fc214e5e5000000000000000000000000000000000000000000000000000000008152600160a060020a03898116602483015260048201928352604482018b90529092169163c214e5e5918b918b918b918190606401858580828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b1580156143e757600080fd5b505af11580156143fb573d6000803e3d6000fd5b505050506040513d602081101561441157600080fd5b505190508015611c315760068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152611c3193909290918301828280156144a85780601f1061447d576101008083540402835291602001916144a8565b820191906000526020600020905b81548152906001019060200180831161448b57829003601f168201915b5050505050876001616f96565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561450657600080fd5b505afa15801561451a573d6000803e3d6000fd5b505050506040513d602081101561453057600080fd5b5051600160a060020a0316331461457b5760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b808361458782826149df565b15156001146145ca5760405160e560020a62461bcd0281526004018080602001828103825260228152602001806174076022913960400191505060405180910390fd5b846145d481616c39565b151560011461461b576040805160e560020a62461bcd02815260206004820152601a6024820152600080516020617354833981519152604482015290519081900360640190fd5b6146258787613f2d565b151560011461467e576040805160e560020a62461bcd02815260206004820152601d60248201527f6f7065726174696f6e2063616e6e6f7420626520706572666f726d6564000000604482015290519081900360640190fd5b6146888587617158565b15156001146146e1576040805160e560020a62461bcd02815260206004820152601460248201527f726f6c6520646f6573206e6f7420657869737473000000000000000000000000604482015290519081900360640190fd5b600154600090600160a060020a031663be322e54878961470081617173565b6040518463ffffffff1660e060020a02815260040180806020018060200180602001848103845287818151815260200191508051906020019080838360005b8381101561475757818101518382015260200161473f565b50505050905090810190601f1680156147845780820380516001836020036101000a031916815260200191505b50848103835286518152865160209182019188019080838360005b838110156147b757818101518382015260200161479f565b50505050905090810190601f1680156147e45780820380516001836020036101000a031916815260200191505b50848103825285518152855160209182019187019080838360005b838110156148175781810151838201526020016147ff565b50505050905090810190601f1680156148445780820380516001836020036101000a031916815260200191505b50965050505050505060206040518083038186803b15801561486557600080fd5b505afa158015614879573d6000803e3d6000fd5b505050506040513d602081101561488f57600080fd5b5051600080546040517f143a5604000000000000000000000000000000000000000000000000000000008152600160a060020a038c81166004830190815285151560648401526080602484019081528d5160848501528d51969750919093169463143a5604948e948e948e948a9492939092604483019260a401916020890191908190849084905b8381101561492f578181015183820152602001614917565b50505050905090810190601f16801561495c5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561498f578181015183820152602001614977565b50505050905090810190601f1680156149bc5780820380516001836020036101000a031916815260200191505b509650505050505050600060405180830381600087803b158015612e4057600080fd5b60008054600160a060020a031663e8b42bf484846149fc81617173565b6040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a031681526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015614a67578181015183820152602001614a4f565b50505050905090810190601f168015614a945780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015614ac7578181015183820152602001614aaf565b50505050905090810190601f168015614af45780820380516001836020036101000a031916815260200191505b509550505050505060206040518083038186803b158015614b1457600080fd5b505afa158015614b28573d6000803e3d6000fd5b505050506040513d6020811015614b3e57600080fd5b505115614b4d5750600161402b565b60015460008054604080517f81d66b23000000000000000000000000000000000000000000000000000000008152600160a060020a03888116600483015291519482169463be322e549493909216926381d66b2392602480840193829003018186803b158015614bbc57600080fd5b505afa158015614bd0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015614bf957600080fd5b810190808051602060020a811115614c1057600080fd5b82016020810184811115614c2357600080fd5b8151602060020a811182820187101715614c3c57600080fd5b505092919050505084614c4e86617173565b6040518463ffffffff1660e060020a02815260040180806020018060200180602001848103845287818151815260200191508051906020019080838360005b83811015614ca5578181015183820152602001614c8d565b50505050905090810190601f168015614cd25780820380516001836020036101000a031916815260200191505b50848103835286518152865160209182019188019080838360005b83811015614d05578181015183820152602001614ced565b50505050905090810190601f168015614d325780820380516001836020036101000a031916815260200191505b50848103825285518152855160209182019187019080838360005b83811015614d65578181015183820152602001614d4d565b50505050905090810190601f168015614d925780820380516001836020036101000a031916815260200191505b50965050505050505060206040518083038186803b158015613ffc57600080fd5b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015614e0457600080fd5b505afa158015614e18573d6000803e3d6000fd5b505050506040513d6020811015614e2e57600080fd5b5051600160a060020a03163314614e795760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b600a5460009060ff1615614ec5576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020617374833981519152604482015290519081900360640190fd5b600480546040517f9e58eb9f00000000000000000000000000000000000000000000000000000000815260248101869052604481018590526060928101928352600680546002600019600183161561010002019091160460648301819052600160a060020a0390931693639e58eb9f9391928892889291829160849091019086908015614f935780601f10614f6857610100808354040283529160200191614f93565b820191906000526020600020905b815481529060010190602001808311614f7657829003601f168201915b5050945050505050600060405180830381600087803b158015614fb557600080fd5b505af1158015614fc9573d6000803e3d6000fd5b5050600180546009546040517f7b71357900000000000000000000000000000000000000000000000000000000815260448101829052606481018490526084810184905260a0600482019081526007805460026000198289161561010002019091160460a48401819052600160a060020a039095169750637b71357996509460069490928392918291602481019160c490910190899080156150ac5780601f10615081576101008083540402835291602001916150ac565b820191906000526020600020905b81548152906001019060200180831161508f57829003601f168201915b50508381038252875460026000196101006001841615020190911604808252602090910190889080156151205780601f106150f557610100808354040283529160200191615120565b820191906000526020600020905b81548152906001019060200180831161510357829003601f168201915b5050975050505050505050600060405180830381600087803b15801561514557600080fd5b505af1158015615159573d6000803e3d6000fd5b5050600054604080517fcef7f6af00000000000000000000000000000000000000000000000000000000815260048101918252600780546002600019600183161561010002019091160460448301819052600160a060020a03909416955063cef7f6af9450926008929182916024820191606401908690801561521d5780601f106151f25761010080835404028352916020019161521d565b820191906000526020600020905b81548152906001019060200180831161520057829003601f168201915b50508381038252845460026000196101006001841615020190911604808252602090910190859080156152915780601f1061526657610100808354040283529160200191615291565b820191906000526020600020905b81548152906001019060200180831161527457829003601f168201915b5050945050505050600060405180830381600087803b158015612a6e57600080fd5b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561530457600080fd5b505afa158015615318573d6000803e3d6000fd5b505050506040513d602081101561532e57600080fd5b5051600160a060020a031633146153795760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506153bb9250839150616ed19050565b1515600114615414576040805160e560020a62461bcd02815260206004820152601260248201527f6f726720646f6573206e6f742065786973740000000000000000000000000000604482015290519081900360640190fd5b8188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061545892508491508390506149df565b151560011461549b5760405160e560020a62461bcd0281526004018080602001828103825260228152602001806174076022913960400191505060405180910390fd5b60048054604080517f1f953480000000000000000000000000000000000000000000000000000000008152928301908152604483018c9052600160a060020a0390911691631f953480918d918d918d918d919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561555a57600080fd5b505af115801561556e573d6000803e3d6000fd5b5050505060608a8a8a8a604051602001808585808284377f2e00000000000000000000000000000000000000000000000000000000000000920191825250600101838380828437808301925050509450505050506040516020818303038152906040529050600087879050111561181157600354604080517f3f5e1a450000000000000000000000000000000000000000000000000000000081526004810191825260448101899052600160a060020a0390921691633f5e1a45918a918a918691819060248101906064018686808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015615689578181015183820152602001615671565b50505050905090810190601f1680156156b65780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015611ad457600080fd5b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561572957600080fd5b505afa15801561573d573d6000803e3d6000fd5b505050506040513d602081101561575357600080fd5b5051600160a060020a0316331461579e5760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b806157a881615f52565b15156001146157eb5760405160e560020a62461bcd0281526004018080602001828103825260268152602001806173e16026913960400191505060405180910390fd5b82600114806157fa5750826002145b1515615850576040805160e560020a62461bcd02815260206004820152601560248201527f4f7065726174696f6e206e6f7420616c6c6f7765640000000000000000000000604482015290519081900360640190fd5b60008084600114156158685750600290506003615879565b846002141561587957506003905060055b6158ba87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250859250616d3e915050565b1515600114615913576040805160e560020a62461bcd02815260206004820152601560248201527f6f7065726174696f6e206e6f7420616c6c6f7765640000000000000000000000604482015290519081900360640190fd5b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526159ac93909290918301828280156159a05780601f10615975576101008083540402835291602001916159a0565b820191906000526020600020905b81548152906001019060200180831161598357829003601f168201915b50505050508584616dc1565b1561252b5760048054604080517f14f775f90000000000000000000000000000000000000000000000000000000081526024810189905292830190815260448301899052600160a060020a03909116916314f775f9918a918a918a918190606401858580828437600081840152601f19601f820116905080830192505050945050505050600060405180830381600087803b1580156117fd57600080fd5b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015615a9b57600080fd5b505afa158015615aaf573d6000803e3d6000fd5b505050506040513d6020811015615ac557600080fd5b5051600160a060020a03163314615b105760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b80615b1a81615f52565b1515600114615b5d5760405160e560020a62461bcd0281526004018080602001828103825260268152602001806173e16026913960400191505060405180910390fd5b6003546040517f0cc50146000000000000000000000000000000000000000000000000000000008152600460448201819052606082820190815260648301879052600160a060020a0390931692630cc5014692889288928c928c92919081906024810190608401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015615c2757600080fd5b505af1158015615c3b573d6000803e3d6000fd5b50506002805460405160e060020a63e98ac22d02815260006064820181905260056084830181905260a0600484019081526006805460001960018216156101000201169690960460a48501819052600160a060020a03909516975063e98ac22d96508d948d948d948d9490939092909182916024820191604481019160c4909101908c908015615d0c5780601f10615ce157610100808354040283529160200191615d0c565b820191906000526020600020905b815481529060010190602001808311615cef57829003601f168201915b505084810383528981526020018a8a80828437600083820152601f01601f191690910185810383528881526020019050888880828437600081840152601f19601f8201169050808301925050509a5050505050505050505050600060405180830381600087803b15801561283557600080fd5b600a5460068054604080516020601f6002600019600187161561010002019095169490940493840181900481028201810190925282815260609485948594600094919360079360089360ff909116928691830182828015615e215780601f10615df657610100808354040283529160200191615e21565b820191906000526020600020905b815481529060010190602001808311615e0457829003601f168201915b5050865460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815295995088945092508401905082828015615eaf5780601f10615e8457610100808354040283529160200191615eaf565b820191906000526020600020905b815481529060010190602001808311615e9257829003601f168201915b5050855460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815295985087945092508401905082828015615f3d5780601f10615f1257610100808354040283529160200191615f3d565b820191906000526020600020905b815481529060010190602001808311615f2057829003601f168201915b50505050509150935093509350935090919293565b60408051602080820190815260078054600260001961010060018416150201909116049383018490526000939092829160609091019084908015615fd75780601f10615fac57610100808354040283529160200191615fd7565b820191906000526020600020905b815481529060010190602001808311615fba57829003601f168201915b505060408051601f198184030181528282528051602090910120600080547f81d66b23000000000000000000000000000000000000000000000000000000008552600160a060020a038a8116600487015293519297509290921694506381d66b239350602480840193829003018186803b15801561605457600080fd5b505afa158015616068573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561609157600080fd5b810190808051602060020a8111156160a857600080fd5b820160208101848111156160bb57600080fd5b8151602060020a8111828201871017156160d457600080fd5b50509291905050506040516020018080602001828103825283818151815260200191508051906020019080838360005b8381101561611c578181015183820152602001616104565b50505050905090810190601f1680156161495780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120149050919050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156161bd57600080fd5b505afa1580156161d1573d6000803e3d6000fd5b505050506040513d60208110156161e757600080fd5b5051600160a060020a031633146162325760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b8086868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061627692508491508390506149df565b15156001146162b95760405160e560020a62461bcd0281526004018080602001828103825260228152602001806174076022913960400191505060405180910390fd5b83600114806162c85750836002145b806162d35750836003145b15156163135760405160e560020a62461bcd0281526004018080602001828103825260258152602001806173946025913960400191505060405180910390fd5b6003546040517f0cc501460000000000000000000000000000000000000000000000000000000081526044810186905260606004820190815260648201889052600160a060020a0390921691630cc5014691899189918d918d918b919081906024810190608401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015612e4057600080fd5b6002546040517f014e6acc0000000000000000000000000000000000000000000000000000000081526020600482019081526024820184905260609283926000928392600160a060020a03169163014e6acc9189918991908190604401848480828437600081840152601f19601f820116905080830192505050935050505060006040518083038186803b15801561647457600080fd5b505afa158015616488573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260808110156164b157600080fd5b810190808051602060020a8111156164c857600080fd5b820160208101848111156164db57600080fd5b8151602060020a8111828201871017156164f457600080fd5b50509291906020018051602060020a81111561650f57600080fd5b8201602081018481111561652257600080fd5b8151602060020a81118282018710171561653b57600080fd5b50506020820151604090920151949b909a5090985092965091945050505050565b600554600160a060020a031633146165be576040805160e560020a62461bcd02815260206004820152600e60248201527f696e76616c69642063616c6c6572000000000000000000000000000000000000604482015290519081900360640190fd5b600a5460009060ff161561660a576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020617374833981519152604482015290519081900360640190fd5b616616600689896172c5565b50616623600787876172c5565b50616630600885856172c5565b5050600a805460ff1916911515919091179055505050505050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561669c57600080fd5b505afa1580156166b0573d6000803e3d6000fd5b505050506040513d60208110156166c657600080fd5b5051600160a060020a031633146167115760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b600a5460019060ff1615158114616760576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020617374833981519152604482015290519081900360640190fd5b8161676a81615f52565b15156001146167ad5760405160e560020a62461bcd0281526004018080602001828103825260268152602001806173e16026913960400191505060405180910390fd5b6002805460405160e060020a63e98ac22d028152600160a060020a03878116606483015260016084830181905260a06004840190815260068054600019818516156101000201169690960460a48501819052929094169463e98ac22d9490938e938e938e938e938e9382916024810191604482019160c401908c9080156168755780601f1061684a57610100808354040283529160200191616875565b820191906000526020600020905b81548152906001019060200180831161685857829003601f168201915b505084810383528981526020018a8a80828437600083820152601f01601f191690910185810383528881526020019050888880828437600081840152601f19601f8201169050808301925050509a5050505050505050505050600060405180830381600087803b1580156168e857600080fd5b505af11580156168fc573d6000803e3d6000fd5b5050600480546040517ff9953de50000000000000000000000000000000000000000000000000000000081526020928101928352602481018c9052600160a060020a03909116935063f9953de592508b918b918190604401848480828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561699057600080fd5b505af11580156169a4573d6000803e3d6000fd5b5050600354604080517fa97a440600000000000000000000000000000000000000000000000000000000815260048101918252604481018a9052600160a060020a03909216935063a97a44069250899189918d918d919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015616a6757600080fd5b505af1158015616a7b573d6000803e3d6000fd5b50505050616abf8489898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613f2d92505050565b1515600114616b18576040805160e560020a62461bcd02815260206004820152601d60248201527f4f7065726174696f6e2063616e6e6f7420626520706572666f726d6564000000604482015290519081900360640190fd5b6000546040517fe3483a9d000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301908152600160648401819052608060248501908152608485018d9052929094169363e3483a9d9389938e938e93600893909290604481019060a401878780828437600083820152601f01601f191690910184810383528654600260001961010060018416150201909116048082526020909101915086908015616c145780601f10616be957610100808354040283529160200191616c14565b820191906000526020600020905b815481529060010190602001808311616bf757829003601f168201915b5050975050505050505050600060405180830381600087803b158015612e4057600080fd5b60048054604080517f8c8642df000000000000000000000000000000000000000000000000000000008152600260248201819052938101918252845160448201528451600094600160a060020a0390941693638c8642df93879391929091829160649091019060208601908083838c5b83811015616cc1578181015183820152602001616ca9565b50505050905090810190601f168015616cee5780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b158015616d0c57600080fd5b505afa158015616d20573d6000803e3d6000fd5b505050506040513d6020811015616d3657600080fd5b505192915050565b60048054604080517f8c8642df00000000000000000000000000000000000000000000000000000000815260248101859052928301908152845160448401528451600093600160a060020a0390931692638c8642df9287928792829160649091019060208601908083838c83811015613fb1578181015183820152602001613f99565b6002546040517fb0213864000000000000000000000000000000000000000000000000000000008152600160a060020a03848116602483015260448201849052606060048301908152865160648401528651600094929092169263b02138649288928892889282916084019060208701908083838d5b83811015616e4f578181015183820152602001616e37565b50505050905090810190601f168015616e7c5780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b158015616e9d57600080fd5b505af1158015616eb1573d6000803e3d6000fd5b505050506040513d6020811015616ec757600080fd5b5051949350505050565b600480546040517fffe40d1d0000000000000000000000000000000000000000000000000000000081526020928101838152845160248301528451600094600160a060020a039094169363ffe40d1d9387939283926044909201918501908083838b5b83811015616f4c578181015183820152602001616f34565b50505050905090810190601f168015616f795780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b158015616d0c57600080fd5b801561708657600254604080517f5607395b000000000000000000000000000000000000000000000000000000008152600160a060020a03858116602483015260048201928352865160448301528651931692635607395b9287928792829160640190602086019080838360005b8381101561701c578181015183820152602001617004565b50505050905090810190601f1680156170495780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b15801561706957600080fd5b505af115801561707d573d6000803e3d6000fd5b50505050617153565b600254604080517f59cbd6fe000000000000000000000000000000000000000000000000000000008152600160a060020a038581166024830152600482019283528651604483015286519316926359cbd6fe9287928792829160640190602086019080838360005b838110156171065781810151838201526020016170ee565b50505050905090810190601f1680156171335780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b158015612a6e57600080fd5b505050565b600154600090600160a060020a031663abf5739f8484614c4e815b600480546040517f177c8d8a0000000000000000000000000000000000000000000000000000000081526020928101838152845160248301528451606094600160a060020a039094169363177c8d8a93879392839260449092019185019080838360005b838110156171ef5781810151838201526020016171d7565b50505050905090810190601f16801561721c5780820380516001836020036101000a031916815260200191505b509250505060006040518083038186803b15801561723957600080fd5b505afa15801561724d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561727657600080fd5b810190808051602060020a81111561728d57600080fd5b820160208101848111156172a057600080fd5b8151602060020a8111828201871017156172b957600080fd5b50909695505050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106173065782800160ff19823516178555617333565b82800160010185558215617333579182015b82811115617333578235825591602001919060010190617318565b50612f96926132039250905b80821115612f96576000815560010161733f56fe6f7267206e6f7420696e20617070726f76656420737461747573000000000000496e636f7272656374206e6574776f726b20626f6f7420737461747573000000696e76616c696420616374696f6e2e206f7065726174696f6e206e6f7420616c6c6f77656463616e2062652063616c6c656420627920696e7465726661636520636f6e7472616374206f6e6c796163636f756e74206973206e6f742061206e6574776f726b2061646d696e206163636f756e746163636f756e74206973206e6f742061206f72672061646d696e206163636f756e74a165627a7a72305820bc5279a83b455971c3fa3eda2df34e9143279cac447f0e747fe8ea8baab624530029" +var PermImplBin = "0x60806040526003600955600a805460ff191690553480156200002057600080fd5b5060405160c08062007532833981018060405260c08110156200004257600080fd5b508051602082015160408301516060840151608085015160a09095015160058054600160a060020a03968716600160a060020a031991821617909155600480549587169582169590951790945560018054938616938516939093179092556000805491851691841691909117905560028054948416948316949094179093556003805492909316911617905561745480620000de6000396000f3fe608060405234801561001057600080fd5b50600436106101d35760003560e060020a90048063655a8ef511610108578063b5546564116100a6578063dbfad71111610075578063dbfad7111461119a578063f346a3a714611267578063f5ad584a146113d3578063f922f802146114e3576101d3565b8063b554656414610edc578063c3dc8e0914610f59578063cc9ba6fa14611020578063d1aa0c2014611174576101d3565b80638baa8191116100e25780638baa819114610baa5780639bd3810114610cee578063a5843f0814610da2578063a64d286014610dc5576101d3565b8063655a8ef5146109b05780636b568d7614610a775780638884304114610b2b576101d3565b8063404bf3eb116101755780634cbfa82e1161014f5780634cbfa82e146107f45780634fe57e7a146107fc57806359a260a3146108225780635ca5adbe146108e9576101d3565b8063404bf3eb1461068557806344478e79146107595780634b20f45f14610775576101d3565b80631c249912116101b15780631c2499121461044c5780633bc07dea146104cb5780633cf5f33b1461059a5780633f25c28814610617576101d3565b806304e81f1e146101d85780631b04c276146102615780631b6102201461033e575b600080fd5b61025f600480360360808110156101ee57600080fd5b810190602081018135602060020a81111561020857600080fd5b82018360208201111561021a57600080fd5b803590602001918460018302840111602060020a8311171561023b57600080fd5b9193509150600160a060020a038135811691602081013591604090910135166115b2565b005b61025f600480360360c081101561027757600080fd5b810190602081018135602060020a81111561029157600080fd5b8201836020820111156102a357600080fd5b803590602001918460018302840111602060020a831117156102c457600080fd5b919390929091602081019035602060020a8111156102e157600080fd5b8201836020820111156102f357600080fd5b803590602001918460018302840111602060020a8311171561031457600080fd5b91935091508035906020810135151590604081013515159060600135600160a060020a031661181e565b61025f6004803603606081101561035457600080fd5b810190602081018135602060020a81111561036e57600080fd5b82018360208201111561038057600080fd5b803590602001918460018302840111602060020a831117156103a157600080fd5b919390929091602081019035602060020a8111156103be57600080fd5b8201836020820111156103d057600080fd5b803590602001918460018302840111602060020a831117156103f157600080fd5b919390929091602081019035602060020a81111561040e57600080fd5b82018360208201111561042057600080fd5b803590602001918460018302840111602060020a8311171561044157600080fd5b509092509050611af9565b61025f6004803603606081101561046257600080fd5b810190602081018135602060020a81111561047c57600080fd5b82018360208201111561048e57600080fd5b803590602001918460018302840111602060020a831117156104af57600080fd5b9193509150600160a060020a0381358116916020013516611c3b565b61025f600480360360808110156104e157600080fd5b810190602081018135602060020a8111156104fb57600080fd5b82018360208201111561050d57600080fd5b803590602001918460018302840111602060020a8311171561052e57600080fd5b919390929091602081019035602060020a81111561054b57600080fd5b82018360208201111561055d57600080fd5b803590602001918460018302840111602060020a8311171561057e57600080fd5b9193509150600160a060020a0381358116916020013516611f53565b61025f600480360360608110156105b057600080fd5b810190602081018135602060020a8111156105ca57600080fd5b8201836020820111156105dc57600080fd5b803590602001918460018302840111602060020a831117156105fd57600080fd5b919350915080359060200135600160a060020a0316612534565b61025f6004803603602081101561062d57600080fd5b810190602081018135602060020a81111561064757600080fd5b82018360208201111561065957600080fd5b803590602001918460018302840111602060020a8311171561067a57600080fd5b509092509050612855565b61025f6004803603608081101561069b57600080fd5b810190602081018135602060020a8111156106b557600080fd5b8201836020820111156106c757600080fd5b803590602001918460018302840111602060020a831117156106e857600080fd5b91939092600160a060020a0383351692604081019060200135602060020a81111561071257600080fd5b82018360208201111561072457600080fd5b803590602001918460018302840111602060020a8311171561074557600080fd5b919350915035600160a060020a0316612a82565b610761612e62565b604080519115158252519081900360200190f35b61025f6004803603606081101561078b57600080fd5b810190602081018135602060020a8111156107a557600080fd5b8201836020820111156107b757600080fd5b803590602001918460018302840111602060020a831117156107d857600080fd5b9193509150600160a060020a0381358116916020013516612f9a565b6107616131fc565b61025f6004803603602081101561081257600080fd5b5035600160a060020a0316613206565b61025f6004803603606081101561083857600080fd5b810190602081018135602060020a81111561085257600080fd5b82018360208201111561086457600080fd5b803590602001918460018302840111602060020a8311171561088557600080fd5b919390929091602081019035602060020a8111156108a257600080fd5b8201836020820111156108b457600080fd5b803590602001918460018302840111602060020a831117156108d557600080fd5b919350915035600160a060020a0316613540565b61025f600480360360608110156108ff57600080fd5b810190602081018135602060020a81111561091957600080fd5b82018360208201111561092b57600080fd5b803590602001918460018302840111602060020a8311171561094c57600080fd5b919390929091602081019035602060020a81111561096957600080fd5b82018360208201111561097b57600080fd5b803590602001918460018302840111602060020a8311171561099c57600080fd5b919350915035600160a060020a03166137d5565b61025f600480360360608110156109c657600080fd5b810190602081018135602060020a8111156109e057600080fd5b8201836020820111156109f257600080fd5b803590602001918460018302840111602060020a83111715610a1357600080fd5b919390929091602081019035602060020a811115610a3057600080fd5b820183602082011115610a4257600080fd5b803590602001918460018302840111602060020a83111715610a6357600080fd5b919350915035600160a060020a0316613cb0565b61076160048036036040811015610a8d57600080fd5b600160a060020a038235169190810190604081016020820135602060020a811115610ab757600080fd5b820183602082011115610ac957600080fd5b803590602001918460018302840111602060020a83111715610aea57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550613f2d945050505050565b61025f60048036036060811015610b4157600080fd5b810190602081018135602060020a811115610b5b57600080fd5b820183602082011115610b6d57600080fd5b803590602001918460018302840111602060020a83111715610b8e57600080fd5b9193509150600160a060020a0381358116916020013516614031565b61025f60048036036080811015610bc057600080fd5b600160a060020a038235169190810190604081016020820135602060020a811115610bea57600080fd5b820183602082011115610bfc57600080fd5b803590602001918460018302840111602060020a83111715610c1d57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a811115610c6f57600080fd5b820183602082011115610c8157600080fd5b803590602001918460018302840111602060020a83111715610ca257600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050509035600160a060020a031691506144b59050565b61076160048036036040811015610d0457600080fd5b600160a060020a038235169190810190604081016020820135602060020a811115610d2e57600080fd5b820183602082011115610d4057600080fd5b803590602001918460018302840111602060020a83111715610d6157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506149df945050505050565b61025f60048036036040811015610db857600080fd5b5080359060200135614db3565b61025f60048036036080811015610ddb57600080fd5b810190602081018135602060020a811115610df557600080fd5b820183602082011115610e0757600080fd5b803590602001918460018302840111602060020a83111715610e2857600080fd5b919390929091602081019035602060020a811115610e4557600080fd5b820183602082011115610e5757600080fd5b803590602001918460018302840111602060020a83111715610e7857600080fd5b919390929091602081019035602060020a811115610e9557600080fd5b820183602082011115610ea757600080fd5b803590602001918460018302840111602060020a83111715610ec857600080fd5b919350915035600160a060020a03166152b3565b61025f60048036036060811015610ef257600080fd5b810190602081018135602060020a811115610f0c57600080fd5b820183602082011115610f1e57600080fd5b803590602001918460018302840111602060020a83111715610f3f57600080fd5b919350915080359060200135600160a060020a03166156d8565b61025f60048036036060811015610f6f57600080fd5b810190602081018135602060020a811115610f8957600080fd5b820183602082011115610f9b57600080fd5b803590602001918460018302840111602060020a83111715610fbc57600080fd5b919390929091602081019035602060020a811115610fd957600080fd5b820183602082011115610feb57600080fd5b803590602001918460018302840111602060020a8311171561100c57600080fd5b919350915035600160a060020a0316615a4a565b611028615d7f565b604080518215156060820152608080825286519082015285519091829160208084019284019160a08501918a019080838360005b8381101561107457818101518382015260200161105c565b50505050905090810190601f1680156110a15780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b838110156110d45781810151838201526020016110bc565b50505050905090810190601f1680156111015780820380516001836020036101000a031916815260200191505b50848103825286518152865160209182019188019080838360005b8381101561113457818101518382015260200161111c565b50505050905090810190601f1680156111615780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b6107616004803603602081101561118a57600080fd5b5035600160a060020a0316615f52565b61025f600480360360808110156111b057600080fd5b810190602081018135602060020a8111156111ca57600080fd5b8201836020820111156111dc57600080fd5b803590602001918460018302840111602060020a831117156111fd57600080fd5b919390929091602081019035602060020a81111561121a57600080fd5b82018360208201111561122c57600080fd5b803590602001918460018302840111602060020a8311171561124d57600080fd5b919350915080359060200135600160a060020a031661616c565b6112d56004803603602081101561127d57600080fd5b810190602081018135602060020a81111561129757600080fd5b8201836020820111156112a957600080fd5b803590602001918460018302840111602060020a831117156112ca57600080fd5b5090925090506163dd565b60405180806020018060200185600160a060020a0316600160a060020a03168152602001848152602001838103835287818151815260200191508051906020019080838360005b8381101561133457818101518382015260200161131c565b50505050905090810190601f1680156113615780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b8381101561139457818101518382015260200161137c565b50505050905090810190601f1680156113c15780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b61025f600480360360808110156113e957600080fd5b810190602081018135602060020a81111561140357600080fd5b82018360208201111561141557600080fd5b803590602001918460018302840111602060020a8311171561143657600080fd5b919390929091602081019035602060020a81111561145357600080fd5b82018360208201111561146557600080fd5b803590602001918460018302840111602060020a8311171561148657600080fd5b919390929091602081019035602060020a8111156114a357600080fd5b8201836020820111156114b557600080fd5b803590602001918460018302840111602060020a831117156114d657600080fd5b919350915035151561655c565b61025f600480360360808110156114f957600080fd5b810190602081018135602060020a81111561151357600080fd5b82018360208201111561152557600080fd5b803590602001918460018302840111602060020a8311171561154657600080fd5b919390929091602081019035602060020a81111561156357600080fd5b82018360208201111561157557600080fd5b803590602001918460018302840111602060020a8311171561159657600080fd5b9193509150600160a060020a038135811691602001351661664b565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561160357600080fd5b505afa158015611617573d6000803e3d6000fd5b505050506040513d602081101561162d57600080fd5b5051600160a060020a031633146116785760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b8085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506116bc92508491508390506149df565b15156001146116ff5760405160e560020a62461bcd0281526004018080602001828103825260228152602001806174076022913960400191505060405180910390fd5b836001148061170e5750836002145b806117195750836003145b15156117595760405160e560020a62461bcd0281526004018080602001828103825260258152602001806173946025913960400191505060405180910390fd5b6000546040517f84b7a84a000000000000000000000000000000000000000000000000000000008152600160a060020a03878116602483015260448201879052606060048301908152606483018a90529216916384b7a84a918a918a918a918a918190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156117fd57600080fd5b505af1158015611811573d6000803e3d6000fd5b5050505050505050505050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561186f57600080fd5b505afa158015611883573d6000803e3d6000fd5b505050506040513d602081101561189957600080fd5b5051600160a060020a031633146118e45760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506119269250839150616c399050565b151560011461196d576040805160e560020a62461bcd02815260206004820152601a6024820152600080516020617354833981519152604482015290519081900360640190fd5b8187878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506119b192508491508390506149df565b15156001146119f45760405160e560020a62461bcd0281526004018080602001828103825260228152602001806174076022913960400191505060405180910390fd5b6001546040517f7b713579000000000000000000000000000000000000000000000000000000008152604481018990528715156064820152861515608482015260a06004820190815260a482018d9052600160a060020a0390921691637b713579918e918e918e918e918e918e918e91908190602481019060c4018a8a80828437600083820152601f01601f191690910184810383528881526020019050888880828437600081840152601f19601f8201169050808301925050509950505050505050505050600060405180830381600087803b158015611ad457600080fd5b505af1158015611ae8573d6000803e3d6000fd5b505050505050505050505050505050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015611b4a57600080fd5b505afa158015611b5e573d6000803e3d6000fd5b505050506040513d6020811015611b7457600080fd5b5051600160a060020a03163314611bbf5760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b600a5460009060ff1615611c0b576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020617374833981519152604482015290519081900360640190fd5b611c17600688886172c5565b50611c24600786866172c5565b50611c31600884846172c5565b5050505050505050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015611c8c57600080fd5b505afa158015611ca0573d6000803e3d6000fd5b505050506040513d6020811015611cb657600080fd5b5051600160a060020a03163314611d015760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b80611d0b81615f52565b1515600114611d4e5760405160e560020a62461bcd0281526004018080602001828103825260268152602001806173e16026913960400191505060405180910390fd5b6000546040517f84b7a84a000000000000000000000000000000000000000000000000000000008152600160a060020a03858116602483015260046044830181905260608382019081526064840189905291909316926384b7a84a928992899289929091908190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611df657600080fd5b505af1158015611e0a573d6000803e3d6000fd5b50506002805460405160e060020a63e98ac22d028152600160a060020a03888116606483015260066084830181905260a060048401908152815460001960018216156101000201169590950460a4840181905291909316955063e98ac22d945091928a928a928a928692909182916024820191604481019160c49091019086908015611ed75780601f10611eac57610100808354040283529160200191611ed7565b820191906000526020600020905b815481529060010190602001808311611eba57829003601f168201915b50508481038352878152602001888880828437600081840152601f19601f82011690508083019250505084810382526000815260200160200198505050505050505050600060405180830381600087803b158015611f3457600080fd5b505af1158015611f48573d6000803e3d6000fd5b505050505050505050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015611fa457600080fd5b505afa158015611fb8573d6000803e3d6000fd5b505050506040513d6020811015611fce57600080fd5b5051600160a060020a031633146120195760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b8061202381615f52565b15156001146120665760405160e560020a62461bcd0281526004018080602001828103825260268152602001806173e16026913960400191505060405180910390fd5b6120a887878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250616d3e915050565b1515600114612101576040805160e560020a62461bcd02815260206004820152601260248201527f4e6f7468696e6720746f20617070726f76650000000000000000000000000000604482015290519081900360640190fd5b60068054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815261219b939092909183018282801561218e5780601f106121635761010080835404028352916020019161218e565b820191906000526020600020905b81548152906001019060200180831161217157829003601f168201915b5050505050836001616dc1565b1561252b57600480546040517fe3028316000000000000000000000000000000000000000000000000000000008152602092810192835260248101899052600160a060020a039091169163e3028316918a918a918190604401848480828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561223057600080fd5b505af1158015612244573d6000803e3d6000fd5b5050600180546009546040517f7b71357900000000000000000000000000000000000000000000000000000000815260448101829052606481018490526084810184905260a0600482019081526008805460026000198289161561010002019091160460a48401819052600160a060020a039095169750637b7135799650948e948e94939192839290918291602481019160c4909101908a90801561232a5780601f106122ff5761010080835404028352916020019161232a565b820191906000526020600020905b81548152906001019060200180831161230d57829003601f168201915b50508381038252878152602001888880828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b15801561237857600080fd5b505af115801561238c573d6000803e3d6000fd5b5050600354604080517f86bc36520000000000000000000000000000000000000000000000000000000081526004810191825260448101899052600160a060020a0390921693506386bc36529250889188918c918c919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561244f57600080fd5b505af1158015612463573d6000803e3d6000fd5b5050600054604080517fc214e5e5000000000000000000000000000000000000000000000000000000008152600160a060020a03888116602483015260048201928352604482018c9052909216935063c214e5e592508a918a9188918190606401858580828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b15801561250157600080fd5b505af1158015612515573d6000803e3d6000fd5b505050506040513d6020811015611f4857600080fd5b50505050505050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561258557600080fd5b505afa158015612599573d6000803e3d6000fd5b505050506040513d60208110156125af57600080fd5b5051600160a060020a031633146125fa5760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b8061260481615f52565b15156001146126475760405160e560020a62461bcd0281526004018080602001828103825260268152602001806173e16026913960400191505060405180910390fd5b60048054604080517f0cc274930000000000000000000000000000000000000000000000000000000081526024810187905292830190815260448301879052600092600160a060020a0390921691630cc27493918991899189918190606401858580828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b1580156126e357600080fd5b505af11580156126f7573d6000803e3d6000fd5b505050506040513d602081101561270d57600080fd5b50516002805460405160e060020a63e98ac22d0281526000606482018190526084820185905260a0600483019081526006805460001960018216156101000201169590950460a48401819052959650600160a060020a039093169463e98ac22d94938c938c939289929182916024820191604481019160c4909101908a9080156127d85780601f106127ad576101008083540402835291602001916127d8565b820191906000526020600020905b8154815290600101906020018083116127bb57829003601f168201915b50508481038352878152602001888880828437600081840152601f19601f82011690508083019250505084810382526000815260200160200198505050505050505050600060405180830381600087803b15801561283557600080fd5b505af1158015612849573d6000803e3d6000fd5b50505050505050505050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156128a657600080fd5b505afa1580156128ba573d6000803e3d6000fd5b505050506040513d60208110156128d057600080fd5b5051600160a060020a0316331461291b5760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b600a5460009060ff1615612967576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020617374833981519152604482015290519081900360640190fd5b600354604080517fe3b09d840000000000000000000000000000000000000000000000000000000081526004810191825260448101859052600160a060020a039092169163e3b09d84918691869160069181906024810190606401868680828437600083820152601f01601f191690910184810383528554600260001961010060018416150201909116048082526020909101915085908015612a4b5780601f10612a2057610100808354040283529160200191612a4b565b820191906000526020600020905b815481529060010190602001808311612a2e57829003601f168201915b505095505050505050600060405180830381600087803b158015612a6e57600080fd5b505af115801561252b573d6000803e3d6000fd5b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015612ad357600080fd5b505afa158015612ae7573d6000803e3d6000fd5b505050506040513d6020811015612afd57600080fd5b5051600160a060020a03163314612b485760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612b8a9250839150616ed19050565b1515600114612be3576040805160e560020a62461bcd02815260206004820152601260248201527f6f726720646f6573206e6f742065786973740000000000000000000000000000604482015290519081900360640190fd5b81612bed81615f52565b1515600114612c305760405160e560020a62461bcd0281526004018080602001828103825260268152602001806173e16026913960400191505060405180910390fd5b6000546040517fe3483a9d000000000000000000000000000000000000000000000000000000008152600160a060020a0388811660048301908152600160648401819052608060248501908152608485018d9052929094169363e3483a9d938b938e938e938d938d9391929190604481019060a401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b158015612d0957600080fd5b505af1158015612d1d573d6000803e3d6000fd5b50506002805460405160e060020a63e98ac22d028152600160a060020a038b8116606483015260046084830181905260a08382019081526006805460001960018216156101000201169690960460a4850181905292909416965063e98ac22d95508e938e938e9382916024810191604482019160c401908a908015612de35780601f10612db857610100808354040283529160200191612de3565b820191906000526020600020905b815481529060010190602001808311612dc657829003601f168201915b50508481038352878152602001888880828437600081840152601f19601f82011690508083019250505084810382526000815260200160200198505050505050505050600060405180830381600087803b158015612e4057600080fd5b505af1158015612e54573d6000803e3d6000fd5b505050505050505050505050565b600554604080517fe572515c0000000000000000000000000000000000000000000000000000000081529051600092600160a060020a03169163e572515c916004808301926020929190829003018186803b158015612ec057600080fd5b505afa158015612ed4573d6000803e3d6000fd5b505050506040513d6020811015612eea57600080fd5b5051600160a060020a03163314612f355760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b600a5460009060ff1615612f81576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020617374833981519152604482015290519081900360640190fd5b600a805460ff19166001179081905560ff1691505b5090565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015612feb57600080fd5b505afa158015612fff573d6000803e3d6000fd5b505050506040513d602081101561301557600080fd5b5051600160a060020a031633146130605760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b8061306a81615f52565b15156001146130ad5760405160e560020a62461bcd0281526004018080602001828103825260268152602001806173e16026913960400191505060405180910390fd5b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152613147939092909183018282801561313a5780601f1061310f5761010080835404028352916020019161313a565b820191906000526020600020905b81548152906001019060200180831161311d57829003601f168201915b5050505050836006616dc1565b156131f5576000546040517f84b7a84a000000000000000000000000000000000000000000000000000000008152600160a060020a0385811660248301526005604483018190526060600484019081526064840189905291909316926384b7a84a928992899289929091908190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611f3457600080fd5b5050505050565b600a5460ff165b90565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561325757600080fd5b505afa15801561326b573d6000803e3d6000fd5b505050506040513d602081101561328157600080fd5b5051600160a060020a031633146132cc5760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b600a5460009060ff1615613318576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020617374833981519152604482015290519081900360640190fd5b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526133b293909290918301828280156133a55780601f1061337a576101008083540402835291602001916133a5565b820191906000526020600020905b81548152906001019060200180831161338857829003601f168201915b5050505050836001616f96565b6000546040517fe3483a9d000000000000000000000000000000000000000000000000000000008152600160a060020a038481166004830190815260026064840181905260806024850190815260068054600019600182161561010002011683900460848701819052949096169563e3483a9d95899591946007949390929091604481019160a4909101908790801561348c5780601f106134615761010080835404028352916020019161348c565b820191906000526020600020905b81548152906001019060200180831161346f57829003601f168201915b50508381038252855460026000196101006001841615020190911604808252602090910190869080156135005780601f106134d557610100808354040283529160200191613500565b820191906000526020600020905b8154815290600101906020018083116134e357829003601f168201915b50509650505050505050600060405180830381600087803b15801561352457600080fd5b505af1158015613538573d6000803e3d6000fd5b505050505050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561359157600080fd5b505afa1580156135a5573d6000803e3d6000fd5b505050506040513d60208110156135bb57600080fd5b5051600160a060020a031633146136065760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506136489250839150616c399050565b151560011461368f576040805160e560020a62461bcd02815260206004820152601a6024820152600080516020617354833981519152604482015290519081900360640190fd5b8186868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506136d392508491508390506149df565b15156001146137165760405160e560020a62461bcd0281526004018080602001828103825260228152602001806174076022913960400191505060405180910390fd5b600354604080517f3f5e1a450000000000000000000000000000000000000000000000000000000081526004810191825260448101889052600160a060020a0390921691633f5e1a4591899189918d918d919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015612e4057600080fd5b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561382657600080fd5b505afa15801561383a573d6000803e3d6000fd5b505050506040513d602081101561385057600080fd5b5051600160a060020a0316331461389b5760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b82828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506138dd9250839150616c399050565b1515600114613924576040805160e560020a62461bcd02815260206004820152601a6024820152600080516020617354833981519152604482015290519081900360640190fd5b8184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061396892508491508390506149df565b15156001146139ab5760405160e560020a62461bcd0281526004018080602001828103825260228152602001806174076022913960400191505060405180910390fd5b6040805160208082019081526007805460026000196101006001841615020190911604938301849052929091829160609091019084908015613a2e5780601f10613a0357610100808354040283529160200191613a2e565b820191906000526020600020905b815481529060010190602001808311613a1157829003601f168201915b50509250505060405160208183030381529060405280519060200120888860405160200180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040528051906020012014158015613b9b57506040805160208082019081526008805460026000196101006001841615020190911604938301849052929091829160609091019084908015613b295780601f10613afe57610100808354040283529160200191613b29565b820191906000526020600020905b815481529060010190602001808311613b0c57829003601f168201915b50509250505060405160208183030381529060405280519060200120888860405160200180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040528051906020012014155b1515613bf1576040805160e560020a62461bcd02815260206004820152601d60248201527f61646d696e20726f6c65732063616e6e6f742062652072656d6f766564000000604482015290519081900360640190fd5b600154604080517fa634301200000000000000000000000000000000000000000000000000000000815260048101918252604481018a9052600160a060020a039092169163a6343012918b918b918b918b919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015612e4057600080fd5b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015613d0157600080fd5b505afa158015613d15573d6000803e3d6000fd5b505050506040513d6020811015613d2b57600080fd5b5051600160a060020a03163314613d765760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b80613d8081615f52565b1515600114613dc35760405160e560020a62461bcd0281526004018080602001828103825260268152602001806173e16026913960400191505060405180910390fd5b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152613e5d9390929091830182828015613e505780601f10613e2557610100808354040283529160200191613e50565b820191906000526020600020905b815481529060010190602001808311613e3357829003601f168201915b5050505050836005616dc1565b15613538576003546040517f0cc5014600000000000000000000000000000000000000000000000000000000815260056044820181905260606004830190815260648301879052600160a060020a0390931692630cc5014692889288928c928c92919081906024810190608401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b15801561283557600080fd5b60008054604080517f6b568d76000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301908152602483019384528651604484015286519190941693636b568d76938893889360649091019060208501908083838c5b83811015613fb1578181015183820152602001613f99565b50505050905090810190601f168015613fde5780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b158015613ffc57600080fd5b505afa158015614010573d6000803e3d6000fd5b505050506040513d602081101561402657600080fd5b505190505b92915050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561408257600080fd5b505afa158015614096573d6000803e3d6000fd5b505050506040513d60208110156140ac57600080fd5b5051600160a060020a031633146140f75760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b8061410181615f52565b15156001146141445760405160e560020a62461bcd0281526004018080602001828103825260268152602001806173e16026913960400191505060405180910390fd5b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526141de93909290918301828280156141d15780601f106141a6576101008083540402835291602001916141d1565b820191906000526020600020905b8154815290600101906020018083116141b457829003601f168201915b5050505050836004616dc1565b156131f557600080546040517f1d09dc93000000000000000000000000000000000000000000000000000000008152602060048201908152602482018890528392600160a060020a031691631d09dc93918a918a91908190604401848480828437600081840152601f19601f82011690508083019250505093505050506040805180830381600087803b15801561427457600080fd5b505af1158015614288573d6000803e3d6000fd5b505050506040513d604081101561429e57600080fd5b5080516020909101519092509050811561434c5760068054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815261434c939092909183018282801561433f5780601f106143145761010080835404028352916020019161433f565b820191906000526020600020905b81548152906001019060200180831161432257829003601f168201915b5050505050826000616f96565b60008054604080517fc214e5e5000000000000000000000000000000000000000000000000000000008152600160a060020a03898116602483015260048201928352604482018b90529092169163c214e5e5918b918b918b918190606401858580828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b1580156143e757600080fd5b505af11580156143fb573d6000803e3d6000fd5b505050506040513d602081101561441157600080fd5b505190508015611c315760068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152611c3193909290918301828280156144a85780601f1061447d576101008083540402835291602001916144a8565b820191906000526020600020905b81548152906001019060200180831161448b57829003601f168201915b5050505050876001616f96565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561450657600080fd5b505afa15801561451a573d6000803e3d6000fd5b505050506040513d602081101561453057600080fd5b5051600160a060020a0316331461457b5760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b808361458782826149df565b15156001146145ca5760405160e560020a62461bcd0281526004018080602001828103825260228152602001806174076022913960400191505060405180910390fd5b846145d481616c39565b151560011461461b576040805160e560020a62461bcd02815260206004820152601a6024820152600080516020617354833981519152604482015290519081900360640190fd5b6146258787613f2d565b151560011461467e576040805160e560020a62461bcd02815260206004820152601d60248201527f6f7065726174696f6e2063616e6e6f7420626520706572666f726d6564000000604482015290519081900360640190fd5b6146888587617158565b15156001146146e1576040805160e560020a62461bcd02815260206004820152601460248201527f726f6c6520646f6573206e6f7420657869737473000000000000000000000000604482015290519081900360640190fd5b600154600090600160a060020a031663be322e54878961470081617173565b6040518463ffffffff1660e060020a02815260040180806020018060200180602001848103845287818151815260200191508051906020019080838360005b8381101561475757818101518382015260200161473f565b50505050905090810190601f1680156147845780820380516001836020036101000a031916815260200191505b50848103835286518152865160209182019188019080838360005b838110156147b757818101518382015260200161479f565b50505050905090810190601f1680156147e45780820380516001836020036101000a031916815260200191505b50848103825285518152855160209182019187019080838360005b838110156148175781810151838201526020016147ff565b50505050905090810190601f1680156148445780820380516001836020036101000a031916815260200191505b50965050505050505060206040518083038186803b15801561486557600080fd5b505afa158015614879573d6000803e3d6000fd5b505050506040513d602081101561488f57600080fd5b5051600080546040517f143a5604000000000000000000000000000000000000000000000000000000008152600160a060020a038c81166004830190815285151560648401526080602484019081528d5160848501528d51969750919093169463143a5604948e948e948e948a9492939092604483019260a401916020890191908190849084905b8381101561492f578181015183820152602001614917565b50505050905090810190601f16801561495c5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561498f578181015183820152602001614977565b50505050905090810190601f1680156149bc5780820380516001836020036101000a031916815260200191505b509650505050505050600060405180830381600087803b158015612e4057600080fd5b60008054600160a060020a031663e8b42bf484846149fc81617173565b6040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a031681526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015614a67578181015183820152602001614a4f565b50505050905090810190601f168015614a945780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015614ac7578181015183820152602001614aaf565b50505050905090810190601f168015614af45780820380516001836020036101000a031916815260200191505b509550505050505060206040518083038186803b158015614b1457600080fd5b505afa158015614b28573d6000803e3d6000fd5b505050506040513d6020811015614b3e57600080fd5b505115614b4d5750600161402b565b60015460008054604080517f81d66b23000000000000000000000000000000000000000000000000000000008152600160a060020a03888116600483015291519482169463be322e549493909216926381d66b2392602480840193829003018186803b158015614bbc57600080fd5b505afa158015614bd0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015614bf957600080fd5b810190808051602060020a811115614c1057600080fd5b82016020810184811115614c2357600080fd5b8151602060020a811182820187101715614c3c57600080fd5b505092919050505084614c4e86617173565b6040518463ffffffff1660e060020a02815260040180806020018060200180602001848103845287818151815260200191508051906020019080838360005b83811015614ca5578181015183820152602001614c8d565b50505050905090810190601f168015614cd25780820380516001836020036101000a031916815260200191505b50848103835286518152865160209182019188019080838360005b83811015614d05578181015183820152602001614ced565b50505050905090810190601f168015614d325780820380516001836020036101000a031916815260200191505b50848103825285518152855160209182019187019080838360005b83811015614d65578181015183820152602001614d4d565b50505050905090810190601f168015614d925780820380516001836020036101000a031916815260200191505b50965050505050505060206040518083038186803b158015613ffc57600080fd5b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015614e0457600080fd5b505afa158015614e18573d6000803e3d6000fd5b505050506040513d6020811015614e2e57600080fd5b5051600160a060020a03163314614e795760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b600a5460009060ff1615614ec5576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020617374833981519152604482015290519081900360640190fd5b600480546040517f9e58eb9f00000000000000000000000000000000000000000000000000000000815260248101869052604481018590526060928101928352600680546002600019600183161561010002019091160460648301819052600160a060020a0390931693639e58eb9f9391928892889291829160849091019086908015614f935780601f10614f6857610100808354040283529160200191614f93565b820191906000526020600020905b815481529060010190602001808311614f7657829003601f168201915b5050945050505050600060405180830381600087803b158015614fb557600080fd5b505af1158015614fc9573d6000803e3d6000fd5b5050600180546009546040517f7b71357900000000000000000000000000000000000000000000000000000000815260448101829052606481018490526084810184905260a0600482019081526007805460026000198289161561010002019091160460a48401819052600160a060020a039095169750637b71357996509460069490928392918291602481019160c490910190899080156150ac5780601f10615081576101008083540402835291602001916150ac565b820191906000526020600020905b81548152906001019060200180831161508f57829003601f168201915b50508381038252875460026000196101006001841615020190911604808252602090910190889080156151205780601f106150f557610100808354040283529160200191615120565b820191906000526020600020905b81548152906001019060200180831161510357829003601f168201915b5050975050505050505050600060405180830381600087803b15801561514557600080fd5b505af1158015615159573d6000803e3d6000fd5b5050600054604080517fcef7f6af00000000000000000000000000000000000000000000000000000000815260048101918252600780546002600019600183161561010002019091160460448301819052600160a060020a03909416955063cef7f6af9450926008929182916024820191606401908690801561521d5780601f106151f25761010080835404028352916020019161521d565b820191906000526020600020905b81548152906001019060200180831161520057829003601f168201915b50508381038252845460026000196101006001841615020190911604808252602090910190859080156152915780601f1061526657610100808354040283529160200191615291565b820191906000526020600020905b81548152906001019060200180831161527457829003601f168201915b5050945050505050600060405180830381600087803b158015612a6e57600080fd5b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561530457600080fd5b505afa158015615318573d6000803e3d6000fd5b505050506040513d602081101561532e57600080fd5b5051600160a060020a031633146153795760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506153bb9250839150616ed19050565b1515600114615414576040805160e560020a62461bcd02815260206004820152601260248201527f6f726720646f6573206e6f742065786973740000000000000000000000000000604482015290519081900360640190fd5b8188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061545892508491508390506149df565b151560011461549b5760405160e560020a62461bcd0281526004018080602001828103825260228152602001806174076022913960400191505060405180910390fd5b60048054604080517f1f953480000000000000000000000000000000000000000000000000000000008152928301908152604483018c9052600160a060020a0390911691631f953480918d918d918d918d919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561555a57600080fd5b505af115801561556e573d6000803e3d6000fd5b5050505060608a8a8a8a604051602001808585808284377f2e00000000000000000000000000000000000000000000000000000000000000920191825250600101838380828437808301925050509450505050506040516020818303038152906040529050600087879050111561181157600354604080517f3f5e1a450000000000000000000000000000000000000000000000000000000081526004810191825260448101899052600160a060020a0390921691633f5e1a45918a918a918691819060248101906064018686808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015615689578181015183820152602001615671565b50505050905090810190601f1680156156b65780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015611ad457600080fd5b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561572957600080fd5b505afa15801561573d573d6000803e3d6000fd5b505050506040513d602081101561575357600080fd5b5051600160a060020a0316331461579e5760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b806157a881615f52565b15156001146157eb5760405160e560020a62461bcd0281526004018080602001828103825260268152602001806173e16026913960400191505060405180910390fd5b82600114806157fa5750826002145b1515615850576040805160e560020a62461bcd02815260206004820152601560248201527f4f7065726174696f6e206e6f7420616c6c6f7765640000000000000000000000604482015290519081900360640190fd5b60008084600114156158685750600290506003615879565b846002141561587957506003905060055b6158ba87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250859250616d3e915050565b1515600114615913576040805160e560020a62461bcd02815260206004820152601560248201527f6f7065726174696f6e206e6f7420616c6c6f7765640000000000000000000000604482015290519081900360640190fd5b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526159ac93909290918301828280156159a05780601f10615975576101008083540402835291602001916159a0565b820191906000526020600020905b81548152906001019060200180831161598357829003601f168201915b50505050508584616dc1565b1561252b5760048054604080517f14f775f90000000000000000000000000000000000000000000000000000000081526024810189905292830190815260448301899052600160a060020a03909116916314f775f9918a918a918a918190606401858580828437600081840152601f19601f820116905080830192505050945050505050600060405180830381600087803b1580156117fd57600080fd5b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015615a9b57600080fd5b505afa158015615aaf573d6000803e3d6000fd5b505050506040513d6020811015615ac557600080fd5b5051600160a060020a03163314615b105760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b80615b1a81615f52565b1515600114615b5d5760405160e560020a62461bcd0281526004018080602001828103825260268152602001806173e16026913960400191505060405180910390fd5b6003546040517f0cc50146000000000000000000000000000000000000000000000000000000008152600460448201819052606082820190815260648301879052600160a060020a0390931692630cc5014692889288928c928c92919081906024810190608401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015615c2757600080fd5b505af1158015615c3b573d6000803e3d6000fd5b50506002805460405160e060020a63e98ac22d02815260006064820181905260056084830181905260a0600484019081526006805460001960018216156101000201169690960460a48501819052600160a060020a03909516975063e98ac22d96508d948d948d948d9490939092909182916024820191604481019160c4909101908c908015615d0c5780601f10615ce157610100808354040283529160200191615d0c565b820191906000526020600020905b815481529060010190602001808311615cef57829003601f168201915b505084810383528981526020018a8a80828437600083820152601f01601f191690910185810383528881526020019050888880828437600081840152601f19601f8201169050808301925050509a5050505050505050505050600060405180830381600087803b15801561283557600080fd5b600a5460068054604080516020601f6002600019600187161561010002019095169490940493840181900481028201810190925282815260609485948594600094919360079360089360ff909116928691830182828015615e215780601f10615df657610100808354040283529160200191615e21565b820191906000526020600020905b815481529060010190602001808311615e0457829003601f168201915b5050865460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815295995088945092508401905082828015615eaf5780601f10615e8457610100808354040283529160200191615eaf565b820191906000526020600020905b815481529060010190602001808311615e9257829003601f168201915b5050855460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815295985087945092508401905082828015615f3d5780601f10615f1257610100808354040283529160200191615f3d565b820191906000526020600020905b815481529060010190602001808311615f2057829003601f168201915b50505050509150935093509350935090919293565b60408051602080820190815260078054600260001961010060018416150201909116049383018490526000939092829160609091019084908015615fd75780601f10615fac57610100808354040283529160200191615fd7565b820191906000526020600020905b815481529060010190602001808311615fba57829003601f168201915b505060408051601f198184030181528282528051602090910120600080547f81d66b23000000000000000000000000000000000000000000000000000000008552600160a060020a038a8116600487015293519297509290921694506381d66b239350602480840193829003018186803b15801561605457600080fd5b505afa158015616068573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561609157600080fd5b810190808051602060020a8111156160a857600080fd5b820160208101848111156160bb57600080fd5b8151602060020a8111828201871017156160d457600080fd5b50509291905050506040516020018080602001828103825283818151815260200191508051906020019080838360005b8381101561611c578181015183820152602001616104565b50505050905090810190601f1680156161495780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120149050919050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156161bd57600080fd5b505afa1580156161d1573d6000803e3d6000fd5b505050506040513d60208110156161e757600080fd5b5051600160a060020a031633146162325760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b8086868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061627692508491508390506149df565b15156001146162b95760405160e560020a62461bcd0281526004018080602001828103825260228152602001806174076022913960400191505060405180910390fd5b83600114806162c85750836002145b806162d35750836003145b15156163135760405160e560020a62461bcd0281526004018080602001828103825260258152602001806173946025913960400191505060405180910390fd5b6003546040517f0cc501460000000000000000000000000000000000000000000000000000000081526044810186905260606004820190815260648201889052600160a060020a0390921691630cc5014691899189918d918d918b919081906024810190608401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015612e4057600080fd5b6002546040517f014e6acc0000000000000000000000000000000000000000000000000000000081526020600482019081526024820184905260609283926000928392600160a060020a03169163014e6acc9189918991908190604401848480828437600081840152601f19601f820116905080830192505050935050505060006040518083038186803b15801561647457600080fd5b505afa158015616488573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260808110156164b157600080fd5b810190808051602060020a8111156164c857600080fd5b820160208101848111156164db57600080fd5b8151602060020a8111828201871017156164f457600080fd5b50509291906020018051602060020a81111561650f57600080fd5b8201602081018481111561652257600080fd5b8151602060020a81118282018710171561653b57600080fd5b50506020820151604090920151949b909a5090985092965091945050505050565b600554600160a060020a031633146165be576040805160e560020a62461bcd02815260206004820152600e60248201527f696e76616c69642063616c6c6572000000000000000000000000000000000000604482015290519081900360640190fd5b600a5460009060ff161561660a576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020617374833981519152604482015290519081900360640190fd5b616616600689896172c5565b50616623600787876172c5565b50616630600885856172c5565b5050600a805460ff1916911515919091179055505050505050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561669c57600080fd5b505afa1580156166b0573d6000803e3d6000fd5b505050506040513d60208110156166c657600080fd5b5051600160a060020a031633146167115760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b600a5460019060ff1615158114616760576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020617374833981519152604482015290519081900360640190fd5b8161676a81615f52565b15156001146167ad5760405160e560020a62461bcd0281526004018080602001828103825260268152602001806173e16026913960400191505060405180910390fd5b6002805460405160e060020a63e98ac22d028152600160a060020a03878116606483015260016084830181905260a06004840190815260068054600019818516156101000201169690960460a48501819052929094169463e98ac22d9490938e938e938e938e938e9382916024810191604482019160c401908c9080156168755780601f1061684a57610100808354040283529160200191616875565b820191906000526020600020905b81548152906001019060200180831161685857829003601f168201915b505084810383528981526020018a8a80828437600083820152601f01601f191690910185810383528881526020019050888880828437600081840152601f19601f8201169050808301925050509a5050505050505050505050600060405180830381600087803b1580156168e857600080fd5b505af11580156168fc573d6000803e3d6000fd5b5050600480546040517ff9953de50000000000000000000000000000000000000000000000000000000081526020928101928352602481018c9052600160a060020a03909116935063f9953de592508b918b918190604401848480828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561699057600080fd5b505af11580156169a4573d6000803e3d6000fd5b5050600354604080517fa97a440600000000000000000000000000000000000000000000000000000000815260048101918252604481018a9052600160a060020a03909216935063a97a44069250899189918d918d919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015616a6757600080fd5b505af1158015616a7b573d6000803e3d6000fd5b50505050616abf8489898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613f2d92505050565b1515600114616b18576040805160e560020a62461bcd02815260206004820152601d60248201527f4f7065726174696f6e2063616e6e6f7420626520706572666f726d6564000000604482015290519081900360640190fd5b6000546040517fe3483a9d000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301908152600160648401819052608060248501908152608485018d9052929094169363e3483a9d9389938e938e93600893909290604481019060a401878780828437600083820152601f01601f191690910184810383528654600260001961010060018416150201909116048082526020909101915086908015616c145780601f10616be957610100808354040283529160200191616c14565b820191906000526020600020905b815481529060010190602001808311616bf757829003601f168201915b5050975050505050505050600060405180830381600087803b158015612e4057600080fd5b60048054604080517f8c8642df000000000000000000000000000000000000000000000000000000008152600260248201819052938101918252845160448201528451600094600160a060020a0390941693638c8642df93879391929091829160649091019060208601908083838c5b83811015616cc1578181015183820152602001616ca9565b50505050905090810190601f168015616cee5780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b158015616d0c57600080fd5b505afa158015616d20573d6000803e3d6000fd5b505050506040513d6020811015616d3657600080fd5b505192915050565b60048054604080517f8c8642df00000000000000000000000000000000000000000000000000000000815260248101859052928301908152845160448401528451600093600160a060020a0390931692638c8642df9287928792829160649091019060208601908083838c83811015613fb1578181015183820152602001613f99565b6002546040517fb0213864000000000000000000000000000000000000000000000000000000008152600160a060020a03848116602483015260448201849052606060048301908152865160648401528651600094929092169263b02138649288928892889282916084019060208701908083838d5b83811015616e4f578181015183820152602001616e37565b50505050905090810190601f168015616e7c5780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b158015616e9d57600080fd5b505af1158015616eb1573d6000803e3d6000fd5b505050506040513d6020811015616ec757600080fd5b5051949350505050565b600480546040517fffe40d1d0000000000000000000000000000000000000000000000000000000081526020928101838152845160248301528451600094600160a060020a039094169363ffe40d1d9387939283926044909201918501908083838b5b83811015616f4c578181015183820152602001616f34565b50505050905090810190601f168015616f795780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b158015616d0c57600080fd5b801561708657600254604080517f5607395b000000000000000000000000000000000000000000000000000000008152600160a060020a03858116602483015260048201928352865160448301528651931692635607395b9287928792829160640190602086019080838360005b8381101561701c578181015183820152602001617004565b50505050905090810190601f1680156170495780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b15801561706957600080fd5b505af115801561707d573d6000803e3d6000fd5b50505050617153565b600254604080517f59cbd6fe000000000000000000000000000000000000000000000000000000008152600160a060020a038581166024830152600482019283528651604483015286519316926359cbd6fe9287928792829160640190602086019080838360005b838110156171065781810151838201526020016170ee565b50505050905090810190601f1680156171335780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b158015612a6e57600080fd5b505050565b600154600090600160a060020a031663abf5739f8484614c4e815b600480546040517f177c8d8a0000000000000000000000000000000000000000000000000000000081526020928101838152845160248301528451606094600160a060020a039094169363177c8d8a93879392839260449092019185019080838360005b838110156171ef5781810151838201526020016171d7565b50505050905090810190601f16801561721c5780820380516001836020036101000a031916815260200191505b509250505060006040518083038186803b15801561723957600080fd5b505afa15801561724d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561727657600080fd5b810190808051602060020a81111561728d57600080fd5b820160208101848111156172a057600080fd5b8151602060020a8111828201871017156172b957600080fd5b50909695505050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106173065782800160ff19823516178555617333565b82800160010185558215617333579182015b82811115617333578235825591602001919060010190617318565b50612f96926132039250905b80821115612f96576000815560010161733f56fe6f7267206e6f7420696e20617070726f76656420737461747573000000000000496e636f7272656374206e6574776f726b20626f6f7420737461747573000000696e76616c696420616374696f6e2e206f7065726174696f6e206e6f7420616c6c6f77656463616e2062652063616c6c656420627920696e7465726661636520636f6e7472616374206f6e6c796163636f756e74206973206e6f742061206e6574776f726b2061646d696e206163636f756e746163636f756e74206973206e6f742061206f72672061646d696e206163636f756e74a165627a7a7230582075d7685160113f65122a5b704814adf275ee53e84d62f90520938fb766d14a760029" // 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) { diff --git a/permission/bind/permission_interface.go b/permission/bind/permission_interface.go index 535e2e316..c35298da1 100644 --- a/permission/bind/permission_interface.go +++ b/permission/bind/permission_interface.go @@ -31,7 +31,7 @@ var ( const PermInterfaceABI = "[{\"constant\":true,\"inputs\":[],\"name\":\"getPermissionsImpl\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_action\",\"type\":\"uint256\"}],\"name\":\"updateNodeStatus\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"approveAdminRole\",\"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\":\"_account\",\"type\":\"address\"},{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_roleId\",\"type\":\"string\"}],\"name\":\"assignAccountRole\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"approveBlacklistedAccountRecovery\",\"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\":\"assignAdminRole\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"updateNetworkBootStatus\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"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\":\"_pOrgId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_enodeId\",\"type\":\"string\"}],\"name\":\"addSubOrg\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_acct\",\"type\":\"address\"}],\"name\":\"addAdminAccount\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_permImplementation\",\"type\":\"address\"}],\"name\":\"setPermImplementation\",\"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\":\"addNewRole\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_enodeId\",\"type\":\"string\"}],\"name\":\"approveBlacklistedNodeRecovery\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_action\",\"type\":\"uint256\"}],\"name\":\"approveOrgStatus\",\"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\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"approveOrg\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_account\",\"type\":\"address\"},{\"name\":\"_action\",\"type\":\"uint256\"}],\"name\":\"updateAccountStatus\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_enodeId\",\"type\":\"string\"}],\"name\":\"startBlacklistedNodeRecovery\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"addOrg\",\"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\":\"_roleId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"removeRole\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"startBlacklistedAccountRecovery\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_enodeId\",\"type\":\"string\"}],\"name\":\"addNode\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_action\",\"type\":\"uint256\"}],\"name\":\"updateOrgStatus\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"isNetworkAdmin\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"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\"},{\"inputs\":[{\"name\":\"_permImplUpgradeable\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}]" // PermInterfaceBin is the compiled bytecode used for deploying new contracts. -var PermInterfaceBin = "0x608060405234801561001057600080fd5b506040516020806127ff8339810180604052602081101561003057600080fd5b505160028054600160a060020a031916600160a060020a0390921691909117905561279f806100606000396000f3fe608060405234801561001057600080fd5b50600436106101d35760003560e060020a900480635adbfa7a116101085780639bd38101116100a6578063a97a440611610075578063a97a440614610f54578063bb3b6e8014611012578063d1aa0c2014611080578063f346a3a7146110a6576101d3565b80639bd3810114610d7e578063a5843f0814610dfc578063a634301214610e1f578063a97914bf14610edd576101d3565b80637e461258116100e25780637e46125814610ab557806384b7a84a14610b7c5780638cb58ef314610bf95780638f362a3e14610cb7576101d3565b80635adbfa7a1461090b5780635be9672c146109c95780636b568d7614610a37576101d3565b806343de646c116101755780634cff819e1161014f5780634cff819e146106e35780634fe57e7a146107f1578063511bbd9f1461081757806351f604c31461083d576101d3565b806343de646c146105f457806344478e79146106bf5780634cbfa82e146106db576101d3565b80631b610220116101b15780631b610220146103335780632f7f0a12146104415780633e239b231461050f5780633f25c28814610586576101d3565b806303ed6933146101d85780630cc50146146101fc57806316724c44146102bc575b600080fd5b6101e0611212565b60408051600160a060020a039092168252519081900360200190f35b6102ba6004803603606081101561021257600080fd5b810190602081018135602060020a81111561022c57600080fd5b82018360208201111561023e57600080fd5b803590602001918460018302840111602060020a8311171561025f57600080fd5b919390929091602081019035602060020a81111561027c57600080fd5b82018360208201111561028e57600080fd5b803590602001918460018302840111602060020a831117156102af57600080fd5b919350915035611221565b005b6102ba600480360360408110156102d257600080fd5b810190602081018135602060020a8111156102ec57600080fd5b8201836020820111156102fe57600080fd5b803590602001918460018302840111602060020a8311171561031f57600080fd5b919350915035600160a060020a0316611314565b6102ba6004803603606081101561034957600080fd5b810190602081018135602060020a81111561036357600080fd5b82018360208201111561037557600080fd5b803590602001918460018302840111602060020a8311171561039657600080fd5b919390929091602081019035602060020a8111156103b357600080fd5b8201836020820111156103c557600080fd5b803590602001918460018302840111602060020a831117156103e657600080fd5b919390929091602081019035602060020a81111561040357600080fd5b82018360208201111561041557600080fd5b803590602001918460018302840111602060020a8311171561043657600080fd5b5090925090506113d9565b6102ba6004803603606081101561045757600080fd5b600160a060020a038235169190810190604081016020820135602060020a81111561048157600080fd5b82018360208201111561049357600080fd5b803590602001918460018302840111602060020a831117156104b457600080fd5b919390929091602081019035602060020a8111156104d157600080fd5b8201836020820111156104e357600080fd5b803590602001918460018302840111602060020a8311171561050457600080fd5b5090925090506114e7565b6102ba6004803603604081101561052557600080fd5b810190602081018135602060020a81111561053f57600080fd5b82018360208201111561055157600080fd5b803590602001918460018302840111602060020a8311171561057257600080fd5b919350915035600160a060020a03166115bf565b6102ba6004803603602081101561059c57600080fd5b810190602081018135602060020a8111156105b657600080fd5b8201836020820111156105c857600080fd5b803590602001918460018302840111602060020a831117156105e957600080fd5b509092509050611667565b6102ba6004803603606081101561060a57600080fd5b810190602081018135602060020a81111561062457600080fd5b82018360208201111561063657600080fd5b803590602001918460018302840111602060020a8311171561065757600080fd5b91939092600160a060020a0383351692604081019060200135602060020a81111561068157600080fd5b82018360208201111561069357600080fd5b803590602001918460018302840111602060020a831117156106b457600080fd5b509092509050611713565b6106c76117e8565b604080519115158252519081900360200190f35b6106c761186d565b6102ba600480360360608110156106f957600080fd5b810190602081018135602060020a81111561071357600080fd5b82018360208201111561072557600080fd5b803590602001918460018302840111602060020a8311171561074657600080fd5b919390929091602081019035602060020a81111561076357600080fd5b82018360208201111561077557600080fd5b803590602001918460018302840111602060020a8311171561079657600080fd5b919390929091602081019035602060020a8111156107b357600080fd5b8201836020820111156107c557600080fd5b803590602001918460018302840111602060020a831117156107e657600080fd5b5090925090506118d3565b6102ba6004803603602081101561080757600080fd5b5035600160a060020a03166119ca565b6102ba6004803603602081101561082d57600080fd5b5035600160a060020a0316611a49565b6102ba600480360360a081101561085357600080fd5b810190602081018135602060020a81111561086d57600080fd5b82018360208201111561087f57600080fd5b803590602001918460018302840111602060020a831117156108a057600080fd5b919390929091602081019035602060020a8111156108bd57600080fd5b8201836020820111156108cf57600080fd5b803590602001918460018302840111602060020a831117156108f057600080fd5b91935091508035906020810135151590604001351515611af1565b6102ba6004803603604081101561092157600080fd5b810190602081018135602060020a81111561093b57600080fd5b82018360208201111561094d57600080fd5b803590602001918460018302840111602060020a8311171561096e57600080fd5b919390929091602081019035602060020a81111561098b57600080fd5b82018360208201111561099d57600080fd5b803590602001918460018302840111602060020a831117156109be57600080fd5b509092509050611bfc565b6102ba600480360360408110156109df57600080fd5b810190602081018135602060020a8111156109f957600080fd5b820183602082011115610a0b57600080fd5b803590602001918460018302840111602060020a83111715610a2c57600080fd5b919350915035611ce4565b6106c760048036036040811015610a4d57600080fd5b600160a060020a038235169190810190604081016020820135602060020a811115610a7757600080fd5b820183602082011115610a8957600080fd5b803590602001918460018302840111602060020a83111715610aaa57600080fd5b509092509050611d87565b6102ba60048036036060811015610acb57600080fd5b810190602081018135602060020a811115610ae557600080fd5b820183602082011115610af757600080fd5b803590602001918460018302840111602060020a83111715610b1857600080fd5b919390929091602081019035602060020a811115610b3557600080fd5b820183602082011115610b4757600080fd5b803590602001918460018302840111602060020a83111715610b6857600080fd5b919350915035600160a060020a0316611e55565b6102ba60048036036060811015610b9257600080fd5b810190602081018135602060020a811115610bac57600080fd5b820183602082011115610bbe57600080fd5b803590602001918460018302840111602060020a83111715610bdf57600080fd5b9193509150600160a060020a038135169060200135611f2a565b6102ba60048036036040811015610c0f57600080fd5b810190602081018135602060020a811115610c2957600080fd5b820183602082011115610c3b57600080fd5b803590602001918460018302840111602060020a83111715610c5c57600080fd5b919390929091602081019035602060020a811115610c7957600080fd5b820183602082011115610c8b57600080fd5b803590602001918460018302840111602060020a83111715610cac57600080fd5b509092509050611fda565b6102ba60048036036060811015610ccd57600080fd5b810190602081018135602060020a811115610ce757600080fd5b820183602082011115610cf957600080fd5b803590602001918460018302840111602060020a83111715610d1a57600080fd5b919390929091602081019035602060020a811115610d3757600080fd5b820183602082011115610d4957600080fd5b803590602001918460018302840111602060020a83111715610d6a57600080fd5b919350915035600160a060020a03166120a4565b6106c760048036036040811015610d9457600080fd5b600160a060020a038235169190810190604081016020820135602060020a811115610dbe57600080fd5b820183602082011115610dd057600080fd5b803590602001918460018302840111602060020a83111715610df157600080fd5b509092509050612179565b6102ba60048036036040811015610e1257600080fd5b5080359060200135612213565b6102ba60048036036040811015610e3557600080fd5b810190602081018135602060020a811115610e4f57600080fd5b820183602082011115610e6157600080fd5b803590602001918460018302840111602060020a83111715610e8257600080fd5b919390929091602081019035602060020a811115610e9f57600080fd5b820183602082011115610eb157600080fd5b803590602001918460018302840111602060020a83111715610ed257600080fd5b50909250905061227b565b6102ba60048036036040811015610ef357600080fd5b810190602081018135602060020a811115610f0d57600080fd5b820183602082011115610f1f57600080fd5b803590602001918460018302840111602060020a83111715610f4057600080fd5b919350915035600160a060020a0316612345565b6102ba60048036036040811015610f6a57600080fd5b810190602081018135602060020a811115610f8457600080fd5b820183602082011115610f9657600080fd5b803590602001918460018302840111602060020a83111715610fb757600080fd5b919390929091602081019035602060020a811115610fd457600080fd5b820183602082011115610fe657600080fd5b803590602001918460018302840111602060020a8311171561100757600080fd5b5090925090506123ed565b6102ba6004803603604081101561102857600080fd5b810190602081018135602060020a81111561104257600080fd5b82018360208201111561105457600080fd5b803590602001918460018302840111602060020a8311171561107557600080fd5b9193509150356124b7565b6106c76004803603602081101561109657600080fd5b5035600160a060020a031661255a565b611114600480360360208110156110bc57600080fd5b810190602081018135602060020a8111156110d657600080fd5b8201836020820111156110e857600080fd5b803590602001918460018302840111602060020a8311171561110957600080fd5b5090925090506125f3565b60405180806020018060200185600160a060020a0316600160a060020a03168152602001848152602001838103835287818151815260200191508051906020019080838360005b8381101561117357818101518382015260200161115b565b50505050905090810190601f1680156111a05780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b838110156111d35781810151838201526020016111bb565b50505050905090810190601f1680156112005780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b600054600160a060020a031690565b6000546040517fdbfad71100000000000000000000000000000000000000000000000000000000815260448101839052336064820181905260806004830190815260848301889052600160a060020a039093169263dbfad711928992899289928992899290918190602481019060a401898980828437600083820152601f01601f191690910184810383528781526020019050878780828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b1580156112f557600080fd5b505af1158015611309573d6000803e3d6000fd5b505050505050505050565b6000546040517f88843041000000000000000000000000000000000000000000000000000000008152600160a060020a03838116602483015233604483018190526060600484019081526064840187905291909316926388843041928792879287929091908190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156113bc57600080fd5b505af11580156113d0573d6000803e3d6000fd5b50505050505050565b6000546040517f1b61022000000000000000000000000000000000000000000000000000000000815260606004820190815260648201889052600160a060020a0390921691631b610220918991899189918991899189918190602481019060448101906084018a8a80828437600083820152601f01601f191690910185810384528881526020019050888880828437600083820152601f01601f191690910185810383528681526020019050868680828437600081840152601f19601f8201169050808301925050509950505050505050505050600060405180830381600087803b1580156114c757600080fd5b505af11580156114db573d6000803e3d6000fd5b50505050505050505050565b6000546040517f8baa8191000000000000000000000000000000000000000000000000000000008152600160a060020a03878116600483019081523360648401819052608060248501908152608485018990529290941693638baa8191938a938a938a938a938a9391929190604481019060a401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b1580156112f557600080fd5b6000546040517f4b20f45f000000000000000000000000000000000000000000000000000000008152600160a060020a0383811660248301523360448301819052606060048401908152606484018790529190931692634b20f45f928792879287929091908190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156113bc57600080fd5b6000546040517f3f25c28800000000000000000000000000000000000000000000000000000000815260206004820190815260248201849052600160a060020a0390921691633f25c28891859185918190604401848480828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b1580156116f757600080fd5b505af115801561170b573d6000803e3d6000fd5b505050505050565b6000546040517f404bf3eb000000000000000000000000000000000000000000000000000000008152600160a060020a038581166024830152336064830181905260806004840190815260848401899052919093169263404bf3eb9289928992899289928992918190604481019060a401898980828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b1580156112f557600080fd5b60008060009054906101000a9004600160a060020a0316600160a060020a03166344478e796040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561183c57600080fd5b505af1158015611850573d6000803e3d6000fd5b505050506040513d602081101561186657600080fd5b5051905090565b60008060009054906101000a9004600160a060020a0316600160a060020a0316634cbfa82e6040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156118bf57600080fd5b505afa158015611850573d6000803e3d6000fd5b6000546040517fa64d2860000000000000000000000000000000000000000000000000000000008152336064820181905260806004830190815260848301899052600160a060020a039093169263a64d2860928a928a928a928a928a928a9281906024810190604481019060a4018b8b80828437600083820152601f01601f191690910185810384528981526020019050898980828437600083820152601f01601f191690910185810383528781526020019050878780828437600081840152601f19601f8201169050808301925050509a5050505050505050505050600060405180830381600087803b1580156114c757600080fd5b60008054604080517f4fe57e7a000000000000000000000000000000000000000000000000000000008152600160a060020a03858116600483015291519190921692634fe57e7a926024808201939182900301818387803b158015611a2e57600080fd5b505af1158015611a42573d6000803e3d6000fd5b5050505050565b600254600160a060020a03163314611ac257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f696e76616c69642063616c6c6572000000000000000000000000000000000000604482015290519081900360640190fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000546040517f1b04c27600000000000000000000000000000000000000000000000000000000815260448101859052831515606482015282151560848201523360a4820181905260c06004830190815260c483018a9052600160a060020a0390931692631b04c276928b928b928b928b928b928b928b9291908190602481019060e4018b8b80828437600083820152601f01601f191690910184810383528981526020019050898980828437600081840152601f19601f8201169050808301925050509a5050505050505050505050600060405180830381600087803b158015611bdb57600080fd5b505af1158015611bef573d6000803e3d6000fd5b5050505050505050505050565b6000546040517f655a8ef5000000000000000000000000000000000000000000000000000000008152336044820181905260606004830190815260648301879052600160a060020a039093169263655a8ef5928892889288928892919081906024810190608401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015611cc657600080fd5b505af1158015611cda573d6000803e3d6000fd5b5050505050505050565b6000546040517fb554656400000000000000000000000000000000000000000000000000000000815260248101839052336044820181905260606004830190815260648301869052600160a060020a039093169263b5546564928792879287928190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156113bc57600080fd5b60008054604080517f6b568d76000000000000000000000000000000000000000000000000000000008152600160a060020a03878116600483019081526024830193845260448301879052931692636b568d76928892889288929091606401848480828437600083820152604051601f909101601f1916909201965060209550909350505081840390508186803b158015611e2157600080fd5b505afa158015611e35573d6000803e3d6000fd5b505050506040513d6020811015611e4b57600080fd5b5051949350505050565b6000546040517f3bc07dea000000000000000000000000000000000000000000000000000000008152600160a060020a0383811660448301523360648301819052608060048401908152608484018990529190931692633bc07dea9289928992899289928992918190602481019060a401898980828437600083820152601f01601f191690910184810383528781526020019050878780828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b1580156112f557600080fd5b6000546040517f04e81f1e000000000000000000000000000000000000000000000000000000008152600160a060020a0384811660248301526044820184905233606483018190526080600484019081526084840188905291909316926304e81f1e92889288928892889290819060a401878780828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015611cc657600080fd5b6000546040517fc3dc8e09000000000000000000000000000000000000000000000000000000008152336044820181905260606004830190815260648301879052600160a060020a039093169263c3dc8e09928892889288928892919081906024810190608401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015611cc657600080fd5b6000546040517ff922f802000000000000000000000000000000000000000000000000000000008152600160a060020a038381166044830152336064830181905260806004840190815260848401899052919093169263f922f8029289928992899289928992918190602481019060a401898980828437600083820152601f01601f191690910184810383528781526020019050878780828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b1580156112f557600080fd5b60008054604080517f9bd38101000000000000000000000000000000000000000000000000000000008152600160a060020a03878116600483019081526024830193845260448301879052931692639bd38101928892889288929091606401848480828437600083820152604051601f909101601f1916909201965060209550909350505081840390508186803b158015611e2157600080fd5b60008054604080517fa5843f0800000000000000000000000000000000000000000000000000000000815260048101869052602481018590529051600160a060020a039092169263a5843f089260448084019382900301818387803b1580156116f757600080fd5b6000546040517f5ca5adbe000000000000000000000000000000000000000000000000000000008152336044820181905260606004830190815260648301879052600160a060020a0390931692635ca5adbe928892889288928892919081906024810190608401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015611cc657600080fd5b6000546040517f1c249912000000000000000000000000000000000000000000000000000000008152600160a060020a0383811660248301523360448301819052606060048401908152606484018790529190931692631c249912928792879287929091908190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156113bc57600080fd5b6000546040517f59a260a3000000000000000000000000000000000000000000000000000000008152336044820181905260606004830190815260648301879052600160a060020a03909316926359a260a3928892889288928892919081906024810190608401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015611cc657600080fd5b6000546040517f3cf5f33b00000000000000000000000000000000000000000000000000000000815260248101839052336044820181905260606004830190815260648301869052600160a060020a0390931692633cf5f33b928792879287928190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156113bc57600080fd5b60008054604080517fd1aa0c20000000000000000000000000000000000000000000000000000000008152600160a060020a0385811660048301529151919092169163d1aa0c20916024808301926020929190829003018186803b1580156125c157600080fd5b505afa1580156125d5573d6000803e3d6000fd5b505050506040513d60208110156125eb57600080fd5b505192915050565b600080546040517ff346a3a700000000000000000000000000000000000000000000000000000000815260206004820190815260248201859052606093849390928392600160a060020a039092169163f346a3a791899189918190604401848480828437600081840152601f19601f820116905080830192505050935050505060006040518083038186803b15801561268b57600080fd5b505afa15801561269f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260808110156126c857600080fd5b810190808051602060020a8111156126df57600080fd5b820160208101848111156126f257600080fd5b8151602060020a81118282018710171561270b57600080fd5b50509291906020018051602060020a81111561272657600080fd5b8201602081018481111561273957600080fd5b8151602060020a81118282018710171561275257600080fd5b50506020820151604090920151949b909a509098509296509194505050505056fea165627a7a7230582053b69606c7b59212daa1989dcfad0eadbcfd408862b2107fb4bb2f98d980300b0029" +var PermInterfaceBin = "0x608060405234801561001057600080fd5b506040516020806127ff8339810180604052602081101561003057600080fd5b505160028054600160a060020a031916600160a060020a0390921691909117905561279f806100606000396000f3fe608060405234801561001057600080fd5b50600436106101d35760003560e060020a900480635adbfa7a116101085780639bd38101116100a6578063a97a440611610075578063a97a440614610f54578063bb3b6e8014611012578063d1aa0c2014611080578063f346a3a7146110a6576101d3565b80639bd3810114610d7e578063a5843f0814610dfc578063a634301214610e1f578063a97914bf14610edd576101d3565b80637e461258116100e25780637e46125814610ab557806384b7a84a14610b7c5780638cb58ef314610bf95780638f362a3e14610cb7576101d3565b80635adbfa7a1461090b5780635be9672c146109c95780636b568d7614610a37576101d3565b806343de646c116101755780634cff819e1161014f5780634cff819e146106e35780634fe57e7a146107f1578063511bbd9f1461081757806351f604c31461083d576101d3565b806343de646c146105f457806344478e79146106bf5780634cbfa82e146106db576101d3565b80631b610220116101b15780631b610220146103335780632f7f0a12146104415780633e239b231461050f5780633f25c28814610586576101d3565b806303ed6933146101d85780630cc50146146101fc57806316724c44146102bc575b600080fd5b6101e0611212565b60408051600160a060020a039092168252519081900360200190f35b6102ba6004803603606081101561021257600080fd5b810190602081018135602060020a81111561022c57600080fd5b82018360208201111561023e57600080fd5b803590602001918460018302840111602060020a8311171561025f57600080fd5b919390929091602081019035602060020a81111561027c57600080fd5b82018360208201111561028e57600080fd5b803590602001918460018302840111602060020a831117156102af57600080fd5b919350915035611221565b005b6102ba600480360360408110156102d257600080fd5b810190602081018135602060020a8111156102ec57600080fd5b8201836020820111156102fe57600080fd5b803590602001918460018302840111602060020a8311171561031f57600080fd5b919350915035600160a060020a0316611314565b6102ba6004803603606081101561034957600080fd5b810190602081018135602060020a81111561036357600080fd5b82018360208201111561037557600080fd5b803590602001918460018302840111602060020a8311171561039657600080fd5b919390929091602081019035602060020a8111156103b357600080fd5b8201836020820111156103c557600080fd5b803590602001918460018302840111602060020a831117156103e657600080fd5b919390929091602081019035602060020a81111561040357600080fd5b82018360208201111561041557600080fd5b803590602001918460018302840111602060020a8311171561043657600080fd5b5090925090506113d9565b6102ba6004803603606081101561045757600080fd5b600160a060020a038235169190810190604081016020820135602060020a81111561048157600080fd5b82018360208201111561049357600080fd5b803590602001918460018302840111602060020a831117156104b457600080fd5b919390929091602081019035602060020a8111156104d157600080fd5b8201836020820111156104e357600080fd5b803590602001918460018302840111602060020a8311171561050457600080fd5b5090925090506114e7565b6102ba6004803603604081101561052557600080fd5b810190602081018135602060020a81111561053f57600080fd5b82018360208201111561055157600080fd5b803590602001918460018302840111602060020a8311171561057257600080fd5b919350915035600160a060020a03166115bf565b6102ba6004803603602081101561059c57600080fd5b810190602081018135602060020a8111156105b657600080fd5b8201836020820111156105c857600080fd5b803590602001918460018302840111602060020a831117156105e957600080fd5b509092509050611667565b6102ba6004803603606081101561060a57600080fd5b810190602081018135602060020a81111561062457600080fd5b82018360208201111561063657600080fd5b803590602001918460018302840111602060020a8311171561065757600080fd5b91939092600160a060020a0383351692604081019060200135602060020a81111561068157600080fd5b82018360208201111561069357600080fd5b803590602001918460018302840111602060020a831117156106b457600080fd5b509092509050611713565b6106c76117e8565b604080519115158252519081900360200190f35b6106c761186d565b6102ba600480360360608110156106f957600080fd5b810190602081018135602060020a81111561071357600080fd5b82018360208201111561072557600080fd5b803590602001918460018302840111602060020a8311171561074657600080fd5b919390929091602081019035602060020a81111561076357600080fd5b82018360208201111561077557600080fd5b803590602001918460018302840111602060020a8311171561079657600080fd5b919390929091602081019035602060020a8111156107b357600080fd5b8201836020820111156107c557600080fd5b803590602001918460018302840111602060020a831117156107e657600080fd5b5090925090506118d3565b6102ba6004803603602081101561080757600080fd5b5035600160a060020a03166119ca565b6102ba6004803603602081101561082d57600080fd5b5035600160a060020a0316611a49565b6102ba600480360360a081101561085357600080fd5b810190602081018135602060020a81111561086d57600080fd5b82018360208201111561087f57600080fd5b803590602001918460018302840111602060020a831117156108a057600080fd5b919390929091602081019035602060020a8111156108bd57600080fd5b8201836020820111156108cf57600080fd5b803590602001918460018302840111602060020a831117156108f057600080fd5b91935091508035906020810135151590604001351515611af1565b6102ba6004803603604081101561092157600080fd5b810190602081018135602060020a81111561093b57600080fd5b82018360208201111561094d57600080fd5b803590602001918460018302840111602060020a8311171561096e57600080fd5b919390929091602081019035602060020a81111561098b57600080fd5b82018360208201111561099d57600080fd5b803590602001918460018302840111602060020a831117156109be57600080fd5b509092509050611bfc565b6102ba600480360360408110156109df57600080fd5b810190602081018135602060020a8111156109f957600080fd5b820183602082011115610a0b57600080fd5b803590602001918460018302840111602060020a83111715610a2c57600080fd5b919350915035611ce4565b6106c760048036036040811015610a4d57600080fd5b600160a060020a038235169190810190604081016020820135602060020a811115610a7757600080fd5b820183602082011115610a8957600080fd5b803590602001918460018302840111602060020a83111715610aaa57600080fd5b509092509050611d87565b6102ba60048036036060811015610acb57600080fd5b810190602081018135602060020a811115610ae557600080fd5b820183602082011115610af757600080fd5b803590602001918460018302840111602060020a83111715610b1857600080fd5b919390929091602081019035602060020a811115610b3557600080fd5b820183602082011115610b4757600080fd5b803590602001918460018302840111602060020a83111715610b6857600080fd5b919350915035600160a060020a0316611e55565b6102ba60048036036060811015610b9257600080fd5b810190602081018135602060020a811115610bac57600080fd5b820183602082011115610bbe57600080fd5b803590602001918460018302840111602060020a83111715610bdf57600080fd5b9193509150600160a060020a038135169060200135611f2a565b6102ba60048036036040811015610c0f57600080fd5b810190602081018135602060020a811115610c2957600080fd5b820183602082011115610c3b57600080fd5b803590602001918460018302840111602060020a83111715610c5c57600080fd5b919390929091602081019035602060020a811115610c7957600080fd5b820183602082011115610c8b57600080fd5b803590602001918460018302840111602060020a83111715610cac57600080fd5b509092509050611fda565b6102ba60048036036060811015610ccd57600080fd5b810190602081018135602060020a811115610ce757600080fd5b820183602082011115610cf957600080fd5b803590602001918460018302840111602060020a83111715610d1a57600080fd5b919390929091602081019035602060020a811115610d3757600080fd5b820183602082011115610d4957600080fd5b803590602001918460018302840111602060020a83111715610d6a57600080fd5b919350915035600160a060020a03166120a4565b6106c760048036036040811015610d9457600080fd5b600160a060020a038235169190810190604081016020820135602060020a811115610dbe57600080fd5b820183602082011115610dd057600080fd5b803590602001918460018302840111602060020a83111715610df157600080fd5b509092509050612179565b6102ba60048036036040811015610e1257600080fd5b5080359060200135612213565b6102ba60048036036040811015610e3557600080fd5b810190602081018135602060020a811115610e4f57600080fd5b820183602082011115610e6157600080fd5b803590602001918460018302840111602060020a83111715610e8257600080fd5b919390929091602081019035602060020a811115610e9f57600080fd5b820183602082011115610eb157600080fd5b803590602001918460018302840111602060020a83111715610ed257600080fd5b50909250905061227b565b6102ba60048036036040811015610ef357600080fd5b810190602081018135602060020a811115610f0d57600080fd5b820183602082011115610f1f57600080fd5b803590602001918460018302840111602060020a83111715610f4057600080fd5b919350915035600160a060020a0316612345565b6102ba60048036036040811015610f6a57600080fd5b810190602081018135602060020a811115610f8457600080fd5b820183602082011115610f9657600080fd5b803590602001918460018302840111602060020a83111715610fb757600080fd5b919390929091602081019035602060020a811115610fd457600080fd5b820183602082011115610fe657600080fd5b803590602001918460018302840111602060020a8311171561100757600080fd5b5090925090506123ed565b6102ba6004803603604081101561102857600080fd5b810190602081018135602060020a81111561104257600080fd5b82018360208201111561105457600080fd5b803590602001918460018302840111602060020a8311171561107557600080fd5b9193509150356124b7565b6106c76004803603602081101561109657600080fd5b5035600160a060020a031661255a565b611114600480360360208110156110bc57600080fd5b810190602081018135602060020a8111156110d657600080fd5b8201836020820111156110e857600080fd5b803590602001918460018302840111602060020a8311171561110957600080fd5b5090925090506125f3565b60405180806020018060200185600160a060020a0316600160a060020a03168152602001848152602001838103835287818151815260200191508051906020019080838360005b8381101561117357818101518382015260200161115b565b50505050905090810190601f1680156111a05780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b838110156111d35781810151838201526020016111bb565b50505050905090810190601f1680156112005780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b600054600160a060020a031690565b6000546040517fdbfad71100000000000000000000000000000000000000000000000000000000815260448101839052336064820181905260806004830190815260848301889052600160a060020a039093169263dbfad711928992899289928992899290918190602481019060a401898980828437600083820152601f01601f191690910184810383528781526020019050878780828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b1580156112f557600080fd5b505af1158015611309573d6000803e3d6000fd5b505050505050505050565b6000546040517f88843041000000000000000000000000000000000000000000000000000000008152600160a060020a03838116602483015233604483018190526060600484019081526064840187905291909316926388843041928792879287929091908190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156113bc57600080fd5b505af11580156113d0573d6000803e3d6000fd5b50505050505050565b6000546040517f1b61022000000000000000000000000000000000000000000000000000000000815260606004820190815260648201889052600160a060020a0390921691631b610220918991899189918991899189918190602481019060448101906084018a8a80828437600083820152601f01601f191690910185810384528881526020019050888880828437600083820152601f01601f191690910185810383528681526020019050868680828437600081840152601f19601f8201169050808301925050509950505050505050505050600060405180830381600087803b1580156114c757600080fd5b505af11580156114db573d6000803e3d6000fd5b50505050505050505050565b6000546040517f8baa8191000000000000000000000000000000000000000000000000000000008152600160a060020a03878116600483019081523360648401819052608060248501908152608485018990529290941693638baa8191938a938a938a938a938a9391929190604481019060a401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b1580156112f557600080fd5b6000546040517f4b20f45f000000000000000000000000000000000000000000000000000000008152600160a060020a0383811660248301523360448301819052606060048401908152606484018790529190931692634b20f45f928792879287929091908190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156113bc57600080fd5b6000546040517f3f25c28800000000000000000000000000000000000000000000000000000000815260206004820190815260248201849052600160a060020a0390921691633f25c28891859185918190604401848480828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b1580156116f757600080fd5b505af115801561170b573d6000803e3d6000fd5b505050505050565b6000546040517f404bf3eb000000000000000000000000000000000000000000000000000000008152600160a060020a038581166024830152336064830181905260806004840190815260848401899052919093169263404bf3eb9289928992899289928992918190604481019060a401898980828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b1580156112f557600080fd5b60008060009054906101000a9004600160a060020a0316600160a060020a03166344478e796040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561183c57600080fd5b505af1158015611850573d6000803e3d6000fd5b505050506040513d602081101561186657600080fd5b5051905090565b60008060009054906101000a9004600160a060020a0316600160a060020a0316634cbfa82e6040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156118bf57600080fd5b505afa158015611850573d6000803e3d6000fd5b6000546040517fa64d2860000000000000000000000000000000000000000000000000000000008152336064820181905260806004830190815260848301899052600160a060020a039093169263a64d2860928a928a928a928a928a928a9281906024810190604481019060a4018b8b80828437600083820152601f01601f191690910185810384528981526020019050898980828437600083820152601f01601f191690910185810383528781526020019050878780828437600081840152601f19601f8201169050808301925050509a5050505050505050505050600060405180830381600087803b1580156114c757600080fd5b60008054604080517f4fe57e7a000000000000000000000000000000000000000000000000000000008152600160a060020a03858116600483015291519190921692634fe57e7a926024808201939182900301818387803b158015611a2e57600080fd5b505af1158015611a42573d6000803e3d6000fd5b5050505050565b600254600160a060020a03163314611ac257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f696e76616c69642063616c6c6572000000000000000000000000000000000000604482015290519081900360640190fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000546040517f1b04c27600000000000000000000000000000000000000000000000000000000815260448101859052831515606482015282151560848201523360a4820181905260c06004830190815260c483018a9052600160a060020a0390931692631b04c276928b928b928b928b928b928b928b9291908190602481019060e4018b8b80828437600083820152601f01601f191690910184810383528981526020019050898980828437600081840152601f19601f8201169050808301925050509a5050505050505050505050600060405180830381600087803b158015611bdb57600080fd5b505af1158015611bef573d6000803e3d6000fd5b5050505050505050505050565b6000546040517f655a8ef5000000000000000000000000000000000000000000000000000000008152336044820181905260606004830190815260648301879052600160a060020a039093169263655a8ef5928892889288928892919081906024810190608401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015611cc657600080fd5b505af1158015611cda573d6000803e3d6000fd5b5050505050505050565b6000546040517fb554656400000000000000000000000000000000000000000000000000000000815260248101839052336044820181905260606004830190815260648301869052600160a060020a039093169263b5546564928792879287928190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156113bc57600080fd5b60008054604080517f6b568d76000000000000000000000000000000000000000000000000000000008152600160a060020a03878116600483019081526024830193845260448301879052931692636b568d76928892889288929091606401848480828437600083820152604051601f909101601f1916909201965060209550909350505081840390508186803b158015611e2157600080fd5b505afa158015611e35573d6000803e3d6000fd5b505050506040513d6020811015611e4b57600080fd5b5051949350505050565b6000546040517f3bc07dea000000000000000000000000000000000000000000000000000000008152600160a060020a0383811660448301523360648301819052608060048401908152608484018990529190931692633bc07dea9289928992899289928992918190602481019060a401898980828437600083820152601f01601f191690910184810383528781526020019050878780828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b1580156112f557600080fd5b6000546040517f04e81f1e000000000000000000000000000000000000000000000000000000008152600160a060020a0384811660248301526044820184905233606483018190526080600484019081526084840188905291909316926304e81f1e92889288928892889290819060a401878780828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015611cc657600080fd5b6000546040517fc3dc8e09000000000000000000000000000000000000000000000000000000008152336044820181905260606004830190815260648301879052600160a060020a039093169263c3dc8e09928892889288928892919081906024810190608401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015611cc657600080fd5b6000546040517ff922f802000000000000000000000000000000000000000000000000000000008152600160a060020a038381166044830152336064830181905260806004840190815260848401899052919093169263f922f8029289928992899289928992918190602481019060a401898980828437600083820152601f01601f191690910184810383528781526020019050878780828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b1580156112f557600080fd5b60008054604080517f9bd38101000000000000000000000000000000000000000000000000000000008152600160a060020a03878116600483019081526024830193845260448301879052931692639bd38101928892889288929091606401848480828437600083820152604051601f909101601f1916909201965060209550909350505081840390508186803b158015611e2157600080fd5b60008054604080517fa5843f0800000000000000000000000000000000000000000000000000000000815260048101869052602481018590529051600160a060020a039092169263a5843f089260448084019382900301818387803b1580156116f757600080fd5b6000546040517f5ca5adbe000000000000000000000000000000000000000000000000000000008152336044820181905260606004830190815260648301879052600160a060020a0390931692635ca5adbe928892889288928892919081906024810190608401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015611cc657600080fd5b6000546040517f1c249912000000000000000000000000000000000000000000000000000000008152600160a060020a0383811660248301523360448301819052606060048401908152606484018790529190931692631c249912928792879287929091908190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156113bc57600080fd5b6000546040517f59a260a3000000000000000000000000000000000000000000000000000000008152336044820181905260606004830190815260648301879052600160a060020a03909316926359a260a3928892889288928892919081906024810190608401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015611cc657600080fd5b6000546040517f3cf5f33b00000000000000000000000000000000000000000000000000000000815260248101839052336044820181905260606004830190815260648301869052600160a060020a0390931692633cf5f33b928792879287928190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156113bc57600080fd5b60008054604080517fd1aa0c20000000000000000000000000000000000000000000000000000000008152600160a060020a0385811660048301529151919092169163d1aa0c20916024808301926020929190829003018186803b1580156125c157600080fd5b505afa1580156125d5573d6000803e3d6000fd5b505050506040513d60208110156125eb57600080fd5b505192915050565b600080546040517ff346a3a700000000000000000000000000000000000000000000000000000000815260206004820190815260248201859052606093849390928392600160a060020a039092169163f346a3a791899189918190604401848480828437600081840152601f19601f820116905080830192505050935050505060006040518083038186803b15801561268b57600080fd5b505afa15801561269f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260808110156126c857600080fd5b810190808051602060020a8111156126df57600080fd5b820160208101848111156126f257600080fd5b8151602060020a81118282018710171561270b57600080fd5b50509291906020018051602060020a81111561272657600080fd5b8201602081018481111561273957600080fd5b8151602060020a81118282018710171561275257600080fd5b50506020820151604090920151949b909a509098509296509194505050505056fea165627a7a72305820012928785ab44384d889eb56390d7766c715e322f05d70cc2584d45b928233ce0029" // DeployPermInterface deploys a new Ethereum contract, binding an instance of PermInterface to it. func DeployPermInterface(auth *bind.TransactOpts, backend bind.ContractBackend, _permImplUpgradeable common.Address) (common.Address, *types.Transaction, *PermInterface, error) { diff --git a/permission/bind/permission_upgr.go b/permission/bind/permission_upgr.go index 274fecc82..d5d7a73c8 100644 --- a/permission/bind/permission_upgr.go +++ b/permission/bind/permission_upgr.go @@ -31,7 +31,7 @@ var ( const PermUpgrABI = "[{\"constant\":true,\"inputs\":[],\"name\":\"getPermImpl\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_proposedImpl\",\"type\":\"address\"}],\"name\":\"confirmImplChange\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getGuardian\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getPermInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_permInterface\",\"type\":\"address\"},{\"name\":\"_permImpl\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_guardian\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}]" // PermUpgrBin is the compiled bytecode used for deploying new contracts. -var PermUpgrBin = "0x608060405234801561001057600080fd5b5060405160208061079f8339810180604052602081101561003057600080fd5b505160008054600160a060020a03909216600160a060020a03199092169190911790556002805460a060020a60ff021916905561072d806100726000396000f3fe608060405234801561001057600080fd5b506004361061005a5760e060020a60003504630e32cf90811461005f57806322bcb39a14610083578063a75b87d2146100ab578063e572515c146100b3578063f09a4016146100bb575b600080fd5b6100676100e9565b60408051600160a060020a039092168252519081900360200190f35b6100a96004803603602081101561009957600080fd5b5035600160a060020a03166100f8565b005b610067610341565b610067610350565b6100a9600480360360408110156100d157600080fd5b50600160a060020a038135811691602001351661035f565b600154600160a060020a031690565b600054600160a060020a0316331461017157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f696e76616c69642063616c6c6572000000000000000000000000000000000000604482015290519081900360640190fd5b60608060606000600160009054906101000a9004600160a060020a0316600160a060020a031663cc9ba6fa6040518163ffffffff1660e060020a02815260040160006040518083038186803b1580156101c957600080fd5b505afa1580156101dd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052608081101561020657600080fd5b81019080805164010000000081111561021e57600080fd5b8201602081018481111561023157600080fd5b815164010000000081118282018710171561024b57600080fd5b5050929190602001805164010000000081111561026757600080fd5b8201602081018481111561027a57600080fd5b815164010000000081118282018710171561029457600080fd5b505092919060200180516401000000008111156102b057600080fd5b820160208101848111156102c357600080fd5b81516401000000008111828201871017156102dd57600080fd5b50506020909101519498509296509194509192506103029150869050858585856104e2565b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03878116919091179182905561033a9116610686565b5050505050565b600054600160a060020a031690565b600254600160a060020a031690565b600054600160a060020a031633146103d857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f696e76616c69642063616c6c6572000000000000000000000000000000000000604482015290519081900360640190fd5b60025474010000000000000000000000000000000000000000900460ff161561046257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f63616e206265206578656375746564206f6e6c79206f6e636500000000000000604482015290519081900360640190fd5b60018054600160a060020a0380841673ffffffffffffffffffffffffffffffffffffffff199283161792839055600280548683169316929092179091556104a99116610686565b50506002805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b84600160a060020a031663f5ad584a858585856040518563ffffffff1660e060020a0281526004018080602001806020018060200185151515158152602001848103845288818151815260200191508051906020019080838360005b8381101561055657818101518382015260200161053e565b50505050905090810190601f1680156105835780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b838110156105b657818101518382015260200161059e565b50505050905090810190601f1680156105e35780820380516001836020036101000a031916815260200191505b50848103825286518152865160209182019188019080838360005b838110156106165781810151838201526020016105fe565b50505050905090810190601f1680156106435780820380516001836020036101000a031916815260200191505b50975050505050505050600060405180830381600087803b15801561066757600080fd5b505af115801561067b573d6000803e3d6000fd5b505050505050505050565b600254604080517f511bbd9f000000000000000000000000000000000000000000000000000000008152600160a060020a0384811660048301529151919092169163511bbd9f91602480830192600092919082900301818387803b1580156106ed57600080fd5b505af115801561033a573d6000803e3d6000fdfea165627a7a72305820c72c50e5bc751713bb5b2ee801ec643bd840b7557519b323814578a72c448a0e0029" +var PermUpgrBin = "0x608060405234801561001057600080fd5b5060405160208061079f8339810180604052602081101561003057600080fd5b505160008054600160a060020a03909216600160a060020a03199092169190911790556002805460a060020a60ff021916905561072d806100726000396000f3fe608060405234801561001057600080fd5b506004361061005a5760e060020a60003504630e32cf90811461005f57806322bcb39a14610083578063a75b87d2146100ab578063e572515c146100b3578063f09a4016146100bb575b600080fd5b6100676100e9565b60408051600160a060020a039092168252519081900360200190f35b6100a96004803603602081101561009957600080fd5b5035600160a060020a03166100f8565b005b610067610341565b610067610350565b6100a9600480360360408110156100d157600080fd5b50600160a060020a038135811691602001351661035f565b600154600160a060020a031690565b600054600160a060020a0316331461017157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f696e76616c69642063616c6c6572000000000000000000000000000000000000604482015290519081900360640190fd5b60608060606000600160009054906101000a9004600160a060020a0316600160a060020a031663cc9ba6fa6040518163ffffffff1660e060020a02815260040160006040518083038186803b1580156101c957600080fd5b505afa1580156101dd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052608081101561020657600080fd5b81019080805164010000000081111561021e57600080fd5b8201602081018481111561023157600080fd5b815164010000000081118282018710171561024b57600080fd5b5050929190602001805164010000000081111561026757600080fd5b8201602081018481111561027a57600080fd5b815164010000000081118282018710171561029457600080fd5b505092919060200180516401000000008111156102b057600080fd5b820160208101848111156102c357600080fd5b81516401000000008111828201871017156102dd57600080fd5b50506020909101519498509296509194509192506103029150869050858585856104e2565b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03878116919091179182905561033a9116610686565b5050505050565b600054600160a060020a031690565b600254600160a060020a031690565b600054600160a060020a031633146103d857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f696e76616c69642063616c6c6572000000000000000000000000000000000000604482015290519081900360640190fd5b60025474010000000000000000000000000000000000000000900460ff161561046257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f63616e206265206578656375746564206f6e6c79206f6e636500000000000000604482015290519081900360640190fd5b60018054600160a060020a0380841673ffffffffffffffffffffffffffffffffffffffff199283161792839055600280548683169316929092179091556104a99116610686565b50506002805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b84600160a060020a031663f5ad584a858585856040518563ffffffff1660e060020a0281526004018080602001806020018060200185151515158152602001848103845288818151815260200191508051906020019080838360005b8381101561055657818101518382015260200161053e565b50505050905090810190601f1680156105835780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b838110156105b657818101518382015260200161059e565b50505050905090810190601f1680156105e35780820380516001836020036101000a031916815260200191505b50848103825286518152865160209182019188019080838360005b838110156106165781810151838201526020016105fe565b50505050905090810190601f1680156106435780820380516001836020036101000a031916815260200191505b50975050505050505050600060405180830381600087803b15801561066757600080fd5b505af115801561067b573d6000803e3d6000fd5b505050505050505050565b600254604080517f511bbd9f000000000000000000000000000000000000000000000000000000008152600160a060020a0384811660048301529151919092169163511bbd9f91602480830192600092919082900301818387803b1580156106ed57600080fd5b505af115801561033a573d6000803e3d6000fdfea165627a7a723058202734d6e2a425add14568c5fd8433249acecdcc90474937bbe9c0cc5474e806e70029" // DeployPermUpgr deploys a new Ethereum contract, binding an instance of PermUpgr to it. func DeployPermUpgr(auth *bind.TransactOpts, backend bind.ContractBackend, _guardian common.Address) (common.Address, *types.Transaction, *PermUpgr, error) { diff --git a/permission/bind/roles.go b/permission/bind/roles.go index f22b56ad6..e03ce2581 100644 --- a/permission/bind/roles.go +++ b/permission/bind/roles.go @@ -31,7 +31,7 @@ var ( const RoleManagerABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"_roleId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"getRoleDetails\",\"outputs\":[{\"name\":\"roleId\",\"type\":\"string\"},{\"name\":\"orgId\",\"type\":\"string\"},{\"name\":\"accessType\",\"type\":\"uint256\"},{\"name\":\"voter\",\"type\":\"bool\"},{\"name\":\"admin\",\"type\":\"bool\"},{\"name\":\"active\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_roleId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_baseAccess\",\"type\":\"uint256\"},{\"name\":\"_isVoter\",\"type\":\"bool\"},{\"name\":\"_isAdmin\",\"type\":\"bool\"}],\"name\":\"addRole\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getNumberOfRoles\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_rIndex\",\"type\":\"uint256\"}],\"name\":\"getRoleDetailsFromIndex\",\"outputs\":[{\"name\":\"roleId\",\"type\":\"string\"},{\"name\":\"orgId\",\"type\":\"string\"},{\"name\":\"accessType\",\"type\":\"uint256\"},{\"name\":\"voter\",\"type\":\"bool\"},{\"name\":\"admin\",\"type\":\"bool\"},{\"name\":\"active\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_roleId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"removeRole\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_roleId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_ultParent\",\"type\":\"string\"}],\"name\":\"roleExists\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_roleId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_ultParent\",\"type\":\"string\"}],\"name\":\"isAdminRole\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_roleId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_ultParent\",\"type\":\"string\"}],\"name\":\"isVoterRole\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_permUpgradable\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_roleId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_baseAccess\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"_isVoter\",\"type\":\"bool\"},{\"indexed\":false,\"name\":\"_isAdmin\",\"type\":\"bool\"}],\"name\":\"RoleCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_roleId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"}]" // RoleManagerBin is the compiled bytecode used for deploying new contracts. -var RoleManagerBin = "0x608060405234801561001057600080fd5b5060405160208061221f8339810180604052602081101561003057600080fd5b505160008054600160a060020a03909216600160a060020a03199092169190911790556121bd806100626000396000f3fe608060405234801561001057600080fd5b506004361061008c5760003560e060020a90048063a63430121161005f578063a6343012146103c6578063abf5739f14610488578063be322e5414610650578063deb16ba7146107645761008c565b80631870aba3146100915780637b7135791461025157806387f55d311461038f578063a451d4a8146103a9575b600080fd5b610153600480360360408110156100a757600080fd5b8101906020810181356401000000008111156100c257600080fd5b8201836020820111156100d457600080fd5b803590602001918460018302840111640100000000831117156100f657600080fd5b91939092909160208101903564010000000081111561011457600080fd5b82018360208201111561012657600080fd5b8035906020019184600183028401116401000000008311171561014857600080fd5b509092509050610878565b604080519081018590528315156060820152821515608082015281151560a082015260c08082528751908201528651819060208083019160e08401918b019080838360005b838110156101b0578181015183820152602001610198565b50505050905090810190601f1680156101dd5780820380516001836020036101000a031916815260200191505b5083810382528851815288516020918201918a019080838360005b838110156102105781810151838201526020016101f8565b50505050905090810190601f16801561023d5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b61038d600480360360a081101561026757600080fd5b81019060208101813564010000000081111561028257600080fd5b82018360208201111561029457600080fd5b803590602001918460018302840111640100000000831117156102b657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561030957600080fd5b82018360208201111561031b57600080fd5b8035906020019184600183028401116401000000008311171561033d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550508235935050506020810135151590604001351515610bfe565b005b610397611149565b60408051918252519081900360200190f35b610153600480360360208110156103bf57600080fd5b5035611150565b61038d600480360360408110156103dc57600080fd5b8101906020810181356401000000008111156103f757600080fd5b82018360208201111561040957600080fd5b8035906020019184600183028401116401000000008311171561042b57600080fd5b91939092909160208101903564010000000081111561044957600080fd5b82018360208201111561045b57600080fd5b8035906020019184600183028401116401000000008311171561047d57600080fd5b50909250905061136e565b61063c6004803603606081101561049e57600080fd5b8101906020810181356401000000008111156104b957600080fd5b8201836020820111156104cb57600080fd5b803590602001918460018302840111640100000000831117156104ed57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561054057600080fd5b82018360208201111561055257600080fd5b8035906020019184600183028401116401000000008311171561057457600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156105c757600080fd5b8201836020820111156105d957600080fd5b803590602001918460018302840111640100000000831117156105fb57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611666945050505050565b604080519115158252519081900360200190f35b61063c6004803603606081101561066657600080fd5b81019060208101813564010000000081111561068157600080fd5b82018360208201111561069357600080fd5b803590602001918460018302840111640100000000831117156106b557600080fd5b9193909290916020810190356401000000008111156106d357600080fd5b8201836020820111156106e557600080fd5b8035906020019184600183028401116401000000008311171561070757600080fd5b91939092909160208101903564010000000081111561072557600080fd5b82018360208201111561073757600080fd5b8035906020019184600183028401116401000000008311171561075957600080fd5b5090925090506118da565b61063c6004803603606081101561077a57600080fd5b81019060208101813564010000000081111561079557600080fd5b8201836020820111156107a757600080fd5b803590602001918460018302840111640100000000831117156107c957600080fd5b9193909290916020810190356401000000008111156107e757600080fd5b8201836020820111156107f957600080fd5b8035906020019184600183028401116401000000008311171561081b57600080fd5b91939092909160208101903564010000000081111561083957600080fd5b82018360208201111561084b57600080fd5b8035906020019184600183028401116401000000008311171561086d57600080fd5b509092509050611c57565b6060806000806000806109028a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8e018190048102820181019092528c815292508c91508b9081908401838280828437600092018290525060408051602081019091529081529250611666915050565b151561096c57898960008060008085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506040805160208101909152908152939f50929d50959b509399509197509550610bf1945050505050565b60006109e18b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8f018190048102820181019092528d815292508d91508c9081908401838280828437600092019190915250611fc992505050565b90506001818154811015156109f257fe5b9060005260206000209060040201600001600182815481101515610a1257fe5b9060005260206000209060040201600101600183815481101515610a3257fe5b906000526020600020906004020160020154600184815481101515610a5357fe5b60009182526020909120600360049092020101546001805460ff9092169186908110610a7b57fe5b906000526020600020906004020160030160019054906101000a900460ff16600186815481101515610aa957fe5b6000918252602091829020600491909102016003015486546040805160026101006001851615026000190190931692909204601f81018590048502830185019091528082526201000090920460ff169290918891830182828015610b4e5780601f10610b2357610100808354040283529160200191610b4e565b820191906000526020600020905b815481529060010190602001808311610b3157829003601f168201915b5050885460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959b508a945092508401905082828015610bdc5780601f10610bb157610100808354040283529160200191610bdc565b820191906000526020600020905b815481529060010190602001808311610bbf57829003601f168201915b50505050509450965096509650965096509650505b9499939850945094509450565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b158015610c4e57600080fd5b505afa158015610c62573d6000803e3d6000fd5b505050506040513d6020811015610c7857600080fd5b5051600160a060020a03163314610cc7576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020612172833981519152604482015290519081900360640190fd5b600260008686604051602001808060200180602001838103835285818151815260200191508051906020019080838360005b83811015610d11578181015183820152602001610cf9565b50505050905090810190601f168015610d3e5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015610d71578181015183820152602001610d59565b50505050905090810190601f168015610d9e5780820380516001836020036101000a031916815260200191505b50945050505050604051602081830303815290604052805190602001208152602001908152602001600020546000141515610e23576040805160e560020a62461bcd02815260206004820152601760248201527f726f6c652065786973747320666f7220746865206f7267000000000000000000604482015290519081900360640190fd5b60038054600101908190556040805160208082018381528951606084015289516002946000948c948c94938493830192608001918701908083838b5b83811015610e77578181015183820152602001610e5f565b50505050905090810190601f168015610ea45780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015610ed7578181015183820152602001610ebf565b50505050905090810190601f168015610f045780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208852878201989098529587016000908120989098555050845160c0810186528b81528085018b905294850189905250505084151560608301528315156080830152600160a083018190528054808201808355919094528251805191946004027fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60192610fae928492909101906120d9565b506020828101518051610fc792600185019201906120d9565b5060408281015160028301556060808401516003909301805460808087015160a09788015160ff199093169615159690961761ff001916610100961515969096029590951762ff0000191662010000911515919091021790558151918201889052861515908201528415159181019190915281815287519181019190915286517fefa5bc1bedbee25b04b00855c15a0c180ecb4a2440d4d08296e49561655e2b1c92508791879187918791879190819060208083019160c08401918a019080838360005b838110156110a357818101518382015260200161108b565b50505050905090810190601f1680156110d05780820380516001836020036101000a031916815260200191505b50838103825287518152875160209182019189019080838360005b838110156111035781810151838201526020016110eb565b50505050905090810190601f1680156111305780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15050505050565b6001545b90565b60608060008060008060018781548110151561116857fe5b906000526020600020906004020160000160018881548110151561118857fe5b90600052602060002090600402016001016001898154811015156111a857fe5b90600052602060002090600402016002015460018a8154811015156111c957fe5b60009182526020909120600360049092020101546001805460ff909216918c9081106111f157fe5b906000526020600020906004020160030160019054906101000a900460ff1660018c81548110151561121f57fe5b6000918252602091829020600491909102016003015486546040805160026101006001851615026000190190931692909204601f81018590048502830185019091528082526201000090920460ff1692909188918301828280156112c45780601f10611299576101008083540402835291602001916112c4565b820191906000526020600020905b8154815290600101906020018083116112a757829003601f168201915b5050885460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959b508a9450925084019050828280156113525780601f1061132757610100808354040283529160200191611352565b820191906000526020600020905b81548152906001019060200180831161133557829003601f168201915b5050505050945095509550955095509550955091939550919395565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156113be57600080fd5b505afa1580156113d2573d6000803e3d6000fd5b505050506040513d60208110156113e857600080fd5b5051600160a060020a03163314611437576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020612172833981519152604482015290519081900360640190fd5b60026000858585856040516020018080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f820116905080830192505050965050505050505060405160208183030381529060405280519060200120815260200190815260200160002054600014151515611523576040805160e560020a62461bcd02815260206004820152601360248201527f726f6c6520646f6573206e6f7420657869737400000000000000000000000000604482015290519081900360640190fd5b600061159885858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f89018190048102820181019092528781529250879150869081908401838280828437600092019190915250611fc992505050565b905060006001828154811015156115ab57fe5b906000526020600020906004020160030160026101000a81548160ff0219169083151502179055507f1196059dd83524bf989fd94bb65808c09dbea2ab791fb6bfa87a0e0aa64b2ea6858585856040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a15050505050565b600080600260008686604051602001808060200180602001838103835285818151815260200191508051906020019080838360005b838110156116b357818101518382015260200161169b565b50505050905090810190601f1680156116e05780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156117135781810151838201526020016116fb565b50505050905090810190601f1680156117405780820380516001836020036101000a031916815260200191505b509450505050506040516020818303038152906040528051906020012081526020019081526020016000205460001415156117b75761177f8585611fc9565b905060018181548110151561179057fe5b906000526020600020906004020160030160029054906101000a900460ff169150506118d3565b600260008685604051602001808060200180602001838103835285818151815260200191508051906020019080838360005b838110156118015781810151838201526020016117e9565b50505050905090810190601f16801561182e5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611861578181015183820152602001611849565b50505050905090810190601f16801561188e5780820380516001836020036101000a031916815260200191505b509450505050506040516020818303038152906040528051906020012081526020019081526020016000205460001415156118cd5761177f8584611fc9565b60009150505b9392505050565b60008060009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561192c57600080fd5b505afa158015611940573d6000803e3d6000fd5b505050506040513d602081101561195657600080fd5b5051600160a060020a031633146119a5576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020612172833981519152604482015290519081900360640190fd5b611a4c87878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8b01819004810282018101909252898152925089915088908190840183828082843760009201919091525050604080516020601f8a01819004810282018101909252888152925088915087908190840183828082843760009201919091525061166692505050565b1515611a5a57506000611c4d565b600060026000898989896040516020018080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050604051602081830303815290604052805190602001208152602001908152602001600020546000141515611b7157611b6a88888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a9150899081908401838280828437600092019190915250611fc992505050565b9050611be7565b611be488888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250611fc992505050565b90505b6001805482908110611bf557fe5b906000526020600020906004020160030160029054906101000a900460ff168015611c4957506001805482908110611c2957fe5b906000526020600020906004020160030160019054906101000a900460ff165b9150505b9695505050505050565b60008060009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b158015611ca957600080fd5b505afa158015611cbd573d6000803e3d6000fd5b505050506040513d6020811015611cd357600080fd5b5051600160a060020a03163314611d22576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020612172833981519152604482015290519081900360640190fd5b611dc987878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8b01819004810282018101909252898152925089915088908190840183828082843760009201919091525050604080516020601f8a01819004810282018101909252888152925088915087908190840183828082843760009201919091525061166692505050565b1515611dd757506000611c4d565b600060026000898989896040516020018080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050604051602081830303815290604052805190602001208152602001908152602001600020546000141515611eee57611ee788888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a9150899081908401838280828437600092019190915250611fc992505050565b9050611f64565b611f6188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250611fc992505050565b90505b6001805482908110611f7257fe5b906000526020600020906004020160030160029054906101000a900460ff168015611c4957506001805482908110611fa657fe5b600091825260209091206004909102016003015460ff1698975050505050505050565b60006001600260008585604051602001808060200180602001838103835285818151815260200191508051906020019080838360005b83811015612017578181015183820152602001611fff565b50505050905090810190601f1680156120445780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561207757818101518382015260200161205f565b50505050905090810190601f1680156120a45780820380516001836020036101000a031916815260200191505b509450505050506040516020818303038152906040528051906020012081526020019081526020016000205403905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061211a57805160ff1916838001178555612147565b82800160010185558215612147579182015b8281111561214757825182559160200191906001019061212c565b50612153929150612157565b5090565b61114d91905b80821115612153576000815560010161215d56fe696e76616c69642063616c6c6572000000000000000000000000000000000000a165627a7a723058202169e661d0972ecd8b71b7dc38b9e6dd16ceee30aaa2fb207d7a911173b940150029" +var RoleManagerBin = "0x608060405234801561001057600080fd5b5060405160208061221f8339810180604052602081101561003057600080fd5b505160008054600160a060020a03909216600160a060020a03199092169190911790556121bd806100626000396000f3fe608060405234801561001057600080fd5b506004361061008c5760003560e060020a90048063a63430121161005f578063a6343012146103c6578063abf5739f14610488578063be322e5414610650578063deb16ba7146107645761008c565b80631870aba3146100915780637b7135791461025157806387f55d311461038f578063a451d4a8146103a9575b600080fd5b610153600480360360408110156100a757600080fd5b8101906020810181356401000000008111156100c257600080fd5b8201836020820111156100d457600080fd5b803590602001918460018302840111640100000000831117156100f657600080fd5b91939092909160208101903564010000000081111561011457600080fd5b82018360208201111561012657600080fd5b8035906020019184600183028401116401000000008311171561014857600080fd5b509092509050610878565b604080519081018590528315156060820152821515608082015281151560a082015260c08082528751908201528651819060208083019160e08401918b019080838360005b838110156101b0578181015183820152602001610198565b50505050905090810190601f1680156101dd5780820380516001836020036101000a031916815260200191505b5083810382528851815288516020918201918a019080838360005b838110156102105781810151838201526020016101f8565b50505050905090810190601f16801561023d5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b61038d600480360360a081101561026757600080fd5b81019060208101813564010000000081111561028257600080fd5b82018360208201111561029457600080fd5b803590602001918460018302840111640100000000831117156102b657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561030957600080fd5b82018360208201111561031b57600080fd5b8035906020019184600183028401116401000000008311171561033d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550508235935050506020810135151590604001351515610bfe565b005b610397611149565b60408051918252519081900360200190f35b610153600480360360208110156103bf57600080fd5b5035611150565b61038d600480360360408110156103dc57600080fd5b8101906020810181356401000000008111156103f757600080fd5b82018360208201111561040957600080fd5b8035906020019184600183028401116401000000008311171561042b57600080fd5b91939092909160208101903564010000000081111561044957600080fd5b82018360208201111561045b57600080fd5b8035906020019184600183028401116401000000008311171561047d57600080fd5b50909250905061136e565b61063c6004803603606081101561049e57600080fd5b8101906020810181356401000000008111156104b957600080fd5b8201836020820111156104cb57600080fd5b803590602001918460018302840111640100000000831117156104ed57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561054057600080fd5b82018360208201111561055257600080fd5b8035906020019184600183028401116401000000008311171561057457600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156105c757600080fd5b8201836020820111156105d957600080fd5b803590602001918460018302840111640100000000831117156105fb57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611666945050505050565b604080519115158252519081900360200190f35b61063c6004803603606081101561066657600080fd5b81019060208101813564010000000081111561068157600080fd5b82018360208201111561069357600080fd5b803590602001918460018302840111640100000000831117156106b557600080fd5b9193909290916020810190356401000000008111156106d357600080fd5b8201836020820111156106e557600080fd5b8035906020019184600183028401116401000000008311171561070757600080fd5b91939092909160208101903564010000000081111561072557600080fd5b82018360208201111561073757600080fd5b8035906020019184600183028401116401000000008311171561075957600080fd5b5090925090506118da565b61063c6004803603606081101561077a57600080fd5b81019060208101813564010000000081111561079557600080fd5b8201836020820111156107a757600080fd5b803590602001918460018302840111640100000000831117156107c957600080fd5b9193909290916020810190356401000000008111156107e757600080fd5b8201836020820111156107f957600080fd5b8035906020019184600183028401116401000000008311171561081b57600080fd5b91939092909160208101903564010000000081111561083957600080fd5b82018360208201111561084b57600080fd5b8035906020019184600183028401116401000000008311171561086d57600080fd5b509092509050611c57565b6060806000806000806109028a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8e018190048102820181019092528c815292508c91508b9081908401838280828437600092018290525060408051602081019091529081529250611666915050565b151561096c57898960008060008085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506040805160208101909152908152939f50929d50959b509399509197509550610bf1945050505050565b60006109e18b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8f018190048102820181019092528d815292508d91508c9081908401838280828437600092019190915250611fc992505050565b90506001818154811015156109f257fe5b9060005260206000209060040201600001600182815481101515610a1257fe5b9060005260206000209060040201600101600183815481101515610a3257fe5b906000526020600020906004020160020154600184815481101515610a5357fe5b60009182526020909120600360049092020101546001805460ff9092169186908110610a7b57fe5b906000526020600020906004020160030160019054906101000a900460ff16600186815481101515610aa957fe5b6000918252602091829020600491909102016003015486546040805160026101006001851615026000190190931692909204601f81018590048502830185019091528082526201000090920460ff169290918891830182828015610b4e5780601f10610b2357610100808354040283529160200191610b4e565b820191906000526020600020905b815481529060010190602001808311610b3157829003601f168201915b5050885460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959b508a945092508401905082828015610bdc5780601f10610bb157610100808354040283529160200191610bdc565b820191906000526020600020905b815481529060010190602001808311610bbf57829003601f168201915b50505050509450965096509650965096509650505b9499939850945094509450565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b158015610c4e57600080fd5b505afa158015610c62573d6000803e3d6000fd5b505050506040513d6020811015610c7857600080fd5b5051600160a060020a03163314610cc7576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020612172833981519152604482015290519081900360640190fd5b600260008686604051602001808060200180602001838103835285818151815260200191508051906020019080838360005b83811015610d11578181015183820152602001610cf9565b50505050905090810190601f168015610d3e5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015610d71578181015183820152602001610d59565b50505050905090810190601f168015610d9e5780820380516001836020036101000a031916815260200191505b50945050505050604051602081830303815290604052805190602001208152602001908152602001600020546000141515610e23576040805160e560020a62461bcd02815260206004820152601760248201527f726f6c652065786973747320666f7220746865206f7267000000000000000000604482015290519081900360640190fd5b60038054600101908190556040805160208082018381528951606084015289516002946000948c948c94938493830192608001918701908083838b5b83811015610e77578181015183820152602001610e5f565b50505050905090810190601f168015610ea45780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015610ed7578181015183820152602001610ebf565b50505050905090810190601f168015610f045780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208852878201989098529587016000908120989098555050845160c0810186528b81528085018b905294850189905250505084151560608301528315156080830152600160a083018190528054808201808355919094528251805191946004027fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60192610fae928492909101906120d9565b506020828101518051610fc792600185019201906120d9565b5060408281015160028301556060808401516003909301805460808087015160a09788015160ff199093169615159690961761ff001916610100961515969096029590951762ff0000191662010000911515919091021790558151918201889052861515908201528415159181019190915281815287519181019190915286517fefa5bc1bedbee25b04b00855c15a0c180ecb4a2440d4d08296e49561655e2b1c92508791879187918791879190819060208083019160c08401918a019080838360005b838110156110a357818101518382015260200161108b565b50505050905090810190601f1680156110d05780820380516001836020036101000a031916815260200191505b50838103825287518152875160209182019189019080838360005b838110156111035781810151838201526020016110eb565b50505050905090810190601f1680156111305780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15050505050565b6001545b90565b60608060008060008060018781548110151561116857fe5b906000526020600020906004020160000160018881548110151561118857fe5b90600052602060002090600402016001016001898154811015156111a857fe5b90600052602060002090600402016002015460018a8154811015156111c957fe5b60009182526020909120600360049092020101546001805460ff909216918c9081106111f157fe5b906000526020600020906004020160030160019054906101000a900460ff1660018c81548110151561121f57fe5b6000918252602091829020600491909102016003015486546040805160026101006001851615026000190190931692909204601f81018590048502830185019091528082526201000090920460ff1692909188918301828280156112c45780601f10611299576101008083540402835291602001916112c4565b820191906000526020600020905b8154815290600101906020018083116112a757829003601f168201915b5050885460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959b508a9450925084019050828280156113525780601f1061132757610100808354040283529160200191611352565b820191906000526020600020905b81548152906001019060200180831161133557829003601f168201915b5050505050945095509550955095509550955091939550919395565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156113be57600080fd5b505afa1580156113d2573d6000803e3d6000fd5b505050506040513d60208110156113e857600080fd5b5051600160a060020a03163314611437576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020612172833981519152604482015290519081900360640190fd5b60026000858585856040516020018080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f820116905080830192505050965050505050505060405160208183030381529060405280519060200120815260200190815260200160002054600014151515611523576040805160e560020a62461bcd02815260206004820152601360248201527f726f6c6520646f6573206e6f7420657869737400000000000000000000000000604482015290519081900360640190fd5b600061159885858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f89018190048102820181019092528781529250879150869081908401838280828437600092019190915250611fc992505050565b905060006001828154811015156115ab57fe5b906000526020600020906004020160030160026101000a81548160ff0219169083151502179055507f1196059dd83524bf989fd94bb65808c09dbea2ab791fb6bfa87a0e0aa64b2ea6858585856040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a15050505050565b600080600260008686604051602001808060200180602001838103835285818151815260200191508051906020019080838360005b838110156116b357818101518382015260200161169b565b50505050905090810190601f1680156116e05780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156117135781810151838201526020016116fb565b50505050905090810190601f1680156117405780820380516001836020036101000a031916815260200191505b509450505050506040516020818303038152906040528051906020012081526020019081526020016000205460001415156117b75761177f8585611fc9565b905060018181548110151561179057fe5b906000526020600020906004020160030160029054906101000a900460ff169150506118d3565b600260008685604051602001808060200180602001838103835285818151815260200191508051906020019080838360005b838110156118015781810151838201526020016117e9565b50505050905090810190601f16801561182e5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611861578181015183820152602001611849565b50505050905090810190601f16801561188e5780820380516001836020036101000a031916815260200191505b509450505050506040516020818303038152906040528051906020012081526020019081526020016000205460001415156118cd5761177f8584611fc9565b60009150505b9392505050565b60008060009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561192c57600080fd5b505afa158015611940573d6000803e3d6000fd5b505050506040513d602081101561195657600080fd5b5051600160a060020a031633146119a5576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020612172833981519152604482015290519081900360640190fd5b611a4c87878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8b01819004810282018101909252898152925089915088908190840183828082843760009201919091525050604080516020601f8a01819004810282018101909252888152925088915087908190840183828082843760009201919091525061166692505050565b1515611a5a57506000611c4d565b600060026000898989896040516020018080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050604051602081830303815290604052805190602001208152602001908152602001600020546000141515611b7157611b6a88888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a9150899081908401838280828437600092019190915250611fc992505050565b9050611be7565b611be488888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250611fc992505050565b90505b6001805482908110611bf557fe5b906000526020600020906004020160030160029054906101000a900460ff168015611c4957506001805482908110611c2957fe5b906000526020600020906004020160030160019054906101000a900460ff165b9150505b9695505050505050565b60008060009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b158015611ca957600080fd5b505afa158015611cbd573d6000803e3d6000fd5b505050506040513d6020811015611cd357600080fd5b5051600160a060020a03163314611d22576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020612172833981519152604482015290519081900360640190fd5b611dc987878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8b01819004810282018101909252898152925089915088908190840183828082843760009201919091525050604080516020601f8a01819004810282018101909252888152925088915087908190840183828082843760009201919091525061166692505050565b1515611dd757506000611c4d565b600060026000898989896040516020018080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050604051602081830303815290604052805190602001208152602001908152602001600020546000141515611eee57611ee788888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a9150899081908401838280828437600092019190915250611fc992505050565b9050611f64565b611f6188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250611fc992505050565b90505b6001805482908110611f7257fe5b906000526020600020906004020160030160029054906101000a900460ff168015611c4957506001805482908110611fa657fe5b600091825260209091206004909102016003015460ff1698975050505050505050565b60006001600260008585604051602001808060200180602001838103835285818151815260200191508051906020019080838360005b83811015612017578181015183820152602001611fff565b50505050905090810190601f1680156120445780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561207757818101518382015260200161205f565b50505050905090810190601f1680156120a45780820380516001836020036101000a031916815260200191505b509450505050506040516020818303038152906040528051906020012081526020019081526020016000205403905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061211a57805160ff1916838001178555612147565b82800160010185558215612147579182015b8281111561214757825182559160200191906001019061212c565b50612153929150612157565b5090565b61114d91905b80821115612153576000815560010161215d56fe696e76616c69642063616c6c6572000000000000000000000000000000000000a165627a7a72305820f8334f4c837fc860658ba7f6cbdcd114ed4d2ad6e79527389616d6999c588de60029" // DeployRoleManager deploys a new Ethereum contract, binding an instance of RoleManager to it. func DeployRoleManager(auth *bind.TransactOpts, backend bind.ContractBackend, _permUpgradable common.Address) (common.Address, *types.Transaction, *RoleManager, error) { diff --git a/permission/bind/voter.go b/permission/bind/voter.go index 1fed047d8..0d509821a 100644 --- a/permission/bind/voter.go +++ b/permission/bind/voter.go @@ -31,7 +31,7 @@ var ( const VoterManagerABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"getPendingOpDetails\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"address\"},{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_vAccount\",\"type\":\"address\"}],\"name\":\"addVoter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_vAccount\",\"type\":\"address\"}],\"name\":\"deleteVoter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_authOrg\",\"type\":\"string\"},{\"name\":\"_vAccount\",\"type\":\"address\"},{\"name\":\"_pendingOp\",\"type\":\"uint256\"}],\"name\":\"processVote\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_authOrg\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_account\",\"type\":\"address\"},{\"name\":\"_pendingOp\",\"type\":\"uint256\"}],\"name\":\"addVotingItem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_permUpgradable\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_vAccount\",\"type\":\"address\"}],\"name\":\"VoterAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_vAccount\",\"type\":\"address\"}],\"name\":\"VoterDeleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"VotingItemAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"VoteProcessed\",\"type\":\"event\"}]" // VoterManagerBin is the compiled bytecode used for deploying new contracts. -var VoterManagerBin = "0x6080604052600060035534801561001557600080fd5b506040516020806120968339810180604052602081101561003557600080fd5b505160008054600160a060020a03909216600160a060020a031990921691909117905561202f806100676000396000f3fe608060405234801561001057600080fd5b506004361061005a5760e060020a6000350463014e6acc811461005f5780635607395b146101cd57806359cbd6fe14610248578063b0213864146102c1578063e98ac22d14610354575b600080fd5b6100cf6004803603602081101561007557600080fd5b81019060208101813564010000000081111561009057600080fd5b8201836020820111156100a257600080fd5b803590602001918460018302840111640100000000831117156100c457600080fd5b509092509050610477565b60405180806020018060200185600160a060020a0316600160a060020a03168152602001848152602001838103835287818151815260200191508051906020019080838360005b8381101561012e578181015183820152602001610116565b50505050905090810190601f16801561015b5780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b8381101561018e578181015183820152602001610176565b50505050905090810190601f1680156101bb5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b610246600480360360408110156101e357600080fd5b8101906020810181356401000000008111156101fe57600080fd5b82018360208201111561021057600080fd5b8035906020019184600183028401116401000000008311171561023257600080fd5b919350915035600160a060020a031661074e565b005b6102466004803603604081101561025e57600080fd5b81019060208101813564010000000081111561027957600080fd5b82018360208201111561028b57600080fd5b803590602001918460018302840111640100000000831117156102ad57600080fd5b919350915035600160a060020a0316610f63565b610340600480360360608110156102d757600080fd5b8101906020810181356401000000008111156102f257600080fd5b82018360208201111561030457600080fd5b8035906020019184600183028401116401000000008311171561032657600080fd5b9193509150600160a060020a03813516906020013561124d565b604080519115158252519081900360200190f35b610246600480360360a081101561036a57600080fd5b81019060208101813564010000000081111561038557600080fd5b82018360208201111561039757600080fd5b803590602001918460018302840111640100000000831117156103b957600080fd5b9193909290916020810190356401000000008111156103d757600080fd5b8201836020820111156103e957600080fd5b8035906020019184600183028401116401000000008311171561040b57600080fd5b91939092909160208101903564010000000081111561042957600080fd5b82018360208201111561043b57600080fd5b8035906020019184600183028401116401000000008311171561045d57600080fd5b9193509150600160a060020a038135169060200135611772565b6060806000806000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156104cd57600080fd5b505afa1580156104e1573d6000803e3d6000fd5b505050506040513d60208110156104f757600080fd5b5051600160a060020a03163314610546576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020611fb0833981519152604482015290519081900360640190fd5b600061058787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b7492505050565b905060018181548110151561059857fe5b90600052602060002090600b02016004016000016001828154811015156105bb57fe5b90600052602060002090600b02016004016001016001838154811015156105de57fe5b600091825260209091206006600b90920201015460018054600160a060020a03909216918590811061060c57fe5b60009182526020918290206007600b909202010154845460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815291928691908301828280156106a75780601f1061067c576101008083540402835291602001916106a7565b820191906000526020600020905b81548152906001019060200180831161068a57829003601f168201915b5050865460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959950889450925084019050828280156107355780601f1061070a57610100808354040283529160200191610735565b820191906000526020600020905b81548152906001019060200180831161071857829003601f168201915b5050505050925094509450945094505092959194509250565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561079e57600080fd5b505afa1580156107b2573d6000803e3d6000fd5b505050506040513d60208110156107c857600080fd5b5051600160a060020a03163314610817576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020611fb0833981519152604482015290519081900360640190fd5b60026000848460405160200180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040528051906020012081526020019081526020016000205460001415610bac576003805460010190819055604080516020808201908152918101859052600291600091879187918190606001848480828437600081840152601f19601f8201169050808301925050509350505050604051602081830303815290604052805190602001208152602001908152602001600020819055506000600180548091906001016109119190611d54565b9050838360018381548110151561092457fe5b6000918252602090912061093e93600b9092020191611d85565b506001808281548110151561094f57fe5b90600052602060002090600b0201600101819055506001808281548110151561097457fe5b90600052602060002090600b020160020181905550600060018281548110151561099a57fe5b90600052602060002090600b02016003018190555060206040519081016040528060008152506001828154811015156109cf57fe5b90600052602060002090600b020160040160000190805190602001906109f6929190611e03565b506040805160208101909152600081526001805483908110610a1457fe5b90600052602060002090600b02016004016001019080519060200190610a3b929190611e03565b506000600182815481101515610a4d57fe5b600091825260208220600b9190910201600601805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0393909316929092179091556001805483908110610a9a57fe5b600091825260209091206007600b9092020101556001805482908110610abc57fe5b90600052602060002090600b020160010154600182815481101515610add57fe5b60009182526020808320600160a060020a03871684526009600b9093020191909101905260409020556001805482908110610b1457fe5b6000918252602080832060408051808201909152600160a060020a0387811682526001828501818152600b9690960290930160080180549384018155865292909420935193018054925173ffffffffffffffffffffffffffffffffffffffff19909316939091169290921774ff0000000000000000000000000000000000000000191660a060020a9115159190910217905550610eed565b6000610bed84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b7492505050565b9050600181815481101515610bfe57fe5b60009182526020808320600160a060020a03861684526009600b9093020191909101905260409020541515610d7b576001805482908110610c3b57fe5b600091825260209091206001600b909202018101805482019055805482908110610c6157fe5b90600052602060002090600b020160010154600182815481101515610c8257fe5b60009182526020808320600160a060020a03871684526009600b9093020191909101905260409020556001805482908110610cb957fe5b6000918252602080832060408051808201909152600160a060020a0387811682526001828501818152600b969096029093016008018054808501825590875293909520905192018054935173ffffffffffffffffffffffffffffffffffffffff19909416929094169190911774ff0000000000000000000000000000000000000000191660a060020a9215159290920291909117909155805482908110610d5c57fe5b600091825260209091206002600b909202010180546001019055610eeb565b6000610dbe85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250611c1c915050565b9050600182815481101515610dcf57fe5b90600052602060002090600b020160080181815481101515610ded57fe5b60009182526020909120015460a060020a900460ff16151560011415610e5d576040805160e560020a62461bcd02815260206004820152600f60248201527f616c7265616479206120766f7465720000000000000000000000000000000000604482015290519081900360640190fd5b60018083815481101515610e6d57fe5b90600052602060002090600b020160080182815481101515610e8b57fe5b6000918252602090912001805491151560a060020a0274ff0000000000000000000000000000000000000000199092169190911790556001805483908110610ecf57fe5b600091825260209091206002600b909202010180546001019055505b505b60408051600160a060020a03831660208201528181529081018390527f424f3ad05c61ea35cad66f22b70b1fad7250d8229921238078c401db36d34574908490849084908060608101858580828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b158015610fb357600080fd5b505afa158015610fc7573d6000803e3d6000fd5b505050506040513d6020811015610fdd57600080fd5b5051600160a060020a0316331461102c576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020611fb0833981519152604482015290519081900360640190fd5b82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250849250611070915083905082611c6e565b15156001146110c9576040805160e560020a62461bcd02815260206004820152600f60248201527f6d757374206265206120766f7465720000000000000000000000000000000000604482015290519081900360640190fd5b600061110a86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b7492505050565b9050600061114f87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250899250611c1c915050565b905060018281548110151561116057fe5b6000918252602082206002600b90920201018054600019019055600180548490811061118857fe5b90600052602060002090600b0201600801828154811015156111a657fe5b9060005260206000200160000160146101000a81548160ff0219169083151502179055507f654cd85d9b2abaf3affef0a047625d088e6e4d0448935c9b5016b5f5aa0ca3b6878787604051808060200183600160a060020a0316600160a060020a031681526020018281038252858582818152602001925080828437600083820152604051601f909101601f1916909201829003965090945050505050a150505050505050565b60008060009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561129f57600080fd5b505afa1580156112b3573d6000803e3d6000fd5b505050506040513d60208110156112c957600080fd5b5051600160a060020a03163314611318576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020611fb0833981519152604482015290519081900360640190fd5b84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525086925061135c915083905082611c6e565b15156001146113b5576040805160e560020a62461bcd02815260206004820152600f60248201527f6d757374206265206120766f7465720000000000000000000000000000000000604482015290519081900360640190fd5b6113f687878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250889250611d1e915050565b151560011461144f576040805160e560020a62461bcd02815260206004820152601260248201527f6e6f7468696e6720746f20617070726f76650000000000000000000000000000604482015290519081900360640190fd5b600061149088888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b7492505050565b90506001818154811015156114a157fe5b60009182526020808320848452600a600b909302019190910181526040808320600160a060020a038a16845290915290205460ff16151560011415611530576040805160e560020a62461bcd02815260206004820152601260248201527f63616e6e6f7420646f75626c6520766f74650000000000000000000000000000604482015290519081900360640190fd5b600180548290811061153e57fe5b600091825260209091206003600b909202010180546001908101909155805481908390811061156957fe5b60009182526020808320858452600b92909202909101600a0181526040808320600160a060020a038b168452825291829020805460ff19169315159390931790925580518281529182018990527f87999b54e45aa02834a1265e356d7bcdceb72b8cbb4396ebaeba32a103b43508918a918a919081908101848480828437600083820152604051601f909101601f19169092018290039550909350505050a1600260018281548110151561161957fe5b90600052602060002090600b02016002015481151561163457fe5b0460018281548110151561164457fe5b90600052602060002090600b020160030154111561176257604080516020810190915260008152600180548390811061167957fe5b90600052602060002090600b020160040160000190805190602001906116a0929190611e03565b5060408051602081019091526000815260018054839081106116be57fe5b90600052602060002090600b020160040160010190805190602001906116e5929190611e03565b5060006001828154811015156116f757fe5b600091825260208220600b9190910201600601805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039390931692909217909155600180548390811061174457fe5b600091825260209091206007600b9092020101555060019250611768565b60009350505b5050949350505050565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156117c257600080fd5b505afa1580156117d6573d6000803e3d6000fd5b505050506040513d60208110156117ec57600080fd5b5051600160a060020a0316331461183b576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020611fb0833981519152604482015290519081900360640190fd5b61187a88888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250611d1e915050565b15156118ba5760405160e560020a62461bcd028152600401808060200182810382526034815260200180611fd06034913960400191505060405180910390fd5b60006118fb89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b7492505050565b9050868660018381548110151561190e57fe5b90600052602060002090600b0201600401600001919061192f929190611d85565b50848460018381548110151561194157fe5b90600052602060002090600b02016004016001019190611962929190611d85565b508260018281548110151561197357fe5b90600052602060002090600b020160040160020160006101000a815481600160a060020a030219169083600160a060020a03160217905550816001828154811015156119bb57fe5b6000918252602082206007600b9092020101919091555b60018054839081106119e057fe5b90600052602060002090600b020160080180549050811015611ae2576001805483908110611a0a57fe5b90600052602060002090600b020160080181815481101515611a2857fe5b60009182526020909120015460a060020a900460ff1615611ada576000600183815481101515611a5457fe5b90600052602060002090600b0201600a0160008481526020019081526020016000206000600185815481101515611a8757fe5b90600052602060002090600b020160080184815481101515611aa557fe5b600091825260208083209190910154600160a060020a031683528201929092526040019020805460ff19169115159190911790555b6001016119d2565b506000600182815481101515611af457fe5b90600052602060002090600b0201600301819055507f5bfaebb5931145594f63236d2a59314c4dc6035b65d0ca4cee9c7298e2f06ca3898960405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a1505050505050505050565b6000600160026000846040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015611bbd578181015183820152602001611ba5565b50505050905090810190601f168015611bea5780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120815260200190815260200160002054039050919050565b600080611c2884611b74565b905060018082815481101515611c3a57fe5b60009182526020808320600160a060020a03881684526009600b909302019190910190526040902054039150505b92915050565b600080611c7a84611b74565b9050600181815481101515611c8b57fe5b60009182526020808320600160a060020a03871684526009600b9093020191909101905260409020541515611cc4576000915050611c68565b6000611cd08585611c1c565b9050600182815481101515611ce157fe5b90600052602060002090600b020160080181815481101515611cff57fe5b60009182526020909120015460a060020a900460ff1695945050505050565b6000816001611d2c85611b74565b81548110611d3657fe5b90600052602060002090600b02016004016003015414905092915050565b815481835581811115611d8057600b0281600b028360005260206000209182019101611d809190611e71565b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611dc65782800160ff19823516178555611df3565b82800160010185558215611df3579182015b82811115611df3578235825591602001919060010190611dd8565b50611dff929150611f03565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611e4457805160ff1916838001178555611df3565b82800160010185558215611df3579182015b82811115611df3578251825591602001919060010190611e56565b611f0091905b80821115611dff576000611e8b8282611f1d565b60006001830181905560028301819055600383018190556004830190611eb18282611f1d565b611ebf600183016000611f1d565b5060028101805473ffffffffffffffffffffffffffffffffffffffff1916905560006003909101819055611ef7906008840190611f64565b50600b01611e77565b90565b611f0091905b80821115611dff5760008155600101611f09565b50805460018160011615610100020316600290046000825580601f10611f435750611f61565b601f016020900490600052602060002090810190611f619190611f03565b50565b5080546000825590600052602060002090810190611f619190611f0091905b80821115611dff57805474ffffffffffffffffffffffffffffffffffffffffff19168155600101611f8356fe696e76616c69642063616c6c65720000000000000000000000000000000000006974656d732070656e64696e6720666f7220617070726f76616c2e206e6577206974656d2063616e6e6f74206265206164646564a165627a7a723058207fd1e1e1ef8f93c6a3f1ac66e74c550855e0b2f288916e3641064b78476456b90029" +var VoterManagerBin = "0x6080604052600060035534801561001557600080fd5b506040516020806120968339810180604052602081101561003557600080fd5b505160008054600160a060020a03909216600160a060020a031990921691909117905561202f806100676000396000f3fe608060405234801561001057600080fd5b506004361061005a5760e060020a6000350463014e6acc811461005f5780635607395b146101cd57806359cbd6fe14610248578063b0213864146102c1578063e98ac22d14610354575b600080fd5b6100cf6004803603602081101561007557600080fd5b81019060208101813564010000000081111561009057600080fd5b8201836020820111156100a257600080fd5b803590602001918460018302840111640100000000831117156100c457600080fd5b509092509050610477565b60405180806020018060200185600160a060020a0316600160a060020a03168152602001848152602001838103835287818151815260200191508051906020019080838360005b8381101561012e578181015183820152602001610116565b50505050905090810190601f16801561015b5780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b8381101561018e578181015183820152602001610176565b50505050905090810190601f1680156101bb5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b610246600480360360408110156101e357600080fd5b8101906020810181356401000000008111156101fe57600080fd5b82018360208201111561021057600080fd5b8035906020019184600183028401116401000000008311171561023257600080fd5b919350915035600160a060020a031661074e565b005b6102466004803603604081101561025e57600080fd5b81019060208101813564010000000081111561027957600080fd5b82018360208201111561028b57600080fd5b803590602001918460018302840111640100000000831117156102ad57600080fd5b919350915035600160a060020a0316610f63565b610340600480360360608110156102d757600080fd5b8101906020810181356401000000008111156102f257600080fd5b82018360208201111561030457600080fd5b8035906020019184600183028401116401000000008311171561032657600080fd5b9193509150600160a060020a03813516906020013561124d565b604080519115158252519081900360200190f35b610246600480360360a081101561036a57600080fd5b81019060208101813564010000000081111561038557600080fd5b82018360208201111561039757600080fd5b803590602001918460018302840111640100000000831117156103b957600080fd5b9193909290916020810190356401000000008111156103d757600080fd5b8201836020820111156103e957600080fd5b8035906020019184600183028401116401000000008311171561040b57600080fd5b91939092909160208101903564010000000081111561042957600080fd5b82018360208201111561043b57600080fd5b8035906020019184600183028401116401000000008311171561045d57600080fd5b9193509150600160a060020a038135169060200135611772565b6060806000806000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156104cd57600080fd5b505afa1580156104e1573d6000803e3d6000fd5b505050506040513d60208110156104f757600080fd5b5051600160a060020a03163314610546576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020611fb0833981519152604482015290519081900360640190fd5b600061058787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b7492505050565b905060018181548110151561059857fe5b90600052602060002090600b02016004016000016001828154811015156105bb57fe5b90600052602060002090600b02016004016001016001838154811015156105de57fe5b600091825260209091206006600b90920201015460018054600160a060020a03909216918590811061060c57fe5b60009182526020918290206007600b909202010154845460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815291928691908301828280156106a75780601f1061067c576101008083540402835291602001916106a7565b820191906000526020600020905b81548152906001019060200180831161068a57829003601f168201915b5050865460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959950889450925084019050828280156107355780601f1061070a57610100808354040283529160200191610735565b820191906000526020600020905b81548152906001019060200180831161071857829003601f168201915b5050505050925094509450945094505092959194509250565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561079e57600080fd5b505afa1580156107b2573d6000803e3d6000fd5b505050506040513d60208110156107c857600080fd5b5051600160a060020a03163314610817576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020611fb0833981519152604482015290519081900360640190fd5b60026000848460405160200180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040528051906020012081526020019081526020016000205460001415610bac576003805460010190819055604080516020808201908152918101859052600291600091879187918190606001848480828437600081840152601f19601f8201169050808301925050509350505050604051602081830303815290604052805190602001208152602001908152602001600020819055506000600180548091906001016109119190611d54565b9050838360018381548110151561092457fe5b6000918252602090912061093e93600b9092020191611d85565b506001808281548110151561094f57fe5b90600052602060002090600b0201600101819055506001808281548110151561097457fe5b90600052602060002090600b020160020181905550600060018281548110151561099a57fe5b90600052602060002090600b02016003018190555060206040519081016040528060008152506001828154811015156109cf57fe5b90600052602060002090600b020160040160000190805190602001906109f6929190611e03565b506040805160208101909152600081526001805483908110610a1457fe5b90600052602060002090600b02016004016001019080519060200190610a3b929190611e03565b506000600182815481101515610a4d57fe5b600091825260208220600b9190910201600601805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0393909316929092179091556001805483908110610a9a57fe5b600091825260209091206007600b9092020101556001805482908110610abc57fe5b90600052602060002090600b020160010154600182815481101515610add57fe5b60009182526020808320600160a060020a03871684526009600b9093020191909101905260409020556001805482908110610b1457fe5b6000918252602080832060408051808201909152600160a060020a0387811682526001828501818152600b9690960290930160080180549384018155865292909420935193018054925173ffffffffffffffffffffffffffffffffffffffff19909316939091169290921774ff0000000000000000000000000000000000000000191660a060020a9115159190910217905550610eed565b6000610bed84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b7492505050565b9050600181815481101515610bfe57fe5b60009182526020808320600160a060020a03861684526009600b9093020191909101905260409020541515610d7b576001805482908110610c3b57fe5b600091825260209091206001600b909202018101805482019055805482908110610c6157fe5b90600052602060002090600b020160010154600182815481101515610c8257fe5b60009182526020808320600160a060020a03871684526009600b9093020191909101905260409020556001805482908110610cb957fe5b6000918252602080832060408051808201909152600160a060020a0387811682526001828501818152600b969096029093016008018054808501825590875293909520905192018054935173ffffffffffffffffffffffffffffffffffffffff19909416929094169190911774ff0000000000000000000000000000000000000000191660a060020a9215159290920291909117909155805482908110610d5c57fe5b600091825260209091206002600b909202010180546001019055610eeb565b6000610dbe85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250611c1c915050565b9050600182815481101515610dcf57fe5b90600052602060002090600b020160080181815481101515610ded57fe5b60009182526020909120015460a060020a900460ff16151560011415610e5d576040805160e560020a62461bcd02815260206004820152600f60248201527f616c7265616479206120766f7465720000000000000000000000000000000000604482015290519081900360640190fd5b60018083815481101515610e6d57fe5b90600052602060002090600b020160080182815481101515610e8b57fe5b6000918252602090912001805491151560a060020a0274ff0000000000000000000000000000000000000000199092169190911790556001805483908110610ecf57fe5b600091825260209091206002600b909202010180546001019055505b505b60408051600160a060020a03831660208201528181529081018390527f424f3ad05c61ea35cad66f22b70b1fad7250d8229921238078c401db36d34574908490849084908060608101858580828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b158015610fb357600080fd5b505afa158015610fc7573d6000803e3d6000fd5b505050506040513d6020811015610fdd57600080fd5b5051600160a060020a0316331461102c576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020611fb0833981519152604482015290519081900360640190fd5b82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250849250611070915083905082611c6e565b15156001146110c9576040805160e560020a62461bcd02815260206004820152600f60248201527f6d757374206265206120766f7465720000000000000000000000000000000000604482015290519081900360640190fd5b600061110a86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b7492505050565b9050600061114f87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250899250611c1c915050565b905060018281548110151561116057fe5b6000918252602082206002600b90920201018054600019019055600180548490811061118857fe5b90600052602060002090600b0201600801828154811015156111a657fe5b9060005260206000200160000160146101000a81548160ff0219169083151502179055507f654cd85d9b2abaf3affef0a047625d088e6e4d0448935c9b5016b5f5aa0ca3b6878787604051808060200183600160a060020a0316600160a060020a031681526020018281038252858582818152602001925080828437600083820152604051601f909101601f1916909201829003965090945050505050a150505050505050565b60008060009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561129f57600080fd5b505afa1580156112b3573d6000803e3d6000fd5b505050506040513d60208110156112c957600080fd5b5051600160a060020a03163314611318576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020611fb0833981519152604482015290519081900360640190fd5b84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525086925061135c915083905082611c6e565b15156001146113b5576040805160e560020a62461bcd02815260206004820152600f60248201527f6d757374206265206120766f7465720000000000000000000000000000000000604482015290519081900360640190fd5b6113f687878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250889250611d1e915050565b151560011461144f576040805160e560020a62461bcd02815260206004820152601260248201527f6e6f7468696e6720746f20617070726f76650000000000000000000000000000604482015290519081900360640190fd5b600061149088888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b7492505050565b90506001818154811015156114a157fe5b60009182526020808320848452600a600b909302019190910181526040808320600160a060020a038a16845290915290205460ff16151560011415611530576040805160e560020a62461bcd02815260206004820152601260248201527f63616e6e6f7420646f75626c6520766f74650000000000000000000000000000604482015290519081900360640190fd5b600180548290811061153e57fe5b600091825260209091206003600b909202010180546001908101909155805481908390811061156957fe5b60009182526020808320858452600b92909202909101600a0181526040808320600160a060020a038b168452825291829020805460ff19169315159390931790925580518281529182018990527f87999b54e45aa02834a1265e356d7bcdceb72b8cbb4396ebaeba32a103b43508918a918a919081908101848480828437600083820152604051601f909101601f19169092018290039550909350505050a1600260018281548110151561161957fe5b90600052602060002090600b02016002015481151561163457fe5b0460018281548110151561164457fe5b90600052602060002090600b020160030154111561176257604080516020810190915260008152600180548390811061167957fe5b90600052602060002090600b020160040160000190805190602001906116a0929190611e03565b5060408051602081019091526000815260018054839081106116be57fe5b90600052602060002090600b020160040160010190805190602001906116e5929190611e03565b5060006001828154811015156116f757fe5b600091825260208220600b9190910201600601805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039390931692909217909155600180548390811061174457fe5b600091825260209091206007600b9092020101555060019250611768565b60009350505b5050949350505050565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156117c257600080fd5b505afa1580156117d6573d6000803e3d6000fd5b505050506040513d60208110156117ec57600080fd5b5051600160a060020a0316331461183b576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020611fb0833981519152604482015290519081900360640190fd5b61187a88888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250611d1e915050565b15156118ba5760405160e560020a62461bcd028152600401808060200182810382526034815260200180611fd06034913960400191505060405180910390fd5b60006118fb89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b7492505050565b9050868660018381548110151561190e57fe5b90600052602060002090600b0201600401600001919061192f929190611d85565b50848460018381548110151561194157fe5b90600052602060002090600b02016004016001019190611962929190611d85565b508260018281548110151561197357fe5b90600052602060002090600b020160040160020160006101000a815481600160a060020a030219169083600160a060020a03160217905550816001828154811015156119bb57fe5b6000918252602082206007600b9092020101919091555b60018054839081106119e057fe5b90600052602060002090600b020160080180549050811015611ae2576001805483908110611a0a57fe5b90600052602060002090600b020160080181815481101515611a2857fe5b60009182526020909120015460a060020a900460ff1615611ada576000600183815481101515611a5457fe5b90600052602060002090600b0201600a0160008481526020019081526020016000206000600185815481101515611a8757fe5b90600052602060002090600b020160080184815481101515611aa557fe5b600091825260208083209190910154600160a060020a031683528201929092526040019020805460ff19169115159190911790555b6001016119d2565b506000600182815481101515611af457fe5b90600052602060002090600b0201600301819055507f5bfaebb5931145594f63236d2a59314c4dc6035b65d0ca4cee9c7298e2f06ca3898960405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a1505050505050505050565b6000600160026000846040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015611bbd578181015183820152602001611ba5565b50505050905090810190601f168015611bea5780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120815260200190815260200160002054039050919050565b600080611c2884611b74565b905060018082815481101515611c3a57fe5b60009182526020808320600160a060020a03881684526009600b909302019190910190526040902054039150505b92915050565b600080611c7a84611b74565b9050600181815481101515611c8b57fe5b60009182526020808320600160a060020a03871684526009600b9093020191909101905260409020541515611cc4576000915050611c68565b6000611cd08585611c1c565b9050600182815481101515611ce157fe5b90600052602060002090600b020160080181815481101515611cff57fe5b60009182526020909120015460a060020a900460ff1695945050505050565b6000816001611d2c85611b74565b81548110611d3657fe5b90600052602060002090600b02016004016003015414905092915050565b815481835581811115611d8057600b0281600b028360005260206000209182019101611d809190611e71565b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611dc65782800160ff19823516178555611df3565b82800160010185558215611df3579182015b82811115611df3578235825591602001919060010190611dd8565b50611dff929150611f03565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611e4457805160ff1916838001178555611df3565b82800160010185558215611df3579182015b82811115611df3578251825591602001919060010190611e56565b611f0091905b80821115611dff576000611e8b8282611f1d565b60006001830181905560028301819055600383018190556004830190611eb18282611f1d565b611ebf600183016000611f1d565b5060028101805473ffffffffffffffffffffffffffffffffffffffff1916905560006003909101819055611ef7906008840190611f64565b50600b01611e77565b90565b611f0091905b80821115611dff5760008155600101611f09565b50805460018160011615610100020316600290046000825580601f10611f435750611f61565b601f016020900490600052602060002090810190611f619190611f03565b50565b5080546000825590600052602060002090810190611f619190611f0091905b80821115611dff57805474ffffffffffffffffffffffffffffffffffffffffff19168155600101611f8356fe696e76616c69642063616c6c65720000000000000000000000000000000000006974656d732070656e64696e6720666f7220617070726f76616c2e206e6577206974656d2063616e6e6f74206265206164646564a165627a7a72305820853b884fe72210949b9c5307ef60e47eb2f01504e26db430be567e00ee7527a70029" // DeployVoterManager deploys a new Ethereum contract, binding an instance of VoterManager to it. func DeployVoterManager(auth *bind.TransactOpts, backend bind.ContractBackend, _permUpgradable common.Address) (common.Address, *types.Transaction, *VoterManager, error) { diff --git a/permission/contract/NodeManager.sol b/permission/contract/NodeManager.sol index 4bfb71bde..62d3d12ac 100644 --- a/permission/contract/NodeManager.sol +++ b/permission/contract/NodeManager.sol @@ -95,6 +95,9 @@ contract NodeManager { */ function getNodeDetails(string calldata enodeId) external view returns (string memory _orgId, string memory _enodeId, uint256 _nodeStatus) { + if (nodeIdToIndex[keccak256(abi.encode(_enodeId))] == 0) { + return ("", enodeId, 0); + } uint256 nodeIndex = _getNodeIndex(enodeId); return (nodeList[nodeIndex].orgId, nodeList[nodeIndex].enodeId, nodeList[nodeIndex].status); diff --git a/permission/contract/OrgManager.sol b/permission/contract/OrgManager.sol index ca1826f18..d0b9a0b01 100644 --- a/permission/contract/OrgManager.sol +++ b/permission/contract/OrgManager.sol @@ -195,6 +195,33 @@ contract OrgManager { orgList[_orgIndex].ultParent, orgList[_orgIndex].level, orgList[_orgIndex].status); } + /** @notice returns org info for a given org id + * @param _orgId org id + * @return org id + * @return parent org id + * @return ultimate parent id + * @return level in the org tree + * @return status + */ + function getOrgDetails(string calldata _orgId) external view returns (string memory, + string memory, string memory, uint256, uint256) { + if (!checkOrgExists(_orgId)){ + return (_orgId, "", "", 0,0); + } + uint256 _orgIndex = _getOrgIndex(_orgId); + return (orgList[_orgIndex].orgId, orgList[_orgIndex].parentId, + orgList[_orgIndex].ultParent, orgList[_orgIndex].level, orgList[_orgIndex].status); + } + + /** @notice returns the array of sub org indexes for the given org + * @param _orgId org id + * @return array of sub org indexes + */ + function getSubOrgIndexes(string calldata _orgId) external view returns (uint[] memory) { + require(checkOrgExists(_orgId) == true, "org does not exist"); + uint256 _orgIndex = _getOrgIndex(_orgId); + return (orgList[_orgIndex].subOrgIndexList); + } /** @notice returns the master org id for the given org or sub org * @param _orgId org id * @return master org id @@ -219,6 +246,9 @@ contract OrgManager { */ function checkOrgStatus(string memory _orgId, uint256 _orgStatus) public view returns (bool){ + if (OrgIndex[keccak256(abi.encodePacked(_orgId))] == 0) { + return false; + } uint256 id = _getOrgIndex(_orgId); return ((OrgIndex[keccak256(abi.encodePacked(_orgId))] != 0) && orgList[id].status == _orgStatus); @@ -334,7 +364,7 @@ contract OrgManager { /** @notice returns the org index from the org list for the given org * @return org index */ - function _getOrgIndex(string memory _orgId) public view returns (uint){ + function _getOrgIndex(string memory _orgId) private view returns (uint){ return OrgIndex[keccak256(abi.encodePacked(_orgId))] - 1; } diff --git a/permission/contract/gen/AccountManager.bin b/permission/contract/gen/AccountManager.bin index 033de2392..edca45966 100644 --- a/permission/contract/gen/AccountManager.bin +++ b/permission/contract/gen/AccountManager.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b50604051602080613a988339810180604052602081101561003057600080fd5b505160008054600160a060020a03909216600160a060020a0319909216919091179055613a36806100626000396000f3fe608060405234801561001057600080fd5b50600436106100d35760003560e060020a9004806384b7a84a11610090578063c214e5e51161006a578063c214e5e5146105fb578063cef7f6af14610674578063e3483a9d14610736578063e8b42bf414610808576100d3565b806384b7a84a146104b9578063950145cf14610538578063b2018568146105de576100d3565b8063143a5604146100d85780631d09dc93146101ae5780632aceb53414610241578063309e36ef146103705780636b568d761461038a57806381d66b231461041e575b600080fd5b6101ac600480360360808110156100ee57600080fd5b600160a060020a03823516919081019060408101602082013564010000000081111561011957600080fd5b82018360208201111561012b57600080fd5b8035906020019184600183028401116401000000008311171561014d57600080fd5b91939092909160208101903564010000000081111561016b57600080fd5b82018360208201111561017d57600080fd5b8035906020019184600183028401116401000000008311171561019f57600080fd5b9193509150351515610945565b005b61021e600480360360208110156101c457600080fd5b8101906020810181356401000000008111156101df57600080fd5b8201836020820111156101f157600080fd5b8035906020019184600183028401116401000000008311171561021357600080fd5b509092509050610d40565b604080519215158352600160a060020a0390911660208301528051918290030190f35b6102676004803603602081101561025757600080fd5b5035600160a060020a03166112dd565b6040518086600160a060020a0316600160a060020a03168152602001806020018060200185815260200184151515158152602001838103835287818151815260200191508051906020019080838360005b838110156102d05781810151838201526020016102b8565b50505050905090810190601f1680156102fd5780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b83811015610330578181015183820152602001610318565b50505050905090810190601f16801561035d5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b61037861154b565b60408051918252519081900360200190f35b61040a600480360360408110156103a057600080fd5b600160a060020a0382351691908101906040810160208201356401000000008111156103cb57600080fd5b8201836020820111156103dd57600080fd5b803590602001918460018302840111640100000000831117156103ff57600080fd5b509092509050611552565b604080519115158252519081900360200190f35b6104446004803603602081101561043457600080fd5b5035600160a060020a03166116ad565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561047e578181015183820152602001610466565b50505050905090810190601f1680156104ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101ac600480360360608110156104cf57600080fd5b8101906020810181356401000000008111156104ea57600080fd5b8201836020820111156104fc57600080fd5b8035906020019184600183028401116401000000008311171561051e57600080fd5b9193509150600160a060020a03813516906020013561182f565b61040a6004803603602081101561054e57600080fd5b81019060208101813564010000000081111561056957600080fd5b82018360208201111561057b57600080fd5b8035906020019184600183028401116401000000008311171561059d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611f5f945050505050565b610267600480360360208110156105f457600080fd5b50356120da565b61040a6004803603604081101561061157600080fd5b81019060208101813564010000000081111561062c57600080fd5b82018360208201111561063e57600080fd5b8035906020019184600183028401116401000000008311171561066057600080fd5b919350915035600160a060020a03166122c4565b6101ac6004803603604081101561068a57600080fd5b8101906020810181356401000000008111156106a557600080fd5b8201836020820111156106b757600080fd5b803590602001918460018302840111640100000000831117156106d957600080fd5b9193909290916020810190356401000000008111156106f757600080fd5b82018360208201111561070957600080fd5b8035906020019184600183028401116401000000008311171561072b57600080fd5b509092509050612913565b6101ac6004803603608081101561074c57600080fd5b600160a060020a03823516919081019060408101602082013564010000000081111561077757600080fd5b82018360208201111561078957600080fd5b803590602001918460018302840111640100000000831117156107ab57600080fd5b9193909290916020810190356401000000008111156107c957600080fd5b8201836020820111156107db57600080fd5b803590602001918460018302840111640100000000831117156107fd57600080fd5b9193509150356129fc565b61040a6004803603606081101561081e57600080fd5b600160a060020a03823516919081019060408101602082013564010000000081111561084957600080fd5b82018360208201111561085b57600080fd5b8035906020019184600183028401116401000000008311171561087d57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156108d057600080fd5b8201836020820111156108e257600080fd5b8035906020019184600183028401116401000000008311171561090457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612d6b945050505050565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561099557600080fd5b505afa1580156109a9573d6000803e3d6000fd5b505050506040513d60208110156109bf57600080fd5b5051600160a060020a03163314610a0e576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a9833981519152604482015290519081900360640190fd5b6040805160208082019081526004805460026000196101006001841615020190911604938301849052929091829160609091019084908015610a915780601f10610a6657610100808354040283529160200191610a91565b820191906000526020600020905b815481529060010190602001808311610a7457829003601f168201915b50509250505060405160208183030381529060405280519060200120838360405160200180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040528051906020012014158015610c7f57506040805160208082019081526005805460026000196101006001841615020190911604938301849052929091829160609091019084908015610b8c5780601f10610b6157610100808354040283529160200191610b8c565b820191906000526020600020905b815481529060010190602001808311610b6f57829003601f168201915b50509250505060405160208183030381529060405280519060200120838360405160200180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040526040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015610c34578181015183820152602001610c1c565b50505050905090810190601f168015610c615780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040528051906020012014155b1515610cbf5760405160e560020a62461bcd0281526004018080602001828103825260408152602001806139666040913960400191505060405180910390fd5b610d388686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250600292508791506132d29050565b505050505050565b60008054604080517f0e32cf9000000000000000000000000000000000000000000000000000000000815290518392600160a060020a031691630e32cf90916004808301926020929190829003018186803b158015610d9e57600080fd5b505afa158015610db2573d6000803e3d6000fd5b505050506040513d6020811015610dc857600080fd5b5051600160a060020a03163314610e17576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a9833981519152604482015290519081900360640190fd5b610e5684848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f5f92505050565b156112cf576000610ede60066000878760405160200180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120815260200190815260200160002060009054906101000a9004600160a060020a03166136b6565b90506006600182815481101515610ef157fe5b9060005260206000209060050201600301819055506000600182815481101515610f1757fe5b906000526020600020906005020160040160006101000a81548160ff0219169083151502179055507f68e62a03aeb0a125c2fc869eed72f2fca473680987bdd680c093a534e17cc776600182815481101515610f6f57fe5b600091825260209091206005909102015460018054600160a060020a039092169184908110610f9a57fe5b9060005260206000209060050201600101600184815481101515610fba57fe5b9060005260206000209060050201600201600185815481101515610fda57fe5b60009182526020909120600460059092020101546001805460ff909216918790811061100257fe5b60009182526020918290206003600590920201015460408051600160a060020a038816815284151560608201526080810183905260a0938101848152875460026000196101006001841615020190911604948201859052929390929183019060c0840190889080156110b55780601f1061108a576101008083540402835291602001916110b5565b820191906000526020600020905b81548152906001019060200180831161109857829003601f168201915b50508381038252865460026000196101006001841615020190911604808252602090910190879080156111295780601f106110fe57610100808354040283529160200191611129565b820191906000526020600020905b81548152906001019060200180831161110c57829003601f168201915b505097505050505050505060405180910390a160408051602080820190815260048054600260001961010060018416150201909116049383018490529290918291606090910190849080156111bf5780601f10611194576101008083540402835291602001916111bf565b820191906000526020600020905b8154815290600101906020018083116111a257829003601f168201915b505092505050604051602081830303815290604052805190602001206001828154811015156111ea57fe5b60009182526020918290206040805180850194855260026005909402909201830180546000196101006001831615020116939093049082018190529192918291606001908490801561127d5780601f106112525761010080835404028352916020019161127d565b820191906000526020600020905b81548152906001019060200180831161126057829003601f168201915b50509250505060405160208183030381529060405280519060200120146001828154811015156112a957fe5b6000918252602090912060059091020154909350600160a060020a031691506112d69050565b5060009050805b9250929050565b600160a060020a038116600090815260026020526040812054606090819083908190151561135a575050604080518082018252600481527f4e4f4e45000000000000000000000000000000000000000000000000000000006020808301919091528251908101909252600080835286955090935090915080611542565b6000611365876136b6565b905060018181548110151561137657fe5b600091825260209091206005909102015460018054600160a060020a0390921691839081106113a157fe5b90600052602060002090600502016001016001838154811015156113c157fe5b90600052602060002090600502016002016001848154811015156113e157fe5b90600052602060002090600502016003015460018581548110151561140257fe5b600091825260209182902060046005909202010154845460408051601f6002600019600186161561010002019094169390930492830185900485028101850190915281815260ff909216928691908301828280156114a15780601f10611476576101008083540402835291602001916114a1565b820191906000526020600020905b81548152906001019060200180831161148457829003601f168201915b5050865460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529599508894509250840190508282801561152f5780601f106115045761010080835404028352916020019161152f565b820191906000526020600020905b81548152906001019060200180831161151257829003601f168201915b5050505050925095509550955095509550505b91939590929450565b6001545b90565b600160a060020a0383166000908152600260205260408120541515611579575060016116a6565b6000611584856136b6565b9050838360405160200180806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509350505050604051602081830303815290604052805190602001206001828154811015156115e857fe5b906000526020600020906005020160010160405160200180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156116855780601f1061165a57610100808354040283529160200191611685565b820191906000526020600020905b81548152906001019060200180831161166857829003601f168201915b50509250505060405160208183030381529060405280519060200120149150505b9392505050565b600160a060020a0381166000908152600260205260409020546060901515611709575060408051808201909152600481527f4e4f4e4500000000000000000000000000000000000000000000000000000000602082015261182a565b6000611714836136b6565b905060018181548110151561172557fe5b90600052602060002090600502016003015460001415156117f357600180548290811061174e57fe5b600091825260209182902060026005909202018101805460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835291929091908301828280156117e65780601f106117bb576101008083540402835291602001916117e6565b820191906000526020600020905b8154815290600101906020018083116117c957829003601f168201915b505050505091505061182a565b505060408051808201909152600481527f4e4f4e450000000000000000000000000000000000000000000000000000000060208201525b919050565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561187f57600080fd5b505afa158015611893573d6000803e3d6000fd5b505050506040513d60208110156118a957600080fd5b5051600160a060020a031633146118f8576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a9833981519152604482015290519081900360640190fd5b83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250600160a060020a0387168152600260205260409020548693501515915061199d9050576040805160e560020a62461bcd02815260206004820152601760248201527f6163636f756e7420646f6573206e6f7420657869737473000000000000000000604482015290519081900360640190fd5b816040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156119de5781810151838201526020016119c6565b50505050905090810190601f168015611a0b5780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001206001611a31836136b6565b81548110611a3b57fe5b90600052602060002090600502016001016040516020018080602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015611ad85780601f10611aad57610100808354040283529160200191611ad8565b820191906000526020600020905b815481529060010190602001808311611abb57829003601f168201915b50509250505060405160208183030381529060405280519060200120141515611b4b576040805160e560020a62461bcd02815260206004820152601860248201527f6163636f756e7420696e20646966666572656e74206f72670000000000000000604482015290519081900360640190fd5b600083118015611b5b5750600683105b1515611bb1576040805160e560020a62461bcd02815260206004820152601d60248201527f696e76616c696420737461747573206368616e67652072657175657374000000604482015290519081900360640190fd5b611bff8487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602081019091529081529250612d6b915050565b151560011415611c435760405160e560020a62461bcd0281526004018080602001828103825260318152602001806139da6031913960400191505060405180910390fd5b60008360011415611cc0576001611c59866136b6565b81548110611c6357fe5b9060005260206000209060050201600301546002141515611cb85760405160e560020a62461bcd0281526004018080602001828103825260398152602001806139056039913960400191505060405180910390fd5b506004611ea9565b8360021415611d3b576001611cd4866136b6565b81548110611cde57fe5b9060005260206000209060050201600301546004141515611d335760405160e560020a62461bcd02815260040180806020018281038252603c8152602001806138c9603c913960400191505060405180910390fd5b506002611ea9565b8360031415611db7576001611d4f866136b6565b81548110611d5957fe5b906000526020600020906005020160030154600514151515611daf5760405160e560020a62461bcd0281526004018080602001828103825260388152602001806138716038913960400191505060405180910390fd5b506005611ea9565b8360041415611e32576001611dcb866136b6565b81548110611dd557fe5b9060005260206000209060050201600301546005141515611e2a5760405160e560020a62461bcd0281526004018080602001828103825260348152602001806139a66034913960400191505060405180910390fd5b506007611ea9565b8360051415611ea9576001611e46866136b6565b81548110611e5057fe5b9060005260206000209060050201600301546007141515611ea55760405160e560020a62461bcd0281526004018080602001828103825260388152602001806138396038913960400191505060405180910390fd5b5060025b806001611eb5876136b6565b81548110611ebf57fe5b9060005260206000209060050201600301819055507f36b0ea38154dec5e98b6bf928b971a9db5e8cd4b6946350e9e43fb9848c70b25858888846040518085600160a060020a0316600160a060020a03168152602001806020018381526020018281038252858582818152602001925080828437600083820152604051601f909101601f191690920182900397509095505050505050a150505050505050565b600080600160a060020a031660066000846040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015611fb0578181015183820152602001611f98565b50505050905090810190601f168015611fdd5780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208652908501959095525050500160002054600160a060020a0316146120d257600060066000846040516020018080602001828103825283818151815260200191508051906020019080838360005b8381101561205c578181015183820152602001612044565b50505050905090810190601f1680156120895780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208652908501959095525050500160002054600160a060020a031690506120c7816136d5565b60021491505061182a565b506000919050565b60006060806000806001868154811015156120f157fe5b600091825260209091206005909102015460018054600160a060020a03909216918890811061211c57fe5b906000526020600020906005020160010160018881548110151561213c57fe5b906000526020600020906005020160020160018981548110151561215c57fe5b90600052602060002090600502016003015460018a81548110151561217d57fe5b600091825260209182902060046005909202010154845460408051601f6002600019600186161561010002019094169390930492830185900485028101850190915281815260ff9092169286919083018282801561221c5780601f106121f15761010080835404028352916020019161221c565b820191906000526020600020905b8154815290600101906020018083116121ff57829003601f168201915b5050865460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959950889450925084019050828280156122aa5780601f1061227f576101008083540402835291602001916122aa565b820191906000526020600020905b81548152906001019060200180831161228d57829003601f168201915b505050505092509450945094509450945091939590929450565b60008060009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561231657600080fd5b505afa15801561232a573d6000803e3d6000fd5b505050506040513d602081101561234057600080fd5b5051600160a060020a0316331461238f576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a9833981519152604482015290519081900360640190fd5b606061239a836116ad565b905060006123a7846136d5565b905060006123b4856136b6565b604080516020808201908152600580546002600019610100600184161502019091160493830184905293945091829160600190849080156124365780601f1061240b57610100808354040283529160200191612436565b820191906000526020600020905b81548152906001019060200180831161241957829003601f168201915b50509250505060405160208183030381529060405280519060200120836040516020018080602001828103825283818151815260200191508051906020019080838360005b8381101561249357818101518382015260200161247b565b50505050905090810190601f1680156124c05780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001201480156124e85750816001145b15612578578460066000898960405160200180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120815260200190815260200160002060006101000a815481600160a060020a030219169083600160a060020a031602179055505b600260018281548110151561258957fe5b906000526020600020906005020160030181905550600180828154811015156125ae57fe5b906000526020600020906005020160040160006101000a81548160ff0219169083151502179055507f68e62a03aeb0a125c2fc869eed72f2fca473680987bdd680c093a534e17cc7768560018381548110151561260757fe5b906000526020600020906005020160010160018481548110151561262757fe5b906000526020600020906005020160020160018581548110151561264757fe5b60009182526020909120600460059092020101546001805460ff909216918790811061266f57fe5b60009182526020918290206003600590920201015460408051600160a060020a038816815284151560608201526080810183905260a0938101848152875460026000196101006001841615020190911604948201859052929390929183019060c0840190889080156127225780601f106126f757610100808354040283529160200191612722565b820191906000526020600020905b81548152906001019060200180831161270557829003601f168201915b50508381038252865460026000196101006001841615020190911604808252602090910190879080156127965780601f1061276b57610100808354040283529160200191612796565b820191906000526020600020905b81548152906001019060200180831161277957829003601f168201915b505097505050505050505060405180910390a1604080516020808201908152600480546002600019610100600184161502019091160493830184905292909182916060909101908490801561282c5780601f106128015761010080835404028352916020019161282c565b820191906000526020600020905b81548152906001019060200180831161280f57829003601f168201915b5050925050506040516020818303038152906040528051906020012060018281548110151561285757fe5b6000918252602091829020604080518085019485526002600590940290920183018054600019610100600183161502011693909304908201819052919291829160600190849080156128ea5780601f106128bf576101008083540402835291602001916128ea565b820191906000526020600020905b8154815290600101906020018083116128cd57829003601f168201915b505092505050604051602081830303815290604052805190602001201493505050509392505050565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561296357600080fd5b505afa158015612977573d6000803e3d6000fd5b505050506040513d602081101561298d57600080fd5b5051600160a060020a031633146129dc576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a9833981519152604482015290519081900360640190fd5b6129e860048585613732565b506129f560058383613732565b5050505050565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b158015612a4c57600080fd5b505afa158015612a60573d6000803e3d6000fd5b505050506040513d6020811015612a7657600080fd5b5051600160a060020a03163314612ac5576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a9833981519152604482015290519081900360640190fd5b6040805160208082019081526005805460026000196101006001841615020190911604938301849052929091829160609091019084908015612b485780601f10612b1d57610100808354040283529160200191612b48565b820191906000526020600020905b815481529060010190602001808311612b2b57829003601f168201915b50509250505060405160208183030381529060405280519060200120838360405160200180806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509350505050604051602081830303815290604052805190602001201480612cb257506040805160208082019081526004805460026000196101006001841615020190911604938301849052929091829160609091019084908015612c415780601f10612c1657610100808354040283529160200191612c41565b820191906000526020600020905b815481529060010190602001808311612c2457829003601f168201915b50509250505060405160208183030381529060405280519060200120838360405160200180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120145b1515612cf25760405160e560020a62461bcd02815260040180806020018281038252602881526020018061393e6028913960400191505060405180910390fd5b610d388686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250879250600191506132d29050565b60408051602080820190815260048054600260001961010060018416150201909116049383018490526000939092829160609091019084908015612df05780601f10612dc557610100808354040283529160200191612df0565b820191906000526020600020905b815481529060010190602001808311612dd357829003601f168201915b50509250505060405160208183030381529060405280519060200120612e15856116ad565b6040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015612e55578181015183820152602001612e3d565b50505050905090810190601f168015612e825780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001201415613163576000612eae856136b6565b9050836040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015612ef1578181015183820152602001612ed9565b50505050905090810190601f168015612f1e5780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120600182815481101515612f4857fe5b90600052602060002090600502016001016040516020018080602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015612fe55780601f10612fba57610100808354040283529160200191612fe5565b820191906000526020600020905b815481529060010190602001808311612fc857829003601f168201915b50509250505060405160208183030381529060405280519060200120148061315b5750826040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015613049578181015183820152602001613031565b50505050905090810190601f1680156130765780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001206001828154811015156130a057fe5b9060005260206000209060050201600101604051602001808060200182810382528381815460018160011615610100020316600290048152602001915080546001816001161561010002031660029004801561313d5780601f106131125761010080835404028352916020019161313d565b820191906000526020600020905b81548152906001019060200180831161312057829003601f168201915b50509250505060405160208183030381529060405280519060200120145b9150506116a6565b83600160a060020a031660066000856040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156131b257818101518382015260200161319a565b50505050905090810190601f1680156131df5780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208652908501959095525050500160002054600160a060020a031614806132ca575083600160a060020a031660066000846040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015613268578181015183820152602001613250565b50505050905090810190601f1680156132955780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208652908501959095525050500160002054600160a060020a0316145b949350505050565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561332257600080fd5b505afa158015613336573d6000803e3d6000fd5b505050506040513d602081101561334c57600080fd5b5051600160a060020a0316331461339b576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a9833981519152604482015290519081900360640190fd5b60006133a6866136b6565b600160a060020a0387166000908152600260205260409020549091501561345857836001828154811015156133d757fe5b906000526020600020906005020160020190805190602001906133fb9291906137b0565b508260018281548110151561340c57fe5b9060005260206000209060050201600301819055508160018281548110151561343157fe5b60009182526020909120600590910201600401805460ff1916911515919091179055613580565b60038054600190810191829055600160a060020a03888116600081815260026020908152604080832096909655855160a0810187529283528281018b81529583018a905260608301899052871515608084015284548086018087559590925282517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf66005909302928301805473ffffffffffffffffffffffffffffffffffffffff191691909516178455945180519495929461353d937fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf79093019291909101906137b0565b50604082015180516135599160028401916020909101906137b0565b50606082015160038201556080909101516004909101805460ff1916911515919091179055505b7f68e62a03aeb0a125c2fc869eed72f2fca473680987bdd680c093a534e17cc77686868685876040518086600160a060020a0316600160a060020a03168152602001806020018060200185151515158152602001848152602001838103835287818151815260200191508051906020019080838360005b8381101561360f5781810151838201526020016135f7565b50505050905090810190601f16801561363c5780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b8381101561366f578181015183820152602001613657565b50505050905090810190601f16801561369c5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a1505050505050565b600160a060020a03166000908152600260205260409020546000190190565b600160a060020a03811660009081526002602052604081205415156136fc5750600061182a565b6000613707836136b6565b905060018181548110151561371857fe5b906000526020600020906005020160030154915050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106137735782800160ff198235161785556137a0565b828001600101855582156137a0579182015b828111156137a0578235825591602001919060010190613785565b506137ac92915061381e565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106137f157805160ff19168380011785556137a0565b828001600101855582156137a0579182015b828111156137a0578251825591602001919060010190613803565b61154f91905b808211156137ac576000815560010161382456fe6163636f756e74207265636f76657279206e6f7420696e697469617465642e206f7065726174696f6e2063616e6e6f7420626520646f6e656163636f756e7420697320616c726561647920626c61636b6c69737465642e206f7065726174696f6e2063616e6e6f7420626520646f6e65696e76616c69642063616c6c65720000000000000000000000000000000000006163636f756e74206973206e6f7420696e2073757370656e646564207374617475732e206f7065726174696f6e2063616e6e6f7420626520646f6e656163636f756e74206973206e6f7420696e20616374697665207374617475732e206f7065726174696f6e2063616e6e6f7420626520646f6e6563616e2062652063616c6c656420746f2061737369676e2061646d696e20726f6c6573206f6e6c7963616e6e6f742062652063616c6c65642066726f2061737369676e696e67206f72672061646d696e20616e64206e6574776f726b2061646d696e20726f6c65736163636f756e74206973206e6f7420626c61636b6c69737465642e206f7065726174696f6e2063616e6e6f7420626520646f6e65737461747573206368616e6765206e6f7420706f737369626c6520666f72206f72672061646d696e206163636f756e7473a165627a7a723058201c5a325c0aae4af718809d85eb2233b1f7a8e746089ae0c33fecc7b57673bd190029 \ No newline at end of file +608060405234801561001057600080fd5b50604051602080613a988339810180604052602081101561003057600080fd5b505160008054600160a060020a03909216600160a060020a0319909216919091179055613a36806100626000396000f3fe608060405234801561001057600080fd5b50600436106100d35760003560e060020a9004806384b7a84a11610090578063c214e5e51161006a578063c214e5e5146105fb578063cef7f6af14610674578063e3483a9d14610736578063e8b42bf414610808576100d3565b806384b7a84a146104b9578063950145cf14610538578063b2018568146105de576100d3565b8063143a5604146100d85780631d09dc93146101ae5780632aceb53414610241578063309e36ef146103705780636b568d761461038a57806381d66b231461041e575b600080fd5b6101ac600480360360808110156100ee57600080fd5b600160a060020a03823516919081019060408101602082013564010000000081111561011957600080fd5b82018360208201111561012b57600080fd5b8035906020019184600183028401116401000000008311171561014d57600080fd5b91939092909160208101903564010000000081111561016b57600080fd5b82018360208201111561017d57600080fd5b8035906020019184600183028401116401000000008311171561019f57600080fd5b9193509150351515610945565b005b61021e600480360360208110156101c457600080fd5b8101906020810181356401000000008111156101df57600080fd5b8201836020820111156101f157600080fd5b8035906020019184600183028401116401000000008311171561021357600080fd5b509092509050610d40565b604080519215158352600160a060020a0390911660208301528051918290030190f35b6102676004803603602081101561025757600080fd5b5035600160a060020a03166112dd565b6040518086600160a060020a0316600160a060020a03168152602001806020018060200185815260200184151515158152602001838103835287818151815260200191508051906020019080838360005b838110156102d05781810151838201526020016102b8565b50505050905090810190601f1680156102fd5780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b83811015610330578181015183820152602001610318565b50505050905090810190601f16801561035d5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b61037861154b565b60408051918252519081900360200190f35b61040a600480360360408110156103a057600080fd5b600160a060020a0382351691908101906040810160208201356401000000008111156103cb57600080fd5b8201836020820111156103dd57600080fd5b803590602001918460018302840111640100000000831117156103ff57600080fd5b509092509050611552565b604080519115158252519081900360200190f35b6104446004803603602081101561043457600080fd5b5035600160a060020a03166116ad565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561047e578181015183820152602001610466565b50505050905090810190601f1680156104ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101ac600480360360608110156104cf57600080fd5b8101906020810181356401000000008111156104ea57600080fd5b8201836020820111156104fc57600080fd5b8035906020019184600183028401116401000000008311171561051e57600080fd5b9193509150600160a060020a03813516906020013561182f565b61040a6004803603602081101561054e57600080fd5b81019060208101813564010000000081111561056957600080fd5b82018360208201111561057b57600080fd5b8035906020019184600183028401116401000000008311171561059d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611f5f945050505050565b610267600480360360208110156105f457600080fd5b50356120da565b61040a6004803603604081101561061157600080fd5b81019060208101813564010000000081111561062c57600080fd5b82018360208201111561063e57600080fd5b8035906020019184600183028401116401000000008311171561066057600080fd5b919350915035600160a060020a03166122c4565b6101ac6004803603604081101561068a57600080fd5b8101906020810181356401000000008111156106a557600080fd5b8201836020820111156106b757600080fd5b803590602001918460018302840111640100000000831117156106d957600080fd5b9193909290916020810190356401000000008111156106f757600080fd5b82018360208201111561070957600080fd5b8035906020019184600183028401116401000000008311171561072b57600080fd5b509092509050612913565b6101ac6004803603608081101561074c57600080fd5b600160a060020a03823516919081019060408101602082013564010000000081111561077757600080fd5b82018360208201111561078957600080fd5b803590602001918460018302840111640100000000831117156107ab57600080fd5b9193909290916020810190356401000000008111156107c957600080fd5b8201836020820111156107db57600080fd5b803590602001918460018302840111640100000000831117156107fd57600080fd5b9193509150356129fc565b61040a6004803603606081101561081e57600080fd5b600160a060020a03823516919081019060408101602082013564010000000081111561084957600080fd5b82018360208201111561085b57600080fd5b8035906020019184600183028401116401000000008311171561087d57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156108d057600080fd5b8201836020820111156108e257600080fd5b8035906020019184600183028401116401000000008311171561090457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612d6b945050505050565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561099557600080fd5b505afa1580156109a9573d6000803e3d6000fd5b505050506040513d60208110156109bf57600080fd5b5051600160a060020a03163314610a0e576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a9833981519152604482015290519081900360640190fd5b6040805160208082019081526004805460026000196101006001841615020190911604938301849052929091829160609091019084908015610a915780601f10610a6657610100808354040283529160200191610a91565b820191906000526020600020905b815481529060010190602001808311610a7457829003601f168201915b50509250505060405160208183030381529060405280519060200120838360405160200180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040528051906020012014158015610c7f57506040805160208082019081526005805460026000196101006001841615020190911604938301849052929091829160609091019084908015610b8c5780601f10610b6157610100808354040283529160200191610b8c565b820191906000526020600020905b815481529060010190602001808311610b6f57829003601f168201915b50509250505060405160208183030381529060405280519060200120838360405160200180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040526040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015610c34578181015183820152602001610c1c565b50505050905090810190601f168015610c615780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040528051906020012014155b1515610cbf5760405160e560020a62461bcd0281526004018080602001828103825260408152602001806139666040913960400191505060405180910390fd5b610d388686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250600292508791506132d29050565b505050505050565b60008054604080517f0e32cf9000000000000000000000000000000000000000000000000000000000815290518392600160a060020a031691630e32cf90916004808301926020929190829003018186803b158015610d9e57600080fd5b505afa158015610db2573d6000803e3d6000fd5b505050506040513d6020811015610dc857600080fd5b5051600160a060020a03163314610e17576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a9833981519152604482015290519081900360640190fd5b610e5684848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f5f92505050565b156112cf576000610ede60066000878760405160200180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120815260200190815260200160002060009054906101000a9004600160a060020a03166136b6565b90506006600182815481101515610ef157fe5b9060005260206000209060050201600301819055506000600182815481101515610f1757fe5b906000526020600020906005020160040160006101000a81548160ff0219169083151502179055507f68e62a03aeb0a125c2fc869eed72f2fca473680987bdd680c093a534e17cc776600182815481101515610f6f57fe5b600091825260209091206005909102015460018054600160a060020a039092169184908110610f9a57fe5b9060005260206000209060050201600101600184815481101515610fba57fe5b9060005260206000209060050201600201600185815481101515610fda57fe5b60009182526020909120600460059092020101546001805460ff909216918790811061100257fe5b60009182526020918290206003600590920201015460408051600160a060020a038816815284151560608201526080810183905260a0938101848152875460026000196101006001841615020190911604948201859052929390929183019060c0840190889080156110b55780601f1061108a576101008083540402835291602001916110b5565b820191906000526020600020905b81548152906001019060200180831161109857829003601f168201915b50508381038252865460026000196101006001841615020190911604808252602090910190879080156111295780601f106110fe57610100808354040283529160200191611129565b820191906000526020600020905b81548152906001019060200180831161110c57829003601f168201915b505097505050505050505060405180910390a160408051602080820190815260048054600260001961010060018416150201909116049383018490529290918291606090910190849080156111bf5780601f10611194576101008083540402835291602001916111bf565b820191906000526020600020905b8154815290600101906020018083116111a257829003601f168201915b505092505050604051602081830303815290604052805190602001206001828154811015156111ea57fe5b60009182526020918290206040805180850194855260026005909402909201830180546000196101006001831615020116939093049082018190529192918291606001908490801561127d5780601f106112525761010080835404028352916020019161127d565b820191906000526020600020905b81548152906001019060200180831161126057829003601f168201915b50509250505060405160208183030381529060405280519060200120146001828154811015156112a957fe5b6000918252602090912060059091020154909350600160a060020a031691506112d69050565b5060009050805b9250929050565b600160a060020a038116600090815260026020526040812054606090819083908190151561135a575050604080518082018252600481527f4e4f4e45000000000000000000000000000000000000000000000000000000006020808301919091528251908101909252600080835286955090935090915080611542565b6000611365876136b6565b905060018181548110151561137657fe5b600091825260209091206005909102015460018054600160a060020a0390921691839081106113a157fe5b90600052602060002090600502016001016001838154811015156113c157fe5b90600052602060002090600502016002016001848154811015156113e157fe5b90600052602060002090600502016003015460018581548110151561140257fe5b600091825260209182902060046005909202010154845460408051601f6002600019600186161561010002019094169390930492830185900485028101850190915281815260ff909216928691908301828280156114a15780601f10611476576101008083540402835291602001916114a1565b820191906000526020600020905b81548152906001019060200180831161148457829003601f168201915b5050865460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529599508894509250840190508282801561152f5780601f106115045761010080835404028352916020019161152f565b820191906000526020600020905b81548152906001019060200180831161151257829003601f168201915b5050505050925095509550955095509550505b91939590929450565b6001545b90565b600160a060020a0383166000908152600260205260408120541515611579575060016116a6565b6000611584856136b6565b9050838360405160200180806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509350505050604051602081830303815290604052805190602001206001828154811015156115e857fe5b906000526020600020906005020160010160405160200180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156116855780601f1061165a57610100808354040283529160200191611685565b820191906000526020600020905b81548152906001019060200180831161166857829003601f168201915b50509250505060405160208183030381529060405280519060200120149150505b9392505050565b600160a060020a0381166000908152600260205260409020546060901515611709575060408051808201909152600481527f4e4f4e4500000000000000000000000000000000000000000000000000000000602082015261182a565b6000611714836136b6565b905060018181548110151561172557fe5b90600052602060002090600502016003015460001415156117f357600180548290811061174e57fe5b600091825260209182902060026005909202018101805460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835291929091908301828280156117e65780601f106117bb576101008083540402835291602001916117e6565b820191906000526020600020905b8154815290600101906020018083116117c957829003601f168201915b505050505091505061182a565b505060408051808201909152600481527f4e4f4e450000000000000000000000000000000000000000000000000000000060208201525b919050565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561187f57600080fd5b505afa158015611893573d6000803e3d6000fd5b505050506040513d60208110156118a957600080fd5b5051600160a060020a031633146118f8576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a9833981519152604482015290519081900360640190fd5b83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250600160a060020a0387168152600260205260409020548693501515915061199d9050576040805160e560020a62461bcd02815260206004820152601760248201527f6163636f756e7420646f6573206e6f7420657869737473000000000000000000604482015290519081900360640190fd5b816040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156119de5781810151838201526020016119c6565b50505050905090810190601f168015611a0b5780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001206001611a31836136b6565b81548110611a3b57fe5b90600052602060002090600502016001016040516020018080602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015611ad85780601f10611aad57610100808354040283529160200191611ad8565b820191906000526020600020905b815481529060010190602001808311611abb57829003601f168201915b50509250505060405160208183030381529060405280519060200120141515611b4b576040805160e560020a62461bcd02815260206004820152601860248201527f6163636f756e7420696e20646966666572656e74206f72670000000000000000604482015290519081900360640190fd5b600083118015611b5b5750600683105b1515611bb1576040805160e560020a62461bcd02815260206004820152601d60248201527f696e76616c696420737461747573206368616e67652072657175657374000000604482015290519081900360640190fd5b611bff8487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602081019091529081529250612d6b915050565b151560011415611c435760405160e560020a62461bcd0281526004018080602001828103825260318152602001806139da6031913960400191505060405180910390fd5b60008360011415611cc0576001611c59866136b6565b81548110611c6357fe5b9060005260206000209060050201600301546002141515611cb85760405160e560020a62461bcd0281526004018080602001828103825260398152602001806139056039913960400191505060405180910390fd5b506004611ea9565b8360021415611d3b576001611cd4866136b6565b81548110611cde57fe5b9060005260206000209060050201600301546004141515611d335760405160e560020a62461bcd02815260040180806020018281038252603c8152602001806138c9603c913960400191505060405180910390fd5b506002611ea9565b8360031415611db7576001611d4f866136b6565b81548110611d5957fe5b906000526020600020906005020160030154600514151515611daf5760405160e560020a62461bcd0281526004018080602001828103825260388152602001806138716038913960400191505060405180910390fd5b506005611ea9565b8360041415611e32576001611dcb866136b6565b81548110611dd557fe5b9060005260206000209060050201600301546005141515611e2a5760405160e560020a62461bcd0281526004018080602001828103825260348152602001806139a66034913960400191505060405180910390fd5b506007611ea9565b8360051415611ea9576001611e46866136b6565b81548110611e5057fe5b9060005260206000209060050201600301546007141515611ea55760405160e560020a62461bcd0281526004018080602001828103825260388152602001806138396038913960400191505060405180910390fd5b5060025b806001611eb5876136b6565b81548110611ebf57fe5b9060005260206000209060050201600301819055507f36b0ea38154dec5e98b6bf928b971a9db5e8cd4b6946350e9e43fb9848c70b25858888846040518085600160a060020a0316600160a060020a03168152602001806020018381526020018281038252858582818152602001925080828437600083820152604051601f909101601f191690920182900397509095505050505050a150505050505050565b600080600160a060020a031660066000846040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015611fb0578181015183820152602001611f98565b50505050905090810190601f168015611fdd5780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208652908501959095525050500160002054600160a060020a0316146120d257600060066000846040516020018080602001828103825283818151815260200191508051906020019080838360005b8381101561205c578181015183820152602001612044565b50505050905090810190601f1680156120895780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208652908501959095525050500160002054600160a060020a031690506120c7816136d5565b60021491505061182a565b506000919050565b60006060806000806001868154811015156120f157fe5b600091825260209091206005909102015460018054600160a060020a03909216918890811061211c57fe5b906000526020600020906005020160010160018881548110151561213c57fe5b906000526020600020906005020160020160018981548110151561215c57fe5b90600052602060002090600502016003015460018a81548110151561217d57fe5b600091825260209182902060046005909202010154845460408051601f6002600019600186161561010002019094169390930492830185900485028101850190915281815260ff9092169286919083018282801561221c5780601f106121f15761010080835404028352916020019161221c565b820191906000526020600020905b8154815290600101906020018083116121ff57829003601f168201915b5050865460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959950889450925084019050828280156122aa5780601f1061227f576101008083540402835291602001916122aa565b820191906000526020600020905b81548152906001019060200180831161228d57829003601f168201915b505050505092509450945094509450945091939590929450565b60008060009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561231657600080fd5b505afa15801561232a573d6000803e3d6000fd5b505050506040513d602081101561234057600080fd5b5051600160a060020a0316331461238f576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a9833981519152604482015290519081900360640190fd5b606061239a836116ad565b905060006123a7846136d5565b905060006123b4856136b6565b604080516020808201908152600580546002600019610100600184161502019091160493830184905293945091829160600190849080156124365780601f1061240b57610100808354040283529160200191612436565b820191906000526020600020905b81548152906001019060200180831161241957829003601f168201915b50509250505060405160208183030381529060405280519060200120836040516020018080602001828103825283818151815260200191508051906020019080838360005b8381101561249357818101518382015260200161247b565b50505050905090810190601f1680156124c05780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001201480156124e85750816001145b15612578578460066000898960405160200180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120815260200190815260200160002060006101000a815481600160a060020a030219169083600160a060020a031602179055505b600260018281548110151561258957fe5b906000526020600020906005020160030181905550600180828154811015156125ae57fe5b906000526020600020906005020160040160006101000a81548160ff0219169083151502179055507f68e62a03aeb0a125c2fc869eed72f2fca473680987bdd680c093a534e17cc7768560018381548110151561260757fe5b906000526020600020906005020160010160018481548110151561262757fe5b906000526020600020906005020160020160018581548110151561264757fe5b60009182526020909120600460059092020101546001805460ff909216918790811061266f57fe5b60009182526020918290206003600590920201015460408051600160a060020a038816815284151560608201526080810183905260a0938101848152875460026000196101006001841615020190911604948201859052929390929183019060c0840190889080156127225780601f106126f757610100808354040283529160200191612722565b820191906000526020600020905b81548152906001019060200180831161270557829003601f168201915b50508381038252865460026000196101006001841615020190911604808252602090910190879080156127965780601f1061276b57610100808354040283529160200191612796565b820191906000526020600020905b81548152906001019060200180831161277957829003601f168201915b505097505050505050505060405180910390a1604080516020808201908152600480546002600019610100600184161502019091160493830184905292909182916060909101908490801561282c5780601f106128015761010080835404028352916020019161282c565b820191906000526020600020905b81548152906001019060200180831161280f57829003601f168201915b5050925050506040516020818303038152906040528051906020012060018281548110151561285757fe5b6000918252602091829020604080518085019485526002600590940290920183018054600019610100600183161502011693909304908201819052919291829160600190849080156128ea5780601f106128bf576101008083540402835291602001916128ea565b820191906000526020600020905b8154815290600101906020018083116128cd57829003601f168201915b505092505050604051602081830303815290604052805190602001201493505050509392505050565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561296357600080fd5b505afa158015612977573d6000803e3d6000fd5b505050506040513d602081101561298d57600080fd5b5051600160a060020a031633146129dc576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a9833981519152604482015290519081900360640190fd5b6129e860048585613732565b506129f560058383613732565b5050505050565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b158015612a4c57600080fd5b505afa158015612a60573d6000803e3d6000fd5b505050506040513d6020811015612a7657600080fd5b5051600160a060020a03163314612ac5576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a9833981519152604482015290519081900360640190fd5b6040805160208082019081526005805460026000196101006001841615020190911604938301849052929091829160609091019084908015612b485780601f10612b1d57610100808354040283529160200191612b48565b820191906000526020600020905b815481529060010190602001808311612b2b57829003601f168201915b50509250505060405160208183030381529060405280519060200120838360405160200180806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509350505050604051602081830303815290604052805190602001201480612cb257506040805160208082019081526004805460026000196101006001841615020190911604938301849052929091829160609091019084908015612c415780601f10612c1657610100808354040283529160200191612c41565b820191906000526020600020905b815481529060010190602001808311612c2457829003601f168201915b50509250505060405160208183030381529060405280519060200120838360405160200180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120145b1515612cf25760405160e560020a62461bcd02815260040180806020018281038252602881526020018061393e6028913960400191505060405180910390fd5b610d388686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250879250600191506132d29050565b60408051602080820190815260048054600260001961010060018416150201909116049383018490526000939092829160609091019084908015612df05780601f10612dc557610100808354040283529160200191612df0565b820191906000526020600020905b815481529060010190602001808311612dd357829003601f168201915b50509250505060405160208183030381529060405280519060200120612e15856116ad565b6040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015612e55578181015183820152602001612e3d565b50505050905090810190601f168015612e825780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001201415613163576000612eae856136b6565b9050836040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015612ef1578181015183820152602001612ed9565b50505050905090810190601f168015612f1e5780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120600182815481101515612f4857fe5b90600052602060002090600502016001016040516020018080602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015612fe55780601f10612fba57610100808354040283529160200191612fe5565b820191906000526020600020905b815481529060010190602001808311612fc857829003601f168201915b50509250505060405160208183030381529060405280519060200120148061315b5750826040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015613049578181015183820152602001613031565b50505050905090810190601f1680156130765780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001206001828154811015156130a057fe5b9060005260206000209060050201600101604051602001808060200182810382528381815460018160011615610100020316600290048152602001915080546001816001161561010002031660029004801561313d5780601f106131125761010080835404028352916020019161313d565b820191906000526020600020905b81548152906001019060200180831161312057829003601f168201915b50509250505060405160208183030381529060405280519060200120145b9150506116a6565b83600160a060020a031660066000856040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156131b257818101518382015260200161319a565b50505050905090810190601f1680156131df5780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208652908501959095525050500160002054600160a060020a031614806132ca575083600160a060020a031660066000846040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015613268578181015183820152602001613250565b50505050905090810190601f1680156132955780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208652908501959095525050500160002054600160a060020a0316145b949350505050565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561332257600080fd5b505afa158015613336573d6000803e3d6000fd5b505050506040513d602081101561334c57600080fd5b5051600160a060020a0316331461339b576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a9833981519152604482015290519081900360640190fd5b60006133a6866136b6565b600160a060020a0387166000908152600260205260409020549091501561345857836001828154811015156133d757fe5b906000526020600020906005020160020190805190602001906133fb9291906137b0565b508260018281548110151561340c57fe5b9060005260206000209060050201600301819055508160018281548110151561343157fe5b60009182526020909120600590910201600401805460ff1916911515919091179055613580565b60038054600190810191829055600160a060020a03888116600081815260026020908152604080832096909655855160a0810187529283528281018b81529583018a905260608301899052871515608084015284548086018087559590925282517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf66005909302928301805473ffffffffffffffffffffffffffffffffffffffff191691909516178455945180519495929461353d937fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf79093019291909101906137b0565b50604082015180516135599160028401916020909101906137b0565b50606082015160038201556080909101516004909101805460ff1916911515919091179055505b7f68e62a03aeb0a125c2fc869eed72f2fca473680987bdd680c093a534e17cc77686868685876040518086600160a060020a0316600160a060020a03168152602001806020018060200185151515158152602001848152602001838103835287818151815260200191508051906020019080838360005b8381101561360f5781810151838201526020016135f7565b50505050905090810190601f16801561363c5780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b8381101561366f578181015183820152602001613657565b50505050905090810190601f16801561369c5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a1505050505050565b600160a060020a03166000908152600260205260409020546000190190565b600160a060020a03811660009081526002602052604081205415156136fc5750600061182a565b6000613707836136b6565b905060018181548110151561371857fe5b906000526020600020906005020160030154915050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106137735782800160ff198235161785556137a0565b828001600101855582156137a0579182015b828111156137a0578235825591602001919060010190613785565b506137ac92915061381e565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106137f157805160ff19168380011785556137a0565b828001600101855582156137a0579182015b828111156137a0578251825591602001919060010190613803565b61154f91905b808211156137ac576000815560010161382456fe6163636f756e74207265636f76657279206e6f7420696e697469617465642e206f7065726174696f6e2063616e6e6f7420626520646f6e656163636f756e7420697320616c726561647920626c61636b6c69737465642e206f7065726174696f6e2063616e6e6f7420626520646f6e65696e76616c69642063616c6c65720000000000000000000000000000000000006163636f756e74206973206e6f7420696e2073757370656e646564207374617475732e206f7065726174696f6e2063616e6e6f7420626520646f6e656163636f756e74206973206e6f7420696e20616374697665207374617475732e206f7065726174696f6e2063616e6e6f7420626520646f6e6563616e2062652063616c6c656420746f2061737369676e2061646d696e20726f6c6573206f6e6c7963616e6e6f742062652063616c6c65642066726f2061737369676e696e67206f72672061646d696e20616e64206e6574776f726b2061646d696e20726f6c65736163636f756e74206973206e6f7420626c61636b6c69737465642e206f7065726174696f6e2063616e6e6f7420626520646f6e65737461747573206368616e6765206e6f7420706f737369626c6520666f72206f72672061646d696e206163636f756e7473a165627a7a7230582064ba630c6e00d18cb409b33a435adcbf4b4351acc2024f5ade55e7381c75c23e0029 \ No newline at end of file diff --git a/permission/contract/gen/NodeManager.bin b/permission/contract/gen/NodeManager.bin index 5a718618a..9f382774b 100644 --- a/permission/contract/gen/NodeManager.bin +++ b/permission/contract/gen/NodeManager.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b506040516020806124338339810180604052602081101561003057600080fd5b505160008054600160a060020a03909216600160a060020a03199092169190911790556123d1806100626000396000f3fe608060405234801561001057600080fd5b506004361061008c5760003560e060020a9004806397c07a9b1161005f57806397c07a9b1461042e578063a97a44061461044b578063b81c806a1461050d578063e3b09d84146102aa5761008c565b80630cc50146146100915780633f0e0e47146101555780633f5e1a45146102aa57806386bc36521461036c575b600080fd5b610153600480360360608110156100a757600080fd5b8101906020810181356401000000008111156100c257600080fd5b8201836020820111156100d457600080fd5b803590602001918460018302840111640100000000831117156100f657600080fd5b91939092909160208101903564010000000081111561011457600080fd5b82018360208201111561012657600080fd5b8035906020019184600183028401116401000000008311171561014857600080fd5b919350915035610527565b005b6101c56004803603602081101561016b57600080fd5b81019060208101813564010000000081111561018657600080fd5b82018360208201111561019857600080fd5b803590602001918460018302840111640100000000831117156101ba57600080fd5b509092509050610f34565b604051808060200180602001848152602001838103835286818151815260200191508051906020019080838360005b8381101561020c5781810151838201526020016101f4565b50505050905090810190601f1680156102395780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561026c578181015183820152602001610254565b50505050905090810190601f1680156102995780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b610153600480360360408110156102c057600080fd5b8101906020810181356401000000008111156102db57600080fd5b8201836020820111156102ed57600080fd5b8035906020019184600183028401116401000000008311171561030f57600080fd5b91939092909160208101903564010000000081111561032d57600080fd5b82018360208201111561033f57600080fd5b8035906020019184600183028401116401000000008311171561036157600080fd5b509092509050611106565b6101536004803603604081101561038257600080fd5b81019060208101813564010000000081111561039d57600080fd5b8201836020820111156103af57600080fd5b803590602001918460018302840111640100000000831117156103d157600080fd5b9193909290916020810190356401000000008111156103ef57600080fd5b82018360208201111561040157600080fd5b8035906020019184600183028401116401000000008311171561042357600080fd5b5090925090506114dd565b6101c56004803603602081101561044457600080fd5b50356119fc565b6101536004803603604081101561046157600080fd5b81019060208101813564010000000081111561047c57600080fd5b82018360208201111561048e57600080fd5b803590602001918460018302840111640100000000831117156104b057600080fd5b9193909290916020810190356401000000008111156104ce57600080fd5b8201836020820111156104e057600080fd5b8035906020019184600183028401116401000000008311171561050257600080fd5b509092509050611b8b565b610515611f62565b60408051918252519081900360200190f35b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561057757600080fd5b505afa15801561058b573d6000803e3d6000fd5b505050506040513d60208110156105a157600080fd5b5051600160a060020a031633146105f0576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020612333833981519152604482015290519081900360640190fd5b84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602080820181815288519383019390935287516002975093955087945091928392606090920191850190808383895b8381101561066d578181015183820152602001610655565b50505050905090810190601f16801561069a5780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208652908501959095525050500160002054151561071a576040805160e560020a62461bcd02815260206004820152601e60248201527f70617373656420656e6f646520696420646f6573206e6f742065786973740000604482015290519081900360640190fd5b61078d86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250611f6992505050565b15156107cd5760405160e560020a62461bcd02815260040180806020018281038252602a8152602001806122e9602a913960400191505060405180910390fd5b81600114806107dc5750816002145b806107e75750816003145b806107f25750816004145b806107fd5750816005145b151561083d5760405160e560020a62461bcd0281526004018080602001828103825260268152602001806123536026913960400191505060405180910390fd5b81600114156109bd5761088586868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506120cb92505050565b6002146108ca576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020612313833981519152604482015290519081900360640190fd5b6003600161090d88888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506121a892505050565b8154811061091757fe5b9060005260206000209060030201600201819055507fc6c3720fe673e87bb26e06be713d514278aa94c3939cfe7c64b9bea4d486824a868686866040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a1610f2c565b8160021415610b3d57610a0586868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506120cb92505050565b600314610a4a576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020612313833981519152604482015290519081900360640190fd5b60026001610a8d88888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506121a892505050565b81548110610a9757fe5b9060005260206000209060030201600201819055507f49796be3ca168a59c8ae46c75a36a9bb3a84753d3e12a812f93ae010e783b14f868686866040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a1610f2c565b8160031415610c395760046001610b8988888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506121a892505050565b81548110610b9357fe5b9060005260206000209060030201600201819055507f4714623279994517c446c8fb72c3fdaca26434da1e2490d3976fe0cd880cfa7a868686866040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a1610f2c565b8160041415610db957610c8186868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506120cb92505050565b600414610cc6576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020612313833981519152604482015290519081900360640190fd5b60056001610d0988888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506121a892505050565b81548110610d1357fe5b9060005260206000209060030201600201819055507ffd385c618a1e89d01fb9a21780846793e282e8bc0b60caf6ccb3e422d543fbfb868686866040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a1610f2c565b610df886868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506120cb92505050565b600514610e3d576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020612313833981519152604482015290519081900360640190fd5b60026001610e8088888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506121a892505050565b81548110610e8a57fe5b9060005260206000209060030201600201819055507f787d7bc525e7c4658c64e3e456d974a1be21cc196e8162a4bf1337a12cb38dac868686866040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a15b505050505050565b606080600080610f7986868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506121a892505050565b9050600181815481101515610f8a57fe5b9060005260206000209060030201600101600182815481101515610faa57fe5b9060005260206000209060030201600001600183815481101515610fca57fe5b60009182526020918290206002600390920201810154845460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835290928591908301828280156110635780601f1061103857610100808354040283529160200191611063565b820191906000526020600020905b81548152906001019060200180831161104657829003601f168201915b5050855460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959850879450925084019050828280156110f15780601f106110c6576101008083540402835291602001916110f1565b820191906000526020600020905b8154815290600101906020018083116110d457829003601f168201915b50505050509150935093509350509250925092565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561115657600080fd5b505afa15801561116a573d6000803e3d6000fd5b505050506040513d602081101561118057600080fd5b5051600160a060020a031633146111cf576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020612333833981519152604482015290519081900360640190fd5b83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602080820181815288519383019390935287516002975093955087945091928392606090920191850190808383895b8381101561124c578181015183820152602001611234565b50505050905090810190601f1680156112795780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208652908501959095525050500160002054156112f8576040805160e560020a62461bcd02815260206004820152601660248201527f70617373656420656e6f64652069642065786973747300000000000000000000604482015290519081900360640190fd5b6003805460010190819055604080516020808201908152918101879052600291600091899189918190606001848480828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120815260200190815260200160002081905550600160606040519081016040528087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250604080516020601f88018190048102820181019092528681529181019190879087908190840183828082843760009201829052509385525050600260209384015250835460018101808655948252908290208351805160039093029091019261142392849290910190612250565b50602082810151805161143c9260018501920190612250565b50604082015181600201555050507f0413ce00d5de406d9939003416263a7530eaeb13f9d281c8baeba1601def960d858585856040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a15050505050565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561152d57600080fd5b505afa158015611541573d6000803e3d6000fd5b505050506040513d602081101561155757600080fd5b5051600160a060020a031633146115a6576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020612333833981519152604482015290519081900360640190fd5b83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602080820181815288519383019390935287516002975093955087945091928392606090920191850190808383895b8381101561162357818101518382015260200161160b565b50505050905090810190601f1680156116505780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181528151602092830120865290850195909552505050016000205415156116d0576040805160e560020a62461bcd02815260206004820152601e60248201527f70617373656420656e6f646520696420646f6573206e6f742065786973740000604482015290519081900360640190fd5b61174385858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f89018190048102820181019092528781529250879150869081908401838280828437600092019190915250611f6992505050565b15156117835760405160e560020a62461bcd02815260040180806020018281038252602d815260200180612379602d913960400191505060405180910390fd5b6117c285858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506120cb92505050565b600114611819576040805160e560020a62461bcd02815260206004820152601c60248201527f6e6f7468696e672070656e64696e6720666f7220617070726f76616c00000000604482015290519081900360640190fd5b600061185a86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506121a892505050565b9050600260018281548110151561186d57fe5b9060005260206000209060030201600201819055507f0413ce00d5de406d9939003416263a7530eaeb13f9d281c8baeba1601def960d6001828154811015156118b257fe5b90600052602060002090600302016000016001838154811015156118d257fe5b90600052602060002090600302016001016040518080602001806020018381038352858181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156119705780601f1061194557610100808354040283529160200191611970565b820191906000526020600020905b81548152906001019060200180831161195357829003601f168201915b50508381038252845460026000196101006001841615020190911604808252602090910190859080156119e45780601f106119b9576101008083540402835291602001916119e4565b820191906000526020600020905b8154815290600101906020018083116119c757829003601f168201915b505094505050505060405180910390a1505050505050565b6060806000600184815481101515611a1057fe5b9060005260206000209060030201600101600185815481101515611a3057fe5b9060005260206000209060030201600001600186815481101515611a5057fe5b60009182526020918290206002600390920201810154845460408051601f600019610100600186161502019093169490940491820185900485028401850190528083529092859190830182828015611ae95780601f10611abe57610100808354040283529160200191611ae9565b820191906000526020600020905b815481529060010190602001808311611acc57829003601f168201915b5050855460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815295985087945092508401905082828015611b775780601f10611b4c57610100808354040283529160200191611b77565b820191906000526020600020905b815481529060010190602001808311611b5a57829003601f168201915b505050505091509250925092509193909250565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b158015611bdb57600080fd5b505afa158015611bef573d6000803e3d6000fd5b505050506040513d6020811015611c0557600080fd5b5051600160a060020a03163314611c54576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020612333833981519152604482015290519081900360640190fd5b83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602080820181815288519383019390935287516002975093955087945091928392606090920191850190808383895b83811015611cd1578181015183820152602001611cb9565b50505050905090810190601f168015611cfe5780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181528151602092830120865290850195909552505050016000205415611d7d576040805160e560020a62461bcd02815260206004820152601660248201527f70617373656420656e6f64652069642065786973747300000000000000000000604482015290519081900360640190fd5b6003805460010190819055604080516020808201908152918101879052600291600091899189918190606001848480828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120815260200190815260200160002081905550600160606040519081016040528087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250604080516020601f880181900481028201810190925286815291810191908790879081908401838280828437600092018290525093855250506001602093840181905285549081018087559583529183902084518051600390940290910193611ea893859350910190612250565b506020828101518051611ec19260018501920190612250565b50604082015181600201555050507fb1a7eec7dd1a516c3132d6d1f770758b19aa34c3a07c138caf662688b7e3556f858585856040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a15050505050565b6003545b90565b6000816040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015611fac578181015183820152602001611f94565b50505050905090810190601f168015611fd95780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001206001611fff856121a8565b8154811061200957fe5b906000526020600020906003020160010160405160200180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156120a65780601f1061207b576101008083540402835291602001916120a6565b820191906000526020600020905b81548152906001019060200180831161208957829003601f168201915b5050925050506040516020818303038152906040528051906020012014905092915050565b600060026000836040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156121125781810151838201526020016120fa565b50505050905090810190601f16801561213f5780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040528051906020012081526020019081526020016000205460001415612179575060006121a3565b6001612184836121a8565b8154811061218e57fe5b90600052602060002090600302016002015490505b919050565b6000600160026000846040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156121f15781810151838201526020016121d9565b50505050905090810190601f16801561221e5780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120815260200190815260200160002054039050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061229157805160ff19168380011785556122be565b828001600101855582156122be579182015b828111156122be5782518255916020019190600101906122a3565b506122ca9291506122ce565b5090565b611f6691905b808211156122ca57600081556001016122d456fe656e6f646520696420646f6573206e6f742062656c6f6e6720746f2074686520706173736564206f72676f7065726174696f6e2063616e6e6f7420626520706572666f726d6564000000696e76616c69642063616c6c6572000000000000000000000000000000000000696e76616c6964206f7065726174696f6e2e2077726f6e6720616374696f6e20706173736564656e6f646520696420646f6573206e6f742062656c6f6e6720746f2074686520706173736564206f7267206964a165627a7a723058201a5cc0493d4a8b1449c8570e60c82a29866f17bbfc4e65b2665c9f27a95dc0f70029 \ No newline at end of file +608060405234801561001057600080fd5b506040516020806125388339810180604052602081101561003057600080fd5b505160008054600160a060020a03909216600160a060020a03199092169190911790556124d6806100626000396000f3fe608060405234801561001057600080fd5b506004361061008c5760003560e060020a9004806397c07a9b1161005f57806397c07a9b1461042e578063a97a44061461044b578063b81c806a1461050d578063e3b09d84146102aa5761008c565b80630cc50146146100915780633f0e0e47146101555780633f5e1a45146102aa57806386bc36521461036c575b600080fd5b610153600480360360608110156100a757600080fd5b8101906020810181356401000000008111156100c257600080fd5b8201836020820111156100d457600080fd5b803590602001918460018302840111640100000000831117156100f657600080fd5b91939092909160208101903564010000000081111561011457600080fd5b82018360208201111561012657600080fd5b8035906020019184600183028401116401000000008311171561014857600080fd5b919350915035610527565b005b6101c56004803603602081101561016b57600080fd5b81019060208101813564010000000081111561018657600080fd5b82018360208201111561019857600080fd5b803590602001918460018302840111640100000000831117156101ba57600080fd5b509092509050610f34565b604051808060200180602001848152602001838103835286818151815260200191508051906020019080838360005b8381101561020c5781810151838201526020016101f4565b50505050905090810190601f1680156102395780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561026c578181015183820152602001610254565b50505050905090810190601f1680156102995780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b610153600480360360408110156102c057600080fd5b8101906020810181356401000000008111156102db57600080fd5b8201836020820111156102ed57600080fd5b8035906020019184600183028401116401000000008311171561030f57600080fd5b91939092909160208101903564010000000081111561032d57600080fd5b82018360208201111561033f57600080fd5b8035906020019184600183028401116401000000008311171561036157600080fd5b50909250905061120b565b6101536004803603604081101561038257600080fd5b81019060208101813564010000000081111561039d57600080fd5b8201836020820111156103af57600080fd5b803590602001918460018302840111640100000000831117156103d157600080fd5b9193909290916020810190356401000000008111156103ef57600080fd5b82018360208201111561040157600080fd5b8035906020019184600183028401116401000000008311171561042357600080fd5b5090925090506115e2565b6101c56004803603602081101561044457600080fd5b5035611b01565b6101536004803603604081101561046157600080fd5b81019060208101813564010000000081111561047c57600080fd5b82018360208201111561048e57600080fd5b803590602001918460018302840111640100000000831117156104b057600080fd5b9193909290916020810190356401000000008111156104ce57600080fd5b8201836020820111156104e057600080fd5b8035906020019184600183028401116401000000008311171561050257600080fd5b509092509050611c90565b610515612067565b60408051918252519081900360200190f35b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561057757600080fd5b505afa15801561058b573d6000803e3d6000fd5b505050506040513d60208110156105a157600080fd5b5051600160a060020a031633146105f0576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020612438833981519152604482015290519081900360640190fd5b84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602080820181815288519383019390935287516002975093955087945091928392606090920191850190808383895b8381101561066d578181015183820152602001610655565b50505050905090810190601f16801561069a5780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208652908501959095525050500160002054151561071a576040805160e560020a62461bcd02815260206004820152601e60248201527f70617373656420656e6f646520696420646f6573206e6f742065786973740000604482015290519081900360640190fd5b61078d86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a01819004810282018101909252888152925088915087908190840183828082843760009201919091525061206e92505050565b15156107cd5760405160e560020a62461bcd02815260040180806020018281038252602a8152602001806123ee602a913960400191505060405180910390fd5b81600114806107dc5750816002145b806107e75750816003145b806107f25750816004145b806107fd5750816005145b151561083d5760405160e560020a62461bcd0281526004018080602001828103825260268152602001806124586026913960400191505060405180910390fd5b81600114156109bd5761088586868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506121d092505050565b6002146108ca576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020612418833981519152604482015290519081900360640190fd5b6003600161090d88888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506122ad92505050565b8154811061091757fe5b9060005260206000209060030201600201819055507fc6c3720fe673e87bb26e06be713d514278aa94c3939cfe7c64b9bea4d486824a868686866040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a1610f2c565b8160021415610b3d57610a0586868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506121d092505050565b600314610a4a576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020612418833981519152604482015290519081900360640190fd5b60026001610a8d88888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506122ad92505050565b81548110610a9757fe5b9060005260206000209060030201600201819055507f49796be3ca168a59c8ae46c75a36a9bb3a84753d3e12a812f93ae010e783b14f868686866040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a1610f2c565b8160031415610c395760046001610b8988888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506122ad92505050565b81548110610b9357fe5b9060005260206000209060030201600201819055507f4714623279994517c446c8fb72c3fdaca26434da1e2490d3976fe0cd880cfa7a868686866040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a1610f2c565b8160041415610db957610c8186868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506121d092505050565b600414610cc6576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020612418833981519152604482015290519081900360640190fd5b60056001610d0988888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506122ad92505050565b81548110610d1357fe5b9060005260206000209060030201600201819055507ffd385c618a1e89d01fb9a21780846793e282e8bc0b60caf6ccb3e422d543fbfb868686866040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a1610f2c565b610df886868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506121d092505050565b600514610e3d576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020612418833981519152604482015290519081900360640190fd5b60026001610e8088888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506122ad92505050565b81548110610e8a57fe5b9060005260206000209060030201600201819055507f787d7bc525e7c4658c64e3e456d974a1be21cc196e8162a4bf1337a12cb38dac868686866040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a15b505050505050565b606080600060026000836040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015610f7e578181015183820152602001610f66565b50505050905090810190601f168015610fab5780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001208152602001908152602001600020546000141561103c5784846000602060405190810160405280600081525092919082828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250969950919750919550611204945050505050565b600061107d86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506122ad92505050565b905060018181548110151561108e57fe5b90600052602060002090600302016001016001828154811015156110ae57fe5b90600052602060002090600302016000016001838154811015156110ce57fe5b60009182526020918290206002600390920201810154845460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835290928591908301828280156111675780601f1061113c57610100808354040283529160200191611167565b820191906000526020600020905b81548152906001019060200180831161114a57829003601f168201915b5050855460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959850879450925084019050828280156111f55780601f106111ca576101008083540402835291602001916111f5565b820191906000526020600020905b8154815290600101906020018083116111d857829003601f168201915b50505050509150935093509350505b9250925092565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561125b57600080fd5b505afa15801561126f573d6000803e3d6000fd5b505050506040513d602081101561128557600080fd5b5051600160a060020a031633146112d4576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020612438833981519152604482015290519081900360640190fd5b83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602080820181815288519383019390935287516002975093955087945091928392606090920191850190808383895b83811015611351578181015183820152602001611339565b50505050905090810190601f16801561137e5780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208652908501959095525050500160002054156113fd576040805160e560020a62461bcd02815260206004820152601660248201527f70617373656420656e6f64652069642065786973747300000000000000000000604482015290519081900360640190fd5b6003805460010190819055604080516020808201908152918101879052600291600091899189918190606001848480828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120815260200190815260200160002081905550600160606040519081016040528087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250604080516020601f88018190048102820181019092528681529181019190879087908190840183828082843760009201829052509385525050600260209384015250835460018101808655948252908290208351805160039093029091019261152892849290910190612355565b5060208281015180516115419260018501920190612355565b50604082015181600201555050507f0413ce00d5de406d9939003416263a7530eaeb13f9d281c8baeba1601def960d858585856040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a15050505050565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561163257600080fd5b505afa158015611646573d6000803e3d6000fd5b505050506040513d602081101561165c57600080fd5b5051600160a060020a031633146116ab576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020612438833981519152604482015290519081900360640190fd5b83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602080820181815288519383019390935287516002975093955087945091928392606090920191850190808383895b83811015611728578181015183820152602001611710565b50505050905090810190601f1680156117555780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181528151602092830120865290850195909552505050016000205415156117d5576040805160e560020a62461bcd02815260206004820152601e60248201527f70617373656420656e6f646520696420646f6573206e6f742065786973740000604482015290519081900360640190fd5b61184885858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8901819004810282018101909252878152925087915086908190840183828082843760009201919091525061206e92505050565b15156118885760405160e560020a62461bcd02815260040180806020018281038252602d81526020018061247e602d913960400191505060405180910390fd5b6118c785858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506121d092505050565b60011461191e576040805160e560020a62461bcd02815260206004820152601c60248201527f6e6f7468696e672070656e64696e6720666f7220617070726f76616c00000000604482015290519081900360640190fd5b600061195f86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506122ad92505050565b9050600260018281548110151561197257fe5b9060005260206000209060030201600201819055507f0413ce00d5de406d9939003416263a7530eaeb13f9d281c8baeba1601def960d6001828154811015156119b757fe5b90600052602060002090600302016000016001838154811015156119d757fe5b9060005260206000209060030201600101604051808060200180602001838103835285818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015611a755780601f10611a4a57610100808354040283529160200191611a75565b820191906000526020600020905b815481529060010190602001808311611a5857829003601f168201915b5050838103825284546002600019610100600184161502019091160480825260209091019085908015611ae95780601f10611abe57610100808354040283529160200191611ae9565b820191906000526020600020905b815481529060010190602001808311611acc57829003601f168201915b505094505050505060405180910390a1505050505050565b6060806000600184815481101515611b1557fe5b9060005260206000209060030201600101600185815481101515611b3557fe5b9060005260206000209060030201600001600186815481101515611b5557fe5b60009182526020918290206002600390920201810154845460408051601f600019610100600186161502019093169490940491820185900485028401850190528083529092859190830182828015611bee5780601f10611bc357610100808354040283529160200191611bee565b820191906000526020600020905b815481529060010190602001808311611bd157829003601f168201915b5050855460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815295985087945092508401905082828015611c7c5780601f10611c5157610100808354040283529160200191611c7c565b820191906000526020600020905b815481529060010190602001808311611c5f57829003601f168201915b505050505091509250925092509193909250565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b158015611ce057600080fd5b505afa158015611cf4573d6000803e3d6000fd5b505050506040513d6020811015611d0a57600080fd5b5051600160a060020a03163314611d59576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020612438833981519152604482015290519081900360640190fd5b83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602080820181815288519383019390935287516002975093955087945091928392606090920191850190808383895b83811015611dd6578181015183820152602001611dbe565b50505050905090810190601f168015611e035780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181528151602092830120865290850195909552505050016000205415611e82576040805160e560020a62461bcd02815260206004820152601660248201527f70617373656420656e6f64652069642065786973747300000000000000000000604482015290519081900360640190fd5b6003805460010190819055604080516020808201908152918101879052600291600091899189918190606001848480828437600081840152601f19601f820116905080830192505050935050505060405160208183030381529060405280519060200120815260200190815260200160002081905550600160606040519081016040528087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250604080516020601f880181900481028201810190925286815291810191908790879081908401838280828437600092018290525093855250506001602093840181905285549081018087559583529183902084518051600390940290910193611fad93859350910190612355565b506020828101518051611fc69260018501920190612355565b50604082015181600201555050507fb1a7eec7dd1a516c3132d6d1f770758b19aa34c3a07c138caf662688b7e3556f858585856040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a15050505050565b6003545b90565b6000816040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156120b1578181015183820152602001612099565b50505050905090810190601f1680156120de5780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001206001612104856122ad565b8154811061210e57fe5b906000526020600020906003020160010160405160200180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156121ab5780601f10612180576101008083540402835291602001916121ab565b820191906000526020600020905b81548152906001019060200180831161218e57829003601f168201915b5050925050506040516020818303038152906040528051906020012014905092915050565b600060026000836040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156122175781810151838201526020016121ff565b50505050905090810190601f1680156122445780820380516001836020036101000a031916815260200191505b5092505050604051602081830303815290604052805190602001208152602001908152602001600020546000141561227e575060006122a8565b6001612289836122ad565b8154811061229357fe5b90600052602060002090600302016002015490505b919050565b6000600160026000846040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156122f65781810151838201526020016122de565b50505050905090810190601f1680156123235780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120815260200190815260200160002054039050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061239657805160ff19168380011785556123c3565b828001600101855582156123c3579182015b828111156123c35782518255916020019190600101906123a8565b506123cf9291506123d3565b5090565b61206b91905b808211156123cf57600081556001016123d956fe656e6f646520696420646f6573206e6f742062656c6f6e6720746f2074686520706173736564206f72676f7065726174696f6e2063616e6e6f7420626520706572666f726d6564000000696e76616c69642063616c6c6572000000000000000000000000000000000000696e76616c6964206f7065726174696f6e2e2077726f6e6720616374696f6e20706173736564656e6f646520696420646f6573206e6f742062656c6f6e6720746f2074686520706173736564206f7267206964a165627a7a7230582056e58e3bf58b0c0c90d997e73401ac42acb39bacd2aafecf52dca6e05fb2f3250029 \ No newline at end of file diff --git a/permission/contract/gen/OrgManager.abi b/permission/contract/gen/OrgManager.abi index 729c6ff9e..50cbf9e81 100644 --- a/permission/contract/gen/OrgManager.abi +++ b/permission/contract/gen/OrgManager.abi @@ -1 +1 @@ -[{"constant":false,"inputs":[{"name":"_orgId","type":"string"},{"name":"_action","type":"uint256"}],"name":"updateOrg","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_orgId","type":"string"},{"name":"_action","type":"uint256"}],"name":"approveOrgStatusUpdate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_orgId","type":"string"}],"name":"getUltimateParent","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_pOrgId","type":"string"},{"name":"_orgId","type":"string"}],"name":"addSubOrg","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_orgId","type":"string"}],"name":"_getOrgIndex","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_orgIndex","type":"uint256"}],"name":"getOrgInfo","outputs":[{"name":"","type":"string"},{"name":"","type":"string"},{"name":"","type":"string"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getNumberOfOrgs","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_orgId","type":"string"},{"name":"_orgStatus","type":"uint256"}],"name":"checkOrgStatus","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_orgId","type":"string"},{"name":"_breadth","type":"uint256"},{"name":"_depth","type":"uint256"}],"name":"setUpOrg","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_orgId","type":"string"}],"name":"approveOrg","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_orgId","type":"string"}],"name":"addOrg","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_orgId","type":"string"}],"name":"checkOrgExists","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_permUpgradable","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_orgId","type":"string"},{"indexed":false,"name":"_porgId","type":"string"},{"indexed":false,"name":"_ultParent","type":"string"},{"indexed":false,"name":"_level","type":"uint256"},{"indexed":false,"name":"_status","type":"uint256"}],"name":"OrgApproved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_orgId","type":"string"},{"indexed":false,"name":"_porgId","type":"string"},{"indexed":false,"name":"_ultParent","type":"string"},{"indexed":false,"name":"_level","type":"uint256"},{"indexed":false,"name":"_status","type":"uint256"}],"name":"OrgPendingApproval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_orgId","type":"string"},{"indexed":false,"name":"_porgId","type":"string"},{"indexed":false,"name":"_ultParent","type":"string"},{"indexed":false,"name":"_level","type":"uint256"}],"name":"OrgSuspended","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_orgId","type":"string"},{"indexed":false,"name":"_porgId","type":"string"},{"indexed":false,"name":"_ultParent","type":"string"},{"indexed":false,"name":"_level","type":"uint256"}],"name":"OrgSuspensionRevoked","type":"event"}] \ No newline at end of file +[{"constant":false,"inputs":[{"name":"_orgId","type":"string"},{"name":"_action","type":"uint256"}],"name":"updateOrg","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_orgId","type":"string"},{"name":"_action","type":"uint256"}],"name":"approveOrgStatusUpdate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_orgId","type":"string"}],"name":"getUltimateParent","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_pOrgId","type":"string"},{"name":"_orgId","type":"string"}],"name":"addSubOrg","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_orgIndex","type":"uint256"}],"name":"getOrgInfo","outputs":[{"name":"","type":"string"},{"name":"","type":"string"},{"name":"","type":"string"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_orgId","type":"string"}],"name":"getSubOrgIndexes","outputs":[{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getNumberOfOrgs","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_orgId","type":"string"},{"name":"_orgStatus","type":"uint256"}],"name":"checkOrgStatus","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_orgId","type":"string"},{"name":"_breadth","type":"uint256"},{"name":"_depth","type":"uint256"}],"name":"setUpOrg","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_orgId","type":"string"}],"name":"approveOrg","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_orgId","type":"string"}],"name":"getOrgDetails","outputs":[{"name":"","type":"string"},{"name":"","type":"string"},{"name":"","type":"string"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_orgId","type":"string"}],"name":"addOrg","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_orgId","type":"string"}],"name":"checkOrgExists","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_permUpgradable","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_orgId","type":"string"},{"indexed":false,"name":"_porgId","type":"string"},{"indexed":false,"name":"_ultParent","type":"string"},{"indexed":false,"name":"_level","type":"uint256"},{"indexed":false,"name":"_status","type":"uint256"}],"name":"OrgApproved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_orgId","type":"string"},{"indexed":false,"name":"_porgId","type":"string"},{"indexed":false,"name":"_ultParent","type":"string"},{"indexed":false,"name":"_level","type":"uint256"},{"indexed":false,"name":"_status","type":"uint256"}],"name":"OrgPendingApproval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_orgId","type":"string"},{"indexed":false,"name":"_porgId","type":"string"},{"indexed":false,"name":"_ultParent","type":"string"},{"indexed":false,"name":"_level","type":"uint256"}],"name":"OrgSuspended","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_orgId","type":"string"},{"indexed":false,"name":"_porgId","type":"string"},{"indexed":false,"name":"_ultParent","type":"string"},{"indexed":false,"name":"_level","type":"uint256"}],"name":"OrgSuspensionRevoked","type":"event"}] \ No newline at end of file diff --git a/permission/contract/gen/OrgManager.bin b/permission/contract/gen/OrgManager.bin index 993be5f58..4ae64fd5b 100644 --- a/permission/contract/gen/OrgManager.bin +++ b/permission/contract/gen/OrgManager.bin @@ -1 +1 @@ -60806040526001805460a060020a60ff021916905560046002819055600355600060065534801561002f57600080fd5b506040516020806133d18339810180604052602081101561004f57600080fd5b505160018054600160a060020a031916600160a060020a039092169190911790556133528061007f6000396000f3fe608060405234801561001057600080fd5b50600436106100b85760003560e060020a900480637755ebdd116100755780637755ebdd1461056d5780638c8642df146105755780639e58eb9f14610631578063e3028316146106a7578063f9953de514610717578063ffe40d1d14610787576100b8565b80630cc27493146100bd57806314f775f91461013f578063177c8d8a146101b15780631f95348014610296578063320d2c39146103585780635c4f32ee146103fe575b600080fd5b61012d600480360360408110156100d357600080fd5b8101906020810181356401000000008111156100ee57600080fd5b82018360208201111561010057600080fd5b8035906020019184600183028401116401000000008311171561012257600080fd5b91935091503561082d565b60408051918252519081900360200190f35b6101af6004803603604081101561015557600080fd5b81019060208101813564010000000081111561017057600080fd5b82018360208201111561018257600080fd5b803590602001918460018302840111640100000000831117156101a457600080fd5b919350915035610bd8565b005b610221600480360360208110156101c757600080fd5b8101906020810181356401000000008111156101e257600080fd5b8201836020820111156101f457600080fd5b8035906020019184600183028401116401000000008311171561021657600080fd5b509092509050610dcf565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561025b578181015183820152602001610243565b50505050905090810190601f1680156102885780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101af600480360360408110156102ac57600080fd5b8101906020810181356401000000008111156102c757600080fd5b8201836020820111156102d957600080fd5b803590602001918460018302840111640100000000831117156102fb57600080fd5b91939092909160208101903564010000000081111561031957600080fd5b82018360208201111561032b57600080fd5b8035906020019184600183028401116401000000008311171561034d57600080fd5b509092509050610f94565b61012d6004803603602081101561036e57600080fd5b81019060208101813564010000000081111561038957600080fd5b82018360208201111561039b57600080fd5b803590602001918460018302840111640100000000831117156103bd57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611198945050505050565b61041b6004803603602081101561041457600080fd5b5035611225565b60405180806020018060200180602001868152602001858152602001848103845289818151815260200191508051906020019080838360005b8381101561046c578181015183820152602001610454565b50505050905090810190601f1680156104995780820380516001836020036101000a031916815260200191505b5084810383528851815288516020918201918a019080838360005b838110156104cc5781810151838201526020016104b4565b50505050905090810190601f1680156104f95780820380516001836020036101000a031916815260200191505b50848103825287518152875160209182019189019080838360005b8381101561052c578181015183820152602001610514565b50505050905090810190601f1680156105595780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b61012d61149a565b61061d6004803603604081101561058b57600080fd5b8101906020810181356401000000008111156105a657600080fd5b8201836020820111156105b857600080fd5b803590602001918460018302840111640100000000831117156105da57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050913592506114a1915050565b604080519115158252519081900360200190f35b6101af6004803603606081101561064757600080fd5b81019060208101813564010000000081111561066257600080fd5b82018360208201111561067457600080fd5b8035906020019184600183028401116401000000008311171561069657600080fd5b919350915080359060200135611567565b6101af600480360360208110156106bd57600080fd5b8101906020810181356401000000008111156106d857600080fd5b8201836020820111156106ea57600080fd5b8035906020019184600183028401116401000000008311171561070c57600080fd5b50909250905061168a565b6101af6004803603602081101561072d57600080fd5b81019060208101813564010000000081111561074857600080fd5b82018360208201111561075a57600080fd5b8035906020019184600183028401116401000000008311171561077c57600080fd5b509092509050611a9a565b61061d6004803603602081101561079d57600080fd5b8101906020810181356401000000008111156107b857600080fd5b8201836020820111156107ca57600080fd5b803590602001918460018302840111640100000000831117156107ec57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611c4e945050505050565b600154604080517f0e32cf900000000000000000000000000000000000000000000000000000000081529051600092600160a060020a031691630e32cf90916004808301926020929190829003018186803b15801561088b57600080fd5b505afa15801561089f573d6000803e3d6000fd5b505050506040513d60208110156108b557600080fd5b5051600160a060020a03163314610904576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206132ac833981519152604482015290519081900360640190fd5b83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506109469250839150611c4e9050565b151560011461099f576040805160e560020a62461bcd02815260206004820152601260248201527f6f726720646f6573206e6f742065786973740000000000000000000000000000604482015290519081900360640190fd5b82600114806109ae5750826002145b15156109ee5760405160e560020a62461bcd0281526004018080602001828103825260258152602001806132606025913960400191505060405180910390fd5b6000610a2f86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061119892505050565b9050600481815481101515610a4057fe5b9060005260206000209060080201600601546001141515610a955760405160e560020a62461bcd0281526004018080602001828103825260278152602001806132856027913960400191505060405180910390fd5b6000808560011415610aac57506002905080610abd565b8560021415610abd57506004905060035b610afe88888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508692506114a1915050565b1515600114610b415760405160e560020a62461bcd0281526004018080602001828103825260278152602001806132cc6027913960400191505060405180910390fd5b8560011415610b8e57610b8988888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611cdc92505050565b610bcd565b610bcd88888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f9e92505050565b979650505050505050565b600160009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b158015610c2957600080fd5b505afa158015610c3d573d6000803e3d6000fd5b505050506040513d6020811015610c5357600080fd5b5051600160a060020a03163314610ca2576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206132ac833981519152604482015290519081900360640190fd5b82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610ce49250839150611c4e9050565b1515600114610d3d576040805160e560020a62461bcd02815260206004820152601260248201527f6f726720646f6573206e6f742065786973740000000000000000000000000000604482015290519081900360640190fd5b8160011415610d8a57610d8584848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061214b92505050565b610dc9565b610dc984848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061241192505050565b50505050565b600154604080517f0e32cf900000000000000000000000000000000000000000000000000000000081529051606092600160a060020a031691630e32cf90916004808301926020929190829003018186803b158015610e2d57600080fd5b505afa158015610e41573d6000803e3d6000fd5b505050506040513d6020811015610e5757600080fd5b5051600160a060020a03163314610ea6576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206132ac833981519152604482015290519081900360640190fd5b6004610ee784848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061119892505050565b81548110610ef157fe5b6000918252602091829020600460089092020101805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015610f875780601f10610f5c57610100808354040283529160200191610f87565b820191906000526020600020905b815481529060010190602001808311610f6a57829003601f168201915b5050505050905092915050565b600160009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b158015610fe557600080fd5b505afa158015610ff9573d6000803e3d6000fd5b505050506040513d602081101561100f57600080fd5b5051600160a060020a0316331461105e576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206132ac833981519152604482015290519081900360640190fd5b83838383604051602001808585808284377f2e00000000000000000000000000000000000000000000000000000000000000920191825250600101838380828437808301925050509450505050506040516020818303038152906040526110c481611c4e565b15611119576040805160e560020a62461bcd02815260206004820152600a60248201527f6f72672065786973747300000000000000000000000000000000000000000000604482015290519081900360640190fd5b61119185858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f89018190048102820181019092528781529250879150869081908401838280828437600092019190915250600292508291506124d89050565b5050505050565b6000600160056000846040516020018082805190602001908083835b602083106111d35780518252601f1990920191602091820191016111b4565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120815260200190815260200160002054039050919050565b606080606060008060048681548110151561123c57fe5b906000526020600020906008020160000160048781548110151561125c57fe5b906000526020600020906008020160020160048881548110151561127c57fe5b906000526020600020906008020160040160048981548110151561129c57fe5b90600052602060002090600802016006015460048a8154811015156112bd57fe5b906000526020600020906008020160010154848054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113645780601f1061133957610100808354040283529160200191611364565b820191906000526020600020905b81548152906001019060200180831161134757829003601f168201915b5050875460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959a50899450925084019050828280156113f25780601f106113c7576101008083540402835291602001916113f2565b820191906000526020600020905b8154815290600101906020018083116113d557829003601f168201915b5050865460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959950889450925084019050828280156114805780601f1061145557610100808354040283529160200191611480565b820191906000526020600020905b81548152906001019060200180831161146357829003601f168201915b505050505092509450945094509450945091939590929450565b6004545b90565b6000806114ad84611198565b905060056000856040516020018082805190602001908083835b602083106114e65780518252601f1990920191602091820191016114c7565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012081526020019081526020016000205460001415801561155f57508260048281548110151561154b57fe5b906000526020600020906008020160010154145b949350505050565b600160009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156115b857600080fd5b505afa1580156115cc573d6000803e3d6000fd5b505050506040513d60208110156115e257600080fd5b5051600160a060020a03163314611631576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206132ac833981519152604482015290519081900360640190fd5b6040805160208181018352600082528251601f87018290048202810182019093528583526116809290879087908190840183828082843760009201919091525060019250600291506124d89050565b6002556003555050565b600160009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156116db57600080fd5b505afa1580156116ef573d6000803e3d6000fd5b505050506040513d602081101561170557600080fd5b5051600160a060020a03163314611754576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206132ac833981519152604482015290519081900360640190fd5b61179682828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600192506114a1915050565b15156001146117ef576040805160e560020a62461bcd02815260206004820152601260248201527f6e6f7468696e6720746f20617070726f76650000000000000000000000000000604482015290519081900360640190fd5b600061183083838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061119892505050565b9050600260048281548110151561184357fe5b9060005260206000209060080201600101819055507fd705723a50859c9cc1d3953e10b8b9478820e7a62927ad3215897ed87b20591c60048281548110151561188857fe5b90600052602060002090600802016000016004838154811015156118a857fe5b90600052602060002090600802016002016004848154811015156118c857fe5b90600052602060002090600802016004016004858154811015156118e857fe5b9060005260206000209060080201600601546002604051808060200180602001806020018681526020018581526020018481038452898181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156119995780601f1061196e57610100808354040283529160200191611999565b820191906000526020600020905b81548152906001019060200180831161197c57829003601f168201915b5050848103835288546002600019610100600184161502019091160480825260209091019089908015611a0d5780601f106119e257610100808354040283529160200191611a0d565b820191906000526020600020905b8154815290600101906020018083116119f057829003601f168201915b5050848103825287546002600019610100600184161502019091160480825260209091019088908015611a815780601f10611a5657610100808354040283529160200191611a81565b820191906000526020600020905b815481529060010190602001808311611a6457829003601f168201915b50509850505050505050505060405180910390a1505050565b600160009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b158015611aeb57600080fd5b505afa158015611aff573d6000803e3d6000fd5b505050506040513d6020811015611b1557600080fd5b5051600160a060020a03163314611b64576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206132ac833981519152604482015290519081900360640190fd5b81818080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ba69250839150611c4e9050565b15611bfb576040805160e560020a62461bcd02815260206004820152600a60248201527f6f72672065786973747300000000000000000000000000000000000000000000604482015290519081900360640190fd5b6040805160208181018352600082528251601f8601829004820281018201909352848352611c4992908690869081908401838280828437600092019190915250600192508291506124d89050565b505050565b600060056000836040516020018082805190602001908083835b60208310611c875780518252601f199092019160209182019101611c68565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120815260200190815260200160002054600014159050919050565b611ce78160026114a1565b1515600114611d2a5760405160e560020a62461bcd0281526004018080602001828103825260348152602001806132f36034913960400191505060405180910390fd5b6000611d3582611198565b90506003600482815481101515611d4857fe5b9060005260206000209060080201600101819055507f0e8b7be64e0c730234ba2cd252b227fb481d7a247ba806d1941144c535bf054b600482815481101515611d8d57fe5b9060005260206000209060080201600001600483815481101515611dad57fe5b9060005260206000209060080201600201600484815481101515611dcd57fe5b9060005260206000209060080201600401600485815481101515611ded57fe5b906000526020600020906008020160060154600360405180806020018060200180602001868152602001858152602001848103845289818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015611e9e5780601f10611e7357610100808354040283529160200191611e9e565b820191906000526020600020905b815481529060010190602001808311611e8157829003601f168201915b5050848103835288546002600019610100600184161502019091160480825260209091019089908015611f125780601f10611ee757610100808354040283529160200191611f12565b820191906000526020600020905b815481529060010190602001808311611ef557829003601f168201915b5050848103825287546002600019610100600184161502019091160480825260209091019088908015611f865780601f10611f5b57610100808354040283529160200191611f86565b820191906000526020600020905b815481529060010190602001808311611f6957829003601f168201915b50509850505050505050505060405180910390a15050565b611fa98160046114a1565b1515600114612002576040805160e560020a62461bcd02815260206004820152601a60248201527f6f7267206e6f7420696e2073757370656e646564207374617465000000000000604482015290519081900360640190fd5b600061200d82611198565b9050600560048281548110151561202057fe5b9060005260206000209060080201600101819055507f0e8b7be64e0c730234ba2cd252b227fb481d7a247ba806d1941144c535bf054b60048281548110151561206557fe5b906000526020600020906008020160000160048381548110151561208557fe5b90600052602060002090600802016002016004848154811015156120a557fe5b90600052602060002090600802016004016004858154811015156120c557fe5b906000526020600020906008020160060154600560405180806020018060200180602001868152602001858152602001848103845289818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015611e9e5780601f10611e7357610100808354040283529160200191611e9e565b6121568160036114a1565b15156001146121af576040805160e560020a62461bcd02815260206004820152601260248201527f6e6f7468696e6720746f20617070726f76650000000000000000000000000000604482015290519081900360640190fd5b60006121ba82611198565b9050600480828154811015156121cc57fe5b9060005260206000209060080201600101819055507f73ccf8d6c8385bf5347269bd59712da33183c1a5e1702494bcdb87d0f4674d9660048281548110151561221157fe5b906000526020600020906008020160000160048381548110151561223157fe5b906000526020600020906008020160020160048481548110151561225157fe5b906000526020600020906008020160040160048581548110151561227157fe5b600091825260209182902060066008909202010154604080516060810183905260808082528754600260001961010060018416150201909116049082018190529293909283929183019183019060a0840190899080156123125780601f106122e757610100808354040283529160200191612312565b820191906000526020600020905b8154815290600101906020018083116122f557829003601f168201915b50508481038352875460026000196101006001841615020190911604808252602090910190889080156123865780601f1061235b57610100808354040283529160200191612386565b820191906000526020600020905b81548152906001019060200180831161236957829003601f168201915b50508481038252865460026000196101006001841615020190911604808252602090910190879080156123fa5780601f106123cf576101008083540402835291602001916123fa565b820191906000526020600020905b8154815290600101906020018083116123dd57829003601f168201915b505097505050505050505060405180910390a15050565b61241c8160056114a1565b1515600114612475576040805160e560020a62461bcd02815260206004820152601260248201527f6e6f7468696e6720746f20617070726f76650000000000000000000000000000604482015290519081900360640190fd5b600061248082611198565b9050600260048281548110151561249357fe5b9060005260206000209060080201600101819055507f882f030c609566cd82918a97d457fd48f9cfcefd11282e2654cde3f94579c15f60048281548110151561221157fe5b60008080600185141561255a57856040516020018082805190602001908083835b602083106125185780518252601f1990920191602091820191016124f9565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012091506126b2565b866040516020018082805190602001908083835b6020831061258d5780518252601f19909201916020918201910161256e565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120925086866040516020018083805190602001908083835b602083106125fe5780518252601f1990920191602091820191016125df565b6001836020036101000a038019825116818451168082178552505050505050905001807f2e0000000000000000000000000000000000000000000000000000000000000081525060010182805190602001908083835b602083106126735780518252601f199092019160209182019101612654565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040528051906020012091505b6006805460019081019182905560008481526005602052604081209290925560048054916126e291908301613026565b905085600114156127a757856004828154811015156126fd57fe5b906000526020600020906008020160060181905550600060048281548110151561272357fe5b9060005260206000209060080201600501819055508660048281548110151561274857fe5b9060005260206000209060080201600301908051906020019061276c929190613052565b508660048281548110151561277d57fe5b906000526020600020906008020160040190805190602001906127a1929190613052565b50612b04565b6000848152600560205260409020546003546004805460001990930194509091849081106127d157fe5b60009182526020909120600760089092020101541061283a576040805160e560020a62461bcd02815260206004820152601660248201527f62726561647468206c6576656c20657863656564656400000000000000000000604482015290519081900360640190fd5b600254600480548490811061284b57fe5b9060005260206000209060080201600601541015156128b4576040805160e560020a62461bcd02815260206004820152601460248201527f6465707468206c6576656c206578636565646564000000000000000000000000604482015290519081900360640190fd5b60048054839081106128c257fe5b9060005260206000209060080201600601546001016004828154811015156128e657fe5b9060005260206000209060080201600601819055508160048281548110151561290b57fe5b6000918252602090912060056008909202010155600480548390811061292d57fe5b906000526020600020906008020160040160048281548110151561294d57fe5b9060005260206000209060080201600401908054600181600116156101000203166002900461297d9291906130d0565b50600060048381548110151561298f57fe5b906000526020600020906008020160070180548091906001016129b29190613145565b9050816004848154811015156129c457fe5b9060005260206000209060080201600701828154811015156129e257fe5b906000526020600020018190555088886040516020018083805190602001908083835b60208310612a245780518252601f199092019160209182019101612a05565b6001836020036101000a038019825116818451168082178552505050505050905001807f2e0000000000000000000000000000000000000000000000000000000000000081525060010182805190602001908083835b60208310612a995780518252601f199092019160209182019101612a7a565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052600483815481101515612add57fe5b90600052602060002090600802016003019080519060200190612b01929190613052565b50505b86600482815481101515612b1457fe5b90600052602060002090600802016000019080519060200190612b38929190613052565b5087600482815481101515612b4957fe5b90600052602060002090600802016002019080519060200190612b6d929190613052565b5084600482815481101515612b7e57fe5b9060005260206000209060080201600101819055508460011415612dde577f0e8b7be64e0c730234ba2cd252b227fb481d7a247ba806d1941144c535bf054b600482815481101515612bcc57fe5b9060005260206000209060080201600001600483815481101515612bec57fe5b9060005260206000209060080201600201600484815481101515612c0c57fe5b9060005260206000209060080201600401600485815481101515612c2c57fe5b906000526020600020906008020160060154600160405180806020018060200180602001868152602001858152602001848103845289818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015612cdd5780601f10612cb257610100808354040283529160200191612cdd565b820191906000526020600020905b815481529060010190602001808311612cc057829003601f168201915b5050848103835288546002600019610100600184161502019091160480825260209091019089908015612d515780601f10612d2657610100808354040283529160200191612d51565b820191906000526020600020905b815481529060010190602001808311612d3457829003601f168201915b5050848103825287546002600019610100600184161502019091160480825260209091019088908015612dc55780601f10612d9a57610100808354040283529160200191612dc5565b820191906000526020600020905b815481529060010190602001808311612da857829003601f168201915b50509850505050505050505060405180910390a161301c565b7fd705723a50859c9cc1d3953e10b8b9478820e7a62927ad3215897ed87b20591c600482815481101515612e0e57fe5b9060005260206000209060080201600001600483815481101515612e2e57fe5b9060005260206000209060080201600201600484815481101515612e4e57fe5b9060005260206000209060080201600401600485815481101515612e6e57fe5b906000526020600020906008020160060154600260405180806020018060200180602001868152602001858152602001848103845289818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015612f1f5780601f10612ef457610100808354040283529160200191612f1f565b820191906000526020600020905b815481529060010190602001808311612f0257829003601f168201915b5050848103835288546002600019610100600184161502019091160480825260209091019089908015612f935780601f10612f6857610100808354040283529160200191612f93565b820191906000526020600020905b815481529060010190602001808311612f7657829003601f168201915b50508481038252875460026000196101006001841615020190911604808252602090910190889080156130075780601f10612fdc57610100808354040283529160200191613007565b820191906000526020600020905b815481529060010190602001808311612fea57829003601f168201915b50509850505050505050505060405180910390a15b5050505050505050565b815481835581811115611c4957600802816008028360005260206000209182019101611c499190613169565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061309357805160ff19168380011785556130c0565b828001600101855582156130c0579182015b828111156130c05782518255916020019190600101906130a5565b506130cc9291506131e0565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061310957805485556130c0565b828001600101855582156130c057600052602060002091601f016020900482015b828111156130c057825482559160010191906001019061312a565b815481835581811115611c4957600083815260209020611c499181019083016131e0565b61149e91905b808211156130cc57600061318382826131fa565b600182016000905560028201600061319b91906131fa565b6131a96003830160006131fa565b6131b76004830160006131fa565b600582016000905560068201600090556007820160006131d79190613241565b5060080161316f565b61149e91905b808211156130cc57600081556001016131e6565b50805460018160011615610100020316600290046000825580601f10613220575061323e565b601f01602090049060005260206000209081019061323e91906131e0565b50565b508054600082559060005260206000209081019061323e91906131e056fe696e76616c696420616374696f6e2e206f7065726174696f6e206e6f7420616c6c6f7765646e6f742061206d6173746572206f72672e206f7065726174696f6e206e6f7420616c6c6f776564696e76616c69642063616c6c65720000000000000000000000000000000000006f72672073746174757320646f6573206e6f7420616c6c6f7720746865206f7065726174696f6e6f7267206e6f7420696e20617070726f766564207374617475732e206f7065726174696f6e2063616e6e6f7420626520646f6e65a165627a7a723058203b2b8769881d26946728f07f7714a49fa6ac1429f95775815420baa4a6cc26260029 \ No newline at end of file +60806040526001805460a060020a60ff021916905560046002819055600355600060065534801561002f57600080fd5b506040516020806139c78339810180604052602081101561004f57600080fd5b505160018054600160a060020a031916600160a060020a039092169190911790556139488061007f6000396000f3fe608060405234801561001057600080fd5b50600436106100d35760003560e060020a900480637755ebdd11610090578063e30283161161006a578063e3028316146106dc578063f4d6d9f51461074c578063f9953de5146107bc578063ffe40d1d1461082c576100d3565b80637755ebdd146105a25780638c8642df146105aa5780639e58eb9f14610666576100d3565b80630cc27493146100d857806314f775f91461015a578063177c8d8a146101cc5780631f953480146102b15780635c4f32ee146103735780635e99f6e5146104e2575b600080fd5b610148600480360360408110156100ee57600080fd5b81019060208101813564010000000081111561010957600080fd5b82018360208201111561011b57600080fd5b8035906020019184600183028401116401000000008311171561013d57600080fd5b9193509150356108d2565b60408051918252519081900360200190f35b6101ca6004803603604081101561017057600080fd5b81019060208101813564010000000081111561018b57600080fd5b82018360208201111561019d57600080fd5b803590602001918460018302840111640100000000831117156101bf57600080fd5b919350915035610c7d565b005b61023c600480360360208110156101e257600080fd5b8101906020810181356401000000008111156101fd57600080fd5b82018360208201111561020f57600080fd5b8035906020019184600183028401116401000000008311171561023157600080fd5b509092509050610e74565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561027657818101518382015260200161025e565b50505050905090810190601f1680156102a35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101ca600480360360408110156102c757600080fd5b8101906020810181356401000000008111156102e257600080fd5b8201836020820111156102f457600080fd5b8035906020019184600183028401116401000000008311171561031657600080fd5b91939092909160208101903564010000000081111561033457600080fd5b82018360208201111561034657600080fd5b8035906020019184600183028401116401000000008311171561036857600080fd5b50909250905061103a565b6103906004803603602081101561038957600080fd5b503561123e565b60405180806020018060200180602001868152602001858152602001848103845289818151815260200191508051906020019080838360005b838110156103e15781810151838201526020016103c9565b50505050905090810190601f16801561040e5780820380516001836020036101000a031916815260200191505b5084810383528851815288516020918201918a019080838360005b83811015610441578181015183820152602001610429565b50505050905090810190601f16801561046e5780820380516001836020036101000a031916815260200191505b50848103825287518152875160209182019189019080838360005b838110156104a1578181015183820152602001610489565b50505050905090810190601f1680156104ce5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b610552600480360360208110156104f857600080fd5b81019060208101813564010000000081111561051357600080fd5b82018360208201111561052557600080fd5b8035906020019184600183028401116401000000008311171561054757600080fd5b5090925090506114b3565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561058e578181015183820152602001610576565b505050509050019250505060405180910390f35b610148611608565b610652600480360360408110156105c057600080fd5b8101906020810181356401000000008111156105db57600080fd5b8201836020820111156105ed57600080fd5b8035906020019184600183028401116401000000008311171561060f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550509135925061160f915050565b604080519115158252519081900360200190f35b6101ca6004803603606081101561067c57600080fd5b81019060208101813564010000000081111561069757600080fd5b8201836020820111156106a957600080fd5b803590602001918460018302840111640100000000831117156106cb57600080fd5b919350915080359060200135611767565b6101ca600480360360208110156106f257600080fd5b81019060208101813564010000000081111561070d57600080fd5b82018360208201111561071f57600080fd5b8035906020019184600183028401116401000000008311171561074157600080fd5b50909250905061188a565b6103906004803603602081101561076257600080fd5b81019060208101813564010000000081111561077d57600080fd5b82018360208201111561078f57600080fd5b803590602001918460018302840111640100000000831117156107b157600080fd5b509092509050611c9a565b6101ca600480360360208110156107d257600080fd5b8101906020810181356401000000008111156107ed57600080fd5b8201836020820111156107ff57600080fd5b8035906020019184600183028401116401000000008311171561082157600080fd5b509092509050612003565b6106526004803603602081101561084257600080fd5b81019060208101813564010000000081111561085d57600080fd5b82018360208201111561086f57600080fd5b8035906020019184600183028401116401000000008311171561089157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506121b7945050505050565b600154604080517f0e32cf900000000000000000000000000000000000000000000000000000000081529051600092600160a060020a031691630e32cf90916004808301926020929190829003018186803b15801561093057600080fd5b505afa158015610944573d6000803e3d6000fd5b505050506040513d602081101561095a57600080fd5b5051600160a060020a031633146109a9576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a2833981519152604482015290519081900360640190fd5b83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506109eb92508391506121b79050565b1515600114610a44576040805160e560020a62461bcd02815260206004820152601260248201527f6f726720646f6573206e6f742065786973740000000000000000000000000000604482015290519081900360640190fd5b8260011480610a535750826002145b1515610a935760405160e560020a62461bcd0281526004018080602001828103825260258152602001806138566025913960400191505060405180910390fd5b6000610ad486868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061224592505050565b9050600481815481101515610ae557fe5b9060005260206000209060080201600601546001141515610b3a5760405160e560020a62461bcd02815260040180806020018281038252602781526020018061387b6027913960400191505060405180910390fd5b6000808560011415610b5157506002905080610b62565b8560021415610b6257506004905060035b610ba388888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525086925061160f915050565b1515600114610be65760405160e560020a62461bcd0281526004018080602001828103825260278152602001806138c26027913960400191505060405180910390fd5b8560011415610c3357610c2e88888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506122d292505050565b610c72565b610c7288888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061259492505050565b979650505050505050565b600160009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b158015610cce57600080fd5b505afa158015610ce2573d6000803e3d6000fd5b505050506040513d6020811015610cf857600080fd5b5051600160a060020a03163314610d47576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a2833981519152604482015290519081900360640190fd5b82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610d8992508391506121b79050565b1515600114610de2576040805160e560020a62461bcd02815260206004820152601260248201527f6f726720646f6573206e6f742065786973740000000000000000000000000000604482015290519081900360640190fd5b8160011415610e2f57610e2a84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061274192505050565b610e6e565b610e6e84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612a0792505050565b50505050565b600154604080517f0e32cf900000000000000000000000000000000000000000000000000000000081529051606092600160a060020a031691630e32cf90916004808301926020929190829003018186803b158015610ed257600080fd5b505afa158015610ee6573d6000803e3d6000fd5b505050506040513d6020811015610efc57600080fd5b5051600160a060020a03163314610f4b576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a2833981519152604482015290519081900360640190fd5b6004610f8c84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061224592505050565b81548110610f9657fe5b6000918252602091829020600460089092020101805460408051601f600260001961010060018716150201909416939093049283018590048502810185019091528181529283018282801561102c5780601f106110015761010080835404028352916020019161102c565b820191906000526020600020905b81548152906001019060200180831161100f57829003601f168201915b505050505090505b92915050565b600160009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561108b57600080fd5b505afa15801561109f573d6000803e3d6000fd5b505050506040513d60208110156110b557600080fd5b5051600160a060020a03163314611104576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a2833981519152604482015290519081900360640190fd5b83838383604051602001808585808284377f2e000000000000000000000000000000000000000000000000000000000000009201918252506001018383808284378083019250505094505050505060405160208183030381529060405261116a816121b7565b156111bf576040805160e560020a62461bcd02815260206004820152600a60248201527f6f72672065786973747300000000000000000000000000000000000000000000604482015290519081900360640190fd5b61123785858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8901819004810282018101909252878152925087915086908190840183828082843760009201919091525060029250829150612ace9050565b5050505050565b606080606060008060048681548110151561125557fe5b906000526020600020906008020160000160048781548110151561127557fe5b906000526020600020906008020160020160048881548110151561129557fe5b90600052602060002090600802016004016004898154811015156112b557fe5b90600052602060002090600802016006015460048a8154811015156112d657fe5b906000526020600020906008020160010154848054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561137d5780601f106113525761010080835404028352916020019161137d565b820191906000526020600020905b81548152906001019060200180831161136057829003601f168201915b5050875460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959a508994509250840190508282801561140b5780601f106113e05761010080835404028352916020019161140b565b820191906000526020600020905b8154815290600101906020018083116113ee57829003601f168201915b5050865460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959950889450925084019050828280156114995780601f1061146e57610100808354040283529160200191611499565b820191906000526020600020905b81548152906001019060200180831161147c57829003601f168201915b505050505092509450945094509450945091939590929450565b60606114f483838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506121b792505050565b151560011461154d576040805160e560020a62461bcd02815260206004820152601260248201527f6f726720646f6573206e6f742065786973740000000000000000000000000000604482015290519081900360640190fd5b600061158e84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061224592505050565b905060048181548110151561159f57fe5b90600052602060002090600802016007018054806020026020016040519081016040528092919081815260200182805480156115fa57602002820191906000526020600020905b8154815260200190600101908083116115e6575b505050505091505092915050565b6004545b90565b600060056000846040516020018082805190602001908083835b602083106116485780518252601f199092019160209182019101611629565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120815260200190815260200160002054600014156116a257506000611034565b60006116ad84612245565b905060056000856040516020018082805190602001908083835b602083106116e65780518252601f1990920191602091820191016116c7565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012081526020019081526020016000205460001415801561175f57508260048281548110151561174b57fe5b906000526020600020906008020160010154145b949350505050565b600160009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156117b857600080fd5b505afa1580156117cc573d6000803e3d6000fd5b505050506040513d60208110156117e257600080fd5b5051600160a060020a03163314611831576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a2833981519152604482015290519081900360640190fd5b6040805160208181018352600082528251601f8701829004820281018201909352858352611880929087908790819084018382808284376000920191909152506001925060029150612ace9050565b6002556003555050565b600160009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156118db57600080fd5b505afa1580156118ef573d6000803e3d6000fd5b505050506040513d602081101561190557600080fd5b5051600160a060020a03163314611954576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a2833981519152604482015290519081900360640190fd5b61199682828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061160f915050565b15156001146119ef576040805160e560020a62461bcd02815260206004820152601260248201527f6e6f7468696e6720746f20617070726f76650000000000000000000000000000604482015290519081900360640190fd5b6000611a3083838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061224592505050565b90506002600482815481101515611a4357fe5b9060005260206000209060080201600101819055507fd705723a50859c9cc1d3953e10b8b9478820e7a62927ad3215897ed87b20591c600482815481101515611a8857fe5b9060005260206000209060080201600001600483815481101515611aa857fe5b9060005260206000209060080201600201600484815481101515611ac857fe5b9060005260206000209060080201600401600485815481101515611ae857fe5b906000526020600020906008020160060154600260405180806020018060200180602001868152602001858152602001848103845289818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015611b995780601f10611b6e57610100808354040283529160200191611b99565b820191906000526020600020905b815481529060010190602001808311611b7c57829003601f168201915b5050848103835288546002600019610100600184161502019091160480825260209091019089908015611c0d5780601f10611be257610100808354040283529160200191611c0d565b820191906000526020600020905b815481529060010190602001808311611bf057829003601f168201915b5050848103825287546002600019610100600184161502019091160480825260209091019088908015611c815780601f10611c5657610100808354040283529160200191611c81565b820191906000526020600020905b815481529060010190602001808311611c6457829003601f168201915b50509850505050505050505060405180910390a1505050565b6060806060600080611ce187878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506121b792505050565b1515611d5057868660008083838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602081810183528382528251908101909252918152949d509b50929950939750919550611ff9945050505050565b6000611d9188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061224592505050565b9050600481815481101515611da257fe5b9060005260206000209060080201600001600482815481101515611dc257fe5b9060005260206000209060080201600201600483815481101515611de257fe5b9060005260206000209060080201600401600484815481101515611e0257fe5b906000526020600020906008020160060154600485815481101515611e2357fe5b906000526020600020906008020160010154848054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611eca5780601f10611e9f57610100808354040283529160200191611eca565b820191906000526020600020905b815481529060010190602001808311611ead57829003601f168201915b5050875460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959a5089945092508401905082828015611f585780601f10611f2d57610100808354040283529160200191611f58565b820191906000526020600020905b815481529060010190602001808311611f3b57829003601f168201915b5050865460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815295995088945092508401905082828015611fe65780601f10611fbb57610100808354040283529160200191611fe6565b820191906000526020600020905b815481529060010190602001808311611fc957829003601f168201915b5050505050925095509550955095509550505b9295509295909350565b600160009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561205457600080fd5b505afa158015612068573d6000803e3d6000fd5b505050506040513d602081101561207e57600080fd5b5051600160a060020a031633146120cd576040805160e560020a62461bcd02815260206004820152600e60248201526000805160206138a2833981519152604482015290519081900360640190fd5b81818080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061210f92508391506121b79050565b15612164576040805160e560020a62461bcd02815260206004820152600a60248201527f6f72672065786973747300000000000000000000000000000000000000000000604482015290519081900360640190fd5b6040805160208181018352600082528251601f86018290048202810182019093528483526121b29290869086908190840183828082843760009201919091525060019250829150612ace9050565b505050565b600060056000836040516020018082805190602001908083835b602083106121f05780518252601f1990920191602091820191016121d1565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120815260200190815260200160002054600014159050919050565b6000600160056000846040516020018082805190602001908083835b602083106122805780518252601f199092019160209182019101612261565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120815260200190815260200160002054039050919050565b6122dd81600261160f565b15156001146123205760405160e560020a62461bcd0281526004018080602001828103825260348152602001806138e96034913960400191505060405180910390fd5b600061232b82612245565b9050600360048281548110151561233e57fe5b9060005260206000209060080201600101819055507f0e8b7be64e0c730234ba2cd252b227fb481d7a247ba806d1941144c535bf054b60048281548110151561238357fe5b90600052602060002090600802016000016004838154811015156123a357fe5b90600052602060002090600802016002016004848154811015156123c357fe5b90600052602060002090600802016004016004858154811015156123e357fe5b9060005260206000209060080201600601546003604051808060200180602001806020018681526020018581526020018481038452898181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156124945780601f1061246957610100808354040283529160200191612494565b820191906000526020600020905b81548152906001019060200180831161247757829003601f168201915b50508481038352885460026000196101006001841615020190911604808252602090910190899080156125085780601f106124dd57610100808354040283529160200191612508565b820191906000526020600020905b8154815290600101906020018083116124eb57829003601f168201915b505084810382528754600260001961010060018416150201909116048082526020909101908890801561257c5780601f106125515761010080835404028352916020019161257c565b820191906000526020600020905b81548152906001019060200180831161255f57829003601f168201915b50509850505050505050505060405180910390a15050565b61259f81600461160f565b15156001146125f8576040805160e560020a62461bcd02815260206004820152601a60248201527f6f7267206e6f7420696e2073757370656e646564207374617465000000000000604482015290519081900360640190fd5b600061260382612245565b9050600560048281548110151561261657fe5b9060005260206000209060080201600101819055507f0e8b7be64e0c730234ba2cd252b227fb481d7a247ba806d1941144c535bf054b60048281548110151561265b57fe5b906000526020600020906008020160000160048381548110151561267b57fe5b906000526020600020906008020160020160048481548110151561269b57fe5b90600052602060002090600802016004016004858154811015156126bb57fe5b9060005260206000209060080201600601546005604051808060200180602001806020018681526020018581526020018481038452898181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156124945780601f1061246957610100808354040283529160200191612494565b61274c81600361160f565b15156001146127a5576040805160e560020a62461bcd02815260206004820152601260248201527f6e6f7468696e6720746f20617070726f76650000000000000000000000000000604482015290519081900360640190fd5b60006127b082612245565b9050600480828154811015156127c257fe5b9060005260206000209060080201600101819055507f73ccf8d6c8385bf5347269bd59712da33183c1a5e1702494bcdb87d0f4674d9660048281548110151561280757fe5b906000526020600020906008020160000160048381548110151561282757fe5b906000526020600020906008020160020160048481548110151561284757fe5b906000526020600020906008020160040160048581548110151561286757fe5b600091825260209182902060066008909202010154604080516060810183905260808082528754600260001961010060018416150201909116049082018190529293909283929183019183019060a0840190899080156129085780601f106128dd57610100808354040283529160200191612908565b820191906000526020600020905b8154815290600101906020018083116128eb57829003601f168201915b505084810383528754600260001961010060018416150201909116048082526020909101908890801561297c5780601f106129515761010080835404028352916020019161297c565b820191906000526020600020905b81548152906001019060200180831161295f57829003601f168201915b50508481038252865460026000196101006001841615020190911604808252602090910190879080156129f05780601f106129c5576101008083540402835291602001916129f0565b820191906000526020600020905b8154815290600101906020018083116129d357829003601f168201915b505097505050505050505060405180910390a15050565b612a1281600561160f565b1515600114612a6b576040805160e560020a62461bcd02815260206004820152601260248201527f6e6f7468696e6720746f20617070726f76650000000000000000000000000000604482015290519081900360640190fd5b6000612a7682612245565b90506002600482815481101515612a8957fe5b9060005260206000209060080201600101819055507f882f030c609566cd82918a97d457fd48f9cfcefd11282e2654cde3f94579c15f60048281548110151561280757fe5b600080806001851415612b5057856040516020018082805190602001908083835b60208310612b0e5780518252601f199092019160209182019101612aef565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052805190602001209150612ca8565b866040516020018082805190602001908083835b60208310612b835780518252601f199092019160209182019101612b64565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120925086866040516020018083805190602001908083835b60208310612bf45780518252601f199092019160209182019101612bd5565b6001836020036101000a038019825116818451168082178552505050505050905001807f2e0000000000000000000000000000000000000000000000000000000000000081525060010182805190602001908083835b60208310612c695780518252601f199092019160209182019101612c4a565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040528051906020012091505b600680546001908101918290556000848152600560205260408120929092556004805491612cd89190830161361c565b90508560011415612d9d5785600482815481101515612cf357fe5b9060005260206000209060080201600601819055506000600482815481101515612d1957fe5b90600052602060002090600802016005018190555086600482815481101515612d3e57fe5b90600052602060002090600802016003019080519060200190612d62929190613648565b5086600482815481101515612d7357fe5b90600052602060002090600802016004019080519060200190612d97929190613648565b506130fa565b600084815260056020526040902054600354600480546000199093019450909184908110612dc757fe5b600091825260209091206007600890920201015410612e30576040805160e560020a62461bcd02815260206004820152601660248201527f62726561647468206c6576656c20657863656564656400000000000000000000604482015290519081900360640190fd5b6002546004805484908110612e4157fe5b906000526020600020906008020160060154101515612eaa576040805160e560020a62461bcd02815260206004820152601460248201527f6465707468206c6576656c206578636565646564000000000000000000000000604482015290519081900360640190fd5b6004805483908110612eb857fe5b906000526020600020906008020160060154600101600482815481101515612edc57fe5b90600052602060002090600802016006018190555081600482815481101515612f0157fe5b60009182526020909120600560089092020101556004805483908110612f2357fe5b9060005260206000209060080201600401600482815481101515612f4357fe5b90600052602060002090600802016004019080546001816001161561010002031660029004612f739291906136c6565b506000600483815481101515612f8557fe5b90600052602060002090600802016007018054809190600101612fa8919061373b565b905081600484815481101515612fba57fe5b906000526020600020906008020160070182815481101515612fd857fe5b906000526020600020018190555088886040516020018083805190602001908083835b6020831061301a5780518252601f199092019160209182019101612ffb565b6001836020036101000a038019825116818451168082178552505050505050905001807f2e0000000000000000000000000000000000000000000000000000000000000081525060010182805190602001908083835b6020831061308f5780518252601f199092019160209182019101613070565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526004838154811015156130d357fe5b906000526020600020906008020160030190805190602001906130f7929190613648565b50505b8660048281548110151561310a57fe5b9060005260206000209060080201600001908051906020019061312e929190613648565b508760048281548110151561313f57fe5b90600052602060002090600802016002019080519060200190613163929190613648565b508460048281548110151561317457fe5b90600052602060002090600802016001018190555084600114156133d4577f0e8b7be64e0c730234ba2cd252b227fb481d7a247ba806d1941144c535bf054b6004828154811015156131c257fe5b90600052602060002090600802016000016004838154811015156131e257fe5b906000526020600020906008020160020160048481548110151561320257fe5b906000526020600020906008020160040160048581548110151561322257fe5b9060005260206000209060080201600601546001604051808060200180602001806020018681526020018581526020018481038452898181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156132d35780601f106132a8576101008083540402835291602001916132d3565b820191906000526020600020905b8154815290600101906020018083116132b657829003601f168201915b50508481038352885460026000196101006001841615020190911604808252602090910190899080156133475780601f1061331c57610100808354040283529160200191613347565b820191906000526020600020905b81548152906001019060200180831161332a57829003601f168201915b50508481038252875460026000196101006001841615020190911604808252602090910190889080156133bb5780601f10613390576101008083540402835291602001916133bb565b820191906000526020600020905b81548152906001019060200180831161339e57829003601f168201915b50509850505050505050505060405180910390a1613612565b7fd705723a50859c9cc1d3953e10b8b9478820e7a62927ad3215897ed87b20591c60048281548110151561340457fe5b906000526020600020906008020160000160048381548110151561342457fe5b906000526020600020906008020160020160048481548110151561344457fe5b906000526020600020906008020160040160048581548110151561346457fe5b9060005260206000209060080201600601546002604051808060200180602001806020018681526020018581526020018481038452898181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156135155780601f106134ea57610100808354040283529160200191613515565b820191906000526020600020905b8154815290600101906020018083116134f857829003601f168201915b50508481038352885460026000196101006001841615020190911604808252602090910190899080156135895780601f1061355e57610100808354040283529160200191613589565b820191906000526020600020905b81548152906001019060200180831161356c57829003601f168201915b50508481038252875460026000196101006001841615020190911604808252602090910190889080156135fd5780601f106135d2576101008083540402835291602001916135fd565b820191906000526020600020905b8154815290600101906020018083116135e057829003601f168201915b50509850505050505050505060405180910390a15b5050505050505050565b8154818355818111156121b2576008028160080283600052602060002091820191016121b2919061375f565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061368957805160ff19168380011785556136b6565b828001600101855582156136b6579182015b828111156136b657825182559160200191906001019061369b565b506136c29291506137d6565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106136ff57805485556136b6565b828001600101855582156136b657600052602060002091601f016020900482015b828111156136b6578254825591600101919060010190613720565b8154818355818111156121b2576000838152602090206121b29181019083016137d6565b61160c91905b808211156136c257600061377982826137f0565b600182016000905560028201600061379191906137f0565b61379f6003830160006137f0565b6137ad6004830160006137f0565b600582016000905560068201600090556007820160006137cd9190613837565b50600801613765565b61160c91905b808211156136c257600081556001016137dc565b50805460018160011615610100020316600290046000825580601f106138165750613834565b601f01602090049060005260206000209081019061383491906137d6565b50565b508054600082559060005260206000209081019061383491906137d656fe696e76616c696420616374696f6e2e206f7065726174696f6e206e6f7420616c6c6f7765646e6f742061206d6173746572206f72672e206f7065726174696f6e206e6f7420616c6c6f776564696e76616c69642063616c6c65720000000000000000000000000000000000006f72672073746174757320646f6573206e6f7420616c6c6f7720746865206f7065726174696f6e6f7267206e6f7420696e20617070726f766564207374617475732e206f7065726174696f6e2063616e6e6f7420626520646f6e65a165627a7a7230582095292109a21e643d36753da64a1264f306e4f58969f791397d752271faaea41f0029 \ No newline at end of file diff --git a/permission/contract/gen/PermissionsImplementation.bin b/permission/contract/gen/PermissionsImplementation.bin index e9b7138c3..eeda5e7b1 100644 --- a/permission/contract/gen/PermissionsImplementation.bin +++ b/permission/contract/gen/PermissionsImplementation.bin @@ -1 +1 @@ -60806040526003600955600a805460ff191690553480156200002057600080fd5b5060405160c08062007532833981018060405260c08110156200004257600080fd5b508051602082015160408301516060840151608085015160a09095015160058054600160a060020a03968716600160a060020a031991821617909155600480549587169582169590951790945560018054938616938516939093179092556000805491851691841691909117905560028054948416948316949094179093556003805492909316911617905561745480620000de6000396000f3fe608060405234801561001057600080fd5b50600436106101d35760003560e060020a90048063655a8ef511610108578063b5546564116100a6578063dbfad71111610075578063dbfad7111461119a578063f346a3a714611267578063f5ad584a146113d3578063f922f802146114e3576101d3565b8063b554656414610edc578063c3dc8e0914610f59578063cc9ba6fa14611020578063d1aa0c2014611174576101d3565b80638baa8191116100e25780638baa819114610baa5780639bd3810114610cee578063a5843f0814610da2578063a64d286014610dc5576101d3565b8063655a8ef5146109b05780636b568d7614610a775780638884304114610b2b576101d3565b8063404bf3eb116101755780634cbfa82e1161014f5780634cbfa82e146107f45780634fe57e7a146107fc57806359a260a3146108225780635ca5adbe146108e9576101d3565b8063404bf3eb1461068557806344478e79146107595780634b20f45f14610775576101d3565b80631c249912116101b15780631c2499121461044c5780633bc07dea146104cb5780633cf5f33b1461059a5780633f25c28814610617576101d3565b806304e81f1e146101d85780631b04c276146102615780631b6102201461033e575b600080fd5b61025f600480360360808110156101ee57600080fd5b810190602081018135602060020a81111561020857600080fd5b82018360208201111561021a57600080fd5b803590602001918460018302840111602060020a8311171561023b57600080fd5b9193509150600160a060020a038135811691602081013591604090910135166115b2565b005b61025f600480360360c081101561027757600080fd5b810190602081018135602060020a81111561029157600080fd5b8201836020820111156102a357600080fd5b803590602001918460018302840111602060020a831117156102c457600080fd5b919390929091602081019035602060020a8111156102e157600080fd5b8201836020820111156102f357600080fd5b803590602001918460018302840111602060020a8311171561031457600080fd5b91935091508035906020810135151590604081013515159060600135600160a060020a031661181e565b61025f6004803603606081101561035457600080fd5b810190602081018135602060020a81111561036e57600080fd5b82018360208201111561038057600080fd5b803590602001918460018302840111602060020a831117156103a157600080fd5b919390929091602081019035602060020a8111156103be57600080fd5b8201836020820111156103d057600080fd5b803590602001918460018302840111602060020a831117156103f157600080fd5b919390929091602081019035602060020a81111561040e57600080fd5b82018360208201111561042057600080fd5b803590602001918460018302840111602060020a8311171561044157600080fd5b509092509050611af9565b61025f6004803603606081101561046257600080fd5b810190602081018135602060020a81111561047c57600080fd5b82018360208201111561048e57600080fd5b803590602001918460018302840111602060020a831117156104af57600080fd5b9193509150600160a060020a0381358116916020013516611c3b565b61025f600480360360808110156104e157600080fd5b810190602081018135602060020a8111156104fb57600080fd5b82018360208201111561050d57600080fd5b803590602001918460018302840111602060020a8311171561052e57600080fd5b919390929091602081019035602060020a81111561054b57600080fd5b82018360208201111561055d57600080fd5b803590602001918460018302840111602060020a8311171561057e57600080fd5b9193509150600160a060020a0381358116916020013516611f53565b61025f600480360360608110156105b057600080fd5b810190602081018135602060020a8111156105ca57600080fd5b8201836020820111156105dc57600080fd5b803590602001918460018302840111602060020a831117156105fd57600080fd5b919350915080359060200135600160a060020a0316612534565b61025f6004803603602081101561062d57600080fd5b810190602081018135602060020a81111561064757600080fd5b82018360208201111561065957600080fd5b803590602001918460018302840111602060020a8311171561067a57600080fd5b509092509050612855565b61025f6004803603608081101561069b57600080fd5b810190602081018135602060020a8111156106b557600080fd5b8201836020820111156106c757600080fd5b803590602001918460018302840111602060020a831117156106e857600080fd5b91939092600160a060020a0383351692604081019060200135602060020a81111561071257600080fd5b82018360208201111561072457600080fd5b803590602001918460018302840111602060020a8311171561074557600080fd5b919350915035600160a060020a0316612a82565b610761612e62565b604080519115158252519081900360200190f35b61025f6004803603606081101561078b57600080fd5b810190602081018135602060020a8111156107a557600080fd5b8201836020820111156107b757600080fd5b803590602001918460018302840111602060020a831117156107d857600080fd5b9193509150600160a060020a0381358116916020013516612f9a565b6107616131fc565b61025f6004803603602081101561081257600080fd5b5035600160a060020a0316613206565b61025f6004803603606081101561083857600080fd5b810190602081018135602060020a81111561085257600080fd5b82018360208201111561086457600080fd5b803590602001918460018302840111602060020a8311171561088557600080fd5b919390929091602081019035602060020a8111156108a257600080fd5b8201836020820111156108b457600080fd5b803590602001918460018302840111602060020a831117156108d557600080fd5b919350915035600160a060020a0316613540565b61025f600480360360608110156108ff57600080fd5b810190602081018135602060020a81111561091957600080fd5b82018360208201111561092b57600080fd5b803590602001918460018302840111602060020a8311171561094c57600080fd5b919390929091602081019035602060020a81111561096957600080fd5b82018360208201111561097b57600080fd5b803590602001918460018302840111602060020a8311171561099c57600080fd5b919350915035600160a060020a03166137d5565b61025f600480360360608110156109c657600080fd5b810190602081018135602060020a8111156109e057600080fd5b8201836020820111156109f257600080fd5b803590602001918460018302840111602060020a83111715610a1357600080fd5b919390929091602081019035602060020a811115610a3057600080fd5b820183602082011115610a4257600080fd5b803590602001918460018302840111602060020a83111715610a6357600080fd5b919350915035600160a060020a0316613cb0565b61076160048036036040811015610a8d57600080fd5b600160a060020a038235169190810190604081016020820135602060020a811115610ab757600080fd5b820183602082011115610ac957600080fd5b803590602001918460018302840111602060020a83111715610aea57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550613f2d945050505050565b61025f60048036036060811015610b4157600080fd5b810190602081018135602060020a811115610b5b57600080fd5b820183602082011115610b6d57600080fd5b803590602001918460018302840111602060020a83111715610b8e57600080fd5b9193509150600160a060020a0381358116916020013516614031565b61025f60048036036080811015610bc057600080fd5b600160a060020a038235169190810190604081016020820135602060020a811115610bea57600080fd5b820183602082011115610bfc57600080fd5b803590602001918460018302840111602060020a83111715610c1d57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a811115610c6f57600080fd5b820183602082011115610c8157600080fd5b803590602001918460018302840111602060020a83111715610ca257600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050509035600160a060020a031691506144b59050565b61076160048036036040811015610d0457600080fd5b600160a060020a038235169190810190604081016020820135602060020a811115610d2e57600080fd5b820183602082011115610d4057600080fd5b803590602001918460018302840111602060020a83111715610d6157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506149df945050505050565b61025f60048036036040811015610db857600080fd5b5080359060200135614db3565b61025f60048036036080811015610ddb57600080fd5b810190602081018135602060020a811115610df557600080fd5b820183602082011115610e0757600080fd5b803590602001918460018302840111602060020a83111715610e2857600080fd5b919390929091602081019035602060020a811115610e4557600080fd5b820183602082011115610e5757600080fd5b803590602001918460018302840111602060020a83111715610e7857600080fd5b919390929091602081019035602060020a811115610e9557600080fd5b820183602082011115610ea757600080fd5b803590602001918460018302840111602060020a83111715610ec857600080fd5b919350915035600160a060020a03166152b3565b61025f60048036036060811015610ef257600080fd5b810190602081018135602060020a811115610f0c57600080fd5b820183602082011115610f1e57600080fd5b803590602001918460018302840111602060020a83111715610f3f57600080fd5b919350915080359060200135600160a060020a03166156d8565b61025f60048036036060811015610f6f57600080fd5b810190602081018135602060020a811115610f8957600080fd5b820183602082011115610f9b57600080fd5b803590602001918460018302840111602060020a83111715610fbc57600080fd5b919390929091602081019035602060020a811115610fd957600080fd5b820183602082011115610feb57600080fd5b803590602001918460018302840111602060020a8311171561100c57600080fd5b919350915035600160a060020a0316615a4a565b611028615d7f565b604080518215156060820152608080825286519082015285519091829160208084019284019160a08501918a019080838360005b8381101561107457818101518382015260200161105c565b50505050905090810190601f1680156110a15780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b838110156110d45781810151838201526020016110bc565b50505050905090810190601f1680156111015780820380516001836020036101000a031916815260200191505b50848103825286518152865160209182019188019080838360005b8381101561113457818101518382015260200161111c565b50505050905090810190601f1680156111615780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b6107616004803603602081101561118a57600080fd5b5035600160a060020a0316615f52565b61025f600480360360808110156111b057600080fd5b810190602081018135602060020a8111156111ca57600080fd5b8201836020820111156111dc57600080fd5b803590602001918460018302840111602060020a831117156111fd57600080fd5b919390929091602081019035602060020a81111561121a57600080fd5b82018360208201111561122c57600080fd5b803590602001918460018302840111602060020a8311171561124d57600080fd5b919350915080359060200135600160a060020a031661616c565b6112d56004803603602081101561127d57600080fd5b810190602081018135602060020a81111561129757600080fd5b8201836020820111156112a957600080fd5b803590602001918460018302840111602060020a831117156112ca57600080fd5b5090925090506163dd565b60405180806020018060200185600160a060020a0316600160a060020a03168152602001848152602001838103835287818151815260200191508051906020019080838360005b8381101561133457818101518382015260200161131c565b50505050905090810190601f1680156113615780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b8381101561139457818101518382015260200161137c565b50505050905090810190601f1680156113c15780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b61025f600480360360808110156113e957600080fd5b810190602081018135602060020a81111561140357600080fd5b82018360208201111561141557600080fd5b803590602001918460018302840111602060020a8311171561143657600080fd5b919390929091602081019035602060020a81111561145357600080fd5b82018360208201111561146557600080fd5b803590602001918460018302840111602060020a8311171561148657600080fd5b919390929091602081019035602060020a8111156114a357600080fd5b8201836020820111156114b557600080fd5b803590602001918460018302840111602060020a831117156114d657600080fd5b919350915035151561655c565b61025f600480360360808110156114f957600080fd5b810190602081018135602060020a81111561151357600080fd5b82018360208201111561152557600080fd5b803590602001918460018302840111602060020a8311171561154657600080fd5b919390929091602081019035602060020a81111561156357600080fd5b82018360208201111561157557600080fd5b803590602001918460018302840111602060020a8311171561159657600080fd5b9193509150600160a060020a038135811691602001351661664b565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561160357600080fd5b505afa158015611617573d6000803e3d6000fd5b505050506040513d602081101561162d57600080fd5b5051600160a060020a031633146116785760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b8085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506116bc92508491508390506149df565b15156001146116ff5760405160e560020a62461bcd0281526004018080602001828103825260228152602001806174076022913960400191505060405180910390fd5b836001148061170e5750836002145b806117195750836003145b15156117595760405160e560020a62461bcd0281526004018080602001828103825260258152602001806173946025913960400191505060405180910390fd5b6000546040517f84b7a84a000000000000000000000000000000000000000000000000000000008152600160a060020a03878116602483015260448201879052606060048301908152606483018a90529216916384b7a84a918a918a918a918a918190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156117fd57600080fd5b505af1158015611811573d6000803e3d6000fd5b5050505050505050505050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561186f57600080fd5b505afa158015611883573d6000803e3d6000fd5b505050506040513d602081101561189957600080fd5b5051600160a060020a031633146118e45760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506119269250839150616c399050565b151560011461196d576040805160e560020a62461bcd02815260206004820152601a6024820152600080516020617354833981519152604482015290519081900360640190fd5b8187878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506119b192508491508390506149df565b15156001146119f45760405160e560020a62461bcd0281526004018080602001828103825260228152602001806174076022913960400191505060405180910390fd5b6001546040517f7b713579000000000000000000000000000000000000000000000000000000008152604481018990528715156064820152861515608482015260a06004820190815260a482018d9052600160a060020a0390921691637b713579918e918e918e918e918e918e918e91908190602481019060c4018a8a80828437600083820152601f01601f191690910184810383528881526020019050888880828437600081840152601f19601f8201169050808301925050509950505050505050505050600060405180830381600087803b158015611ad457600080fd5b505af1158015611ae8573d6000803e3d6000fd5b505050505050505050505050505050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015611b4a57600080fd5b505afa158015611b5e573d6000803e3d6000fd5b505050506040513d6020811015611b7457600080fd5b5051600160a060020a03163314611bbf5760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b600a5460009060ff1615611c0b576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020617374833981519152604482015290519081900360640190fd5b611c17600688886172c5565b50611c24600786866172c5565b50611c31600884846172c5565b5050505050505050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015611c8c57600080fd5b505afa158015611ca0573d6000803e3d6000fd5b505050506040513d6020811015611cb657600080fd5b5051600160a060020a03163314611d015760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b80611d0b81615f52565b1515600114611d4e5760405160e560020a62461bcd0281526004018080602001828103825260268152602001806173e16026913960400191505060405180910390fd5b6000546040517f84b7a84a000000000000000000000000000000000000000000000000000000008152600160a060020a03858116602483015260046044830181905260608382019081526064840189905291909316926384b7a84a928992899289929091908190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611df657600080fd5b505af1158015611e0a573d6000803e3d6000fd5b50506002805460405160e060020a63e98ac22d028152600160a060020a03888116606483015260066084830181905260a060048401908152815460001960018216156101000201169590950460a4840181905291909316955063e98ac22d945091928a928a928a928692909182916024820191604481019160c49091019086908015611ed75780601f10611eac57610100808354040283529160200191611ed7565b820191906000526020600020905b815481529060010190602001808311611eba57829003601f168201915b50508481038352878152602001888880828437600081840152601f19601f82011690508083019250505084810382526000815260200160200198505050505050505050600060405180830381600087803b158015611f3457600080fd5b505af1158015611f48573d6000803e3d6000fd5b505050505050505050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015611fa457600080fd5b505afa158015611fb8573d6000803e3d6000fd5b505050506040513d6020811015611fce57600080fd5b5051600160a060020a031633146120195760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b8061202381615f52565b15156001146120665760405160e560020a62461bcd0281526004018080602001828103825260268152602001806173e16026913960400191505060405180910390fd5b6120a887878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250616d3e915050565b1515600114612101576040805160e560020a62461bcd02815260206004820152601260248201527f4e6f7468696e6720746f20617070726f76650000000000000000000000000000604482015290519081900360640190fd5b60068054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815261219b939092909183018282801561218e5780601f106121635761010080835404028352916020019161218e565b820191906000526020600020905b81548152906001019060200180831161217157829003601f168201915b5050505050836001616dc1565b1561252b57600480546040517fe3028316000000000000000000000000000000000000000000000000000000008152602092810192835260248101899052600160a060020a039091169163e3028316918a918a918190604401848480828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561223057600080fd5b505af1158015612244573d6000803e3d6000fd5b5050600180546009546040517f7b71357900000000000000000000000000000000000000000000000000000000815260448101829052606481018490526084810184905260a0600482019081526008805460026000198289161561010002019091160460a48401819052600160a060020a039095169750637b7135799650948e948e94939192839290918291602481019160c4909101908a90801561232a5780601f106122ff5761010080835404028352916020019161232a565b820191906000526020600020905b81548152906001019060200180831161230d57829003601f168201915b50508381038252878152602001888880828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b15801561237857600080fd5b505af115801561238c573d6000803e3d6000fd5b5050600354604080517f86bc36520000000000000000000000000000000000000000000000000000000081526004810191825260448101899052600160a060020a0390921693506386bc36529250889188918c918c919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561244f57600080fd5b505af1158015612463573d6000803e3d6000fd5b5050600054604080517fc214e5e5000000000000000000000000000000000000000000000000000000008152600160a060020a03888116602483015260048201928352604482018c9052909216935063c214e5e592508a918a9188918190606401858580828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b15801561250157600080fd5b505af1158015612515573d6000803e3d6000fd5b505050506040513d6020811015611f4857600080fd5b50505050505050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561258557600080fd5b505afa158015612599573d6000803e3d6000fd5b505050506040513d60208110156125af57600080fd5b5051600160a060020a031633146125fa5760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b8061260481615f52565b15156001146126475760405160e560020a62461bcd0281526004018080602001828103825260268152602001806173e16026913960400191505060405180910390fd5b60048054604080517f0cc274930000000000000000000000000000000000000000000000000000000081526024810187905292830190815260448301879052600092600160a060020a0390921691630cc27493918991899189918190606401858580828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b1580156126e357600080fd5b505af11580156126f7573d6000803e3d6000fd5b505050506040513d602081101561270d57600080fd5b50516002805460405160e060020a63e98ac22d0281526000606482018190526084820185905260a0600483019081526006805460001960018216156101000201169590950460a48401819052959650600160a060020a039093169463e98ac22d94938c938c939289929182916024820191604481019160c4909101908a9080156127d85780601f106127ad576101008083540402835291602001916127d8565b820191906000526020600020905b8154815290600101906020018083116127bb57829003601f168201915b50508481038352878152602001888880828437600081840152601f19601f82011690508083019250505084810382526000815260200160200198505050505050505050600060405180830381600087803b15801561283557600080fd5b505af1158015612849573d6000803e3d6000fd5b50505050505050505050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156128a657600080fd5b505afa1580156128ba573d6000803e3d6000fd5b505050506040513d60208110156128d057600080fd5b5051600160a060020a0316331461291b5760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b600a5460009060ff1615612967576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020617374833981519152604482015290519081900360640190fd5b600354604080517fe3b09d840000000000000000000000000000000000000000000000000000000081526004810191825260448101859052600160a060020a039092169163e3b09d84918691869160069181906024810190606401868680828437600083820152601f01601f191690910184810383528554600260001961010060018416150201909116048082526020909101915085908015612a4b5780601f10612a2057610100808354040283529160200191612a4b565b820191906000526020600020905b815481529060010190602001808311612a2e57829003601f168201915b505095505050505050600060405180830381600087803b158015612a6e57600080fd5b505af115801561252b573d6000803e3d6000fd5b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015612ad357600080fd5b505afa158015612ae7573d6000803e3d6000fd5b505050506040513d6020811015612afd57600080fd5b5051600160a060020a03163314612b485760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612b8a9250839150616ed19050565b1515600114612be3576040805160e560020a62461bcd02815260206004820152601260248201527f6f726720646f6573206e6f742065786973740000000000000000000000000000604482015290519081900360640190fd5b81612bed81615f52565b1515600114612c305760405160e560020a62461bcd0281526004018080602001828103825260268152602001806173e16026913960400191505060405180910390fd5b6000546040517fe3483a9d000000000000000000000000000000000000000000000000000000008152600160a060020a0388811660048301908152600160648401819052608060248501908152608485018d9052929094169363e3483a9d938b938e938e938d938d9391929190604481019060a401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b158015612d0957600080fd5b505af1158015612d1d573d6000803e3d6000fd5b50506002805460405160e060020a63e98ac22d028152600160a060020a038b8116606483015260046084830181905260a08382019081526006805460001960018216156101000201169690960460a4850181905292909416965063e98ac22d95508e938e938e9382916024810191604482019160c401908a908015612de35780601f10612db857610100808354040283529160200191612de3565b820191906000526020600020905b815481529060010190602001808311612dc657829003601f168201915b50508481038352878152602001888880828437600081840152601f19601f82011690508083019250505084810382526000815260200160200198505050505050505050600060405180830381600087803b158015612e4057600080fd5b505af1158015612e54573d6000803e3d6000fd5b505050505050505050505050565b600554604080517fe572515c0000000000000000000000000000000000000000000000000000000081529051600092600160a060020a03169163e572515c916004808301926020929190829003018186803b158015612ec057600080fd5b505afa158015612ed4573d6000803e3d6000fd5b505050506040513d6020811015612eea57600080fd5b5051600160a060020a03163314612f355760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b600a5460009060ff1615612f81576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020617374833981519152604482015290519081900360640190fd5b600a805460ff19166001179081905560ff1691505b5090565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015612feb57600080fd5b505afa158015612fff573d6000803e3d6000fd5b505050506040513d602081101561301557600080fd5b5051600160a060020a031633146130605760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b8061306a81615f52565b15156001146130ad5760405160e560020a62461bcd0281526004018080602001828103825260268152602001806173e16026913960400191505060405180910390fd5b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152613147939092909183018282801561313a5780601f1061310f5761010080835404028352916020019161313a565b820191906000526020600020905b81548152906001019060200180831161311d57829003601f168201915b5050505050836006616dc1565b156131f5576000546040517f84b7a84a000000000000000000000000000000000000000000000000000000008152600160a060020a0385811660248301526005604483018190526060600484019081526064840189905291909316926384b7a84a928992899289929091908190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611f3457600080fd5b5050505050565b600a5460ff165b90565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561325757600080fd5b505afa15801561326b573d6000803e3d6000fd5b505050506040513d602081101561328157600080fd5b5051600160a060020a031633146132cc5760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b600a5460009060ff1615613318576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020617374833981519152604482015290519081900360640190fd5b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526133b293909290918301828280156133a55780601f1061337a576101008083540402835291602001916133a5565b820191906000526020600020905b81548152906001019060200180831161338857829003601f168201915b5050505050836001616f96565b6000546040517fe3483a9d000000000000000000000000000000000000000000000000000000008152600160a060020a038481166004830190815260026064840181905260806024850190815260068054600019600182161561010002011683900460848701819052949096169563e3483a9d95899591946007949390929091604481019160a4909101908790801561348c5780601f106134615761010080835404028352916020019161348c565b820191906000526020600020905b81548152906001019060200180831161346f57829003601f168201915b50508381038252855460026000196101006001841615020190911604808252602090910190869080156135005780601f106134d557610100808354040283529160200191613500565b820191906000526020600020905b8154815290600101906020018083116134e357829003601f168201915b50509650505050505050600060405180830381600087803b15801561352457600080fd5b505af1158015613538573d6000803e3d6000fd5b505050505050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561359157600080fd5b505afa1580156135a5573d6000803e3d6000fd5b505050506040513d60208110156135bb57600080fd5b5051600160a060020a031633146136065760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506136489250839150616c399050565b151560011461368f576040805160e560020a62461bcd02815260206004820152601a6024820152600080516020617354833981519152604482015290519081900360640190fd5b8186868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506136d392508491508390506149df565b15156001146137165760405160e560020a62461bcd0281526004018080602001828103825260228152602001806174076022913960400191505060405180910390fd5b600354604080517f3f5e1a450000000000000000000000000000000000000000000000000000000081526004810191825260448101889052600160a060020a0390921691633f5e1a4591899189918d918d919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015612e4057600080fd5b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561382657600080fd5b505afa15801561383a573d6000803e3d6000fd5b505050506040513d602081101561385057600080fd5b5051600160a060020a0316331461389b5760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b82828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506138dd9250839150616c399050565b1515600114613924576040805160e560020a62461bcd02815260206004820152601a6024820152600080516020617354833981519152604482015290519081900360640190fd5b8184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061396892508491508390506149df565b15156001146139ab5760405160e560020a62461bcd0281526004018080602001828103825260228152602001806174076022913960400191505060405180910390fd5b6040805160208082019081526007805460026000196101006001841615020190911604938301849052929091829160609091019084908015613a2e5780601f10613a0357610100808354040283529160200191613a2e565b820191906000526020600020905b815481529060010190602001808311613a1157829003601f168201915b50509250505060405160208183030381529060405280519060200120888860405160200180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040528051906020012014158015613b9b57506040805160208082019081526008805460026000196101006001841615020190911604938301849052929091829160609091019084908015613b295780601f10613afe57610100808354040283529160200191613b29565b820191906000526020600020905b815481529060010190602001808311613b0c57829003601f168201915b50509250505060405160208183030381529060405280519060200120888860405160200180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040528051906020012014155b1515613bf1576040805160e560020a62461bcd02815260206004820152601d60248201527f61646d696e20726f6c65732063616e6e6f742062652072656d6f766564000000604482015290519081900360640190fd5b600154604080517fa634301200000000000000000000000000000000000000000000000000000000815260048101918252604481018a9052600160a060020a039092169163a6343012918b918b918b918b919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015612e4057600080fd5b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015613d0157600080fd5b505afa158015613d15573d6000803e3d6000fd5b505050506040513d6020811015613d2b57600080fd5b5051600160a060020a03163314613d765760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b80613d8081615f52565b1515600114613dc35760405160e560020a62461bcd0281526004018080602001828103825260268152602001806173e16026913960400191505060405180910390fd5b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152613e5d9390929091830182828015613e505780601f10613e2557610100808354040283529160200191613e50565b820191906000526020600020905b815481529060010190602001808311613e3357829003601f168201915b5050505050836005616dc1565b15613538576003546040517f0cc5014600000000000000000000000000000000000000000000000000000000815260056044820181905260606004830190815260648301879052600160a060020a0390931692630cc5014692889288928c928c92919081906024810190608401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b15801561283557600080fd5b60008054604080517f6b568d76000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301908152602483019384528651604484015286519190941693636b568d76938893889360649091019060208501908083838c5b83811015613fb1578181015183820152602001613f99565b50505050905090810190601f168015613fde5780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b158015613ffc57600080fd5b505afa158015614010573d6000803e3d6000fd5b505050506040513d602081101561402657600080fd5b505190505b92915050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561408257600080fd5b505afa158015614096573d6000803e3d6000fd5b505050506040513d60208110156140ac57600080fd5b5051600160a060020a031633146140f75760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b8061410181615f52565b15156001146141445760405160e560020a62461bcd0281526004018080602001828103825260268152602001806173e16026913960400191505060405180910390fd5b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526141de93909290918301828280156141d15780601f106141a6576101008083540402835291602001916141d1565b820191906000526020600020905b8154815290600101906020018083116141b457829003601f168201915b5050505050836004616dc1565b156131f557600080546040517f1d09dc93000000000000000000000000000000000000000000000000000000008152602060048201908152602482018890528392600160a060020a031691631d09dc93918a918a91908190604401848480828437600081840152601f19601f82011690508083019250505093505050506040805180830381600087803b15801561427457600080fd5b505af1158015614288573d6000803e3d6000fd5b505050506040513d604081101561429e57600080fd5b5080516020909101519092509050811561434c5760068054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815261434c939092909183018282801561433f5780601f106143145761010080835404028352916020019161433f565b820191906000526020600020905b81548152906001019060200180831161432257829003601f168201915b5050505050826000616f96565b60008054604080517fc214e5e5000000000000000000000000000000000000000000000000000000008152600160a060020a03898116602483015260048201928352604482018b90529092169163c214e5e5918b918b918b918190606401858580828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b1580156143e757600080fd5b505af11580156143fb573d6000803e3d6000fd5b505050506040513d602081101561441157600080fd5b505190508015611c315760068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152611c3193909290918301828280156144a85780601f1061447d576101008083540402835291602001916144a8565b820191906000526020600020905b81548152906001019060200180831161448b57829003601f168201915b5050505050876001616f96565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561450657600080fd5b505afa15801561451a573d6000803e3d6000fd5b505050506040513d602081101561453057600080fd5b5051600160a060020a0316331461457b5760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b808361458782826149df565b15156001146145ca5760405160e560020a62461bcd0281526004018080602001828103825260228152602001806174076022913960400191505060405180910390fd5b846145d481616c39565b151560011461461b576040805160e560020a62461bcd02815260206004820152601a6024820152600080516020617354833981519152604482015290519081900360640190fd5b6146258787613f2d565b151560011461467e576040805160e560020a62461bcd02815260206004820152601d60248201527f6f7065726174696f6e2063616e6e6f7420626520706572666f726d6564000000604482015290519081900360640190fd5b6146888587617158565b15156001146146e1576040805160e560020a62461bcd02815260206004820152601460248201527f726f6c6520646f6573206e6f7420657869737473000000000000000000000000604482015290519081900360640190fd5b600154600090600160a060020a031663be322e54878961470081617173565b6040518463ffffffff1660e060020a02815260040180806020018060200180602001848103845287818151815260200191508051906020019080838360005b8381101561475757818101518382015260200161473f565b50505050905090810190601f1680156147845780820380516001836020036101000a031916815260200191505b50848103835286518152865160209182019188019080838360005b838110156147b757818101518382015260200161479f565b50505050905090810190601f1680156147e45780820380516001836020036101000a031916815260200191505b50848103825285518152855160209182019187019080838360005b838110156148175781810151838201526020016147ff565b50505050905090810190601f1680156148445780820380516001836020036101000a031916815260200191505b50965050505050505060206040518083038186803b15801561486557600080fd5b505afa158015614879573d6000803e3d6000fd5b505050506040513d602081101561488f57600080fd5b5051600080546040517f143a5604000000000000000000000000000000000000000000000000000000008152600160a060020a038c81166004830190815285151560648401526080602484019081528d5160848501528d51969750919093169463143a5604948e948e948e948a9492939092604483019260a401916020890191908190849084905b8381101561492f578181015183820152602001614917565b50505050905090810190601f16801561495c5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561498f578181015183820152602001614977565b50505050905090810190601f1680156149bc5780820380516001836020036101000a031916815260200191505b509650505050505050600060405180830381600087803b158015612e4057600080fd5b60008054600160a060020a031663e8b42bf484846149fc81617173565b6040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a031681526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015614a67578181015183820152602001614a4f565b50505050905090810190601f168015614a945780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015614ac7578181015183820152602001614aaf565b50505050905090810190601f168015614af45780820380516001836020036101000a031916815260200191505b509550505050505060206040518083038186803b158015614b1457600080fd5b505afa158015614b28573d6000803e3d6000fd5b505050506040513d6020811015614b3e57600080fd5b505115614b4d5750600161402b565b60015460008054604080517f81d66b23000000000000000000000000000000000000000000000000000000008152600160a060020a03888116600483015291519482169463be322e549493909216926381d66b2392602480840193829003018186803b158015614bbc57600080fd5b505afa158015614bd0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015614bf957600080fd5b810190808051602060020a811115614c1057600080fd5b82016020810184811115614c2357600080fd5b8151602060020a811182820187101715614c3c57600080fd5b505092919050505084614c4e86617173565b6040518463ffffffff1660e060020a02815260040180806020018060200180602001848103845287818151815260200191508051906020019080838360005b83811015614ca5578181015183820152602001614c8d565b50505050905090810190601f168015614cd25780820380516001836020036101000a031916815260200191505b50848103835286518152865160209182019188019080838360005b83811015614d05578181015183820152602001614ced565b50505050905090810190601f168015614d325780820380516001836020036101000a031916815260200191505b50848103825285518152855160209182019187019080838360005b83811015614d65578181015183820152602001614d4d565b50505050905090810190601f168015614d925780820380516001836020036101000a031916815260200191505b50965050505050505060206040518083038186803b158015613ffc57600080fd5b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015614e0457600080fd5b505afa158015614e18573d6000803e3d6000fd5b505050506040513d6020811015614e2e57600080fd5b5051600160a060020a03163314614e795760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b600a5460009060ff1615614ec5576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020617374833981519152604482015290519081900360640190fd5b600480546040517f9e58eb9f00000000000000000000000000000000000000000000000000000000815260248101869052604481018590526060928101928352600680546002600019600183161561010002019091160460648301819052600160a060020a0390931693639e58eb9f9391928892889291829160849091019086908015614f935780601f10614f6857610100808354040283529160200191614f93565b820191906000526020600020905b815481529060010190602001808311614f7657829003601f168201915b5050945050505050600060405180830381600087803b158015614fb557600080fd5b505af1158015614fc9573d6000803e3d6000fd5b5050600180546009546040517f7b71357900000000000000000000000000000000000000000000000000000000815260448101829052606481018490526084810184905260a0600482019081526007805460026000198289161561010002019091160460a48401819052600160a060020a039095169750637b71357996509460069490928392918291602481019160c490910190899080156150ac5780601f10615081576101008083540402835291602001916150ac565b820191906000526020600020905b81548152906001019060200180831161508f57829003601f168201915b50508381038252875460026000196101006001841615020190911604808252602090910190889080156151205780601f106150f557610100808354040283529160200191615120565b820191906000526020600020905b81548152906001019060200180831161510357829003601f168201915b5050975050505050505050600060405180830381600087803b15801561514557600080fd5b505af1158015615159573d6000803e3d6000fd5b5050600054604080517fcef7f6af00000000000000000000000000000000000000000000000000000000815260048101918252600780546002600019600183161561010002019091160460448301819052600160a060020a03909416955063cef7f6af9450926008929182916024820191606401908690801561521d5780601f106151f25761010080835404028352916020019161521d565b820191906000526020600020905b81548152906001019060200180831161520057829003601f168201915b50508381038252845460026000196101006001841615020190911604808252602090910190859080156152915780601f1061526657610100808354040283529160200191615291565b820191906000526020600020905b81548152906001019060200180831161527457829003601f168201915b5050945050505050600060405180830381600087803b158015612a6e57600080fd5b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561530457600080fd5b505afa158015615318573d6000803e3d6000fd5b505050506040513d602081101561532e57600080fd5b5051600160a060020a031633146153795760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506153bb9250839150616ed19050565b1515600114615414576040805160e560020a62461bcd02815260206004820152601260248201527f6f726720646f6573206e6f742065786973740000000000000000000000000000604482015290519081900360640190fd5b8188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061545892508491508390506149df565b151560011461549b5760405160e560020a62461bcd0281526004018080602001828103825260228152602001806174076022913960400191505060405180910390fd5b60048054604080517f1f953480000000000000000000000000000000000000000000000000000000008152928301908152604483018c9052600160a060020a0390911691631f953480918d918d918d918d919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561555a57600080fd5b505af115801561556e573d6000803e3d6000fd5b5050505060608a8a8a8a604051602001808585808284377f2e00000000000000000000000000000000000000000000000000000000000000920191825250600101838380828437808301925050509450505050506040516020818303038152906040529050600087879050111561181157600354604080517f3f5e1a450000000000000000000000000000000000000000000000000000000081526004810191825260448101899052600160a060020a0390921691633f5e1a45918a918a918691819060248101906064018686808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015615689578181015183820152602001615671565b50505050905090810190601f1680156156b65780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015611ad457600080fd5b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561572957600080fd5b505afa15801561573d573d6000803e3d6000fd5b505050506040513d602081101561575357600080fd5b5051600160a060020a0316331461579e5760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b806157a881615f52565b15156001146157eb5760405160e560020a62461bcd0281526004018080602001828103825260268152602001806173e16026913960400191505060405180910390fd5b82600114806157fa5750826002145b1515615850576040805160e560020a62461bcd02815260206004820152601560248201527f4f7065726174696f6e206e6f7420616c6c6f7765640000000000000000000000604482015290519081900360640190fd5b60008084600114156158685750600290506003615879565b846002141561587957506003905060055b6158ba87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250859250616d3e915050565b1515600114615913576040805160e560020a62461bcd02815260206004820152601560248201527f6f7065726174696f6e206e6f7420616c6c6f7765640000000000000000000000604482015290519081900360640190fd5b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526159ac93909290918301828280156159a05780601f10615975576101008083540402835291602001916159a0565b820191906000526020600020905b81548152906001019060200180831161598357829003601f168201915b50505050508584616dc1565b1561252b5760048054604080517f14f775f90000000000000000000000000000000000000000000000000000000081526024810189905292830190815260448301899052600160a060020a03909116916314f775f9918a918a918a918190606401858580828437600081840152601f19601f820116905080830192505050945050505050600060405180830381600087803b1580156117fd57600080fd5b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015615a9b57600080fd5b505afa158015615aaf573d6000803e3d6000fd5b505050506040513d6020811015615ac557600080fd5b5051600160a060020a03163314615b105760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b80615b1a81615f52565b1515600114615b5d5760405160e560020a62461bcd0281526004018080602001828103825260268152602001806173e16026913960400191505060405180910390fd5b6003546040517f0cc50146000000000000000000000000000000000000000000000000000000008152600460448201819052606082820190815260648301879052600160a060020a0390931692630cc5014692889288928c928c92919081906024810190608401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015615c2757600080fd5b505af1158015615c3b573d6000803e3d6000fd5b50506002805460405160e060020a63e98ac22d02815260006064820181905260056084830181905260a0600484019081526006805460001960018216156101000201169690960460a48501819052600160a060020a03909516975063e98ac22d96508d948d948d948d9490939092909182916024820191604481019160c4909101908c908015615d0c5780601f10615ce157610100808354040283529160200191615d0c565b820191906000526020600020905b815481529060010190602001808311615cef57829003601f168201915b505084810383528981526020018a8a80828437600083820152601f01601f191690910185810383528881526020019050888880828437600081840152601f19601f8201169050808301925050509a5050505050505050505050600060405180830381600087803b15801561283557600080fd5b600a5460068054604080516020601f6002600019600187161561010002019095169490940493840181900481028201810190925282815260609485948594600094919360079360089360ff909116928691830182828015615e215780601f10615df657610100808354040283529160200191615e21565b820191906000526020600020905b815481529060010190602001808311615e0457829003601f168201915b5050865460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815295995088945092508401905082828015615eaf5780601f10615e8457610100808354040283529160200191615eaf565b820191906000526020600020905b815481529060010190602001808311615e9257829003601f168201915b5050855460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815295985087945092508401905082828015615f3d5780601f10615f1257610100808354040283529160200191615f3d565b820191906000526020600020905b815481529060010190602001808311615f2057829003601f168201915b50505050509150935093509350935090919293565b60408051602080820190815260078054600260001961010060018416150201909116049383018490526000939092829160609091019084908015615fd75780601f10615fac57610100808354040283529160200191615fd7565b820191906000526020600020905b815481529060010190602001808311615fba57829003601f168201915b505060408051601f198184030181528282528051602090910120600080547f81d66b23000000000000000000000000000000000000000000000000000000008552600160a060020a038a8116600487015293519297509290921694506381d66b239350602480840193829003018186803b15801561605457600080fd5b505afa158015616068573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561609157600080fd5b810190808051602060020a8111156160a857600080fd5b820160208101848111156160bb57600080fd5b8151602060020a8111828201871017156160d457600080fd5b50509291905050506040516020018080602001828103825283818151815260200191508051906020019080838360005b8381101561611c578181015183820152602001616104565b50505050905090810190601f1680156161495780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120149050919050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156161bd57600080fd5b505afa1580156161d1573d6000803e3d6000fd5b505050506040513d60208110156161e757600080fd5b5051600160a060020a031633146162325760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b8086868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061627692508491508390506149df565b15156001146162b95760405160e560020a62461bcd0281526004018080602001828103825260228152602001806174076022913960400191505060405180910390fd5b83600114806162c85750836002145b806162d35750836003145b15156163135760405160e560020a62461bcd0281526004018080602001828103825260258152602001806173946025913960400191505060405180910390fd5b6003546040517f0cc501460000000000000000000000000000000000000000000000000000000081526044810186905260606004820190815260648201889052600160a060020a0390921691630cc5014691899189918d918d918b919081906024810190608401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015612e4057600080fd5b6002546040517f014e6acc0000000000000000000000000000000000000000000000000000000081526020600482019081526024820184905260609283926000928392600160a060020a03169163014e6acc9189918991908190604401848480828437600081840152601f19601f820116905080830192505050935050505060006040518083038186803b15801561647457600080fd5b505afa158015616488573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260808110156164b157600080fd5b810190808051602060020a8111156164c857600080fd5b820160208101848111156164db57600080fd5b8151602060020a8111828201871017156164f457600080fd5b50509291906020018051602060020a81111561650f57600080fd5b8201602081018481111561652257600080fd5b8151602060020a81118282018710171561653b57600080fd5b50506020820151604090920151949b909a5090985092965091945050505050565b600554600160a060020a031633146165be576040805160e560020a62461bcd02815260206004820152600e60248201527f696e76616c69642063616c6c6572000000000000000000000000000000000000604482015290519081900360640190fd5b600a5460009060ff161561660a576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020617374833981519152604482015290519081900360640190fd5b616616600689896172c5565b50616623600787876172c5565b50616630600885856172c5565b5050600a805460ff1916911515919091179055505050505050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561669c57600080fd5b505afa1580156166b0573d6000803e3d6000fd5b505050506040513d60208110156166c657600080fd5b5051600160a060020a031633146167115760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b600a5460019060ff1615158114616760576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020617374833981519152604482015290519081900360640190fd5b8161676a81615f52565b15156001146167ad5760405160e560020a62461bcd0281526004018080602001828103825260268152602001806173e16026913960400191505060405180910390fd5b6002805460405160e060020a63e98ac22d028152600160a060020a03878116606483015260016084830181905260a06004840190815260068054600019818516156101000201169690960460a48501819052929094169463e98ac22d9490938e938e938e938e938e9382916024810191604482019160c401908c9080156168755780601f1061684a57610100808354040283529160200191616875565b820191906000526020600020905b81548152906001019060200180831161685857829003601f168201915b505084810383528981526020018a8a80828437600083820152601f01601f191690910185810383528881526020019050888880828437600081840152601f19601f8201169050808301925050509a5050505050505050505050600060405180830381600087803b1580156168e857600080fd5b505af11580156168fc573d6000803e3d6000fd5b5050600480546040517ff9953de50000000000000000000000000000000000000000000000000000000081526020928101928352602481018c9052600160a060020a03909116935063f9953de592508b918b918190604401848480828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561699057600080fd5b505af11580156169a4573d6000803e3d6000fd5b5050600354604080517fa97a440600000000000000000000000000000000000000000000000000000000815260048101918252604481018a9052600160a060020a03909216935063a97a44069250899189918d918d919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015616a6757600080fd5b505af1158015616a7b573d6000803e3d6000fd5b50505050616abf8489898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613f2d92505050565b1515600114616b18576040805160e560020a62461bcd02815260206004820152601d60248201527f4f7065726174696f6e2063616e6e6f7420626520706572666f726d6564000000604482015290519081900360640190fd5b6000546040517fe3483a9d000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301908152600160648401819052608060248501908152608485018d9052929094169363e3483a9d9389938e938e93600893909290604481019060a401878780828437600083820152601f01601f191690910184810383528654600260001961010060018416150201909116048082526020909101915086908015616c145780601f10616be957610100808354040283529160200191616c14565b820191906000526020600020905b815481529060010190602001808311616bf757829003601f168201915b5050975050505050505050600060405180830381600087803b158015612e4057600080fd5b60048054604080517f8c8642df000000000000000000000000000000000000000000000000000000008152600260248201819052938101918252845160448201528451600094600160a060020a0390941693638c8642df93879391929091829160649091019060208601908083838c5b83811015616cc1578181015183820152602001616ca9565b50505050905090810190601f168015616cee5780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b158015616d0c57600080fd5b505afa158015616d20573d6000803e3d6000fd5b505050506040513d6020811015616d3657600080fd5b505192915050565b60048054604080517f8c8642df00000000000000000000000000000000000000000000000000000000815260248101859052928301908152845160448401528451600093600160a060020a0390931692638c8642df9287928792829160649091019060208601908083838c83811015613fb1578181015183820152602001613f99565b6002546040517fb0213864000000000000000000000000000000000000000000000000000000008152600160a060020a03848116602483015260448201849052606060048301908152865160648401528651600094929092169263b02138649288928892889282916084019060208701908083838d5b83811015616e4f578181015183820152602001616e37565b50505050905090810190601f168015616e7c5780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b158015616e9d57600080fd5b505af1158015616eb1573d6000803e3d6000fd5b505050506040513d6020811015616ec757600080fd5b5051949350505050565b600480546040517fffe40d1d0000000000000000000000000000000000000000000000000000000081526020928101838152845160248301528451600094600160a060020a039094169363ffe40d1d9387939283926044909201918501908083838b5b83811015616f4c578181015183820152602001616f34565b50505050905090810190601f168015616f795780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b158015616d0c57600080fd5b801561708657600254604080517f5607395b000000000000000000000000000000000000000000000000000000008152600160a060020a03858116602483015260048201928352865160448301528651931692635607395b9287928792829160640190602086019080838360005b8381101561701c578181015183820152602001617004565b50505050905090810190601f1680156170495780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b15801561706957600080fd5b505af115801561707d573d6000803e3d6000fd5b50505050617153565b600254604080517f59cbd6fe000000000000000000000000000000000000000000000000000000008152600160a060020a038581166024830152600482019283528651604483015286519316926359cbd6fe9287928792829160640190602086019080838360005b838110156171065781810151838201526020016170ee565b50505050905090810190601f1680156171335780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b158015612a6e57600080fd5b505050565b600154600090600160a060020a031663abf5739f8484614c4e815b600480546040517f177c8d8a0000000000000000000000000000000000000000000000000000000081526020928101838152845160248301528451606094600160a060020a039094169363177c8d8a93879392839260449092019185019080838360005b838110156171ef5781810151838201526020016171d7565b50505050905090810190601f16801561721c5780820380516001836020036101000a031916815260200191505b509250505060006040518083038186803b15801561723957600080fd5b505afa15801561724d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561727657600080fd5b810190808051602060020a81111561728d57600080fd5b820160208101848111156172a057600080fd5b8151602060020a8111828201871017156172b957600080fd5b50909695505050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106173065782800160ff19823516178555617333565b82800160010185558215617333579182015b82811115617333578235825591602001919060010190617318565b50612f96926132039250905b80821115612f96576000815560010161733f56fe6f7267206e6f7420696e20617070726f76656420737461747573000000000000496e636f7272656374206e6574776f726b20626f6f7420737461747573000000696e76616c696420616374696f6e2e206f7065726174696f6e206e6f7420616c6c6f77656463616e2062652063616c6c656420627920696e7465726661636520636f6e7472616374206f6e6c796163636f756e74206973206e6f742061206e6574776f726b2061646d696e206163636f756e746163636f756e74206973206e6f742061206f72672061646d696e206163636f756e74a165627a7a72305820bc5279a83b455971c3fa3eda2df34e9143279cac447f0e747fe8ea8baab624530029 \ No newline at end of file +60806040526003600955600a805460ff191690553480156200002057600080fd5b5060405160c08062007532833981018060405260c08110156200004257600080fd5b508051602082015160408301516060840151608085015160a09095015160058054600160a060020a03968716600160a060020a031991821617909155600480549587169582169590951790945560018054938616938516939093179092556000805491851691841691909117905560028054948416948316949094179093556003805492909316911617905561745480620000de6000396000f3fe608060405234801561001057600080fd5b50600436106101d35760003560e060020a90048063655a8ef511610108578063b5546564116100a6578063dbfad71111610075578063dbfad7111461119a578063f346a3a714611267578063f5ad584a146113d3578063f922f802146114e3576101d3565b8063b554656414610edc578063c3dc8e0914610f59578063cc9ba6fa14611020578063d1aa0c2014611174576101d3565b80638baa8191116100e25780638baa819114610baa5780639bd3810114610cee578063a5843f0814610da2578063a64d286014610dc5576101d3565b8063655a8ef5146109b05780636b568d7614610a775780638884304114610b2b576101d3565b8063404bf3eb116101755780634cbfa82e1161014f5780634cbfa82e146107f45780634fe57e7a146107fc57806359a260a3146108225780635ca5adbe146108e9576101d3565b8063404bf3eb1461068557806344478e79146107595780634b20f45f14610775576101d3565b80631c249912116101b15780631c2499121461044c5780633bc07dea146104cb5780633cf5f33b1461059a5780633f25c28814610617576101d3565b806304e81f1e146101d85780631b04c276146102615780631b6102201461033e575b600080fd5b61025f600480360360808110156101ee57600080fd5b810190602081018135602060020a81111561020857600080fd5b82018360208201111561021a57600080fd5b803590602001918460018302840111602060020a8311171561023b57600080fd5b9193509150600160a060020a038135811691602081013591604090910135166115b2565b005b61025f600480360360c081101561027757600080fd5b810190602081018135602060020a81111561029157600080fd5b8201836020820111156102a357600080fd5b803590602001918460018302840111602060020a831117156102c457600080fd5b919390929091602081019035602060020a8111156102e157600080fd5b8201836020820111156102f357600080fd5b803590602001918460018302840111602060020a8311171561031457600080fd5b91935091508035906020810135151590604081013515159060600135600160a060020a031661181e565b61025f6004803603606081101561035457600080fd5b810190602081018135602060020a81111561036e57600080fd5b82018360208201111561038057600080fd5b803590602001918460018302840111602060020a831117156103a157600080fd5b919390929091602081019035602060020a8111156103be57600080fd5b8201836020820111156103d057600080fd5b803590602001918460018302840111602060020a831117156103f157600080fd5b919390929091602081019035602060020a81111561040e57600080fd5b82018360208201111561042057600080fd5b803590602001918460018302840111602060020a8311171561044157600080fd5b509092509050611af9565b61025f6004803603606081101561046257600080fd5b810190602081018135602060020a81111561047c57600080fd5b82018360208201111561048e57600080fd5b803590602001918460018302840111602060020a831117156104af57600080fd5b9193509150600160a060020a0381358116916020013516611c3b565b61025f600480360360808110156104e157600080fd5b810190602081018135602060020a8111156104fb57600080fd5b82018360208201111561050d57600080fd5b803590602001918460018302840111602060020a8311171561052e57600080fd5b919390929091602081019035602060020a81111561054b57600080fd5b82018360208201111561055d57600080fd5b803590602001918460018302840111602060020a8311171561057e57600080fd5b9193509150600160a060020a0381358116916020013516611f53565b61025f600480360360608110156105b057600080fd5b810190602081018135602060020a8111156105ca57600080fd5b8201836020820111156105dc57600080fd5b803590602001918460018302840111602060020a831117156105fd57600080fd5b919350915080359060200135600160a060020a0316612534565b61025f6004803603602081101561062d57600080fd5b810190602081018135602060020a81111561064757600080fd5b82018360208201111561065957600080fd5b803590602001918460018302840111602060020a8311171561067a57600080fd5b509092509050612855565b61025f6004803603608081101561069b57600080fd5b810190602081018135602060020a8111156106b557600080fd5b8201836020820111156106c757600080fd5b803590602001918460018302840111602060020a831117156106e857600080fd5b91939092600160a060020a0383351692604081019060200135602060020a81111561071257600080fd5b82018360208201111561072457600080fd5b803590602001918460018302840111602060020a8311171561074557600080fd5b919350915035600160a060020a0316612a82565b610761612e62565b604080519115158252519081900360200190f35b61025f6004803603606081101561078b57600080fd5b810190602081018135602060020a8111156107a557600080fd5b8201836020820111156107b757600080fd5b803590602001918460018302840111602060020a831117156107d857600080fd5b9193509150600160a060020a0381358116916020013516612f9a565b6107616131fc565b61025f6004803603602081101561081257600080fd5b5035600160a060020a0316613206565b61025f6004803603606081101561083857600080fd5b810190602081018135602060020a81111561085257600080fd5b82018360208201111561086457600080fd5b803590602001918460018302840111602060020a8311171561088557600080fd5b919390929091602081019035602060020a8111156108a257600080fd5b8201836020820111156108b457600080fd5b803590602001918460018302840111602060020a831117156108d557600080fd5b919350915035600160a060020a0316613540565b61025f600480360360608110156108ff57600080fd5b810190602081018135602060020a81111561091957600080fd5b82018360208201111561092b57600080fd5b803590602001918460018302840111602060020a8311171561094c57600080fd5b919390929091602081019035602060020a81111561096957600080fd5b82018360208201111561097b57600080fd5b803590602001918460018302840111602060020a8311171561099c57600080fd5b919350915035600160a060020a03166137d5565b61025f600480360360608110156109c657600080fd5b810190602081018135602060020a8111156109e057600080fd5b8201836020820111156109f257600080fd5b803590602001918460018302840111602060020a83111715610a1357600080fd5b919390929091602081019035602060020a811115610a3057600080fd5b820183602082011115610a4257600080fd5b803590602001918460018302840111602060020a83111715610a6357600080fd5b919350915035600160a060020a0316613cb0565b61076160048036036040811015610a8d57600080fd5b600160a060020a038235169190810190604081016020820135602060020a811115610ab757600080fd5b820183602082011115610ac957600080fd5b803590602001918460018302840111602060020a83111715610aea57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550613f2d945050505050565b61025f60048036036060811015610b4157600080fd5b810190602081018135602060020a811115610b5b57600080fd5b820183602082011115610b6d57600080fd5b803590602001918460018302840111602060020a83111715610b8e57600080fd5b9193509150600160a060020a0381358116916020013516614031565b61025f60048036036080811015610bc057600080fd5b600160a060020a038235169190810190604081016020820135602060020a811115610bea57600080fd5b820183602082011115610bfc57600080fd5b803590602001918460018302840111602060020a83111715610c1d57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050602060020a811115610c6f57600080fd5b820183602082011115610c8157600080fd5b803590602001918460018302840111602060020a83111715610ca257600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050509035600160a060020a031691506144b59050565b61076160048036036040811015610d0457600080fd5b600160a060020a038235169190810190604081016020820135602060020a811115610d2e57600080fd5b820183602082011115610d4057600080fd5b803590602001918460018302840111602060020a83111715610d6157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506149df945050505050565b61025f60048036036040811015610db857600080fd5b5080359060200135614db3565b61025f60048036036080811015610ddb57600080fd5b810190602081018135602060020a811115610df557600080fd5b820183602082011115610e0757600080fd5b803590602001918460018302840111602060020a83111715610e2857600080fd5b919390929091602081019035602060020a811115610e4557600080fd5b820183602082011115610e5757600080fd5b803590602001918460018302840111602060020a83111715610e7857600080fd5b919390929091602081019035602060020a811115610e9557600080fd5b820183602082011115610ea757600080fd5b803590602001918460018302840111602060020a83111715610ec857600080fd5b919350915035600160a060020a03166152b3565b61025f60048036036060811015610ef257600080fd5b810190602081018135602060020a811115610f0c57600080fd5b820183602082011115610f1e57600080fd5b803590602001918460018302840111602060020a83111715610f3f57600080fd5b919350915080359060200135600160a060020a03166156d8565b61025f60048036036060811015610f6f57600080fd5b810190602081018135602060020a811115610f8957600080fd5b820183602082011115610f9b57600080fd5b803590602001918460018302840111602060020a83111715610fbc57600080fd5b919390929091602081019035602060020a811115610fd957600080fd5b820183602082011115610feb57600080fd5b803590602001918460018302840111602060020a8311171561100c57600080fd5b919350915035600160a060020a0316615a4a565b611028615d7f565b604080518215156060820152608080825286519082015285519091829160208084019284019160a08501918a019080838360005b8381101561107457818101518382015260200161105c565b50505050905090810190601f1680156110a15780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b838110156110d45781810151838201526020016110bc565b50505050905090810190601f1680156111015780820380516001836020036101000a031916815260200191505b50848103825286518152865160209182019188019080838360005b8381101561113457818101518382015260200161111c565b50505050905090810190601f1680156111615780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b6107616004803603602081101561118a57600080fd5b5035600160a060020a0316615f52565b61025f600480360360808110156111b057600080fd5b810190602081018135602060020a8111156111ca57600080fd5b8201836020820111156111dc57600080fd5b803590602001918460018302840111602060020a831117156111fd57600080fd5b919390929091602081019035602060020a81111561121a57600080fd5b82018360208201111561122c57600080fd5b803590602001918460018302840111602060020a8311171561124d57600080fd5b919350915080359060200135600160a060020a031661616c565b6112d56004803603602081101561127d57600080fd5b810190602081018135602060020a81111561129757600080fd5b8201836020820111156112a957600080fd5b803590602001918460018302840111602060020a831117156112ca57600080fd5b5090925090506163dd565b60405180806020018060200185600160a060020a0316600160a060020a03168152602001848152602001838103835287818151815260200191508051906020019080838360005b8381101561133457818101518382015260200161131c565b50505050905090810190601f1680156113615780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b8381101561139457818101518382015260200161137c565b50505050905090810190601f1680156113c15780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b61025f600480360360808110156113e957600080fd5b810190602081018135602060020a81111561140357600080fd5b82018360208201111561141557600080fd5b803590602001918460018302840111602060020a8311171561143657600080fd5b919390929091602081019035602060020a81111561145357600080fd5b82018360208201111561146557600080fd5b803590602001918460018302840111602060020a8311171561148657600080fd5b919390929091602081019035602060020a8111156114a357600080fd5b8201836020820111156114b557600080fd5b803590602001918460018302840111602060020a831117156114d657600080fd5b919350915035151561655c565b61025f600480360360808110156114f957600080fd5b810190602081018135602060020a81111561151357600080fd5b82018360208201111561152557600080fd5b803590602001918460018302840111602060020a8311171561154657600080fd5b919390929091602081019035602060020a81111561156357600080fd5b82018360208201111561157557600080fd5b803590602001918460018302840111602060020a8311171561159657600080fd5b9193509150600160a060020a038135811691602001351661664b565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561160357600080fd5b505afa158015611617573d6000803e3d6000fd5b505050506040513d602081101561162d57600080fd5b5051600160a060020a031633146116785760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b8085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506116bc92508491508390506149df565b15156001146116ff5760405160e560020a62461bcd0281526004018080602001828103825260228152602001806174076022913960400191505060405180910390fd5b836001148061170e5750836002145b806117195750836003145b15156117595760405160e560020a62461bcd0281526004018080602001828103825260258152602001806173946025913960400191505060405180910390fd5b6000546040517f84b7a84a000000000000000000000000000000000000000000000000000000008152600160a060020a03878116602483015260448201879052606060048301908152606483018a90529216916384b7a84a918a918a918a918a918190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156117fd57600080fd5b505af1158015611811573d6000803e3d6000fd5b5050505050505050505050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561186f57600080fd5b505afa158015611883573d6000803e3d6000fd5b505050506040513d602081101561189957600080fd5b5051600160a060020a031633146118e45760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506119269250839150616c399050565b151560011461196d576040805160e560020a62461bcd02815260206004820152601a6024820152600080516020617354833981519152604482015290519081900360640190fd5b8187878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506119b192508491508390506149df565b15156001146119f45760405160e560020a62461bcd0281526004018080602001828103825260228152602001806174076022913960400191505060405180910390fd5b6001546040517f7b713579000000000000000000000000000000000000000000000000000000008152604481018990528715156064820152861515608482015260a06004820190815260a482018d9052600160a060020a0390921691637b713579918e918e918e918e918e918e918e91908190602481019060c4018a8a80828437600083820152601f01601f191690910184810383528881526020019050888880828437600081840152601f19601f8201169050808301925050509950505050505050505050600060405180830381600087803b158015611ad457600080fd5b505af1158015611ae8573d6000803e3d6000fd5b505050505050505050505050505050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015611b4a57600080fd5b505afa158015611b5e573d6000803e3d6000fd5b505050506040513d6020811015611b7457600080fd5b5051600160a060020a03163314611bbf5760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b600a5460009060ff1615611c0b576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020617374833981519152604482015290519081900360640190fd5b611c17600688886172c5565b50611c24600786866172c5565b50611c31600884846172c5565b5050505050505050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015611c8c57600080fd5b505afa158015611ca0573d6000803e3d6000fd5b505050506040513d6020811015611cb657600080fd5b5051600160a060020a03163314611d015760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b80611d0b81615f52565b1515600114611d4e5760405160e560020a62461bcd0281526004018080602001828103825260268152602001806173e16026913960400191505060405180910390fd5b6000546040517f84b7a84a000000000000000000000000000000000000000000000000000000008152600160a060020a03858116602483015260046044830181905260608382019081526064840189905291909316926384b7a84a928992899289929091908190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611df657600080fd5b505af1158015611e0a573d6000803e3d6000fd5b50506002805460405160e060020a63e98ac22d028152600160a060020a03888116606483015260066084830181905260a060048401908152815460001960018216156101000201169590950460a4840181905291909316955063e98ac22d945091928a928a928a928692909182916024820191604481019160c49091019086908015611ed75780601f10611eac57610100808354040283529160200191611ed7565b820191906000526020600020905b815481529060010190602001808311611eba57829003601f168201915b50508481038352878152602001888880828437600081840152601f19601f82011690508083019250505084810382526000815260200160200198505050505050505050600060405180830381600087803b158015611f3457600080fd5b505af1158015611f48573d6000803e3d6000fd5b505050505050505050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015611fa457600080fd5b505afa158015611fb8573d6000803e3d6000fd5b505050506040513d6020811015611fce57600080fd5b5051600160a060020a031633146120195760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b8061202381615f52565b15156001146120665760405160e560020a62461bcd0281526004018080602001828103825260268152602001806173e16026913960400191505060405180910390fd5b6120a887878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250616d3e915050565b1515600114612101576040805160e560020a62461bcd02815260206004820152601260248201527f4e6f7468696e6720746f20617070726f76650000000000000000000000000000604482015290519081900360640190fd5b60068054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815261219b939092909183018282801561218e5780601f106121635761010080835404028352916020019161218e565b820191906000526020600020905b81548152906001019060200180831161217157829003601f168201915b5050505050836001616dc1565b1561252b57600480546040517fe3028316000000000000000000000000000000000000000000000000000000008152602092810192835260248101899052600160a060020a039091169163e3028316918a918a918190604401848480828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561223057600080fd5b505af1158015612244573d6000803e3d6000fd5b5050600180546009546040517f7b71357900000000000000000000000000000000000000000000000000000000815260448101829052606481018490526084810184905260a0600482019081526008805460026000198289161561010002019091160460a48401819052600160a060020a039095169750637b7135799650948e948e94939192839290918291602481019160c4909101908a90801561232a5780601f106122ff5761010080835404028352916020019161232a565b820191906000526020600020905b81548152906001019060200180831161230d57829003601f168201915b50508381038252878152602001888880828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b15801561237857600080fd5b505af115801561238c573d6000803e3d6000fd5b5050600354604080517f86bc36520000000000000000000000000000000000000000000000000000000081526004810191825260448101899052600160a060020a0390921693506386bc36529250889188918c918c919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561244f57600080fd5b505af1158015612463573d6000803e3d6000fd5b5050600054604080517fc214e5e5000000000000000000000000000000000000000000000000000000008152600160a060020a03888116602483015260048201928352604482018c9052909216935063c214e5e592508a918a9188918190606401858580828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b15801561250157600080fd5b505af1158015612515573d6000803e3d6000fd5b505050506040513d6020811015611f4857600080fd5b50505050505050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561258557600080fd5b505afa158015612599573d6000803e3d6000fd5b505050506040513d60208110156125af57600080fd5b5051600160a060020a031633146125fa5760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b8061260481615f52565b15156001146126475760405160e560020a62461bcd0281526004018080602001828103825260268152602001806173e16026913960400191505060405180910390fd5b60048054604080517f0cc274930000000000000000000000000000000000000000000000000000000081526024810187905292830190815260448301879052600092600160a060020a0390921691630cc27493918991899189918190606401858580828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b1580156126e357600080fd5b505af11580156126f7573d6000803e3d6000fd5b505050506040513d602081101561270d57600080fd5b50516002805460405160e060020a63e98ac22d0281526000606482018190526084820185905260a0600483019081526006805460001960018216156101000201169590950460a48401819052959650600160a060020a039093169463e98ac22d94938c938c939289929182916024820191604481019160c4909101908a9080156127d85780601f106127ad576101008083540402835291602001916127d8565b820191906000526020600020905b8154815290600101906020018083116127bb57829003601f168201915b50508481038352878152602001888880828437600081840152601f19601f82011690508083019250505084810382526000815260200160200198505050505050505050600060405180830381600087803b15801561283557600080fd5b505af1158015612849573d6000803e3d6000fd5b50505050505050505050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156128a657600080fd5b505afa1580156128ba573d6000803e3d6000fd5b505050506040513d60208110156128d057600080fd5b5051600160a060020a0316331461291b5760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b600a5460009060ff1615612967576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020617374833981519152604482015290519081900360640190fd5b600354604080517fe3b09d840000000000000000000000000000000000000000000000000000000081526004810191825260448101859052600160a060020a039092169163e3b09d84918691869160069181906024810190606401868680828437600083820152601f01601f191690910184810383528554600260001961010060018416150201909116048082526020909101915085908015612a4b5780601f10612a2057610100808354040283529160200191612a4b565b820191906000526020600020905b815481529060010190602001808311612a2e57829003601f168201915b505095505050505050600060405180830381600087803b158015612a6e57600080fd5b505af115801561252b573d6000803e3d6000fd5b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015612ad357600080fd5b505afa158015612ae7573d6000803e3d6000fd5b505050506040513d6020811015612afd57600080fd5b5051600160a060020a03163314612b485760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612b8a9250839150616ed19050565b1515600114612be3576040805160e560020a62461bcd02815260206004820152601260248201527f6f726720646f6573206e6f742065786973740000000000000000000000000000604482015290519081900360640190fd5b81612bed81615f52565b1515600114612c305760405160e560020a62461bcd0281526004018080602001828103825260268152602001806173e16026913960400191505060405180910390fd5b6000546040517fe3483a9d000000000000000000000000000000000000000000000000000000008152600160a060020a0388811660048301908152600160648401819052608060248501908152608485018d9052929094169363e3483a9d938b938e938e938d938d9391929190604481019060a401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b158015612d0957600080fd5b505af1158015612d1d573d6000803e3d6000fd5b50506002805460405160e060020a63e98ac22d028152600160a060020a038b8116606483015260046084830181905260a08382019081526006805460001960018216156101000201169690960460a4850181905292909416965063e98ac22d95508e938e938e9382916024810191604482019160c401908a908015612de35780601f10612db857610100808354040283529160200191612de3565b820191906000526020600020905b815481529060010190602001808311612dc657829003601f168201915b50508481038352878152602001888880828437600081840152601f19601f82011690508083019250505084810382526000815260200160200198505050505050505050600060405180830381600087803b158015612e4057600080fd5b505af1158015612e54573d6000803e3d6000fd5b505050505050505050505050565b600554604080517fe572515c0000000000000000000000000000000000000000000000000000000081529051600092600160a060020a03169163e572515c916004808301926020929190829003018186803b158015612ec057600080fd5b505afa158015612ed4573d6000803e3d6000fd5b505050506040513d6020811015612eea57600080fd5b5051600160a060020a03163314612f355760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b600a5460009060ff1615612f81576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020617374833981519152604482015290519081900360640190fd5b600a805460ff19166001179081905560ff1691505b5090565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015612feb57600080fd5b505afa158015612fff573d6000803e3d6000fd5b505050506040513d602081101561301557600080fd5b5051600160a060020a031633146130605760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b8061306a81615f52565b15156001146130ad5760405160e560020a62461bcd0281526004018080602001828103825260268152602001806173e16026913960400191505060405180910390fd5b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152613147939092909183018282801561313a5780601f1061310f5761010080835404028352916020019161313a565b820191906000526020600020905b81548152906001019060200180831161311d57829003601f168201915b5050505050836006616dc1565b156131f5576000546040517f84b7a84a000000000000000000000000000000000000000000000000000000008152600160a060020a0385811660248301526005604483018190526060600484019081526064840189905291909316926384b7a84a928992899289929091908190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611f3457600080fd5b5050505050565b600a5460ff165b90565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561325757600080fd5b505afa15801561326b573d6000803e3d6000fd5b505050506040513d602081101561328157600080fd5b5051600160a060020a031633146132cc5760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b600a5460009060ff1615613318576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020617374833981519152604482015290519081900360640190fd5b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526133b293909290918301828280156133a55780601f1061337a576101008083540402835291602001916133a5565b820191906000526020600020905b81548152906001019060200180831161338857829003601f168201915b5050505050836001616f96565b6000546040517fe3483a9d000000000000000000000000000000000000000000000000000000008152600160a060020a038481166004830190815260026064840181905260806024850190815260068054600019600182161561010002011683900460848701819052949096169563e3483a9d95899591946007949390929091604481019160a4909101908790801561348c5780601f106134615761010080835404028352916020019161348c565b820191906000526020600020905b81548152906001019060200180831161346f57829003601f168201915b50508381038252855460026000196101006001841615020190911604808252602090910190869080156135005780601f106134d557610100808354040283529160200191613500565b820191906000526020600020905b8154815290600101906020018083116134e357829003601f168201915b50509650505050505050600060405180830381600087803b15801561352457600080fd5b505af1158015613538573d6000803e3d6000fd5b505050505050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561359157600080fd5b505afa1580156135a5573d6000803e3d6000fd5b505050506040513d60208110156135bb57600080fd5b5051600160a060020a031633146136065760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506136489250839150616c399050565b151560011461368f576040805160e560020a62461bcd02815260206004820152601a6024820152600080516020617354833981519152604482015290519081900360640190fd5b8186868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506136d392508491508390506149df565b15156001146137165760405160e560020a62461bcd0281526004018080602001828103825260228152602001806174076022913960400191505060405180910390fd5b600354604080517f3f5e1a450000000000000000000000000000000000000000000000000000000081526004810191825260448101889052600160a060020a0390921691633f5e1a4591899189918d918d919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015612e4057600080fd5b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561382657600080fd5b505afa15801561383a573d6000803e3d6000fd5b505050506040513d602081101561385057600080fd5b5051600160a060020a0316331461389b5760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b82828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506138dd9250839150616c399050565b1515600114613924576040805160e560020a62461bcd02815260206004820152601a6024820152600080516020617354833981519152604482015290519081900360640190fd5b8184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061396892508491508390506149df565b15156001146139ab5760405160e560020a62461bcd0281526004018080602001828103825260228152602001806174076022913960400191505060405180910390fd5b6040805160208082019081526007805460026000196101006001841615020190911604938301849052929091829160609091019084908015613a2e5780601f10613a0357610100808354040283529160200191613a2e565b820191906000526020600020905b815481529060010190602001808311613a1157829003601f168201915b50509250505060405160208183030381529060405280519060200120888860405160200180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040528051906020012014158015613b9b57506040805160208082019081526008805460026000196101006001841615020190911604938301849052929091829160609091019084908015613b295780601f10613afe57610100808354040283529160200191613b29565b820191906000526020600020905b815481529060010190602001808311613b0c57829003601f168201915b50509250505060405160208183030381529060405280519060200120888860405160200180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040528051906020012014155b1515613bf1576040805160e560020a62461bcd02815260206004820152601d60248201527f61646d696e20726f6c65732063616e6e6f742062652072656d6f766564000000604482015290519081900360640190fd5b600154604080517fa634301200000000000000000000000000000000000000000000000000000000815260048101918252604481018a9052600160a060020a039092169163a6343012918b918b918b918b919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015612e4057600080fd5b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015613d0157600080fd5b505afa158015613d15573d6000803e3d6000fd5b505050506040513d6020811015613d2b57600080fd5b5051600160a060020a03163314613d765760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b80613d8081615f52565b1515600114613dc35760405160e560020a62461bcd0281526004018080602001828103825260268152602001806173e16026913960400191505060405180910390fd5b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152613e5d9390929091830182828015613e505780601f10613e2557610100808354040283529160200191613e50565b820191906000526020600020905b815481529060010190602001808311613e3357829003601f168201915b5050505050836005616dc1565b15613538576003546040517f0cc5014600000000000000000000000000000000000000000000000000000000815260056044820181905260606004830190815260648301879052600160a060020a0390931692630cc5014692889288928c928c92919081906024810190608401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b15801561283557600080fd5b60008054604080517f6b568d76000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301908152602483019384528651604484015286519190941693636b568d76938893889360649091019060208501908083838c5b83811015613fb1578181015183820152602001613f99565b50505050905090810190601f168015613fde5780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b158015613ffc57600080fd5b505afa158015614010573d6000803e3d6000fd5b505050506040513d602081101561402657600080fd5b505190505b92915050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561408257600080fd5b505afa158015614096573d6000803e3d6000fd5b505050506040513d60208110156140ac57600080fd5b5051600160a060020a031633146140f75760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b8061410181615f52565b15156001146141445760405160e560020a62461bcd0281526004018080602001828103825260268152602001806173e16026913960400191505060405180910390fd5b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526141de93909290918301828280156141d15780601f106141a6576101008083540402835291602001916141d1565b820191906000526020600020905b8154815290600101906020018083116141b457829003601f168201915b5050505050836004616dc1565b156131f557600080546040517f1d09dc93000000000000000000000000000000000000000000000000000000008152602060048201908152602482018890528392600160a060020a031691631d09dc93918a918a91908190604401848480828437600081840152601f19601f82011690508083019250505093505050506040805180830381600087803b15801561427457600080fd5b505af1158015614288573d6000803e3d6000fd5b505050506040513d604081101561429e57600080fd5b5080516020909101519092509050811561434c5760068054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815261434c939092909183018282801561433f5780601f106143145761010080835404028352916020019161433f565b820191906000526020600020905b81548152906001019060200180831161432257829003601f168201915b5050505050826000616f96565b60008054604080517fc214e5e5000000000000000000000000000000000000000000000000000000008152600160a060020a03898116602483015260048201928352604482018b90529092169163c214e5e5918b918b918b918190606401858580828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b1580156143e757600080fd5b505af11580156143fb573d6000803e3d6000fd5b505050506040513d602081101561441157600080fd5b505190508015611c315760068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152611c3193909290918301828280156144a85780601f1061447d576101008083540402835291602001916144a8565b820191906000526020600020905b81548152906001019060200180831161448b57829003601f168201915b5050505050876001616f96565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561450657600080fd5b505afa15801561451a573d6000803e3d6000fd5b505050506040513d602081101561453057600080fd5b5051600160a060020a0316331461457b5760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b808361458782826149df565b15156001146145ca5760405160e560020a62461bcd0281526004018080602001828103825260228152602001806174076022913960400191505060405180910390fd5b846145d481616c39565b151560011461461b576040805160e560020a62461bcd02815260206004820152601a6024820152600080516020617354833981519152604482015290519081900360640190fd5b6146258787613f2d565b151560011461467e576040805160e560020a62461bcd02815260206004820152601d60248201527f6f7065726174696f6e2063616e6e6f7420626520706572666f726d6564000000604482015290519081900360640190fd5b6146888587617158565b15156001146146e1576040805160e560020a62461bcd02815260206004820152601460248201527f726f6c6520646f6573206e6f7420657869737473000000000000000000000000604482015290519081900360640190fd5b600154600090600160a060020a031663be322e54878961470081617173565b6040518463ffffffff1660e060020a02815260040180806020018060200180602001848103845287818151815260200191508051906020019080838360005b8381101561475757818101518382015260200161473f565b50505050905090810190601f1680156147845780820380516001836020036101000a031916815260200191505b50848103835286518152865160209182019188019080838360005b838110156147b757818101518382015260200161479f565b50505050905090810190601f1680156147e45780820380516001836020036101000a031916815260200191505b50848103825285518152855160209182019187019080838360005b838110156148175781810151838201526020016147ff565b50505050905090810190601f1680156148445780820380516001836020036101000a031916815260200191505b50965050505050505060206040518083038186803b15801561486557600080fd5b505afa158015614879573d6000803e3d6000fd5b505050506040513d602081101561488f57600080fd5b5051600080546040517f143a5604000000000000000000000000000000000000000000000000000000008152600160a060020a038c81166004830190815285151560648401526080602484019081528d5160848501528d51969750919093169463143a5604948e948e948e948a9492939092604483019260a401916020890191908190849084905b8381101561492f578181015183820152602001614917565b50505050905090810190601f16801561495c5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561498f578181015183820152602001614977565b50505050905090810190601f1680156149bc5780820380516001836020036101000a031916815260200191505b509650505050505050600060405180830381600087803b158015612e4057600080fd5b60008054600160a060020a031663e8b42bf484846149fc81617173565b6040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a031681526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015614a67578181015183820152602001614a4f565b50505050905090810190601f168015614a945780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015614ac7578181015183820152602001614aaf565b50505050905090810190601f168015614af45780820380516001836020036101000a031916815260200191505b509550505050505060206040518083038186803b158015614b1457600080fd5b505afa158015614b28573d6000803e3d6000fd5b505050506040513d6020811015614b3e57600080fd5b505115614b4d5750600161402b565b60015460008054604080517f81d66b23000000000000000000000000000000000000000000000000000000008152600160a060020a03888116600483015291519482169463be322e549493909216926381d66b2392602480840193829003018186803b158015614bbc57600080fd5b505afa158015614bd0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015614bf957600080fd5b810190808051602060020a811115614c1057600080fd5b82016020810184811115614c2357600080fd5b8151602060020a811182820187101715614c3c57600080fd5b505092919050505084614c4e86617173565b6040518463ffffffff1660e060020a02815260040180806020018060200180602001848103845287818151815260200191508051906020019080838360005b83811015614ca5578181015183820152602001614c8d565b50505050905090810190601f168015614cd25780820380516001836020036101000a031916815260200191505b50848103835286518152865160209182019188019080838360005b83811015614d05578181015183820152602001614ced565b50505050905090810190601f168015614d325780820380516001836020036101000a031916815260200191505b50848103825285518152855160209182019187019080838360005b83811015614d65578181015183820152602001614d4d565b50505050905090810190601f168015614d925780820380516001836020036101000a031916815260200191505b50965050505050505060206040518083038186803b158015613ffc57600080fd5b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015614e0457600080fd5b505afa158015614e18573d6000803e3d6000fd5b505050506040513d6020811015614e2e57600080fd5b5051600160a060020a03163314614e795760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b600a5460009060ff1615614ec5576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020617374833981519152604482015290519081900360640190fd5b600480546040517f9e58eb9f00000000000000000000000000000000000000000000000000000000815260248101869052604481018590526060928101928352600680546002600019600183161561010002019091160460648301819052600160a060020a0390931693639e58eb9f9391928892889291829160849091019086908015614f935780601f10614f6857610100808354040283529160200191614f93565b820191906000526020600020905b815481529060010190602001808311614f7657829003601f168201915b5050945050505050600060405180830381600087803b158015614fb557600080fd5b505af1158015614fc9573d6000803e3d6000fd5b5050600180546009546040517f7b71357900000000000000000000000000000000000000000000000000000000815260448101829052606481018490526084810184905260a0600482019081526007805460026000198289161561010002019091160460a48401819052600160a060020a039095169750637b71357996509460069490928392918291602481019160c490910190899080156150ac5780601f10615081576101008083540402835291602001916150ac565b820191906000526020600020905b81548152906001019060200180831161508f57829003601f168201915b50508381038252875460026000196101006001841615020190911604808252602090910190889080156151205780601f106150f557610100808354040283529160200191615120565b820191906000526020600020905b81548152906001019060200180831161510357829003601f168201915b5050975050505050505050600060405180830381600087803b15801561514557600080fd5b505af1158015615159573d6000803e3d6000fd5b5050600054604080517fcef7f6af00000000000000000000000000000000000000000000000000000000815260048101918252600780546002600019600183161561010002019091160460448301819052600160a060020a03909416955063cef7f6af9450926008929182916024820191606401908690801561521d5780601f106151f25761010080835404028352916020019161521d565b820191906000526020600020905b81548152906001019060200180831161520057829003601f168201915b50508381038252845460026000196101006001841615020190911604808252602090910190859080156152915780601f1061526657610100808354040283529160200191615291565b820191906000526020600020905b81548152906001019060200180831161527457829003601f168201915b5050945050505050600060405180830381600087803b158015612a6e57600080fd5b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561530457600080fd5b505afa158015615318573d6000803e3d6000fd5b505050506040513d602081101561532e57600080fd5b5051600160a060020a031633146153795760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506153bb9250839150616ed19050565b1515600114615414576040805160e560020a62461bcd02815260206004820152601260248201527f6f726720646f6573206e6f742065786973740000000000000000000000000000604482015290519081900360640190fd5b8188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061545892508491508390506149df565b151560011461549b5760405160e560020a62461bcd0281526004018080602001828103825260228152602001806174076022913960400191505060405180910390fd5b60048054604080517f1f953480000000000000000000000000000000000000000000000000000000008152928301908152604483018c9052600160a060020a0390911691631f953480918d918d918d918d919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561555a57600080fd5b505af115801561556e573d6000803e3d6000fd5b5050505060608a8a8a8a604051602001808585808284377f2e00000000000000000000000000000000000000000000000000000000000000920191825250600101838380828437808301925050509450505050506040516020818303038152906040529050600087879050111561181157600354604080517f3f5e1a450000000000000000000000000000000000000000000000000000000081526004810191825260448101899052600160a060020a0390921691633f5e1a45918a918a918691819060248101906064018686808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015615689578181015183820152602001615671565b50505050905090810190601f1680156156b65780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015611ad457600080fd5b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561572957600080fd5b505afa15801561573d573d6000803e3d6000fd5b505050506040513d602081101561575357600080fd5b5051600160a060020a0316331461579e5760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b806157a881615f52565b15156001146157eb5760405160e560020a62461bcd0281526004018080602001828103825260268152602001806173e16026913960400191505060405180910390fd5b82600114806157fa5750826002145b1515615850576040805160e560020a62461bcd02815260206004820152601560248201527f4f7065726174696f6e206e6f7420616c6c6f7765640000000000000000000000604482015290519081900360640190fd5b60008084600114156158685750600290506003615879565b846002141561587957506003905060055b6158ba87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250859250616d3e915050565b1515600114615913576040805160e560020a62461bcd02815260206004820152601560248201527f6f7065726174696f6e206e6f7420616c6c6f7765640000000000000000000000604482015290519081900360640190fd5b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526159ac93909290918301828280156159a05780601f10615975576101008083540402835291602001916159a0565b820191906000526020600020905b81548152906001019060200180831161598357829003601f168201915b50505050508584616dc1565b1561252b5760048054604080517f14f775f90000000000000000000000000000000000000000000000000000000081526024810189905292830190815260448301899052600160a060020a03909116916314f775f9918a918a918a918190606401858580828437600081840152601f19601f820116905080830192505050945050505050600060405180830381600087803b1580156117fd57600080fd5b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015615a9b57600080fd5b505afa158015615aaf573d6000803e3d6000fd5b505050506040513d6020811015615ac557600080fd5b5051600160a060020a03163314615b105760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b80615b1a81615f52565b1515600114615b5d5760405160e560020a62461bcd0281526004018080602001828103825260268152602001806173e16026913960400191505060405180910390fd5b6003546040517f0cc50146000000000000000000000000000000000000000000000000000000008152600460448201819052606082820190815260648301879052600160a060020a0390931692630cc5014692889288928c928c92919081906024810190608401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015615c2757600080fd5b505af1158015615c3b573d6000803e3d6000fd5b50506002805460405160e060020a63e98ac22d02815260006064820181905260056084830181905260a0600484019081526006805460001960018216156101000201169690960460a48501819052600160a060020a03909516975063e98ac22d96508d948d948d948d9490939092909182916024820191604481019160c4909101908c908015615d0c5780601f10615ce157610100808354040283529160200191615d0c565b820191906000526020600020905b815481529060010190602001808311615cef57829003601f168201915b505084810383528981526020018a8a80828437600083820152601f01601f191690910185810383528881526020019050888880828437600081840152601f19601f8201169050808301925050509a5050505050505050505050600060405180830381600087803b15801561283557600080fd5b600a5460068054604080516020601f6002600019600187161561010002019095169490940493840181900481028201810190925282815260609485948594600094919360079360089360ff909116928691830182828015615e215780601f10615df657610100808354040283529160200191615e21565b820191906000526020600020905b815481529060010190602001808311615e0457829003601f168201915b5050865460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815295995088945092508401905082828015615eaf5780601f10615e8457610100808354040283529160200191615eaf565b820191906000526020600020905b815481529060010190602001808311615e9257829003601f168201915b5050855460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815295985087945092508401905082828015615f3d5780601f10615f1257610100808354040283529160200191615f3d565b820191906000526020600020905b815481529060010190602001808311615f2057829003601f168201915b50505050509150935093509350935090919293565b60408051602080820190815260078054600260001961010060018416150201909116049383018490526000939092829160609091019084908015615fd75780601f10615fac57610100808354040283529160200191615fd7565b820191906000526020600020905b815481529060010190602001808311615fba57829003601f168201915b505060408051601f198184030181528282528051602090910120600080547f81d66b23000000000000000000000000000000000000000000000000000000008552600160a060020a038a8116600487015293519297509290921694506381d66b239350602480840193829003018186803b15801561605457600080fd5b505afa158015616068573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561609157600080fd5b810190808051602060020a8111156160a857600080fd5b820160208101848111156160bb57600080fd5b8151602060020a8111828201871017156160d457600080fd5b50509291905050506040516020018080602001828103825283818151815260200191508051906020019080838360005b8381101561611c578181015183820152602001616104565b50505050905090810190601f1680156161495780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120149050919050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156161bd57600080fd5b505afa1580156161d1573d6000803e3d6000fd5b505050506040513d60208110156161e757600080fd5b5051600160a060020a031633146162325760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b8086868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061627692508491508390506149df565b15156001146162b95760405160e560020a62461bcd0281526004018080602001828103825260228152602001806174076022913960400191505060405180910390fd5b83600114806162c85750836002145b806162d35750836003145b15156163135760405160e560020a62461bcd0281526004018080602001828103825260258152602001806173946025913960400191505060405180910390fd5b6003546040517f0cc501460000000000000000000000000000000000000000000000000000000081526044810186905260606004820190815260648201889052600160a060020a0390921691630cc5014691899189918d918d918b919081906024810190608401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015612e4057600080fd5b6002546040517f014e6acc0000000000000000000000000000000000000000000000000000000081526020600482019081526024820184905260609283926000928392600160a060020a03169163014e6acc9189918991908190604401848480828437600081840152601f19601f820116905080830192505050935050505060006040518083038186803b15801561647457600080fd5b505afa158015616488573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260808110156164b157600080fd5b810190808051602060020a8111156164c857600080fd5b820160208101848111156164db57600080fd5b8151602060020a8111828201871017156164f457600080fd5b50509291906020018051602060020a81111561650f57600080fd5b8201602081018481111561652257600080fd5b8151602060020a81118282018710171561653b57600080fd5b50506020820151604090920151949b909a5090985092965091945050505050565b600554600160a060020a031633146165be576040805160e560020a62461bcd02815260206004820152600e60248201527f696e76616c69642063616c6c6572000000000000000000000000000000000000604482015290519081900360640190fd5b600a5460009060ff161561660a576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020617374833981519152604482015290519081900360640190fd5b616616600689896172c5565b50616623600787876172c5565b50616630600885856172c5565b5050600a805460ff1916911515919091179055505050505050565b600560009054906101000a9004600160a060020a0316600160a060020a031663e572515c6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561669c57600080fd5b505afa1580156166b0573d6000803e3d6000fd5b505050506040513d60208110156166c657600080fd5b5051600160a060020a031633146167115760405160e560020a62461bcd0281526004018080602001828103825260288152602001806173b96028913960400191505060405180910390fd5b600a5460019060ff1615158114616760576040805160e560020a62461bcd02815260206004820152601d6024820152600080516020617374833981519152604482015290519081900360640190fd5b8161676a81615f52565b15156001146167ad5760405160e560020a62461bcd0281526004018080602001828103825260268152602001806173e16026913960400191505060405180910390fd5b6002805460405160e060020a63e98ac22d028152600160a060020a03878116606483015260016084830181905260a06004840190815260068054600019818516156101000201169690960460a48501819052929094169463e98ac22d9490938e938e938e938e938e9382916024810191604482019160c401908c9080156168755780601f1061684a57610100808354040283529160200191616875565b820191906000526020600020905b81548152906001019060200180831161685857829003601f168201915b505084810383528981526020018a8a80828437600083820152601f01601f191690910185810383528881526020019050888880828437600081840152601f19601f8201169050808301925050509a5050505050505050505050600060405180830381600087803b1580156168e857600080fd5b505af11580156168fc573d6000803e3d6000fd5b5050600480546040517ff9953de50000000000000000000000000000000000000000000000000000000081526020928101928352602481018c9052600160a060020a03909116935063f9953de592508b918b918190604401848480828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561699057600080fd5b505af11580156169a4573d6000803e3d6000fd5b5050600354604080517fa97a440600000000000000000000000000000000000000000000000000000000815260048101918252604481018a9052600160a060020a03909216935063a97a44069250899189918d918d919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015616a6757600080fd5b505af1158015616a7b573d6000803e3d6000fd5b50505050616abf8489898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613f2d92505050565b1515600114616b18576040805160e560020a62461bcd02815260206004820152601d60248201527f4f7065726174696f6e2063616e6e6f7420626520706572666f726d6564000000604482015290519081900360640190fd5b6000546040517fe3483a9d000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301908152600160648401819052608060248501908152608485018d9052929094169363e3483a9d9389938e938e93600893909290604481019060a401878780828437600083820152601f01601f191690910184810383528654600260001961010060018416150201909116048082526020909101915086908015616c145780601f10616be957610100808354040283529160200191616c14565b820191906000526020600020905b815481529060010190602001808311616bf757829003601f168201915b5050975050505050505050600060405180830381600087803b158015612e4057600080fd5b60048054604080517f8c8642df000000000000000000000000000000000000000000000000000000008152600260248201819052938101918252845160448201528451600094600160a060020a0390941693638c8642df93879391929091829160649091019060208601908083838c5b83811015616cc1578181015183820152602001616ca9565b50505050905090810190601f168015616cee5780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b158015616d0c57600080fd5b505afa158015616d20573d6000803e3d6000fd5b505050506040513d6020811015616d3657600080fd5b505192915050565b60048054604080517f8c8642df00000000000000000000000000000000000000000000000000000000815260248101859052928301908152845160448401528451600093600160a060020a0390931692638c8642df9287928792829160649091019060208601908083838c83811015613fb1578181015183820152602001613f99565b6002546040517fb0213864000000000000000000000000000000000000000000000000000000008152600160a060020a03848116602483015260448201849052606060048301908152865160648401528651600094929092169263b02138649288928892889282916084019060208701908083838d5b83811015616e4f578181015183820152602001616e37565b50505050905090810190601f168015616e7c5780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b158015616e9d57600080fd5b505af1158015616eb1573d6000803e3d6000fd5b505050506040513d6020811015616ec757600080fd5b5051949350505050565b600480546040517fffe40d1d0000000000000000000000000000000000000000000000000000000081526020928101838152845160248301528451600094600160a060020a039094169363ffe40d1d9387939283926044909201918501908083838b5b83811015616f4c578181015183820152602001616f34565b50505050905090810190601f168015616f795780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b158015616d0c57600080fd5b801561708657600254604080517f5607395b000000000000000000000000000000000000000000000000000000008152600160a060020a03858116602483015260048201928352865160448301528651931692635607395b9287928792829160640190602086019080838360005b8381101561701c578181015183820152602001617004565b50505050905090810190601f1680156170495780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b15801561706957600080fd5b505af115801561707d573d6000803e3d6000fd5b50505050617153565b600254604080517f59cbd6fe000000000000000000000000000000000000000000000000000000008152600160a060020a038581166024830152600482019283528651604483015286519316926359cbd6fe9287928792829160640190602086019080838360005b838110156171065781810151838201526020016170ee565b50505050905090810190601f1680156171335780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b158015612a6e57600080fd5b505050565b600154600090600160a060020a031663abf5739f8484614c4e815b600480546040517f177c8d8a0000000000000000000000000000000000000000000000000000000081526020928101838152845160248301528451606094600160a060020a039094169363177c8d8a93879392839260449092019185019080838360005b838110156171ef5781810151838201526020016171d7565b50505050905090810190601f16801561721c5780820380516001836020036101000a031916815260200191505b509250505060006040518083038186803b15801561723957600080fd5b505afa15801561724d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561727657600080fd5b810190808051602060020a81111561728d57600080fd5b820160208101848111156172a057600080fd5b8151602060020a8111828201871017156172b957600080fd5b50909695505050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106173065782800160ff19823516178555617333565b82800160010185558215617333579182015b82811115617333578235825591602001919060010190617318565b50612f96926132039250905b80821115612f96576000815560010161733f56fe6f7267206e6f7420696e20617070726f76656420737461747573000000000000496e636f7272656374206e6574776f726b20626f6f7420737461747573000000696e76616c696420616374696f6e2e206f7065726174696f6e206e6f7420616c6c6f77656463616e2062652063616c6c656420627920696e7465726661636520636f6e7472616374206f6e6c796163636f756e74206973206e6f742061206e6574776f726b2061646d696e206163636f756e746163636f756e74206973206e6f742061206f72672061646d696e206163636f756e74a165627a7a7230582075d7685160113f65122a5b704814adf275ee53e84d62f90520938fb766d14a760029 \ No newline at end of file diff --git a/permission/contract/gen/PermissionsInterface.bin b/permission/contract/gen/PermissionsInterface.bin index 20a8c7bbe..0baff076f 100644 --- a/permission/contract/gen/PermissionsInterface.bin +++ b/permission/contract/gen/PermissionsInterface.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b506040516020806127ff8339810180604052602081101561003057600080fd5b505160028054600160a060020a031916600160a060020a0390921691909117905561279f806100606000396000f3fe608060405234801561001057600080fd5b50600436106101d35760003560e060020a900480635adbfa7a116101085780639bd38101116100a6578063a97a440611610075578063a97a440614610f54578063bb3b6e8014611012578063d1aa0c2014611080578063f346a3a7146110a6576101d3565b80639bd3810114610d7e578063a5843f0814610dfc578063a634301214610e1f578063a97914bf14610edd576101d3565b80637e461258116100e25780637e46125814610ab557806384b7a84a14610b7c5780638cb58ef314610bf95780638f362a3e14610cb7576101d3565b80635adbfa7a1461090b5780635be9672c146109c95780636b568d7614610a37576101d3565b806343de646c116101755780634cff819e1161014f5780634cff819e146106e35780634fe57e7a146107f1578063511bbd9f1461081757806351f604c31461083d576101d3565b806343de646c146105f457806344478e79146106bf5780634cbfa82e146106db576101d3565b80631b610220116101b15780631b610220146103335780632f7f0a12146104415780633e239b231461050f5780633f25c28814610586576101d3565b806303ed6933146101d85780630cc50146146101fc57806316724c44146102bc575b600080fd5b6101e0611212565b60408051600160a060020a039092168252519081900360200190f35b6102ba6004803603606081101561021257600080fd5b810190602081018135602060020a81111561022c57600080fd5b82018360208201111561023e57600080fd5b803590602001918460018302840111602060020a8311171561025f57600080fd5b919390929091602081019035602060020a81111561027c57600080fd5b82018360208201111561028e57600080fd5b803590602001918460018302840111602060020a831117156102af57600080fd5b919350915035611221565b005b6102ba600480360360408110156102d257600080fd5b810190602081018135602060020a8111156102ec57600080fd5b8201836020820111156102fe57600080fd5b803590602001918460018302840111602060020a8311171561031f57600080fd5b919350915035600160a060020a0316611314565b6102ba6004803603606081101561034957600080fd5b810190602081018135602060020a81111561036357600080fd5b82018360208201111561037557600080fd5b803590602001918460018302840111602060020a8311171561039657600080fd5b919390929091602081019035602060020a8111156103b357600080fd5b8201836020820111156103c557600080fd5b803590602001918460018302840111602060020a831117156103e657600080fd5b919390929091602081019035602060020a81111561040357600080fd5b82018360208201111561041557600080fd5b803590602001918460018302840111602060020a8311171561043657600080fd5b5090925090506113d9565b6102ba6004803603606081101561045757600080fd5b600160a060020a038235169190810190604081016020820135602060020a81111561048157600080fd5b82018360208201111561049357600080fd5b803590602001918460018302840111602060020a831117156104b457600080fd5b919390929091602081019035602060020a8111156104d157600080fd5b8201836020820111156104e357600080fd5b803590602001918460018302840111602060020a8311171561050457600080fd5b5090925090506114e7565b6102ba6004803603604081101561052557600080fd5b810190602081018135602060020a81111561053f57600080fd5b82018360208201111561055157600080fd5b803590602001918460018302840111602060020a8311171561057257600080fd5b919350915035600160a060020a03166115bf565b6102ba6004803603602081101561059c57600080fd5b810190602081018135602060020a8111156105b657600080fd5b8201836020820111156105c857600080fd5b803590602001918460018302840111602060020a831117156105e957600080fd5b509092509050611667565b6102ba6004803603606081101561060a57600080fd5b810190602081018135602060020a81111561062457600080fd5b82018360208201111561063657600080fd5b803590602001918460018302840111602060020a8311171561065757600080fd5b91939092600160a060020a0383351692604081019060200135602060020a81111561068157600080fd5b82018360208201111561069357600080fd5b803590602001918460018302840111602060020a831117156106b457600080fd5b509092509050611713565b6106c76117e8565b604080519115158252519081900360200190f35b6106c761186d565b6102ba600480360360608110156106f957600080fd5b810190602081018135602060020a81111561071357600080fd5b82018360208201111561072557600080fd5b803590602001918460018302840111602060020a8311171561074657600080fd5b919390929091602081019035602060020a81111561076357600080fd5b82018360208201111561077557600080fd5b803590602001918460018302840111602060020a8311171561079657600080fd5b919390929091602081019035602060020a8111156107b357600080fd5b8201836020820111156107c557600080fd5b803590602001918460018302840111602060020a831117156107e657600080fd5b5090925090506118d3565b6102ba6004803603602081101561080757600080fd5b5035600160a060020a03166119ca565b6102ba6004803603602081101561082d57600080fd5b5035600160a060020a0316611a49565b6102ba600480360360a081101561085357600080fd5b810190602081018135602060020a81111561086d57600080fd5b82018360208201111561087f57600080fd5b803590602001918460018302840111602060020a831117156108a057600080fd5b919390929091602081019035602060020a8111156108bd57600080fd5b8201836020820111156108cf57600080fd5b803590602001918460018302840111602060020a831117156108f057600080fd5b91935091508035906020810135151590604001351515611af1565b6102ba6004803603604081101561092157600080fd5b810190602081018135602060020a81111561093b57600080fd5b82018360208201111561094d57600080fd5b803590602001918460018302840111602060020a8311171561096e57600080fd5b919390929091602081019035602060020a81111561098b57600080fd5b82018360208201111561099d57600080fd5b803590602001918460018302840111602060020a831117156109be57600080fd5b509092509050611bfc565b6102ba600480360360408110156109df57600080fd5b810190602081018135602060020a8111156109f957600080fd5b820183602082011115610a0b57600080fd5b803590602001918460018302840111602060020a83111715610a2c57600080fd5b919350915035611ce4565b6106c760048036036040811015610a4d57600080fd5b600160a060020a038235169190810190604081016020820135602060020a811115610a7757600080fd5b820183602082011115610a8957600080fd5b803590602001918460018302840111602060020a83111715610aaa57600080fd5b509092509050611d87565b6102ba60048036036060811015610acb57600080fd5b810190602081018135602060020a811115610ae557600080fd5b820183602082011115610af757600080fd5b803590602001918460018302840111602060020a83111715610b1857600080fd5b919390929091602081019035602060020a811115610b3557600080fd5b820183602082011115610b4757600080fd5b803590602001918460018302840111602060020a83111715610b6857600080fd5b919350915035600160a060020a0316611e55565b6102ba60048036036060811015610b9257600080fd5b810190602081018135602060020a811115610bac57600080fd5b820183602082011115610bbe57600080fd5b803590602001918460018302840111602060020a83111715610bdf57600080fd5b9193509150600160a060020a038135169060200135611f2a565b6102ba60048036036040811015610c0f57600080fd5b810190602081018135602060020a811115610c2957600080fd5b820183602082011115610c3b57600080fd5b803590602001918460018302840111602060020a83111715610c5c57600080fd5b919390929091602081019035602060020a811115610c7957600080fd5b820183602082011115610c8b57600080fd5b803590602001918460018302840111602060020a83111715610cac57600080fd5b509092509050611fda565b6102ba60048036036060811015610ccd57600080fd5b810190602081018135602060020a811115610ce757600080fd5b820183602082011115610cf957600080fd5b803590602001918460018302840111602060020a83111715610d1a57600080fd5b919390929091602081019035602060020a811115610d3757600080fd5b820183602082011115610d4957600080fd5b803590602001918460018302840111602060020a83111715610d6a57600080fd5b919350915035600160a060020a03166120a4565b6106c760048036036040811015610d9457600080fd5b600160a060020a038235169190810190604081016020820135602060020a811115610dbe57600080fd5b820183602082011115610dd057600080fd5b803590602001918460018302840111602060020a83111715610df157600080fd5b509092509050612179565b6102ba60048036036040811015610e1257600080fd5b5080359060200135612213565b6102ba60048036036040811015610e3557600080fd5b810190602081018135602060020a811115610e4f57600080fd5b820183602082011115610e6157600080fd5b803590602001918460018302840111602060020a83111715610e8257600080fd5b919390929091602081019035602060020a811115610e9f57600080fd5b820183602082011115610eb157600080fd5b803590602001918460018302840111602060020a83111715610ed257600080fd5b50909250905061227b565b6102ba60048036036040811015610ef357600080fd5b810190602081018135602060020a811115610f0d57600080fd5b820183602082011115610f1f57600080fd5b803590602001918460018302840111602060020a83111715610f4057600080fd5b919350915035600160a060020a0316612345565b6102ba60048036036040811015610f6a57600080fd5b810190602081018135602060020a811115610f8457600080fd5b820183602082011115610f9657600080fd5b803590602001918460018302840111602060020a83111715610fb757600080fd5b919390929091602081019035602060020a811115610fd457600080fd5b820183602082011115610fe657600080fd5b803590602001918460018302840111602060020a8311171561100757600080fd5b5090925090506123ed565b6102ba6004803603604081101561102857600080fd5b810190602081018135602060020a81111561104257600080fd5b82018360208201111561105457600080fd5b803590602001918460018302840111602060020a8311171561107557600080fd5b9193509150356124b7565b6106c76004803603602081101561109657600080fd5b5035600160a060020a031661255a565b611114600480360360208110156110bc57600080fd5b810190602081018135602060020a8111156110d657600080fd5b8201836020820111156110e857600080fd5b803590602001918460018302840111602060020a8311171561110957600080fd5b5090925090506125f3565b60405180806020018060200185600160a060020a0316600160a060020a03168152602001848152602001838103835287818151815260200191508051906020019080838360005b8381101561117357818101518382015260200161115b565b50505050905090810190601f1680156111a05780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b838110156111d35781810151838201526020016111bb565b50505050905090810190601f1680156112005780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b600054600160a060020a031690565b6000546040517fdbfad71100000000000000000000000000000000000000000000000000000000815260448101839052336064820181905260806004830190815260848301889052600160a060020a039093169263dbfad711928992899289928992899290918190602481019060a401898980828437600083820152601f01601f191690910184810383528781526020019050878780828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b1580156112f557600080fd5b505af1158015611309573d6000803e3d6000fd5b505050505050505050565b6000546040517f88843041000000000000000000000000000000000000000000000000000000008152600160a060020a03838116602483015233604483018190526060600484019081526064840187905291909316926388843041928792879287929091908190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156113bc57600080fd5b505af11580156113d0573d6000803e3d6000fd5b50505050505050565b6000546040517f1b61022000000000000000000000000000000000000000000000000000000000815260606004820190815260648201889052600160a060020a0390921691631b610220918991899189918991899189918190602481019060448101906084018a8a80828437600083820152601f01601f191690910185810384528881526020019050888880828437600083820152601f01601f191690910185810383528681526020019050868680828437600081840152601f19601f8201169050808301925050509950505050505050505050600060405180830381600087803b1580156114c757600080fd5b505af11580156114db573d6000803e3d6000fd5b50505050505050505050565b6000546040517f8baa8191000000000000000000000000000000000000000000000000000000008152600160a060020a03878116600483019081523360648401819052608060248501908152608485018990529290941693638baa8191938a938a938a938a938a9391929190604481019060a401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b1580156112f557600080fd5b6000546040517f4b20f45f000000000000000000000000000000000000000000000000000000008152600160a060020a0383811660248301523360448301819052606060048401908152606484018790529190931692634b20f45f928792879287929091908190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156113bc57600080fd5b6000546040517f3f25c28800000000000000000000000000000000000000000000000000000000815260206004820190815260248201849052600160a060020a0390921691633f25c28891859185918190604401848480828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b1580156116f757600080fd5b505af115801561170b573d6000803e3d6000fd5b505050505050565b6000546040517f404bf3eb000000000000000000000000000000000000000000000000000000008152600160a060020a038581166024830152336064830181905260806004840190815260848401899052919093169263404bf3eb9289928992899289928992918190604481019060a401898980828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b1580156112f557600080fd5b60008060009054906101000a9004600160a060020a0316600160a060020a03166344478e796040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561183c57600080fd5b505af1158015611850573d6000803e3d6000fd5b505050506040513d602081101561186657600080fd5b5051905090565b60008060009054906101000a9004600160a060020a0316600160a060020a0316634cbfa82e6040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156118bf57600080fd5b505afa158015611850573d6000803e3d6000fd5b6000546040517fa64d2860000000000000000000000000000000000000000000000000000000008152336064820181905260806004830190815260848301899052600160a060020a039093169263a64d2860928a928a928a928a928a928a9281906024810190604481019060a4018b8b80828437600083820152601f01601f191690910185810384528981526020019050898980828437600083820152601f01601f191690910185810383528781526020019050878780828437600081840152601f19601f8201169050808301925050509a5050505050505050505050600060405180830381600087803b1580156114c757600080fd5b60008054604080517f4fe57e7a000000000000000000000000000000000000000000000000000000008152600160a060020a03858116600483015291519190921692634fe57e7a926024808201939182900301818387803b158015611a2e57600080fd5b505af1158015611a42573d6000803e3d6000fd5b5050505050565b600254600160a060020a03163314611ac257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f696e76616c69642063616c6c6572000000000000000000000000000000000000604482015290519081900360640190fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000546040517f1b04c27600000000000000000000000000000000000000000000000000000000815260448101859052831515606482015282151560848201523360a4820181905260c06004830190815260c483018a9052600160a060020a0390931692631b04c276928b928b928b928b928b928b928b9291908190602481019060e4018b8b80828437600083820152601f01601f191690910184810383528981526020019050898980828437600081840152601f19601f8201169050808301925050509a5050505050505050505050600060405180830381600087803b158015611bdb57600080fd5b505af1158015611bef573d6000803e3d6000fd5b5050505050505050505050565b6000546040517f655a8ef5000000000000000000000000000000000000000000000000000000008152336044820181905260606004830190815260648301879052600160a060020a039093169263655a8ef5928892889288928892919081906024810190608401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015611cc657600080fd5b505af1158015611cda573d6000803e3d6000fd5b5050505050505050565b6000546040517fb554656400000000000000000000000000000000000000000000000000000000815260248101839052336044820181905260606004830190815260648301869052600160a060020a039093169263b5546564928792879287928190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156113bc57600080fd5b60008054604080517f6b568d76000000000000000000000000000000000000000000000000000000008152600160a060020a03878116600483019081526024830193845260448301879052931692636b568d76928892889288929091606401848480828437600083820152604051601f909101601f1916909201965060209550909350505081840390508186803b158015611e2157600080fd5b505afa158015611e35573d6000803e3d6000fd5b505050506040513d6020811015611e4b57600080fd5b5051949350505050565b6000546040517f3bc07dea000000000000000000000000000000000000000000000000000000008152600160a060020a0383811660448301523360648301819052608060048401908152608484018990529190931692633bc07dea9289928992899289928992918190602481019060a401898980828437600083820152601f01601f191690910184810383528781526020019050878780828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b1580156112f557600080fd5b6000546040517f04e81f1e000000000000000000000000000000000000000000000000000000008152600160a060020a0384811660248301526044820184905233606483018190526080600484019081526084840188905291909316926304e81f1e92889288928892889290819060a401878780828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015611cc657600080fd5b6000546040517fc3dc8e09000000000000000000000000000000000000000000000000000000008152336044820181905260606004830190815260648301879052600160a060020a039093169263c3dc8e09928892889288928892919081906024810190608401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015611cc657600080fd5b6000546040517ff922f802000000000000000000000000000000000000000000000000000000008152600160a060020a038381166044830152336064830181905260806004840190815260848401899052919093169263f922f8029289928992899289928992918190602481019060a401898980828437600083820152601f01601f191690910184810383528781526020019050878780828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b1580156112f557600080fd5b60008054604080517f9bd38101000000000000000000000000000000000000000000000000000000008152600160a060020a03878116600483019081526024830193845260448301879052931692639bd38101928892889288929091606401848480828437600083820152604051601f909101601f1916909201965060209550909350505081840390508186803b158015611e2157600080fd5b60008054604080517fa5843f0800000000000000000000000000000000000000000000000000000000815260048101869052602481018590529051600160a060020a039092169263a5843f089260448084019382900301818387803b1580156116f757600080fd5b6000546040517f5ca5adbe000000000000000000000000000000000000000000000000000000008152336044820181905260606004830190815260648301879052600160a060020a0390931692635ca5adbe928892889288928892919081906024810190608401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015611cc657600080fd5b6000546040517f1c249912000000000000000000000000000000000000000000000000000000008152600160a060020a0383811660248301523360448301819052606060048401908152606484018790529190931692631c249912928792879287929091908190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156113bc57600080fd5b6000546040517f59a260a3000000000000000000000000000000000000000000000000000000008152336044820181905260606004830190815260648301879052600160a060020a03909316926359a260a3928892889288928892919081906024810190608401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015611cc657600080fd5b6000546040517f3cf5f33b00000000000000000000000000000000000000000000000000000000815260248101839052336044820181905260606004830190815260648301869052600160a060020a0390931692633cf5f33b928792879287928190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156113bc57600080fd5b60008054604080517fd1aa0c20000000000000000000000000000000000000000000000000000000008152600160a060020a0385811660048301529151919092169163d1aa0c20916024808301926020929190829003018186803b1580156125c157600080fd5b505afa1580156125d5573d6000803e3d6000fd5b505050506040513d60208110156125eb57600080fd5b505192915050565b600080546040517ff346a3a700000000000000000000000000000000000000000000000000000000815260206004820190815260248201859052606093849390928392600160a060020a039092169163f346a3a791899189918190604401848480828437600081840152601f19601f820116905080830192505050935050505060006040518083038186803b15801561268b57600080fd5b505afa15801561269f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260808110156126c857600080fd5b810190808051602060020a8111156126df57600080fd5b820160208101848111156126f257600080fd5b8151602060020a81118282018710171561270b57600080fd5b50509291906020018051602060020a81111561272657600080fd5b8201602081018481111561273957600080fd5b8151602060020a81118282018710171561275257600080fd5b50506020820151604090920151949b909a509098509296509194505050505056fea165627a7a7230582053b69606c7b59212daa1989dcfad0eadbcfd408862b2107fb4bb2f98d980300b0029 \ No newline at end of file +608060405234801561001057600080fd5b506040516020806127ff8339810180604052602081101561003057600080fd5b505160028054600160a060020a031916600160a060020a0390921691909117905561279f806100606000396000f3fe608060405234801561001057600080fd5b50600436106101d35760003560e060020a900480635adbfa7a116101085780639bd38101116100a6578063a97a440611610075578063a97a440614610f54578063bb3b6e8014611012578063d1aa0c2014611080578063f346a3a7146110a6576101d3565b80639bd3810114610d7e578063a5843f0814610dfc578063a634301214610e1f578063a97914bf14610edd576101d3565b80637e461258116100e25780637e46125814610ab557806384b7a84a14610b7c5780638cb58ef314610bf95780638f362a3e14610cb7576101d3565b80635adbfa7a1461090b5780635be9672c146109c95780636b568d7614610a37576101d3565b806343de646c116101755780634cff819e1161014f5780634cff819e146106e35780634fe57e7a146107f1578063511bbd9f1461081757806351f604c31461083d576101d3565b806343de646c146105f457806344478e79146106bf5780634cbfa82e146106db576101d3565b80631b610220116101b15780631b610220146103335780632f7f0a12146104415780633e239b231461050f5780633f25c28814610586576101d3565b806303ed6933146101d85780630cc50146146101fc57806316724c44146102bc575b600080fd5b6101e0611212565b60408051600160a060020a039092168252519081900360200190f35b6102ba6004803603606081101561021257600080fd5b810190602081018135602060020a81111561022c57600080fd5b82018360208201111561023e57600080fd5b803590602001918460018302840111602060020a8311171561025f57600080fd5b919390929091602081019035602060020a81111561027c57600080fd5b82018360208201111561028e57600080fd5b803590602001918460018302840111602060020a831117156102af57600080fd5b919350915035611221565b005b6102ba600480360360408110156102d257600080fd5b810190602081018135602060020a8111156102ec57600080fd5b8201836020820111156102fe57600080fd5b803590602001918460018302840111602060020a8311171561031f57600080fd5b919350915035600160a060020a0316611314565b6102ba6004803603606081101561034957600080fd5b810190602081018135602060020a81111561036357600080fd5b82018360208201111561037557600080fd5b803590602001918460018302840111602060020a8311171561039657600080fd5b919390929091602081019035602060020a8111156103b357600080fd5b8201836020820111156103c557600080fd5b803590602001918460018302840111602060020a831117156103e657600080fd5b919390929091602081019035602060020a81111561040357600080fd5b82018360208201111561041557600080fd5b803590602001918460018302840111602060020a8311171561043657600080fd5b5090925090506113d9565b6102ba6004803603606081101561045757600080fd5b600160a060020a038235169190810190604081016020820135602060020a81111561048157600080fd5b82018360208201111561049357600080fd5b803590602001918460018302840111602060020a831117156104b457600080fd5b919390929091602081019035602060020a8111156104d157600080fd5b8201836020820111156104e357600080fd5b803590602001918460018302840111602060020a8311171561050457600080fd5b5090925090506114e7565b6102ba6004803603604081101561052557600080fd5b810190602081018135602060020a81111561053f57600080fd5b82018360208201111561055157600080fd5b803590602001918460018302840111602060020a8311171561057257600080fd5b919350915035600160a060020a03166115bf565b6102ba6004803603602081101561059c57600080fd5b810190602081018135602060020a8111156105b657600080fd5b8201836020820111156105c857600080fd5b803590602001918460018302840111602060020a831117156105e957600080fd5b509092509050611667565b6102ba6004803603606081101561060a57600080fd5b810190602081018135602060020a81111561062457600080fd5b82018360208201111561063657600080fd5b803590602001918460018302840111602060020a8311171561065757600080fd5b91939092600160a060020a0383351692604081019060200135602060020a81111561068157600080fd5b82018360208201111561069357600080fd5b803590602001918460018302840111602060020a831117156106b457600080fd5b509092509050611713565b6106c76117e8565b604080519115158252519081900360200190f35b6106c761186d565b6102ba600480360360608110156106f957600080fd5b810190602081018135602060020a81111561071357600080fd5b82018360208201111561072557600080fd5b803590602001918460018302840111602060020a8311171561074657600080fd5b919390929091602081019035602060020a81111561076357600080fd5b82018360208201111561077557600080fd5b803590602001918460018302840111602060020a8311171561079657600080fd5b919390929091602081019035602060020a8111156107b357600080fd5b8201836020820111156107c557600080fd5b803590602001918460018302840111602060020a831117156107e657600080fd5b5090925090506118d3565b6102ba6004803603602081101561080757600080fd5b5035600160a060020a03166119ca565b6102ba6004803603602081101561082d57600080fd5b5035600160a060020a0316611a49565b6102ba600480360360a081101561085357600080fd5b810190602081018135602060020a81111561086d57600080fd5b82018360208201111561087f57600080fd5b803590602001918460018302840111602060020a831117156108a057600080fd5b919390929091602081019035602060020a8111156108bd57600080fd5b8201836020820111156108cf57600080fd5b803590602001918460018302840111602060020a831117156108f057600080fd5b91935091508035906020810135151590604001351515611af1565b6102ba6004803603604081101561092157600080fd5b810190602081018135602060020a81111561093b57600080fd5b82018360208201111561094d57600080fd5b803590602001918460018302840111602060020a8311171561096e57600080fd5b919390929091602081019035602060020a81111561098b57600080fd5b82018360208201111561099d57600080fd5b803590602001918460018302840111602060020a831117156109be57600080fd5b509092509050611bfc565b6102ba600480360360408110156109df57600080fd5b810190602081018135602060020a8111156109f957600080fd5b820183602082011115610a0b57600080fd5b803590602001918460018302840111602060020a83111715610a2c57600080fd5b919350915035611ce4565b6106c760048036036040811015610a4d57600080fd5b600160a060020a038235169190810190604081016020820135602060020a811115610a7757600080fd5b820183602082011115610a8957600080fd5b803590602001918460018302840111602060020a83111715610aaa57600080fd5b509092509050611d87565b6102ba60048036036060811015610acb57600080fd5b810190602081018135602060020a811115610ae557600080fd5b820183602082011115610af757600080fd5b803590602001918460018302840111602060020a83111715610b1857600080fd5b919390929091602081019035602060020a811115610b3557600080fd5b820183602082011115610b4757600080fd5b803590602001918460018302840111602060020a83111715610b6857600080fd5b919350915035600160a060020a0316611e55565b6102ba60048036036060811015610b9257600080fd5b810190602081018135602060020a811115610bac57600080fd5b820183602082011115610bbe57600080fd5b803590602001918460018302840111602060020a83111715610bdf57600080fd5b9193509150600160a060020a038135169060200135611f2a565b6102ba60048036036040811015610c0f57600080fd5b810190602081018135602060020a811115610c2957600080fd5b820183602082011115610c3b57600080fd5b803590602001918460018302840111602060020a83111715610c5c57600080fd5b919390929091602081019035602060020a811115610c7957600080fd5b820183602082011115610c8b57600080fd5b803590602001918460018302840111602060020a83111715610cac57600080fd5b509092509050611fda565b6102ba60048036036060811015610ccd57600080fd5b810190602081018135602060020a811115610ce757600080fd5b820183602082011115610cf957600080fd5b803590602001918460018302840111602060020a83111715610d1a57600080fd5b919390929091602081019035602060020a811115610d3757600080fd5b820183602082011115610d4957600080fd5b803590602001918460018302840111602060020a83111715610d6a57600080fd5b919350915035600160a060020a03166120a4565b6106c760048036036040811015610d9457600080fd5b600160a060020a038235169190810190604081016020820135602060020a811115610dbe57600080fd5b820183602082011115610dd057600080fd5b803590602001918460018302840111602060020a83111715610df157600080fd5b509092509050612179565b6102ba60048036036040811015610e1257600080fd5b5080359060200135612213565b6102ba60048036036040811015610e3557600080fd5b810190602081018135602060020a811115610e4f57600080fd5b820183602082011115610e6157600080fd5b803590602001918460018302840111602060020a83111715610e8257600080fd5b919390929091602081019035602060020a811115610e9f57600080fd5b820183602082011115610eb157600080fd5b803590602001918460018302840111602060020a83111715610ed257600080fd5b50909250905061227b565b6102ba60048036036040811015610ef357600080fd5b810190602081018135602060020a811115610f0d57600080fd5b820183602082011115610f1f57600080fd5b803590602001918460018302840111602060020a83111715610f4057600080fd5b919350915035600160a060020a0316612345565b6102ba60048036036040811015610f6a57600080fd5b810190602081018135602060020a811115610f8457600080fd5b820183602082011115610f9657600080fd5b803590602001918460018302840111602060020a83111715610fb757600080fd5b919390929091602081019035602060020a811115610fd457600080fd5b820183602082011115610fe657600080fd5b803590602001918460018302840111602060020a8311171561100757600080fd5b5090925090506123ed565b6102ba6004803603604081101561102857600080fd5b810190602081018135602060020a81111561104257600080fd5b82018360208201111561105457600080fd5b803590602001918460018302840111602060020a8311171561107557600080fd5b9193509150356124b7565b6106c76004803603602081101561109657600080fd5b5035600160a060020a031661255a565b611114600480360360208110156110bc57600080fd5b810190602081018135602060020a8111156110d657600080fd5b8201836020820111156110e857600080fd5b803590602001918460018302840111602060020a8311171561110957600080fd5b5090925090506125f3565b60405180806020018060200185600160a060020a0316600160a060020a03168152602001848152602001838103835287818151815260200191508051906020019080838360005b8381101561117357818101518382015260200161115b565b50505050905090810190601f1680156111a05780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b838110156111d35781810151838201526020016111bb565b50505050905090810190601f1680156112005780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b600054600160a060020a031690565b6000546040517fdbfad71100000000000000000000000000000000000000000000000000000000815260448101839052336064820181905260806004830190815260848301889052600160a060020a039093169263dbfad711928992899289928992899290918190602481019060a401898980828437600083820152601f01601f191690910184810383528781526020019050878780828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b1580156112f557600080fd5b505af1158015611309573d6000803e3d6000fd5b505050505050505050565b6000546040517f88843041000000000000000000000000000000000000000000000000000000008152600160a060020a03838116602483015233604483018190526060600484019081526064840187905291909316926388843041928792879287929091908190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156113bc57600080fd5b505af11580156113d0573d6000803e3d6000fd5b50505050505050565b6000546040517f1b61022000000000000000000000000000000000000000000000000000000000815260606004820190815260648201889052600160a060020a0390921691631b610220918991899189918991899189918190602481019060448101906084018a8a80828437600083820152601f01601f191690910185810384528881526020019050888880828437600083820152601f01601f191690910185810383528681526020019050868680828437600081840152601f19601f8201169050808301925050509950505050505050505050600060405180830381600087803b1580156114c757600080fd5b505af11580156114db573d6000803e3d6000fd5b50505050505050505050565b6000546040517f8baa8191000000000000000000000000000000000000000000000000000000008152600160a060020a03878116600483019081523360648401819052608060248501908152608485018990529290941693638baa8191938a938a938a938a938a9391929190604481019060a401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b1580156112f557600080fd5b6000546040517f4b20f45f000000000000000000000000000000000000000000000000000000008152600160a060020a0383811660248301523360448301819052606060048401908152606484018790529190931692634b20f45f928792879287929091908190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156113bc57600080fd5b6000546040517f3f25c28800000000000000000000000000000000000000000000000000000000815260206004820190815260248201849052600160a060020a0390921691633f25c28891859185918190604401848480828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b1580156116f757600080fd5b505af115801561170b573d6000803e3d6000fd5b505050505050565b6000546040517f404bf3eb000000000000000000000000000000000000000000000000000000008152600160a060020a038581166024830152336064830181905260806004840190815260848401899052919093169263404bf3eb9289928992899289928992918190604481019060a401898980828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b1580156112f557600080fd5b60008060009054906101000a9004600160a060020a0316600160a060020a03166344478e796040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561183c57600080fd5b505af1158015611850573d6000803e3d6000fd5b505050506040513d602081101561186657600080fd5b5051905090565b60008060009054906101000a9004600160a060020a0316600160a060020a0316634cbfa82e6040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156118bf57600080fd5b505afa158015611850573d6000803e3d6000fd5b6000546040517fa64d2860000000000000000000000000000000000000000000000000000000008152336064820181905260806004830190815260848301899052600160a060020a039093169263a64d2860928a928a928a928a928a928a9281906024810190604481019060a4018b8b80828437600083820152601f01601f191690910185810384528981526020019050898980828437600083820152601f01601f191690910185810383528781526020019050878780828437600081840152601f19601f8201169050808301925050509a5050505050505050505050600060405180830381600087803b1580156114c757600080fd5b60008054604080517f4fe57e7a000000000000000000000000000000000000000000000000000000008152600160a060020a03858116600483015291519190921692634fe57e7a926024808201939182900301818387803b158015611a2e57600080fd5b505af1158015611a42573d6000803e3d6000fd5b5050505050565b600254600160a060020a03163314611ac257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f696e76616c69642063616c6c6572000000000000000000000000000000000000604482015290519081900360640190fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000546040517f1b04c27600000000000000000000000000000000000000000000000000000000815260448101859052831515606482015282151560848201523360a4820181905260c06004830190815260c483018a9052600160a060020a0390931692631b04c276928b928b928b928b928b928b928b9291908190602481019060e4018b8b80828437600083820152601f01601f191690910184810383528981526020019050898980828437600081840152601f19601f8201169050808301925050509a5050505050505050505050600060405180830381600087803b158015611bdb57600080fd5b505af1158015611bef573d6000803e3d6000fd5b5050505050505050505050565b6000546040517f655a8ef5000000000000000000000000000000000000000000000000000000008152336044820181905260606004830190815260648301879052600160a060020a039093169263655a8ef5928892889288928892919081906024810190608401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015611cc657600080fd5b505af1158015611cda573d6000803e3d6000fd5b5050505050505050565b6000546040517fb554656400000000000000000000000000000000000000000000000000000000815260248101839052336044820181905260606004830190815260648301869052600160a060020a039093169263b5546564928792879287928190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156113bc57600080fd5b60008054604080517f6b568d76000000000000000000000000000000000000000000000000000000008152600160a060020a03878116600483019081526024830193845260448301879052931692636b568d76928892889288929091606401848480828437600083820152604051601f909101601f1916909201965060209550909350505081840390508186803b158015611e2157600080fd5b505afa158015611e35573d6000803e3d6000fd5b505050506040513d6020811015611e4b57600080fd5b5051949350505050565b6000546040517f3bc07dea000000000000000000000000000000000000000000000000000000008152600160a060020a0383811660448301523360648301819052608060048401908152608484018990529190931692633bc07dea9289928992899289928992918190602481019060a401898980828437600083820152601f01601f191690910184810383528781526020019050878780828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b1580156112f557600080fd5b6000546040517f04e81f1e000000000000000000000000000000000000000000000000000000008152600160a060020a0384811660248301526044820184905233606483018190526080600484019081526084840188905291909316926304e81f1e92889288928892889290819060a401878780828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015611cc657600080fd5b6000546040517fc3dc8e09000000000000000000000000000000000000000000000000000000008152336044820181905260606004830190815260648301879052600160a060020a039093169263c3dc8e09928892889288928892919081906024810190608401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015611cc657600080fd5b6000546040517ff922f802000000000000000000000000000000000000000000000000000000008152600160a060020a038381166044830152336064830181905260806004840190815260848401899052919093169263f922f8029289928992899289928992918190602481019060a401898980828437600083820152601f01601f191690910184810383528781526020019050878780828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b1580156112f557600080fd5b60008054604080517f9bd38101000000000000000000000000000000000000000000000000000000008152600160a060020a03878116600483019081526024830193845260448301879052931692639bd38101928892889288929091606401848480828437600083820152604051601f909101601f1916909201965060209550909350505081840390508186803b158015611e2157600080fd5b60008054604080517fa5843f0800000000000000000000000000000000000000000000000000000000815260048101869052602481018590529051600160a060020a039092169263a5843f089260448084019382900301818387803b1580156116f757600080fd5b6000546040517f5ca5adbe000000000000000000000000000000000000000000000000000000008152336044820181905260606004830190815260648301879052600160a060020a0390931692635ca5adbe928892889288928892919081906024810190608401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015611cc657600080fd5b6000546040517f1c249912000000000000000000000000000000000000000000000000000000008152600160a060020a0383811660248301523360448301819052606060048401908152606484018790529190931692631c249912928792879287929091908190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156113bc57600080fd5b6000546040517f59a260a3000000000000000000000000000000000000000000000000000000008152336044820181905260606004830190815260648301879052600160a060020a03909316926359a260a3928892889288928892919081906024810190608401888880828437600083820152601f01601f191690910184810383528681526020019050868680828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015611cc657600080fd5b6000546040517f3cf5f33b00000000000000000000000000000000000000000000000000000000815260248101839052336044820181905260606004830190815260648301869052600160a060020a0390931692633cf5f33b928792879287928190608401868680828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156113bc57600080fd5b60008054604080517fd1aa0c20000000000000000000000000000000000000000000000000000000008152600160a060020a0385811660048301529151919092169163d1aa0c20916024808301926020929190829003018186803b1580156125c157600080fd5b505afa1580156125d5573d6000803e3d6000fd5b505050506040513d60208110156125eb57600080fd5b505192915050565b600080546040517ff346a3a700000000000000000000000000000000000000000000000000000000815260206004820190815260248201859052606093849390928392600160a060020a039092169163f346a3a791899189918190604401848480828437600081840152601f19601f820116905080830192505050935050505060006040518083038186803b15801561268b57600080fd5b505afa15801561269f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260808110156126c857600080fd5b810190808051602060020a8111156126df57600080fd5b820160208101848111156126f257600080fd5b8151602060020a81118282018710171561270b57600080fd5b50509291906020018051602060020a81111561272657600080fd5b8201602081018481111561273957600080fd5b8151602060020a81118282018710171561275257600080fd5b50506020820151604090920151949b909a509098509296509194505050505056fea165627a7a72305820012928785ab44384d889eb56390d7766c715e322f05d70cc2584d45b928233ce0029 \ No newline at end of file diff --git a/permission/contract/gen/PermissionsUpgradable.bin b/permission/contract/gen/PermissionsUpgradable.bin index eec420aca..7668427e2 100644 --- a/permission/contract/gen/PermissionsUpgradable.bin +++ b/permission/contract/gen/PermissionsUpgradable.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b5060405160208061079f8339810180604052602081101561003057600080fd5b505160008054600160a060020a03909216600160a060020a03199092169190911790556002805460a060020a60ff021916905561072d806100726000396000f3fe608060405234801561001057600080fd5b506004361061005a5760e060020a60003504630e32cf90811461005f57806322bcb39a14610083578063a75b87d2146100ab578063e572515c146100b3578063f09a4016146100bb575b600080fd5b6100676100e9565b60408051600160a060020a039092168252519081900360200190f35b6100a96004803603602081101561009957600080fd5b5035600160a060020a03166100f8565b005b610067610341565b610067610350565b6100a9600480360360408110156100d157600080fd5b50600160a060020a038135811691602001351661035f565b600154600160a060020a031690565b600054600160a060020a0316331461017157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f696e76616c69642063616c6c6572000000000000000000000000000000000000604482015290519081900360640190fd5b60608060606000600160009054906101000a9004600160a060020a0316600160a060020a031663cc9ba6fa6040518163ffffffff1660e060020a02815260040160006040518083038186803b1580156101c957600080fd5b505afa1580156101dd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052608081101561020657600080fd5b81019080805164010000000081111561021e57600080fd5b8201602081018481111561023157600080fd5b815164010000000081118282018710171561024b57600080fd5b5050929190602001805164010000000081111561026757600080fd5b8201602081018481111561027a57600080fd5b815164010000000081118282018710171561029457600080fd5b505092919060200180516401000000008111156102b057600080fd5b820160208101848111156102c357600080fd5b81516401000000008111828201871017156102dd57600080fd5b50506020909101519498509296509194509192506103029150869050858585856104e2565b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03878116919091179182905561033a9116610686565b5050505050565b600054600160a060020a031690565b600254600160a060020a031690565b600054600160a060020a031633146103d857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f696e76616c69642063616c6c6572000000000000000000000000000000000000604482015290519081900360640190fd5b60025474010000000000000000000000000000000000000000900460ff161561046257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f63616e206265206578656375746564206f6e6c79206f6e636500000000000000604482015290519081900360640190fd5b60018054600160a060020a0380841673ffffffffffffffffffffffffffffffffffffffff199283161792839055600280548683169316929092179091556104a99116610686565b50506002805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b84600160a060020a031663f5ad584a858585856040518563ffffffff1660e060020a0281526004018080602001806020018060200185151515158152602001848103845288818151815260200191508051906020019080838360005b8381101561055657818101518382015260200161053e565b50505050905090810190601f1680156105835780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b838110156105b657818101518382015260200161059e565b50505050905090810190601f1680156105e35780820380516001836020036101000a031916815260200191505b50848103825286518152865160209182019188019080838360005b838110156106165781810151838201526020016105fe565b50505050905090810190601f1680156106435780820380516001836020036101000a031916815260200191505b50975050505050505050600060405180830381600087803b15801561066757600080fd5b505af115801561067b573d6000803e3d6000fd5b505050505050505050565b600254604080517f511bbd9f000000000000000000000000000000000000000000000000000000008152600160a060020a0384811660048301529151919092169163511bbd9f91602480830192600092919082900301818387803b1580156106ed57600080fd5b505af115801561033a573d6000803e3d6000fdfea165627a7a72305820c72c50e5bc751713bb5b2ee801ec643bd840b7557519b323814578a72c448a0e0029 \ No newline at end of file +608060405234801561001057600080fd5b5060405160208061079f8339810180604052602081101561003057600080fd5b505160008054600160a060020a03909216600160a060020a03199092169190911790556002805460a060020a60ff021916905561072d806100726000396000f3fe608060405234801561001057600080fd5b506004361061005a5760e060020a60003504630e32cf90811461005f57806322bcb39a14610083578063a75b87d2146100ab578063e572515c146100b3578063f09a4016146100bb575b600080fd5b6100676100e9565b60408051600160a060020a039092168252519081900360200190f35b6100a96004803603602081101561009957600080fd5b5035600160a060020a03166100f8565b005b610067610341565b610067610350565b6100a9600480360360408110156100d157600080fd5b50600160a060020a038135811691602001351661035f565b600154600160a060020a031690565b600054600160a060020a0316331461017157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f696e76616c69642063616c6c6572000000000000000000000000000000000000604482015290519081900360640190fd5b60608060606000600160009054906101000a9004600160a060020a0316600160a060020a031663cc9ba6fa6040518163ffffffff1660e060020a02815260040160006040518083038186803b1580156101c957600080fd5b505afa1580156101dd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052608081101561020657600080fd5b81019080805164010000000081111561021e57600080fd5b8201602081018481111561023157600080fd5b815164010000000081118282018710171561024b57600080fd5b5050929190602001805164010000000081111561026757600080fd5b8201602081018481111561027a57600080fd5b815164010000000081118282018710171561029457600080fd5b505092919060200180516401000000008111156102b057600080fd5b820160208101848111156102c357600080fd5b81516401000000008111828201871017156102dd57600080fd5b50506020909101519498509296509194509192506103029150869050858585856104e2565b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03878116919091179182905561033a9116610686565b5050505050565b600054600160a060020a031690565b600254600160a060020a031690565b600054600160a060020a031633146103d857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f696e76616c69642063616c6c6572000000000000000000000000000000000000604482015290519081900360640190fd5b60025474010000000000000000000000000000000000000000900460ff161561046257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f63616e206265206578656375746564206f6e6c79206f6e636500000000000000604482015290519081900360640190fd5b60018054600160a060020a0380841673ffffffffffffffffffffffffffffffffffffffff199283161792839055600280548683169316929092179091556104a99116610686565b50506002805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b84600160a060020a031663f5ad584a858585856040518563ffffffff1660e060020a0281526004018080602001806020018060200185151515158152602001848103845288818151815260200191508051906020019080838360005b8381101561055657818101518382015260200161053e565b50505050905090810190601f1680156105835780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b838110156105b657818101518382015260200161059e565b50505050905090810190601f1680156105e35780820380516001836020036101000a031916815260200191505b50848103825286518152865160209182019188019080838360005b838110156106165781810151838201526020016105fe565b50505050905090810190601f1680156106435780820380516001836020036101000a031916815260200191505b50975050505050505050600060405180830381600087803b15801561066757600080fd5b505af115801561067b573d6000803e3d6000fd5b505050505050505050565b600254604080517f511bbd9f000000000000000000000000000000000000000000000000000000008152600160a060020a0384811660048301529151919092169163511bbd9f91602480830192600092919082900301818387803b1580156106ed57600080fd5b505af115801561033a573d6000803e3d6000fdfea165627a7a723058202734d6e2a425add14568c5fd8433249acecdcc90474937bbe9c0cc5474e806e70029 \ No newline at end of file diff --git a/permission/contract/gen/RoleManager.bin b/permission/contract/gen/RoleManager.bin index b49030a1f..b7586aa39 100644 --- a/permission/contract/gen/RoleManager.bin +++ b/permission/contract/gen/RoleManager.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b5060405160208061221f8339810180604052602081101561003057600080fd5b505160008054600160a060020a03909216600160a060020a03199092169190911790556121bd806100626000396000f3fe608060405234801561001057600080fd5b506004361061008c5760003560e060020a90048063a63430121161005f578063a6343012146103c6578063abf5739f14610488578063be322e5414610650578063deb16ba7146107645761008c565b80631870aba3146100915780637b7135791461025157806387f55d311461038f578063a451d4a8146103a9575b600080fd5b610153600480360360408110156100a757600080fd5b8101906020810181356401000000008111156100c257600080fd5b8201836020820111156100d457600080fd5b803590602001918460018302840111640100000000831117156100f657600080fd5b91939092909160208101903564010000000081111561011457600080fd5b82018360208201111561012657600080fd5b8035906020019184600183028401116401000000008311171561014857600080fd5b509092509050610878565b604080519081018590528315156060820152821515608082015281151560a082015260c08082528751908201528651819060208083019160e08401918b019080838360005b838110156101b0578181015183820152602001610198565b50505050905090810190601f1680156101dd5780820380516001836020036101000a031916815260200191505b5083810382528851815288516020918201918a019080838360005b838110156102105781810151838201526020016101f8565b50505050905090810190601f16801561023d5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b61038d600480360360a081101561026757600080fd5b81019060208101813564010000000081111561028257600080fd5b82018360208201111561029457600080fd5b803590602001918460018302840111640100000000831117156102b657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561030957600080fd5b82018360208201111561031b57600080fd5b8035906020019184600183028401116401000000008311171561033d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550508235935050506020810135151590604001351515610bfe565b005b610397611149565b60408051918252519081900360200190f35b610153600480360360208110156103bf57600080fd5b5035611150565b61038d600480360360408110156103dc57600080fd5b8101906020810181356401000000008111156103f757600080fd5b82018360208201111561040957600080fd5b8035906020019184600183028401116401000000008311171561042b57600080fd5b91939092909160208101903564010000000081111561044957600080fd5b82018360208201111561045b57600080fd5b8035906020019184600183028401116401000000008311171561047d57600080fd5b50909250905061136e565b61063c6004803603606081101561049e57600080fd5b8101906020810181356401000000008111156104b957600080fd5b8201836020820111156104cb57600080fd5b803590602001918460018302840111640100000000831117156104ed57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561054057600080fd5b82018360208201111561055257600080fd5b8035906020019184600183028401116401000000008311171561057457600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156105c757600080fd5b8201836020820111156105d957600080fd5b803590602001918460018302840111640100000000831117156105fb57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611666945050505050565b604080519115158252519081900360200190f35b61063c6004803603606081101561066657600080fd5b81019060208101813564010000000081111561068157600080fd5b82018360208201111561069357600080fd5b803590602001918460018302840111640100000000831117156106b557600080fd5b9193909290916020810190356401000000008111156106d357600080fd5b8201836020820111156106e557600080fd5b8035906020019184600183028401116401000000008311171561070757600080fd5b91939092909160208101903564010000000081111561072557600080fd5b82018360208201111561073757600080fd5b8035906020019184600183028401116401000000008311171561075957600080fd5b5090925090506118da565b61063c6004803603606081101561077a57600080fd5b81019060208101813564010000000081111561079557600080fd5b8201836020820111156107a757600080fd5b803590602001918460018302840111640100000000831117156107c957600080fd5b9193909290916020810190356401000000008111156107e757600080fd5b8201836020820111156107f957600080fd5b8035906020019184600183028401116401000000008311171561081b57600080fd5b91939092909160208101903564010000000081111561083957600080fd5b82018360208201111561084b57600080fd5b8035906020019184600183028401116401000000008311171561086d57600080fd5b509092509050611c57565b6060806000806000806109028a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8e018190048102820181019092528c815292508c91508b9081908401838280828437600092018290525060408051602081019091529081529250611666915050565b151561096c57898960008060008085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506040805160208101909152908152939f50929d50959b509399509197509550610bf1945050505050565b60006109e18b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8f018190048102820181019092528d815292508d91508c9081908401838280828437600092019190915250611fc992505050565b90506001818154811015156109f257fe5b9060005260206000209060040201600001600182815481101515610a1257fe5b9060005260206000209060040201600101600183815481101515610a3257fe5b906000526020600020906004020160020154600184815481101515610a5357fe5b60009182526020909120600360049092020101546001805460ff9092169186908110610a7b57fe5b906000526020600020906004020160030160019054906101000a900460ff16600186815481101515610aa957fe5b6000918252602091829020600491909102016003015486546040805160026101006001851615026000190190931692909204601f81018590048502830185019091528082526201000090920460ff169290918891830182828015610b4e5780601f10610b2357610100808354040283529160200191610b4e565b820191906000526020600020905b815481529060010190602001808311610b3157829003601f168201915b5050885460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959b508a945092508401905082828015610bdc5780601f10610bb157610100808354040283529160200191610bdc565b820191906000526020600020905b815481529060010190602001808311610bbf57829003601f168201915b50505050509450965096509650965096509650505b9499939850945094509450565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b158015610c4e57600080fd5b505afa158015610c62573d6000803e3d6000fd5b505050506040513d6020811015610c7857600080fd5b5051600160a060020a03163314610cc7576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020612172833981519152604482015290519081900360640190fd5b600260008686604051602001808060200180602001838103835285818151815260200191508051906020019080838360005b83811015610d11578181015183820152602001610cf9565b50505050905090810190601f168015610d3e5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015610d71578181015183820152602001610d59565b50505050905090810190601f168015610d9e5780820380516001836020036101000a031916815260200191505b50945050505050604051602081830303815290604052805190602001208152602001908152602001600020546000141515610e23576040805160e560020a62461bcd02815260206004820152601760248201527f726f6c652065786973747320666f7220746865206f7267000000000000000000604482015290519081900360640190fd5b60038054600101908190556040805160208082018381528951606084015289516002946000948c948c94938493830192608001918701908083838b5b83811015610e77578181015183820152602001610e5f565b50505050905090810190601f168015610ea45780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015610ed7578181015183820152602001610ebf565b50505050905090810190601f168015610f045780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208852878201989098529587016000908120989098555050845160c0810186528b81528085018b905294850189905250505084151560608301528315156080830152600160a083018190528054808201808355919094528251805191946004027fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60192610fae928492909101906120d9565b506020828101518051610fc792600185019201906120d9565b5060408281015160028301556060808401516003909301805460808087015160a09788015160ff199093169615159690961761ff001916610100961515969096029590951762ff0000191662010000911515919091021790558151918201889052861515908201528415159181019190915281815287519181019190915286517fefa5bc1bedbee25b04b00855c15a0c180ecb4a2440d4d08296e49561655e2b1c92508791879187918791879190819060208083019160c08401918a019080838360005b838110156110a357818101518382015260200161108b565b50505050905090810190601f1680156110d05780820380516001836020036101000a031916815260200191505b50838103825287518152875160209182019189019080838360005b838110156111035781810151838201526020016110eb565b50505050905090810190601f1680156111305780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15050505050565b6001545b90565b60608060008060008060018781548110151561116857fe5b906000526020600020906004020160000160018881548110151561118857fe5b90600052602060002090600402016001016001898154811015156111a857fe5b90600052602060002090600402016002015460018a8154811015156111c957fe5b60009182526020909120600360049092020101546001805460ff909216918c9081106111f157fe5b906000526020600020906004020160030160019054906101000a900460ff1660018c81548110151561121f57fe5b6000918252602091829020600491909102016003015486546040805160026101006001851615026000190190931692909204601f81018590048502830185019091528082526201000090920460ff1692909188918301828280156112c45780601f10611299576101008083540402835291602001916112c4565b820191906000526020600020905b8154815290600101906020018083116112a757829003601f168201915b5050885460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959b508a9450925084019050828280156113525780601f1061132757610100808354040283529160200191611352565b820191906000526020600020905b81548152906001019060200180831161133557829003601f168201915b5050505050945095509550955095509550955091939550919395565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156113be57600080fd5b505afa1580156113d2573d6000803e3d6000fd5b505050506040513d60208110156113e857600080fd5b5051600160a060020a03163314611437576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020612172833981519152604482015290519081900360640190fd5b60026000858585856040516020018080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f820116905080830192505050965050505050505060405160208183030381529060405280519060200120815260200190815260200160002054600014151515611523576040805160e560020a62461bcd02815260206004820152601360248201527f726f6c6520646f6573206e6f7420657869737400000000000000000000000000604482015290519081900360640190fd5b600061159885858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f89018190048102820181019092528781529250879150869081908401838280828437600092019190915250611fc992505050565b905060006001828154811015156115ab57fe5b906000526020600020906004020160030160026101000a81548160ff0219169083151502179055507f1196059dd83524bf989fd94bb65808c09dbea2ab791fb6bfa87a0e0aa64b2ea6858585856040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a15050505050565b600080600260008686604051602001808060200180602001838103835285818151815260200191508051906020019080838360005b838110156116b357818101518382015260200161169b565b50505050905090810190601f1680156116e05780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156117135781810151838201526020016116fb565b50505050905090810190601f1680156117405780820380516001836020036101000a031916815260200191505b509450505050506040516020818303038152906040528051906020012081526020019081526020016000205460001415156117b75761177f8585611fc9565b905060018181548110151561179057fe5b906000526020600020906004020160030160029054906101000a900460ff169150506118d3565b600260008685604051602001808060200180602001838103835285818151815260200191508051906020019080838360005b838110156118015781810151838201526020016117e9565b50505050905090810190601f16801561182e5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611861578181015183820152602001611849565b50505050905090810190601f16801561188e5780820380516001836020036101000a031916815260200191505b509450505050506040516020818303038152906040528051906020012081526020019081526020016000205460001415156118cd5761177f8584611fc9565b60009150505b9392505050565b60008060009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561192c57600080fd5b505afa158015611940573d6000803e3d6000fd5b505050506040513d602081101561195657600080fd5b5051600160a060020a031633146119a5576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020612172833981519152604482015290519081900360640190fd5b611a4c87878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8b01819004810282018101909252898152925089915088908190840183828082843760009201919091525050604080516020601f8a01819004810282018101909252888152925088915087908190840183828082843760009201919091525061166692505050565b1515611a5a57506000611c4d565b600060026000898989896040516020018080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050604051602081830303815290604052805190602001208152602001908152602001600020546000141515611b7157611b6a88888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a9150899081908401838280828437600092019190915250611fc992505050565b9050611be7565b611be488888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250611fc992505050565b90505b6001805482908110611bf557fe5b906000526020600020906004020160030160029054906101000a900460ff168015611c4957506001805482908110611c2957fe5b906000526020600020906004020160030160019054906101000a900460ff165b9150505b9695505050505050565b60008060009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b158015611ca957600080fd5b505afa158015611cbd573d6000803e3d6000fd5b505050506040513d6020811015611cd357600080fd5b5051600160a060020a03163314611d22576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020612172833981519152604482015290519081900360640190fd5b611dc987878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8b01819004810282018101909252898152925089915088908190840183828082843760009201919091525050604080516020601f8a01819004810282018101909252888152925088915087908190840183828082843760009201919091525061166692505050565b1515611dd757506000611c4d565b600060026000898989896040516020018080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050604051602081830303815290604052805190602001208152602001908152602001600020546000141515611eee57611ee788888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a9150899081908401838280828437600092019190915250611fc992505050565b9050611f64565b611f6188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250611fc992505050565b90505b6001805482908110611f7257fe5b906000526020600020906004020160030160029054906101000a900460ff168015611c4957506001805482908110611fa657fe5b600091825260209091206004909102016003015460ff1698975050505050505050565b60006001600260008585604051602001808060200180602001838103835285818151815260200191508051906020019080838360005b83811015612017578181015183820152602001611fff565b50505050905090810190601f1680156120445780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561207757818101518382015260200161205f565b50505050905090810190601f1680156120a45780820380516001836020036101000a031916815260200191505b509450505050506040516020818303038152906040528051906020012081526020019081526020016000205403905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061211a57805160ff1916838001178555612147565b82800160010185558215612147579182015b8281111561214757825182559160200191906001019061212c565b50612153929150612157565b5090565b61114d91905b80821115612153576000815560010161215d56fe696e76616c69642063616c6c6572000000000000000000000000000000000000a165627a7a723058202169e661d0972ecd8b71b7dc38b9e6dd16ceee30aaa2fb207d7a911173b940150029 \ No newline at end of file +608060405234801561001057600080fd5b5060405160208061221f8339810180604052602081101561003057600080fd5b505160008054600160a060020a03909216600160a060020a03199092169190911790556121bd806100626000396000f3fe608060405234801561001057600080fd5b506004361061008c5760003560e060020a90048063a63430121161005f578063a6343012146103c6578063abf5739f14610488578063be322e5414610650578063deb16ba7146107645761008c565b80631870aba3146100915780637b7135791461025157806387f55d311461038f578063a451d4a8146103a9575b600080fd5b610153600480360360408110156100a757600080fd5b8101906020810181356401000000008111156100c257600080fd5b8201836020820111156100d457600080fd5b803590602001918460018302840111640100000000831117156100f657600080fd5b91939092909160208101903564010000000081111561011457600080fd5b82018360208201111561012657600080fd5b8035906020019184600183028401116401000000008311171561014857600080fd5b509092509050610878565b604080519081018590528315156060820152821515608082015281151560a082015260c08082528751908201528651819060208083019160e08401918b019080838360005b838110156101b0578181015183820152602001610198565b50505050905090810190601f1680156101dd5780820380516001836020036101000a031916815260200191505b5083810382528851815288516020918201918a019080838360005b838110156102105781810151838201526020016101f8565b50505050905090810190601f16801561023d5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b61038d600480360360a081101561026757600080fd5b81019060208101813564010000000081111561028257600080fd5b82018360208201111561029457600080fd5b803590602001918460018302840111640100000000831117156102b657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561030957600080fd5b82018360208201111561031b57600080fd5b8035906020019184600183028401116401000000008311171561033d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550508235935050506020810135151590604001351515610bfe565b005b610397611149565b60408051918252519081900360200190f35b610153600480360360208110156103bf57600080fd5b5035611150565b61038d600480360360408110156103dc57600080fd5b8101906020810181356401000000008111156103f757600080fd5b82018360208201111561040957600080fd5b8035906020019184600183028401116401000000008311171561042b57600080fd5b91939092909160208101903564010000000081111561044957600080fd5b82018360208201111561045b57600080fd5b8035906020019184600183028401116401000000008311171561047d57600080fd5b50909250905061136e565b61063c6004803603606081101561049e57600080fd5b8101906020810181356401000000008111156104b957600080fd5b8201836020820111156104cb57600080fd5b803590602001918460018302840111640100000000831117156104ed57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561054057600080fd5b82018360208201111561055257600080fd5b8035906020019184600183028401116401000000008311171561057457600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156105c757600080fd5b8201836020820111156105d957600080fd5b803590602001918460018302840111640100000000831117156105fb57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611666945050505050565b604080519115158252519081900360200190f35b61063c6004803603606081101561066657600080fd5b81019060208101813564010000000081111561068157600080fd5b82018360208201111561069357600080fd5b803590602001918460018302840111640100000000831117156106b557600080fd5b9193909290916020810190356401000000008111156106d357600080fd5b8201836020820111156106e557600080fd5b8035906020019184600183028401116401000000008311171561070757600080fd5b91939092909160208101903564010000000081111561072557600080fd5b82018360208201111561073757600080fd5b8035906020019184600183028401116401000000008311171561075957600080fd5b5090925090506118da565b61063c6004803603606081101561077a57600080fd5b81019060208101813564010000000081111561079557600080fd5b8201836020820111156107a757600080fd5b803590602001918460018302840111640100000000831117156107c957600080fd5b9193909290916020810190356401000000008111156107e757600080fd5b8201836020820111156107f957600080fd5b8035906020019184600183028401116401000000008311171561081b57600080fd5b91939092909160208101903564010000000081111561083957600080fd5b82018360208201111561084b57600080fd5b8035906020019184600183028401116401000000008311171561086d57600080fd5b509092509050611c57565b6060806000806000806109028a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8e018190048102820181019092528c815292508c91508b9081908401838280828437600092018290525060408051602081019091529081529250611666915050565b151561096c57898960008060008085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506040805160208101909152908152939f50929d50959b509399509197509550610bf1945050505050565b60006109e18b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8f018190048102820181019092528d815292508d91508c9081908401838280828437600092019190915250611fc992505050565b90506001818154811015156109f257fe5b9060005260206000209060040201600001600182815481101515610a1257fe5b9060005260206000209060040201600101600183815481101515610a3257fe5b906000526020600020906004020160020154600184815481101515610a5357fe5b60009182526020909120600360049092020101546001805460ff9092169186908110610a7b57fe5b906000526020600020906004020160030160019054906101000a900460ff16600186815481101515610aa957fe5b6000918252602091829020600491909102016003015486546040805160026101006001851615026000190190931692909204601f81018590048502830185019091528082526201000090920460ff169290918891830182828015610b4e5780601f10610b2357610100808354040283529160200191610b4e565b820191906000526020600020905b815481529060010190602001808311610b3157829003601f168201915b5050885460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959b508a945092508401905082828015610bdc5780601f10610bb157610100808354040283529160200191610bdc565b820191906000526020600020905b815481529060010190602001808311610bbf57829003601f168201915b50505050509450965096509650965096509650505b9499939850945094509450565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b158015610c4e57600080fd5b505afa158015610c62573d6000803e3d6000fd5b505050506040513d6020811015610c7857600080fd5b5051600160a060020a03163314610cc7576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020612172833981519152604482015290519081900360640190fd5b600260008686604051602001808060200180602001838103835285818151815260200191508051906020019080838360005b83811015610d11578181015183820152602001610cf9565b50505050905090810190601f168015610d3e5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015610d71578181015183820152602001610d59565b50505050905090810190601f168015610d9e5780820380516001836020036101000a031916815260200191505b50945050505050604051602081830303815290604052805190602001208152602001908152602001600020546000141515610e23576040805160e560020a62461bcd02815260206004820152601760248201527f726f6c652065786973747320666f7220746865206f7267000000000000000000604482015290519081900360640190fd5b60038054600101908190556040805160208082018381528951606084015289516002946000948c948c94938493830192608001918701908083838b5b83811015610e77578181015183820152602001610e5f565b50505050905090810190601f168015610ea45780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015610ed7578181015183820152602001610ebf565b50505050905090810190601f168015610f045780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301208852878201989098529587016000908120989098555050845160c0810186528b81528085018b905294850189905250505084151560608301528315156080830152600160a083018190528054808201808355919094528251805191946004027fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60192610fae928492909101906120d9565b506020828101518051610fc792600185019201906120d9565b5060408281015160028301556060808401516003909301805460808087015160a09788015160ff199093169615159690961761ff001916610100961515969096029590951762ff0000191662010000911515919091021790558151918201889052861515908201528415159181019190915281815287519181019190915286517fefa5bc1bedbee25b04b00855c15a0c180ecb4a2440d4d08296e49561655e2b1c92508791879187918791879190819060208083019160c08401918a019080838360005b838110156110a357818101518382015260200161108b565b50505050905090810190601f1680156110d05780820380516001836020036101000a031916815260200191505b50838103825287518152875160209182019189019080838360005b838110156111035781810151838201526020016110eb565b50505050905090810190601f1680156111305780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15050505050565b6001545b90565b60608060008060008060018781548110151561116857fe5b906000526020600020906004020160000160018881548110151561118857fe5b90600052602060002090600402016001016001898154811015156111a857fe5b90600052602060002090600402016002015460018a8154811015156111c957fe5b60009182526020909120600360049092020101546001805460ff909216918c9081106111f157fe5b906000526020600020906004020160030160019054906101000a900460ff1660018c81548110151561121f57fe5b6000918252602091829020600491909102016003015486546040805160026101006001851615026000190190931692909204601f81018590048502830185019091528082526201000090920460ff1692909188918301828280156112c45780601f10611299576101008083540402835291602001916112c4565b820191906000526020600020905b8154815290600101906020018083116112a757829003601f168201915b5050885460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959b508a9450925084019050828280156113525780601f1061132757610100808354040283529160200191611352565b820191906000526020600020905b81548152906001019060200180831161133557829003601f168201915b5050505050945095509550955095509550955091939550919395565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156113be57600080fd5b505afa1580156113d2573d6000803e3d6000fd5b505050506040513d60208110156113e857600080fd5b5051600160a060020a03163314611437576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020612172833981519152604482015290519081900360640190fd5b60026000858585856040516020018080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f820116905080830192505050965050505050505060405160208183030381529060405280519060200120815260200190815260200160002054600014151515611523576040805160e560020a62461bcd02815260206004820152601360248201527f726f6c6520646f6573206e6f7420657869737400000000000000000000000000604482015290519081900360640190fd5b600061159885858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f89018190048102820181019092528781529250879150869081908401838280828437600092019190915250611fc992505050565b905060006001828154811015156115ab57fe5b906000526020600020906004020160030160026101000a81548160ff0219169083151502179055507f1196059dd83524bf989fd94bb65808c09dbea2ab791fb6bfa87a0e0aa64b2ea6858585856040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a15050505050565b600080600260008686604051602001808060200180602001838103835285818151815260200191508051906020019080838360005b838110156116b357818101518382015260200161169b565b50505050905090810190601f1680156116e05780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156117135781810151838201526020016116fb565b50505050905090810190601f1680156117405780820380516001836020036101000a031916815260200191505b509450505050506040516020818303038152906040528051906020012081526020019081526020016000205460001415156117b75761177f8585611fc9565b905060018181548110151561179057fe5b906000526020600020906004020160030160029054906101000a900460ff169150506118d3565b600260008685604051602001808060200180602001838103835285818151815260200191508051906020019080838360005b838110156118015781810151838201526020016117e9565b50505050905090810190601f16801561182e5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611861578181015183820152602001611849565b50505050905090810190601f16801561188e5780820380516001836020036101000a031916815260200191505b509450505050506040516020818303038152906040528051906020012081526020019081526020016000205460001415156118cd5761177f8584611fc9565b60009150505b9392505050565b60008060009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561192c57600080fd5b505afa158015611940573d6000803e3d6000fd5b505050506040513d602081101561195657600080fd5b5051600160a060020a031633146119a5576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020612172833981519152604482015290519081900360640190fd5b611a4c87878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8b01819004810282018101909252898152925089915088908190840183828082843760009201919091525050604080516020601f8a01819004810282018101909252888152925088915087908190840183828082843760009201919091525061166692505050565b1515611a5a57506000611c4d565b600060026000898989896040516020018080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050604051602081830303815290604052805190602001208152602001908152602001600020546000141515611b7157611b6a88888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a9150899081908401838280828437600092019190915250611fc992505050565b9050611be7565b611be488888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250611fc992505050565b90505b6001805482908110611bf557fe5b906000526020600020906004020160030160029054906101000a900460ff168015611c4957506001805482908110611c2957fe5b906000526020600020906004020160030160019054906101000a900460ff165b9150505b9695505050505050565b60008060009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b158015611ca957600080fd5b505afa158015611cbd573d6000803e3d6000fd5b505050506040513d6020811015611cd357600080fd5b5051600160a060020a03163314611d22576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020612172833981519152604482015290519081900360640190fd5b611dc987878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8b01819004810282018101909252898152925089915088908190840183828082843760009201919091525050604080516020601f8a01819004810282018101909252888152925088915087908190840183828082843760009201919091525061166692505050565b1515611dd757506000611c4d565b600060026000898989896040516020018080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509650505050505050604051602081830303815290604052805190602001208152602001908152602001600020546000141515611eee57611ee788888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a9150899081908401838280828437600092019190915250611fc992505050565b9050611f64565b611f6188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250611fc992505050565b90505b6001805482908110611f7257fe5b906000526020600020906004020160030160029054906101000a900460ff168015611c4957506001805482908110611fa657fe5b600091825260209091206004909102016003015460ff1698975050505050505050565b60006001600260008585604051602001808060200180602001838103835285818151815260200191508051906020019080838360005b83811015612017578181015183820152602001611fff565b50505050905090810190601f1680156120445780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561207757818101518382015260200161205f565b50505050905090810190601f1680156120a45780820380516001836020036101000a031916815260200191505b509450505050506040516020818303038152906040528051906020012081526020019081526020016000205403905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061211a57805160ff1916838001178555612147565b82800160010185558215612147579182015b8281111561214757825182559160200191906001019061212c565b50612153929150612157565b5090565b61114d91905b80821115612153576000815560010161215d56fe696e76616c69642063616c6c6572000000000000000000000000000000000000a165627a7a72305820f8334f4c837fc860658ba7f6cbdcd114ed4d2ad6e79527389616d6999c588de60029 \ No newline at end of file diff --git a/permission/contract/gen/VoterManager.bin b/permission/contract/gen/VoterManager.bin index 428e247fa..01f0ad127 100644 --- a/permission/contract/gen/VoterManager.bin +++ b/permission/contract/gen/VoterManager.bin @@ -1 +1 @@ -6080604052600060035534801561001557600080fd5b506040516020806120968339810180604052602081101561003557600080fd5b505160008054600160a060020a03909216600160a060020a031990921691909117905561202f806100676000396000f3fe608060405234801561001057600080fd5b506004361061005a5760e060020a6000350463014e6acc811461005f5780635607395b146101cd57806359cbd6fe14610248578063b0213864146102c1578063e98ac22d14610354575b600080fd5b6100cf6004803603602081101561007557600080fd5b81019060208101813564010000000081111561009057600080fd5b8201836020820111156100a257600080fd5b803590602001918460018302840111640100000000831117156100c457600080fd5b509092509050610477565b60405180806020018060200185600160a060020a0316600160a060020a03168152602001848152602001838103835287818151815260200191508051906020019080838360005b8381101561012e578181015183820152602001610116565b50505050905090810190601f16801561015b5780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b8381101561018e578181015183820152602001610176565b50505050905090810190601f1680156101bb5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b610246600480360360408110156101e357600080fd5b8101906020810181356401000000008111156101fe57600080fd5b82018360208201111561021057600080fd5b8035906020019184600183028401116401000000008311171561023257600080fd5b919350915035600160a060020a031661074e565b005b6102466004803603604081101561025e57600080fd5b81019060208101813564010000000081111561027957600080fd5b82018360208201111561028b57600080fd5b803590602001918460018302840111640100000000831117156102ad57600080fd5b919350915035600160a060020a0316610f63565b610340600480360360608110156102d757600080fd5b8101906020810181356401000000008111156102f257600080fd5b82018360208201111561030457600080fd5b8035906020019184600183028401116401000000008311171561032657600080fd5b9193509150600160a060020a03813516906020013561124d565b604080519115158252519081900360200190f35b610246600480360360a081101561036a57600080fd5b81019060208101813564010000000081111561038557600080fd5b82018360208201111561039757600080fd5b803590602001918460018302840111640100000000831117156103b957600080fd5b9193909290916020810190356401000000008111156103d757600080fd5b8201836020820111156103e957600080fd5b8035906020019184600183028401116401000000008311171561040b57600080fd5b91939092909160208101903564010000000081111561042957600080fd5b82018360208201111561043b57600080fd5b8035906020019184600183028401116401000000008311171561045d57600080fd5b9193509150600160a060020a038135169060200135611772565b6060806000806000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156104cd57600080fd5b505afa1580156104e1573d6000803e3d6000fd5b505050506040513d60208110156104f757600080fd5b5051600160a060020a03163314610546576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020611fb0833981519152604482015290519081900360640190fd5b600061058787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b7492505050565b905060018181548110151561059857fe5b90600052602060002090600b02016004016000016001828154811015156105bb57fe5b90600052602060002090600b02016004016001016001838154811015156105de57fe5b600091825260209091206006600b90920201015460018054600160a060020a03909216918590811061060c57fe5b60009182526020918290206007600b909202010154845460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815291928691908301828280156106a75780601f1061067c576101008083540402835291602001916106a7565b820191906000526020600020905b81548152906001019060200180831161068a57829003601f168201915b5050865460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959950889450925084019050828280156107355780601f1061070a57610100808354040283529160200191610735565b820191906000526020600020905b81548152906001019060200180831161071857829003601f168201915b5050505050925094509450945094505092959194509250565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561079e57600080fd5b505afa1580156107b2573d6000803e3d6000fd5b505050506040513d60208110156107c857600080fd5b5051600160a060020a03163314610817576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020611fb0833981519152604482015290519081900360640190fd5b60026000848460405160200180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040528051906020012081526020019081526020016000205460001415610bac576003805460010190819055604080516020808201908152918101859052600291600091879187918190606001848480828437600081840152601f19601f8201169050808301925050509350505050604051602081830303815290604052805190602001208152602001908152602001600020819055506000600180548091906001016109119190611d54565b9050838360018381548110151561092457fe5b6000918252602090912061093e93600b9092020191611d85565b506001808281548110151561094f57fe5b90600052602060002090600b0201600101819055506001808281548110151561097457fe5b90600052602060002090600b020160020181905550600060018281548110151561099a57fe5b90600052602060002090600b02016003018190555060206040519081016040528060008152506001828154811015156109cf57fe5b90600052602060002090600b020160040160000190805190602001906109f6929190611e03565b506040805160208101909152600081526001805483908110610a1457fe5b90600052602060002090600b02016004016001019080519060200190610a3b929190611e03565b506000600182815481101515610a4d57fe5b600091825260208220600b9190910201600601805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0393909316929092179091556001805483908110610a9a57fe5b600091825260209091206007600b9092020101556001805482908110610abc57fe5b90600052602060002090600b020160010154600182815481101515610add57fe5b60009182526020808320600160a060020a03871684526009600b9093020191909101905260409020556001805482908110610b1457fe5b6000918252602080832060408051808201909152600160a060020a0387811682526001828501818152600b9690960290930160080180549384018155865292909420935193018054925173ffffffffffffffffffffffffffffffffffffffff19909316939091169290921774ff0000000000000000000000000000000000000000191660a060020a9115159190910217905550610eed565b6000610bed84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b7492505050565b9050600181815481101515610bfe57fe5b60009182526020808320600160a060020a03861684526009600b9093020191909101905260409020541515610d7b576001805482908110610c3b57fe5b600091825260209091206001600b909202018101805482019055805482908110610c6157fe5b90600052602060002090600b020160010154600182815481101515610c8257fe5b60009182526020808320600160a060020a03871684526009600b9093020191909101905260409020556001805482908110610cb957fe5b6000918252602080832060408051808201909152600160a060020a0387811682526001828501818152600b969096029093016008018054808501825590875293909520905192018054935173ffffffffffffffffffffffffffffffffffffffff19909416929094169190911774ff0000000000000000000000000000000000000000191660a060020a9215159290920291909117909155805482908110610d5c57fe5b600091825260209091206002600b909202010180546001019055610eeb565b6000610dbe85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250611c1c915050565b9050600182815481101515610dcf57fe5b90600052602060002090600b020160080181815481101515610ded57fe5b60009182526020909120015460a060020a900460ff16151560011415610e5d576040805160e560020a62461bcd02815260206004820152600f60248201527f616c7265616479206120766f7465720000000000000000000000000000000000604482015290519081900360640190fd5b60018083815481101515610e6d57fe5b90600052602060002090600b020160080182815481101515610e8b57fe5b6000918252602090912001805491151560a060020a0274ff0000000000000000000000000000000000000000199092169190911790556001805483908110610ecf57fe5b600091825260209091206002600b909202010180546001019055505b505b60408051600160a060020a03831660208201528181529081018390527f424f3ad05c61ea35cad66f22b70b1fad7250d8229921238078c401db36d34574908490849084908060608101858580828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b158015610fb357600080fd5b505afa158015610fc7573d6000803e3d6000fd5b505050506040513d6020811015610fdd57600080fd5b5051600160a060020a0316331461102c576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020611fb0833981519152604482015290519081900360640190fd5b82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250849250611070915083905082611c6e565b15156001146110c9576040805160e560020a62461bcd02815260206004820152600f60248201527f6d757374206265206120766f7465720000000000000000000000000000000000604482015290519081900360640190fd5b600061110a86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b7492505050565b9050600061114f87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250899250611c1c915050565b905060018281548110151561116057fe5b6000918252602082206002600b90920201018054600019019055600180548490811061118857fe5b90600052602060002090600b0201600801828154811015156111a657fe5b9060005260206000200160000160146101000a81548160ff0219169083151502179055507f654cd85d9b2abaf3affef0a047625d088e6e4d0448935c9b5016b5f5aa0ca3b6878787604051808060200183600160a060020a0316600160a060020a031681526020018281038252858582818152602001925080828437600083820152604051601f909101601f1916909201829003965090945050505050a150505050505050565b60008060009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561129f57600080fd5b505afa1580156112b3573d6000803e3d6000fd5b505050506040513d60208110156112c957600080fd5b5051600160a060020a03163314611318576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020611fb0833981519152604482015290519081900360640190fd5b84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525086925061135c915083905082611c6e565b15156001146113b5576040805160e560020a62461bcd02815260206004820152600f60248201527f6d757374206265206120766f7465720000000000000000000000000000000000604482015290519081900360640190fd5b6113f687878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250889250611d1e915050565b151560011461144f576040805160e560020a62461bcd02815260206004820152601260248201527f6e6f7468696e6720746f20617070726f76650000000000000000000000000000604482015290519081900360640190fd5b600061149088888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b7492505050565b90506001818154811015156114a157fe5b60009182526020808320848452600a600b909302019190910181526040808320600160a060020a038a16845290915290205460ff16151560011415611530576040805160e560020a62461bcd02815260206004820152601260248201527f63616e6e6f7420646f75626c6520766f74650000000000000000000000000000604482015290519081900360640190fd5b600180548290811061153e57fe5b600091825260209091206003600b909202010180546001908101909155805481908390811061156957fe5b60009182526020808320858452600b92909202909101600a0181526040808320600160a060020a038b168452825291829020805460ff19169315159390931790925580518281529182018990527f87999b54e45aa02834a1265e356d7bcdceb72b8cbb4396ebaeba32a103b43508918a918a919081908101848480828437600083820152604051601f909101601f19169092018290039550909350505050a1600260018281548110151561161957fe5b90600052602060002090600b02016002015481151561163457fe5b0460018281548110151561164457fe5b90600052602060002090600b020160030154111561176257604080516020810190915260008152600180548390811061167957fe5b90600052602060002090600b020160040160000190805190602001906116a0929190611e03565b5060408051602081019091526000815260018054839081106116be57fe5b90600052602060002090600b020160040160010190805190602001906116e5929190611e03565b5060006001828154811015156116f757fe5b600091825260208220600b9190910201600601805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039390931692909217909155600180548390811061174457fe5b600091825260209091206007600b9092020101555060019250611768565b60009350505b5050949350505050565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156117c257600080fd5b505afa1580156117d6573d6000803e3d6000fd5b505050506040513d60208110156117ec57600080fd5b5051600160a060020a0316331461183b576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020611fb0833981519152604482015290519081900360640190fd5b61187a88888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250611d1e915050565b15156118ba5760405160e560020a62461bcd028152600401808060200182810382526034815260200180611fd06034913960400191505060405180910390fd5b60006118fb89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b7492505050565b9050868660018381548110151561190e57fe5b90600052602060002090600b0201600401600001919061192f929190611d85565b50848460018381548110151561194157fe5b90600052602060002090600b02016004016001019190611962929190611d85565b508260018281548110151561197357fe5b90600052602060002090600b020160040160020160006101000a815481600160a060020a030219169083600160a060020a03160217905550816001828154811015156119bb57fe5b6000918252602082206007600b9092020101919091555b60018054839081106119e057fe5b90600052602060002090600b020160080180549050811015611ae2576001805483908110611a0a57fe5b90600052602060002090600b020160080181815481101515611a2857fe5b60009182526020909120015460a060020a900460ff1615611ada576000600183815481101515611a5457fe5b90600052602060002090600b0201600a0160008481526020019081526020016000206000600185815481101515611a8757fe5b90600052602060002090600b020160080184815481101515611aa557fe5b600091825260208083209190910154600160a060020a031683528201929092526040019020805460ff19169115159190911790555b6001016119d2565b506000600182815481101515611af457fe5b90600052602060002090600b0201600301819055507f5bfaebb5931145594f63236d2a59314c4dc6035b65d0ca4cee9c7298e2f06ca3898960405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a1505050505050505050565b6000600160026000846040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015611bbd578181015183820152602001611ba5565b50505050905090810190601f168015611bea5780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120815260200190815260200160002054039050919050565b600080611c2884611b74565b905060018082815481101515611c3a57fe5b60009182526020808320600160a060020a03881684526009600b909302019190910190526040902054039150505b92915050565b600080611c7a84611b74565b9050600181815481101515611c8b57fe5b60009182526020808320600160a060020a03871684526009600b9093020191909101905260409020541515611cc4576000915050611c68565b6000611cd08585611c1c565b9050600182815481101515611ce157fe5b90600052602060002090600b020160080181815481101515611cff57fe5b60009182526020909120015460a060020a900460ff1695945050505050565b6000816001611d2c85611b74565b81548110611d3657fe5b90600052602060002090600b02016004016003015414905092915050565b815481835581811115611d8057600b0281600b028360005260206000209182019101611d809190611e71565b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611dc65782800160ff19823516178555611df3565b82800160010185558215611df3579182015b82811115611df3578235825591602001919060010190611dd8565b50611dff929150611f03565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611e4457805160ff1916838001178555611df3565b82800160010185558215611df3579182015b82811115611df3578251825591602001919060010190611e56565b611f0091905b80821115611dff576000611e8b8282611f1d565b60006001830181905560028301819055600383018190556004830190611eb18282611f1d565b611ebf600183016000611f1d565b5060028101805473ffffffffffffffffffffffffffffffffffffffff1916905560006003909101819055611ef7906008840190611f64565b50600b01611e77565b90565b611f0091905b80821115611dff5760008155600101611f09565b50805460018160011615610100020316600290046000825580601f10611f435750611f61565b601f016020900490600052602060002090810190611f619190611f03565b50565b5080546000825590600052602060002090810190611f619190611f0091905b80821115611dff57805474ffffffffffffffffffffffffffffffffffffffffff19168155600101611f8356fe696e76616c69642063616c6c65720000000000000000000000000000000000006974656d732070656e64696e6720666f7220617070726f76616c2e206e6577206974656d2063616e6e6f74206265206164646564a165627a7a723058207fd1e1e1ef8f93c6a3f1ac66e74c550855e0b2f288916e3641064b78476456b90029 \ No newline at end of file +6080604052600060035534801561001557600080fd5b506040516020806120968339810180604052602081101561003557600080fd5b505160008054600160a060020a03909216600160a060020a031990921691909117905561202f806100676000396000f3fe608060405234801561001057600080fd5b506004361061005a5760e060020a6000350463014e6acc811461005f5780635607395b146101cd57806359cbd6fe14610248578063b0213864146102c1578063e98ac22d14610354575b600080fd5b6100cf6004803603602081101561007557600080fd5b81019060208101813564010000000081111561009057600080fd5b8201836020820111156100a257600080fd5b803590602001918460018302840111640100000000831117156100c457600080fd5b509092509050610477565b60405180806020018060200185600160a060020a0316600160a060020a03168152602001848152602001838103835287818151815260200191508051906020019080838360005b8381101561012e578181015183820152602001610116565b50505050905090810190601f16801561015b5780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b8381101561018e578181015183820152602001610176565b50505050905090810190601f1680156101bb5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b610246600480360360408110156101e357600080fd5b8101906020810181356401000000008111156101fe57600080fd5b82018360208201111561021057600080fd5b8035906020019184600183028401116401000000008311171561023257600080fd5b919350915035600160a060020a031661074e565b005b6102466004803603604081101561025e57600080fd5b81019060208101813564010000000081111561027957600080fd5b82018360208201111561028b57600080fd5b803590602001918460018302840111640100000000831117156102ad57600080fd5b919350915035600160a060020a0316610f63565b610340600480360360608110156102d757600080fd5b8101906020810181356401000000008111156102f257600080fd5b82018360208201111561030457600080fd5b8035906020019184600183028401116401000000008311171561032657600080fd5b9193509150600160a060020a03813516906020013561124d565b604080519115158252519081900360200190f35b610246600480360360a081101561036a57600080fd5b81019060208101813564010000000081111561038557600080fd5b82018360208201111561039757600080fd5b803590602001918460018302840111640100000000831117156103b957600080fd5b9193909290916020810190356401000000008111156103d757600080fd5b8201836020820111156103e957600080fd5b8035906020019184600183028401116401000000008311171561040b57600080fd5b91939092909160208101903564010000000081111561042957600080fd5b82018360208201111561043b57600080fd5b8035906020019184600183028401116401000000008311171561045d57600080fd5b9193509150600160a060020a038135169060200135611772565b6060806000806000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156104cd57600080fd5b505afa1580156104e1573d6000803e3d6000fd5b505050506040513d60208110156104f757600080fd5b5051600160a060020a03163314610546576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020611fb0833981519152604482015290519081900360640190fd5b600061058787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b7492505050565b905060018181548110151561059857fe5b90600052602060002090600b02016004016000016001828154811015156105bb57fe5b90600052602060002090600b02016004016001016001838154811015156105de57fe5b600091825260209091206006600b90920201015460018054600160a060020a03909216918590811061060c57fe5b60009182526020918290206007600b909202010154845460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815291928691908301828280156106a75780601f1061067c576101008083540402835291602001916106a7565b820191906000526020600020905b81548152906001019060200180831161068a57829003601f168201915b5050865460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959950889450925084019050828280156107355780601f1061070a57610100808354040283529160200191610735565b820191906000526020600020905b81548152906001019060200180831161071857829003601f168201915b5050505050925094509450945094505092959194509250565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561079e57600080fd5b505afa1580156107b2573d6000803e3d6000fd5b505050506040513d60208110156107c857600080fd5b5051600160a060020a03163314610817576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020611fb0833981519152604482015290519081900360640190fd5b60026000848460405160200180806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505093505050506040516020818303038152906040528051906020012081526020019081526020016000205460001415610bac576003805460010190819055604080516020808201908152918101859052600291600091879187918190606001848480828437600081840152601f19601f8201169050808301925050509350505050604051602081830303815290604052805190602001208152602001908152602001600020819055506000600180548091906001016109119190611d54565b9050838360018381548110151561092457fe5b6000918252602090912061093e93600b9092020191611d85565b506001808281548110151561094f57fe5b90600052602060002090600b0201600101819055506001808281548110151561097457fe5b90600052602060002090600b020160020181905550600060018281548110151561099a57fe5b90600052602060002090600b02016003018190555060206040519081016040528060008152506001828154811015156109cf57fe5b90600052602060002090600b020160040160000190805190602001906109f6929190611e03565b506040805160208101909152600081526001805483908110610a1457fe5b90600052602060002090600b02016004016001019080519060200190610a3b929190611e03565b506000600182815481101515610a4d57fe5b600091825260208220600b9190910201600601805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0393909316929092179091556001805483908110610a9a57fe5b600091825260209091206007600b9092020101556001805482908110610abc57fe5b90600052602060002090600b020160010154600182815481101515610add57fe5b60009182526020808320600160a060020a03871684526009600b9093020191909101905260409020556001805482908110610b1457fe5b6000918252602080832060408051808201909152600160a060020a0387811682526001828501818152600b9690960290930160080180549384018155865292909420935193018054925173ffffffffffffffffffffffffffffffffffffffff19909316939091169290921774ff0000000000000000000000000000000000000000191660a060020a9115159190910217905550610eed565b6000610bed84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b7492505050565b9050600181815481101515610bfe57fe5b60009182526020808320600160a060020a03861684526009600b9093020191909101905260409020541515610d7b576001805482908110610c3b57fe5b600091825260209091206001600b909202018101805482019055805482908110610c6157fe5b90600052602060002090600b020160010154600182815481101515610c8257fe5b60009182526020808320600160a060020a03871684526009600b9093020191909101905260409020556001805482908110610cb957fe5b6000918252602080832060408051808201909152600160a060020a0387811682526001828501818152600b969096029093016008018054808501825590875293909520905192018054935173ffffffffffffffffffffffffffffffffffffffff19909416929094169190911774ff0000000000000000000000000000000000000000191660a060020a9215159290920291909117909155805482908110610d5c57fe5b600091825260209091206002600b909202010180546001019055610eeb565b6000610dbe85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250611c1c915050565b9050600182815481101515610dcf57fe5b90600052602060002090600b020160080181815481101515610ded57fe5b60009182526020909120015460a060020a900460ff16151560011415610e5d576040805160e560020a62461bcd02815260206004820152600f60248201527f616c7265616479206120766f7465720000000000000000000000000000000000604482015290519081900360640190fd5b60018083815481101515610e6d57fe5b90600052602060002090600b020160080182815481101515610e8b57fe5b6000918252602090912001805491151560a060020a0274ff0000000000000000000000000000000000000000199092169190911790556001805483908110610ecf57fe5b600091825260209091206002600b909202010180546001019055505b505b60408051600160a060020a03831660208201528181529081018390527f424f3ad05c61ea35cad66f22b70b1fad7250d8229921238078c401db36d34574908490849084908060608101858580828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b158015610fb357600080fd5b505afa158015610fc7573d6000803e3d6000fd5b505050506040513d6020811015610fdd57600080fd5b5051600160a060020a0316331461102c576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020611fb0833981519152604482015290519081900360640190fd5b82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250849250611070915083905082611c6e565b15156001146110c9576040805160e560020a62461bcd02815260206004820152600f60248201527f6d757374206265206120766f7465720000000000000000000000000000000000604482015290519081900360640190fd5b600061110a86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b7492505050565b9050600061114f87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250899250611c1c915050565b905060018281548110151561116057fe5b6000918252602082206002600b90920201018054600019019055600180548490811061118857fe5b90600052602060002090600b0201600801828154811015156111a657fe5b9060005260206000200160000160146101000a81548160ff0219169083151502179055507f654cd85d9b2abaf3affef0a047625d088e6e4d0448935c9b5016b5f5aa0ca3b6878787604051808060200183600160a060020a0316600160a060020a031681526020018281038252858582818152602001925080828437600083820152604051601f909101601f1916909201829003965090945050505050a150505050505050565b60008060009054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561129f57600080fd5b505afa1580156112b3573d6000803e3d6000fd5b505050506040513d60208110156112c957600080fd5b5051600160a060020a03163314611318576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020611fb0833981519152604482015290519081900360640190fd5b84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525086925061135c915083905082611c6e565b15156001146113b5576040805160e560020a62461bcd02815260206004820152600f60248201527f6d757374206265206120766f7465720000000000000000000000000000000000604482015290519081900360640190fd5b6113f687878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250889250611d1e915050565b151560011461144f576040805160e560020a62461bcd02815260206004820152601260248201527f6e6f7468696e6720746f20617070726f76650000000000000000000000000000604482015290519081900360640190fd5b600061149088888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b7492505050565b90506001818154811015156114a157fe5b60009182526020808320848452600a600b909302019190910181526040808320600160a060020a038a16845290915290205460ff16151560011415611530576040805160e560020a62461bcd02815260206004820152601260248201527f63616e6e6f7420646f75626c6520766f74650000000000000000000000000000604482015290519081900360640190fd5b600180548290811061153e57fe5b600091825260209091206003600b909202010180546001908101909155805481908390811061156957fe5b60009182526020808320858452600b92909202909101600a0181526040808320600160a060020a038b168452825291829020805460ff19169315159390931790925580518281529182018990527f87999b54e45aa02834a1265e356d7bcdceb72b8cbb4396ebaeba32a103b43508918a918a919081908101848480828437600083820152604051601f909101601f19169092018290039550909350505050a1600260018281548110151561161957fe5b90600052602060002090600b02016002015481151561163457fe5b0460018281548110151561164457fe5b90600052602060002090600b020160030154111561176257604080516020810190915260008152600180548390811061167957fe5b90600052602060002090600b020160040160000190805190602001906116a0929190611e03565b5060408051602081019091526000815260018054839081106116be57fe5b90600052602060002090600b020160040160010190805190602001906116e5929190611e03565b5060006001828154811015156116f757fe5b600091825260208220600b9190910201600601805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039390931692909217909155600180548390811061174457fe5b600091825260209091206007600b9092020101555060019250611768565b60009350505b5050949350505050565b6000809054906101000a9004600160a060020a0316600160a060020a0316630e32cf906040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156117c257600080fd5b505afa1580156117d6573d6000803e3d6000fd5b505050506040513d60208110156117ec57600080fd5b5051600160a060020a0316331461183b576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020611fb0833981519152604482015290519081900360640190fd5b61187a88888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250611d1e915050565b15156118ba5760405160e560020a62461bcd028152600401808060200182810382526034815260200180611fd06034913960400191505060405180910390fd5b60006118fb89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b7492505050565b9050868660018381548110151561190e57fe5b90600052602060002090600b0201600401600001919061192f929190611d85565b50848460018381548110151561194157fe5b90600052602060002090600b02016004016001019190611962929190611d85565b508260018281548110151561197357fe5b90600052602060002090600b020160040160020160006101000a815481600160a060020a030219169083600160a060020a03160217905550816001828154811015156119bb57fe5b6000918252602082206007600b9092020101919091555b60018054839081106119e057fe5b90600052602060002090600b020160080180549050811015611ae2576001805483908110611a0a57fe5b90600052602060002090600b020160080181815481101515611a2857fe5b60009182526020909120015460a060020a900460ff1615611ada576000600183815481101515611a5457fe5b90600052602060002090600b0201600a0160008481526020019081526020016000206000600185815481101515611a8757fe5b90600052602060002090600b020160080184815481101515611aa557fe5b600091825260208083209190910154600160a060020a031683528201929092526040019020805460ff19169115159190911790555b6001016119d2565b506000600182815481101515611af457fe5b90600052602060002090600b0201600301819055507f5bfaebb5931145594f63236d2a59314c4dc6035b65d0ca4cee9c7298e2f06ca3898960405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a1505050505050505050565b6000600160026000846040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015611bbd578181015183820152602001611ba5565b50505050905090810190601f168015611bea5780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120815260200190815260200160002054039050919050565b600080611c2884611b74565b905060018082815481101515611c3a57fe5b60009182526020808320600160a060020a03881684526009600b909302019190910190526040902054039150505b92915050565b600080611c7a84611b74565b9050600181815481101515611c8b57fe5b60009182526020808320600160a060020a03871684526009600b9093020191909101905260409020541515611cc4576000915050611c68565b6000611cd08585611c1c565b9050600182815481101515611ce157fe5b90600052602060002090600b020160080181815481101515611cff57fe5b60009182526020909120015460a060020a900460ff1695945050505050565b6000816001611d2c85611b74565b81548110611d3657fe5b90600052602060002090600b02016004016003015414905092915050565b815481835581811115611d8057600b0281600b028360005260206000209182019101611d809190611e71565b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611dc65782800160ff19823516178555611df3565b82800160010185558215611df3579182015b82811115611df3578235825591602001919060010190611dd8565b50611dff929150611f03565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611e4457805160ff1916838001178555611df3565b82800160010185558215611df3579182015b82811115611df3578251825591602001919060010190611e56565b611f0091905b80821115611dff576000611e8b8282611f1d565b60006001830181905560028301819055600383018190556004830190611eb18282611f1d565b611ebf600183016000611f1d565b5060028101805473ffffffffffffffffffffffffffffffffffffffff1916905560006003909101819055611ef7906008840190611f64565b50600b01611e77565b90565b611f0091905b80821115611dff5760008155600101611f09565b50805460018160011615610100020316600290046000825580601f10611f435750611f61565b601f016020900490600052602060002090810190611f619190611f03565b50565b5080546000825590600052602060002090810190611f619190611f0091905b80821115611dff57805474ffffffffffffffffffffffffffffffffffffffffff19168155600101611f8356fe696e76616c69642063616c6c65720000000000000000000000000000000000006974656d732070656e64696e6720666f7220617070726f76616c2e206e6577206974656d2063616e6e6f74206265206164646564a165627a7a72305820853b884fe72210949b9c5307ef60e47eb2f01504e26db430be567e00ee7527a70029 \ No newline at end of file diff --git a/permission/permission.go b/permission/permission.go index 7b65ddfa1..5415aec61 100644 --- a/permission/permission.go +++ b/permission/permission.go @@ -13,6 +13,7 @@ import ( "time" "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/eth" @@ -173,7 +174,8 @@ func (p *PermissionCtrl) AfterStart() error { } // populate the initial list of permissioned nodes and account accesses - if err := p.populateInitPermissions(); err != nil { + if err := p.populateInitPermissions(params.DEFAULT_ORGCACHE_SIZE, params.DEFAULT_ROLECACHE_SIZE, + params.DEFAULT_NODECACHE_SIZE, params.DEFAULT_ACCOUNTCACHE_SIZE); err != nil { return fmt.Errorf("populateInitPermissions failed: %v", err) } @@ -569,8 +571,11 @@ func (p *PermissionCtrl) manageAccountPermissions() error { types.AcctInfoMap.UpsertAccount(evtAccessRevoked.OrgId, evtAccessRevoked.RoleId, evtAccessRevoked.Account, evtAccessRevoked.OrgAdmin, types.AcctActive) case evtStatusChanged := <-chStatusChanged: - ac := types.AcctInfoMap.GetAccount(evtStatusChanged.Account) - types.AcctInfoMap.UpsertAccount(evtStatusChanged.OrgId, ac.RoleId, evtStatusChanged.Account, ac.IsOrgAdmin, types.AcctStatus(int(evtStatusChanged.Status.Uint64()))) + if ac, err := types.AcctInfoMap.GetAccount(evtStatusChanged.Account); ac != nil { + types.AcctInfoMap.UpsertAccount(evtStatusChanged.OrgId, ac.RoleId, evtStatusChanged.Account, ac.IsOrgAdmin, types.AcctStatus(int(evtStatusChanged.Status.Uint64()))) + } else { + log.Info("error fetching account information", "err", err) + } case <-stopChan: log.Info("quit account contract watch") return @@ -610,9 +615,25 @@ func (p *PermissionCtrl) disconnectNode(enodeId string) { } +func (p *PermissionCtrl) instantiateCache(orgCacheSize, roleCacheSize, nodeCacheSize, accountCacheSize int) { + // instantiate the cache objects for permissions + types.OrgInfoMap = types.NewOrgCache(orgCacheSize) + types.OrgInfoMap.PopulateCacheFunc(p.populateOrgToCache) + + types.RoleInfoMap = types.NewRoleCache(roleCacheSize) + types.RoleInfoMap.PopulateCacheFunc(p.populateRoleToCache) + + types.NodeInfoMap = types.NewNodeCache(nodeCacheSize) + types.NodeInfoMap.PopulateCacheFunc(p.populateNodeCache) + types.NodeInfoMap.PopulateValidateFunc(p.populateNodeCacheAndValidate) + + types.AcctInfoMap = types.NewAcctCache(accountCacheSize) + types.AcctInfoMap.PopulateCacheFunc(p.populateAccountToCache) +} + // Thus function checks if the initial network boot up status and if no // populates permissions model with details from permission-config.json -func (p *PermissionCtrl) populateInitPermissions() error { +func (p *PermissionCtrl) populateInitPermissions(orgCacheSize, roleCacheSize, nodeCacheSize, accountCacheSize int) error { auth := bind.NewKeyedTransactor(p.key) permInterfSession := &pbind.PermInterfaceSession{ Contract: p.permInterf, @@ -627,6 +648,8 @@ func (p *PermissionCtrl) populateInitPermissions() error { }, } + p.instantiateCache(orgCacheSize, roleCacheSize, nodeCacheSize, accountCacheSize) + networkInitialized, err := permInterfSession.GetNetworkBootStatus() if err != nil { // handle the scenario of no contract code. @@ -651,7 +674,6 @@ func (p *PermissionCtrl) populateInitPermissions() error { } } } - return nil } @@ -839,7 +861,7 @@ func (p *PermissionCtrl) manageRolePermissions() error { types.RoleInfoMap.UpsertRole(evtRoleCreated.OrgId, evtRoleCreated.RoleId, evtRoleCreated.IsVoter, evtRoleCreated.IsAdmin, types.AccessType(int(evtRoleCreated.BaseAccess.Uint64())), true) case evtRoleRevoked := <-chRoleRevoked: - if r := types.RoleInfoMap.GetRole(evtRoleRevoked.OrgId, evtRoleRevoked.RoleId); r != nil { + if r, _ := types.RoleInfoMap.GetRole(evtRoleRevoked.OrgId, evtRoleRevoked.RoleId); r != nil { types.RoleInfoMap.UpsertRole(evtRoleRevoked.OrgId, evtRoleRevoked.RoleId, r.IsVoter, r.IsAdmin, r.Access, false) } else { log.Error("Revoke role - cache is missing role", "org", evtRoleRevoked.OrgId, "role", evtRoleRevoked.RoleId) @@ -852,3 +874,129 @@ func (p *PermissionCtrl) manageRolePermissions() error { }() return nil } + +// getter to get an account record from the contract +func (p *PermissionCtrl) populateAccountToCache(acctId common.Address) (*types.AccountInfo, error) { + permAcctInterface := &pbind.AcctManagerSession{ + Contract: p.permAcct, + CallOpts: bind.CallOpts{ + Pending: true, + }, + } + account, orgId, roleId, status, isAdmin, err := permAcctInterface.GetAccountDetails(acctId) + if err != nil { + return nil, err + } + + if status.Int64() == 0 { + return nil, types.ErrAccountNotThere + } + return &types.AccountInfo{AcctId: account, OrgId: orgId, RoleId: roleId, Status: types.AcctStatus(status.Int64()), IsOrgAdmin: isAdmin}, nil +} + +// getter to get a org record from the contract +func (p *PermissionCtrl) populateOrgToCache(orgId string) (*types.OrgInfo, error) { + permOrgInterface := &pbind.OrgManagerSession{ + Contract: p.permOrg, + CallOpts: bind.CallOpts{ + Pending: true, + }, + } + org, parentOrgId, ultimateParentId, orgLevel, orgStatus, err := permOrgInterface.GetOrgDetails(orgId) + if err != nil { + return nil, err + } + if orgStatus.Int64() == 0 { + return nil, types.ErrOrgDoesNotExists + } + orgInfo := types.OrgInfo{OrgId: org, ParentOrgId: parentOrgId, UltimateParent: ultimateParentId, Status: types.OrgStatus(orgStatus.Int64()), Level: orgLevel} + // now need to build the list of sub orgs for this org + subOrgIndexes, err := permOrgInterface.GetSubOrgIndexes(orgId) + if err != nil { + return nil, err + } + + if len(subOrgIndexes) == 0 { + return &orgInfo, nil + } + + // range through the sub org indexes and get the org ids to populate the suborg list + for _, s := range subOrgIndexes { + subOrgId, _, _, _, _, err := permOrgInterface.GetOrgInfo(s) + + if err != nil { + return nil, err + } + orgInfo.SubOrgList = append(orgInfo.SubOrgList, orgId+"."+subOrgId) + + } + return &orgInfo, nil +} + +// getter to get a role record from the contract +func (p *PermissionCtrl) populateRoleToCache(roleKey *types.RoleKey) (*types.RoleInfo, error) { + permRoleInterface := &pbind.RoleManagerSession{ + Contract: p.permRole, + CallOpts: bind.CallOpts{ + Pending: true, + }, + } + roleDetails, err := permRoleInterface.GetRoleDetails(roleKey.RoleId, roleKey.OrgId) + + if err != nil { + return nil, err + } + + if roleDetails.OrgId == "" { + return nil, types.ErrInvalidRole + } + return &types.RoleInfo{OrgId: roleDetails.OrgId, RoleId: roleDetails.RoleId, IsVoter: roleDetails.Voter, IsAdmin: roleDetails.Admin, Access: types.AccessType(roleDetails.AccessType.Int64()), Active: roleDetails.Active}, nil +} + +// getter to get a role record from the contract +func (p *PermissionCtrl) populateNodeCache(url string) (*types.NodeInfo, error) { + permNodeInterface := &pbind.NodeManagerSession{ + Contract: p.permNode, + CallOpts: bind.CallOpts{ + Pending: true, + }, + } + nodeDetails, err := permNodeInterface.GetNodeDetails(url) + if err != nil { + return nil, err + } + + if nodeDetails.NodeStatus.Int64() == 0 { + return nil, types.ErrNodeDoesNotExists + } + return &types.NodeInfo{OrgId: nodeDetails.OrgId, Url: nodeDetails.EnodeId, Status: types.NodeStatus(nodeDetails.NodeStatus.Int64())}, nil +} + +// getter to get a node record from the contract +func (p *PermissionCtrl) populateNodeCacheAndValidate(hexNodeId, ultimateParentId string) bool { + permNodeInterface := &pbind.NodeManagerSession{ + Contract: p.permNode, + CallOpts: bind.CallOpts{ + Pending: true, + }, + } + txnAllowed := false + passedEnode, _ := enode.ParseV4(hexNodeId) + if numberOfNodes, err := permNodeInterface.GetNumberOfNodes(); err == nil { + numNodes := numberOfNodes.Uint64() + for k := uint64(0); k < numNodes; k++ { + if nodeStruct, err := permNodeInterface.GetNodeDetailsFromIndex(big.NewInt(int64(k))); err == nil { + if orgRec, err := types.OrgInfoMap.GetOrg(nodeStruct.OrgId); err != nil { + if orgRec.UltimateParent == ultimateParentId { + recEnode, _ := enode.ParseV4(nodeStruct.EnodeId) + if recEnode.ID() == passedEnode.ID() { + txnAllowed = true + types.NodeInfoMap.UpsertNode(nodeStruct.OrgId, nodeStruct.EnodeId, types.NodeStatus(int(nodeStruct.NodeStatus.Int64()))) + } + } + } + } + } + } + return txnAllowed +} diff --git a/permission/permission_test.go b/permission/permission_test.go index 3934e9e06..9621260a6 100644 --- a/permission/permission_test.go +++ b/permission/permission_test.go @@ -9,6 +9,7 @@ import ( "log" "math/big" "os" + "strconv" "testing" "github.com/ethereum/go-ethereum/accounts" @@ -36,10 +37,16 @@ const ( arbitraryOrgAdminRole = "ORG_ADMIN_ROLE" arbitraryNode1 = "enode://ac6b1096ca56b9f6d004b779ae3728bf83f8e22453404cc3cef16a3d9b96608bc67c4b30db88e0a5a6c6390213f7acbe1153ff6d23ce57380104288ae19373ef@127.0.0.1:21000?discport=0&raftport=50401" arbitraryNode2 = "enode://0ba6b9f606a43a95edc6247cdb1c1e105145817be7bcafd6b2c0ba15d58145f0dc1a194f70ba73cd6f4cdd6864edc7687f311254c7555cc32e4d45aeb1b80416@127.0.0.1:21001?discport=0&raftport=50402" + arbitraryNode3 = "enode://579f786d4e2830bbcc02815a27e8a9bacccc9605df4dc6f20bcc1a6eb391e7225fff7cb83e5b4ecd1f3a94d8b733803f2f66b7e871961e7b029e22c155c3a778@127.0.0.1:21002?discport=0&raftport=50403" + arbitraryNode4 = "enode://3d9ca5956b38557aba991e31cf510d4df641dce9cc26bfeb7de082f0c07abb6ede3a58410c8f249dabeecee4ad3979929ac4c7c496ad20b8cfdd061b7401b4f5@127.0.0.1:21003?discport=0&raftport=50404" arbitraryOrgToAdd = "ORG1" arbitrarySubOrg = "SUB1" arbitrartNewRole1 = "NEW_ROLE_1" arbitrartNewRole2 = "NEW_ROLE_2" + orgCacheSize = 4 + roleCacheSize = 4 + nodeCacheSize = 2 + accountCacheSize = 4 ) var ErrAccountsLinked = errors.New("Accounts linked to the role. Cannot be removed") @@ -196,7 +203,7 @@ func TestPermissionCtrl_PopulateInitPermissions_AfterNetworkIsInitialized(t *tes testObject := typicalPermissionCtrl(t) assert.NoError(t, testObject.AfterStart()) - err := testObject.populateInitPermissions() + err := testObject.populateInitPermissions(orgCacheSize, roleCacheSize, nodeCacheSize, accountCacheSize) assert.NoError(t, err) @@ -236,7 +243,7 @@ func typicalQuorumControlsAPI(t *testing.T) *QuorumControlsAPI { if !assert.NoError(t, pc.AfterStart()) { t.Fail() } - if !assert.NoError(t, pc.populateInitPermissions()) { + if !assert.NoError(t, pc.populateInitPermissions(orgCacheSize, roleCacheSize, nodeCacheSize, accountCacheSize)) { t.Fail() } return NewQuorumControlsAPI(pc) @@ -251,7 +258,7 @@ func TestQuorumControlsAPI_ListAPIs(t *testing.T) { assert.Equal(t, orgDetails.RoleList[0].RoleId, arbitraryNetworkAdminRole) orgDetails, err = testObject.GetOrgDetails("XYZ") - assert.Equal(t, err, errors.New("org does not exist")) + assert.Equal(t, err, errors.New("Org does not exist")) // test NodeList assert.Equal(t, len(testObject.NodeList()), 0) @@ -318,9 +325,21 @@ func TestQuorumControlsAPI_OrgAPIs(t *testing.T) { _, err = testObject.AddSubOrg(arbitraryNetworkAdminOrg, "", "", txa) assert.Equal(t, err, errors.New("Invalid input")) - _, err = testObject.GetOrgDetails(arbitraryOrgToAdd) - assert.NoError(t, err) + // caching tests - cache size for org is 4. add 4 sub orgs + // this will result in cache eviction + // get org details after this + for i := 0; i < orgCacheSize; i++ { + subOrgId := "TESTSUBORG" + strconv.Itoa(i) + _, err = testObject.AddSubOrg(arbitraryNetworkAdminOrg, subOrgId, "", txa) + assert.NoError(t, err) + types.OrgInfoMap.UpsertOrg(subOrgId, arbitraryNetworkAdminOrg, arbitraryNetworkAdminOrg, big.NewInt(2), types.OrgApproved) + } + assert.Equal(t, orgCacheSize, len(types.OrgInfoMap.GetOrgList())) + + orgDetails, err := testObject.GetOrgDetails(arbitraryNetworkAdminOrg) + assert.Equal(t, orgDetails.AcctList[0].AcctId, guardianAddress) + assert.Equal(t, orgDetails.RoleList[0].RoleId, arbitraryNetworkAdminRole) } func TestQuorumControlsAPI_NodeAPIs(t *testing.T) { @@ -366,6 +385,21 @@ func TestQuorumControlsAPI_NodeAPIs(t *testing.T) { _, err = testObject.ApproveBlackListedNodeRecovery(arbitraryNetworkAdminOrg, arbitraryNode2, txa) assert.NoError(t, err) types.NodeInfoMap.UpsertNode(arbitraryNetworkAdminOrg, arbitraryNode2, types.NodeApproved) + + // caching tests - cache size for node is 3. add 2 nodes which will + // result in node eviction from cache. get evicted node details using api + _, err = testObject.AddNode(arbitraryNetworkAdminOrg, arbitraryNode3, txa) + assert.NoError(t, err) + types.NodeInfoMap.UpsertNode(arbitraryNetworkAdminOrg, arbitraryNode3, types.NodeApproved) + + _, err = testObject.AddNode(arbitraryNetworkAdminOrg, arbitraryNode4, txa) + assert.NoError(t, err) + types.NodeInfoMap.UpsertNode(arbitraryNetworkAdminOrg, arbitraryNode4, types.NodeApproved) + + assert.Equal(t, nodeCacheSize, len(types.NodeInfoMap.GetNodeList())) + nodeInfo, err := types.NodeInfoMap.GetNodeByUrl(arbitraryNode4) + assert.True(t, err == nil, "node fetch returned error") + assert.Equal(t, types.NodeApproved, nodeInfo.Status) } func TestQuorumControlsAPI_RoleAndAccountsAPIs(t *testing.T) { @@ -452,6 +486,38 @@ func TestQuorumControlsAPI_RoleAndAccountsAPIs(t *testing.T) { assert.NoError(t, err) types.AcctInfoMap.UpsertAccount(arbitraryNetworkAdminOrg, arbitrartNewRole2, acct, true, types.AcctActive) + // check role cache. the cache size is set to 4 + // insert 4 records and then retrieve the 1st role + for i := 0; i < roleCacheSize; i++ { + roleId := "TESTROLE" + strconv.Itoa(i) + _, err = testObject.AddNewRole(arbitraryNetworkAdminOrg, roleId, uint8(types.FullAccess), false, false, txa) + assert.NoError(t, err) + types.RoleInfoMap.UpsertRole(arbitraryNetworkAdminOrg, roleId, false, false, types.FullAccess, true) + } + + assert.Equal(t, roleCacheSize, len(types.RoleInfoMap.GetRoleList())) + roleInfo, err := types.RoleInfoMap.GetRole(arbitraryNetworkAdminOrg, arbitrartNewRole1) + assert.True(t, err == nil, "error encountered") + + assert.Equal(t, roleInfo.RoleId, arbitrartNewRole1) + + // check account cache + var AccountArray [4]common.Address + AccountArray[0] = common.StringToAddress("0fbdc686b912d7722dc86510934589e0aaf3b55a") + AccountArray[1] = common.StringToAddress("9186eb3d20cbd1f5f992a950d808c4495153abd5") + AccountArray[2] = common.StringToAddress("0638e1574728b6d862dd5d3a3e0942c3be47d996") + AccountArray[3] = common.StringToAddress("ae9bc6cd5145e67fbd1887a5145271fd182f0ee7") + + for i := 0; i < accountCacheSize; i++ { + _, err = testObject.AddAccountToOrg(AccountArray[i], arbitraryNetworkAdminOrg, arbitrartNewRole1, txa) + assert.NoError(t, err) + types.AcctInfoMap.UpsertAccount(arbitraryNetworkAdminOrg, arbitrartNewRole1, AccountArray[i], false, types.AcctActive) + } + assert.Equal(t, accountCacheSize, len(types.AcctInfoMap.GetAcctList())) + + acctInfo, err := types.AcctInfoMap.GetAccount(acct) + assert.True(t, err == nil, "error encountered") + assert.True(t, acctInfo != nil, "account details nil") } func getArbitraryAccount() common.Address { @@ -475,8 +541,8 @@ func typicalPermissionCtrl(t *testing.T) *PermissionCtrl { Accounts: []common.Address{ guardianAddress, }, - SubOrgDepth: big.NewInt(3), - SubOrgBreadth: big.NewInt(3), + SubOrgDepth: big.NewInt(10), + SubOrgBreadth: big.NewInt(10), }) if err != nil { t.Fatal(err) @@ -507,7 +573,7 @@ func TestPermissionCtrl_whenUpdateFile(t *testing.T) { testObject := typicalPermissionCtrl(t) assert.NoError(t, testObject.AfterStart()) - err := testObject.populateInitPermissions() + err := testObject.populateInitPermissions(orgCacheSize, roleCacheSize, nodeCacheSize, accountCacheSize) assert.NoError(t, err) d, _ := ioutil.TempDir("", "qdata")