github.com/quickfeed/quickfeed@v0.0.0-20240507093252-ed8ca812a09c/qf/types.pb.go (about) 1 // Code generated by protoc-gen-go. DO NOT EDIT. 2 // versions: 3 // protoc-gen-go v1.33.0 4 // protoc (unknown) 5 // source: qf/types.proto 6 7 package qf 8 9 import ( 10 _ "github.com/alta/protopatch/patch/gopb" 11 score "github.com/quickfeed/quickfeed/kit/score" 12 protoreflect "google.golang.org/protobuf/reflect/protoreflect" 13 protoimpl "google.golang.org/protobuf/runtime/protoimpl" 14 timestamppb "google.golang.org/protobuf/types/known/timestamppb" 15 reflect "reflect" 16 sync "sync" 17 ) 18 19 const ( 20 // Verify that this generated code is sufficiently up-to-date. 21 _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) 22 // Verify that runtime/protoimpl is sufficiently up-to-date. 23 _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) 24 ) 25 26 type Group_GroupStatus int32 27 28 const ( 29 Group_PENDING Group_GroupStatus = 0 30 Group_APPROVED Group_GroupStatus = 1 31 ) 32 33 // Enum value maps for Group_GroupStatus. 34 var ( 35 Group_GroupStatus_name = map[int32]string{ 36 0: "PENDING", 37 1: "APPROVED", 38 } 39 Group_GroupStatus_value = map[string]int32{ 40 "PENDING": 0, 41 "APPROVED": 1, 42 } 43 ) 44 45 func (x Group_GroupStatus) Enum() *Group_GroupStatus { 46 p := new(Group_GroupStatus) 47 *p = x 48 return p 49 } 50 51 func (x Group_GroupStatus) String() string { 52 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 53 } 54 55 func (Group_GroupStatus) Descriptor() protoreflect.EnumDescriptor { 56 return file_qf_types_proto_enumTypes[0].Descriptor() 57 } 58 59 func (Group_GroupStatus) Type() protoreflect.EnumType { 60 return &file_qf_types_proto_enumTypes[0] 61 } 62 63 func (x Group_GroupStatus) Number() protoreflect.EnumNumber { 64 return protoreflect.EnumNumber(x) 65 } 66 67 // Deprecated: Use Group_GroupStatus.Descriptor instead. 68 func (Group_GroupStatus) EnumDescriptor() ([]byte, []int) { 69 return file_qf_types_proto_rawDescGZIP(), []int{2, 0} 70 } 71 72 type Repository_Type int32 73 74 const ( 75 Repository_NONE Repository_Type = 0 76 Repository_INFO Repository_Type = 1 77 Repository_ASSIGNMENTS Repository_Type = 2 78 Repository_TESTS Repository_Type = 3 79 Repository_USER Repository_Type = 4 80 Repository_GROUP Repository_Type = 5 81 ) 82 83 // Enum value maps for Repository_Type. 84 var ( 85 Repository_Type_name = map[int32]string{ 86 0: "NONE", 87 1: "INFO", 88 2: "ASSIGNMENTS", 89 3: "TESTS", 90 4: "USER", 91 5: "GROUP", 92 } 93 Repository_Type_value = map[string]int32{ 94 "NONE": 0, 95 "INFO": 1, 96 "ASSIGNMENTS": 2, 97 "TESTS": 3, 98 "USER": 4, 99 "GROUP": 5, 100 } 101 ) 102 103 func (x Repository_Type) Enum() *Repository_Type { 104 p := new(Repository_Type) 105 *p = x 106 return p 107 } 108 109 func (x Repository_Type) String() string { 110 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 111 } 112 113 func (Repository_Type) Descriptor() protoreflect.EnumDescriptor { 114 return file_qf_types_proto_enumTypes[1].Descriptor() 115 } 116 117 func (Repository_Type) Type() protoreflect.EnumType { 118 return &file_qf_types_proto_enumTypes[1] 119 } 120 121 func (x Repository_Type) Number() protoreflect.EnumNumber { 122 return protoreflect.EnumNumber(x) 123 } 124 125 // Deprecated: Use Repository_Type.Descriptor instead. 126 func (Repository_Type) EnumDescriptor() ([]byte, []int) { 127 return file_qf_types_proto_rawDescGZIP(), []int{6, 0} 128 } 129 130 type Enrollment_UserStatus int32 131 132 const ( 133 Enrollment_NONE Enrollment_UserStatus = 0 134 Enrollment_PENDING Enrollment_UserStatus = 1 135 Enrollment_STUDENT Enrollment_UserStatus = 2 136 Enrollment_TEACHER Enrollment_UserStatus = 3 137 ) 138 139 // Enum value maps for Enrollment_UserStatus. 140 var ( 141 Enrollment_UserStatus_name = map[int32]string{ 142 0: "NONE", 143 1: "PENDING", 144 2: "STUDENT", 145 3: "TEACHER", 146 } 147 Enrollment_UserStatus_value = map[string]int32{ 148 "NONE": 0, 149 "PENDING": 1, 150 "STUDENT": 2, 151 "TEACHER": 3, 152 } 153 ) 154 155 func (x Enrollment_UserStatus) Enum() *Enrollment_UserStatus { 156 p := new(Enrollment_UserStatus) 157 *p = x 158 return p 159 } 160 161 func (x Enrollment_UserStatus) String() string { 162 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 163 } 164 165 func (Enrollment_UserStatus) Descriptor() protoreflect.EnumDescriptor { 166 return file_qf_types_proto_enumTypes[2].Descriptor() 167 } 168 169 func (Enrollment_UserStatus) Type() protoreflect.EnumType { 170 return &file_qf_types_proto_enumTypes[2] 171 } 172 173 func (x Enrollment_UserStatus) Number() protoreflect.EnumNumber { 174 return protoreflect.EnumNumber(x) 175 } 176 177 // Deprecated: Use Enrollment_UserStatus.Descriptor instead. 178 func (Enrollment_UserStatus) EnumDescriptor() ([]byte, []int) { 179 return file_qf_types_proto_rawDescGZIP(), []int{7, 0} 180 } 181 182 type Enrollment_DisplayState int32 183 184 const ( 185 Enrollment_UNSET Enrollment_DisplayState = 0 186 Enrollment_HIDDEN Enrollment_DisplayState = 1 187 Enrollment_VISIBLE Enrollment_DisplayState = 2 188 Enrollment_FAVORITE Enrollment_DisplayState = 3 189 ) 190 191 // Enum value maps for Enrollment_DisplayState. 192 var ( 193 Enrollment_DisplayState_name = map[int32]string{ 194 0: "UNSET", 195 1: "HIDDEN", 196 2: "VISIBLE", 197 3: "FAVORITE", 198 } 199 Enrollment_DisplayState_value = map[string]int32{ 200 "UNSET": 0, 201 "HIDDEN": 1, 202 "VISIBLE": 2, 203 "FAVORITE": 3, 204 } 205 ) 206 207 func (x Enrollment_DisplayState) Enum() *Enrollment_DisplayState { 208 p := new(Enrollment_DisplayState) 209 *p = x 210 return p 211 } 212 213 func (x Enrollment_DisplayState) String() string { 214 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 215 } 216 217 func (Enrollment_DisplayState) Descriptor() protoreflect.EnumDescriptor { 218 return file_qf_types_proto_enumTypes[3].Descriptor() 219 } 220 221 func (Enrollment_DisplayState) Type() protoreflect.EnumType { 222 return &file_qf_types_proto_enumTypes[3] 223 } 224 225 func (x Enrollment_DisplayState) Number() protoreflect.EnumNumber { 226 return protoreflect.EnumNumber(x) 227 } 228 229 // Deprecated: Use Enrollment_DisplayState.Descriptor instead. 230 func (Enrollment_DisplayState) EnumDescriptor() ([]byte, []int) { 231 return file_qf_types_proto_rawDescGZIP(), []int{7, 1} 232 } 233 234 type PullRequest_Stage int32 235 236 const ( 237 PullRequest_NONE PullRequest_Stage = 0 238 PullRequest_DRAFT PullRequest_Stage = 1 239 PullRequest_REVIEW PullRequest_Stage = 2 240 PullRequest_APPROVED PullRequest_Stage = 3 241 ) 242 243 // Enum value maps for PullRequest_Stage. 244 var ( 245 PullRequest_Stage_name = map[int32]string{ 246 0: "NONE", 247 1: "DRAFT", 248 2: "REVIEW", 249 3: "APPROVED", 250 } 251 PullRequest_Stage_value = map[string]int32{ 252 "NONE": 0, 253 "DRAFT": 1, 254 "REVIEW": 2, 255 "APPROVED": 3, 256 } 257 ) 258 259 func (x PullRequest_Stage) Enum() *PullRequest_Stage { 260 p := new(PullRequest_Stage) 261 *p = x 262 return p 263 } 264 265 func (x PullRequest_Stage) String() string { 266 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 267 } 268 269 func (PullRequest_Stage) Descriptor() protoreflect.EnumDescriptor { 270 return file_qf_types_proto_enumTypes[4].Descriptor() 271 } 272 273 func (PullRequest_Stage) Type() protoreflect.EnumType { 274 return &file_qf_types_proto_enumTypes[4] 275 } 276 277 func (x PullRequest_Stage) Number() protoreflect.EnumNumber { 278 return protoreflect.EnumNumber(x) 279 } 280 281 // Deprecated: Use PullRequest_Stage.Descriptor instead. 282 func (PullRequest_Stage) EnumDescriptor() ([]byte, []int) { 283 return file_qf_types_proto_rawDescGZIP(), []int{13, 0} 284 } 285 286 type Submission_Status int32 287 288 const ( 289 Submission_NONE Submission_Status = 0 290 Submission_APPROVED Submission_Status = 1 291 Submission_REJECTED Submission_Status = 2 292 Submission_REVISION Submission_Status = 3 293 ) 294 295 // Enum value maps for Submission_Status. 296 var ( 297 Submission_Status_name = map[int32]string{ 298 0: "NONE", 299 1: "APPROVED", 300 2: "REJECTED", 301 3: "REVISION", 302 } 303 Submission_Status_value = map[string]int32{ 304 "NONE": 0, 305 "APPROVED": 1, 306 "REJECTED": 2, 307 "REVISION": 3, 308 } 309 ) 310 311 func (x Submission_Status) Enum() *Submission_Status { 312 p := new(Submission_Status) 313 *p = x 314 return p 315 } 316 317 func (x Submission_Status) String() string { 318 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 319 } 320 321 func (Submission_Status) Descriptor() protoreflect.EnumDescriptor { 322 return file_qf_types_proto_enumTypes[5].Descriptor() 323 } 324 325 func (Submission_Status) Type() protoreflect.EnumType { 326 return &file_qf_types_proto_enumTypes[5] 327 } 328 329 func (x Submission_Status) Number() protoreflect.EnumNumber { 330 return protoreflect.EnumNumber(x) 331 } 332 333 // Deprecated: Use Submission_Status.Descriptor instead. 334 func (Submission_Status) EnumDescriptor() ([]byte, []int) { 335 return file_qf_types_proto_rawDescGZIP(), []int{15, 0} 336 } 337 338 type GradingCriterion_Grade int32 339 340 const ( 341 GradingCriterion_NONE GradingCriterion_Grade = 0 342 GradingCriterion_FAILED GradingCriterion_Grade = 1 343 GradingCriterion_PASSED GradingCriterion_Grade = 2 344 ) 345 346 // Enum value maps for GradingCriterion_Grade. 347 var ( 348 GradingCriterion_Grade_name = map[int32]string{ 349 0: "NONE", 350 1: "FAILED", 351 2: "PASSED", 352 } 353 GradingCriterion_Grade_value = map[string]int32{ 354 "NONE": 0, 355 "FAILED": 1, 356 "PASSED": 2, 357 } 358 ) 359 360 func (x GradingCriterion_Grade) Enum() *GradingCriterion_Grade { 361 p := new(GradingCriterion_Grade) 362 *p = x 363 return p 364 } 365 366 func (x GradingCriterion_Grade) String() string { 367 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 368 } 369 370 func (GradingCriterion_Grade) Descriptor() protoreflect.EnumDescriptor { 371 return file_qf_types_proto_enumTypes[6].Descriptor() 372 } 373 374 func (GradingCriterion_Grade) Type() protoreflect.EnumType { 375 return &file_qf_types_proto_enumTypes[6] 376 } 377 378 func (x GradingCriterion_Grade) Number() protoreflect.EnumNumber { 379 return protoreflect.EnumNumber(x) 380 } 381 382 // Deprecated: Use GradingCriterion_Grade.Descriptor instead. 383 func (GradingCriterion_Grade) EnumDescriptor() ([]byte, []int) { 384 return file_qf_types_proto_rawDescGZIP(), []int{19, 0} 385 } 386 387 type User struct { 388 state protoimpl.MessageState 389 sizeCache protoimpl.SizeCache 390 unknownFields protoimpl.UnknownFields 391 392 ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` 393 IsAdmin bool `protobuf:"varint,2,opt,name=IsAdmin,proto3" json:"IsAdmin,omitempty"` 394 Name string `protobuf:"bytes,3,opt,name=Name,proto3" json:"Name,omitempty"` 395 StudentID string `protobuf:"bytes,4,opt,name=StudentID,proto3" json:"StudentID,omitempty"` 396 Email string `protobuf:"bytes,5,opt,name=Email,proto3" json:"Email,omitempty"` 397 AvatarURL string `protobuf:"bytes,6,opt,name=AvatarURL,proto3" json:"AvatarURL,omitempty"` 398 Login string `protobuf:"bytes,7,opt,name=Login,proto3" json:"Login,omitempty"` 399 UpdateToken bool `protobuf:"varint,8,opt,name=UpdateToken,proto3" json:"UpdateToken,omitempty"` // Filter; True if user's JWT token needs to be updated. 400 ScmRemoteID uint64 `protobuf:"varint,9,opt,name=ScmRemoteID,proto3" json:"ScmRemoteID,omitempty"` // Filter; The user's ID on the remote provider. 401 RefreshToken string `protobuf:"bytes,10,opt,name=RefreshToken,proto3" json:"RefreshToken,omitempty"` // Filter; The user's refresh token that may be exchanged for an access token. 402 Enrollments []*Enrollment `protobuf:"bytes,11,rep,name=Enrollments,proto3" json:"Enrollments,omitempty"` 403 } 404 405 func (x *User) Reset() { 406 *x = User{} 407 if protoimpl.UnsafeEnabled { 408 mi := &file_qf_types_proto_msgTypes[0] 409 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 410 ms.StoreMessageInfo(mi) 411 } 412 } 413 414 func (x *User) String() string { 415 return protoimpl.X.MessageStringOf(x) 416 } 417 418 func (*User) ProtoMessage() {} 419 420 func (x *User) ProtoReflect() protoreflect.Message { 421 mi := &file_qf_types_proto_msgTypes[0] 422 if protoimpl.UnsafeEnabled && x != nil { 423 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 424 if ms.LoadMessageInfo() == nil { 425 ms.StoreMessageInfo(mi) 426 } 427 return ms 428 } 429 return mi.MessageOf(x) 430 } 431 432 // Deprecated: Use User.ProtoReflect.Descriptor instead. 433 func (*User) Descriptor() ([]byte, []int) { 434 return file_qf_types_proto_rawDescGZIP(), []int{0} 435 } 436 437 func (x *User) GetID() uint64 { 438 if x != nil { 439 return x.ID 440 } 441 return 0 442 } 443 444 func (x *User) GetIsAdmin() bool { 445 if x != nil { 446 return x.IsAdmin 447 } 448 return false 449 } 450 451 func (x *User) GetName() string { 452 if x != nil { 453 return x.Name 454 } 455 return "" 456 } 457 458 func (x *User) GetStudentID() string { 459 if x != nil { 460 return x.StudentID 461 } 462 return "" 463 } 464 465 func (x *User) GetEmail() string { 466 if x != nil { 467 return x.Email 468 } 469 return "" 470 } 471 472 func (x *User) GetAvatarURL() string { 473 if x != nil { 474 return x.AvatarURL 475 } 476 return "" 477 } 478 479 func (x *User) GetLogin() string { 480 if x != nil { 481 return x.Login 482 } 483 return "" 484 } 485 486 func (x *User) GetUpdateToken() bool { 487 if x != nil { 488 return x.UpdateToken 489 } 490 return false 491 } 492 493 func (x *User) GetScmRemoteID() uint64 { 494 if x != nil { 495 return x.ScmRemoteID 496 } 497 return 0 498 } 499 500 func (x *User) GetRefreshToken() string { 501 if x != nil { 502 return x.RefreshToken 503 } 504 return "" 505 } 506 507 func (x *User) GetEnrollments() []*Enrollment { 508 if x != nil { 509 return x.Enrollments 510 } 511 return nil 512 } 513 514 type Users struct { 515 state protoimpl.MessageState 516 sizeCache protoimpl.SizeCache 517 unknownFields protoimpl.UnknownFields 518 519 Users []*User `protobuf:"bytes,1,rep,name=users,proto3" json:"users,omitempty"` 520 } 521 522 func (x *Users) Reset() { 523 *x = Users{} 524 if protoimpl.UnsafeEnabled { 525 mi := &file_qf_types_proto_msgTypes[1] 526 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 527 ms.StoreMessageInfo(mi) 528 } 529 } 530 531 func (x *Users) String() string { 532 return protoimpl.X.MessageStringOf(x) 533 } 534 535 func (*Users) ProtoMessage() {} 536 537 func (x *Users) ProtoReflect() protoreflect.Message { 538 mi := &file_qf_types_proto_msgTypes[1] 539 if protoimpl.UnsafeEnabled && x != nil { 540 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 541 if ms.LoadMessageInfo() == nil { 542 ms.StoreMessageInfo(mi) 543 } 544 return ms 545 } 546 return mi.MessageOf(x) 547 } 548 549 // Deprecated: Use Users.ProtoReflect.Descriptor instead. 550 func (*Users) Descriptor() ([]byte, []int) { 551 return file_qf_types_proto_rawDescGZIP(), []int{1} 552 } 553 554 func (x *Users) GetUsers() []*User { 555 if x != nil { 556 return x.Users 557 } 558 return nil 559 } 560 561 type Group struct { 562 state protoimpl.MessageState 563 sizeCache protoimpl.SizeCache 564 unknownFields protoimpl.UnknownFields 565 566 ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` 567 Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty" gorm:"uniqueIndex:group"` 568 CourseID uint64 `protobuf:"varint,3,opt,name=courseID,proto3" json:"courseID,omitempty" gorm:"uniqueIndex:group"` 569 ScmTeamID uint64 `protobuf:"varint,4,opt,name=ScmTeamID,proto3" json:"ScmTeamID,omitempty"` 570 Status Group_GroupStatus `protobuf:"varint,5,opt,name=status,proto3,enum=qf.Group_GroupStatus" json:"status,omitempty"` 571 Users []*User `protobuf:"bytes,6,rep,name=users,proto3" json:"users,omitempty" gorm:"many2many:group_users;"` 572 Enrollments []*Enrollment `protobuf:"bytes,7,rep,name=enrollments,proto3" json:"enrollments,omitempty"` 573 } 574 575 func (x *Group) Reset() { 576 *x = Group{} 577 if protoimpl.UnsafeEnabled { 578 mi := &file_qf_types_proto_msgTypes[2] 579 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 580 ms.StoreMessageInfo(mi) 581 } 582 } 583 584 func (x *Group) String() string { 585 return protoimpl.X.MessageStringOf(x) 586 } 587 588 func (*Group) ProtoMessage() {} 589 590 func (x *Group) ProtoReflect() protoreflect.Message { 591 mi := &file_qf_types_proto_msgTypes[2] 592 if protoimpl.UnsafeEnabled && x != nil { 593 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 594 if ms.LoadMessageInfo() == nil { 595 ms.StoreMessageInfo(mi) 596 } 597 return ms 598 } 599 return mi.MessageOf(x) 600 } 601 602 // Deprecated: Use Group.ProtoReflect.Descriptor instead. 603 func (*Group) Descriptor() ([]byte, []int) { 604 return file_qf_types_proto_rawDescGZIP(), []int{2} 605 } 606 607 func (x *Group) GetID() uint64 { 608 if x != nil { 609 return x.ID 610 } 611 return 0 612 } 613 614 func (x *Group) GetName() string { 615 if x != nil { 616 return x.Name 617 } 618 return "" 619 } 620 621 func (x *Group) GetCourseID() uint64 { 622 if x != nil { 623 return x.CourseID 624 } 625 return 0 626 } 627 628 func (x *Group) GetScmTeamID() uint64 { 629 if x != nil { 630 return x.ScmTeamID 631 } 632 return 0 633 } 634 635 func (x *Group) GetStatus() Group_GroupStatus { 636 if x != nil { 637 return x.Status 638 } 639 return Group_PENDING 640 } 641 642 func (x *Group) GetUsers() []*User { 643 if x != nil { 644 return x.Users 645 } 646 return nil 647 } 648 649 func (x *Group) GetEnrollments() []*Enrollment { 650 if x != nil { 651 return x.Enrollments 652 } 653 return nil 654 } 655 656 type Groups struct { 657 state protoimpl.MessageState 658 sizeCache protoimpl.SizeCache 659 unknownFields protoimpl.UnknownFields 660 661 Groups []*Group `protobuf:"bytes,1,rep,name=groups,proto3" json:"groups,omitempty"` 662 } 663 664 func (x *Groups) Reset() { 665 *x = Groups{} 666 if protoimpl.UnsafeEnabled { 667 mi := &file_qf_types_proto_msgTypes[3] 668 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 669 ms.StoreMessageInfo(mi) 670 } 671 } 672 673 func (x *Groups) String() string { 674 return protoimpl.X.MessageStringOf(x) 675 } 676 677 func (*Groups) ProtoMessage() {} 678 679 func (x *Groups) ProtoReflect() protoreflect.Message { 680 mi := &file_qf_types_proto_msgTypes[3] 681 if protoimpl.UnsafeEnabled && x != nil { 682 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 683 if ms.LoadMessageInfo() == nil { 684 ms.StoreMessageInfo(mi) 685 } 686 return ms 687 } 688 return mi.MessageOf(x) 689 } 690 691 // Deprecated: Use Groups.ProtoReflect.Descriptor instead. 692 func (*Groups) Descriptor() ([]byte, []int) { 693 return file_qf_types_proto_rawDescGZIP(), []int{3} 694 } 695 696 func (x *Groups) GetGroups() []*Group { 697 if x != nil { 698 return x.Groups 699 } 700 return nil 701 } 702 703 type Course struct { 704 state protoimpl.MessageState 705 sizeCache protoimpl.SizeCache 706 unknownFields protoimpl.UnknownFields 707 708 ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` 709 CourseCreatorID uint64 `protobuf:"varint,2,opt,name=courseCreatorID,proto3" json:"courseCreatorID,omitempty"` 710 Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` 711 Code string `protobuf:"bytes,4,opt,name=code,proto3" json:"code,omitempty" gorm:"uniqueIndex:course"` 712 Year uint32 `protobuf:"varint,5,opt,name=year,proto3" json:"year,omitempty" gorm:"uniqueIndex:course"` 713 Tag string `protobuf:"bytes,6,opt,name=tag,proto3" json:"tag,omitempty"` 714 ScmOrganizationID uint64 `protobuf:"varint,8,opt,name=ScmOrganizationID,proto3" json:"ScmOrganizationID,omitempty"` 715 ScmOrganizationName string `protobuf:"bytes,9,opt,name=ScmOrganizationName,proto3" json:"ScmOrganizationName,omitempty"` // The organization's SCM name, e.g., dat520-2020. 716 SlipDays uint32 `protobuf:"varint,10,opt,name=slipDays,proto3" json:"slipDays,omitempty"` 717 DockerfileDigest string `protobuf:"bytes,11,opt,name=DockerfileDigest,proto3" json:"DockerfileDigest,omitempty"` // Digest of the dockerfile used to build the course's docker image. 718 Enrolled Enrollment_UserStatus `protobuf:"varint,12,opt,name=enrolled,proto3,enum=qf.Enrollment_UserStatus" json:"enrolled,omitempty" gorm:"-"` 719 Enrollments []*Enrollment `protobuf:"bytes,13,rep,name=enrollments,proto3" json:"enrollments,omitempty"` 720 Assignments []*Assignment `protobuf:"bytes,14,rep,name=assignments,proto3" json:"assignments,omitempty"` 721 Groups []*Group `protobuf:"bytes,15,rep,name=groups,proto3" json:"groups,omitempty"` 722 } 723 724 func (x *Course) Reset() { 725 *x = Course{} 726 if protoimpl.UnsafeEnabled { 727 mi := &file_qf_types_proto_msgTypes[4] 728 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 729 ms.StoreMessageInfo(mi) 730 } 731 } 732 733 func (x *Course) String() string { 734 return protoimpl.X.MessageStringOf(x) 735 } 736 737 func (*Course) ProtoMessage() {} 738 739 func (x *Course) ProtoReflect() protoreflect.Message { 740 mi := &file_qf_types_proto_msgTypes[4] 741 if protoimpl.UnsafeEnabled && x != nil { 742 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 743 if ms.LoadMessageInfo() == nil { 744 ms.StoreMessageInfo(mi) 745 } 746 return ms 747 } 748 return mi.MessageOf(x) 749 } 750 751 // Deprecated: Use Course.ProtoReflect.Descriptor instead. 752 func (*Course) Descriptor() ([]byte, []int) { 753 return file_qf_types_proto_rawDescGZIP(), []int{4} 754 } 755 756 func (x *Course) GetID() uint64 { 757 if x != nil { 758 return x.ID 759 } 760 return 0 761 } 762 763 func (x *Course) GetCourseCreatorID() uint64 { 764 if x != nil { 765 return x.CourseCreatorID 766 } 767 return 0 768 } 769 770 func (x *Course) GetName() string { 771 if x != nil { 772 return x.Name 773 } 774 return "" 775 } 776 777 func (x *Course) GetCode() string { 778 if x != nil { 779 return x.Code 780 } 781 return "" 782 } 783 784 func (x *Course) GetYear() uint32 { 785 if x != nil { 786 return x.Year 787 } 788 return 0 789 } 790 791 func (x *Course) GetTag() string { 792 if x != nil { 793 return x.Tag 794 } 795 return "" 796 } 797 798 func (x *Course) GetScmOrganizationID() uint64 { 799 if x != nil { 800 return x.ScmOrganizationID 801 } 802 return 0 803 } 804 805 func (x *Course) GetScmOrganizationName() string { 806 if x != nil { 807 return x.ScmOrganizationName 808 } 809 return "" 810 } 811 812 func (x *Course) GetSlipDays() uint32 { 813 if x != nil { 814 return x.SlipDays 815 } 816 return 0 817 } 818 819 func (x *Course) GetDockerfileDigest() string { 820 if x != nil { 821 return x.DockerfileDigest 822 } 823 return "" 824 } 825 826 func (x *Course) GetEnrolled() Enrollment_UserStatus { 827 if x != nil { 828 return x.Enrolled 829 } 830 return Enrollment_NONE 831 } 832 833 func (x *Course) GetEnrollments() []*Enrollment { 834 if x != nil { 835 return x.Enrollments 836 } 837 return nil 838 } 839 840 func (x *Course) GetAssignments() []*Assignment { 841 if x != nil { 842 return x.Assignments 843 } 844 return nil 845 } 846 847 func (x *Course) GetGroups() []*Group { 848 if x != nil { 849 return x.Groups 850 } 851 return nil 852 } 853 854 type Courses struct { 855 state protoimpl.MessageState 856 sizeCache protoimpl.SizeCache 857 unknownFields protoimpl.UnknownFields 858 859 Courses []*Course `protobuf:"bytes,1,rep,name=courses,proto3" json:"courses,omitempty"` 860 } 861 862 func (x *Courses) Reset() { 863 *x = Courses{} 864 if protoimpl.UnsafeEnabled { 865 mi := &file_qf_types_proto_msgTypes[5] 866 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 867 ms.StoreMessageInfo(mi) 868 } 869 } 870 871 func (x *Courses) String() string { 872 return protoimpl.X.MessageStringOf(x) 873 } 874 875 func (*Courses) ProtoMessage() {} 876 877 func (x *Courses) ProtoReflect() protoreflect.Message { 878 mi := &file_qf_types_proto_msgTypes[5] 879 if protoimpl.UnsafeEnabled && x != nil { 880 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 881 if ms.LoadMessageInfo() == nil { 882 ms.StoreMessageInfo(mi) 883 } 884 return ms 885 } 886 return mi.MessageOf(x) 887 } 888 889 // Deprecated: Use Courses.ProtoReflect.Descriptor instead. 890 func (*Courses) Descriptor() ([]byte, []int) { 891 return file_qf_types_proto_rawDescGZIP(), []int{5} 892 } 893 894 func (x *Courses) GetCourses() []*Course { 895 if x != nil { 896 return x.Courses 897 } 898 return nil 899 } 900 901 type Repository struct { 902 state protoimpl.MessageState 903 sizeCache protoimpl.SizeCache 904 unknownFields protoimpl.UnknownFields 905 906 ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` 907 ScmOrganizationID uint64 `protobuf:"varint,2,opt,name=ScmOrganizationID,proto3" json:"ScmOrganizationID,omitempty" gorm:"uniqueIndex:repository"` 908 ScmRepositoryID uint64 `protobuf:"varint,3,opt,name=ScmRepositoryID,proto3" json:"ScmRepositoryID,omitempty"` // ID of a github repository 909 UserID uint64 `protobuf:"varint,4,opt,name=userID,proto3" json:"userID,omitempty" gorm:"uniqueIndex:repository"` 910 GroupID uint64 `protobuf:"varint,5,opt,name=groupID,proto3" json:"groupID,omitempty" gorm:"uniqueIndex:repository"` 911 HTMLURL string `protobuf:"bytes,6,opt,name=HTMLURL,proto3" json:"HTMLURL,omitempty"` 912 RepoType Repository_Type `protobuf:"varint,7,opt,name=repoType,proto3,enum=qf.Repository_Type" json:"repoType,omitempty" gorm:"uniqueIndex:repository"` 913 Issues []*Issue `protobuf:"bytes,8,rep,name=issues,proto3" json:"issues,omitempty"` // Issues associated with this repository 914 } 915 916 func (x *Repository) Reset() { 917 *x = Repository{} 918 if protoimpl.UnsafeEnabled { 919 mi := &file_qf_types_proto_msgTypes[6] 920 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 921 ms.StoreMessageInfo(mi) 922 } 923 } 924 925 func (x *Repository) String() string { 926 return protoimpl.X.MessageStringOf(x) 927 } 928 929 func (*Repository) ProtoMessage() {} 930 931 func (x *Repository) ProtoReflect() protoreflect.Message { 932 mi := &file_qf_types_proto_msgTypes[6] 933 if protoimpl.UnsafeEnabled && x != nil { 934 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 935 if ms.LoadMessageInfo() == nil { 936 ms.StoreMessageInfo(mi) 937 } 938 return ms 939 } 940 return mi.MessageOf(x) 941 } 942 943 // Deprecated: Use Repository.ProtoReflect.Descriptor instead. 944 func (*Repository) Descriptor() ([]byte, []int) { 945 return file_qf_types_proto_rawDescGZIP(), []int{6} 946 } 947 948 func (x *Repository) GetID() uint64 { 949 if x != nil { 950 return x.ID 951 } 952 return 0 953 } 954 955 func (x *Repository) GetScmOrganizationID() uint64 { 956 if x != nil { 957 return x.ScmOrganizationID 958 } 959 return 0 960 } 961 962 func (x *Repository) GetScmRepositoryID() uint64 { 963 if x != nil { 964 return x.ScmRepositoryID 965 } 966 return 0 967 } 968 969 func (x *Repository) GetUserID() uint64 { 970 if x != nil { 971 return x.UserID 972 } 973 return 0 974 } 975 976 func (x *Repository) GetGroupID() uint64 { 977 if x != nil { 978 return x.GroupID 979 } 980 return 0 981 } 982 983 func (x *Repository) GetHTMLURL() string { 984 if x != nil { 985 return x.HTMLURL 986 } 987 return "" 988 } 989 990 func (x *Repository) GetRepoType() Repository_Type { 991 if x != nil { 992 return x.RepoType 993 } 994 return Repository_NONE 995 } 996 997 func (x *Repository) GetIssues() []*Issue { 998 if x != nil { 999 return x.Issues 1000 } 1001 return nil 1002 } 1003 1004 type Enrollment struct { 1005 state protoimpl.MessageState 1006 sizeCache protoimpl.SizeCache 1007 unknownFields protoimpl.UnknownFields 1008 1009 ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` 1010 CourseID uint64 `protobuf:"varint,2,opt,name=courseID,proto3" json:"courseID,omitempty" gorm:"uniqueIndex:enrollment"` 1011 UserID uint64 `protobuf:"varint,3,opt,name=userID,proto3" json:"userID,omitempty" gorm:"uniqueIndex:enrollment"` 1012 GroupID uint64 `protobuf:"varint,4,opt,name=groupID,proto3" json:"groupID,omitempty"` 1013 User *User `protobuf:"bytes,5,opt,name=user,proto3" json:"user,omitempty"` 1014 Course *Course `protobuf:"bytes,6,opt,name=course,proto3" json:"course,omitempty"` 1015 Group *Group `protobuf:"bytes,7,opt,name=group,proto3" json:"group,omitempty"` 1016 Status Enrollment_UserStatus `protobuf:"varint,8,opt,name=status,proto3,enum=qf.Enrollment_UserStatus" json:"status,omitempty"` 1017 State Enrollment_DisplayState `protobuf:"varint,9,opt,name=state,proto3,enum=qf.Enrollment_DisplayState" json:"state,omitempty"` 1018 SlipDaysRemaining uint32 `protobuf:"varint,10,opt,name=slipDaysRemaining,proto3" json:"slipDaysRemaining,omitempty" gorm:"-"` 1019 LastActivityDate *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=lastActivityDate,proto3" json:"lastActivityDate,omitempty" gorm:"serializer:timestamp;type:datetime"` 1020 TotalApproved uint64 `protobuf:"varint,12,opt,name=totalApproved,proto3" json:"totalApproved,omitempty"` 1021 UsedSlipDays []*UsedSlipDays `protobuf:"bytes,13,rep,name=usedSlipDays,proto3" json:"usedSlipDays,omitempty"` 1022 } 1023 1024 func (x *Enrollment) Reset() { 1025 *x = Enrollment{} 1026 if protoimpl.UnsafeEnabled { 1027 mi := &file_qf_types_proto_msgTypes[7] 1028 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1029 ms.StoreMessageInfo(mi) 1030 } 1031 } 1032 1033 func (x *Enrollment) String() string { 1034 return protoimpl.X.MessageStringOf(x) 1035 } 1036 1037 func (*Enrollment) ProtoMessage() {} 1038 1039 func (x *Enrollment) ProtoReflect() protoreflect.Message { 1040 mi := &file_qf_types_proto_msgTypes[7] 1041 if protoimpl.UnsafeEnabled && x != nil { 1042 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1043 if ms.LoadMessageInfo() == nil { 1044 ms.StoreMessageInfo(mi) 1045 } 1046 return ms 1047 } 1048 return mi.MessageOf(x) 1049 } 1050 1051 // Deprecated: Use Enrollment.ProtoReflect.Descriptor instead. 1052 func (*Enrollment) Descriptor() ([]byte, []int) { 1053 return file_qf_types_proto_rawDescGZIP(), []int{7} 1054 } 1055 1056 func (x *Enrollment) GetID() uint64 { 1057 if x != nil { 1058 return x.ID 1059 } 1060 return 0 1061 } 1062 1063 func (x *Enrollment) GetCourseID() uint64 { 1064 if x != nil { 1065 return x.CourseID 1066 } 1067 return 0 1068 } 1069 1070 func (x *Enrollment) GetUserID() uint64 { 1071 if x != nil { 1072 return x.UserID 1073 } 1074 return 0 1075 } 1076 1077 func (x *Enrollment) GetGroupID() uint64 { 1078 if x != nil { 1079 return x.GroupID 1080 } 1081 return 0 1082 } 1083 1084 func (x *Enrollment) GetUser() *User { 1085 if x != nil { 1086 return x.User 1087 } 1088 return nil 1089 } 1090 1091 func (x *Enrollment) GetCourse() *Course { 1092 if x != nil { 1093 return x.Course 1094 } 1095 return nil 1096 } 1097 1098 func (x *Enrollment) GetGroup() *Group { 1099 if x != nil { 1100 return x.Group 1101 } 1102 return nil 1103 } 1104 1105 func (x *Enrollment) GetStatus() Enrollment_UserStatus { 1106 if x != nil { 1107 return x.Status 1108 } 1109 return Enrollment_NONE 1110 } 1111 1112 func (x *Enrollment) GetState() Enrollment_DisplayState { 1113 if x != nil { 1114 return x.State 1115 } 1116 return Enrollment_UNSET 1117 } 1118 1119 func (x *Enrollment) GetSlipDaysRemaining() uint32 { 1120 if x != nil { 1121 return x.SlipDaysRemaining 1122 } 1123 return 0 1124 } 1125 1126 func (x *Enrollment) GetLastActivityDate() *timestamppb.Timestamp { 1127 if x != nil { 1128 return x.LastActivityDate 1129 } 1130 return nil 1131 } 1132 1133 func (x *Enrollment) GetTotalApproved() uint64 { 1134 if x != nil { 1135 return x.TotalApproved 1136 } 1137 return 0 1138 } 1139 1140 func (x *Enrollment) GetUsedSlipDays() []*UsedSlipDays { 1141 if x != nil { 1142 return x.UsedSlipDays 1143 } 1144 return nil 1145 } 1146 1147 type UsedSlipDays struct { 1148 state protoimpl.MessageState 1149 sizeCache protoimpl.SizeCache 1150 unknownFields protoimpl.UnknownFields 1151 1152 ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` 1153 EnrollmentID uint64 `protobuf:"varint,2,opt,name=enrollmentID,proto3" json:"enrollmentID,omitempty"` 1154 AssignmentID uint64 `protobuf:"varint,3,opt,name=assignmentID,proto3" json:"assignmentID,omitempty"` 1155 UsedDays uint32 `protobuf:"varint,4,opt,name=usedDays,proto3" json:"usedDays,omitempty"` 1156 } 1157 1158 func (x *UsedSlipDays) Reset() { 1159 *x = UsedSlipDays{} 1160 if protoimpl.UnsafeEnabled { 1161 mi := &file_qf_types_proto_msgTypes[8] 1162 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1163 ms.StoreMessageInfo(mi) 1164 } 1165 } 1166 1167 func (x *UsedSlipDays) String() string { 1168 return protoimpl.X.MessageStringOf(x) 1169 } 1170 1171 func (*UsedSlipDays) ProtoMessage() {} 1172 1173 func (x *UsedSlipDays) ProtoReflect() protoreflect.Message { 1174 mi := &file_qf_types_proto_msgTypes[8] 1175 if protoimpl.UnsafeEnabled && x != nil { 1176 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1177 if ms.LoadMessageInfo() == nil { 1178 ms.StoreMessageInfo(mi) 1179 } 1180 return ms 1181 } 1182 return mi.MessageOf(x) 1183 } 1184 1185 // Deprecated: Use UsedSlipDays.ProtoReflect.Descriptor instead. 1186 func (*UsedSlipDays) Descriptor() ([]byte, []int) { 1187 return file_qf_types_proto_rawDescGZIP(), []int{8} 1188 } 1189 1190 func (x *UsedSlipDays) GetID() uint64 { 1191 if x != nil { 1192 return x.ID 1193 } 1194 return 0 1195 } 1196 1197 func (x *UsedSlipDays) GetEnrollmentID() uint64 { 1198 if x != nil { 1199 return x.EnrollmentID 1200 } 1201 return 0 1202 } 1203 1204 func (x *UsedSlipDays) GetAssignmentID() uint64 { 1205 if x != nil { 1206 return x.AssignmentID 1207 } 1208 return 0 1209 } 1210 1211 func (x *UsedSlipDays) GetUsedDays() uint32 { 1212 if x != nil { 1213 return x.UsedDays 1214 } 1215 return 0 1216 } 1217 1218 type Enrollments struct { 1219 state protoimpl.MessageState 1220 sizeCache protoimpl.SizeCache 1221 unknownFields protoimpl.UnknownFields 1222 1223 Enrollments []*Enrollment `protobuf:"bytes,1,rep,name=enrollments,proto3" json:"enrollments,omitempty"` 1224 } 1225 1226 func (x *Enrollments) Reset() { 1227 *x = Enrollments{} 1228 if protoimpl.UnsafeEnabled { 1229 mi := &file_qf_types_proto_msgTypes[9] 1230 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1231 ms.StoreMessageInfo(mi) 1232 } 1233 } 1234 1235 func (x *Enrollments) String() string { 1236 return protoimpl.X.MessageStringOf(x) 1237 } 1238 1239 func (*Enrollments) ProtoMessage() {} 1240 1241 func (x *Enrollments) ProtoReflect() protoreflect.Message { 1242 mi := &file_qf_types_proto_msgTypes[9] 1243 if protoimpl.UnsafeEnabled && x != nil { 1244 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1245 if ms.LoadMessageInfo() == nil { 1246 ms.StoreMessageInfo(mi) 1247 } 1248 return ms 1249 } 1250 return mi.MessageOf(x) 1251 } 1252 1253 // Deprecated: Use Enrollments.ProtoReflect.Descriptor instead. 1254 func (*Enrollments) Descriptor() ([]byte, []int) { 1255 return file_qf_types_proto_rawDescGZIP(), []int{9} 1256 } 1257 1258 func (x *Enrollments) GetEnrollments() []*Enrollment { 1259 if x != nil { 1260 return x.Enrollments 1261 } 1262 return nil 1263 } 1264 1265 type Assignment struct { 1266 state protoimpl.MessageState 1267 sizeCache protoimpl.SizeCache 1268 unknownFields protoimpl.UnknownFields 1269 1270 ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` 1271 CourseID uint64 `protobuf:"varint,2,opt,name=CourseID,proto3" json:"CourseID,omitempty"` // foreign key 1272 Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` 1273 Deadline *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=deadline,proto3" json:"deadline,omitempty" gorm:"serializer:timestamp;type:datetime"` 1274 AutoApprove bool `protobuf:"varint,5,opt,name=autoApprove,proto3" json:"autoApprove,omitempty"` 1275 Order uint32 `protobuf:"varint,6,opt,name=order,proto3" json:"order,omitempty"` 1276 IsGroupLab bool `protobuf:"varint,7,opt,name=isGroupLab,proto3" json:"isGroupLab,omitempty"` 1277 ScoreLimit uint32 `protobuf:"varint,8,opt,name=scoreLimit,proto3" json:"scoreLimit,omitempty"` // minimal score limit for auto approval 1278 Reviewers uint32 `protobuf:"varint,9,opt,name=reviewers,proto3" json:"reviewers,omitempty"` // number of reviewers that will review submissions for this assignment 1279 ContainerTimeout uint32 `protobuf:"varint,10,opt,name=containerTimeout,proto3" json:"containerTimeout,omitempty"` // container timeout for this assignment 1280 Submissions []*Submission `protobuf:"bytes,11,rep,name=submissions,proto3" json:"submissions,omitempty"` // submissions produced for this assignment 1281 Tasks []*Task `protobuf:"bytes,12,rep,name=tasks,proto3" json:"tasks,omitempty"` // tasks associated with this assignment 1282 GradingBenchmarks []*GradingBenchmark `protobuf:"bytes,13,rep,name=gradingBenchmarks,proto3" json:"gradingBenchmarks,omitempty"` // grading benchmarks for this assignment 1283 } 1284 1285 func (x *Assignment) Reset() { 1286 *x = Assignment{} 1287 if protoimpl.UnsafeEnabled { 1288 mi := &file_qf_types_proto_msgTypes[10] 1289 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1290 ms.StoreMessageInfo(mi) 1291 } 1292 } 1293 1294 func (x *Assignment) String() string { 1295 return protoimpl.X.MessageStringOf(x) 1296 } 1297 1298 func (*Assignment) ProtoMessage() {} 1299 1300 func (x *Assignment) ProtoReflect() protoreflect.Message { 1301 mi := &file_qf_types_proto_msgTypes[10] 1302 if protoimpl.UnsafeEnabled && x != nil { 1303 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1304 if ms.LoadMessageInfo() == nil { 1305 ms.StoreMessageInfo(mi) 1306 } 1307 return ms 1308 } 1309 return mi.MessageOf(x) 1310 } 1311 1312 // Deprecated: Use Assignment.ProtoReflect.Descriptor instead. 1313 func (*Assignment) Descriptor() ([]byte, []int) { 1314 return file_qf_types_proto_rawDescGZIP(), []int{10} 1315 } 1316 1317 func (x *Assignment) GetID() uint64 { 1318 if x != nil { 1319 return x.ID 1320 } 1321 return 0 1322 } 1323 1324 func (x *Assignment) GetCourseID() uint64 { 1325 if x != nil { 1326 return x.CourseID 1327 } 1328 return 0 1329 } 1330 1331 func (x *Assignment) GetName() string { 1332 if x != nil { 1333 return x.Name 1334 } 1335 return "" 1336 } 1337 1338 func (x *Assignment) GetDeadline() *timestamppb.Timestamp { 1339 if x != nil { 1340 return x.Deadline 1341 } 1342 return nil 1343 } 1344 1345 func (x *Assignment) GetAutoApprove() bool { 1346 if x != nil { 1347 return x.AutoApprove 1348 } 1349 return false 1350 } 1351 1352 func (x *Assignment) GetOrder() uint32 { 1353 if x != nil { 1354 return x.Order 1355 } 1356 return 0 1357 } 1358 1359 func (x *Assignment) GetIsGroupLab() bool { 1360 if x != nil { 1361 return x.IsGroupLab 1362 } 1363 return false 1364 } 1365 1366 func (x *Assignment) GetScoreLimit() uint32 { 1367 if x != nil { 1368 return x.ScoreLimit 1369 } 1370 return 0 1371 } 1372 1373 func (x *Assignment) GetReviewers() uint32 { 1374 if x != nil { 1375 return x.Reviewers 1376 } 1377 return 0 1378 } 1379 1380 func (x *Assignment) GetContainerTimeout() uint32 { 1381 if x != nil { 1382 return x.ContainerTimeout 1383 } 1384 return 0 1385 } 1386 1387 func (x *Assignment) GetSubmissions() []*Submission { 1388 if x != nil { 1389 return x.Submissions 1390 } 1391 return nil 1392 } 1393 1394 func (x *Assignment) GetTasks() []*Task { 1395 if x != nil { 1396 return x.Tasks 1397 } 1398 return nil 1399 } 1400 1401 func (x *Assignment) GetGradingBenchmarks() []*GradingBenchmark { 1402 if x != nil { 1403 return x.GradingBenchmarks 1404 } 1405 return nil 1406 } 1407 1408 type Task struct { 1409 state protoimpl.MessageState 1410 sizeCache protoimpl.SizeCache 1411 unknownFields protoimpl.UnknownFields 1412 1413 ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` 1414 AssignmentID uint64 `protobuf:"varint,2,opt,name=assignmentID,proto3" json:"assignmentID,omitempty"` // foreign key 1415 AssignmentOrder uint32 `protobuf:"varint,3,opt,name=assignmentOrder,proto3" json:"assignmentOrder,omitempty"` 1416 Title string `protobuf:"bytes,4,opt,name=title,proto3" json:"title,omitempty"` 1417 Body string `protobuf:"bytes,5,opt,name=body,proto3" json:"body,omitempty"` 1418 Name string `protobuf:"bytes,6,opt,name=name,proto3" json:"name,omitempty"` 1419 Issues []*Issue `protobuf:"bytes,7,rep,name=issues,proto3" json:"issues,omitempty"` // Issues that use this task as a benchmark 1420 } 1421 1422 func (x *Task) Reset() { 1423 *x = Task{} 1424 if protoimpl.UnsafeEnabled { 1425 mi := &file_qf_types_proto_msgTypes[11] 1426 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1427 ms.StoreMessageInfo(mi) 1428 } 1429 } 1430 1431 func (x *Task) String() string { 1432 return protoimpl.X.MessageStringOf(x) 1433 } 1434 1435 func (*Task) ProtoMessage() {} 1436 1437 func (x *Task) ProtoReflect() protoreflect.Message { 1438 mi := &file_qf_types_proto_msgTypes[11] 1439 if protoimpl.UnsafeEnabled && x != nil { 1440 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1441 if ms.LoadMessageInfo() == nil { 1442 ms.StoreMessageInfo(mi) 1443 } 1444 return ms 1445 } 1446 return mi.MessageOf(x) 1447 } 1448 1449 // Deprecated: Use Task.ProtoReflect.Descriptor instead. 1450 func (*Task) Descriptor() ([]byte, []int) { 1451 return file_qf_types_proto_rawDescGZIP(), []int{11} 1452 } 1453 1454 func (x *Task) GetID() uint64 { 1455 if x != nil { 1456 return x.ID 1457 } 1458 return 0 1459 } 1460 1461 func (x *Task) GetAssignmentID() uint64 { 1462 if x != nil { 1463 return x.AssignmentID 1464 } 1465 return 0 1466 } 1467 1468 func (x *Task) GetAssignmentOrder() uint32 { 1469 if x != nil { 1470 return x.AssignmentOrder 1471 } 1472 return 0 1473 } 1474 1475 func (x *Task) GetTitle() string { 1476 if x != nil { 1477 return x.Title 1478 } 1479 return "" 1480 } 1481 1482 func (x *Task) GetBody() string { 1483 if x != nil { 1484 return x.Body 1485 } 1486 return "" 1487 } 1488 1489 func (x *Task) GetName() string { 1490 if x != nil { 1491 return x.Name 1492 } 1493 return "" 1494 } 1495 1496 func (x *Task) GetIssues() []*Issue { 1497 if x != nil { 1498 return x.Issues 1499 } 1500 return nil 1501 } 1502 1503 type Issue struct { 1504 state protoimpl.MessageState 1505 sizeCache protoimpl.SizeCache 1506 unknownFields protoimpl.UnknownFields 1507 1508 ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` 1509 RepositoryID uint64 `protobuf:"varint,2,opt,name=repositoryID,proto3" json:"repositoryID,omitempty"` // Represents the internal ID of a repository 1510 TaskID uint64 `protobuf:"varint,3,opt,name=taskID,proto3" json:"taskID,omitempty"` // Task that this issue draws its content from 1511 ScmIssueNumber uint64 `protobuf:"varint,4,opt,name=ScmIssueNumber,proto3" json:"ScmIssueNumber,omitempty"` // Issue number on scm. Needed for associating db issue with scm issue 1512 } 1513 1514 func (x *Issue) Reset() { 1515 *x = Issue{} 1516 if protoimpl.UnsafeEnabled { 1517 mi := &file_qf_types_proto_msgTypes[12] 1518 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1519 ms.StoreMessageInfo(mi) 1520 } 1521 } 1522 1523 func (x *Issue) String() string { 1524 return protoimpl.X.MessageStringOf(x) 1525 } 1526 1527 func (*Issue) ProtoMessage() {} 1528 1529 func (x *Issue) ProtoReflect() protoreflect.Message { 1530 mi := &file_qf_types_proto_msgTypes[12] 1531 if protoimpl.UnsafeEnabled && x != nil { 1532 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1533 if ms.LoadMessageInfo() == nil { 1534 ms.StoreMessageInfo(mi) 1535 } 1536 return ms 1537 } 1538 return mi.MessageOf(x) 1539 } 1540 1541 // Deprecated: Use Issue.ProtoReflect.Descriptor instead. 1542 func (*Issue) Descriptor() ([]byte, []int) { 1543 return file_qf_types_proto_rawDescGZIP(), []int{12} 1544 } 1545 1546 func (x *Issue) GetID() uint64 { 1547 if x != nil { 1548 return x.ID 1549 } 1550 return 0 1551 } 1552 1553 func (x *Issue) GetRepositoryID() uint64 { 1554 if x != nil { 1555 return x.RepositoryID 1556 } 1557 return 0 1558 } 1559 1560 func (x *Issue) GetTaskID() uint64 { 1561 if x != nil { 1562 return x.TaskID 1563 } 1564 return 0 1565 } 1566 1567 func (x *Issue) GetScmIssueNumber() uint64 { 1568 if x != nil { 1569 return x.ScmIssueNumber 1570 } 1571 return 0 1572 } 1573 1574 type PullRequest struct { 1575 state protoimpl.MessageState 1576 sizeCache protoimpl.SizeCache 1577 unknownFields protoimpl.UnknownFields 1578 1579 ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` 1580 ScmRepositoryID uint64 `protobuf:"varint,2,opt,name=ScmRepositoryID,proto3" json:"ScmRepositoryID,omitempty"` // Represents the scm repository ID 1581 TaskID uint64 `protobuf:"varint,3,opt,name=taskID,proto3" json:"taskID,omitempty"` // Foreign key 1582 IssueID uint64 `protobuf:"varint,4,opt,name=issueID,proto3" json:"issueID,omitempty"` // Foreign key 1583 UserID uint64 `protobuf:"varint,5,opt,name=userID,proto3" json:"userID,omitempty"` // The user who owns this PR 1584 ScmCommentID uint64 `protobuf:"varint,6,opt,name=ScmCommentID,proto3" json:"ScmCommentID,omitempty"` // Scm ID of the comment used for automatic feedback 1585 SourceBranch string `protobuf:"bytes,7,opt,name=sourceBranch,proto3" json:"sourceBranch,omitempty"` // The source branch for this pull request 1586 Number uint64 `protobuf:"varint,8,opt,name=number,proto3" json:"number,omitempty"` // Pull request number 1587 Stage PullRequest_Stage `protobuf:"varint,9,opt,name=stage,proto3,enum=qf.PullRequest_Stage" json:"stage,omitempty"` 1588 } 1589 1590 func (x *PullRequest) Reset() { 1591 *x = PullRequest{} 1592 if protoimpl.UnsafeEnabled { 1593 mi := &file_qf_types_proto_msgTypes[13] 1594 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1595 ms.StoreMessageInfo(mi) 1596 } 1597 } 1598 1599 func (x *PullRequest) String() string { 1600 return protoimpl.X.MessageStringOf(x) 1601 } 1602 1603 func (*PullRequest) ProtoMessage() {} 1604 1605 func (x *PullRequest) ProtoReflect() protoreflect.Message { 1606 mi := &file_qf_types_proto_msgTypes[13] 1607 if protoimpl.UnsafeEnabled && x != nil { 1608 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1609 if ms.LoadMessageInfo() == nil { 1610 ms.StoreMessageInfo(mi) 1611 } 1612 return ms 1613 } 1614 return mi.MessageOf(x) 1615 } 1616 1617 // Deprecated: Use PullRequest.ProtoReflect.Descriptor instead. 1618 func (*PullRequest) Descriptor() ([]byte, []int) { 1619 return file_qf_types_proto_rawDescGZIP(), []int{13} 1620 } 1621 1622 func (x *PullRequest) GetID() uint64 { 1623 if x != nil { 1624 return x.ID 1625 } 1626 return 0 1627 } 1628 1629 func (x *PullRequest) GetScmRepositoryID() uint64 { 1630 if x != nil { 1631 return x.ScmRepositoryID 1632 } 1633 return 0 1634 } 1635 1636 func (x *PullRequest) GetTaskID() uint64 { 1637 if x != nil { 1638 return x.TaskID 1639 } 1640 return 0 1641 } 1642 1643 func (x *PullRequest) GetIssueID() uint64 { 1644 if x != nil { 1645 return x.IssueID 1646 } 1647 return 0 1648 } 1649 1650 func (x *PullRequest) GetUserID() uint64 { 1651 if x != nil { 1652 return x.UserID 1653 } 1654 return 0 1655 } 1656 1657 func (x *PullRequest) GetScmCommentID() uint64 { 1658 if x != nil { 1659 return x.ScmCommentID 1660 } 1661 return 0 1662 } 1663 1664 func (x *PullRequest) GetSourceBranch() string { 1665 if x != nil { 1666 return x.SourceBranch 1667 } 1668 return "" 1669 } 1670 1671 func (x *PullRequest) GetNumber() uint64 { 1672 if x != nil { 1673 return x.Number 1674 } 1675 return 0 1676 } 1677 1678 func (x *PullRequest) GetStage() PullRequest_Stage { 1679 if x != nil { 1680 return x.Stage 1681 } 1682 return PullRequest_NONE 1683 } 1684 1685 type Assignments struct { 1686 state protoimpl.MessageState 1687 sizeCache protoimpl.SizeCache 1688 unknownFields protoimpl.UnknownFields 1689 1690 Assignments []*Assignment `protobuf:"bytes,1,rep,name=assignments,proto3" json:"assignments,omitempty"` 1691 } 1692 1693 func (x *Assignments) Reset() { 1694 *x = Assignments{} 1695 if protoimpl.UnsafeEnabled { 1696 mi := &file_qf_types_proto_msgTypes[14] 1697 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1698 ms.StoreMessageInfo(mi) 1699 } 1700 } 1701 1702 func (x *Assignments) String() string { 1703 return protoimpl.X.MessageStringOf(x) 1704 } 1705 1706 func (*Assignments) ProtoMessage() {} 1707 1708 func (x *Assignments) ProtoReflect() protoreflect.Message { 1709 mi := &file_qf_types_proto_msgTypes[14] 1710 if protoimpl.UnsafeEnabled && x != nil { 1711 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1712 if ms.LoadMessageInfo() == nil { 1713 ms.StoreMessageInfo(mi) 1714 } 1715 return ms 1716 } 1717 return mi.MessageOf(x) 1718 } 1719 1720 // Deprecated: Use Assignments.ProtoReflect.Descriptor instead. 1721 func (*Assignments) Descriptor() ([]byte, []int) { 1722 return file_qf_types_proto_rawDescGZIP(), []int{14} 1723 } 1724 1725 func (x *Assignments) GetAssignments() []*Assignment { 1726 if x != nil { 1727 return x.Assignments 1728 } 1729 return nil 1730 } 1731 1732 type Submission struct { 1733 state protoimpl.MessageState 1734 sizeCache protoimpl.SizeCache 1735 unknownFields protoimpl.UnknownFields 1736 1737 ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` 1738 AssignmentID uint64 `protobuf:"varint,2,opt,name=AssignmentID,proto3" json:"AssignmentID,omitempty"` // foreign key 1739 UserID uint64 `protobuf:"varint,3,opt,name=userID,proto3" json:"userID,omitempty"` 1740 GroupID uint64 `protobuf:"varint,4,opt,name=groupID,proto3" json:"groupID,omitempty"` 1741 Score uint32 `protobuf:"varint,5,opt,name=score,proto3" json:"score,omitempty"` 1742 CommitHash string `protobuf:"bytes,6,opt,name=commitHash,proto3" json:"commitHash,omitempty"` 1743 Released bool `protobuf:"varint,7,opt,name=released,proto3" json:"released,omitempty"` // true => feedback is visible to the student or group members 1744 Status Submission_Status `protobuf:"varint,8,opt,name=status,proto3,enum=qf.Submission_Status" json:"status,omitempty"` 1745 ApprovedDate *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=approvedDate,proto3" json:"approvedDate,omitempty" gorm:"serializer:timestamp;type:datetime"` 1746 Reviews []*Review `protobuf:"bytes,10,rep,name=reviews,proto3" json:"reviews,omitempty"` // reviews produced for this submission 1747 BuildInfo *score.BuildInfo `protobuf:"bytes,11,opt,name=BuildInfo,proto3" json:"BuildInfo,omitempty"` // build info for tests 1748 Scores []*score.Score `protobuf:"bytes,12,rep,name=Scores,proto3" json:"Scores,omitempty"` // list of scores for different tests 1749 } 1750 1751 func (x *Submission) Reset() { 1752 *x = Submission{} 1753 if protoimpl.UnsafeEnabled { 1754 mi := &file_qf_types_proto_msgTypes[15] 1755 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1756 ms.StoreMessageInfo(mi) 1757 } 1758 } 1759 1760 func (x *Submission) String() string { 1761 return protoimpl.X.MessageStringOf(x) 1762 } 1763 1764 func (*Submission) ProtoMessage() {} 1765 1766 func (x *Submission) ProtoReflect() protoreflect.Message { 1767 mi := &file_qf_types_proto_msgTypes[15] 1768 if protoimpl.UnsafeEnabled && x != nil { 1769 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1770 if ms.LoadMessageInfo() == nil { 1771 ms.StoreMessageInfo(mi) 1772 } 1773 return ms 1774 } 1775 return mi.MessageOf(x) 1776 } 1777 1778 // Deprecated: Use Submission.ProtoReflect.Descriptor instead. 1779 func (*Submission) Descriptor() ([]byte, []int) { 1780 return file_qf_types_proto_rawDescGZIP(), []int{15} 1781 } 1782 1783 func (x *Submission) GetID() uint64 { 1784 if x != nil { 1785 return x.ID 1786 } 1787 return 0 1788 } 1789 1790 func (x *Submission) GetAssignmentID() uint64 { 1791 if x != nil { 1792 return x.AssignmentID 1793 } 1794 return 0 1795 } 1796 1797 func (x *Submission) GetUserID() uint64 { 1798 if x != nil { 1799 return x.UserID 1800 } 1801 return 0 1802 } 1803 1804 func (x *Submission) GetGroupID() uint64 { 1805 if x != nil { 1806 return x.GroupID 1807 } 1808 return 0 1809 } 1810 1811 func (x *Submission) GetScore() uint32 { 1812 if x != nil { 1813 return x.Score 1814 } 1815 return 0 1816 } 1817 1818 func (x *Submission) GetCommitHash() string { 1819 if x != nil { 1820 return x.CommitHash 1821 } 1822 return "" 1823 } 1824 1825 func (x *Submission) GetReleased() bool { 1826 if x != nil { 1827 return x.Released 1828 } 1829 return false 1830 } 1831 1832 func (x *Submission) GetStatus() Submission_Status { 1833 if x != nil { 1834 return x.Status 1835 } 1836 return Submission_NONE 1837 } 1838 1839 func (x *Submission) GetApprovedDate() *timestamppb.Timestamp { 1840 if x != nil { 1841 return x.ApprovedDate 1842 } 1843 return nil 1844 } 1845 1846 func (x *Submission) GetReviews() []*Review { 1847 if x != nil { 1848 return x.Reviews 1849 } 1850 return nil 1851 } 1852 1853 func (x *Submission) GetBuildInfo() *score.BuildInfo { 1854 if x != nil { 1855 return x.BuildInfo 1856 } 1857 return nil 1858 } 1859 1860 func (x *Submission) GetScores() []*score.Score { 1861 if x != nil { 1862 return x.Scores 1863 } 1864 return nil 1865 } 1866 1867 type Submissions struct { 1868 state protoimpl.MessageState 1869 sizeCache protoimpl.SizeCache 1870 unknownFields protoimpl.UnknownFields 1871 1872 Submissions []*Submission `protobuf:"bytes,1,rep,name=submissions,proto3" json:"submissions,omitempty"` 1873 } 1874 1875 func (x *Submissions) Reset() { 1876 *x = Submissions{} 1877 if protoimpl.UnsafeEnabled { 1878 mi := &file_qf_types_proto_msgTypes[16] 1879 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1880 ms.StoreMessageInfo(mi) 1881 } 1882 } 1883 1884 func (x *Submissions) String() string { 1885 return protoimpl.X.MessageStringOf(x) 1886 } 1887 1888 func (*Submissions) ProtoMessage() {} 1889 1890 func (x *Submissions) ProtoReflect() protoreflect.Message { 1891 mi := &file_qf_types_proto_msgTypes[16] 1892 if protoimpl.UnsafeEnabled && x != nil { 1893 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1894 if ms.LoadMessageInfo() == nil { 1895 ms.StoreMessageInfo(mi) 1896 } 1897 return ms 1898 } 1899 return mi.MessageOf(x) 1900 } 1901 1902 // Deprecated: Use Submissions.ProtoReflect.Descriptor instead. 1903 func (*Submissions) Descriptor() ([]byte, []int) { 1904 return file_qf_types_proto_rawDescGZIP(), []int{16} 1905 } 1906 1907 func (x *Submissions) GetSubmissions() []*Submission { 1908 if x != nil { 1909 return x.Submissions 1910 } 1911 return nil 1912 } 1913 1914 type GradingBenchmark struct { 1915 state protoimpl.MessageState 1916 sizeCache protoimpl.SizeCache 1917 unknownFields protoimpl.UnknownFields 1918 1919 ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` 1920 CourseID uint64 `protobuf:"varint,2,opt,name=CourseID,proto3" json:"CourseID,omitempty"` // foreign key 1921 AssignmentID uint64 `protobuf:"varint,3,opt,name=AssignmentID,proto3" json:"AssignmentID,omitempty"` // foreign key 1922 ReviewID uint64 `protobuf:"varint,4,opt,name=ReviewID,proto3" json:"ReviewID,omitempty"` // foreign key 1923 Heading string `protobuf:"bytes,5,opt,name=heading,proto3" json:"heading,omitempty"` 1924 Comment string `protobuf:"bytes,6,opt,name=comment,proto3" json:"comment,omitempty"` 1925 Criteria []*GradingCriterion `protobuf:"bytes,7,rep,name=criteria,proto3" json:"criteria,omitempty" gorm:"foreignKey:BenchmarkID"` 1926 } 1927 1928 func (x *GradingBenchmark) Reset() { 1929 *x = GradingBenchmark{} 1930 if protoimpl.UnsafeEnabled { 1931 mi := &file_qf_types_proto_msgTypes[17] 1932 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1933 ms.StoreMessageInfo(mi) 1934 } 1935 } 1936 1937 func (x *GradingBenchmark) String() string { 1938 return protoimpl.X.MessageStringOf(x) 1939 } 1940 1941 func (*GradingBenchmark) ProtoMessage() {} 1942 1943 func (x *GradingBenchmark) ProtoReflect() protoreflect.Message { 1944 mi := &file_qf_types_proto_msgTypes[17] 1945 if protoimpl.UnsafeEnabled && x != nil { 1946 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1947 if ms.LoadMessageInfo() == nil { 1948 ms.StoreMessageInfo(mi) 1949 } 1950 return ms 1951 } 1952 return mi.MessageOf(x) 1953 } 1954 1955 // Deprecated: Use GradingBenchmark.ProtoReflect.Descriptor instead. 1956 func (*GradingBenchmark) Descriptor() ([]byte, []int) { 1957 return file_qf_types_proto_rawDescGZIP(), []int{17} 1958 } 1959 1960 func (x *GradingBenchmark) GetID() uint64 { 1961 if x != nil { 1962 return x.ID 1963 } 1964 return 0 1965 } 1966 1967 func (x *GradingBenchmark) GetCourseID() uint64 { 1968 if x != nil { 1969 return x.CourseID 1970 } 1971 return 0 1972 } 1973 1974 func (x *GradingBenchmark) GetAssignmentID() uint64 { 1975 if x != nil { 1976 return x.AssignmentID 1977 } 1978 return 0 1979 } 1980 1981 func (x *GradingBenchmark) GetReviewID() uint64 { 1982 if x != nil { 1983 return x.ReviewID 1984 } 1985 return 0 1986 } 1987 1988 func (x *GradingBenchmark) GetHeading() string { 1989 if x != nil { 1990 return x.Heading 1991 } 1992 return "" 1993 } 1994 1995 func (x *GradingBenchmark) GetComment() string { 1996 if x != nil { 1997 return x.Comment 1998 } 1999 return "" 2000 } 2001 2002 func (x *GradingBenchmark) GetCriteria() []*GradingCriterion { 2003 if x != nil { 2004 return x.Criteria 2005 } 2006 return nil 2007 } 2008 2009 type Benchmarks struct { 2010 state protoimpl.MessageState 2011 sizeCache protoimpl.SizeCache 2012 unknownFields protoimpl.UnknownFields 2013 2014 Benchmarks []*GradingBenchmark `protobuf:"bytes,1,rep,name=benchmarks,proto3" json:"benchmarks,omitempty"` 2015 } 2016 2017 func (x *Benchmarks) Reset() { 2018 *x = Benchmarks{} 2019 if protoimpl.UnsafeEnabled { 2020 mi := &file_qf_types_proto_msgTypes[18] 2021 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2022 ms.StoreMessageInfo(mi) 2023 } 2024 } 2025 2026 func (x *Benchmarks) String() string { 2027 return protoimpl.X.MessageStringOf(x) 2028 } 2029 2030 func (*Benchmarks) ProtoMessage() {} 2031 2032 func (x *Benchmarks) ProtoReflect() protoreflect.Message { 2033 mi := &file_qf_types_proto_msgTypes[18] 2034 if protoimpl.UnsafeEnabled && x != nil { 2035 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2036 if ms.LoadMessageInfo() == nil { 2037 ms.StoreMessageInfo(mi) 2038 } 2039 return ms 2040 } 2041 return mi.MessageOf(x) 2042 } 2043 2044 // Deprecated: Use Benchmarks.ProtoReflect.Descriptor instead. 2045 func (*Benchmarks) Descriptor() ([]byte, []int) { 2046 return file_qf_types_proto_rawDescGZIP(), []int{18} 2047 } 2048 2049 func (x *Benchmarks) GetBenchmarks() []*GradingBenchmark { 2050 if x != nil { 2051 return x.Benchmarks 2052 } 2053 return nil 2054 } 2055 2056 type GradingCriterion struct { 2057 state protoimpl.MessageState 2058 sizeCache protoimpl.SizeCache 2059 unknownFields protoimpl.UnknownFields 2060 2061 ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` 2062 BenchmarkID uint64 `protobuf:"varint,2,opt,name=BenchmarkID,proto3" json:"BenchmarkID,omitempty"` // foreign key 2063 CourseID uint64 `protobuf:"varint,3,opt,name=CourseID,proto3" json:"CourseID,omitempty"` // foreign key 2064 Points uint64 `protobuf:"varint,4,opt,name=points,proto3" json:"points,omitempty"` 2065 Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"` 2066 Grade GradingCriterion_Grade `protobuf:"varint,6,opt,name=grade,proto3,enum=qf.GradingCriterion_Grade" json:"grade,omitempty"` 2067 Comment string `protobuf:"bytes,7,opt,name=comment,proto3" json:"comment,omitempty"` 2068 } 2069 2070 func (x *GradingCriterion) Reset() { 2071 *x = GradingCriterion{} 2072 if protoimpl.UnsafeEnabled { 2073 mi := &file_qf_types_proto_msgTypes[19] 2074 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2075 ms.StoreMessageInfo(mi) 2076 } 2077 } 2078 2079 func (x *GradingCriterion) String() string { 2080 return protoimpl.X.MessageStringOf(x) 2081 } 2082 2083 func (*GradingCriterion) ProtoMessage() {} 2084 2085 func (x *GradingCriterion) ProtoReflect() protoreflect.Message { 2086 mi := &file_qf_types_proto_msgTypes[19] 2087 if protoimpl.UnsafeEnabled && x != nil { 2088 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2089 if ms.LoadMessageInfo() == nil { 2090 ms.StoreMessageInfo(mi) 2091 } 2092 return ms 2093 } 2094 return mi.MessageOf(x) 2095 } 2096 2097 // Deprecated: Use GradingCriterion.ProtoReflect.Descriptor instead. 2098 func (*GradingCriterion) Descriptor() ([]byte, []int) { 2099 return file_qf_types_proto_rawDescGZIP(), []int{19} 2100 } 2101 2102 func (x *GradingCriterion) GetID() uint64 { 2103 if x != nil { 2104 return x.ID 2105 } 2106 return 0 2107 } 2108 2109 func (x *GradingCriterion) GetBenchmarkID() uint64 { 2110 if x != nil { 2111 return x.BenchmarkID 2112 } 2113 return 0 2114 } 2115 2116 func (x *GradingCriterion) GetCourseID() uint64 { 2117 if x != nil { 2118 return x.CourseID 2119 } 2120 return 0 2121 } 2122 2123 func (x *GradingCriterion) GetPoints() uint64 { 2124 if x != nil { 2125 return x.Points 2126 } 2127 return 0 2128 } 2129 2130 func (x *GradingCriterion) GetDescription() string { 2131 if x != nil { 2132 return x.Description 2133 } 2134 return "" 2135 } 2136 2137 func (x *GradingCriterion) GetGrade() GradingCriterion_Grade { 2138 if x != nil { 2139 return x.Grade 2140 } 2141 return GradingCriterion_NONE 2142 } 2143 2144 func (x *GradingCriterion) GetComment() string { 2145 if x != nil { 2146 return x.Comment 2147 } 2148 return "" 2149 } 2150 2151 type Review struct { 2152 state protoimpl.MessageState 2153 sizeCache protoimpl.SizeCache 2154 unknownFields protoimpl.UnknownFields 2155 2156 ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` 2157 SubmissionID uint64 `protobuf:"varint,2,opt,name=SubmissionID,proto3" json:"SubmissionID,omitempty"` // foreign key 2158 ReviewerID uint64 `protobuf:"varint,3,opt,name=ReviewerID,proto3" json:"ReviewerID,omitempty"` // UserID of the reviewer 2159 Feedback string `protobuf:"bytes,4,opt,name=feedback,proto3" json:"feedback,omitempty"` 2160 Ready bool `protobuf:"varint,5,opt,name=ready,proto3" json:"ready,omitempty"` 2161 Score uint32 `protobuf:"varint,6,opt,name=score,proto3" json:"score,omitempty"` 2162 GradingBenchmarks []*GradingBenchmark `protobuf:"bytes,7,rep,name=gradingBenchmarks,proto3" json:"gradingBenchmarks,omitempty" gorm:"foreignKey:ReviewID"` 2163 Edited *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=edited,proto3" json:"edited,omitempty" gorm:"serializer:timestamp;type:datetime"` 2164 } 2165 2166 func (x *Review) Reset() { 2167 *x = Review{} 2168 if protoimpl.UnsafeEnabled { 2169 mi := &file_qf_types_proto_msgTypes[20] 2170 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2171 ms.StoreMessageInfo(mi) 2172 } 2173 } 2174 2175 func (x *Review) String() string { 2176 return protoimpl.X.MessageStringOf(x) 2177 } 2178 2179 func (*Review) ProtoMessage() {} 2180 2181 func (x *Review) ProtoReflect() protoreflect.Message { 2182 mi := &file_qf_types_proto_msgTypes[20] 2183 if protoimpl.UnsafeEnabled && x != nil { 2184 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2185 if ms.LoadMessageInfo() == nil { 2186 ms.StoreMessageInfo(mi) 2187 } 2188 return ms 2189 } 2190 return mi.MessageOf(x) 2191 } 2192 2193 // Deprecated: Use Review.ProtoReflect.Descriptor instead. 2194 func (*Review) Descriptor() ([]byte, []int) { 2195 return file_qf_types_proto_rawDescGZIP(), []int{20} 2196 } 2197 2198 func (x *Review) GetID() uint64 { 2199 if x != nil { 2200 return x.ID 2201 } 2202 return 0 2203 } 2204 2205 func (x *Review) GetSubmissionID() uint64 { 2206 if x != nil { 2207 return x.SubmissionID 2208 } 2209 return 0 2210 } 2211 2212 func (x *Review) GetReviewerID() uint64 { 2213 if x != nil { 2214 return x.ReviewerID 2215 } 2216 return 0 2217 } 2218 2219 func (x *Review) GetFeedback() string { 2220 if x != nil { 2221 return x.Feedback 2222 } 2223 return "" 2224 } 2225 2226 func (x *Review) GetReady() bool { 2227 if x != nil { 2228 return x.Ready 2229 } 2230 return false 2231 } 2232 2233 func (x *Review) GetScore() uint32 { 2234 if x != nil { 2235 return x.Score 2236 } 2237 return 0 2238 } 2239 2240 func (x *Review) GetGradingBenchmarks() []*GradingBenchmark { 2241 if x != nil { 2242 return x.GradingBenchmarks 2243 } 2244 return nil 2245 } 2246 2247 func (x *Review) GetEdited() *timestamppb.Timestamp { 2248 if x != nil { 2249 return x.Edited 2250 } 2251 return nil 2252 } 2253 2254 var File_qf_types_proto protoreflect.FileDescriptor 2255 2256 var file_qf_types_proto_rawDesc = []byte{ 2257 0x0a, 0x0e, 0x71, 0x66, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 2258 0x12, 0x02, 0x71, 0x66, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 2259 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 2260 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x15, 0x6b, 0x69, 0x74, 0x2f, 0x73, 0x63, 0x6f, 0x72, 0x65, 2261 0x2f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0e, 0x70, 0x61, 2262 0x74, 0x63, 0x68, 0x2f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc6, 0x02, 0x0a, 2263 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 2264 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x73, 0x41, 0x64, 0x6d, 0x69, 0x6e, 2265 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x49, 0x73, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 2266 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 2267 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x49, 0x44, 2268 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x49, 2269 0x44, 0x12, 0x14, 0x0a, 0x05, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 2270 0x52, 0x05, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x76, 0x61, 0x74, 0x61, 2271 0x72, 0x55, 0x52, 0x4c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x41, 0x76, 0x61, 0x74, 2272 0x61, 0x72, 0x55, 0x52, 0x4c, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x18, 0x07, 2273 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x55, 2274 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 2275 0x52, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x20, 0x0a, 2276 0x0b, 0x53, 0x63, 0x6d, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x44, 0x18, 0x09, 0x20, 0x01, 2277 0x28, 0x04, 0x52, 0x0b, 0x53, 0x63, 0x6d, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x44, 0x12, 2278 0x22, 0x0a, 0x0c, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 2279 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 2280 0x6b, 0x65, 0x6e, 0x12, 0x30, 0x0a, 0x0b, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 2281 0x74, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x66, 0x2e, 0x45, 0x6e, 2282 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0b, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 2283 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x27, 0x0a, 0x05, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x1e, 2284 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x08, 0x2e, 2285 0x71, 0x66, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x22, 0xf8, 2286 0x02, 0x0a, 0x05, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 2287 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x33, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 2288 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1f, 0xca, 0xb5, 0x03, 0x1b, 0xa2, 0x01, 0x18, 0x67, 2289 0x6f, 0x72, 0x6d, 0x3a, 0x22, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 2290 0x3a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 2291 0x08, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 2292 0x1f, 0xca, 0xb5, 0x03, 0x1b, 0xa2, 0x01, 0x18, 0x67, 0x6f, 0x72, 0x6d, 0x3a, 0x22, 0x75, 0x6e, 2293 0x69, 0x71, 0x75, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x3a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, 2294 0x52, 0x08, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x63, 2295 0x6d, 0x54, 0x65, 0x61, 0x6d, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x53, 2296 0x63, 0x6d, 0x54, 0x65, 0x61, 0x6d, 0x49, 0x44, 0x12, 0x2d, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 2297 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x71, 0x66, 0x2e, 0x47, 0x72, 2298 0x6f, 0x75, 0x70, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 2299 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x44, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 2300 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x71, 0x66, 0x2e, 0x55, 0x73, 0x65, 0x72, 2301 0x42, 0x24, 0xca, 0xb5, 0x03, 0x20, 0xa2, 0x01, 0x1d, 0x67, 0x6f, 0x72, 0x6d, 0x3a, 0x22, 0x6d, 2302 0x61, 0x6e, 0x79, 0x32, 0x6d, 0x61, 0x6e, 0x79, 0x3a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x75, 2303 0x73, 0x65, 0x72, 0x73, 0x3b, 0x22, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x12, 0x30, 0x0a, 2304 0x0b, 0x65, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x07, 0x20, 0x03, 2305 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x66, 0x2e, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 2306 0x6e, 0x74, 0x52, 0x0b, 0x65, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 2307 0x28, 0x0a, 0x0b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0b, 2308 0x0a, 0x07, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x41, 2309 0x50, 0x50, 0x52, 0x4f, 0x56, 0x45, 0x44, 0x10, 0x01, 0x22, 0x2b, 0x0a, 0x06, 0x47, 0x72, 0x6f, 2310 0x75, 0x70, 0x73, 0x12, 0x21, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 2311 0x03, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x71, 0x66, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x06, 2312 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x22, 0xcb, 0x04, 0x0a, 0x06, 0x43, 0x6f, 0x75, 0x72, 0x73, 2313 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 2314 0x44, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 2315 0x6f, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x63, 0x6f, 0x75, 0x72, 2316 0x73, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x6e, 2317 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 2318 0x34, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x20, 0xca, 2319 0xb5, 0x03, 0x1c, 0xa2, 0x01, 0x19, 0x67, 0x6f, 0x72, 0x6d, 0x3a, 0x22, 0x75, 0x6e, 0x69, 0x71, 2320 0x75, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x3a, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x22, 0x52, 2321 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x34, 0x0a, 0x04, 0x79, 0x65, 0x61, 0x72, 0x18, 0x05, 0x20, 2322 0x01, 0x28, 0x0d, 0x42, 0x20, 0xca, 0xb5, 0x03, 0x1c, 0xa2, 0x01, 0x19, 0x67, 0x6f, 0x72, 0x6d, 2323 0x3a, 0x22, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x3a, 0x63, 0x6f, 2324 0x75, 0x72, 0x73, 0x65, 0x22, 0x52, 0x04, 0x79, 0x65, 0x61, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x74, 2325 0x61, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x12, 0x2c, 0x0a, 2326 0x11, 0x53, 0x63, 0x6d, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 2327 0x49, 0x44, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x53, 0x63, 0x6d, 0x4f, 0x72, 0x67, 2328 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x30, 0x0a, 0x13, 0x53, 2329 0x63, 0x6d, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 2330 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x53, 0x63, 0x6d, 0x4f, 0x72, 0x67, 2331 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 2332 0x08, 0x73, 0x6c, 0x69, 0x70, 0x44, 0x61, 0x79, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 2333 0x08, 0x73, 0x6c, 0x69, 0x70, 0x44, 0x61, 0x79, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x44, 0x6f, 0x63, 2334 0x6b, 0x65, 0x72, 0x66, 0x69, 0x6c, 0x65, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x0b, 0x20, 2335 0x01, 0x28, 0x09, 0x52, 0x10, 0x44, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x66, 0x69, 0x6c, 0x65, 0x44, 2336 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x08, 0x65, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 2337 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x71, 0x66, 0x2e, 0x45, 0x6e, 0x72, 2338 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 2339 0x75, 0x73, 0x42, 0x0f, 0xca, 0xb5, 0x03, 0x0b, 0xa2, 0x01, 0x08, 0x67, 0x6f, 0x72, 0x6d, 0x3a, 2340 0x22, 0x2d, 0x22, 0x52, 0x08, 0x65, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x64, 0x12, 0x30, 0x0a, 2341 0x0b, 0x65, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x0d, 0x20, 0x03, 2342 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x66, 0x2e, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 2343 0x6e, 0x74, 0x52, 0x0b, 0x65, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 2344 0x30, 0x0a, 0x0b, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x0e, 2345 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x66, 0x2e, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 2346 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0b, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 2347 0x73, 0x12, 0x21, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 2348 0x0b, 0x32, 0x09, 0x2e, 0x71, 0x66, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x06, 0x67, 0x72, 2349 0x6f, 0x75, 0x70, 0x73, 0x22, 0x2f, 0x0a, 0x07, 0x43, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x73, 0x12, 2350 0x24, 0x0a, 0x07, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 2351 0x32, 0x0a, 0x2e, 0x71, 0x66, 0x2e, 0x43, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x52, 0x07, 0x63, 0x6f, 2352 0x75, 0x72, 0x73, 0x65, 0x73, 0x22, 0xf9, 0x03, 0x0a, 0x0a, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 2353 0x74, 0x6f, 0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 2354 0x52, 0x02, 0x49, 0x44, 0x12, 0x52, 0x0a, 0x11, 0x53, 0x63, 0x6d, 0x4f, 0x72, 0x67, 0x61, 0x6e, 2355 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 2356 0x24, 0xca, 0xb5, 0x03, 0x20, 0xa2, 0x01, 0x1d, 0x67, 0x6f, 0x72, 0x6d, 0x3a, 0x22, 0x75, 0x6e, 2357 0x69, 0x71, 0x75, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x3a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 2358 0x74, 0x6f, 0x72, 0x79, 0x22, 0x52, 0x11, 0x53, 0x63, 0x6d, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 2359 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x28, 0x0a, 0x0f, 0x53, 0x63, 0x6d, 0x52, 2360 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 2361 0x04, 0x52, 0x0f, 0x53, 0x63, 0x6d, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 2362 0x49, 0x44, 0x12, 0x3c, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 2363 0x28, 0x04, 0x42, 0x24, 0xca, 0xb5, 0x03, 0x20, 0xa2, 0x01, 0x1d, 0x67, 0x6f, 0x72, 0x6d, 0x3a, 2364 0x22, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x3a, 0x72, 0x65, 0x70, 2365 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x22, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 2366 0x12, 0x3e, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 2367 0x04, 0x42, 0x24, 0xca, 0xb5, 0x03, 0x20, 0xa2, 0x01, 0x1d, 0x67, 0x6f, 0x72, 0x6d, 0x3a, 0x22, 2368 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x3a, 0x72, 0x65, 0x70, 0x6f, 2369 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x22, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 2370 0x12, 0x18, 0x0a, 0x07, 0x48, 0x54, 0x4d, 0x4c, 0x55, 0x52, 0x4c, 0x18, 0x06, 0x20, 0x01, 0x28, 2371 0x09, 0x52, 0x07, 0x48, 0x54, 0x4d, 0x4c, 0x55, 0x52, 0x4c, 0x12, 0x55, 0x0a, 0x08, 0x72, 0x65, 2372 0x70, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x71, 2373 0x66, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x54, 0x79, 0x70, 2374 0x65, 0x42, 0x24, 0xca, 0xb5, 0x03, 0x20, 0xa2, 0x01, 0x1d, 0x67, 0x6f, 0x72, 0x6d, 0x3a, 0x22, 2375 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x3a, 0x72, 0x65, 0x70, 0x6f, 2376 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x22, 0x52, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x54, 0x79, 0x70, 2377 0x65, 0x12, 0x21, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 2378 0x0b, 0x32, 0x09, 0x2e, 0x71, 0x66, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x06, 0x69, 0x73, 2379 0x73, 0x75, 0x65, 0x73, 0x22, 0x4b, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 2380 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x01, 2381 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x53, 0x53, 0x49, 0x47, 0x4e, 0x4d, 0x45, 0x4e, 0x54, 0x53, 0x10, 2382 0x02, 0x12, 0x09, 0x0a, 0x05, 0x54, 0x45, 0x53, 0x54, 0x53, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 2383 0x55, 0x53, 0x45, 0x52, 0x10, 0x04, 0x12, 0x09, 0x0a, 0x05, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 2384 0x05, 0x22, 0x95, 0x06, 0x0a, 0x0a, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 2385 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 2386 0x12, 0x40, 0x0a, 0x08, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 2387 0x28, 0x04, 0x42, 0x24, 0xca, 0xb5, 0x03, 0x20, 0xa2, 0x01, 0x1d, 0x67, 0x6f, 0x72, 0x6d, 0x3a, 2388 0x22, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x3a, 0x65, 0x6e, 0x72, 2389 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x52, 0x08, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 2390 0x49, 0x44, 0x12, 0x3c, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 2391 0x28, 0x04, 0x42, 0x24, 0xca, 0xb5, 0x03, 0x20, 0xa2, 0x01, 0x1d, 0x67, 0x6f, 0x72, 0x6d, 0x3a, 2392 0x22, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x3a, 0x65, 0x6e, 0x72, 2393 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 2394 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 2395 0x04, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x04, 0x75, 0x73, 2396 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x71, 0x66, 0x2e, 0x55, 0x73, 2397 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x06, 0x63, 0x6f, 0x75, 0x72, 2398 0x73, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x71, 0x66, 0x2e, 0x43, 0x6f, 2399 0x75, 0x72, 0x73, 0x65, 0x52, 0x06, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x05, 2400 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x71, 0x66, 2401 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x31, 0x0a, 2402 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 2403 0x71, 0x66, 0x2e, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x55, 0x73, 2404 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 2405 0x12, 0x31, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 2406 0x1b, 0x2e, 0x71, 0x66, 0x2e, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 2407 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 2408 0x61, 0x74, 0x65, 0x12, 0x3d, 0x0a, 0x11, 0x73, 0x6c, 0x69, 0x70, 0x44, 0x61, 0x79, 0x73, 0x52, 2409 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0f, 2410 0xca, 0xb5, 0x03, 0x0b, 0xa2, 0x01, 0x08, 0x67, 0x6f, 0x72, 0x6d, 0x3a, 0x22, 0x2d, 0x22, 0x52, 2411 0x11, 0x73, 0x6c, 0x69, 0x70, 0x44, 0x61, 0x79, 0x73, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 2412 0x6e, 0x67, 0x12, 0x78, 0x0a, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 2413 0x74, 0x79, 0x44, 0x61, 0x74, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 2414 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 2415 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x30, 0xca, 0xb5, 0x03, 0x2c, 0xa2, 0x01, 2416 0x29, 0x67, 0x6f, 0x72, 0x6d, 0x3a, 0x22, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 2417 0x72, 0x3a, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x3b, 0x74, 0x79, 0x70, 0x65, 2418 0x3a, 0x64, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x52, 0x10, 0x6c, 0x61, 0x73, 0x74, 2419 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x44, 0x61, 0x74, 0x65, 0x12, 0x24, 0x0a, 0x0d, 2420 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x0c, 0x20, 2421 0x01, 0x28, 0x04, 0x52, 0x0d, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 2422 0x65, 0x64, 0x12, 0x34, 0x0a, 0x0c, 0x75, 0x73, 0x65, 0x64, 0x53, 0x6c, 0x69, 0x70, 0x44, 0x61, 2423 0x79, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x71, 0x66, 0x2e, 0x55, 0x73, 2424 0x65, 0x64, 0x53, 0x6c, 0x69, 0x70, 0x44, 0x61, 0x79, 0x73, 0x52, 0x0c, 0x75, 0x73, 0x65, 0x64, 2425 0x53, 0x6c, 0x69, 0x70, 0x44, 0x61, 0x79, 0x73, 0x22, 0x3d, 0x0a, 0x0a, 0x55, 0x73, 0x65, 0x72, 2426 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 2427 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0b, 0x0a, 2428 0x07, 0x53, 0x54, 0x55, 0x44, 0x45, 0x4e, 0x54, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x45, 2429 0x41, 0x43, 0x48, 0x45, 0x52, 0x10, 0x03, 0x22, 0x40, 0x0a, 0x0c, 0x44, 0x69, 0x73, 0x70, 0x6c, 2430 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x09, 0x0a, 0x05, 0x55, 0x4e, 0x53, 0x45, 0x54, 2431 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x48, 0x49, 0x44, 0x44, 0x45, 0x4e, 0x10, 0x01, 0x12, 0x0b, 2432 0x0a, 0x07, 0x56, 0x49, 0x53, 0x49, 0x42, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x46, 2433 0x41, 0x56, 0x4f, 0x52, 0x49, 0x54, 0x45, 0x10, 0x03, 0x22, 0x82, 0x01, 0x0a, 0x0c, 0x55, 0x73, 2434 0x65, 0x64, 0x53, 0x6c, 0x69, 0x70, 0x44, 0x61, 0x79, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 2435 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x65, 0x6e, 2436 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 2437 0x52, 0x0c, 0x65, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x12, 0x22, 2438 0x0a, 0x0c, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x18, 0x03, 2439 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 2440 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x64, 0x44, 0x61, 0x79, 0x73, 0x18, 0x04, 2441 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x75, 0x73, 0x65, 0x64, 0x44, 0x61, 0x79, 0x73, 0x22, 0x3f, 2442 0x0a, 0x0b, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x30, 0x0a, 2443 0x0b, 0x65, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 2444 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x66, 0x2e, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 2445 0x6e, 0x74, 0x52, 0x0b, 0x65, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 2446 0x8e, 0x04, 0x0a, 0x0a, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x0e, 2447 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x1a, 2448 0x0a, 0x08, 0x43, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 2449 0x52, 0x08, 0x43, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 2450 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x68, 2451 0x0a, 0x08, 0x64, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 2452 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 2453 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x30, 0xca, 0xb5, 2454 0x03, 0x2c, 0xa2, 0x01, 0x29, 0x67, 0x6f, 0x72, 0x6d, 0x3a, 0x22, 0x73, 0x65, 0x72, 0x69, 0x61, 2455 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x3a, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x3b, 2456 0x74, 0x79, 0x70, 0x65, 0x3a, 0x64, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x52, 0x08, 2457 0x64, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x75, 0x74, 0x6f, 2458 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x61, 2459 0x75, 0x74, 0x6f, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x72, 2460 0x64, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 2461 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x73, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4c, 0x61, 0x62, 0x18, 0x07, 2462 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4c, 0x61, 0x62, 2463 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 2464 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 2465 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x65, 0x72, 0x73, 0x18, 0x09, 0x20, 2466 0x01, 0x28, 0x0d, 0x52, 0x09, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x65, 0x72, 0x73, 0x12, 0x2a, 2467 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x6f, 2468 0x75, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 2469 0x6e, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x30, 0x0a, 0x0b, 0x73, 0x75, 2470 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 2471 0x0e, 0x2e, 0x71, 0x66, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 2472 0x0b, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1e, 0x0a, 0x05, 2473 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x71, 0x66, 2474 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x42, 0x0a, 0x11, 2475 0x67, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 2476 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x66, 0x2e, 0x47, 0x72, 0x61, 2477 0x64, 0x69, 0x6e, 0x67, 0x42, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x11, 0x67, 2478 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 2479 0x22, 0xc5, 0x01, 0x0a, 0x04, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 2480 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x73, 0x73, 2481 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 2482 0x0c, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x12, 0x28, 0x0a, 2483 0x0f, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 2484 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 2485 0x6e, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 2486 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x12, 0x0a, 2487 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x62, 0x6f, 0x64, 2488 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 2489 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x18, 2490 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x71, 0x66, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 2491 0x52, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x22, 0x7b, 0x0a, 0x05, 0x49, 0x73, 0x73, 0x75, 2492 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 2493 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x49, 2494 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 2495 0x6f, 0x72, 0x79, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x44, 0x18, 2496 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x44, 0x12, 0x26, 0x0a, 2497 0x0e, 0x53, 0x63, 0x6d, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 2498 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x53, 0x63, 0x6d, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4e, 2499 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0xd6, 0x02, 0x0a, 0x0b, 0x50, 0x75, 0x6c, 0x6c, 0x52, 0x65, 2500 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 2501 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x28, 0x0a, 0x0f, 0x53, 0x63, 0x6d, 0x52, 0x65, 0x70, 0x6f, 2502 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 2503 0x53, 0x63, 0x6d, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x44, 0x12, 2504 0x16, 0x0a, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 2505 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x73, 0x73, 0x75, 0x65, 2506 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x69, 0x73, 0x73, 0x75, 0x65, 0x49, 2507 0x44, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 2508 0x04, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x63, 0x6d, 2509 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 2510 0x0c, 0x53, 0x63, 0x6d, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x12, 0x22, 0x0a, 2511 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x07, 0x20, 2512 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 2513 0x68, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 2514 0x04, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2b, 0x0a, 0x05, 0x73, 0x74, 0x61, 2515 0x67, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x71, 0x66, 0x2e, 0x50, 0x75, 2516 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 2517 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x22, 0x36, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 2518 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x44, 0x52, 0x41, 2519 0x46, 0x54, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x45, 0x56, 0x49, 0x45, 0x57, 0x10, 0x02, 2520 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x50, 0x50, 0x52, 0x4f, 0x56, 0x45, 0x44, 0x10, 0x03, 0x22, 0x3f, 2521 0x0a, 0x0b, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x30, 0x0a, 2522 0x0b, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 2523 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x66, 0x2e, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 2524 0x6e, 0x74, 0x52, 0x0b, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 2525 0x9f, 0x04, 0x0a, 0x0a, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 2526 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x22, 2527 0x0a, 0x0c, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x18, 0x02, 2528 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 2529 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 2530 0x28, 0x04, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 2531 0x6f, 0x75, 0x70, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x72, 0x6f, 2532 0x75, 0x70, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x05, 0x20, 2533 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 2534 0x6d, 0x6d, 0x69, 0x74, 0x48, 0x61, 0x73, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 2535 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 2536 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 2537 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x12, 0x2d, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 2538 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x71, 0x66, 0x2e, 0x53, 0x75, 0x62, 0x6d, 2539 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 2540 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x70, 0x0a, 0x0c, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 2541 0x64, 0x44, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 2542 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 2543 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x30, 0xca, 0xb5, 0x03, 0x2c, 0xa2, 0x01, 0x29, 2544 0x67, 0x6f, 0x72, 0x6d, 0x3a, 0x22, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 2545 0x3a, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x3b, 0x74, 0x79, 0x70, 0x65, 0x3a, 2546 0x64, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x52, 0x0c, 0x61, 0x70, 0x70, 0x72, 0x6f, 2547 0x76, 0x65, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x24, 0x0a, 0x07, 0x72, 0x65, 0x76, 0x69, 0x65, 2548 0x77, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x71, 0x66, 0x2e, 0x52, 0x65, 2549 0x76, 0x69, 0x65, 0x77, 0x52, 0x07, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x73, 0x12, 0x2e, 0x0a, 2550 0x09, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 2551 0x32, 0x10, 0x2e, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6e, 2552 0x66, 0x6f, 0x52, 0x09, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x0a, 2553 0x06, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 2554 0x73, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x06, 0x53, 0x63, 0x6f, 2555 0x72, 0x65, 0x73, 0x22, 0x3c, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x08, 0x0a, 2556 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x50, 0x50, 0x52, 0x4f, 2557 0x56, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, 0x45, 2558 0x44, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x45, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 2559 0x03, 0x22, 0x3f, 0x0a, 0x0b, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 2560 0x12, 0x30, 0x0a, 0x0b, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 2561 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x71, 0x66, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 2562 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 2563 0x6e, 0x73, 0x22, 0x8a, 0x02, 0x0a, 0x10, 0x47, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x65, 2564 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 2565 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6f, 0x75, 0x72, 0x73, 2566 0x65, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x43, 0x6f, 0x75, 0x72, 0x73, 2567 0x65, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 2568 0x74, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x41, 0x73, 0x73, 0x69, 0x67, 2569 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x65, 0x76, 0x69, 0x65, 2570 0x77, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x52, 0x65, 0x76, 0x69, 0x65, 2571 0x77, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x05, 2572 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x18, 0x0a, 2573 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 2574 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x56, 0x0a, 0x08, 0x63, 0x72, 0x69, 0x74, 0x65, 2575 0x72, 0x69, 0x61, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x66, 0x2e, 0x47, 2576 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x6f, 0x6e, 0x42, 2577 0x24, 0xca, 0xb5, 0x03, 0x20, 0xa2, 0x01, 0x1d, 0x67, 0x6f, 0x72, 0x6d, 0x3a, 0x22, 0x66, 0x6f, 2578 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4b, 0x65, 0x79, 0x3a, 0x42, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 2579 0x72, 0x6b, 0x49, 0x44, 0x22, 0x52, 0x08, 0x63, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x22, 2580 0x42, 0x0a, 0x0a, 0x42, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x12, 0x34, 0x0a, 2581 0x0a, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 2582 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x66, 0x2e, 0x47, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x65, 2583 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x0a, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 2584 0x72, 0x6b, 0x73, 0x22, 0x91, 0x02, 0x0a, 0x10, 0x47, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x43, 2585 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 2586 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x42, 0x65, 0x6e, 0x63, 2587 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x42, 2588 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6f, 2589 0x75, 0x72, 0x73, 0x65, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x43, 0x6f, 2590 0x75, 0x72, 0x73, 0x65, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 2591 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x20, 2592 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 2593 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 2594 0x12, 0x30, 0x0a, 0x05, 0x67, 0x72, 0x61, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 2595 0x1a, 0x2e, 0x71, 0x66, 0x2e, 0x47, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x72, 0x69, 0x74, 2596 0x65, 0x72, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x72, 0x61, 0x64, 0x65, 0x52, 0x05, 0x67, 0x72, 0x61, 2597 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x07, 0x20, 2598 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x29, 0x0a, 0x05, 2599 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 2600 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x50, 2601 0x41, 0x53, 0x53, 0x45, 0x44, 0x10, 0x02, 0x22, 0xf1, 0x02, 0x0a, 0x06, 0x52, 0x65, 0x76, 0x69, 2602 0x65, 0x77, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 2603 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 2604 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 2605 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x76, 0x69, 0x65, 0x77, 2606 0x65, 0x72, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x52, 0x65, 0x76, 0x69, 2607 0x65, 0x77, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x65, 0x65, 0x64, 0x62, 0x61, 2608 0x63, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x65, 0x65, 0x64, 0x62, 0x61, 2609 0x63, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 2610 0x08, 0x52, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 2611 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x65, 2612 0x0a, 0x11, 0x67, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 2613 0x72, 0x6b, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x71, 0x66, 0x2e, 0x47, 2614 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x42, 2615 0x21, 0xca, 0xb5, 0x03, 0x1d, 0xa2, 0x01, 0x1a, 0x67, 0x6f, 0x72, 0x6d, 0x3a, 0x22, 0x66, 0x6f, 2616 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4b, 0x65, 0x79, 0x3a, 0x52, 0x65, 0x76, 0x69, 0x65, 0x77, 0x49, 2617 0x44, 0x22, 0x52, 0x11, 0x67, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x65, 0x6e, 0x63, 0x68, 2618 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x12, 0x64, 0x0a, 0x06, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x18, 2619 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 2620 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 2621 0x70, 0x42, 0x30, 0xca, 0xb5, 0x03, 0x2c, 0xa2, 0x01, 0x29, 0x67, 0x6f, 0x72, 0x6d, 0x3a, 0x22, 2622 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x3a, 0x74, 0x69, 0x6d, 0x65, 0x73, 2623 0x74, 0x61, 0x6d, 0x70, 0x3b, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x64, 0x61, 0x74, 0x65, 0x74, 0x69, 2624 0x6d, 0x65, 0x22, 0x52, 0x06, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x42, 0x26, 0x5a, 0x21, 0x67, 2625 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x66, 2626 0x65, 0x65, 0x64, 0x2f, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x66, 0x65, 0x65, 0x64, 0x2f, 0x71, 0x66, 2627 0xba, 0x02, 0x00, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 2628 } 2629 2630 var ( 2631 file_qf_types_proto_rawDescOnce sync.Once 2632 file_qf_types_proto_rawDescData = file_qf_types_proto_rawDesc 2633 ) 2634 2635 func file_qf_types_proto_rawDescGZIP() []byte { 2636 file_qf_types_proto_rawDescOnce.Do(func() { 2637 file_qf_types_proto_rawDescData = protoimpl.X.CompressGZIP(file_qf_types_proto_rawDescData) 2638 }) 2639 return file_qf_types_proto_rawDescData 2640 } 2641 2642 var file_qf_types_proto_enumTypes = make([]protoimpl.EnumInfo, 7) 2643 var file_qf_types_proto_msgTypes = make([]protoimpl.MessageInfo, 21) 2644 var file_qf_types_proto_goTypes = []interface{}{ 2645 (Group_GroupStatus)(0), // 0: qf.Group.GroupStatus 2646 (Repository_Type)(0), // 1: qf.Repository.Type 2647 (Enrollment_UserStatus)(0), // 2: qf.Enrollment.UserStatus 2648 (Enrollment_DisplayState)(0), // 3: qf.Enrollment.DisplayState 2649 (PullRequest_Stage)(0), // 4: qf.PullRequest.Stage 2650 (Submission_Status)(0), // 5: qf.Submission.Status 2651 (GradingCriterion_Grade)(0), // 6: qf.GradingCriterion.Grade 2652 (*User)(nil), // 7: qf.User 2653 (*Users)(nil), // 8: qf.Users 2654 (*Group)(nil), // 9: qf.Group 2655 (*Groups)(nil), // 10: qf.Groups 2656 (*Course)(nil), // 11: qf.Course 2657 (*Courses)(nil), // 12: qf.Courses 2658 (*Repository)(nil), // 13: qf.Repository 2659 (*Enrollment)(nil), // 14: qf.Enrollment 2660 (*UsedSlipDays)(nil), // 15: qf.UsedSlipDays 2661 (*Enrollments)(nil), // 16: qf.Enrollments 2662 (*Assignment)(nil), // 17: qf.Assignment 2663 (*Task)(nil), // 18: qf.Task 2664 (*Issue)(nil), // 19: qf.Issue 2665 (*PullRequest)(nil), // 20: qf.PullRequest 2666 (*Assignments)(nil), // 21: qf.Assignments 2667 (*Submission)(nil), // 22: qf.Submission 2668 (*Submissions)(nil), // 23: qf.Submissions 2669 (*GradingBenchmark)(nil), // 24: qf.GradingBenchmark 2670 (*Benchmarks)(nil), // 25: qf.Benchmarks 2671 (*GradingCriterion)(nil), // 26: qf.GradingCriterion 2672 (*Review)(nil), // 27: qf.Review 2673 (*timestamppb.Timestamp)(nil), // 28: google.protobuf.Timestamp 2674 (*score.BuildInfo)(nil), // 29: score.BuildInfo 2675 (*score.Score)(nil), // 30: score.Score 2676 } 2677 var file_qf_types_proto_depIdxs = []int32{ 2678 14, // 0: qf.User.Enrollments:type_name -> qf.Enrollment 2679 7, // 1: qf.Users.users:type_name -> qf.User 2680 0, // 2: qf.Group.status:type_name -> qf.Group.GroupStatus 2681 7, // 3: qf.Group.users:type_name -> qf.User 2682 14, // 4: qf.Group.enrollments:type_name -> qf.Enrollment 2683 9, // 5: qf.Groups.groups:type_name -> qf.Group 2684 2, // 6: qf.Course.enrolled:type_name -> qf.Enrollment.UserStatus 2685 14, // 7: qf.Course.enrollments:type_name -> qf.Enrollment 2686 17, // 8: qf.Course.assignments:type_name -> qf.Assignment 2687 9, // 9: qf.Course.groups:type_name -> qf.Group 2688 11, // 10: qf.Courses.courses:type_name -> qf.Course 2689 1, // 11: qf.Repository.repoType:type_name -> qf.Repository.Type 2690 19, // 12: qf.Repository.issues:type_name -> qf.Issue 2691 7, // 13: qf.Enrollment.user:type_name -> qf.User 2692 11, // 14: qf.Enrollment.course:type_name -> qf.Course 2693 9, // 15: qf.Enrollment.group:type_name -> qf.Group 2694 2, // 16: qf.Enrollment.status:type_name -> qf.Enrollment.UserStatus 2695 3, // 17: qf.Enrollment.state:type_name -> qf.Enrollment.DisplayState 2696 28, // 18: qf.Enrollment.lastActivityDate:type_name -> google.protobuf.Timestamp 2697 15, // 19: qf.Enrollment.usedSlipDays:type_name -> qf.UsedSlipDays 2698 14, // 20: qf.Enrollments.enrollments:type_name -> qf.Enrollment 2699 28, // 21: qf.Assignment.deadline:type_name -> google.protobuf.Timestamp 2700 22, // 22: qf.Assignment.submissions:type_name -> qf.Submission 2701 18, // 23: qf.Assignment.tasks:type_name -> qf.Task 2702 24, // 24: qf.Assignment.gradingBenchmarks:type_name -> qf.GradingBenchmark 2703 19, // 25: qf.Task.issues:type_name -> qf.Issue 2704 4, // 26: qf.PullRequest.stage:type_name -> qf.PullRequest.Stage 2705 17, // 27: qf.Assignments.assignments:type_name -> qf.Assignment 2706 5, // 28: qf.Submission.status:type_name -> qf.Submission.Status 2707 28, // 29: qf.Submission.approvedDate:type_name -> google.protobuf.Timestamp 2708 27, // 30: qf.Submission.reviews:type_name -> qf.Review 2709 29, // 31: qf.Submission.BuildInfo:type_name -> score.BuildInfo 2710 30, // 32: qf.Submission.Scores:type_name -> score.Score 2711 22, // 33: qf.Submissions.submissions:type_name -> qf.Submission 2712 26, // 34: qf.GradingBenchmark.criteria:type_name -> qf.GradingCriterion 2713 24, // 35: qf.Benchmarks.benchmarks:type_name -> qf.GradingBenchmark 2714 6, // 36: qf.GradingCriterion.grade:type_name -> qf.GradingCriterion.Grade 2715 24, // 37: qf.Review.gradingBenchmarks:type_name -> qf.GradingBenchmark 2716 28, // 38: qf.Review.edited:type_name -> google.protobuf.Timestamp 2717 39, // [39:39] is the sub-list for method output_type 2718 39, // [39:39] is the sub-list for method input_type 2719 39, // [39:39] is the sub-list for extension type_name 2720 39, // [39:39] is the sub-list for extension extendee 2721 0, // [0:39] is the sub-list for field type_name 2722 } 2723 2724 func init() { file_qf_types_proto_init() } 2725 func file_qf_types_proto_init() { 2726 if File_qf_types_proto != nil { 2727 return 2728 } 2729 if !protoimpl.UnsafeEnabled { 2730 file_qf_types_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { 2731 switch v := v.(*User); i { 2732 case 0: 2733 return &v.state 2734 case 1: 2735 return &v.sizeCache 2736 case 2: 2737 return &v.unknownFields 2738 default: 2739 return nil 2740 } 2741 } 2742 file_qf_types_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { 2743 switch v := v.(*Users); i { 2744 case 0: 2745 return &v.state 2746 case 1: 2747 return &v.sizeCache 2748 case 2: 2749 return &v.unknownFields 2750 default: 2751 return nil 2752 } 2753 } 2754 file_qf_types_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { 2755 switch v := v.(*Group); i { 2756 case 0: 2757 return &v.state 2758 case 1: 2759 return &v.sizeCache 2760 case 2: 2761 return &v.unknownFields 2762 default: 2763 return nil 2764 } 2765 } 2766 file_qf_types_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { 2767 switch v := v.(*Groups); i { 2768 case 0: 2769 return &v.state 2770 case 1: 2771 return &v.sizeCache 2772 case 2: 2773 return &v.unknownFields 2774 default: 2775 return nil 2776 } 2777 } 2778 file_qf_types_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { 2779 switch v := v.(*Course); i { 2780 case 0: 2781 return &v.state 2782 case 1: 2783 return &v.sizeCache 2784 case 2: 2785 return &v.unknownFields 2786 default: 2787 return nil 2788 } 2789 } 2790 file_qf_types_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { 2791 switch v := v.(*Courses); i { 2792 case 0: 2793 return &v.state 2794 case 1: 2795 return &v.sizeCache 2796 case 2: 2797 return &v.unknownFields 2798 default: 2799 return nil 2800 } 2801 } 2802 file_qf_types_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { 2803 switch v := v.(*Repository); i { 2804 case 0: 2805 return &v.state 2806 case 1: 2807 return &v.sizeCache 2808 case 2: 2809 return &v.unknownFields 2810 default: 2811 return nil 2812 } 2813 } 2814 file_qf_types_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { 2815 switch v := v.(*Enrollment); i { 2816 case 0: 2817 return &v.state 2818 case 1: 2819 return &v.sizeCache 2820 case 2: 2821 return &v.unknownFields 2822 default: 2823 return nil 2824 } 2825 } 2826 file_qf_types_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { 2827 switch v := v.(*UsedSlipDays); i { 2828 case 0: 2829 return &v.state 2830 case 1: 2831 return &v.sizeCache 2832 case 2: 2833 return &v.unknownFields 2834 default: 2835 return nil 2836 } 2837 } 2838 file_qf_types_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { 2839 switch v := v.(*Enrollments); i { 2840 case 0: 2841 return &v.state 2842 case 1: 2843 return &v.sizeCache 2844 case 2: 2845 return &v.unknownFields 2846 default: 2847 return nil 2848 } 2849 } 2850 file_qf_types_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { 2851 switch v := v.(*Assignment); i { 2852 case 0: 2853 return &v.state 2854 case 1: 2855 return &v.sizeCache 2856 case 2: 2857 return &v.unknownFields 2858 default: 2859 return nil 2860 } 2861 } 2862 file_qf_types_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { 2863 switch v := v.(*Task); i { 2864 case 0: 2865 return &v.state 2866 case 1: 2867 return &v.sizeCache 2868 case 2: 2869 return &v.unknownFields 2870 default: 2871 return nil 2872 } 2873 } 2874 file_qf_types_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { 2875 switch v := v.(*Issue); i { 2876 case 0: 2877 return &v.state 2878 case 1: 2879 return &v.sizeCache 2880 case 2: 2881 return &v.unknownFields 2882 default: 2883 return nil 2884 } 2885 } 2886 file_qf_types_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { 2887 switch v := v.(*PullRequest); i { 2888 case 0: 2889 return &v.state 2890 case 1: 2891 return &v.sizeCache 2892 case 2: 2893 return &v.unknownFields 2894 default: 2895 return nil 2896 } 2897 } 2898 file_qf_types_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { 2899 switch v := v.(*Assignments); i { 2900 case 0: 2901 return &v.state 2902 case 1: 2903 return &v.sizeCache 2904 case 2: 2905 return &v.unknownFields 2906 default: 2907 return nil 2908 } 2909 } 2910 file_qf_types_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { 2911 switch v := v.(*Submission); i { 2912 case 0: 2913 return &v.state 2914 case 1: 2915 return &v.sizeCache 2916 case 2: 2917 return &v.unknownFields 2918 default: 2919 return nil 2920 } 2921 } 2922 file_qf_types_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { 2923 switch v := v.(*Submissions); i { 2924 case 0: 2925 return &v.state 2926 case 1: 2927 return &v.sizeCache 2928 case 2: 2929 return &v.unknownFields 2930 default: 2931 return nil 2932 } 2933 } 2934 file_qf_types_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { 2935 switch v := v.(*GradingBenchmark); i { 2936 case 0: 2937 return &v.state 2938 case 1: 2939 return &v.sizeCache 2940 case 2: 2941 return &v.unknownFields 2942 default: 2943 return nil 2944 } 2945 } 2946 file_qf_types_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { 2947 switch v := v.(*Benchmarks); i { 2948 case 0: 2949 return &v.state 2950 case 1: 2951 return &v.sizeCache 2952 case 2: 2953 return &v.unknownFields 2954 default: 2955 return nil 2956 } 2957 } 2958 file_qf_types_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { 2959 switch v := v.(*GradingCriterion); i { 2960 case 0: 2961 return &v.state 2962 case 1: 2963 return &v.sizeCache 2964 case 2: 2965 return &v.unknownFields 2966 default: 2967 return nil 2968 } 2969 } 2970 file_qf_types_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { 2971 switch v := v.(*Review); i { 2972 case 0: 2973 return &v.state 2974 case 1: 2975 return &v.sizeCache 2976 case 2: 2977 return &v.unknownFields 2978 default: 2979 return nil 2980 } 2981 } 2982 } 2983 type x struct{} 2984 out := protoimpl.TypeBuilder{ 2985 File: protoimpl.DescBuilder{ 2986 GoPackagePath: reflect.TypeOf(x{}).PkgPath(), 2987 RawDescriptor: file_qf_types_proto_rawDesc, 2988 NumEnums: 7, 2989 NumMessages: 21, 2990 NumExtensions: 0, 2991 NumServices: 0, 2992 }, 2993 GoTypes: file_qf_types_proto_goTypes, 2994 DependencyIndexes: file_qf_types_proto_depIdxs, 2995 EnumInfos: file_qf_types_proto_enumTypes, 2996 MessageInfos: file_qf_types_proto_msgTypes, 2997 }.Build() 2998 File_qf_types_proto = out.File 2999 file_qf_types_proto_rawDesc = nil 3000 file_qf_types_proto_goTypes = nil 3001 file_qf_types_proto_depIdxs = nil 3002 }