Add waitlist api and update the service intake form fields
diff --git a/README.md b/README.md
index d35cf2e..e348a0a 100644
--- a/README.md
+++ b/README.md
@@ -5,9 +5,9 @@
## Testing Client
-Before using either the order based or booking based test utilites, the Go
-programming language must be installed on your workstation. A precompiled Go
-binary for your operating system can be [found here](https://golang.org/dl/)
+Before using the test utilites, the Go programming language must be installed on
+your workstation. A precompiled Go binary for your operating system can be
+[found here](https://golang.org/dl/)
This guide will assume you're using the default GOPATH and subsequent GOBIN.
For a comprehensive explanation of the GOPATH env variable please see
@@ -52,6 +52,10 @@
go install $HOME/go/src/github.com/maps-booking-v3/testclient/bookingClient.go
+Or the waitlist based test client, run
+
+ go install $HOME/go/src/github.com/maps-booking-v3/testclient/waitlistClient.go
+
### Installing the utilities with Windows Powershell
First, build your Go directory structure. A comprehensive guide on the intended
@@ -90,6 +94,10 @@
go install $env:HOME\go\src\github.com\maps-booking-v3\testclient\bookingClient.go
+Or the waitlist based test client, run
+
+ go install $env:HOME\go\src\github.com\maps-booking-v3\testclient\waitlistClient.go
+
### Using the utilities
After following the install steps above an executable should now live under the
@@ -175,6 +183,36 @@
-output_to_terminal bool
Output to terminal rather than a file.
+ waitlistClient.go
+ -server_addr string
+ Your http server's address in the format of host:port (default "example.com:80")
+ -service_feed string
+ Absolute path to service feed required for all tests except health. Feeds can be in either json or pb3 format.
+ -all_tests
+ Whether to test all endpoints syncronously.
+ -health_check_test
+ Whether to test the Health endpoint.
+ -batch_get_wait_estimates_test
+ Whether to test the BatchGetWaitEstimates endpoint.
+ -create_waitlist_entry_test
+ Whether to test the CreateWaitlistEntry endpoint.
+ -get_waitlist_entry_test
+ Whether to test the GetWaitlistEntry endpoint.
+ -delete_waitlist_entry_test
+ Whether to test the DeleteWaitlistEntry endpoint.
+ -ca_file string
+ Absolute path to your server's Certificate Authority root cert. Downloading all roots currently recommended by the Google Internet Authority is a suitable alternative https://pki.google.com/roots.pem. Leave blank to connect using http rather than https.
+ -credentials_file string
+ File containing credentials for your server. Leave blank to bypass authentication. File should have exactly one line of the form 'username:password'.
+ -full_server_name string
+ Fully qualified domain name. Same name used to sign CN. Only necessary if ca_file is specified and the base URL differs from the server address.
+ -num_test_services int
+ Maximum number of services to test from service_feed. Services will be selected randomly (default 10)
+ -output_dir string
+ Absolute path of dir to dump log file.
+ -output_to_terminal bool
+ Output to terminal rather than a file.
+
Plese note that this testing tool makes reservations as a test user with
**user_id = 0**. Therefore, if you are running the tool many times, or before
final tests, you might want cancel all previous bookings for that user to make
@@ -188,18 +226,20 @@
bin/orderClient -server_addr="external-dns:443" -all_tests=true -output_dir="/tmp" -availability_feed="/tmp/test.json" -service_feed="/tmp/service.json"
+ bin/waitlistClient -server_addr="external-dns:443" -all_tests=true -output_dir="/tmp" service_feed="/tmp/service.json"
+
### Testing
-It is important that as part of testing you verify all aspects of booking server
+It is important that as part of testing you verify all aspects of the server
invocation - authentication, availability, cancellation, and rescheduling tests.
As the final step, you must be able to execute the designated utility with the
flag -all_tests=true and it should successfully pass the entire series of tests.
### Parsing the output
-Both test utilities will output a file with the prefix 'http_test_client_log_'
-followed by a timestamp in RFC3339 format. The output file contains a
-complete log of all Requests and Responses sent/received by the testing tool as
-well as diffs of the expected response in the event of errors.
-Similar to a compiler, an overview of the entire run can be found at the end
-of the file for user friendly digestion.
+The test utilities will output a file with the prefix 'http_test_client_log_'
+followed by a timestamp in RFC3339 format. The output file contains a complete
+log of all Requests and Responses sent/received by the testing tool as well as
+diffs of the expected response in the event of errors. Similar to a compiler, an
+overview of the entire run can be found at the end of the file for user friendly
+digestion.
diff --git a/api/api.go b/api/api.go
index 7b0a202..3d487fa 100644
--- a/api/api.go
+++ b/api/api.go
@@ -40,6 +40,7 @@
fpb "github.com/maps-booking-v3/feeds"
mpb "github.com/maps-booking-v3/v3"
+ wpb "github.com/maps-booking-v3/waitlist"
)
const (
@@ -589,3 +590,160 @@
return nil
}
+
+// BatchGetWaitEstimates calls the partners API and verifies the returned WaitEstimates.
+func BatchGetWaitEstimates(s *fpb.Service, conn *HTTPConnection) error {
+ rules := s.GetWaitlistRules()
+
+ ps := make([]int32, rules.GetMaxPartySize()-rules.GetMinPartySize())
+ for i := range ps {
+ ps[i] = rules.GetMinPartySize() + int32(i)
+ }
+ reqPB := &wpb.BatchGetWaitEstimatesRequest{
+ MerchantId: s.GetMerchantId(),
+ ServiceId: s.GetServiceId(),
+ PartySize: ps,
+ }
+ req, err := conn.marshaler.MarshalToString(reqPB)
+ if err != nil {
+ return fmt.Errorf("Could not convert pb3 to json: %v", reqPB)
+ }
+ httpResp, err := sendRequest("BatchGetWaitEstimates", req, conn)
+ if err != nil {
+ return fmt.Errorf("invalid response. BatchGetWaitEstimates yielded error: %v", err)
+ }
+ var resp wpb.BatchGetWaitEstimatesResponse
+ if err := jsonpb.UnmarshalString(httpResp, &resp); err != nil {
+ return fmt.Errorf("BatchGetWaitEstimates: Could not parse HTTP response to pb3: %v", err)
+ }
+
+ if resp.GetWaitlistStatus() == wpb.WaitlistStatus_WAITLIST_STATUS_UNSPECIFIED {
+ return errors.New("BatchGetWaitEstimates: waitlist status was not specified in response")
+ } else if resp.GetWaitlistStatus() != wpb.WaitlistStatus_OPEN {
+ // Waitlist is closed. No further validation necessary.
+ return nil
+ }
+
+ // Waitlist status is OPEN
+ for _, we := range resp.GetWaitEstimate() {
+ if err := utils.ValidateWaitEstimate(we); err != nil {
+ return fmt.Errorf("BatchGetWaitEstimates invalid, %s, service id: %s",
+ err.Error(), s.GetServiceId())
+ } else if we.GetPartySize() > rules.GetMaxPartySize() ||
+ we.GetPartySize() < rules.GetMinPartySize() {
+ return fmt.Errorf("batchGetWaitEstimates: Party size outside of min/max for service id: %s."+
+ "returned party size: %d, min party size: %d, max party size: %d",
+ s.GetServiceId(), we.GetPartySize(), rules.GetMinPartySize(), rules.GetMaxPartySize())
+ }
+ }
+ return nil
+}
+
+// CreateWaitlistEntry attempts to create waitlist entries from a service.
+// The max party size listed for the service's waitlist rules is used for
+// the waitlist entry's party size.
+func CreateWaitlistEntry(s *fpb.Service, conn *HTTPConnection) (string, error) {
+ gen := rand.New(rand.NewSource(time.Now().UnixNano()))
+
+ reqPB := &wpb.CreateWaitlistEntryRequest{
+ MerchantId: s.GetMerchantId(),
+ ServiceId: s.GetServiceId(),
+ PartySize: s.GetWaitlistRules().GetMaxPartySize(),
+ UserInformation: &wpb.UserInformation{
+ UserId: userID,
+ GivenName: firstName,
+ FamilyName: lastName,
+ Telephone: telephone,
+ Email: email,
+ },
+ IdempotencyToken: strconv.Itoa(gen.Intn(1000000)),
+ }
+ if s.GetWaitlistRules().GetSupportsAdditionalRequest() {
+ reqPB.AdditionalRequest = "test additional request"
+ }
+ req, err := conn.marshaler.MarshalToString(reqPB)
+ if err != nil {
+ return "", fmt.Errorf("Could not convert pb3 to json: %v", reqPB)
+ }
+
+ httpResp, err := sendRequest("CreateWaitlistEntry", req, conn)
+ if err != nil {
+ return "", fmt.Errorf("invalid response. CreateWaitlistEntry yielded error: %v", err)
+ }
+ var resp wpb.CreateWaitlistEntryResponse
+ if err := jsonpb.UnmarshalString(httpResp, &resp); err != nil {
+ return "", fmt.Errorf("CreateWaitlistEntry: Could not parse HTTP response to pb3: %v", err)
+ }
+
+ if resp.GetWaitlistBusinessLogicFailure() != nil {
+ return "", fmt.Errorf("invalid response. CreateWaitlistEntry failed with business logic failure %v",
+ resp.GetWaitlistBusinessLogicFailure())
+ }
+
+ if resp.GetWaitlistEntryId() == "" {
+ return "", fmt.Errorf("invalid response. CreateWaitlistEntry missing waitlist entry id for service: %s",
+ s.GetServiceId())
+ }
+
+ // Perform idempotency test.
+ log.Printf("Idempotency check -- CreateWaitlistEntry Request. Sent(unix): %s, Request %s", time.Now().UTC().Format(time.RFC850), reqPB.String())
+ idemHTTPResp, err := sendRequest("CreateWaitlistEntry", req, conn)
+ if err != nil {
+ return "", fmt.Errorf("invalid response. Idempotency check yielded error: %v", err)
+ }
+ var idemResp wpb.CreateWaitlistEntryResponse
+ if err := jsonpb.UnmarshalString(idemHTTPResp, &idemResp); err != nil {
+ return "", fmt.Errorf("CreateWaitlistEntry idem: Could not parse HTTP response to pb3: %v", err)
+ }
+
+ if diff := cmp.Diff(idemResp, resp); diff != "" {
+ return "", fmt.Errorf("Idempotency check invalid (-got +want)\n%s for service: %s", diff, s.GetServiceId())
+ }
+
+ return resp.GetWaitlistEntryId(), nil
+}
+
+// GetWaitlistEntry retrieves and validates the booking for the specified
+// waitlist entry id.
+func GetWaitlistEntry(id string, conn *HTTPConnection) (*wpb.WaitlistEntry, error) {
+ reqPB := &wpb.GetWaitlistEntryRequest{
+ WaitlistEntryId: id,
+ }
+
+ req, err := conn.marshaler.MarshalToString(reqPB)
+ if err != nil {
+ return nil, fmt.Errorf("Could not convert pb3 to json: %v", reqPB)
+ }
+ httpResp, err := sendRequest("GetWaitlistEntry", req, conn)
+ if err != nil {
+ return nil, fmt.Errorf("invalid response. GetWaitlistEntry yielded error: %v", err)
+ }
+ var resp wpb.GetWaitlistEntryResponse
+ if err := jsonpb.UnmarshalString(httpResp, &resp); err != nil {
+ return nil, fmt.Errorf("GetWaitlistEntry: Could not parse HTTP response to pb3: %v", err)
+ }
+
+ if iE := utils.ValidateWaitlistEntry(resp.GetWaitlistEntry()); iE != nil {
+ return nil, fmt.Errorf("invalid response. GetWaitlistEntry: %s", iE.Error())
+ }
+
+ return resp.GetWaitlistEntry(), nil
+}
+
+// DeleteWaitlistEntry makes a request to delete the waitlist entry.
+func DeleteWaitlistEntry(id string, conn *HTTPConnection) error {
+ reqPB := &wpb.DeleteWaitlistEntryRequest{
+ WaitlistEntryId: id,
+ }
+
+ req, err := conn.marshaler.MarshalToString(reqPB)
+ if err != nil {
+ return fmt.Errorf("Could not convert pb3 to json: %v", reqPB)
+ }
+
+ if _, err = sendRequest("DeleteWaitlistEntry", req, conn); err != nil {
+ return fmt.Errorf("invalid response. DeleteWaitlistEntry yielded error: %v", err)
+ }
+
+ return nil
+}
diff --git a/feeds/feeds.pb.go b/feeds/feeds.pb.go
index e9fa181..3766f8b 100644
--- a/feeds/feeds.pb.go
+++ b/feeds/feeds.pb.go
@@ -1,42 +1,13 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: feeds.proto
-/*
-Package maps_booking_feeds is a generated protocol buffer package.
-
-It is generated from these files:
- feeds.proto
-
-It has these top-level messages:
- FeedMetadata
- AvailabilityFeed
- ServiceAvailability
- Availability
- Resources
- TimeRange
- ServiceFeed
- Service
- Price
- SchedulingRules
- TaxRate
- ServiceIntakeFormField
- ServiceIntakeForm
- Deposit
- NoShowFee
- PriceType
- RequireCreditCard
- ActionLink
- ActionPlatform
- TicketType
- RelatedMedia
- ServiceAttributeValueId
-*/
-
package maps_booking_feeds
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
+import (
+ fmt "fmt"
+ proto "github.com/golang/protobuf/proto"
+ math "math"
+)
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
@@ -68,6 +39,7 @@
0: "FIXED_RATE_DEFAULT",
1: "PER_PERSON",
}
+
var PriceType_value = map[string]int32{
"FIXED_RATE_DEFAULT": 0,
"PER_PERSON": 1,
@@ -76,8 +48,9 @@
func (x PriceType) String() string {
return proto.EnumName(PriceType_name, int32(x))
}
+
func (PriceType) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor_feeds_fc30b4ddff65807e, []int{0}
+ return fileDescriptor_7aa923a38d4cd9d3, []int{0}
}
// Defines whether a credit card is required in order to book an appointment.
@@ -103,6 +76,7 @@
1: "REQUIRE_CREDIT_CARD_CONDITIONAL",
2: "REQUIRE_CREDIT_CARD_ALWAYS",
}
+
var RequireCreditCard_value = map[string]int32{
"REQUIRE_CREDIT_CARD_UNSPECIFIED": 0,
"REQUIRE_CREDIT_CARD_CONDITIONAL": 1,
@@ -112,8 +86,9 @@
func (x RequireCreditCard) String() string {
return proto.EnumName(RequireCreditCard_name, int32(x))
}
+
func (RequireCreditCard) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor_feeds_fc30b4ddff65807e, []int{1}
+ return fileDescriptor_7aa923a38d4cd9d3, []int{1}
}
// The platform that the action is performed on. Web application is the general
@@ -142,6 +117,7 @@
3: "ACTION_PLATFORM_ANDROID",
4: "ACTION_PLATFORM_IOS",
}
+
var ActionPlatform_value = map[string]int32{
"ACTION_PLATFORM_UNSPECIFIED": 0,
"ACTION_PLATFORM_WEB_APPLICATION": 1,
@@ -153,8 +129,9 @@
func (x ActionPlatform) String() string {
return proto.EnumName(ActionPlatform_name, int32(x))
}
+
func (ActionPlatform) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor_feeds_fc30b4ddff65807e, []int{2}
+ return fileDescriptor_7aa923a38d4cd9d3, []int{2}
}
type FeedMetadata_ProcessingInstruction int32
@@ -176,6 +153,7 @@
1: "PROCESS_AS_COMPLETE",
2: "PROCESS_AS_INCREMENTAL",
}
+
var FeedMetadata_ProcessingInstruction_value = map[string]int32{
"PROCESS_UNKNOWN": 0,
"PROCESS_AS_COMPLETE": 1,
@@ -185,8 +163,9 @@
func (x FeedMetadata_ProcessingInstruction) String() string {
return proto.EnumName(FeedMetadata_ProcessingInstruction_name, int32(x))
}
+
func (FeedMetadata_ProcessingInstruction) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor_feeds_fc30b4ddff65807e, []int{0, 0}
+ return fileDescriptor_7aa923a38d4cd9d3, []int{0, 0}
}
// Enum to indicate the prepayment type.
@@ -210,6 +189,7 @@
2: "OPTIONAL",
3: "NOT_SUPPORTED",
}
+
var Service_PrepaymentType_value = map[string]int32{
"PREPAYMENT_TYPE_UNSPECIFIED": 0,
"REQUIRED": 1,
@@ -220,8 +200,9 @@
func (x Service_PrepaymentType) String() string {
return proto.EnumName(Service_PrepaymentType_name, int32(x))
}
+
func (Service_PrepaymentType) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor_feeds_fc30b4ddff65807e, []int{7, 0}
+ return fileDescriptor_7aa923a38d4cd9d3, []int{7, 0}
}
type Service_ServiceType int32
@@ -241,6 +222,7 @@
3: "SERVICE_TYPE_EVENT_TICKET",
4: "SERVICE_TYPE_TRIP_TOUR",
}
+
var Service_ServiceType_value = map[string]int32{
"SERVICE_TYPE_UNSPECIFIED": 0,
"SERVICE_TYPE_DINING_RESERVATION": 1,
@@ -252,8 +234,9 @@
func (x Service_ServiceType) String() string {
return proto.EnumName(Service_ServiceType_name, int32(x))
}
+
func (Service_ServiceType) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor_feeds_fc30b4ddff65807e, []int{7, 1}
+ return fileDescriptor_7aa923a38d4cd9d3, []int{7, 1}
}
// Enum to indicate the type of field.
@@ -285,6 +268,7 @@
5: "DROPDOWN",
6: "BOOLEAN",
}
+
var ServiceIntakeFormField_FieldType_value = map[string]int32{
"FIELD_TYPE_UNSPECIFIED": 0,
"SHORT_ANSWER": 1,
@@ -298,8 +282,9 @@
func (x ServiceIntakeFormField_FieldType) String() string {
return proto.EnumName(ServiceIntakeFormField_FieldType_name, int32(x))
}
+
func (ServiceIntakeFormField_FieldType) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor_feeds_fc30b4ddff65807e, []int{11, 0}
+ return fileDescriptor_7aa923a38d4cd9d3, []int{11, 0}
}
// Enum to indicate the type of this media source. Only photos are supported.
@@ -318,6 +303,7 @@
0: "TYPE_UNSPECIFIED",
1: "PHOTO",
}
+
var RelatedMedia_MediaType_value = map[string]int32{
"TYPE_UNSPECIFIED": 0,
"PHOTO": 1,
@@ -326,8 +312,9 @@
func (x RelatedMedia_MediaType) String() string {
return proto.EnumName(RelatedMedia_MediaType_name, int32(x))
}
+
func (RelatedMedia_MediaType) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor_feeds_fc30b4ddff65807e, []int{17, 0}
+ return fileDescriptor_7aa923a38d4cd9d3, []int{17, 0}
}
type FeedMetadata struct {
@@ -369,16 +356,17 @@
func (m *FeedMetadata) String() string { return proto.CompactTextString(m) }
func (*FeedMetadata) ProtoMessage() {}
func (*FeedMetadata) Descriptor() ([]byte, []int) {
- return fileDescriptor_feeds_fc30b4ddff65807e, []int{0}
+ return fileDescriptor_7aa923a38d4cd9d3, []int{0}
}
+
func (m *FeedMetadata) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FeedMetadata.Unmarshal(m, b)
}
func (m *FeedMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_FeedMetadata.Marshal(b, m, deterministic)
}
-func (dst *FeedMetadata) XXX_Merge(src proto.Message) {
- xxx_messageInfo_FeedMetadata.Merge(dst, src)
+func (m *FeedMetadata) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_FeedMetadata.Merge(m, src)
}
func (m *FeedMetadata) XXX_Size() int {
return xxx_messageInfo_FeedMetadata.Size(m)
@@ -436,16 +424,17 @@
func (m *AvailabilityFeed) String() string { return proto.CompactTextString(m) }
func (*AvailabilityFeed) ProtoMessage() {}
func (*AvailabilityFeed) Descriptor() ([]byte, []int) {
- return fileDescriptor_feeds_fc30b4ddff65807e, []int{1}
+ return fileDescriptor_7aa923a38d4cd9d3, []int{1}
}
+
func (m *AvailabilityFeed) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AvailabilityFeed.Unmarshal(m, b)
}
func (m *AvailabilityFeed) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_AvailabilityFeed.Marshal(b, m, deterministic)
}
-func (dst *AvailabilityFeed) XXX_Merge(src proto.Message) {
- xxx_messageInfo_AvailabilityFeed.Merge(dst, src)
+func (m *AvailabilityFeed) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_AvailabilityFeed.Merge(m, src)
}
func (m *AvailabilityFeed) XXX_Size() int {
return xxx_messageInfo_AvailabilityFeed.Size(m)
@@ -521,16 +510,17 @@
func (m *ServiceAvailability) String() string { return proto.CompactTextString(m) }
func (*ServiceAvailability) ProtoMessage() {}
func (*ServiceAvailability) Descriptor() ([]byte, []int) {
- return fileDescriptor_feeds_fc30b4ddff65807e, []int{2}
+ return fileDescriptor_7aa923a38d4cd9d3, []int{2}
}
+
func (m *ServiceAvailability) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ServiceAvailability.Unmarshal(m, b)
}
func (m *ServiceAvailability) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ServiceAvailability.Marshal(b, m, deterministic)
}
-func (dst *ServiceAvailability) XXX_Merge(src proto.Message) {
- xxx_messageInfo_ServiceAvailability.Merge(dst, src)
+func (m *ServiceAvailability) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_ServiceAvailability.Merge(m, src)
}
func (m *ServiceAvailability) XXX_Size() int {
return xxx_messageInfo_ServiceAvailability.Size(m)
@@ -709,16 +699,17 @@
func (m *Availability) String() string { return proto.CompactTextString(m) }
func (*Availability) ProtoMessage() {}
func (*Availability) Descriptor() ([]byte, []int) {
- return fileDescriptor_feeds_fc30b4ddff65807e, []int{3}
+ return fileDescriptor_7aa923a38d4cd9d3, []int{3}
}
+
func (m *Availability) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Availability.Unmarshal(m, b)
}
func (m *Availability) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Availability.Marshal(b, m, deterministic)
}
-func (dst *Availability) XXX_Merge(src proto.Message) {
- xxx_messageInfo_Availability.Merge(dst, src)
+func (m *Availability) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Availability.Merge(m, src)
}
func (m *Availability) XXX_Size() int {
return xxx_messageInfo_Availability.Size(m)
@@ -868,16 +859,17 @@
func (m *Availability_Recurrence) String() string { return proto.CompactTextString(m) }
func (*Availability_Recurrence) ProtoMessage() {}
func (*Availability_Recurrence) Descriptor() ([]byte, []int) {
- return fileDescriptor_feeds_fc30b4ddff65807e, []int{3, 0}
+ return fileDescriptor_7aa923a38d4cd9d3, []int{3, 0}
}
+
func (m *Availability_Recurrence) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Availability_Recurrence.Unmarshal(m, b)
}
func (m *Availability_Recurrence) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Availability_Recurrence.Marshal(b, m, deterministic)
}
-func (dst *Availability_Recurrence) XXX_Merge(src proto.Message) {
- xxx_messageInfo_Availability_Recurrence.Merge(dst, src)
+func (m *Availability_Recurrence) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Availability_Recurrence.Merge(m, src)
}
func (m *Availability_Recurrence) XXX_Size() int {
return xxx_messageInfo_Availability_Recurrence.Size(m)
@@ -929,16 +921,17 @@
func (m *Availability_ScheduleException) String() string { return proto.CompactTextString(m) }
func (*Availability_ScheduleException) ProtoMessage() {}
func (*Availability_ScheduleException) Descriptor() ([]byte, []int) {
- return fileDescriptor_feeds_fc30b4ddff65807e, []int{3, 1}
+ return fileDescriptor_7aa923a38d4cd9d3, []int{3, 1}
}
+
func (m *Availability_ScheduleException) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Availability_ScheduleException.Unmarshal(m, b)
}
func (m *Availability_ScheduleException) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Availability_ScheduleException.Marshal(b, m, deterministic)
}
-func (dst *Availability_ScheduleException) XXX_Merge(src proto.Message) {
- xxx_messageInfo_Availability_ScheduleException.Merge(dst, src)
+func (m *Availability_ScheduleException) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Availability_ScheduleException.Merge(m, src)
}
func (m *Availability_ScheduleException) XXX_Size() int {
return xxx_messageInfo_Availability_ScheduleException.Size(m)
@@ -997,16 +990,17 @@
func (m *Resources) String() string { return proto.CompactTextString(m) }
func (*Resources) ProtoMessage() {}
func (*Resources) Descriptor() ([]byte, []int) {
- return fileDescriptor_feeds_fc30b4ddff65807e, []int{4}
+ return fileDescriptor_7aa923a38d4cd9d3, []int{4}
}
+
func (m *Resources) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Resources.Unmarshal(m, b)
}
func (m *Resources) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Resources.Marshal(b, m, deterministic)
}
-func (dst *Resources) XXX_Merge(src proto.Message) {
- xxx_messageInfo_Resources.Merge(dst, src)
+func (m *Resources) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Resources.Merge(m, src)
}
func (m *Resources) XXX_Size() int {
return xxx_messageInfo_Resources.Size(m)
@@ -1064,16 +1058,17 @@
func (m *TimeRange) String() string { return proto.CompactTextString(m) }
func (*TimeRange) ProtoMessage() {}
func (*TimeRange) Descriptor() ([]byte, []int) {
- return fileDescriptor_feeds_fc30b4ddff65807e, []int{5}
+ return fileDescriptor_7aa923a38d4cd9d3, []int{5}
}
+
func (m *TimeRange) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TimeRange.Unmarshal(m, b)
}
func (m *TimeRange) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_TimeRange.Marshal(b, m, deterministic)
}
-func (dst *TimeRange) XXX_Merge(src proto.Message) {
- xxx_messageInfo_TimeRange.Merge(dst, src)
+func (m *TimeRange) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_TimeRange.Merge(m, src)
}
func (m *TimeRange) XXX_Size() int {
return xxx_messageInfo_TimeRange.Size(m)
@@ -1110,16 +1105,17 @@
func (m *ServiceFeed) String() string { return proto.CompactTextString(m) }
func (*ServiceFeed) ProtoMessage() {}
func (*ServiceFeed) Descriptor() ([]byte, []int) {
- return fileDescriptor_feeds_fc30b4ddff65807e, []int{6}
+ return fileDescriptor_7aa923a38d4cd9d3, []int{6}
}
+
func (m *ServiceFeed) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ServiceFeed.Unmarshal(m, b)
}
func (m *ServiceFeed) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ServiceFeed.Marshal(b, m, deterministic)
}
-func (dst *ServiceFeed) XXX_Merge(src proto.Message) {
- xxx_messageInfo_ServiceFeed.Merge(dst, src)
+func (m *ServiceFeed) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_ServiceFeed.Merge(m, src)
}
func (m *ServiceFeed) XXX_Size() int {
return xxx_messageInfo_ServiceFeed.Size(m)
@@ -1230,7 +1226,16 @@
// Rules to book/cancel an appointment. (optional)
Rules *SchedulingRules `protobuf:"bytes,6,opt,name=rules,proto3" json:"rules,omitempty"`
// Intake forms to customize the service. (optional)
- Form []*ServiceIntakeForm `protobuf:"bytes,7,rep,name=form,proto3" json:"form,omitempty"`
+ //
+ // Deprecated. Please see intake_form and per_ticket_intake_form.
+ Form []*ServiceIntakeForm `protobuf:"bytes,7,rep,name=form,proto3" json:"form,omitempty"` // Deprecated: Do not use.
+ // A form requesting additional information from the user when they book this
+ // service. (optional)
+ IntakeForm *ServiceIntakeForm `protobuf:"bytes,20,opt,name=intake_form,json=intakeForm,proto3" json:"intake_form,omitempty"`
+ // A form requesting additional information from the user when they book this
+ // service. This form must be filled out once for each ticket the user is
+ // booking. (optional)
+ PerTicketIntakeForm *ServiceIntakeForm `protobuf:"bytes,21,opt,name=per_ticket_intake_form,json=perTicketIntakeForm,proto3" json:"per_ticket_intake_form,omitempty"`
// Whether a prepayment is required, optional or not supported. (optional)
PrepaymentType Service_PrepaymentType `protobuf:"varint,8,opt,name=prepayment_type,json=prepaymentType,proto3,enum=maps.booking.feeds.Service_PrepaymentType" json:"prepayment_type,omitempty"`
// The service's tax rate. If present this field overrides any tax_rate set at
@@ -1266,25 +1271,30 @@
// Each Service may have zero or more values for each service attribute
// defined in the corresponding Merchant.
ServiceAttributeValueId []*ServiceAttributeValueId `protobuf:"bytes,18,rep,name=service_attribute_value_id,json=serviceAttributeValueId,proto3" json:"service_attribute_value_id,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
+ // Rules related to joining the waitlist. Should be populated if the service
+ // and merchant support waitlist functionality. Should not be populated
+ // otherwise.
+ WaitlistRules *WaitlistRules `protobuf:"bytes,19,opt,name=waitlist_rules,json=waitlistRules,proto3" json:"waitlist_rules,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
}
func (m *Service) Reset() { *m = Service{} }
func (m *Service) String() string { return proto.CompactTextString(m) }
func (*Service) ProtoMessage() {}
func (*Service) Descriptor() ([]byte, []int) {
- return fileDescriptor_feeds_fc30b4ddff65807e, []int{7}
+ return fileDescriptor_7aa923a38d4cd9d3, []int{7}
}
+
func (m *Service) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Service.Unmarshal(m, b)
}
func (m *Service) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Service.Marshal(b, m, deterministic)
}
-func (dst *Service) XXX_Merge(src proto.Message) {
- xxx_messageInfo_Service.Merge(dst, src)
+func (m *Service) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Service.Merge(m, src)
}
func (m *Service) XXX_Size() int {
return xxx_messageInfo_Service.Size(m)
@@ -1337,6 +1347,7 @@
return nil
}
+// Deprecated: Do not use.
func (m *Service) GetForm() []*ServiceIntakeForm {
if m != nil {
return m.Form
@@ -1344,6 +1355,20 @@
return nil
}
+func (m *Service) GetIntakeForm() *ServiceIntakeForm {
+ if m != nil {
+ return m.IntakeForm
+ }
+ return nil
+}
+
+func (m *Service) GetPerTicketIntakeForm() *ServiceIntakeForm {
+ if m != nil {
+ return m.PerTicketIntakeForm
+ }
+ return nil
+}
+
func (m *Service) GetPrepaymentType() Service_PrepaymentType {
if m != nil {
return m.PrepaymentType
@@ -1421,6 +1446,13 @@
return nil
}
+func (m *Service) GetWaitlistRules() *WaitlistRules {
+ if m != nil {
+ return m.WaitlistRules
+ }
+ return nil
+}
+
// The price of a service or a fee.
type Price struct {
// The price in micro-units of the currency.
@@ -1443,16 +1475,17 @@
func (m *Price) String() string { return proto.CompactTextString(m) }
func (*Price) ProtoMessage() {}
func (*Price) Descriptor() ([]byte, []int) {
- return fileDescriptor_feeds_fc30b4ddff65807e, []int{8}
+ return fileDescriptor_7aa923a38d4cd9d3, []int{8}
}
+
func (m *Price) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Price.Unmarshal(m, b)
}
func (m *Price) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Price.Marshal(b, m, deterministic)
}
-func (dst *Price) XXX_Merge(src proto.Message) {
- xxx_messageInfo_Price.Merge(dst, src)
+func (m *Price) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Price.Merge(m, src)
}
func (m *Price) XXX_Size() int {
return xxx_messageInfo_Price.Size(m)
@@ -1505,16 +1538,17 @@
func (m *SchedulingRules) String() string { return proto.CompactTextString(m) }
func (*SchedulingRules) ProtoMessage() {}
func (*SchedulingRules) Descriptor() ([]byte, []int) {
- return fileDescriptor_feeds_fc30b4ddff65807e, []int{9}
+ return fileDescriptor_7aa923a38d4cd9d3, []int{9}
}
+
func (m *SchedulingRules) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SchedulingRules.Unmarshal(m, b)
}
func (m *SchedulingRules) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_SchedulingRules.Marshal(b, m, deterministic)
}
-func (dst *SchedulingRules) XXX_Merge(src proto.Message) {
- xxx_messageInfo_SchedulingRules.Merge(dst, src)
+func (m *SchedulingRules) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_SchedulingRules.Merge(m, src)
}
func (m *SchedulingRules) XXX_Size() int {
return xxx_messageInfo_SchedulingRules.Size(m)
@@ -1584,16 +1618,17 @@
func (m *TaxRate) String() string { return proto.CompactTextString(m) }
func (*TaxRate) ProtoMessage() {}
func (*TaxRate) Descriptor() ([]byte, []int) {
- return fileDescriptor_feeds_fc30b4ddff65807e, []int{10}
+ return fileDescriptor_7aa923a38d4cd9d3, []int{10}
}
+
func (m *TaxRate) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TaxRate.Unmarshal(m, b)
}
func (m *TaxRate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_TaxRate.Marshal(b, m, deterministic)
}
-func (dst *TaxRate) XXX_Merge(src proto.Message) {
- xxx_messageInfo_TaxRate.Merge(dst, src)
+func (m *TaxRate) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_TaxRate.Merge(m, src)
}
func (m *TaxRate) XXX_Size() int {
return xxx_messageInfo_TaxRate.Size(m)
@@ -1613,6 +1648,10 @@
// Defines a field that is included in a ServiceIntakeForm.
type ServiceIntakeFormField struct {
+ // A string from an aggregator partner which uniquely identifies a form field.
+ // This id should be the same as the id in the corresponding form field
+ // answer. (required)
+ Id string `protobuf:"bytes,5,opt,name=id,proto3" json:"id,omitempty"`
// The type of this field. (required)
Type ServiceIntakeFormField_FieldType `protobuf:"varint,1,opt,name=type,proto3,enum=maps.booking.feeds.ServiceIntakeFormField_FieldType" json:"type,omitempty"`
// The text shown to the user for this field. (required)
@@ -1631,16 +1670,17 @@
func (m *ServiceIntakeFormField) String() string { return proto.CompactTextString(m) }
func (*ServiceIntakeFormField) ProtoMessage() {}
func (*ServiceIntakeFormField) Descriptor() ([]byte, []int) {
- return fileDescriptor_feeds_fc30b4ddff65807e, []int{11}
+ return fileDescriptor_7aa923a38d4cd9d3, []int{11}
}
+
func (m *ServiceIntakeFormField) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ServiceIntakeFormField.Unmarshal(m, b)
}
func (m *ServiceIntakeFormField) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ServiceIntakeFormField.Marshal(b, m, deterministic)
}
-func (dst *ServiceIntakeFormField) XXX_Merge(src proto.Message) {
- xxx_messageInfo_ServiceIntakeFormField.Merge(dst, src)
+func (m *ServiceIntakeFormField) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_ServiceIntakeFormField.Merge(m, src)
}
func (m *ServiceIntakeFormField) XXX_Size() int {
return xxx_messageInfo_ServiceIntakeFormField.Size(m)
@@ -1651,6 +1691,13 @@
var xxx_messageInfo_ServiceIntakeFormField proto.InternalMessageInfo
+func (m *ServiceIntakeFormField) GetId() string {
+ if m != nil {
+ return m.Id
+ }
+ return ""
+}
+
func (m *ServiceIntakeFormField) GetType() ServiceIntakeFormField_FieldType {
if m != nil {
return m.Type
@@ -1684,11 +1731,11 @@
// Fields that will be displayed to the user. (required)
Field []*ServiceIntakeFormField `protobuf:"bytes,1,rep,name=field,proto3" json:"field,omitempty"`
// If true, this form will be shown to first time customers.
- // (one of first_time_customers or returning_customers required)
- FirstTimeCustomers bool `protobuf:"varint,2,opt,name=first_time_customers,json=firstTimeCustomers,proto3" json:"first_time_customers,omitempty"`
+ // Deprecated. This functionality is not supported for intake forms.
+ FirstTimeCustomers bool `protobuf:"varint,2,opt,name=first_time_customers,json=firstTimeCustomers,proto3" json:"first_time_customers,omitempty"` // Deprecated: Do not use.
// If true, this form will be shown to repeat customers.
- // (one of first_time_customers or returning_customers required)
- ReturningCustomers bool `protobuf:"varint,3,opt,name=returning_customers,json=returningCustomers,proto3" json:"returning_customers,omitempty"`
+ // Deprecated. This functionality is not supported for intake forms.
+ ReturningCustomers bool `protobuf:"varint,3,opt,name=returning_customers,json=returningCustomers,proto3" json:"returning_customers,omitempty"` // Deprecated: Do not use.
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@@ -1698,16 +1745,17 @@
func (m *ServiceIntakeForm) String() string { return proto.CompactTextString(m) }
func (*ServiceIntakeForm) ProtoMessage() {}
func (*ServiceIntakeForm) Descriptor() ([]byte, []int) {
- return fileDescriptor_feeds_fc30b4ddff65807e, []int{12}
+ return fileDescriptor_7aa923a38d4cd9d3, []int{12}
}
+
func (m *ServiceIntakeForm) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ServiceIntakeForm.Unmarshal(m, b)
}
func (m *ServiceIntakeForm) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ServiceIntakeForm.Marshal(b, m, deterministic)
}
-func (dst *ServiceIntakeForm) XXX_Merge(src proto.Message) {
- xxx_messageInfo_ServiceIntakeForm.Merge(dst, src)
+func (m *ServiceIntakeForm) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_ServiceIntakeForm.Merge(m, src)
}
func (m *ServiceIntakeForm) XXX_Size() int {
return xxx_messageInfo_ServiceIntakeForm.Size(m)
@@ -1725,6 +1773,7 @@
return nil
}
+// Deprecated: Do not use.
func (m *ServiceIntakeForm) GetFirstTimeCustomers() bool {
if m != nil {
return m.FirstTimeCustomers
@@ -1732,6 +1781,7 @@
return false
}
+// Deprecated: Do not use.
func (m *ServiceIntakeForm) GetReturningCustomers() bool {
if m != nil {
return m.ReturningCustomers
@@ -1757,16 +1807,17 @@
func (m *Deposit) String() string { return proto.CompactTextString(m) }
func (*Deposit) ProtoMessage() {}
func (*Deposit) Descriptor() ([]byte, []int) {
- return fileDescriptor_feeds_fc30b4ddff65807e, []int{13}
+ return fileDescriptor_7aa923a38d4cd9d3, []int{13}
}
+
func (m *Deposit) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Deposit.Unmarshal(m, b)
}
func (m *Deposit) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Deposit.Marshal(b, m, deterministic)
}
-func (dst *Deposit) XXX_Merge(src proto.Message) {
- xxx_messageInfo_Deposit.Merge(dst, src)
+func (m *Deposit) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Deposit.Merge(m, src)
}
func (m *Deposit) XXX_Size() int {
return xxx_messageInfo_Deposit.Size(m)
@@ -1815,16 +1866,17 @@
func (m *NoShowFee) String() string { return proto.CompactTextString(m) }
func (*NoShowFee) ProtoMessage() {}
func (*NoShowFee) Descriptor() ([]byte, []int) {
- return fileDescriptor_feeds_fc30b4ddff65807e, []int{14}
+ return fileDescriptor_7aa923a38d4cd9d3, []int{14}
}
+
func (m *NoShowFee) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_NoShowFee.Unmarshal(m, b)
}
func (m *NoShowFee) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_NoShowFee.Marshal(b, m, deterministic)
}
-func (dst *NoShowFee) XXX_Merge(src proto.Message) {
- xxx_messageInfo_NoShowFee.Merge(dst, src)
+func (m *NoShowFee) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_NoShowFee.Merge(m, src)
}
func (m *NoShowFee) XXX_Size() int {
return xxx_messageInfo_NoShowFee.Size(m)
@@ -1872,16 +1924,17 @@
func (m *ActionLink) String() string { return proto.CompactTextString(m) }
func (*ActionLink) ProtoMessage() {}
func (*ActionLink) Descriptor() ([]byte, []int) {
- return fileDescriptor_feeds_fc30b4ddff65807e, []int{15}
+ return fileDescriptor_7aa923a38d4cd9d3, []int{15}
}
+
func (m *ActionLink) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ActionLink.Unmarshal(m, b)
}
func (m *ActionLink) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ActionLink.Marshal(b, m, deterministic)
}
-func (dst *ActionLink) XXX_Merge(src proto.Message) {
- xxx_messageInfo_ActionLink.Merge(dst, src)
+func (m *ActionLink) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_ActionLink.Merge(m, src)
}
func (m *ActionLink) XXX_Size() int {
return xxx_messageInfo_ActionLink.Size(m)
@@ -1942,16 +1995,17 @@
func (m *TicketType) String() string { return proto.CompactTextString(m) }
func (*TicketType) ProtoMessage() {}
func (*TicketType) Descriptor() ([]byte, []int) {
- return fileDescriptor_feeds_fc30b4ddff65807e, []int{16}
+ return fileDescriptor_7aa923a38d4cd9d3, []int{16}
}
+
func (m *TicketType) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TicketType.Unmarshal(m, b)
}
func (m *TicketType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_TicketType.Marshal(b, m, deterministic)
}
-func (dst *TicketType) XXX_Merge(src proto.Message) {
- xxx_messageInfo_TicketType.Merge(dst, src)
+func (m *TicketType) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_TicketType.Merge(m, src)
}
func (m *TicketType) XXX_Size() int {
return xxx_messageInfo_TicketType.Size(m)
@@ -2002,16 +2056,17 @@
func (m *RelatedMedia) String() string { return proto.CompactTextString(m) }
func (*RelatedMedia) ProtoMessage() {}
func (*RelatedMedia) Descriptor() ([]byte, []int) {
- return fileDescriptor_feeds_fc30b4ddff65807e, []int{17}
+ return fileDescriptor_7aa923a38d4cd9d3, []int{17}
}
+
func (m *RelatedMedia) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RelatedMedia.Unmarshal(m, b)
}
func (m *RelatedMedia) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_RelatedMedia.Marshal(b, m, deterministic)
}
-func (dst *RelatedMedia) XXX_Merge(src proto.Message) {
- xxx_messageInfo_RelatedMedia.Merge(dst, src)
+func (m *RelatedMedia) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_RelatedMedia.Merge(m, src)
}
func (m *RelatedMedia) XXX_Size() int {
return xxx_messageInfo_RelatedMedia.Size(m)
@@ -2061,16 +2116,17 @@
func (m *ServiceAttributeValueId) String() string { return proto.CompactTextString(m) }
func (*ServiceAttributeValueId) ProtoMessage() {}
func (*ServiceAttributeValueId) Descriptor() ([]byte, []int) {
- return fileDescriptor_feeds_fc30b4ddff65807e, []int{18}
+ return fileDescriptor_7aa923a38d4cd9d3, []int{18}
}
+
func (m *ServiceAttributeValueId) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ServiceAttributeValueId.Unmarshal(m, b)
}
func (m *ServiceAttributeValueId) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ServiceAttributeValueId.Marshal(b, m, deterministic)
}
-func (dst *ServiceAttributeValueId) XXX_Merge(src proto.Message) {
- xxx_messageInfo_ServiceAttributeValueId.Merge(dst, src)
+func (m *ServiceAttributeValueId) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_ServiceAttributeValueId.Merge(m, src)
}
func (m *ServiceAttributeValueId) XXX_Size() int {
return xxx_messageInfo_ServiceAttributeValueId.Size(m)
@@ -2095,6 +2151,70 @@
return ""
}
+// Rules related to joining the waitlist.
+type WaitlistRules struct {
+ // Required. Must be a positive integer for services providing waitlist
+ // functionality. If the service or merchant does not provide waitlist
+ // functionality, this must not be populated.
+ MinPartySize int32 `protobuf:"varint,1,opt,name=min_party_size,json=minPartySize,proto3" json:"min_party_size,omitempty"`
+ // Required. Must be a positive integer for services providing waitlist
+ // functionality. If the service or merchant does not provide waitlist
+ // functionality, this must not be populated.
+ MaxPartySize int32 `protobuf:"varint,2,opt,name=max_party_size,json=maxPartySize,proto3" json:"max_party_size,omitempty"`
+ // If true, the user will be able to send a free-form additional text request
+ // when joining the waitlist for this service.
+ SupportsAdditionalRequest bool `protobuf:"varint,3,opt,name=supports_additional_request,json=supportsAdditionalRequest,proto3" json:"supports_additional_request,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *WaitlistRules) Reset() { *m = WaitlistRules{} }
+func (m *WaitlistRules) String() string { return proto.CompactTextString(m) }
+func (*WaitlistRules) ProtoMessage() {}
+func (*WaitlistRules) Descriptor() ([]byte, []int) {
+ return fileDescriptor_7aa923a38d4cd9d3, []int{19}
+}
+
+func (m *WaitlistRules) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_WaitlistRules.Unmarshal(m, b)
+}
+func (m *WaitlistRules) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_WaitlistRules.Marshal(b, m, deterministic)
+}
+func (m *WaitlistRules) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_WaitlistRules.Merge(m, src)
+}
+func (m *WaitlistRules) XXX_Size() int {
+ return xxx_messageInfo_WaitlistRules.Size(m)
+}
+func (m *WaitlistRules) XXX_DiscardUnknown() {
+ xxx_messageInfo_WaitlistRules.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_WaitlistRules proto.InternalMessageInfo
+
+func (m *WaitlistRules) GetMinPartySize() int32 {
+ if m != nil {
+ return m.MinPartySize
+ }
+ return 0
+}
+
+func (m *WaitlistRules) GetMaxPartySize() int32 {
+ if m != nil {
+ return m.MaxPartySize
+ }
+ return 0
+}
+
+func (m *WaitlistRules) GetSupportsAdditionalRequest() bool {
+ if m != nil {
+ return m.SupportsAdditionalRequest
+ }
+ return false
+}
+
func init() {
proto.RegisterType((*FeedMetadata)(nil), "maps.booking.feeds.FeedMetadata")
proto.RegisterType((*AvailabilityFeed)(nil), "maps.booking.feeds.AvailabilityFeed")
@@ -2117,6 +2237,7 @@
proto.RegisterType((*TicketType)(nil), "maps.booking.feeds.TicketType")
proto.RegisterType((*RelatedMedia)(nil), "maps.booking.feeds.RelatedMedia")
proto.RegisterType((*ServiceAttributeValueId)(nil), "maps.booking.feeds.ServiceAttributeValueId")
+ proto.RegisterType((*WaitlistRules)(nil), "maps.booking.feeds.WaitlistRules")
proto.RegisterEnum("maps.booking.feeds.PriceType", PriceType_name, PriceType_value)
proto.RegisterEnum("maps.booking.feeds.RequireCreditCard", RequireCreditCard_name, RequireCreditCard_value)
proto.RegisterEnum("maps.booking.feeds.ActionPlatform", ActionPlatform_name, ActionPlatform_value)
@@ -2127,151 +2248,161 @@
proto.RegisterEnum("maps.booking.feeds.RelatedMedia_MediaType", RelatedMedia_MediaType_name, RelatedMedia_MediaType_value)
}
-func init() { proto.RegisterFile("feeds.proto", fileDescriptor_feeds_fc30b4ddff65807e) }
+func init() { proto.RegisterFile("feeds.proto", fileDescriptor_7aa923a38d4cd9d3) }
-var fileDescriptor_feeds_fc30b4ddff65807e = []byte{
- // 2281 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0xdf, 0x72, 0xdb, 0xc6,
- 0xd5, 0x0f, 0x48, 0xd1, 0x24, 0x0f, 0x29, 0x09, 0x5c, 0x29, 0x12, 0x2c, 0xc7, 0xb1, 0x3e, 0xf8,
- 0xcb, 0x54, 0x95, 0x53, 0xa6, 0x95, 0x93, 0x4c, 0x32, 0x71, 0x93, 0x50, 0x20, 0x64, 0x61, 0x4c,
- 0x11, 0xf0, 0x12, 0xb2, 0xe3, 0xde, 0x6c, 0x20, 0x60, 0x45, 0x61, 0x4c, 0x02, 0xec, 0x02, 0x54,
- 0xac, 0xcc, 0xe4, 0xa6, 0x57, 0xbd, 0xec, 0x4c, 0xef, 0xfa, 0x04, 0xed, 0xd4, 0x0f, 0xd0, 0xc9,
- 0x5d, 0x9f, 0xa8, 0x0f, 0xd0, 0x9b, 0xce, 0x2e, 0x40, 0x10, 0x94, 0x20, 0xcb, 0x6d, 0x72, 0x23,
- 0x61, 0xcf, 0x39, 0xbf, 0xfd, 0x73, 0xce, 0x9e, 0xdf, 0x39, 0x4b, 0x68, 0x9c, 0x52, 0xea, 0x45,
- 0xed, 0x09, 0x0b, 0xe3, 0x10, 0xa1, 0xb1, 0x33, 0x89, 0xda, 0x27, 0x61, 0xf8, 0xd2, 0x0f, 0x86,
- 0x6d, 0xa1, 0x51, 0xff, 0x55, 0x82, 0xe6, 0x01, 0xa5, 0xde, 0x11, 0x8d, 0x1d, 0xcf, 0x89, 0x1d,
- 0x34, 0x86, 0x8d, 0x09, 0x0b, 0x5d, 0x1a, 0x45, 0x7e, 0x30, 0x24, 0x7e, 0x10, 0xc5, 0x6c, 0xea,
- 0xc6, 0x7e, 0x18, 0x28, 0xd2, 0xb6, 0xb4, 0xb3, 0xb2, 0xf7, 0x69, 0xfb, 0xea, 0x2c, 0xed, 0xfc,
- 0x0c, 0x6d, 0x2b, 0x83, 0x1b, 0x73, 0x34, 0x7e, 0x77, 0x52, 0x24, 0x46, 0xff, 0x07, 0xcd, 0xe8,
- 0xcc, 0x61, 0x1e, 0x09, 0xa6, 0xe3, 0x13, 0xca, 0x94, 0xd2, 0xb6, 0xb4, 0x53, 0xc1, 0x0d, 0x21,
- 0xeb, 0x0b, 0x11, 0x37, 0x89, 0xc3, 0xd8, 0x19, 0x11, 0x21, 0x8c, 0x94, 0x72, 0x62, 0x22, 0x64,
- 0x03, 0x21, 0x42, 0xeb, 0x50, 0x09, 0xc2, 0xc0, 0xa5, 0x4a, 0x65, 0x5b, 0xda, 0x59, 0xc2, 0xc9,
- 0x00, 0xfd, 0x06, 0xd6, 0x87, 0x34, 0xa0, 0xcc, 0xe1, 0x2b, 0x91, 0xd8, 0x1f, 0xd3, 0x28, 0x76,
- 0xc6, 0x13, 0x65, 0x69, 0x5b, 0xda, 0x29, 0xe3, 0xb5, 0xb9, 0xce, 0x9e, 0xa9, 0x54, 0x07, 0xde,
- 0x2d, 0xdc, 0x3e, 0x5a, 0x83, 0x55, 0x0b, 0x9b, 0x9a, 0x3e, 0x18, 0x90, 0xe3, 0xfe, 0x93, 0xbe,
- 0xf9, 0xbc, 0x2f, 0xbf, 0x83, 0x36, 0x61, 0x6d, 0x26, 0xec, 0x0c, 0x88, 0x66, 0x1e, 0x59, 0x3d,
- 0xdd, 0xd6, 0x65, 0x09, 0x6d, 0xc1, 0x46, 0x4e, 0x61, 0xf4, 0x35, 0xac, 0x1f, 0xe9, 0x7d, 0xbb,
- 0xd3, 0x93, 0x4b, 0xea, 0x6b, 0x09, 0xe4, 0xce, 0xb9, 0xe3, 0x8f, 0x9c, 0x13, 0x7f, 0xe4, 0xc7,
- 0x17, 0xdc, 0x77, 0xe8, 0x11, 0xd4, 0xc6, 0xa9, 0xff, 0x84, 0x9f, 0x1b, 0x7b, 0xdb, 0x37, 0xf9,
- 0x19, 0x67, 0x08, 0xf4, 0x3b, 0x58, 0x8f, 0x28, 0x3b, 0xf7, 0x5d, 0x4a, 0x9c, 0xdc, 0xcc, 0x4a,
- 0x69, 0xbb, 0xbc, 0xd3, 0xd8, 0xfb, 0x45, 0xd1, 0x4c, 0x83, 0xc4, 0x3e, 0xbf, 0x11, 0xbc, 0x16,
- 0x5d, 0x15, 0xaa, 0xff, 0x2e, 0xc1, 0x5a, 0x81, 0x31, 0xfa, 0x0c, 0x94, 0x28, 0x76, 0x58, 0x3c,
- 0xf7, 0x2b, 0x61, 0x34, 0x8a, 0x99, 0xef, 0xc6, 0xe2, 0x04, 0x65, 0xbc, 0x21, 0xf4, 0x99, 0x6f,
- 0x71, 0xaa, 0x45, 0x1f, 0xc3, 0x06, 0x0d, 0xbc, 0x22, 0x5c, 0x49, 0xe0, 0xd6, 0x69, 0xe0, 0x5d,
- 0x45, 0xfd, 0x1a, 0xd6, 0xc7, 0x94, 0xb9, 0x67, 0x4e, 0x10, 0x13, 0xdf, 0x9b, 0x63, 0xf8, 0x6d,
- 0xa8, 0x63, 0x34, 0xd3, 0x19, 0x5e, 0x86, 0x68, 0xc3, 0xec, 0x40, 0x0b, 0x80, 0x25, 0x01, 0x68,
- 0xa5, 0xaa, 0x9c, 0x7d, 0x0f, 0x10, 0xa3, 0x51, 0x38, 0x65, 0x2e, 0x8d, 0xe6, 0xe6, 0xb7, 0x44,
- 0x34, 0xee, 0x16, 0xf9, 0x10, 0xcf, 0xac, 0x71, 0x2b, 0x03, 0x66, 0xb3, 0x75, 0xa1, 0xb9, 0x10,
- 0x8b, 0x8a, 0x88, 0x45, 0x61, 0x54, 0x17, 0x82, 0xb0, 0x80, 0x52, 0x7f, 0xac, 0x42, 0x73, 0xc1,
- 0xed, 0xf7, 0xa0, 0x91, 0x73, 0x83, 0xf0, 0x74, 0x1d, 0xc3, 0xfc, 0xf4, 0xe8, 0x2e, 0xc0, 0xfc,
- 0xd4, 0xc2, 0xa3, 0x75, 0x5c, 0xcf, 0x0e, 0x8b, 0xee, 0x40, 0x3d, 0x09, 0x5b, 0x44, 0x5d, 0xe1,
- 0xbb, 0x32, 0xae, 0x09, 0xc1, 0x80, 0xba, 0x3c, 0xd3, 0xbc, 0x69, 0x9a, 0x2e, 0x5c, 0x9f, 0x24,
- 0x4a, 0x63, 0x26, 0xe3, 0x26, 0xf7, 0xa0, 0x11, 0x4d, 0xc2, 0x38, 0x22, 0x22, 0xfd, 0x44, 0xbe,
- 0x95, 0x31, 0x08, 0x91, 0xcd, 0x25, 0x62, 0x7d, 0x61, 0x10, 0x4e, 0x68, 0x20, 0xbc, 0x57, 0xc6,
- 0x75, 0x21, 0x31, 0x27, 0x34, 0x40, 0xbf, 0x04, 0x39, 0x7f, 0x40, 0x12, 0x3b, 0x43, 0xa5, 0x2a,
- 0x36, 0xb9, 0x9a, 0x97, 0xdb, 0xce, 0x10, 0x7d, 0x01, 0xf5, 0xcc, 0xad, 0x4a, 0xed, 0x6d, 0xc2,
- 0x30, 0xb7, 0x47, 0xbb, 0xd0, 0x9a, 0x38, 0x17, 0x63, 0x1a, 0xc4, 0x24, 0x9c, 0x88, 0x03, 0xf9,
- 0x9e, 0x52, 0xdf, 0x2e, 0xf3, 0x85, 0x52, 0x85, 0x29, 0xe4, 0x86, 0x87, 0x9e, 0x00, 0x30, 0xea,
- 0x4e, 0x19, 0xa3, 0x9c, 0x42, 0x40, 0xac, 0xf4, 0xe0, 0xa6, 0x40, 0xb5, 0x71, 0x06, 0xc1, 0x39,
- 0x38, 0x72, 0x00, 0x45, 0xee, 0x19, 0xf5, 0xa6, 0x23, 0x4a, 0xe8, 0x2b, 0x97, 0x8a, 0x45, 0x94,
- 0x86, 0x88, 0xfe, 0xde, 0x8d, 0x93, 0x0e, 0x52, 0xa8, 0x3e, 0x43, 0xe2, 0x56, 0x74, 0x59, 0x84,
- 0x3e, 0x81, 0xaa, 0x47, 0x27, 0x61, 0xe4, 0xc7, 0x4a, 0x53, 0x6c, 0xf6, 0x4e, 0xd1, 0xbc, 0xdd,
- 0xc4, 0x04, 0xcf, 0x6c, 0xd1, 0x6f, 0xa1, 0x11, 0x84, 0x24, 0x3a, 0x0b, 0xbf, 0x23, 0xa7, 0x94,
- 0x2a, 0xcb, 0xd7, 0x7b, 0xb4, 0x1f, 0x0e, 0xce, 0xc2, 0xef, 0x0e, 0x28, 0xc5, 0xf5, 0x60, 0xf6,
- 0x89, 0x8e, 0x61, 0x8d, 0xd1, 0xdf, 0x4f, 0x7d, 0x46, 0x89, 0xcb, 0xa8, 0xe7, 0xc7, 0xc4, 0x75,
- 0x98, 0xa7, 0xac, 0x88, 0xaa, 0xf0, 0x41, 0x71, 0x60, 0x84, 0xb9, 0x26, 0xac, 0x35, 0x87, 0x79,
- 0x3c, 0x4f, 0x2e, 0x89, 0xd0, 0xff, 0xc3, 0x4a, 0xec, 0xbb, 0x2f, 0x69, 0x4c, 0xe2, 0x8b, 0x89,
- 0xb8, 0xb3, 0xab, 0x22, 0x4a, 0xcd, 0x44, 0x6a, 0x5f, 0x4c, 0xa8, 0xe1, 0x6d, 0x7d, 0x0b, 0x30,
- 0xf7, 0x37, 0xda, 0x01, 0x99, 0xd1, 0x09, 0x75, 0x62, 0x32, 0x0d, 0x62, 0x7f, 0x24, 0xee, 0x6a,
- 0xc2, 0x39, 0x2b, 0x89, 0xfc, 0x98, 0x8b, 0xf9, 0x75, 0x9d, 0x5b, 0xd2, 0x73, 0xca, 0x2e, 0x84,
- 0x65, 0x52, 0x62, 0x52, 0x4b, 0x9d, 0x8b, 0x07, 0xd4, 0xdd, 0x7a, 0x0a, 0xad, 0x2b, 0xce, 0x47,
- 0x8f, 0x00, 0x38, 0x4d, 0x11, 0xe6, 0x04, 0x43, 0x9a, 0x12, 0x73, 0xa1, 0xc7, 0x38, 0x5f, 0x61,
- 0x6e, 0x84, 0xeb, 0xf1, 0xec, 0x53, 0xfd, 0x8b, 0x04, 0xf5, 0xec, 0x72, 0xa2, 0xdb, 0xc0, 0x13,
- 0xed, 0xf4, 0x74, 0x9e, 0xb6, 0x55, 0x31, 0x4e, 0x73, 0x56, 0xa8, 0x02, 0x67, 0x4c, 0xb3, 0x9c,
- 0xe5, 0x92, 0xbe, 0x33, 0xa6, 0x68, 0x13, 0xaa, 0x2c, 0x0c, 0xc7, 0x1c, 0x98, 0xb0, 0xdd, 0x2d,
- 0x3e, 0x4c, 0x92, 0x59, 0x28, 0x04, 0x2c, 0xe1, 0xb5, 0x1a, 0x17, 0x08, 0xd4, 0x5d, 0x80, 0x89,
- 0xc3, 0xe2, 0x0b, 0x12, 0xf9, 0xdf, 0x27, 0x85, 0xb1, 0x82, 0xeb, 0x42, 0x32, 0xf0, 0xbf, 0xa7,
- 0x6a, 0x07, 0xea, 0xd9, 0xa6, 0xf9, 0x44, 0x27, 0x74, 0xe8, 0x07, 0x39, 0x4f, 0xd6, 0x84, 0x80,
- 0xfb, 0x70, 0x13, 0xaa, 0x9c, 0xaf, 0x67, 0xae, 0x2b, 0xe3, 0x5b, 0x34, 0xf0, 0x06, 0xd4, 0x55,
- 0xff, 0x20, 0x41, 0x23, 0x2d, 0x0d, 0x3f, 0x43, 0x11, 0xfb, 0x04, 0xaa, 0x29, 0x4d, 0xa5, 0x75,
- 0xeb, 0xce, 0x1b, 0xea, 0x16, 0x9e, 0xd9, 0xaa, 0xaf, 0x01, 0xaa, 0xa9, 0xf0, 0x27, 0x93, 0x23,
- 0x82, 0x25, 0xe1, 0xca, 0xc4, 0xcb, 0xe2, 0x1b, 0x6d, 0x43, 0xc3, 0xa3, 0x91, 0xcb, 0xfc, 0x24,
- 0x91, 0x13, 0x2f, 0xe7, 0x45, 0xe8, 0x23, 0xa8, 0x4c, 0x98, 0x9f, 0x36, 0x1f, 0x8d, 0xbd, 0xdb,
- 0x45, 0xdb, 0xb6, 0xb8, 0x01, 0x4e, 0xec, 0xd0, 0xe7, 0x50, 0x61, 0xd3, 0x11, 0x8d, 0xd2, 0xda,
- 0x72, 0xbf, 0xf0, 0x9c, 0xc9, 0x5d, 0xf4, 0x83, 0x21, 0xe6, 0xa6, 0x38, 0x41, 0xa0, 0xcf, 0x61,
- 0xe9, 0x34, 0x64, 0x63, 0xa5, 0x2a, 0x3c, 0xf4, 0xc1, 0x1b, 0x3c, 0x64, 0x04, 0xb1, 0xf3, 0x92,
- 0x1e, 0x84, 0x6c, 0x8c, 0x05, 0x04, 0x0d, 0x60, 0x75, 0xc2, 0xe8, 0x8c, 0x14, 0x79, 0xb2, 0x09,
- 0x52, 0x5d, 0xd9, 0xdb, 0x7d, 0xc3, 0x2c, 0x6d, 0x2b, 0x83, 0xf0, 0x4c, 0xc4, 0x2b, 0x93, 0x85,
- 0x31, 0xfa, 0x14, 0x6a, 0xb1, 0xf3, 0x8a, 0x30, 0x27, 0xa6, 0x4a, 0xfd, 0x7a, 0x2e, 0xb2, 0x9d,
- 0x57, 0xd8, 0x89, 0x29, 0xae, 0xc6, 0xc9, 0x47, 0x31, 0x3d, 0x43, 0x31, 0x3d, 0xe7, 0xe8, 0xae,
- 0xf1, 0xbf, 0xd3, 0x5d, 0xf3, 0xe7, 0xa1, 0xbb, 0xe5, 0x9f, 0x48, 0x77, 0x5f, 0x41, 0xc3, 0x11,
- 0x1d, 0x25, 0x19, 0xf9, 0xc1, 0x4b, 0x65, 0x45, 0xc4, 0xf1, 0xfd, 0xc2, 0xba, 0x20, 0xcc, 0x7a,
- 0x7e, 0xf0, 0x12, 0x83, 0x93, 0x7d, 0xa3, 0x2f, 0x60, 0x49, 0xc4, 0x6e, 0x55, 0x6c, 0xe4, 0x4d,
- 0xbd, 0xdd, 0xec, 0xbf, 0x08, 0x9c, 0x00, 0xf1, 0xd5, 0x73, 0x64, 0xab, 0xc8, 0xd7, 0xaf, 0x6e,
- 0x67, 0xec, 0x8b, 0x61, 0xce, 0xc4, 0x48, 0x87, 0x65, 0x46, 0x47, 0x4e, 0x4c, 0x3d, 0x32, 0xa6,
- 0x9e, 0xef, 0x28, 0xad, 0xeb, 0xdb, 0x1a, 0x9c, 0x18, 0x1e, 0x71, 0x3b, 0xdc, 0x64, 0xb9, 0x11,
- 0x3a, 0x83, 0xad, 0xac, 0x61, 0x8d, 0x63, 0xe6, 0x9f, 0x4c, 0x63, 0x4a, 0xce, 0x9d, 0xd1, 0x54,
- 0xe4, 0x25, 0x12, 0x73, 0x3e, 0x78, 0x53, 0xdb, 0x3a, 0x03, 0x3d, 0xe3, 0x18, 0xc3, 0xc3, 0x9b,
- 0x51, 0xb1, 0x42, 0xfd, 0x16, 0x56, 0x16, 0xaf, 0x30, 0xba, 0x07, 0x77, 0x2c, 0xac, 0x5b, 0x9d,
- 0x17, 0xbc, 0x23, 0x27, 0xf6, 0x0b, 0x4b, 0x27, 0xc7, 0xfd, 0x81, 0xa5, 0x6b, 0xc6, 0x81, 0xa1,
- 0x77, 0xe5, 0x77, 0x50, 0x13, 0x6a, 0x58, 0x7f, 0x7a, 0x6c, 0x60, 0xbd, 0x2b, 0x4b, 0x7c, 0x64,
- 0x5a, 0xb6, 0x61, 0xf6, 0x79, 0xf3, 0x8e, 0x5a, 0xb0, 0xdc, 0x37, 0x6d, 0x32, 0x38, 0xb6, 0x2c,
- 0x13, 0xdb, 0x7a, 0x57, 0x2e, 0xab, 0x7f, 0x9f, 0xb3, 0xa0, 0x98, 0xff, 0x3d, 0x50, 0x06, 0x3a,
- 0x7e, 0x66, 0x68, 0x7a, 0xd1, 0xe4, 0xf7, 0xe1, 0xde, 0x82, 0xb6, 0x6b, 0xf4, 0x8d, 0xfe, 0x63,
- 0x82, 0x75, 0x2e, 0xed, 0xf0, 0x75, 0x64, 0x09, 0xbd, 0x0f, 0x5b, 0x0b, 0x46, 0x07, 0xa6, 0xd9,
- 0x25, 0x26, 0xee, 0xea, 0xd8, 0xe8, 0x3f, 0x96, 0x4b, 0xe8, 0x2e, 0xdc, 0x5e, 0xd0, 0xeb, 0xcf,
- 0xc4, 0x51, 0x0c, 0xed, 0x89, 0x6e, 0xcb, 0x65, 0xfe, 0xfa, 0x58, 0x50, 0xdb, 0xd8, 0xb0, 0x88,
- 0x6d, 0x1e, 0x63, 0x79, 0x49, 0xfd, 0x01, 0x2a, 0x82, 0x8b, 0x78, 0xaf, 0x27, 0xd8, 0x88, 0x8c,
- 0x7d, 0x97, 0x85, 0x51, 0xca, 0xfa, 0x0d, 0x21, 0x3b, 0x12, 0x22, 0x74, 0x1f, 0x96, 0xd3, 0x92,
- 0x7b, 0x41, 0xdc, 0xd0, 0x9b, 0x55, 0xa6, 0xe6, 0x4c, 0xa8, 0x85, 0x1e, 0x45, 0x1f, 0x02, 0xe2,
- 0x18, 0xfe, 0x58, 0x4c, 0x33, 0x99, 0xb7, 0x74, 0x09, 0x83, 0xca, 0xa9, 0x26, 0x49, 0x65, 0xdb,
- 0x19, 0xaa, 0x7f, 0x2e, 0xc1, 0xea, 0x25, 0x6a, 0xe3, 0x7d, 0xfa, 0xd8, 0x0f, 0x88, 0xe3, 0x9d,
- 0x3b, 0x81, 0x4b, 0x49, 0x1a, 0xf0, 0x74, 0x43, 0xad, 0xb1, 0x1f, 0x74, 0x12, 0xcd, 0x7e, 0xa2,
- 0x40, 0x5f, 0xc1, 0x7b, 0x79, 0xfb, 0x30, 0x18, 0xf9, 0x01, 0x25, 0x2e, 0x1f, 0xf0, 0x49, 0xd3,
- 0x22, 0x75, 0x7b, 0x0e, 0x34, 0x85, 0x85, 0x36, 0x33, 0x40, 0x4f, 0xe1, 0x5d, 0x7e, 0x17, 0x53,
- 0xc8, 0x28, 0xe9, 0x77, 0x39, 0x47, 0x94, 0x6f, 0x20, 0xf0, 0xfd, 0x92, 0x22, 0xe1, 0x35, 0x8e,
- 0xd5, 0x72, 0x50, 0xce, 0x16, 0x8f, 0x00, 0x82, 0x30, 0xe3, 0x9a, 0xa5, 0xb7, 0x99, 0xa7, 0x9e,
- 0x00, 0x0e, 0x28, 0x55, 0xdb, 0x50, 0x4d, 0x19, 0x92, 0xfb, 0x5c, 0x04, 0x84, 0x4c, 0x28, 0x73,
- 0x69, 0x90, 0xbc, 0xa5, 0x2a, 0xb8, 0x29, 0x84, 0x56, 0x22, 0x53, 0x7f, 0x2c, 0xc1, 0xc6, 0x15,
- 0x9a, 0x3f, 0xf0, 0xe9, 0xc8, 0x43, 0x87, 0x29, 0x3d, 0x24, 0x8f, 0xf5, 0x8f, 0xdf, 0xaa, 0x40,
- 0x08, 0x64, 0x5b, 0xfc, 0xcd, 0x71, 0xc5, 0x3a, 0x54, 0x46, 0xce, 0x09, 0x1d, 0xa5, 0x51, 0x4f,
- 0x06, 0x5c, 0x2a, 0xf2, 0x54, 0x29, 0x0b, 0xb2, 0x4e, 0x06, 0xbc, 0xf0, 0xfa, 0xfc, 0xcd, 0x24,
- 0xd8, 0xce, 0x13, 0xe7, 0xaf, 0x61, 0xf0, 0xa3, 0x94, 0x12, 0x3d, 0xf5, 0x8f, 0x12, 0xd4, 0xb3,
- 0x05, 0xf8, 0x05, 0x3d, 0x30, 0xf4, 0x5e, 0xb7, 0x28, 0x41, 0x64, 0x68, 0x0e, 0x0e, 0x4d, 0x6c,
- 0x93, 0x4e, 0x7f, 0xf0, 0x5c, 0xc7, 0xb2, 0x84, 0x96, 0xa1, 0x6e, 0x75, 0x70, 0xe7, 0x31, 0xee,
- 0x58, 0x87, 0x72, 0x89, 0xbf, 0xc4, 0x8f, 0x8e, 0x7b, 0xb6, 0x61, 0xf5, 0x74, 0xa2, 0x1d, 0x9a,
- 0x86, 0xa6, 0xcb, 0x65, 0xb4, 0x02, 0xa0, 0x1d, 0xea, 0xda, 0x93, 0x7d, 0xf3, 0x1b, 0x7d, 0x20,
- 0x2f, 0xf1, 0xac, 0xed, 0x62, 0xd3, 0xea, 0xf2, 0x77, 0x7a, 0x05, 0x35, 0xa0, 0xba, 0x6f, 0x9a,
- 0x3d, 0xbd, 0xd3, 0x97, 0x6f, 0xa9, 0xff, 0x90, 0xa0, 0x75, 0xc5, 0x05, 0xe8, 0x6b, 0xa8, 0x9c,
- 0xf2, 0xfd, 0x29, 0x92, 0x20, 0x9f, 0xdd, 0xb7, 0x77, 0x1c, 0x4e, 0x80, 0xfc, 0x81, 0x7a, 0xea,
- 0xb3, 0x28, 0x79, 0x10, 0x13, 0x77, 0x1a, 0xc5, 0xe1, 0x98, 0xb2, 0x48, 0xb8, 0xaf, 0x86, 0x91,
- 0xd0, 0xf1, 0x8e, 0x4b, 0x9b, 0x69, 0xd0, 0x47, 0xbc, 0xc4, 0xc4, 0x53, 0x16, 0xf0, 0xe4, 0x99,
- 0x03, 0xca, 0x09, 0x20, 0x53, 0x65, 0x00, 0xf5, 0x9f, 0x12, 0x54, 0xd3, 0x3a, 0x87, 0x1e, 0xce,
- 0xab, 0xa2, 0x74, 0x53, 0xdf, 0x91, 0xd5, 0xc4, 0x4b, 0xa9, 0xb3, 0x90, 0x00, 0xf3, 0xfe, 0x2e,
- 0x97, 0x3a, 0xf9, 0x7b, 0xce, 0x7b, 0xc1, 0xaf, 0xa1, 0x99, 0xce, 0x95, 0x54, 0x90, 0xb2, 0xb8,
- 0x66, 0x77, 0xaf, 0x5d, 0x5a, 0xdc, 0xa7, 0x46, 0x0a, 0xe1, 0x03, 0x95, 0x41, 0x3d, 0xab, 0xb7,
- 0xe8, 0x01, 0x94, 0x79, 0xbe, 0xdc, 0x78, 0x00, 0x6e, 0x85, 0x3e, 0x83, 0xda, 0x29, 0xa5, 0xff,
- 0xc5, 0xba, 0xd5, 0x53, 0x2a, 0x3e, 0xd4, 0xbf, 0x49, 0x00, 0xf3, 0x72, 0x8a, 0x64, 0x28, 0x4f,
- 0xd9, 0x28, 0x6d, 0x0f, 0xf9, 0x27, 0xda, 0x82, 0xda, 0xc8, 0x09, 0x86, 0x53, 0x67, 0x38, 0x23,
- 0xb9, 0x6c, 0x8c, 0x7e, 0x25, 0x7e, 0x16, 0x10, 0x8f, 0x7a, 0xea, 0x11, 0x37, 0x9c, 0x06, 0x31,
- 0xbb, 0x48, 0xaf, 0x7f, 0x6b, 0xae, 0xd1, 0x12, 0x05, 0xfa, 0x12, 0x6a, 0x93, 0x91, 0x13, 0x8b,
- 0x2e, 0x6d, 0x49, 0xec, 0x52, 0xbd, 0xbe, 0xba, 0x5b, 0xa9, 0x25, 0xce, 0x30, 0xea, 0x9f, 0x24,
- 0x80, 0x79, 0xf1, 0x2d, 0x78, 0x1e, 0x25, 0xdb, 0x5e, 0x78, 0x1e, 0xa1, 0x07, 0xd0, 0x8a, 0xce,
- 0x42, 0x16, 0x93, 0x7c, 0xab, 0x9a, 0x1c, 0x44, 0x16, 0x8a, 0x6e, 0x51, 0xbf, 0x5a, 0x7e, 0xbb,
- 0x7e, 0x55, 0xfd, 0xab, 0x04, 0xcd, 0x7c, 0x31, 0x2f, 0x70, 0xe0, 0x97, 0x29, 0xed, 0x94, 0xae,
- 0xef, 0x28, 0xf3, 0x33, 0xb4, 0xc5, 0xdf, 0x1c, 0xd9, 0x28, 0x50, 0x75, 0x9d, 0x64, 0xdb, 0x49,
- 0xe9, 0x98, 0x0d, 0xd5, 0x0f, 0xa1, 0x9e, 0x19, 0xa3, 0x75, 0x90, 0x0b, 0x28, 0xa3, 0x0e, 0x15,
- 0xeb, 0xd0, 0xb4, 0x4d, 0x59, 0x52, 0x9f, 0xc3, 0xe6, 0x35, 0x2d, 0x02, 0x2f, 0x78, 0xf3, 0x5e,
- 0x23, 0xf3, 0x63, 0x23, 0x93, 0x19, 0x1e, 0x7f, 0xa2, 0x65, 0x4d, 0x48, 0xe2, 0xbd, 0xea, 0x79,
- 0x82, 0xde, 0x7d, 0x08, 0xf5, 0xec, 0x62, 0xa1, 0x0d, 0x40, 0x07, 0xc6, 0x37, 0x7a, 0x97, 0xe0,
- 0x8e, 0xad, 0x93, 0xae, 0x7e, 0xd0, 0x39, 0xee, 0xd9, 0xf2, 0x3b, 0x9c, 0x85, 0x2c, 0x1d, 0x13,
- 0x4b, 0xc7, 0x03, 0x5e, 0xc7, 0x77, 0x7f, 0x80, 0xd6, 0x95, 0xa6, 0x90, 0x77, 0x00, 0x69, 0x7b,
- 0x41, 0x34, 0xac, 0x77, 0x0d, 0x9b, 0x68, 0x1d, 0xdc, 0xbd, 0xda, 0x26, 0x14, 0x19, 0x69, 0x66,
- 0xbf, 0x6b, 0xa4, 0xcd, 0x88, 0x68, 0x13, 0x8a, 0x8c, 0x3a, 0xbd, 0xe7, 0x9d, 0x17, 0x03, 0xb9,
- 0xb4, 0xfb, 0x5a, 0x82, 0x95, 0xc5, 0x7b, 0xc6, 0x9b, 0x9f, 0x8e, 0xc6, 0x27, 0x20, 0x56, 0xaf,
- 0x63, 0x1f, 0x98, 0xf8, 0xe8, 0xea, 0xc2, 0x97, 0x0d, 0x9e, 0xeb, 0xfb, 0xa4, 0x63, 0x59, 0x3d,
- 0x43, 0xcb, 0xf5, 0x27, 0x97, 0x8d, 0x8e, 0xcc, 0x7d, 0xa3, 0xa7, 0x73, 0x5b, 0xb9, 0x84, 0xee,
- 0xc0, 0xe6, 0x65, 0x7d, 0xa7, 0xdf, 0xc5, 0xa6, 0xd1, 0x95, 0xcb, 0x68, 0x13, 0xd6, 0x2e, 0x2b,
- 0x0d, 0x73, 0x20, 0x2f, 0x9d, 0xdc, 0x12, 0xbf, 0x52, 0x3f, 0xfc, 0x4f, 0x00, 0x00, 0x00, 0xff,
- 0xff, 0x1b, 0x9f, 0x88, 0x50, 0xb4, 0x16, 0x00, 0x00,
+var fileDescriptor_7aa923a38d4cd9d3 = []byte{
+ // 2434 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x59, 0xcf, 0x73, 0xdb, 0xc6,
+ 0xf5, 0x0f, 0x49, 0xd1, 0x24, 0x1f, 0x29, 0x09, 0x5a, 0xc9, 0x12, 0x6d, 0xc7, 0xb1, 0x82, 0x7c,
+ 0x33, 0x5f, 0xd7, 0x4e, 0xd5, 0xd6, 0x4e, 0x32, 0xe9, 0xe4, 0x27, 0x4d, 0x82, 0x31, 0xc6, 0x14,
+ 0x81, 0x2c, 0xa9, 0x28, 0xce, 0x65, 0x03, 0x01, 0x2b, 0x09, 0x63, 0x12, 0x60, 0x17, 0xa0, 0x6d,
+ 0x65, 0x26, 0x97, 0x9e, 0x7a, 0xec, 0x4c, 0x6f, 0xed, 0x4c, 0xcf, 0xed, 0x34, 0x7f, 0x41, 0x4f,
+ 0xed, 0xb5, 0xff, 0x4c, 0xff, 0x80, 0x5e, 0x3a, 0xfb, 0x16, 0x04, 0x40, 0x09, 0xb2, 0x9d, 0x26,
+ 0x17, 0x19, 0xfb, 0xde, 0xe7, 0xbd, 0xdd, 0x7d, 0xbb, 0xef, 0xf3, 0xde, 0xd2, 0xd0, 0x3c, 0xe6,
+ 0xdc, 0x8b, 0xf6, 0x66, 0x22, 0x8c, 0x43, 0x42, 0xa6, 0xce, 0x2c, 0xda, 0x3b, 0x0a, 0xc3, 0x27,
+ 0x7e, 0x70, 0xb2, 0x87, 0x1a, 0xfd, 0xdf, 0x65, 0x68, 0xf5, 0x39, 0xf7, 0xf6, 0x79, 0xec, 0x78,
+ 0x4e, 0xec, 0x90, 0x29, 0x6c, 0xcf, 0x44, 0xe8, 0xf2, 0x28, 0xf2, 0x83, 0x13, 0xe6, 0x07, 0x51,
+ 0x2c, 0xe6, 0x6e, 0xec, 0x87, 0x41, 0xbb, 0xb4, 0x5b, 0xba, 0xbd, 0x76, 0xef, 0xfd, 0xbd, 0x8b,
+ 0x5e, 0xf6, 0xf2, 0x1e, 0xf6, 0xec, 0xd4, 0xdc, 0xcc, 0xac, 0xe9, 0xd5, 0x59, 0x91, 0x98, 0xbc,
+ 0x09, 0xad, 0xe8, 0xd4, 0x11, 0x1e, 0x0b, 0xe6, 0xd3, 0x23, 0x2e, 0xda, 0xe5, 0xdd, 0xd2, 0xed,
+ 0x2a, 0x6d, 0xa2, 0x6c, 0x88, 0x22, 0x09, 0x89, 0xc3, 0xd8, 0x99, 0x30, 0x14, 0x46, 0xed, 0x8a,
+ 0x82, 0xa0, 0x6c, 0x84, 0x22, 0xb2, 0x05, 0xd5, 0x20, 0x0c, 0x5c, 0xde, 0xae, 0xee, 0x96, 0x6e,
+ 0xaf, 0x50, 0x35, 0x20, 0xbf, 0x82, 0xad, 0x13, 0x1e, 0x70, 0xe1, 0xc8, 0x99, 0x58, 0xec, 0x4f,
+ 0x79, 0x14, 0x3b, 0xd3, 0x59, 0x7b, 0x65, 0xb7, 0x74, 0xbb, 0x42, 0x37, 0x33, 0xdd, 0x78, 0xa1,
+ 0xd2, 0x1d, 0xb8, 0x5a, 0xb8, 0x7c, 0xb2, 0x09, 0xeb, 0x36, 0xb5, 0xba, 0xc6, 0x68, 0xc4, 0x0e,
+ 0x86, 0x8f, 0x86, 0xd6, 0xe1, 0x50, 0x7b, 0x8d, 0xec, 0xc0, 0xe6, 0x42, 0xd8, 0x19, 0xb1, 0xae,
+ 0xb5, 0x6f, 0x0f, 0x8c, 0xb1, 0xa1, 0x95, 0xc8, 0x75, 0xd8, 0xce, 0x29, 0xcc, 0x61, 0x97, 0x1a,
+ 0xfb, 0xc6, 0x70, 0xdc, 0x19, 0x68, 0x65, 0xfd, 0xfb, 0x12, 0x68, 0x9d, 0xa7, 0x8e, 0x3f, 0x71,
+ 0x8e, 0xfc, 0x89, 0x1f, 0x9f, 0xc9, 0xd8, 0x91, 0x8f, 0xa0, 0x3e, 0x4d, 0xe2, 0x87, 0x71, 0x6e,
+ 0xde, 0xdb, 0x7d, 0x59, 0x9c, 0x69, 0x6a, 0x41, 0xbe, 0x86, 0xad, 0x88, 0x8b, 0xa7, 0xbe, 0xcb,
+ 0x99, 0x93, 0xf3, 0xdc, 0x2e, 0xef, 0x56, 0x6e, 0x37, 0xef, 0xfd, 0x7f, 0x91, 0xa7, 0x91, 0xc2,
+ 0xe7, 0x17, 0x42, 0x37, 0xa3, 0x8b, 0x42, 0xfd, 0x3f, 0x65, 0xd8, 0x2c, 0x00, 0x93, 0x0f, 0xa0,
+ 0x1d, 0xc5, 0x8e, 0x88, 0xb3, 0xb8, 0x32, 0xc1, 0xa3, 0x58, 0xf8, 0x6e, 0x8c, 0x3b, 0xa8, 0xd0,
+ 0x6d, 0xd4, 0xa7, 0xb1, 0xa5, 0x89, 0x96, 0xbc, 0x0b, 0xdb, 0x3c, 0xf0, 0x8a, 0xec, 0xca, 0x68,
+ 0xb7, 0xc5, 0x03, 0xef, 0xa2, 0xd5, 0x2f, 0x61, 0x6b, 0xca, 0x85, 0x7b, 0xea, 0x04, 0x31, 0xf3,
+ 0xbd, 0xcc, 0x46, 0xde, 0x86, 0x06, 0x25, 0x0b, 0x9d, 0xe9, 0xa5, 0x16, 0x7b, 0xb0, 0xd8, 0xd0,
+ 0x92, 0xc1, 0x0a, 0x1a, 0x6c, 0x24, 0xaa, 0x1c, 0x7e, 0x00, 0x44, 0xf0, 0x28, 0x9c, 0x0b, 0x97,
+ 0x47, 0x19, 0xfc, 0x0a, 0x9e, 0xc6, 0xcd, 0xa2, 0x18, 0xd2, 0x05, 0x9a, 0x6e, 0xa4, 0x86, 0xa9,
+ 0xb7, 0x1e, 0xb4, 0x96, 0xce, 0xa2, 0x8a, 0x67, 0x51, 0x78, 0xaa, 0x4b, 0x87, 0xb0, 0x64, 0xa5,
+ 0xff, 0xbd, 0x06, 0xad, 0xa5, 0xb0, 0xdf, 0x82, 0x66, 0x2e, 0x0c, 0x18, 0xe9, 0x06, 0x85, 0x6c,
+ 0xf7, 0xe4, 0x26, 0x40, 0xb6, 0x6b, 0x8c, 0x68, 0x83, 0x36, 0xd2, 0xcd, 0x92, 0x1b, 0xd0, 0x50,
+ 0xc7, 0x16, 0x71, 0x17, 0x63, 0x57, 0xa1, 0x75, 0x14, 0x8c, 0xb8, 0x2b, 0x33, 0xcd, 0x9b, 0x27,
+ 0xe9, 0x22, 0xf5, 0x2a, 0x51, 0x9a, 0x0b, 0x99, 0x84, 0xdc, 0x82, 0x66, 0x34, 0x0b, 0xe3, 0x88,
+ 0x61, 0xfa, 0x61, 0xbe, 0x55, 0x28, 0xa0, 0x68, 0x2c, 0x25, 0x38, 0x3f, 0x02, 0xc2, 0x19, 0x0f,
+ 0x30, 0x7a, 0x15, 0xda, 0x40, 0x89, 0x35, 0xe3, 0x01, 0xf9, 0x19, 0x68, 0xf9, 0x0d, 0xb2, 0xd8,
+ 0x39, 0x69, 0xd7, 0x70, 0x91, 0xeb, 0x79, 0xf9, 0xd8, 0x39, 0x21, 0x1f, 0x42, 0x23, 0x0d, 0x6b,
+ 0xbb, 0xfe, 0x2a, 0xc7, 0x90, 0xe1, 0xc9, 0x1d, 0xd8, 0x98, 0x39, 0x67, 0x53, 0x1e, 0xc4, 0x2c,
+ 0x9c, 0xe1, 0x86, 0x7c, 0xaf, 0xdd, 0xd8, 0xad, 0xc8, 0x89, 0x12, 0x85, 0x85, 0x72, 0xd3, 0x23,
+ 0x8f, 0x00, 0x04, 0x77, 0xe7, 0x42, 0x70, 0x49, 0x21, 0x80, 0x33, 0xdd, 0x7d, 0xd9, 0x41, 0xed,
+ 0xd1, 0xd4, 0x84, 0xe6, 0xcc, 0x89, 0x03, 0x24, 0x72, 0x4f, 0xb9, 0x37, 0x9f, 0x70, 0xc6, 0x9f,
+ 0xbb, 0x1c, 0x27, 0x69, 0x37, 0xf1, 0xf4, 0xef, 0xbd, 0xd4, 0xe9, 0x28, 0x31, 0x35, 0x16, 0x96,
+ 0x74, 0x23, 0x3a, 0x2f, 0x22, 0xef, 0x41, 0xcd, 0xe3, 0xb3, 0x30, 0xf2, 0xe3, 0x76, 0x0b, 0x17,
+ 0x7b, 0xa3, 0xc8, 0x6f, 0x4f, 0x41, 0xe8, 0x02, 0x4b, 0x3e, 0x86, 0x66, 0x10, 0xb2, 0xe8, 0x34,
+ 0x7c, 0xc6, 0x8e, 0x39, 0x6f, 0xaf, 0x5e, 0x1e, 0xd1, 0x61, 0x38, 0x3a, 0x0d, 0x9f, 0xf5, 0x39,
+ 0xa7, 0x8d, 0x60, 0xf1, 0x49, 0x0e, 0x60, 0x53, 0xf0, 0xdf, 0xcc, 0x7d, 0xc1, 0x99, 0x2b, 0xb8,
+ 0xe7, 0xc7, 0xcc, 0x75, 0x84, 0xd7, 0x5e, 0xc3, 0xaa, 0xf0, 0x76, 0xf1, 0xc1, 0x20, 0xbc, 0x8b,
+ 0xe8, 0xae, 0x23, 0x3c, 0x99, 0x27, 0xe7, 0x44, 0xe4, 0xff, 0x60, 0x2d, 0xf6, 0xdd, 0x27, 0x3c,
+ 0x66, 0xf1, 0xd9, 0x0c, 0xef, 0xec, 0x3a, 0x9e, 0x52, 0x4b, 0x49, 0xc7, 0x67, 0x33, 0x6e, 0x7a,
+ 0xd7, 0xbf, 0x01, 0xc8, 0xe2, 0x4d, 0x6e, 0x83, 0x26, 0xf8, 0x8c, 0x3b, 0x31, 0x9b, 0x07, 0xb1,
+ 0x3f, 0xc1, 0xbb, 0xaa, 0x38, 0x67, 0x4d, 0xc9, 0x0f, 0xa4, 0x58, 0x5e, 0xd7, 0x0c, 0xc9, 0x9f,
+ 0x72, 0x71, 0x86, 0x48, 0x55, 0x62, 0x12, 0xa4, 0x21, 0xc5, 0x23, 0xee, 0x5e, 0xff, 0x02, 0x36,
+ 0x2e, 0x04, 0x9f, 0x7c, 0x04, 0x20, 0x69, 0x8a, 0x09, 0x27, 0x38, 0xe1, 0x09, 0x31, 0x17, 0x46,
+ 0x4c, 0xf2, 0x15, 0x95, 0x20, 0xda, 0x88, 0x17, 0x9f, 0xfa, 0x1f, 0x4b, 0xd0, 0x48, 0x2f, 0x27,
+ 0xb9, 0x06, 0x32, 0xd1, 0x8e, 0x8f, 0xb3, 0xb4, 0xad, 0xe1, 0x38, 0xc9, 0x59, 0x54, 0x05, 0xce,
+ 0x94, 0xa7, 0x39, 0x2b, 0x25, 0x43, 0x67, 0xca, 0xc9, 0x0e, 0xd4, 0x44, 0x18, 0x4e, 0xa5, 0xa1,
+ 0x62, 0xbb, 0x2b, 0x72, 0xa8, 0x92, 0x19, 0x15, 0x68, 0xa6, 0x78, 0xad, 0x2e, 0x05, 0x68, 0x75,
+ 0x13, 0x60, 0xe6, 0x88, 0xf8, 0x8c, 0x45, 0xfe, 0xb7, 0xaa, 0x30, 0x56, 0x69, 0x03, 0x25, 0x23,
+ 0xff, 0x5b, 0xae, 0x77, 0xa0, 0x91, 0x2e, 0x5a, 0x3a, 0x3a, 0xe2, 0x27, 0x7e, 0x90, 0x8b, 0x64,
+ 0x1d, 0x05, 0x32, 0x86, 0x3b, 0x50, 0x93, 0x7c, 0xbd, 0x08, 0x5d, 0x85, 0x5e, 0xe1, 0x81, 0x37,
+ 0xe2, 0xae, 0xfe, 0xdb, 0x12, 0x34, 0x93, 0xd2, 0xf0, 0x13, 0x14, 0xb1, 0xf7, 0xa0, 0x96, 0xd0,
+ 0x54, 0x52, 0xb7, 0x6e, 0xbc, 0xa0, 0x6e, 0xd1, 0x05, 0x56, 0xff, 0x73, 0x0b, 0x6a, 0x89, 0xf0,
+ 0x47, 0x93, 0x23, 0x81, 0x15, 0x0c, 0xa5, 0x8a, 0x32, 0x7e, 0x93, 0x5d, 0x68, 0x7a, 0x3c, 0x72,
+ 0x85, 0xaf, 0x12, 0x59, 0x45, 0x39, 0x2f, 0x22, 0xbf, 0x80, 0xea, 0x4c, 0xf8, 0x49, 0xf3, 0xd1,
+ 0xbc, 0x77, 0xad, 0x68, 0xd9, 0xb6, 0x04, 0x50, 0x85, 0x23, 0xbf, 0x86, 0xaa, 0x98, 0x4f, 0x78,
+ 0x94, 0xd4, 0x96, 0xb7, 0x0a, 0xf7, 0xa9, 0xee, 0xa2, 0x1f, 0x9c, 0x50, 0x09, 0xa5, 0xca, 0x82,
+ 0x7c, 0x0c, 0x2b, 0xc7, 0xa1, 0x98, 0xb6, 0x6b, 0x18, 0xa1, 0xb7, 0x5f, 0x10, 0x21, 0x33, 0x88,
+ 0x9d, 0x27, 0xbc, 0x1f, 0x8a, 0xe9, 0x83, 0x72, 0xbb, 0x44, 0xd1, 0x8c, 0xf4, 0xa1, 0xe9, 0xa3,
+ 0x9c, 0xa1, 0x97, 0x2d, 0x9c, 0xff, 0xd5, 0xbc, 0x50, 0xf0, 0xd3, 0x6f, 0xf2, 0x35, 0x6c, 0xcf,
+ 0xb8, 0x60, 0x49, 0xe2, 0xe6, 0x5d, 0x5e, 0xfd, 0x21, 0x2e, 0x37, 0x67, 0x5c, 0x8c, 0xd1, 0x47,
+ 0x26, 0x24, 0x23, 0x58, 0x9f, 0x09, 0xbe, 0x20, 0x6f, 0x49, 0x0a, 0x48, 0xfe, 0x6b, 0xf7, 0xee,
+ 0xbc, 0xc0, 0xe9, 0x9e, 0x9d, 0x9a, 0x48, 0xc6, 0xa0, 0x6b, 0xb3, 0xa5, 0x31, 0x79, 0x1f, 0xea,
+ 0xb1, 0xf3, 0x9c, 0x09, 0x27, 0xe6, 0xed, 0xc6, 0xe5, 0x9c, 0x39, 0x76, 0x9e, 0x53, 0x27, 0xe6,
+ 0xb4, 0x16, 0xab, 0x8f, 0xe2, 0x32, 0x02, 0xc5, 0x65, 0x24, 0x47, 0xcb, 0xcd, 0xff, 0x9d, 0x96,
+ 0x5b, 0x3f, 0x0d, 0x2d, 0xaf, 0xfe, 0x48, 0x5a, 0xfe, 0x14, 0x9a, 0x0e, 0x76, 0xbe, 0x6c, 0xe2,
+ 0x07, 0x4f, 0xda, 0x6b, 0x78, 0xdf, 0xde, 0x28, 0xac, 0x5f, 0x08, 0x1b, 0xf8, 0xc1, 0x13, 0x0a,
+ 0x4e, 0xfa, 0x4d, 0x3e, 0x84, 0x15, 0x3c, 0xbb, 0x75, 0x5c, 0xc8, 0x8b, 0x7a, 0xd0, 0xc5, 0xbf,
+ 0x78, 0x70, 0x68, 0x24, 0x67, 0xcf, 0x15, 0x85, 0xb6, 0x76, 0xf9, 0xec, 0xe3, 0xb4, 0x4a, 0x50,
+ 0xc8, 0x2a, 0x06, 0x31, 0x60, 0x55, 0xf0, 0x89, 0x13, 0x73, 0x8f, 0x4d, 0xb9, 0xe7, 0x3b, 0xed,
+ 0x8d, 0xcb, 0xdb, 0x2f, 0xaa, 0x80, 0xfb, 0x12, 0x47, 0x5b, 0x22, 0x37, 0x22, 0xa7, 0x70, 0x3d,
+ 0x6d, 0xac, 0xe3, 0x58, 0xf8, 0x47, 0xf3, 0x98, 0xb3, 0xa7, 0xce, 0x64, 0x8e, 0xfc, 0x41, 0xd0,
+ 0xe7, 0xdd, 0x17, 0xb5, 0xd7, 0x0b, 0xa3, 0x2f, 0xa5, 0x8d, 0xe9, 0xd1, 0x9d, 0xa8, 0x58, 0x41,
+ 0x1e, 0xc2, 0xda, 0x33, 0xc7, 0x8f, 0x27, 0x7e, 0x14, 0x33, 0x45, 0x0e, 0x9b, 0x78, 0x11, 0xde,
+ 0x2c, 0xf2, 0x7e, 0x98, 0x20, 0x15, 0x35, 0xac, 0x3e, 0xcb, 0x0f, 0xf5, 0x6f, 0x60, 0x6d, 0x39,
+ 0x19, 0xc8, 0x2d, 0xb8, 0x61, 0x53, 0xc3, 0xee, 0x3c, 0x96, 0x6f, 0x10, 0x36, 0x7e, 0x6c, 0x1b,
+ 0xec, 0x60, 0x38, 0xb2, 0x8d, 0xae, 0xd9, 0x37, 0x8d, 0x9e, 0xf6, 0x1a, 0x69, 0x41, 0x9d, 0x1a,
+ 0x5f, 0x1c, 0x98, 0xd4, 0xe8, 0x69, 0x25, 0x39, 0xb2, 0xec, 0xb1, 0x69, 0x0d, 0xe5, 0x73, 0x85,
+ 0x6c, 0xc0, 0xea, 0xd0, 0x1a, 0xb3, 0xd1, 0x81, 0x6d, 0x5b, 0x74, 0x6c, 0xf4, 0xb4, 0x8a, 0xfe,
+ 0xb7, 0x8c, 0xf7, 0xd1, 0xff, 0xeb, 0xd0, 0x1e, 0x19, 0xf4, 0x4b, 0xb3, 0x6b, 0x14, 0x39, 0x7f,
+ 0x0b, 0x6e, 0x2d, 0x69, 0x7b, 0xe6, 0xd0, 0x1c, 0x7e, 0xce, 0xa8, 0x21, 0xa5, 0x1d, 0x39, 0x8f,
+ 0x56, 0x22, 0x6f, 0xc0, 0xf5, 0x25, 0x50, 0xdf, 0xb2, 0x7a, 0xcc, 0xa2, 0x3d, 0x83, 0x9a, 0xc3,
+ 0xcf, 0xb5, 0x32, 0xb9, 0x09, 0xd7, 0x96, 0xf4, 0xc6, 0x97, 0xb8, 0x15, 0xb3, 0xfb, 0xc8, 0x18,
+ 0x6b, 0x15, 0xf9, 0xde, 0x5a, 0x52, 0x8f, 0xa9, 0x69, 0xb3, 0xb1, 0x75, 0x40, 0xb5, 0x15, 0xfd,
+ 0x3b, 0xa8, 0x22, 0xfb, 0xca, 0xee, 0x16, 0xf9, 0x97, 0x4d, 0x7d, 0x57, 0x84, 0x51, 0x52, 0xe7,
+ 0x9a, 0x28, 0xdb, 0x47, 0x11, 0x79, 0x0b, 0x56, 0x93, 0x26, 0xe3, 0x8c, 0xb9, 0xa1, 0xb7, 0xa8,
+ 0xc5, 0xad, 0x85, 0xb0, 0x1b, 0x7a, 0x9c, 0xbc, 0x03, 0x44, 0xda, 0xc8, 0xe7, 0x71, 0xc2, 0x09,
+ 0xb2, 0x89, 0x55, 0x35, 0x43, 0x4b, 0x34, 0x8a, 0x14, 0xc6, 0xce, 0x89, 0xfe, 0x87, 0x32, 0xac,
+ 0x9f, 0x23, 0x73, 0xf9, 0x32, 0x99, 0xfa, 0x01, 0x73, 0xbc, 0xa7, 0x4e, 0xe0, 0x72, 0x96, 0x1c,
+ 0x6e, 0xb2, 0xa0, 0x8d, 0xa9, 0x1f, 0x74, 0x94, 0xe6, 0x81, 0x52, 0x90, 0x4f, 0xe1, 0xf5, 0x3c,
+ 0x3e, 0x0c, 0x26, 0x7e, 0xc0, 0x99, 0x2b, 0x07, 0xd2, 0x69, 0x52, 0x96, 0xaf, 0x65, 0x86, 0x16,
+ 0x22, 0xba, 0x0b, 0x00, 0xf9, 0x02, 0xae, 0xca, 0x5b, 0x9d, 0x98, 0x4c, 0x54, 0x87, 0x2f, 0xd9,
+ 0xa6, 0xf2, 0x92, 0x92, 0x85, 0xb5, 0x63, 0x53, 0xda, 0x76, 0x73, 0xa6, 0x92, 0x77, 0x3e, 0x02,
+ 0x08, 0xc2, 0x94, 0xb5, 0x56, 0x5e, 0xc5, 0x4f, 0x43, 0x19, 0xf4, 0x39, 0xd7, 0xf7, 0xa0, 0x96,
+ 0x70, 0xad, 0x8c, 0x39, 0x1e, 0x08, 0x9b, 0x71, 0xe1, 0xf2, 0x40, 0xbd, 0x1e, 0xab, 0xb4, 0x85,
+ 0x42, 0x5b, 0xc9, 0xf4, 0x7f, 0x95, 0x61, 0xfb, 0x42, 0xfd, 0xe8, 0xfb, 0x7c, 0xe2, 0x91, 0x35,
+ 0x28, 0xfb, 0x1e, 0xd6, 0xde, 0x06, 0x2d, 0xfb, 0x32, 0x93, 0x14, 0xf1, 0xa8, 0x9f, 0x2b, 0xde,
+ 0x7d, 0xa5, 0x4a, 0x84, 0x9e, 0xf6, 0xf0, 0x6f, 0x8e, 0x85, 0xb6, 0xa0, 0x3a, 0x71, 0x8e, 0xf8,
+ 0x24, 0xb9, 0x05, 0x6a, 0x20, 0xa5, 0xc8, 0x00, 0xed, 0x0a, 0x96, 0x01, 0x35, 0x90, 0xad, 0x87,
+ 0x2f, 0x5f, 0x8d, 0xc8, 0xa3, 0x1e, 0xc6, 0xa3, 0x4e, 0xc1, 0x8f, 0x12, 0xb2, 0xf5, 0xf4, 0xdf,
+ 0x95, 0xa0, 0x91, 0x4e, 0x20, 0x2f, 0x6c, 0xdf, 0x34, 0x06, 0xbd, 0xa2, 0x84, 0xd1, 0xa0, 0x35,
+ 0x7a, 0x68, 0xd1, 0x31, 0xeb, 0x0c, 0x47, 0x87, 0x06, 0xd5, 0x4a, 0x64, 0x15, 0x1a, 0x76, 0x87,
+ 0x76, 0x3e, 0xa7, 0x1d, 0xfb, 0xa1, 0x56, 0x26, 0x9b, 0xb0, 0xbe, 0x7f, 0x30, 0x18, 0x9b, 0xf6,
+ 0xc0, 0x60, 0xdd, 0x87, 0x96, 0xd9, 0x35, 0xb4, 0x0a, 0x59, 0x03, 0xe8, 0x3e, 0x34, 0xba, 0x8f,
+ 0x1e, 0x58, 0x5f, 0x19, 0x23, 0x6d, 0x45, 0x66, 0x71, 0x8f, 0x5a, 0x76, 0xcf, 0x3a, 0x1c, 0x6a,
+ 0x55, 0xd2, 0x84, 0xda, 0x03, 0xcb, 0x1a, 0x18, 0x9d, 0xa1, 0x76, 0x45, 0xff, 0x47, 0x09, 0x36,
+ 0x2e, 0x84, 0x80, 0x7c, 0x06, 0xd5, 0x63, 0xb9, 0xbe, 0x76, 0x09, 0x69, 0xed, 0xce, 0xab, 0x07,
+ 0x8e, 0x2a, 0x43, 0xf2, 0x2e, 0x6c, 0x1d, 0xfb, 0x22, 0x52, 0x3f, 0x09, 0x30, 0x77, 0x1e, 0xc5,
+ 0xe1, 0x94, 0x8b, 0x08, 0xc3, 0x57, 0xc7, 0x1b, 0x40, 0x50, 0x2f, 0xfb, 0xce, 0xee, 0x42, 0x4b,
+ 0xee, 0xcb, 0x02, 0x16, 0xcf, 0x45, 0x20, 0x13, 0x2a, 0x33, 0xaa, 0x64, 0x46, 0xa9, 0x3a, 0x35,
+ 0xd2, 0xff, 0x59, 0x82, 0x5a, 0x52, 0x49, 0xc9, 0xfd, 0xac, 0xee, 0x96, 0x5e, 0xd6, 0x81, 0xa5,
+ 0x55, 0xf7, 0x5c, 0x4a, 0x2d, 0x25, 0x46, 0xd6, 0xe9, 0xe6, 0x52, 0x2a, 0x7f, 0xff, 0x65, 0x57,
+ 0xfc, 0x19, 0xb4, 0x12, 0x5f, 0xaa, 0x46, 0x55, 0xf0, 0xba, 0xdd, 0xbc, 0x74, 0x6a, 0xbc, 0x57,
+ 0xcd, 0xc4, 0x44, 0x0e, 0x74, 0x01, 0x8d, 0xb4, 0xa2, 0x93, 0xbb, 0x50, 0x91, 0x79, 0xf4, 0xd2,
+ 0x0d, 0x48, 0x14, 0xf9, 0x00, 0xea, 0xc7, 0x9c, 0xff, 0x80, 0x79, 0x6b, 0xc7, 0x1c, 0x3f, 0xf4,
+ 0xbf, 0x96, 0x00, 0xb2, 0x82, 0x4d, 0x34, 0xa8, 0xcc, 0xc5, 0x24, 0x69, 0x94, 0xe5, 0x27, 0xb9,
+ 0x0e, 0xf5, 0x89, 0x13, 0x9c, 0xcc, 0x9d, 0x93, 0x05, 0xf9, 0xa5, 0x63, 0xf2, 0x73, 0xfc, 0x81,
+ 0x04, 0x7f, 0xde, 0xe0, 0x1e, 0x73, 0xc3, 0x79, 0x10, 0x8b, 0xb3, 0x24, 0x0d, 0x36, 0x32, 0x4d,
+ 0x57, 0x29, 0xc8, 0x27, 0x50, 0x9f, 0x4d, 0x9c, 0x18, 0xdb, 0xc2, 0x15, 0x5c, 0xa5, 0x7e, 0x79,
+ 0xff, 0x60, 0x27, 0x48, 0x9a, 0xda, 0xe8, 0xbf, 0x2f, 0x01, 0x64, 0xe5, 0xbd, 0xe0, 0xa1, 0xa8,
+ 0x96, 0xbd, 0xf4, 0x50, 0x24, 0x77, 0x61, 0x23, 0x3a, 0x0d, 0x45, 0xcc, 0xf2, 0x4d, 0xbb, 0xda,
+ 0x88, 0x86, 0x8a, 0x5e, 0x51, 0xe7, 0x5e, 0x79, 0xb5, 0xce, 0x5d, 0xff, 0x4b, 0x09, 0x5a, 0xf9,
+ 0x76, 0xa1, 0x20, 0x80, 0x9f, 0x24, 0xf4, 0x53, 0xbe, 0xbc, 0x67, 0xcd, 0x7b, 0xd8, 0xc3, 0xbf,
+ 0x39, 0xd2, 0x69, 0x43, 0xcd, 0x75, 0xd4, 0xb2, 0x55, 0x49, 0x59, 0x0c, 0xf5, 0x77, 0xa0, 0x91,
+ 0x82, 0xc9, 0x16, 0x68, 0x05, 0xd4, 0xd1, 0x80, 0xaa, 0xfd, 0xd0, 0x1a, 0x5b, 0x5a, 0x49, 0x3f,
+ 0x84, 0x9d, 0x4b, 0x9a, 0x10, 0x59, 0x08, 0xb3, 0x6e, 0x26, 0x8d, 0x63, 0x33, 0x95, 0x99, 0x9e,
+ 0x7c, 0xac, 0xa6, 0x6d, 0x8e, 0x8a, 0x5e, 0xed, 0xa9, 0xb2, 0xd6, 0xff, 0x54, 0x82, 0xd5, 0xa5,
+ 0x06, 0x44, 0x9e, 0x8c, 0xcc, 0xa5, 0xdc, 0x6b, 0x33, 0xa5, 0xf0, 0xc0, 0x5e, 0x3c, 0x38, 0x11,
+ 0xe5, 0x3c, 0xcf, 0xa3, 0xca, 0x09, 0xca, 0x79, 0x9e, 0xa1, 0x3e, 0x81, 0x1b, 0xd1, 0x7c, 0x36,
+ 0x0b, 0x45, 0x1c, 0x31, 0xc7, 0xf3, 0x7c, 0xb9, 0x73, 0x67, 0x82, 0xc4, 0xca, 0x23, 0xf5, 0x6b,
+ 0x5f, 0x9d, 0x5e, 0x5b, 0x40, 0x3a, 0x29, 0x82, 0x2a, 0xc0, 0x9d, 0xfb, 0xd0, 0x48, 0xaf, 0x3d,
+ 0xd9, 0x06, 0xd2, 0x37, 0xbf, 0x32, 0x7a, 0x8c, 0x76, 0xc6, 0x06, 0xeb, 0x19, 0xfd, 0xce, 0xc1,
+ 0x60, 0xac, 0xbd, 0x26, 0xb9, 0xd2, 0x36, 0x28, 0xb3, 0x0d, 0x3a, 0x92, 0xdd, 0xc7, 0x9d, 0xef,
+ 0x60, 0xe3, 0x42, 0x53, 0x2c, 0xfb, 0x96, 0xa4, 0x29, 0x62, 0x5d, 0x6a, 0xf4, 0xcc, 0x31, 0xeb,
+ 0x76, 0x68, 0xef, 0x62, 0x73, 0x53, 0x04, 0xea, 0x5a, 0xc3, 0x9e, 0x99, 0xb4, 0x50, 0xd8, 0xdc,
+ 0x14, 0x81, 0x3a, 0x83, 0xc3, 0xce, 0xe3, 0x91, 0x56, 0xbe, 0xf3, 0x7d, 0x09, 0xd6, 0x96, 0xb3,
+ 0x40, 0xb6, 0x6c, 0x9d, 0xae, 0x74, 0xc0, 0xec, 0x41, 0x67, 0xdc, 0xb7, 0xe8, 0xfe, 0xc5, 0x89,
+ 0xcf, 0x03, 0x0e, 0x8d, 0x07, 0xac, 0x63, 0xdb, 0x03, 0xb3, 0x9b, 0xeb, 0xaa, 0xce, 0x83, 0xf6,
+ 0xad, 0x07, 0xe6, 0xc0, 0x90, 0x58, 0xad, 0x4c, 0x6e, 0xc0, 0xce, 0x79, 0x7d, 0x67, 0xd8, 0xa3,
+ 0x96, 0xd9, 0xd3, 0x2a, 0x64, 0x07, 0x36, 0xcf, 0x2b, 0x4d, 0x6b, 0xa4, 0xad, 0x1c, 0x5d, 0xc1,
+ 0xff, 0x4d, 0xb8, 0xff, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x7d, 0x3f, 0x56, 0x84, 0x5c, 0x18,
+ 0x00, 0x00,
}
diff --git a/feeds/feeds.proto b/feeds/feeds.proto
index d714f46..f3c863d 100644
--- a/feeds/feeds.proto
+++ b/feeds/feeds.proto
@@ -409,7 +409,18 @@
// Rules to book/cancel an appointment. (optional)
SchedulingRules rules = 6;
// Intake forms to customize the service. (optional)
- repeated ServiceIntakeForm form = 7;
+ //
+ // Deprecated. Please see intake_form and per_ticket_intake_form.
+ repeated ServiceIntakeForm form = 7 [deprecated = true];
+
+ // A form requesting additional information from the user when they book this
+ // service. (optional)
+ ServiceIntakeForm intake_form = 20;
+
+ // A form requesting additional information from the user when they book this
+ // service. This form must be filled out once for each ticket the user is
+ // booking. (optional)
+ ServiceIntakeForm per_ticket_intake_form = 21;
// Enum to indicate the prepayment type.
enum PrepaymentType {
@@ -476,6 +487,11 @@
// Each Service may have zero or more values for each service attribute
// defined in the corresponding Merchant.
repeated ServiceAttributeValueId service_attribute_value_id = 18;
+
+ // Rules related to joining the waitlist. Should be populated if the service
+ // and merchant support waitlist functionality. Should not be populated
+ // otherwise.
+ WaitlistRules waitlist_rules = 19;
}
// The price of a service or a fee.
@@ -533,6 +549,11 @@
// Defines a field that is included in a ServiceIntakeForm.
message ServiceIntakeFormField {
+ // A string from an aggregator partner which uniquely identifies a form field.
+ // This id should be the same as the id in the corresponding form field
+ // answer. (required)
+ string id = 5;
+
// Enum to indicate the type of field.
enum FieldType {
// Fields of unspecified or unknown type will be ignored.
@@ -571,12 +592,12 @@
repeated ServiceIntakeFormField field = 1;
// If true, this form will be shown to first time customers.
- // (one of first_time_customers or returning_customers required)
- bool first_time_customers = 2;
+ // Deprecated. This functionality is not supported for intake forms.
+ bool first_time_customers = 2 [deprecated = true];
// If true, this form will be shown to repeat customers.
- // (one of first_time_customers or returning_customers required)
- bool returning_customers = 3;
+ // Deprecated. This functionality is not supported for intake forms.
+ bool returning_customers = 3 [deprecated = true];
}
// A deposit that the user may be charged or have a hold on their credit card
@@ -726,3 +747,18 @@
// in the service attribute definition.
string value_id = 2;
}
+
+// Rules related to joining the waitlist.
+message WaitlistRules {
+ // Required. Must be a positive integer for services providing waitlist
+ // functionality. If the service or merchant does not provide waitlist
+ // functionality, this must not be populated.
+ int32 min_party_size = 1;
+ // Required. Must be a positive integer for services providing waitlist
+ // functionality. If the service or merchant does not provide waitlist
+ // functionality, this must not be populated.
+ int32 max_party_size = 2;
+ // If true, the user will be able to send a free-form additional text request
+ // when joining the waitlist for this service.
+ bool supports_additional_request = 3;
+}
diff --git a/proto/v3.proto b/proto/v3.proto
index c443878..7775478 100644
--- a/proto/v3.proto
+++ b/proto/v3.proto
@@ -161,8 +161,7 @@
// The parameters to be used if the payment is processed by the partner
// (i.e. payment_information.payment_processed_by is equal to
// PROCESSED_BY_PARTNER). (optional)
- PaymentProcessingParameters payment_processing_parameters =
- 5;
+ PaymentProcessingParameters payment_processing_parameters = 5;
// Idempotency token for CreateBooking requests. (required)
string idempotency_token = 6;
@@ -577,6 +576,8 @@
CAN_FULFILL = 1;
// No adequate availability for the slot requested.
SLOT_UNAVAILABLE = 2;
+ // Child tickets cannot be booked without an adult ticket.
+ CHILD_TICKETS_WITHOUT_ADULT = 6;
// The combination of ticket types requested cannot be fulfilled.
UNFULFILLABLE_TICKET_COMBINATION = 3;
// The total price of this line item is not correct.
diff --git a/proto/waitlist.proto b/proto/waitlist.proto
new file mode 100644
index 0000000..5784284
--- /dev/null
+++ b/proto/waitlist.proto
@@ -0,0 +1,323 @@
+// API v3 waitlist public interface declaration
+syntax = "proto3";
+
+// Waitlist partner API protos
+package ext.maps.booking.partner.v3.waitlist;
+
+// +------+------------------------------+----------------------------------+
+// | Verb | HTTP Path | Request/Response Body |
+// +------+------------------------------+----------------------------------+
+// | GET | /v3/HealthCheck | - |
+// | | | - |
+// +------+------------------------------+----------------------------------+
+// | POST | /v3/BatchGetWaitlistEstimates| BatchGetWaitlistEstimatesRequest |
+// | | | BatchGetWaitlistEstimatesResponse|
+// +------+------------------------------+----------------------------------+
+// | POST | /v3/CreateWaitlistEntry | CreateWaitlistEntryRequest |
+// | | | CreateWaitlistEntryResponse |
+// +------+------------------------------+----------------------------------+
+// | POST | /v3/GetWaitlistEntry | GetWaitlistEntryRequest |
+// | | | GetWaitlistEntryResponse |
+// +------+------------------------------+----------------------------------+
+// | POST | /v3/DeleteWaitlistEntry | DeleteWaitlistEntryRequest |
+// | | | google.protobuf.Empty |
+// +------+------------------------------+----------------------------------+
+
+// BatchGetWaitEstimates method
+
+// Batch request for the wait estimates for the specified merchant, service and
+// party sizes.
+message BatchGetWaitEstimatesRequest {
+ // Required. Partner-provided ID for the merchant.
+ string merchant_id = 1;
+
+ // Required. Partner-provided ID for the service.
+ string service_id = 2;
+
+ // Required. The different party sizes WaitEstimates are requested for.
+ // WaitEstimates may differ with the number of people in the party.
+ repeated int32 party_size = 3;
+}
+
+// Response for the BatchGetWaitEstimates RPC with the wait estimates of the
+// specified merchant, service and party sizes.
+message BatchGetWaitEstimatesResponse {
+ // Required. A status for the waitlist that indicates whether new users can
+ // join and what the reason is if they can’t join. If the waitlist is not
+ // open, all other fields in the BatchGetWaitEstimatesResponse are expected to
+ // be unset.
+ WaitlistStatus waitlist_status = 1;
+
+ // The wait estimates for each party size requested. The response should
+ // contain exactly one wait estimate for each party size sent in the request.
+ // If a party size is not available for some reason, prefer ommitting it
+ // instead of returning an error so that the user will have some options to
+ // choose from.
+ repeated WaitEstimate wait_estimate = 2;
+}
+
+// A status for the waitlist that determines if new users can join and what
+// the reason is if they can’t join.
+enum WaitlistStatus {
+ WAITLIST_STATUS_UNSPECIFIED = 0;
+ // The waitlist is open and is accepting new users.
+ OPEN = 1;
+ // There is currently no wait and users should arrive at the merchant
+ // without joining the waitlist.
+ CLOSED_NO_WAIT = 2;
+ // The waitlist is not currently accepting new users because it is full
+ // or closed for other reasons.
+ CLOSED_OTHER = 3;
+}
+
+// The range of time for the current estimated seat time for the user. Estimated
+// seat time range must change over time when the merchant or partner updates
+// their estimates.
+message EstimatedSeatTimeRange {
+ // Required. The lower bound for the range. Expressed as the number of seconds
+ // since the Unix epoch.
+ int64 start_seconds = 1;
+
+ // Required. The upper bound for the range. Expressed as the number of seconds
+ // since the Unix epoch.
+ int64 end_seconds = 2;
+}
+
+// Contains fields measuring how long (in time or # of people) until the
+// user is ready to leave the waitlist and be seated.
+message WaitLength {
+ // The count of how many other parties are ahead of the user in the waitlist.
+ // parties_ahead_count must change over time as parties ahead
+ // in the waitlist are seated or leave the waitlist. Either
+ // parties_ahead_count or estimated_seat_time_range must be populated. Both
+ // should be populated.
+ int32 parties_ahead_count = 1;
+
+ // The range of time that the user is estimated to be seated in. Either
+ // parties_ahead_count or estimated_seat_time_range must be populated. Both
+ // should be populated.
+ EstimatedSeatTimeRange estimated_seat_time_range = 2;
+}
+
+// The wait estimate for a particular party size, merchant and service.
+message WaitEstimate {
+ // Required. The party size this wait estimate applies to.
+ int32 party_size = 1;
+
+ // Required. Contains fields measuring how long (in time or # of people) until
+ // the user is ready to leave the waitlist and be seated.
+ WaitLength wait_length = 2;
+}
+
+// CreateWaitlistEntry method
+
+// Request for a user to join the waitlist.
+//
+// Reserve with Google may retry REST HTTP requests if no response is
+// received. If the exact same CreateWaitlistEntry is received a second time,
+// then the same CreateWaitlistResponse must be returned. A second waitlist
+// entry must not be created.
+message CreateWaitlistEntryRequest {
+ // Required. Partner-provided ID for the merchant.
+ string merchant_id = 1;
+
+ // Required. Partner-provided ID for the service.
+ string service_id = 2;
+
+ // Required. The party size requested for the waitlist entry.
+ int32 party_size = 3;
+
+ // Required. Personal information of the user joining the waitlist.
+ UserInformation user_information = 4;
+
+ // A string from the user which contains any special requests or additional
+ // information that they would like to notify the merchant about.
+ // This will be populated when the user submits an additional request to
+ // Reserve with Google. The partner can disable this functionality at the
+ // service level by setting supports_additional_request to false in the
+ // service feed.
+ string additional_request = 5;
+
+ // Required. Used to differentiate retries from separate requests. If the
+ // exact same CreateWaitlistEntry is received a second time, (including
+ // idempotency_token) then the same CreateWaitlistResponse must be returned.
+ string idempotency_token = 6;
+}
+
+// Response for the CreateWaitlistEntry RPC with the waitlist entry ID or any
+// failing business logic information.
+message CreateWaitlistEntryResponse {
+ // Unique partner-provided ID for the newly created entry in the waitlist.
+ // Required if the waitlist entry was created successfully. Unique for all
+ // time.
+ string waitlist_entry_id = 1;
+
+ WaitlistBusinessLogicFailure waitlist_business_logic_failure = 2;
+}
+
+// GetWaitlistEntry method
+
+// Get the waitlist entry corresponding to the provided waitlist entry ID.
+message GetWaitlistEntryRequest {
+ // Required. The partner-provided waitlist entry ID to request info for.
+ string waitlist_entry_id = 1;
+}
+
+// Response with the waitlist entry corresponding to the provided
+// waitlist entry ID.
+message GetWaitlistEntryResponse {
+ // Required. The partner-provided information about a user’s waitlist entry.
+ WaitlistEntry waitlist_entry = 1;
+}
+
+// DeleteWaitlistEntry method
+
+// Cancel the user's entry in the waitlist.
+message DeleteWaitlistEntryRequest {
+ // Required. The partner-provided ID for the waitlist entry to be deleted.
+ string waitlist_entry_id = 1;
+}
+
+// WaitlistEntry specification
+
+enum WaitlistEntryState {
+ WAITLIST_ENTRY_STATE_UNSPECIFIED = 0;
+ // The waitlist entry was created and the user is currently waiting in the
+ // waitlist.
+ WAITING = 1;
+ // The waitlist entry has been canceled. Cancellation for no-shows should use
+ // the NO_SHOW state.
+ CANCELED = 2;
+ // The merchant is ready to serve the user.
+ SERVICE_READY = 3;
+ // The user has checked in with the host and is waiting to be seated.
+ CHECKED_IN = 4;
+ // The user has arrived and been seated by the merchant.
+ SEATED = 5;
+ // The user did not arrive at the merchant in time and lost their space.
+ NO_SHOW = 6;
+}
+
+// The times at which the waitlist entry changed state.
+message WaitlistEntryStateTimes {
+ // Required. The time at which the waitlist entry was created.
+ // In seconds since Unix epoch.
+ int64 created_time_seconds = 1;
+
+ // The time that the waitlist entry was cancelled. Must be populated
+ // when the waitlist entry has been canceled but not before.
+ // In seconds since Unix epoch.
+ int64 canceled_time_seconds = 2;
+
+ // The time the merchant was ready to serve the user.
+ // service_readied_time_seconds must be populated after the merchant is
+ // ready to serve the user but not before.
+ // In seconds since Unix epoch.
+ int64 service_readied_time_seconds = 3;
+
+ // The actual time the user checked in with the host. checked_in_time must be
+ // populated after the user has checked in with the merchant but not before.
+ // In seconds since Unix epoch.
+ int64 checked_in_time_seconds = 4;
+
+ // The seated time for the user. seated_time_seconds must be populated
+ // when the user has been seated but not before.
+ // In seconds since Unix epoch.
+ int64 seated_time_seconds = 5;
+
+ // The time that the user was marked as a no-show. marked_no_show_time_seconds
+ // must be populated when the user has been marked a no-show but not before.
+ // In seconds since Unix epoch.
+ int64 marked_no_show_time_seconds = 6;
+}
+
+// An entry in the waitlist.
+message WaitlistEntry {
+ // Required.
+ WaitlistEntryState waitlist_entry_state = 1;
+
+ // Required. The times at which the waitlist entry changed state.
+ WaitlistEntryStateTimes waitlist_entry_state_times = 2;
+
+ // Required. Contains fields measuring how long (in time or # of people) until
+ // the user is ready to leave the waitlist and be seated.
+ WaitEstimate wait_estimate = 3;
+}
+
+// WaitlistBusinessLogicFailure specification
+
+// Status data that conveys why creating a waitlist entry fails.
+// If there is a business logic error that is not captured here, please
+// reach out to the Reserve with Google team to add it to this list. Other
+// errors should be returned using standard HTTP error codes.
+message WaitlistBusinessLogicFailure {
+ enum Cause {
+ // Default value: Don't use; amounts to an "unknown error"
+ // Unexpected errors must be returned using standard HTTP error codes.
+ CAUSE_UNSPECIFIED = 0;
+
+ // The user has already booked a waitlist entry with the partner.
+ EXISTING_WAITLIST_ENTRY = 1;
+
+ // The requested party size is below the merchant’s minimum.
+ BELOW_MIN_PARTY_SIZE = 2;
+
+ // The requested party size is above the merchant’s maximum.
+ ABOVE_MAX_PARTY_SIZE = 3;
+
+ // The requested merchant is currently closed.
+ MERCHANT_CLOSED = 4;
+
+ // There is currently no wait and the user should walk in without joining
+ // the waitlist.
+ NO_WAIT = 5;
+
+ // The waitlist is at capacity and new users are not being accepted at this
+ // time.
+ WAITLIST_FULL = 6;
+ }
+ // Required. The reason why the booking failed.
+ Cause cause = 1;
+
+ // This optional field is used for the partner to include additional
+ // information for debugging purposes only.
+ string description = 2;
+}
+
+// User specification
+
+// Personal information about the person making a booking
+message UserInformation {
+ // Unique ID of the user to the partner, chosen by Reserve with Google.
+ // (required)
+ string user_id = 1;
+
+ // Given name of the user (maximum 40 characters) (required)
+ string given_name = 2;
+
+ // Family name of the user (maximum 40 characters) (required)
+ string family_name = 3;
+
+ // Address of the user (optional)
+ PostalAddress address = 4;
+
+ // Phone number of the user (required)
+ string telephone = 5;
+
+ // Email address of the user (required)
+ string email = 6;
+}
+
+// The postal address for a merchant.
+message PostalAddress {
+ // The country, e.g. "USA". (required)
+ string country = 1;
+ // The locality/city, e.g. "Mountain View". (required)
+ string locality = 2;
+ // The region/state/province, e.g. "CA". (required)
+ string region = 3;
+ // The postal code, e.g. "94043". (required)
+ string postal_code = 4;
+ // The street address, e.g. "1600 Amphitheatre Pkwy". (required)
+ string street_address = 5;
+}
diff --git a/testclient/waitlistClient.go b/testclient/waitlistClient.go
new file mode 100644
index 0000000..92098bf
--- /dev/null
+++ b/testclient/waitlistClient.go
@@ -0,0 +1,253 @@
+/*
+Copyright 2017 Google Inc.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+https://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+package main
+
+import (
+ "flag"
+ "fmt"
+ "log"
+ "os"
+ "path/filepath"
+ "time"
+
+ "github.com/maps-booking-v3/api"
+ "github.com/maps-booking-v3/utils"
+
+ fpb "github.com/maps-booking-v3/feeds"
+)
+
+const logFile = "http_test_client_log_"
+
+var (
+ serverAddr = flag.String("server_addr", "example.com:80", "Your http server's address in the format of host:port")
+ credentialsFile = flag.String("credentials_file", "", "File containing credentials for your server. Leave blank to bypass authentication. File should have exactly one line of the form 'username:password'.")
+ numTestServices = flag.Int("num_test_services", 10, "Maximum number of services to test from service_feed. Services will be selected randomly")
+ allFlows = flag.Bool("all_tests", false, "Whether to test all endpoints.")
+ healthFlow = flag.Bool("health_check_test", false, "Whether to test the Health endpoint.")
+ batchGetWaitEstimatesFlow = flag.Bool("batch_get_wait_estimates_test", false, "Whether to test the BatchGetWaitEstimates endpoint.")
+ createWaitlistEntryFlow = flag.Bool("create_waitlist_entry_test", false, "Whether to test the CreateWaitlistEntry endpoint.")
+ getWaitlistEntryFlow = flag.Bool("get_waitlist_entry_test", false, "Whether to test the GetWaitlistEntry endpoint. CreateWaitlistEntry will also be called to create the entries.")
+ deleteWaitlistEntryFlow = flag.Bool("delete_waitlist_entry_test", false, "Whether to test the DeleteWaitlistEntry endpoint. CreateWaitlistEntry will also be called to create the entries.")
+ serviceFeed = flag.String("service_feed", "", "Absolute path to service feed required for all tests except health. Feeds can be in either json or pb3 format.")
+ outputDir = flag.String("output_dir", "", "Absolute path of dir to dump log file.")
+ caFile = flag.String("ca_file", "", "Absolute path to your server's Certificate Authority root cert. Downloading all roots currently recommended by the Google Internet Authority is a suitable alternative https://pki.google.com/roots.pem. Leave blank to connect using http rather than https.")
+ fullServerName = flag.String("full_server_name", "", "Fully qualified domain name. Same name used to sign CN. Only necessary if ca_file is specified and the base URL differs from the server address.")
+ outputToTerminal = flag.Bool("output_to_terminal", false, "Output to terminal rather than a file.")
+)
+
+type counters struct {
+ TotalServicesProcessed int
+ HealthCheckSuccess bool
+ BatchGetWaitEstimatesSuccess int
+ BatchGetWaitEstimatesErrors int
+ CreateWaitlistEntrySuccess int
+ CreateWaitlistEntryErrors int
+ GetWaitlistEntrySuccess int
+ GetWaitlistEntryErrors int
+ DeleteWaitlistEntrySuccess int
+ DeleteWaitlistEntryErrors int
+}
+
+// GenerateWaitlistEntries creates a waitlist entry for each provided service.
+func GenerateWaitlistEntries(services []*fpb.Service, stats *counters, conn *api.HTTPConnection) []string {
+ log.Println("no previous waitlist entries to use, acquiring new inventory")
+ utils.LogFlow("Generate Fresh Entries", "Start")
+ defer utils.LogFlow("Generate Fresh Entries", "End")
+
+ var out []string
+ totalServices := len(services)
+ for i, s := range services {
+ id, err := api.CreateWaitlistEntry(s, conn)
+ if err != nil {
+ log.Printf("%s. skipping waitlistEntry %d/%d, serviceID: %s",
+ err.Error(), i, totalServices, s.GetServiceId())
+ stats.CreateWaitlistEntryErrors++
+ continue
+ }
+ out = append(out, id)
+ stats.CreateWaitlistEntrySuccess++
+ }
+ return out
+}
+
+func createLogFile() (*os.File, error) {
+ var err error
+ outPath := *outputDir
+ if outPath == "" {
+ outPath, err = os.Getwd()
+ if err != nil {
+ return nil, err
+ }
+ }
+
+ now := time.Now().UTC()
+ nowString := fmt.Sprintf("%d-%02d-%02d_%02d-%02d-%02d", now.Year(), now.Month(), now.Day(), now.Hour(), now.Minute(), now.Second())
+ outFile := filepath.Join(outPath, fmt.Sprintf("%s%s", logFile, nowString))
+
+ return os.Create(outFile)
+}
+
+func logStats(stats counters) {
+ log.Println("\n************* Begin Stats *************\n")
+ var totalErrors int
+ if *healthFlow || *allFlows {
+ if stats.HealthCheckSuccess {
+ log.Println("HealthCheck Succeeded")
+ } else {
+ totalErrors++
+ log.Println("HealthCheck Failed")
+ }
+ }
+ if *batchGetWaitEstimatesFlow || *allFlows {
+ totalErrors += stats.BatchGetWaitEstimatesErrors
+ log.Printf("BatchGetWaitEstimates Errors: %d/%d", stats.BatchGetWaitEstimatesErrors, stats.BatchGetWaitEstimatesErrors+stats.BatchGetWaitEstimatesSuccess)
+ }
+ if *createWaitlistEntryFlow || *allFlows {
+ totalErrors += stats.CreateWaitlistEntryErrors
+ log.Printf("CreateWaitlistEntry Errors: %d/%d", stats.CreateWaitlistEntryErrors, stats.CreateWaitlistEntryErrors+stats.CreateWaitlistEntrySuccess)
+ }
+ if *getWaitlistEntryFlow || *allFlows {
+ totalErrors += stats.GetWaitlistEntryErrors
+ log.Printf("GetWaitlistEntry Errors: %d/%d", stats.GetWaitlistEntryErrors, stats.GetWaitlistEntryErrors+stats.GetWaitlistEntrySuccess)
+ }
+ if *deleteWaitlistEntryFlow || *allFlows {
+ totalErrors += stats.DeleteWaitlistEntryErrors
+ log.Printf("DeleteWaitlistEntry Errors: %d/%d", stats.DeleteWaitlistEntryErrors, stats.DeleteWaitlistEntryErrors+stats.DeleteWaitlistEntrySuccess)
+ }
+
+ log.Println("\n\n\n")
+ if totalErrors == 0 {
+ log.Println("All Tests Pass!")
+ } else {
+ log.Printf("Found %d Errors", totalErrors)
+ }
+
+ log.Println("\n************* End Stats *************\n")
+ os.Exit(totalErrors)
+}
+
+func main() {
+ flag.Parse()
+ var stats counters
+
+ if !*outputToTerminal {
+ // Set up logging before continuing with flows
+ f, err := createLogFile()
+ if err != nil {
+ log.Fatalf("Failed to create log file %v", err)
+ }
+ defer f.Close()
+ log.SetOutput(f)
+ }
+
+ conn, err := api.InitHTTPConnection(*serverAddr, *credentialsFile, *caFile, *fullServerName)
+ if err != nil {
+ log.Fatalf("Failed to init http connection %v", err)
+ }
+
+ // HealthCheck Flow
+ if *healthFlow || *allFlows {
+ stats.HealthCheckSuccess = true
+ if err := api.HealthCheck(conn); err != nil {
+ stats.HealthCheckSuccess = false
+ log.Println(err.Error())
+ }
+ if !*allFlows && !*batchGetWaitEstimatesFlow && !*createWaitlistEntryFlow &&
+ !*getWaitlistEntryFlow && !*deleteWaitlistEntryFlow {
+ logStats(stats)
+ }
+ }
+
+ // Build services.
+ if *serviceFeed == "" {
+ log.Fatal("please set service_feed flag if you wish to test additional flows")
+ }
+
+ var services []*fpb.Service
+ services, err = utils.ParseServiceFeed(*serviceFeed)
+ if err != nil {
+ log.Fatalf("Failed to get services: %v", err.Error())
+ }
+ // Remove services without waitlist rules.
+ waitlistServices := services[:0]
+ for _, s := range services {
+ if s.GetWaitlistRules() != nil {
+ waitlistServices = append(waitlistServices, s)
+ }
+ }
+
+ if len(services) == 0 {
+ log.Fatal("no services have waitlist rules")
+ }
+ reducedServices := utils.ReduceServices(waitlistServices, *numTestServices)
+ stats.TotalServicesProcessed += len(reducedServices)
+
+ // BatchGetWaitEstimates Flow
+ if *batchGetWaitEstimatesFlow || *allFlows {
+ utils.LogFlow("BatchGetWaitEstimates", "Start")
+
+ for i, s := range reducedServices {
+ if err = api.BatchGetWaitEstimates(s, conn); err != nil {
+ log.Printf("%s. BatchGerWaitEstimates failed for service %d/%d. Service_id:",
+ err.Error(), i, stats.TotalServicesProcessed, s.GetServiceId())
+ stats.BatchGetWaitEstimatesErrors++
+ continue
+ }
+ stats.BatchGetWaitEstimatesSuccess++
+ }
+ utils.LogFlow("BatchGetWaitEstimates", "End")
+ }
+ // CreateWaitlistEntry Flow.
+ var ids []string
+ if *createWaitlistEntryFlow || *getWaitlistEntryFlow ||
+ *deleteWaitlistEntryFlow || *allFlows {
+ utils.LogFlow("CreateWaitlistEntry", "Start")
+ ids = GenerateWaitlistEntries(reducedServices, &stats, conn)
+ utils.LogFlow("CreateWaitlistEntry", "End")
+ }
+ // GetWaitlistEntry Flow
+ if *getWaitlistEntryFlow || *allFlows {
+ utils.LogFlow("GetWaitlistEntry", "Start")
+ for _, id := range ids {
+ if _, err = api.GetWaitlistEntry(id, conn); err != nil {
+ log.Printf("%s. get waitlist entry failed for waitlist entry id: %s",
+ err.Error(), id)
+ stats.GetWaitlistEntryErrors++
+ continue
+ }
+ stats.GetWaitlistEntrySuccess++
+ }
+ utils.LogFlow("GetWaitlistEntry", "End")
+ }
+
+ // DeleteWaitlistentry Flow
+ if *deleteWaitlistEntryFlow || *allFlows {
+ utils.LogFlow("DeleteWaitlistEntry", "Start")
+
+ for _, id := range ids {
+ if err = api.DeleteWaitlistEntry(id, conn); err != nil {
+ log.Printf("%s. Delete waitlist entry failed for waitlist entry id: %s",
+ err.Error(), id)
+ stats.DeleteWaitlistEntryErrors++
+ continue
+ }
+ stats.DeleteWaitlistEntrySuccess++
+ }
+ utils.LogFlow("DeleteWaitlistEntry", "End")
+ }
+
+ logStats(stats)
+}
diff --git a/utils/utils.go b/utils/utils.go
index fa87aa6..f23c4a8 100644
--- a/utils/utils.go
+++ b/utils/utils.go
@@ -34,6 +34,7 @@
fpb "github.com/maps-booking-v3/feeds"
mpb "github.com/maps-booking-v3/v3"
+ wpb "github.com/maps-booking-v3/waitlist"
)
// SlotKey is a struct representing a unique service.
@@ -49,7 +50,23 @@
log.Println(strings.Join([]string{"\n##########\n", status, f, "Flow", "\n##########"}, " "))
}
-func parseServiceFeed(serviceFeed string) ([]*fpb.Service, error) {
+// ReduceServices randomly selects and returns numTestServices from the provided services.
+func ReduceServices(allServices []*fpb.Service, numTestServices int) []*fpb.Service {
+ reducedServices := make([]*fpb.Service, 0, numTestServices)
+
+ if len(allServices) <= numTestServices {
+ reducedServices = allServices
+ } else {
+ for _, n := range rand.Perm(len(allServices))[0:numTestServices] {
+ reducedServices = append(reducedServices, allServices[n])
+ }
+ }
+ log.Printf("Selected %d services out of a possible %d", len(reducedServices), len(allServices))
+ return reducedServices
+}
+
+// ParseServiceFeed returns a slice of services for each service in the feed.
+func ParseServiceFeed(serviceFeed string) ([]*fpb.Service, error) {
var feed fpb.ServiceFeed
content, err := ioutil.ReadFile(serviceFeed)
if err != nil {
@@ -137,7 +154,7 @@
// MerchantLineItemMapFrom attempts to build a collection of LineItems from a service and availability feed.
func MerchantLineItemMapFrom(serviceFeed, availabilityFeed string, testSlots int) (map[string][]*mpb.LineItem, error) {
- services, err := parseServiceFeed(serviceFeed)
+ services, err := ParseServiceFeed(serviceFeed)
if err != nil {
return nil, err
}
@@ -422,3 +439,47 @@
}
return m
}
+
+// ValidateWaitEstimate validates all the fields are populated for the wait estimate.
+func ValidateWaitEstimate(waitEstimate *wpb.WaitEstimate) error {
+ if waitEstimate.GetPartySize() <= 0 {
+ return errors.New("party size <= 0")
+ }
+ waitLength := waitEstimate.GetWaitLength()
+ if waitLength == nil {
+ return errors.New("wait estimate not specified")
+ }
+ if waitLength.GetPartiesAheadCount() < 0 {
+ return errors.New("parties ahead count < 0")
+ }
+ estimatedSeatTimeRange := waitLength.GetEstimatedSeatTimeRange()
+ if estimatedSeatTimeRange == nil {
+ return errors.New("estimated seat time range not specified")
+ }
+ if estimatedSeatTimeRange.GetStartSeconds() <= 0 {
+ return errors.New("start seconds <= 0")
+ }
+ if estimatedSeatTimeRange.GetEndSeconds() <= 0 {
+ return errors.New("end seconds <= 0")
+ }
+ return nil
+}
+
+// ValidateWaitlistEntry validates all the fields are populated for the waitlist entry.
+func ValidateWaitlistEntry(waitlistEntry *wpb.WaitlistEntry) error {
+ if waitlistEntry.GetWaitlistEntryState() == wpb.WaitlistEntryState_WAITLIST_ENTRY_STATE_UNSPECIFIED {
+ return errors.New("waitlist entry state not specified")
+ }
+ stateTimes := waitlistEntry.GetWaitlistEntryStateTimes()
+ if stateTimes == nil {
+ return errors.New("WaitlistEntryStateTimes not specified")
+ }
+ if stateTimes.GetCreatedTimeSeconds() <= 0 {
+ return errors.New("created time seconds <= 0")
+ }
+ waitEstimate := waitlistEntry.GetWaitEstimate()
+ if waitEstimate == nil {
+ return errors.New("wait estimate not specified")
+ }
+ return ValidateWaitEstimate(waitEstimate)
+}
diff --git a/v3/v3.pb.go b/v3/v3.pb.go
index 3db0270..20c140b 100644
--- a/v3/v3.pb.go
+++ b/v3/v3.pb.go
@@ -1,11 +1,15 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: v3.proto
+// Booking partner API protos
package ext_maps_booking_partner_v3
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
+import (
+ fmt "fmt"
+ math "math"
+
+ proto "github.com/golang/protobuf/proto"
+)
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
@@ -52,6 +56,7 @@
4: "NO_SHOW",
5: "NO_SHOW_PENALIZED",
}
+
var BookingStatus_value = map[string]int32{
"BOOKING_STATUS_UNSPECIFIED": 0,
"CONFIRMED": 1,
@@ -64,8 +69,9 @@
func (x BookingStatus) String() string {
return proto.EnumName(BookingStatus_name, int32(x))
}
+
func (BookingStatus) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{0}
+ return fileDescriptor_1820d8e1a9fad753, []int{0}
}
// Used when booking/order failure cause is PAYMENT_ERROR_CARD_TYPE_REJECTED to
@@ -88,19 +94,21 @@
3: "AMERICAN_EXPRESS",
4: "DISCOVER",
}
+
var CreditCardType_value = map[string]int32{
"CREDIT_CARD_TYPE_UNSPECIFIED": 0,
- "VISA": 1,
- "MASTERCARD": 2,
- "AMERICAN_EXPRESS": 3,
- "DISCOVER": 4,
+ "VISA": 1,
+ "MASTERCARD": 2,
+ "AMERICAN_EXPRESS": 3,
+ "DISCOVER": 4,
}
func (x CreditCardType) String() string {
return proto.EnumName(CreditCardType_name, int32(x))
}
+
func (CreditCardType) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{1}
+ return fileDescriptor_1820d8e1a9fad753, []int{1}
}
type PaymentOptionType int32
@@ -118,6 +126,7 @@
2: "PAYMENT_OPTION_MULTI_USE",
3: "PAYMENT_OPTION_UNLIMITED_USE",
}
+
var PaymentOptionType_value = map[string]int32{
"PAYMENT_OPTION_TYPE_UNSPECIFIED": 0,
"PAYMENT_OPTION_SINGLE_USE": 1,
@@ -128,8 +137,9 @@
func (x PaymentOptionType) String() string {
return proto.EnumName(PaymentOptionType_name, int32(x))
}
+
func (PaymentOptionType) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{2}
+ return fileDescriptor_1820d8e1a9fad753, []int{2}
}
// Prepayment status of a booking.
@@ -163,6 +173,7 @@
3: "PREPAYMENT_REFUNDED",
4: "PREPAYMENT_CREDITED",
}
+
var PrepaymentStatus_value = map[string]int32{
"PREPAYMENT_STATUS_UNSPECIFIED": 0,
"PREPAYMENT_PROVIDED": 1,
@@ -174,8 +185,9 @@
func (x PrepaymentStatus) String() string {
return proto.EnumName(PrepaymentStatus_name, int32(x))
}
+
func (PrepaymentStatus) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{3}
+ return fileDescriptor_1820d8e1a9fad753, []int{3}
}
// Defines how a total price is determined from an availability.
@@ -197,6 +209,7 @@
0: "FIXED_RATE_DEFAULT",
1: "PER_PERSON",
}
+
var PriceType_value = map[string]int32{
"FIXED_RATE_DEFAULT": 0,
"PER_PERSON": 1,
@@ -205,8 +218,9 @@
func (x PriceType) String() string {
return proto.EnumName(PriceType_name, int32(x))
}
+
func (PriceType) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{4}
+ return fileDescriptor_1820d8e1a9fad753, []int{4}
}
// This enum indicates what requirements exist for the user to acknowledge or
@@ -228,6 +242,7 @@
1: "DO_NOT_SHOW_DURATION",
2: "MUST_SHOW_DURATION",
}
+
var CheckAvailabilityResponse_DurationRequirement_value = map[string]int32{
"DURATION_REQUIREMENT_UNSPECIFIED": 0,
"DO_NOT_SHOW_DURATION": 1,
@@ -237,8 +252,9 @@
func (x CheckAvailabilityResponse_DurationRequirement) String() string {
return proto.EnumName(CheckAvailabilityResponse_DurationRequirement_name, int32(x))
}
+
func (CheckAvailabilityResponse_DurationRequirement) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{1, 0}
+ return fileDescriptor_1820d8e1a9fad753, []int{1, 0}
}
type BookingFailure_Cause int32
@@ -297,6 +313,7 @@
11: "BOOKING_NOT_CANCELLABLE",
12: "OVERLAPPING_RESERVATION",
}
+
var BookingFailure_Cause_value = map[string]int32{
"CAUSE_UNSPECIFIED": 0,
"SLOT_UNAVAILABLE": 1,
@@ -316,8 +333,9 @@
func (x BookingFailure_Cause) String() string {
return proto.EnumName(BookingFailure_Cause_name, int32(x))
}
+
func (BookingFailure_Cause) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{23, 0}
+ return fileDescriptor_1820d8e1a9fad753, []int{23, 0}
}
type OrderFailure_Cause int32
@@ -347,6 +365,7 @@
3: "PAYMENT_ERROR_CARD_DECLINED",
4: "PAYMENT_ERROR",
}
+
var OrderFailure_Cause_value = map[string]int32{
"CAUSE_UNSPECIFIED": 0,
"ORDER_UNFULFILLABLE": 1,
@@ -358,8 +377,9 @@
func (x OrderFailure_Cause) String() string {
return proto.EnumName(OrderFailure_Cause_name, int32(x))
}
+
func (OrderFailure_Cause) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{26, 0}
+ return fileDescriptor_1820d8e1a9fad753, []int{26, 0}
}
// The result of an order fulfillability check.
@@ -387,19 +407,21 @@
3: "UNFULFILLABLE_SERVICE_COMBINATION",
4: "ORDER_UNFULFILLABLE_OTHER_REASON",
}
+
var OrderFulfillability_OrderFulfillabilityResult_value = map[string]int32{
"ORDER_FULFILLABILITY_RESULT_UNSPECIFIED": 0,
- "CAN_FULFILL": 1,
- "UNFULFILLABLE_LINE_ITEM": 2,
- "UNFULFILLABLE_SERVICE_COMBINATION": 3,
- "ORDER_UNFULFILLABLE_OTHER_REASON": 4,
+ "CAN_FULFILL": 1,
+ "UNFULFILLABLE_LINE_ITEM": 2,
+ "UNFULFILLABLE_SERVICE_COMBINATION": 3,
+ "ORDER_UNFULFILLABLE_OTHER_REASON": 4,
}
func (x OrderFulfillability_OrderFulfillabilityResult) String() string {
return proto.EnumName(OrderFulfillability_OrderFulfillabilityResult_name, int32(x))
}
+
func (OrderFulfillability_OrderFulfillabilityResult) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{27, 0}
+ return fileDescriptor_1820d8e1a9fad753, []int{27, 0}
}
// The result of a line item fulfillability check.
@@ -412,6 +434,8 @@
LineItemFulfillability_CAN_FULFILL LineItemFulfillability_ItemFulfillabilityResult = 1
// No adequate availability for the slot requested.
LineItemFulfillability_SLOT_UNAVAILABLE LineItemFulfillability_ItemFulfillabilityResult = 2
+ // Child tickets cannot be booked without an adult ticket.
+ LineItemFulfillability_CHILD_TICKETS_WITHOUT_ADULT LineItemFulfillability_ItemFulfillabilityResult = 6
// The combination of ticket types requested cannot be fulfilled.
LineItemFulfillability_UNFULFILLABLE_TICKET_COMBINATION LineItemFulfillability_ItemFulfillabilityResult = 3
// The total price of this line item is not correct.
@@ -425,14 +449,17 @@
0: "ITEM_FULFILLABILITY_RESULT_UNSPECIFIED",
1: "CAN_FULFILL",
2: "SLOT_UNAVAILABLE",
+ 6: "CHILD_TICKETS_WITHOUT_ADULT",
3: "UNFULFILLABLE_TICKET_COMBINATION",
4: "INCORRECT_PRICE",
5: "ITEM_UNFULFILLABLE_OTHER_REASON",
}
+
var LineItemFulfillability_ItemFulfillabilityResult_value = map[string]int32{
"ITEM_FULFILLABILITY_RESULT_UNSPECIFIED": 0,
"CAN_FULFILL": 1,
"SLOT_UNAVAILABLE": 2,
+ "CHILD_TICKETS_WITHOUT_ADULT": 6,
"UNFULFILLABLE_TICKET_COMBINATION": 3,
"INCORRECT_PRICE": 4,
"ITEM_UNFULFILLABLE_OTHER_REASON": 5,
@@ -441,8 +468,9 @@
func (x LineItemFulfillability_ItemFulfillabilityResult) String() string {
return proto.EnumName(LineItemFulfillability_ItemFulfillabilityResult_name, int32(x))
}
+
func (LineItemFulfillability_ItemFulfillabilityResult) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{28, 0}
+ return fileDescriptor_1820d8e1a9fad753, []int{28, 0}
}
type PaymentProcessingParameters_PaymentProcessor int32
@@ -458,6 +486,7 @@
1: "PROCESSOR_STRIPE",
2: "PROCESSOR_BRAINTREE",
}
+
var PaymentProcessingParameters_PaymentProcessor_value = map[string]int32{
"PAYMENT_PROCESSOR_UNSPECIFIED": 0,
"PROCESSOR_STRIPE": 1,
@@ -467,8 +496,9 @@
func (x PaymentProcessingParameters_PaymentProcessor) String() string {
return proto.EnumName(PaymentProcessingParameters_PaymentProcessor_name, int32(x))
}
+
func (PaymentProcessingParameters_PaymentProcessor) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{31, 0}
+ return fileDescriptor_1820d8e1a9fad753, []int{31, 0}
}
// Who handles payment processing?
@@ -488,6 +518,7 @@
1: "PROCESSED_BY_GOOGLE",
2: "PROCESSED_BY_PARTNER",
}
+
var PaymentInformation_PaymentProcessedBy_value = map[string]int32{
"PAYMENT_PROCESSED_BY_UNSPECIFIED": 0,
"PROCESSED_BY_GOOGLE": 1,
@@ -497,8 +528,9 @@
func (x PaymentInformation_PaymentProcessedBy) String() string {
return proto.EnumName(PaymentInformation_PaymentProcessedBy_name, int32(x))
}
+
func (PaymentInformation_PaymentProcessedBy) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{33, 0}
+ return fileDescriptor_1820d8e1a9fad753, []int{33, 0}
}
// Request to check availability for a Slot.
@@ -514,16 +546,17 @@
func (m *CheckAvailabilityRequest) String() string { return proto.CompactTextString(m) }
func (*CheckAvailabilityRequest) ProtoMessage() {}
func (*CheckAvailabilityRequest) Descriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{0}
+ return fileDescriptor_1820d8e1a9fad753, []int{0}
}
+
func (m *CheckAvailabilityRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CheckAvailabilityRequest.Unmarshal(m, b)
}
func (m *CheckAvailabilityRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_CheckAvailabilityRequest.Marshal(b, m, deterministic)
}
-func (dst *CheckAvailabilityRequest) XXX_Merge(src proto.Message) {
- xxx_messageInfo_CheckAvailabilityRequest.Merge(dst, src)
+func (m *CheckAvailabilityRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_CheckAvailabilityRequest.Merge(m, src)
}
func (m *CheckAvailabilityRequest) XXX_Size() int {
return xxx_messageInfo_CheckAvailabilityRequest.Size(m)
@@ -568,16 +601,17 @@
func (m *CheckAvailabilityResponse) String() string { return proto.CompactTextString(m) }
func (*CheckAvailabilityResponse) ProtoMessage() {}
func (*CheckAvailabilityResponse) Descriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{1}
+ return fileDescriptor_1820d8e1a9fad753, []int{1}
}
+
func (m *CheckAvailabilityResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CheckAvailabilityResponse.Unmarshal(m, b)
}
func (m *CheckAvailabilityResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_CheckAvailabilityResponse.Marshal(b, m, deterministic)
}
-func (dst *CheckAvailabilityResponse) XXX_Merge(src proto.Message) {
- xxx_messageInfo_CheckAvailabilityResponse.Merge(dst, src)
+func (m *CheckAvailabilityResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_CheckAvailabilityResponse.Merge(m, src)
}
func (m *CheckAvailabilityResponse) XXX_Size() int {
return xxx_messageInfo_CheckAvailabilityResponse.Size(m)
@@ -629,16 +663,17 @@
func (m *AvailabilityUpdate) String() string { return proto.CompactTextString(m) }
func (*AvailabilityUpdate) ProtoMessage() {}
func (*AvailabilityUpdate) Descriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{2}
+ return fileDescriptor_1820d8e1a9fad753, []int{2}
}
+
func (m *AvailabilityUpdate) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AvailabilityUpdate.Unmarshal(m, b)
}
func (m *AvailabilityUpdate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_AvailabilityUpdate.Marshal(b, m, deterministic)
}
-func (dst *AvailabilityUpdate) XXX_Merge(src proto.Message) {
- xxx_messageInfo_AvailabilityUpdate.Merge(dst, src)
+func (m *AvailabilityUpdate) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_AvailabilityUpdate.Merge(m, src)
}
func (m *AvailabilityUpdate) XXX_Size() int {
return xxx_messageInfo_AvailabilityUpdate.Size(m)
@@ -671,16 +706,17 @@
func (m *SlotAvailability) String() string { return proto.CompactTextString(m) }
func (*SlotAvailability) ProtoMessage() {}
func (*SlotAvailability) Descriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{3}
+ return fileDescriptor_1820d8e1a9fad753, []int{3}
}
+
func (m *SlotAvailability) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SlotAvailability.Unmarshal(m, b)
}
func (m *SlotAvailability) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_SlotAvailability.Marshal(b, m, deterministic)
}
-func (dst *SlotAvailability) XXX_Merge(src proto.Message) {
- xxx_messageInfo_SlotAvailability.Merge(dst, src)
+func (m *SlotAvailability) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_SlotAvailability.Merge(m, src)
}
func (m *SlotAvailability) XXX_Size() int {
return xxx_messageInfo_SlotAvailability.Size(m)
@@ -721,16 +757,17 @@
func (m *CheckOrderFulfillabilityRequest) String() string { return proto.CompactTextString(m) }
func (*CheckOrderFulfillabilityRequest) ProtoMessage() {}
func (*CheckOrderFulfillabilityRequest) Descriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{4}
+ return fileDescriptor_1820d8e1a9fad753, []int{4}
}
+
func (m *CheckOrderFulfillabilityRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CheckOrderFulfillabilityRequest.Unmarshal(m, b)
}
func (m *CheckOrderFulfillabilityRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_CheckOrderFulfillabilityRequest.Marshal(b, m, deterministic)
}
-func (dst *CheckOrderFulfillabilityRequest) XXX_Merge(src proto.Message) {
- xxx_messageInfo_CheckOrderFulfillabilityRequest.Merge(dst, src)
+func (m *CheckOrderFulfillabilityRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_CheckOrderFulfillabilityRequest.Merge(m, src)
}
func (m *CheckOrderFulfillabilityRequest) XXX_Size() int {
return xxx_messageInfo_CheckOrderFulfillabilityRequest.Size(m)
@@ -772,16 +809,17 @@
func (m *CheckOrderFulfillabilityResponse) String() string { return proto.CompactTextString(m) }
func (*CheckOrderFulfillabilityResponse) ProtoMessage() {}
func (*CheckOrderFulfillabilityResponse) Descriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{5}
+ return fileDescriptor_1820d8e1a9fad753, []int{5}
}
+
func (m *CheckOrderFulfillabilityResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CheckOrderFulfillabilityResponse.Unmarshal(m, b)
}
func (m *CheckOrderFulfillabilityResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_CheckOrderFulfillabilityResponse.Marshal(b, m, deterministic)
}
-func (dst *CheckOrderFulfillabilityResponse) XXX_Merge(src proto.Message) {
- xxx_messageInfo_CheckOrderFulfillabilityResponse.Merge(dst, src)
+func (m *CheckOrderFulfillabilityResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_CheckOrderFulfillabilityResponse.Merge(m, src)
}
func (m *CheckOrderFulfillabilityResponse) XXX_Size() int {
return xxx_messageInfo_CheckOrderFulfillabilityResponse.Size(m)
@@ -819,16 +857,17 @@
func (m *GetBookingStatusRequest) String() string { return proto.CompactTextString(m) }
func (*GetBookingStatusRequest) ProtoMessage() {}
func (*GetBookingStatusRequest) Descriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{6}
+ return fileDescriptor_1820d8e1a9fad753, []int{6}
}
+
func (m *GetBookingStatusRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetBookingStatusRequest.Unmarshal(m, b)
}
func (m *GetBookingStatusRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_GetBookingStatusRequest.Marshal(b, m, deterministic)
}
-func (dst *GetBookingStatusRequest) XXX_Merge(src proto.Message) {
- xxx_messageInfo_GetBookingStatusRequest.Merge(dst, src)
+func (m *GetBookingStatusRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GetBookingStatusRequest.Merge(m, src)
}
func (m *GetBookingStatusRequest) XXX_Size() int {
return xxx_messageInfo_GetBookingStatusRequest.Size(m)
@@ -864,16 +903,17 @@
func (m *GetBookingStatusResponse) String() string { return proto.CompactTextString(m) }
func (*GetBookingStatusResponse) ProtoMessage() {}
func (*GetBookingStatusResponse) Descriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{7}
+ return fileDescriptor_1820d8e1a9fad753, []int{7}
}
+
func (m *GetBookingStatusResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetBookingStatusResponse.Unmarshal(m, b)
}
func (m *GetBookingStatusResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_GetBookingStatusResponse.Marshal(b, m, deterministic)
}
-func (dst *GetBookingStatusResponse) XXX_Merge(src proto.Message) {
- xxx_messageInfo_GetBookingStatusResponse.Merge(dst, src)
+func (m *GetBookingStatusResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GetBookingStatusResponse.Merge(m, src)
}
func (m *GetBookingStatusResponse) XXX_Size() int {
return xxx_messageInfo_GetBookingStatusResponse.Size(m)
@@ -941,16 +981,17 @@
func (m *CreateBookingRequest) String() string { return proto.CompactTextString(m) }
func (*CreateBookingRequest) ProtoMessage() {}
func (*CreateBookingRequest) Descriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{8}
+ return fileDescriptor_1820d8e1a9fad753, []int{8}
}
+
func (m *CreateBookingRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CreateBookingRequest.Unmarshal(m, b)
}
func (m *CreateBookingRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_CreateBookingRequest.Marshal(b, m, deterministic)
}
-func (dst *CreateBookingRequest) XXX_Merge(src proto.Message) {
- xxx_messageInfo_CreateBookingRequest.Merge(dst, src)
+func (m *CreateBookingRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_CreateBookingRequest.Merge(m, src)
}
func (m *CreateBookingRequest) XXX_Size() int {
return xxx_messageInfo_CreateBookingRequest.Size(m)
@@ -1035,16 +1076,17 @@
func (m *CreateBookingResponse) String() string { return proto.CompactTextString(m) }
func (*CreateBookingResponse) ProtoMessage() {}
func (*CreateBookingResponse) Descriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{9}
+ return fileDescriptor_1820d8e1a9fad753, []int{9}
}
+
func (m *CreateBookingResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CreateBookingResponse.Unmarshal(m, b)
}
func (m *CreateBookingResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_CreateBookingResponse.Marshal(b, m, deterministic)
}
-func (dst *CreateBookingResponse) XXX_Merge(src proto.Message) {
- xxx_messageInfo_CreateBookingResponse.Merge(dst, src)
+func (m *CreateBookingResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_CreateBookingResponse.Merge(m, src)
}
func (m *CreateBookingResponse) XXX_Size() int {
return xxx_messageInfo_CreateBookingResponse.Size(m)
@@ -1092,16 +1134,17 @@
func (m *CreateLeaseRequest) String() string { return proto.CompactTextString(m) }
func (*CreateLeaseRequest) ProtoMessage() {}
func (*CreateLeaseRequest) Descriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{10}
+ return fileDescriptor_1820d8e1a9fad753, []int{10}
}
+
func (m *CreateLeaseRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CreateLeaseRequest.Unmarshal(m, b)
}
func (m *CreateLeaseRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_CreateLeaseRequest.Marshal(b, m, deterministic)
}
-func (dst *CreateLeaseRequest) XXX_Merge(src proto.Message) {
- xxx_messageInfo_CreateLeaseRequest.Merge(dst, src)
+func (m *CreateLeaseRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_CreateLeaseRequest.Merge(m, src)
}
func (m *CreateLeaseRequest) XXX_Size() int {
return xxx_messageInfo_CreateLeaseRequest.Size(m)
@@ -1136,16 +1179,17 @@
func (m *CreateLeaseResponse) String() string { return proto.CompactTextString(m) }
func (*CreateLeaseResponse) ProtoMessage() {}
func (*CreateLeaseResponse) Descriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{11}
+ return fileDescriptor_1820d8e1a9fad753, []int{11}
}
+
func (m *CreateLeaseResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CreateLeaseResponse.Unmarshal(m, b)
}
func (m *CreateLeaseResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_CreateLeaseResponse.Marshal(b, m, deterministic)
}
-func (dst *CreateLeaseResponse) XXX_Merge(src proto.Message) {
- xxx_messageInfo_CreateLeaseResponse.Merge(dst, src)
+func (m *CreateLeaseResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_CreateLeaseResponse.Merge(m, src)
}
func (m *CreateLeaseResponse) XXX_Size() int {
return xxx_messageInfo_CreateLeaseResponse.Size(m)
@@ -1192,16 +1236,17 @@
func (m *Lease) String() string { return proto.CompactTextString(m) }
func (*Lease) ProtoMessage() {}
func (*Lease) Descriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{12}
+ return fileDescriptor_1820d8e1a9fad753, []int{12}
}
+
func (m *Lease) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Lease.Unmarshal(m, b)
}
func (m *Lease) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Lease.Marshal(b, m, deterministic)
}
-func (dst *Lease) XXX_Merge(src proto.Message) {
- xxx_messageInfo_Lease.Merge(dst, src)
+func (m *Lease) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Lease.Merge(m, src)
}
func (m *Lease) XXX_Size() int {
return xxx_messageInfo_Lease.Size(m)
@@ -1253,16 +1298,17 @@
func (m *LeaseReference) String() string { return proto.CompactTextString(m) }
func (*LeaseReference) ProtoMessage() {}
func (*LeaseReference) Descriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{13}
+ return fileDescriptor_1820d8e1a9fad753, []int{13}
}
+
func (m *LeaseReference) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_LeaseReference.Unmarshal(m, b)
}
func (m *LeaseReference) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_LeaseReference.Marshal(b, m, deterministic)
}
-func (dst *LeaseReference) XXX_Merge(src proto.Message) {
- xxx_messageInfo_LeaseReference.Merge(dst, src)
+func (m *LeaseReference) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_LeaseReference.Merge(m, src)
}
func (m *LeaseReference) XXX_Size() int {
return xxx_messageInfo_LeaseReference.Size(m)
@@ -1299,16 +1345,17 @@
func (m *CreateOrderRequest) String() string { return proto.CompactTextString(m) }
func (*CreateOrderRequest) ProtoMessage() {}
func (*CreateOrderRequest) Descriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{14}
+ return fileDescriptor_1820d8e1a9fad753, []int{14}
}
+
func (m *CreateOrderRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CreateOrderRequest.Unmarshal(m, b)
}
func (m *CreateOrderRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_CreateOrderRequest.Marshal(b, m, deterministic)
}
-func (dst *CreateOrderRequest) XXX_Merge(src proto.Message) {
- xxx_messageInfo_CreateOrderRequest.Merge(dst, src)
+func (m *CreateOrderRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_CreateOrderRequest.Merge(m, src)
}
func (m *CreateOrderRequest) XXX_Size() int {
return xxx_messageInfo_CreateOrderRequest.Size(m)
@@ -1360,16 +1407,17 @@
func (m *CreateOrderResponse) String() string { return proto.CompactTextString(m) }
func (*CreateOrderResponse) ProtoMessage() {}
func (*CreateOrderResponse) Descriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{15}
+ return fileDescriptor_1820d8e1a9fad753, []int{15}
}
+
func (m *CreateOrderResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CreateOrderResponse.Unmarshal(m, b)
}
func (m *CreateOrderResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_CreateOrderResponse.Marshal(b, m, deterministic)
}
-func (dst *CreateOrderResponse) XXX_Merge(src proto.Message) {
- xxx_messageInfo_CreateOrderResponse.Merge(dst, src)
+func (m *CreateOrderResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_CreateOrderResponse.Merge(m, src)
}
func (m *CreateOrderResponse) XXX_Size() int {
return xxx_messageInfo_CreateOrderResponse.Size(m)
@@ -1387,11 +1435,13 @@
type CreateOrderResponse_Order struct {
Order *Order `protobuf:"bytes,1,opt,name=order,proto3,oneof"`
}
+
type CreateOrderResponse_OrderFailure struct {
OrderFailure *OrderFailure `protobuf:"bytes,2,opt,name=order_failure,json=orderFailure,proto3,oneof"`
}
-func (*CreateOrderResponse_Order) isCreateOrderResponse_Result() {}
+func (*CreateOrderResponse_Order) isCreateOrderResponse_Result() {}
+
func (*CreateOrderResponse_OrderFailure) isCreateOrderResponse_Result() {}
func (m *CreateOrderResponse) GetResult() isCreateOrderResponse_Result {
@@ -1502,16 +1552,17 @@
func (m *ListBookingsRequest) String() string { return proto.CompactTextString(m) }
func (*ListBookingsRequest) ProtoMessage() {}
func (*ListBookingsRequest) Descriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{16}
+ return fileDescriptor_1820d8e1a9fad753, []int{16}
}
+
func (m *ListBookingsRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ListBookingsRequest.Unmarshal(m, b)
}
func (m *ListBookingsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ListBookingsRequest.Marshal(b, m, deterministic)
}
-func (dst *ListBookingsRequest) XXX_Merge(src proto.Message) {
- xxx_messageInfo_ListBookingsRequest.Merge(dst, src)
+func (m *ListBookingsRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_ListBookingsRequest.Merge(m, src)
}
func (m *ListBookingsRequest) XXX_Size() int {
return xxx_messageInfo_ListBookingsRequest.Size(m)
@@ -1542,16 +1593,17 @@
func (m *ListBookingsResponse) String() string { return proto.CompactTextString(m) }
func (*ListBookingsResponse) ProtoMessage() {}
func (*ListBookingsResponse) Descriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{17}
+ return fileDescriptor_1820d8e1a9fad753, []int{17}
}
+
func (m *ListBookingsResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ListBookingsResponse.Unmarshal(m, b)
}
func (m *ListBookingsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ListBookingsResponse.Marshal(b, m, deterministic)
}
-func (dst *ListBookingsResponse) XXX_Merge(src proto.Message) {
- xxx_messageInfo_ListBookingsResponse.Merge(dst, src)
+func (m *ListBookingsResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_ListBookingsResponse.Merge(m, src)
}
func (m *ListBookingsResponse) XXX_Size() int {
return xxx_messageInfo_ListBookingsResponse.Size(m)
@@ -1586,16 +1638,17 @@
func (m *ListOrdersRequest) String() string { return proto.CompactTextString(m) }
func (*ListOrdersRequest) ProtoMessage() {}
func (*ListOrdersRequest) Descriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{18}
+ return fileDescriptor_1820d8e1a9fad753, []int{18}
}
+
func (m *ListOrdersRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ListOrdersRequest.Unmarshal(m, b)
}
func (m *ListOrdersRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ListOrdersRequest.Marshal(b, m, deterministic)
}
-func (dst *ListOrdersRequest) XXX_Merge(src proto.Message) {
- xxx_messageInfo_ListOrdersRequest.Merge(dst, src)
+func (m *ListOrdersRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_ListOrdersRequest.Merge(m, src)
}
func (m *ListOrdersRequest) XXX_Size() int {
return xxx_messageInfo_ListOrdersRequest.Size(m)
@@ -1613,11 +1666,13 @@
type ListOrdersRequest_UserId struct {
UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3,oneof"`
}
+
type ListOrdersRequest_OrderIds_ struct {
OrderIds *ListOrdersRequest_OrderIds `protobuf:"bytes,2,opt,name=order_ids,json=orderIds,proto3,oneof"`
}
-func (*ListOrdersRequest_UserId) isListOrdersRequest_Ids() {}
+func (*ListOrdersRequest_UserId) isListOrdersRequest_Ids() {}
+
func (*ListOrdersRequest_OrderIds_) isListOrdersRequest_Ids() {}
func (m *ListOrdersRequest) GetIds() isListOrdersRequest_Ids {
@@ -1722,16 +1777,17 @@
func (m *ListOrdersRequest_OrderIds) String() string { return proto.CompactTextString(m) }
func (*ListOrdersRequest_OrderIds) ProtoMessage() {}
func (*ListOrdersRequest_OrderIds) Descriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{18, 0}
+ return fileDescriptor_1820d8e1a9fad753, []int{18, 0}
}
+
func (m *ListOrdersRequest_OrderIds) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ListOrdersRequest_OrderIds.Unmarshal(m, b)
}
func (m *ListOrdersRequest_OrderIds) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ListOrdersRequest_OrderIds.Marshal(b, m, deterministic)
}
-func (dst *ListOrdersRequest_OrderIds) XXX_Merge(src proto.Message) {
- xxx_messageInfo_ListOrdersRequest_OrderIds.Merge(dst, src)
+func (m *ListOrdersRequest_OrderIds) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_ListOrdersRequest_OrderIds.Merge(m, src)
}
func (m *ListOrdersRequest_OrderIds) XXX_Size() int {
return xxx_messageInfo_ListOrdersRequest_OrderIds.Size(m)
@@ -1762,16 +1818,17 @@
func (m *ListOrdersResponse) String() string { return proto.CompactTextString(m) }
func (*ListOrdersResponse) ProtoMessage() {}
func (*ListOrdersResponse) Descriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{19}
+ return fileDescriptor_1820d8e1a9fad753, []int{19}
}
+
func (m *ListOrdersResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ListOrdersResponse.Unmarshal(m, b)
}
func (m *ListOrdersResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ListOrdersResponse.Marshal(b, m, deterministic)
}
-func (dst *ListOrdersResponse) XXX_Merge(src proto.Message) {
- xxx_messageInfo_ListOrdersResponse.Merge(dst, src)
+func (m *ListOrdersResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_ListOrdersResponse.Merge(m, src)
}
func (m *ListOrdersResponse) XXX_Size() int {
return xxx_messageInfo_ListOrdersResponse.Size(m)
@@ -1805,16 +1862,17 @@
func (m *UpdateBookingRequest) String() string { return proto.CompactTextString(m) }
func (*UpdateBookingRequest) ProtoMessage() {}
func (*UpdateBookingRequest) Descriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{20}
+ return fileDescriptor_1820d8e1a9fad753, []int{20}
}
+
func (m *UpdateBookingRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UpdateBookingRequest.Unmarshal(m, b)
}
func (m *UpdateBookingRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_UpdateBookingRequest.Marshal(b, m, deterministic)
}
-func (dst *UpdateBookingRequest) XXX_Merge(src proto.Message) {
- xxx_messageInfo_UpdateBookingRequest.Merge(dst, src)
+func (m *UpdateBookingRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_UpdateBookingRequest.Merge(m, src)
}
func (m *UpdateBookingRequest) XXX_Size() int {
return xxx_messageInfo_UpdateBookingRequest.Size(m)
@@ -1858,16 +1916,17 @@
func (m *UpdateBookingResponse) String() string { return proto.CompactTextString(m) }
func (*UpdateBookingResponse) ProtoMessage() {}
func (*UpdateBookingResponse) Descriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{21}
+ return fileDescriptor_1820d8e1a9fad753, []int{21}
}
+
func (m *UpdateBookingResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UpdateBookingResponse.Unmarshal(m, b)
}
func (m *UpdateBookingResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_UpdateBookingResponse.Marshal(b, m, deterministic)
}
-func (dst *UpdateBookingResponse) XXX_Merge(src proto.Message) {
- xxx_messageInfo_UpdateBookingResponse.Merge(dst, src)
+func (m *UpdateBookingResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_UpdateBookingResponse.Merge(m, src)
}
func (m *UpdateBookingResponse) XXX_Size() int {
return xxx_messageInfo_UpdateBookingResponse.Size(m)
@@ -1921,16 +1980,17 @@
func (m *Booking) String() string { return proto.CompactTextString(m) }
func (*Booking) ProtoMessage() {}
func (*Booking) Descriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{22}
+ return fileDescriptor_1820d8e1a9fad753, []int{22}
}
+
func (m *Booking) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Booking.Unmarshal(m, b)
}
func (m *Booking) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Booking.Marshal(b, m, deterministic)
}
-func (dst *Booking) XXX_Merge(src proto.Message) {
- xxx_messageInfo_Booking.Merge(dst, src)
+func (m *Booking) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Booking.Merge(m, src)
}
func (m *Booking) XXX_Size() int {
return xxx_messageInfo_Booking.Size(m)
@@ -1996,16 +2056,17 @@
func (m *BookingFailure) String() string { return proto.CompactTextString(m) }
func (*BookingFailure) ProtoMessage() {}
func (*BookingFailure) Descriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{23}
+ return fileDescriptor_1820d8e1a9fad753, []int{23}
}
+
func (m *BookingFailure) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_BookingFailure.Unmarshal(m, b)
}
func (m *BookingFailure) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_BookingFailure.Marshal(b, m, deterministic)
}
-func (dst *BookingFailure) XXX_Merge(src proto.Message) {
- xxx_messageInfo_BookingFailure.Merge(dst, src)
+func (m *BookingFailure) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_BookingFailure.Merge(m, src)
}
func (m *BookingFailure) XXX_Size() int {
return xxx_messageInfo_BookingFailure.Size(m)
@@ -2061,16 +2122,17 @@
func (m *Order) String() string { return proto.CompactTextString(m) }
func (*Order) ProtoMessage() {}
func (*Order) Descriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{24}
+ return fileDescriptor_1820d8e1a9fad753, []int{24}
}
+
func (m *Order) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Order.Unmarshal(m, b)
}
func (m *Order) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Order.Marshal(b, m, deterministic)
}
-func (dst *Order) XXX_Merge(src proto.Message) {
- xxx_messageInfo_Order.Merge(dst, src)
+func (m *Order) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Order.Merge(m, src)
}
func (m *Order) XXX_Size() int {
return xxx_messageInfo_Order.Size(m)
@@ -2147,16 +2209,17 @@
func (m *LineItem) String() string { return proto.CompactTextString(m) }
func (*LineItem) ProtoMessage() {}
func (*LineItem) Descriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{25}
+ return fileDescriptor_1820d8e1a9fad753, []int{25}
}
+
func (m *LineItem) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_LineItem.Unmarshal(m, b)
}
func (m *LineItem) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_LineItem.Marshal(b, m, deterministic)
}
-func (dst *LineItem) XXX_Merge(src proto.Message) {
- xxx_messageInfo_LineItem.Merge(dst, src)
+func (m *LineItem) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_LineItem.Merge(m, src)
}
func (m *LineItem) XXX_Size() int {
return xxx_messageInfo_LineItem.Size(m)
@@ -2221,16 +2284,17 @@
func (m *LineItem_OrderedTickets) String() string { return proto.CompactTextString(m) }
func (*LineItem_OrderedTickets) ProtoMessage() {}
func (*LineItem_OrderedTickets) Descriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{25, 0}
+ return fileDescriptor_1820d8e1a9fad753, []int{25, 0}
}
+
func (m *LineItem_OrderedTickets) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_LineItem_OrderedTickets.Unmarshal(m, b)
}
func (m *LineItem_OrderedTickets) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_LineItem_OrderedTickets.Marshal(b, m, deterministic)
}
-func (dst *LineItem_OrderedTickets) XXX_Merge(src proto.Message) {
- xxx_messageInfo_LineItem_OrderedTickets.Merge(dst, src)
+func (m *LineItem_OrderedTickets) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_LineItem_OrderedTickets.Merge(m, src)
}
func (m *LineItem_OrderedTickets) XXX_Size() int {
return xxx_messageInfo_LineItem_OrderedTickets.Size(m)
@@ -2276,16 +2340,17 @@
func (m *OrderFailure) String() string { return proto.CompactTextString(m) }
func (*OrderFailure) ProtoMessage() {}
func (*OrderFailure) Descriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{26}
+ return fileDescriptor_1820d8e1a9fad753, []int{26}
}
+
func (m *OrderFailure) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_OrderFailure.Unmarshal(m, b)
}
func (m *OrderFailure) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_OrderFailure.Marshal(b, m, deterministic)
}
-func (dst *OrderFailure) XXX_Merge(src proto.Message) {
- xxx_messageInfo_OrderFailure.Merge(dst, src)
+func (m *OrderFailure) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OrderFailure.Merge(m, src)
}
func (m *OrderFailure) XXX_Size() int {
return xxx_messageInfo_OrderFailure.Size(m)
@@ -2340,16 +2405,17 @@
func (m *OrderFulfillability) String() string { return proto.CompactTextString(m) }
func (*OrderFulfillability) ProtoMessage() {}
func (*OrderFulfillability) Descriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{27}
+ return fileDescriptor_1820d8e1a9fad753, []int{27}
}
+
func (m *OrderFulfillability) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_OrderFulfillability.Unmarshal(m, b)
}
func (m *OrderFulfillability) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_OrderFulfillability.Marshal(b, m, deterministic)
}
-func (dst *OrderFulfillability) XXX_Merge(src proto.Message) {
- xxx_messageInfo_OrderFulfillability.Merge(dst, src)
+func (m *OrderFulfillability) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_OrderFulfillability.Merge(m, src)
}
func (m *OrderFulfillability) XXX_Size() int {
return xxx_messageInfo_OrderFulfillability.Size(m)
@@ -2406,16 +2472,17 @@
func (m *LineItemFulfillability) String() string { return proto.CompactTextString(m) }
func (*LineItemFulfillability) ProtoMessage() {}
func (*LineItemFulfillability) Descriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{28}
+ return fileDescriptor_1820d8e1a9fad753, []int{28}
}
+
func (m *LineItemFulfillability) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_LineItemFulfillability.Unmarshal(m, b)
}
func (m *LineItemFulfillability) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_LineItemFulfillability.Marshal(b, m, deterministic)
}
-func (dst *LineItemFulfillability) XXX_Merge(src proto.Message) {
- xxx_messageInfo_LineItemFulfillability.Merge(dst, src)
+func (m *LineItemFulfillability) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_LineItemFulfillability.Merge(m, src)
}
func (m *LineItemFulfillability) XXX_Size() int {
return xxx_messageInfo_LineItemFulfillability.Size(m)
@@ -2480,16 +2547,17 @@
}
func (*LineItemFulfillability_UpdatedAvailability) ProtoMessage() {}
func (*LineItemFulfillability_UpdatedAvailability) Descriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{28, 0}
+ return fileDescriptor_1820d8e1a9fad753, []int{28, 0}
}
+
func (m *LineItemFulfillability_UpdatedAvailability) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_LineItemFulfillability_UpdatedAvailability.Unmarshal(m, b)
}
func (m *LineItemFulfillability_UpdatedAvailability) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_LineItemFulfillability_UpdatedAvailability.Marshal(b, m, deterministic)
}
-func (dst *LineItemFulfillability_UpdatedAvailability) XXX_Merge(src proto.Message) {
- xxx_messageInfo_LineItemFulfillability_UpdatedAvailability.Merge(dst, src)
+func (m *LineItemFulfillability_UpdatedAvailability) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_LineItemFulfillability_UpdatedAvailability.Merge(m, src)
}
func (m *LineItemFulfillability_UpdatedAvailability) XXX_Size() int {
return xxx_messageInfo_LineItemFulfillability_UpdatedAvailability.Size(m)
@@ -2529,16 +2597,17 @@
func (m *TicketType) String() string { return proto.CompactTextString(m) }
func (*TicketType) ProtoMessage() {}
func (*TicketType) Descriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{29}
+ return fileDescriptor_1820d8e1a9fad753, []int{29}
}
+
func (m *TicketType) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TicketType.Unmarshal(m, b)
}
func (m *TicketType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_TicketType.Marshal(b, m, deterministic)
}
-func (dst *TicketType) XXX_Merge(src proto.Message) {
- xxx_messageInfo_TicketType.Merge(dst, src)
+func (m *TicketType) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_TicketType.Merge(m, src)
}
func (m *TicketType) XXX_Size() int {
return xxx_messageInfo_TicketType.Size(m)
@@ -2590,16 +2659,17 @@
func (m *ResourceIds) String() string { return proto.CompactTextString(m) }
func (*ResourceIds) ProtoMessage() {}
func (*ResourceIds) Descriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{30}
+ return fileDescriptor_1820d8e1a9fad753, []int{30}
}
+
func (m *ResourceIds) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ResourceIds.Unmarshal(m, b)
}
func (m *ResourceIds) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ResourceIds.Marshal(b, m, deterministic)
}
-func (dst *ResourceIds) XXX_Merge(src proto.Message) {
- xxx_messageInfo_ResourceIds.Merge(dst, src)
+func (m *ResourceIds) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_ResourceIds.Merge(m, src)
}
func (m *ResourceIds) XXX_Size() int {
return xxx_messageInfo_ResourceIds.Size(m)
@@ -2676,16 +2746,17 @@
func (m *PaymentProcessingParameters) String() string { return proto.CompactTextString(m) }
func (*PaymentProcessingParameters) ProtoMessage() {}
func (*PaymentProcessingParameters) Descriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{31}
+ return fileDescriptor_1820d8e1a9fad753, []int{31}
}
+
func (m *PaymentProcessingParameters) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PaymentProcessingParameters.Unmarshal(m, b)
}
func (m *PaymentProcessingParameters) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_PaymentProcessingParameters.Marshal(b, m, deterministic)
}
-func (dst *PaymentProcessingParameters) XXX_Merge(src proto.Message) {
- xxx_messageInfo_PaymentProcessingParameters.Merge(dst, src)
+func (m *PaymentProcessingParameters) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_PaymentProcessingParameters.Merge(m, src)
}
func (m *PaymentProcessingParameters) XXX_Size() int {
return xxx_messageInfo_PaymentProcessingParameters.Size(m)
@@ -2769,16 +2840,17 @@
func (m *UserPaymentOption) String() string { return proto.CompactTextString(m) }
func (*UserPaymentOption) ProtoMessage() {}
func (*UserPaymentOption) Descriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{32}
+ return fileDescriptor_1820d8e1a9fad753, []int{32}
}
+
func (m *UserPaymentOption) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UserPaymentOption.Unmarshal(m, b)
}
func (m *UserPaymentOption) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_UserPaymentOption.Marshal(b, m, deterministic)
}
-func (dst *UserPaymentOption) XXX_Merge(src proto.Message) {
- xxx_messageInfo_UserPaymentOption.Merge(dst, src)
+func (m *UserPaymentOption) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_UserPaymentOption.Merge(m, src)
}
func (m *UserPaymentOption) XXX_Size() int {
return xxx_messageInfo_UserPaymentOption.Size(m)
@@ -2907,16 +2979,17 @@
func (m *PaymentInformation) String() string { return proto.CompactTextString(m) }
func (*PaymentInformation) ProtoMessage() {}
func (*PaymentInformation) Descriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{33}
+ return fileDescriptor_1820d8e1a9fad753, []int{33}
}
+
func (m *PaymentInformation) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PaymentInformation.Unmarshal(m, b)
}
func (m *PaymentInformation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_PaymentInformation.Marshal(b, m, deterministic)
}
-func (dst *PaymentInformation) XXX_Merge(src proto.Message) {
- xxx_messageInfo_PaymentInformation.Merge(dst, src)
+func (m *PaymentInformation) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_PaymentInformation.Merge(m, src)
}
func (m *PaymentInformation) XXX_Size() int {
return xxx_messageInfo_PaymentInformation.Size(m)
@@ -2927,27 +3000,6 @@
var xxx_messageInfo_PaymentInformation proto.InternalMessageInfo
-type isPaymentInformation_PaymentId interface {
- isPaymentInformation_PaymentId()
-}
-
-type PaymentInformation_PaymentOptionId struct {
- PaymentOptionId string `protobuf:"bytes,6,opt,name=payment_option_id,json=paymentOptionId,proto3,oneof"`
-}
-type PaymentInformation_UserPaymentOptionId struct {
- UserPaymentOptionId string `protobuf:"bytes,7,opt,name=user_payment_option_id,json=userPaymentOptionId,proto3,oneof"`
-}
-
-func (*PaymentInformation_PaymentOptionId) isPaymentInformation_PaymentId() {}
-func (*PaymentInformation_UserPaymentOptionId) isPaymentInformation_PaymentId() {}
-
-func (m *PaymentInformation) GetPaymentId() isPaymentInformation_PaymentId {
- if m != nil {
- return m.PaymentId
- }
- return nil
-}
-
func (m *PaymentInformation) GetPrepaymentStatus() PrepaymentStatus {
if m != nil {
return m.PrepaymentStatus
@@ -2983,6 +3035,29 @@
return PaymentInformation_PAYMENT_PROCESSED_BY_UNSPECIFIED
}
+type isPaymentInformation_PaymentId interface {
+ isPaymentInformation_PaymentId()
+}
+
+type PaymentInformation_PaymentOptionId struct {
+ PaymentOptionId string `protobuf:"bytes,6,opt,name=payment_option_id,json=paymentOptionId,proto3,oneof"`
+}
+
+type PaymentInformation_UserPaymentOptionId struct {
+ UserPaymentOptionId string `protobuf:"bytes,7,opt,name=user_payment_option_id,json=userPaymentOptionId,proto3,oneof"`
+}
+
+func (*PaymentInformation_PaymentOptionId) isPaymentInformation_PaymentId() {}
+
+func (*PaymentInformation_UserPaymentOptionId) isPaymentInformation_PaymentId() {}
+
+func (m *PaymentInformation) GetPaymentId() isPaymentInformation_PaymentId {
+ if m != nil {
+ return m.PaymentId
+ }
+ return nil
+}
+
func (m *PaymentInformation) GetPaymentOptionId() string {
if x, ok := m.GetPaymentId().(*PaymentInformation_PaymentOptionId); ok {
return x.PaymentOptionId
@@ -3106,16 +3181,17 @@
func (m *Price) String() string { return proto.CompactTextString(m) }
func (*Price) ProtoMessage() {}
func (*Price) Descriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{34}
+ return fileDescriptor_1820d8e1a9fad753, []int{34}
}
+
func (m *Price) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Price.Unmarshal(m, b)
}
func (m *Price) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Price.Marshal(b, m, deterministic)
}
-func (dst *Price) XXX_Merge(src proto.Message) {
- xxx_messageInfo_Price.Merge(dst, src)
+func (m *Price) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Price.Merge(m, src)
}
func (m *Price) XXX_Size() int {
return xxx_messageInfo_Price.Size(m)
@@ -3164,16 +3240,17 @@
func (m *NoShowFee) String() string { return proto.CompactTextString(m) }
func (*NoShowFee) ProtoMessage() {}
func (*NoShowFee) Descriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{35}
+ return fileDescriptor_1820d8e1a9fad753, []int{35}
}
+
func (m *NoShowFee) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_NoShowFee.Unmarshal(m, b)
}
func (m *NoShowFee) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_NoShowFee.Marshal(b, m, deterministic)
}
-func (dst *NoShowFee) XXX_Merge(src proto.Message) {
- xxx_messageInfo_NoShowFee.Merge(dst, src)
+func (m *NoShowFee) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_NoShowFee.Merge(m, src)
}
func (m *NoShowFee) XXX_Size() int {
return xxx_messageInfo_NoShowFee.Size(m)
@@ -3216,16 +3293,17 @@
func (m *Deposit) String() string { return proto.CompactTextString(m) }
func (*Deposit) ProtoMessage() {}
func (*Deposit) Descriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{36}
+ return fileDescriptor_1820d8e1a9fad753, []int{36}
}
+
func (m *Deposit) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Deposit.Unmarshal(m, b)
}
func (m *Deposit) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Deposit.Marshal(b, m, deterministic)
}
-func (dst *Deposit) XXX_Merge(src proto.Message) {
- xxx_messageInfo_Deposit.Merge(dst, src)
+func (m *Deposit) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Deposit.Merge(m, src)
}
func (m *Deposit) XXX_Size() int {
return xxx_messageInfo_Deposit.Size(m)
@@ -3283,16 +3361,17 @@
func (m *Slot) String() string { return proto.CompactTextString(m) }
func (*Slot) ProtoMessage() {}
func (*Slot) Descriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{37}
+ return fileDescriptor_1820d8e1a9fad753, []int{37}
}
+
func (m *Slot) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Slot.Unmarshal(m, b)
}
func (m *Slot) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Slot.Marshal(b, m, deterministic)
}
-func (dst *Slot) XXX_Merge(src proto.Message) {
- xxx_messageInfo_Slot.Merge(dst, src)
+func (m *Slot) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Slot.Merge(m, src)
}
func (m *Slot) XXX_Size() int {
return xxx_messageInfo_Slot.Size(m)
@@ -3369,16 +3448,17 @@
func (m *UserInformation) String() string { return proto.CompactTextString(m) }
func (*UserInformation) ProtoMessage() {}
func (*UserInformation) Descriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{38}
+ return fileDescriptor_1820d8e1a9fad753, []int{38}
}
+
func (m *UserInformation) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UserInformation.Unmarshal(m, b)
}
func (m *UserInformation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_UserInformation.Marshal(b, m, deterministic)
}
-func (dst *UserInformation) XXX_Merge(src proto.Message) {
- xxx_messageInfo_UserInformation.Merge(dst, src)
+func (m *UserInformation) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_UserInformation.Merge(m, src)
}
func (m *UserInformation) XXX_Size() int {
return xxx_messageInfo_UserInformation.Size(m)
@@ -3452,16 +3532,17 @@
func (m *PostalAddress) String() string { return proto.CompactTextString(m) }
func (*PostalAddress) ProtoMessage() {}
func (*PostalAddress) Descriptor() ([]byte, []int) {
- return fileDescriptor_v3_e164fdd8b81531d4, []int{39}
+ return fileDescriptor_1820d8e1a9fad753, []int{39}
}
+
func (m *PostalAddress) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PostalAddress.Unmarshal(m, b)
}
func (m *PostalAddress) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_PostalAddress.Marshal(b, m, deterministic)
}
-func (dst *PostalAddress) XXX_Merge(src proto.Message) {
- xxx_messageInfo_PostalAddress.Merge(dst, src)
+func (m *PostalAddress) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_PostalAddress.Merge(m, src)
}
func (m *PostalAddress) XXX_Size() int {
return xxx_messageInfo_PostalAddress.Size(m)
@@ -3565,213 +3646,215 @@
proto.RegisterEnum("ext.maps.booking.partner.v3.PaymentInformation_PaymentProcessedBy", PaymentInformation_PaymentProcessedBy_name, PaymentInformation_PaymentProcessedBy_value)
}
-func init() { proto.RegisterFile("v3.proto", fileDescriptor_v3_e164fdd8b81531d4) }
+func init() { proto.RegisterFile("v3.proto", fileDescriptor_1820d8e1a9fad753) }
-var fileDescriptor_v3_e164fdd8b81531d4 = []byte{
- // 3278 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x3a, 0xcd, 0x6f, 0x1b, 0xc7,
- 0xf5, 0x5e, 0x7e, 0x88, 0xe2, 0xa3, 0x44, 0xad, 0x46, 0x8a, 0x4d, 0xf9, 0x23, 0x96, 0x37, 0x76,
- 0xe2, 0xc8, 0x89, 0xf2, 0x8b, 0xec, 0xe0, 0x97, 0x14, 0x45, 0xda, 0x15, 0x39, 0xb2, 0x36, 0xa1,
- 0x48, 0x66, 0xb8, 0x94, 0xed, 0x1c, 0xba, 0x59, 0x73, 0x47, 0xf2, 0xd6, 0x24, 0x97, 0xd9, 0x5d,
- 0x2a, 0x56, 0xd0, 0xdc, 0x7a, 0xed, 0xa1, 0xe8, 0xa1, 0xe8, 0xa1, 0xc7, 0x1c, 0x0a, 0xb4, 0x40,
- 0x0f, 0xbd, 0x14, 0xbd, 0x14, 0x28, 0xd0, 0x4b, 0x91, 0x53, 0x0f, 0xed, 0xa9, 0x87, 0xa2, 0x87,
- 0xfe, 0x0b, 0x01, 0x8a, 0xa2, 0x98, 0x8f, 0xe5, 0xc7, 0x92, 0xa2, 0x28, 0xc5, 0xee, 0xa5, 0x17,
- 0x41, 0xf3, 0xbe, 0xe6, 0xcd, 0x7b, 0x6f, 0xde, 0x7b, 0xf3, 0x96, 0x30, 0x7f, 0x74, 0x77, 0xb3,
- 0xeb, 0x7b, 0xa1, 0x87, 0xae, 0xd0, 0x67, 0xe1, 0x66, 0xdb, 0xee, 0x06, 0x9b, 0x8f, 0x3d, 0xef,
- 0xa9, 0xdb, 0x39, 0xdc, 0xec, 0xda, 0x7e, 0xd8, 0xa1, 0xfe, 0xe6, 0xd1, 0x5d, 0xed, 0x23, 0x28,
- 0x14, 0x9f, 0xd0, 0xe6, 0x53, 0xfd, 0xc8, 0x76, 0x5b, 0xf6, 0x63, 0xb7, 0xe5, 0x86, 0xc7, 0x84,
- 0x7e, 0xda, 0xa3, 0x41, 0x88, 0xde, 0x81, 0x54, 0xd0, 0xf2, 0xc2, 0x82, 0xb2, 0xae, 0xdc, 0xce,
- 0x6d, 0xdd, 0xd8, 0x9c, 0x22, 0x67, 0xb3, 0xde, 0xf2, 0x42, 0xc2, 0xc9, 0xb5, 0x3f, 0x25, 0x61,
- 0x6d, 0x82, 0xcc, 0xa0, 0xeb, 0x75, 0x02, 0x7a, 0x4e, 0xa1, 0xe8, 0x35, 0x58, 0x6a, 0x7a, 0xbd,
- 0x4e, 0x68, 0xd9, 0x42, 0x68, 0x8b, 0x16, 0x12, 0xeb, 0xca, 0xed, 0x34, 0xc9, 0x73, 0xb0, 0x1e,
- 0x41, 0xd1, 0x17, 0xb0, 0xea, 0xf4, 0x7c, 0x3b, 0x74, 0xbd, 0x8e, 0xe5, 0xd3, 0x4f, 0x7b, 0xae,
- 0x4f, 0xdb, 0xb4, 0x13, 0x16, 0x92, 0xeb, 0xca, 0xed, 0xfc, 0xd6, 0x07, 0x53, 0xf7, 0x3b, 0x51,
- 0xeb, 0xcd, 0x92, 0x14, 0x49, 0x06, 0x12, 0xc9, 0x8a, 0x33, 0x0e, 0x44, 0x9f, 0xc0, 0x8a, 0x3d,
- 0x24, 0xc0, 0xea, 0x75, 0x1d, 0x3b, 0xa4, 0x85, 0x14, 0x3f, 0xed, 0x5b, 0x53, 0x77, 0x1f, 0xde,
- 0xb8, 0xc1, 0xd9, 0x08, 0xb2, 0xc7, 0x60, 0x5a, 0x1b, 0x56, 0x26, 0x68, 0x83, 0x6e, 0xc2, 0x7a,
- 0xa9, 0x41, 0x74, 0xd3, 0xa8, 0x56, 0x2c, 0x82, 0x3f, 0x6a, 0x18, 0x04, 0xef, 0xe1, 0x8a, 0x69,
- 0x35, 0x2a, 0xf5, 0x1a, 0x2e, 0x1a, 0x3b, 0x06, 0x2e, 0xa9, 0x17, 0x50, 0x01, 0x56, 0x4b, 0x55,
- 0xab, 0x52, 0x35, 0xad, 0xfa, 0x6e, 0xf5, 0x81, 0x15, 0x71, 0xa8, 0x0a, 0xba, 0x08, 0x68, 0xaf,
- 0x51, 0x8f, 0xc3, 0x13, 0x5a, 0x17, 0xd0, 0xb8, 0x62, 0xe8, 0x63, 0x58, 0x66, 0x6e, 0xb1, 0x86,
- 0xf5, 0x2b, 0x28, 0xeb, 0xc9, 0xdb, 0xb9, 0xad, 0x37, 0x4f, 0x75, 0xe9, 0x88, 0x85, 0xd5, 0x20,
- 0x06, 0xd1, 0x7c, 0x50, 0xe3, 0x54, 0x2f, 0x3a, 0x6a, 0xb4, 0x2f, 0xe0, 0x3a, 0x77, 0x7e, 0xd5,
- 0x77, 0xa8, 0xbf, 0xd3, 0x6b, 0x1d, 0xb8, 0xad, 0xf8, 0x6d, 0xb8, 0x0e, 0xb9, 0x36, 0xf5, 0x9b,
- 0x4f, 0xec, 0x4e, 0x68, 0xb9, 0x0e, 0xd7, 0x24, 0x4b, 0x20, 0x02, 0x19, 0x0e, 0x7a, 0x0f, 0x52,
- 0x6e, 0x48, 0xdb, 0x85, 0x04, 0x37, 0xc3, 0xad, 0xa9, 0x3a, 0x96, 0xdd, 0x0e, 0x35, 0x42, 0xda,
- 0x26, 0x9c, 0x45, 0xfb, 0xa3, 0x02, 0xeb, 0x27, 0xef, 0x2f, 0x6f, 0xce, 0x43, 0xc8, 0x1f, 0x8c,
- 0x60, 0xa4, 0x35, 0xfe, 0x6f, 0xea, 0x4e, 0x93, 0x24, 0xc6, 0xe4, 0xa0, 0x5d, 0xc8, 0x1f, 0x50,
- 0x1a, 0x58, 0x76, 0xc7, 0xb1, 0x42, 0xfb, 0x19, 0x0d, 0xb8, 0x95, 0x72, 0x5b, 0xda, 0x54, 0xc9,
- 0x35, 0xdf, 0x6d, 0x52, 0xb2, 0xc0, 0x38, 0xf5, 0x8e, 0x63, 0x32, 0x3e, 0xed, 0x5d, 0xb8, 0x74,
- 0x9f, 0x86, 0xdb, 0x82, 0xb8, 0x1e, 0xda, 0x61, 0x2f, 0x88, 0xec, 0x77, 0x0d, 0x40, 0x0a, 0x19,
- 0x98, 0x2f, 0x2b, 0x21, 0x86, 0xa3, 0xfd, 0x53, 0x81, 0xc2, 0x38, 0xab, 0x3c, 0xfa, 0x74, 0x5e,
- 0xf4, 0x11, 0xe4, 0x23, 0x74, 0xc0, 0x19, 0xb9, 0xfe, 0xf9, 0xad, 0x8d, 0xa9, 0xfa, 0x8f, 0x6e,
- 0xb5, 0xf8, 0x78, 0x78, 0xc9, 0x02, 0xbc, 0xeb, 0xd3, 0xae, 0x7d, 0xcc, 0x2e, 0x57, 0x24, 0x55,
- 0xe4, 0x90, 0x37, 0x4f, 0xb1, 0x4a, 0xc4, 0x25, 0x05, 0xab, 0xdd, 0x18, 0x44, 0xfb, 0x65, 0x0a,
- 0x56, 0x8b, 0x3e, 0xb5, 0x43, 0x2a, 0x55, 0xf8, 0x66, 0x09, 0x17, 0xed, 0x42, 0xb6, 0x45, 0xed,
- 0x80, 0x5a, 0x3e, 0x3d, 0x90, 0x9e, 0xbb, 0x33, 0x3d, 0xfa, 0x18, 0x35, 0xa1, 0x07, 0xd4, 0xa7,
- 0x9d, 0x26, 0x25, 0xf3, 0x2d, 0xb9, 0x46, 0x0f, 0x40, 0xed, 0x05, 0xd4, 0xb7, 0xdc, 0xce, 0x81,
- 0xe7, 0xb7, 0x79, 0x8e, 0xe1, 0x87, 0xce, 0x6d, 0xbd, 0x31, 0x55, 0x60, 0x23, 0xa0, 0xbe, 0x31,
- 0xe0, 0x21, 0x4b, 0xbd, 0x51, 0x00, 0x4b, 0x8b, 0x91, 0x2d, 0x87, 0x65, 0xcf, 0x92, 0x16, 0x6b,
- 0x82, 0x6f, 0x58, 0x3c, 0xea, 0x8e, 0xc1, 0xd0, 0x0f, 0xe0, 0x5a, 0xb4, 0x43, 0xd7, 0xf7, 0x9a,
- 0x34, 0x08, 0x58, 0x38, 0x74, 0x6d, 0xdf, 0x6e, 0xd3, 0x90, 0xfa, 0x41, 0x21, 0xcd, 0xf7, 0x7a,
- 0x77, 0x96, 0xbd, 0x6a, 0x7d, 0x01, 0xb5, 0x3e, 0x3f, 0xb9, 0xd2, 0x3d, 0x19, 0x89, 0xee, 0xc0,
- 0xb2, 0xeb, 0xd0, 0x76, 0xd7, 0x0b, 0x69, 0xa7, 0x79, 0x6c, 0x85, 0xde, 0x53, 0xda, 0x29, 0xcc,
- 0xf1, 0x38, 0x55, 0x87, 0x10, 0x26, 0x83, 0xa3, 0x37, 0x01, 0xd9, 0x8e, 0xe3, 0x32, 0xb5, 0xed,
- 0x16, 0x2f, 0x52, 0x34, 0x08, 0x0b, 0x19, 0x4e, 0xbd, 0x3c, 0xc0, 0xc8, 0xa8, 0xd0, 0x7e, 0x94,
- 0x80, 0x97, 0x62, 0xe1, 0x22, 0xaf, 0xc5, 0xfb, 0x90, 0x91, 0x87, 0x90, 0x21, 0x73, 0x73, 0x96,
- 0x80, 0x27, 0x11, 0x13, 0xfa, 0x1e, 0xac, 0x70, 0x77, 0x47, 0x86, 0xf3, 0xba, 0xdc, 0x2b, 0x22,
- 0x84, 0x36, 0x4f, 0xf5, 0xb8, 0xb4, 0x56, 0x95, 0x73, 0x91, 0xe5, 0x5e, 0x1c, 0x84, 0x4c, 0x58,
- 0x8a, 0xee, 0xe5, 0x81, 0xed, 0xb6, 0x7a, 0x3e, 0x95, 0xd1, 0x74, 0x67, 0x16, 0x3d, 0x77, 0x04,
- 0x0b, 0x89, 0xee, 0xb6, 0x5c, 0x6b, 0x15, 0x40, 0xc2, 0x1c, 0x32, 0x8c, 0xc5, 0xdd, 0x79, 0x17,
- 0xd2, 0x3c, 0x8c, 0xa5, 0x25, 0xb4, 0x19, 0x2e, 0x80, 0x60, 0xd0, 0xbe, 0x54, 0x60, 0x65, 0x44,
- 0xa0, 0xb4, 0xee, 0xb9, 0x25, 0x4e, 0x3a, 0x77, 0xe2, 0x9b, 0x9f, 0xfb, 0x77, 0x0a, 0xa4, 0xf9,
- 0x36, 0x68, 0x0d, 0xc4, 0x95, 0x1d, 0x24, 0xc3, 0x0c, 0x5f, 0x1b, 0x4e, 0x3f, 0x85, 0x24, 0xce,
- 0x96, 0x42, 0x6e, 0x41, 0x9e, 0x47, 0x82, 0x1f, 0x25, 0x05, 0xee, 0xa8, 0x2c, 0x59, 0x64, 0xd0,
- 0x7e, 0xa6, 0x40, 0xef, 0xc1, 0x9a, 0xd8, 0x98, 0x3e, 0xeb, 0xba, 0xb2, 0xc9, 0x0a, 0xdd, 0x36,
- 0xb5, 0x02, 0xda, 0xe4, 0x97, 0x39, 0x49, 0x2e, 0x72, 0x02, 0xdc, 0xc7, 0x9b, 0x6e, 0x9b, 0xd6,
- 0x69, 0x53, 0xbb, 0x03, 0xf9, 0xd1, 0xb4, 0x33, 0xe5, 0x14, 0xda, 0xd7, 0x4a, 0xe4, 0x63, 0x5e,
- 0xbe, 0x86, 0x7c, 0xec, 0xb1, 0xf5, 0x4c, 0x1e, 0x11, 0x9c, 0x82, 0xe1, 0xf4, 0xec, 0x90, 0xf8,
- 0xaf, 0x67, 0x87, 0xe4, 0xe4, 0xec, 0xa0, 0xfd, 0xaa, 0x1f, 0x8e, 0xf2, 0xec, 0x32, 0x1c, 0xbf,
- 0x75, 0xe6, 0xc3, 0xef, 0x5e, 0x88, 0x8e, 0x5f, 0x83, 0x45, 0xfe, 0x4f, 0x2c, 0x1c, 0x5f, 0x9f,
- 0xa1, 0x73, 0x10, 0x0c, 0xbb, 0x17, 0xc8, 0x82, 0x37, 0xb4, 0xde, 0x9e, 0x87, 0x39, 0x9f, 0x06,
- 0xbd, 0x56, 0xa8, 0x6d, 0xc2, 0x4a, 0xd9, 0x0d, 0xa2, 0xc2, 0xdd, 0x2f, 0xf7, 0x97, 0x20, 0x23,
- 0x4a, 0x49, 0xe4, 0xdc, 0x39, 0x5e, 0x13, 0x1c, 0xed, 0x21, 0xac, 0x8e, 0xd2, 0xcb, 0xf3, 0x7d,
- 0x17, 0xe6, 0xa5, 0x12, 0x81, 0xec, 0x24, 0x67, 0xcb, 0x66, 0x7d, 0x2e, 0xed, 0x37, 0x0a, 0x2c,
- 0x33, 0xd1, 0x5c, 0xf1, 0xbe, 0x22, 0x6b, 0x31, 0x45, 0x76, 0x2f, 0x44, 0xaa, 0xa0, 0x7d, 0xc8,
- 0x0a, 0xb3, 0xb8, 0x4e, 0x14, 0x01, 0xff, 0x7f, 0x4a, 0xdb, 0x16, 0x93, 0x2e, 0x8c, 0x64, 0x38,
- 0xc1, 0xee, 0x05, 0x32, 0xef, 0xc9, 0xff, 0x2f, 0xdf, 0x82, 0xf9, 0x08, 0xce, 0xa2, 0x3c, 0xda,
- 0x83, 0x1f, 0x2b, 0x4b, 0x32, 0x92, 0x6e, 0x3b, 0x0d, 0x49, 0xd7, 0x09, 0x58, 0x3e, 0x1b, 0x96,
- 0x3b, 0xc8, 0x3e, 0x91, 0xbb, 0x93, 0x67, 0x8a, 0x75, 0x6d, 0x1f, 0x56, 0x45, 0x97, 0x1e, 0xeb,
- 0x2e, 0xbe, 0x61, 0xb5, 0xe0, 0x75, 0x28, 0x26, 0xf8, 0x7f, 0xba, 0x0e, 0xfd, 0x2d, 0x01, 0x19,
- 0x49, 0x72, 0x5a, 0x83, 0x7a, 0xce, 0xac, 0xfc, 0xc2, 0xda, 0xb1, 0x6d, 0x98, 0x93, 0x2d, 0x6d,
- 0xea, 0xcc, 0x8d, 0xb2, 0xe4, 0x3c, 0xa9, 0xa5, 0x4b, 0x3f, 0xb7, 0x96, 0x4e, 0xfb, 0x4b, 0x0a,
- 0xf2, 0xa3, 0x3e, 0x40, 0xf7, 0x21, 0xdd, 0xb4, 0x7b, 0xb2, 0x26, 0xe7, 0xb7, 0xde, 0x3e, 0x83,
- 0xff, 0x36, 0x8b, 0x8c, 0x91, 0x08, 0x7e, 0xf4, 0x08, 0x90, 0x4f, 0xbf, 0x4f, 0x9b, 0x21, 0x75,
- 0xac, 0xa6, 0xed, 0x3b, 0x56, 0x78, 0xdc, 0xa5, 0xf2, 0xd9, 0x30, 0x3d, 0x2a, 0x8a, 0x3e, 0x75,
- 0xdc, 0xb0, 0x68, 0xfb, 0x8e, 0x79, 0xdc, 0xa5, 0x44, 0x8d, 0xc4, 0x44, 0x10, 0xb4, 0x0e, 0x39,
- 0x87, 0x06, 0x4d, 0xdf, 0xed, 0xf6, 0x1d, 0x96, 0x25, 0xc3, 0x20, 0xed, 0xdf, 0x09, 0x48, 0x73,
- 0x6d, 0xd0, 0x4b, 0xb0, 0x5c, 0xd4, 0x1b, 0x75, 0x1c, 0x7b, 0xa6, 0xaf, 0x82, 0x5a, 0x2f, 0x57,
- 0xd9, 0xe3, 0x5d, 0xdf, 0xd7, 0x8d, 0xb2, 0xbe, 0x5d, 0xc6, 0xaa, 0x82, 0xae, 0xc3, 0x15, 0x0e,
- 0xd5, 0xcb, 0x04, 0xeb, 0xa5, 0x47, 0xd6, 0x76, 0xb5, 0xfa, 0x21, 0x2e, 0x59, 0xdb, 0x8f, 0xac,
- 0x46, 0x1d, 0x13, 0x35, 0x81, 0x96, 0x61, 0xb1, 0x8c, 0xf5, 0x3a, 0xb6, 0xf0, 0xc3, 0x9a, 0x41,
- 0x70, 0x49, 0x4d, 0x32, 0x9e, 0x6a, 0xc3, 0xac, 0x1b, 0x25, 0x6c, 0x15, 0xf5, 0x4a, 0x11, 0x97,
- 0xcb, 0x62, 0x44, 0xf0, 0xc0, 0xa8, 0x94, 0xaa, 0x0f, 0xd4, 0x14, 0xba, 0x09, 0xeb, 0x35, 0xfd,
- 0x11, 0x1f, 0x15, 0x60, 0x42, 0xaa, 0xc4, 0x2a, 0xea, 0xa4, 0x64, 0x99, 0x8f, 0x6a, 0xd8, 0x22,
- 0xf8, 0x03, 0x5c, 0x34, 0x71, 0x49, 0x4d, 0x33, 0x31, 0x13, 0xa8, 0x4a, 0xb8, 0x58, 0x36, 0x2a,
- 0xb8, 0xa4, 0xce, 0xa1, 0xab, 0x50, 0x88, 0x08, 0xaa, 0x35, 0xbe, 0x43, 0xa5, 0x6a, 0x5a, 0xfb,
- 0x7a, 0xd9, 0x28, 0xa9, 0x19, 0xa6, 0xd8, 0x08, 0xbb, 0x3a, 0x8f, 0x34, 0x78, 0x99, 0x69, 0xcd,
- 0xb4, 0x62, 0x94, 0xcc, 0x06, 0xa3, 0x02, 0xd4, 0x2c, 0xba, 0x06, 0x6b, 0xec, 0x8c, 0x46, 0xe5,
- 0x7e, 0xff, 0xcc, 0xf2, 0x10, 0xb8, 0xa4, 0x02, 0xba, 0x02, 0x97, 0x22, 0x34, 0x13, 0x11, 0x9d,
- 0x8f, 0x19, 0x2b, 0xc7, 0x90, 0xd5, 0x7d, 0x4c, 0xca, 0x7a, 0xad, 0xc6, 0x08, 0x08, 0xae, 0x63,
- 0xb2, 0x2f, 0x86, 0x1a, 0x0b, 0xda, 0x6f, 0x13, 0x90, 0xe6, 0x39, 0x33, 0x96, 0x9e, 0x95, 0xa1,
- 0xf4, 0x3c, 0xf1, 0xf6, 0x25, 0x5e, 0xe0, 0x63, 0x28, 0xf9, 0xfc, 0x1e, 0x43, 0xb1, 0x59, 0x45,
- 0xea, 0xc4, 0x59, 0x45, 0xfa, 0xec, 0xb3, 0x8a, 0x7f, 0x25, 0x60, 0x3e, 0x02, 0xb1, 0xbc, 0x17,
- 0x50, 0xff, 0xc8, 0x6d, 0x0e, 0x75, 0x71, 0x59, 0x09, 0x31, 0x1c, 0x74, 0x05, 0xb2, 0x41, 0x68,
- 0xfb, 0x21, 0xef, 0x0f, 0x13, 0xbc, 0x3f, 0x9c, 0xe7, 0x80, 0x3a, 0x6d, 0xa2, 0x1b, 0xb0, 0xd0,
- 0x9f, 0xd4, 0x31, 0x7c, 0x92, 0xe3, 0x73, 0x11, 0x8c, 0x91, 0x54, 0x20, 0x13, 0xba, 0xcd, 0xa7,
- 0x34, 0x64, 0x89, 0x8a, 0x69, 0x7a, 0x6f, 0x26, 0x4d, 0x45, 0x3d, 0xa4, 0x8e, 0x29, 0x78, 0x49,
- 0x24, 0x84, 0x15, 0xd5, 0xae, 0xef, 0x36, 0xa9, 0xcc, 0x52, 0xb3, 0xcc, 0x37, 0x04, 0xc3, 0x50,
- 0xc6, 0x9c, 0x3b, 0x6f, 0xc6, 0xbc, 0x5c, 0x84, 0xfc, 0xa8, 0x62, 0xcc, 0x3e, 0x42, 0xb5, 0x81,
- 0xf5, 0xe6, 0x05, 0xc0, 0x70, 0xd0, 0x2a, 0xa4, 0xf9, 0x94, 0x4a, 0x8e, 0xac, 0xc4, 0x42, 0xfb,
- 0x7d, 0x12, 0x16, 0x86, 0x3b, 0x33, 0x84, 0x47, 0x53, 0xe2, 0x5b, 0x33, 0xf7, 0x74, 0xa3, 0x09,
- 0x71, 0x7c, 0xba, 0x94, 0x78, 0x4e, 0xd3, 0xa5, 0xc9, 0xa9, 0x36, 0xf9, 0x02, 0x52, 0x6d, 0x6a,
- 0x3c, 0xd5, 0xfe, 0x58, 0x39, 0x25, 0xd5, 0x5e, 0x82, 0x95, 0x2a, 0x29, 0x61, 0x62, 0x35, 0x2a,
- 0x3b, 0x8d, 0xf2, 0x8e, 0x51, 0x8e, 0xb2, 0xed, 0x2c, 0x89, 0x31, 0x71, 0x5a, 0x62, 0x4c, 0x8e,
- 0xa7, 0xbe, 0x94, 0xf6, 0xd7, 0x24, 0xac, 0x4c, 0x30, 0x1c, 0x7a, 0x1c, 0xf5, 0xd4, 0xd2, 0x95,
- 0x1f, 0x9c, 0xd5, 0xf4, 0x9b, 0x93, 0xc7, 0x87, 0xbd, 0x56, 0x48, 0xa4, 0x64, 0xe4, 0xc0, 0x0a,
- 0xbb, 0xc5, 0xd6, 0x98, 0xaf, 0xd9, 0xed, 0xba, 0x3b, 0xd3, 0xed, 0x8a, 0xc9, 0x47, 0xee, 0x18,
- 0x0c, 0xbd, 0x0d, 0xab, 0xbd, 0x4e, 0x7f, 0x8b, 0x16, 0xb5, 0x7c, 0x6a, 0x07, 0xfd, 0x5a, 0xb8,
- 0x32, 0x82, 0x23, 0x1c, 0xa5, 0xfd, 0x41, 0x81, 0xb5, 0x13, 0xd5, 0x47, 0x77, 0xe0, 0x35, 0xe1,
- 0xa5, 0xbe, 0x8f, 0x8c, 0xb2, 0x61, 0x3e, 0x62, 0x69, 0xbd, 0x51, 0x8e, 0x0f, 0xb9, 0x97, 0x20,
- 0x57, 0xd4, 0x2b, 0x11, 0xa9, 0xaa, 0xb0, 0x5a, 0x30, 0xe2, 0x5d, 0x8b, 0x39, 0xc7, 0x32, 0x4c,
- 0xbc, 0xa7, 0x26, 0xd0, 0x2d, 0xb8, 0x31, 0x8a, 0x64, 0x85, 0xc2, 0x28, 0x62, 0xab, 0x58, 0xdd,
- 0xdb, 0x36, 0x2a, 0xa2, 0x64, 0x24, 0x59, 0x38, 0x4c, 0x88, 0x13, 0xab, 0x6a, 0xee, 0x62, 0x62,
- 0x11, 0xac, 0xd7, 0xab, 0x15, 0x35, 0xa5, 0xfd, 0x22, 0x0d, 0x17, 0x27, 0xdb, 0xa9, 0x9f, 0x72,
- 0x45, 0x87, 0x7c, 0x96, 0x94, 0x8b, 0x9c, 0x7e, 0x60, 0x88, 0x06, 0xa5, 0x7c, 0x0e, 0x3f, 0x6d,
- 0x4e, 0x70, 0xdd, 0x68, 0x68, 0x9c, 0xdd, 0x69, 0xe8, 0x29, 0x2c, 0x8c, 0x7c, 0x01, 0x10, 0xf3,
- 0xbc, 0xfb, 0xe7, 0x51, 0x4f, 0xbc, 0x2c, 0x9c, 0x91, 0x6f, 0x03, 0x23, 0xc2, 0xd1, 0x2e, 0xe4,
- 0x64, 0xb2, 0xe4, 0x09, 0x44, 0x94, 0xae, 0xd7, 0xa6, 0xee, 0x25, 0xf2, 0x2c, 0x4f, 0x1e, 0x10,
- 0xf6, 0xff, 0xbf, 0x7c, 0x0f, 0x56, 0x26, 0x6c, 0xc7, 0x8b, 0x59, 0xd7, 0x0b, 0x03, 0xcb, 0xeb,
- 0xd2, 0x0e, 0xf7, 0x53, 0x9a, 0x64, 0x39, 0xa4, 0xda, 0xa5, 0x1d, 0xed, 0x2b, 0x05, 0x0a, 0x27,
- 0x19, 0x11, 0x6d, 0xc0, 0xab, 0x2c, 0x9e, 0xce, 0x17, 0x9f, 0x93, 0xda, 0xbd, 0x04, 0x8b, 0xb8,
- 0xd1, 0x58, 0x33, 0x8d, 0xe2, 0x87, 0xd8, 0x8c, 0xc5, 0xe5, 0x0a, 0x2c, 0x19, 0x95, 0x62, 0x95,
- 0x10, 0x5c, 0x34, 0xad, 0x1a, 0x31, 0x8a, 0x58, 0x4d, 0xa1, 0x57, 0xe0, 0x3a, 0xd7, 0x66, 0x4a,
- 0xac, 0xa6, 0xb5, 0x9f, 0x29, 0x00, 0x03, 0x03, 0xa1, 0x9b, 0x90, 0x1f, 0x32, 0xef, 0xa0, 0x20,
- 0x2d, 0x0c, 0x0c, 0x67, 0x38, 0xe8, 0x0e, 0x2c, 0x07, 0x4f, 0x3c, 0x3f, 0xb4, 0x86, 0xf3, 0x6e,
- 0x42, 0x8c, 0x32, 0x38, 0xa2, 0x34, 0x80, 0x0f, 0xca, 0x6d, 0xf2, 0x8c, 0xe5, 0x56, 0xfb, 0x04,
- 0x72, 0x84, 0x06, 0x5e, 0xcf, 0x67, 0x6d, 0x04, 0x7f, 0x44, 0x07, 0xa1, 0x7d, 0x70, 0x30, 0xd4,
- 0xa5, 0xf1, 0xb5, 0xe1, 0xa0, 0x4b, 0x90, 0xf1, 0x3d, 0xaf, 0xcd, 0x30, 0x42, 0x8d, 0x39, 0xb6,
- 0x34, 0x1c, 0xe6, 0x4d, 0x26, 0xfd, 0xd8, 0x0a, 0xdc, 0xcf, 0x85, 0x06, 0x69, 0x92, 0xe5, 0x90,
- 0xba, 0xfb, 0x39, 0xd5, 0x7e, 0x9d, 0x84, 0x2b, 0x53, 0x06, 0x3a, 0xe8, 0x29, 0x64, 0xe5, 0xa4,
- 0xc8, 0xf3, 0x65, 0x3e, 0x36, 0xce, 0x3b, 0x1d, 0x8a, 0xe1, 0x3c, 0x7f, 0x3b, 0x51, 0x50, 0xc8,
- 0x40, 0x3e, 0xba, 0x07, 0xab, 0x51, 0x47, 0xd8, 0xa6, 0xe1, 0x13, 0xcf, 0x91, 0x33, 0x22, 0x7e,
- 0x22, 0x4e, 0x1c, 0x75, 0x79, 0x7b, 0x1c, 0x2d, 0xe6, 0xc8, 0x3a, 0x5c, 0xeb, 0x75, 0xba, 0xb6,
- 0x1f, 0x50, 0xc7, 0x9a, 0xc8, 0x9e, 0xe6, 0x06, 0xb9, 0x1c, 0x11, 0xd5, 0xc6, 0x45, 0x14, 0x20,
- 0x73, 0x44, 0xfd, 0x60, 0xf0, 0x4e, 0x89, 0x96, 0xcc, 0xd1, 0xb1, 0x89, 0x99, 0xe7, 0xcb, 0x02,
- 0xab, 0x76, 0x63, 0xc7, 0xd1, 0x1c, 0x50, 0xe3, 0x47, 0x44, 0x37, 0xe0, 0x5a, 0x54, 0xf8, 0x6a,
- 0xa4, 0x5a, 0xc4, 0xf5, 0x7a, 0x95, 0x8c, 0x3f, 0x73, 0x06, 0xa8, 0xba, 0x49, 0x8c, 0x1a, 0x2b,
- 0xbc, 0x97, 0x60, 0x65, 0x00, 0xdd, 0x26, 0xba, 0x51, 0x31, 0x09, 0xc6, 0x6a, 0x42, 0xfb, 0x7b,
- 0x02, 0x96, 0xc7, 0xde, 0xfb, 0xe8, 0x2e, 0x5c, 0x9c, 0x30, 0x3c, 0x18, 0x44, 0xca, 0xca, 0xd8,
- 0x3c, 0xc0, 0x70, 0xd0, 0x5b, 0xb0, 0x7a, 0x64, 0xb7, 0x5c, 0xc7, 0x12, 0xed, 0x69, 0x7f, 0x86,
- 0x29, 0x7a, 0xd4, 0x65, 0x8e, 0xab, 0x33, 0x94, 0x1c, 0x5f, 0xa2, 0x3b, 0x80, 0x04, 0x03, 0xed,
- 0x38, 0x03, 0x72, 0xd1, 0xb2, 0x2e, 0x71, 0x0c, 0xee, 0x38, 0x11, 0xf1, 0x36, 0xa4, 0x78, 0x8a,
- 0x12, 0x8f, 0xeb, 0xcd, 0x59, 0xc2, 0x46, 0x68, 0xc6, 0x33, 0x15, 0xe7, 0x45, 0xb7, 0x20, 0xef,
- 0xf9, 0xee, 0xa1, 0xdb, 0xb1, 0x5b, 0x96, 0x68, 0x03, 0xd3, 0x3c, 0x84, 0x17, 0x23, 0x68, 0x91,
- 0x01, 0xd1, 0x2b, 0xb0, 0xd8, 0xec, 0xf9, 0x3e, 0x3b, 0xb8, 0xa0, 0x9a, 0xe3, 0x54, 0x0b, 0x12,
- 0x28, 0x88, 0x36, 0x06, 0xbe, 0x1c, 0x58, 0x47, 0x7c, 0x6f, 0x58, 0xea, 0x8e, 0x5a, 0x46, 0xfb,
- 0x6a, 0x0e, 0xd0, 0xf8, 0x2b, 0x63, 0xf2, 0xf7, 0x30, 0xe5, 0xb9, 0x7c, 0x0f, 0x43, 0xf7, 0xe0,
- 0x62, 0x24, 0x38, 0xf4, 0xed, 0x4e, 0x60, 0x37, 0x23, 0x1d, 0xc5, 0x8d, 0x8e, 0xee, 0x86, 0x39,
- 0x40, 0x1a, 0xce, 0xf9, 0x93, 0x0b, 0xd2, 0x01, 0x42, 0xfb, 0x99, 0x65, 0xb7, 0xb9, 0xc1, 0x52,
- 0x33, 0xb3, 0x67, 0x43, 0xfb, 0x99, 0xce, 0x99, 0x50, 0x38, 0xb8, 0xb0, 0xf2, 0x76, 0x50, 0xc7,
- 0x7a, 0x7c, 0xcc, 0x7d, 0x94, 0xdf, 0xda, 0x3e, 0xe3, 0x1b, 0x2e, 0x96, 0x1f, 0xa8, 0xb3, 0x7d,
- 0xdc, 0xbf, 0xf0, 0x43, 0x30, 0xf4, 0xc6, 0x24, 0x3f, 0xce, 0xc9, 0xa1, 0x66, 0xdc, 0x93, 0xe8,
- 0x9d, 0x13, 0x2f, 0x46, 0x46, 0xb2, 0x4c, 0xbc, 0x1a, 0xef, 0x43, 0xc6, 0xa1, 0x5d, 0x2f, 0x70,
- 0xc3, 0xc2, 0xfc, 0x0c, 0xc3, 0xbc, 0x92, 0xa0, 0x25, 0x11, 0x13, 0xda, 0x81, 0x5c, 0xc7, 0xb3,
- 0x82, 0x27, 0xde, 0x67, 0xd6, 0x01, 0xa5, 0x85, 0x2c, 0x97, 0xf1, 0xea, 0x54, 0x19, 0x15, 0xaf,
- 0xfe, 0xc4, 0xfb, 0x6c, 0x87, 0x52, 0x92, 0xed, 0x44, 0xff, 0x4e, 0xf8, 0x28, 0x0d, 0xe7, 0xfc,
- 0x28, 0xdd, 0xee, 0x47, 0xf4, 0xb0, 0x31, 0x87, 0xfa, 0x7b, 0x99, 0x6e, 0xe4, 0x2c, 0x25, 0xfe,
- 0x3c, 0x18, 0xc1, 0xde, 0xaf, 0x56, 0xef, 0xf3, 0xe7, 0x41, 0x01, 0x56, 0x47, 0x10, 0x35, 0x9d,
- 0x98, 0x15, 0x4c, 0xd4, 0xc4, 0xf6, 0x02, 0x2b, 0x3c, 0xf2, 0x79, 0xef, 0x68, 0x5f, 0x40, 0x9a,
- 0xeb, 0xc4, 0x9e, 0xbb, 0x3c, 0xfc, 0xac, 0xb6, 0xdb, 0xf4, 0x3d, 0x71, 0x79, 0x92, 0x24, 0xc7,
- 0x61, 0x7b, 0x1c, 0x34, 0xb8, 0xcc, 0xcd, 0x63, 0xab, 0xe9, 0x39, 0x54, 0xc6, 0xff, 0x42, 0x04,
- 0x2c, 0x7a, 0x0e, 0x45, 0x6f, 0x00, 0x62, 0x3c, 0x6e, 0xe7, 0x30, 0xf2, 0x68, 0x68, 0x1f, 0x46,
- 0x5f, 0x13, 0x24, 0x46, 0x66, 0x13, 0xfb, 0x50, 0xfb, 0xa1, 0x02, 0xd9, 0xbe, 0x79, 0xd1, 0x3d,
- 0x48, 0x32, 0x9f, 0x28, 0x33, 0x1b, 0x92, 0x91, 0x23, 0x1d, 0xe6, 0x0f, 0x28, 0x1d, 0x7e, 0xb6,
- 0xbd, 0x7a, 0x3a, 0x2b, 0x4f, 0x65, 0x99, 0x03, 0xca, 0xff, 0xd1, 0xfe, 0xac, 0x40, 0x46, 0x46,
- 0x0a, 0xfa, 0xf6, 0x20, 0xc0, 0x66, 0x57, 0xa4, 0x1f, 0x5e, 0xdf, 0x81, 0xab, 0x6d, 0xb7, 0x63,
- 0xd9, 0xce, 0x91, 0xdd, 0x69, 0x52, 0xab, 0xc9, 0xfe, 0xb6, 0x5a, 0x83, 0x29, 0x82, 0xc8, 0xe0,
- 0x6b, 0x6d, 0xb7, 0xa3, 0x0b, 0x92, 0xe2, 0x10, 0x05, 0x4b, 0xce, 0x06, 0x2c, 0x48, 0x59, 0xe7,
- 0x39, 0x51, 0x4e, 0xf2, 0xf2, 0x53, 0x7d, 0xad, 0x40, 0xaa, 0xde, 0xf2, 0x66, 0xf8, 0x6d, 0xc8,
- 0xe8, 0x9c, 0x24, 0x31, 0x75, 0x4e, 0x92, 0x3c, 0x65, 0x4e, 0x92, 0x1a, 0x9f, 0x93, 0xbc, 0x0e,
- 0xea, 0xc8, 0xaf, 0x8e, 0x58, 0x44, 0x88, 0xe2, 0xbf, 0x34, 0x0c, 0x37, 0xed, 0x43, 0xb4, 0x03,
- 0x59, 0x5f, 0x76, 0x56, 0x62, 0x96, 0x91, 0xdb, 0xba, 0x3d, 0xf5, 0xec, 0x43, 0x7d, 0x18, 0x19,
- 0xb0, 0x6a, 0xff, 0x50, 0x60, 0x29, 0x36, 0xe9, 0x3a, 0xf1, 0x9b, 0x0f, 0x3b, 0xfe, 0xa1, 0x7b,
- 0x44, 0x3b, 0x56, 0xc7, 0x6e, 0x47, 0x51, 0x9d, 0xe5, 0x90, 0x8a, 0xdd, 0xa6, 0xcc, 0x7c, 0x07,
- 0x76, 0xdb, 0x6d, 0x1d, 0x0b, 0xbc, 0x88, 0x65, 0x10, 0x20, 0x4e, 0x50, 0x82, 0x8c, 0xed, 0x38,
- 0x3e, 0x0d, 0x02, 0x99, 0xae, 0xa7, 0x8f, 0x5f, 0x6a, 0x5e, 0x10, 0xda, 0x2d, 0x5d, 0x70, 0x90,
- 0x88, 0x15, 0x5d, 0x85, 0x6c, 0x48, 0x5b, 0xb4, 0xfb, 0xc4, 0xeb, 0x50, 0x69, 0x9e, 0x01, 0x00,
- 0xad, 0x42, 0x9a, 0xb6, 0x6d, 0xb7, 0x25, 0x3f, 0xdb, 0x8b, 0x85, 0xf6, 0xa5, 0x02, 0x8b, 0x23,
- 0xe2, 0x58, 0xcb, 0xc4, 0x2b, 0xad, 0x7f, 0x1c, 0xb5, 0xa2, 0x72, 0x89, 0x2e, 0xc3, 0x7c, 0xcb,
- 0x6b, 0xda, 0xfd, 0xe1, 0x49, 0x96, 0xf4, 0xd7, 0xe8, 0x22, 0x7b, 0xc2, 0x1d, 0x0e, 0xfa, 0x2c,
- 0xb9, 0x62, 0x47, 0xef, 0x72, 0xf1, 0xe2, 0xc2, 0xcb, 0x49, 0x9d, 0x00, 0xf1, 0xeb, 0x7e, 0x0b,
- 0xf2, 0x41, 0xe8, 0x53, 0x1a, 0x5a, 0x91, 0x05, 0x84, 0xe6, 0x8b, 0x02, 0x2a, 0xb5, 0xda, 0xf8,
- 0x89, 0x02, 0x8b, 0x23, 0x53, 0x27, 0xf4, 0x32, 0x5c, 0x8e, 0xa6, 0xa3, 0x75, 0x53, 0x37, 0x1b,
- 0xf5, 0x58, 0x66, 0x5b, 0x84, 0x6c, 0xb1, 0x5a, 0xd9, 0x31, 0xc8, 0x1e, 0x2e, 0xa9, 0x0a, 0x6f,
- 0xd7, 0x70, 0xa5, 0xc4, 0xc8, 0xf7, 0x30, 0x29, 0xee, 0xea, 0x15, 0xf6, 0xd2, 0xe0, 0x78, 0xf9,
- 0x53, 0x30, 0xb4, 0x00, 0xf3, 0x62, 0xc6, 0xca, 0x07, 0x1b, 0x39, 0xc8, 0x54, 0xaa, 0xfc, 0xe7,
- 0x62, 0x6a, 0x0a, 0xbd, 0x04, 0xcb, 0x72, 0x61, 0xd5, 0x70, 0x45, 0x2f, 0x1b, 0x1f, 0xe3, 0x92,
- 0x9a, 0xde, 0xe8, 0x42, 0x7e, 0x74, 0x86, 0x83, 0xd6, 0xe1, 0x6a, 0x91, 0xe0, 0x92, 0x61, 0x0e,
- 0x8d, 0x53, 0x46, 0xf5, 0x9a, 0x87, 0xd4, 0xbe, 0x51, 0xd7, 0x55, 0x05, 0xe5, 0x01, 0xf6, 0xf4,
- 0xba, 0x89, 0x09, 0x23, 0x55, 0x13, 0xac, 0x5d, 0xd4, 0xf7, 0x30, 0x31, 0xd8, 0xe3, 0x09, 0x3f,
- 0xac, 0x11, 0x5c, 0xaf, 0xab, 0x49, 0xa6, 0x55, 0xc9, 0xa8, 0x17, 0xab, 0xfb, 0x98, 0xa8, 0xa9,
- 0x8d, 0x9f, 0x2a, 0xb0, 0x3c, 0xd6, 0x52, 0xb1, 0xf7, 0x50, 0x6c, 0x3a, 0x3d, 0x61, 0xe3, 0x6b,
- 0xb0, 0x16, 0x23, 0xaa, 0x1b, 0x95, 0xfb, 0x65, 0x6c, 0x35, 0xea, 0x2c, 0xe1, 0x8f, 0x4f, 0xb8,
- 0xf7, 0x1a, 0x65, 0xd3, 0xe0, 0xd8, 0x04, 0x3b, 0x57, 0x0c, 0xdb, 0xa8, 0x94, 0x8d, 0x3d, 0xc3,
- 0xc4, 0x25, 0x4e, 0x91, 0xdc, 0xf8, 0xb9, 0x02, 0x6a, 0xbc, 0x19, 0xe2, 0x56, 0x27, 0x38, 0xe2,
- 0x9c, 0xe8, 0x27, 0x5e, 0x81, 0xf0, 0x50, 0xa9, 0xda, 0x37, 0x4a, 0xdc, 0x63, 0x57, 0xe0, 0xd2,
- 0x10, 0xa2, 0x52, 0x1d, 0x42, 0x26, 0x62, 0x5c, 0x04, 0xef, 0x34, 0x2a, 0x25, 0xee, 0xb6, 0x51,
- 0x84, 0xf0, 0x05, 0x2e, 0xa9, 0xa9, 0x8d, 0xbb, 0x90, 0xed, 0xa7, 0x39, 0x74, 0x11, 0xd0, 0x8e,
- 0xf1, 0x10, 0x97, 0x2c, 0xa2, 0x9b, 0xd8, 0x2a, 0xe1, 0x1d, 0xbd, 0x51, 0x36, 0xd5, 0x0b, 0xcc,
- 0x25, 0x35, 0x4c, 0xac, 0x1a, 0x26, 0xec, 0x0d, 0xa9, 0x3c, 0x9e, 0xe3, 0x3f, 0x31, 0xbd, 0xfb,
- 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x14, 0x95, 0x3d, 0x8b, 0x6e, 0x2a, 0x00, 0x00,
+var fileDescriptor_1820d8e1a9fad753 = []byte{
+ // 3301 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x3a, 0x3b, 0x70, 0x1b, 0xd7,
+ 0x76, 0x5a, 0x7c, 0x08, 0xe2, 0x80, 0x04, 0x97, 0x97, 0xb4, 0x04, 0xea, 0x63, 0x51, 0x6b, 0xc9,
+ 0x96, 0x29, 0x9b, 0x8e, 0x29, 0x79, 0x62, 0x67, 0x32, 0x4e, 0x96, 0xd8, 0x4b, 0x71, 0x6d, 0x10,
+ 0x80, 0x2f, 0x16, 0x94, 0xe4, 0x22, 0xeb, 0x15, 0xf6, 0x92, 0xda, 0x08, 0xc0, 0xc2, 0xbb, 0x0b,
+ 0x5a, 0xf4, 0xc4, 0x5d, 0xda, 0x14, 0x99, 0x14, 0x99, 0x14, 0x29, 0xdd, 0x25, 0x33, 0x29, 0xd2,
+ 0x64, 0xd2, 0x64, 0x26, 0x33, 0x29, 0x92, 0x49, 0x95, 0x22, 0xa9, 0x52, 0x64, 0x52, 0xbc, 0xea,
+ 0xf5, 0x9e, 0x79, 0xf3, 0xe6, 0xcd, 0xfd, 0x2c, 0x3e, 0x0b, 0x10, 0x04, 0x69, 0xe9, 0x35, 0xaf,
+ 0xe1, 0xf0, 0x9e, 0xdf, 0x3d, 0xf7, 0x9c, 0x73, 0xcf, 0x39, 0xf7, 0x2c, 0x60, 0xf1, 0xe4, 0xe1,
+ 0x76, 0x2f, 0xf0, 0x23, 0x1f, 0xdd, 0xa0, 0xaf, 0xa2, 0xed, 0x8e, 0xd3, 0x0b, 0xb7, 0x9f, 0xfb,
+ 0xfe, 0x4b, 0xaf, 0x7b, 0xbc, 0xdd, 0x73, 0x82, 0xa8, 0x4b, 0x83, 0xed, 0x93, 0x87, 0xda, 0x57,
+ 0x50, 0x2a, 0xbf, 0xa0, 0xad, 0x97, 0xfa, 0x89, 0xe3, 0xb5, 0x9d, 0xe7, 0x5e, 0xdb, 0x8b, 0x4e,
+ 0x09, 0xfd, 0xb6, 0x4f, 0xc3, 0x08, 0x7d, 0x02, 0x99, 0xb0, 0xed, 0x47, 0x25, 0x65, 0x53, 0xb9,
+ 0x5f, 0xd8, 0xb9, 0xb3, 0x3d, 0x43, 0xce, 0x76, 0xa3, 0xed, 0x47, 0x84, 0x93, 0x6b, 0xff, 0x91,
+ 0x86, 0x8d, 0x29, 0x32, 0xc3, 0x9e, 0xdf, 0x0d, 0xe9, 0x25, 0x85, 0xa2, 0xf7, 0x60, 0xa5, 0xe5,
+ 0xf7, 0xbb, 0x91, 0xed, 0x08, 0xa1, 0x6d, 0x5a, 0x4a, 0x6d, 0x2a, 0xf7, 0xb3, 0xa4, 0xc8, 0xc1,
+ 0x7a, 0x0c, 0x45, 0x3f, 0xc0, 0xba, 0xdb, 0x0f, 0x9c, 0xc8, 0xf3, 0xbb, 0x76, 0x40, 0xbf, 0xed,
+ 0x7b, 0x01, 0xed, 0xd0, 0x6e, 0x54, 0x4a, 0x6f, 0x2a, 0xf7, 0x8b, 0x3b, 0x5f, 0xcc, 0xdc, 0xef,
+ 0x4c, 0xad, 0xb7, 0x0d, 0x29, 0x92, 0x0c, 0x25, 0x92, 0x35, 0x77, 0x12, 0x88, 0xbe, 0x81, 0x35,
+ 0x67, 0x44, 0x80, 0xdd, 0xef, 0xb9, 0x4e, 0x44, 0x4b, 0x19, 0x7e, 0xda, 0x8f, 0x66, 0xee, 0x3e,
+ 0xba, 0x71, 0x93, 0xb3, 0x11, 0xe4, 0x4c, 0xc0, 0xb4, 0x0e, 0xac, 0x4d, 0xd1, 0x06, 0xdd, 0x85,
+ 0x4d, 0xa3, 0x49, 0x74, 0xcb, 0xac, 0x55, 0x6d, 0x82, 0xbf, 0x6a, 0x9a, 0x04, 0x1f, 0xe0, 0xaa,
+ 0x65, 0x37, 0xab, 0x8d, 0x3a, 0x2e, 0x9b, 0x7b, 0x26, 0x36, 0xd4, 0x2b, 0xa8, 0x04, 0xeb, 0x46,
+ 0xcd, 0xae, 0xd6, 0x2c, 0xbb, 0xb1, 0x5f, 0x7b, 0x62, 0xc7, 0x1c, 0xaa, 0x82, 0xae, 0x02, 0x3a,
+ 0x68, 0x36, 0x92, 0xf0, 0x94, 0xd6, 0x03, 0x34, 0xa9, 0x18, 0xfa, 0x1a, 0x56, 0x99, 0x5b, 0xec,
+ 0x51, 0xfd, 0x4a, 0xca, 0x66, 0xfa, 0x7e, 0x61, 0xe7, 0xc3, 0x73, 0x5d, 0x3a, 0x66, 0x61, 0x35,
+ 0x4c, 0x40, 0xb4, 0x00, 0xd4, 0x24, 0xd5, 0x9b, 0x8e, 0x1a, 0xed, 0x07, 0xb8, 0xcd, 0x9d, 0x5f,
+ 0x0b, 0x5c, 0x1a, 0xec, 0xf5, 0xdb, 0x47, 0x5e, 0x3b, 0x79, 0x1b, 0x6e, 0x43, 0xa1, 0x43, 0x83,
+ 0xd6, 0x0b, 0xa7, 0x1b, 0xd9, 0x9e, 0xcb, 0x35, 0xc9, 0x13, 0x88, 0x41, 0xa6, 0x8b, 0x3e, 0x83,
+ 0x8c, 0x17, 0xd1, 0x4e, 0x29, 0xc5, 0xcd, 0x70, 0x6f, 0xa6, 0x8e, 0x15, 0xaf, 0x4b, 0xcd, 0x88,
+ 0x76, 0x08, 0x67, 0xd1, 0xfe, 0x4d, 0x81, 0xcd, 0xb3, 0xf7, 0x97, 0x37, 0xe7, 0x29, 0x14, 0x8f,
+ 0xc6, 0x30, 0xd2, 0x1a, 0xbf, 0x37, 0x73, 0xa7, 0x69, 0x12, 0x13, 0x72, 0xd0, 0x3e, 0x14, 0x8f,
+ 0x28, 0x0d, 0x6d, 0xa7, 0xeb, 0xda, 0x91, 0xf3, 0x8a, 0x86, 0xdc, 0x4a, 0x85, 0x1d, 0x6d, 0xa6,
+ 0xe4, 0x7a, 0xe0, 0xb5, 0x28, 0x59, 0x62, 0x9c, 0x7a, 0xd7, 0xb5, 0x18, 0x9f, 0xf6, 0x29, 0x5c,
+ 0x7b, 0x4c, 0xa3, 0x5d, 0x41, 0xdc, 0x88, 0x9c, 0xa8, 0x1f, 0xc6, 0xf6, 0xbb, 0x05, 0x20, 0x85,
+ 0x0c, 0xcd, 0x97, 0x97, 0x10, 0xd3, 0xd5, 0x7e, 0xa1, 0x40, 0x69, 0x92, 0x55, 0x1e, 0x7d, 0x36,
+ 0x2f, 0xfa, 0x0a, 0x8a, 0x31, 0x3a, 0xe4, 0x8c, 0x5c, 0xff, 0xe2, 0xce, 0xd6, 0x4c, 0xfd, 0xc7,
+ 0xb7, 0x5a, 0x7e, 0x3e, 0xba, 0x64, 0x01, 0xde, 0x0b, 0x68, 0xcf, 0x39, 0x65, 0x97, 0x2b, 0x96,
+ 0x2a, 0x72, 0xc8, 0x87, 0xe7, 0x58, 0x25, 0xe6, 0x92, 0x82, 0xd5, 0x5e, 0x02, 0xa2, 0xfd, 0x5d,
+ 0x06, 0xd6, 0xcb, 0x01, 0x75, 0x22, 0x2a, 0x55, 0xf8, 0x79, 0x09, 0x17, 0xed, 0x43, 0xbe, 0x4d,
+ 0x9d, 0x90, 0xda, 0x01, 0x3d, 0x92, 0x9e, 0x7b, 0x30, 0x3b, 0xfa, 0x18, 0x35, 0xa1, 0x47, 0x34,
+ 0xa0, 0xdd, 0x16, 0x25, 0x8b, 0x6d, 0xb9, 0x46, 0x4f, 0x40, 0xed, 0x87, 0x34, 0xb0, 0xbd, 0xee,
+ 0x91, 0x1f, 0x74, 0x78, 0x8e, 0xe1, 0x87, 0x2e, 0xec, 0x7c, 0x30, 0x53, 0x60, 0x33, 0xa4, 0x81,
+ 0x39, 0xe4, 0x21, 0x2b, 0xfd, 0x71, 0x00, 0x4b, 0x8b, 0xb1, 0x2d, 0x47, 0x65, 0xcf, 0x93, 0x16,
+ 0xeb, 0x82, 0x6f, 0x54, 0x3c, 0xea, 0x4d, 0xc0, 0xd0, 0x9f, 0xc1, 0xad, 0x78, 0x87, 0x5e, 0xe0,
+ 0xb7, 0x68, 0x18, 0xb2, 0x70, 0xe8, 0x39, 0x81, 0xd3, 0xa1, 0x11, 0x0d, 0xc2, 0x52, 0x96, 0xef,
+ 0xf5, 0xe9, 0x3c, 0x7b, 0xd5, 0x07, 0x02, 0xea, 0x03, 0x7e, 0x72, 0xa3, 0x77, 0x36, 0x12, 0x3d,
+ 0x80, 0x55, 0xcf, 0xa5, 0x9d, 0x9e, 0x1f, 0xd1, 0x6e, 0xeb, 0xd4, 0x8e, 0xfc, 0x97, 0xb4, 0x5b,
+ 0x5a, 0xe0, 0x71, 0xaa, 0x8e, 0x20, 0x2c, 0x06, 0x47, 0x1f, 0x02, 0x72, 0x5c, 0xd7, 0x63, 0x6a,
+ 0x3b, 0x6d, 0x5e, 0xa4, 0x68, 0x18, 0x95, 0x72, 0x9c, 0x7a, 0x75, 0x88, 0x91, 0x51, 0xa1, 0xfd,
+ 0x45, 0x0a, 0xde, 0x4a, 0x84, 0x8b, 0xbc, 0x16, 0x9f, 0x43, 0x4e, 0x1e, 0x42, 0x86, 0xcc, 0xdd,
+ 0x79, 0x02, 0x9e, 0xc4, 0x4c, 0xe8, 0x4f, 0x60, 0x8d, 0xbb, 0x3b, 0x36, 0x9c, 0xdf, 0xe3, 0x5e,
+ 0x11, 0x21, 0xb4, 0x7d, 0xae, 0xc7, 0xa5, 0xb5, 0x6a, 0x9c, 0x8b, 0xac, 0xf6, 0x93, 0x20, 0x64,
+ 0xc1, 0x4a, 0x7c, 0x2f, 0x8f, 0x1c, 0xaf, 0xdd, 0x0f, 0xa8, 0x8c, 0xa6, 0x07, 0xf3, 0xe8, 0xb9,
+ 0x27, 0x58, 0x48, 0x7c, 0xb7, 0xe5, 0x5a, 0xab, 0x02, 0x12, 0xe6, 0x90, 0x61, 0x2c, 0xee, 0xce,
+ 0xa7, 0x90, 0xe5, 0x61, 0x2c, 0x2d, 0xa1, 0xcd, 0x71, 0x01, 0x04, 0x83, 0xf6, 0xa3, 0x02, 0x6b,
+ 0x63, 0x02, 0xa5, 0x75, 0x2f, 0x2d, 0x71, 0xda, 0xb9, 0x53, 0x3f, 0xff, 0xdc, 0xff, 0xac, 0x40,
+ 0x96, 0x6f, 0x83, 0x36, 0x40, 0x5c, 0xd9, 0x61, 0x32, 0xcc, 0xf1, 0xb5, 0xe9, 0x0e, 0x52, 0x48,
+ 0xea, 0x62, 0x29, 0xe4, 0x1e, 0x14, 0x79, 0x24, 0x04, 0x71, 0x52, 0xe0, 0x8e, 0xca, 0x93, 0x65,
+ 0x06, 0x1d, 0x64, 0x0a, 0xf4, 0x19, 0x6c, 0x88, 0x8d, 0xe9, 0xab, 0x9e, 0x27, 0x9b, 0xac, 0xc8,
+ 0xeb, 0x50, 0x3b, 0xa4, 0x2d, 0x7e, 0x99, 0xd3, 0xe4, 0x2a, 0x27, 0xc0, 0x03, 0xbc, 0xe5, 0x75,
+ 0x68, 0x83, 0xb6, 0xb4, 0x07, 0x50, 0x1c, 0x4f, 0x3b, 0x33, 0x4e, 0xa1, 0xfd, 0xa4, 0xc4, 0x3e,
+ 0xe6, 0xe5, 0x6b, 0xc4, 0xc7, 0x3e, 0x5b, 0xcf, 0xe5, 0x11, 0xc1, 0x29, 0x18, 0xce, 0xcf, 0x0e,
+ 0xa9, 0xdf, 0x7a, 0x76, 0x48, 0x4f, 0xcf, 0x0e, 0xda, 0xdf, 0x0f, 0xc2, 0x51, 0x9e, 0x5d, 0x86,
+ 0xe3, 0x1f, 0x5c, 0xf8, 0xf0, 0xfb, 0x57, 0xe2, 0xe3, 0xd7, 0x61, 0x99, 0xff, 0x93, 0x08, 0xc7,
+ 0xf7, 0xe7, 0xe8, 0x1c, 0x04, 0xc3, 0xfe, 0x15, 0xb2, 0xe4, 0x8f, 0xac, 0x77, 0x17, 0x61, 0x21,
+ 0xa0, 0x61, 0xbf, 0x1d, 0x69, 0xdb, 0xb0, 0x56, 0xf1, 0xc2, 0xb8, 0x70, 0x0f, 0xca, 0xfd, 0x35,
+ 0xc8, 0x89, 0x52, 0x12, 0x3b, 0x77, 0x81, 0xd7, 0x04, 0x57, 0x7b, 0x0a, 0xeb, 0xe3, 0xf4, 0xf2,
+ 0x7c, 0x7f, 0x0c, 0x8b, 0x52, 0x89, 0x50, 0x76, 0x92, 0xf3, 0x65, 0xb3, 0x01, 0x97, 0xf6, 0x8f,
+ 0x0a, 0xac, 0x32, 0xd1, 0x5c, 0xf1, 0x81, 0x22, 0x1b, 0x09, 0x45, 0xf6, 0xaf, 0xc4, 0xaa, 0xa0,
+ 0x43, 0xc8, 0x0b, 0xb3, 0x78, 0x6e, 0x1c, 0x01, 0xbf, 0x7f, 0x4e, 0xdb, 0x96, 0x90, 0x2e, 0x8c,
+ 0x64, 0xba, 0xe1, 0xfe, 0x15, 0xb2, 0xe8, 0xcb, 0xff, 0xaf, 0xdf, 0x83, 0xc5, 0x18, 0xce, 0xa2,
+ 0x3c, 0xde, 0x83, 0x1f, 0x2b, 0x4f, 0x72, 0x92, 0x6e, 0x37, 0x0b, 0x69, 0xcf, 0x0d, 0x59, 0x3e,
+ 0x1b, 0x95, 0x3b, 0xcc, 0x3e, 0xb1, 0xbb, 0xd3, 0x17, 0x8a, 0x75, 0xed, 0x10, 0xd6, 0x45, 0x97,
+ 0x9e, 0xe8, 0x2e, 0x7e, 0x66, 0xb5, 0xe0, 0x75, 0x28, 0x21, 0xf8, 0x77, 0xba, 0x0e, 0xfd, 0x6f,
+ 0x0a, 0x72, 0x92, 0xe4, 0xbc, 0x06, 0xf5, 0x92, 0x59, 0xf9, 0x8d, 0xb5, 0x63, 0xbb, 0xb0, 0x20,
+ 0x5b, 0xda, 0xcc, 0x85, 0x1b, 0x65, 0xc9, 0x79, 0x56, 0x4b, 0x97, 0x7d, 0x6d, 0x2d, 0x9d, 0xf6,
+ 0xdf, 0x19, 0x28, 0x8e, 0xfb, 0x00, 0x3d, 0x86, 0x6c, 0xcb, 0xe9, 0xcb, 0x9a, 0x5c, 0xdc, 0xf9,
+ 0xf8, 0x02, 0xfe, 0xdb, 0x2e, 0x33, 0x46, 0x22, 0xf8, 0xd1, 0x33, 0x40, 0x01, 0xfd, 0x53, 0xda,
+ 0x8a, 0xa8, 0x6b, 0xb7, 0x9c, 0xc0, 0xb5, 0xa3, 0xd3, 0x1e, 0x95, 0xcf, 0x86, 0xd9, 0x51, 0x51,
+ 0x0e, 0xa8, 0xeb, 0x45, 0x65, 0x27, 0x70, 0xad, 0xd3, 0x1e, 0x25, 0x6a, 0x2c, 0x26, 0x86, 0xa0,
+ 0x4d, 0x28, 0xb8, 0x34, 0x6c, 0x05, 0x5e, 0x6f, 0xe0, 0xb0, 0x3c, 0x19, 0x05, 0x69, 0xbf, 0x4e,
+ 0x41, 0x96, 0x6b, 0x83, 0xde, 0x82, 0xd5, 0xb2, 0xde, 0x6c, 0xe0, 0xc4, 0x33, 0x7d, 0x1d, 0xd4,
+ 0x46, 0xa5, 0xc6, 0x1e, 0xef, 0xfa, 0xa1, 0x6e, 0x56, 0xf4, 0xdd, 0x0a, 0x56, 0x15, 0x74, 0x1b,
+ 0x6e, 0x70, 0xa8, 0x5e, 0x21, 0x58, 0x37, 0x9e, 0xd9, 0xbb, 0xb5, 0xda, 0x97, 0xd8, 0xb0, 0x77,
+ 0x9f, 0xd9, 0xcd, 0x06, 0x26, 0x6a, 0x0a, 0xad, 0xc2, 0x72, 0x05, 0xeb, 0x0d, 0x6c, 0xe3, 0xa7,
+ 0x75, 0x93, 0x60, 0x43, 0x4d, 0x33, 0x9e, 0x5a, 0xd3, 0x6a, 0x98, 0x06, 0xb6, 0xcb, 0x7a, 0xb5,
+ 0x8c, 0x2b, 0x15, 0x31, 0x22, 0x78, 0x62, 0x56, 0x8d, 0xda, 0x13, 0x35, 0x83, 0xee, 0xc2, 0x66,
+ 0x5d, 0x7f, 0xc6, 0x47, 0x05, 0x98, 0x90, 0x1a, 0xb1, 0xcb, 0x3a, 0x31, 0x6c, 0xeb, 0x59, 0x1d,
+ 0xdb, 0x04, 0x7f, 0x81, 0xcb, 0x16, 0x36, 0xd4, 0x2c, 0x13, 0x33, 0x85, 0xca, 0xc0, 0xe5, 0x8a,
+ 0x59, 0xc5, 0x86, 0xba, 0x80, 0x6e, 0x42, 0x29, 0x26, 0xa8, 0xd5, 0xf9, 0x0e, 0xd5, 0x9a, 0x65,
+ 0x1f, 0xea, 0x15, 0xd3, 0x50, 0x73, 0x4c, 0xb1, 0x31, 0x76, 0x75, 0x11, 0x69, 0xf0, 0x36, 0xd3,
+ 0x9a, 0x69, 0xc5, 0x28, 0x99, 0x0d, 0xc6, 0x05, 0xa8, 0x79, 0x74, 0x0b, 0x36, 0xd8, 0x19, 0xcd,
+ 0xea, 0xe3, 0xc1, 0x99, 0xe5, 0x21, 0xb0, 0xa1, 0x02, 0xba, 0x01, 0xd7, 0x62, 0x34, 0x13, 0x11,
+ 0x9f, 0x8f, 0x19, 0xab, 0xc0, 0x90, 0xb5, 0x43, 0x4c, 0x2a, 0x7a, 0xbd, 0xce, 0x08, 0x08, 0x6e,
+ 0x60, 0x72, 0x28, 0x86, 0x1a, 0x4b, 0xda, 0x3f, 0xa5, 0x20, 0xcb, 0x73, 0x66, 0x22, 0x3d, 0x2b,
+ 0x23, 0xe9, 0x79, 0xea, 0xed, 0x4b, 0xbd, 0xc1, 0xc7, 0x50, 0xfa, 0xf5, 0x3d, 0x86, 0x12, 0xb3,
+ 0x8a, 0xcc, 0x99, 0xb3, 0x8a, 0xec, 0xc5, 0x67, 0x15, 0xbf, 0x4a, 0xc1, 0x62, 0x0c, 0x62, 0x79,
+ 0x2f, 0xa4, 0xc1, 0x89, 0xd7, 0x1a, 0xe9, 0xe2, 0xf2, 0x12, 0x62, 0xba, 0xe8, 0x06, 0xe4, 0xc3,
+ 0xc8, 0x09, 0x22, 0xde, 0x1f, 0xa6, 0x78, 0x7f, 0xb8, 0xc8, 0x01, 0x0d, 0xda, 0x42, 0x77, 0x60,
+ 0x69, 0x30, 0xa9, 0x63, 0xf8, 0x34, 0xc7, 0x17, 0x62, 0x18, 0x23, 0xa9, 0x42, 0x2e, 0xf2, 0x5a,
+ 0x2f, 0x69, 0xc4, 0x12, 0x15, 0xd3, 0xf4, 0xd1, 0x5c, 0x9a, 0x8a, 0x7a, 0x48, 0x5d, 0x4b, 0xf0,
+ 0x92, 0x58, 0x08, 0x2b, 0xaa, 0xbd, 0xc0, 0x6b, 0x51, 0x99, 0xa5, 0xe6, 0x99, 0x6f, 0x08, 0x86,
+ 0x91, 0x8c, 0xb9, 0x70, 0xd9, 0x8c, 0x79, 0xbd, 0x0c, 0xc5, 0x71, 0xc5, 0x98, 0x7d, 0x84, 0x6a,
+ 0x43, 0xeb, 0x2d, 0x0a, 0x80, 0xe9, 0xa2, 0x75, 0xc8, 0xf2, 0x29, 0x95, 0x1c, 0x59, 0x89, 0x85,
+ 0xf6, 0x2f, 0x69, 0x58, 0x1a, 0xed, 0xcc, 0x10, 0x1e, 0x4f, 0x89, 0x1f, 0xcd, 0xdd, 0xd3, 0x8d,
+ 0x27, 0xc4, 0xc9, 0xe9, 0x52, 0xea, 0x35, 0x4d, 0x97, 0xa6, 0xa7, 0xda, 0xf4, 0x1b, 0x48, 0xb5,
+ 0x99, 0xc9, 0x54, 0xfb, 0x97, 0xca, 0x39, 0xa9, 0xf6, 0x1a, 0xac, 0xd5, 0x88, 0x81, 0x89, 0xdd,
+ 0xac, 0xee, 0x35, 0x2b, 0x7b, 0x66, 0x25, 0xce, 0xb6, 0xf3, 0x24, 0xc6, 0xd4, 0x79, 0x89, 0x31,
+ 0x3d, 0x99, 0xfa, 0x32, 0xda, 0xff, 0xa4, 0x61, 0x6d, 0x8a, 0xe1, 0xd0, 0xf3, 0xb8, 0xa7, 0x96,
+ 0xae, 0xfc, 0xe2, 0xa2, 0xa6, 0xdf, 0x9e, 0x3e, 0x3e, 0xec, 0xb7, 0x23, 0x22, 0x25, 0x23, 0x17,
+ 0xd6, 0xd8, 0x2d, 0xb6, 0x27, 0x7c, 0xcd, 0x6e, 0xd7, 0xc3, 0xb9, 0x6e, 0x57, 0x42, 0x3e, 0xf2,
+ 0x26, 0x60, 0xe8, 0x63, 0x58, 0xef, 0x77, 0x07, 0x5b, 0xb4, 0xa9, 0x1d, 0x50, 0x27, 0x1c, 0xd4,
+ 0xc2, 0xb5, 0x31, 0x1c, 0xe1, 0x28, 0xed, 0x5f, 0x15, 0xd8, 0x38, 0x53, 0x7d, 0xf4, 0x00, 0xde,
+ 0x13, 0x5e, 0x1a, 0xf8, 0xc8, 0xac, 0x98, 0xd6, 0x33, 0x96, 0xd6, 0x9b, 0x95, 0xe4, 0x90, 0x7b,
+ 0x05, 0x0a, 0x65, 0xbd, 0x1a, 0x93, 0xaa, 0x0a, 0xab, 0x05, 0x63, 0xde, 0xb5, 0x99, 0x73, 0x6c,
+ 0xd3, 0xc2, 0x07, 0x6a, 0x0a, 0xdd, 0x83, 0x3b, 0xe3, 0x48, 0x56, 0x28, 0xcc, 0x32, 0xb6, 0xcb,
+ 0xb5, 0x83, 0x5d, 0xb3, 0x2a, 0x4a, 0x46, 0x9a, 0x85, 0xc3, 0x94, 0x38, 0xb1, 0x6b, 0xd6, 0x3e,
+ 0x26, 0x36, 0xc1, 0x7a, 0xa3, 0x56, 0x55, 0x33, 0xda, 0xbf, 0x67, 0xe1, 0xea, 0x74, 0x3b, 0x0d,
+ 0x52, 0xae, 0xe8, 0x90, 0x2f, 0x92, 0x72, 0x91, 0x3b, 0x08, 0x0c, 0xd1, 0xa0, 0x54, 0x2e, 0xe1,
+ 0xa7, 0xed, 0x29, 0xae, 0x1b, 0x0f, 0x8d, 0x8b, 0x3b, 0x0d, 0xbd, 0x84, 0xa5, 0xb1, 0x2f, 0x00,
+ 0x62, 0x9e, 0xf7, 0xf8, 0x32, 0xea, 0x89, 0x97, 0x85, 0x3b, 0xf6, 0x6d, 0x60, 0x4c, 0x38, 0xda,
+ 0x87, 0x82, 0x4c, 0x96, 0x3c, 0x81, 0x88, 0xd2, 0xf5, 0xde, 0xcc, 0xbd, 0x44, 0x9e, 0xe5, 0xc9,
+ 0x03, 0xa2, 0xc1, 0xff, 0xd7, 0x1f, 0xc1, 0xda, 0x94, 0xed, 0x78, 0x31, 0xeb, 0xf9, 0x51, 0x68,
+ 0xfb, 0x3d, 0xda, 0xe5, 0x7e, 0xca, 0x92, 0x3c, 0x87, 0xd4, 0x7a, 0xb4, 0xab, 0xfd, 0x52, 0x81,
+ 0xd2, 0x59, 0x46, 0x44, 0x5b, 0xf0, 0x2e, 0x8b, 0xa7, 0xcb, 0xc5, 0xe7, 0xb4, 0x76, 0x8f, 0xa7,
+ 0x96, 0xf2, 0xbe, 0x59, 0x31, 0x6c, 0xcb, 0x2c, 0x7f, 0x89, 0xad, 0x86, 0xfd, 0xc4, 0xb4, 0xf6,
+ 0x6b, 0x4d, 0xcb, 0xd6, 0x8d, 0x66, 0xc5, 0x52, 0x17, 0x58, 0x48, 0x8e, 0x07, 0xa3, 0x20, 0x4c,
+ 0x04, 0xee, 0x1a, 0xac, 0x98, 0xd5, 0x72, 0x8d, 0x10, 0x5c, 0xb6, 0xec, 0x3a, 0x31, 0xcb, 0x58,
+ 0xcd, 0xa0, 0x77, 0xe0, 0x36, 0x57, 0x77, 0x46, 0x30, 0x67, 0xb5, 0xbf, 0x51, 0x00, 0x86, 0x16,
+ 0x44, 0x77, 0xa1, 0x38, 0x62, 0xff, 0x61, 0xc5, 0x5a, 0x1a, 0x5a, 0xd6, 0x74, 0xd1, 0x03, 0x58,
+ 0x0d, 0x5f, 0xf8, 0x41, 0x64, 0x8f, 0x26, 0xe6, 0x94, 0x98, 0x75, 0x70, 0x84, 0x31, 0x84, 0x0f,
+ 0xeb, 0x71, 0xfa, 0x82, 0xf5, 0x58, 0xfb, 0x06, 0x0a, 0x84, 0x86, 0x7e, 0x3f, 0x60, 0x7d, 0x06,
+ 0x7f, 0x65, 0x87, 0x91, 0x73, 0x74, 0x34, 0xd2, 0xc6, 0xf1, 0xb5, 0xe9, 0xa2, 0x6b, 0x90, 0x0b,
+ 0x7c, 0xbf, 0xc3, 0x30, 0x42, 0x8d, 0x05, 0xb6, 0x34, 0x5d, 0xe6, 0x6e, 0x26, 0xfd, 0xd4, 0x0e,
+ 0xbd, 0xef, 0x85, 0x06, 0x59, 0x92, 0xe7, 0x90, 0x86, 0xf7, 0x3d, 0xd5, 0xfe, 0x21, 0x0d, 0x37,
+ 0x66, 0x4c, 0x7c, 0xd0, 0x4b, 0xc8, 0xcb, 0x51, 0x92, 0x1f, 0xc8, 0x84, 0x6d, 0x5e, 0x76, 0x7c,
+ 0x94, 0xc0, 0xf9, 0xc1, 0x6e, 0xaa, 0xa4, 0x90, 0xa1, 0x7c, 0xf4, 0x08, 0xd6, 0xe3, 0x96, 0xb1,
+ 0x43, 0xa3, 0x17, 0xbe, 0x2b, 0x87, 0x48, 0xfc, 0x44, 0x9c, 0x38, 0x6e, 0x03, 0x0f, 0x38, 0x5a,
+ 0x0c, 0x9a, 0x75, 0xb8, 0xd5, 0xef, 0xf6, 0x9c, 0x20, 0xa4, 0xae, 0x3d, 0x95, 0x3d, 0xcb, 0x0d,
+ 0x72, 0x3d, 0x26, 0xaa, 0x4f, 0x8a, 0x28, 0x41, 0xee, 0x84, 0x06, 0xe1, 0xf0, 0x21, 0x13, 0x2f,
+ 0x99, 0xa3, 0x13, 0x23, 0x35, 0x3f, 0x90, 0x15, 0x58, 0xed, 0x25, 0x8e, 0xa3, 0xb9, 0xa0, 0x26,
+ 0x8f, 0x88, 0xee, 0xc0, 0xad, 0xb8, 0x32, 0xd6, 0x49, 0xad, 0x8c, 0x1b, 0x8d, 0x1a, 0x99, 0x7c,
+ 0x07, 0x0d, 0x51, 0x0d, 0x8b, 0x98, 0x75, 0x56, 0x99, 0xaf, 0xc1, 0xda, 0x10, 0xba, 0x4b, 0x74,
+ 0xb3, 0x6a, 0x11, 0x8c, 0xd5, 0x94, 0xf6, 0x7f, 0x29, 0x58, 0x9d, 0x18, 0x08, 0xa0, 0x87, 0x70,
+ 0x75, 0xca, 0x74, 0x61, 0x18, 0x29, 0x6b, 0x13, 0x03, 0x03, 0xd3, 0x45, 0x1f, 0xc1, 0xfa, 0x89,
+ 0xd3, 0xf6, 0x5c, 0x5b, 0xf4, 0xaf, 0x83, 0x21, 0xa7, 0x68, 0x62, 0x57, 0x39, 0xae, 0xc1, 0x50,
+ 0x72, 0xbe, 0x89, 0x1e, 0x00, 0x12, 0x0c, 0xb4, 0xeb, 0x0e, 0xc9, 0x45, 0x4f, 0xbb, 0xc2, 0x31,
+ 0xb8, 0xeb, 0xc6, 0xc4, 0xbb, 0x90, 0xe1, 0x39, 0x4c, 0xbc, 0xbe, 0xb7, 0xe7, 0x09, 0x1b, 0xa1,
+ 0x19, 0x4f, 0x65, 0x9c, 0x17, 0xdd, 0x83, 0xa2, 0x1f, 0x78, 0xc7, 0x5e, 0xd7, 0x69, 0xdb, 0xa2,
+ 0x4f, 0xcc, 0xf2, 0x10, 0x5e, 0x8e, 0xa1, 0x65, 0x06, 0x44, 0xef, 0xc0, 0x72, 0xab, 0x1f, 0x04,
+ 0xec, 0xe0, 0x82, 0x6a, 0x81, 0x53, 0x2d, 0x49, 0xa0, 0x20, 0xda, 0x1a, 0xfa, 0x72, 0x68, 0x1d,
+ 0xf1, 0x41, 0x62, 0xa5, 0x37, 0x6e, 0x19, 0xed, 0x3f, 0x17, 0x00, 0x4d, 0x3e, 0x43, 0xa6, 0x7f,
+ 0x30, 0x53, 0x5e, 0xcb, 0x07, 0x33, 0xf4, 0x08, 0xae, 0xc6, 0x82, 0xa3, 0xc0, 0xe9, 0x86, 0x4e,
+ 0x2b, 0xd6, 0x51, 0xdc, 0xe8, 0xf8, 0x6e, 0x58, 0x43, 0xa4, 0xe9, 0x5e, 0x3e, 0xb9, 0x20, 0x1d,
+ 0x20, 0x72, 0x5e, 0xd9, 0x4e, 0x87, 0x1b, 0x2c, 0x33, 0x37, 0x7b, 0x3e, 0x72, 0x5e, 0xe9, 0x9c,
+ 0x09, 0x45, 0xc3, 0x0b, 0x2b, 0x6f, 0x07, 0x75, 0xed, 0xe7, 0xa7, 0xdc, 0x47, 0xc5, 0x9d, 0xdd,
+ 0x0b, 0x3e, 0xf2, 0x12, 0xf9, 0x81, 0xba, 0xbb, 0xa7, 0x83, 0x0b, 0x3f, 0x02, 0x43, 0x1f, 0x4c,
+ 0xf3, 0xe3, 0x82, 0x9c, 0x7a, 0x26, 0x3d, 0x89, 0x3e, 0x39, 0xf3, 0x62, 0xe4, 0x24, 0xcb, 0xd4,
+ 0xab, 0xf1, 0x39, 0xe4, 0x5c, 0xda, 0xf3, 0x43, 0x2f, 0x2a, 0x2d, 0xce, 0x31, 0xed, 0x33, 0x04,
+ 0x2d, 0x89, 0x99, 0xd0, 0x1e, 0x14, 0xba, 0xbe, 0x1d, 0xbe, 0xf0, 0xbf, 0xb3, 0x8f, 0x28, 0x2d,
+ 0xe5, 0xb9, 0x8c, 0x77, 0x67, 0xca, 0xa8, 0xfa, 0x8d, 0x17, 0xfe, 0x77, 0x7b, 0x94, 0x92, 0x7c,
+ 0x37, 0xfe, 0x77, 0xca, 0x57, 0x6b, 0xb8, 0xe4, 0x57, 0xeb, 0xce, 0x20, 0xa2, 0x47, 0x8d, 0x39,
+ 0xf2, 0x00, 0x90, 0xe9, 0x46, 0x0e, 0x5b, 0x92, 0xef, 0x87, 0x31, 0xec, 0xe3, 0x5a, 0xed, 0x31,
+ 0x7f, 0x3f, 0x94, 0x60, 0x7d, 0x0c, 0x51, 0xd7, 0x89, 0x55, 0xc5, 0x44, 0x4d, 0xed, 0x2e, 0xb1,
+ 0xc2, 0x23, 0xdf, 0xff, 0xae, 0xf6, 0x03, 0x64, 0xb9, 0x4e, 0xec, 0x3d, 0xcc, 0xc3, 0xcf, 0xee,
+ 0x78, 0xad, 0xc0, 0x17, 0x97, 0x27, 0x4d, 0x0a, 0x1c, 0x76, 0xc0, 0x41, 0xc3, 0xcb, 0xdc, 0x3a,
+ 0xb5, 0x5b, 0xbe, 0x4b, 0x65, 0xfc, 0x2f, 0xc5, 0xc0, 0xb2, 0xef, 0x52, 0xf4, 0x01, 0x20, 0xc6,
+ 0xe3, 0x75, 0x8f, 0x63, 0x8f, 0x46, 0xce, 0x71, 0xfc, 0xb9, 0x41, 0x62, 0x64, 0x36, 0x71, 0x8e,
+ 0xb5, 0x3f, 0x57, 0x20, 0x3f, 0x30, 0x2f, 0x7a, 0x04, 0x69, 0xe6, 0x13, 0x65, 0x6e, 0x43, 0x32,
+ 0x72, 0xa4, 0xc3, 0xe2, 0x11, 0xa5, 0xa3, 0xef, 0xba, 0x77, 0xcf, 0x67, 0xe5, 0xa9, 0x2c, 0x77,
+ 0x44, 0xf9, 0x3f, 0xda, 0x7f, 0x29, 0x90, 0x93, 0x91, 0x82, 0xfe, 0x70, 0x18, 0x60, 0xf3, 0x2b,
+ 0x32, 0x08, 0xaf, 0x3f, 0x82, 0x9b, 0x1d, 0xaf, 0x6b, 0x3b, 0xee, 0x89, 0xd3, 0x6d, 0x51, 0xbb,
+ 0xc5, 0xfe, 0xb6, 0xdb, 0xc3, 0x31, 0x83, 0xc8, 0xe0, 0x1b, 0x1d, 0xaf, 0xab, 0x0b, 0x92, 0xf2,
+ 0x08, 0x05, 0x4b, 0xce, 0x26, 0x2c, 0x49, 0x59, 0x97, 0x39, 0x51, 0x41, 0xf2, 0xf2, 0x53, 0xfd,
+ 0xa4, 0x40, 0xa6, 0xd1, 0xf6, 0xe7, 0xf8, 0xf1, 0xc8, 0xf8, 0x20, 0x25, 0x35, 0x73, 0x90, 0x92,
+ 0x3e, 0x67, 0x90, 0x92, 0x99, 0x1c, 0xa4, 0xbc, 0x0f, 0xea, 0xd8, 0xcf, 0x92, 0x58, 0x44, 0x88,
+ 0xe2, 0xbf, 0x32, 0x0a, 0xb7, 0x9c, 0x63, 0xb4, 0x07, 0xf9, 0x40, 0x76, 0x56, 0x62, 0xd8, 0x51,
+ 0xd8, 0xb9, 0x3f, 0xf3, 0xec, 0x23, 0x7d, 0x18, 0x19, 0xb2, 0x6a, 0xff, 0xaf, 0xc0, 0x4a, 0x62,
+ 0x14, 0x76, 0xe6, 0x47, 0x21, 0x76, 0xfc, 0x63, 0xef, 0x84, 0x76, 0xed, 0xae, 0xd3, 0x89, 0xa3,
+ 0x3a, 0xcf, 0x21, 0x55, 0xa7, 0x43, 0x99, 0xf9, 0x8e, 0x9c, 0x8e, 0xd7, 0x3e, 0x15, 0x78, 0x11,
+ 0xcb, 0x20, 0x40, 0x9c, 0xc0, 0x80, 0x9c, 0xe3, 0xba, 0x01, 0x0d, 0x43, 0x99, 0xae, 0x67, 0xcf,
+ 0x67, 0xea, 0x7e, 0x18, 0x39, 0x6d, 0x5d, 0x70, 0x90, 0x98, 0x15, 0xdd, 0x84, 0x7c, 0x44, 0xdb,
+ 0xb4, 0xf7, 0xc2, 0xef, 0x52, 0x69, 0x9e, 0x21, 0x00, 0xad, 0x43, 0x96, 0x76, 0x1c, 0xaf, 0x2d,
+ 0xbf, 0xeb, 0x8b, 0x85, 0xf6, 0xa3, 0x02, 0xcb, 0x63, 0xe2, 0x58, 0xcb, 0xc4, 0x2b, 0x6d, 0x70,
+ 0x1a, 0xb7, 0xa2, 0x72, 0x89, 0xae, 0xc3, 0x62, 0xdb, 0x6f, 0x39, 0x83, 0xe9, 0x4a, 0x9e, 0x0c,
+ 0xd6, 0xe8, 0x2a, 0x7b, 0xe3, 0x1d, 0x0f, 0xfb, 0x2c, 0xb9, 0x62, 0x47, 0xef, 0x71, 0xf1, 0xe2,
+ 0xc2, 0xcb, 0x51, 0x9e, 0x00, 0xf1, 0xeb, 0x7e, 0x0f, 0x8a, 0x61, 0x14, 0x50, 0x1a, 0xd9, 0xb1,
+ 0x05, 0x84, 0xe6, 0xcb, 0x02, 0x2a, 0xb5, 0xda, 0xfa, 0x2b, 0x05, 0x96, 0xc7, 0xc6, 0x52, 0xe8,
+ 0x6d, 0xb8, 0x1e, 0x8f, 0x4f, 0x1b, 0x96, 0x6e, 0x35, 0x1b, 0x89, 0xcc, 0xb6, 0x0c, 0xf9, 0x72,
+ 0xad, 0xba, 0x67, 0x92, 0x03, 0x6c, 0xa8, 0x0a, 0x6f, 0xd7, 0x70, 0xd5, 0x60, 0xe4, 0x07, 0x98,
+ 0x94, 0xf7, 0xf5, 0x2a, 0x7b, 0x69, 0x70, 0xbc, 0xfc, 0xad, 0x18, 0x5a, 0x82, 0x45, 0x31, 0x84,
+ 0xe5, 0x93, 0x8f, 0x02, 0xe4, 0xaa, 0x35, 0xfe, 0x7b, 0x32, 0x35, 0x83, 0xde, 0x82, 0x55, 0xb9,
+ 0xb0, 0xeb, 0xb8, 0xaa, 0x57, 0xcc, 0xaf, 0xb1, 0xa1, 0x66, 0xb7, 0x7a, 0x50, 0x1c, 0x1f, 0xf2,
+ 0xa0, 0x4d, 0xb8, 0x59, 0x26, 0xd8, 0x30, 0xad, 0x91, 0x79, 0xcb, 0xb8, 0x5e, 0x8b, 0x90, 0x39,
+ 0x34, 0x1b, 0xba, 0xaa, 0xa0, 0x22, 0xc0, 0x81, 0xde, 0xb0, 0x30, 0x61, 0xa4, 0x6a, 0x8a, 0xb5,
+ 0x8b, 0xfa, 0x01, 0x26, 0x26, 0x7b, 0x5d, 0xe1, 0xa7, 0x75, 0x82, 0x1b, 0x0d, 0x35, 0xcd, 0xb4,
+ 0x32, 0xcc, 0x46, 0xb9, 0x76, 0x88, 0x89, 0x9a, 0xd9, 0xfa, 0x6b, 0x05, 0x56, 0x27, 0x5a, 0x2a,
+ 0xf6, 0x1e, 0x4a, 0x8c, 0xaf, 0xa7, 0x6c, 0x7c, 0x0b, 0x36, 0x12, 0x44, 0x0d, 0xb3, 0xfa, 0xb8,
+ 0x82, 0xed, 0x66, 0x83, 0x25, 0xfc, 0xc9, 0x11, 0xf8, 0x41, 0xb3, 0x62, 0x99, 0x1c, 0x9b, 0x62,
+ 0xe7, 0x4a, 0x60, 0x9b, 0xd5, 0x8a, 0x79, 0x60, 0x5a, 0xd8, 0xe0, 0x14, 0xe9, 0xad, 0xbf, 0x55,
+ 0x40, 0x4d, 0x36, 0x43, 0xdc, 0xea, 0x04, 0xc7, 0x9c, 0x53, 0xfd, 0xc4, 0x2b, 0x10, 0x1e, 0x29,
+ 0x55, 0x87, 0xa6, 0xc1, 0x3d, 0x76, 0x03, 0xae, 0x8d, 0x20, 0xaa, 0xb5, 0x11, 0x64, 0x2a, 0xc1,
+ 0x45, 0xf0, 0x5e, 0xb3, 0x6a, 0x70, 0xb7, 0x8d, 0x23, 0x84, 0x2f, 0xb0, 0xa1, 0x66, 0xb6, 0x1e,
+ 0x42, 0x7e, 0x90, 0xe6, 0xd0, 0x55, 0x40, 0x7b, 0xe6, 0x53, 0x6c, 0xd8, 0x44, 0xb7, 0xb0, 0x6d,
+ 0xe0, 0x3d, 0x9d, 0xbd, 0x49, 0xaf, 0x30, 0x97, 0xd4, 0x31, 0xb1, 0xeb, 0x98, 0xb0, 0x37, 0xa4,
+ 0xf2, 0x7c, 0x81, 0xff, 0x06, 0xf5, 0xe1, 0x6f, 0x02, 0x00, 0x00, 0xff, 0xff, 0xdf, 0xdc, 0x5d,
+ 0x0e, 0x8f, 0x2a, 0x00, 0x00,
}
diff --git a/waitlist/waitlist.pb.go b/waitlist/waitlist.pb.go
new file mode 100644
index 0000000..09df310
--- /dev/null
+++ b/waitlist/waitlist.pb.go
@@ -0,0 +1,1202 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: waitlist.proto
+
+// Waitlist partner API protos
+package ext_maps_booking_partner_v3_waitlist
+
+/*
+Waitlist partner API protos
+*/
+
+import (
+ fmt "fmt"
+ math "math"
+
+ proto "github.com/golang/protobuf/proto"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+
+// A status for the waitlist that determines if new users can join and what
+// the reason is if they can’t join.
+type WaitlistStatus int32
+
+const (
+ WaitlistStatus_WAITLIST_STATUS_UNSPECIFIED WaitlistStatus = 0
+ // The waitlist is open and is accepting new users.
+ WaitlistStatus_OPEN WaitlistStatus = 1
+ // There is currently no wait and users should arrive at the merchant
+ // without joining the waitlist.
+ WaitlistStatus_CLOSED_NO_WAIT WaitlistStatus = 2
+ // The waitlist is not currently accepting new users because it is full
+ // or closed for other reasons.
+ WaitlistStatus_CLOSED_OTHER WaitlistStatus = 3
+)
+
+var WaitlistStatus_name = map[int32]string{
+ 0: "WAITLIST_STATUS_UNSPECIFIED",
+ 1: "OPEN",
+ 2: "CLOSED_NO_WAIT",
+ 3: "CLOSED_OTHER",
+}
+
+var WaitlistStatus_value = map[string]int32{
+ "WAITLIST_STATUS_UNSPECIFIED": 0,
+ "OPEN": 1,
+ "CLOSED_NO_WAIT": 2,
+ "CLOSED_OTHER": 3,
+}
+
+func (x WaitlistStatus) String() string {
+ return proto.EnumName(WaitlistStatus_name, int32(x))
+}
+
+func (WaitlistStatus) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_c4272259c545fcea, []int{0}
+}
+
+type WaitlistEntryState int32
+
+const (
+ WaitlistEntryState_WAITLIST_ENTRY_STATE_UNSPECIFIED WaitlistEntryState = 0
+ // The waitlist entry was created and the user is currently waiting in the
+ // waitlist.
+ WaitlistEntryState_WAITING WaitlistEntryState = 1
+ // The waitlist entry has been canceled. Cancellation for no-shows should use
+ // the NO_SHOW state.
+ WaitlistEntryState_CANCELED WaitlistEntryState = 2
+ // The merchant is ready to serve the user.
+ WaitlistEntryState_SERVICE_READY WaitlistEntryState = 3
+ // The user has checked in with the host and is waiting to be seated.
+ WaitlistEntryState_CHECKED_IN WaitlistEntryState = 4
+ // The user has arrived and been seated by the merchant.
+ WaitlistEntryState_SEATED WaitlistEntryState = 5
+ // The user did not arrive at the merchant in time and lost their space.
+ WaitlistEntryState_NO_SHOW WaitlistEntryState = 6
+)
+
+var WaitlistEntryState_name = map[int32]string{
+ 0: "WAITLIST_ENTRY_STATE_UNSPECIFIED",
+ 1: "WAITING",
+ 2: "CANCELED",
+ 3: "SERVICE_READY",
+ 4: "CHECKED_IN",
+ 5: "SEATED",
+ 6: "NO_SHOW",
+}
+
+var WaitlistEntryState_value = map[string]int32{
+ "WAITLIST_ENTRY_STATE_UNSPECIFIED": 0,
+ "WAITING": 1,
+ "CANCELED": 2,
+ "SERVICE_READY": 3,
+ "CHECKED_IN": 4,
+ "SEATED": 5,
+ "NO_SHOW": 6,
+}
+
+func (x WaitlistEntryState) String() string {
+ return proto.EnumName(WaitlistEntryState_name, int32(x))
+}
+
+func (WaitlistEntryState) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_c4272259c545fcea, []int{1}
+}
+
+type WaitlistBusinessLogicFailure_Cause int32
+
+const (
+ // Default value: Don't use; amounts to an "unknown error"
+ // Unexpected errors must be returned using standard HTTP error codes.
+ WaitlistBusinessLogicFailure_CAUSE_UNSPECIFIED WaitlistBusinessLogicFailure_Cause = 0
+ // The user has already booked a waitlist entry with the partner.
+ WaitlistBusinessLogicFailure_EXISTING_WAITLIST_ENTRY WaitlistBusinessLogicFailure_Cause = 1
+ // The requested party size is below the merchant’s minimum.
+ WaitlistBusinessLogicFailure_BELOW_MIN_PARTY_SIZE WaitlistBusinessLogicFailure_Cause = 2
+ // The requested party size is above the merchant’s maximum.
+ WaitlistBusinessLogicFailure_ABOVE_MAX_PARTY_SIZE WaitlistBusinessLogicFailure_Cause = 3
+ // The requested merchant is currently closed.
+ WaitlistBusinessLogicFailure_MERCHANT_CLOSED WaitlistBusinessLogicFailure_Cause = 4
+ // There is currently no wait and the user should walk in without joining
+ // the waitlist.
+ WaitlistBusinessLogicFailure_NO_WAIT WaitlistBusinessLogicFailure_Cause = 5
+ // The waitlist is at capacity and new users are not being accepted at this
+ // time.
+ WaitlistBusinessLogicFailure_WAITLIST_FULL WaitlistBusinessLogicFailure_Cause = 6
+)
+
+var WaitlistBusinessLogicFailure_Cause_name = map[int32]string{
+ 0: "CAUSE_UNSPECIFIED",
+ 1: "EXISTING_WAITLIST_ENTRY",
+ 2: "BELOW_MIN_PARTY_SIZE",
+ 3: "ABOVE_MAX_PARTY_SIZE",
+ 4: "MERCHANT_CLOSED",
+ 5: "NO_WAIT",
+ 6: "WAITLIST_FULL",
+}
+
+var WaitlistBusinessLogicFailure_Cause_value = map[string]int32{
+ "CAUSE_UNSPECIFIED": 0,
+ "EXISTING_WAITLIST_ENTRY": 1,
+ "BELOW_MIN_PARTY_SIZE": 2,
+ "ABOVE_MAX_PARTY_SIZE": 3,
+ "MERCHANT_CLOSED": 4,
+ "NO_WAIT": 5,
+ "WAITLIST_FULL": 6,
+}
+
+func (x WaitlistBusinessLogicFailure_Cause) String() string {
+ return proto.EnumName(WaitlistBusinessLogicFailure_Cause_name, int32(x))
+}
+
+func (WaitlistBusinessLogicFailure_Cause) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_c4272259c545fcea, []int{12, 0}
+}
+
+// Batch request for the wait estimates for the specified merchant, service and
+// party sizes.
+type BatchGetWaitEstimatesRequest struct {
+ // Required. Partner-provided ID for the merchant.
+ MerchantId string `protobuf:"bytes,1,opt,name=merchant_id,json=merchantId,proto3" json:"merchant_id,omitempty"`
+ // Required. Partner-provided ID for the service.
+ ServiceId string `protobuf:"bytes,2,opt,name=service_id,json=serviceId,proto3" json:"service_id,omitempty"`
+ // Required. The different party sizes WaitEstimates are requested for.
+ // WaitEstimates may differ with the number of people in the party.
+ PartySize []int32 `protobuf:"varint,3,rep,packed,name=party_size,json=partySize,proto3" json:"party_size,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *BatchGetWaitEstimatesRequest) Reset() { *m = BatchGetWaitEstimatesRequest{} }
+func (m *BatchGetWaitEstimatesRequest) String() string { return proto.CompactTextString(m) }
+func (*BatchGetWaitEstimatesRequest) ProtoMessage() {}
+func (*BatchGetWaitEstimatesRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c4272259c545fcea, []int{0}
+}
+
+func (m *BatchGetWaitEstimatesRequest) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_BatchGetWaitEstimatesRequest.Unmarshal(m, b)
+}
+func (m *BatchGetWaitEstimatesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_BatchGetWaitEstimatesRequest.Marshal(b, m, deterministic)
+}
+func (m *BatchGetWaitEstimatesRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_BatchGetWaitEstimatesRequest.Merge(m, src)
+}
+func (m *BatchGetWaitEstimatesRequest) XXX_Size() int {
+ return xxx_messageInfo_BatchGetWaitEstimatesRequest.Size(m)
+}
+func (m *BatchGetWaitEstimatesRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_BatchGetWaitEstimatesRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BatchGetWaitEstimatesRequest proto.InternalMessageInfo
+
+func (m *BatchGetWaitEstimatesRequest) GetMerchantId() string {
+ if m != nil {
+ return m.MerchantId
+ }
+ return ""
+}
+
+func (m *BatchGetWaitEstimatesRequest) GetServiceId() string {
+ if m != nil {
+ return m.ServiceId
+ }
+ return ""
+}
+
+func (m *BatchGetWaitEstimatesRequest) GetPartySize() []int32 {
+ if m != nil {
+ return m.PartySize
+ }
+ return nil
+}
+
+// Response for the BatchGetWaitEstimates RPC with the wait estimates of the
+// specified merchant, service and party sizes.
+type BatchGetWaitEstimatesResponse struct {
+ // Required. A status for the waitlist that indicates whether new users can
+ // join and what the reason is if they can’t join. If the waitlist is not
+ // open, all other fields in the BatchGetWaitEstimatesResponse are expected to
+ // be unset.
+ WaitlistStatus WaitlistStatus `protobuf:"varint,1,opt,name=waitlist_status,json=waitlistStatus,proto3,enum=ext.maps.booking.partner.v3.waitlist.WaitlistStatus" json:"waitlist_status,omitempty"`
+ // The wait estimates for each party size requested. The response should
+ // contain exactly one wait estimate for each party size sent in the request.
+ // If a party size is not available for some reason, prefer ommitting it
+ // instead of returning an error so that the user will have some options to
+ // choose from.
+ WaitEstimate []*WaitEstimate `protobuf:"bytes,2,rep,name=wait_estimate,json=waitEstimate,proto3" json:"wait_estimate,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *BatchGetWaitEstimatesResponse) Reset() { *m = BatchGetWaitEstimatesResponse{} }
+func (m *BatchGetWaitEstimatesResponse) String() string { return proto.CompactTextString(m) }
+func (*BatchGetWaitEstimatesResponse) ProtoMessage() {}
+func (*BatchGetWaitEstimatesResponse) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c4272259c545fcea, []int{1}
+}
+
+func (m *BatchGetWaitEstimatesResponse) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_BatchGetWaitEstimatesResponse.Unmarshal(m, b)
+}
+func (m *BatchGetWaitEstimatesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_BatchGetWaitEstimatesResponse.Marshal(b, m, deterministic)
+}
+func (m *BatchGetWaitEstimatesResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_BatchGetWaitEstimatesResponse.Merge(m, src)
+}
+func (m *BatchGetWaitEstimatesResponse) XXX_Size() int {
+ return xxx_messageInfo_BatchGetWaitEstimatesResponse.Size(m)
+}
+func (m *BatchGetWaitEstimatesResponse) XXX_DiscardUnknown() {
+ xxx_messageInfo_BatchGetWaitEstimatesResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BatchGetWaitEstimatesResponse proto.InternalMessageInfo
+
+func (m *BatchGetWaitEstimatesResponse) GetWaitlistStatus() WaitlistStatus {
+ if m != nil {
+ return m.WaitlistStatus
+ }
+ return WaitlistStatus_WAITLIST_STATUS_UNSPECIFIED
+}
+
+func (m *BatchGetWaitEstimatesResponse) GetWaitEstimate() []*WaitEstimate {
+ if m != nil {
+ return m.WaitEstimate
+ }
+ return nil
+}
+
+// The range of time for the current estimated seat time for the user. Estimated
+// seat time range must change over time when the merchant or partner updates
+// their estimates.
+type EstimatedSeatTimeRange struct {
+ // Required. The lower bound for the range. Expressed as the number of seconds
+ // since the Unix epoch.
+ StartSeconds int64 `protobuf:"varint,1,opt,name=start_seconds,json=startSeconds,proto3" json:"start_seconds,omitempty"`
+ // Required. The upper bound for the range. Expressed as the number of seconds
+ // since the Unix epoch.
+ EndSeconds int64 `protobuf:"varint,2,opt,name=end_seconds,json=endSeconds,proto3" json:"end_seconds,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *EstimatedSeatTimeRange) Reset() { *m = EstimatedSeatTimeRange{} }
+func (m *EstimatedSeatTimeRange) String() string { return proto.CompactTextString(m) }
+func (*EstimatedSeatTimeRange) ProtoMessage() {}
+func (*EstimatedSeatTimeRange) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c4272259c545fcea, []int{2}
+}
+
+func (m *EstimatedSeatTimeRange) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_EstimatedSeatTimeRange.Unmarshal(m, b)
+}
+func (m *EstimatedSeatTimeRange) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_EstimatedSeatTimeRange.Marshal(b, m, deterministic)
+}
+func (m *EstimatedSeatTimeRange) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_EstimatedSeatTimeRange.Merge(m, src)
+}
+func (m *EstimatedSeatTimeRange) XXX_Size() int {
+ return xxx_messageInfo_EstimatedSeatTimeRange.Size(m)
+}
+func (m *EstimatedSeatTimeRange) XXX_DiscardUnknown() {
+ xxx_messageInfo_EstimatedSeatTimeRange.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_EstimatedSeatTimeRange proto.InternalMessageInfo
+
+func (m *EstimatedSeatTimeRange) GetStartSeconds() int64 {
+ if m != nil {
+ return m.StartSeconds
+ }
+ return 0
+}
+
+func (m *EstimatedSeatTimeRange) GetEndSeconds() int64 {
+ if m != nil {
+ return m.EndSeconds
+ }
+ return 0
+}
+
+// Contains fields measuring how long (in time or # of people) until the
+// user is ready to leave the waitlist and be seated.
+type WaitLength struct {
+ // The count of how many other parties are ahead of the user in the waitlist.
+ // parties_ahead_count must change over time as parties ahead
+ // in the waitlist are seated or leave the waitlist. Either
+ // parties_ahead_count or estimated_seat_time_range must be populated. Both
+ // should be populated.
+ PartiesAheadCount int32 `protobuf:"varint,1,opt,name=parties_ahead_count,json=partiesAheadCount,proto3" json:"parties_ahead_count,omitempty"`
+ // The range of time that the user is estimated to be seated in. Either
+ // parties_ahead_count or estimated_seat_time_range must be populated. Both
+ // should be populated.
+ EstimatedSeatTimeRange *EstimatedSeatTimeRange `protobuf:"bytes,2,opt,name=estimated_seat_time_range,json=estimatedSeatTimeRange,proto3" json:"estimated_seat_time_range,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *WaitLength) Reset() { *m = WaitLength{} }
+func (m *WaitLength) String() string { return proto.CompactTextString(m) }
+func (*WaitLength) ProtoMessage() {}
+func (*WaitLength) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c4272259c545fcea, []int{3}
+}
+
+func (m *WaitLength) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_WaitLength.Unmarshal(m, b)
+}
+func (m *WaitLength) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_WaitLength.Marshal(b, m, deterministic)
+}
+func (m *WaitLength) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_WaitLength.Merge(m, src)
+}
+func (m *WaitLength) XXX_Size() int {
+ return xxx_messageInfo_WaitLength.Size(m)
+}
+func (m *WaitLength) XXX_DiscardUnknown() {
+ xxx_messageInfo_WaitLength.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_WaitLength proto.InternalMessageInfo
+
+func (m *WaitLength) GetPartiesAheadCount() int32 {
+ if m != nil {
+ return m.PartiesAheadCount
+ }
+ return 0
+}
+
+func (m *WaitLength) GetEstimatedSeatTimeRange() *EstimatedSeatTimeRange {
+ if m != nil {
+ return m.EstimatedSeatTimeRange
+ }
+ return nil
+}
+
+// The wait estimate for a particular party size, merchant and service.
+type WaitEstimate struct {
+ // Required. The party size this wait estimate applies to.
+ PartySize int32 `protobuf:"varint,1,opt,name=party_size,json=partySize,proto3" json:"party_size,omitempty"`
+ // Required. Contains fields measuring how long (in time or # of people) until
+ // the user is ready to leave the waitlist and be seated.
+ WaitLength *WaitLength `protobuf:"bytes,2,opt,name=wait_length,json=waitLength,proto3" json:"wait_length,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *WaitEstimate) Reset() { *m = WaitEstimate{} }
+func (m *WaitEstimate) String() string { return proto.CompactTextString(m) }
+func (*WaitEstimate) ProtoMessage() {}
+func (*WaitEstimate) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c4272259c545fcea, []int{4}
+}
+
+func (m *WaitEstimate) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_WaitEstimate.Unmarshal(m, b)
+}
+func (m *WaitEstimate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_WaitEstimate.Marshal(b, m, deterministic)
+}
+func (m *WaitEstimate) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_WaitEstimate.Merge(m, src)
+}
+func (m *WaitEstimate) XXX_Size() int {
+ return xxx_messageInfo_WaitEstimate.Size(m)
+}
+func (m *WaitEstimate) XXX_DiscardUnknown() {
+ xxx_messageInfo_WaitEstimate.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_WaitEstimate proto.InternalMessageInfo
+
+func (m *WaitEstimate) GetPartySize() int32 {
+ if m != nil {
+ return m.PartySize
+ }
+ return 0
+}
+
+func (m *WaitEstimate) GetWaitLength() *WaitLength {
+ if m != nil {
+ return m.WaitLength
+ }
+ return nil
+}
+
+// Request for a user to join the waitlist.
+//
+// Reserve with Google may retry REST HTTP requests if no response is
+// received. If the exact same CreateWaitlistEntry is received a second time,
+// then the same CreateWaitlistResponse must be returned. A second waitlist
+// entry must not be created.
+type CreateWaitlistEntryRequest struct {
+ // Required. Partner-provided ID for the merchant.
+ MerchantId string `protobuf:"bytes,1,opt,name=merchant_id,json=merchantId,proto3" json:"merchant_id,omitempty"`
+ // Required. Partner-provided ID for the service.
+ ServiceId string `protobuf:"bytes,2,opt,name=service_id,json=serviceId,proto3" json:"service_id,omitempty"`
+ // Required. The party size requested for the waitlist entry.
+ PartySize int32 `protobuf:"varint,3,opt,name=party_size,json=partySize,proto3" json:"party_size,omitempty"`
+ // Required. Personal information of the user joining the waitlist.
+ UserInformation *UserInformation `protobuf:"bytes,4,opt,name=user_information,json=userInformation,proto3" json:"user_information,omitempty"`
+ // A string from the user which contains any special requests or additional
+ // information that they would like to notify the merchant about.
+ // This will be populated when the user submits an additional request to
+ // Reserve with Google. The partner can disable this functionality at the
+ // service level by setting supports_additional_request to false in the
+ // service feed.
+ AdditionalRequest string `protobuf:"bytes,5,opt,name=additional_request,json=additionalRequest,proto3" json:"additional_request,omitempty"`
+ // Required. Used to differentiate retries from separate requests. If the
+ // exact same CreateWaitlistEntry is received a second time, (including
+ // idempotency_token) then the same CreateWaitlistResponse must be returned.
+ IdempotencyToken string `protobuf:"bytes,6,opt,name=idempotency_token,json=idempotencyToken,proto3" json:"idempotency_token,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *CreateWaitlistEntryRequest) Reset() { *m = CreateWaitlistEntryRequest{} }
+func (m *CreateWaitlistEntryRequest) String() string { return proto.CompactTextString(m) }
+func (*CreateWaitlistEntryRequest) ProtoMessage() {}
+func (*CreateWaitlistEntryRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c4272259c545fcea, []int{5}
+}
+
+func (m *CreateWaitlistEntryRequest) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_CreateWaitlistEntryRequest.Unmarshal(m, b)
+}
+func (m *CreateWaitlistEntryRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_CreateWaitlistEntryRequest.Marshal(b, m, deterministic)
+}
+func (m *CreateWaitlistEntryRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_CreateWaitlistEntryRequest.Merge(m, src)
+}
+func (m *CreateWaitlistEntryRequest) XXX_Size() int {
+ return xxx_messageInfo_CreateWaitlistEntryRequest.Size(m)
+}
+func (m *CreateWaitlistEntryRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_CreateWaitlistEntryRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CreateWaitlistEntryRequest proto.InternalMessageInfo
+
+func (m *CreateWaitlistEntryRequest) GetMerchantId() string {
+ if m != nil {
+ return m.MerchantId
+ }
+ return ""
+}
+
+func (m *CreateWaitlistEntryRequest) GetServiceId() string {
+ if m != nil {
+ return m.ServiceId
+ }
+ return ""
+}
+
+func (m *CreateWaitlistEntryRequest) GetPartySize() int32 {
+ if m != nil {
+ return m.PartySize
+ }
+ return 0
+}
+
+func (m *CreateWaitlistEntryRequest) GetUserInformation() *UserInformation {
+ if m != nil {
+ return m.UserInformation
+ }
+ return nil
+}
+
+func (m *CreateWaitlistEntryRequest) GetAdditionalRequest() string {
+ if m != nil {
+ return m.AdditionalRequest
+ }
+ return ""
+}
+
+func (m *CreateWaitlistEntryRequest) GetIdempotencyToken() string {
+ if m != nil {
+ return m.IdempotencyToken
+ }
+ return ""
+}
+
+// Response for the CreateWaitlistEntry RPC with the waitlist entry ID or any
+// failing business logic information.
+type CreateWaitlistEntryResponse struct {
+ // Unique partner-provided ID for the newly created entry in the waitlist.
+ // Required if the waitlist entry was created successfully. Unique for all
+ // time.
+ WaitlistEntryId string `protobuf:"bytes,1,opt,name=waitlist_entry_id,json=waitlistEntryId,proto3" json:"waitlist_entry_id,omitempty"`
+ WaitlistBusinessLogicFailure *WaitlistBusinessLogicFailure `protobuf:"bytes,2,opt,name=waitlist_business_logic_failure,json=waitlistBusinessLogicFailure,proto3" json:"waitlist_business_logic_failure,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *CreateWaitlistEntryResponse) Reset() { *m = CreateWaitlistEntryResponse{} }
+func (m *CreateWaitlistEntryResponse) String() string { return proto.CompactTextString(m) }
+func (*CreateWaitlistEntryResponse) ProtoMessage() {}
+func (*CreateWaitlistEntryResponse) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c4272259c545fcea, []int{6}
+}
+
+func (m *CreateWaitlistEntryResponse) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_CreateWaitlistEntryResponse.Unmarshal(m, b)
+}
+func (m *CreateWaitlistEntryResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_CreateWaitlistEntryResponse.Marshal(b, m, deterministic)
+}
+func (m *CreateWaitlistEntryResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_CreateWaitlistEntryResponse.Merge(m, src)
+}
+func (m *CreateWaitlistEntryResponse) XXX_Size() int {
+ return xxx_messageInfo_CreateWaitlistEntryResponse.Size(m)
+}
+func (m *CreateWaitlistEntryResponse) XXX_DiscardUnknown() {
+ xxx_messageInfo_CreateWaitlistEntryResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CreateWaitlistEntryResponse proto.InternalMessageInfo
+
+func (m *CreateWaitlistEntryResponse) GetWaitlistEntryId() string {
+ if m != nil {
+ return m.WaitlistEntryId
+ }
+ return ""
+}
+
+func (m *CreateWaitlistEntryResponse) GetWaitlistBusinessLogicFailure() *WaitlistBusinessLogicFailure {
+ if m != nil {
+ return m.WaitlistBusinessLogicFailure
+ }
+ return nil
+}
+
+// Get the waitlist entry corresponding to the provided waitlist entry ID.
+type GetWaitlistEntryRequest struct {
+ // Required. The partner-provided waitlist entry ID to request info for.
+ WaitlistEntryId string `protobuf:"bytes,1,opt,name=waitlist_entry_id,json=waitlistEntryId,proto3" json:"waitlist_entry_id,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *GetWaitlistEntryRequest) Reset() { *m = GetWaitlistEntryRequest{} }
+func (m *GetWaitlistEntryRequest) String() string { return proto.CompactTextString(m) }
+func (*GetWaitlistEntryRequest) ProtoMessage() {}
+func (*GetWaitlistEntryRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c4272259c545fcea, []int{7}
+}
+
+func (m *GetWaitlistEntryRequest) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_GetWaitlistEntryRequest.Unmarshal(m, b)
+}
+func (m *GetWaitlistEntryRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_GetWaitlistEntryRequest.Marshal(b, m, deterministic)
+}
+func (m *GetWaitlistEntryRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GetWaitlistEntryRequest.Merge(m, src)
+}
+func (m *GetWaitlistEntryRequest) XXX_Size() int {
+ return xxx_messageInfo_GetWaitlistEntryRequest.Size(m)
+}
+func (m *GetWaitlistEntryRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_GetWaitlistEntryRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetWaitlistEntryRequest proto.InternalMessageInfo
+
+func (m *GetWaitlistEntryRequest) GetWaitlistEntryId() string {
+ if m != nil {
+ return m.WaitlistEntryId
+ }
+ return ""
+}
+
+// Response with the waitlist entry corresponding to the provided
+// waitlist entry ID.
+type GetWaitlistEntryResponse struct {
+ // Required. The partner-provided information about a user’s waitlist entry.
+ WaitlistEntry *WaitlistEntry `protobuf:"bytes,1,opt,name=waitlist_entry,json=waitlistEntry,proto3" json:"waitlist_entry,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *GetWaitlistEntryResponse) Reset() { *m = GetWaitlistEntryResponse{} }
+func (m *GetWaitlistEntryResponse) String() string { return proto.CompactTextString(m) }
+func (*GetWaitlistEntryResponse) ProtoMessage() {}
+func (*GetWaitlistEntryResponse) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c4272259c545fcea, []int{8}
+}
+
+func (m *GetWaitlistEntryResponse) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_GetWaitlistEntryResponse.Unmarshal(m, b)
+}
+func (m *GetWaitlistEntryResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_GetWaitlistEntryResponse.Marshal(b, m, deterministic)
+}
+func (m *GetWaitlistEntryResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GetWaitlistEntryResponse.Merge(m, src)
+}
+func (m *GetWaitlistEntryResponse) XXX_Size() int {
+ return xxx_messageInfo_GetWaitlistEntryResponse.Size(m)
+}
+func (m *GetWaitlistEntryResponse) XXX_DiscardUnknown() {
+ xxx_messageInfo_GetWaitlistEntryResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetWaitlistEntryResponse proto.InternalMessageInfo
+
+func (m *GetWaitlistEntryResponse) GetWaitlistEntry() *WaitlistEntry {
+ if m != nil {
+ return m.WaitlistEntry
+ }
+ return nil
+}
+
+// Cancel the user's entry in the waitlist.
+type DeleteWaitlistEntryRequest struct {
+ // Required. The partner-provided ID for the waitlist entry to be deleted.
+ WaitlistEntryId string `protobuf:"bytes,1,opt,name=waitlist_entry_id,json=waitlistEntryId,proto3" json:"waitlist_entry_id,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *DeleteWaitlistEntryRequest) Reset() { *m = DeleteWaitlistEntryRequest{} }
+func (m *DeleteWaitlistEntryRequest) String() string { return proto.CompactTextString(m) }
+func (*DeleteWaitlistEntryRequest) ProtoMessage() {}
+func (*DeleteWaitlistEntryRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c4272259c545fcea, []int{9}
+}
+
+func (m *DeleteWaitlistEntryRequest) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_DeleteWaitlistEntryRequest.Unmarshal(m, b)
+}
+func (m *DeleteWaitlistEntryRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_DeleteWaitlistEntryRequest.Marshal(b, m, deterministic)
+}
+func (m *DeleteWaitlistEntryRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_DeleteWaitlistEntryRequest.Merge(m, src)
+}
+func (m *DeleteWaitlistEntryRequest) XXX_Size() int {
+ return xxx_messageInfo_DeleteWaitlistEntryRequest.Size(m)
+}
+func (m *DeleteWaitlistEntryRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_DeleteWaitlistEntryRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_DeleteWaitlistEntryRequest proto.InternalMessageInfo
+
+func (m *DeleteWaitlistEntryRequest) GetWaitlistEntryId() string {
+ if m != nil {
+ return m.WaitlistEntryId
+ }
+ return ""
+}
+
+// The times at which the waitlist entry changed state.
+type WaitlistEntryStateTimes struct {
+ // Required. The time at which the waitlist entry was created.
+ // In seconds since Unix epoch.
+ CreatedTimeSeconds int64 `protobuf:"varint,1,opt,name=created_time_seconds,json=createdTimeSeconds,proto3" json:"created_time_seconds,omitempty"`
+ // The time that the waitlist entry was cancelled. Must be populated
+ // when the waitlist entry has been canceled but not before.
+ // In seconds since Unix epoch.
+ CanceledTimeSeconds int64 `protobuf:"varint,2,opt,name=canceled_time_seconds,json=canceledTimeSeconds,proto3" json:"canceled_time_seconds,omitempty"`
+ // The time the merchant was ready to serve the user.
+ // service_readied_time_seconds must be populated after the merchant is
+ // ready to serve the user but not before.
+ // In seconds since Unix epoch.
+ ServiceReadiedTimeSeconds int64 `protobuf:"varint,3,opt,name=service_readied_time_seconds,json=serviceReadiedTimeSeconds,proto3" json:"service_readied_time_seconds,omitempty"`
+ // The actual time the user checked in with the host. checked_in_time must be
+ // populated after the user has checked in with the merchant but not before.
+ // In seconds since Unix epoch.
+ CheckedInTimeSeconds int64 `protobuf:"varint,4,opt,name=checked_in_time_seconds,json=checkedInTimeSeconds,proto3" json:"checked_in_time_seconds,omitempty"`
+ // The seated time for the user. seated_time_seconds must be populated
+ // when the user has been seated but not before.
+ // In seconds since Unix epoch.
+ SeatedTimeSeconds int64 `protobuf:"varint,5,opt,name=seated_time_seconds,json=seatedTimeSeconds,proto3" json:"seated_time_seconds,omitempty"`
+ // The time that the user was marked as a no-show. marked_no_show_time_seconds
+ // must be populated when the user has been marked a no-show but not before.
+ // In seconds since Unix epoch.
+ MarkedNoShowTimeSeconds int64 `protobuf:"varint,6,opt,name=marked_no_show_time_seconds,json=markedNoShowTimeSeconds,proto3" json:"marked_no_show_time_seconds,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *WaitlistEntryStateTimes) Reset() { *m = WaitlistEntryStateTimes{} }
+func (m *WaitlistEntryStateTimes) String() string { return proto.CompactTextString(m) }
+func (*WaitlistEntryStateTimes) ProtoMessage() {}
+func (*WaitlistEntryStateTimes) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c4272259c545fcea, []int{10}
+}
+
+func (m *WaitlistEntryStateTimes) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_WaitlistEntryStateTimes.Unmarshal(m, b)
+}
+func (m *WaitlistEntryStateTimes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_WaitlistEntryStateTimes.Marshal(b, m, deterministic)
+}
+func (m *WaitlistEntryStateTimes) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_WaitlistEntryStateTimes.Merge(m, src)
+}
+func (m *WaitlistEntryStateTimes) XXX_Size() int {
+ return xxx_messageInfo_WaitlistEntryStateTimes.Size(m)
+}
+func (m *WaitlistEntryStateTimes) XXX_DiscardUnknown() {
+ xxx_messageInfo_WaitlistEntryStateTimes.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_WaitlistEntryStateTimes proto.InternalMessageInfo
+
+func (m *WaitlistEntryStateTimes) GetCreatedTimeSeconds() int64 {
+ if m != nil {
+ return m.CreatedTimeSeconds
+ }
+ return 0
+}
+
+func (m *WaitlistEntryStateTimes) GetCanceledTimeSeconds() int64 {
+ if m != nil {
+ return m.CanceledTimeSeconds
+ }
+ return 0
+}
+
+func (m *WaitlistEntryStateTimes) GetServiceReadiedTimeSeconds() int64 {
+ if m != nil {
+ return m.ServiceReadiedTimeSeconds
+ }
+ return 0
+}
+
+func (m *WaitlistEntryStateTimes) GetCheckedInTimeSeconds() int64 {
+ if m != nil {
+ return m.CheckedInTimeSeconds
+ }
+ return 0
+}
+
+func (m *WaitlistEntryStateTimes) GetSeatedTimeSeconds() int64 {
+ if m != nil {
+ return m.SeatedTimeSeconds
+ }
+ return 0
+}
+
+func (m *WaitlistEntryStateTimes) GetMarkedNoShowTimeSeconds() int64 {
+ if m != nil {
+ return m.MarkedNoShowTimeSeconds
+ }
+ return 0
+}
+
+// An entry in the waitlist.
+type WaitlistEntry struct {
+ // Required.
+ WaitlistEntryState WaitlistEntryState `protobuf:"varint,1,opt,name=waitlist_entry_state,json=waitlistEntryState,proto3,enum=ext.maps.booking.partner.v3.waitlist.WaitlistEntryState" json:"waitlist_entry_state,omitempty"`
+ // Required. The times at which the waitlist entry changed state.
+ WaitlistEntryStateTimes *WaitlistEntryStateTimes `protobuf:"bytes,2,opt,name=waitlist_entry_state_times,json=waitlistEntryStateTimes,proto3" json:"waitlist_entry_state_times,omitempty"`
+ // Required. Contains fields measuring how long (in time or # of people) until
+ // the user is ready to leave the waitlist and be seated.
+ WaitEstimate *WaitEstimate `protobuf:"bytes,3,opt,name=wait_estimate,json=waitEstimate,proto3" json:"wait_estimate,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *WaitlistEntry) Reset() { *m = WaitlistEntry{} }
+func (m *WaitlistEntry) String() string { return proto.CompactTextString(m) }
+func (*WaitlistEntry) ProtoMessage() {}
+func (*WaitlistEntry) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c4272259c545fcea, []int{11}
+}
+
+func (m *WaitlistEntry) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_WaitlistEntry.Unmarshal(m, b)
+}
+func (m *WaitlistEntry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_WaitlistEntry.Marshal(b, m, deterministic)
+}
+func (m *WaitlistEntry) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_WaitlistEntry.Merge(m, src)
+}
+func (m *WaitlistEntry) XXX_Size() int {
+ return xxx_messageInfo_WaitlistEntry.Size(m)
+}
+func (m *WaitlistEntry) XXX_DiscardUnknown() {
+ xxx_messageInfo_WaitlistEntry.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_WaitlistEntry proto.InternalMessageInfo
+
+func (m *WaitlistEntry) GetWaitlistEntryState() WaitlistEntryState {
+ if m != nil {
+ return m.WaitlistEntryState
+ }
+ return WaitlistEntryState_WAITLIST_ENTRY_STATE_UNSPECIFIED
+}
+
+func (m *WaitlistEntry) GetWaitlistEntryStateTimes() *WaitlistEntryStateTimes {
+ if m != nil {
+ return m.WaitlistEntryStateTimes
+ }
+ return nil
+}
+
+func (m *WaitlistEntry) GetWaitEstimate() *WaitEstimate {
+ if m != nil {
+ return m.WaitEstimate
+ }
+ return nil
+}
+
+// Status data that conveys why creating a waitlist entry fails.
+// If there is a business logic error that is not captured here, please
+// reach out to the Reserve with Google team to add it to this list. Other
+// errors should be returned using standard HTTP error codes.
+type WaitlistBusinessLogicFailure struct {
+ // Required. The reason why the booking failed.
+ Cause WaitlistBusinessLogicFailure_Cause `protobuf:"varint,1,opt,name=cause,proto3,enum=ext.maps.booking.partner.v3.waitlist.WaitlistBusinessLogicFailure_Cause" json:"cause,omitempty"`
+ // This optional field is used for the partner to include additional
+ // information for debugging purposes only.
+ Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *WaitlistBusinessLogicFailure) Reset() { *m = WaitlistBusinessLogicFailure{} }
+func (m *WaitlistBusinessLogicFailure) String() string { return proto.CompactTextString(m) }
+func (*WaitlistBusinessLogicFailure) ProtoMessage() {}
+func (*WaitlistBusinessLogicFailure) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c4272259c545fcea, []int{12}
+}
+
+func (m *WaitlistBusinessLogicFailure) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_WaitlistBusinessLogicFailure.Unmarshal(m, b)
+}
+func (m *WaitlistBusinessLogicFailure) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_WaitlistBusinessLogicFailure.Marshal(b, m, deterministic)
+}
+func (m *WaitlistBusinessLogicFailure) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_WaitlistBusinessLogicFailure.Merge(m, src)
+}
+func (m *WaitlistBusinessLogicFailure) XXX_Size() int {
+ return xxx_messageInfo_WaitlistBusinessLogicFailure.Size(m)
+}
+func (m *WaitlistBusinessLogicFailure) XXX_DiscardUnknown() {
+ xxx_messageInfo_WaitlistBusinessLogicFailure.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_WaitlistBusinessLogicFailure proto.InternalMessageInfo
+
+func (m *WaitlistBusinessLogicFailure) GetCause() WaitlistBusinessLogicFailure_Cause {
+ if m != nil {
+ return m.Cause
+ }
+ return WaitlistBusinessLogicFailure_CAUSE_UNSPECIFIED
+}
+
+func (m *WaitlistBusinessLogicFailure) GetDescription() string {
+ if m != nil {
+ return m.Description
+ }
+ return ""
+}
+
+// Personal information about the person making a booking
+type UserInformation struct {
+ // Unique ID of the user to the partner, chosen by Reserve with Google.
+ // (required)
+ UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
+ // Given name of the user (maximum 40 characters) (required)
+ GivenName string `protobuf:"bytes,2,opt,name=given_name,json=givenName,proto3" json:"given_name,omitempty"`
+ // Family name of the user (maximum 40 characters) (required)
+ FamilyName string `protobuf:"bytes,3,opt,name=family_name,json=familyName,proto3" json:"family_name,omitempty"`
+ // Address of the user (optional)
+ Address *PostalAddress `protobuf:"bytes,4,opt,name=address,proto3" json:"address,omitempty"`
+ // Phone number of the user (required)
+ Telephone string `protobuf:"bytes,5,opt,name=telephone,proto3" json:"telephone,omitempty"`
+ // Email address of the user (required)
+ Email string `protobuf:"bytes,6,opt,name=email,proto3" json:"email,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *UserInformation) Reset() { *m = UserInformation{} }
+func (m *UserInformation) String() string { return proto.CompactTextString(m) }
+func (*UserInformation) ProtoMessage() {}
+func (*UserInformation) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c4272259c545fcea, []int{13}
+}
+
+func (m *UserInformation) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_UserInformation.Unmarshal(m, b)
+}
+func (m *UserInformation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_UserInformation.Marshal(b, m, deterministic)
+}
+func (m *UserInformation) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_UserInformation.Merge(m, src)
+}
+func (m *UserInformation) XXX_Size() int {
+ return xxx_messageInfo_UserInformation.Size(m)
+}
+func (m *UserInformation) XXX_DiscardUnknown() {
+ xxx_messageInfo_UserInformation.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_UserInformation proto.InternalMessageInfo
+
+func (m *UserInformation) GetUserId() string {
+ if m != nil {
+ return m.UserId
+ }
+ return ""
+}
+
+func (m *UserInformation) GetGivenName() string {
+ if m != nil {
+ return m.GivenName
+ }
+ return ""
+}
+
+func (m *UserInformation) GetFamilyName() string {
+ if m != nil {
+ return m.FamilyName
+ }
+ return ""
+}
+
+func (m *UserInformation) GetAddress() *PostalAddress {
+ if m != nil {
+ return m.Address
+ }
+ return nil
+}
+
+func (m *UserInformation) GetTelephone() string {
+ if m != nil {
+ return m.Telephone
+ }
+ return ""
+}
+
+func (m *UserInformation) GetEmail() string {
+ if m != nil {
+ return m.Email
+ }
+ return ""
+}
+
+// The postal address for a merchant.
+type PostalAddress struct {
+ // The country, e.g. "USA". (required)
+ Country string `protobuf:"bytes,1,opt,name=country,proto3" json:"country,omitempty"`
+ // The locality/city, e.g. "Mountain View". (required)
+ Locality string `protobuf:"bytes,2,opt,name=locality,proto3" json:"locality,omitempty"`
+ // The region/state/province, e.g. "CA". (required)
+ Region string `protobuf:"bytes,3,opt,name=region,proto3" json:"region,omitempty"`
+ // The postal code, e.g. "94043". (required)
+ PostalCode string `protobuf:"bytes,4,opt,name=postal_code,json=postalCode,proto3" json:"postal_code,omitempty"`
+ // The street address, e.g. "1600 Amphitheatre Pkwy". (required)
+ StreetAddress string `protobuf:"bytes,5,opt,name=street_address,json=streetAddress,proto3" json:"street_address,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *PostalAddress) Reset() { *m = PostalAddress{} }
+func (m *PostalAddress) String() string { return proto.CompactTextString(m) }
+func (*PostalAddress) ProtoMessage() {}
+func (*PostalAddress) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c4272259c545fcea, []int{14}
+}
+
+func (m *PostalAddress) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_PostalAddress.Unmarshal(m, b)
+}
+func (m *PostalAddress) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_PostalAddress.Marshal(b, m, deterministic)
+}
+func (m *PostalAddress) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_PostalAddress.Merge(m, src)
+}
+func (m *PostalAddress) XXX_Size() int {
+ return xxx_messageInfo_PostalAddress.Size(m)
+}
+func (m *PostalAddress) XXX_DiscardUnknown() {
+ xxx_messageInfo_PostalAddress.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_PostalAddress proto.InternalMessageInfo
+
+func (m *PostalAddress) GetCountry() string {
+ if m != nil {
+ return m.Country
+ }
+ return ""
+}
+
+func (m *PostalAddress) GetLocality() string {
+ if m != nil {
+ return m.Locality
+ }
+ return ""
+}
+
+func (m *PostalAddress) GetRegion() string {
+ if m != nil {
+ return m.Region
+ }
+ return ""
+}
+
+func (m *PostalAddress) GetPostalCode() string {
+ if m != nil {
+ return m.PostalCode
+ }
+ return ""
+}
+
+func (m *PostalAddress) GetStreetAddress() string {
+ if m != nil {
+ return m.StreetAddress
+ }
+ return ""
+}
+
+func init() {
+ proto.RegisterType((*BatchGetWaitEstimatesRequest)(nil), "ext.maps.booking.partner.v3.waitlist.BatchGetWaitEstimatesRequest")
+ proto.RegisterType((*BatchGetWaitEstimatesResponse)(nil), "ext.maps.booking.partner.v3.waitlist.BatchGetWaitEstimatesResponse")
+ proto.RegisterType((*EstimatedSeatTimeRange)(nil), "ext.maps.booking.partner.v3.waitlist.EstimatedSeatTimeRange")
+ proto.RegisterType((*WaitLength)(nil), "ext.maps.booking.partner.v3.waitlist.WaitLength")
+ proto.RegisterType((*WaitEstimate)(nil), "ext.maps.booking.partner.v3.waitlist.WaitEstimate")
+ proto.RegisterType((*CreateWaitlistEntryRequest)(nil), "ext.maps.booking.partner.v3.waitlist.CreateWaitlistEntryRequest")
+ proto.RegisterType((*CreateWaitlistEntryResponse)(nil), "ext.maps.booking.partner.v3.waitlist.CreateWaitlistEntryResponse")
+ proto.RegisterType((*GetWaitlistEntryRequest)(nil), "ext.maps.booking.partner.v3.waitlist.GetWaitlistEntryRequest")
+ proto.RegisterType((*GetWaitlistEntryResponse)(nil), "ext.maps.booking.partner.v3.waitlist.GetWaitlistEntryResponse")
+ proto.RegisterType((*DeleteWaitlistEntryRequest)(nil), "ext.maps.booking.partner.v3.waitlist.DeleteWaitlistEntryRequest")
+ proto.RegisterType((*WaitlistEntryStateTimes)(nil), "ext.maps.booking.partner.v3.waitlist.WaitlistEntryStateTimes")
+ proto.RegisterType((*WaitlistEntry)(nil), "ext.maps.booking.partner.v3.waitlist.WaitlistEntry")
+ proto.RegisterType((*WaitlistBusinessLogicFailure)(nil), "ext.maps.booking.partner.v3.waitlist.WaitlistBusinessLogicFailure")
+ proto.RegisterType((*UserInformation)(nil), "ext.maps.booking.partner.v3.waitlist.UserInformation")
+ proto.RegisterType((*PostalAddress)(nil), "ext.maps.booking.partner.v3.waitlist.PostalAddress")
+ proto.RegisterEnum("ext.maps.booking.partner.v3.waitlist.WaitlistStatus", WaitlistStatus_name, WaitlistStatus_value)
+ proto.RegisterEnum("ext.maps.booking.partner.v3.waitlist.WaitlistEntryState", WaitlistEntryState_name, WaitlistEntryState_value)
+ proto.RegisterEnum("ext.maps.booking.partner.v3.waitlist.WaitlistBusinessLogicFailure_Cause", WaitlistBusinessLogicFailure_Cause_name, WaitlistBusinessLogicFailure_Cause_value)
+}
+
+func init() { proto.RegisterFile("waitlist.proto", fileDescriptor_c4272259c545fcea) }
+
+var fileDescriptor_c4272259c545fcea = []byte{
+ // 1295 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x57, 0xcd, 0x6e, 0xdb, 0x46,
+ 0x10, 0x2e, 0x25, 0x4b, 0x8e, 0x47, 0xfe, 0xa1, 0xd6, 0x4e, 0xa4, 0xd8, 0x0e, 0x62, 0xb0, 0x29,
+ 0x10, 0xa4, 0xa8, 0x10, 0x38, 0x0d, 0xd0, 0x43, 0x8a, 0x42, 0x96, 0x98, 0x98, 0xa8, 0x2c, 0xb9,
+ 0xa4, 0x1c, 0x27, 0x01, 0x9a, 0xed, 0x86, 0x9c, 0x58, 0x6c, 0x28, 0x52, 0xe5, 0xae, 0xac, 0x3a,
+ 0x40, 0x81, 0x5e, 0x7b, 0xec, 0x3b, 0xb4, 0x8f, 0xd0, 0x43, 0x9f, 0xa0, 0xd7, 0x5e, 0x8a, 0x3e,
+ 0x41, 0x8f, 0x7d, 0x87, 0x82, 0xbb, 0xa4, 0x2c, 0xc9, 0x4e, 0x60, 0x27, 0xe8, 0x8d, 0x3b, 0x3f,
+ 0xdf, 0xcc, 0x37, 0x3b, 0x3b, 0x23, 0xc1, 0xf2, 0x88, 0xf9, 0x22, 0xf0, 0xb9, 0xa8, 0x0d, 0xe2,
+ 0x48, 0x44, 0xe4, 0x16, 0x7e, 0x2f, 0x6a, 0x7d, 0x36, 0xe0, 0xb5, 0x17, 0x51, 0xf4, 0xca, 0x0f,
+ 0x8f, 0x6a, 0x03, 0x16, 0x8b, 0x10, 0xe3, 0xda, 0xf1, 0xbd, 0x5a, 0x66, 0x6b, 0xfc, 0x00, 0x9b,
+ 0x3b, 0x4c, 0xb8, 0xbd, 0x47, 0x28, 0x0e, 0x99, 0x2f, 0x4c, 0x2e, 0xfc, 0x3e, 0x13, 0xc8, 0x6d,
+ 0xfc, 0x6e, 0x88, 0x5c, 0x90, 0x9b, 0x50, 0xea, 0x63, 0xec, 0xf6, 0x58, 0x28, 0xa8, 0xef, 0x55,
+ 0xb5, 0x2d, 0xed, 0xf6, 0x82, 0x0d, 0x99, 0xc8, 0xf2, 0xc8, 0x0d, 0x00, 0x8e, 0xf1, 0xb1, 0xef,
+ 0x62, 0xa2, 0xcf, 0x49, 0xfd, 0x42, 0x2a, 0x51, 0xea, 0x24, 0xec, 0x09, 0xe5, 0xfe, 0x6b, 0xac,
+ 0xe6, 0xb7, 0xf2, 0xb7, 0x0b, 0xf6, 0x82, 0x94, 0x38, 0xfe, 0x6b, 0x34, 0xfe, 0xd6, 0xe0, 0xc6,
+ 0x1b, 0xe2, 0xf3, 0x41, 0x14, 0x72, 0x24, 0x5f, 0xc3, 0x4a, 0x96, 0x2c, 0xe5, 0x82, 0x89, 0x21,
+ 0x97, 0x49, 0x2c, 0x6f, 0x7f, 0x5a, 0xbb, 0x08, 0xc1, 0xda, 0x61, 0xfa, 0xe1, 0x48, 0x5f, 0x7b,
+ 0x5c, 0x25, 0x75, 0x26, 0x87, 0xb0, 0x94, 0x48, 0x28, 0xa6, 0x81, 0xab, 0xb9, 0xad, 0xfc, 0xed,
+ 0xd2, 0xf6, 0xf6, 0xc5, 0xc1, 0xb3, 0x94, 0xed, 0xc5, 0xd1, 0xc4, 0xc9, 0x78, 0x0e, 0xd7, 0xb2,
+ 0x6f, 0xcf, 0x41, 0x26, 0xba, 0x7e, 0x1f, 0x6d, 0x16, 0x1e, 0x21, 0xf9, 0x10, 0x96, 0xb8, 0x60,
+ 0xb1, 0xa0, 0x1c, 0xdd, 0x28, 0xf4, 0x14, 0x9f, 0xbc, 0xbd, 0x28, 0x85, 0x8e, 0x92, 0x25, 0x75,
+ 0xc7, 0xd0, 0x1b, 0x9b, 0xe4, 0xa4, 0x09, 0x60, 0xe8, 0xa5, 0x06, 0xc6, 0x6f, 0x1a, 0x40, 0x12,
+ 0xbe, 0x85, 0xe1, 0x91, 0xe8, 0x91, 0x1a, 0xac, 0x26, 0x09, 0xfa, 0xc8, 0x29, 0xeb, 0x21, 0xf3,
+ 0xa8, 0x1b, 0x0d, 0x43, 0x21, 0xa1, 0x0b, 0x76, 0x39, 0x55, 0xd5, 0x13, 0x4d, 0x23, 0x51, 0x90,
+ 0x11, 0x5c, 0xcf, 0x28, 0x27, 0x51, 0x98, 0xa0, 0xc2, 0xef, 0x23, 0x8d, 0x93, 0x0c, 0x65, 0xb4,
+ 0xd2, 0xf6, 0x83, 0x8b, 0xd5, 0xe0, 0x7c, 0x96, 0xf6, 0x35, 0x3c, 0x57, 0x6e, 0xfc, 0xa8, 0xc1,
+ 0xe2, 0x64, 0xd9, 0x66, 0x3a, 0x44, 0x25, 0x7c, 0xda, 0x21, 0xe4, 0x2b, 0x28, 0xc9, 0x0b, 0x0a,
+ 0x24, 0xcf, 0x34, 0xb5, 0xbb, 0x17, 0xbf, 0x1e, 0x55, 0x1f, 0x1b, 0x46, 0xe3, 0x6f, 0xe3, 0xf7,
+ 0x1c, 0xac, 0x37, 0x62, 0x64, 0x02, 0xb3, 0xe6, 0x30, 0x43, 0x11, 0x9f, 0xfc, 0x5f, 0x2d, 0x3f,
+ 0x43, 0xe8, 0x1b, 0xd0, 0x87, 0x1c, 0x63, 0xea, 0x87, 0x2f, 0xa3, 0xb8, 0xcf, 0x84, 0x1f, 0x85,
+ 0xd5, 0x39, 0xc9, 0xea, 0xfe, 0xc5, 0x58, 0x1d, 0x70, 0x8c, 0xad, 0x53, 0x67, 0x7b, 0x65, 0x38,
+ 0x2d, 0x20, 0x9f, 0x00, 0x61, 0x9e, 0xe7, 0x27, 0xdf, 0x2c, 0xa0, 0xb1, 0xa2, 0x55, 0x2d, 0xc8,
+ 0x3c, 0xcb, 0xa7, 0x9a, 0x8c, 0xef, 0xc7, 0x50, 0xf6, 0x3d, 0xec, 0x0f, 0x22, 0x81, 0xa1, 0x7b,
+ 0x42, 0x45, 0xf4, 0x0a, 0xc3, 0x6a, 0x51, 0x5a, 0xeb, 0x13, 0x8a, 0x6e, 0x22, 0x37, 0xfe, 0xd2,
+ 0x60, 0xe3, 0xdc, 0xda, 0xa5, 0xcf, 0xf5, 0x0e, 0x94, 0xc7, 0xcf, 0x15, 0x13, 0xcd, 0x69, 0x09,
+ 0xc7, 0xef, 0x58, 0x7a, 0x58, 0x1e, 0xf9, 0x49, 0x83, 0x9b, 0x63, 0xe3, 0x17, 0x43, 0xee, 0x87,
+ 0xc8, 0x39, 0x0d, 0xa2, 0x23, 0xdf, 0xa5, 0x2f, 0x99, 0x1f, 0x0c, 0xe3, 0xac, 0x15, 0x77, 0x2e,
+ 0xf7, 0xd6, 0x77, 0x52, 0xac, 0x56, 0x02, 0xf5, 0x50, 0x21, 0xd9, 0x9b, 0xa3, 0xb7, 0x68, 0x0d,
+ 0x13, 0x2a, 0xe9, 0x08, 0x3a, 0xd3, 0x0f, 0x97, 0xa0, 0x64, 0x1c, 0x43, 0xf5, 0x2c, 0x4c, 0x5a,
+ 0x9a, 0x67, 0xa7, 0x23, 0x5a, 0xe1, 0x48, 0x90, 0xd2, 0xf6, 0xbd, 0xcb, 0x91, 0x53, 0xa0, 0x4b,
+ 0x53, 0x91, 0x8d, 0x5d, 0x58, 0x6f, 0x62, 0x80, 0x6f, 0xe8, 0xe8, 0xcb, 0x30, 0xf8, 0x27, 0x07,
+ 0x95, 0x29, 0x90, 0x64, 0x50, 0x62, 0xf2, 0x7e, 0x39, 0xb9, 0x0b, 0x6b, 0xae, 0xbc, 0x7b, 0x4f,
+ 0x4d, 0x8b, 0xe9, 0x01, 0x46, 0x52, 0x5d, 0x62, 0x9b, 0x8d, 0xb1, 0x6d, 0xb8, 0xea, 0xb2, 0xd0,
+ 0xc5, 0x60, 0xd6, 0x45, 0x0d, 0xb4, 0xd5, 0x4c, 0x39, 0xe9, 0xf3, 0x05, 0x6c, 0x66, 0xcf, 0x2b,
+ 0x46, 0xe6, 0xf9, 0xb3, 0xae, 0x79, 0xe9, 0x7a, 0x3d, 0xb5, 0xb1, 0x95, 0xc9, 0x24, 0xc0, 0x7d,
+ 0xa8, 0xb8, 0x3d, 0x74, 0x5f, 0xa1, 0x47, 0xfd, 0x70, 0xda, 0x77, 0x4e, 0xfa, 0xae, 0xa5, 0x6a,
+ 0x2b, 0x9c, 0x74, 0xab, 0xc1, 0x2a, 0x3f, 0x87, 0x5c, 0x41, 0xba, 0x94, 0xf9, 0x19, 0x6e, 0x0f,
+ 0x60, 0xa3, 0xcf, 0xe2, 0x24, 0x4a, 0x18, 0x51, 0xde, 0x8b, 0x46, 0xd3, 0x7e, 0x45, 0xe9, 0x57,
+ 0x51, 0x26, 0xed, 0xc8, 0xe9, 0x45, 0xa3, 0x09, 0x6f, 0xe3, 0xcf, 0x1c, 0x2c, 0x4d, 0xd5, 0x99,
+ 0x7c, 0x0b, 0x6b, 0x33, 0xb7, 0x94, 0xec, 0x3b, 0x4c, 0xd7, 0xdd, 0x67, 0xef, 0xd0, 0x25, 0xf2,
+ 0xea, 0x6c, 0x32, 0x3a, 0x23, 0x23, 0xaf, 0x61, 0xfd, 0xbc, 0x58, 0x92, 0x01, 0x4f, 0x1f, 0xdd,
+ 0xe7, 0xef, 0x1a, 0x51, 0x36, 0x8b, 0x5d, 0x19, 0xbd, 0xa1, 0x8b, 0xce, 0xac, 0xdc, 0xbc, 0x0c,
+ 0xf7, 0xfe, 0x2b, 0xf7, 0x8f, 0x1c, 0x6c, 0xbe, 0x6d, 0x04, 0x90, 0xe7, 0x50, 0x70, 0xd9, 0x90,
+ 0x67, 0x25, 0xdd, 0x7d, 0xff, 0xa9, 0x52, 0x6b, 0x24, 0x78, 0xb6, 0x82, 0x25, 0x5b, 0x50, 0xf2,
+ 0x90, 0xbb, 0xb1, 0x3f, 0x90, 0x53, 0x5d, 0x6d, 0x86, 0x49, 0x91, 0xf1, 0x8b, 0x06, 0x05, 0xe9,
+ 0x42, 0xae, 0x42, 0xb9, 0x51, 0x3f, 0x70, 0x4c, 0x7a, 0xd0, 0x76, 0xf6, 0xcd, 0x86, 0xf5, 0xd0,
+ 0x32, 0x9b, 0xfa, 0x07, 0x64, 0x03, 0x2a, 0xe6, 0x13, 0xcb, 0xe9, 0x5a, 0xed, 0x47, 0xf4, 0xb0,
+ 0x6e, 0x75, 0x5b, 0x96, 0xd3, 0xa5, 0x66, 0xbb, 0x6b, 0x3f, 0xd5, 0x35, 0x52, 0x85, 0xb5, 0x1d,
+ 0xb3, 0xd5, 0x39, 0xa4, 0x7b, 0x56, 0x9b, 0xee, 0xd7, 0xed, 0xee, 0x53, 0xea, 0x58, 0xcf, 0x4c,
+ 0x3d, 0x97, 0x68, 0xea, 0x3b, 0x9d, 0xc7, 0x26, 0xdd, 0xab, 0x3f, 0x99, 0xd4, 0xe4, 0xc9, 0x2a,
+ 0xac, 0xec, 0x99, 0x76, 0x63, 0xb7, 0xde, 0xee, 0xd2, 0x46, 0xab, 0xe3, 0x98, 0x4d, 0x7d, 0x8e,
+ 0x94, 0x60, 0xbe, 0xdd, 0x91, 0xf8, 0x7a, 0x81, 0x94, 0x61, 0x69, 0x1c, 0xe9, 0xe1, 0x41, 0xab,
+ 0xa5, 0x17, 0x8d, 0x7f, 0x35, 0x58, 0x99, 0x59, 0x33, 0xa4, 0x02, 0xf3, 0x6a, 0x6f, 0x65, 0xa3,
+ 0xa3, 0x28, 0xf7, 0x8e, 0xdc, 0x77, 0x47, 0xfe, 0x31, 0x86, 0x34, 0x64, 0x7d, 0xcc, 0xd6, 0xa1,
+ 0x94, 0xb4, 0x59, 0x1f, 0x93, 0x75, 0xfa, 0x92, 0xf5, 0xfd, 0xe0, 0x44, 0xe9, 0xf3, 0x6a, 0x9d,
+ 0x2a, 0x91, 0x34, 0xd8, 0x83, 0x79, 0xe6, 0x79, 0x31, 0x72, 0x9e, 0xee, 0xc1, 0x0b, 0x0e, 0xc4,
+ 0xfd, 0x88, 0x0b, 0x16, 0xd4, 0x95, 0xab, 0x9d, 0x61, 0x90, 0x4d, 0x58, 0x10, 0x18, 0xe0, 0xa0,
+ 0x17, 0x85, 0x98, 0x2e, 0xbd, 0x53, 0x01, 0x59, 0x83, 0x02, 0xf6, 0x99, 0x1f, 0xa4, 0x0b, 0x4e,
+ 0x1d, 0x8c, 0x5f, 0x35, 0x58, 0x9a, 0x82, 0x23, 0x55, 0x98, 0x97, 0xbf, 0xa0, 0xd2, 0x29, 0xbd,
+ 0x60, 0x67, 0x47, 0xb2, 0x0e, 0x57, 0x82, 0xc8, 0x65, 0x81, 0x2f, 0x4e, 0x52, 0xb2, 0xe3, 0x33,
+ 0xb9, 0x06, 0xc5, 0x18, 0x8f, 0x92, 0xbb, 0x57, 0x34, 0xd3, 0x53, 0x52, 0x83, 0x81, 0x84, 0xa7,
+ 0x6e, 0xe4, 0xa1, 0xa4, 0xb9, 0x60, 0x83, 0x12, 0x35, 0x22, 0x0f, 0xc9, 0x47, 0xb0, 0xcc, 0x45,
+ 0x8c, 0x28, 0x68, 0x56, 0x0a, 0x95, 0xf9, 0x92, 0x92, 0xa6, 0x59, 0xdd, 0x61, 0xb0, 0x3c, 0xfd,
+ 0x7b, 0x96, 0xdc, 0x84, 0x8d, 0xf1, 0xe5, 0x39, 0xdd, 0x7a, 0xf7, 0xc0, 0x99, 0x69, 0xa8, 0x2b,
+ 0x30, 0xd7, 0xd9, 0x37, 0xdb, 0xba, 0x46, 0x08, 0x2c, 0xab, 0x06, 0xa0, 0xd9, 0xdd, 0xe7, 0x88,
+ 0x0e, 0x8b, 0xa9, 0xac, 0xd3, 0xdd, 0x35, 0x6d, 0x3d, 0x7f, 0xe7, 0x67, 0x0d, 0xc8, 0xd9, 0x27,
+ 0x4d, 0x6e, 0xc1, 0xd6, 0x74, 0x3b, 0xca, 0x68, 0xb3, 0xdd, 0x5b, 0x82, 0xf9, 0xc4, 0xca, 0x6a,
+ 0x3f, 0xd2, 0x35, 0xb2, 0x08, 0x57, 0x1a, 0xf5, 0x76, 0xc3, 0x6c, 0x99, 0x4d, 0x3d, 0x97, 0x74,
+ 0x99, 0x63, 0xda, 0x8f, 0xad, 0x86, 0x49, 0x6d, 0xb3, 0xde, 0x7c, 0xaa, 0xe7, 0xc9, 0x32, 0x40,
+ 0x63, 0xd7, 0x6c, 0x7c, 0x69, 0x36, 0xa9, 0xd5, 0xd6, 0xe7, 0x08, 0x40, 0xd1, 0x31, 0xeb, 0x5d,
+ 0xb3, 0xa9, 0x17, 0xd2, 0x0e, 0x75, 0x76, 0x3b, 0x87, 0x7a, 0xf1, 0x45, 0x51, 0xfe, 0xa3, 0xb9,
+ 0xf7, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1b, 0x7a, 0x92, 0x6d, 0xe3, 0x0c, 0x00, 0x00,
+}