Merge pull request #5564 from mitake/auth-v3-cleaning

cleaning auth v3
This commit is contained in:
Xiang Li 2016-06-05 08:40:06 -07:00
commit 2baca91ee2
14 changed files with 456 additions and 424 deletions

View File

@ -37,12 +37,14 @@ var (
plog = capnslog.NewPackageLogger("github.com/coreos/etcd", "auth")
ErrUserAlreadyExist = errors.New("auth: user already exists")
ErrUserNotFound = errors.New("auth: user not found")
ErrRoleAlreadyExist = errors.New("auth: role already exists")
ErrRoleNotFound = errors.New("auth: role not found")
ErrAuthFailed = errors.New("auth: authentication failed, invalid user ID or password")
ErrPermissionDenied = errors.New("auth: permission denied")
ErrUserAlreadyExist = errors.New("auth: user already exists")
ErrUserNotFound = errors.New("auth: user not found")
ErrRoleAlreadyExist = errors.New("auth: role already exists")
ErrRoleNotFound = errors.New("auth: role not found")
ErrAuthFailed = errors.New("auth: authentication failed, invalid user ID or password")
ErrPermissionDenied = errors.New("auth: permission denied")
ErrRoleNotGranted = errors.New("auth: role is not granted to the user")
ErrPermissionNotGranted = errors.New("auth: permission is not granted to the role")
)
type AuthStore interface {
@ -76,8 +78,8 @@ type AuthStore interface {
// UserGet gets the detailed information of a user
UserGet(r *pb.AuthUserGetRequest) (*pb.AuthUserGetResponse, error)
// UserRevoke revokes a role of a user
UserRevoke(r *pb.AuthUserRevokeRequest) (*pb.AuthUserRevokeResponse, error)
// UserRevokeRole revokes a role of a user
UserRevokeRole(r *pb.AuthUserRevokeRoleRequest) (*pb.AuthUserRevokeRoleResponse, error)
// RoleAdd adds a new role
RoleAdd(r *pb.AuthRoleAddRequest) (*pb.AuthRoleAddResponse, error)
@ -88,8 +90,8 @@ type AuthStore interface {
// RoleGet gets the detailed information of a role
RoleGet(r *pb.AuthRoleGetRequest) (*pb.AuthRoleGetResponse, error)
// RoleRevoke gets the detailed information of a role
RoleRevoke(r *pb.AuthRoleRevokeRequest) (*pb.AuthRoleRevokeResponse, error)
// RoleRevokePermission gets the detailed information of a role
RoleRevokePermission(r *pb.AuthRoleRevokePermissionRequest) (*pb.AuthRoleRevokePermissionResponse, error)
// RoleDelete gets the detailed information of a role
RoleDelete(r *pb.AuthRoleDeleteRequest) (*pb.AuthRoleDeleteResponse, error)
@ -333,7 +335,7 @@ func (as *authStore) UserGet(r *pb.AuthUserGetRequest) (*pb.AuthUserGetResponse,
return &resp, nil
}
func (as *authStore) UserRevoke(r *pb.AuthUserRevokeRequest) (*pb.AuthUserRevokeResponse, error) {
func (as *authStore) UserRevokeRole(r *pb.AuthUserRevokeRoleRequest) (*pb.AuthUserRevokeRoleResponse, error) {
tx := as.be.BatchTx()
tx.Lock()
defer tx.Unlock()
@ -353,13 +355,19 @@ func (as *authStore) UserRevoke(r *pb.AuthUserRevokeRequest) (*pb.AuthUserRevoke
updatedUser.Name = user.Name
updatedUser.Password = user.Password
// TODO(mitake): return error if the target role doesn't exist in the granted roles of the user
revoked := false
for _, role := range user.Roles {
if strings.Compare(role, r.Role) != 0 {
updatedUser.Roles = append(updatedUser.Roles, role)
} else {
revoked = true
}
}
if !revoked {
return nil, ErrRoleNotGranted
}
marshaledUser, merr := updatedUser.Marshal()
if merr != nil {
return nil, merr
@ -368,7 +376,7 @@ func (as *authStore) UserRevoke(r *pb.AuthUserRevokeRequest) (*pb.AuthUserRevoke
tx.UnsafePut(authUsersBucketName, updatedUser.Name, marshaledUser)
plog.Noticef("revoked role %s from user %s", r.Role, r.Name)
return &pb.AuthUserRevokeResponse{}, nil
return &pb.AuthUserRevokeRoleResponse{}, nil
}
func (as *authStore) RoleGet(r *pb.AuthRoleGetRequest) (*pb.AuthRoleGetResponse, error) {
@ -395,7 +403,7 @@ func (as *authStore) RoleGet(r *pb.AuthRoleGetRequest) (*pb.AuthRoleGetResponse,
return &resp, nil
}
func (as *authStore) RoleRevoke(r *pb.AuthRoleRevokeRequest) (*pb.AuthRoleRevokeResponse, error) {
func (as *authStore) RoleRevokePermission(r *pb.AuthRoleRevokePermissionRequest) (*pb.AuthRoleRevokePermissionResponse, error) {
tx := as.be.BatchTx()
tx.Lock()
defer tx.Unlock()
@ -414,12 +422,19 @@ func (as *authStore) RoleRevoke(r *pb.AuthRoleRevokeRequest) (*pb.AuthRoleRevoke
updatedRole := &authpb.Role{}
updatedRole.Name = role.Name
revoked := false
for _, perm := range role.KeyPermission {
if !bytes.Equal(perm.Key, []byte(r.Key)) {
updatedRole.KeyPermission = append(updatedRole.KeyPermission, perm)
} else {
revoked = true
}
}
if !revoked {
return nil, ErrPermissionNotGranted
}
marshaledRole, merr := updatedRole.Marshal()
if merr != nil {
return nil, merr
@ -428,7 +443,7 @@ func (as *authStore) RoleRevoke(r *pb.AuthRoleRevokeRequest) (*pb.AuthRoleRevoke
tx.UnsafePut(authRolesBucketName, updatedRole.Name, marshaledRole)
plog.Noticef("revoked key %s from role %s", r.Key, r.Role)
return &pb.AuthRoleRevokeResponse{}, nil
return &pb.AuthRoleRevokePermissionResponse{}, nil
}
func (as *authStore) RoleDelete(r *pb.AuthRoleDeleteRequest) (*pb.AuthRoleDeleteResponse, error) {

View File

@ -26,20 +26,20 @@ import (
)
type (
AuthEnableResponse pb.AuthEnableResponse
AuthDisableResponse pb.AuthDisableResponse
AuthenticateResponse pb.AuthenticateResponse
AuthUserAddResponse pb.AuthUserAddResponse
AuthUserDeleteResponse pb.AuthUserDeleteResponse
AuthUserChangePasswordResponse pb.AuthUserChangePasswordResponse
AuthUserGrantResponse pb.AuthUserGrantResponse
AuthUserGetResponse pb.AuthUserGetResponse
AuthUserRevokeResponse pb.AuthUserRevokeResponse
AuthRoleAddResponse pb.AuthRoleAddResponse
AuthRoleGrantResponse pb.AuthRoleGrantResponse
AuthRoleGetResponse pb.AuthRoleGetResponse
AuthRoleRevokeResponse pb.AuthRoleRevokeResponse
AuthRoleDeleteResponse pb.AuthRoleDeleteResponse
AuthEnableResponse pb.AuthEnableResponse
AuthDisableResponse pb.AuthDisableResponse
AuthenticateResponse pb.AuthenticateResponse
AuthUserAddResponse pb.AuthUserAddResponse
AuthUserDeleteResponse pb.AuthUserDeleteResponse
AuthUserChangePasswordResponse pb.AuthUserChangePasswordResponse
AuthUserGrantResponse pb.AuthUserGrantResponse
AuthUserGetResponse pb.AuthUserGetResponse
AuthUserRevokeRoleResponse pb.AuthUserRevokeRoleResponse
AuthRoleAddResponse pb.AuthRoleAddResponse
AuthRoleGrantResponse pb.AuthRoleGrantResponse
AuthRoleGetResponse pb.AuthRoleGetResponse
AuthRoleRevokePermissionResponse pb.AuthRoleRevokePermissionResponse
AuthRoleDeleteResponse pb.AuthRoleDeleteResponse
PermissionType authpb.Permission_Type
)
@ -72,8 +72,8 @@ type Auth interface {
// UserGet gets a detailed information of a user.
UserGet(ctx context.Context, name string) (*AuthUserGetResponse, error)
// UserRevoke revokes a role of a user.
UserRevoke(ctx context.Context, name string, role string) (*AuthUserRevokeResponse, error)
// UserRevokeRole revokes a role of a user.
UserRevokeRole(ctx context.Context, name string, role string) (*AuthUserRevokeRoleResponse, error)
// RoleAdd adds a new role to an etcd cluster.
RoleAdd(ctx context.Context, name string) (*AuthRoleAddResponse, error)
@ -84,8 +84,8 @@ type Auth interface {
// RoleGet gets a detailed information of a role.
RoleGet(ctx context.Context, role string) (*AuthRoleGetResponse, error)
// RoleRevoke revokes a key from a user.
RoleRevoke(ctx context.Context, role string, key string) (*AuthRoleRevokeResponse, error)
// RoleRevokePermission revokes a key from a user.
RoleRevokePermission(ctx context.Context, role string, key string) (*AuthRoleRevokePermissionResponse, error)
// RoleDelete deletes a role.
RoleDelete(ctx context.Context, role string) (*AuthRoleDeleteResponse, error)
@ -142,9 +142,9 @@ func (auth *auth) UserGet(ctx context.Context, name string) (*AuthUserGetRespons
return (*AuthUserGetResponse)(resp), rpctypes.Error(err)
}
func (auth *auth) UserRevoke(ctx context.Context, name string, role string) (*AuthUserRevokeResponse, error) {
resp, err := auth.remote.UserRevoke(ctx, &pb.AuthUserRevokeRequest{Name: name, Role: role})
return (*AuthUserRevokeResponse)(resp), rpctypes.Error(err)
func (auth *auth) UserRevokeRole(ctx context.Context, name string, role string) (*AuthUserRevokeRoleResponse, error) {
resp, err := auth.remote.UserRevokeRole(ctx, &pb.AuthUserRevokeRoleRequest{Name: name, Role: role})
return (*AuthUserRevokeRoleResponse)(resp), rpctypes.Error(err)
}
func (auth *auth) RoleAdd(ctx context.Context, name string) (*AuthRoleAddResponse, error) {
@ -166,9 +166,9 @@ func (auth *auth) RoleGet(ctx context.Context, role string) (*AuthRoleGetRespons
return (*AuthRoleGetResponse)(resp), rpctypes.Error(err)
}
func (auth *auth) RoleRevoke(ctx context.Context, role string, key string) (*AuthRoleRevokeResponse, error) {
resp, err := auth.remote.RoleRevoke(ctx, &pb.AuthRoleRevokeRequest{Role: role, Key: key})
return (*AuthRoleRevokeResponse)(resp), rpctypes.Error(err)
func (auth *auth) RoleRevokePermission(ctx context.Context, role string, key string) (*AuthRoleRevokePermissionResponse, error) {
resp, err := auth.remote.RoleRevokePermission(ctx, &pb.AuthRoleRevokePermissionRequest{Role: role, Key: key})
return (*AuthRoleRevokePermissionResponse)(resp), rpctypes.Error(err)
}
func (auth *auth) RoleDelete(ctx context.Context, role string) (*AuthRoleDeleteResponse, error) {

View File

@ -143,7 +143,7 @@ func roleRevokePermissionCommandFunc(cmd *cobra.Command, args []string) {
ExitWithError(ExitBadArgs, fmt.Errorf("role revoke-permission command requires role name and key as its argument."))
}
_, err := mustClientFromCmd(cmd).Auth.RoleRevoke(context.TODO(), args[0], args[1])
_, err := mustClientFromCmd(cmd).Auth.RoleRevokePermission(context.TODO(), args[0], args[1])
if err != nil {
ExitWithError(ExitError, err)
}

View File

@ -198,7 +198,7 @@ func userRevokeRoleCommandFunc(cmd *cobra.Command, args []string) {
ExitWithError(ExitBadArgs, fmt.Errorf("user revoke-role requires user name and role name as its argument."))
}
_, err := mustClientFromCmd(cmd).Auth.UserRevoke(context.TODO(), args[0], args[1])
_, err := mustClientFromCmd(cmd).Auth.UserRevokeRole(context.TODO(), args[0], args[1])
if err != nil {
ExitWithError(ExitError, err)
}

View File

@ -76,8 +76,8 @@ func (as *AuthServer) RoleGet(ctx context.Context, r *pb.AuthRoleGetRequest) (*p
return resp, nil
}
func (as *AuthServer) RoleRevoke(ctx context.Context, r *pb.AuthRoleRevokeRequest) (*pb.AuthRoleRevokeResponse, error) {
resp, err := as.authenticator.RoleRevoke(ctx, r)
func (as *AuthServer) RoleRevokePermission(ctx context.Context, r *pb.AuthRoleRevokePermissionRequest) (*pb.AuthRoleRevokePermissionResponse, error) {
resp, err := as.authenticator.RoleRevokePermission(ctx, r)
if err != nil {
return nil, togRPCError(err)
}
@ -124,8 +124,8 @@ func (as *AuthServer) UserGrant(ctx context.Context, r *pb.AuthUserGrantRequest)
return resp, nil
}
func (as *AuthServer) UserRevoke(ctx context.Context, r *pb.AuthUserRevokeRequest) (*pb.AuthUserRevokeResponse, error) {
resp, err := as.authenticator.UserRevoke(ctx, r)
func (as *AuthServer) UserRevokeRole(ctx context.Context, r *pb.AuthUserRevokeRoleRequest) (*pb.AuthUserRevokeRoleResponse, error) {
resp, err := as.authenticator.UserRevokeRole(ctx, r)
if err != nil {
return nil, togRPCError(err)
}

View File

@ -38,12 +38,14 @@ var (
ErrGRPCRequestTooLarge = grpc.Errorf(codes.InvalidArgument, "etcdserver: request is too large")
ErrGRPCUserAlreadyExist = grpc.Errorf(codes.FailedPrecondition, "etcdserver: user name already exists")
ErrGRPCUserNotFound = grpc.Errorf(codes.FailedPrecondition, "etcdserver: user name not found")
ErrGRPCRoleAlreadyExist = grpc.Errorf(codes.FailedPrecondition, "etcdserver: role name already exists")
ErrGRPCRoleNotFound = grpc.Errorf(codes.FailedPrecondition, "etcdserver: role name not found")
ErrGRPCAuthFailed = grpc.Errorf(codes.InvalidArgument, "etcdserver: authentication failed, invalid user ID or password")
ErrGRPCPermissionDenied = grpc.Errorf(codes.FailedPrecondition, "etcdserver: permission denied")
ErrGRPCUserAlreadyExist = grpc.Errorf(codes.FailedPrecondition, "etcdserver: user name already exists")
ErrGRPCUserNotFound = grpc.Errorf(codes.FailedPrecondition, "etcdserver: user name not found")
ErrGRPCRoleAlreadyExist = grpc.Errorf(codes.FailedPrecondition, "etcdserver: role name already exists")
ErrGRPCRoleNotFound = grpc.Errorf(codes.FailedPrecondition, "etcdserver: role name not found")
ErrGRPCAuthFailed = grpc.Errorf(codes.InvalidArgument, "etcdserver: authentication failed, invalid user ID or password")
ErrGRPCPermissionDenied = grpc.Errorf(codes.FailedPrecondition, "etcdserver: permission denied")
ErrGRPCRoleNotGranted = grpc.Errorf(codes.FailedPrecondition, "etcdserver: role is not granted to the user")
ErrGRPCPermissionNotGranted = grpc.Errorf(codes.FailedPrecondition, "etcdserver: permission is not granted to the role")
ErrGRPCNoLeader = grpc.Errorf(codes.Unavailable, "etcdserver: no leader")
ErrGRPCNotCapable = grpc.Errorf(codes.Unavailable, "etcdserver: not capable")
@ -66,12 +68,14 @@ var (
grpc.ErrorDesc(ErrGRPCRequestTooLarge): ErrGRPCRequestTooLarge,
grpc.ErrorDesc(ErrGRPCUserAlreadyExist): ErrGRPCUserAlreadyExist,
grpc.ErrorDesc(ErrGRPCUserNotFound): ErrGRPCUserNotFound,
grpc.ErrorDesc(ErrGRPCRoleAlreadyExist): ErrGRPCRoleAlreadyExist,
grpc.ErrorDesc(ErrGRPCRoleNotFound): ErrGRPCRoleNotFound,
grpc.ErrorDesc(ErrGRPCAuthFailed): ErrGRPCAuthFailed,
grpc.ErrorDesc(ErrGRPCPermissionDenied): ErrGRPCPermissionDenied,
grpc.ErrorDesc(ErrGRPCUserAlreadyExist): ErrGRPCUserAlreadyExist,
grpc.ErrorDesc(ErrGRPCUserNotFound): ErrGRPCUserNotFound,
grpc.ErrorDesc(ErrGRPCRoleAlreadyExist): ErrGRPCRoleAlreadyExist,
grpc.ErrorDesc(ErrGRPCRoleNotFound): ErrGRPCRoleNotFound,
grpc.ErrorDesc(ErrGRPCAuthFailed): ErrGRPCAuthFailed,
grpc.ErrorDesc(ErrGRPCPermissionDenied): ErrGRPCPermissionDenied,
grpc.ErrorDesc(ErrGRPCRoleNotGranted): ErrGRPCRoleNotGranted,
grpc.ErrorDesc(ErrGRPCPermissionNotGranted): ErrGRPCPermissionNotGranted,
grpc.ErrorDesc(ErrGRPCNoLeader): ErrGRPCNoLeader,
grpc.ErrorDesc(ErrGRPCNotCapable): ErrGRPCNotCapable,
@ -95,12 +99,14 @@ var (
ErrRequestTooLarge = Error(ErrGRPCRequestTooLarge)
ErrUserAlreadyExist = Error(ErrGRPCUserAlreadyExist)
ErrUserNotFound = Error(ErrGRPCUserNotFound)
ErrRoleAlreadyExist = Error(ErrGRPCRoleAlreadyExist)
ErrRoleNotFound = Error(ErrGRPCRoleNotFound)
ErrAuthFailed = Error(ErrGRPCAuthFailed)
ErrPermissionDenied = Error(ErrGRPCPermissionDenied)
ErrUserAlreadyExist = Error(ErrGRPCUserAlreadyExist)
ErrUserNotFound = Error(ErrGRPCUserNotFound)
ErrRoleAlreadyExist = Error(ErrGRPCRoleAlreadyExist)
ErrRoleNotFound = Error(ErrGRPCRoleNotFound)
ErrAuthFailed = Error(ErrGRPCAuthFailed)
ErrPermissionDenied = Error(ErrGRPCPermissionDenied)
ErrRoleNotGranted = Error(ErrGRPCRoleNotGranted)
ErrPermissionNotGranted = Error(ErrGRPCPermissionNotGranted)
ErrNoLeader = Error(ErrGRPCNoLeader)
ErrNotCapable = Error(ErrGRPCNotCapable)

View File

@ -49,6 +49,10 @@ func togRPCError(err error) error {
return rpctypes.ErrGRPCAuthFailed
case auth.ErrPermissionDenied:
return rpctypes.ErrGRPCPermissionDenied
case auth.ErrRoleNotGranted:
return rpctypes.ErrGRPCRoleNotGranted
case auth.ErrPermissionNotGranted:
return rpctypes.ErrGRPCPermissionNotGranted
default:
return grpc.Errorf(codes.Internal, err.Error())
}

View File

@ -62,11 +62,11 @@ type applierV3 interface {
UserChangePassword(ua *pb.AuthUserChangePasswordRequest) (*pb.AuthUserChangePasswordResponse, error)
UserGrant(ua *pb.AuthUserGrantRequest) (*pb.AuthUserGrantResponse, error)
UserGet(ua *pb.AuthUserGetRequest) (*pb.AuthUserGetResponse, error)
UserRevoke(ua *pb.AuthUserRevokeRequest) (*pb.AuthUserRevokeResponse, error)
UserRevokeRole(ua *pb.AuthUserRevokeRoleRequest) (*pb.AuthUserRevokeRoleResponse, error)
RoleAdd(ua *pb.AuthRoleAddRequest) (*pb.AuthRoleAddResponse, error)
RoleGrant(ua *pb.AuthRoleGrantRequest) (*pb.AuthRoleGrantResponse, error)
RoleGet(ua *pb.AuthRoleGetRequest) (*pb.AuthRoleGetResponse, error)
RoleRevoke(ua *pb.AuthRoleRevokeRequest) (*pb.AuthRoleRevokeResponse, error)
RoleRevokePermission(ua *pb.AuthRoleRevokePermissionRequest) (*pb.AuthRoleRevokePermissionResponse, error)
RoleDelete(ua *pb.AuthRoleDeleteRequest) (*pb.AuthRoleDeleteResponse, error)
}
@ -117,16 +117,16 @@ func (s *EtcdServer) applyV3Request(r *pb.InternalRaftRequest) *applyResult {
ar.resp, ar.err = s.applyV3.UserGrant(r.AuthUserGrant)
case r.AuthUserGet != nil:
ar.resp, ar.err = s.applyV3.UserGet(r.AuthUserGet)
case r.AuthUserRevoke != nil:
ar.resp, ar.err = s.applyV3.UserRevoke(r.AuthUserRevoke)
case r.AuthUserRevokeRole != nil:
ar.resp, ar.err = s.applyV3.UserRevokeRole(r.AuthUserRevokeRole)
case r.AuthRoleAdd != nil:
ar.resp, ar.err = s.applyV3.RoleAdd(r.AuthRoleAdd)
case r.AuthRoleGrant != nil:
ar.resp, ar.err = s.applyV3.RoleGrant(r.AuthRoleGrant)
case r.AuthRoleGet != nil:
ar.resp, ar.err = s.applyV3.RoleGet(r.AuthRoleGet)
case r.AuthRoleRevoke != nil:
ar.resp, ar.err = s.applyV3.RoleRevoke(r.AuthRoleRevoke)
case r.AuthRoleRevokePermission != nil:
ar.resp, ar.err = s.applyV3.RoleRevokePermission(r.AuthRoleRevokePermission)
case r.AuthRoleDelete != nil:
ar.resp, ar.err = s.applyV3.RoleDelete(r.AuthRoleDelete)
default:
@ -551,8 +551,8 @@ func (a *applierV3backend) UserGet(r *pb.AuthUserGetRequest) (*pb.AuthUserGetRes
return a.s.AuthStore().UserGet(r)
}
func (a *applierV3backend) UserRevoke(r *pb.AuthUserRevokeRequest) (*pb.AuthUserRevokeResponse, error) {
return a.s.AuthStore().UserRevoke(r)
func (a *applierV3backend) UserRevokeRole(r *pb.AuthUserRevokeRoleRequest) (*pb.AuthUserRevokeRoleResponse, error) {
return a.s.AuthStore().UserRevokeRole(r)
}
func (a *applierV3backend) RoleAdd(r *pb.AuthRoleAddRequest) (*pb.AuthRoleAddResponse, error) {
@ -567,8 +567,8 @@ func (a *applierV3backend) RoleGet(r *pb.AuthRoleGetRequest) (*pb.AuthRoleGetRes
return a.s.AuthStore().RoleGet(r)
}
func (a *applierV3backend) RoleRevoke(r *pb.AuthRoleRevokeRequest) (*pb.AuthRoleRevokeResponse, error) {
return a.s.AuthStore().RoleRevoke(r)
func (a *applierV3backend) RoleRevokePermission(r *pb.AuthRoleRevokePermissionRequest) (*pb.AuthRoleRevokePermissionResponse, error) {
return a.s.AuthStore().RoleRevokePermission(r)
}
func (a *applierV3backend) RoleDelete(r *pb.AuthRoleDeleteRequest) (*pb.AuthRoleDeleteResponse, error) {

View File

@ -68,12 +68,12 @@
AuthUserDeleteRequest
AuthUserChangePasswordRequest
AuthUserGrantRequest
AuthUserRevokeRequest
AuthUserRevokeRoleRequest
AuthRoleAddRequest
AuthRoleGetRequest
AuthRoleDeleteRequest
AuthRoleGrantRequest
AuthRoleRevokeRequest
AuthRoleRevokePermissionRequest
AuthEnableResponse
AuthDisableResponse
AuthenticateResponse
@ -82,12 +82,12 @@
AuthUserDeleteResponse
AuthUserChangePasswordResponse
AuthUserGrantResponse
AuthUserRevokeResponse
AuthUserRevokeRoleResponse
AuthRoleAddResponse
AuthRoleGetResponse
AuthRoleDeleteResponse
AuthRoleGrantResponse
AuthRoleRevokeResponse
AuthRoleRevokePermissionResponse
*/
package etcdserverpb

View File

@ -33,31 +33,31 @@ func (*RequestHeader) Descriptor() ([]byte, []int) { return fileDescriptorRaftIn
// An InternalRaftRequest is the union of all requests which can be
// sent via raft.
type InternalRaftRequest struct {
Header *RequestHeader `protobuf:"bytes,100,opt,name=header" json:"header,omitempty"`
ID uint64 `protobuf:"varint,1,opt,name=ID,json=iD,proto3" json:"ID,omitempty"`
V2 *Request `protobuf:"bytes,2,opt,name=v2" json:"v2,omitempty"`
Range *RangeRequest `protobuf:"bytes,3,opt,name=range" json:"range,omitempty"`
Put *PutRequest `protobuf:"bytes,4,opt,name=put" json:"put,omitempty"`
DeleteRange *DeleteRangeRequest `protobuf:"bytes,5,opt,name=delete_range,json=deleteRange" json:"delete_range,omitempty"`
Txn *TxnRequest `protobuf:"bytes,6,opt,name=txn" json:"txn,omitempty"`
Compaction *CompactionRequest `protobuf:"bytes,7,opt,name=compaction" json:"compaction,omitempty"`
LeaseGrant *LeaseGrantRequest `protobuf:"bytes,8,opt,name=lease_grant,json=leaseGrant" json:"lease_grant,omitempty"`
LeaseRevoke *LeaseRevokeRequest `protobuf:"bytes,9,opt,name=lease_revoke,json=leaseRevoke" json:"lease_revoke,omitempty"`
Alarm *AlarmRequest `protobuf:"bytes,10,opt,name=alarm" json:"alarm,omitempty"`
AuthEnable *AuthEnableRequest `protobuf:"bytes,1000,opt,name=auth_enable,json=authEnable" json:"auth_enable,omitempty"`
AuthDisable *AuthDisableRequest `protobuf:"bytes,1011,opt,name=auth_disable,json=authDisable" json:"auth_disable,omitempty"`
AuthUserAdd *AuthUserAddRequest `protobuf:"bytes,1012,opt,name=auth_user_add,json=authUserAdd" json:"auth_user_add,omitempty"`
AuthUserDelete *AuthUserDeleteRequest `protobuf:"bytes,1013,opt,name=auth_user_delete,json=authUserDelete" json:"auth_user_delete,omitempty"`
AuthUserChangePassword *AuthUserChangePasswordRequest `protobuf:"bytes,1014,opt,name=auth_user_change_password,json=authUserChangePassword" json:"auth_user_change_password,omitempty"`
AuthUserGrant *AuthUserGrantRequest `protobuf:"bytes,1015,opt,name=auth_user_grant,json=authUserGrant" json:"auth_user_grant,omitempty"`
AuthRoleAdd *AuthRoleAddRequest `protobuf:"bytes,1016,opt,name=auth_role_add,json=authRoleAdd" json:"auth_role_add,omitempty"`
AuthRoleGrant *AuthRoleGrantRequest `protobuf:"bytes,1017,opt,name=auth_role_grant,json=authRoleGrant" json:"auth_role_grant,omitempty"`
Authenticate *AuthenticateRequest `protobuf:"bytes,1018,opt,name=authenticate" json:"authenticate,omitempty"`
AuthUserGet *AuthUserGetRequest `protobuf:"bytes,1019,opt,name=auth_user_get,json=authUserGet" json:"auth_user_get,omitempty"`
AuthRoleGet *AuthRoleGetRequest `protobuf:"bytes,1020,opt,name=auth_role_get,json=authRoleGet" json:"auth_role_get,omitempty"`
AuthUserRevoke *AuthUserRevokeRequest `protobuf:"bytes,1021,opt,name=auth_user_revoke,json=authUserRevoke" json:"auth_user_revoke,omitempty"`
AuthRoleRevoke *AuthRoleRevokeRequest `protobuf:"bytes,1022,opt,name=auth_role_revoke,json=authRoleRevoke" json:"auth_role_revoke,omitempty"`
AuthRoleDelete *AuthRoleDeleteRequest `protobuf:"bytes,1023,opt,name=auth_role_delete,json=authRoleDelete" json:"auth_role_delete,omitempty"`
Header *RequestHeader `protobuf:"bytes,100,opt,name=header" json:"header,omitempty"`
ID uint64 `protobuf:"varint,1,opt,name=ID,json=iD,proto3" json:"ID,omitempty"`
V2 *Request `protobuf:"bytes,2,opt,name=v2" json:"v2,omitempty"`
Range *RangeRequest `protobuf:"bytes,3,opt,name=range" json:"range,omitempty"`
Put *PutRequest `protobuf:"bytes,4,opt,name=put" json:"put,omitempty"`
DeleteRange *DeleteRangeRequest `protobuf:"bytes,5,opt,name=delete_range,json=deleteRange" json:"delete_range,omitempty"`
Txn *TxnRequest `protobuf:"bytes,6,opt,name=txn" json:"txn,omitempty"`
Compaction *CompactionRequest `protobuf:"bytes,7,opt,name=compaction" json:"compaction,omitempty"`
LeaseGrant *LeaseGrantRequest `protobuf:"bytes,8,opt,name=lease_grant,json=leaseGrant" json:"lease_grant,omitempty"`
LeaseRevoke *LeaseRevokeRequest `protobuf:"bytes,9,opt,name=lease_revoke,json=leaseRevoke" json:"lease_revoke,omitempty"`
Alarm *AlarmRequest `protobuf:"bytes,10,opt,name=alarm" json:"alarm,omitempty"`
AuthEnable *AuthEnableRequest `protobuf:"bytes,1000,opt,name=auth_enable,json=authEnable" json:"auth_enable,omitempty"`
AuthDisable *AuthDisableRequest `protobuf:"bytes,1011,opt,name=auth_disable,json=authDisable" json:"auth_disable,omitempty"`
AuthUserAdd *AuthUserAddRequest `protobuf:"bytes,1012,opt,name=auth_user_add,json=authUserAdd" json:"auth_user_add,omitempty"`
AuthUserDelete *AuthUserDeleteRequest `protobuf:"bytes,1013,opt,name=auth_user_delete,json=authUserDelete" json:"auth_user_delete,omitempty"`
AuthUserChangePassword *AuthUserChangePasswordRequest `protobuf:"bytes,1014,opt,name=auth_user_change_password,json=authUserChangePassword" json:"auth_user_change_password,omitempty"`
AuthUserGrant *AuthUserGrantRequest `protobuf:"bytes,1015,opt,name=auth_user_grant,json=authUserGrant" json:"auth_user_grant,omitempty"`
AuthRoleAdd *AuthRoleAddRequest `protobuf:"bytes,1016,opt,name=auth_role_add,json=authRoleAdd" json:"auth_role_add,omitempty"`
AuthRoleGrant *AuthRoleGrantRequest `protobuf:"bytes,1017,opt,name=auth_role_grant,json=authRoleGrant" json:"auth_role_grant,omitempty"`
Authenticate *AuthenticateRequest `protobuf:"bytes,1018,opt,name=authenticate" json:"authenticate,omitempty"`
AuthUserGet *AuthUserGetRequest `protobuf:"bytes,1019,opt,name=auth_user_get,json=authUserGet" json:"auth_user_get,omitempty"`
AuthRoleGet *AuthRoleGetRequest `protobuf:"bytes,1020,opt,name=auth_role_get,json=authRoleGet" json:"auth_role_get,omitempty"`
AuthUserRevokeRole *AuthUserRevokeRoleRequest `protobuf:"bytes,1021,opt,name=auth_user_revoke_role,json=authUserRevokeRole" json:"auth_user_revoke_role,omitempty"`
AuthRoleRevokePermission *AuthRoleRevokePermissionRequest `protobuf:"bytes,1022,opt,name=auth_role_revoke_permission,json=authRoleRevokePermission" json:"auth_role_revoke_permission,omitempty"`
AuthRoleDelete *AuthRoleDeleteRequest `protobuf:"bytes,1023,opt,name=auth_role_delete,json=authRoleDelete" json:"auth_role_delete,omitempty"`
}
func (m *InternalRaftRequest) Reset() { *m = InternalRaftRequest{} }
@ -361,25 +361,25 @@ func (m *InternalRaftRequest) MarshalTo(data []byte) (int, error) {
}
i += n21
}
if m.AuthUserRevoke != nil {
if m.AuthUserRevokeRole != nil {
data[i] = 0xea
i++
data[i] = 0x3f
i++
i = encodeVarintRaftInternal(data, i, uint64(m.AuthUserRevoke.Size()))
n22, err := m.AuthUserRevoke.MarshalTo(data[i:])
i = encodeVarintRaftInternal(data, i, uint64(m.AuthUserRevokeRole.Size()))
n22, err := m.AuthUserRevokeRole.MarshalTo(data[i:])
if err != nil {
return 0, err
}
i += n22
}
if m.AuthRoleRevoke != nil {
if m.AuthRoleRevokePermission != nil {
data[i] = 0xf2
i++
data[i] = 0x3f
i++
i = encodeVarintRaftInternal(data, i, uint64(m.AuthRoleRevoke.Size()))
n23, err := m.AuthRoleRevoke.MarshalTo(data[i:])
i = encodeVarintRaftInternal(data, i, uint64(m.AuthRoleRevokePermission.Size()))
n23, err := m.AuthRoleRevokePermission.MarshalTo(data[i:])
if err != nil {
return 0, err
}
@ -548,12 +548,12 @@ func (m *InternalRaftRequest) Size() (n int) {
l = m.AuthRoleGet.Size()
n += 2 + l + sovRaftInternal(uint64(l))
}
if m.AuthUserRevoke != nil {
l = m.AuthUserRevoke.Size()
if m.AuthUserRevokeRole != nil {
l = m.AuthUserRevokeRole.Size()
n += 2 + l + sovRaftInternal(uint64(l))
}
if m.AuthRoleRevoke != nil {
l = m.AuthRoleRevoke.Size()
if m.AuthRoleRevokePermission != nil {
l = m.AuthRoleRevokePermission.Size()
n += 2 + l + sovRaftInternal(uint64(l))
}
if m.AuthRoleDelete != nil {
@ -1423,7 +1423,7 @@ func (m *InternalRaftRequest) Unmarshal(data []byte) error {
iNdEx = postIndex
case 1021:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field AuthUserRevoke", wireType)
return fmt.Errorf("proto: wrong wireType = %d for field AuthUserRevokeRole", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
@ -1447,16 +1447,16 @@ func (m *InternalRaftRequest) Unmarshal(data []byte) error {
if postIndex > l {
return io.ErrUnexpectedEOF
}
if m.AuthUserRevoke == nil {
m.AuthUserRevoke = &AuthUserRevokeRequest{}
if m.AuthUserRevokeRole == nil {
m.AuthUserRevokeRole = &AuthUserRevokeRoleRequest{}
}
if err := m.AuthUserRevoke.Unmarshal(data[iNdEx:postIndex]); err != nil {
if err := m.AuthUserRevokeRole.Unmarshal(data[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
case 1022:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field AuthRoleRevoke", wireType)
return fmt.Errorf("proto: wrong wireType = %d for field AuthRoleRevokePermission", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
@ -1480,10 +1480,10 @@ func (m *InternalRaftRequest) Unmarshal(data []byte) error {
if postIndex > l {
return io.ErrUnexpectedEOF
}
if m.AuthRoleRevoke == nil {
m.AuthRoleRevoke = &AuthRoleRevokeRequest{}
if m.AuthRoleRevokePermission == nil {
m.AuthRoleRevokePermission = &AuthRoleRevokePermissionRequest{}
}
if err := m.AuthRoleRevoke.Unmarshal(data[iNdEx:postIndex]); err != nil {
if err := m.AuthRoleRevokePermission.Unmarshal(data[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
@ -1697,47 +1697,49 @@ var (
)
var fileDescriptorRaftInternal = []byte{
// 669 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x7c, 0x95, 0x4b, 0x6f, 0x13, 0x3f,
0x14, 0xc5, 0xff, 0x4d, 0xdf, 0x4e, 0xd2, 0x56, 0xee, 0x1f, 0x64, 0x82, 0x54, 0x4a, 0x10, 0x12,
0x02, 0xa9, 0xa0, 0x76, 0xc9, 0x02, 0x42, 0x53, 0x4a, 0x05, 0x42, 0xd5, 0x08, 0xd6, 0x91, 0x3b,
0x73, 0x99, 0x46, 0x4c, 0x66, 0x06, 0x8f, 0x53, 0xca, 0x37, 0xec, 0x92, 0x8f, 0x00, 0xac, 0xd8,
0xf3, 0x2e, 0x4f, 0xbf, 0xc6, 0x53, 0x37, 0x4e, 0x16, 0x91, 0x92, 0xe3, 0x73, 0x7f, 0xf7, 0xda,
0x3e, 0x56, 0xd0, 0x2a, 0xa3, 0x2f, 0x78, 0xaf, 0x9f, 0x72, 0x60, 0x29, 0x4d, 0x36, 0x72, 0x96,
0xf1, 0x0c, 0x37, 0x80, 0x87, 0x51, 0x01, 0xec, 0x08, 0x58, 0x7e, 0xd0, 0xfa, 0x3f, 0xce, 0xe2,
0x4c, 0x2d, 0xdc, 0x96, 0xdf, 0xb4, 0xa7, 0xb5, 0x52, 0x79, 0x8c, 0xb2, 0xc8, 0xf2, 0x50, 0x7f,
0x6d, 0xdf, 0x45, 0xcd, 0x00, 0x5e, 0x0d, 0xa1, 0xe0, 0x8f, 0x80, 0x46, 0xc0, 0xf0, 0x12, 0xaa,
0xed, 0x75, 0xc9, 0xd4, 0xfa, 0xd4, 0x8d, 0x99, 0xa0, 0xd6, 0xef, 0xe2, 0x16, 0x5a, 0x18, 0x16,
0xb2, 0xe5, 0x00, 0x48, 0x4d, 0xa8, 0x8b, 0x81, 0xfd, 0xdd, 0x3e, 0x6d, 0xa0, 0xd5, 0x3d, 0x33,
0x50, 0x20, 0xa6, 0x33, 0xa4, 0x11, 0xc6, 0x75, 0x54, 0x3b, 0xda, 0x54, 0xd5, 0xf5, 0xcd, 0x0b,
0x1b, 0x67, 0x47, 0xde, 0x30, 0x25, 0x81, 0x30, 0xe0, 0x3b, 0x68, 0x96, 0xd1, 0x34, 0x06, 0x32,
0xad, 0x9c, 0xad, 0x73, 0x4e, 0xb9, 0x54, 0xda, 0xb5, 0x11, 0xdf, 0x44, 0xd3, 0xf9, 0x90, 0x93,
0x19, 0xe5, 0x27, 0xae, 0x7f, 0x7f, 0x58, 0xce, 0x13, 0x48, 0x13, 0xde, 0x46, 0x8d, 0x08, 0x12,
0xe0, 0xd0, 0xd3, 0x4d, 0x66, 0x55, 0xd1, 0xba, 0x5b, 0xd4, 0x55, 0x0e, 0xa7, 0x55, 0x3d, 0xaa,
0x34, 0xd9, 0x90, 0x1f, 0xa7, 0x64, 0xce, 0xd7, 0xf0, 0xd9, 0x71, 0x6a, 0x1b, 0x0a, 0x13, 0xbe,
0x87, 0x50, 0x98, 0x0d, 0x72, 0x1a, 0xf2, 0x7e, 0x96, 0x92, 0x79, 0x55, 0x72, 0xc5, 0x2d, 0xd9,
0xb6, 0xeb, 0x65, 0xe5, 0x99, 0x12, 0x7c, 0x1f, 0xd5, 0x13, 0xa0, 0x05, 0xf4, 0x62, 0x31, 0x31,
0x27, 0x0b, 0x3e, 0xc2, 0x13, 0x69, 0xd8, 0x95, 0xeb, 0x96, 0x90, 0x58, 0x49, 0xee, 0x59, 0x13,
0x18, 0x1c, 0x65, 0x2f, 0x81, 0x2c, 0xfa, 0xf6, 0xac, 0x10, 0x81, 0x32, 0xd8, 0x3d, 0x27, 0x95,
0x26, 0xaf, 0x85, 0x26, 0x94, 0x0d, 0x08, 0xf2, 0x5d, 0x4b, 0x47, 0x2e, 0xd9, 0x6b, 0x51, 0x46,
0xbc, 0x85, 0xe6, 0x0e, 0x55, 0x9a, 0x48, 0xa4, 0x4a, 0x2e, 0x7b, 0xef, 0x5c, 0x07, 0x2e, 0x30,
0x56, 0xdc, 0x41, 0x75, 0x3a, 0xe4, 0x87, 0x3d, 0x48, 0xe9, 0x41, 0x02, 0xe4, 0xa3, 0xf7, 0xc0,
0x3a, 0xc2, 0xb1, 0xa3, 0x0c, 0x76, 0xbb, 0xd4, 0x4a, 0xb8, 0x8b, 0x1a, 0x0a, 0x11, 0xf5, 0x0b,
0xc5, 0xf8, 0x34, 0xef, 0xdb, 0xaf, 0x64, 0x74, 0xb5, 0xc3, 0xee, 0x97, 0x56, 0x1a, 0xde, 0x41,
0x4d, 0x45, 0x91, 0x31, 0xef, 0xd1, 0x28, 0x22, 0x9f, 0xc7, 0x62, 0x9e, 0x8b, 0x5f, 0x9d, 0x28,
0x72, 0x30, 0x46, 0xc3, 0x4f, 0xd1, 0x4a, 0x85, 0xd1, 0x19, 0x22, 0x5f, 0x34, 0xe9, 0x9a, 0x9f,
0x64, 0xc2, 0x67, 0x60, 0x4b, 0xd4, 0x91, 0x71, 0x8c, 0x2e, 0x55, 0xbc, 0xf0, 0x50, 0xc6, 0xb1,
0x97, 0xd3, 0xa2, 0x78, 0x9d, 0xb1, 0x88, 0x7c, 0xd5, 0xe0, 0x5b, 0x7e, 0xf0, 0xb6, 0x72, 0xef,
0x1b, 0x73, 0xd9, 0xe0, 0x22, 0xf5, 0x2e, 0xe3, 0xc7, 0x68, 0xb9, 0x6a, 0xa4, 0xa3, 0xf7, 0x4d,
0xe3, 0xdb, 0x7e, 0xbc, 0x13, 0xbf, 0x26, 0x3d, 0xab, 0xda, 0xc3, 0x64, 0x59, 0x02, 0xea, 0x30,
0xbf, 0x8f, 0x3d, 0xcc, 0x40, 0x58, 0xce, 0x1f, 0xa6, 0xd1, 0xec, 0x4c, 0x0a, 0xa3, 0x67, 0xfa,
0x31, 0x76, 0x26, 0x59, 0x34, 0x3a, 0x93, 0x55, 0xf1, 0x43, 0x1d, 0x13, 0x48, 0x79, 0x3f, 0xa4,
0xe2, 0x56, 0x4e, 0x35, 0xe9, 0xea, 0x28, 0xa9, 0xb4, 0x94, 0x20, 0xa7, 0xce, 0x0d, 0x4a, 0x0c,
0x9c, 0xfc, 0x9c, 0x18, 0x94, 0x5d, 0xe0, 0x23, 0x41, 0x11, 0x9a, 0x7b, 0x44, 0x12, 0xf3, 0x6b,
0xe2, 0x11, 0x9d, 0xc7, 0x18, 0xcd, 0xcd, 0x9b, 0x79, 0xef, 0xbf, 0x27, 0xe6, 0xcd, 0x7d, 0xf3,
0x36, 0x6f, 0xe6, 0xd9, 0x97, 0x3c, 0x35, 0x96, 0xe1, 0xfd, 0x19, 0xcb, 0x93, 0x53, 0x78, 0x78,
0x95, 0xec, 0xf2, 0xcc, 0x7b, 0xf8, 0x3b, 0x91, 0xe7, 0x79, 0x0f, 0x95, 0xdc, 0x5e, 0x46, 0xcd,
0x9d, 0x41, 0xce, 0xdf, 0x04, 0x50, 0xe4, 0x59, 0x5a, 0xc0, 0x83, 0x95, 0x93, 0xf7, 0x6b, 0xff,
0x9d, 0x7c, 0x58, 0x9b, 0x7a, 0x2b, 0x3e, 0xef, 0xc4, 0xe7, 0x60, 0x4e, 0xfd, 0xc7, 0x6d, 0xfd,
0x0b, 0x00, 0x00, 0xff, 0xff, 0x67, 0xc7, 0xcd, 0x49, 0x3b, 0x07, 0x00, 0x00,
// 701 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x7c, 0x95, 0x4b, 0x6f, 0x13, 0x31,
0x10, 0xc7, 0x69, 0xfa, 0x76, 0x9a, 0xb6, 0x72, 0x29, 0x32, 0xa9, 0x54, 0x4a, 0x10, 0x02, 0x81,
0x28, 0xa8, 0x3d, 0x72, 0x80, 0xd0, 0x94, 0x52, 0x81, 0x50, 0xb5, 0x82, 0x13, 0x87, 0xc8, 0xcd,
0x0e, 0xdb, 0x15, 0xfb, 0xc2, 0xeb, 0x94, 0xf2, 0x85, 0xf8, 0x2c, 0x3d, 0xf2, 0x11, 0x80, 0x13,
0x77, 0xde, 0x6f, 0xfc, 0x5a, 0x6f, 0x37, 0x71, 0x7a, 0x58, 0x69, 0xf7, 0xef, 0xff, 0xfc, 0x66,
0x6c, 0xcf, 0x24, 0x68, 0x89, 0xd1, 0xe7, 0xbc, 0x1b, 0x26, 0x1c, 0x58, 0x42, 0xa3, 0xf5, 0x8c,
0xa5, 0x3c, 0xc5, 0x73, 0xc0, 0x7b, 0x7e, 0x0e, 0xec, 0x10, 0x58, 0xb6, 0xdf, 0x3c, 0x1b, 0xa4,
0x41, 0xaa, 0x16, 0x6e, 0xca, 0x37, 0xed, 0x69, 0x2e, 0x96, 0x1e, 0xa3, 0xcc, 0xb2, 0xac, 0xa7,
0x5f, 0x5b, 0xb7, 0x51, 0xc3, 0x83, 0x97, 0x7d, 0xc8, 0xf9, 0x03, 0xa0, 0x3e, 0x30, 0x3c, 0x8f,
0x6a, 0xbb, 0x1d, 0x32, 0xb6, 0x36, 0x76, 0x75, 0xc2, 0xab, 0x85, 0x1d, 0xdc, 0x44, 0x33, 0xfd,
0x5c, 0xa6, 0x8c, 0x81, 0xd4, 0x84, 0x3a, 0xeb, 0xd9, 0xef, 0xd6, 0x9b, 0x06, 0x5a, 0xda, 0x35,
0x05, 0x79, 0xa2, 0x3a, 0x43, 0x1a, 0x62, 0x5c, 0x46, 0xb5, 0xc3, 0x0d, 0x15, 0x5d, 0xdf, 0x58,
0x5e, 0x3f, 0x59, 0xf2, 0xba, 0x09, 0xf1, 0x84, 0x01, 0xdf, 0x42, 0x93, 0x8c, 0x26, 0x01, 0x90,
0x71, 0xe5, 0x6c, 0x0e, 0x38, 0xe5, 0x52, 0x61, 0xd7, 0x46, 0x7c, 0x0d, 0x8d, 0x67, 0x7d, 0x4e,
0x26, 0x94, 0x9f, 0x54, 0xfd, 0x7b, 0xfd, 0xa2, 0x1e, 0x4f, 0x9a, 0xf0, 0x16, 0x9a, 0xf3, 0x21,
0x02, 0x0e, 0x5d, 0x9d, 0x64, 0x52, 0x05, 0xad, 0x55, 0x83, 0x3a, 0xca, 0x51, 0x49, 0x55, 0xf7,
0x4b, 0x4d, 0x26, 0xe4, 0x47, 0x09, 0x99, 0x72, 0x25, 0x7c, 0x72, 0x94, 0xd8, 0x84, 0xc2, 0x84,
0xef, 0x20, 0xd4, 0x4b, 0xe3, 0x8c, 0xf6, 0x78, 0x98, 0x26, 0x64, 0x5a, 0x85, 0x5c, 0xa8, 0x86,
0x6c, 0xd9, 0xf5, 0x22, 0xf2, 0x44, 0x08, 0xbe, 0x8b, 0xea, 0x11, 0xd0, 0x1c, 0xba, 0x81, 0xa8,
0x98, 0x93, 0x19, 0x17, 0xe1, 0x91, 0x34, 0xec, 0xc8, 0x75, 0x4b, 0x88, 0xac, 0x24, 0xf7, 0xac,
0x09, 0x0c, 0x0e, 0xd3, 0x17, 0x40, 0x66, 0x5d, 0x7b, 0x56, 0x08, 0x4f, 0x19, 0xec, 0x9e, 0xa3,
0x52, 0x93, 0xd7, 0x42, 0x23, 0xca, 0x62, 0x82, 0x5c, 0xd7, 0xd2, 0x96, 0x4b, 0xf6, 0x5a, 0x94,
0x11, 0x6f, 0xa2, 0xa9, 0x03, 0xd5, 0x4d, 0xc4, 0x57, 0x21, 0x2b, 0xce, 0x3b, 0xd7, 0x0d, 0xe7,
0x19, 0x2b, 0x6e, 0xa3, 0x3a, 0xed, 0xf3, 0x83, 0x2e, 0x24, 0x74, 0x3f, 0x02, 0xf2, 0xd1, 0x79,
0x60, 0x6d, 0xe1, 0xd8, 0x56, 0x06, 0xbb, 0x5d, 0x6a, 0x25, 0xdc, 0x41, 0x73, 0x0a, 0xe1, 0x87,
0xb9, 0x62, 0x7c, 0x9a, 0x76, 0xed, 0x57, 0x32, 0x3a, 0xda, 0x61, 0xf7, 0x4b, 0x4b, 0x0d, 0x6f,
0xa3, 0x86, 0xa2, 0xc8, 0x36, 0xef, 0x52, 0xdf, 0x27, 0x9f, 0x47, 0x62, 0x9e, 0x8a, 0xaf, 0xb6,
0xef, 0x57, 0x30, 0x46, 0xc3, 0x8f, 0xd1, 0x62, 0x89, 0xd1, 0x3d, 0x44, 0xbe, 0x68, 0xd2, 0x25,
0x37, 0xc9, 0x34, 0x9f, 0x81, 0xcd, 0xd3, 0x8a, 0x8c, 0x03, 0x74, 0xbe, 0xe4, 0xf5, 0x0e, 0x64,
0x3b, 0x76, 0x33, 0x9a, 0xe7, 0xaf, 0x52, 0xe6, 0x93, 0xaf, 0x1a, 0x7c, 0xdd, 0x0d, 0xde, 0x52,
0xee, 0x3d, 0x63, 0x2e, 0x12, 0x9c, 0xa3, 0xce, 0x65, 0xfc, 0x10, 0x2d, 0x94, 0x89, 0x74, 0xeb,
0x7d, 0xd3, 0xf8, 0x96, 0x1b, 0x5f, 0x69, 0xbf, 0x06, 0x3d, 0xa9, 0xda, 0xc3, 0x64, 0x69, 0x04,
0xea, 0x30, 0xbf, 0x8f, 0x3c, 0x4c, 0x4f, 0x58, 0x06, 0x0f, 0xd3, 0x68, 0xb6, 0x26, 0x85, 0xd1,
0x35, 0xfd, 0x18, 0x59, 0x93, 0x0c, 0x1a, 0xae, 0xc9, 0xaa, 0xf8, 0xbe, 0x6e, 0x13, 0x48, 0x78,
0xd8, 0xa3, 0xe2, 0x56, 0x7e, 0x6a, 0xd2, 0xc5, 0x61, 0x52, 0x61, 0x29, 0x40, 0x95, 0xb8, 0x6a,
0xa3, 0x04, 0xc0, 0xc9, 0xaf, 0x53, 0x1b, 0x65, 0x07, 0xf8, 0x50, 0xa3, 0x08, 0xad, 0x7a, 0x44,
0x12, 0xf3, 0xfb, 0xd4, 0x23, 0x1a, 0xc4, 0x18, 0x0d, 0x3f, 0x43, 0xcb, 0x65, 0x35, 0x7a, 0xde,
0x15, 0x92, 0xfc, 0xd1, 0xb8, 0x2b, 0xee, 0xaa, 0xcc, 0xe0, 0xa7, 0xe5, 0x30, 0x60, 0x3a, 0xb4,
0x84, 0x63, 0xb4, 0x52, 0xd6, 0x68, 0xe0, 0x19, 0xb0, 0x38, 0xcc, 0x73, 0xf9, 0xe3, 0xf6, 0x57,
0xa7, 0xb8, 0xe1, 0xae, 0x58, 0x73, 0xf6, 0xac, 0xbd, 0x48, 0x44, 0xe8, 0x08, 0x83, 0x9d, 0x1d,
0x95, 0xce, 0xcc, 0xce, 0xbf, 0x91, 0xb3, 0x23, 0x11, 0x8e, 0xd9, 0x29, 0xe5, 0xd6, 0x02, 0x6a,
0x6c, 0xc7, 0x19, 0x7f, 0xed, 0x41, 0x9e, 0xa5, 0x49, 0x0e, 0xf7, 0x16, 0x8f, 0xdf, 0xaf, 0x9e,
0x39, 0xfe, 0xb0, 0x3a, 0xf6, 0x56, 0x3c, 0xef, 0xc4, 0xb3, 0x3f, 0xa5, 0xfe, 0x0f, 0x37, 0xff,
0x07, 0x00, 0x00, 0xff, 0xff, 0x38, 0x10, 0xa2, 0xb7, 0x67, 0x07, 0x00, 0x00,
}

View File

@ -46,8 +46,8 @@ message InternalRaftRequest {
AuthenticateRequest authenticate = 1018;
AuthUserGetRequest auth_user_get = 1019;
AuthRoleGetRequest auth_role_get = 1020;
AuthUserRevokeRequest auth_user_revoke = 1021;
AuthRoleRevokeRequest auth_role_revoke = 1022;
AuthUserRevokeRoleRequest auth_user_revoke_role = 1021;
AuthRoleRevokePermissionRequest auth_role_revoke_permission = 1022;
AuthRoleDeleteRequest auth_role_delete = 1023;
}

View File

@ -1592,15 +1592,15 @@ func (m *AuthUserGrantRequest) String() string { return proto.Compact
func (*AuthUserGrantRequest) ProtoMessage() {}
func (*AuthUserGrantRequest) Descriptor() ([]byte, []int) { return fileDescriptorRpc, []int{51} }
type AuthUserRevokeRequest struct {
type AuthUserRevokeRoleRequest struct {
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
Role string `protobuf:"bytes,2,opt,name=role,proto3" json:"role,omitempty"`
}
func (m *AuthUserRevokeRequest) Reset() { *m = AuthUserRevokeRequest{} }
func (m *AuthUserRevokeRequest) String() string { return proto.CompactTextString(m) }
func (*AuthUserRevokeRequest) ProtoMessage() {}
func (*AuthUserRevokeRequest) Descriptor() ([]byte, []int) { return fileDescriptorRpc, []int{52} }
func (m *AuthUserRevokeRoleRequest) Reset() { *m = AuthUserRevokeRoleRequest{} }
func (m *AuthUserRevokeRoleRequest) String() string { return proto.CompactTextString(m) }
func (*AuthUserRevokeRoleRequest) ProtoMessage() {}
func (*AuthUserRevokeRoleRequest) Descriptor() ([]byte, []int) { return fileDescriptorRpc, []int{52} }
type AuthRoleAddRequest struct {
// name is the name of the role to add to the authentication system.
@ -1649,15 +1649,17 @@ func (m *AuthRoleGrantRequest) GetPerm() *authpb.Permission {
return nil
}
type AuthRoleRevokeRequest struct {
type AuthRoleRevokePermissionRequest struct {
Role string `protobuf:"bytes,1,opt,name=role,proto3" json:"role,omitempty"`
Key string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"`
}
func (m *AuthRoleRevokeRequest) Reset() { *m = AuthRoleRevokeRequest{} }
func (m *AuthRoleRevokeRequest) String() string { return proto.CompactTextString(m) }
func (*AuthRoleRevokeRequest) ProtoMessage() {}
func (*AuthRoleRevokeRequest) Descriptor() ([]byte, []int) { return fileDescriptorRpc, []int{57} }
func (m *AuthRoleRevokePermissionRequest) Reset() { *m = AuthRoleRevokePermissionRequest{} }
func (m *AuthRoleRevokePermissionRequest) String() string { return proto.CompactTextString(m) }
func (*AuthRoleRevokePermissionRequest) ProtoMessage() {}
func (*AuthRoleRevokePermissionRequest) Descriptor() ([]byte, []int) {
return fileDescriptorRpc, []int{57}
}
type AuthEnableResponse struct {
Header *ResponseHeader `protobuf:"bytes,1,opt,name=header" json:"header,omitempty"`
@ -1792,16 +1794,16 @@ func (m *AuthUserGrantResponse) GetHeader() *ResponseHeader {
return nil
}
type AuthUserRevokeResponse struct {
type AuthUserRevokeRoleResponse struct {
Header *ResponseHeader `protobuf:"bytes,1,opt,name=header" json:"header,omitempty"`
}
func (m *AuthUserRevokeResponse) Reset() { *m = AuthUserRevokeResponse{} }
func (m *AuthUserRevokeResponse) String() string { return proto.CompactTextString(m) }
func (*AuthUserRevokeResponse) ProtoMessage() {}
func (*AuthUserRevokeResponse) Descriptor() ([]byte, []int) { return fileDescriptorRpc, []int{66} }
func (m *AuthUserRevokeRoleResponse) Reset() { *m = AuthUserRevokeRoleResponse{} }
func (m *AuthUserRevokeRoleResponse) String() string { return proto.CompactTextString(m) }
func (*AuthUserRevokeRoleResponse) ProtoMessage() {}
func (*AuthUserRevokeRoleResponse) Descriptor() ([]byte, []int) { return fileDescriptorRpc, []int{66} }
func (m *AuthUserRevokeResponse) GetHeader() *ResponseHeader {
func (m *AuthUserRevokeRoleResponse) GetHeader() *ResponseHeader {
if m != nil {
return m.Header
}
@ -1880,16 +1882,18 @@ func (m *AuthRoleGrantResponse) GetHeader() *ResponseHeader {
return nil
}
type AuthRoleRevokeResponse struct {
type AuthRoleRevokePermissionResponse struct {
Header *ResponseHeader `protobuf:"bytes,1,opt,name=header" json:"header,omitempty"`
}
func (m *AuthRoleRevokeResponse) Reset() { *m = AuthRoleRevokeResponse{} }
func (m *AuthRoleRevokeResponse) String() string { return proto.CompactTextString(m) }
func (*AuthRoleRevokeResponse) ProtoMessage() {}
func (*AuthRoleRevokeResponse) Descriptor() ([]byte, []int) { return fileDescriptorRpc, []int{71} }
func (m *AuthRoleRevokePermissionResponse) Reset() { *m = AuthRoleRevokePermissionResponse{} }
func (m *AuthRoleRevokePermissionResponse) String() string { return proto.CompactTextString(m) }
func (*AuthRoleRevokePermissionResponse) ProtoMessage() {}
func (*AuthRoleRevokePermissionResponse) Descriptor() ([]byte, []int) {
return fileDescriptorRpc, []int{71}
}
func (m *AuthRoleRevokeResponse) GetHeader() *ResponseHeader {
func (m *AuthRoleRevokePermissionResponse) GetHeader() *ResponseHeader {
if m != nil {
return m.Header
}
@ -1949,12 +1953,12 @@ func init() {
proto.RegisterType((*AuthUserDeleteRequest)(nil), "etcdserverpb.AuthUserDeleteRequest")
proto.RegisterType((*AuthUserChangePasswordRequest)(nil), "etcdserverpb.AuthUserChangePasswordRequest")
proto.RegisterType((*AuthUserGrantRequest)(nil), "etcdserverpb.AuthUserGrantRequest")
proto.RegisterType((*AuthUserRevokeRequest)(nil), "etcdserverpb.AuthUserRevokeRequest")
proto.RegisterType((*AuthUserRevokeRoleRequest)(nil), "etcdserverpb.AuthUserRevokeRoleRequest")
proto.RegisterType((*AuthRoleAddRequest)(nil), "etcdserverpb.AuthRoleAddRequest")
proto.RegisterType((*AuthRoleGetRequest)(nil), "etcdserverpb.AuthRoleGetRequest")
proto.RegisterType((*AuthRoleDeleteRequest)(nil), "etcdserverpb.AuthRoleDeleteRequest")
proto.RegisterType((*AuthRoleGrantRequest)(nil), "etcdserverpb.AuthRoleGrantRequest")
proto.RegisterType((*AuthRoleRevokeRequest)(nil), "etcdserverpb.AuthRoleRevokeRequest")
proto.RegisterType((*AuthRoleRevokePermissionRequest)(nil), "etcdserverpb.AuthRoleRevokePermissionRequest")
proto.RegisterType((*AuthEnableResponse)(nil), "etcdserverpb.AuthEnableResponse")
proto.RegisterType((*AuthDisableResponse)(nil), "etcdserverpb.AuthDisableResponse")
proto.RegisterType((*AuthenticateResponse)(nil), "etcdserverpb.AuthenticateResponse")
@ -1963,12 +1967,12 @@ func init() {
proto.RegisterType((*AuthUserDeleteResponse)(nil), "etcdserverpb.AuthUserDeleteResponse")
proto.RegisterType((*AuthUserChangePasswordResponse)(nil), "etcdserverpb.AuthUserChangePasswordResponse")
proto.RegisterType((*AuthUserGrantResponse)(nil), "etcdserverpb.AuthUserGrantResponse")
proto.RegisterType((*AuthUserRevokeResponse)(nil), "etcdserverpb.AuthUserRevokeResponse")
proto.RegisterType((*AuthUserRevokeRoleResponse)(nil), "etcdserverpb.AuthUserRevokeRoleResponse")
proto.RegisterType((*AuthRoleAddResponse)(nil), "etcdserverpb.AuthRoleAddResponse")
proto.RegisterType((*AuthRoleGetResponse)(nil), "etcdserverpb.AuthRoleGetResponse")
proto.RegisterType((*AuthRoleDeleteResponse)(nil), "etcdserverpb.AuthRoleDeleteResponse")
proto.RegisterType((*AuthRoleGrantResponse)(nil), "etcdserverpb.AuthRoleGrantResponse")
proto.RegisterType((*AuthRoleRevokeResponse)(nil), "etcdserverpb.AuthRoleRevokeResponse")
proto.RegisterType((*AuthRoleRevokePermissionResponse)(nil), "etcdserverpb.AuthRoleRevokePermissionResponse")
proto.RegisterEnum("etcdserverpb.AlarmType", AlarmType_name, AlarmType_value)
proto.RegisterEnum("etcdserverpb.RangeRequest_SortOrder", RangeRequest_SortOrder_name, RangeRequest_SortOrder_value)
proto.RegisterEnum("etcdserverpb.RangeRequest_SortTarget", RangeRequest_SortTarget_name, RangeRequest_SortTarget_value)
@ -2913,8 +2917,8 @@ type AuthClient interface {
UserChangePassword(ctx context.Context, in *AuthUserChangePasswordRequest, opts ...grpc.CallOption) (*AuthUserChangePasswordResponse, error)
// UserGrant grants a role to a specified user.
UserGrant(ctx context.Context, in *AuthUserGrantRequest, opts ...grpc.CallOption) (*AuthUserGrantResponse, error)
// UserRevoke revokes a role of specified user.
UserRevoke(ctx context.Context, in *AuthUserRevokeRequest, opts ...grpc.CallOption) (*AuthUserRevokeResponse, error)
// UserRevokeRole revokes a role of specified user.
UserRevokeRole(ctx context.Context, in *AuthUserRevokeRoleRequest, opts ...grpc.CallOption) (*AuthUserRevokeRoleResponse, error)
// RoleAdd adds a new role.
RoleAdd(ctx context.Context, in *AuthRoleAddRequest, opts ...grpc.CallOption) (*AuthRoleAddResponse, error)
// RoleGet gets detailed role information or lists all roles.
@ -2923,8 +2927,8 @@ type AuthClient interface {
RoleDelete(ctx context.Context, in *AuthRoleDeleteRequest, opts ...grpc.CallOption) (*AuthRoleDeleteResponse, error)
// RoleGrant grants a permission of a specified key or range to a specified role.
RoleGrant(ctx context.Context, in *AuthRoleGrantRequest, opts ...grpc.CallOption) (*AuthRoleGrantResponse, error)
// RoleRevoke revokes a key or range permission of a specified role.
RoleRevoke(ctx context.Context, in *AuthRoleRevokeRequest, opts ...grpc.CallOption) (*AuthRoleRevokeResponse, error)
// RoleRevokePermission revokes a key or range permission of a specified role.
RoleRevokePermission(ctx context.Context, in *AuthRoleRevokePermissionRequest, opts ...grpc.CallOption) (*AuthRoleRevokePermissionResponse, error)
}
type authClient struct {
@ -3007,9 +3011,9 @@ func (c *authClient) UserGrant(ctx context.Context, in *AuthUserGrantRequest, op
return out, nil
}
func (c *authClient) UserRevoke(ctx context.Context, in *AuthUserRevokeRequest, opts ...grpc.CallOption) (*AuthUserRevokeResponse, error) {
out := new(AuthUserRevokeResponse)
err := grpc.Invoke(ctx, "/etcdserverpb.Auth/UserRevoke", in, out, c.cc, opts...)
func (c *authClient) UserRevokeRole(ctx context.Context, in *AuthUserRevokeRoleRequest, opts ...grpc.CallOption) (*AuthUserRevokeRoleResponse, error) {
out := new(AuthUserRevokeRoleResponse)
err := grpc.Invoke(ctx, "/etcdserverpb.Auth/UserRevokeRole", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
@ -3052,9 +3056,9 @@ func (c *authClient) RoleGrant(ctx context.Context, in *AuthRoleGrantRequest, op
return out, nil
}
func (c *authClient) RoleRevoke(ctx context.Context, in *AuthRoleRevokeRequest, opts ...grpc.CallOption) (*AuthRoleRevokeResponse, error) {
out := new(AuthRoleRevokeResponse)
err := grpc.Invoke(ctx, "/etcdserverpb.Auth/RoleRevoke", in, out, c.cc, opts...)
func (c *authClient) RoleRevokePermission(ctx context.Context, in *AuthRoleRevokePermissionRequest, opts ...grpc.CallOption) (*AuthRoleRevokePermissionResponse, error) {
out := new(AuthRoleRevokePermissionResponse)
err := grpc.Invoke(ctx, "/etcdserverpb.Auth/RoleRevokePermission", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
@ -3080,8 +3084,8 @@ type AuthServer interface {
UserChangePassword(context.Context, *AuthUserChangePasswordRequest) (*AuthUserChangePasswordResponse, error)
// UserGrant grants a role to a specified user.
UserGrant(context.Context, *AuthUserGrantRequest) (*AuthUserGrantResponse, error)
// UserRevoke revokes a role of specified user.
UserRevoke(context.Context, *AuthUserRevokeRequest) (*AuthUserRevokeResponse, error)
// UserRevokeRole revokes a role of specified user.
UserRevokeRole(context.Context, *AuthUserRevokeRoleRequest) (*AuthUserRevokeRoleResponse, error)
// RoleAdd adds a new role.
RoleAdd(context.Context, *AuthRoleAddRequest) (*AuthRoleAddResponse, error)
// RoleGet gets detailed role information or lists all roles.
@ -3090,8 +3094,8 @@ type AuthServer interface {
RoleDelete(context.Context, *AuthRoleDeleteRequest) (*AuthRoleDeleteResponse, error)
// RoleGrant grants a permission of a specified key or range to a specified role.
RoleGrant(context.Context, *AuthRoleGrantRequest) (*AuthRoleGrantResponse, error)
// RoleRevoke revokes a key or range permission of a specified role.
RoleRevoke(context.Context, *AuthRoleRevokeRequest) (*AuthRoleRevokeResponse, error)
// RoleRevokePermission revokes a key or range permission of a specified role.
RoleRevokePermission(context.Context, *AuthRoleRevokePermissionRequest) (*AuthRoleRevokePermissionResponse, error)
}
func RegisterAuthServer(s *grpc.Server, srv AuthServer) {
@ -3242,20 +3246,20 @@ func _Auth_UserGrant_Handler(srv interface{}, ctx context.Context, dec func(inte
return interceptor(ctx, in, info, handler)
}
func _Auth_UserRevoke_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(AuthUserRevokeRequest)
func _Auth_UserRevokeRole_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(AuthUserRevokeRoleRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(AuthServer).UserRevoke(ctx, in)
return srv.(AuthServer).UserRevokeRole(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/etcdserverpb.Auth/UserRevoke",
FullMethod: "/etcdserverpb.Auth/UserRevokeRole",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(AuthServer).UserRevoke(ctx, req.(*AuthUserRevokeRequest))
return srv.(AuthServer).UserRevokeRole(ctx, req.(*AuthUserRevokeRoleRequest))
}
return interceptor(ctx, in, info, handler)
}
@ -3332,20 +3336,20 @@ func _Auth_RoleGrant_Handler(srv interface{}, ctx context.Context, dec func(inte
return interceptor(ctx, in, info, handler)
}
func _Auth_RoleRevoke_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(AuthRoleRevokeRequest)
func _Auth_RoleRevokePermission_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(AuthRoleRevokePermissionRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(AuthServer).RoleRevoke(ctx, in)
return srv.(AuthServer).RoleRevokePermission(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/etcdserverpb.Auth/RoleRevoke",
FullMethod: "/etcdserverpb.Auth/RoleRevokePermission",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(AuthServer).RoleRevoke(ctx, req.(*AuthRoleRevokeRequest))
return srv.(AuthServer).RoleRevokePermission(ctx, req.(*AuthRoleRevokePermissionRequest))
}
return interceptor(ctx, in, info, handler)
}
@ -3387,8 +3391,8 @@ var _Auth_serviceDesc = grpc.ServiceDesc{
Handler: _Auth_UserGrant_Handler,
},
{
MethodName: "UserRevoke",
Handler: _Auth_UserRevoke_Handler,
MethodName: "UserRevokeRole",
Handler: _Auth_UserRevokeRole_Handler,
},
{
MethodName: "RoleAdd",
@ -3407,8 +3411,8 @@ var _Auth_serviceDesc = grpc.ServiceDesc{
Handler: _Auth_RoleGrant_Handler,
},
{
MethodName: "RoleRevoke",
Handler: _Auth_RoleRevoke_Handler,
MethodName: "RoleRevokePermission",
Handler: _Auth_RoleRevokePermission_Handler,
},
},
Streams: []grpc.StreamDesc{},
@ -5270,7 +5274,7 @@ func (m *AuthUserGrantRequest) MarshalTo(data []byte) (int, error) {
return i, nil
}
func (m *AuthUserRevokeRequest) Marshal() (data []byte, err error) {
func (m *AuthUserRevokeRoleRequest) Marshal() (data []byte, err error) {
size := m.Size()
data = make([]byte, size)
n, err := m.MarshalTo(data)
@ -5280,7 +5284,7 @@ func (m *AuthUserRevokeRequest) Marshal() (data []byte, err error) {
return data[:n], nil
}
func (m *AuthUserRevokeRequest) MarshalTo(data []byte) (int, error) {
func (m *AuthUserRevokeRoleRequest) MarshalTo(data []byte) (int, error) {
var i int
_ = i
var l int
@ -5406,7 +5410,7 @@ func (m *AuthRoleGrantRequest) MarshalTo(data []byte) (int, error) {
return i, nil
}
func (m *AuthRoleRevokeRequest) Marshal() (data []byte, err error) {
func (m *AuthRoleRevokePermissionRequest) Marshal() (data []byte, err error) {
size := m.Size()
data = make([]byte, size)
n, err := m.MarshalTo(data)
@ -5416,7 +5420,7 @@ func (m *AuthRoleRevokeRequest) Marshal() (data []byte, err error) {
return data[:n], nil
}
func (m *AuthRoleRevokeRequest) MarshalTo(data []byte) (int, error) {
func (m *AuthRoleRevokePermissionRequest) MarshalTo(data []byte) (int, error) {
var i int
_ = i
var l int
@ -5681,7 +5685,7 @@ func (m *AuthUserGrantResponse) MarshalTo(data []byte) (int, error) {
return i, nil
}
func (m *AuthUserRevokeResponse) Marshal() (data []byte, err error) {
func (m *AuthUserRevokeRoleResponse) Marshal() (data []byte, err error) {
size := m.Size()
data = make([]byte, size)
n, err := m.MarshalTo(data)
@ -5691,7 +5695,7 @@ func (m *AuthUserRevokeResponse) Marshal() (data []byte, err error) {
return data[:n], nil
}
func (m *AuthUserRevokeResponse) MarshalTo(data []byte) (int, error) {
func (m *AuthUserRevokeRoleResponse) MarshalTo(data []byte) (int, error) {
var i int
_ = i
var l int
@ -5833,7 +5837,7 @@ func (m *AuthRoleGrantResponse) MarshalTo(data []byte) (int, error) {
return i, nil
}
func (m *AuthRoleRevokeResponse) Marshal() (data []byte, err error) {
func (m *AuthRoleRevokePermissionResponse) Marshal() (data []byte, err error) {
size := m.Size()
data = make([]byte, size)
n, err := m.MarshalTo(data)
@ -5843,7 +5847,7 @@ func (m *AuthRoleRevokeResponse) Marshal() (data []byte, err error) {
return data[:n], nil
}
func (m *AuthRoleRevokeResponse) MarshalTo(data []byte) (int, error) {
func (m *AuthRoleRevokePermissionResponse) MarshalTo(data []byte) (int, error) {
var i int
_ = i
var l int
@ -6689,7 +6693,7 @@ func (m *AuthUserGrantRequest) Size() (n int) {
return n
}
func (m *AuthUserRevokeRequest) Size() (n int) {
func (m *AuthUserRevokeRoleRequest) Size() (n int) {
var l int
_ = l
l = len(m.Name)
@ -6747,7 +6751,7 @@ func (m *AuthRoleGrantRequest) Size() (n int) {
return n
}
func (m *AuthRoleRevokeRequest) Size() (n int) {
func (m *AuthRoleRevokePermissionRequest) Size() (n int) {
var l int
_ = l
l = len(m.Role)
@ -6851,7 +6855,7 @@ func (m *AuthUserGrantResponse) Size() (n int) {
return n
}
func (m *AuthUserRevokeResponse) Size() (n int) {
func (m *AuthUserRevokeRoleResponse) Size() (n int) {
var l int
_ = l
if m.Header != nil {
@ -6907,7 +6911,7 @@ func (m *AuthRoleGrantResponse) Size() (n int) {
return n
}
func (m *AuthRoleRevokeResponse) Size() (n int) {
func (m *AuthRoleRevokePermissionResponse) Size() (n int) {
var l int
_ = l
if m.Header != nil {
@ -12435,7 +12439,7 @@ func (m *AuthUserGrantRequest) Unmarshal(data []byte) error {
}
return nil
}
func (m *AuthUserRevokeRequest) Unmarshal(data []byte) error {
func (m *AuthUserRevokeRoleRequest) Unmarshal(data []byte) error {
l := len(data)
iNdEx := 0
for iNdEx < l {
@ -12458,10 +12462,10 @@ func (m *AuthUserRevokeRequest) Unmarshal(data []byte) error {
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
return fmt.Errorf("proto: AuthUserRevokeRequest: wiretype end group for non-group")
return fmt.Errorf("proto: AuthUserRevokeRoleRequest: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: AuthUserRevokeRequest: illegal tag %d (wire type %d)", fieldNum, wire)
return fmt.Errorf("proto: AuthUserRevokeRoleRequest: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
@ -12892,7 +12896,7 @@ func (m *AuthRoleGrantRequest) Unmarshal(data []byte) error {
}
return nil
}
func (m *AuthRoleRevokeRequest) Unmarshal(data []byte) error {
func (m *AuthRoleRevokePermissionRequest) Unmarshal(data []byte) error {
l := len(data)
iNdEx := 0
for iNdEx < l {
@ -12915,10 +12919,10 @@ func (m *AuthRoleRevokeRequest) Unmarshal(data []byte) error {
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
return fmt.Errorf("proto: AuthRoleRevokeRequest: wiretype end group for non-group")
return fmt.Errorf("proto: AuthRoleRevokePermissionRequest: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: AuthRoleRevokeRequest: illegal tag %d (wire type %d)", fieldNum, wire)
return fmt.Errorf("proto: AuthRoleRevokePermissionRequest: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
@ -13722,7 +13726,7 @@ func (m *AuthUserGrantResponse) Unmarshal(data []byte) error {
}
return nil
}
func (m *AuthUserRevokeResponse) Unmarshal(data []byte) error {
func (m *AuthUserRevokeRoleResponse) Unmarshal(data []byte) error {
l := len(data)
iNdEx := 0
for iNdEx < l {
@ -13745,10 +13749,10 @@ func (m *AuthUserRevokeResponse) Unmarshal(data []byte) error {
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
return fmt.Errorf("proto: AuthUserRevokeResponse: wiretype end group for non-group")
return fmt.Errorf("proto: AuthUserRevokeRoleResponse: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: AuthUserRevokeResponse: illegal tag %d (wire type %d)", fieldNum, wire)
return fmt.Errorf("proto: AuthUserRevokeRoleResponse: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
@ -14168,7 +14172,7 @@ func (m *AuthRoleGrantResponse) Unmarshal(data []byte) error {
}
return nil
}
func (m *AuthRoleRevokeResponse) Unmarshal(data []byte) error {
func (m *AuthRoleRevokePermissionResponse) Unmarshal(data []byte) error {
l := len(data)
iNdEx := 0
for iNdEx < l {
@ -14191,10 +14195,10 @@ func (m *AuthRoleRevokeResponse) Unmarshal(data []byte) error {
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
return fmt.Errorf("proto: AuthRoleRevokeResponse: wiretype end group for non-group")
return fmt.Errorf("proto: AuthRoleRevokePermissionResponse: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: AuthRoleRevokeResponse: illegal tag %d (wire type %d)", fieldNum, wire)
return fmt.Errorf("proto: AuthRoleRevokePermissionResponse: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
@ -14357,169 +14361,170 @@ var (
)
var fileDescriptorRpc = []byte{
// 2616 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xb4, 0x5a, 0xcd, 0x72, 0x1c, 0x49,
0x11, 0xd6, 0xfc, 0x68, 0x46, 0x93, 0x33, 0x1a, 0xcb, 0x25, 0xd9, 0xc8, 0xe3, 0x9f, 0xf5, 0xb6,
0xed, 0x5d, 0xc3, 0x2e, 0x32, 0x2b, 0x96, 0x03, 0xc1, 0xe2, 0x8d, 0x91, 0x66, 0xd6, 0x16, 0x92,
0x25, 0x6f, 0x6b, 0x24, 0xb3, 0x27, 0x45, 0xcf, 0x4c, 0x59, 0xea, 0xf0, 0xfc, 0x6d, 0x77, 0x8f,
0x6c, 0x39, 0x82, 0x0b, 0x11, 0x3c, 0xc1, 0x72, 0x22, 0x78, 0x01, 0x1e, 0x80, 0x77, 0x20, 0xb8,
0xc0, 0x13, 0x00, 0xc1, 0x89, 0xe0, 0xc2, 0x1d, 0x2e, 0x64, 0xfd, 0x75, 0x57, 0xd7, 0x74, 0x8f,
0xbd, 0xb4, 0x39, 0x58, 0xea, 0xca, 0xca, 0xfc, 0x2a, 0x2b, 0x2b, 0x2b, 0x2b, 0x33, 0x65, 0xa8,
0x78, 0x93, 0xde, 0xc6, 0xc4, 0x1b, 0x07, 0x63, 0x52, 0xa3, 0x41, 0xaf, 0xef, 0x53, 0xef, 0x9c,
0x7a, 0x93, 0x6e, 0x63, 0xed, 0x74, 0x7c, 0x3a, 0xe6, 0x13, 0x0f, 0xd8, 0x97, 0xe0, 0x69, 0x5c,
0x63, 0x3c, 0x0f, 0x86, 0xe7, 0xbd, 0x1e, 0xff, 0x31, 0xe9, 0x3e, 0x78, 0x71, 0x2e, 0xa7, 0xae,
0xf3, 0x29, 0x67, 0x1a, 0x9c, 0xf1, 0x1f, 0x38, 0xc5, 0x7e, 0x89, 0x49, 0xeb, 0x57, 0x39, 0xa8,
0xdb, 0xd4, 0x9f, 0x8c, 0x47, 0x3e, 0x7d, 0x4c, 0x9d, 0x3e, 0xf5, 0xc8, 0x4d, 0x80, 0xde, 0x60,
0xea, 0x07, 0xd4, 0x3b, 0x71, 0xfb, 0xeb, 0xb9, 0xdb, 0xb9, 0xfb, 0x45, 0xbb, 0x22, 0x29, 0x3b,
0x7d, 0x72, 0x1d, 0x2a, 0x43, 0x3a, 0xec, 0x8a, 0xd9, 0x3c, 0x9f, 0x5d, 0x12, 0x04, 0x9c, 0x6c,
0xc0, 0x92, 0x47, 0xcf, 0x5d, 0xdf, 0x1d, 0x8f, 0xd6, 0x0b, 0x38, 0x57, 0xb0, 0xc3, 0x31, 0x13,
0xf4, 0x9c, 0xe7, 0xc1, 0x09, 0xc2, 0x0c, 0xd7, 0x8b, 0x42, 0x90, 0x11, 0x3a, 0x38, 0xb6, 0x7e,
0x5d, 0x80, 0x9a, 0xed, 0x8c, 0x4e, 0xa9, 0x4d, 0xbf, 0x9e, 0x52, 0x3f, 0x20, 0x2b, 0x50, 0x78,
0x41, 0x2f, 0xf8, 0xf2, 0x35, 0x9b, 0x7d, 0x0a, 0x79, 0xe4, 0x38, 0xa1, 0x23, 0xb1, 0x70, 0x8d,
0xc9, 0x23, 0xa1, 0x3d, 0xea, 0x93, 0x35, 0x58, 0x1c, 0xb8, 0x43, 0x37, 0x90, 0xab, 0x8a, 0x41,
0x4c, 0x9d, 0xa2, 0xa1, 0xce, 0x36, 0x80, 0x3f, 0xf6, 0x82, 0x93, 0xb1, 0x87, 0x9b, 0x5e, 0x5f,
0xc4, 0xd9, 0xfa, 0xe6, 0xdd, 0x0d, 0xdd, 0xd4, 0x1b, 0xba, 0x42, 0x1b, 0x87, 0xc8, 0x7c, 0xc0,
0x78, 0xed, 0x8a, 0xaf, 0x3e, 0xc9, 0x17, 0x50, 0xe5, 0x20, 0x81, 0xe3, 0x9d, 0xd2, 0x60, 0xbd,
0xc4, 0x51, 0xee, 0xbd, 0x01, 0xa5, 0xc3, 0x99, 0x6d, 0xbe, 0xbc, 0xf8, 0x26, 0x16, 0xd4, 0x90,
0xdf, 0x75, 0x06, 0xee, 0x6b, 0xa7, 0x3b, 0xa0, 0xeb, 0x65, 0x04, 0x5a, 0xb2, 0x63, 0x34, 0x6b,
0x03, 0x2a, 0xa1, 0x0e, 0x64, 0x09, 0x8a, 0xfb, 0x07, 0xfb, 0xed, 0x95, 0x05, 0x02, 0x50, 0x6a,
0x1e, 0x6e, 0xb7, 0xf7, 0x5b, 0x2b, 0x39, 0x52, 0x85, 0x72, 0xab, 0x2d, 0x06, 0x79, 0x6b, 0x0b,
0x20, 0x5a, 0x8d, 0x94, 0xa1, 0xb0, 0xdb, 0xfe, 0x0a, 0xf9, 0x91, 0xe7, 0xb8, 0x6d, 0x1f, 0xee,
0x1c, 0xec, 0xa3, 0x00, 0x0a, 0x6f, 0xdb, 0xed, 0x66, 0xa7, 0xbd, 0x92, 0x67, 0x1c, 0x4f, 0x0e,
0x5a, 0x2b, 0x05, 0x52, 0x81, 0xc5, 0xe3, 0xe6, 0xde, 0x51, 0x7b, 0xa5, 0x68, 0xfd, 0x02, 0x96,
0xa5, 0xfa, 0xc2, 0x45, 0xc8, 0xa7, 0x50, 0x3a, 0xe3, 0x6e, 0xc2, 0x4f, 0xa6, 0xba, 0x79, 0xc3,
0xd8, 0x6b, 0xcc, 0x95, 0x6c, 0xc9, 0x8b, 0xdb, 0x2b, 0xbc, 0x38, 0xf7, 0xf1, 0xd0, 0x0a, 0x28,
0xb2, 0xb2, 0x21, 0x3c, 0x74, 0x63, 0x97, 0x5e, 0x1c, 0x3b, 0x83, 0x29, 0xb5, 0xd9, 0x24, 0x21,
0x50, 0x1c, 0x8e, 0x3d, 0xca, 0x0f, 0x70, 0xc9, 0xe6, 0xdf, 0xd6, 0xcf, 0x00, 0x9e, 0x4e, 0x83,
0x74, 0x97, 0xc0, 0x53, 0x3f, 0x67, 0x08, 0xd2, 0x1d, 0xc4, 0x80, 0xfb, 0x02, 0x75, 0x7c, 0x1a,
0xfa, 0x02, 0x1b, 0x58, 0xdb, 0x50, 0xe5, 0x58, 0x59, 0x36, 0x82, 0x20, 0xa4, 0x45, 0x07, 0x34,
0xa0, 0x19, 0x7c, 0xd5, 0xa2, 0xb0, 0x1a, 0x03, 0xc9, 0x64, 0xda, 0x75, 0x28, 0xf7, 0x39, 0x98,
0x58, 0xa7, 0x60, 0xab, 0xa1, 0xf5, 0xaf, 0x1c, 0x5e, 0x29, 0xa1, 0xe1, 0xd1, 0x88, 0x79, 0x7c,
0x13, 0x96, 0x3d, 0x31, 0x3e, 0xe1, 0xba, 0xc8, 0x75, 0x1a, 0xe9, 0xee, 0xfa, 0x78, 0xc1, 0xae,
0x49, 0x11, 0x4e, 0x26, 0x3f, 0x81, 0xaa, 0x82, 0x98, 0x4c, 0x03, 0xbe, 0x62, 0x75, 0x73, 0x3d,
0x0e, 0x10, 0x9d, 0x18, 0x8a, 0x83, 0x64, 0x47, 0x22, 0xe9, 0xc0, 0x9a, 0x12, 0x16, 0x3a, 0x4a,
0x35, 0x0a, 0x1c, 0xe5, 0x76, 0x1c, 0x65, 0xd6, 0xcc, 0x88, 0x46, 0xa4, 0xbc, 0x36, 0xb9, 0x55,
0x81, 0xb2, 0xa4, 0x5a, 0xff, 0xce, 0xa1, 0xbb, 0x4a, 0x33, 0x89, 0x2d, 0xb7, 0xa0, 0xee, 0x49,
0x42, 0x6c, 0xcf, 0xd7, 0x13, 0xf7, 0x2c, 0x0d, 0xbc, 0x60, 0x2f, 0x2b, 0x21, 0xb1, 0xeb, 0x87,
0x50, 0x0b, 0x51, 0xa2, 0x6d, 0x5f, 0x4b, 0xd8, 0x76, 0x88, 0x50, 0x55, 0x02, 0x6c, 0xe3, 0xcf,
0xe0, 0x4a, 0x28, 0x9f, 0xb0, 0xf3, 0xf7, 0xe7, 0xec, 0x3c, 0x04, 0x5c, 0x55, 0x08, 0xfa, 0xde,
0x81, 0xc5, 0x37, 0x41, 0xb6, 0x7e, 0x53, 0x80, 0xf2, 0xf6, 0x78, 0x38, 0x71, 0x3c, 0x76, 0x4c,
0x25, 0xa4, 0x4f, 0x07, 0x01, 0xdf, 0x6e, 0x7d, 0xf3, 0x4e, 0x7c, 0x05, 0xc9, 0xa6, 0x7e, 0xdb,
0x9c, 0xd5, 0x96, 0x22, 0x4c, 0x58, 0x86, 0xb3, 0xfc, 0x5b, 0x08, 0xcb, 0x60, 0x26, 0x45, 0xd4,
0x55, 0x28, 0x44, 0x57, 0xa1, 0x01, 0x65, 0x14, 0x8c, 0x42, 0x30, 0xee, 0x45, 0x11, 0xc8, 0x77,
0xe1, 0x52, 0xcf, 0xa3, 0x0e, 0xb3, 0x87, 0x0a, 0xd3, 0x8b, 0x92, 0xa7, 0x2e, 0x26, 0x6c, 0x15,
0xae, 0xef, 0x40, 0x6d, 0x38, 0xee, 0x47, 0x7c, 0x25, 0xc9, 0x57, 0x45, 0x6a, 0xc8, 0x74, 0x55,
0xc5, 0x03, 0x16, 0x3f, 0x6b, 0x38, 0x2b, 0x86, 0xd6, 0x27, 0xb0, 0x1c, 0xdb, 0x2b, 0x0b, 0x71,
0xed, 0x2f, 0x8f, 0x9a, 0x7b, 0x22, 0x1e, 0x3e, 0xe2, 0x21, 0xd0, 0xc6, 0x78, 0x88, 0x61, 0x75,
0xaf, 0x7d, 0x78, 0x88, 0xd1, 0xf3, 0xb3, 0x50, 0x44, 0x06, 0x50, 0x2d, 0x6e, 0x2e, 0x68, 0x71,
0x33, 0xa7, 0xe2, 0x66, 0x3e, 0x8a, 0x9b, 0x85, 0xad, 0x3a, 0xd4, 0x84, 0x41, 0x4e, 0xa6, 0xcc,
0x0f, 0xad, 0xdf, 0xe5, 0x00, 0x3a, 0xaf, 0x46, 0x2a, 0x60, 0x3c, 0x80, 0x72, 0x4f, 0x80, 0xe3,
0x01, 0xb1, 0x98, 0x78, 0x25, 0xd1, 0xc6, 0xb6, 0xe2, 0xc2, 0xd8, 0x50, 0xf6, 0xa7, 0xbd, 0x1e,
0xf5, 0x55, 0x10, 0x35, 0x2f, 0xad, 0x76, 0xcf, 0x6d, 0xc5, 0xca, 0xa4, 0x9e, 0x3b, 0xee, 0x60,
0xca, 0xa3, 0xea, 0x1b, 0xa5, 0x24, 0xab, 0xf5, 0xdb, 0x1c, 0x54, 0xb9, 0xae, 0x99, 0xe2, 0xd2,
0x0d, 0xa8, 0x70, 0x35, 0x68, 0x5f, 0x46, 0xa6, 0x25, 0x3b, 0x22, 0x90, 0x1f, 0x63, 0x7c, 0x94,
0x72, 0xbe, 0xd4, 0xed, 0x7a, 0x32, 0xac, 0x50, 0x2e, 0xe2, 0xb6, 0x76, 0xe1, 0x32, 0x37, 0x4f,
0x2f, 0x60, 0x13, 0xd2, 0xa0, 0xfa, 0x43, 0x9f, 0x33, 0x1e, 0x7a, 0x9c, 0x9b, 0x9c, 0x5d, 0xf8,
0x6e, 0xcf, 0x19, 0x48, 0x45, 0xc2, 0x31, 0x3e, 0x30, 0x44, 0x07, 0xcb, 0xf4, 0x36, 0x2c, 0x43,
0xf5, 0xb1, 0xe3, 0x9f, 0x49, 0x95, 0xac, 0x9f, 0x43, 0x4d, 0x0c, 0x33, 0x99, 0x11, 0x5f, 0xc5,
0x33, 0x44, 0xe1, 0x8a, 0x2f, 0xdb, 0xfc, 0xdb, 0xba, 0x0c, 0x97, 0x0e, 0x47, 0xce, 0xc4, 0x3f,
0x1b, 0xab, 0x40, 0xcb, 0xd2, 0xb8, 0x95, 0x88, 0x96, 0x69, 0xc5, 0x0f, 0xe1, 0x92, 0x47, 0x87,
0x8e, 0x3b, 0x72, 0x47, 0xa7, 0x27, 0xdd, 0x8b, 0x80, 0xfa, 0x32, 0xcb, 0xab, 0x87, 0xe4, 0x2d,
0x46, 0x65, 0xaa, 0x75, 0x07, 0xe3, 0xae, 0xbc, 0xeb, 0xfc, 0xdb, 0xfa, 0x3d, 0xbe, 0x39, 0xcf,
0x9c, 0xa0, 0xa7, 0xac, 0x40, 0x76, 0xa0, 0x1e, 0xde, 0x70, 0x4e, 0x91, 0xba, 0x18, 0xd1, 0x9e,
0xcb, 0x6c, 0xcb, 0x1b, 0xaf, 0xa2, 0xfd, 0x72, 0x4f, 0x27, 0x70, 0x28, 0x67, 0xd4, 0xa3, 0x83,
0x10, 0x2a, 0x9f, 0x0e, 0xc5, 0x19, 0x75, 0x28, 0x9d, 0xb0, 0x75, 0x29, 0x7a, 0x09, 0xc5, 0xfd,
0xfc, 0x26, 0x07, 0x64, 0x56, 0x87, 0x6f, 0x9b, 0x84, 0xde, 0x83, 0xba, 0x8f, 0xd7, 0x3e, 0x38,
0x31, 0x72, 0xe0, 0x65, 0x4e, 0x0d, 0xa3, 0x14, 0x5a, 0x18, 0x93, 0xef, 0x53, 0x74, 0x69, 0xff,
0x64, 0x34, 0x0e, 0xdc, 0xe7, 0x17, 0x3c, 0x32, 0x2e, 0xd9, 0x75, 0x45, 0xde, 0xe7, 0x54, 0xeb,
0x81, 0x52, 0x4a, 0x57, 0x9e, 0x5c, 0x83, 0xa5, 0x97, 0x8c, 0xaa, 0xb2, 0x73, 0x7c, 0xf2, 0xf9,
0x78, 0xa7, 0x6f, 0xfd, 0x03, 0x1f, 0x40, 0x69, 0xfe, 0x4c, 0x3e, 0xa0, 0x2f, 0x91, 0x8f, 0x2d,
0xc1, 0xf2, 0x0d, 0x71, 0x2c, 0x7d, 0x99, 0xa9, 0xa9, 0x21, 0xbb, 0x67, 0xc2, 0xca, 0x38, 0x25,
0xf6, 0x13, 0x8e, 0x31, 0xd0, 0xaf, 0xf4, 0xc4, 0x3d, 0x33, 0x22, 0xbd, 0x7d, 0x49, 0xd2, 0x43,
0xeb, 0xdc, 0x83, 0x12, 0x3d, 0xa7, 0xa3, 0xc0, 0x5f, 0xaf, 0xf2, 0xb8, 0xb0, 0xac, 0xd2, 0xc5,
0x36, 0xa3, 0xda, 0x72, 0xd2, 0xfa, 0x11, 0x5c, 0xde, 0x63, 0x79, 0xdd, 0x23, 0xb4, 0xbe, 0x9e,
0x21, 0x76, 0x3a, 0x7b, 0xd2, 0x2a, 0x85, 0xa0, 0xb3, 0x47, 0xea, 0x90, 0xdf, 0x69, 0xc9, 0x3d,
0xe4, 0xdd, 0x96, 0xf5, 0x4b, 0x3c, 0x68, 0x5d, 0x2e, 0x93, 0x99, 0x0c, 0x70, 0xb5, 0x7c, 0x21,
0x5a, 0x1e, 0x53, 0x51, 0xea, 0x79, 0x63, 0x8f, 0x1b, 0xa4, 0x62, 0x8b, 0x81, 0x75, 0x57, 0xea,
0x80, 0x7b, 0x1e, 0xbf, 0x08, 0x9d, 0x4d, 0xa0, 0xe5, 0x42, 0x55, 0x77, 0x61, 0x35, 0xc6, 0x95,
0x29, 0x38, 0x7d, 0x08, 0x57, 0x38, 0xd8, 0x2e, 0xa5, 0x93, 0xe6, 0xc0, 0x3d, 0x4f, 0x5d, 0x75,
0x02, 0x57, 0x4d, 0xc6, 0xff, 0xaf, 0x8d, 0xac, 0x33, 0x28, 0x3d, 0xe1, 0xf5, 0xa3, 0xa6, 0x4b,
0x91, 0xf3, 0x62, 0x84, 0x19, 0x39, 0x43, 0x91, 0xdd, 0x57, 0x6c, 0xfe, 0xcd, 0xa3, 0x39, 0xa5,
0xde, 0x91, 0xbd, 0x27, 0x1e, 0x8e, 0x8a, 0x1d, 0x8e, 0xc9, 0x2d, 0x56, 0xb9, 0xba, 0xe8, 0x1e,
0x7c, 0xb6, 0xc8, 0x67, 0x35, 0x0a, 0x56, 0x50, 0x2b, 0x62, 0xa5, 0x66, 0xbf, 0xaf, 0xbd, 0x1c,
0x21, 0x5e, 0x2e, 0x8e, 0x67, 0xbd, 0x84, 0xcb, 0x1a, 0x7f, 0x26, 0x33, 0x7c, 0x0c, 0x25, 0x51,
0x24, 0xcb, 0xa0, 0xb5, 0x16, 0x97, 0x12, 0xcb, 0xd8, 0x92, 0xc7, 0xba, 0x07, 0xab, 0x92, 0x42,
0x87, 0xe3, 0xa4, 0xb3, 0xe2, 0xf6, 0xb1, 0xf6, 0x60, 0x2d, 0xce, 0x96, 0xc9, 0x45, 0x9a, 0x6a,
0xd1, 0xa3, 0x49, 0x5f, 0x8b, 0x81, 0xe6, 0xa1, 0xe8, 0x06, 0xcb, 0x1b, 0x06, 0x0b, 0x15, 0x52,
0x10, 0x99, 0x14, 0x5a, 0x55, 0xe6, 0xdf, 0x73, 0xfd, 0xf0, 0xa5, 0x7b, 0x0d, 0x44, 0x27, 0x66,
0x3a, 0x94, 0x0d, 0x28, 0x0b, 0x83, 0xab, 0xac, 0x2a, 0xf9, 0x54, 0x14, 0x13, 0x53, 0xa8, 0x45,
0x9f, 0x7b, 0xce, 0xe9, 0x90, 0x86, 0x31, 0x87, 0xa5, 0x10, 0x3a, 0x31, 0xd3, 0x8e, 0xff, 0x84,
0xcf, 0x67, 0x73, 0xe0, 0x78, 0x43, 0x65, 0xfc, 0x87, 0x50, 0x12, 0xb9, 0x89, 0x4c, 0xe4, 0x3f,
0x88, 0xc3, 0xe8, 0xbc, 0x62, 0xd0, 0x14, 0x99, 0x8c, 0x94, 0x62, 0x87, 0x25, 0x7b, 0x33, 0x2d,
0xa3, 0x57, 0xd3, 0x22, 0xdf, 0x87, 0x45, 0x87, 0x89, 0xf0, 0xbb, 0x58, 0xdf, 0xfc, 0x4e, 0x02,
0x74, 0xe7, 0x62, 0x42, 0x6d, 0xc1, 0x65, 0x7d, 0x0a, 0x55, 0x6d, 0x05, 0x96, 0xf5, 0x3e, 0x6a,
0x77, 0x30, 0x15, 0xae, 0xc1, 0x52, 0x73, 0xbb, 0xb3, 0x73, 0x2c, 0x92, 0xe1, 0x3a, 0x40, 0xab,
0x1d, 0x8e, 0xf3, 0x98, 0x05, 0x09, 0x29, 0x79, 0xc3, 0x75, 0x7d, 0x72, 0x69, 0xfa, 0xe4, 0xdf,
0x4a, 0x9f, 0x57, 0xb0, 0x2c, 0xb7, 0x9f, 0xc9, 0x07, 0x3e, 0x41, 0x0b, 0x33, 0x18, 0xe5, 0x02,
0xd7, 0x12, 0x96, 0x55, 0xb7, 0x53, 0x30, 0x5a, 0x98, 0x3d, 0x1c, 0x06, 0x4e, 0x30, 0xf5, 0x95,
0x0b, 0xfc, 0x31, 0x07, 0x75, 0x45, 0xc9, 0x5a, 0xcc, 0xab, 0x5a, 0x49, 0xc4, 0xbc, 0xb0, 0x52,
0xba, 0x0a, 0xa5, 0x7e, 0xf7, 0xd0, 0x7d, 0xad, 0x9a, 0x1a, 0x72, 0xc4, 0xe8, 0x03, 0xb1, 0x8e,
0xe8, 0xa8, 0xc9, 0x11, 0x4b, 0xbf, 0x59, 0x6f, 0x6d, 0x67, 0xd4, 0xa7, 0xaf, 0xf8, 0x4b, 0x5b,
0xb4, 0x23, 0x02, 0x4f, 0x97, 0x65, 0xe7, 0x8d, 0x17, 0x52, 0x7a, 0x27, 0x0e, 0x9d, 0xbc, 0x39,
0x0d, 0xce, 0xda, 0x23, 0xd6, 0x74, 0x52, 0x3b, 0x5c, 0x03, 0xc2, 0x88, 0x2d, 0xd7, 0xd7, 0xa9,
0x6d, 0x58, 0x65, 0x54, 0xf4, 0x7b, 0x4c, 0xa6, 0xa3, 0x88, 0xa1, 0xc2, 0x76, 0xce, 0x08, 0xdb,
0x8e, 0xef, 0xbf, 0x1c, 0x7b, 0x7d, 0xb9, 0xb5, 0x70, 0x6c, 0xb5, 0x04, 0xf8, 0x91, 0x1f, 0x0b,
0xcc, 0xdf, 0x16, 0xe5, 0x7e, 0x84, 0xf2, 0x88, 0x06, 0x73, 0x50, 0xac, 0x8f, 0xe0, 0x8a, 0xe2,
0x94, 0xc5, 0xf4, 0x1c, 0xe6, 0x03, 0xb8, 0xa9, 0x98, 0xb7, 0xcf, 0x58, 0xa2, 0xf7, 0x54, 0x2e,
0xf8, 0xbf, 0xea, 0xf9, 0x10, 0xd6, 0x42, 0x3d, 0xf5, 0xdc, 0x05, 0x71, 0xa6, 0xbe, 0xf4, 0x17,
0xc4, 0x61, 0xdf, 0x8c, 0xe6, 0x8d, 0x07, 0xe1, 0x03, 0xc8, 0xbe, 0xad, 0xcf, 0x23, 0xed, 0xe3,
0xf9, 0x43, 0x92, 0x22, 0x49, 0x00, 0xd2, 0x50, 0x36, 0x7e, 0xcf, 0x37, 0xb7, 0xce, 0x19, 0x37,
0x29, 0xc7, 0xcc, 0x69, 0x98, 0xd2, 0xa4, 0x8c, 0x73, 0xc6, 0xa4, 0x33, 0xcc, 0xb6, 0xb0, 0x00,
0x87, 0x35, 0x2c, 0x30, 0xb3, 0x81, 0x0f, 0xa0, 0x38, 0xa1, 0x32, 0x26, 0x54, 0x37, 0xc9, 0x86,
0xe8, 0x60, 0x6f, 0x3c, 0x45, 0x9a, 0xeb, 0xb3, 0x9b, 0x61, 0xf3, 0x79, 0xeb, 0xa7, 0x91, 0x02,
0x33, 0x56, 0x31, 0x15, 0x50, 0x69, 0xbd, 0x30, 0x0a, 0xfb, 0x64, 0x41, 0x5c, 0x77, 0xfa, 0x4c,
0x41, 0x7c, 0x57, 0xdc, 0x8a, 0xf0, 0xae, 0x64, 0x02, 0xeb, 0x0a, 0x5b, 0x45, 0x57, 0x2c, 0x53,
0x7c, 0xc1, 0x74, 0x34, 0x40, 0xdb, 0xa8, 0xe8, 0x22, 0x06, 0x4a, 0xe1, 0xf0, 0xfe, 0x65, 0x52,
0xd8, 0x89, 0xc0, 0xb8, 0xcf, 0x64, 0xd5, 0x97, 0x1d, 0x98, 0x4a, 0x34, 0xc4, 0xc0, 0xda, 0x87,
0xab, 0xe6, 0xfd, 0xcd, 0xa4, 0xf2, 0x31, 0xdc, 0x4a, 0xbb, 0xe2, 0x99, 0x70, 0x9f, 0x44, 0x37,
0xf5, 0x1d, 0x54, 0x1b, 0xfa, 0xb6, 0xdf, 0x49, 0x49, 0x20, 0x8f, 0x3d, 0x8c, 0x03, 0x99, 0xc0,
0xfc, 0x08, 0x2c, 0xfb, 0xb1, 0x47, 0x97, 0xbe, 0x30, 0xf7, 0xd2, 0x4b, 0x8b, 0xe8, 0x51, 0xe7,
0x5d, 0x1c, 0x98, 0x16, 0x98, 0xde, 0xc5, 0x81, 0xe9, 0x31, 0x29, 0x0b, 0xde, 0xf7, 0x2c, 0xa8,
0x84, 0x59, 0x90, 0xf6, 0x07, 0xa0, 0x2a, 0x94, 0xf7, 0x0f, 0x0e, 0x9f, 0x36, 0xb7, 0x31, 0xff,
0xda, 0xfc, 0x67, 0x1e, 0xf2, 0xbb, 0xc7, 0x64, 0x0b, 0x16, 0x45, 0xeb, 0x7a, 0x4e, 0x73, 0xbf,
0x31, 0xaf, 0x09, 0x6e, 0x2d, 0x90, 0xcf, 0xa0, 0xc0, 0x9a, 0xd7, 0xa9, 0xdd, 0xfd, 0x46, 0x7a,
0x03, 0x1c, 0xa5, 0x3b, 0x50, 0xd5, 0x3a, 0xd5, 0xe4, 0x8d, 0xdd, 0xfd, 0xc6, 0x9b, 0xbb, 0xe0,
0x42, 0xa7, 0xce, 0xab, 0x91, 0xa9, 0x53, 0xd4, 0x59, 0x35, 0x75, 0xd2, 0xfa, 0x98, 0x28, 0xbd,
0x2f, 0x3b, 0xe4, 0xbd, 0x80, 0xbc, 0x97, 0xd0, 0x70, 0xd5, 0x3b, 0x8a, 0x8d, 0xdb, 0xe9, 0x0c,
0x0a, 0x6f, 0xf3, 0x00, 0x16, 0x79, 0xb7, 0x85, 0x7c, 0xa1, 0x3e, 0x1a, 0x09, 0xbd, 0xa8, 0x14,
0x73, 0xc7, 0xfa, 0x34, 0xd6, 0xc2, 0xfd, 0xdc, 0x0f, 0x72, 0x9b, 0xdf, 0xe4, 0x61, 0x91, 0x57,
0xdf, 0xe4, 0x4b, 0x80, 0xa8, 0x4d, 0x61, 0x6a, 0x3b, 0xd3, 0xf8, 0x30, 0xb5, 0x9d, 0xed, 0x70,
0x88, 0x13, 0xd1, 0xfa, 0x09, 0x24, 0x49, 0x24, 0xf6, 0x74, 0x9a, 0x27, 0x92, 0xd0, 0x8c, 0x40,
0x54, 0x07, 0xea, 0xf1, 0x7e, 0x01, 0xb9, 0x93, 0x20, 0x66, 0xb6, 0x1d, 0x1a, 0x77, 0xe7, 0x33,
0xc5, 0xac, 0xf2, 0x97, 0x3c, 0x9e, 0x9b, 0xf8, 0xfb, 0x33, 0x1e, 0x61, 0x25, 0x2c, 0xc9, 0xc9,
0xad, 0xa4, 0x72, 0x2d, 0xca, 0x69, 0x1a, 0xef, 0xa5, 0xce, 0x87, 0xea, 0x3f, 0x83, 0x9a, 0x5e,
0x42, 0x93, 0xf7, 0x13, 0x2b, 0x40, 0xbd, 0x0a, 0x6f, 0x58, 0xf3, 0x58, 0x66, 0x81, 0x45, 0x29,
0x9c, 0x0c, 0x1c, 0xab, 0xb4, 0x93, 0x81, 0xe3, 0x95, 0x34, 0x02, 0xa3, 0x67, 0x44, 0x05, 0x30,
0x49, 0xdc, 0xa2, 0x56, 0x2f, 0x9b, 0x9e, 0x31, 0x5b, 0x3b, 0xa3, 0x1f, 0xff, 0x27, 0x0f, 0xd5,
0x27, 0x8e, 0x3b, 0x0a, 0xe8, 0x88, 0x35, 0xec, 0x58, 0xf4, 0xe0, 0x81, 0xc6, 0x74, 0x67, 0xbd,
0xdc, 0x34, 0xdd, 0x39, 0x56, 0x8b, 0xa1, 0x9a, 0x6d, 0x28, 0x89, 0x92, 0x88, 0x18, 0x8c, 0xb1,
0xd2, 0xa9, 0x71, 0x23, 0x79, 0x52, 0xdf, 0x6d, 0x54, 0x5d, 0x9b, 0xbb, 0x9d, 0x29, 0xc6, 0x1b,
0xb7, 0xd3, 0x19, 0x42, 0xc8, 0xcf, 0xa1, 0xc8, 0x1a, 0xf3, 0xc4, 0x08, 0x15, 0x5a, 0xef, 0xbe,
0xd1, 0x48, 0x9a, 0x0a, 0x01, 0x9e, 0xc0, 0x92, 0xea, 0xb5, 0x93, 0x9b, 0x86, 0xfe, 0xf1, 0xbe,
0x7c, 0xe3, 0x56, 0xda, 0xb4, 0x02, 0x43, 0xf7, 0xfe, 0x6b, 0x05, 0x8a, 0xec, 0x9d, 0x60, 0x7b,
0x8d, 0x92, 0x50, 0x73, 0xaf, 0x33, 0x35, 0x99, 0xb9, 0xd7, 0xd9, 0xfc, 0x55, 0xdc, 0x79, 0x2d,
0x17, 0x25, 0x09, 0x22, 0xf1, 0x92, 0xce, 0xbc, 0xf3, 0x09, 0x89, 0xac, 0xf0, 0x6d, 0x3d, 0x29,
0x25, 0x09, 0x42, 0x46, 0x4d, 0x68, 0xfa, 0x76, 0x52, 0x4e, 0x8b, 0xc0, 0x4f, 0xa1, 0x2c, 0xb3,
0xd0, 0x24, 0x55, 0xe3, 0x05, 0x62, 0x92, 0xaa, 0x46, 0x0a, 0x1b, 0x21, 0x62, 0x4e, 0x92, 0x86,
0x18, 0x55, 0x36, 0x69, 0x88, 0x5a, 0x42, 0x83, 0x88, 0x5f, 0x01, 0x44, 0x99, 0xa7, 0x19, 0xec,
0x12, 0xeb, 0x4a, 0x33, 0xd8, 0x25, 0x27, 0xaf, 0x08, 0xfd, 0x35, 0x90, 0xd9, 0x24, 0x94, 0x7c,
0x94, 0x2c, 0x9d, 0x58, 0x8d, 0x36, 0x3e, 0x7e, 0x3b, 0xe6, 0x70, 0xc9, 0x63, 0xa8, 0x84, 0xf9,
0x29, 0xb1, 0x52, 0xf6, 0xaf, 0xbf, 0x34, 0x77, 0xe6, 0xf2, 0x98, 0x56, 0x92, 0x6f, 0x4d, 0x8a,
0x50, 0xfc, 0xb9, 0xb9, 0x3b, 0x9f, 0x49, 0x3f, 0x52, 0x99, 0xb3, 0x26, 0x1d, 0x69, 0xbc, 0xac,
0x4d, 0x3a, 0x52, 0x23, 0xe1, 0x8d, 0x10, 0x53, 0x9c, 0x24, 0x5e, 0xfe, 0xa6, 0x21, 0xce, 0x38,
0x49, 0x94, 0x95, 0x26, 0x6d, 0x7f, 0xa6, 0x52, 0x4e, 0xda, 0xfe, 0x6c, 0x62, 0x2b, 0x4e, 0x2c,
0x4c, 0x50, 0x93, 0x4e, 0xcc, 0x2c, 0xab, 0x1b, 0x77, 0xe6, 0xf2, 0x98, 0x2a, 0xa7, 0x9f, 0xd8,
0x4c, 0x6d, 0x9d, 0xa6, 0xb2, 0x79, 0x62, 0x5b, 0xb5, 0x3f, 0xfc, 0xfd, 0x56, 0xee, 0xcf, 0xf8,
0xef, 0x6f, 0xf8, 0xaf, 0x5b, 0xe2, 0xff, 0xf3, 0xec, 0x87, 0xff, 0x0d, 0x00, 0x00, 0xff, 0xff,
0xb2, 0x78, 0xd4, 0xb9, 0xe2, 0x26, 0x00, 0x00,
// 2638 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xb4, 0x5a, 0xcd, 0x72, 0x1b, 0xc7,
0x11, 0x26, 0x7e, 0x08, 0x10, 0x0d, 0x10, 0xa2, 0x86, 0x94, 0x42, 0xad, 0x6c, 0x49, 0x5e, 0x49,
0x96, 0x12, 0xdb, 0x50, 0xcc, 0x38, 0x87, 0x54, 0x5c, 0x4a, 0x81, 0x04, 0x2c, 0x31, 0xa4, 0x48,
0x79, 0x09, 0x52, 0xf6, 0x89, 0xb5, 0x04, 0x46, 0x24, 0x4a, 0xf8, 0xf3, 0xee, 0x82, 0x12, 0x55,
0x95, 0x4b, 0xaa, 0x72, 0xc8, 0xd9, 0x39, 0xa5, 0xf2, 0x02, 0x79, 0x80, 0xbc, 0x43, 0x2a, 0x97,
0xe4, 0x09, 0x52, 0xa9, 0x9c, 0x52, 0xb9, 0xe4, 0x9e, 0x5c, 0xd2, 0xf3, 0xb7, 0x3b, 0xbb, 0x98,
0x85, 0xe4, 0xac, 0x72, 0x10, 0xb9, 0xd3, 0xd3, 0xfd, 0x4d, 0x4f, 0x4f, 0x4f, 0x4f, 0x77, 0x53,
0x50, 0xf1, 0x26, 0xdd, 0xc6, 0xc4, 0x1b, 0x07, 0x63, 0x52, 0xa3, 0x41, 0xb7, 0xe7, 0x53, 0xef,
0x9c, 0x7a, 0x93, 0x13, 0x6b, 0xed, 0x74, 0x7c, 0x3a, 0xe6, 0x13, 0x0f, 0xd8, 0x97, 0xe0, 0xb1,
0xae, 0x31, 0x9e, 0x07, 0xc3, 0xf3, 0x6e, 0x97, 0xff, 0x98, 0x9c, 0x3c, 0x78, 0x71, 0x2e, 0xa7,
0xae, 0xf3, 0x29, 0x77, 0x1a, 0x9c, 0xf1, 0x1f, 0x38, 0xc5, 0x7e, 0x89, 0x49, 0xfb, 0x57, 0x39,
0xa8, 0x3b, 0xd4, 0x9f, 0x8c, 0x47, 0x3e, 0x7d, 0x4c, 0xdd, 0x1e, 0xf5, 0xc8, 0xfb, 0x00, 0xdd,
0xc1, 0xd4, 0x0f, 0xa8, 0x77, 0xdc, 0xef, 0xad, 0xe7, 0x6e, 0xe5, 0xee, 0x17, 0x9d, 0x8a, 0xa4,
0x6c, 0xf7, 0xc8, 0x75, 0xa8, 0x0c, 0xe9, 0xf0, 0x44, 0xcc, 0xe6, 0xf9, 0xec, 0x92, 0x20, 0xe0,
0xa4, 0x05, 0x4b, 0x1e, 0x3d, 0xef, 0xfb, 0xfd, 0xf1, 0x68, 0xbd, 0x80, 0x73, 0x05, 0x27, 0x1c,
0x33, 0x41, 0xcf, 0x7d, 0x1e, 0x1c, 0x23, 0xcc, 0x70, 0xbd, 0x28, 0x04, 0x19, 0xa1, 0x83, 0x63,
0xfb, 0x37, 0x05, 0xa8, 0x39, 0xee, 0xe8, 0x94, 0x3a, 0xf4, 0x9b, 0x29, 0xf5, 0x03, 0xb2, 0x02,
0x85, 0x17, 0xf4, 0x82, 0x2f, 0x5f, 0x73, 0xd8, 0xa7, 0x90, 0x47, 0x8e, 0x63, 0x3a, 0x12, 0x0b,
0xd7, 0x98, 0x3c, 0x12, 0xda, 0xa3, 0x1e, 0x59, 0x83, 0xc5, 0x41, 0x7f, 0xd8, 0x0f, 0xe4, 0xaa,
0x62, 0x10, 0x53, 0xa7, 0x98, 0x50, 0x67, 0x0b, 0xc0, 0x1f, 0x7b, 0xc1, 0xf1, 0xd8, 0xc3, 0x4d,
0xaf, 0x2f, 0xe2, 0x6c, 0x7d, 0xe3, 0x4e, 0x43, 0x37, 0x75, 0x43, 0x57, 0xa8, 0x71, 0x80, 0xcc,
0xfb, 0x8c, 0xd7, 0xa9, 0xf8, 0xea, 0x93, 0x7c, 0x01, 0x55, 0x0e, 0x12, 0xb8, 0xde, 0x29, 0x0d,
0xd6, 0x4b, 0x1c, 0xe5, 0xee, 0x1b, 0x50, 0x3a, 0x9c, 0xd9, 0xe1, 0xcb, 0x8b, 0x6f, 0x62, 0x43,
0x0d, 0xf9, 0xfb, 0xee, 0xa0, 0xff, 0xda, 0x3d, 0x19, 0xd0, 0xf5, 0x32, 0x02, 0x2d, 0x39, 0x31,
0x9a, 0xdd, 0x80, 0x4a, 0xa8, 0x03, 0x59, 0x82, 0xe2, 0xde, 0xfe, 0x5e, 0x7b, 0x65, 0x81, 0x00,
0x94, 0x9a, 0x07, 0x5b, 0xed, 0xbd, 0xd6, 0x4a, 0x8e, 0x54, 0xa1, 0xdc, 0x6a, 0x8b, 0x41, 0xde,
0xde, 0x04, 0x88, 0x56, 0x23, 0x65, 0x28, 0xec, 0xb4, 0xbf, 0x46, 0x7e, 0xe4, 0x39, 0x6a, 0x3b,
0x07, 0xdb, 0xfb, 0x7b, 0x28, 0x80, 0xc2, 0x5b, 0x4e, 0xbb, 0xd9, 0x69, 0xaf, 0xe4, 0x19, 0xc7,
0x93, 0xfd, 0xd6, 0x4a, 0x81, 0x54, 0x60, 0xf1, 0xa8, 0xb9, 0x7b, 0xd8, 0x5e, 0x29, 0xda, 0xbf,
0x80, 0x65, 0xa9, 0xbe, 0x70, 0x11, 0xf2, 0x19, 0x94, 0xce, 0xb8, 0x9b, 0xf0, 0x93, 0xa9, 0x6e,
0xbc, 0x97, 0xd8, 0x6b, 0xcc, 0x95, 0x1c, 0xc9, 0x8b, 0xdb, 0x2b, 0xbc, 0x38, 0xf7, 0xf1, 0xd0,
0x0a, 0x28, 0xb2, 0xd2, 0x10, 0x1e, 0xda, 0xd8, 0xa1, 0x17, 0x47, 0xee, 0x60, 0x4a, 0x1d, 0x36,
0x49, 0x08, 0x14, 0x87, 0x63, 0x8f, 0xf2, 0x03, 0x5c, 0x72, 0xf8, 0xb7, 0xfd, 0x73, 0x80, 0xa7,
0xd3, 0x20, 0xdd, 0x25, 0xf0, 0xd4, 0xcf, 0x19, 0x82, 0x74, 0x07, 0x31, 0xe0, 0xbe, 0x40, 0x5d,
0x9f, 0x86, 0xbe, 0xc0, 0x06, 0xf6, 0x16, 0x54, 0x39, 0x56, 0x96, 0x8d, 0x20, 0x08, 0x69, 0xd1,
0x01, 0x0d, 0x68, 0x06, 0x5f, 0xb5, 0x29, 0xac, 0xc6, 0x40, 0x32, 0x99, 0x76, 0x1d, 0xca, 0x3d,
0x0e, 0x26, 0xd6, 0x29, 0x38, 0x6a, 0x68, 0xff, 0x2b, 0x87, 0x57, 0x4a, 0x68, 0x78, 0x38, 0x62,
0x1e, 0xdf, 0x84, 0x65, 0x4f, 0x8c, 0x8f, 0xb9, 0x2e, 0x72, 0x1d, 0x2b, 0xdd, 0x5d, 0x1f, 0x2f,
0x38, 0x35, 0x29, 0xc2, 0xc9, 0xe4, 0xa7, 0x50, 0x55, 0x10, 0x93, 0x69, 0xc0, 0x57, 0xac, 0x6e,
0xac, 0xc7, 0x01, 0xa2, 0x13, 0x43, 0x71, 0x90, 0xec, 0x48, 0x24, 0x1d, 0x58, 0x53, 0xc2, 0x42,
0x47, 0xa9, 0x46, 0x81, 0xa3, 0xdc, 0x8a, 0xa3, 0xcc, 0x9a, 0x19, 0xd1, 0x88, 0x94, 0xd7, 0x26,
0x37, 0x2b, 0x50, 0x96, 0x54, 0xfb, 0xdf, 0x39, 0x74, 0x57, 0x69, 0x26, 0xb1, 0xe5, 0x16, 0xd4,
0x3d, 0x49, 0x88, 0xed, 0xf9, 0xba, 0x71, 0xcf, 0xd2, 0xc0, 0x0b, 0xce, 0xb2, 0x12, 0x12, 0xbb,
0x7e, 0x08, 0xb5, 0x10, 0x25, 0xda, 0xf6, 0x35, 0xc3, 0xb6, 0x43, 0x84, 0xaa, 0x12, 0x60, 0x1b,
0x7f, 0x06, 0x57, 0x42, 0x79, 0xc3, 0xce, 0x3f, 0x98, 0xb3, 0xf3, 0x10, 0x70, 0x55, 0x21, 0xe8,
0x7b, 0x07, 0x16, 0xdf, 0x04, 0xd9, 0xfe, 0x6d, 0x01, 0xca, 0x5b, 0xe3, 0xe1, 0xc4, 0xf5, 0xd8,
0x31, 0x95, 0x90, 0x3e, 0x1d, 0x04, 0x7c, 0xbb, 0xf5, 0x8d, 0xdb, 0xf1, 0x15, 0x24, 0x9b, 0xfa,
0xed, 0x70, 0x56, 0x47, 0x8a, 0x30, 0x61, 0x19, 0xce, 0xf2, 0x6f, 0x21, 0x2c, 0x83, 0x99, 0x14,
0x51, 0x57, 0xa1, 0x10, 0x5d, 0x05, 0x0b, 0xca, 0x28, 0x18, 0x85, 0x60, 0xdc, 0x8b, 0x22, 0x90,
0xef, 0xc3, 0xa5, 0xae, 0x47, 0x5d, 0x66, 0x0f, 0x15, 0xa6, 0x17, 0x25, 0x4f, 0x5d, 0x4c, 0x38,
0x2a, 0x5c, 0xdf, 0x86, 0xda, 0x70, 0xdc, 0x8b, 0xf8, 0x4a, 0x92, 0xaf, 0x8a, 0xd4, 0x90, 0xe9,
0xaa, 0x8a, 0x07, 0x2c, 0x7e, 0xd6, 0x70, 0x56, 0x0c, 0xed, 0x4f, 0x61, 0x39, 0xb6, 0x57, 0x16,
0xe2, 0xda, 0x5f, 0x1e, 0x36, 0x77, 0x45, 0x3c, 0x7c, 0xc4, 0x43, 0xa0, 0x83, 0xf1, 0x10, 0xc3,
0xea, 0x6e, 0xfb, 0xe0, 0x00, 0xa3, 0xe7, 0xe7, 0xa1, 0x88, 0x0c, 0xa0, 0x5a, 0xdc, 0x5c, 0xd0,
0xe2, 0x66, 0x4e, 0xc5, 0xcd, 0x7c, 0x14, 0x37, 0x0b, 0x9b, 0x75, 0xa8, 0x09, 0x83, 0x1c, 0x4f,
0x99, 0x1f, 0xda, 0xbf, 0xcf, 0x01, 0x74, 0x5e, 0x8d, 0x54, 0xc0, 0x78, 0x00, 0xe5, 0xae, 0x00,
0xc7, 0x03, 0x62, 0x31, 0xf1, 0x8a, 0xd1, 0xc6, 0x8e, 0xe2, 0xc2, 0xd8, 0x50, 0xf6, 0xa7, 0xdd,
0x2e, 0xf5, 0x55, 0x10, 0x4d, 0x5e, 0x5a, 0xed, 0x9e, 0x3b, 0x8a, 0x95, 0x49, 0x3d, 0x77, 0xfb,
0x83, 0x29, 0x8f, 0xaa, 0x6f, 0x94, 0x92, 0xac, 0xf6, 0xef, 0x72, 0x50, 0xe5, 0xba, 0x66, 0x8a,
0x4b, 0xef, 0x41, 0x85, 0xab, 0x41, 0x7b, 0x32, 0x32, 0x2d, 0x39, 0x11, 0x81, 0xfc, 0x04, 0xe3,
0xa3, 0x94, 0xf3, 0xa5, 0x6e, 0xd7, 0xcd, 0xb0, 0x42, 0xb9, 0x88, 0xdb, 0xde, 0x81, 0xcb, 0xdc,
0x3c, 0xdd, 0x80, 0x4d, 0x48, 0x83, 0xea, 0x0f, 0x7d, 0x2e, 0xf1, 0xd0, 0xe3, 0xdc, 0xe4, 0xec,
0xc2, 0xef, 0x77, 0xdd, 0x81, 0x54, 0x24, 0x1c, 0xe3, 0x03, 0x43, 0x74, 0xb0, 0x4c, 0x6f, 0xc3,
0x32, 0x54, 0x1f, 0xbb, 0xfe, 0x99, 0x54, 0xc9, 0xfe, 0x0a, 0x6a, 0x62, 0x98, 0xc9, 0x8c, 0xf8,
0x2a, 0x9e, 0x21, 0x0a, 0x57, 0x7c, 0xd9, 0xe1, 0xdf, 0xf6, 0x65, 0xb8, 0x74, 0x30, 0x72, 0x27,
0xfe, 0xd9, 0x58, 0x05, 0x5a, 0x96, 0xc6, 0xad, 0x44, 0xb4, 0x4c, 0x2b, 0xde, 0x83, 0x4b, 0x1e,
0x1d, 0xba, 0xfd, 0x51, 0x7f, 0x74, 0x7a, 0x7c, 0x72, 0x11, 0x50, 0x5f, 0x66, 0x79, 0xf5, 0x90,
0xbc, 0xc9, 0xa8, 0x4c, 0xb5, 0x93, 0xc1, 0xf8, 0x44, 0xde, 0x75, 0xfe, 0x6d, 0xff, 0x01, 0xdf,
0x9c, 0x67, 0x6e, 0xd0, 0x55, 0x56, 0x20, 0xdb, 0x50, 0x0f, 0x6f, 0x38, 0xa7, 0x48, 0x5d, 0x12,
0xd1, 0x9e, 0xcb, 0x6c, 0xc9, 0x1b, 0xaf, 0xa2, 0xfd, 0x72, 0x57, 0x27, 0x70, 0x28, 0x77, 0xd4,
0xa5, 0x83, 0x10, 0x2a, 0x9f, 0x0e, 0xc5, 0x19, 0x75, 0x28, 0x9d, 0xb0, 0x79, 0x29, 0x7a, 0x09,
0xc5, 0xfd, 0xfc, 0x36, 0x07, 0x64, 0x56, 0x87, 0xef, 0x9a, 0x84, 0xde, 0x85, 0xba, 0x8f, 0xd7,
0x3e, 0x38, 0x4e, 0xe4, 0xc0, 0xcb, 0x9c, 0x1a, 0x46, 0x29, 0xb4, 0x30, 0x26, 0xdf, 0xa7, 0xe8,
0xd2, 0xfe, 0xf1, 0x68, 0x1c, 0xf4, 0x9f, 0x5f, 0xf0, 0xc8, 0xb8, 0xe4, 0xd4, 0x15, 0x79, 0x8f,
0x53, 0xed, 0x07, 0x4a, 0x29, 0x5d, 0x79, 0x72, 0x0d, 0x96, 0x5e, 0x32, 0xaa, 0xca, 0xce, 0xf1,
0xc9, 0xe7, 0xe3, 0xed, 0x9e, 0xfd, 0x0f, 0x7c, 0x00, 0xa5, 0xf9, 0x33, 0xf9, 0x80, 0xbe, 0x44,
0x3e, 0xb6, 0x04, 0xcb, 0x37, 0xc4, 0xb1, 0xf4, 0x64, 0xa6, 0xa6, 0x86, 0xec, 0x9e, 0x09, 0x2b,
0xe3, 0x94, 0xd8, 0x4f, 0x38, 0xc6, 0x40, 0xbf, 0xd2, 0x15, 0xf7, 0x2c, 0x11, 0xe9, 0x9d, 0x4b,
0x92, 0x1e, 0x5a, 0xe7, 0x2e, 0x94, 0xe8, 0x39, 0x1d, 0x05, 0xfe, 0x7a, 0x95, 0xc7, 0x85, 0x65,
0x95, 0x2e, 0xb6, 0x19, 0xd5, 0x91, 0x93, 0xf6, 0x8f, 0xe1, 0xf2, 0x2e, 0xcb, 0xeb, 0x1e, 0xa1,
0xf5, 0xf5, 0x0c, 0xb1, 0xd3, 0xd9, 0x95, 0x56, 0x29, 0x04, 0x9d, 0x5d, 0x52, 0x87, 0xfc, 0x76,
0x4b, 0xee, 0x21, 0xdf, 0x6f, 0xd9, 0xbf, 0xc4, 0x83, 0xd6, 0xe5, 0x32, 0x99, 0x29, 0x01, 0xae,
0x96, 0x2f, 0x44, 0xcb, 0x63, 0x2a, 0x4a, 0x3d, 0x6f, 0xec, 0x71, 0x83, 0x54, 0x1c, 0x31, 0xb0,
0xef, 0x48, 0x1d, 0x70, 0xcf, 0xe3, 0x17, 0xa1, 0xb3, 0x09, 0xb4, 0x5c, 0xa8, 0xea, 0x0e, 0xac,
0xc6, 0xb8, 0x32, 0x05, 0xa7, 0x7b, 0x70, 0x85, 0x83, 0xed, 0x50, 0x3a, 0x69, 0x0e, 0xfa, 0xe7,
0xa9, 0xab, 0x4e, 0xe0, 0x6a, 0x92, 0xf1, 0xff, 0x6b, 0x23, 0xfb, 0x0c, 0x4a, 0x4f, 0x78, 0xfd,
0xa8, 0xe9, 0x52, 0xe4, 0xbc, 0x18, 0x61, 0x46, 0xee, 0x50, 0x64, 0xf7, 0x15, 0x87, 0x7f, 0xf3,
0x68, 0x4e, 0xa9, 0x77, 0xe8, 0xec, 0x8a, 0x87, 0xa3, 0xe2, 0x84, 0x63, 0x72, 0x83, 0x55, 0xae,
0x7d, 0x74, 0x0f, 0x3e, 0x5b, 0xe4, 0xb3, 0x1a, 0x05, 0x2b, 0xa8, 0x15, 0xb1, 0x52, 0xb3, 0xd7,
0xd3, 0x5e, 0x8e, 0x10, 0x2f, 0x17, 0xc7, 0xb3, 0x5f, 0xc2, 0x65, 0x8d, 0x3f, 0x93, 0x19, 0x3e,
0x86, 0x92, 0x28, 0x92, 0x65, 0xd0, 0x5a, 0x8b, 0x4b, 0x89, 0x65, 0x1c, 0xc9, 0x63, 0xdf, 0x85,
0x55, 0x49, 0xa1, 0xc3, 0xb1, 0xe9, 0xac, 0xb8, 0x7d, 0xec, 0x5d, 0x58, 0x8b, 0xb3, 0x65, 0x72,
0x91, 0xa6, 0x5a, 0xf4, 0x70, 0xd2, 0xd3, 0x62, 0x60, 0xf2, 0x50, 0x74, 0x83, 0xe5, 0x13, 0x06,
0x0b, 0x15, 0x52, 0x10, 0x99, 0x14, 0x5a, 0x55, 0xe6, 0xdf, 0xed, 0xfb, 0xe1, 0x4b, 0xf7, 0x1a,
0x88, 0x4e, 0xcc, 0x74, 0x28, 0x0d, 0x28, 0x0b, 0x83, 0xab, 0xac, 0xca, 0x7c, 0x2a, 0x8a, 0x89,
0x29, 0xd4, 0xa2, 0xcf, 0x3d, 0xf7, 0x74, 0x48, 0xc3, 0x98, 0xc3, 0x52, 0x08, 0x9d, 0x98, 0x69,
0xc7, 0x7f, 0xc6, 0xe7, 0xb3, 0x39, 0x70, 0xbd, 0xa1, 0x32, 0xfe, 0x43, 0x28, 0x89, 0xdc, 0x44,
0x26, 0xf2, 0x1f, 0xc6, 0x61, 0x74, 0x5e, 0x31, 0x68, 0x8a, 0x4c, 0x46, 0x4a, 0xb1, 0xc3, 0x92,
0xbd, 0x99, 0x56, 0xa2, 0x57, 0xd3, 0x22, 0x9f, 0xc0, 0xa2, 0xcb, 0x44, 0xf8, 0x5d, 0xac, 0x6f,
0x7c, 0xcf, 0x00, 0xdd, 0xb9, 0x98, 0x50, 0x47, 0x70, 0xd9, 0x9f, 0x41, 0x55, 0x5b, 0x81, 0x65,
0xbd, 0x8f, 0xda, 0x1d, 0x4c, 0x85, 0x6b, 0xb0, 0xd4, 0xdc, 0xea, 0x6c, 0x1f, 0x89, 0x64, 0xb8,
0x0e, 0xd0, 0x6a, 0x87, 0xe3, 0x3c, 0x66, 0x41, 0x42, 0x4a, 0xde, 0x70, 0x5d, 0x9f, 0x5c, 0x9a,
0x3e, 0xf9, 0xb7, 0xd2, 0xe7, 0x15, 0x2c, 0xcb, 0xed, 0x67, 0xf2, 0x81, 0x4f, 0xd1, 0xc2, 0x0c,
0x46, 0xb9, 0xc0, 0x35, 0xc3, 0xb2, 0xea, 0x76, 0x0a, 0x46, 0x1b, 0xb3, 0x87, 0x83, 0xc0, 0x0d,
0xa6, 0xbe, 0x72, 0x81, 0x3f, 0xe5, 0xa0, 0xae, 0x28, 0x59, 0x8b, 0x79, 0x55, 0x2b, 0x89, 0x98,
0x17, 0x56, 0x4a, 0x57, 0xa1, 0xd4, 0x3b, 0x39, 0xe8, 0xbf, 0x56, 0x4d, 0x0d, 0x39, 0x62, 0xf4,
0x81, 0x58, 0x47, 0x74, 0xd4, 0xe4, 0x88, 0xa5, 0xdf, 0xac, 0xb7, 0xb6, 0x3d, 0xea, 0xd1, 0x57,
0xfc, 0xa5, 0x2d, 0x3a, 0x11, 0x81, 0xa7, 0xcb, 0xb2, 0xf3, 0xc6, 0x0b, 0x29, 0xbd, 0x13, 0x87,
0x4e, 0xde, 0x9c, 0x06, 0x67, 0xed, 0x11, 0x6b, 0x3a, 0xa9, 0x1d, 0xae, 0x01, 0x61, 0xc4, 0x56,
0xdf, 0xd7, 0xa9, 0x6d, 0x58, 0x65, 0x54, 0xf4, 0x7b, 0x4c, 0xa6, 0xa3, 0x88, 0xa1, 0xc2, 0x76,
0x2e, 0x11, 0xb6, 0x5d, 0xdf, 0x7f, 0x39, 0xf6, 0x7a, 0x72, 0x6b, 0xe1, 0xd8, 0x6e, 0x09, 0xf0,
0x43, 0x3f, 0x16, 0x98, 0xbf, 0x2b, 0xca, 0xfd, 0x08, 0xe5, 0x11, 0x0d, 0xe6, 0xa0, 0xd8, 0x1f,
0xc1, 0x15, 0xc5, 0x29, 0x8b, 0xe9, 0x39, 0xcc, 0xfb, 0xf0, 0xbe, 0x62, 0xde, 0x3a, 0x63, 0x89,
0xde, 0x53, 0xb9, 0xe0, 0xff, 0xaa, 0xe7, 0x43, 0x58, 0x0b, 0xf5, 0xd4, 0x73, 0x17, 0xc4, 0x99,
0xfa, 0xd2, 0x5f, 0x10, 0x87, 0x7d, 0x33, 0x9a, 0x37, 0x1e, 0x84, 0x0f, 0x20, 0xfb, 0xb6, 0xb7,
0xe0, 0x9a, 0x92, 0x97, 0x99, 0xc1, 0x78, 0x30, 0xd7, 0xf4, 0x26, 0x10, 0x69, 0x2c, 0x26, 0x3a,
0xdf, 0xe4, 0x3a, 0x67, 0xdc, 0xac, 0x1c, 0x33, 0xa7, 0x61, 0x4a, 0xb3, 0x32, 0xce, 0x19, 0xb3,
0xce, 0x30, 0x3b, 0xc2, 0x0a, 0x1c, 0x36, 0x61, 0x85, 0x99, 0x0d, 0x7c, 0x08, 0xc5, 0x09, 0x95,
0x71, 0xa1, 0xba, 0x41, 0x1a, 0xa2, 0x8b, 0xdd, 0x78, 0x8a, 0xb4, 0xbe, 0xcf, 0x6e, 0x87, 0xc3,
0xe7, 0xed, 0x47, 0x70, 0x53, 0x61, 0x0a, 0xcb, 0x68, 0x1c, 0xe9, 0xaa, 0xa8, 0x24, 0x5f, 0x98,
0x87, 0x7d, 0xb2, 0x90, 0xae, 0x5f, 0x81, 0x4c, 0x21, 0x7d, 0x47, 0xdc, 0x91, 0xf0, 0xe6, 0x64,
0x02, 0x3b, 0x11, 0x56, 0x8b, 0x2e, 0x5c, 0xa6, 0x68, 0x83, 0xc9, 0x69, 0x80, 0x56, 0x52, 0xb1,
0x46, 0x0c, 0x94, 0xc2, 0xe1, 0x6d, 0xcc, 0xa4, 0xb0, 0x1b, 0x81, 0x71, 0xef, 0xc9, 0xaa, 0x2f,
0x3b, 0x30, 0x95, 0x76, 0x88, 0x81, 0xbd, 0x07, 0x57, 0x93, 0xb7, 0x39, 0x93, 0xca, 0x47, 0x70,
0x23, 0xed, 0xc2, 0x67, 0xc2, 0x7d, 0x12, 0x45, 0x9d, 0x77, 0x50, 0x7b, 0xe0, 0x05, 0xb2, 0x4c,
0x61, 0xe0, 0x5d, 0xf8, 0x6a, 0x18, 0x15, 0x32, 0x81, 0xf9, 0x11, 0x58, 0xf6, 0xa3, 0x8f, 0x42,
0x40, 0x61, 0x6e, 0x08, 0x90, 0xce, 0xa0, 0xc7, 0xa0, 0x77, 0x71, 0x68, 0x5a, 0x98, 0xca, 0x04,
0xf7, 0x15, 0xdc, 0x4a, 0x8f, 0x50, 0x59, 0x90, 0x7f, 0x60, 0x43, 0x25, 0xcc, 0x90, 0xb4, 0x3f,
0x0e, 0x55, 0xa1, 0xbc, 0xb7, 0x7f, 0xf0, 0xb4, 0xb9, 0x85, 0xb9, 0xd9, 0xc6, 0x3f, 0xf3, 0x90,
0xdf, 0x39, 0x22, 0x9b, 0xb0, 0x28, 0xda, 0xda, 0x73, 0x1a, 0xff, 0xd6, 0xbc, 0x06, 0xb9, 0xbd,
0x40, 0x3e, 0x87, 0x02, 0x6b, 0x6c, 0xa7, 0x76, 0xfe, 0xad, 0xf4, 0xe6, 0x38, 0x4a, 0x77, 0xa0,
0xaa, 0x75, 0xb1, 0xc9, 0x1b, 0x3b, 0xff, 0xd6, 0x9b, 0x3b, 0xe4, 0x42, 0xa7, 0xce, 0xab, 0x51,
0x52, 0xa7, 0xa8, 0xeb, 0x9a, 0xd4, 0x49, 0xeb, 0x71, 0xa2, 0xf4, 0x9e, 0xec, 0x9e, 0x77, 0x03,
0x72, 0xd3, 0xd0, 0x8c, 0xd5, 0xbb, 0x8d, 0xd6, 0xad, 0x74, 0x06, 0x85, 0xb7, 0xb1, 0x0f, 0x8b,
0xbc, 0x13, 0x43, 0xbe, 0x50, 0x1f, 0x96, 0xa1, 0x4f, 0x95, 0x62, 0xee, 0x58, 0x0f, 0xc7, 0x5e,
0xb8, 0x9f, 0xfb, 0x61, 0x6e, 0xe3, 0xdb, 0x3c, 0x2c, 0xf2, 0xca, 0x9c, 0x7c, 0x09, 0x10, 0xb5,
0x30, 0x92, 0xda, 0xce, 0x34, 0x45, 0x92, 0xda, 0xce, 0x76, 0x3f, 0xc4, 0x89, 0x68, 0xbd, 0x06,
0x62, 0x12, 0x89, 0x35, 0x2b, 0x92, 0x27, 0x62, 0x68, 0x54, 0x20, 0xaa, 0x0b, 0xf5, 0x78, 0x2f,
0x81, 0xdc, 0x36, 0x88, 0x25, 0x5b, 0x12, 0xd6, 0x9d, 0xf9, 0x4c, 0x31, 0xab, 0xfc, 0x35, 0x8f,
0xe7, 0x26, 0xfe, 0x36, 0x8d, 0x47, 0x58, 0x09, 0xcb, 0x75, 0x72, 0xc3, 0x54, 0xca, 0x45, 0xb9,
0x8e, 0x75, 0x33, 0x75, 0x3e, 0x54, 0xff, 0x19, 0xd4, 0xf4, 0xf2, 0x9a, 0x7c, 0x60, 0xac, 0x0e,
0xf5, 0x0a, 0xdd, 0xb2, 0xe7, 0xb1, 0xcc, 0x02, 0x8b, 0x32, 0xd9, 0x0c, 0x1c, 0xab, 0xc2, 0xcd,
0xc0, 0xf1, 0x2a, 0x1b, 0x81, 0xd1, 0x33, 0xa2, 0xe2, 0x98, 0x18, 0xb7, 0xa8, 0xd5, 0xd2, 0x49,
0xcf, 0x98, 0xad, 0xab, 0xd1, 0x8f, 0xff, 0x93, 0x87, 0xea, 0x13, 0xb7, 0x3f, 0x0a, 0xe8, 0x88,
0x35, 0xf3, 0x58, 0xf4, 0xe0, 0x81, 0x26, 0xe9, 0xce, 0x7a, 0x29, 0x9a, 0x74, 0xe7, 0x58, 0x9d,
0x86, 0x6a, 0xb6, 0xa1, 0x24, 0xca, 0x25, 0x92, 0x60, 0x8c, 0x95, 0x55, 0xd6, 0x7b, 0xe6, 0x49,
0x7d, 0xb7, 0x51, 0xe5, 0x9d, 0xdc, 0xed, 0x4c, 0xa1, 0x6e, 0xdd, 0x4a, 0x67, 0x08, 0x21, 0x7f,
0x06, 0x45, 0xd6, 0xb4, 0x27, 0x89, 0x50, 0xa1, 0xf5, 0xf5, 0x2d, 0xcb, 0x34, 0x15, 0x02, 0x3c,
0x81, 0x25, 0xd5, 0x87, 0x27, 0xef, 0x27, 0xf4, 0x8f, 0xf7, 0xec, 0xad, 0x1b, 0x69, 0xd3, 0x0a,
0x0c, 0xdd, 0xfb, 0xd7, 0x00, 0x45, 0xf6, 0x62, 0xb0, 0xbd, 0x46, 0x29, 0x69, 0x72, 0xaf, 0x33,
0xf5, 0x5a, 0x72, 0xaf, 0xb3, 0xd9, 0xac, 0xb8, 0xf3, 0x5a, 0x66, 0x4a, 0x0c, 0x22, 0xf1, 0x72,
0x2f, 0x79, 0xe7, 0x0d, 0x69, 0xad, 0xf0, 0x6d, 0x3d, 0x45, 0x25, 0x06, 0xa1, 0x44, 0xbd, 0x98,
0xf4, 0x6d, 0x53, 0x86, 0x8b, 0xc0, 0x4f, 0xa1, 0x2c, 0x73, 0x52, 0x93, 0xaa, 0xf1, 0xe2, 0xd1,
0xa4, 0x6a, 0x22, 0xa1, 0x8d, 0x10, 0x31, 0x3b, 0x49, 0x43, 0x8c, 0x2a, 0x9e, 0x34, 0x44, 0x2d,
0xb5, 0x41, 0xc4, 0xaf, 0x01, 0xa2, 0x3c, 0x34, 0x19, 0xec, 0x8c, 0x35, 0x67, 0x32, 0xd8, 0x99,
0x53, 0x59, 0x84, 0xfe, 0x06, 0xc8, 0x6c, 0x4a, 0x4a, 0x3e, 0x32, 0x4b, 0x1b, 0x2b, 0x55, 0xeb,
0xe3, 0xb7, 0x63, 0x0e, 0x97, 0x3c, 0x82, 0x4a, 0x98, 0xad, 0x12, 0x3b, 0x65, 0xff, 0xfa, 0x4b,
0x73, 0x7b, 0x2e, 0x4f, 0x88, 0x4b, 0xa1, 0x1e, 0x4f, 0x5b, 0xc9, 0x3d, 0xb3, 0xe0, 0x4c, 0x7d,
0x6b, 0xdd, 0x7f, 0x33, 0xa3, 0x7e, 0xbc, 0x32, 0x93, 0x35, 0x1d, 0x6f, 0xbc, 0xf4, 0x35, 0x1d,
0x6f, 0x22, 0x0d, 0x8e, 0x10, 0x53, 0x1c, 0x26, 0x5e, 0x22, 0xa7, 0x21, 0xce, 0x38, 0x4c, 0x94,
0xab, 0x9a, 0x1c, 0x66, 0xa6, 0x9a, 0x36, 0x39, 0xcc, 0x6c, 0xba, 0x2b, 0x4e, 0x2f, 0x4c, 0x5b,
0x4d, 0xa7, 0x97, 0x2c, 0xbd, 0xad, 0xdb, 0x73, 0x79, 0x42, 0xdc, 0x97, 0xb0, 0x66, 0xca, 0x5f,
0xc9, 0x27, 0x66, 0xf1, 0x94, 0x4a, 0xdc, 0x6a, 0xbc, 0x2d, 0xbb, 0x5a, 0x78, 0xb3, 0xf6, 0xc7,
0xbf, 0xdf, 0xc8, 0xfd, 0x05, 0xff, 0xfd, 0x0d, 0xff, 0x9d, 0x94, 0xf8, 0xff, 0x5f, 0xfb, 0xd1,
0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x04, 0xd6, 0x7a, 0x9e, 0x28, 0x27, 0x00, 0x00,
}

View File

@ -118,8 +118,8 @@ service Auth {
// UserGrant grants a role to a specified user.
rpc UserGrant(AuthUserGrantRequest) returns (AuthUserGrantResponse) {}
// UserRevoke revokes a role of specified user.
rpc UserRevoke(AuthUserRevokeRequest) returns (AuthUserRevokeResponse) {}
// UserRevokeRole revokes a role of specified user.
rpc UserRevokeRole(AuthUserRevokeRoleRequest) returns (AuthUserRevokeRoleResponse) {}
// RoleAdd adds a new role.
rpc RoleAdd(AuthRoleAddRequest) returns (AuthRoleAddResponse) {}
@ -133,8 +133,8 @@ service Auth {
// RoleGrant grants a permission of a specified key or range to a specified role.
rpc RoleGrant(AuthRoleGrantRequest) returns (AuthRoleGrantResponse) {}
// RoleRevoke revokes a key or range permission of a specified role.
rpc RoleRevoke(AuthRoleRevokeRequest) returns (AuthRoleRevokeResponse) {}
// RoleRevokePermission revokes a key or range permission of a specified role.
rpc RoleRevokePermission(AuthRoleRevokePermissionRequest) returns (AuthRoleRevokePermissionResponse) {}
}
message ResponseHeader {
@ -594,7 +594,7 @@ message AuthUserGrantRequest {
string role = 2;
}
message AuthUserRevokeRequest {
message AuthUserRevokeRoleRequest {
string name = 1;
string role = 2;
}
@ -619,7 +619,7 @@ message AuthRoleGrantRequest {
authpb.Permission perm = 2;
}
message AuthRoleRevokeRequest {
message AuthRoleRevokePermissionRequest {
string role = 1;
string key = 2;
}
@ -660,7 +660,7 @@ message AuthUserGrantResponse {
ResponseHeader header = 1;
}
message AuthUserRevokeResponse {
message AuthUserRevokeRoleResponse {
ResponseHeader header = 1;
}
@ -682,6 +682,6 @@ message AuthRoleGrantResponse {
ResponseHeader header = 1;
}
message AuthRoleRevokeResponse {
message AuthRoleRevokePermissionResponse {
ResponseHeader header = 1;
}

View File

@ -64,11 +64,11 @@ type Authenticator interface {
UserChangePassword(ctx context.Context, r *pb.AuthUserChangePasswordRequest) (*pb.AuthUserChangePasswordResponse, error)
UserGrant(ctx context.Context, r *pb.AuthUserGrantRequest) (*pb.AuthUserGrantResponse, error)
UserGet(ctx context.Context, r *pb.AuthUserGetRequest) (*pb.AuthUserGetResponse, error)
UserRevoke(ctx context.Context, r *pb.AuthUserRevokeRequest) (*pb.AuthUserRevokeResponse, error)
UserRevokeRole(ctx context.Context, r *pb.AuthUserRevokeRoleRequest) (*pb.AuthUserRevokeRoleResponse, error)
RoleAdd(ctx context.Context, r *pb.AuthRoleAddRequest) (*pb.AuthRoleAddResponse, error)
RoleGrant(ctx context.Context, r *pb.AuthRoleGrantRequest) (*pb.AuthRoleGrantResponse, error)
RoleGet(ctx context.Context, r *pb.AuthRoleGetRequest) (*pb.AuthRoleGetResponse, error)
RoleRevoke(ctx context.Context, r *pb.AuthRoleRevokeRequest) (*pb.AuthRoleRevokeResponse, error)
RoleRevokePermission(ctx context.Context, r *pb.AuthRoleRevokePermissionRequest) (*pb.AuthRoleRevokePermissionResponse, error)
RoleDelete(ctx context.Context, r *pb.AuthRoleDeleteRequest) (*pb.AuthRoleDeleteResponse, error)
}
@ -327,15 +327,15 @@ func (s *EtcdServer) UserGet(ctx context.Context, r *pb.AuthUserGetRequest) (*pb
return result.resp.(*pb.AuthUserGetResponse), nil
}
func (s *EtcdServer) UserRevoke(ctx context.Context, r *pb.AuthUserRevokeRequest) (*pb.AuthUserRevokeResponse, error) {
result, err := s.processInternalRaftRequest(ctx, pb.InternalRaftRequest{AuthUserRevoke: r})
func (s *EtcdServer) UserRevokeRole(ctx context.Context, r *pb.AuthUserRevokeRoleRequest) (*pb.AuthUserRevokeRoleResponse, error) {
result, err := s.processInternalRaftRequest(ctx, pb.InternalRaftRequest{AuthUserRevokeRole: r})
if err != nil {
return nil, err
}
if result.err != nil {
return nil, result.err
}
return result.resp.(*pb.AuthUserRevokeResponse), nil
return result.resp.(*pb.AuthUserRevokeRoleResponse), nil
}
func (s *EtcdServer) RoleAdd(ctx context.Context, r *pb.AuthRoleAddRequest) (*pb.AuthRoleAddResponse, error) {
@ -371,15 +371,15 @@ func (s *EtcdServer) RoleGet(ctx context.Context, r *pb.AuthRoleGetRequest) (*pb
return result.resp.(*pb.AuthRoleGetResponse), nil
}
func (s *EtcdServer) RoleRevoke(ctx context.Context, r *pb.AuthRoleRevokeRequest) (*pb.AuthRoleRevokeResponse, error) {
result, err := s.processInternalRaftRequest(ctx, pb.InternalRaftRequest{AuthRoleRevoke: r})
func (s *EtcdServer) RoleRevokePermission(ctx context.Context, r *pb.AuthRoleRevokePermissionRequest) (*pb.AuthRoleRevokePermissionResponse, error) {
result, err := s.processInternalRaftRequest(ctx, pb.InternalRaftRequest{AuthRoleRevokePermission: r})
if err != nil {
return nil, err
}
if result.err != nil {
return nil, result.err
}
return result.resp.(*pb.AuthRoleRevokeResponse), nil
return result.resp.(*pb.AuthRoleRevokePermissionResponse), nil
}
func (s *EtcdServer) RoleDelete(ctx context.Context, r *pb.AuthRoleDeleteRequest) (*pb.AuthRoleDeleteResponse, error) {