github.com/zorawar87/trillian@v1.2.1/quota/etcd/quotapb/quotapb.pb.go (about) 1 // Code generated by protoc-gen-go. DO NOT EDIT. 2 // source: quotapb.proto 3 4 package quotapb 5 6 import proto "github.com/golang/protobuf/proto" 7 import fmt "fmt" 8 import math "math" 9 import empty "github.com/golang/protobuf/ptypes/empty" 10 import _ "google.golang.org/genproto/googleapis/api/annotations" 11 import field_mask "google.golang.org/genproto/protobuf/field_mask" 12 13 import ( 14 context "golang.org/x/net/context" 15 grpc "google.golang.org/grpc" 16 ) 17 18 // Reference imports to suppress errors if they are not otherwise used. 19 var _ = proto.Marshal 20 var _ = fmt.Errorf 21 var _ = math.Inf 22 23 // This is a compile-time assertion to ensure that this generated file 24 // is compatible with the proto package it is being compiled against. 25 // A compilation error at this line likely means your copy of the 26 // proto package needs to be updated. 27 const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package 28 29 // Possible states of a quota configuration. 30 type Config_State int32 31 32 const ( 33 // Unknown quota state. Invalid. 34 Config_UNKNOWN_CONFIG_STATE Config_State = 0 35 // Quota is enabled. 36 Config_ENABLED Config_State = 1 37 // Quota is disabled (considered infinite). 38 Config_DISABLED Config_State = 2 39 ) 40 41 var Config_State_name = map[int32]string{ 42 0: "UNKNOWN_CONFIG_STATE", 43 1: "ENABLED", 44 2: "DISABLED", 45 } 46 var Config_State_value = map[string]int32{ 47 "UNKNOWN_CONFIG_STATE": 0, 48 "ENABLED": 1, 49 "DISABLED": 2, 50 } 51 52 func (x Config_State) String() string { 53 return proto.EnumName(Config_State_name, int32(x)) 54 } 55 func (Config_State) EnumDescriptor() ([]byte, []int) { 56 return fileDescriptor_quotapb_e21da34a69faec1d, []int{0, 0} 57 } 58 59 // Possible views for ListConfig. 60 type ListConfigsRequest_ListView int32 61 62 const ( 63 // Only the Config name gets returned. 64 ListConfigsRequest_BASIC ListConfigsRequest_ListView = 0 65 // Complete Config. 66 ListConfigsRequest_FULL ListConfigsRequest_ListView = 1 67 ) 68 69 var ListConfigsRequest_ListView_name = map[int32]string{ 70 0: "BASIC", 71 1: "FULL", 72 } 73 var ListConfigsRequest_ListView_value = map[string]int32{ 74 "BASIC": 0, 75 "FULL": 1, 76 } 77 78 func (x ListConfigsRequest_ListView) String() string { 79 return proto.EnumName(ListConfigsRequest_ListView_name, int32(x)) 80 } 81 func (ListConfigsRequest_ListView) EnumDescriptor() ([]byte, []int) { 82 return fileDescriptor_quotapb_e21da34a69faec1d, []int{6, 0} 83 } 84 85 // Configuration of a quota. 86 // 87 // Quotas contain a certain number of tokens that get applied to their 88 // corresponding entities. Global quotas apply to all operations, tree and user 89 // quotas to certain trees and users, respectively. 90 // 91 // Performing an operation costs a certain number of tokens (usually one). Once 92 // a quota has no more tokens available, requests that would subtract from it 93 // are denied with a resource_exhausted error. 94 // 95 // Tokens may be replenished in two different ways: either by passage of time or 96 // sequencing progress. Time-based replenishment adds a fixed amount of tokens 97 // after a certain interval. Sequencing-based adds a token for each leaf 98 // processed by the sequencer. Sequencing-based replenishment may only be used 99 // with global and tree quotas. 100 // 101 // A quota may be disabled or removed at any time. The effect is the same: a 102 // disabled or non-existing quota is considered infinite by the quota system. 103 // (Disabling is handy if you plan to re-enable a quota later on.) 104 type Config struct { 105 // Name of the config, eg, “quotas/trees/1234/read/config”. 106 // Readonly. 107 Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` 108 // State of the config. 109 State Config_State `protobuf:"varint,2,opt,name=state,enum=quotapb.Config_State" json:"state,omitempty"` 110 // Max number of tokens available for the config. 111 MaxTokens int64 `protobuf:"varint,3,opt,name=max_tokens,json=maxTokens" json:"max_tokens,omitempty"` 112 // Replenishment strategy used by the config. 113 // 114 // Types that are valid to be assigned to ReplenishmentStrategy: 115 // *Config_SequencingBased 116 // *Config_TimeBased 117 ReplenishmentStrategy isConfig_ReplenishmentStrategy `protobuf_oneof:"replenishment_strategy"` 118 // Current number of tokens available for the config. 119 // May be higher than max_tokens for DISABLED configs, which are considered to 120 // have "infinite" tokens. 121 // Readonly. 122 CurrentTokens int64 `protobuf:"varint,6,opt,name=current_tokens,json=currentTokens" json:"current_tokens,omitempty"` 123 XXX_NoUnkeyedLiteral struct{} `json:"-"` 124 XXX_unrecognized []byte `json:"-"` 125 XXX_sizecache int32 `json:"-"` 126 } 127 128 func (m *Config) Reset() { *m = Config{} } 129 func (m *Config) String() string { return proto.CompactTextString(m) } 130 func (*Config) ProtoMessage() {} 131 func (*Config) Descriptor() ([]byte, []int) { 132 return fileDescriptor_quotapb_e21da34a69faec1d, []int{0} 133 } 134 func (m *Config) XXX_Unmarshal(b []byte) error { 135 return xxx_messageInfo_Config.Unmarshal(m, b) 136 } 137 func (m *Config) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 138 return xxx_messageInfo_Config.Marshal(b, m, deterministic) 139 } 140 func (dst *Config) XXX_Merge(src proto.Message) { 141 xxx_messageInfo_Config.Merge(dst, src) 142 } 143 func (m *Config) XXX_Size() int { 144 return xxx_messageInfo_Config.Size(m) 145 } 146 func (m *Config) XXX_DiscardUnknown() { 147 xxx_messageInfo_Config.DiscardUnknown(m) 148 } 149 150 var xxx_messageInfo_Config proto.InternalMessageInfo 151 152 type isConfig_ReplenishmentStrategy interface { 153 isConfig_ReplenishmentStrategy() 154 } 155 156 type Config_SequencingBased struct { 157 SequencingBased *SequencingBasedStrategy `protobuf:"bytes,4,opt,name=sequencing_based,json=sequencingBased,oneof"` 158 } 159 type Config_TimeBased struct { 160 TimeBased *TimeBasedStrategy `protobuf:"bytes,5,opt,name=time_based,json=timeBased,oneof"` 161 } 162 163 func (*Config_SequencingBased) isConfig_ReplenishmentStrategy() {} 164 func (*Config_TimeBased) isConfig_ReplenishmentStrategy() {} 165 166 func (m *Config) GetReplenishmentStrategy() isConfig_ReplenishmentStrategy { 167 if m != nil { 168 return m.ReplenishmentStrategy 169 } 170 return nil 171 } 172 173 func (m *Config) GetName() string { 174 if m != nil { 175 return m.Name 176 } 177 return "" 178 } 179 180 func (m *Config) GetState() Config_State { 181 if m != nil { 182 return m.State 183 } 184 return Config_UNKNOWN_CONFIG_STATE 185 } 186 187 func (m *Config) GetMaxTokens() int64 { 188 if m != nil { 189 return m.MaxTokens 190 } 191 return 0 192 } 193 194 func (m *Config) GetSequencingBased() *SequencingBasedStrategy { 195 if x, ok := m.GetReplenishmentStrategy().(*Config_SequencingBased); ok { 196 return x.SequencingBased 197 } 198 return nil 199 } 200 201 func (m *Config) GetTimeBased() *TimeBasedStrategy { 202 if x, ok := m.GetReplenishmentStrategy().(*Config_TimeBased); ok { 203 return x.TimeBased 204 } 205 return nil 206 } 207 208 func (m *Config) GetCurrentTokens() int64 { 209 if m != nil { 210 return m.CurrentTokens 211 } 212 return 0 213 } 214 215 // XXX_OneofFuncs is for the internal use of the proto package. 216 func (*Config) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { 217 return _Config_OneofMarshaler, _Config_OneofUnmarshaler, _Config_OneofSizer, []interface{}{ 218 (*Config_SequencingBased)(nil), 219 (*Config_TimeBased)(nil), 220 } 221 } 222 223 func _Config_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { 224 m := msg.(*Config) 225 // replenishment_strategy 226 switch x := m.ReplenishmentStrategy.(type) { 227 case *Config_SequencingBased: 228 b.EncodeVarint(4<<3 | proto.WireBytes) 229 if err := b.EncodeMessage(x.SequencingBased); err != nil { 230 return err 231 } 232 case *Config_TimeBased: 233 b.EncodeVarint(5<<3 | proto.WireBytes) 234 if err := b.EncodeMessage(x.TimeBased); err != nil { 235 return err 236 } 237 case nil: 238 default: 239 return fmt.Errorf("Config.ReplenishmentStrategy has unexpected type %T", x) 240 } 241 return nil 242 } 243 244 func _Config_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { 245 m := msg.(*Config) 246 switch tag { 247 case 4: // replenishment_strategy.sequencing_based 248 if wire != proto.WireBytes { 249 return true, proto.ErrInternalBadWireType 250 } 251 msg := new(SequencingBasedStrategy) 252 err := b.DecodeMessage(msg) 253 m.ReplenishmentStrategy = &Config_SequencingBased{msg} 254 return true, err 255 case 5: // replenishment_strategy.time_based 256 if wire != proto.WireBytes { 257 return true, proto.ErrInternalBadWireType 258 } 259 msg := new(TimeBasedStrategy) 260 err := b.DecodeMessage(msg) 261 m.ReplenishmentStrategy = &Config_TimeBased{msg} 262 return true, err 263 default: 264 return false, nil 265 } 266 } 267 268 func _Config_OneofSizer(msg proto.Message) (n int) { 269 m := msg.(*Config) 270 // replenishment_strategy 271 switch x := m.ReplenishmentStrategy.(type) { 272 case *Config_SequencingBased: 273 s := proto.Size(x.SequencingBased) 274 n += 1 // tag and wire 275 n += proto.SizeVarint(uint64(s)) 276 n += s 277 case *Config_TimeBased: 278 s := proto.Size(x.TimeBased) 279 n += 1 // tag and wire 280 n += proto.SizeVarint(uint64(s)) 281 n += s 282 case nil: 283 default: 284 panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) 285 } 286 return n 287 } 288 289 // Sequencing-based replenishment strategy settings. 290 // 291 // Only global/write and trees/write quotas may use sequencing-based 292 // replenishment. 293 type SequencingBasedStrategy struct { 294 XXX_NoUnkeyedLiteral struct{} `json:"-"` 295 XXX_unrecognized []byte `json:"-"` 296 XXX_sizecache int32 `json:"-"` 297 } 298 299 func (m *SequencingBasedStrategy) Reset() { *m = SequencingBasedStrategy{} } 300 func (m *SequencingBasedStrategy) String() string { return proto.CompactTextString(m) } 301 func (*SequencingBasedStrategy) ProtoMessage() {} 302 func (*SequencingBasedStrategy) Descriptor() ([]byte, []int) { 303 return fileDescriptor_quotapb_e21da34a69faec1d, []int{1} 304 } 305 func (m *SequencingBasedStrategy) XXX_Unmarshal(b []byte) error { 306 return xxx_messageInfo_SequencingBasedStrategy.Unmarshal(m, b) 307 } 308 func (m *SequencingBasedStrategy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 309 return xxx_messageInfo_SequencingBasedStrategy.Marshal(b, m, deterministic) 310 } 311 func (dst *SequencingBasedStrategy) XXX_Merge(src proto.Message) { 312 xxx_messageInfo_SequencingBasedStrategy.Merge(dst, src) 313 } 314 func (m *SequencingBasedStrategy) XXX_Size() int { 315 return xxx_messageInfo_SequencingBasedStrategy.Size(m) 316 } 317 func (m *SequencingBasedStrategy) XXX_DiscardUnknown() { 318 xxx_messageInfo_SequencingBasedStrategy.DiscardUnknown(m) 319 } 320 321 var xxx_messageInfo_SequencingBasedStrategy proto.InternalMessageInfo 322 323 // Time-based replenishment strategy settings. 324 type TimeBasedStrategy struct { 325 // Number of tokens to replenish at every replenish_interval_seconds. 326 TokensToReplenish int64 `protobuf:"varint,1,opt,name=tokens_to_replenish,json=tokensToReplenish" json:"tokens_to_replenish,omitempty"` 327 // Interval at which tokens_to_replenish get replenished. 328 ReplenishIntervalSeconds int64 `protobuf:"varint,2,opt,name=replenish_interval_seconds,json=replenishIntervalSeconds" json:"replenish_interval_seconds,omitempty"` 329 XXX_NoUnkeyedLiteral struct{} `json:"-"` 330 XXX_unrecognized []byte `json:"-"` 331 XXX_sizecache int32 `json:"-"` 332 } 333 334 func (m *TimeBasedStrategy) Reset() { *m = TimeBasedStrategy{} } 335 func (m *TimeBasedStrategy) String() string { return proto.CompactTextString(m) } 336 func (*TimeBasedStrategy) ProtoMessage() {} 337 func (*TimeBasedStrategy) Descriptor() ([]byte, []int) { 338 return fileDescriptor_quotapb_e21da34a69faec1d, []int{2} 339 } 340 func (m *TimeBasedStrategy) XXX_Unmarshal(b []byte) error { 341 return xxx_messageInfo_TimeBasedStrategy.Unmarshal(m, b) 342 } 343 func (m *TimeBasedStrategy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 344 return xxx_messageInfo_TimeBasedStrategy.Marshal(b, m, deterministic) 345 } 346 func (dst *TimeBasedStrategy) XXX_Merge(src proto.Message) { 347 xxx_messageInfo_TimeBasedStrategy.Merge(dst, src) 348 } 349 func (m *TimeBasedStrategy) XXX_Size() int { 350 return xxx_messageInfo_TimeBasedStrategy.Size(m) 351 } 352 func (m *TimeBasedStrategy) XXX_DiscardUnknown() { 353 xxx_messageInfo_TimeBasedStrategy.DiscardUnknown(m) 354 } 355 356 var xxx_messageInfo_TimeBasedStrategy proto.InternalMessageInfo 357 358 func (m *TimeBasedStrategy) GetTokensToReplenish() int64 { 359 if m != nil { 360 return m.TokensToReplenish 361 } 362 return 0 363 } 364 365 func (m *TimeBasedStrategy) GetReplenishIntervalSeconds() int64 { 366 if m != nil { 367 return m.ReplenishIntervalSeconds 368 } 369 return 0 370 } 371 372 // CreateConfig request. 373 type CreateConfigRequest struct { 374 // Name of the config to create. 375 // For example, "quotas/global/read/config" (global/read quota) or 376 // "quotas/trees/1234/write/config" (write quota for tree 1234). 377 Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` 378 // Config to be created. 379 Config *Config `protobuf:"bytes,2,opt,name=config" json:"config,omitempty"` 380 XXX_NoUnkeyedLiteral struct{} `json:"-"` 381 XXX_unrecognized []byte `json:"-"` 382 XXX_sizecache int32 `json:"-"` 383 } 384 385 func (m *CreateConfigRequest) Reset() { *m = CreateConfigRequest{} } 386 func (m *CreateConfigRequest) String() string { return proto.CompactTextString(m) } 387 func (*CreateConfigRequest) ProtoMessage() {} 388 func (*CreateConfigRequest) Descriptor() ([]byte, []int) { 389 return fileDescriptor_quotapb_e21da34a69faec1d, []int{3} 390 } 391 func (m *CreateConfigRequest) XXX_Unmarshal(b []byte) error { 392 return xxx_messageInfo_CreateConfigRequest.Unmarshal(m, b) 393 } 394 func (m *CreateConfigRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 395 return xxx_messageInfo_CreateConfigRequest.Marshal(b, m, deterministic) 396 } 397 func (dst *CreateConfigRequest) XXX_Merge(src proto.Message) { 398 xxx_messageInfo_CreateConfigRequest.Merge(dst, src) 399 } 400 func (m *CreateConfigRequest) XXX_Size() int { 401 return xxx_messageInfo_CreateConfigRequest.Size(m) 402 } 403 func (m *CreateConfigRequest) XXX_DiscardUnknown() { 404 xxx_messageInfo_CreateConfigRequest.DiscardUnknown(m) 405 } 406 407 var xxx_messageInfo_CreateConfigRequest proto.InternalMessageInfo 408 409 func (m *CreateConfigRequest) GetName() string { 410 if m != nil { 411 return m.Name 412 } 413 return "" 414 } 415 416 func (m *CreateConfigRequest) GetConfig() *Config { 417 if m != nil { 418 return m.Config 419 } 420 return nil 421 } 422 423 // DeleteConfig request. 424 type DeleteConfigRequest struct { 425 // Name of the config to delete. 426 Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` 427 XXX_NoUnkeyedLiteral struct{} `json:"-"` 428 XXX_unrecognized []byte `json:"-"` 429 XXX_sizecache int32 `json:"-"` 430 } 431 432 func (m *DeleteConfigRequest) Reset() { *m = DeleteConfigRequest{} } 433 func (m *DeleteConfigRequest) String() string { return proto.CompactTextString(m) } 434 func (*DeleteConfigRequest) ProtoMessage() {} 435 func (*DeleteConfigRequest) Descriptor() ([]byte, []int) { 436 return fileDescriptor_quotapb_e21da34a69faec1d, []int{4} 437 } 438 func (m *DeleteConfigRequest) XXX_Unmarshal(b []byte) error { 439 return xxx_messageInfo_DeleteConfigRequest.Unmarshal(m, b) 440 } 441 func (m *DeleteConfigRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 442 return xxx_messageInfo_DeleteConfigRequest.Marshal(b, m, deterministic) 443 } 444 func (dst *DeleteConfigRequest) XXX_Merge(src proto.Message) { 445 xxx_messageInfo_DeleteConfigRequest.Merge(dst, src) 446 } 447 func (m *DeleteConfigRequest) XXX_Size() int { 448 return xxx_messageInfo_DeleteConfigRequest.Size(m) 449 } 450 func (m *DeleteConfigRequest) XXX_DiscardUnknown() { 451 xxx_messageInfo_DeleteConfigRequest.DiscardUnknown(m) 452 } 453 454 var xxx_messageInfo_DeleteConfigRequest proto.InternalMessageInfo 455 456 func (m *DeleteConfigRequest) GetName() string { 457 if m != nil { 458 return m.Name 459 } 460 return "" 461 } 462 463 // GetConfig request. 464 type GetConfigRequest struct { 465 // Name of the config to retrieve. 466 // For example, "quotas/global/read/config". 467 Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` 468 XXX_NoUnkeyedLiteral struct{} `json:"-"` 469 XXX_unrecognized []byte `json:"-"` 470 XXX_sizecache int32 `json:"-"` 471 } 472 473 func (m *GetConfigRequest) Reset() { *m = GetConfigRequest{} } 474 func (m *GetConfigRequest) String() string { return proto.CompactTextString(m) } 475 func (*GetConfigRequest) ProtoMessage() {} 476 func (*GetConfigRequest) Descriptor() ([]byte, []int) { 477 return fileDescriptor_quotapb_e21da34a69faec1d, []int{5} 478 } 479 func (m *GetConfigRequest) XXX_Unmarshal(b []byte) error { 480 return xxx_messageInfo_GetConfigRequest.Unmarshal(m, b) 481 } 482 func (m *GetConfigRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 483 return xxx_messageInfo_GetConfigRequest.Marshal(b, m, deterministic) 484 } 485 func (dst *GetConfigRequest) XXX_Merge(src proto.Message) { 486 xxx_messageInfo_GetConfigRequest.Merge(dst, src) 487 } 488 func (m *GetConfigRequest) XXX_Size() int { 489 return xxx_messageInfo_GetConfigRequest.Size(m) 490 } 491 func (m *GetConfigRequest) XXX_DiscardUnknown() { 492 xxx_messageInfo_GetConfigRequest.DiscardUnknown(m) 493 } 494 495 var xxx_messageInfo_GetConfigRequest proto.InternalMessageInfo 496 497 func (m *GetConfigRequest) GetName() string { 498 if m != nil { 499 return m.Name 500 } 501 return "" 502 } 503 504 // ListConfig request. 505 type ListConfigsRequest struct { 506 // Names of the config to retrieve. For example, "quotas/global/read/config". 507 // If empty, all configs are listed. 508 // Name components may be substituted by "-" to search for all variations of 509 // that component. For example: 510 // - "quotas/global/-/config" (both read and write global quotas) 511 // - "quotas/trees/-/-/config" (all tree quotas) 512 Names []string `protobuf:"bytes,1,rep,name=names" json:"names,omitempty"` 513 // View specifies how much data to return. 514 View ListConfigsRequest_ListView `protobuf:"varint,2,opt,name=view,enum=quotapb.ListConfigsRequest_ListView" json:"view,omitempty"` 515 XXX_NoUnkeyedLiteral struct{} `json:"-"` 516 XXX_unrecognized []byte `json:"-"` 517 XXX_sizecache int32 `json:"-"` 518 } 519 520 func (m *ListConfigsRequest) Reset() { *m = ListConfigsRequest{} } 521 func (m *ListConfigsRequest) String() string { return proto.CompactTextString(m) } 522 func (*ListConfigsRequest) ProtoMessage() {} 523 func (*ListConfigsRequest) Descriptor() ([]byte, []int) { 524 return fileDescriptor_quotapb_e21da34a69faec1d, []int{6} 525 } 526 func (m *ListConfigsRequest) XXX_Unmarshal(b []byte) error { 527 return xxx_messageInfo_ListConfigsRequest.Unmarshal(m, b) 528 } 529 func (m *ListConfigsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 530 return xxx_messageInfo_ListConfigsRequest.Marshal(b, m, deterministic) 531 } 532 func (dst *ListConfigsRequest) XXX_Merge(src proto.Message) { 533 xxx_messageInfo_ListConfigsRequest.Merge(dst, src) 534 } 535 func (m *ListConfigsRequest) XXX_Size() int { 536 return xxx_messageInfo_ListConfigsRequest.Size(m) 537 } 538 func (m *ListConfigsRequest) XXX_DiscardUnknown() { 539 xxx_messageInfo_ListConfigsRequest.DiscardUnknown(m) 540 } 541 542 var xxx_messageInfo_ListConfigsRequest proto.InternalMessageInfo 543 544 func (m *ListConfigsRequest) GetNames() []string { 545 if m != nil { 546 return m.Names 547 } 548 return nil 549 } 550 551 func (m *ListConfigsRequest) GetView() ListConfigsRequest_ListView { 552 if m != nil { 553 return m.View 554 } 555 return ListConfigsRequest_BASIC 556 } 557 558 // ListConfig response. 559 type ListConfigsResponse struct { 560 // Configs matching the request filter. 561 Configs []*Config `protobuf:"bytes,1,rep,name=configs" json:"configs,omitempty"` 562 XXX_NoUnkeyedLiteral struct{} `json:"-"` 563 XXX_unrecognized []byte `json:"-"` 564 XXX_sizecache int32 `json:"-"` 565 } 566 567 func (m *ListConfigsResponse) Reset() { *m = ListConfigsResponse{} } 568 func (m *ListConfigsResponse) String() string { return proto.CompactTextString(m) } 569 func (*ListConfigsResponse) ProtoMessage() {} 570 func (*ListConfigsResponse) Descriptor() ([]byte, []int) { 571 return fileDescriptor_quotapb_e21da34a69faec1d, []int{7} 572 } 573 func (m *ListConfigsResponse) XXX_Unmarshal(b []byte) error { 574 return xxx_messageInfo_ListConfigsResponse.Unmarshal(m, b) 575 } 576 func (m *ListConfigsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 577 return xxx_messageInfo_ListConfigsResponse.Marshal(b, m, deterministic) 578 } 579 func (dst *ListConfigsResponse) XXX_Merge(src proto.Message) { 580 xxx_messageInfo_ListConfigsResponse.Merge(dst, src) 581 } 582 func (m *ListConfigsResponse) XXX_Size() int { 583 return xxx_messageInfo_ListConfigsResponse.Size(m) 584 } 585 func (m *ListConfigsResponse) XXX_DiscardUnknown() { 586 xxx_messageInfo_ListConfigsResponse.DiscardUnknown(m) 587 } 588 589 var xxx_messageInfo_ListConfigsResponse proto.InternalMessageInfo 590 591 func (m *ListConfigsResponse) GetConfigs() []*Config { 592 if m != nil { 593 return m.Configs 594 } 595 return nil 596 } 597 598 // Updates a quota config according to the update_mask provided. 599 // 600 // Some config changes will cause the current number of tokens to be updated, as 601 // listed below: 602 // 603 // * If max_tokens is reduced and the current number of tokens is greater than 604 // the new max_tokens, the current number of tokens is reduced to max_tokens. 605 // This happens so the quota is immediately conformant to the new 606 // configuration. 607 // 608 // * A state transition from disabled to enabled causes the quota to be fully 609 // replenished. This happens so the re-enabled quota will enter in action in a 610 // known, predictable state. 611 // 612 // A "full replenish", also called "reset", may be forced via the reset_quota 613 // parameter, regardless of any other changes. For convenience, reset only 614 // requests (name and reset_quota = true) are allowed. 615 type UpdateConfigRequest struct { 616 // Name of the config to update. 617 Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` 618 // Config to update. Only the fields specified by update_mask need to be 619 // filled. 620 Config *Config `protobuf:"bytes,2,opt,name=config" json:"config,omitempty"` 621 // Fields modified by the update request. 622 // For example: "state" or "max_tokens". 623 UpdateMask *field_mask.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` 624 // If true the updated quota is reset, regardless of the update's contents. 625 // A reset quota is replenished to its maximum number of tokens. 626 ResetQuota bool `protobuf:"varint,4,opt,name=reset_quota,json=resetQuota" json:"reset_quota,omitempty"` 627 XXX_NoUnkeyedLiteral struct{} `json:"-"` 628 XXX_unrecognized []byte `json:"-"` 629 XXX_sizecache int32 `json:"-"` 630 } 631 632 func (m *UpdateConfigRequest) Reset() { *m = UpdateConfigRequest{} } 633 func (m *UpdateConfigRequest) String() string { return proto.CompactTextString(m) } 634 func (*UpdateConfigRequest) ProtoMessage() {} 635 func (*UpdateConfigRequest) Descriptor() ([]byte, []int) { 636 return fileDescriptor_quotapb_e21da34a69faec1d, []int{8} 637 } 638 func (m *UpdateConfigRequest) XXX_Unmarshal(b []byte) error { 639 return xxx_messageInfo_UpdateConfigRequest.Unmarshal(m, b) 640 } 641 func (m *UpdateConfigRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 642 return xxx_messageInfo_UpdateConfigRequest.Marshal(b, m, deterministic) 643 } 644 func (dst *UpdateConfigRequest) XXX_Merge(src proto.Message) { 645 xxx_messageInfo_UpdateConfigRequest.Merge(dst, src) 646 } 647 func (m *UpdateConfigRequest) XXX_Size() int { 648 return xxx_messageInfo_UpdateConfigRequest.Size(m) 649 } 650 func (m *UpdateConfigRequest) XXX_DiscardUnknown() { 651 xxx_messageInfo_UpdateConfigRequest.DiscardUnknown(m) 652 } 653 654 var xxx_messageInfo_UpdateConfigRequest proto.InternalMessageInfo 655 656 func (m *UpdateConfigRequest) GetName() string { 657 if m != nil { 658 return m.Name 659 } 660 return "" 661 } 662 663 func (m *UpdateConfigRequest) GetConfig() *Config { 664 if m != nil { 665 return m.Config 666 } 667 return nil 668 } 669 670 func (m *UpdateConfigRequest) GetUpdateMask() *field_mask.FieldMask { 671 if m != nil { 672 return m.UpdateMask 673 } 674 return nil 675 } 676 677 func (m *UpdateConfigRequest) GetResetQuota() bool { 678 if m != nil { 679 return m.ResetQuota 680 } 681 return false 682 } 683 684 func init() { 685 proto.RegisterType((*Config)(nil), "quotapb.Config") 686 proto.RegisterType((*SequencingBasedStrategy)(nil), "quotapb.SequencingBasedStrategy") 687 proto.RegisterType((*TimeBasedStrategy)(nil), "quotapb.TimeBasedStrategy") 688 proto.RegisterType((*CreateConfigRequest)(nil), "quotapb.CreateConfigRequest") 689 proto.RegisterType((*DeleteConfigRequest)(nil), "quotapb.DeleteConfigRequest") 690 proto.RegisterType((*GetConfigRequest)(nil), "quotapb.GetConfigRequest") 691 proto.RegisterType((*ListConfigsRequest)(nil), "quotapb.ListConfigsRequest") 692 proto.RegisterType((*ListConfigsResponse)(nil), "quotapb.ListConfigsResponse") 693 proto.RegisterType((*UpdateConfigRequest)(nil), "quotapb.UpdateConfigRequest") 694 proto.RegisterEnum("quotapb.Config_State", Config_State_name, Config_State_value) 695 proto.RegisterEnum("quotapb.ListConfigsRequest_ListView", ListConfigsRequest_ListView_name, ListConfigsRequest_ListView_value) 696 } 697 698 // Reference imports to suppress errors if they are not otherwise used. 699 var _ context.Context 700 var _ grpc.ClientConn 701 702 // This is a compile-time assertion to ensure that this generated file 703 // is compatible with the grpc package it is being compiled against. 704 const _ = grpc.SupportPackageIsVersion4 705 706 // QuotaClient is the client API for Quota service. 707 // 708 // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. 709 type QuotaClient interface { 710 // Creates a new quota. 711 CreateConfig(ctx context.Context, in *CreateConfigRequest, opts ...grpc.CallOption) (*Config, error) 712 // Deletes an existing quota. Non-existing quotas are considered infinite by 713 // the quota system. 714 DeleteConfig(ctx context.Context, in *DeleteConfigRequest, opts ...grpc.CallOption) (*empty.Empty, error) 715 // Retrieves a quota by name. 716 GetConfig(ctx context.Context, in *GetConfigRequest, opts ...grpc.CallOption) (*Config, error) 717 // Lists quotas according to the specified criteria. 718 ListConfigs(ctx context.Context, in *ListConfigsRequest, opts ...grpc.CallOption) (*ListConfigsResponse, error) 719 // Updates a quota. 720 UpdateConfig(ctx context.Context, in *UpdateConfigRequest, opts ...grpc.CallOption) (*Config, error) 721 } 722 723 type quotaClient struct { 724 cc *grpc.ClientConn 725 } 726 727 func NewQuotaClient(cc *grpc.ClientConn) QuotaClient { 728 return "aClient{cc} 729 } 730 731 func (c *quotaClient) CreateConfig(ctx context.Context, in *CreateConfigRequest, opts ...grpc.CallOption) (*Config, error) { 732 out := new(Config) 733 err := c.cc.Invoke(ctx, "/quotapb.Quota/CreateConfig", in, out, opts...) 734 if err != nil { 735 return nil, err 736 } 737 return out, nil 738 } 739 740 func (c *quotaClient) DeleteConfig(ctx context.Context, in *DeleteConfigRequest, opts ...grpc.CallOption) (*empty.Empty, error) { 741 out := new(empty.Empty) 742 err := c.cc.Invoke(ctx, "/quotapb.Quota/DeleteConfig", in, out, opts...) 743 if err != nil { 744 return nil, err 745 } 746 return out, nil 747 } 748 749 func (c *quotaClient) GetConfig(ctx context.Context, in *GetConfigRequest, opts ...grpc.CallOption) (*Config, error) { 750 out := new(Config) 751 err := c.cc.Invoke(ctx, "/quotapb.Quota/GetConfig", in, out, opts...) 752 if err != nil { 753 return nil, err 754 } 755 return out, nil 756 } 757 758 func (c *quotaClient) ListConfigs(ctx context.Context, in *ListConfigsRequest, opts ...grpc.CallOption) (*ListConfigsResponse, error) { 759 out := new(ListConfigsResponse) 760 err := c.cc.Invoke(ctx, "/quotapb.Quota/ListConfigs", in, out, opts...) 761 if err != nil { 762 return nil, err 763 } 764 return out, nil 765 } 766 767 func (c *quotaClient) UpdateConfig(ctx context.Context, in *UpdateConfigRequest, opts ...grpc.CallOption) (*Config, error) { 768 out := new(Config) 769 err := c.cc.Invoke(ctx, "/quotapb.Quota/UpdateConfig", in, out, opts...) 770 if err != nil { 771 return nil, err 772 } 773 return out, nil 774 } 775 776 // Server API for Quota service 777 778 type QuotaServer interface { 779 // Creates a new quota. 780 CreateConfig(context.Context, *CreateConfigRequest) (*Config, error) 781 // Deletes an existing quota. Non-existing quotas are considered infinite by 782 // the quota system. 783 DeleteConfig(context.Context, *DeleteConfigRequest) (*empty.Empty, error) 784 // Retrieves a quota by name. 785 GetConfig(context.Context, *GetConfigRequest) (*Config, error) 786 // Lists quotas according to the specified criteria. 787 ListConfigs(context.Context, *ListConfigsRequest) (*ListConfigsResponse, error) 788 // Updates a quota. 789 UpdateConfig(context.Context, *UpdateConfigRequest) (*Config, error) 790 } 791 792 func RegisterQuotaServer(s *grpc.Server, srv QuotaServer) { 793 s.RegisterService(&_Quota_serviceDesc, srv) 794 } 795 796 func _Quota_CreateConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 797 in := new(CreateConfigRequest) 798 if err := dec(in); err != nil { 799 return nil, err 800 } 801 if interceptor == nil { 802 return srv.(QuotaServer).CreateConfig(ctx, in) 803 } 804 info := &grpc.UnaryServerInfo{ 805 Server: srv, 806 FullMethod: "/quotapb.Quota/CreateConfig", 807 } 808 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 809 return srv.(QuotaServer).CreateConfig(ctx, req.(*CreateConfigRequest)) 810 } 811 return interceptor(ctx, in, info, handler) 812 } 813 814 func _Quota_DeleteConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 815 in := new(DeleteConfigRequest) 816 if err := dec(in); err != nil { 817 return nil, err 818 } 819 if interceptor == nil { 820 return srv.(QuotaServer).DeleteConfig(ctx, in) 821 } 822 info := &grpc.UnaryServerInfo{ 823 Server: srv, 824 FullMethod: "/quotapb.Quota/DeleteConfig", 825 } 826 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 827 return srv.(QuotaServer).DeleteConfig(ctx, req.(*DeleteConfigRequest)) 828 } 829 return interceptor(ctx, in, info, handler) 830 } 831 832 func _Quota_GetConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 833 in := new(GetConfigRequest) 834 if err := dec(in); err != nil { 835 return nil, err 836 } 837 if interceptor == nil { 838 return srv.(QuotaServer).GetConfig(ctx, in) 839 } 840 info := &grpc.UnaryServerInfo{ 841 Server: srv, 842 FullMethod: "/quotapb.Quota/GetConfig", 843 } 844 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 845 return srv.(QuotaServer).GetConfig(ctx, req.(*GetConfigRequest)) 846 } 847 return interceptor(ctx, in, info, handler) 848 } 849 850 func _Quota_ListConfigs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 851 in := new(ListConfigsRequest) 852 if err := dec(in); err != nil { 853 return nil, err 854 } 855 if interceptor == nil { 856 return srv.(QuotaServer).ListConfigs(ctx, in) 857 } 858 info := &grpc.UnaryServerInfo{ 859 Server: srv, 860 FullMethod: "/quotapb.Quota/ListConfigs", 861 } 862 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 863 return srv.(QuotaServer).ListConfigs(ctx, req.(*ListConfigsRequest)) 864 } 865 return interceptor(ctx, in, info, handler) 866 } 867 868 func _Quota_UpdateConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 869 in := new(UpdateConfigRequest) 870 if err := dec(in); err != nil { 871 return nil, err 872 } 873 if interceptor == nil { 874 return srv.(QuotaServer).UpdateConfig(ctx, in) 875 } 876 info := &grpc.UnaryServerInfo{ 877 Server: srv, 878 FullMethod: "/quotapb.Quota/UpdateConfig", 879 } 880 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 881 return srv.(QuotaServer).UpdateConfig(ctx, req.(*UpdateConfigRequest)) 882 } 883 return interceptor(ctx, in, info, handler) 884 } 885 886 var _Quota_serviceDesc = grpc.ServiceDesc{ 887 ServiceName: "quotapb.Quota", 888 HandlerType: (*QuotaServer)(nil), 889 Methods: []grpc.MethodDesc{ 890 { 891 MethodName: "CreateConfig", 892 Handler: _Quota_CreateConfig_Handler, 893 }, 894 { 895 MethodName: "DeleteConfig", 896 Handler: _Quota_DeleteConfig_Handler, 897 }, 898 { 899 MethodName: "GetConfig", 900 Handler: _Quota_GetConfig_Handler, 901 }, 902 { 903 MethodName: "ListConfigs", 904 Handler: _Quota_ListConfigs_Handler, 905 }, 906 { 907 MethodName: "UpdateConfig", 908 Handler: _Quota_UpdateConfig_Handler, 909 }, 910 }, 911 Streams: []grpc.StreamDesc{}, 912 Metadata: "quotapb.proto", 913 } 914 915 func init() { proto.RegisterFile("quotapb.proto", fileDescriptor_quotapb_e21da34a69faec1d) } 916 917 var fileDescriptor_quotapb_e21da34a69faec1d = []byte{ 918 // 759 bytes of a gzipped FileDescriptorProto 919 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x54, 0xdd, 0x4e, 0x13, 0x41, 920 0x18, 0x65, 0xfb, 0x47, 0xfb, 0x95, 0x9f, 0x32, 0x45, 0x58, 0x0a, 0x86, 0xcd, 0x46, 0xb4, 0x94, 921 0xa4, 0x0d, 0xf5, 0xc6, 0x08, 0x26, 0xd2, 0x52, 0xb0, 0xb1, 0x94, 0xb8, 0x2d, 0x7a, 0xb9, 0x99, 922 0xb6, 0x43, 0x5d, 0xe9, 0xee, 0x96, 0x9d, 0x29, 0x3f, 0x31, 0x5e, 0x68, 0xe2, 0x13, 0x18, 0xdf, 923 0xc3, 0x77, 0xf1, 0x15, 0x7c, 0x03, 0x5f, 0xc0, 0xec, 0xcc, 0xee, 0x5a, 0xda, 0x22, 0x5c, 0x78, 924 0xb7, 0xf3, 0x9d, 0xb3, 0xe7, 0x3b, 0xdf, 0xcc, 0x99, 0x81, 0xd9, 0xf3, 0x81, 0xcd, 0x70, 0xbf, 925 0x95, 0xef, 0x3b, 0x36, 0xb3, 0xd1, 0xb4, 0xb7, 0xcc, 0xac, 0x75, 0x6d, 0xbb, 0xdb, 0x23, 0x05, 926 0xdc, 0x37, 0x0a, 0xd8, 0xb2, 0x6c, 0x86, 0x99, 0x61, 0x5b, 0x54, 0xd0, 0x32, 0xab, 0x1e, 0xca, 927 0x57, 0xad, 0xc1, 0x69, 0x81, 0x98, 0x7d, 0x76, 0xed, 0x81, 0xca, 0x28, 0x78, 0x6a, 0x90, 0x5e, 928 0x47, 0x37, 0x31, 0x3d, 0x13, 0x0c, 0xf5, 0x77, 0x08, 0x62, 0x65, 0xdb, 0x3a, 0x35, 0xba, 0x08, 929 0x41, 0xc4, 0xc2, 0x26, 0x91, 0x25, 0x45, 0xca, 0x26, 0x34, 0xfe, 0x8d, 0xb6, 0x20, 0x4a, 0x19, 930 0x66, 0x44, 0x0e, 0x29, 0x52, 0x76, 0xae, 0xf8, 0x20, 0xef, 0x7b, 0x14, 0xff, 0xe4, 0x1b, 0x2e, 931 0xa8, 0x09, 0x0e, 0x7a, 0x08, 0x60, 0xe2, 0x2b, 0x9d, 0xd9, 0x67, 0xc4, 0xa2, 0x72, 0x58, 0x91, 932 0xb2, 0x61, 0x2d, 0x61, 0xe2, 0xab, 0x26, 0x2f, 0xa0, 0x23, 0x48, 0x51, 0x72, 0x3e, 0x20, 0x56, 933 0xdb, 0xb0, 0xba, 0x7a, 0x0b, 0x53, 0xd2, 0x91, 0x23, 0x8a, 0x94, 0x4d, 0x16, 0x95, 0x40, 0xb6, 934 0x11, 0x10, 0x4a, 0x2e, 0xde, 0x60, 0x0e, 0x66, 0xa4, 0x7b, 0xfd, 0x6a, 0x4a, 0x9b, 0xa7, 0x37, 935 0x21, 0xb4, 0x03, 0xc0, 0x0c, 0x93, 0x78, 0x42, 0x51, 0x2e, 0x94, 0x09, 0x84, 0x9a, 0x86, 0x49, 936 0x46, 0x25, 0x12, 0xcc, 0x2f, 0xa2, 0x0d, 0x98, 0x6b, 0x0f, 0x1c, 0x87, 0x58, 0xcc, 0xb7, 0x1b, 937 0xe3, 0x76, 0x67, 0xbd, 0xaa, 0xb0, 0xac, 0xee, 0x42, 0x94, 0x4f, 0x88, 0x64, 0x58, 0x3c, 0xa9, 938 0xbf, 0xae, 0x1f, 0xbf, 0xab, 0xeb, 0xe5, 0xe3, 0xfa, 0x41, 0xf5, 0x50, 0x6f, 0x34, 0xf7, 0x9a, 939 0x95, 0xd4, 0x14, 0x4a, 0xc2, 0x74, 0xa5, 0xbe, 0x57, 0xaa, 0x55, 0xf6, 0x53, 0x12, 0x9a, 0x81, 940 0xf8, 0x7e, 0xb5, 0x21, 0x56, 0xa1, 0x92, 0x0c, 0x4b, 0x0e, 0xe9, 0xf7, 0x88, 0x65, 0xd0, 0xf7, 941 0xa6, 0xdb, 0x8a, 0x7a, 0x5e, 0xd4, 0x15, 0x58, 0xbe, 0x65, 0x52, 0xf5, 0xb3, 0x04, 0x0b, 0x63, 942 0xe6, 0x51, 0x1e, 0xd2, 0xc2, 0xa7, 0xce, 0x6c, 0x3d, 0x10, 0xe5, 0x47, 0x15, 0xd6, 0x16, 0x04, 943 0xd4, 0xb4, 0x35, 0x1f, 0x40, 0xbb, 0x90, 0x09, 0x58, 0xba, 0x61, 0x31, 0xe2, 0x5c, 0xe0, 0x9e, 944 0x4e, 0x49, 0xdb, 0xb6, 0x3a, 0x94, 0x1f, 0x66, 0x58, 0x93, 0x03, 0x46, 0xd5, 0x23, 0x34, 0x04, 945 0xae, 0x6a, 0x90, 0x2e, 0x3b, 0x04, 0x33, 0x22, 0x4e, 0x59, 0x73, 0xad, 0x52, 0x36, 0x31, 0x20, 946 0x4f, 0x20, 0xd6, 0xe6, 0x24, 0x2e, 0x9a, 0x2c, 0xce, 0x8f, 0x24, 0x44, 0xf3, 0x60, 0x75, 0x13, 947 0xd2, 0xfb, 0xa4, 0x47, 0xee, 0xa1, 0xa9, 0x3e, 0x86, 0xd4, 0x21, 0x61, 0x77, 0xf3, 0xbe, 0x4a, 948 0x80, 0x6a, 0x06, 0xf5, 0x98, 0xd4, 0xa7, 0x2e, 0x42, 0xd4, 0x85, 0xa9, 0x2c, 0x29, 0xe1, 0x6c, 949 0x42, 0x13, 0x0b, 0xf4, 0x0c, 0x22, 0x17, 0x06, 0xb9, 0xf4, 0x82, 0xfc, 0x28, 0xb0, 0x39, 0x2e, 950 0xc0, 0x4b, 0x6f, 0x0d, 0x72, 0xa9, 0xf1, 0x3f, 0xd4, 0x75, 0x88, 0xfb, 0x15, 0x94, 0x80, 0x68, 951 0x69, 0xaf, 0x51, 0x2d, 0xa7, 0xa6, 0x50, 0x1c, 0x22, 0x07, 0x27, 0xb5, 0x5a, 0x4a, 0x52, 0x5f, 952 0x42, 0xfa, 0x86, 0x0a, 0xed, 0xdb, 0x16, 0x25, 0x68, 0x13, 0xa6, 0xc5, 0xec, 0xc2, 0xc9, 0x84, 953 0xbd, 0xf1, 0x71, 0xf5, 0x87, 0x04, 0xe9, 0x93, 0x7e, 0xe7, 0xbf, 0xee, 0x38, 0xda, 0x81, 0xe4, 954 0x80, 0x6b, 0xf2, 0xfb, 0xce, 0xef, 0xa3, 0x7b, 0x43, 0xc4, 0x93, 0x90, 0xf7, 0x9f, 0x84, 0xfc, 955 0x81, 0xfb, 0x24, 0x1c, 0x61, 0x7a, 0xa6, 0x81, 0xa0, 0xbb, 0xdf, 0x68, 0x1d, 0x92, 0x0e, 0xa1, 956 0x84, 0xe9, 0x5c, 0x9c, 0xdf, 0xd3, 0xb8, 0x06, 0xbc, 0xf4, 0xc6, 0xad, 0x14, 0xbf, 0x47, 0x20, 957 0xca, 0xbf, 0xd0, 0x07, 0x98, 0x19, 0x4e, 0x0b, 0x5a, 0xfb, 0x6b, 0x68, 0x3c, 0x44, 0x99, 0x51, 958 0xbb, 0xea, 0xd6, 0x97, 0x9f, 0xbf, 0xbe, 0x85, 0x36, 0x54, 0xa5, 0x70, 0xb1, 0xdd, 0x22, 0x0c, 959 0x6f, 0x17, 0x3e, 0xba, 0x73, 0xbe, 0xe0, 0x34, 0x5a, 0xc8, 0xe5, 0x0a, 0x62, 0x9e, 0x4f, 0xcf, 960 0xa5, 0x1c, 0xb2, 0x60, 0x66, 0x38, 0x45, 0x43, 0xbd, 0x26, 0x84, 0x2b, 0xb3, 0x34, 0x36, 0x6c, 961 0xc5, 0x7d, 0x1c, 0xd5, 0x2c, 0x6f, 0xa9, 0xe6, 0xee, 0x6c, 0x89, 0x30, 0x24, 0x82, 0x28, 0xa2, 962 0x95, 0xa0, 0xd9, 0x68, 0x3c, 0xc7, 0xa7, 0xf2, 0x5a, 0xa0, 0xfb, 0xb4, 0x48, 0x0e, 0xa5, 0x07, 963 0xad, 0xfe, 0x23, 0x99, 0x99, 0xb5, 0xc9, 0xa0, 0x08, 0x9c, 0xba, 0xcc, 0x7b, 0x2e, 0xa0, 0xf9, 964 0xa0, 0xa7, 0xe8, 0xe6, 0x9e, 0xd0, 0x70, 0xba, 0x86, 0x76, 0x6d, 0x42, 0xe8, 0x6e, 0x3d, 0xa1, 965 0xe2, 0x7d, 0x4e, 0xa8, 0x15, 0xe3, 0x7b, 0xfd, 0xf4, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xa0, 966 0x60, 0xf5, 0x62, 0xce, 0x06, 0x00, 0x00, 967 }