vendor updates

This commit is contained in:
Serguei Bezverkhi
2018-03-06 17:33:18 -05:00
parent 4b3ebc171b
commit e9033989a0
5854 changed files with 248382 additions and 119809 deletions

1
vendor/google.golang.org/genproto/.github/CODEOWNERS generated vendored Normal file
View File

@ -0,0 +1 @@
* @pongad @jba

View File

@ -12,7 +12,7 @@ var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// Defines the HTTP configuration for a service. It contains a list of
// Defines the HTTP configuration for an API service. It contains a list of
// [HttpRule][google.api.HttpRule], each specifying the mapping of an RPC method
// to one or more HTTP REST API methods.
type Http struct {
@ -20,6 +20,13 @@ type Http struct {
//
// **NOTE:** All service configuration rules follow "last one wins" order.
Rules []*HttpRule `protobuf:"bytes,1,rep,name=rules" json:"rules,omitempty"`
// When set to true, URL path parmeters will be fully URI-decoded except in
// cases of single segment matches in reserved expansion, where "%2F" will be
// left encoded.
//
// The default behavior is to not decode RFC 6570 reserved characters in multi
// segment matches.
FullyDecodeReservedExpansion bool `protobuf:"varint,2,opt,name=fully_decode_reserved_expansion,json=fullyDecodeReservedExpansion" json:"fully_decode_reserved_expansion,omitempty"`
}
func (m *Http) Reset() { *m = Http{} }
@ -34,12 +41,19 @@ func (m *Http) GetRules() []*HttpRule {
return nil
}
func (m *Http) GetFullyDecodeReservedExpansion() bool {
if m != nil {
return m.FullyDecodeReservedExpansion
}
return false
}
// `HttpRule` defines the mapping of an RPC method to one or more HTTP
// REST APIs. The mapping determines what portions of the request
// message are populated from the path, query parameters, or body of
// the HTTP request. The mapping is typically specified as an
// `google.api.http` annotation, see "google/api/annotations.proto"
// for details.
// REST API methods. The mapping specifies how different portions of the RPC
// request message are mapped to URL path, URL query parameters, and
// HTTP request body. The mapping is typically specified as an
// `google.api.http` annotation on the RPC method,
// see "google/api/annotations.proto" for details.
//
// The mapping consists of a field specifying the path template and
// method kind. The path template can refer to fields in the request
@ -87,6 +101,11 @@ func (m *Http) GetRules() []*HttpRule {
// parameters. Assume the following definition of the request message:
//
//
// service Messaging {
// rpc GetMessage(GetMessageRequest) returns (Message) {
// option (google.api.http).get = "/v1/messages/{message_id}";
// }
// }
// message GetMessageRequest {
// message SubMessage {
// string subfield = 1;
@ -199,7 +218,7 @@ func (m *Http) GetRules() []*HttpRule {
// to the request message are as follows:
//
// 1. The `body` field specifies either `*` or a field path, or is
// omitted. If omitted, it assumes there is no HTTP body.
// omitted. If omitted, it indicates there is no HTTP request body.
// 2. Leaf fields (recursive expansion of nested messages in the
// request) can be classified into three types:
// (a) Matched in the URL template.
@ -218,28 +237,34 @@ func (m *Http) GetRules() []*HttpRule {
// FieldPath = IDENT { "." IDENT } ;
// Verb = ":" LITERAL ;
//
// The syntax `*` matches a single path segment. It follows the semantics of
// [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String
// Expansion.
// The syntax `*` matches a single path segment. The syntax `**` matches zero
// or more path segments, which must be the last part of the path except the
// `Verb`. The syntax `LITERAL` matches literal text in the path.
//
// The syntax `**` matches zero or more path segments. It follows the semantics
// of [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.3 Reserved
// Expansion. NOTE: it must be the last segment in the path except the Verb.
//
// The syntax `LITERAL` matches literal text in the URL path.
//
// The syntax `Variable` matches the entire path as specified by its template;
// this nested template must not contain further variables. If a variable
// The syntax `Variable` matches part of the URL path as specified by its
// template. A variable template must not contain other variables. If a variable
// matches a single path segment, its template may be omitted, e.g. `{var}`
// is equivalent to `{var=*}`.
//
// If a variable contains exactly one path segment, such as `"{var}"` or
// `"{var=*}"`, when such a variable is expanded into a URL path, all characters
// except `[-_.~0-9a-zA-Z]` are percent-encoded. Such variables show up in the
// Discovery Document as `{var}`.
//
// If a variable contains one or more path segments, such as `"{var=foo/*}"`
// or `"{var=**}"`, when such a variable is expanded into a URL path, all
// characters except `[-_.~/0-9a-zA-Z]` are percent-encoded. Such variables
// show up in the Discovery Document as `{+var}`.
//
// NOTE: While the single segment variable matches the semantics of
// [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2
// Simple String Expansion, the multi segment variable **does not** match
// RFC 6570 Reserved Expansion. The reason is that the Reserved Expansion
// does not expand special characters like `?` and `#`, which would lead
// to invalid URLs.
//
// NOTE: the field paths in variables and in the `body` must not refer to
// repeated fields or map fields.
//
// Use CustomHttpPattern to specify any HTTP method that is not included in the
// `pattern` field, such as HEAD, or "*" to leave the HTTP method unspecified for
// a given URL path rule. The wild-card rule is useful for services that provide
// content to Web (HTML) clients.
type HttpRule struct {
// Selects methods to which this rule applies.
//
@ -539,28 +564,31 @@ func init() {
func init() { proto.RegisterFile("google/api/http.proto", fileDescriptor1) }
var fileDescriptor1 = []byte{
// 359 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x92, 0xcf, 0x6a, 0xe3, 0x30,
0x10, 0xc6, 0xd7, 0x89, 0xe3, 0x24, 0x13, 0x58, 0x58, 0x6d, 0x76, 0x11, 0x85, 0x42, 0xc8, 0x29,
0xf4, 0x60, 0x43, 0x7a, 0xe8, 0x21, 0xa7, 0xb8, 0x94, 0xa6, 0xb7, 0xe0, 0x63, 0x2f, 0x45, 0xb1,
0x85, 0xa2, 0xd6, 0x91, 0x84, 0x3d, 0x3e, 0xf4, 0x75, 0xfa, 0x0e, 0x7d, 0xb7, 0x1e, 0x8b, 0xfe,
0xa4, 0x09, 0x14, 0x7a, 0x9b, 0xef, 0x37, 0x9f, 0x34, 0xa3, 0x19, 0xc1, 0x3f, 0xa1, 0xb5, 0xa8,
0x79, 0xc6, 0x8c, 0xcc, 0xf6, 0x88, 0x26, 0x35, 0x8d, 0x46, 0x4d, 0xc0, 0xe3, 0x94, 0x19, 0x39,
0x5f, 0x42, 0xbc, 0x41, 0x34, 0xe4, 0x0a, 0x06, 0x4d, 0x57, 0xf3, 0x96, 0x46, 0xb3, 0xfe, 0x62,
0xb2, 0x9c, 0xa6, 0x27, 0x4f, 0x6a, 0x0d, 0x45, 0x57, 0xf3, 0xc2, 0x5b, 0xe6, 0xef, 0x3d, 0x18,
0x1d, 0x19, 0xb9, 0x80, 0x51, 0xcb, 0x6b, 0x5e, 0xa2, 0x6e, 0x68, 0x34, 0x8b, 0x16, 0xe3, 0xe2,
0x4b, 0x13, 0x02, 0x7d, 0xc1, 0x91, 0xf6, 0x2c, 0xde, 0xfc, 0x2a, 0xac, 0xb0, 0xcc, 0x74, 0x48,
0xfb, 0x47, 0x66, 0x3a, 0x24, 0x53, 0x88, 0x8d, 0x6e, 0x91, 0xc6, 0x01, 0x3a, 0x45, 0x28, 0x24,
0x15, 0xaf, 0x39, 0x72, 0x3a, 0x08, 0x3c, 0x68, 0xf2, 0x1f, 0x06, 0x86, 0x61, 0xb9, 0xa7, 0x49,
0x48, 0x78, 0x49, 0x6e, 0x20, 0x29, 0xbb, 0x16, 0xf5, 0x81, 0x8e, 0x66, 0xd1, 0x62, 0xb2, 0xbc,
0x3c, 0x7f, 0xc5, 0xad, 0xcb, 0xd8, 0xbe, 0xb7, 0x0c, 0x91, 0x37, 0xca, 0x5e, 0xe8, 0xed, 0x84,
0x40, 0xbc, 0xd3, 0xd5, 0x2b, 0x1d, 0xba, 0x07, 0xb8, 0x98, 0xdc, 0xc1, 0x5f, 0x56, 0x55, 0x12,
0xa5, 0x56, 0xac, 0x7e, 0xda, 0x49, 0x55, 0x49, 0x25, 0x5a, 0x3a, 0xf9, 0x61, 0x3e, 0xe4, 0x74,
0x20, 0x0f, 0xfe, 0x7c, 0x0c, 0x43, 0xe3, 0xeb, 0xcd, 0x57, 0xf0, 0xe7, 0x5b, 0x13, 0xb6, 0xf4,
0x8b, 0x54, 0x55, 0x98, 0x9d, 0x8b, 0x2d, 0x33, 0x0c, 0xf7, 0x7e, 0x70, 0x85, 0x8b, 0xf3, 0x67,
0xf8, 0x5d, 0xea, 0xc3, 0x59, 0xd9, 0x7c, 0xec, 0xae, 0xb1, 0x1b, 0xdd, 0x46, 0x8f, 0xeb, 0x90,
0x10, 0xba, 0x66, 0x4a, 0xa4, 0xba, 0x11, 0x99, 0xe0, 0xca, 0xed, 0x3b, 0xf3, 0x29, 0x66, 0x64,
0xeb, 0x7e, 0x02, 0x53, 0x4a, 0x23, 0xb3, 0x6d, 0xb6, 0xab, 0xb3, 0xf8, 0x23, 0x8a, 0xde, 0x7a,
0xf1, 0xfd, 0x7a, 0xfb, 0xb0, 0x4b, 0xdc, 0xb9, 0xeb, 0xcf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x68,
0x15, 0x60, 0x5b, 0x40, 0x02, 0x00, 0x00,
// 401 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x92, 0x41, 0xab, 0x13, 0x31,
0x10, 0xc7, 0xdd, 0x76, 0xdb, 0xd7, 0x4e, 0x41, 0x30, 0x3e, 0x25, 0x88, 0x62, 0xe9, 0xa9, 0x78,
0xd8, 0xc2, 0xf3, 0xe0, 0xe1, 0x9d, 0x5e, 0xb5, 0xf8, 0xbc, 0x95, 0x3d, 0x7a, 0x29, 0xe9, 0x66,
0x4c, 0xa3, 0x79, 0x49, 0xd8, 0xcc, 0x8a, 0xfd, 0x3a, 0x7e, 0x07, 0xbf, 0x9b, 0x47, 0x49, 0x36,
0xb5, 0x05, 0xc1, 0xdb, 0xfc, 0xff, 0xf3, 0xcb, 0xcc, 0x64, 0x18, 0x78, 0xa6, 0x9c, 0x53, 0x06,
0x57, 0xc2, 0xeb, 0xd5, 0x81, 0xc8, 0x57, 0xbe, 0x75, 0xe4, 0x18, 0xf4, 0x76, 0x25, 0xbc, 0x5e,
0x1c, 0xa1, 0xbc, 0x27, 0xf2, 0xec, 0x0d, 0x8c, 0xda, 0xce, 0x60, 0xe0, 0xc5, 0x7c, 0xb8, 0x9c,
0xdd, 0x5c, 0x57, 0x67, 0xa6, 0x8a, 0x40, 0xdd, 0x19, 0xac, 0x7b, 0x84, 0x6d, 0xe0, 0xf5, 0x97,
0xce, 0x98, 0xe3, 0x4e, 0x62, 0xe3, 0x24, 0xee, 0x5a, 0x0c, 0xd8, 0x7e, 0x47, 0xb9, 0xc3, 0x1f,
0x5e, 0xd8, 0xa0, 0x9d, 0xe5, 0x83, 0x79, 0xb1, 0x9c, 0xd4, 0x2f, 0x13, 0xf6, 0x21, 0x51, 0x75,
0x86, 0x36, 0x27, 0x66, 0xf1, 0x6b, 0x00, 0x93, 0x53, 0x69, 0xf6, 0x02, 0x26, 0x01, 0x0d, 0x36,
0xe4, 0x5a, 0x5e, 0xcc, 0x8b, 0xe5, 0xb4, 0xfe, 0xab, 0x19, 0x83, 0xa1, 0x42, 0x4a, 0x35, 0xa7,
0xf7, 0x8f, 0xea, 0x28, 0xa2, 0xe7, 0x3b, 0xe2, 0xc3, 0x93, 0xe7, 0x3b, 0x62, 0xd7, 0x50, 0x7a,
0x17, 0x88, 0x97, 0xd9, 0x4c, 0x8a, 0x71, 0x18, 0x4b, 0x34, 0x48, 0xc8, 0x47, 0xd9, 0xcf, 0x9a,
0x3d, 0x87, 0x91, 0x17, 0xd4, 0x1c, 0xf8, 0x38, 0x27, 0x7a, 0xc9, 0xde, 0xc1, 0xb8, 0xe9, 0x02,
0xb9, 0x07, 0x3e, 0x99, 0x17, 0xcb, 0xd9, 0xcd, 0xab, 0xcb, 0x65, 0xbc, 0x4f, 0x99, 0x38, 0xf7,
0x56, 0x10, 0x61, 0x6b, 0x63, 0xc1, 0x1e, 0x67, 0x0c, 0xca, 0xbd, 0x93, 0x47, 0x7e, 0x95, 0x3e,
0x90, 0x62, 0xb6, 0x81, 0xa7, 0x42, 0x4a, 0x4d, 0xda, 0x59, 0x61, 0x76, 0x7b, 0x6d, 0xa5, 0xb6,
0x2a, 0xf0, 0xd9, 0x7f, 0xd6, 0xcc, 0xce, 0x0f, 0xd6, 0x99, 0x5f, 0x4f, 0xe1, 0xca, 0xf7, 0xfd,
0x16, 0xb7, 0xf0, 0xe4, 0x9f, 0x21, 0x62, 0xeb, 0x6f, 0xda, 0xca, 0xbc, 0xbb, 0x14, 0x47, 0xcf,
0x0b, 0x3a, 0xf4, 0x8b, 0xab, 0x53, 0xbc, 0xfe, 0x0a, 0x8f, 0x1b, 0xf7, 0x70, 0xd1, 0x76, 0x3d,
0x4d, 0x65, 0xe2, 0x61, 0x6c, 0x8b, 0xcf, 0x77, 0x39, 0xa1, 0x9c, 0x11, 0x56, 0x55, 0xae, 0x55,
0x2b, 0x85, 0x36, 0x9d, 0xcd, 0xaa, 0x4f, 0x09, 0xaf, 0x43, 0x3a, 0x28, 0x61, 0xad, 0x23, 0x11,
0xc7, 0x0c, 0xb7, 0x17, 0xf1, 0xef, 0xa2, 0xf8, 0x39, 0x28, 0x3f, 0xde, 0x6d, 0x3f, 0xed, 0xc7,
0xe9, 0xdd, 0xdb, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x73, 0x2c, 0xed, 0xfb, 0x87, 0x02, 0x00,
0x00,
}

View File

@ -33,6 +33,7 @@ It has these top-level messages:
ListAppProfilesResponse
UpdateAppProfileRequest
DeleteAppProfileRequest
UpdateAppProfileMetadata
CreateTableRequest
CreateTableFromSnapshotRequest
DropRowRangeRequest
@ -794,6 +795,20 @@ func (m *DeleteAppProfileRequest) GetIgnoreWarnings() bool {
return false
}
// This is a private alpha release of Cloud Bigtable replication. This feature
// is not currently available to most Cloud Bigtable customers. This feature
// might be changed in backward-incompatible ways and is not recommended for
// production use. It is not subject to any SLA or deprecation policy.
//
// The metadata for the Operation returned by UpdateAppProfile.
type UpdateAppProfileMetadata struct {
}
func (m *UpdateAppProfileMetadata) Reset() { *m = UpdateAppProfileMetadata{} }
func (m *UpdateAppProfileMetadata) String() string { return proto.CompactTextString(m) }
func (*UpdateAppProfileMetadata) ProtoMessage() {}
func (*UpdateAppProfileMetadata) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} }
func init() {
proto.RegisterType((*CreateInstanceRequest)(nil), "google.bigtable.admin.v2.CreateInstanceRequest")
proto.RegisterType((*GetInstanceRequest)(nil), "google.bigtable.admin.v2.GetInstanceRequest")
@ -816,6 +831,7 @@ func init() {
proto.RegisterType((*ListAppProfilesResponse)(nil), "google.bigtable.admin.v2.ListAppProfilesResponse")
proto.RegisterType((*UpdateAppProfileRequest)(nil), "google.bigtable.admin.v2.UpdateAppProfileRequest")
proto.RegisterType((*DeleteAppProfileRequest)(nil), "google.bigtable.admin.v2.DeleteAppProfileRequest")
proto.RegisterType((*UpdateAppProfileMetadata)(nil), "google.bigtable.admin.v2.UpdateAppProfileMetadata")
}
// Reference imports to suppress errors if they are not otherwise used.
@ -1617,103 +1633,103 @@ func init() {
}
var fileDescriptor0 = []byte{
// 1559 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x59, 0xcd, 0x6f, 0xdc, 0x44,
0x1b, 0xd7, 0x6c, 0xfa, 0xf6, 0x6d, 0x9e, 0xcd, 0xd7, 0x3b, 0x6f, 0xf3, 0x21, 0xd3, 0x8f, 0xd4,
0xad, 0xda, 0x74, 0x1b, 0x6c, 0xb2, 0xa0, 0xb6, 0x4a, 0x48, 0x45, 0x9b, 0x96, 0x28, 0x28, 0x55,
0xa3, 0x6d, 0x29, 0x6a, 0x15, 0xb1, 0x9a, 0x64, 0x27, 0x8b, 0x89, 0xd7, 0x36, 0xb6, 0x37, 0x50,
0xa1, 0x5e, 0x10, 0x42, 0xa8, 0x12, 0x1c, 0x40, 0xe2, 0x52, 0xc1, 0x85, 0x0b, 0xaa, 0x10, 0x88,
0x0b, 0x37, 0xae, 0x20, 0xc1, 0x91, 0xbf, 0x00, 0x89, 0x33, 0xe2, 0xc6, 0x15, 0xcd, 0x97, 0xd7,
0xf6, 0xda, 0x6b, 0xa7, 0x55, 0xa5, 0x9e, 0xba, 0x9e, 0x79, 0xe6, 0x99, 0xdf, 0xf3, 0x3c, 0xbf,
0x67, 0xe6, 0x37, 0x29, 0x9c, 0x6f, 0xbb, 0x6e, 0xdb, 0xa6, 0xe6, 0x96, 0xd5, 0x0e, 0xc9, 0x96,
0x4d, 0x4d, 0xd2, 0xea, 0x58, 0x8e, 0xb9, 0x57, 0x8f, 0x46, 0x9a, 0x96, 0x13, 0x84, 0xc4, 0xd9,
0xa6, 0x4d, 0x3e, 0x65, 0x78, 0xbe, 0x1b, 0xba, 0x78, 0x46, 0xac, 0x33, 0x94, 0x95, 0x21, 0x26,
0xf7, 0xea, 0xda, 0x11, 0xe9, 0x91, 0x78, 0x96, 0x49, 0x1c, 0xc7, 0x0d, 0x49, 0x68, 0xb9, 0x4e,
0x20, 0xd6, 0x69, 0x67, 0x72, 0xf7, 0x53, 0xdb, 0x48, 0xc3, 0x63, 0xd2, 0xd0, 0x22, 0x1d, 0x73,
0x6f, 0x81, 0xfd, 0xd3, 0xf4, 0x5c, 0xdb, 0xda, 0xbe, 0x27, 0xe7, 0xb5, 0xe4, 0x7c, 0x62, 0xee,
0xa4, 0x9c, 0xb3, 0x5d, 0xa7, 0xed, 0x77, 0x1d, 0xc7, 0x72, 0xda, 0xa6, 0xeb, 0x51, 0x3f, 0x81,
0xe4, 0x39, 0x69, 0xc4, 0xbf, 0xb6, 0xba, 0x3b, 0x26, 0xed, 0x78, 0xa1, 0xf2, 0x30, 0x9b, 0x9e,
0xdc, 0xb1, 0xa8, 0xdd, 0x6a, 0x76, 0x48, 0xb0, 0x2b, 0x2d, 0x8e, 0xa7, 0x2d, 0x42, 0xab, 0x43,
0x83, 0x90, 0x74, 0x3c, 0x61, 0xa0, 0xff, 0x56, 0x81, 0xc9, 0x15, 0x9f, 0x92, 0x90, 0xae, 0xc9,
0xc8, 0x1a, 0xf4, 0x9d, 0x2e, 0x0d, 0x42, 0x3c, 0x05, 0x07, 0x3d, 0xe2, 0x53, 0x27, 0x9c, 0x41,
0xb3, 0x68, 0x6e, 0xb8, 0x21, 0xbf, 0xf0, 0x71, 0xa8, 0x46, 0xb9, 0xb6, 0x5a, 0x33, 0x15, 0x3e,
0x09, 0x6a, 0x68, 0xad, 0x85, 0x2f, 0xc1, 0x21, 0xf5, 0x35, 0x33, 0x34, 0x8b, 0xe6, 0xaa, 0x75,
0xdd, 0xc8, 0xab, 0x83, 0x11, 0xed, 0x1a, 0xad, 0xc1, 0x77, 0xe0, 0xd0, 0xb6, 0xdd, 0x0d, 0x42,
0xea, 0x07, 0x33, 0x07, 0x66, 0x87, 0xe6, 0xaa, 0xf5, 0xe5, 0xfc, 0xf5, 0x99, 0xd8, 0x8d, 0x15,
0xb9, 0xfe, 0x9a, 0x13, 0xfa, 0xf7, 0x1a, 0x91, 0x3b, 0xed, 0x4d, 0x18, 0x4d, 0x4c, 0xe1, 0x09,
0x18, 0xda, 0xa5, 0xf7, 0x64, 0x84, 0xec, 0x27, 0xbe, 0x00, 0xff, 0xd9, 0x23, 0x76, 0x97, 0xf2,
0xc0, 0xaa, 0xf5, 0x13, 0x03, 0xb6, 0x16, 0x9e, 0x1a, 0xc2, 0x7e, 0xb1, 0x72, 0x11, 0xe9, 0x73,
0x80, 0x57, 0x69, 0x98, 0xce, 0x24, 0x86, 0x03, 0x0e, 0xe9, 0x50, 0xb9, 0x0b, 0xff, 0xad, 0x5f,
0x87, 0xc3, 0xeb, 0x56, 0x10, 0x99, 0x06, 0x45, 0x59, 0x3f, 0x0a, 0xe0, 0x91, 0x36, 0x6d, 0x86,
0xee, 0x2e, 0x75, 0x64, 0xd2, 0x87, 0xd9, 0xc8, 0x2d, 0x36, 0xa0, 0x7f, 0x8b, 0x60, 0x32, 0xe5,
0x2f, 0xf0, 0x5c, 0x27, 0xa0, 0xf8, 0x15, 0x18, 0x56, 0x99, 0x0d, 0x66, 0x10, 0x4f, 0x67, 0x99,
0x72, 0xf4, 0x16, 0xe1, 0xb3, 0x30, 0xb1, 0x43, 0x2c, 0x9b, 0xb6, 0x9a, 0xb6, 0xbb, 0x2d, 0xc8,
0x39, 0x53, 0x99, 0x1d, 0x9a, 0x1b, 0x6e, 0x8c, 0x8b, 0xf1, 0x75, 0x35, 0x8c, 0x4f, 0xc3, 0xb8,
0x43, 0xdf, 0x0b, 0x9b, 0x31, 0xa8, 0x43, 0x1c, 0xea, 0x28, 0x1b, 0xde, 0x88, 0xe0, 0x3e, 0x44,
0x70, 0x64, 0x83, 0xf8, 0xa1, 0x45, 0xec, 0xd7, 0xbd, 0x56, 0x06, 0xf9, 0xe2, 0x1c, 0x42, 0x8f,
0xc1, 0xa1, 0x25, 0xa8, 0x76, 0xb9, 0x63, 0xde, 0x0c, 0xb2, 0x96, 0x9a, 0x72, 0xa1, 0xba, 0xc1,
0x78, 0x95, 0xf5, 0xcb, 0x75, 0x12, 0xec, 0x36, 0x40, 0x98, 0xb3, 0xdf, 0xfa, 0x39, 0x98, 0xbc,
0x4a, 0x6d, 0xda, 0x8f, 0x2a, 0xab, 0x90, 0x0f, 0x10, 0x1c, 0x16, 0x24, 0x54, 0x7c, 0x28, 0xae,
0xa4, 0xe4, 0x63, 0xaf, 0x7d, 0x86, 0xe5, 0xc8, 0x5a, 0x0b, 0x2f, 0xc1, 0x7f, 0xe5, 0x87, 0x6c,
0x9e, 0x12, 0x0c, 0x54, 0x2b, 0xf4, 0x33, 0xf0, 0xbf, 0x55, 0x1a, 0xa6, 0x80, 0x64, 0xa1, 0x5e,
0x87, 0xff, 0x33, 0xba, 0xa8, 0x66, 0x78, 0x42, 0xf6, 0x7d, 0x83, 0x04, 0x9b, 0x7b, 0xee, 0x24,
0xf9, 0x96, 0x63, 0xad, 0x2c, 0xb8, 0x57, 0x22, 0x9a, 0x68, 0xc9, 0xd3, 0x60, 0x5e, 0x0d, 0x0e,
0x8b, 0xda, 0x96, 0x48, 0xd2, 0xdf, 0x08, 0xa6, 0x92, 0xe7, 0xcb, 0x75, 0x1a, 0x92, 0x16, 0x09,
0x09, 0xbe, 0x0b, 0x13, 0xae, 0x6f, 0xb5, 0x2d, 0x87, 0xd8, 0x4d, 0x5f, 0xb8, 0x90, 0x3c, 0x35,
0xf7, 0x79, 0x56, 0x35, 0xc6, 0x95, 0x23, 0x05, 0x65, 0x19, 0x46, 0xa4, 0xcb, 0x26, 0x3b, 0xad,
0x73, 0xc9, 0x7b, 0x4b, 0x1d, 0xe5, 0x8d, 0xaa, 0xb4, 0x67, 0x23, 0x8c, 0xfa, 0x3b, 0x96, 0x63,
0x05, 0x6f, 0x89, 0xd5, 0x43, 0x85, 0xab, 0x41, 0x98, 0xb3, 0x01, 0xfd, 0x1f, 0x04, 0x53, 0xc9,
0x8e, 0x8c, 0x42, 0x26, 0xb9, 0x21, 0x9f, 0xcf, 0x0f, 0x79, 0x50, 0x93, 0x3f, 0x5b, 0x91, 0xff,
0x85, 0xd4, 0x45, 0x28, 0x99, 0x11, 0x05, 0x7e, 0x27, 0x37, 0x70, 0xa3, 0xa8, 0xd6, 0x49, 0x92,
0x3d, 0x5b, 0x01, 0xff, 0x81, 0x60, 0x52, 0xd4, 0x25, 0x1d, 0xf0, 0x7a, 0x6e, 0xc0, 0x25, 0xba,
0xf7, 0x99, 0x8a, 0xf1, 0x17, 0x04, 0xd3, 0xa2, 0x12, 0x97, 0x3d, 0x6f, 0xc3, 0x77, 0x77, 0x2c,
0xbb, 0x50, 0xdf, 0x9c, 0x82, 0x31, 0xe2, 0x79, 0x4d, 0x4f, 0x58, 0xf7, 0xce, 0xe8, 0x11, 0x12,
0xb9, 0x58, 0x6b, 0xe1, 0x6b, 0x50, 0x8d, 0x59, 0x49, 0x58, 0xa7, 0xf2, 0xd3, 0x13, 0xdb, 0x1f,
0x7a, 0x8e, 0xf0, 0x19, 0x18, 0xb7, 0xda, 0x8e, 0xeb, 0xd3, 0xe6, 0xbb, 0xc4, 0x67, 0x0a, 0x90,
0x49, 0x1e, 0x34, 0x77, 0xa8, 0x31, 0x26, 0x86, 0xdf, 0x90, 0xa3, 0xec, 0xdc, 0x5a, 0xa5, 0x61,
0x7f, 0x14, 0x59, 0xe7, 0xd6, 0x0d, 0x98, 0x62, 0xa7, 0x71, 0xcf, 0xf8, 0x49, 0xcf, 0xf7, 0x07,
0x08, 0xa6, 0xfb, 0x3c, 0xca, 0x23, 0x7e, 0x15, 0x46, 0x62, 0x89, 0x50, 0xc7, 0x7c, 0xb9, 0x4c,
0x54, 0x7b, 0x99, 0xc8, 0x3c, 0xc1, 0x2b, 0x59, 0x27, 0xf8, 0xcf, 0x08, 0xa6, 0x05, 0x6f, 0xfb,
0xb3, 0x91, 0xaa, 0x0a, 0x7a, 0xcc, 0xaa, 0x3c, 0x89, 0x7a, 0xc8, 0x2a, 0xe9, 0x50, 0x66, 0x49,
0x6f, 0xc3, 0xb4, 0xb8, 0x8a, 0x4a, 0x55, 0x35, 0xcb, 0x6f, 0x25, 0xcb, 0x6f, 0xfd, 0xd1, 0x34,
0x4c, 0x5e, 0x91, 0xa1, 0xaa, 0x23, 0xf7, 0x32, 0x8b, 0x18, 0x7f, 0x8a, 0x60, 0x2c, 0x79, 0x09,
0xe1, 0xfd, 0x5e, 0x57, 0xda, 0x51, 0xb5, 0x20, 0xf6, 0x6c, 0x31, 0x6e, 0xa8, 0x67, 0x8b, 0x3e,
0xff, 0xc1, 0xef, 0x7f, 0x7e, 0x5e, 0x39, 0xad, 0x9f, 0x60, 0x8f, 0xa5, 0xf7, 0x05, 0xbd, 0x96,
0x3d, 0xdf, 0x7d, 0x9b, 0x6e, 0x87, 0x81, 0x59, 0xbb, 0x1f, 0x3d, 0xa0, 0x82, 0x45, 0x54, 0xc3,
0x0f, 0x10, 0x54, 0x63, 0x82, 0x19, 0xcf, 0xe7, 0xa3, 0xe9, 0xd7, 0xd5, 0x5a, 0x09, 0x49, 0xa8,
0x9f, 0xe5, 0x78, 0x4e, 0x62, 0x81, 0x87, 0x25, 0x32, 0x86, 0xa6, 0x07, 0xc6, 0xac, 0xdd, 0xc7,
0x0f, 0x11, 0x8c, 0x26, 0x34, 0x34, 0x1e, 0x70, 0xbe, 0x67, 0x89, 0x77, 0xcd, 0x2c, 0x6d, 0x2f,
0x9a, 0x27, 0x85, 0x6e, 0x50, 0xb6, 0xf0, 0x47, 0x08, 0xc6, 0x92, 0xd7, 0x28, 0x2e, 0x11, 0x7f,
0xa9, 0x1c, 0xc9, 0x9a, 0x69, 0xc5, 0x39, 0x62, 0x35, 0x63, 0x4f, 0x8d, 0xcc, 0x6b, 0x1d, 0x3f,
0xa6, 0x0e, 0x28, 0xa2, 0xd4, 0xcb, 0x1c, 0xde, 0xf9, 0x7a, 0x8d, 0xc3, 0x8b, 0x1e, 0xe0, 0x03,
0x71, 0xf6, 0x5e, 0x02, 0x1f, 0x22, 0x18, 0x4b, 0xaa, 0xf9, 0x41, 0x9c, 0xcf, 0xd4, 0xfd, 0xda,
0x54, 0x5f, 0xeb, 0x5f, 0x63, 0xaf, 0x70, 0x55, 0xbe, 0x5a, 0x09, 0x72, 0x7d, 0x89, 0x60, 0x34,
0xa1, 0x09, 0xf0, 0x3e, 0xc5, 0x43, 0x51, 0x96, 0x96, 0x39, 0x96, 0x0b, 0xfa, 0x7c, 0x36, 0x95,
0x12, 0x68, 0x4c, 0xa5, 0xb0, 0x17, 0xd5, 0xcb, 0x01, 0x7f, 0x86, 0x00, 0x7a, 0x4f, 0x07, 0x7c,
0x6e, 0x60, 0x23, 0xa6, 0x90, 0x15, 0xab, 0x02, 0xfd, 0x25, 0x8e, 0xce, 0xc0, 0xf3, 0x45, 0x99,
0x8a, 0xa0, 0xb1, 0xa4, 0x7d, 0x8d, 0x60, 0x24, 0xfe, 0xae, 0xc0, 0xcf, 0x0f, 0x6e, 0xb0, 0xd4,
0x73, 0x46, 0x33, 0xca, 0x9a, 0xcb, 0x76, 0x4c, 0xa2, 0x2c, 0x99, 0x43, 0x76, 0x88, 0x8d, 0x26,
0x84, 0x14, 0x2e, 0x4e, 0x48, 0x51, 0x35, 0x2f, 0x70, 0x24, 0x0b, 0xda, 0xbe, 0xf2, 0xc5, 0xba,
0xf3, 0x13, 0x04, 0xa3, 0x89, 0x07, 0xce, 0x20, 0x9e, 0x65, 0xbd, 0x84, 0x72, 0xc9, 0x2e, 0x93,
0x53, 0xdb, 0x5f, 0x09, 0x7f, 0x40, 0x30, 0x91, 0x56, 0x60, 0x78, 0xa1, 0x88, 0xfa, 0x7d, 0x37,
0xa2, 0x56, 0xea, 0x12, 0xd7, 0xaf, 0x72, 0x8c, 0x97, 0x74, 0xb3, 0x4c, 0x01, 0x63, 0xe2, 0x63,
0x31, 0x2e, 0x1b, 0xf0, 0x57, 0x08, 0x46, 0x13, 0x62, 0x6b, 0x50, 0x0e, 0xb3, 0x54, 0x59, 0x49,
0xb4, 0xb2, 0xc8, 0xd8, 0x2c, 0xcc, 0x68, 0x0c, 0x2a, 0x4b, 0xea, 0xf7, 0x08, 0xc6, 0x53, 0x7a,
0x0c, 0xbf, 0x30, 0x98, 0xeb, 0xfd, 0x62, 0x50, 0x5b, 0xd8, 0xc7, 0x0a, 0xd9, 0x20, 0x49, 0xc4,
0xe5, 0xf3, 0x8b, 0x7f, 0x44, 0x30, 0x91, 0x16, 0x6d, 0x83, 0x68, 0x90, 0x23, 0xf0, 0x8a, 0xda,
0x66, 0x83, 0xe3, 0x7b, 0xad, 0xbe, 0xc4, 0xf1, 0xc5, 0x6a, 0x6a, 0x94, 0xcf, 0x6e, 0x92, 0x0b,
0x5f, 0x20, 0x98, 0x48, 0xab, 0xb4, 0x41, 0xc0, 0x73, 0x14, 0x5d, 0x6e, 0x57, 0xc9, 0x8c, 0xd6,
0xf6, 0xcd, 0x81, 0x8f, 0x11, 0x8c, 0x30, 0x4d, 0x44, 0x3a, 0x1b, 0xfc, 0x8f, 0xca, 0x3d, 0x35,
0x60, 0x91, 0x8e, 0xb1, 0xb7, 0x60, 0xc4, 0x27, 0x15, 0x8a, 0xc9, 0x94, 0x8d, 0x98, 0x8d, 0xee,
0x8e, 0x3a, 0x07, 0xe1, 0xd3, 0xc0, 0xed, 0xfa, 0xdb, 0xf9, 0x97, 0x6b, 0x3b, 0xe6, 0x99, 0x9d,
0x39, 0x0c, 0xca, 0xcd, 0x41, 0x50, 0x6e, 0x3e, 0x35, 0x28, 0x41, 0x0a, 0xca, 0x77, 0x08, 0xf0,
0x2d, 0x1a, 0xf0, 0x41, 0xea, 0x77, 0xac, 0x20, 0xe0, 0x7f, 0x1d, 0x9a, 0x4b, 0x6d, 0xd6, 0x6f,
0xa2, 0x60, 0x9d, 0x2d, 0x61, 0x29, 0x9b, 0x61, 0x85, 0x43, 0x5d, 0xd6, 0x2f, 0x96, 0x83, 0x1a,
0xf6, 0x79, 0x5a, 0x44, 0xb5, 0x2b, 0x3f, 0x21, 0x38, 0xb2, 0xed, 0x76, 0x72, 0x09, 0x75, 0x45,
0xcb, 0x94, 0xf2, 0x1b, 0x8c, 0x45, 0x1b, 0xe8, 0xee, 0xb2, 0x5c, 0xd7, 0x76, 0x6d, 0xe2, 0xb4,
0x0d, 0xd7, 0x6f, 0x9b, 0x6d, 0xea, 0x70, 0x8e, 0x99, 0x62, 0x8a, 0x78, 0x56, 0xd0, 0xff, 0xff,
0x18, 0x4b, 0xfc, 0xc7, 0xa3, 0xca, 0xb1, 0x55, 0xb1, 0x7e, 0xc5, 0x76, 0xbb, 0x2d, 0x43, 0x6d,
0x65, 0xf0, 0x3d, 0x8c, 0xdb, 0xf5, 0x5f, 0x95, 0xc1, 0x26, 0x37, 0xd8, 0x54, 0x06, 0x9b, 0xdc,
0x60, 0xf3, 0x76, 0x7d, 0xeb, 0x20, 0xdf, 0xeb, 0xc5, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x2f,
0xdb, 0x53, 0xda, 0xa2, 0x19, 0x00, 0x00,
// 1566 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x59, 0xcf, 0x6f, 0xdc, 0xc4,
0x17, 0xd7, 0x6c, 0xfa, 0xed, 0xb7, 0x79, 0x9b, 0x5f, 0xdf, 0xf9, 0x36, 0xc9, 0xca, 0xf4, 0x47,
0xea, 0x56, 0x6d, 0xba, 0x0d, 0x36, 0x59, 0x50, 0x5b, 0x25, 0xa4, 0xa2, 0x4d, 0x4b, 0x14, 0x94,
0xaa, 0xd1, 0xb6, 0x14, 0xb5, 0x8a, 0x58, 0x4d, 0xb2, 0x93, 0xc5, 0xc4, 0x6b, 0x1b, 0xdb, 0x1b,
0xa8, 0x50, 0x2f, 0x08, 0x21, 0x54, 0x09, 0x0e, 0x20, 0x71, 0xa9, 0xe0, 0xc2, 0x05, 0x55, 0x08,
0xc4, 0x85, 0x1b, 0x57, 0x90, 0xe0, 0xc8, 0x5f, 0x80, 0xc4, 0x19, 0x71, 0xe3, 0x8a, 0x66, 0x3c,
0xe3, 0xb5, 0xbd, 0xfe, 0xb5, 0xad, 0x2a, 0xf5, 0xd4, 0xf5, 0xcc, 0x9b, 0x37, 0x9f, 0xf9, 0xbc,
0xcf, 0x7b, 0xf3, 0x26, 0x85, 0xf3, 0x1d, 0xdb, 0xee, 0x98, 0x54, 0xdf, 0x36, 0x3a, 0x3e, 0xd9,
0x36, 0xa9, 0x4e, 0xda, 0x5d, 0xc3, 0xd2, 0xf7, 0x1b, 0xe1, 0x48, 0xcb, 0xb0, 0x3c, 0x9f, 0x58,
0x3b, 0xb4, 0xc5, 0xa7, 0x34, 0xc7, 0xb5, 0x7d, 0x1b, 0xd7, 0x82, 0x75, 0x9a, 0xb4, 0xd2, 0x82,
0xc9, 0xfd, 0x86, 0x72, 0x44, 0x78, 0x24, 0x8e, 0xa1, 0x13, 0xcb, 0xb2, 0x7d, 0xe2, 0x1b, 0xb6,
0xe5, 0x05, 0xeb, 0x94, 0x33, 0x99, 0xfb, 0xc9, 0x6d, 0x84, 0xe1, 0x31, 0x61, 0x68, 0x90, 0xae,
0xbe, 0xbf, 0xc8, 0xfe, 0x69, 0x39, 0xb6, 0x69, 0xec, 0xdc, 0x13, 0xf3, 0x4a, 0x7c, 0x3e, 0x36,
0x77, 0x52, 0xcc, 0x99, 0xb6, 0xd5, 0x71, 0x7b, 0x96, 0x65, 0x58, 0x1d, 0xdd, 0x76, 0xa8, 0x1b,
0x43, 0xf2, 0x9c, 0x30, 0xe2, 0x5f, 0xdb, 0xbd, 0x5d, 0x9d, 0x76, 0x1d, 0x5f, 0x7a, 0x98, 0x4b,
0x4e, 0xee, 0x1a, 0xd4, 0x6c, 0xb7, 0xba, 0xc4, 0xdb, 0x13, 0x16, 0xc7, 0x93, 0x16, 0xbe, 0xd1,
0xa5, 0x9e, 0x4f, 0xba, 0x4e, 0x60, 0xa0, 0xfe, 0x56, 0x81, 0xe9, 0x55, 0x97, 0x12, 0x9f, 0xae,
0x8b, 0x93, 0x35, 0xe9, 0x3b, 0x3d, 0xea, 0xf9, 0x78, 0x06, 0x0e, 0x3a, 0xc4, 0xa5, 0x96, 0x5f,
0x43, 0x73, 0x68, 0x7e, 0xb4, 0x29, 0xbe, 0xf0, 0x71, 0xa8, 0x86, 0x5c, 0x1b, 0xed, 0x5a, 0x85,
0x4f, 0x82, 0x1c, 0x5a, 0x6f, 0xe3, 0x4b, 0x70, 0x48, 0x7e, 0xd5, 0x46, 0xe6, 0xd0, 0x7c, 0xb5,
0xa1, 0x6a, 0x59, 0x71, 0xd0, 0xc2, 0x5d, 0xc3, 0x35, 0xf8, 0x0e, 0x1c, 0xda, 0x31, 0x7b, 0x9e,
0x4f, 0x5d, 0xaf, 0x76, 0x60, 0x6e, 0x64, 0xbe, 0xda, 0x58, 0xc9, 0x5e, 0x9f, 0x8a, 0x5d, 0x5b,
0x15, 0xeb, 0xaf, 0x59, 0xbe, 0x7b, 0xaf, 0x19, 0xba, 0x53, 0xde, 0x84, 0xf1, 0xd8, 0x14, 0x9e,
0x82, 0x91, 0x3d, 0x7a, 0x4f, 0x9c, 0x90, 0xfd, 0xc4, 0x17, 0xe0, 0x3f, 0xfb, 0xc4, 0xec, 0x51,
0x7e, 0xb0, 0x6a, 0xe3, 0x44, 0xce, 0xd6, 0x81, 0xa7, 0x66, 0x60, 0xbf, 0x54, 0xb9, 0x88, 0xd4,
0x79, 0xc0, 0x6b, 0xd4, 0x4f, 0x32, 0x89, 0xe1, 0x80, 0x45, 0xba, 0x54, 0xec, 0xc2, 0x7f, 0xab,
0xd7, 0xe1, 0xf0, 0x86, 0xe1, 0x85, 0xa6, 0x5e, 0x11, 0xeb, 0x47, 0x01, 0x1c, 0xd2, 0xa1, 0x2d,
0xdf, 0xde, 0xa3, 0x96, 0x20, 0x7d, 0x94, 0x8d, 0xdc, 0x62, 0x03, 0xea, 0xb7, 0x08, 0xa6, 0x13,
0xfe, 0x3c, 0xc7, 0xb6, 0x3c, 0x8a, 0x5f, 0x81, 0x51, 0xc9, 0xac, 0x57, 0x43, 0x9c, 0xce, 0x32,
0xe1, 0xe8, 0x2f, 0xc2, 0x67, 0x61, 0x6a, 0x97, 0x18, 0x26, 0x6d, 0xb7, 0x4c, 0x7b, 0x27, 0x10,
0x67, 0xad, 0x32, 0x37, 0x32, 0x3f, 0xda, 0x9c, 0x0c, 0xc6, 0x37, 0xe4, 0x30, 0x3e, 0x0d, 0x93,
0x16, 0x7d, 0xcf, 0x6f, 0x45, 0xa0, 0x8e, 0x70, 0xa8, 0xe3, 0x6c, 0x78, 0x33, 0x84, 0xfb, 0x10,
0xc1, 0x91, 0x4d, 0xe2, 0xfa, 0x06, 0x31, 0x5f, 0x77, 0xda, 0x29, 0xe2, 0x8b, 0x6a, 0x08, 0x3d,
0x86, 0x86, 0x96, 0xa1, 0xda, 0xe3, 0x8e, 0x79, 0x32, 0x88, 0x58, 0x2a, 0xd2, 0x85, 0xcc, 0x06,
0xed, 0x55, 0x96, 0x2f, 0xd7, 0x89, 0xb7, 0xd7, 0x84, 0xc0, 0x9c, 0xfd, 0x56, 0xcf, 0xc1, 0xf4,
0x55, 0x6a, 0xd2, 0x41, 0x54, 0x69, 0x81, 0x7c, 0x80, 0xe0, 0x70, 0x20, 0x42, 0xa9, 0x87, 0xe2,
0x48, 0x0a, 0x3d, 0xf6, 0xd3, 0x67, 0x54, 0x8c, 0xac, 0xb7, 0xf1, 0x32, 0xfc, 0x57, 0x7c, 0x88,
0xe4, 0x29, 0xa1, 0x40, 0xb9, 0x42, 0x3d, 0x03, 0xff, 0x5b, 0xa3, 0x7e, 0x02, 0x48, 0x1a, 0xea,
0x0d, 0xf8, 0x3f, 0x93, 0x8b, 0x4c, 0x86, 0x27, 0x54, 0xdf, 0x37, 0x28, 0x50, 0x73, 0xdf, 0x9d,
0x10, 0xdf, 0x4a, 0x24, 0x95, 0x03, 0xed, 0x95, 0x38, 0x4d, 0xb8, 0xe4, 0x69, 0x28, 0xaf, 0x0e,
0x87, 0x83, 0xd8, 0x96, 0x20, 0xe9, 0x6f, 0x04, 0x33, 0xf1, 0xfa, 0x72, 0x9d, 0xfa, 0xa4, 0x4d,
0x7c, 0x82, 0xef, 0xc2, 0x94, 0xed, 0x1a, 0x1d, 0xc3, 0x22, 0x66, 0xcb, 0x0d, 0x5c, 0x08, 0x9d,
0xea, 0x43, 0xd6, 0xaa, 0xe6, 0xa4, 0x74, 0x24, 0xa1, 0xac, 0xc0, 0x98, 0x70, 0xd9, 0x62, 0xd5,
0x3a, 0x53, 0xbc, 0xb7, 0x64, 0x29, 0x6f, 0x56, 0x85, 0x3d, 0x1b, 0x61, 0xd2, 0xdf, 0x35, 0x2c,
0xc3, 0x7b, 0x2b, 0x58, 0x3d, 0x52, 0xb8, 0x1a, 0x02, 0x73, 0x36, 0xa0, 0xfe, 0x83, 0x60, 0x26,
0x9e, 0x91, 0xe1, 0x91, 0x49, 0xe6, 0x91, 0xcf, 0x67, 0x1f, 0x39, 0x2f, 0xc9, 0x9f, 0xad, 0x93,
0xff, 0x85, 0xe4, 0x45, 0x28, 0x94, 0x11, 0x1e, 0xfc, 0x4e, 0xe6, 0xc1, 0xb5, 0xa2, 0x58, 0xc7,
0x45, 0xf6, 0x6c, 0x1d, 0xf8, 0x0f, 0x04, 0xd3, 0x41, 0x5c, 0x92, 0x07, 0xde, 0xc8, 0x3c, 0x70,
0x89, 0xec, 0x7d, 0xa6, 0xce, 0xf8, 0x0b, 0x82, 0xd9, 0x20, 0x12, 0x97, 0x1d, 0x67, 0xd3, 0xb5,
0x77, 0x0d, 0xb3, 0xb0, 0xbf, 0x39, 0x05, 0x13, 0xc4, 0x71, 0x5a, 0x4e, 0x60, 0xdd, 0xaf, 0xd1,
0x63, 0x24, 0x74, 0xb1, 0xde, 0xc6, 0xd7, 0xa0, 0x1a, 0xb1, 0x12, 0xb0, 0x4e, 0x65, 0xd3, 0x13,
0xd9, 0x1f, 0xfa, 0x8e, 0xf0, 0x19, 0x98, 0x34, 0x3a, 0x96, 0xed, 0xd2, 0xd6, 0xbb, 0xc4, 0x65,
0x1d, 0x20, 0x6b, 0x79, 0xd0, 0xfc, 0xa1, 0xe6, 0x44, 0x30, 0xfc, 0x86, 0x18, 0x65, 0x75, 0x6b,
0x8d, 0xfa, 0x83, 0xa7, 0x48, 0xab, 0x5b, 0x37, 0x60, 0x86, 0x55, 0xe3, 0xbe, 0xf1, 0x93, 0xd6,
0xf7, 0x07, 0x08, 0x66, 0x07, 0x3c, 0x8a, 0x12, 0xbf, 0x06, 0x63, 0x11, 0x22, 0x64, 0x99, 0x2f,
0xc7, 0x44, 0xb5, 0xcf, 0x44, 0x6a, 0x05, 0xaf, 0xa4, 0x55, 0xf0, 0x9f, 0x11, 0xcc, 0x06, 0xba,
0x1d, 0x64, 0x23, 0x11, 0x15, 0xf4, 0x98, 0x51, 0x79, 0x92, 0xee, 0x21, 0x2d, 0xa4, 0x23, 0xa9,
0x21, 0xbd, 0x0d, 0xb3, 0xc1, 0x55, 0x54, 0x2a, 0xaa, 0x69, 0x7e, 0x2b, 0xa9, 0x7e, 0x15, 0xa8,
0x25, 0xf9, 0x91, 0xa9, 0xdd, 0x78, 0x34, 0x0b, 0xd3, 0x57, 0x04, 0x0d, 0xb2, 0x1c, 0x5f, 0x66,
0x6c, 0xe0, 0x4f, 0x11, 0x4c, 0xc4, 0x2f, 0x28, 0x3c, 0xec, 0x55, 0xa6, 0x1c, 0x95, 0x0b, 0x22,
0x4f, 0x1a, 0xed, 0x86, 0x7c, 0xd2, 0xa8, 0x0b, 0x1f, 0xfc, 0xfe, 0xe7, 0xe7, 0x95, 0xd3, 0xea,
0x09, 0xf6, 0x90, 0x7a, 0x3f, 0x90, 0xde, 0x8a, 0xe3, 0xda, 0x6f, 0xd3, 0x1d, 0xdf, 0xd3, 0xeb,
0xf7, 0xc3, 0xc7, 0x95, 0xb7, 0x84, 0xea, 0xf8, 0x01, 0x82, 0x6a, 0xa4, 0x99, 0xc6, 0x0b, 0xd9,
0x68, 0x06, 0x7b, 0x6e, 0xa5, 0x44, 0xbb, 0xa8, 0x9e, 0xe5, 0x78, 0x4e, 0xe2, 0x00, 0x0f, 0x23,
0x39, 0x82, 0xa6, 0x0f, 0x46, 0xaf, 0xdf, 0xc7, 0x0f, 0x11, 0x8c, 0xc7, 0xfa, 0x6b, 0x9c, 0x53,
0xfb, 0xd3, 0x1a, 0x7b, 0x45, 0x2f, 0x6d, 0x1f, 0x24, 0x56, 0x02, 0x5d, 0x1e, 0x5b, 0xf8, 0x23,
0x04, 0x13, 0xf1, 0x2b, 0x16, 0x97, 0x38, 0x7f, 0x29, 0x8e, 0x44, 0xcc, 0x94, 0x62, 0x8e, 0x58,
0xcc, 0xd8, 0x33, 0x24, 0xf5, 0xca, 0xc7, 0x8f, 0xd9, 0x23, 0x14, 0x49, 0xea, 0x65, 0x0e, 0xef,
0x7c, 0xa3, 0xce, 0xe1, 0x85, 0x8f, 0xf3, 0x5c, 0x9c, 0xfd, 0x57, 0xc2, 0x87, 0x08, 0x26, 0xe2,
0x9d, 0x7e, 0x9e, 0xe6, 0x53, 0xdf, 0x04, 0xca, 0xcc, 0x40, 0x59, 0xb8, 0xc6, 0x5e, 0xe8, 0x32,
0x7c, 0xf5, 0x12, 0xe2, 0xfa, 0x12, 0xc1, 0x78, 0xac, 0x5f, 0xc0, 0x43, 0x36, 0x16, 0x45, 0x2c,
0xad, 0x70, 0x2c, 0x17, 0xd4, 0x85, 0x74, 0x29, 0xc5, 0xd0, 0xe8, 0xb2, 0xfb, 0x5e, 0x92, 0xaf,
0x0a, 0xfc, 0x19, 0x02, 0xe8, 0x3f, 0x2b, 0xf0, 0xb9, 0xdc, 0x44, 0x4c, 0x20, 0x2b, 0xee, 0x18,
0xd4, 0x97, 0x38, 0x3a, 0x0d, 0x2f, 0x14, 0x31, 0x15, 0x42, 0x63, 0xa4, 0x7d, 0x8d, 0x60, 0x2c,
0xfa, 0xe6, 0xc0, 0xcf, 0xe7, 0x27, 0x58, 0xe2, 0xa9, 0xa3, 0x68, 0x65, 0xcd, 0x45, 0x3a, 0xc6,
0x51, 0x96, 0xe4, 0x90, 0x15, 0xb1, 0xf1, 0x58, 0x93, 0x85, 0x8b, 0x09, 0x29, 0x8a, 0xe6, 0x05,
0x8e, 0x64, 0x51, 0x19, 0x8a, 0x2f, 0x96, 0x9d, 0x9f, 0x20, 0x18, 0x8f, 0x3d, 0x7e, 0xf2, 0x74,
0x96, 0xf6, 0x4a, 0xca, 0x14, 0xbb, 0x20, 0xa7, 0x3e, 0x5c, 0x08, 0x7f, 0x40, 0x30, 0x95, 0xec,
0xce, 0xf0, 0x62, 0x91, 0xf4, 0x07, 0x6e, 0x4b, 0xa5, 0xd4, 0x05, 0xaf, 0x5e, 0xe5, 0x18, 0x2f,
0xa9, 0x7a, 0x99, 0x00, 0x46, 0x1a, 0x93, 0xa5, 0x68, 0x4b, 0x81, 0xbf, 0x42, 0x30, 0x1e, 0x6b,
0xc4, 0xf2, 0x38, 0x4c, 0xeb, 0xd8, 0x4a, 0xa2, 0x15, 0x41, 0xc6, 0x7a, 0x21, 0xa3, 0x11, 0xa8,
0x8c, 0xd4, 0xef, 0x11, 0x4c, 0x26, 0x7a, 0x35, 0xfc, 0x42, 0xbe, 0xd6, 0x07, 0x1b, 0x45, 0x65,
0x71, 0x88, 0x15, 0x22, 0x41, 0xe2, 0x88, 0xcb, 0xf3, 0x8b, 0x7f, 0x44, 0x30, 0x95, 0x6c, 0x58,
0xf2, 0x64, 0x90, 0xd1, 0xfc, 0x15, 0xa5, 0xcd, 0x26, 0xc7, 0xf7, 0x5a, 0x63, 0x99, 0xe3, 0x8b,
0xc4, 0x54, 0x2b, 0xcf, 0x6e, 0x5c, 0x0b, 0x5f, 0x20, 0x98, 0x4a, 0x76, 0x70, 0x79, 0xc0, 0x33,
0xba, 0xbd, 0xcc, 0xac, 0x12, 0x8c, 0xd6, 0x87, 0xd6, 0xc0, 0xc7, 0x08, 0xc6, 0x58, 0x4f, 0x44,
0xba, 0x9b, 0xfc, 0x0f, 0xce, 0xfd, 0x6e, 0xc0, 0x20, 0x5d, 0x6d, 0x7f, 0x51, 0x8b, 0x4e, 0x4a,
0x14, 0xd3, 0x09, 0x9b, 0x60, 0x36, 0xbc, 0x3b, 0x1a, 0x1c, 0x84, 0x4b, 0x3d, 0xbb, 0xe7, 0xee,
0x64, 0x5f, 0xae, 0x9d, 0x88, 0x67, 0x56, 0x73, 0x18, 0x94, 0x9b, 0x79, 0x50, 0x6e, 0x3e, 0x35,
0x28, 0x5e, 0x02, 0xca, 0x77, 0x08, 0xf0, 0x2d, 0xea, 0xf1, 0x41, 0xea, 0x76, 0x0d, 0xcf, 0xe3,
0x7f, 0x39, 0x9a, 0x4f, 0x6c, 0x36, 0x68, 0x22, 0x61, 0x9d, 0x2d, 0x61, 0x29, 0x92, 0x61, 0x95,
0x43, 0x5d, 0x51, 0x2f, 0x96, 0x83, 0xea, 0x0f, 0x78, 0x5a, 0x42, 0xf5, 0x2b, 0x3f, 0x21, 0x38,
0xb2, 0x63, 0x77, 0x33, 0x05, 0x75, 0x45, 0x49, 0x6d, 0xe5, 0x37, 0x99, 0x8a, 0x36, 0xd1, 0xdd,
0x15, 0xb1, 0xae, 0x63, 0x9b, 0xc4, 0xea, 0x68, 0xb6, 0xdb, 0xd1, 0x3b, 0xd4, 0xe2, 0x1a, 0xd3,
0x83, 0x29, 0xe2, 0x18, 0xde, 0xe0, 0xff, 0x71, 0x2c, 0xf3, 0x1f, 0x8f, 0x2a, 0xc7, 0xd6, 0x82,
0xf5, 0xab, 0xa6, 0xdd, 0x6b, 0x6b, 0x72, 0x2b, 0x8d, 0xef, 0xa1, 0xdd, 0x6e, 0xfc, 0x2a, 0x0d,
0xb6, 0xb8, 0xc1, 0x96, 0x34, 0xd8, 0xe2, 0x06, 0x5b, 0xb7, 0x1b, 0xdb, 0x07, 0xf9, 0x5e, 0x2f,
0xfe, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x1c, 0xa0, 0x3f, 0x27, 0xbe, 0x19, 0x00, 0x00,
}

View File

@ -406,7 +406,7 @@ type DataSource struct {
// Disables backfilling and manual run scheduling
// for the data source.
ManualRunsDisabled bool `protobuf:"varint,17,opt,name=manual_runs_disabled,json=manualRunsDisabled" json:"manual_runs_disabled,omitempty"`
// The minimum interval between two consecutive scheduled runs.
// The minimum interval for scheduler to schedule runs.
MinimumScheduleInterval *google_protobuf4.Duration `protobuf:"bytes,18,opt,name=minimum_schedule_interval,json=minimumScheduleInterval" json:"minimum_schedule_interval,omitempty"`
}
@ -640,10 +640,8 @@ func (m *ListDataSourcesResponse) GetNextPageToken() string {
type CreateTransferConfigRequest struct {
// The BigQuery project id where the transfer configuration should be created.
// Must be in the format /projects/{project_id}/locations/{location_id}
// or
// /projects/{project_id}/locations/-
// In case when '-' is specified as location_id, location is infered from
// the destination dataset region.
// If specified location and location of the destination bigquery dataset
// do not match - the request will fail.
Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"`
// Data transfer configuration to create.
TransferConfig *TransferConfig `protobuf:"bytes,2,opt,name=transfer_config,json=transferConfig" json:"transfer_config,omitempty"`
@ -1230,7 +1228,7 @@ type DataTransferServiceClient interface {
GetTransferConfig(ctx context.Context, in *GetTransferConfigRequest, opts ...grpc.CallOption) (*TransferConfig, error)
// Returns information about all data transfers in the project.
ListTransferConfigs(ctx context.Context, in *ListTransferConfigsRequest, opts ...grpc.CallOption) (*ListTransferConfigsResponse, error)
// Creates transfer runs for a time range [range_start_time, range_end_time].
// Creates transfer runs for a time range [start_time, end_time].
// For each date - or whatever granularity the data source supports - in the
// range, one transfer run is created.
// Note that runs are created per UTC time in the time range.
@ -1398,7 +1396,7 @@ type DataTransferServiceServer interface {
GetTransferConfig(context.Context, *GetTransferConfigRequest) (*TransferConfig, error)
// Returns information about all data transfers in the project.
ListTransferConfigs(context.Context, *ListTransferConfigsRequest) (*ListTransferConfigsResponse, error)
// Creates transfer runs for a time range [range_start_time, range_end_time].
// Creates transfer runs for a time range [start_time, end_time].
// For each date - or whatever granularity the data source supports - in the
// range, one transfer run is created.
// Note that runs are created per UTC time in the time range.

View File

@ -9,7 +9,7 @@ import math "math"
import _ "google.golang.org/genproto/googleapis/api/annotations"
import google_protobuf1 "github.com/golang/protobuf/ptypes/struct"
import google_protobuf2 "github.com/golang/protobuf/ptypes/timestamp"
import _ "google.golang.org/genproto/googleapis/rpc/status"
import google_rpc "google.golang.org/genproto/googleapis/rpc/status"
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
@ -51,8 +51,6 @@ type TransferState int32
const (
// State placeholder.
TransferState_TRANSFER_STATE_UNSPECIFIED TransferState = 0
// Data transfer is inactive.
TransferState_INACTIVE TransferState = 1
// Data transfer is scheduled and is waiting to be picked up by
// data transfer backend.
TransferState_PENDING TransferState = 2
@ -68,7 +66,6 @@ const (
var TransferState_name = map[int32]string{
0: "TRANSFER_STATE_UNSPECIFIED",
1: "INACTIVE",
2: "PENDING",
3: "RUNNING",
4: "SUCCEEDED",
@ -77,7 +74,6 @@ var TransferState_name = map[int32]string{
}
var TransferState_value = map[string]int32{
"TRANSFER_STATE_UNSPECIFIED": 0,
"INACTIVE": 1,
"PENDING": 2,
"RUNNING": 3,
"SUCCEEDED": 4,
@ -130,6 +126,7 @@ func (TransferMessage_MessageSeverity) EnumDescriptor() ([]byte, []int) {
// When a new transfer configuration is created, the specified
// `destination_dataset_id` is created when needed and shared with the
// appropriate data source service account.
// Next id: 20
type TransferConfig struct {
// The resource name of the transfer config.
// Transfer config names have the form
@ -178,6 +175,8 @@ type TransferConfig struct {
// Output only. Unique ID of the user on whose behalf transfer is done.
// Applicable only to data sources that do not support service accounts.
// When set to 0, the data source service account credentials are used.
// May be negative. Note, that this identifier is not stable.
// It may change over time even for the same user.
UserId int64 `protobuf:"varint,11,opt,name=user_id,json=userId" json:"user_id,omitempty"`
// Output only. Region in which BigQuery dataset is located.
DatasetRegion string `protobuf:"bytes,14,opt,name=dataset_region,json=datasetRegion" json:"dataset_region,omitempty"`
@ -280,22 +279,20 @@ func (m *TransferConfig) GetDatasetRegion() string {
}
// Represents a data transfer run.
// Next id: 23
// Next id: 27
type TransferRun struct {
// The resource name of the transfer run.
// Transfer run names have the form
// `projects/{project_id}/locations/{location}/transferConfigs/{config_id}/runs/{run_id}`.
// The name is ignored when creating a transfer run.
Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
// The BigQuery target dataset id.
DestinationDatasetId string `protobuf:"bytes,2,opt,name=destination_dataset_id,json=destinationDatasetId" json:"destination_dataset_id,omitempty"`
// Minimum time after which a transfer run can be started.
ScheduleTime *google_protobuf2.Timestamp `protobuf:"bytes,3,opt,name=schedule_time,json=scheduleTime" json:"schedule_time,omitempty"`
// Data transfer specific parameters.
Params *google_protobuf1.Struct `protobuf:"bytes,9,opt,name=params" json:"params,omitempty"`
// For batch transfer runs, specifies the date and time that
// data should be ingested.
RunTime *google_protobuf2.Timestamp `protobuf:"bytes,10,opt,name=run_time,json=runTime" json:"run_time,omitempty"`
// Status of the transfer run.
ErrorStatus *google_rpc.Status `protobuf:"bytes,21,opt,name=error_status,json=errorStatus" json:"error_status,omitempty"`
// Output only. Time when transfer run was started.
// Parameter ignored by server for input requests.
StartTime *google_protobuf2.Timestamp `protobuf:"bytes,4,opt,name=start_time,json=startTime" json:"start_time,omitempty"`
@ -304,6 +301,10 @@ type TransferRun struct {
EndTime *google_protobuf2.Timestamp `protobuf:"bytes,5,opt,name=end_time,json=endTime" json:"end_time,omitempty"`
// Output only. Last time the data transfer run state was updated.
UpdateTime *google_protobuf2.Timestamp `protobuf:"bytes,6,opt,name=update_time,json=updateTime" json:"update_time,omitempty"`
// Output only. Data transfer specific parameters.
Params *google_protobuf1.Struct `protobuf:"bytes,9,opt,name=params" json:"params,omitempty"`
// Output only. The BigQuery target dataset id.
DestinationDatasetId string `protobuf:"bytes,2,opt,name=destination_dataset_id,json=destinationDatasetId" json:"destination_dataset_id,omitempty"`
// Output only. Data source id.
DataSourceId string `protobuf:"bytes,7,opt,name=data_source_id,json=dataSourceId" json:"data_source_id,omitempty"`
// Data transfer run state. Ignored for input requests.
@ -311,7 +312,8 @@ type TransferRun struct {
// Output only. Unique ID of the user on whose behalf transfer is done.
// Applicable only to data sources that do not support service accounts.
// When set to 0, the data source service account credentials are used.
// May be negative.
// May be negative. Note, that this identifier is not stable.
// It may change over time even for the same user.
UserId int64 `protobuf:"varint,11,opt,name=user_id,json=userId" json:"user_id,omitempty"`
// Output only. Describes the schedule of this transfer run if it was
// created as part of a regular schedule. For batch transfer runs that are
@ -333,13 +335,6 @@ func (m *TransferRun) GetName() string {
return ""
}
func (m *TransferRun) GetDestinationDatasetId() string {
if m != nil {
return m.DestinationDatasetId
}
return ""
}
func (m *TransferRun) GetScheduleTime() *google_protobuf2.Timestamp {
if m != nil {
return m.ScheduleTime
@ -347,16 +342,16 @@ func (m *TransferRun) GetScheduleTime() *google_protobuf2.Timestamp {
return nil
}
func (m *TransferRun) GetParams() *google_protobuf1.Struct {
func (m *TransferRun) GetRunTime() *google_protobuf2.Timestamp {
if m != nil {
return m.Params
return m.RunTime
}
return nil
}
func (m *TransferRun) GetRunTime() *google_protobuf2.Timestamp {
func (m *TransferRun) GetErrorStatus() *google_rpc.Status {
if m != nil {
return m.RunTime
return m.ErrorStatus
}
return nil
}
@ -382,6 +377,20 @@ func (m *TransferRun) GetUpdateTime() *google_protobuf2.Timestamp {
return nil
}
func (m *TransferRun) GetParams() *google_protobuf1.Struct {
if m != nil {
return m.Params
}
return nil
}
func (m *TransferRun) GetDestinationDatasetId() string {
if m != nil {
return m.DestinationDatasetId
}
return ""
}
func (m *TransferRun) GetDataSourceId() string {
if m != nil {
return m.DataSourceId
@ -460,62 +469,63 @@ func init() {
}
var fileDescriptor1 = []byte{
// 910 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x55, 0xdf, 0x6e, 0xe3, 0xc4,
0x17, 0xfe, 0xb9, 0xf9, 0x7f, 0xf2, 0x67, 0xa3, 0xd1, 0x0f, 0x6a, 0xaa, 0x05, 0x42, 0x45, 0xa5,
0xb0, 0x17, 0xb6, 0x5a, 0xba, 0x42, 0x68, 0x05, 0x28, 0x71, 0x9c, 0x60, 0xb4, 0xf5, 0x66, 0xc7,
0x6e, 0x57, 0x8b, 0x2a, 0x59, 0x93, 0x78, 0xea, 0xb5, 0x94, 0xd8, 0xc1, 0x33, 0xee, 0x36, 0x97,
0xbc, 0x0a, 0x97, 0x5c, 0xf0, 0x20, 0x5c, 0x70, 0xc9, 0x2b, 0xf0, 0x1a, 0x68, 0xc6, 0x76, 0x94,
0xcd, 0x22, 0xa5, 0x95, 0xe0, 0x2a, 0x9e, 0x73, 0xbe, 0xef, 0x9b, 0x6f, 0xce, 0x39, 0x33, 0x81,
0xf3, 0x20, 0x8e, 0x83, 0x05, 0xd5, 0xe7, 0x8b, 0x38, 0xf5, 0xf5, 0x59, 0x18, 0xfc, 0x94, 0xd2,
0x64, 0xad, 0xfb, 0x84, 0x13, 0x9e, 0x90, 0x88, 0xdd, 0xd0, 0x44, 0xbf, 0x3d, 0xd5, 0x8b, 0x6f,
0x6d, 0x95, 0xc4, 0x3c, 0x46, 0x27, 0x19, 0x4b, 0x93, 0x2c, 0xad, 0x60, 0x69, 0xdb, 0x2c, 0xed,
0xf6, 0xf4, 0xe8, 0x71, 0x2e, 0x4e, 0x56, 0xa1, 0x4e, 0xa2, 0x28, 0xe6, 0x84, 0x87, 0x71, 0xc4,
0x32, 0x91, 0x4d, 0x56, 0xae, 0x66, 0xe9, 0x8d, 0xce, 0x78, 0x92, 0xce, 0x79, 0x9e, 0xfd, 0x74,
0x37, 0xcb, 0xc3, 0x25, 0x65, 0x9c, 0x2c, 0x57, 0x39, 0xe0, 0x30, 0x07, 0x24, 0xab, 0xb9, 0xce,
0x38, 0xe1, 0x69, 0xae, 0x7b, 0xfc, 0x47, 0x19, 0x3a, 0x6e, 0xee, 0xc2, 0x88, 0xa3, 0x9b, 0x30,
0x40, 0x08, 0xca, 0x11, 0x59, 0x52, 0x55, 0xe9, 0x29, 0xfd, 0x06, 0x96, 0xdf, 0xe8, 0x1c, 0x3e,
0xf4, 0x29, 0xe3, 0x61, 0x24, 0x4d, 0x79, 0xc2, 0x3b, 0xa3, 0xdc, 0x0b, 0x7d, 0xf5, 0x40, 0xa2,
0xfe, 0xbf, 0x95, 0x1d, 0x65, 0x49, 0xcb, 0x47, 0x9f, 0x41, 0xcb, 0x0f, 0xd9, 0x6a, 0x41, 0xd6,
0x9e, 0x54, 0x2c, 0x49, 0x6c, 0x33, 0x8f, 0xd9, 0x42, 0xf8, 0x73, 0xe8, 0x08, 0x31, 0x8f, 0xc5,
0x69, 0x32, 0xa7, 0x42, 0xb0, 0x22, 0x41, 0x2d, 0x11, 0x75, 0x64, 0xd0, 0xf2, 0x91, 0x0e, 0xd5,
0x15, 0x49, 0xc8, 0x92, 0xa9, 0x8d, 0x9e, 0xd2, 0x6f, 0x9e, 0x1d, 0x6a, 0x79, 0x4d, 0x8b, 0x03,
0x6b, 0x8e, 0x2c, 0x07, 0xce, 0x61, 0xe8, 0x08, 0xea, 0x6c, 0xfe, 0x86, 0xfa, 0xe9, 0x82, 0xaa,
0x35, 0x29, 0xb8, 0x59, 0xa3, 0xaf, 0x40, 0x95, 0x5b, 0x26, 0xf4, 0x26, 0xa1, 0xec, 0x8d, 0xf7,
0x36, 0x8c, 0xfc, 0xf8, 0xad, 0xe7, 0x93, 0x35, 0x53, 0x5b, 0x3d, 0xa5, 0x5f, 0xc1, 0x1f, 0x88,
0x3c, 0xce, 0xd2, 0xaf, 0x64, 0x76, 0x44, 0xd6, 0x52, 0xd4, 0x0f, 0x19, 0x99, 0x2d, 0xa8, 0xaf,
0xb6, 0x7b, 0x4a, 0xbf, 0x8e, 0x37, 0x6b, 0xf4, 0x0c, 0x9a, 0xe9, 0xca, 0x27, 0x9c, 0x7a, 0xa2,
0xf4, 0x6a, 0x59, 0xda, 0x3c, 0x7a, 0xcf, 0xa6, 0x5b, 0xf4, 0x05, 0x43, 0x06, 0x17, 0x01, 0xf4,
0x2d, 0xb4, 0x23, 0x7a, 0xc7, 0xbd, 0x24, 0x8d, 0x32, 0x7a, 0x7d, 0x2f, 0xbd, 0x29, 0x08, 0x38,
0x8d, 0x24, 0xff, 0x07, 0xa8, 0x88, 0xa6, 0x52, 0x15, 0x7a, 0x4a, 0xbf, 0x73, 0x76, 0xae, 0xdd,
0x6b, 0xe2, 0xb4, 0xa2, 0xef, 0x8e, 0xe0, 0xe2, 0x4c, 0x02, 0x1d, 0x42, 0x2d, 0x65, 0x34, 0x11,
0x9d, 0x68, 0xf6, 0x94, 0x7e, 0x09, 0x57, 0xc5, 0xd2, 0xf2, 0xd1, 0x49, 0xd6, 0x29, 0xd1, 0xf6,
0x84, 0x06, 0x61, 0x1c, 0xa9, 0x1d, 0x59, 0xd8, 0x76, 0x1e, 0xc5, 0x32, 0x78, 0xfc, 0x67, 0x19,
0x9a, 0x85, 0x30, 0x4e, 0xa3, 0x7f, 0x71, 0x9a, 0xbe, 0x83, 0x76, 0xd1, 0xc3, 0xac, 0x4a, 0xa5,
0xbd, 0x55, 0x6a, 0x15, 0x04, 0x59, 0xa6, 0x07, 0x4f, 0xd1, 0x53, 0xa8, 0x6f, 0x5a, 0x02, 0x7b,
0x37, 0xab, 0x25, 0x79, 0x3b, 0xbe, 0x06, 0x60, 0x9c, 0x24, 0xfc, 0xbe, 0xa3, 0xd0, 0x90, 0x68,
0x49, 0x7d, 0x0a, 0x75, 0x1a, 0xf9, 0x19, 0xb1, 0xb2, 0x7f, 0x47, 0x1a, 0xf9, 0x92, 0xb6, 0x33,
0x7d, 0xd5, 0x07, 0x4d, 0xdf, 0xfb, 0x57, 0xb0, 0xf6, 0x0f, 0x57, 0x70, 0x33, 0x63, 0xf5, 0xff,
0x70, 0xc6, 0xb6, 0xaf, 0x6d, 0xeb, 0xdd, 0x6b, 0x7b, 0xfc, 0xdb, 0x01, 0x3c, 0x2a, 0xd4, 0x2e,
0x28, 0x63, 0x24, 0xa0, 0xe8, 0x1b, 0x68, 0x2d, 0xb3, 0xcf, 0xec, 0xe0, 0xca, 0xfe, 0x7b, 0x93,
0xe3, 0xe5, 0xc9, 0x67, 0x50, 0x67, 0xf4, 0x96, 0x26, 0x21, 0x5f, 0xcb, 0xc9, 0xeb, 0x9c, 0x8d,
0x1f, 0x78, 0xac, 0xdc, 0x88, 0x96, 0xff, 0x3a, 0xb9, 0x1a, 0xde, 0xe8, 0x8a, 0x37, 0x70, 0x63,
0x91, 0xde, 0xf1, 0xe2, 0x0d, 0x2c, 0x6c, 0xd0, 0x3b, 0x7e, 0x7c, 0x09, 0x8f, 0x76, 0xf8, 0xa8,
0x07, 0x8f, 0x2f, 0x4c, 0xc7, 0x19, 0x4c, 0x4c, 0xcf, 0x31, 0xaf, 0x4c, 0x6c, 0xb9, 0xaf, 0xbd,
0x4b, 0xdb, 0x99, 0x9a, 0x86, 0x35, 0xb6, 0xcc, 0x51, 0xf7, 0x7f, 0xa8, 0x0e, 0x65, 0xcb, 0x1e,
0xbf, 0xe8, 0x2a, 0xa8, 0x09, 0xb5, 0x57, 0x03, 0x6c, 0x5b, 0xf6, 0xa4, 0x7b, 0x80, 0x1a, 0x50,
0x31, 0x31, 0x7e, 0x81, 0xbb, 0xa5, 0x27, 0x13, 0x68, 0x15, 0x36, 0xdd, 0xf5, 0x8a, 0xa2, 0x8f,
0xe1, 0x23, 0x17, 0x0f, 0x6c, 0x67, 0x6c, 0x62, 0xcf, 0x7d, 0x3d, 0x35, 0x77, 0x04, 0x1b, 0x50,
0x19, 0x0e, 0x5c, 0xe3, 0xfb, 0xae, 0x82, 0xda, 0xd0, 0x70, 0x5c, 0x6c, 0x0e, 0x2e, 0xa4, 0xe6,
0x93, 0x9f, 0x15, 0x68, 0xbf, 0xd3, 0x47, 0xf4, 0x09, 0x1c, 0x6d, 0xa4, 0x1c, 0x77, 0xe0, 0xee,
0x6a, 0xb5, 0xa0, 0x6e, 0xd9, 0x03, 0xc3, 0xb5, 0xae, 0xcc, 0xcc, 0xe0, 0xd4, 0xb4, 0x47, 0x99,
0xc1, 0x26, 0xd4, 0xf0, 0xa5, 0x2d, 0xdd, 0x96, 0xe4, 0x46, 0x97, 0x86, 0x61, 0x9a, 0x23, 0x73,
0xd4, 0x2d, 0x23, 0x80, 0xea, 0x78, 0x60, 0x3d, 0x37, 0x47, 0xdd, 0x8a, 0x48, 0x19, 0x03, 0xdb,
0x30, 0x9f, 0x8b, 0x65, 0x75, 0xf8, 0x97, 0x02, 0x5f, 0xcc, 0xe3, 0xe5, 0xfd, 0xda, 0x33, 0xdc,
0xd8, 0x9d, 0x8a, 0x09, 0x98, 0x2a, 0x3f, 0xbe, 0xcc, 0x79, 0x41, 0xbc, 0x20, 0x51, 0xa0, 0xc5,
0x49, 0xa0, 0x07, 0x34, 0x92, 0xf3, 0xa1, 0x67, 0x29, 0xb2, 0x0a, 0xd9, 0x9e, 0x3f, 0xf6, 0x67,
0xdb, 0xeb, 0x5f, 0x0e, 0x2a, 0x13, 0x63, 0x38, 0x72, 0x7f, 0x3d, 0x38, 0x99, 0x64, 0xda, 0x86,
0xf4, 0x34, 0x0c, 0x83, 0x97, 0xd2, 0x93, 0x78, 0xb8, 0x0a, 0x1b, 0xda, 0xd5, 0xe9, 0xef, 0x05,
0xee, 0x5a, 0xe2, 0xae, 0x0b, 0xdc, 0xf5, 0x36, 0xee, 0xfa, 0xea, 0x74, 0x56, 0x95, 0xae, 0xbe,
0xfc, 0x3b, 0x00, 0x00, 0xff, 0xff, 0xf0, 0xc4, 0x0e, 0x43, 0x6d, 0x08, 0x00, 0x00,
// 922 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x56, 0xdd, 0x6e, 0xe3, 0x44,
0x14, 0xc6, 0xf9, 0xcf, 0x71, 0x92, 0x8d, 0x46, 0x2c, 0x35, 0xd5, 0x02, 0xa1, 0xa2, 0x52, 0xd8,
0x0b, 0x5b, 0x2d, 0x5d, 0x21, 0xb4, 0x02, 0x94, 0x1f, 0x27, 0x04, 0x6d, 0xb3, 0xd9, 0xb1, 0xdb,
0xd5, 0xa2, 0x4a, 0xd6, 0x24, 0x9e, 0x7a, 0x2d, 0x25, 0xb6, 0x99, 0x19, 0x77, 0x9b, 0x87, 0xe0,
0x25, 0xb8, 0xe4, 0x82, 0x07, 0xe1, 0x82, 0xd7, 0xe0, 0x35, 0x90, 0xc7, 0x76, 0x94, 0xcd, 0x56,
0x4a, 0x8b, 0xc4, 0x55, 0xe7, 0xcc, 0xf9, 0xbe, 0xaf, 0xdf, 0x9c, 0x1f, 0x2b, 0x70, 0xe6, 0x85,
0xa1, 0xb7, 0xa4, 0xc6, 0x62, 0x19, 0xc6, 0xae, 0x31, 0xf7, 0xbd, 0x5f, 0x63, 0xca, 0xd6, 0x86,
0x4b, 0x04, 0x11, 0x8c, 0x04, 0xfc, 0x9a, 0x32, 0xe3, 0xe6, 0xc4, 0xc8, 0xcf, 0x7a, 0xc4, 0x42,
0x11, 0xa2, 0xe3, 0x94, 0xa5, 0x4b, 0x96, 0x9e, 0xb3, 0xf4, 0x6d, 0x96, 0x7e, 0x73, 0x72, 0xf8,
0x24, 0x13, 0x27, 0x91, 0x6f, 0x90, 0x20, 0x08, 0x05, 0x11, 0x7e, 0x18, 0xf0, 0x54, 0x64, 0x93,
0x95, 0xd1, 0x3c, 0xbe, 0x36, 0xb8, 0x60, 0xf1, 0x42, 0x64, 0xd9, 0x2f, 0x76, 0xb3, 0xc2, 0x5f,
0x51, 0x2e, 0xc8, 0x2a, 0xca, 0x00, 0x07, 0x19, 0x80, 0x45, 0x0b, 0x83, 0x0b, 0x22, 0xe2, 0x4c,
0xf7, 0xe8, 0xef, 0x12, 0xb4, 0xec, 0xcc, 0xc5, 0x20, 0x0c, 0xae, 0x7d, 0x0f, 0x21, 0x28, 0x05,
0x64, 0x45, 0x35, 0xa5, 0xa3, 0x74, 0xeb, 0x58, 0x9e, 0xd1, 0x19, 0x7c, 0xe2, 0x52, 0x2e, 0xfc,
0x40, 0x9a, 0x72, 0x12, 0xef, 0x9c, 0x0a, 0xc7, 0x77, 0xb5, 0x82, 0x44, 0x7d, 0xbc, 0x95, 0x1d,
0xa6, 0xc9, 0x89, 0x8b, 0xbe, 0x84, 0x86, 0xeb, 0xf3, 0x68, 0x49, 0xd6, 0x8e, 0x54, 0x2c, 0x4a,
0xac, 0x9a, 0xdd, 0x4d, 0x13, 0xe1, 0xaf, 0xa0, 0x95, 0x88, 0x39, 0x3c, 0x8c, 0xd9, 0x82, 0x26,
0x82, 0x65, 0x09, 0x6a, 0x24, 0xb7, 0x96, 0xbc, 0x9c, 0xb8, 0xc8, 0x80, 0x4a, 0x44, 0x18, 0x59,
0x71, 0xad, 0xde, 0x51, 0xba, 0xea, 0xe9, 0x81, 0x9e, 0xd5, 0x34, 0x7f, 0xb0, 0x6e, 0xc9, 0x72,
0xe0, 0x0c, 0x86, 0x0e, 0xa1, 0xc6, 0x17, 0x6f, 0xa9, 0x1b, 0x2f, 0xa9, 0x56, 0x95, 0x82, 0x9b,
0x18, 0x7d, 0x0b, 0x9a, 0xfc, 0x97, 0x8c, 0x5e, 0x33, 0xca, 0xdf, 0x3a, 0xef, 0xfc, 0xc0, 0x0d,
0xdf, 0x39, 0x2e, 0x59, 0x73, 0xad, 0xd1, 0x51, 0xba, 0x65, 0xfc, 0x38, 0xc9, 0xe3, 0x34, 0xfd,
0x5a, 0x66, 0x87, 0x64, 0x2d, 0x45, 0x5d, 0x9f, 0x93, 0xf9, 0x92, 0xba, 0x5a, 0xb3, 0xa3, 0x74,
0x6b, 0x78, 0x13, 0xa3, 0xe7, 0xa0, 0xc6, 0x91, 0x4b, 0x04, 0x75, 0x92, 0xd2, 0x6b, 0x25, 0x69,
0xf3, 0xf0, 0x03, 0x9b, 0x76, 0xde, 0x17, 0x0c, 0x29, 0x3c, 0xb9, 0x40, 0x3f, 0x40, 0x33, 0xa0,
0xb7, 0xc2, 0x61, 0x71, 0x90, 0xd2, 0x6b, 0x7b, 0xe9, 0x6a, 0x42, 0xc0, 0x71, 0x20, 0xf9, 0x3f,
0x43, 0x39, 0x69, 0x2a, 0xd5, 0xa0, 0xa3, 0x74, 0x5b, 0xa7, 0x67, 0xfa, 0xbd, 0x26, 0x4e, 0xcf,
0xfb, 0x6e, 0x25, 0x5c, 0x9c, 0x4a, 0xa0, 0x03, 0xa8, 0xc6, 0x9c, 0xb2, 0xa4, 0x13, 0x6a, 0x47,
0xe9, 0x16, 0x71, 0x25, 0x09, 0x27, 0x2e, 0x3a, 0x4e, 0x3b, 0x95, 0xb4, 0x9d, 0x51, 0xcf, 0x0f,
0x03, 0xad, 0x25, 0x0b, 0xdb, 0xcc, 0x6e, 0xb1, 0xbc, 0x3c, 0xfa, 0xad, 0x0c, 0x6a, 0x2e, 0x8c,
0xe3, 0xe0, 0xce, 0x69, 0xfa, 0x11, 0x9a, 0x79, 0x37, 0xd2, 0xf7, 0x16, 0xf7, 0xbe, 0xb7, 0x91,
0x13, 0xe4, 0x83, 0x9f, 0x41, 0x6d, 0x53, 0x2b, 0xd8, 0xcb, 0xad, 0xb2, 0xac, 0x4e, 0xcf, 0xa0,
0x41, 0x19, 0x0b, 0x99, 0x93, 0xae, 0x80, 0xf6, 0x58, 0x52, 0x51, 0x4e, 0x65, 0xd1, 0x42, 0xb7,
0x64, 0x06, 0xab, 0x12, 0x97, 0x06, 0xe8, 0x3b, 0x00, 0x2e, 0x08, 0x13, 0xf7, 0x6d, 0x6d, 0x5d,
0xa2, 0x73, 0xa3, 0x34, 0x70, 0x53, 0x62, 0x79, 0xbf, 0x51, 0x1a, 0xb8, 0x92, 0xb6, 0x33, 0x4d,
0x95, 0x07, 0x4d, 0xd3, 0x83, 0x97, 0xe5, 0xbf, 0x2d, 0xf7, 0x87, 0x9b, 0x5b, 0xbd, 0x63, 0x73,
0x37, 0xa3, 0x59, 0xfb, 0x1f, 0x47, 0x73, 0x7b, 0xdb, 0x1b, 0xef, 0x6f, 0xfb, 0xd1, 0x9f, 0x05,
0x78, 0x94, 0xab, 0x9d, 0x53, 0xce, 0x89, 0x47, 0xd1, 0xf7, 0xd0, 0x58, 0xa5, 0xc7, 0xb4, 0xbe,
0xca, 0xfe, 0x75, 0xcb, 0xf0, 0xb2, 0xc0, 0x73, 0xa8, 0x71, 0x7a, 0x43, 0x99, 0x2f, 0xd6, 0xb2,
0x42, 0xad, 0xd3, 0xd1, 0x03, 0x9f, 0x95, 0x19, 0xd1, 0xb3, 0xbf, 0x56, 0xa6, 0x86, 0x37, 0xba,
0xc9, 0xa7, 0x73, 0x63, 0x91, 0xde, 0x8a, 0xfc, 0xd3, 0x99, 0xdb, 0xa0, 0xb7, 0xe2, 0xe8, 0x02,
0x1e, 0xed, 0xf0, 0x51, 0x07, 0x9e, 0x9c, 0x9b, 0x96, 0xd5, 0x1b, 0x9b, 0x8e, 0x65, 0x5e, 0x9a,
0x78, 0x62, 0xbf, 0x71, 0x2e, 0xa6, 0xd6, 0xcc, 0x1c, 0x4c, 0x46, 0x13, 0x73, 0xd8, 0xfe, 0x08,
0xd5, 0xa0, 0x34, 0x99, 0x8e, 0x5e, 0xb6, 0x15, 0xa4, 0x42, 0xf5, 0x75, 0x0f, 0x4f, 0x27, 0xd3,
0x71, 0xbb, 0x80, 0xea, 0x50, 0x36, 0x31, 0x7e, 0x89, 0xdb, 0xc5, 0xa7, 0x63, 0x68, 0xe4, 0x36,
0xed, 0x75, 0x44, 0xd1, 0x67, 0xf0, 0xa9, 0x8d, 0x7b, 0x53, 0x6b, 0x64, 0x62, 0xc7, 0x7e, 0x33,
0x33, 0x77, 0x04, 0xeb, 0x50, 0xee, 0xf7, 0xec, 0xc1, 0x4f, 0x6d, 0x05, 0x35, 0xa1, 0x6e, 0xd9,
0xd8, 0xec, 0x9d, 0x4b, 0xcd, 0xa7, 0x1c, 0x9a, 0xef, 0xb5, 0x11, 0x7d, 0x0e, 0x87, 0x1b, 0x25,
0xcb, 0xee, 0xd9, 0xbb, 0x52, 0x2a, 0x54, 0x67, 0xe6, 0x74, 0x98, 0x3a, 0x52, 0xa1, 0x8a, 0x2f,
0xa6, 0xd2, 0x5e, 0x51, 0x2a, 0x5f, 0x0c, 0x06, 0xa6, 0x39, 0x34, 0x87, 0xed, 0x12, 0x02, 0xa8,
0x8c, 0x7a, 0x93, 0x17, 0xe6, 0xb0, 0x5d, 0x4e, 0x52, 0x83, 0xde, 0x74, 0x60, 0xbe, 0x48, 0xc2,
0x4a, 0xff, 0x1f, 0x05, 0xbe, 0x5e, 0x84, 0xab, 0xfb, 0xf5, 0xa3, 0xbf, 0x31, 0x38, 0x4b, 0x5a,
0x3e, 0x53, 0x7e, 0x79, 0x95, 0xf1, 0xbc, 0x70, 0x49, 0x02, 0x4f, 0x0f, 0x99, 0x67, 0x78, 0x34,
0x90, 0x03, 0x61, 0xa4, 0x29, 0x12, 0xf9, 0x7c, 0xcf, 0x0f, 0x80, 0xe7, 0xdb, 0xf1, 0xef, 0x85,
0xf2, 0x78, 0xd0, 0x1f, 0xda, 0x7f, 0x14, 0x8e, 0xc7, 0xa9, 0xf6, 0x40, 0x7a, 0xea, 0xfb, 0xde,
0x2b, 0xe9, 0x29, 0xd9, 0xa8, 0xdc, 0x86, 0x7e, 0x79, 0xf2, 0x57, 0x8e, 0xbb, 0x92, 0xb8, 0xab,
0x1c, 0x77, 0xb5, 0x8d, 0xbb, 0xba, 0x3c, 0x99, 0x57, 0xa4, 0xab, 0x6f, 0xfe, 0x0d, 0x00, 0x00,
0xff, 0xff, 0x0d, 0x74, 0xf0, 0x31, 0x95, 0x08, 0x00, 0x00,
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,582 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: google/cloud/dialogflow/v2beta1/context.proto
package dialogflow
import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
import _ "google.golang.org/genproto/googleapis/api/annotations"
import google_protobuf2 "github.com/golang/protobuf/ptypes/empty"
import google_protobuf3 "google.golang.org/genproto/protobuf/field_mask"
import google_protobuf4 "github.com/golang/protobuf/ptypes/struct"
import (
context "golang.org/x/net/context"
grpc "google.golang.org/grpc"
)
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// Represents a context.
type Context struct {
// Required. The unique identifier of the context. Format:
// `projects/<Project ID>/agent/sessions/<Session ID>/contexts/<Context ID>`,
// or
// `projects/<Project ID>/agent/runtimes/<Runtime ID>/sessions/<Session
// ID>/contexts/<Context ID>`.
// Note: Runtimes are under construction and will be available soon.
// The Context ID is always converted to lowercase.
// If <Runtime ID> is not specified, we assume default 'sandbox' runtime.
Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
// Optional. The number of conversational query requests after which the
// context expires. If set to `0` (the default) the context expires
// immediately. Contexts expire automatically after 10 minutes even if there
// are no matching queries.
LifespanCount int32 `protobuf:"varint,2,opt,name=lifespan_count,json=lifespanCount" json:"lifespan_count,omitempty"`
// Optional. The collection of parameters associated with this context.
// Refer to [this doc](https://dialogflow.com/docs/actions-and-parameters) for
// syntax.
Parameters *google_protobuf4.Struct `protobuf:"bytes,3,opt,name=parameters" json:"parameters,omitempty"`
}
func (m *Context) Reset() { *m = Context{} }
func (m *Context) String() string { return proto.CompactTextString(m) }
func (*Context) ProtoMessage() {}
func (*Context) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} }
func (m *Context) GetName() string {
if m != nil {
return m.Name
}
return ""
}
func (m *Context) GetLifespanCount() int32 {
if m != nil {
return m.LifespanCount
}
return 0
}
func (m *Context) GetParameters() *google_protobuf4.Struct {
if m != nil {
return m.Parameters
}
return nil
}
// The request message for [Contexts.ListContexts][google.cloud.dialogflow.v2beta1.Contexts.ListContexts].
type ListContextsRequest struct {
// Required. The session to list all contexts from.
// Format: `projects/<Project ID>/agent/sessions/<Session ID>` or
// `projects/<Project ID>/agent/runtimes/<Runtime ID>/sessions/<Session ID>`.
// Note: Runtimes are under construction and will be available soon.
// If <Runtime ID> is not specified, we assume default 'sandbox' runtime.
Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"`
// Optional. The maximum number of items to return in a single page. By
// default 100 and at most 1000.
PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"`
// Optional. The next_page_token value returned from a previous list request.
PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"`
}
func (m *ListContextsRequest) Reset() { *m = ListContextsRequest{} }
func (m *ListContextsRequest) String() string { return proto.CompactTextString(m) }
func (*ListContextsRequest) ProtoMessage() {}
func (*ListContextsRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} }
func (m *ListContextsRequest) GetParent() string {
if m != nil {
return m.Parent
}
return ""
}
func (m *ListContextsRequest) GetPageSize() int32 {
if m != nil {
return m.PageSize
}
return 0
}
func (m *ListContextsRequest) GetPageToken() string {
if m != nil {
return m.PageToken
}
return ""
}
// The response message for [Contexts.ListContexts][google.cloud.dialogflow.v2beta1.Contexts.ListContexts].
type ListContextsResponse struct {
// The list of contexts. There will be a maximum number of items
// returned based on the page_size field in the request.
Contexts []*Context `protobuf:"bytes,1,rep,name=contexts" json:"contexts,omitempty"`
// Token to retrieve the next page of results, or empty if there are no
// more results in the list.
NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"`
}
func (m *ListContextsResponse) Reset() { *m = ListContextsResponse{} }
func (m *ListContextsResponse) String() string { return proto.CompactTextString(m) }
func (*ListContextsResponse) ProtoMessage() {}
func (*ListContextsResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} }
func (m *ListContextsResponse) GetContexts() []*Context {
if m != nil {
return m.Contexts
}
return nil
}
func (m *ListContextsResponse) GetNextPageToken() string {
if m != nil {
return m.NextPageToken
}
return ""
}
// The request message for [Contexts.GetContext][google.cloud.dialogflow.v2beta1.Contexts.GetContext].
type GetContextRequest struct {
// Required. The name of the context. Format:
// `projects/<Project ID>/agent/sessions/<Session ID>/contexts/<Context ID>`
// or `projects/<Project ID>/agent/runtimes/<Runtime ID>/sessions/<Session
// ID>/contexts/<Context ID>`. Note: Runtimes are under construction and will
// be available soon. If <Runtime ID> is not specified, we assume default
// 'sandbox' runtime.
Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
}
func (m *GetContextRequest) Reset() { *m = GetContextRequest{} }
func (m *GetContextRequest) String() string { return proto.CompactTextString(m) }
func (*GetContextRequest) ProtoMessage() {}
func (*GetContextRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} }
func (m *GetContextRequest) GetName() string {
if m != nil {
return m.Name
}
return ""
}
// The request message for [Contexts.CreateContext][google.cloud.dialogflow.v2beta1.Contexts.CreateContext].
type CreateContextRequest struct {
// Required. The session to create a context for.
// Format: `projects/<Project ID>/agent/sessions/<Session ID>` or
// `projects/<Project ID>/agent/runtimes/<Runtime ID>/sessions/<Session ID>`.
// Note: Runtimes are under construction and will be available soon.
// If <Runtime ID> is not specified, we assume default 'sandbox' runtime.
Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"`
// Required. The context to create.
Context *Context `protobuf:"bytes,2,opt,name=context" json:"context,omitempty"`
}
func (m *CreateContextRequest) Reset() { *m = CreateContextRequest{} }
func (m *CreateContextRequest) String() string { return proto.CompactTextString(m) }
func (*CreateContextRequest) ProtoMessage() {}
func (*CreateContextRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} }
func (m *CreateContextRequest) GetParent() string {
if m != nil {
return m.Parent
}
return ""
}
func (m *CreateContextRequest) GetContext() *Context {
if m != nil {
return m.Context
}
return nil
}
// The request message for [Contexts.UpdateContext][google.cloud.dialogflow.v2beta1.Contexts.UpdateContext].
type UpdateContextRequest struct {
// Required. The context to update.
Context *Context `protobuf:"bytes,1,opt,name=context" json:"context,omitempty"`
// Optional. The mask to control which fields get updated.
UpdateMask *google_protobuf3.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"`
}
func (m *UpdateContextRequest) Reset() { *m = UpdateContextRequest{} }
func (m *UpdateContextRequest) String() string { return proto.CompactTextString(m) }
func (*UpdateContextRequest) ProtoMessage() {}
func (*UpdateContextRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} }
func (m *UpdateContextRequest) GetContext() *Context {
if m != nil {
return m.Context
}
return nil
}
func (m *UpdateContextRequest) GetUpdateMask() *google_protobuf3.FieldMask {
if m != nil {
return m.UpdateMask
}
return nil
}
// The request message for [Contexts.DeleteContext][google.cloud.dialogflow.v2beta1.Contexts.DeleteContext].
type DeleteContextRequest struct {
// Required. The name of the context to delete. Format:
// `projects/<Project ID>/agent/sessions/<Session ID>/contexts/<Context ID>`
// or `projects/<Project ID>/agent/runtimes/<Runtime ID>/sessions/<Session
// ID>/contexts/<Context ID>`. Note: Runtimes are under construction and will
// be available soon. If <Runtime ID> is not specified, we assume default
// 'sandbox' runtime.
Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
}
func (m *DeleteContextRequest) Reset() { *m = DeleteContextRequest{} }
func (m *DeleteContextRequest) String() string { return proto.CompactTextString(m) }
func (*DeleteContextRequest) ProtoMessage() {}
func (*DeleteContextRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{6} }
func (m *DeleteContextRequest) GetName() string {
if m != nil {
return m.Name
}
return ""
}
// The request message for [Contexts.DeleteAllContexts][google.cloud.dialogflow.v2beta1.Contexts.DeleteAllContexts].
type DeleteAllContextsRequest struct {
// Required. The name of the session to delete all contexts from. Format:
// `projects/<Project ID>/agent/sessions/<Session ID>` or `projects/<Project
// ID>/agent/runtimes/<Runtime ID>/sessions/<Session ID>`. Note: Runtimes are
// under construction and will be available soon. If <Runtime ID> is not
// specified we assume default 'sandbox' runtime.
Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"`
}
func (m *DeleteAllContextsRequest) Reset() { *m = DeleteAllContextsRequest{} }
func (m *DeleteAllContextsRequest) String() string { return proto.CompactTextString(m) }
func (*DeleteAllContextsRequest) ProtoMessage() {}
func (*DeleteAllContextsRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{7} }
func (m *DeleteAllContextsRequest) GetParent() string {
if m != nil {
return m.Parent
}
return ""
}
func init() {
proto.RegisterType((*Context)(nil), "google.cloud.dialogflow.v2beta1.Context")
proto.RegisterType((*ListContextsRequest)(nil), "google.cloud.dialogflow.v2beta1.ListContextsRequest")
proto.RegisterType((*ListContextsResponse)(nil), "google.cloud.dialogflow.v2beta1.ListContextsResponse")
proto.RegisterType((*GetContextRequest)(nil), "google.cloud.dialogflow.v2beta1.GetContextRequest")
proto.RegisterType((*CreateContextRequest)(nil), "google.cloud.dialogflow.v2beta1.CreateContextRequest")
proto.RegisterType((*UpdateContextRequest)(nil), "google.cloud.dialogflow.v2beta1.UpdateContextRequest")
proto.RegisterType((*DeleteContextRequest)(nil), "google.cloud.dialogflow.v2beta1.DeleteContextRequest")
proto.RegisterType((*DeleteAllContextsRequest)(nil), "google.cloud.dialogflow.v2beta1.DeleteAllContextsRequest")
}
// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConn
// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion4
// Client API for Contexts service
type ContextsClient interface {
// Returns the list of all contexts in the specified session.
ListContexts(ctx context.Context, in *ListContextsRequest, opts ...grpc.CallOption) (*ListContextsResponse, error)
// Retrieves the specified context.
GetContext(ctx context.Context, in *GetContextRequest, opts ...grpc.CallOption) (*Context, error)
// Creates a context.
CreateContext(ctx context.Context, in *CreateContextRequest, opts ...grpc.CallOption) (*Context, error)
// Updates the specified context.
UpdateContext(ctx context.Context, in *UpdateContextRequest, opts ...grpc.CallOption) (*Context, error)
// Deletes the specified context.
DeleteContext(ctx context.Context, in *DeleteContextRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error)
// Deletes all active contexts in the specified session.
DeleteAllContexts(ctx context.Context, in *DeleteAllContextsRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error)
}
type contextsClient struct {
cc *grpc.ClientConn
}
func NewContextsClient(cc *grpc.ClientConn) ContextsClient {
return &contextsClient{cc}
}
func (c *contextsClient) ListContexts(ctx context.Context, in *ListContextsRequest, opts ...grpc.CallOption) (*ListContextsResponse, error) {
out := new(ListContextsResponse)
err := grpc.Invoke(ctx, "/google.cloud.dialogflow.v2beta1.Contexts/ListContexts", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *contextsClient) GetContext(ctx context.Context, in *GetContextRequest, opts ...grpc.CallOption) (*Context, error) {
out := new(Context)
err := grpc.Invoke(ctx, "/google.cloud.dialogflow.v2beta1.Contexts/GetContext", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *contextsClient) CreateContext(ctx context.Context, in *CreateContextRequest, opts ...grpc.CallOption) (*Context, error) {
out := new(Context)
err := grpc.Invoke(ctx, "/google.cloud.dialogflow.v2beta1.Contexts/CreateContext", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *contextsClient) UpdateContext(ctx context.Context, in *UpdateContextRequest, opts ...grpc.CallOption) (*Context, error) {
out := new(Context)
err := grpc.Invoke(ctx, "/google.cloud.dialogflow.v2beta1.Contexts/UpdateContext", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *contextsClient) DeleteContext(ctx context.Context, in *DeleteContextRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) {
out := new(google_protobuf2.Empty)
err := grpc.Invoke(ctx, "/google.cloud.dialogflow.v2beta1.Contexts/DeleteContext", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *contextsClient) DeleteAllContexts(ctx context.Context, in *DeleteAllContextsRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) {
out := new(google_protobuf2.Empty)
err := grpc.Invoke(ctx, "/google.cloud.dialogflow.v2beta1.Contexts/DeleteAllContexts", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// Server API for Contexts service
type ContextsServer interface {
// Returns the list of all contexts in the specified session.
ListContexts(context.Context, *ListContextsRequest) (*ListContextsResponse, error)
// Retrieves the specified context.
GetContext(context.Context, *GetContextRequest) (*Context, error)
// Creates a context.
CreateContext(context.Context, *CreateContextRequest) (*Context, error)
// Updates the specified context.
UpdateContext(context.Context, *UpdateContextRequest) (*Context, error)
// Deletes the specified context.
DeleteContext(context.Context, *DeleteContextRequest) (*google_protobuf2.Empty, error)
// Deletes all active contexts in the specified session.
DeleteAllContexts(context.Context, *DeleteAllContextsRequest) (*google_protobuf2.Empty, error)
}
func RegisterContextsServer(s *grpc.Server, srv ContextsServer) {
s.RegisterService(&_Contexts_serviceDesc, srv)
}
func _Contexts_ListContexts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ListContextsRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(ContextsServer).ListContexts(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.dialogflow.v2beta1.Contexts/ListContexts",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ContextsServer).ListContexts(ctx, req.(*ListContextsRequest))
}
return interceptor(ctx, in, info, handler)
}
func _Contexts_GetContext_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetContextRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(ContextsServer).GetContext(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.dialogflow.v2beta1.Contexts/GetContext",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ContextsServer).GetContext(ctx, req.(*GetContextRequest))
}
return interceptor(ctx, in, info, handler)
}
func _Contexts_CreateContext_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(CreateContextRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(ContextsServer).CreateContext(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.dialogflow.v2beta1.Contexts/CreateContext",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ContextsServer).CreateContext(ctx, req.(*CreateContextRequest))
}
return interceptor(ctx, in, info, handler)
}
func _Contexts_UpdateContext_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(UpdateContextRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(ContextsServer).UpdateContext(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.dialogflow.v2beta1.Contexts/UpdateContext",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ContextsServer).UpdateContext(ctx, req.(*UpdateContextRequest))
}
return interceptor(ctx, in, info, handler)
}
func _Contexts_DeleteContext_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(DeleteContextRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(ContextsServer).DeleteContext(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.dialogflow.v2beta1.Contexts/DeleteContext",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ContextsServer).DeleteContext(ctx, req.(*DeleteContextRequest))
}
return interceptor(ctx, in, info, handler)
}
func _Contexts_DeleteAllContexts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(DeleteAllContextsRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(ContextsServer).DeleteAllContexts(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.dialogflow.v2beta1.Contexts/DeleteAllContexts",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ContextsServer).DeleteAllContexts(ctx, req.(*DeleteAllContextsRequest))
}
return interceptor(ctx, in, info, handler)
}
var _Contexts_serviceDesc = grpc.ServiceDesc{
ServiceName: "google.cloud.dialogflow.v2beta1.Contexts",
HandlerType: (*ContextsServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "ListContexts",
Handler: _Contexts_ListContexts_Handler,
},
{
MethodName: "GetContext",
Handler: _Contexts_GetContext_Handler,
},
{
MethodName: "CreateContext",
Handler: _Contexts_CreateContext_Handler,
},
{
MethodName: "UpdateContext",
Handler: _Contexts_UpdateContext_Handler,
},
{
MethodName: "DeleteContext",
Handler: _Contexts_DeleteContext_Handler,
},
{
MethodName: "DeleteAllContexts",
Handler: _Contexts_DeleteAllContexts_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "google/cloud/dialogflow/v2beta1/context.proto",
}
func init() { proto.RegisterFile("google/cloud/dialogflow/v2beta1/context.proto", fileDescriptor1) }
var fileDescriptor1 = []byte{
// 793 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0xcd, 0x6f, 0xd3, 0x48,
0x14, 0xd7, 0xb8, 0xbb, 0xfd, 0x98, 0x34, 0xbb, 0xea, 0x6c, 0xd4, 0x8d, 0xd2, 0xae, 0x1a, 0x79,
0xb5, 0x4b, 0x14, 0x09, 0x5b, 0x98, 0x2f, 0x41, 0x05, 0x52, 0x9b, 0xd0, 0xaa, 0x52, 0x91, 0xaa,
0xb4, 0x70, 0xe8, 0x25, 0x9a, 0x26, 0x2f, 0x96, 0xa9, 0x33, 0x63, 0x3c, 0x13, 0x28, 0x45, 0x39,
0xf0, 0x71, 0xe1, 0xc4, 0x01, 0x09, 0xc4, 0x09, 0x89, 0x03, 0x87, 0xfe, 0x3b, 0xfc, 0x0b, 0x3d,
0x72, 0xe0, 0xc8, 0x0d, 0x64, 0x7b, 0x9c, 0x8f, 0xc6, 0x25, 0x49, 0xcb, 0xcd, 0x7e, 0xf3, 0x7b,
0x6f, 0x7e, 0xbf, 0x37, 0xbf, 0x79, 0x36, 0xbe, 0x68, 0x73, 0x6e, 0xbb, 0x60, 0xd6, 0x5c, 0xde,
0xaa, 0x9b, 0x75, 0x87, 0xba, 0xdc, 0x6e, 0xb8, 0xfc, 0xb1, 0xf9, 0xc8, 0xda, 0x03, 0x49, 0x2f,
0x99, 0x35, 0xce, 0x24, 0x1c, 0x48, 0xc3, 0xf3, 0xb9, 0xe4, 0x64, 0x29, 0x82, 0x1b, 0x21, 0xdc,
0xe8, 0xc2, 0x0d, 0x05, 0xcf, 0x2d, 0xaa, 0x7a, 0xd4, 0x73, 0x4c, 0xca, 0x18, 0x97, 0x54, 0x3a,
0x9c, 0x89, 0x28, 0x3d, 0xb7, 0xa0, 0x56, 0xc3, 0xb7, 0xbd, 0x56, 0xc3, 0x84, 0xa6, 0x27, 0x9f,
0xa8, 0xc5, 0xfc, 0xc9, 0xc5, 0x86, 0x03, 0x6e, 0xbd, 0xda, 0xa4, 0x62, 0x5f, 0x21, 0x16, 0x4f,
0x22, 0x84, 0xf4, 0x5b, 0x35, 0xc5, 0x4d, 0x6f, 0xe3, 0xa9, 0x52, 0x44, 0x96, 0x10, 0xfc, 0x1b,
0xa3, 0x4d, 0xc8, 0xa2, 0x3c, 0x2a, 0xcc, 0x54, 0xc2, 0x67, 0xf2, 0x1f, 0xfe, 0xc3, 0x75, 0x1a,
0x20, 0x3c, 0xca, 0xaa, 0x35, 0xde, 0x62, 0x32, 0xab, 0xe5, 0x51, 0xe1, 0xf7, 0x4a, 0x3a, 0x8e,
0x96, 0x82, 0x20, 0xb9, 0x8e, 0xb1, 0x47, 0x7d, 0xda, 0x04, 0x09, 0xbe, 0xc8, 0x4e, 0xe4, 0x51,
0x21, 0x65, 0xfd, 0x6d, 0x28, 0xd9, 0xf1, 0xc6, 0xc6, 0x76, 0xb8, 0x71, 0xa5, 0x07, 0xaa, 0x3b,
0xf8, 0xaf, 0x4d, 0x47, 0x48, 0x45, 0x41, 0x54, 0xe0, 0x61, 0x0b, 0x84, 0x24, 0xf3, 0x78, 0xd2,
0xa3, 0x3e, 0x30, 0xa9, 0xc8, 0xa8, 0x37, 0xb2, 0x80, 0x67, 0x3c, 0x6a, 0x43, 0x55, 0x38, 0x87,
0xa0, 0x98, 0x4c, 0x07, 0x81, 0x6d, 0xe7, 0x10, 0xc8, 0x3f, 0x01, 0x09, 0x1b, 0xaa, 0x92, 0xef,
0x03, 0x0b, 0x49, 0xcc, 0x54, 0x42, 0xf8, 0x4e, 0x10, 0xd0, 0x5f, 0x22, 0x9c, 0xe9, 0xdf, 0x4b,
0x78, 0x9c, 0x09, 0x20, 0x65, 0x3c, 0xad, 0xce, 0x4b, 0x64, 0x51, 0x7e, 0xa2, 0x90, 0xb2, 0x0a,
0xc6, 0x90, 0x13, 0x33, 0x54, 0x91, 0x4a, 0x27, 0x93, 0xfc, 0x8f, 0xff, 0x64, 0x70, 0x20, 0xab,
0x3d, 0x14, 0xb4, 0x90, 0x42, 0x3a, 0x08, 0x6f, 0x75, 0x68, 0x5c, 0xc0, 0x73, 0xeb, 0x10, 0x93,
0x88, 0xf5, 0x26, 0xb4, 0x5e, 0xf7, 0x71, 0xa6, 0xe4, 0x03, 0x95, 0x70, 0x02, 0x7b, 0x5a, 0x6f,
0x56, 0xf1, 0x94, 0x22, 0x13, 0x6e, 0x3c, 0x8e, 0x8a, 0x38, 0x51, 0x7f, 0x87, 0x70, 0xe6, 0x9e,
0x57, 0x1f, 0xdc, 0xb4, 0xa7, 0x38, 0x3a, 0x63, 0x71, 0xb2, 0x8c, 0x53, 0xad, 0xb0, 0x76, 0xe8,
0x4e, 0x45, 0x32, 0x37, 0xe0, 0x92, 0xb5, 0xc0, 0xc0, 0x77, 0xa9, 0xd8, 0xaf, 0xe0, 0x08, 0x1e,
0x3c, 0xeb, 0x45, 0x9c, 0x29, 0x83, 0x0b, 0x03, 0xc4, 0x92, 0x3a, 0x67, 0xe1, 0x6c, 0x84, 0x5d,
0x71, 0xdd, 0x11, 0x9d, 0x65, 0x7d, 0x4f, 0xe1, 0xe9, 0x18, 0x4b, 0x9e, 0x69, 0x78, 0xb6, 0xd7,
0x2a, 0xe4, 0xca, 0x50, 0xb5, 0x09, 0x2e, 0xce, 0x5d, 0x1d, 0x33, 0x2b, 0xf2, 0xa3, 0xfe, 0x02,
0x3d, 0xff, 0x7c, 0xfc, 0x46, 0x6b, 0x93, 0x6b, 0x9d, 0x79, 0xf2, 0x34, 0x62, 0x79, 0xcb, 0xf3,
0xf9, 0x03, 0xa8, 0x49, 0x61, 0x16, 0x4d, 0x6a, 0x03, 0x93, 0xa6, 0x00, 0x21, 0x82, 0x51, 0x61,
0x16, 0xdb, 0xf1, 0xd0, 0x11, 0xbb, 0x25, 0xb2, 0x32, 0x3c, 0xd3, 0x6f, 0x31, 0xe9, 0x34, 0x21,
0x08, 0x24, 0x15, 0x21, 0x5f, 0x11, 0xc6, 0x5d, 0xa3, 0x12, 0x6b, 0xa8, 0x96, 0x01, 0x57, 0xe7,
0x46, 0xf6, 0x48, 0xa2, 0xe4, 0xe0, 0x28, 0x7f, 0x26, 0xb8, 0x43, 0xd5, 0x2c, 0xb6, 0xfb, 0x25,
0x27, 0x67, 0x26, 0x0a, 0xee, 0x2d, 0x42, 0x5e, 0x69, 0x38, 0xdd, 0x77, 0xe5, 0xc8, 0xf0, 0x13,
0x4c, 0xba, 0xa2, 0x63, 0x08, 0x7f, 0x1b, 0x09, 0x7f, 0x8d, 0xf4, 0x33, 0x1e, 0xf6, 0xcd, 0xf8,
0x7a, 0xed, 0x6e, 0xea, 0xe7, 0x3f, 0xf5, 0x4e, 0x35, 0xf2, 0x5e, 0xc3, 0xe9, 0xbe, 0x49, 0x30,
0x42, 0x2f, 0x92, 0x26, 0xc7, 0x18, 0xbd, 0xf8, 0x14, 0xf5, 0xe2, 0x03, 0xb2, 0x6e, 0x77, 0x85,
0xc4, 0x5f, 0xd2, 0x71, 0xdc, 0xd0, 0xed, 0xc9, 0x8e, 0xb5, 0x31, 0x6a, 0xa9, 0xa1, 0xf6, 0xe8,
0xf6, 0xe6, 0x18, 0xe1, 0x74, 0xdf, 0x30, 0x1a, 0xa1, 0x37, 0x49, 0xc3, 0x2b, 0x37, 0x3f, 0x30,
0xfc, 0xee, 0x04, 0x9f, 0xf6, 0xce, 0x75, 0x28, 0x9e, 0xf9, 0x3a, 0x14, 0x7f, 0xc1, 0x75, 0xf8,
0x82, 0xf0, 0xdc, 0xc0, 0x1c, 0x25, 0x37, 0x46, 0x94, 0x3a, 0x38, 0x7b, 0xc7, 0x92, 0x3b, 0xde,
0xc0, 0x2b, 0x9e, 0xdf, 0xfa, 0xab, 0x47, 0x08, 0xff, 0x5b, 0xe3, 0xcd, 0x61, 0xf2, 0x56, 0x67,
0x95, 0xac, 0xad, 0x40, 0xc4, 0x16, 0xda, 0xdd, 0x50, 0x09, 0x36, 0x77, 0x29, 0xb3, 0x0d, 0xee,
0xdb, 0xa6, 0x0d, 0x2c, 0x94, 0x68, 0x46, 0x4b, 0xd4, 0x73, 0xc4, 0xa9, 0xff, 0x8a, 0xcb, 0xdd,
0xd0, 0x37, 0x84, 0x3e, 0x6a, 0x5a, 0x79, 0xed, 0x48, 0x5b, 0x5a, 0x8f, 0x6a, 0x96, 0x42, 0x12,
0xe5, 0x2e, 0x89, 0xfb, 0x51, 0xd2, 0xde, 0x64, 0x58, 0xff, 0xf2, 0x8f, 0x00, 0x00, 0x00, 0xff,
0xff, 0x61, 0xec, 0x01, 0x66, 0x8a, 0x0a, 0x00, 0x00,
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,573 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: google/cloud/dialogflow/v2beta1/session_entity_type.proto
package dialogflow
import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
import _ "google.golang.org/genproto/googleapis/api/annotations"
import google_protobuf2 "github.com/golang/protobuf/ptypes/empty"
import google_protobuf3 "google.golang.org/genproto/protobuf/field_mask"
import (
context "golang.org/x/net/context"
grpc "google.golang.org/grpc"
)
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// The types of modifications for a session entity type.
type SessionEntityType_EntityOverrideMode int32
const (
// Not specified. This value should be never used.
SessionEntityType_ENTITY_OVERRIDE_MODE_UNSPECIFIED SessionEntityType_EntityOverrideMode = 0
// The collection of session entities overrides the collection of entities
// in the corresponding developer entity type.
SessionEntityType_ENTITY_OVERRIDE_MODE_OVERRIDE SessionEntityType_EntityOverrideMode = 1
// The collection of session entities extends the collection of entities in
// the corresponding developer entity type.
// Calls to `ListSessionEntityTypes`, `GetSessionEntityType`,
// `CreateSessionEntityType` and `UpdateSessionEntityType` return the full
// collection of entities from the developer entity type in the agent's
// default language and the session entity type.
SessionEntityType_ENTITY_OVERRIDE_MODE_SUPPLEMENT SessionEntityType_EntityOverrideMode = 2
)
var SessionEntityType_EntityOverrideMode_name = map[int32]string{
0: "ENTITY_OVERRIDE_MODE_UNSPECIFIED",
1: "ENTITY_OVERRIDE_MODE_OVERRIDE",
2: "ENTITY_OVERRIDE_MODE_SUPPLEMENT",
}
var SessionEntityType_EntityOverrideMode_value = map[string]int32{
"ENTITY_OVERRIDE_MODE_UNSPECIFIED": 0,
"ENTITY_OVERRIDE_MODE_OVERRIDE": 1,
"ENTITY_OVERRIDE_MODE_SUPPLEMENT": 2,
}
func (x SessionEntityType_EntityOverrideMode) String() string {
return proto.EnumName(SessionEntityType_EntityOverrideMode_name, int32(x))
}
func (SessionEntityType_EntityOverrideMode) EnumDescriptor() ([]byte, []int) {
return fileDescriptor5, []int{0, 0}
}
// Represents a session entity type.
//
// Extends or replaces a developer entity type at the user session level (we
// refer to the entity types defined at the agent level as "developer entity
// types").
//
// Note: session entity types apply to all queries, regardless of the language.
type SessionEntityType struct {
// Required. The unique identifier of this session entity type. Format:
// `projects/<Project ID>/agent/sessions/<Session ID>/entityTypes/<Entity Type
// Display Name>`, or
// `projects/<Project ID>/agent/runtimes/<Runtime ID>sessions/<Session
// ID>/entityTypes/<Entity Type Display Name>`.
// Note: Runtimes are under construction and will be available soon.
// If <Runtime ID> is not specified, we assume default 'sandbox' runtime.
Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
// Required. Indicates whether the additional data should override or
// supplement the developer entity type definition.
EntityOverrideMode SessionEntityType_EntityOverrideMode `protobuf:"varint,2,opt,name=entity_override_mode,json=entityOverrideMode,enum=google.cloud.dialogflow.v2beta1.SessionEntityType_EntityOverrideMode" json:"entity_override_mode,omitempty"`
// Required. The collection of entities associated with this session entity
// type.
Entities []*EntityType_Entity `protobuf:"bytes,3,rep,name=entities" json:"entities,omitempty"`
}
func (m *SessionEntityType) Reset() { *m = SessionEntityType{} }
func (m *SessionEntityType) String() string { return proto.CompactTextString(m) }
func (*SessionEntityType) ProtoMessage() {}
func (*SessionEntityType) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{0} }
func (m *SessionEntityType) GetName() string {
if m != nil {
return m.Name
}
return ""
}
func (m *SessionEntityType) GetEntityOverrideMode() SessionEntityType_EntityOverrideMode {
if m != nil {
return m.EntityOverrideMode
}
return SessionEntityType_ENTITY_OVERRIDE_MODE_UNSPECIFIED
}
func (m *SessionEntityType) GetEntities() []*EntityType_Entity {
if m != nil {
return m.Entities
}
return nil
}
// The request message for [SessionEntityTypes.ListSessionEntityTypes][google.cloud.dialogflow.v2beta1.SessionEntityTypes.ListSessionEntityTypes].
type ListSessionEntityTypesRequest struct {
// Required. The session to list all session entity types from.
// Format: `projects/<Project ID>/agent/sessions/<Session ID>` or
// `projects/<Project ID>/agent/runtimes/<Runtime ID>/sessions/<Session ID>`.
// Note: Runtimes are under construction and will be available soon.
// If <Runtime ID> is not specified, we assume default 'sandbox' runtime.
Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"`
// Optional. The maximum number of items to return in a single page. By
// default 100 and at most 1000.
PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"`
// Optional. The next_page_token value returned from a previous list request.
PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"`
}
func (m *ListSessionEntityTypesRequest) Reset() { *m = ListSessionEntityTypesRequest{} }
func (m *ListSessionEntityTypesRequest) String() string { return proto.CompactTextString(m) }
func (*ListSessionEntityTypesRequest) ProtoMessage() {}
func (*ListSessionEntityTypesRequest) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{1} }
func (m *ListSessionEntityTypesRequest) GetParent() string {
if m != nil {
return m.Parent
}
return ""
}
func (m *ListSessionEntityTypesRequest) GetPageSize() int32 {
if m != nil {
return m.PageSize
}
return 0
}
func (m *ListSessionEntityTypesRequest) GetPageToken() string {
if m != nil {
return m.PageToken
}
return ""
}
// The response message for [SessionEntityTypes.ListSessionEntityTypes][google.cloud.dialogflow.v2beta1.SessionEntityTypes.ListSessionEntityTypes].
type ListSessionEntityTypesResponse struct {
// The list of session entity types. There will be a maximum number of items
// returned based on the page_size field in the request.
SessionEntityTypes []*SessionEntityType `protobuf:"bytes,1,rep,name=session_entity_types,json=sessionEntityTypes" json:"session_entity_types,omitempty"`
// Token to retrieve the next page of results, or empty if there are no
// more results in the list.
NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"`
}
func (m *ListSessionEntityTypesResponse) Reset() { *m = ListSessionEntityTypesResponse{} }
func (m *ListSessionEntityTypesResponse) String() string { return proto.CompactTextString(m) }
func (*ListSessionEntityTypesResponse) ProtoMessage() {}
func (*ListSessionEntityTypesResponse) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{2} }
func (m *ListSessionEntityTypesResponse) GetSessionEntityTypes() []*SessionEntityType {
if m != nil {
return m.SessionEntityTypes
}
return nil
}
func (m *ListSessionEntityTypesResponse) GetNextPageToken() string {
if m != nil {
return m.NextPageToken
}
return ""
}
// The request message for [SessionEntityTypes.GetSessionEntityType][google.cloud.dialogflow.v2beta1.SessionEntityTypes.GetSessionEntityType].
type GetSessionEntityTypeRequest struct {
// Required. The name of the session entity type. Format:
// `projects/<Project ID>/agent/sessions/<Session ID>/entityTypes/<Entity Type
// Display Name>` or `projects/<Project ID>/agent/runtimes/<Runtime
// ID>/sessions/<Session ID>/entityTypes/<Entity Type Display Name>`. Note:
// Runtimes are under construction and will be available soon. If <Runtime ID>
// is not specified, we assume default 'sandbox' runtime.
Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
}
func (m *GetSessionEntityTypeRequest) Reset() { *m = GetSessionEntityTypeRequest{} }
func (m *GetSessionEntityTypeRequest) String() string { return proto.CompactTextString(m) }
func (*GetSessionEntityTypeRequest) ProtoMessage() {}
func (*GetSessionEntityTypeRequest) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{3} }
func (m *GetSessionEntityTypeRequest) GetName() string {
if m != nil {
return m.Name
}
return ""
}
// The request message for [SessionEntityTypes.CreateSessionEntityType][google.cloud.dialogflow.v2beta1.SessionEntityTypes.CreateSessionEntityType].
type CreateSessionEntityTypeRequest struct {
// Required. The session to create a session entity type for.
// Format: `projects/<Project ID>/agent/sessions/<Session ID>` or
// `projects/<Project ID>/agent/runtimes/<Runtime ID>/sessions/<Session ID>`.
// Note: Runtimes are under construction and will be available soon.
// If <Runtime ID> is not specified, we assume default 'sandbox' runtime.
Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"`
// Required. The session entity type to create.
SessionEntityType *SessionEntityType `protobuf:"bytes,2,opt,name=session_entity_type,json=sessionEntityType" json:"session_entity_type,omitempty"`
}
func (m *CreateSessionEntityTypeRequest) Reset() { *m = CreateSessionEntityTypeRequest{} }
func (m *CreateSessionEntityTypeRequest) String() string { return proto.CompactTextString(m) }
func (*CreateSessionEntityTypeRequest) ProtoMessage() {}
func (*CreateSessionEntityTypeRequest) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{4} }
func (m *CreateSessionEntityTypeRequest) GetParent() string {
if m != nil {
return m.Parent
}
return ""
}
func (m *CreateSessionEntityTypeRequest) GetSessionEntityType() *SessionEntityType {
if m != nil {
return m.SessionEntityType
}
return nil
}
// The request message for [SessionEntityTypes.UpdateSessionEntityType][google.cloud.dialogflow.v2beta1.SessionEntityTypes.UpdateSessionEntityType].
type UpdateSessionEntityTypeRequest struct {
// Required. The entity type to update. Format:
// `projects/<Project ID>/agent/sessions/<Session ID>/entityTypes/<Entity Type
// Display Name>` or `projects/<Project ID>/agent/runtimes/<Runtime
// ID>/sessions/<Session ID>/entityTypes/<Entity Type Display Name>`. Note:
// Runtimes are under construction and will be available soon. If <Runtime ID>
// is not specified, we assume default 'sandbox' runtime.
SessionEntityType *SessionEntityType `protobuf:"bytes,1,opt,name=session_entity_type,json=sessionEntityType" json:"session_entity_type,omitempty"`
// Optional. The mask to control which fields get updated.
UpdateMask *google_protobuf3.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"`
}
func (m *UpdateSessionEntityTypeRequest) Reset() { *m = UpdateSessionEntityTypeRequest{} }
func (m *UpdateSessionEntityTypeRequest) String() string { return proto.CompactTextString(m) }
func (*UpdateSessionEntityTypeRequest) ProtoMessage() {}
func (*UpdateSessionEntityTypeRequest) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{5} }
func (m *UpdateSessionEntityTypeRequest) GetSessionEntityType() *SessionEntityType {
if m != nil {
return m.SessionEntityType
}
return nil
}
func (m *UpdateSessionEntityTypeRequest) GetUpdateMask() *google_protobuf3.FieldMask {
if m != nil {
return m.UpdateMask
}
return nil
}
// The request message for [SessionEntityTypes.DeleteSessionEntityType][google.cloud.dialogflow.v2beta1.SessionEntityTypes.DeleteSessionEntityType].
type DeleteSessionEntityTypeRequest struct {
// Required. The name of the entity type to delete. Format:
// `projects/<Project ID>/agent/sessions/<Session ID>/entityTypes/<Entity Type
// Display Name>` or `projects/<Project ID>/agent/runtimes/<Runtime
// ID>/sessions/<Session ID>/entityTypes/<Entity Type Display Name>`. Note:
// Runtimes are under construction and will be available soon. If <Runtime ID>
// is not specified, we assume default 'sandbox' runtime.
Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
}
func (m *DeleteSessionEntityTypeRequest) Reset() { *m = DeleteSessionEntityTypeRequest{} }
func (m *DeleteSessionEntityTypeRequest) String() string { return proto.CompactTextString(m) }
func (*DeleteSessionEntityTypeRequest) ProtoMessage() {}
func (*DeleteSessionEntityTypeRequest) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{6} }
func (m *DeleteSessionEntityTypeRequest) GetName() string {
if m != nil {
return m.Name
}
return ""
}
func init() {
proto.RegisterType((*SessionEntityType)(nil), "google.cloud.dialogflow.v2beta1.SessionEntityType")
proto.RegisterType((*ListSessionEntityTypesRequest)(nil), "google.cloud.dialogflow.v2beta1.ListSessionEntityTypesRequest")
proto.RegisterType((*ListSessionEntityTypesResponse)(nil), "google.cloud.dialogflow.v2beta1.ListSessionEntityTypesResponse")
proto.RegisterType((*GetSessionEntityTypeRequest)(nil), "google.cloud.dialogflow.v2beta1.GetSessionEntityTypeRequest")
proto.RegisterType((*CreateSessionEntityTypeRequest)(nil), "google.cloud.dialogflow.v2beta1.CreateSessionEntityTypeRequest")
proto.RegisterType((*UpdateSessionEntityTypeRequest)(nil), "google.cloud.dialogflow.v2beta1.UpdateSessionEntityTypeRequest")
proto.RegisterType((*DeleteSessionEntityTypeRequest)(nil), "google.cloud.dialogflow.v2beta1.DeleteSessionEntityTypeRequest")
proto.RegisterEnum("google.cloud.dialogflow.v2beta1.SessionEntityType_EntityOverrideMode", SessionEntityType_EntityOverrideMode_name, SessionEntityType_EntityOverrideMode_value)
}
// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConn
// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion4
// Client API for SessionEntityTypes service
type SessionEntityTypesClient interface {
// Returns the list of all session entity types in the specified session.
ListSessionEntityTypes(ctx context.Context, in *ListSessionEntityTypesRequest, opts ...grpc.CallOption) (*ListSessionEntityTypesResponse, error)
// Retrieves the specified session entity type.
GetSessionEntityType(ctx context.Context, in *GetSessionEntityTypeRequest, opts ...grpc.CallOption) (*SessionEntityType, error)
// Creates a session entity type.
CreateSessionEntityType(ctx context.Context, in *CreateSessionEntityTypeRequest, opts ...grpc.CallOption) (*SessionEntityType, error)
// Updates the specified session entity type.
UpdateSessionEntityType(ctx context.Context, in *UpdateSessionEntityTypeRequest, opts ...grpc.CallOption) (*SessionEntityType, error)
// Deletes the specified session entity type.
DeleteSessionEntityType(ctx context.Context, in *DeleteSessionEntityTypeRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error)
}
type sessionEntityTypesClient struct {
cc *grpc.ClientConn
}
func NewSessionEntityTypesClient(cc *grpc.ClientConn) SessionEntityTypesClient {
return &sessionEntityTypesClient{cc}
}
func (c *sessionEntityTypesClient) ListSessionEntityTypes(ctx context.Context, in *ListSessionEntityTypesRequest, opts ...grpc.CallOption) (*ListSessionEntityTypesResponse, error) {
out := new(ListSessionEntityTypesResponse)
err := grpc.Invoke(ctx, "/google.cloud.dialogflow.v2beta1.SessionEntityTypes/ListSessionEntityTypes", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *sessionEntityTypesClient) GetSessionEntityType(ctx context.Context, in *GetSessionEntityTypeRequest, opts ...grpc.CallOption) (*SessionEntityType, error) {
out := new(SessionEntityType)
err := grpc.Invoke(ctx, "/google.cloud.dialogflow.v2beta1.SessionEntityTypes/GetSessionEntityType", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *sessionEntityTypesClient) CreateSessionEntityType(ctx context.Context, in *CreateSessionEntityTypeRequest, opts ...grpc.CallOption) (*SessionEntityType, error) {
out := new(SessionEntityType)
err := grpc.Invoke(ctx, "/google.cloud.dialogflow.v2beta1.SessionEntityTypes/CreateSessionEntityType", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *sessionEntityTypesClient) UpdateSessionEntityType(ctx context.Context, in *UpdateSessionEntityTypeRequest, opts ...grpc.CallOption) (*SessionEntityType, error) {
out := new(SessionEntityType)
err := grpc.Invoke(ctx, "/google.cloud.dialogflow.v2beta1.SessionEntityTypes/UpdateSessionEntityType", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *sessionEntityTypesClient) DeleteSessionEntityType(ctx context.Context, in *DeleteSessionEntityTypeRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) {
out := new(google_protobuf2.Empty)
err := grpc.Invoke(ctx, "/google.cloud.dialogflow.v2beta1.SessionEntityTypes/DeleteSessionEntityType", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// Server API for SessionEntityTypes service
type SessionEntityTypesServer interface {
// Returns the list of all session entity types in the specified session.
ListSessionEntityTypes(context.Context, *ListSessionEntityTypesRequest) (*ListSessionEntityTypesResponse, error)
// Retrieves the specified session entity type.
GetSessionEntityType(context.Context, *GetSessionEntityTypeRequest) (*SessionEntityType, error)
// Creates a session entity type.
CreateSessionEntityType(context.Context, *CreateSessionEntityTypeRequest) (*SessionEntityType, error)
// Updates the specified session entity type.
UpdateSessionEntityType(context.Context, *UpdateSessionEntityTypeRequest) (*SessionEntityType, error)
// Deletes the specified session entity type.
DeleteSessionEntityType(context.Context, *DeleteSessionEntityTypeRequest) (*google_protobuf2.Empty, error)
}
func RegisterSessionEntityTypesServer(s *grpc.Server, srv SessionEntityTypesServer) {
s.RegisterService(&_SessionEntityTypes_serviceDesc, srv)
}
func _SessionEntityTypes_ListSessionEntityTypes_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ListSessionEntityTypesRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(SessionEntityTypesServer).ListSessionEntityTypes(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.dialogflow.v2beta1.SessionEntityTypes/ListSessionEntityTypes",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(SessionEntityTypesServer).ListSessionEntityTypes(ctx, req.(*ListSessionEntityTypesRequest))
}
return interceptor(ctx, in, info, handler)
}
func _SessionEntityTypes_GetSessionEntityType_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetSessionEntityTypeRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(SessionEntityTypesServer).GetSessionEntityType(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.dialogflow.v2beta1.SessionEntityTypes/GetSessionEntityType",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(SessionEntityTypesServer).GetSessionEntityType(ctx, req.(*GetSessionEntityTypeRequest))
}
return interceptor(ctx, in, info, handler)
}
func _SessionEntityTypes_CreateSessionEntityType_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(CreateSessionEntityTypeRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(SessionEntityTypesServer).CreateSessionEntityType(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.dialogflow.v2beta1.SessionEntityTypes/CreateSessionEntityType",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(SessionEntityTypesServer).CreateSessionEntityType(ctx, req.(*CreateSessionEntityTypeRequest))
}
return interceptor(ctx, in, info, handler)
}
func _SessionEntityTypes_UpdateSessionEntityType_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(UpdateSessionEntityTypeRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(SessionEntityTypesServer).UpdateSessionEntityType(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.dialogflow.v2beta1.SessionEntityTypes/UpdateSessionEntityType",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(SessionEntityTypesServer).UpdateSessionEntityType(ctx, req.(*UpdateSessionEntityTypeRequest))
}
return interceptor(ctx, in, info, handler)
}
func _SessionEntityTypes_DeleteSessionEntityType_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(DeleteSessionEntityTypeRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(SessionEntityTypesServer).DeleteSessionEntityType(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.dialogflow.v2beta1.SessionEntityTypes/DeleteSessionEntityType",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(SessionEntityTypesServer).DeleteSessionEntityType(ctx, req.(*DeleteSessionEntityTypeRequest))
}
return interceptor(ctx, in, info, handler)
}
var _SessionEntityTypes_serviceDesc = grpc.ServiceDesc{
ServiceName: "google.cloud.dialogflow.v2beta1.SessionEntityTypes",
HandlerType: (*SessionEntityTypesServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "ListSessionEntityTypes",
Handler: _SessionEntityTypes_ListSessionEntityTypes_Handler,
},
{
MethodName: "GetSessionEntityType",
Handler: _SessionEntityTypes_GetSessionEntityType_Handler,
},
{
MethodName: "CreateSessionEntityType",
Handler: _SessionEntityTypes_CreateSessionEntityType_Handler,
},
{
MethodName: "UpdateSessionEntityType",
Handler: _SessionEntityTypes_UpdateSessionEntityType_Handler,
},
{
MethodName: "DeleteSessionEntityType",
Handler: _SessionEntityTypes_DeleteSessionEntityType_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "google/cloud/dialogflow/v2beta1/session_entity_type.proto",
}
func init() {
proto.RegisterFile("google/cloud/dialogflow/v2beta1/session_entity_type.proto", fileDescriptor5)
}
var fileDescriptor5 = []byte{
// 863 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0xcf, 0x6f, 0xe3, 0x44,
0x14, 0x66, 0x5c, 0x58, 0xed, 0xce, 0xf2, 0xa3, 0x3b, 0x54, 0x69, 0x94, 0xd2, 0x34, 0x78, 0x11,
0xaa, 0x72, 0xb0, 0xd5, 0xc0, 0x65, 0x59, 0x7e, 0x48, 0xdb, 0x38, 0xab, 0x48, 0x9b, 0x34, 0x72,
0xd2, 0x15, 0x94, 0x83, 0xe5, 0xd4, 0xaf, 0x96, 0x69, 0xe2, 0x31, 0x9e, 0xc9, 0x2e, 0x29, 0xea,
0xa5, 0xdc, 0xb8, 0x70, 0x40, 0xdc, 0x38, 0x71, 0xe0, 0x80, 0x04, 0xa7, 0xfe, 0x03, 0x1c, 0xf8,
0x0b, 0x10, 0x37, 0x8e, 0x5c, 0x39, 0x22, 0x71, 0x03, 0x79, 0xec, 0x34, 0xa5, 0x1e, 0xdb, 0x21,
0xdb, 0x9b, 0xe7, 0xcd, 0x7c, 0xef, 0xbd, 0xef, 0x9b, 0xf7, 0x9e, 0x07, 0xdf, 0x73, 0x29, 0x75,
0x47, 0xa0, 0x1f, 0x8e, 0xe8, 0xc4, 0xd1, 0x1d, 0xcf, 0x1e, 0x51, 0xf7, 0x68, 0x44, 0x9f, 0xea,
0x4f, 0x1a, 0x43, 0xe0, 0xf6, 0x8e, 0xce, 0x80, 0x31, 0x8f, 0xfa, 0x16, 0xf8, 0xdc, 0xe3, 0x53,
0x8b, 0x4f, 0x03, 0xd0, 0x82, 0x90, 0x72, 0x4a, 0xb6, 0x62, 0xa8, 0x26, 0xa0, 0xda, 0x1c, 0xaa,
0x25, 0xd0, 0xca, 0x6b, 0x89, 0x6f, 0x3b, 0xf0, 0x74, 0xdb, 0xf7, 0x29, 0xb7, 0xb9, 0x47, 0x7d,
0x16, 0xc3, 0x2b, 0x3b, 0x45, 0x91, 0x53, 0x11, 0x2b, 0x1b, 0x09, 0x44, 0xac, 0x86, 0x93, 0x23,
0x1d, 0xc6, 0x01, 0x9f, 0x26, 0x9b, 0xb5, 0xab, 0x9b, 0x47, 0x1e, 0x8c, 0x1c, 0x6b, 0x6c, 0xb3,
0xe3, 0xf8, 0x84, 0xfa, 0x97, 0x82, 0xef, 0xf4, 0x63, 0x3a, 0x86, 0xf0, 0x3d, 0x98, 0x06, 0x40,
0x08, 0x7e, 0xde, 0xb7, 0xc7, 0x50, 0x46, 0x35, 0xb4, 0x7d, 0xcb, 0x14, 0xdf, 0xe4, 0x29, 0x5e,
0x4b, 0xa2, 0xd3, 0x27, 0x10, 0x86, 0x9e, 0x03, 0xd6, 0x98, 0x3a, 0x50, 0x56, 0x6a, 0x68, 0xfb,
0xe5, 0x86, 0xa1, 0x15, 0x30, 0xd7, 0x52, 0x51, 0xb4, 0xf8, 0x73, 0x2f, 0xf1, 0xd6, 0xa1, 0x0e,
0x98, 0x04, 0x52, 0x36, 0xd2, 0xc5, 0x37, 0x85, 0xd5, 0x03, 0x56, 0x5e, 0xa9, 0xad, 0x6c, 0xdf,
0x6e, 0x34, 0x0a, 0x83, 0xa5, 0xa2, 0x98, 0x17, 0x3e, 0xd4, 0x33, 0x84, 0x49, 0x3a, 0x34, 0x79,
0x03, 0xd7, 0x8c, 0xee, 0xa0, 0x3d, 0xf8, 0xc8, 0xda, 0x7b, 0x6c, 0x98, 0x66, 0xbb, 0x69, 0x58,
0x9d, 0xbd, 0xa6, 0x61, 0xed, 0x77, 0xfb, 0x3d, 0x63, 0xb7, 0xdd, 0x6a, 0x1b, 0xcd, 0xd5, 0xe7,
0xc8, 0xeb, 0x78, 0x53, 0x7a, 0x6a, 0xb6, 0x5a, 0x45, 0xe4, 0x2e, 0xde, 0x92, 0x1e, 0xe9, 0xef,
0xf7, 0x7a, 0x8f, 0x8c, 0x8e, 0xd1, 0x1d, 0xac, 0x2a, 0x2a, 0xc3, 0x9b, 0x8f, 0x3c, 0xc6, 0x53,
0xa2, 0x30, 0x13, 0x3e, 0x9d, 0x00, 0xe3, 0xa4, 0x84, 0x6f, 0x04, 0x76, 0x08, 0x3e, 0x4f, 0x2e,
0x21, 0x59, 0x91, 0x0d, 0x7c, 0x2b, 0xb0, 0x5d, 0xb0, 0x98, 0x77, 0x12, 0x6b, 0xff, 0x82, 0x79,
0x33, 0x32, 0xf4, 0xbd, 0x13, 0x20, 0x9b, 0x18, 0x8b, 0x4d, 0x4e, 0x8f, 0xc1, 0x2f, 0xaf, 0x08,
0xa0, 0x38, 0x3e, 0x88, 0x0c, 0xea, 0x4f, 0x08, 0x57, 0xb3, 0xa2, 0xb2, 0x80, 0xfa, 0x0c, 0x88,
0x83, 0xd7, 0x24, 0xd5, 0xcd, 0xca, 0x68, 0x41, 0xe1, 0x53, 0xae, 0x4d, 0xc2, 0x52, 0xd1, 0xc8,
0x9b, 0xf8, 0x15, 0x1f, 0x3e, 0xe3, 0xd6, 0xa5, 0x64, 0x15, 0x91, 0xec, 0x4b, 0x91, 0xb9, 0x77,
0x91, 0xf0, 0x0e, 0xde, 0x78, 0x08, 0xe9, 0x74, 0x67, 0x1a, 0x49, 0xca, 0x54, 0xfd, 0x16, 0xe1,
0xea, 0x6e, 0x08, 0x36, 0x87, 0x4c, 0x58, 0x96, 0xb4, 0x43, 0xfc, 0xaa, 0x84, 0xbb, 0xc8, 0x6c,
0x39, 0xea, 0x77, 0x52, 0xd4, 0xd5, 0x9f, 0x11, 0xae, 0xee, 0x07, 0x4e, 0x5e, 0x7a, 0x19, 0x69,
0xa0, 0x6b, 0x4c, 0x83, 0xdc, 0xc7, 0xb7, 0x27, 0x22, 0x0b, 0x31, 0x0b, 0x12, 0x8a, 0x95, 0x99,
0xef, 0xd9, 0xb8, 0xd0, 0x5a, 0xd1, 0xb8, 0xe8, 0xd8, 0xec, 0xd8, 0xc4, 0xf1, 0xf1, 0xe8, 0x5b,
0x7d, 0x1b, 0x57, 0x9b, 0x30, 0x82, 0x1c, 0x0a, 0x92, 0x8b, 0x69, 0x7c, 0xf5, 0x22, 0x26, 0xe9,
0xc2, 0x23, 0xdf, 0x2b, 0xb8, 0x24, 0xaf, 0x49, 0xf2, 0x7e, 0x21, 0xd7, 0xdc, 0x16, 0xaa, 0x7c,
0xb0, 0x34, 0x3e, 0x6e, 0x06, 0xf5, 0x4b, 0x74, 0xf6, 0xeb, 0x1f, 0x5f, 0x2b, 0x5f, 0x20, 0x72,
0xef, 0x62, 0x02, 0x7f, 0x1e, 0x17, 0xcb, 0x7b, 0x41, 0x48, 0x3f, 0x81, 0x43, 0xce, 0xf4, 0xba,
0x6e, 0xbb, 0xe0, 0xf3, 0xd9, 0x4f, 0x81, 0xe9, 0xf5, 0xd3, 0x64, 0x4c, 0x0b, 0x67, 0x07, 0x2d,
0xd2, 0x2c, 0x06, 0x87, 0x13, 0x9f, 0x7b, 0x63, 0x88, 0x0c, 0x19, 0x7e, 0xc8, 0x37, 0x0a, 0x5e,
0x93, 0x35, 0x03, 0x79, 0xb7, 0x90, 0x66, 0x4e, 0x0f, 0x55, 0x96, 0x28, 0x28, 0xb9, 0x2e, 0xd1,
0x25, 0xe7, 0xa9, 0x72, 0x99, 0x8c, 0x5e, 0x3f, 0xfd, 0xaf, 0x2e, 0x72, 0xb0, 0x54, 0x95, 0x2b,
0x7e, 0xc8, 0x2f, 0x0a, 0x5e, 0xcf, 0x68, 0x78, 0x52, 0x5c, 0x01, 0xf9, 0xa3, 0x62, 0x29, 0x75,
0xce, 0x63, 0x75, 0x7e, 0x44, 0xea, 0xf2, 0x55, 0xf3, 0x8e, 0x6c, 0x04, 0x1c, 0x7c, 0xac, 0x5e,
0x4b, 0x29, 0x49, 0x9d, 0x93, 0x3f, 0x15, 0xbc, 0x9e, 0x31, 0x99, 0x16, 0xd0, 0x31, 0x7f, 0xa6,
0x2d, 0xa5, 0xe3, 0xef, 0xb1, 0x8e, 0xbf, 0xa1, 0x46, 0x67, 0xce, 0x5a, 0xf6, 0xf4, 0xfa, 0x9f,
0x95, 0x27, 0xd7, 0x96, 0x36, 0x3e, 0x5c, 0x26, 0xca, 0x22, 0x25, 0x2a, 0xd7, 0xfb, 0x1f, 0x84,
0xd7, 0x33, 0xc6, 0xe8, 0x02, 0x7a, 0xe7, 0x0f, 0xe0, 0x4a, 0x29, 0x35, 0xca, 0x8d, 0xe8, 0x59,
0x38, 0xef, 0xdc, 0xfa, 0xb3, 0x74, 0x6e, 0xfd, 0x5a, 0x3a, 0xf7, 0xc1, 0x39, 0xc2, 0x77, 0x0f,
0xe9, 0xb8, 0x88, 0xeb, 0x83, 0x52, 0x8a, 0x66, 0x2f, 0x62, 0xd5, 0x43, 0x07, 0xed, 0x04, 0xea,
0xd2, 0x91, 0xed, 0xbb, 0x1a, 0x0d, 0x5d, 0xdd, 0x05, 0x5f, 0x70, 0xd6, 0xe3, 0x2d, 0x3b, 0xf0,
0x58, 0xe6, 0x73, 0xfa, 0xfe, 0xdc, 0xf4, 0x37, 0x42, 0xdf, 0x29, 0x4a, 0xb3, 0xf5, 0x83, 0xb2,
0xf5, 0x30, 0xf6, 0xb9, 0x2b, 0xd2, 0x69, 0xce, 0xd3, 0x79, 0x1c, 0x83, 0x86, 0x37, 0x84, 0xff,
0xb7, 0xfe, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x65, 0x3a, 0xa2, 0x54, 0x27, 0x0c, 0x00, 0x00,
}

View File

@ -0,0 +1,209 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: google/cloud/dialogflow/v2beta1/webhook.proto
package dialogflow
import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
import _ "google.golang.org/genproto/googleapis/api/annotations"
import google_protobuf4 "github.com/golang/protobuf/ptypes/struct"
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// The request message for a webhook call.
type WebhookRequest struct {
// The unique identifier of detectIntent request session.
// Can be used to identify end-user inside webhook implementation.
// Format: `projects/<Project ID>/agent/sessions/<Session ID>`.
Session string `protobuf:"bytes,4,opt,name=session" json:"session,omitempty"`
// The unique identifier of the response. Contains the same value as
// `[Streaming]DetectIntentResponse.response_id`.
ResponseId string `protobuf:"bytes,1,opt,name=response_id,json=responseId" json:"response_id,omitempty"`
// The result of the conversational query or event processing. Contains the
// same value as `[Streaming]DetectIntentResponse.query_result`.
QueryResult *QueryResult `protobuf:"bytes,2,opt,name=query_result,json=queryResult" json:"query_result,omitempty"`
// Optional. The contents of the original request that was passed to
// `[Streaming]DetectIntent` call.
OriginalDetectIntentRequest *OriginalDetectIntentRequest `protobuf:"bytes,3,opt,name=original_detect_intent_request,json=originalDetectIntentRequest" json:"original_detect_intent_request,omitempty"`
}
func (m *WebhookRequest) Reset() { *m = WebhookRequest{} }
func (m *WebhookRequest) String() string { return proto.CompactTextString(m) }
func (*WebhookRequest) ProtoMessage() {}
func (*WebhookRequest) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{0} }
func (m *WebhookRequest) GetSession() string {
if m != nil {
return m.Session
}
return ""
}
func (m *WebhookRequest) GetResponseId() string {
if m != nil {
return m.ResponseId
}
return ""
}
func (m *WebhookRequest) GetQueryResult() *QueryResult {
if m != nil {
return m.QueryResult
}
return nil
}
func (m *WebhookRequest) GetOriginalDetectIntentRequest() *OriginalDetectIntentRequest {
if m != nil {
return m.OriginalDetectIntentRequest
}
return nil
}
// The response message for a webhook call.
type WebhookResponse struct {
// Optional. The text to be shown on the screen. This value is passed directly
// to `QueryResult.fulfillment_text`.
FulfillmentText string `protobuf:"bytes,1,opt,name=fulfillment_text,json=fulfillmentText" json:"fulfillment_text,omitempty"`
// Optional. The collection of rich messages to present to the user. This
// value is passed directly to `QueryResult.fulfillment_messages`.
FulfillmentMessages []*Intent_Message `protobuf:"bytes,2,rep,name=fulfillment_messages,json=fulfillmentMessages" json:"fulfillment_messages,omitempty"`
// Optional. This value is passed directly to `QueryResult.webhook_source`.
Source string `protobuf:"bytes,3,opt,name=source" json:"source,omitempty"`
// Optional. This value is passed directly to `QueryResult.webhook_payload`.
Payload *google_protobuf4.Struct `protobuf:"bytes,4,opt,name=payload" json:"payload,omitempty"`
// Optional. The collection of output contexts. This value is passed directly
// to `QueryResult.output_contexts`.
OutputContexts []*Context `protobuf:"bytes,5,rep,name=output_contexts,json=outputContexts" json:"output_contexts,omitempty"`
// Optional. Makes the platform immediately invoke another `DetectIntent` call
// internally with the specified event as input.
FollowupEventInput *EventInput `protobuf:"bytes,6,opt,name=followup_event_input,json=followupEventInput" json:"followup_event_input,omitempty"`
}
func (m *WebhookResponse) Reset() { *m = WebhookResponse{} }
func (m *WebhookResponse) String() string { return proto.CompactTextString(m) }
func (*WebhookResponse) ProtoMessage() {}
func (*WebhookResponse) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{1} }
func (m *WebhookResponse) GetFulfillmentText() string {
if m != nil {
return m.FulfillmentText
}
return ""
}
func (m *WebhookResponse) GetFulfillmentMessages() []*Intent_Message {
if m != nil {
return m.FulfillmentMessages
}
return nil
}
func (m *WebhookResponse) GetSource() string {
if m != nil {
return m.Source
}
return ""
}
func (m *WebhookResponse) GetPayload() *google_protobuf4.Struct {
if m != nil {
return m.Payload
}
return nil
}
func (m *WebhookResponse) GetOutputContexts() []*Context {
if m != nil {
return m.OutputContexts
}
return nil
}
func (m *WebhookResponse) GetFollowupEventInput() *EventInput {
if m != nil {
return m.FollowupEventInput
}
return nil
}
// Represents the contents of the original request that was passed to
// the `[Streaming]DetectIntent` call.
type OriginalDetectIntentRequest struct {
// The source of this request, e.g., `google`, `facebook`, `slack`. It is set
// by Dialogflow-owned servers. Possible values of this field correspond to
// [Intent.Message.Platform][google.cloud.dialogflow.v2beta1.Intent.Message.Platform].
Source string `protobuf:"bytes,1,opt,name=source" json:"source,omitempty"`
// Optional. This field is set to the value of `QueryParameters.payload` field
// passed in the request.
Payload *google_protobuf4.Struct `protobuf:"bytes,3,opt,name=payload" json:"payload,omitempty"`
}
func (m *OriginalDetectIntentRequest) Reset() { *m = OriginalDetectIntentRequest{} }
func (m *OriginalDetectIntentRequest) String() string { return proto.CompactTextString(m) }
func (*OriginalDetectIntentRequest) ProtoMessage() {}
func (*OriginalDetectIntentRequest) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{2} }
func (m *OriginalDetectIntentRequest) GetSource() string {
if m != nil {
return m.Source
}
return ""
}
func (m *OriginalDetectIntentRequest) GetPayload() *google_protobuf4.Struct {
if m != nil {
return m.Payload
}
return nil
}
func init() {
proto.RegisterType((*WebhookRequest)(nil), "google.cloud.dialogflow.v2beta1.WebhookRequest")
proto.RegisterType((*WebhookResponse)(nil), "google.cloud.dialogflow.v2beta1.WebhookResponse")
proto.RegisterType((*OriginalDetectIntentRequest)(nil), "google.cloud.dialogflow.v2beta1.OriginalDetectIntentRequest")
}
func init() { proto.RegisterFile("google/cloud/dialogflow/v2beta1/webhook.proto", fileDescriptor6) }
var fileDescriptor6 = []byte{
// 538 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x53, 0x41, 0x6f, 0xd3, 0x30,
0x14, 0x56, 0x52, 0xd8, 0x34, 0x77, 0x5a, 0x91, 0x99, 0x20, 0xda, 0x10, 0xad, 0xca, 0xa5, 0x88,
0x91, 0x68, 0xe5, 0x08, 0xa7, 0xad, 0x80, 0x7a, 0x40, 0xdb, 0x02, 0x02, 0x09, 0x09, 0x45, 0x6e,
0xe2, 0x66, 0x16, 0xae, 0x5f, 0x1a, 0xdb, 0xeb, 0x76, 0xe4, 0x87, 0x20, 0x21, 0x8e, 0xfb, 0x85,
0x1c, 0x51, 0x6c, 0x87, 0xf4, 0x52, 0xb2, 0xe3, 0x7b, 0xfe, 0xbe, 0xef, 0x7d, 0xfe, 0xfc, 0x8c,
0x5e, 0xe6, 0x00, 0x39, 0xa7, 0x51, 0xca, 0x41, 0x67, 0x51, 0xc6, 0x08, 0x87, 0x7c, 0xce, 0x61,
0x15, 0x5d, 0x8d, 0x67, 0x54, 0x91, 0xe3, 0x68, 0x45, 0x67, 0x97, 0x00, 0xdf, 0xc3, 0xa2, 0x04,
0x05, 0xb8, 0x6f, 0xe1, 0xa1, 0x81, 0x87, 0x0d, 0x3c, 0x74, 0xf0, 0x83, 0x27, 0x4e, 0x8f, 0x14,
0x2c, 0x22, 0x42, 0x80, 0x22, 0x8a, 0x81, 0x90, 0x96, 0x7e, 0xd0, 0x3a, 0x2d, 0x05, 0xa1, 0xe8,
0xb5, 0x72, 0xf0, 0xa3, 0x36, 0x38, 0x13, 0x8a, 0x0a, 0x75, 0x57, 0x71, 0x49, 0xa5, 0x64, 0x20,
0x1c, 0xbc, 0x76, 0x6a, 0xaa, 0x99, 0x9e, 0x47, 0x52, 0x95, 0x3a, 0x75, 0x62, 0xc3, 0x5f, 0x3e,
0xda, 0xfb, 0x62, 0xaf, 0x1e, 0xd3, 0xa5, 0xa6, 0x52, 0xe1, 0x00, 0x6d, 0x3b, 0x85, 0xe0, 0xde,
0xc0, 0x1b, 0xed, 0xc4, 0x75, 0x89, 0xfb, 0xa8, 0x5b, 0x52, 0x59, 0x80, 0x90, 0x34, 0x61, 0x59,
0xe0, 0x99, 0x53, 0x54, 0xb7, 0xa6, 0x19, 0x3e, 0x43, 0xbb, 0x4b, 0x4d, 0xcb, 0x9b, 0xa4, 0xa4,
0x52, 0x73, 0x15, 0xf8, 0x03, 0x6f, 0xd4, 0x1d, 0x1f, 0x85, 0x2d, 0x69, 0x86, 0x17, 0x15, 0x29,
0x36, 0x9c, 0xb8, 0xbb, 0x6c, 0x0a, 0xfc, 0xc3, 0x43, 0x4f, 0xa1, 0x64, 0x39, 0x13, 0x84, 0x27,
0x19, 0x55, 0x34, 0x55, 0x89, 0x0d, 0x23, 0x29, 0xad, 0xdd, 0xa0, 0x63, 0x66, 0xbc, 0x69, 0x9d,
0x71, 0xe6, 0x64, 0x26, 0x46, 0x65, 0x6a, 0x44, 0xdc, 0x95, 0xe3, 0x43, 0xd8, 0x7c, 0x38, 0xfc,
0xd9, 0x41, 0xbd, 0x7f, 0x11, 0xd9, 0xab, 0xe2, 0xe7, 0xe8, 0xc1, 0x5c, 0xf3, 0x39, 0xe3, 0x7c,
0x51, 0x79, 0xa9, 0xde, 0xd2, 0xc5, 0xd1, 0x5b, 0xeb, 0x7f, 0xa2, 0xd7, 0x0a, 0xcf, 0xd0, 0xfe,
0x3a, 0x74, 0x41, 0xa5, 0x24, 0x39, 0x95, 0x81, 0x3f, 0xe8, 0x8c, 0xba, 0xe3, 0xa8, 0xd5, 0xb7,
0x35, 0x13, 0x7e, 0xb0, 0xbc, 0xf8, 0xe1, 0x9a, 0x98, 0xeb, 0x49, 0xfc, 0x08, 0x6d, 0x49, 0xd0,
0x65, 0x4a, 0x4d, 0x1a, 0x3b, 0xb1, 0xab, 0xf0, 0x31, 0xda, 0x2e, 0xc8, 0x0d, 0x07, 0x92, 0x99,
0xa7, 0xec, 0x8e, 0x1f, 0xd7, 0xe3, 0xea, 0x6d, 0x08, 0x3f, 0x9a, 0x6d, 0x88, 0x6b, 0x1c, 0xbe,
0x40, 0x3d, 0xd0, 0xaa, 0xd0, 0x2a, 0x71, 0x3b, 0x2a, 0x83, 0xfb, 0xc6, 0xe9, 0xa8, 0xd5, 0xe9,
0xa9, 0x25, 0xc4, 0x7b, 0x56, 0xc0, 0x95, 0x12, 0x7f, 0x43, 0xfb, 0x73, 0xe0, 0x1c, 0x56, 0xba,
0x48, 0xe8, 0x55, 0x15, 0x02, 0x13, 0x85, 0x56, 0xc1, 0x96, 0xb1, 0xf4, 0xa2, 0x55, 0xf7, 0x6d,
0xc5, 0x99, 0x56, 0x94, 0x18, 0xd7, 0x42, 0x4d, 0x6f, 0x78, 0x89, 0x0e, 0xff, 0xf3, 0xb6, 0x6b,
0xd9, 0x78, 0x9b, 0xb2, 0xe9, 0xdc, 0x2d, 0x9b, 0x93, 0x5b, 0x0f, 0x3d, 0x4b, 0x61, 0xd1, 0x66,
0xf8, 0x64, 0xd7, 0xad, 0xcb, 0x79, 0x25, 0x74, 0xee, 0x7d, 0x9d, 0x3a, 0x42, 0x0e, 0x9c, 0x88,
0x3c, 0x84, 0x32, 0x8f, 0x72, 0x2a, 0xcc, 0x98, 0xc8, 0x1e, 0x91, 0x82, 0xc9, 0x8d, 0x1f, 0xfa,
0x75, 0xd3, 0xfa, 0xe3, 0x79, 0xbf, 0x7d, 0x7f, 0xf2, 0xee, 0xd6, 0xef, 0xbf, 0xb7, 0x9a, 0xa7,
0xc6, 0xc4, 0xa4, 0x31, 0xf1, 0xd9, 0x92, 0x66, 0x5b, 0x46, 0xff, 0xd5, 0xdf, 0x00, 0x00, 0x00,
0xff, 0xff, 0x52, 0x6e, 0x3d, 0x85, 0xfa, 0x04, 0x00, 0x00,
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,161 +0,0 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: google/cloud/ml/v1beta1/operation_metadata.proto
package ml
import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
import _ "google.golang.org/genproto/googleapis/api/annotations"
import google_protobuf2 "github.com/golang/protobuf/ptypes/timestamp"
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// The operation type.
type OperationMetadata_OperationType int32
const (
// Unspecified operation type.
OperationMetadata_OPERATION_TYPE_UNSPECIFIED OperationMetadata_OperationType = 0
// An operation to create a new version.
OperationMetadata_CREATE_VERSION OperationMetadata_OperationType = 1
// An operation to delete an existing version.
OperationMetadata_DELETE_VERSION OperationMetadata_OperationType = 2
// An operation to delete an existing model.
OperationMetadata_DELETE_MODEL OperationMetadata_OperationType = 3
)
var OperationMetadata_OperationType_name = map[int32]string{
0: "OPERATION_TYPE_UNSPECIFIED",
1: "CREATE_VERSION",
2: "DELETE_VERSION",
3: "DELETE_MODEL",
}
var OperationMetadata_OperationType_value = map[string]int32{
"OPERATION_TYPE_UNSPECIFIED": 0,
"CREATE_VERSION": 1,
"DELETE_VERSION": 2,
"DELETE_MODEL": 3,
}
func (x OperationMetadata_OperationType) String() string {
return proto.EnumName(OperationMetadata_OperationType_name, int32(x))
}
func (OperationMetadata_OperationType) EnumDescriptor() ([]byte, []int) {
return fileDescriptor2, []int{0, 0}
}
// Represents the metadata of the long-running operation.
type OperationMetadata struct {
// The time the operation was submitted.
CreateTime *google_protobuf2.Timestamp `protobuf:"bytes,1,opt,name=create_time,json=createTime" json:"create_time,omitempty"`
// The time operation processing started.
StartTime *google_protobuf2.Timestamp `protobuf:"bytes,2,opt,name=start_time,json=startTime" json:"start_time,omitempty"`
// The time operation processing completed.
EndTime *google_protobuf2.Timestamp `protobuf:"bytes,3,opt,name=end_time,json=endTime" json:"end_time,omitempty"`
// Indicates whether a request to cancel this operation has been made.
IsCancellationRequested bool `protobuf:"varint,4,opt,name=is_cancellation_requested,json=isCancellationRequested" json:"is_cancellation_requested,omitempty"`
// The operation type.
OperationType OperationMetadata_OperationType `protobuf:"varint,5,opt,name=operation_type,json=operationType,enum=google.cloud.ml.v1beta1.OperationMetadata_OperationType" json:"operation_type,omitempty"`
// Contains the name of the model associated with the operation.
ModelName string `protobuf:"bytes,6,opt,name=model_name,json=modelName" json:"model_name,omitempty"`
// Contains the version associated with the operation.
Version *Version `protobuf:"bytes,7,opt,name=version" json:"version,omitempty"`
}
func (m *OperationMetadata) Reset() { *m = OperationMetadata{} }
func (m *OperationMetadata) String() string { return proto.CompactTextString(m) }
func (*OperationMetadata) ProtoMessage() {}
func (*OperationMetadata) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0} }
func (m *OperationMetadata) GetCreateTime() *google_protobuf2.Timestamp {
if m != nil {
return m.CreateTime
}
return nil
}
func (m *OperationMetadata) GetStartTime() *google_protobuf2.Timestamp {
if m != nil {
return m.StartTime
}
return nil
}
func (m *OperationMetadata) GetEndTime() *google_protobuf2.Timestamp {
if m != nil {
return m.EndTime
}
return nil
}
func (m *OperationMetadata) GetIsCancellationRequested() bool {
if m != nil {
return m.IsCancellationRequested
}
return false
}
func (m *OperationMetadata) GetOperationType() OperationMetadata_OperationType {
if m != nil {
return m.OperationType
}
return OperationMetadata_OPERATION_TYPE_UNSPECIFIED
}
func (m *OperationMetadata) GetModelName() string {
if m != nil {
return m.ModelName
}
return ""
}
func (m *OperationMetadata) GetVersion() *Version {
if m != nil {
return m.Version
}
return nil
}
func init() {
proto.RegisterType((*OperationMetadata)(nil), "google.cloud.ml.v1beta1.OperationMetadata")
proto.RegisterEnum("google.cloud.ml.v1beta1.OperationMetadata_OperationType", OperationMetadata_OperationType_name, OperationMetadata_OperationType_value)
}
func init() { proto.RegisterFile("google/cloud/ml/v1beta1/operation_metadata.proto", fileDescriptor2) }
var fileDescriptor2 = []byte{
// 457 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x92, 0x5f, 0x6b, 0xdb, 0x30,
0x14, 0xc5, 0xe7, 0xb6, 0x6b, 0x1b, 0x75, 0x0d, 0x99, 0x1f, 0x56, 0x2f, 0x6c, 0xab, 0xe9, 0x53,
0x60, 0x60, 0xaf, 0x1d, 0x83, 0x75, 0x7d, 0x6a, 0x13, 0x0d, 0x02, 0x6d, 0x6c, 0x54, 0xaf, 0xb0,
0xbd, 0x18, 0xc5, 0xbe, 0x33, 0x02, 0xfd, 0xf1, 0x2c, 0x25, 0xd0, 0x0f, 0xb4, 0xef, 0x39, 0x22,
0xd9, 0x34, 0x23, 0x84, 0x3e, 0xea, 0xdc, 0xf3, 0xbb, 0xf7, 0xf8, 0x5e, 0xa3, 0x4f, 0x95, 0x52,
0x15, 0x87, 0xb8, 0xe0, 0x6a, 0x51, 0xc6, 0x82, 0xc7, 0xcb, 0xf3, 0x39, 0x18, 0x7a, 0x1e, 0xab,
0x1a, 0x1a, 0x6a, 0x98, 0x92, 0xb9, 0x00, 0x43, 0x4b, 0x6a, 0x68, 0x54, 0x37, 0xca, 0x28, 0xff,
0xc4, 0x11, 0x91, 0x25, 0x22, 0xc1, 0xa3, 0x96, 0x18, 0xbe, 0x6b, 0x5b, 0xd1, 0x9a, 0xc5, 0x54,
0x4a, 0x65, 0x2c, 0xae, 0x1d, 0x36, 0xfc, 0xb8, 0x6d, 0x90, 0x50, 0x25, 0xf0, 0x5c, 0x43, 0xb3,
0x64, 0x05, 0xb4, 0xe6, 0xd3, 0xd6, 0x6c, 0x5f, 0xf3, 0xc5, 0xef, 0xd8, 0x30, 0x01, 0xda, 0x50,
0x51, 0x3b, 0xc3, 0xd9, 0xdf, 0x3d, 0xf4, 0x3a, 0xe9, 0x12, 0xde, 0xb5, 0x01, 0xfd, 0x2b, 0x74,
0x54, 0x34, 0x40, 0x0d, 0xe4, 0x2b, 0x7f, 0xe0, 0x85, 0xde, 0xe8, 0xe8, 0x62, 0x18, 0xb5, 0x81,
0xbb, 0x66, 0x51, 0xd6, 0x35, 0x23, 0xc8, 0xd9, 0x57, 0x82, 0x7f, 0x89, 0x90, 0x36, 0xb4, 0x31,
0x8e, 0xdd, 0x79, 0x96, 0xed, 0x59, 0xb7, 0x45, 0xbf, 0xa0, 0x43, 0x90, 0xa5, 0x03, 0x77, 0x9f,
0x05, 0x0f, 0x40, 0x96, 0x16, 0xfb, 0x86, 0xde, 0x32, 0x9d, 0x17, 0x54, 0x16, 0xc0, 0xb9, 0xdb,
0x75, 0x03, 0x7f, 0x16, 0xa0, 0x0d, 0x94, 0xc1, 0x5e, 0xe8, 0x8d, 0x0e, 0xc9, 0x09, 0xd3, 0xe3,
0xb5, 0x3a, 0xe9, 0xca, 0x7e, 0x8e, 0xfa, 0x4f, 0x17, 0x32, 0x8f, 0x35, 0x04, 0x2f, 0x43, 0x6f,
0xd4, 0xbf, 0xf8, 0x1a, 0x6d, 0x39, 0x4f, 0xb4, 0xb1, 0xae, 0x27, 0x25, 0x7b, 0xac, 0x81, 0x1c,
0xab, 0xf5, 0xa7, 0xff, 0x1e, 0x21, 0x77, 0x19, 0x49, 0x05, 0x04, 0xfb, 0xa1, 0x37, 0xea, 0x91,
0x9e, 0x55, 0x66, 0xd4, 0x66, 0x3f, 0x58, 0x42, 0xa3, 0x99, 0x92, 0xc1, 0x81, 0xfd, 0xe2, 0x70,
0xeb, 0xe0, 0x07, 0xe7, 0x23, 0x1d, 0x70, 0xc6, 0xd0, 0xf1, 0x7f, 0xa3, 0xfd, 0x0f, 0x68, 0x98,
0xa4, 0x98, 0x5c, 0x67, 0xd3, 0x64, 0x96, 0x67, 0x3f, 0x53, 0x9c, 0xff, 0x98, 0xdd, 0xa7, 0x78,
0x3c, 0xfd, 0x3e, 0xc5, 0x93, 0xc1, 0x0b, 0xdf, 0x47, 0xfd, 0x31, 0xc1, 0xd7, 0x19, 0xce, 0x1f,
0x30, 0xb9, 0x9f, 0x26, 0xb3, 0x81, 0xb7, 0xd2, 0x26, 0xf8, 0x16, 0xaf, 0x69, 0x3b, 0xfe, 0x00,
0xbd, 0x6a, 0xb5, 0xbb, 0x64, 0x82, 0x6f, 0x07, 0xbb, 0x37, 0x4b, 0x74, 0x5a, 0x28, 0xb1, 0x11,
0x8d, 0xd6, 0xac, 0x8b, 0x77, 0xf3, 0x66, 0x63, 0x31, 0xe9, 0xea, 0x66, 0xa9, 0xf7, 0xeb, 0xb2,
0xc5, 0x2a, 0xc5, 0xa9, 0xac, 0x22, 0xd5, 0x54, 0x71, 0x05, 0xd2, 0x5e, 0x34, 0x76, 0x25, 0x5a,
0x33, 0xbd, 0xf1, 0x47, 0x5f, 0x09, 0x3e, 0xdf, 0xb7, 0xae, 0xcf, 0xff, 0x02, 0x00, 0x00, 0xff,
0xff, 0x89, 0xf8, 0x21, 0xa7, 0x5f, 0x03, 0x00, 0x00,
}

View File

@ -1,343 +0,0 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: google/cloud/ml/v1beta1/prediction_service.proto
package ml
import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
import _ "google.golang.org/genproto/googleapis/api/annotations"
import google_api3 "google.golang.org/genproto/googleapis/api/httpbody"
import (
context "golang.org/x/net/context"
grpc "google.golang.org/grpc"
)
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// Request for predictions to be issued against a trained model.
//
// The body of the request is a single JSON object with a single top-level
// field:
//
// <dl>
// <dt>instances</dt>
// <dd>A JSON array containing values representing the instances to use for
// prediction.</dd>
// </dl>
//
// The structure of each element of the instances list is determined by your
// model's input definition. Instances can include named inputs or can contain
// only unlabeled values.
//
// Not all data includes named inputs. Some instances will be simple
// JSON values (boolean, number, or string). However, instances are often lists
// of simple values, or complex nested lists. Here are some examples of request
// bodies:
//
// CSV data with each row encoded as a string value:
// <pre>
// {"instances": ["1.0,true,\\"x\\"", "-2.0,false,\\"y\\""]}
// </pre>
// Plain text:
// <pre>
// {"instances": ["the quick brown fox", "la bruja le dio"]}
// </pre>
// Sentences encoded as lists of words (vectors of strings):
// <pre>
// {
// "instances": [
// ["the","quick","brown"],
// ["la","bruja","le"],
// ...
// ]
// }
// </pre>
// Floating point scalar values:
// <pre>
// {"instances": [0.0, 1.1, 2.2]}
// </pre>
// Vectors of integers:
// <pre>
// {
// "instances": [
// [0, 1, 2],
// [3, 4, 5],
// ...
// ]
// }
// </pre>
// Tensors (in this case, two-dimensional tensors):
// <pre>
// {
// "instances": [
// [
// [0, 1, 2],
// [3, 4, 5]
// ],
// ...
// ]
// }
// </pre>
// Images can be represented different ways. In this encoding scheme the first
// two dimensions represent the rows and columns of the image, and the third
// contains lists (vectors) of the R, G, and B values for each pixel.
// <pre>
// {
// "instances": [
// [
// [
// [138, 30, 66],
// [130, 20, 56],
// ...
// ],
// [
// [126, 38, 61],
// [122, 24, 57],
// ...
// ],
// ...
// ],
// ...
// ]
// }
// </pre>
// JSON strings must be encoded as UTF-8. To send binary data, you must
// base64-encode the data and mark it as binary. To mark a JSON string
// as binary, replace it with a JSON object with a single attribute named `b64`:
// <pre>{"b64": "..."} </pre>
// For example:
//
// Two Serialized tf.Examples (fake data, for illustrative purposes only):
// <pre>
// {"instances": [{"b64": "X5ad6u"}, {"b64": "IA9j4nx"}]}
// </pre>
// Two JPEG image byte strings (fake data, for illustrative purposes only):
// <pre>
// {"instances": [{"b64": "ASa8asdf"}, {"b64": "JLK7ljk3"}]}
// </pre>
// If your data includes named references, format each instance as a JSON object
// with the named references as the keys:
//
// JSON input data to be preprocessed:
// <pre>
// {
// "instances": [
// {
// "a": 1.0,
// "b": true,
// "c": "x"
// },
// {
// "a": -2.0,
// "b": false,
// "c": "y"
// }
// ]
// }
// </pre>
// Some models have an underlying TensorFlow graph that accepts multiple input
// tensors. In this case, you should use the names of JSON name/value pairs to
// identify the input tensors, as shown in the following exmaples:
//
// For a graph with input tensor aliases "tag" (string) and "image"
// (base64-encoded string):
// <pre>
// {
// "instances": [
// {
// "tag": "beach",
// "image": {"b64": "ASa8asdf"}
// },
// {
// "tag": "car",
// "image": {"b64": "JLK7ljk3"}
// }
// ]
// }
// </pre>
// For a graph with input tensor aliases "tag" (string) and "image"
// (3-dimensional array of 8-bit ints):
// <pre>
// {
// "instances": [
// {
// "tag": "beach",
// "image": [
// [
// [138, 30, 66],
// [130, 20, 56],
// ...
// ],
// [
// [126, 38, 61],
// [122, 24, 57],
// ...
// ],
// ...
// ]
// },
// {
// "tag": "car",
// "image": [
// [
// [255, 0, 102],
// [255, 0, 97],
// ...
// ],
// [
// [254, 1, 101],
// [254, 2, 93],
// ...
// ],
// ...
// ]
// },
// ...
// ]
// }
// </pre>
// If the call is successful, the response body will contain one prediction
// entry per instance in the request body. If prediction fails for any
// instance, the response body will contain no predictions and will contian
// a single error entry instead.
type PredictRequest struct {
// Required. The resource name of a model or a version.
//
// Authorization: requires `Viewer` role on the parent project.
Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
//
// Required. The prediction request body.
HttpBody *google_api3.HttpBody `protobuf:"bytes,2,opt,name=http_body,json=httpBody" json:"http_body,omitempty"`
}
func (m *PredictRequest) Reset() { *m = PredictRequest{} }
func (m *PredictRequest) String() string { return proto.CompactTextString(m) }
func (*PredictRequest) ProtoMessage() {}
func (*PredictRequest) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0} }
func (m *PredictRequest) GetName() string {
if m != nil {
return m.Name
}
return ""
}
func (m *PredictRequest) GetHttpBody() *google_api3.HttpBody {
if m != nil {
return m.HttpBody
}
return nil
}
func init() {
proto.RegisterType((*PredictRequest)(nil), "google.cloud.ml.v1beta1.PredictRequest")
}
// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConn
// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion4
// Client API for OnlinePredictionService service
type OnlinePredictionServiceClient interface {
// Performs prediction on the data in the request.
//
// **** REMOVE FROM GENERATED DOCUMENTATION
Predict(ctx context.Context, in *PredictRequest, opts ...grpc.CallOption) (*google_api3.HttpBody, error)
}
type onlinePredictionServiceClient struct {
cc *grpc.ClientConn
}
func NewOnlinePredictionServiceClient(cc *grpc.ClientConn) OnlinePredictionServiceClient {
return &onlinePredictionServiceClient{cc}
}
func (c *onlinePredictionServiceClient) Predict(ctx context.Context, in *PredictRequest, opts ...grpc.CallOption) (*google_api3.HttpBody, error) {
out := new(google_api3.HttpBody)
err := grpc.Invoke(ctx, "/google.cloud.ml.v1beta1.OnlinePredictionService/Predict", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// Server API for OnlinePredictionService service
type OnlinePredictionServiceServer interface {
// Performs prediction on the data in the request.
//
// **** REMOVE FROM GENERATED DOCUMENTATION
Predict(context.Context, *PredictRequest) (*google_api3.HttpBody, error)
}
func RegisterOnlinePredictionServiceServer(s *grpc.Server, srv OnlinePredictionServiceServer) {
s.RegisterService(&_OnlinePredictionService_serviceDesc, srv)
}
func _OnlinePredictionService_Predict_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(PredictRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(OnlinePredictionServiceServer).Predict(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.ml.v1beta1.OnlinePredictionService/Predict",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(OnlinePredictionServiceServer).Predict(ctx, req.(*PredictRequest))
}
return interceptor(ctx, in, info, handler)
}
var _OnlinePredictionService_serviceDesc = grpc.ServiceDesc{
ServiceName: "google.cloud.ml.v1beta1.OnlinePredictionService",
HandlerType: (*OnlinePredictionServiceServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "Predict",
Handler: _OnlinePredictionService_Predict_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "google/cloud/ml/v1beta1/prediction_service.proto",
}
func init() { proto.RegisterFile("google/cloud/ml/v1beta1/prediction_service.proto", fileDescriptor3) }
var fileDescriptor3 = []byte{
// 312 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x91, 0x4d, 0x4a, 0x03, 0x31,
0x14, 0xc7, 0x49, 0x11, 0xb5, 0x11, 0x5c, 0x04, 0xb1, 0xb5, 0x08, 0x96, 0xba, 0xb0, 0x74, 0x91,
0xd8, 0xba, 0xb2, 0xe2, 0xa6, 0x2b, 0x77, 0x0e, 0x75, 0x21, 0xb8, 0x29, 0xe9, 0x4c, 0x48, 0x23,
0x99, 0xbc, 0x38, 0x93, 0x16, 0x8b, 0xb8, 0xf1, 0x0a, 0x3d, 0x9a, 0x57, 0xf0, 0x20, 0x92, 0x49,
0x28, 0xca, 0xe8, 0xee, 0x31, 0x6f, 0x7e, 0xef, 0xff, 0x11, 0x7c, 0x29, 0x01, 0xa4, 0x16, 0x2c,
0xd5, 0xb0, 0xcc, 0x58, 0xae, 0xd9, 0x6a, 0x38, 0x17, 0x8e, 0x0f, 0x99, 0x2d, 0x44, 0xa6, 0x52,
0xa7, 0xc0, 0xcc, 0x4a, 0x51, 0xac, 0x54, 0x2a, 0xa8, 0x2d, 0xc0, 0x01, 0x69, 0x05, 0x82, 0x56,
0x04, 0xcd, 0x35, 0x8d, 0x44, 0xe7, 0x34, 0x9e, 0xe2, 0x56, 0x31, 0x6e, 0x0c, 0x38, 0xee, 0xe9,
0x32, 0x60, 0x9d, 0x93, 0x1f, 0xdb, 0x85, 0x73, 0x76, 0x0e, 0xd9, 0x3a, 0xac, 0x7a, 0x8f, 0xf8,
0x30, 0x09, 0x6a, 0x53, 0xf1, 0xb2, 0x14, 0xa5, 0x23, 0x04, 0xef, 0x18, 0x9e, 0x8b, 0x36, 0xea,
0xa2, 0x7e, 0x73, 0x5a, 0xcd, 0x64, 0x88, 0x9b, 0x9e, 0x9b, 0x79, 0xb0, 0xdd, 0xe8, 0xa2, 0xfe,
0xc1, 0xe8, 0x88, 0x46, 0x2f, 0xdc, 0x2a, 0x7a, 0xe7, 0x9c, 0x9d, 0x40, 0xb6, 0x9e, 0xee, 0x2f,
0xe2, 0x34, 0xda, 0x20, 0xdc, 0xba, 0x37, 0x5a, 0x19, 0x91, 0x6c, 0xd3, 0x3c, 0x84, 0x30, 0xe4,
0x15, 0xef, 0xc5, 0x8f, 0xe4, 0x82, 0xfe, 0x13, 0x89, 0xfe, 0xb6, 0xd5, 0xf9, 0x53, 0xaf, 0x47,
0x3f, 0x3e, 0xbf, 0x36, 0x8d, 0x7e, 0xef, 0x7c, 0xdb, 0xdd, 0x9b, 0x37, 0x7c, 0x6b, 0x0b, 0x78,
0x16, 0xa9, 0x2b, 0xd9, 0x60, 0xf0, 0x3e, 0x8e, 0x75, 0x8e, 0xd1, 0x60, 0xb2, 0xc2, 0x67, 0x29,
0xe4, 0x35, 0x4d, 0x7f, 0x33, 0x1e, 0x98, 0x1c, 0xd7, 0xfc, 0x26, 0xbe, 0xa9, 0x04, 0x3d, 0x5d,
0x47, 0x4c, 0x82, 0xe6, 0x46, 0x52, 0x28, 0x24, 0x93, 0xc2, 0x54, 0x3d, 0xb2, 0xb0, 0xe2, 0x56,
0x95, 0xb5, 0xe7, 0xbc, 0xc9, 0xf5, 0x7c, 0xb7, 0xfa, 0xeb, 0xea, 0x3b, 0x00, 0x00, 0xff, 0xff,
0x00, 0x26, 0x25, 0x67, 0xf3, 0x01, 0x00, 0x00,
}

View File

@ -1,178 +0,0 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: google/cloud/ml/v1beta1/project_service.proto
package ml
import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
import _ "google.golang.org/genproto/googleapis/api/annotations"
import (
context "golang.org/x/net/context"
grpc "google.golang.org/grpc"
)
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// Requests service account information associated with a project.
type GetConfigRequest struct {
// Required. The project name.
//
// Authorization: requires `Viewer` role on the specified project.
Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
}
func (m *GetConfigRequest) Reset() { *m = GetConfigRequest{} }
func (m *GetConfigRequest) String() string { return proto.CompactTextString(m) }
func (*GetConfigRequest) ProtoMessage() {}
func (*GetConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{0} }
func (m *GetConfigRequest) GetName() string {
if m != nil {
return m.Name
}
return ""
}
// Returns service account information associated with a project.
type GetConfigResponse struct {
// The service account Cloud ML uses to access resources in the project.
ServiceAccount string `protobuf:"bytes,1,opt,name=service_account,json=serviceAccount" json:"service_account,omitempty"`
// The project number for `service_account`.
ServiceAccountProject int64 `protobuf:"varint,2,opt,name=service_account_project,json=serviceAccountProject" json:"service_account_project,omitempty"`
}
func (m *GetConfigResponse) Reset() { *m = GetConfigResponse{} }
func (m *GetConfigResponse) String() string { return proto.CompactTextString(m) }
func (*GetConfigResponse) ProtoMessage() {}
func (*GetConfigResponse) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{1} }
func (m *GetConfigResponse) GetServiceAccount() string {
if m != nil {
return m.ServiceAccount
}
return ""
}
func (m *GetConfigResponse) GetServiceAccountProject() int64 {
if m != nil {
return m.ServiceAccountProject
}
return 0
}
func init() {
proto.RegisterType((*GetConfigRequest)(nil), "google.cloud.ml.v1beta1.GetConfigRequest")
proto.RegisterType((*GetConfigResponse)(nil), "google.cloud.ml.v1beta1.GetConfigResponse")
}
// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConn
// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion4
// Client API for ProjectManagementService service
type ProjectManagementServiceClient interface {
// Get the service account information associated with your project. You need
// this information in order to grant the service account persmissions for
// the Google Cloud Storage location where you put your model training code
// for training the model with Google Cloud Machine Learning.
GetConfig(ctx context.Context, in *GetConfigRequest, opts ...grpc.CallOption) (*GetConfigResponse, error)
}
type projectManagementServiceClient struct {
cc *grpc.ClientConn
}
func NewProjectManagementServiceClient(cc *grpc.ClientConn) ProjectManagementServiceClient {
return &projectManagementServiceClient{cc}
}
func (c *projectManagementServiceClient) GetConfig(ctx context.Context, in *GetConfigRequest, opts ...grpc.CallOption) (*GetConfigResponse, error) {
out := new(GetConfigResponse)
err := grpc.Invoke(ctx, "/google.cloud.ml.v1beta1.ProjectManagementService/GetConfig", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// Server API for ProjectManagementService service
type ProjectManagementServiceServer interface {
// Get the service account information associated with your project. You need
// this information in order to grant the service account persmissions for
// the Google Cloud Storage location where you put your model training code
// for training the model with Google Cloud Machine Learning.
GetConfig(context.Context, *GetConfigRequest) (*GetConfigResponse, error)
}
func RegisterProjectManagementServiceServer(s *grpc.Server, srv ProjectManagementServiceServer) {
s.RegisterService(&_ProjectManagementService_serviceDesc, srv)
}
func _ProjectManagementService_GetConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetConfigRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(ProjectManagementServiceServer).GetConfig(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.ml.v1beta1.ProjectManagementService/GetConfig",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ProjectManagementServiceServer).GetConfig(ctx, req.(*GetConfigRequest))
}
return interceptor(ctx, in, info, handler)
}
var _ProjectManagementService_serviceDesc = grpc.ServiceDesc{
ServiceName: "google.cloud.ml.v1beta1.ProjectManagementService",
HandlerType: (*ProjectManagementServiceServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "GetConfig",
Handler: _ProjectManagementService_GetConfig_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "google/cloud/ml/v1beta1/project_service.proto",
}
func init() { proto.RegisterFile("google/cloud/ml/v1beta1/project_service.proto", fileDescriptor4) }
var fileDescriptor4 = []byte{
// 327 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0x4f, 0x4a, 0x43, 0x31,
0x10, 0xc6, 0x79, 0x55, 0x84, 0x66, 0xe1, 0x9f, 0x88, 0xb4, 0x14, 0xc1, 0x52, 0xa4, 0xd6, 0xa2,
0x09, 0x55, 0x10, 0x54, 0x5c, 0x58, 0x17, 0xae, 0x84, 0x52, 0x77, 0x6e, 0x4a, 0xfa, 0x1c, 0xc3,
0x93, 0x24, 0x13, 0x5f, 0xd2, 0x6e, 0xc4, 0x8d, 0x27, 0x10, 0x3c, 0x87, 0xa7, 0xf1, 0x0a, 0x1e,
0x44, 0xfa, 0x92, 0x16, 0x6d, 0x11, 0xdc, 0x0d, 0x33, 0xbf, 0x6f, 0x32, 0xdf, 0x4c, 0xc8, 0xa1,
0x44, 0x94, 0x0a, 0x78, 0xaa, 0x70, 0x74, 0xcf, 0xb5, 0xe2, 0xe3, 0xce, 0x10, 0xbc, 0xe8, 0x70,
0x9b, 0xe3, 0x23, 0xa4, 0x7e, 0xe0, 0x20, 0x1f, 0x67, 0x29, 0x30, 0x9b, 0xa3, 0x47, 0x5a, 0x09,
0x38, 0x2b, 0x70, 0xa6, 0x15, 0x8b, 0x78, 0x6d, 0x3b, 0xf6, 0x11, 0x36, 0xe3, 0xc2, 0x18, 0xf4,
0xc2, 0x67, 0x68, 0x5c, 0x90, 0x35, 0x9a, 0x64, 0xfd, 0x1a, 0xfc, 0x15, 0x9a, 0x87, 0x4c, 0xf6,
0xe1, 0x69, 0x04, 0xce, 0x53, 0x4a, 0x96, 0x8d, 0xd0, 0x50, 0x4d, 0xea, 0x49, 0xab, 0xdc, 0x2f,
0xe2, 0x86, 0x27, 0x1b, 0x3f, 0x38, 0x67, 0xd1, 0x38, 0xa0, 0x7b, 0x64, 0x2d, 0x0e, 0x31, 0x10,
0x69, 0x8a, 0x23, 0xe3, 0xa3, 0x66, 0x35, 0xa6, 0x2f, 0x43, 0x96, 0x9e, 0x90, 0xca, 0x1c, 0x38,
0x88, 0x2e, 0xaa, 0xa5, 0x7a, 0xd2, 0x5a, 0xea, 0x6f, 0xfd, 0x16, 0xf4, 0x42, 0xf1, 0xe8, 0x23,
0x21, 0xd5, 0x18, 0xdf, 0x08, 0x23, 0x24, 0x68, 0x30, 0xfe, 0x36, 0xa0, 0xf4, 0x2d, 0x21, 0xe5,
0xd9, 0x4c, 0x74, 0x9f, 0xfd, 0xb1, 0x00, 0x36, 0xef, 0xaf, 0xd6, 0xfe, 0x0f, 0x1a, 0x2c, 0x36,
0x0e, 0x5e, 0x3f, 0xbf, 0xde, 0x4b, 0x4d, 0xba, 0x3b, 0x5b, 0xff, 0xf3, 0x64, 0x1f, 0x17, 0x71,
0x7c, 0xc7, 0xdb, 0x2f, 0x67, 0x72, 0xaa, 0xea, 0x3a, 0xb2, 0x93, 0xa2, 0x5e, 0x68, 0x2f, 0x6c,
0x36, 0x7d, 0xa2, 0xbb, 0x19, 0xfd, 0x44, 0x17, 0xbd, 0xc9, 0x15, 0x7a, 0xc9, 0xdd, 0x69, 0xd4,
0x48, 0x54, 0xc2, 0x48, 0x86, 0xb9, 0xe4, 0x12, 0x4c, 0x71, 0x23, 0x1e, 0x4a, 0xc2, 0x66, 0x6e,
0xe1, 0x33, 0x9c, 0x6b, 0x35, 0x5c, 0x29, 0xa8, 0xe3, 0xef, 0x00, 0x00, 0x00, 0xff, 0xff, 0x76,
0x59, 0xc4, 0x91, 0x31, 0x02, 0x00, 0x00,
}

View File

@ -1,11 +1,11 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: google/cloud/oslogin/common.proto
// source: google/cloud/oslogin/common/common.proto
/*
Package common is a generated protocol buffer package.
It is generated from these files:
google/cloud/oslogin/common.proto
google/cloud/oslogin/common/common.proto
It has these top-level messages:
PosixAccount
@ -163,32 +163,34 @@ func init() {
proto.RegisterType((*SshPublicKey)(nil), "google.cloud.oslogin.common.SshPublicKey")
}
func init() { proto.RegisterFile("google/cloud/oslogin/common.proto", fileDescriptor0) }
func init() { proto.RegisterFile("google/cloud/oslogin/common/common.proto", fileDescriptor0) }
var fileDescriptor0 = []byte{
// 373 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x92, 0xcf, 0x6b, 0x14, 0x31,
0x14, 0xc7, 0x19, 0xd7, 0xb6, 0x3b, 0x71, 0x15, 0x09, 0x3d, 0x84, 0x56, 0x71, 0x2d, 0x08, 0x7b,
0x9a, 0x11, 0x3c, 0x7a, 0x6a, 0xf1, 0x52, 0x14, 0x5c, 0x46, 0xbd, 0x78, 0x19, 0xd2, 0xe4, 0x99,
0x7d, 0x38, 0xc9, 0x1b, 0x92, 0x0c, 0x74, 0xfe, 0x72, 0xaf, 0x92, 0x64, 0x56, 0x3d, 0x48, 0x4f,
0x93, 0xef, 0xe7, 0xfb, 0xcd, 0xf0, 0x7e, 0x84, 0xbd, 0x36, 0x44, 0x66, 0x80, 0x56, 0x0d, 0x34,
0xe9, 0x96, 0xc2, 0x40, 0x06, 0x5d, 0xab, 0xc8, 0x5a, 0x72, 0xcd, 0xe8, 0x29, 0x12, 0xbf, 0x2c,
0x91, 0x26, 0x47, 0x9a, 0x25, 0xd2, 0x94, 0xc8, 0xc5, 0x8b, 0xe5, 0xbe, 0x1c, 0xb1, 0x95, 0xce,
0x51, 0x94, 0x11, 0xc9, 0x85, 0x72, 0xf5, 0xea, 0x57, 0xc5, 0x36, 0x7b, 0x0a, 0x78, 0x7f, 0xad,
0x14, 0x4d, 0x2e, 0x72, 0xc1, 0xce, 0x46, 0x8f, 0x56, 0xfa, 0x59, 0x54, 0xdb, 0x6a, 0xb7, 0xee,
0x8e, 0x92, 0x5f, 0xb0, 0xf5, 0x14, 0xc0, 0x3b, 0x69, 0x41, 0x3c, 0xda, 0x56, 0xbb, 0xba, 0xfb,
0xa3, 0xf9, 0x73, 0xb6, 0x9a, 0x50, 0x8b, 0xd5, 0xb6, 0xda, 0xad, 0xba, 0x74, 0x4c, 0xc4, 0xa0,
0x16, 0x8f, 0x0b, 0x31, 0xa8, 0xf9, 0x1b, 0xf6, 0xec, 0x40, 0x16, 0x7a, 0x8d, 0x1e, 0x54, 0x24,
0x3f, 0x8b, 0x93, 0xfc, 0x97, 0xa7, 0x89, 0x7e, 0x38, 0x42, 0x7e, 0xce, 0x4e, 0xc2, 0x01, 0x86,
0x41, 0x9c, 0x66, 0xb7, 0x88, 0x44, 0x0d, 0x28, 0x0a, 0xe2, 0xac, 0xd0, 0x2c, 0xf8, 0x25, 0xab,
0xc3, 0x1c, 0x22, 0xd8, 0x1e, 0xb5, 0x58, 0x97, 0x9a, 0x0a, 0xb8, 0xd5, 0xfc, 0x25, 0x63, 0xb2,
0x34, 0x95, 0xdc, 0x3a, 0xbb, 0xf5, 0x42, 0x6e, 0xf5, 0x55, 0x64, 0x9b, 0x2f, 0xe1, 0xb0, 0x9f,
0xee, 0x06, 0x54, 0x1f, 0x61, 0x4e, 0x05, 0xff, 0x84, 0xd2, 0x74, 0xdd, 0xa5, 0x23, 0x7f, 0xcb,
0xce, 0xe1, 0x7e, 0x44, 0x9f, 0x07, 0xd6, 0x47, 0xb4, 0xd0, 0x4f, 0x01, 0x54, 0x6e, 0x7e, 0xd5,
0xf1, 0xbf, 0xde, 0x57, 0xb4, 0xf0, 0x2d, 0x80, 0xe2, 0x5b, 0xf6, 0xe4, 0x07, 0x3a, 0x03, 0x7e,
0xf4, 0xe8, 0x62, 0x1e, 0x47, 0xdd, 0xfd, 0x8b, 0x6e, 0x3c, 0x7b, 0xa5, 0xc8, 0x36, 0x0f, 0x2c,
0xec, 0x66, 0xf3, 0x39, 0x7c, 0x4a, 0x7a, 0x9f, 0x16, 0xf4, 0xfd, 0x7a, 0x89, 0x1a, 0x1a, 0xa4,
0x33, 0x0d, 0x79, 0xd3, 0x1a, 0x70, 0x79, 0x79, 0x6d, 0xb1, 0xe4, 0x88, 0xe1, 0xbf, 0xaf, 0xe3,
0x7d, 0xf9, 0xdc, 0x9d, 0xe6, 0xf4, 0xbb, 0xdf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x0a, 0xe8, 0xeb,
0xaa, 0x4a, 0x02, 0x00, 0x00,
// 406 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x92, 0x41, 0x6b, 0x14, 0x31,
0x14, 0xc7, 0x99, 0xae, 0x6d, 0x77, 0xe2, 0x2a, 0x12, 0x7a, 0x08, 0x5d, 0xc5, 0xa5, 0x20, 0xec,
0x69, 0x46, 0xf0, 0xe8, 0xa9, 0xad, 0x20, 0x45, 0xc1, 0x65, 0xd4, 0x8b, 0x2c, 0x2c, 0xd3, 0xe4,
0x99, 0x7d, 0x38, 0xc9, 0x1b, 0x92, 0x0c, 0x74, 0xbf, 0x92, 0x07, 0x3f, 0x88, 0x5f, 0xc8, 0xab,
0x24, 0x99, 0x51, 0x0f, 0xd2, 0x53, 0xf2, 0xff, 0xff, 0xfe, 0xf3, 0x92, 0x97, 0x37, 0x6c, 0xad,
0x89, 0x74, 0x07, 0xb5, 0xec, 0x68, 0x50, 0x35, 0xf9, 0x8e, 0x34, 0xda, 0x5a, 0x92, 0x31, 0x34,
0x2d, 0x55, 0xef, 0x28, 0x10, 0x5f, 0xe6, 0x64, 0x95, 0x92, 0xd5, 0x98, 0xac, 0x72, 0xe4, 0xfc,
0xe9, 0x58, 0xa6, 0xed, 0xb1, 0x6e, 0xad, 0xa5, 0xd0, 0x06, 0x24, 0xeb, 0xf3, 0xa7, 0x17, 0xbf,
0x0a, 0xb6, 0xd8, 0x90, 0xc7, 0xbb, 0x4b, 0x29, 0x69, 0xb0, 0x81, 0x0b, 0x76, 0xda, 0x3b, 0x34,
0xad, 0x3b, 0x88, 0x62, 0x55, 0xac, 0xe7, 0xcd, 0x24, 0xf9, 0x39, 0x9b, 0x0f, 0x1e, 0x9c, 0x6d,
0x0d, 0x88, 0xa3, 0x55, 0xb1, 0x2e, 0x9b, 0x3f, 0x9a, 0x3f, 0x61, 0xb3, 0x01, 0x95, 0x98, 0xad,
0x8a, 0xf5, 0xac, 0x89, 0xdb, 0xe8, 0x68, 0x54, 0xe2, 0x41, 0x76, 0x34, 0x2a, 0xfe, 0x82, 0x3d,
0xde, 0x93, 0x81, 0x9d, 0x42, 0x07, 0x32, 0x90, 0x3b, 0x88, 0xe3, 0x54, 0xe5, 0x51, 0x74, 0xdf,
0x4c, 0x26, 0x3f, 0x63, 0xc7, 0x7e, 0x0f, 0x5d, 0x27, 0x4e, 0x12, 0xcd, 0x22, 0xba, 0x1a, 0x24,
0x79, 0x71, 0x9a, 0xdd, 0x24, 0xf8, 0x92, 0x95, 0xfe, 0xe0, 0x03, 0x98, 0x1d, 0x2a, 0x31, 0xcf,
0x77, 0xca, 0xc6, 0x8d, 0xe2, 0xcf, 0x18, 0x6b, 0x73, 0x53, 0x91, 0x96, 0x89, 0x96, 0xa3, 0x73,
0xa3, 0x2e, 0x02, 0x5b, 0x7c, 0xf4, 0xfb, 0xcd, 0x70, 0xdb, 0xa1, 0x7c, 0x07, 0x87, 0x78, 0xe1,
0x6f, 0x90, 0x9b, 0x2e, 0x9b, 0xb8, 0xe5, 0x2f, 0xd9, 0x19, 0xdc, 0xf5, 0xe8, 0xd2, 0x83, 0xed,
0x02, 0x1a, 0xd8, 0x0d, 0x1e, 0x64, 0x6a, 0x7e, 0xd6, 0xf0, 0xbf, 0xec, 0x13, 0x1a, 0xf8, 0xec,
0x41, 0xf2, 0x15, 0x7b, 0xf8, 0x15, 0xad, 0x06, 0xd7, 0x3b, 0xb4, 0x21, 0x3d, 0x47, 0xd9, 0xfc,
0x6b, 0x5d, 0xfd, 0x28, 0xd8, 0x73, 0x49, 0xa6, 0xba, 0x67, 0x62, 0x57, 0x8b, 0x0f, 0xfe, 0x7d,
0xd4, 0x9b, 0x38, 0xa1, 0x2f, 0x97, 0x63, 0x54, 0x53, 0xd7, 0x5a, 0x5d, 0x91, 0xd3, 0xb5, 0x06,
0x9b, 0xa6, 0x57, 0x67, 0xd4, 0xf6, 0xe8, 0xff, 0xfb, 0x97, 0xbc, 0xce, 0xcb, 0xf7, 0xa3, 0xe5,
0xdb, 0x5c, 0xe3, 0x3a, 0x1d, 0x37, 0x96, 0xaf, 0xae, 0x13, 0xfd, 0x39, 0xd1, 0x6d, 0xa2, 0xdb,
0x91, 0x6e, 0x33, 0xbd, 0x3d, 0x49, 0x27, 0xbd, 0xfa, 0x1d, 0x00, 0x00, 0xff, 0xff, 0xdc, 0x30,
0xf7, 0x5b, 0x8e, 0x02, 0x00, 0x00,
}

View File

@ -0,0 +1,584 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: google/cloud/oslogin/v1/oslogin.proto
/*
Package oslogin is a generated protocol buffer package.
It is generated from these files:
google/cloud/oslogin/v1/oslogin.proto
It has these top-level messages:
LoginProfile
DeletePosixAccountRequest
DeleteSshPublicKeyRequest
GetLoginProfileRequest
GetSshPublicKeyRequest
ImportSshPublicKeyRequest
ImportSshPublicKeyResponse
UpdateSshPublicKeyRequest
*/
package oslogin
import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
import _ "google.golang.org/genproto/googleapis/api/annotations"
import google_cloud_oslogin_common "google.golang.org/genproto/googleapis/cloud/oslogin/common"
import google_protobuf1 "github.com/golang/protobuf/ptypes/empty"
import google_protobuf2 "google.golang.org/genproto/protobuf/field_mask"
import (
context "golang.org/x/net/context"
grpc "google.golang.org/grpc"
)
// 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
// The user profile information used for logging in to a virtual machine on
// Google Compute Engine.
type LoginProfile struct {
// The primary email address that uniquely identifies the user.
Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
// The list of POSIX accounts associated with the user.
PosixAccounts []*google_cloud_oslogin_common.PosixAccount `protobuf:"bytes,2,rep,name=posix_accounts,json=posixAccounts" json:"posix_accounts,omitempty"`
// A map from SSH public key fingerprint to the associated key object.
SshPublicKeys map[string]*google_cloud_oslogin_common.SshPublicKey `protobuf:"bytes,3,rep,name=ssh_public_keys,json=sshPublicKeys" json:"ssh_public_keys,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
// Indicates if the user is suspended. A suspended user cannot log in but
// their profile information is retained.
Suspended bool `protobuf:"varint,4,opt,name=suspended" json:"suspended,omitempty"`
}
func (m *LoginProfile) Reset() { *m = LoginProfile{} }
func (m *LoginProfile) String() string { return proto.CompactTextString(m) }
func (*LoginProfile) ProtoMessage() {}
func (*LoginProfile) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
func (m *LoginProfile) GetName() string {
if m != nil {
return m.Name
}
return ""
}
func (m *LoginProfile) GetPosixAccounts() []*google_cloud_oslogin_common.PosixAccount {
if m != nil {
return m.PosixAccounts
}
return nil
}
func (m *LoginProfile) GetSshPublicKeys() map[string]*google_cloud_oslogin_common.SshPublicKey {
if m != nil {
return m.SshPublicKeys
}
return nil
}
func (m *LoginProfile) GetSuspended() bool {
if m != nil {
return m.Suspended
}
return false
}
// A request message for deleting a POSIX account entry.
type DeletePosixAccountRequest struct {
// A reference to the POSIX account to update. POSIX accounts are identified
// by the project ID they are associated with. A reference to the POSIX
// account is in format `users/{user}/projects/{project}`.
Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
}
func (m *DeletePosixAccountRequest) Reset() { *m = DeletePosixAccountRequest{} }
func (m *DeletePosixAccountRequest) String() string { return proto.CompactTextString(m) }
func (*DeletePosixAccountRequest) ProtoMessage() {}
func (*DeletePosixAccountRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
func (m *DeletePosixAccountRequest) GetName() string {
if m != nil {
return m.Name
}
return ""
}
// A request message for deleting an SSH public key.
type DeleteSshPublicKeyRequest struct {
// The fingerprint of the public key to update. Public keys are identified by
// their SHA-256 fingerprint. The fingerprint of the public key is in format
// `users/{user}/sshPublicKeys/{fingerprint}`.
Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
}
func (m *DeleteSshPublicKeyRequest) Reset() { *m = DeleteSshPublicKeyRequest{} }
func (m *DeleteSshPublicKeyRequest) String() string { return proto.CompactTextString(m) }
func (*DeleteSshPublicKeyRequest) ProtoMessage() {}
func (*DeleteSshPublicKeyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
func (m *DeleteSshPublicKeyRequest) GetName() string {
if m != nil {
return m.Name
}
return ""
}
// A request message for retrieving the login profile information for a user.
type GetLoginProfileRequest struct {
// The unique ID for the user in format `users/{user}`.
Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
}
func (m *GetLoginProfileRequest) Reset() { *m = GetLoginProfileRequest{} }
func (m *GetLoginProfileRequest) String() string { return proto.CompactTextString(m) }
func (*GetLoginProfileRequest) ProtoMessage() {}
func (*GetLoginProfileRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
func (m *GetLoginProfileRequest) GetName() string {
if m != nil {
return m.Name
}
return ""
}
// A request message for retrieving an SSH public key.
type GetSshPublicKeyRequest struct {
// The fingerprint of the public key to retrieve. Public keys are identified
// by their SHA-256 fingerprint. The fingerprint of the public key is in
// format `users/{user}/sshPublicKeys/{fingerprint}`.
Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
}
func (m *GetSshPublicKeyRequest) Reset() { *m = GetSshPublicKeyRequest{} }
func (m *GetSshPublicKeyRequest) String() string { return proto.CompactTextString(m) }
func (*GetSshPublicKeyRequest) ProtoMessage() {}
func (*GetSshPublicKeyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }
func (m *GetSshPublicKeyRequest) GetName() string {
if m != nil {
return m.Name
}
return ""
}
// A request message for importing an SSH public key.
type ImportSshPublicKeyRequest struct {
// The unique ID for the user in format `users/{user}`.
Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"`
// The SSH public key and expiration time.
SshPublicKey *google_cloud_oslogin_common.SshPublicKey `protobuf:"bytes,2,opt,name=ssh_public_key,json=sshPublicKey" json:"ssh_public_key,omitempty"`
// The project ID of the Google Cloud Platform project.
ProjectId string `protobuf:"bytes,3,opt,name=project_id,json=projectId" json:"project_id,omitempty"`
}
func (m *ImportSshPublicKeyRequest) Reset() { *m = ImportSshPublicKeyRequest{} }
func (m *ImportSshPublicKeyRequest) String() string { return proto.CompactTextString(m) }
func (*ImportSshPublicKeyRequest) ProtoMessage() {}
func (*ImportSshPublicKeyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }
func (m *ImportSshPublicKeyRequest) GetParent() string {
if m != nil {
return m.Parent
}
return ""
}
func (m *ImportSshPublicKeyRequest) GetSshPublicKey() *google_cloud_oslogin_common.SshPublicKey {
if m != nil {
return m.SshPublicKey
}
return nil
}
func (m *ImportSshPublicKeyRequest) GetProjectId() string {
if m != nil {
return m.ProjectId
}
return ""
}
// A response message for importing an SSH public key.
type ImportSshPublicKeyResponse struct {
// The login profile information for the user.
LoginProfile *LoginProfile `protobuf:"bytes,1,opt,name=login_profile,json=loginProfile" json:"login_profile,omitempty"`
}
func (m *ImportSshPublicKeyResponse) Reset() { *m = ImportSshPublicKeyResponse{} }
func (m *ImportSshPublicKeyResponse) String() string { return proto.CompactTextString(m) }
func (*ImportSshPublicKeyResponse) ProtoMessage() {}
func (*ImportSshPublicKeyResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} }
func (m *ImportSshPublicKeyResponse) GetLoginProfile() *LoginProfile {
if m != nil {
return m.LoginProfile
}
return nil
}
// A request message for updating an SSH public key.
type UpdateSshPublicKeyRequest struct {
// The fingerprint of the public key to update. Public keys are identified by
// their SHA-256 fingerprint. The fingerprint of the public key is in format
// `users/{user}/sshPublicKeys/{fingerprint}`.
Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
// The SSH public key and expiration time.
SshPublicKey *google_cloud_oslogin_common.SshPublicKey `protobuf:"bytes,2,opt,name=ssh_public_key,json=sshPublicKey" json:"ssh_public_key,omitempty"`
// Mask to control which fields get updated. Updates all if not present.
UpdateMask *google_protobuf2.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"`
}
func (m *UpdateSshPublicKeyRequest) Reset() { *m = UpdateSshPublicKeyRequest{} }
func (m *UpdateSshPublicKeyRequest) String() string { return proto.CompactTextString(m) }
func (*UpdateSshPublicKeyRequest) ProtoMessage() {}
func (*UpdateSshPublicKeyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} }
func (m *UpdateSshPublicKeyRequest) GetName() string {
if m != nil {
return m.Name
}
return ""
}
func (m *UpdateSshPublicKeyRequest) GetSshPublicKey() *google_cloud_oslogin_common.SshPublicKey {
if m != nil {
return m.SshPublicKey
}
return nil
}
func (m *UpdateSshPublicKeyRequest) GetUpdateMask() *google_protobuf2.FieldMask {
if m != nil {
return m.UpdateMask
}
return nil
}
func init() {
proto.RegisterType((*LoginProfile)(nil), "google.cloud.oslogin.v1.LoginProfile")
proto.RegisterType((*DeletePosixAccountRequest)(nil), "google.cloud.oslogin.v1.DeletePosixAccountRequest")
proto.RegisterType((*DeleteSshPublicKeyRequest)(nil), "google.cloud.oslogin.v1.DeleteSshPublicKeyRequest")
proto.RegisterType((*GetLoginProfileRequest)(nil), "google.cloud.oslogin.v1.GetLoginProfileRequest")
proto.RegisterType((*GetSshPublicKeyRequest)(nil), "google.cloud.oslogin.v1.GetSshPublicKeyRequest")
proto.RegisterType((*ImportSshPublicKeyRequest)(nil), "google.cloud.oslogin.v1.ImportSshPublicKeyRequest")
proto.RegisterType((*ImportSshPublicKeyResponse)(nil), "google.cloud.oslogin.v1.ImportSshPublicKeyResponse")
proto.RegisterType((*UpdateSshPublicKeyRequest)(nil), "google.cloud.oslogin.v1.UpdateSshPublicKeyRequest")
}
// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConn
// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion4
// Client API for OsLoginService service
type OsLoginServiceClient interface {
// Deletes a POSIX account.
DeletePosixAccount(ctx context.Context, in *DeletePosixAccountRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
// Deletes an SSH public key.
DeleteSshPublicKey(ctx context.Context, in *DeleteSshPublicKeyRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
// Retrieves the profile information used for logging in to a virtual machine
// on Google Compute Engine.
GetLoginProfile(ctx context.Context, in *GetLoginProfileRequest, opts ...grpc.CallOption) (*LoginProfile, error)
// Retrieves an SSH public key.
GetSshPublicKey(ctx context.Context, in *GetSshPublicKeyRequest, opts ...grpc.CallOption) (*google_cloud_oslogin_common.SshPublicKey, error)
// Adds an SSH public key and returns the profile information. Default POSIX
// account information is set when no username and UID exist as part of the
// login profile.
ImportSshPublicKey(ctx context.Context, in *ImportSshPublicKeyRequest, opts ...grpc.CallOption) (*ImportSshPublicKeyResponse, error)
// Updates an SSH public key and returns the profile information. This method
// supports patch semantics.
UpdateSshPublicKey(ctx context.Context, in *UpdateSshPublicKeyRequest, opts ...grpc.CallOption) (*google_cloud_oslogin_common.SshPublicKey, error)
}
type osLoginServiceClient struct {
cc *grpc.ClientConn
}
func NewOsLoginServiceClient(cc *grpc.ClientConn) OsLoginServiceClient {
return &osLoginServiceClient{cc}
}
func (c *osLoginServiceClient) DeletePosixAccount(ctx context.Context, in *DeletePosixAccountRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
out := new(google_protobuf1.Empty)
err := grpc.Invoke(ctx, "/google.cloud.oslogin.v1.OsLoginService/DeletePosixAccount", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *osLoginServiceClient) DeleteSshPublicKey(ctx context.Context, in *DeleteSshPublicKeyRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
out := new(google_protobuf1.Empty)
err := grpc.Invoke(ctx, "/google.cloud.oslogin.v1.OsLoginService/DeleteSshPublicKey", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *osLoginServiceClient) GetLoginProfile(ctx context.Context, in *GetLoginProfileRequest, opts ...grpc.CallOption) (*LoginProfile, error) {
out := new(LoginProfile)
err := grpc.Invoke(ctx, "/google.cloud.oslogin.v1.OsLoginService/GetLoginProfile", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *osLoginServiceClient) GetSshPublicKey(ctx context.Context, in *GetSshPublicKeyRequest, opts ...grpc.CallOption) (*google_cloud_oslogin_common.SshPublicKey, error) {
out := new(google_cloud_oslogin_common.SshPublicKey)
err := grpc.Invoke(ctx, "/google.cloud.oslogin.v1.OsLoginService/GetSshPublicKey", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *osLoginServiceClient) ImportSshPublicKey(ctx context.Context, in *ImportSshPublicKeyRequest, opts ...grpc.CallOption) (*ImportSshPublicKeyResponse, error) {
out := new(ImportSshPublicKeyResponse)
err := grpc.Invoke(ctx, "/google.cloud.oslogin.v1.OsLoginService/ImportSshPublicKey", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *osLoginServiceClient) UpdateSshPublicKey(ctx context.Context, in *UpdateSshPublicKeyRequest, opts ...grpc.CallOption) (*google_cloud_oslogin_common.SshPublicKey, error) {
out := new(google_cloud_oslogin_common.SshPublicKey)
err := grpc.Invoke(ctx, "/google.cloud.oslogin.v1.OsLoginService/UpdateSshPublicKey", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// Server API for OsLoginService service
type OsLoginServiceServer interface {
// Deletes a POSIX account.
DeletePosixAccount(context.Context, *DeletePosixAccountRequest) (*google_protobuf1.Empty, error)
// Deletes an SSH public key.
DeleteSshPublicKey(context.Context, *DeleteSshPublicKeyRequest) (*google_protobuf1.Empty, error)
// Retrieves the profile information used for logging in to a virtual machine
// on Google Compute Engine.
GetLoginProfile(context.Context, *GetLoginProfileRequest) (*LoginProfile, error)
// Retrieves an SSH public key.
GetSshPublicKey(context.Context, *GetSshPublicKeyRequest) (*google_cloud_oslogin_common.SshPublicKey, error)
// Adds an SSH public key and returns the profile information. Default POSIX
// account information is set when no username and UID exist as part of the
// login profile.
ImportSshPublicKey(context.Context, *ImportSshPublicKeyRequest) (*ImportSshPublicKeyResponse, error)
// Updates an SSH public key and returns the profile information. This method
// supports patch semantics.
UpdateSshPublicKey(context.Context, *UpdateSshPublicKeyRequest) (*google_cloud_oslogin_common.SshPublicKey, error)
}
func RegisterOsLoginServiceServer(s *grpc.Server, srv OsLoginServiceServer) {
s.RegisterService(&_OsLoginService_serviceDesc, srv)
}
func _OsLoginService_DeletePosixAccount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(DeletePosixAccountRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(OsLoginServiceServer).DeletePosixAccount(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.oslogin.v1.OsLoginService/DeletePosixAccount",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(OsLoginServiceServer).DeletePosixAccount(ctx, req.(*DeletePosixAccountRequest))
}
return interceptor(ctx, in, info, handler)
}
func _OsLoginService_DeleteSshPublicKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(DeleteSshPublicKeyRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(OsLoginServiceServer).DeleteSshPublicKey(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.oslogin.v1.OsLoginService/DeleteSshPublicKey",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(OsLoginServiceServer).DeleteSshPublicKey(ctx, req.(*DeleteSshPublicKeyRequest))
}
return interceptor(ctx, in, info, handler)
}
func _OsLoginService_GetLoginProfile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetLoginProfileRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(OsLoginServiceServer).GetLoginProfile(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.oslogin.v1.OsLoginService/GetLoginProfile",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(OsLoginServiceServer).GetLoginProfile(ctx, req.(*GetLoginProfileRequest))
}
return interceptor(ctx, in, info, handler)
}
func _OsLoginService_GetSshPublicKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetSshPublicKeyRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(OsLoginServiceServer).GetSshPublicKey(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.oslogin.v1.OsLoginService/GetSshPublicKey",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(OsLoginServiceServer).GetSshPublicKey(ctx, req.(*GetSshPublicKeyRequest))
}
return interceptor(ctx, in, info, handler)
}
func _OsLoginService_ImportSshPublicKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ImportSshPublicKeyRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(OsLoginServiceServer).ImportSshPublicKey(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.oslogin.v1.OsLoginService/ImportSshPublicKey",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(OsLoginServiceServer).ImportSshPublicKey(ctx, req.(*ImportSshPublicKeyRequest))
}
return interceptor(ctx, in, info, handler)
}
func _OsLoginService_UpdateSshPublicKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(UpdateSshPublicKeyRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(OsLoginServiceServer).UpdateSshPublicKey(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.oslogin.v1.OsLoginService/UpdateSshPublicKey",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(OsLoginServiceServer).UpdateSshPublicKey(ctx, req.(*UpdateSshPublicKeyRequest))
}
return interceptor(ctx, in, info, handler)
}
var _OsLoginService_serviceDesc = grpc.ServiceDesc{
ServiceName: "google.cloud.oslogin.v1.OsLoginService",
HandlerType: (*OsLoginServiceServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "DeletePosixAccount",
Handler: _OsLoginService_DeletePosixAccount_Handler,
},
{
MethodName: "DeleteSshPublicKey",
Handler: _OsLoginService_DeleteSshPublicKey_Handler,
},
{
MethodName: "GetLoginProfile",
Handler: _OsLoginService_GetLoginProfile_Handler,
},
{
MethodName: "GetSshPublicKey",
Handler: _OsLoginService_GetSshPublicKey_Handler,
},
{
MethodName: "ImportSshPublicKey",
Handler: _OsLoginService_ImportSshPublicKey_Handler,
},
{
MethodName: "UpdateSshPublicKey",
Handler: _OsLoginService_UpdateSshPublicKey_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "google/cloud/oslogin/v1/oslogin.proto",
}
func init() { proto.RegisterFile("google/cloud/oslogin/v1/oslogin.proto", fileDescriptor0) }
var fileDescriptor0 = []byte{
// 774 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0xcd, 0x6e, 0xd3, 0x40,
0x10, 0x96, 0x93, 0x52, 0xe8, 0x26, 0x6d, 0xd1, 0x1e, 0xda, 0xd4, 0x6d, 0xd5, 0x60, 0x51, 0x35,
0x44, 0xc8, 0x56, 0x52, 0x0e, 0x25, 0x15, 0x54, 0x14, 0x4a, 0x55, 0x7e, 0xd4, 0x28, 0x15, 0x3d,
0xa0, 0x4a, 0xc1, 0x75, 0xb6, 0xae, 0x89, 0xed, 0x5d, 0xbc, 0x76, 0x44, 0x84, 0x7a, 0xe1, 0xc2,
0x85, 0x13, 0x9c, 0x38, 0x22, 0x6e, 0x5c, 0x78, 0x02, 0x78, 0x00, 0x24, 0x4e, 0x3c, 0x01, 0x12,
0x0f, 0x82, 0xbc, 0x5e, 0xb7, 0x4e, 0x6c, 0xa7, 0xae, 0xc4, 0x29, 0xbb, 0x9e, 0xf9, 0x66, 0xbf,
0xfd, 0x76, 0xbe, 0x51, 0xc0, 0xb2, 0x8e, 0xb1, 0x6e, 0x22, 0x45, 0x33, 0xb1, 0xd7, 0x51, 0x30,
0x35, 0xb1, 0x6e, 0xd8, 0x4a, 0xaf, 0x16, 0x2e, 0x65, 0xe2, 0x60, 0x17, 0xc3, 0xd9, 0x20, 0x4d,
0x66, 0x69, 0x72, 0x18, 0xeb, 0xd5, 0xc4, 0x05, 0x8e, 0x57, 0x89, 0xa1, 0xa8, 0xb6, 0x8d, 0x5d,
0xd5, 0x35, 0xb0, 0x4d, 0x03, 0x98, 0x58, 0x49, 0xac, 0xae, 0x61, 0xcb, 0xc2, 0xe1, 0x0f, 0xcf,
0x9c, 0xe7, 0x99, 0x6c, 0x77, 0xe8, 0x1d, 0x29, 0xc8, 0x22, 0x6e, 0x9f, 0x07, 0xcb, 0xc3, 0xc1,
0x23, 0x03, 0x99, 0x9d, 0xb6, 0xa5, 0xd2, 0x6e, 0x90, 0x21, 0xfd, 0xc9, 0x81, 0xe2, 0x13, 0xbf,
0x78, 0xd3, 0xc1, 0x47, 0x86, 0x89, 0x20, 0x04, 0x63, 0xb6, 0x6a, 0xa1, 0x92, 0x50, 0x16, 0x2a,
0x13, 0x2d, 0xb6, 0x86, 0x4d, 0x30, 0x45, 0x30, 0x35, 0x5e, 0xb7, 0x55, 0x4d, 0xc3, 0x9e, 0xed,
0xd2, 0x52, 0xae, 0x9c, 0xaf, 0x14, 0xea, 0x37, 0xe4, 0xc4, 0xdb, 0x71, 0x7e, 0x4d, 0x1f, 0x72,
0x2f, 0x40, 0xb4, 0x26, 0x49, 0x64, 0x47, 0xe1, 0x0b, 0x30, 0x4d, 0xe9, 0x71, 0x9b, 0x78, 0x87,
0xa6, 0xa1, 0xb5, 0xbb, 0xa8, 0x4f, 0x4b, 0x79, 0x56, 0x72, 0x4d, 0x4e, 0x11, 0x4c, 0x8e, 0xb2,
0x94, 0xf7, 0xe8, 0x71, 0x93, 0x61, 0x1f, 0xa3, 0x3e, 0xdd, 0xb2, 0x5d, 0xa7, 0xdf, 0x9a, 0xa4,
0xd1, 0x6f, 0x70, 0x01, 0x4c, 0x50, 0x8f, 0x12, 0x64, 0x77, 0x50, 0xa7, 0x34, 0x56, 0x16, 0x2a,
0x57, 0x5a, 0x67, 0x1f, 0xc4, 0x2e, 0x80, 0xf1, 0x12, 0xf0, 0x2a, 0xc8, 0x77, 0x51, 0x9f, 0x5f,
0xdd, 0x5f, 0xc2, 0x0d, 0x70, 0xa9, 0xa7, 0x9a, 0x1e, 0x2a, 0xe5, 0xca, 0xc2, 0xb9, 0x17, 0x8e,
0x56, 0x6c, 0x05, 0xb8, 0x46, 0x6e, 0x4d, 0x90, 0x14, 0x30, 0xf7, 0x00, 0x99, 0xc8, 0x45, 0x03,
0x8a, 0xa0, 0x57, 0x1e, 0xa2, 0x6e, 0x92, 0xde, 0x67, 0x80, 0x81, 0x8a, 0x23, 0x00, 0x37, 0xc1,
0xcc, 0x36, 0x72, 0xa3, 0x0a, 0x9d, 0x9f, 0x9d, 0xb5, 0xf6, 0x17, 0x01, 0xcc, 0xed, 0x58, 0x04,
0x3b, 0x89, 0x88, 0x19, 0x30, 0x4e, 0x54, 0x07, 0xd9, 0x2e, 0xc7, 0xf0, 0x1d, 0xdc, 0x05, 0x53,
0x83, 0x0f, 0x7c, 0x71, 0x05, 0x8b, 0xd1, 0x07, 0x85, 0x8b, 0x00, 0x10, 0x07, 0xbf, 0x44, 0x9a,
0xdb, 0x36, 0x3a, 0xa5, 0x3c, 0x3b, 0x6c, 0x82, 0x7f, 0xd9, 0xe9, 0x48, 0xc7, 0x40, 0x4c, 0x22,
0x49, 0x09, 0xb6, 0x29, 0x82, 0x8f, 0xc0, 0x24, 0x3b, 0xa7, 0x4d, 0x02, 0x75, 0x18, 0xd9, 0x42,
0x7d, 0x39, 0x53, 0xb3, 0xb5, 0x8a, 0x66, 0x64, 0x27, 0x7d, 0x17, 0xc0, 0xdc, 0x33, 0xd2, 0x51,
0x33, 0xbf, 0xce, 0xff, 0xd7, 0x62, 0x1d, 0x14, 0x3c, 0xc6, 0x80, 0x39, 0x99, 0x89, 0x51, 0xa8,
0x8b, 0x61, 0xb5, 0xd0, 0xec, 0xf2, 0x43, 0xdf, 0xec, 0x4f, 0x55, 0xda, 0x6d, 0x81, 0x20, 0xdd,
0x5f, 0xd7, 0x7f, 0x5d, 0x06, 0x53, 0xbb, 0x94, 0x5d, 0x70, 0x0f, 0x39, 0x3d, 0x43, 0x43, 0xf0,
0x9d, 0x00, 0x60, 0xbc, 0x43, 0x61, 0x3d, 0x55, 0x9e, 0xd4, 0x76, 0x16, 0x67, 0x62, 0x2c, 0xb6,
0xfc, 0x79, 0x24, 0x2d, 0xbf, 0xfd, 0xfd, 0xf7, 0x63, 0x6e, 0xa9, 0xba, 0xe8, 0x8f, 0xc8, 0x37,
0xbe, 0x2c, 0x77, 0x3c, 0x8a, 0x1c, 0xaa, 0x54, 0x15, 0xfe, 0x88, 0x54, 0xa9, 0x9e, 0xc0, 0xf7,
0xa7, 0x4c, 0xa2, 0xd7, 0x3f, 0x97, 0x49, 0xc2, 0x4b, 0xa4, 0x32, 0xa9, 0x32, 0x26, 0xd7, 0xab,
0x52, 0x9c, 0xc9, 0xc0, 0x04, 0xf1, 0xe9, 0x7c, 0x10, 0xc0, 0xf4, 0x90, 0xb1, 0xa0, 0x92, 0xca,
0x25, 0xd9, 0x82, 0x62, 0xb6, 0x2e, 0x93, 0x56, 0x18, 0xaf, 0x6b, 0x70, 0x29, 0xc6, 0xeb, 0x44,
0x89, 0x36, 0x20, 0xfc, 0x14, 0x90, 0x1a, 0x10, 0x68, 0x24, 0xa9, 0x24, 0x75, 0xb2, 0xf7, 0x5e,
0x28, 0x18, 0xcc, 0x22, 0xd8, 0x0f, 0x01, 0xc0, 0xb8, 0x0f, 0x47, 0xbc, 0x5f, 0xea, 0x64, 0x11,
0x57, 0x2f, 0x84, 0x09, 0x8c, 0x2e, 0x6d, 0x30, 0xae, 0xb7, 0xa5, 0x15, 0xc6, 0x35, 0x98, 0x45,
0xa7, 0x32, 0x36, 0x8c, 0x18, 0xb0, 0x31, 0xe4, 0x4c, 0xf8, 0x4d, 0x00, 0x30, 0xee, 0xee, 0x11,
0x17, 0x48, 0x1d, 0x05, 0x17, 0x91, 0xb8, 0xc1, 0x68, 0xdf, 0xaa, 0x67, 0x90, 0x78, 0x98, 0xf1,
0xe6, 0x67, 0x01, 0xcc, 0x6b, 0xd8, 0x4a, 0x23, 0xb8, 0x59, 0xe4, 0x66, 0x6f, 0xfa, 0x36, 0x68,
0x0a, 0xcf, 0xef, 0xf2, 0x44, 0x1d, 0x9b, 0xaa, 0xad, 0xcb, 0xd8, 0xd1, 0x15, 0x1d, 0xd9, 0xcc,
0x24, 0x4a, 0x10, 0x52, 0x89, 0x41, 0x63, 0xff, 0x6b, 0xd6, 0xf9, 0xf2, 0x6b, 0x6e, 0x76, 0x3b,
0x28, 0x70, 0x9f, 0x9d, 0xc4, 0xab, 0xcb, 0xfb, 0xb5, 0x9f, 0x61, 0xe4, 0x80, 0x45, 0x0e, 0x78,
0xe4, 0x60, 0xbf, 0x76, 0x38, 0xce, 0xca, 0xaf, 0xfe, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x8e, 0x79,
0x9f, 0xd6, 0x35, 0x09, 0x00, 0x00,
}

View File

@ -530,52 +530,54 @@ var _OsLoginService_serviceDesc = grpc.ServiceDesc{
func init() { proto.RegisterFile("google/cloud/oslogin/v1alpha/oslogin.proto", fileDescriptor0) }
var fileDescriptor0 = []byte{
// 745 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0xcd, 0x6e, 0xd3, 0x4c,
0x14, 0x95, 0x93, 0x7e, 0x55, 0x3b, 0x49, 0xdb, 0x4f, 0xb3, 0xa8, 0x52, 0x53, 0xa4, 0x60, 0x55,
0xd0, 0x5a, 0x95, 0x47, 0x04, 0x24, 0x4a, 0xab, 0x52, 0x51, 0x5a, 0x50, 0x05, 0xa8, 0x91, 0x2b,
0x36, 0x6c, 0xa2, 0xa9, 0x3d, 0x75, 0x4d, 0x6c, 0xcf, 0xe0, 0xb1, 0x0b, 0x11, 0xea, 0x86, 0x37,
0x40, 0x95, 0xd8, 0xa3, 0x3e, 0x05, 0x0b, 0x1e, 0x81, 0x15, 0xaf, 0x80, 0x78, 0x0e, 0xe4, 0xf1,
0xa4, 0x71, 0x12, 0x27, 0x71, 0x24, 0x76, 0xbe, 0x33, 0xf7, 0xdc, 0x39, 0xf7, 0xdc, 0x1f, 0x19,
0xe8, 0x0e, 0xa5, 0x8e, 0x47, 0x90, 0xe5, 0xd1, 0xd8, 0x46, 0x94, 0x7b, 0xd4, 0x71, 0x03, 0x74,
0x71, 0x1f, 0x7b, 0xec, 0x1c, 0x77, 0x6d, 0x83, 0x85, 0x34, 0xa2, 0x70, 0x35, 0xf5, 0x35, 0x84,
0xaf, 0xd1, 0xbd, 0x93, 0xbe, 0xaa, 0xbc, 0x45, 0x98, 0xb9, 0x08, 0x07, 0x01, 0x8d, 0x70, 0xe4,
0xd2, 0x80, 0xa7, 0x58, 0xf5, 0x4e, 0xee, 0x3b, 0x16, 0xf5, 0x7d, 0x2a, 0xc3, 0xab, 0xb7, 0xa4,
0x8b, 0xb0, 0x4e, 0xe3, 0x33, 0x44, 0x7c, 0x16, 0x75, 0xe4, 0x65, 0x7d, 0xf0, 0xf2, 0xcc, 0x25,
0x9e, 0xdd, 0xf2, 0x31, 0x6f, 0xa7, 0x1e, 0xda, 0x9f, 0x12, 0xa8, 0xbe, 0x4a, 0xa2, 0x36, 0x43,
0x7a, 0xe6, 0x7a, 0x04, 0x42, 0x30, 0x13, 0x60, 0x9f, 0xd4, 0x94, 0xba, 0xb2, 0x3e, 0x6f, 0x8a,
0x6f, 0xd8, 0x04, 0x8b, 0x8c, 0x72, 0xf7, 0x63, 0x0b, 0x5b, 0x16, 0x8d, 0x83, 0x88, 0xd7, 0x4a,
0xf5, 0xf2, 0x7a, 0xa5, 0xb1, 0x61, 0xe4, 0xe6, 0x26, 0xf9, 0x35, 0x13, 0xc8, 0xd3, 0x14, 0x61,
0x2e, 0xb0, 0x8c, 0xc5, 0x21, 0x01, 0x4b, 0x9c, 0x9f, 0xb7, 0x58, 0x7c, 0xea, 0xb9, 0x56, 0xab,
0x4d, 0x3a, 0xbc, 0x56, 0x16, 0x21, 0x77, 0x8d, 0x71, 0x72, 0x19, 0x59, 0xaa, 0xc6, 0x09, 0x3f,
0x6f, 0x8a, 0x00, 0x2f, 0x49, 0x87, 0x1f, 0x06, 0x51, 0xd8, 0x31, 0x17, 0x78, 0xf6, 0x0c, 0xae,
0x82, 0x79, 0x1e, 0x73, 0x46, 0x02, 0x9b, 0xd8, 0xb5, 0x99, 0xba, 0xb2, 0x3e, 0x67, 0xf6, 0x0e,
0xd4, 0x36, 0x80, 0xc3, 0x21, 0xe0, 0xff, 0xa0, 0xdc, 0x26, 0x1d, 0x99, 0x7f, 0xf2, 0x09, 0xf7,
0xc0, 0x7f, 0x17, 0xd8, 0x8b, 0x49, 0xad, 0x54, 0x57, 0x26, 0x66, 0x9d, 0x8d, 0x68, 0xa6, 0xb8,
0xed, 0xd2, 0x96, 0xa2, 0x21, 0xb0, 0x72, 0x40, 0x3c, 0x12, 0x91, 0x3e, 0x59, 0xc8, 0xfb, 0x98,
0xf0, 0x28, 0x4f, 0xf4, 0x1e, 0xa0, 0x2f, 0xe2, 0x18, 0xc0, 0x26, 0x58, 0x7e, 0x41, 0xa2, 0xac,
0x42, 0x93, 0xbd, 0x8b, 0xc6, 0xbe, 0x56, 0xc0, 0xca, 0x91, 0xcf, 0x68, 0x98, 0x8b, 0x58, 0x06,
0xb3, 0x0c, 0x87, 0x24, 0x88, 0x24, 0x46, 0x5a, 0xf0, 0x18, 0x2c, 0xf6, 0x57, 0x79, 0x7a, 0x05,
0xab, 0xd9, 0x82, 0xc2, 0xdb, 0x00, 0xb0, 0x90, 0xbe, 0x23, 0x56, 0xd4, 0x72, 0xed, 0x5a, 0x59,
0x3c, 0x36, 0x2f, 0x4f, 0x8e, 0x6c, 0xcd, 0x07, 0x6a, 0x1e, 0x49, 0xce, 0x68, 0xc0, 0x09, 0x3c,
0x06, 0x0b, 0xe2, 0x9d, 0x16, 0x4b, 0xd5, 0x11, 0x64, 0x2b, 0x0d, 0xbd, 0x78, 0xc7, 0x99, 0x55,
0x2f, 0x63, 0x69, 0x3f, 0x14, 0xb0, 0xf2, 0x86, 0xd9, 0xb8, 0x70, 0x89, 0xfe, 0xbd, 0x20, 0x3b,
0xa0, 0x12, 0x0b, 0x06, 0x62, 0xa6, 0x85, 0x22, 0x95, 0x86, 0xda, 0x8d, 0xd6, 0x1d, 0x7b, 0xe3,
0x79, 0x32, 0xf6, 0xaf, 0x31, 0x6f, 0x9b, 0x20, 0x75, 0x4f, 0xbe, 0x1b, 0x57, 0x73, 0x60, 0xf1,
0x98, 0x8b, 0x04, 0x4f, 0x48, 0x78, 0xe1, 0x5a, 0x04, 0x7e, 0x51, 0x00, 0x1c, 0x6e, 0x53, 0xf8,
0x68, 0xbc, 0x46, 0x23, 0x1b, 0x5b, 0x5d, 0x1e, 0xa2, 0x72, 0x98, 0xac, 0x27, 0x4d, 0xff, 0xfc,
0xeb, 0xf7, 0x55, 0x69, 0x4d, 0xd7, 0x6e, 0x96, 0xe6, 0xa7, 0x44, 0xa0, 0xdd, 0x98, 0x93, 0x90,
0x23, 0x1d, 0xc9, 0x9a, 0x72, 0xa4, 0x5f, 0xc2, 0xaf, 0x37, 0x9c, 0xb2, 0x42, 0x14, 0xe3, 0x94,
0x53, 0x98, 0x91, 0x9c, 0x90, 0xe0, 0xb4, 0xa1, 0xdf, 0x1b, 0xc1, 0xa9, 0x6f, 0xb5, 0x24, 0xc4,
0xbe, 0x29, 0x60, 0x69, 0x60, 0xe2, 0xe0, 0xc3, 0xf1, 0xac, 0xf2, 0x07, 0x54, 0x9d, 0xa2, 0x07,
0xb5, 0x4d, 0x41, 0xf3, 0x2e, 0x5c, 0xcb, 0xa7, 0x79, 0x89, 0xb2, 0x3d, 0x0a, 0xaf, 0x53, 0x8e,
0x7d, 0xca, 0x4d, 0xe6, 0x98, 0x27, 0x5b, 0xf1, 0x1e, 0xed, 0x2a, 0x09, 0x0b, 0x2b, 0xf9, 0x53,
0x01, 0x70, 0x78, 0x72, 0x27, 0x95, 0x78, 0xe4, 0x42, 0x52, 0xb7, 0xa6, 0x07, 0xa6, 0x4b, 0x42,
0x3b, 0x10, 0xd4, 0x9f, 0x68, 0x9b, 0x3d, 0xea, 0xe9, 0x32, 0xbb, 0xd1, 0x77, 0xdb, 0x1d, 0x42,
0x6f, 0x0f, 0x4c, 0x35, 0xfc, 0xae, 0x00, 0x38, 0xbc, 0x19, 0x26, 0xe5, 0x33, 0x72, 0x97, 0x4c,
0xa3, 0xfd, 0x9e, 0x48, 0xe0, 0x71, 0xa3, 0xa8, 0xf6, 0x83, 0xdc, 0xf7, 0x3f, 0x80, 0xba, 0x45,
0xfd, 0xb1, 0x4c, 0xf7, 0xab, 0x72, 0x6d, 0x34, 0x93, 0x09, 0x6a, 0x2a, 0x6f, 0x9f, 0x49, 0x6f,
0x87, 0x7a, 0x38, 0x70, 0x0c, 0x1a, 0x3a, 0xc8, 0x21, 0x81, 0x98, 0x2f, 0x94, 0x5e, 0x61, 0xe6,
0xf2, 0xfc, 0xdf, 0xa5, 0x1d, 0x69, 0x9f, 0xce, 0x0a, 0xff, 0x07, 0x7f, 0x03, 0x00, 0x00, 0xff,
0xff, 0xa6, 0x7e, 0xc7, 0x43, 0x5d, 0x09, 0x00, 0x00,
// 779 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0xcd, 0x6a, 0xdb, 0x4a,
0x14, 0x46, 0x76, 0x6e, 0x48, 0xc6, 0x4e, 0x72, 0x99, 0x45, 0x70, 0x74, 0x73, 0xc1, 0x88, 0xd0,
0x3a, 0x26, 0x68, 0x88, 0x5b, 0x68, 0x9a, 0x90, 0x86, 0xfc, 0x35, 0x84, 0xb6, 0xc4, 0x38, 0x34,
0x8b, 0x12, 0x30, 0x13, 0x79, 0xa2, 0xa8, 0x96, 0x34, 0x53, 0x8d, 0x14, 0x6a, 0x4a, 0x36, 0x7d,
0x83, 0x12, 0xe8, 0xbe, 0x64, 0xd7, 0x7d, 0x17, 0x5d, 0xf4, 0x05, 0x0a, 0x5d, 0xf5, 0x15, 0x4a,
0x9f, 0xa3, 0x68, 0x34, 0x4a, 0x64, 0x5b, 0xb6, 0x65, 0xe8, 0xca, 0x3a, 0x73, 0xfe, 0xbe, 0xf3,
0x9d, 0x1f, 0x0c, 0xaa, 0x26, 0xa5, 0xa6, 0x4d, 0x90, 0x61, 0xd3, 0xa0, 0x85, 0x28, 0xb7, 0xa9,
0x69, 0xb9, 0xe8, 0x72, 0x15, 0xdb, 0xec, 0x02, 0xc7, 0xb2, 0xce, 0x3c, 0xea, 0x53, 0xb8, 0x18,
0xd9, 0xea, 0xc2, 0x56, 0x8f, 0x75, 0xd2, 0x56, 0x95, 0x5a, 0x84, 0x99, 0x85, 0xb0, 0xeb, 0x52,
0x1f, 0xfb, 0x16, 0x75, 0x79, 0xe4, 0xab, 0x56, 0x52, 0xf3, 0x18, 0xd4, 0x71, 0x68, 0xfc, 0x23,
0x2d, 0xff, 0x93, 0x96, 0x42, 0x3a, 0x0b, 0xce, 0x11, 0x71, 0x98, 0xdf, 0x91, 0xca, 0x72, 0xaf,
0xf2, 0xdc, 0x22, 0x76, 0xab, 0xe9, 0x60, 0xde, 0x8e, 0x2c, 0xb4, 0xdf, 0x39, 0x50, 0x7c, 0x1e,
0x06, 0xaf, 0x7b, 0xf4, 0xdc, 0xb2, 0x09, 0x84, 0x60, 0xc2, 0xc5, 0x0e, 0x29, 0x29, 0x65, 0xa5,
0x32, 0xdd, 0x10, 0xdf, 0xb0, 0x0e, 0x66, 0x19, 0xe5, 0xd6, 0xdb, 0x26, 0x36, 0x0c, 0x1a, 0xb8,
0x3e, 0x2f, 0xe5, 0xca, 0xf9, 0x4a, 0xa1, 0xb6, 0xac, 0xa7, 0x96, 0x28, 0xf1, 0xd5, 0x43, 0x97,
0xed, 0xc8, 0xa3, 0x31, 0xc3, 0x12, 0x12, 0x87, 0x04, 0xcc, 0x71, 0x7e, 0xd1, 0x64, 0xc1, 0x99,
0x6d, 0x19, 0xcd, 0x36, 0xe9, 0xf0, 0x52, 0x5e, 0x84, 0xdc, 0xd4, 0x87, 0xb1, 0xa6, 0x27, 0xa1,
0xea, 0xc7, 0xfc, 0xa2, 0x2e, 0x02, 0x3c, 0x23, 0x1d, 0xbe, 0xef, 0xfa, 0x5e, 0xa7, 0x31, 0xc3,
0x93, 0x6f, 0x70, 0x11, 0x4c, 0xf3, 0x80, 0x33, 0xe2, 0xb6, 0x48, 0xab, 0x34, 0x51, 0x56, 0x2a,
0x53, 0x8d, 0xbb, 0x07, 0xb5, 0x0d, 0x60, 0x7f, 0x08, 0xf8, 0x2f, 0xc8, 0xb7, 0x49, 0x47, 0xd6,
0x1f, 0x7e, 0xc2, 0x2d, 0xf0, 0xcf, 0x25, 0xb6, 0x03, 0x52, 0xca, 0x95, 0x95, 0x91, 0x55, 0x27,
0x23, 0x36, 0x22, 0xbf, 0xf5, 0xdc, 0x9a, 0xa2, 0x21, 0xb0, 0xb0, 0x47, 0x6c, 0xe2, 0x93, 0x2e,
0x5a, 0xc8, 0x9b, 0x80, 0x70, 0x3f, 0x8d, 0xf4, 0x3b, 0x87, 0xae, 0x88, 0x43, 0x1c, 0x56, 0xc0,
0xfc, 0x01, 0xf1, 0x93, 0x0c, 0x8d, 0xb6, 0xce, 0x1a, 0xfb, 0x46, 0x01, 0x0b, 0x87, 0x0e, 0xa3,
0x5e, 0xaa, 0xc7, 0x3c, 0x98, 0x64, 0xd8, 0x23, 0xae, 0x2f, 0x7d, 0xa4, 0x04, 0x8f, 0xc0, 0x6c,
0x77, 0x97, 0xc7, 0x67, 0xb0, 0x98, 0x6c, 0x28, 0xfc, 0x1f, 0x00, 0xe6, 0xd1, 0xd7, 0xc4, 0xf0,
0x9b, 0x56, 0xab, 0x94, 0x17, 0xc9, 0xa6, 0xe5, 0xcb, 0x61, 0x4b, 0x73, 0x80, 0x9a, 0x06, 0x92,
0x33, 0xea, 0x72, 0x02, 0x8f, 0xc0, 0x8c, 0xc8, 0xd3, 0x64, 0x11, 0x3b, 0x02, 0x6c, 0xa1, 0x56,
0xcd, 0x3e, 0x71, 0x8d, 0xa2, 0x9d, 0x90, 0xb4, 0x6f, 0x0a, 0x58, 0x78, 0xc9, 0x5a, 0x38, 0x73,
0x8b, 0xfe, 0x3e, 0x21, 0x1b, 0xa0, 0x10, 0x08, 0x04, 0x62, 0xa7, 0x05, 0x23, 0x85, 0x9a, 0x1a,
0x47, 0x8b, 0xd7, 0x5e, 0x7f, 0x1a, 0xae, 0xfd, 0x0b, 0xcc, 0xdb, 0x0d, 0x10, 0x99, 0x87, 0xdf,
0xb5, 0xeb, 0x29, 0x30, 0x7b, 0xc4, 0x45, 0x81, 0xc7, 0xc4, 0xbb, 0xb4, 0x0c, 0x02, 0x3f, 0x28,
0x00, 0xf6, 0x8f, 0x29, 0x7c, 0x34, 0x9c, 0xa3, 0x81, 0x83, 0xad, 0xce, 0xf7, 0x41, 0xd9, 0x0f,
0xcf, 0x93, 0x56, 0x7d, 0xff, 0xf3, 0xd7, 0x75, 0x6e, 0xa9, 0xaa, 0xdd, 0xde, 0xce, 0x77, 0x21,
0x41, 0x9b, 0x01, 0x27, 0x1e, 0x47, 0x55, 0x24, 0x7b, 0xca, 0x51, 0xf5, 0x0a, 0x7e, 0xbc, 0xc5,
0x94, 0x24, 0x22, 0x1b, 0xa6, 0x94, 0xc6, 0x0c, 0xc4, 0x84, 0x04, 0xa6, 0xe5, 0xea, 0xfd, 0x01,
0x98, 0xba, 0x4e, 0x4b, 0x08, 0xec, 0x93, 0x02, 0xe6, 0x7a, 0x36, 0x0e, 0x3e, 0x1c, 0x8e, 0x2a,
0x7d, 0x41, 0xd5, 0x31, 0x66, 0x50, 0x5b, 0x11, 0x30, 0xef, 0xc1, 0xa5, 0x74, 0x98, 0x57, 0x28,
0x39, 0xa3, 0xf0, 0x26, 0xc2, 0xd8, 0xc5, 0xdc, 0x68, 0x8c, 0x69, 0xb4, 0x65, 0x9f, 0xd1, 0x98,
0x49, 0x98, 0x99, 0xc9, 0x1f, 0x0a, 0x80, 0xfd, 0x9b, 0x3b, 0xaa, 0xc5, 0x03, 0x0f, 0x92, 0xba,
0x36, 0xbe, 0x63, 0x74, 0x24, 0xb4, 0x3d, 0x01, 0xfd, 0x89, 0xb6, 0x72, 0x07, 0x3d, 0x3a, 0x66,
0xb7, 0xfc, 0xae, 0x5b, 0x7d, 0xde, 0xeb, 0x3d, 0x5b, 0x0d, 0xbf, 0x2a, 0x00, 0xf6, 0x5f, 0x86,
0x51, 0xf5, 0x0c, 0xbc, 0x25, 0xe3, 0x70, 0xbf, 0x25, 0x0a, 0x78, 0x5c, 0xcb, 0xca, 0x7d, 0x2f,
0xf6, 0x9d, 0x2f, 0x0a, 0x28, 0x1b, 0xd4, 0x19, 0x0a, 0x75, 0xa7, 0x28, 0xef, 0x46, 0x3d, 0x5c,
0xa1, 0xba, 0xf2, 0x6a, 0x57, 0x5a, 0x9b, 0xd4, 0xc6, 0xae, 0xa9, 0x53, 0xcf, 0x44, 0x26, 0x71,
0xc5, 0x82, 0xa1, 0x48, 0x85, 0x99, 0xc5, 0xd3, 0xff, 0x36, 0x6d, 0x48, 0xf9, 0x73, 0x6e, 0xf1,
0x20, 0x8a, 0xb2, 0x2b, 0x72, 0xca, 0x14, 0xfa, 0xc9, 0xea, 0x76, 0x68, 0xf6, 0x3d, 0x56, 0x9f,
0x0a, 0xf5, 0xa9, 0x54, 0x9f, 0x9e, 0x44, 0x51, 0xce, 0x26, 0x45, 0xb6, 0x07, 0x7f, 0x02, 0x00,
0x00, 0xff, 0xff, 0xf8, 0xf2, 0xe5, 0x19, 0xa3, 0x09, 0x00, 0x00,
}

View File

@ -532,53 +532,53 @@ func init() { proto.RegisterFile("google/cloud/oslogin/v1beta/oslogin.proto", fi
var fileDescriptor0 = []byte{
// 780 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0xcd, 0x4e, 0xdb, 0x4a,
0x14, 0x96, 0x13, 0x2e, 0x82, 0x21, 0xc0, 0xd5, 0x2c, 0x50, 0x30, 0x5c, 0xdd, 0x60, 0xd4, 0x2a,
0x84, 0xca, 0x16, 0x41, 0x6a, 0x11, 0x94, 0x56, 0x0d, 0xa5, 0x08, 0xf5, 0x87, 0x28, 0xa8, 0x2c,
0x2a, 0xa4, 0x68, 0x62, 0x0f, 0xc6, 0x8d, 0xed, 0x99, 0x7a, 0x6c, 0xd4, 0xa8, 0x62, 0x53, 0xa9,
0xeb, 0x2e, 0xda, 0x75, 0xa5, 0xaa, 0xbb, 0xee, 0xba, 0xea, 0xaa, 0x2f, 0xc0, 0xb6, 0xaf, 0xd0,
0xbe, 0x47, 0xe5, 0xf1, 0x18, 0x9c, 0xc4, 0x49, 0x8c, 0xd4, 0x9d, 0x67, 0xce, 0x39, 0xdf, 0xf9,
0xe6, 0x3b, 0x3f, 0x32, 0x58, 0x31, 0x09, 0x31, 0x6d, 0xac, 0xe9, 0x36, 0x09, 0x0c, 0x8d, 0x30,
0x9b, 0x98, 0x96, 0xab, 0x9d, 0xad, 0xb5, 0xb0, 0x8f, 0xe2, 0xa3, 0x4a, 0x3d, 0xe2, 0x13, 0xb8,
0x10, 0xb9, 0xaa, 0xdc, 0x55, 0x8d, 0x6d, 0x91, 0xab, 0xbc, 0x28, 0x70, 0x10, 0xb5, 0x34, 0xe4,
0xba, 0xc4, 0x47, 0xbe, 0x45, 0x5c, 0x16, 0x85, 0xca, 0x4b, 0xa9, 0x59, 0x74, 0xe2, 0x38, 0x44,
0xa0, 0xcb, 0x02, 0x5d, 0xe3, 0xa7, 0x56, 0x70, 0xa2, 0x61, 0x87, 0xfa, 0x1d, 0x61, 0x2c, 0xf5,
0x1a, 0x4f, 0x2c, 0x6c, 0x1b, 0x4d, 0x07, 0xb1, 0x76, 0xe4, 0xa1, 0xfc, 0xce, 0x81, 0xc2, 0x93,
0x10, 0xb5, 0xee, 0x91, 0x13, 0xcb, 0xc6, 0x10, 0x82, 0x31, 0x17, 0x39, 0xb8, 0x28, 0x95, 0xa4,
0xf2, 0x64, 0x83, 0x7f, 0xc3, 0x3a, 0x98, 0xa1, 0x84, 0x59, 0xaf, 0x9b, 0x48, 0xd7, 0x49, 0xe0,
0xfa, 0xac, 0x98, 0x2b, 0xe5, 0xcb, 0x53, 0xd5, 0x15, 0x35, 0xf5, 0x69, 0x82, 0x5f, 0x3d, 0x0c,
0x79, 0x10, 0x45, 0x34, 0xa6, 0x69, 0xe2, 0xc4, 0xa0, 0x01, 0x66, 0x19, 0x3b, 0x6d, 0xd2, 0xa0,
0x65, 0x5b, 0x7a, 0xb3, 0x8d, 0x3b, 0xac, 0x98, 0xe7, 0x90, 0x77, 0xd5, 0x21, 0x6a, 0xa9, 0x49,
0xa6, 0xea, 0x21, 0x3b, 0xad, 0xf3, 0xf8, 0xc7, 0xb8, 0xc3, 0x76, 0x5d, 0xdf, 0xeb, 0x34, 0xa6,
0x59, 0xf2, 0x0e, 0x2e, 0x82, 0x49, 0x16, 0x30, 0x8a, 0x5d, 0x03, 0x1b, 0xc5, 0xb1, 0x92, 0x54,
0x9e, 0x68, 0x5c, 0x5d, 0xc8, 0x6d, 0x00, 0xfb, 0x21, 0xe0, 0xbf, 0x20, 0xdf, 0xc6, 0x1d, 0xf1,
0xfc, 0xf0, 0x13, 0xde, 0x07, 0xff, 0x9c, 0x21, 0x3b, 0xc0, 0xc5, 0x5c, 0x49, 0x1a, 0xf9, 0xe8,
0x24, 0x62, 0x23, 0x8a, 0xdb, 0xcc, 0x6d, 0x48, 0x8a, 0x06, 0xe6, 0x1f, 0x62, 0x1b, 0xfb, 0xb8,
0x4b, 0x15, 0xfc, 0x2a, 0xc0, 0xcc, 0x4f, 0xd3, 0xfc, 0x2a, 0xa0, 0x0b, 0x71, 0x48, 0xc0, 0x2d,
0x30, 0xb7, 0x87, 0xfd, 0xa4, 0x42, 0xa3, 0xbd, 0xb3, 0x62, 0x7f, 0x91, 0xc0, 0xfc, 0xbe, 0x43,
0x89, 0x97, 0x1a, 0x31, 0x07, 0xc6, 0x29, 0xf2, 0xb0, 0xeb, 0x8b, 0x18, 0x71, 0x82, 0x07, 0x60,
0xa6, 0xbb, 0xc8, 0xd7, 0x57, 0xb0, 0x90, 0x2c, 0x28, 0xfc, 0x0f, 0x00, 0xea, 0x91, 0x97, 0x58,
0xf7, 0x9b, 0x96, 0x51, 0xcc, 0xf3, 0x64, 0x93, 0xe2, 0x66, 0xdf, 0x50, 0x6c, 0x20, 0xa7, 0x91,
0x64, 0x94, 0xb8, 0x0c, 0xc3, 0x67, 0x60, 0x9a, 0xe7, 0x69, 0xd2, 0x48, 0x1d, 0x4e, 0x76, 0x20,
0x99, 0x94, 0x86, 0x6b, 0x14, 0xec, 0xc4, 0x49, 0xf9, 0x21, 0x81, 0xf9, 0xe7, 0xd4, 0x40, 0x99,
0x2b, 0xf4, 0xf7, 0xf5, 0xd8, 0x02, 0x53, 0x01, 0x67, 0xc0, 0x27, 0x9a, 0x0b, 0x32, 0x55, 0x95,
0x63, 0xb4, 0x78, 0xe8, 0xd5, 0x47, 0xe1, 0xd0, 0x3f, 0x45, 0xac, 0xdd, 0x00, 0x91, 0x7b, 0xf8,
0x5d, 0x7d, 0x37, 0x01, 0x66, 0x0e, 0x18, 0x7f, 0xe0, 0x21, 0xf6, 0xce, 0x2c, 0x1d, 0xc3, 0xf7,
0x12, 0x80, 0xfd, 0x5d, 0x0a, 0x6f, 0x0f, 0x95, 0x68, 0x60, 0x5b, 0xcb, 0x73, 0x7d, 0x4c, 0x76,
0xc3, 0xdd, 0xa4, 0xac, 0xbc, 0xfd, 0xf9, 0xeb, 0x43, 0x6e, 0xb9, 0xb2, 0x14, 0xef, 0xcb, 0x37,
0xa1, 0x3c, 0xdb, 0x01, 0xc3, 0x1e, 0xd3, 0x2a, 0x9a, 0x28, 0x28, 0xd3, 0x2a, 0xe7, 0xf0, 0xe3,
0x25, 0xa3, 0xa4, 0x0c, 0x99, 0x18, 0xa5, 0x54, 0x65, 0x20, 0x23, 0x95, 0x33, 0x2a, 0x57, 0x6e,
0xa6, 0x33, 0xea, 0xda, 0x2a, 0x21, 0xad, 0x4f, 0x12, 0x98, 0xed, 0x19, 0x36, 0xb8, 0x3e, 0x94,
0x53, 0xfa, 0x68, 0xca, 0xd9, 0xbb, 0x4f, 0x59, 0xe5, 0x1c, 0x6f, 0xc0, 0xe5, 0x54, 0x8e, 0xe7,
0x5a, 0xb2, 0x39, 0xe1, 0xe7, 0x88, 0x60, 0x97, 0x68, 0x23, 0x09, 0xa6, 0x29, 0x96, 0xbd, 0x37,
0x63, 0x11, 0x61, 0x56, 0x11, 0x2f, 0x24, 0x00, 0xfb, 0xe7, 0x75, 0x44, 0x6d, 0x07, 0x6e, 0x21,
0xf9, 0xce, 0xb5, 0xe3, 0xa2, 0xc5, 0xa0, 0xec, 0x70, 0xde, 0xdb, 0xca, 0xea, 0x25, 0xef, 0x68,
0x7f, 0x5d, 0x4a, 0xbb, 0x69, 0xf5, 0x05, 0x6f, 0xf6, 0x4c, 0x32, 0xfc, 0x2e, 0x01, 0xd8, 0xbf,
0x0d, 0x46, 0x3c, 0x66, 0xe0, 0xfa, 0xb8, 0x8e, 0xec, 0xf7, 0x38, 0xfd, 0x8d, 0x6a, 0x46, 0xd9,
0x7b, 0x99, 0xd7, 0xbe, 0x49, 0xe0, 0x7f, 0x9d, 0x38, 0xc3, 0x88, 0xd6, 0x0a, 0x62, 0x51, 0xd4,
0xc3, 0xb1, 0xa9, 0x4b, 0x2f, 0x6a, 0xc2, 0xd9, 0x24, 0x36, 0x72, 0x4d, 0x95, 0x78, 0xa6, 0x66,
0x62, 0x97, 0x0f, 0x95, 0x16, 0x99, 0x10, 0xb5, 0x58, 0xea, 0xcf, 0xd1, 0x96, 0x38, 0x7e, 0xcd,
0x2d, 0xec, 0x45, 0x20, 0x3b, 0x3c, 0xa3, 0xc8, 0xa0, 0x1e, 0xad, 0xd5, 0xb0, 0x8f, 0x2e, 0x62,
0xeb, 0x31, 0xb7, 0x1e, 0x0b, 0xeb, 0xf1, 0x11, 0xc7, 0x68, 0x8d, 0xf3, 0x54, 0xeb, 0x7f, 0x02,
0x00, 0x00, 0xff, 0xff, 0x63, 0x03, 0xf6, 0x66, 0x86, 0x09, 0x00, 0x00,
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x96, 0x4f, 0x4f, 0x13, 0x4f,
0x18, 0xc7, 0xb3, 0x2d, 0x3f, 0x02, 0x43, 0x81, 0x5f, 0xe6, 0x40, 0xca, 0x82, 0xb1, 0x2e, 0xd1,
0x94, 0x62, 0x76, 0x43, 0x49, 0x94, 0x80, 0x68, 0x2c, 0x22, 0x21, 0xfe, 0xa1, 0x29, 0x91, 0x83,
0x21, 0x69, 0xa6, 0xbb, 0xc3, 0xb2, 0x76, 0x77, 0x67, 0xdc, 0xd9, 0x25, 0x36, 0x86, 0x8b, 0x89,
0x67, 0x0f, 0x7a, 0x36, 0x31, 0xde, 0xbc, 0x79, 0xf2, 0xe4, 0x1b, 0xe0, 0xea, 0x5b, 0xd0, 0xf7,
0x61, 0x76, 0x76, 0x16, 0xb6, 0xed, 0xb6, 0x5d, 0x12, 0x4f, 0xdd, 0x99, 0xe7, 0xdf, 0x67, 0xbe,
0x33, 0xcf, 0x93, 0x82, 0x65, 0x93, 0x10, 0xd3, 0xc6, 0x9a, 0x6e, 0x93, 0xc0, 0xd0, 0x08, 0xb3,
0x89, 0x69, 0xb9, 0xda, 0xe9, 0x6a, 0x0b, 0xfb, 0x28, 0x5e, 0xaa, 0xd4, 0x23, 0x3e, 0x81, 0x0b,
0x91, 0xab, 0xca, 0x5d, 0xd5, 0xd8, 0x16, 0xb9, 0xca, 0x8b, 0x22, 0x0f, 0xa2, 0x96, 0x86, 0x5c,
0x97, 0xf8, 0xc8, 0xb7, 0x88, 0xcb, 0xa2, 0x50, 0xb9, 0x9c, 0x5a, 0x45, 0x27, 0x8e, 0x43, 0xe2,
0x1f, 0xe1, 0x29, 0x8a, 0x68, 0x7c, 0xd5, 0x0a, 0x8e, 0x35, 0xec, 0x50, 0xbf, 0x23, 0x8c, 0xa5,
0x5e, 0xe3, 0xb1, 0x85, 0x6d, 0xa3, 0xe9, 0x20, 0xd6, 0x8e, 0x3c, 0x94, 0x3f, 0x39, 0x50, 0x78,
0x1a, 0x26, 0xaf, 0x7b, 0xe4, 0xd8, 0xb2, 0x31, 0x84, 0x60, 0xcc, 0x45, 0x0e, 0x2e, 0x4a, 0x25,
0xa9, 0x3c, 0xd9, 0xe0, 0xdf, 0xb0, 0x0e, 0x66, 0x28, 0x61, 0xd6, 0x9b, 0x26, 0xd2, 0x75, 0x12,
0xb8, 0x3e, 0x2b, 0xe6, 0x4a, 0xf9, 0xf2, 0x54, 0x75, 0x59, 0x4d, 0x3d, 0xa1, 0xe0, 0xab, 0x87,
0x21, 0x0f, 0xa3, 0x88, 0xc6, 0x34, 0x4d, 0xac, 0x18, 0x34, 0xc0, 0x2c, 0x63, 0x27, 0x4d, 0x1a,
0xb4, 0x6c, 0x4b, 0x6f, 0xb6, 0x71, 0x87, 0x15, 0xf3, 0x3c, 0xe5, 0x3d, 0x75, 0x88, 0x68, 0x6a,
0x92, 0x54, 0x3d, 0x60, 0x27, 0x75, 0x1e, 0xff, 0x04, 0x77, 0xd8, 0x8e, 0xeb, 0x7b, 0x9d, 0xc6,
0x34, 0x4b, 0xee, 0xc1, 0x45, 0x30, 0xc9, 0x02, 0x46, 0xb1, 0x6b, 0x60, 0xa3, 0x38, 0x56, 0x92,
0xca, 0x13, 0x8d, 0xcb, 0x0d, 0xb9, 0x0d, 0x60, 0x7f, 0x0a, 0xf8, 0x3f, 0xc8, 0xb7, 0x71, 0x47,
0x1c, 0x3f, 0xfc, 0x84, 0x0f, 0xc0, 0x7f, 0xa7, 0xc8, 0x0e, 0x70, 0x31, 0x57, 0x92, 0x46, 0x1e,
0x3a, 0x99, 0xb1, 0x11, 0xc5, 0x6d, 0xe4, 0xd6, 0x25, 0x45, 0x03, 0xf3, 0x8f, 0xb0, 0x8d, 0x7d,
0xdc, 0xa5, 0x0a, 0x7e, 0x1d, 0x60, 0xe6, 0xa7, 0x69, 0x7e, 0x19, 0xd0, 0x95, 0x71, 0x48, 0xc0,
0x6d, 0x30, 0xb7, 0x8b, 0xfd, 0xa4, 0x42, 0xa3, 0xbd, 0xb3, 0xe6, 0xfe, 0x2a, 0x81, 0xf9, 0x3d,
0x87, 0x12, 0x2f, 0x35, 0x62, 0x0e, 0x8c, 0x53, 0xe4, 0x61, 0xd7, 0x17, 0x31, 0x62, 0x05, 0xf7,
0xc1, 0x4c, 0xf7, 0x25, 0x5f, 0x5d, 0xc1, 0x42, 0xf2, 0x42, 0xe1, 0x35, 0x00, 0xa8, 0x47, 0x5e,
0x61, 0xdd, 0x6f, 0x5a, 0x46, 0x31, 0xcf, 0x8b, 0x4d, 0x8a, 0x9d, 0x3d, 0x43, 0xb1, 0x81, 0x9c,
0x06, 0xc9, 0x28, 0x71, 0x19, 0x86, 0xcf, 0xc1, 0x34, 0xaf, 0xd3, 0xa4, 0x91, 0x3a, 0x1c, 0x76,
0x20, 0x4c, 0xca, 0x83, 0x6b, 0x14, 0xec, 0xc4, 0x4a, 0xf9, 0x29, 0x81, 0xf9, 0x17, 0xd4, 0x40,
0x99, 0x6f, 0xe8, 0xdf, 0xeb, 0xb1, 0x09, 0xa6, 0x02, 0x4e, 0xc0, 0x3b, 0x9a, 0x0b, 0x32, 0x55,
0x95, 0xe3, 0x6c, 0x71, 0xd3, 0xab, 0x8f, 0xc3, 0xa6, 0x7f, 0x86, 0x58, 0xbb, 0x01, 0x22, 0xf7,
0xf0, 0xbb, 0xfa, 0x7e, 0x02, 0xcc, 0xec, 0x33, 0x7e, 0xc0, 0x03, 0xec, 0x9d, 0x5a, 0x3a, 0x86,
0x1f, 0x24, 0x00, 0xfb, 0x5f, 0x29, 0xbc, 0x33, 0x54, 0xa2, 0x81, 0xcf, 0x5a, 0x9e, 0xeb, 0x23,
0xd9, 0x09, 0x67, 0x93, 0xb2, 0xfc, 0xee, 0xd7, 0xef, 0x8f, 0xb9, 0xa5, 0xca, 0x8d, 0x78, 0x6c,
0xbe, 0x0d, 0xe5, 0xd9, 0x0a, 0x18, 0xf6, 0x98, 0x56, 0xd1, 0xc4, 0x85, 0x32, 0xad, 0x72, 0x06,
0x3f, 0x5d, 0x10, 0x25, 0x65, 0xc8, 0x44, 0x94, 0x72, 0x2b, 0x03, 0x89, 0x54, 0x4e, 0x54, 0xae,
0xdc, 0x4a, 0x27, 0xea, 0x9a, 0x2a, 0x21, 0xd6, 0x67, 0x09, 0xcc, 0xf6, 0x34, 0x1b, 0x5c, 0x1b,
0xca, 0x94, 0xde, 0x9a, 0x72, 0xf6, 0xd7, 0xa7, 0xac, 0x70, 0xc6, 0x9b, 0x70, 0x29, 0x95, 0xf1,
0x4c, 0x4b, 0x3e, 0x4e, 0xf8, 0x25, 0x02, 0xec, 0x12, 0x6d, 0x24, 0x60, 0x9a, 0x62, 0xd9, 0xdf,
0x66, 0x2c, 0x22, 0xcc, 0x2a, 0xe2, 0xb9, 0x04, 0x60, 0x7f, 0xbf, 0x8e, 0xb8, 0xdb, 0x81, 0x53,
0x48, 0xbe, 0x7b, 0xe5, 0xb8, 0x68, 0x30, 0x28, 0xdb, 0x9c, 0x7b, 0x4b, 0x59, 0xb9, 0xe0, 0x8e,
0xe6, 0xd7, 0x85, 0xb4, 0x1b, 0x56, 0x5f, 0xf0, 0x46, 0x4f, 0x27, 0xc3, 0x1f, 0x12, 0x80, 0xfd,
0xd3, 0x60, 0xc4, 0x61, 0x06, 0x8e, 0x8f, 0xab, 0xc8, 0x7e, 0x9f, 0xe3, 0xaf, 0x57, 0x33, 0xca,
0xde, 0x4b, 0x5e, 0xfb, 0x2e, 0x81, 0xeb, 0x3a, 0x71, 0x86, 0x81, 0xd6, 0x0a, 0x62, 0x50, 0xd4,
0xc3, 0xb6, 0xa9, 0x4b, 0x2f, 0x6b, 0xc2, 0xd9, 0x24, 0x36, 0x72, 0x4d, 0x95, 0x78, 0xa6, 0x66,
0x62, 0x97, 0x37, 0x95, 0x16, 0x99, 0x10, 0xb5, 0x58, 0xea, 0x7f, 0xa4, 0x4d, 0xb1, 0xfc, 0x96,
0x5b, 0xd8, 0x8d, 0x92, 0x6c, 0xf3, 0x8a, 0xa2, 0x82, 0x7a, 0xb8, 0x5a, 0xc3, 0x3e, 0x3a, 0x8f,
0xad, 0x47, 0xdc, 0x7a, 0x24, 0xac, 0x47, 0x87, 0x3c, 0x47, 0x6b, 0x9c, 0x97, 0x5a, 0xfb, 0x1b,
0x00, 0x00, 0xff, 0xff, 0xc7, 0x96, 0xd9, 0xc2, 0x8d, 0x09, 0x00, 0x00,
}

View File

@ -1,11 +1,11 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: google/cloud/speech/v1_1beta1/cloud_speech.proto
// source: google/cloud/speech/v1p1beta1/cloud_speech.proto
/*
Package speech is a generated protocol buffer package.
It is generated from these files:
google/cloud/speech/v1_1beta1/cloud_speech.proto
google/cloud/speech/v1p1beta1/cloud_speech.proto
It has these top-level messages:
RecognizeRequest
@ -13,7 +13,6 @@ It has these top-level messages:
StreamingRecognizeRequest
StreamingRecognitionConfig
RecognitionConfig
RecognitionMetadata
SpeechContext
RecognitionAudio
RecognizeResponse
@ -32,6 +31,7 @@ import fmt "fmt"
import math "math"
import _ "google.golang.org/genproto/googleapis/api/annotations"
import google_longrunning "google.golang.org/genproto/googleapis/longrunning"
import _ "github.com/golang/protobuf/ptypes/any"
import google_protobuf3 "github.com/golang/protobuf/ptypes/duration"
import google_protobuf4 "github.com/golang/protobuf/ptypes/timestamp"
import google_rpc "google.golang.org/genproto/googleapis/rpc/status"
@ -52,20 +52,29 @@ var _ = math.Inf
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
// Audio encoding of the data sent in the audio message. All encodings support
// only 1 channel (mono) audio. Only `FLAC` includes a header that describes
// the bytes of audio that follow the header. The other encodings are raw
// audio bytes with no header.
// The encoding of the audio data sent in the request.
//
// All encodings support only 1 channel (mono) audio.
//
// If you send a `FLAC` or `WAV` audio file format in the request,
// then if you specify an encoding in `AudioEncoding`, it must match the
// encoding described in the audio header. If it does not match, then the
// request returns an
// [google.rpc.Code.INVALID_ARGUMENT][google.rpc.Code.INVALID_ARGUMENT] error code. You can request
// recognition for `WAV` files that contain either `LINEAR16` or `MULAW`
// encoded audio.
// For audio file formats other than `FLAC` or `WAV`, you must
// specify the audio encoding in your `RecognitionConfig`.
//
// For best results, the audio source should be captured and transmitted using
// a lossless encoding (`FLAC` or `LINEAR16`). Recognition accuracy may be
// reduced if lossy codecs, which include the other codecs listed in
// this section, are used to capture or transmit the audio, particularly if
// background noise is present.
// a lossless encoding (`FLAC` or `LINEAR16`). The accuracy of the speech
// recognition can be reduced if lossy codecs, which include the other codecs
// listed in this section, are used to capture or transmit the audio,
// particularly if background noise is present.
type RecognitionConfig_AudioEncoding int32
const (
// Not specified. Will return result [google.rpc.Code.INVALID_ARGUMENT][google.rpc.Code.INVALID_ARGUMENT].
// Not specified.
RecognitionConfig_ENCODING_UNSPECIFIED RecognitionConfig_AudioEncoding = 0
// Uncompressed 16-bit signed little-endian samples (Linear PCM).
RecognitionConfig_LINEAR16 RecognitionConfig_AudioEncoding = 1
@ -84,7 +93,7 @@ const (
RecognitionConfig_AMR_WB RecognitionConfig_AudioEncoding = 5
// Opus encoded audio frames in Ogg container
// ([OggOpus](https://wiki.xiph.org/OggOpus)).
// `sample_rate_hertz` must be 16000.
// `sample_rate_hertz` must be one of 8000, 12000, 16000, 24000, or 48000.
RecognitionConfig_OGG_OPUS RecognitionConfig_AudioEncoding = 6
// Although the use of lossy encodings is not recommended, if a very low
// bitrate encoding is required, `OGG_OPUS` is highly preferred over
@ -130,215 +139,6 @@ func (RecognitionConfig_AudioEncoding) EnumDescriptor() ([]byte, []int) {
return fileDescriptor0, []int{4, 0}
}
// Use case categories that the audio recognition request can be described
// by.
type RecognitionMetadata_InteractionType int32
const (
// Use case is either unknown or is something other than one of the other
// values below.
RecognitionMetadata_INTERACTION_TYPE_UNSPECIFIED RecognitionMetadata_InteractionType = 0
// Multiple people in a conversation or discussion. For example in a
// meeting with two or more people actively participating. Typically
// all the primary people speaking would be in the same room (if not,
// see PHONE_CALL)
RecognitionMetadata_DISCUSSION RecognitionMetadata_InteractionType = 1
// One or more persons lecturing or presenting to others, mostly
// uninterrupted.
RecognitionMetadata_PRESENTATION RecognitionMetadata_InteractionType = 2
// A phone-call or video-conference in which two or more people, who are
// not in the same room, are actively participating.
RecognitionMetadata_PHONE_CALL RecognitionMetadata_InteractionType = 3
// A recorded message intended for another person to listen to.
RecognitionMetadata_VOICEMAIL RecognitionMetadata_InteractionType = 4
// Professionally produced audio (eg. TV Show, Podcast).
RecognitionMetadata_PROFESSIONALLY_PRODUCED RecognitionMetadata_InteractionType = 5
// Transcribe spoken questions and queries into text.
RecognitionMetadata_VOICE_SEARCH RecognitionMetadata_InteractionType = 6
// Transcribe voice commands, such as for controlling a device.
RecognitionMetadata_VOICE_COMMAND RecognitionMetadata_InteractionType = 7
// Transcribe speech to text to create a written document, such as a
// text-message, email or report.
RecognitionMetadata_DICTATION RecognitionMetadata_InteractionType = 8
)
var RecognitionMetadata_InteractionType_name = map[int32]string{
0: "INTERACTION_TYPE_UNSPECIFIED",
1: "DISCUSSION",
2: "PRESENTATION",
3: "PHONE_CALL",
4: "VOICEMAIL",
5: "PROFESSIONALLY_PRODUCED",
6: "VOICE_SEARCH",
7: "VOICE_COMMAND",
8: "DICTATION",
}
var RecognitionMetadata_InteractionType_value = map[string]int32{
"INTERACTION_TYPE_UNSPECIFIED": 0,
"DISCUSSION": 1,
"PRESENTATION": 2,
"PHONE_CALL": 3,
"VOICEMAIL": 4,
"PROFESSIONALLY_PRODUCED": 5,
"VOICE_SEARCH": 6,
"VOICE_COMMAND": 7,
"DICTATION": 8,
}
func (x RecognitionMetadata_InteractionType) String() string {
return proto.EnumName(RecognitionMetadata_InteractionType_name, int32(x))
}
func (RecognitionMetadata_InteractionType) EnumDescriptor() ([]byte, []int) {
return fileDescriptor0, []int{5, 0}
}
// Enumerates the types of capture settings describing an audio file.
type RecognitionMetadata_MicrophoneDistance int32
const (
// Audio type is not known.
RecognitionMetadata_MICROPHONE_DISTANCE_UNSPECIFIED RecognitionMetadata_MicrophoneDistance = 0
// The audio was captured from a closely placed microphone. Eg. phone,
// dictaphone, or handheld microphone. Generally if there speaker is within
// 1 meter of the microphone.
RecognitionMetadata_NEARFIELD RecognitionMetadata_MicrophoneDistance = 1
// The speaker if within 3 meters of the microphone.
RecognitionMetadata_MIDFIELD RecognitionMetadata_MicrophoneDistance = 2
// The speaker is more than 3 meters away from the microphone.
RecognitionMetadata_FARFIELD RecognitionMetadata_MicrophoneDistance = 3
)
var RecognitionMetadata_MicrophoneDistance_name = map[int32]string{
0: "MICROPHONE_DISTANCE_UNSPECIFIED",
1: "NEARFIELD",
2: "MIDFIELD",
3: "FARFIELD",
}
var RecognitionMetadata_MicrophoneDistance_value = map[string]int32{
"MICROPHONE_DISTANCE_UNSPECIFIED": 0,
"NEARFIELD": 1,
"MIDFIELD": 2,
"FARFIELD": 3,
}
func (x RecognitionMetadata_MicrophoneDistance) String() string {
return proto.EnumName(RecognitionMetadata_MicrophoneDistance_name, int32(x))
}
func (RecognitionMetadata_MicrophoneDistance) EnumDescriptor() ([]byte, []int) {
return fileDescriptor0, []int{5, 1}
}
// The original media the speech was recorded on.
type RecognitionMetadata_OriginalMediaType int32
const (
// Unknown original media type.
RecognitionMetadata_ORIGINAL_MEDIA_TYPE_UNSPECIFIED RecognitionMetadata_OriginalMediaType = 0
// The speech data is an audio recording.
RecognitionMetadata_AUDIO RecognitionMetadata_OriginalMediaType = 1
// The speech data originally recorded on a video.
RecognitionMetadata_VIDEO RecognitionMetadata_OriginalMediaType = 2
)
var RecognitionMetadata_OriginalMediaType_name = map[int32]string{
0: "ORIGINAL_MEDIA_TYPE_UNSPECIFIED",
1: "AUDIO",
2: "VIDEO",
}
var RecognitionMetadata_OriginalMediaType_value = map[string]int32{
"ORIGINAL_MEDIA_TYPE_UNSPECIFIED": 0,
"AUDIO": 1,
"VIDEO": 2,
}
func (x RecognitionMetadata_OriginalMediaType) String() string {
return proto.EnumName(RecognitionMetadata_OriginalMediaType_name, int32(x))
}
func (RecognitionMetadata_OriginalMediaType) EnumDescriptor() ([]byte, []int) {
return fileDescriptor0, []int{5, 2}
}
// How many speakers expected in the speech to be recognized.
type RecognitionMetadata_NumberOfSpeakers int32
const (
// Unknown number of persons speaking.
RecognitionMetadata_NUMBER_OF_SPEAKERS_UNSPECIFIED RecognitionMetadata_NumberOfSpeakers = 0
// Only one person is the prominent speaker (ignore background voices).
RecognitionMetadata_ONE_SPEAKER RecognitionMetadata_NumberOfSpeakers = 1
// Two people are the prominent speakers (transcript should focus
// on the two most prominent speakers).
RecognitionMetadata_TWO_SPEAKERS RecognitionMetadata_NumberOfSpeakers = 2
// Transcribe all voices.
RecognitionMetadata_MULTIPLE_SPEAKERS RecognitionMetadata_NumberOfSpeakers = 3
)
var RecognitionMetadata_NumberOfSpeakers_name = map[int32]string{
0: "NUMBER_OF_SPEAKERS_UNSPECIFIED",
1: "ONE_SPEAKER",
2: "TWO_SPEAKERS",
3: "MULTIPLE_SPEAKERS",
}
var RecognitionMetadata_NumberOfSpeakers_value = map[string]int32{
"NUMBER_OF_SPEAKERS_UNSPECIFIED": 0,
"ONE_SPEAKER": 1,
"TWO_SPEAKERS": 2,
"MULTIPLE_SPEAKERS": 3,
}
func (x RecognitionMetadata_NumberOfSpeakers) String() string {
return proto.EnumName(RecognitionMetadata_NumberOfSpeakers_name, int32(x))
}
func (RecognitionMetadata_NumberOfSpeakers) EnumDescriptor() ([]byte, []int) {
return fileDescriptor0, []int{5, 3}
}
// The type of device the speech was recorded with.
type RecognitionMetadata_RecordingDeviceType int32
const (
// The recording device is unknown.
RecognitionMetadata_RECORDING_DEVICE_TYPE_UNSPECIFIED RecognitionMetadata_RecordingDeviceType = 0
// Speech was recorded on a smartphone.
RecognitionMetadata_SMARTPHONE RecognitionMetadata_RecordingDeviceType = 1
// Speech was recorded using a personal computer or tablet.
RecognitionMetadata_PC RecognitionMetadata_RecordingDeviceType = 2
// Speech was recorded over a phone line.
RecognitionMetadata_PHONE_LINE RecognitionMetadata_RecordingDeviceType = 3
// Speech was recorded in a vehicle.
RecognitionMetadata_VEHICLE RecognitionMetadata_RecordingDeviceType = 4
// Speech was recorded outdoors.
RecognitionMetadata_OTHER_OUTDOOR_DEVICE RecognitionMetadata_RecordingDeviceType = 5
// Speech was recorded indoors.
RecognitionMetadata_OTHER_INDOOR_DEVICE RecognitionMetadata_RecordingDeviceType = 6
)
var RecognitionMetadata_RecordingDeviceType_name = map[int32]string{
0: "RECORDING_DEVICE_TYPE_UNSPECIFIED",
1: "SMARTPHONE",
2: "PC",
3: "PHONE_LINE",
4: "VEHICLE",
5: "OTHER_OUTDOOR_DEVICE",
6: "OTHER_INDOOR_DEVICE",
}
var RecognitionMetadata_RecordingDeviceType_value = map[string]int32{
"RECORDING_DEVICE_TYPE_UNSPECIFIED": 0,
"SMARTPHONE": 1,
"PC": 2,
"PHONE_LINE": 3,
"VEHICLE": 4,
"OTHER_OUTDOOR_DEVICE": 5,
"OTHER_INDOOR_DEVICE": 6,
}
func (x RecognitionMetadata_RecordingDeviceType) String() string {
return proto.EnumName(RecognitionMetadata_RecordingDeviceType_name, int32(x))
}
func (RecognitionMetadata_RecordingDeviceType) EnumDescriptor() ([]byte, []int) {
return fileDescriptor0, []int{5, 4}
}
// Indicates the type of speech event.
type StreamingRecognizeResponse_SpeechEventType int32
@ -368,7 +168,7 @@ func (x StreamingRecognizeResponse_SpeechEventType) String() string {
return proto.EnumName(StreamingRecognizeResponse_SpeechEventType_name, int32(x))
}
func (StreamingRecognizeResponse_SpeechEventType) EnumDescriptor() ([]byte, []int) {
return fileDescriptor0, []int{11, 0}
return fileDescriptor0, []int{10, 0}
}
// The top-level message sent by the client for the `Recognize` method.
@ -639,16 +439,11 @@ type RecognitionConfig struct {
// `false`, no word-level time offset information is returned. The default is
// `false`.
EnableWordTimeOffsets bool `protobuf:"varint,8,opt,name=enable_word_time_offsets,json=enableWordTimeOffsets" json:"enable_word_time_offsets,omitempty"`
// *Optional* If 'true', adds punctuation to recognition result hypotheses.
// This feature is only available in select languages. Setting this for
// requests in other languages has no effect at all.
// The default 'false' value does not add punctuation to result hypotheses.
// NOTE: "This is currently offered as an experimental service, complimentary
// to all users. In the future this may be exclusively available as a
// premium feature."
EnableAutomaticPunctuation bool `protobuf:"varint,11,opt,name=enable_automatic_punctuation,json=enableAutomaticPunctuation" json:"enable_automatic_punctuation,omitempty"`
// *Optional* Metadata regarding this request.
Metadata *RecognitionMetadata `protobuf:"bytes,9,opt,name=metadata" json:"metadata,omitempty"`
// *Optional* Which model to select for the given request. Select the model
// best suited to your domain to get best results. If a model is not
// explicitly specified, then we auto-select a model based on the parameters
// in the RecognitionConfig.
Model string `protobuf:"bytes,13,opt,name=model" json:"model,omitempty"`
}
func (m *RecognitionConfig) Reset() { *m = RecognitionConfig{} }
@ -705,126 +500,9 @@ func (m *RecognitionConfig) GetEnableWordTimeOffsets() bool {
return false
}
func (m *RecognitionConfig) GetEnableAutomaticPunctuation() bool {
func (m *RecognitionConfig) GetModel() string {
if m != nil {
return m.EnableAutomaticPunctuation
}
return false
}
func (m *RecognitionConfig) GetMetadata() *RecognitionMetadata {
if m != nil {
return m.Metadata
}
return nil
}
// Description of audio data to be recognized.
type RecognitionMetadata struct {
// The use case most closely describing the audio content to be recognized.
InteractionType RecognitionMetadata_InteractionType `protobuf:"varint,1,opt,name=interaction_type,json=interactionType,enum=google.cloud.speech.v1p1beta1.RecognitionMetadata_InteractionType" json:"interaction_type,omitempty"`
// The industry vertical to which this speech recognition request most
// closely applies. This is most indicative of the topics contained
// in the audio. Use the 6-digit NAICS code to identify the industry
// vertical - see https://www.naics.com/search/.
IndustryNaicsCodeOfAudio uint32 `protobuf:"varint,3,opt,name=industry_naics_code_of_audio,json=industryNaicsCodeOfAudio" json:"industry_naics_code_of_audio,omitempty"`
// The audio type that most closely describes the audio being recognized.
MicrophoneDistance RecognitionMetadata_MicrophoneDistance `protobuf:"varint,4,opt,name=microphone_distance,json=microphoneDistance,enum=google.cloud.speech.v1p1beta1.RecognitionMetadata_MicrophoneDistance" json:"microphone_distance,omitempty"`
// The original media the speech was recorded on.
OriginalMediaType RecognitionMetadata_OriginalMediaType `protobuf:"varint,5,opt,name=original_media_type,json=originalMediaType,enum=google.cloud.speech.v1p1beta1.RecognitionMetadata_OriginalMediaType" json:"original_media_type,omitempty"`
// How many people are speaking prominently in the audio and expected to be
// recognized.
NumberOfSpeakers RecognitionMetadata_NumberOfSpeakers `protobuf:"varint,6,opt,name=number_of_speakers,json=numberOfSpeakers,enum=google.cloud.speech.v1p1beta1.RecognitionMetadata_NumberOfSpeakers" json:"number_of_speakers,omitempty"`
// The type of device the speech was recorded with.
RecordingDeviceType RecognitionMetadata_RecordingDeviceType `protobuf:"varint,7,opt,name=recording_device_type,json=recordingDeviceType,enum=google.cloud.speech.v1p1beta1.RecognitionMetadata_RecordingDeviceType" json:"recording_device_type,omitempty"`
// The device used to make the recording. Examples 'Nexus 5X' or
// 'Polycom SoundStation IP 6000' or 'POTS' or 'VoIP' or
// 'Cardioid Microphone'.
RecordingDeviceName string `protobuf:"bytes,8,opt,name=recording_device_name,json=recordingDeviceName" json:"recording_device_name,omitempty"`
// Mime type of the original audio file. For example `audio/m4a`,
// `audio/x-alaw-basic`, `audio/mp3`, `audio/3gpp`.
// A list of possible audio mime types is maintained at
// http://www.iana.org/assignments/media-types/media-types.xhtml#audio
OriginalMimeType string `protobuf:"bytes,9,opt,name=original_mime_type,json=originalMimeType" json:"original_mime_type,omitempty"`
// Obfuscated (privacy-protected) ID of the user, to identify number of
// unique users using the service.
ObfuscatedId int64 `protobuf:"varint,10,opt,name=obfuscated_id,json=obfuscatedId" json:"obfuscated_id,omitempty"`
// Description of the content. Eg. "Recordings of federal supreme court
// hearings from 2012".
AudioTopic string `protobuf:"bytes,11,opt,name=audio_topic,json=audioTopic" json:"audio_topic,omitempty"`
}
func (m *RecognitionMetadata) Reset() { *m = RecognitionMetadata{} }
func (m *RecognitionMetadata) String() string { return proto.CompactTextString(m) }
func (*RecognitionMetadata) ProtoMessage() {}
func (*RecognitionMetadata) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }
func (m *RecognitionMetadata) GetInteractionType() RecognitionMetadata_InteractionType {
if m != nil {
return m.InteractionType
}
return RecognitionMetadata_INTERACTION_TYPE_UNSPECIFIED
}
func (m *RecognitionMetadata) GetIndustryNaicsCodeOfAudio() uint32 {
if m != nil {
return m.IndustryNaicsCodeOfAudio
}
return 0
}
func (m *RecognitionMetadata) GetMicrophoneDistance() RecognitionMetadata_MicrophoneDistance {
if m != nil {
return m.MicrophoneDistance
}
return RecognitionMetadata_MICROPHONE_DISTANCE_UNSPECIFIED
}
func (m *RecognitionMetadata) GetOriginalMediaType() RecognitionMetadata_OriginalMediaType {
if m != nil {
return m.OriginalMediaType
}
return RecognitionMetadata_ORIGINAL_MEDIA_TYPE_UNSPECIFIED
}
func (m *RecognitionMetadata) GetNumberOfSpeakers() RecognitionMetadata_NumberOfSpeakers {
if m != nil {
return m.NumberOfSpeakers
}
return RecognitionMetadata_NUMBER_OF_SPEAKERS_UNSPECIFIED
}
func (m *RecognitionMetadata) GetRecordingDeviceType() RecognitionMetadata_RecordingDeviceType {
if m != nil {
return m.RecordingDeviceType
}
return RecognitionMetadata_RECORDING_DEVICE_TYPE_UNSPECIFIED
}
func (m *RecognitionMetadata) GetRecordingDeviceName() string {
if m != nil {
return m.RecordingDeviceName
}
return ""
}
func (m *RecognitionMetadata) GetOriginalMimeType() string {
if m != nil {
return m.OriginalMimeType
}
return ""
}
func (m *RecognitionMetadata) GetObfuscatedId() int64 {
if m != nil {
return m.ObfuscatedId
}
return 0
}
func (m *RecognitionMetadata) GetAudioTopic() string {
if m != nil {
return m.AudioTopic
return m.Model
}
return ""
}
@ -844,7 +522,7 @@ type SpeechContext struct {
func (m *SpeechContext) Reset() { *m = SpeechContext{} }
func (m *SpeechContext) String() string { return proto.CompactTextString(m) }
func (*SpeechContext) ProtoMessage() {}
func (*SpeechContext) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} }
func (*SpeechContext) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }
func (m *SpeechContext) GetPhrases() []string {
if m != nil {
@ -858,7 +536,8 @@ func (m *SpeechContext) GetPhrases() []string {
// returns [google.rpc.Code.INVALID_ARGUMENT][google.rpc.Code.INVALID_ARGUMENT]. See
// [audio limits](https://cloud.google.com/speech/limits#content).
type RecognitionAudio struct {
// The audio source, which is either inline content or a GCS uri.
// The audio source, which is either inline content or a Google Cloud
// Storage uri.
//
// Types that are valid to be assigned to AudioSource:
// *RecognitionAudio_Content
@ -869,7 +548,7 @@ type RecognitionAudio struct {
func (m *RecognitionAudio) Reset() { *m = RecognitionAudio{} }
func (m *RecognitionAudio) String() string { return proto.CompactTextString(m) }
func (*RecognitionAudio) ProtoMessage() {}
func (*RecognitionAudio) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} }
func (*RecognitionAudio) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} }
type isRecognitionAudio_AudioSource interface {
isRecognitionAudio_AudioSource()
@ -984,7 +663,7 @@ type RecognizeResponse struct {
func (m *RecognizeResponse) Reset() { *m = RecognizeResponse{} }
func (m *RecognizeResponse) String() string { return proto.CompactTextString(m) }
func (*RecognizeResponse) ProtoMessage() {}
func (*RecognizeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} }
func (*RecognizeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} }
func (m *RecognizeResponse) GetResults() []*SpeechRecognitionResult {
if m != nil {
@ -1007,7 +686,7 @@ type LongRunningRecognizeResponse struct {
func (m *LongRunningRecognizeResponse) Reset() { *m = LongRunningRecognizeResponse{} }
func (m *LongRunningRecognizeResponse) String() string { return proto.CompactTextString(m) }
func (*LongRunningRecognizeResponse) ProtoMessage() {}
func (*LongRunningRecognizeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} }
func (*LongRunningRecognizeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} }
func (m *LongRunningRecognizeResponse) GetResults() []*SpeechRecognitionResult {
if m != nil {
@ -1032,7 +711,7 @@ type LongRunningRecognizeMetadata struct {
func (m *LongRunningRecognizeMetadata) Reset() { *m = LongRunningRecognizeMetadata{} }
func (m *LongRunningRecognizeMetadata) String() string { return proto.CompactTextString(m) }
func (*LongRunningRecognizeMetadata) ProtoMessage() {}
func (*LongRunningRecognizeMetadata) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} }
func (*LongRunningRecognizeMetadata) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} }
func (m *LongRunningRecognizeMetadata) GetProgressPercent() int32 {
if m != nil {
@ -1110,8 +789,8 @@ type StreamingRecognizeResponse struct {
Error *google_rpc.Status `protobuf:"bytes,1,opt,name=error" json:"error,omitempty"`
// *Output-only* This repeated list contains zero or more results that
// correspond to consecutive portions of the audio currently being processed.
// It contains zero or more `is_final=false` results followed by zero or one
// `is_final=true` result (the newly settled portion).
// It contains zero or one `is_final=true` result (the newly settled portion),
// followed by zero or more `is_final=false` results (the interim results).
Results []*StreamingRecognitionResult `protobuf:"bytes,2,rep,name=results" json:"results,omitempty"`
// *Output-only* Indicates the type of speech event.
SpeechEventType StreamingRecognizeResponse_SpeechEventType `protobuf:"varint,4,opt,name=speech_event_type,json=speechEventType,enum=google.cloud.speech.v1p1beta1.StreamingRecognizeResponse_SpeechEventType" json:"speech_event_type,omitempty"`
@ -1120,7 +799,7 @@ type StreamingRecognizeResponse struct {
func (m *StreamingRecognizeResponse) Reset() { *m = StreamingRecognizeResponse{} }
func (m *StreamingRecognizeResponse) String() string { return proto.CompactTextString(m) }
func (*StreamingRecognizeResponse) ProtoMessage() {}
func (*StreamingRecognizeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} }
func (*StreamingRecognizeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} }
func (m *StreamingRecognizeResponse) GetError() *google_rpc.Status {
if m != nil {
@ -1148,6 +827,8 @@ func (m *StreamingRecognizeResponse) GetSpeechEventType() StreamingRecognizeResp
type StreamingRecognitionResult struct {
// *Output-only* May contain one or more recognition hypotheses (up to the
// maximum specified in `max_alternatives`).
// These alternatives are ordered in terms of accuracy, with the top (first)
// alternative being the most probable, as ranked by the recognizer.
Alternatives []*SpeechRecognitionAlternative `protobuf:"bytes,1,rep,name=alternatives" json:"alternatives,omitempty"`
// *Output-only* If `false`, this `StreamingRecognitionResult` represents an
// interim result that may change. If `true`, this is the final time the
@ -1166,7 +847,7 @@ type StreamingRecognitionResult struct {
func (m *StreamingRecognitionResult) Reset() { *m = StreamingRecognitionResult{} }
func (m *StreamingRecognitionResult) String() string { return proto.CompactTextString(m) }
func (*StreamingRecognitionResult) ProtoMessage() {}
func (*StreamingRecognitionResult) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} }
func (*StreamingRecognitionResult) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} }
func (m *StreamingRecognitionResult) GetAlternatives() []*SpeechRecognitionAlternative {
if m != nil {
@ -1201,7 +882,7 @@ type SpeechRecognitionResult struct {
func (m *SpeechRecognitionResult) Reset() { *m = SpeechRecognitionResult{} }
func (m *SpeechRecognitionResult) String() string { return proto.CompactTextString(m) }
func (*SpeechRecognitionResult) ProtoMessage() {}
func (*SpeechRecognitionResult) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} }
func (*SpeechRecognitionResult) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} }
func (m *SpeechRecognitionResult) GetAlternatives() []*SpeechRecognitionAlternative {
if m != nil {
@ -1216,10 +897,10 @@ type SpeechRecognitionAlternative struct {
Transcript string `protobuf:"bytes,1,opt,name=transcript" json:"transcript,omitempty"`
// *Output-only* The confidence estimate between 0.0 and 1.0. A higher number
// indicates an estimated greater likelihood that the recognized words are
// correct. This field is typically provided only for the top hypothesis, and
// only for `is_final=true` results. Clients should not rely on the
// `confidence` field as it is not guaranteed to be accurate, or even set, in
// any of the results.
// correct. This field is set only for the top alternative of a non-streaming
// result or, of a streaming result where `is_final=true`.
// This field is not guaranteed to be accurate and users should not rely on it
// to be always provided.
// The default of 0.0 is a sentinel value indicating `confidence` was not set.
Confidence float32 `protobuf:"fixed32,2,opt,name=confidence" json:"confidence,omitempty"`
// *Output-only* A list of word-specific information for each recognized word.
@ -1229,7 +910,7 @@ type SpeechRecognitionAlternative struct {
func (m *SpeechRecognitionAlternative) Reset() { *m = SpeechRecognitionAlternative{} }
func (m *SpeechRecognitionAlternative) String() string { return proto.CompactTextString(m) }
func (*SpeechRecognitionAlternative) ProtoMessage() {}
func (*SpeechRecognitionAlternative) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} }
func (*SpeechRecognitionAlternative) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} }
func (m *SpeechRecognitionAlternative) GetTranscript() string {
if m != nil {
@ -1252,9 +933,7 @@ func (m *SpeechRecognitionAlternative) GetWords() []*WordInfo {
return nil
}
// Word-specific information for recognized words. Word information is only
// included in the response when certain request parameters are set, such
// as `enable_word_time_offsets`.
// Word-specific information for recognized words.
type WordInfo struct {
// *Output-only* Time offset relative to the beginning of the audio,
// and corresponding to the start of the spoken word.
@ -1277,7 +956,7 @@ type WordInfo struct {
func (m *WordInfo) Reset() { *m = WordInfo{} }
func (m *WordInfo) String() string { return proto.CompactTextString(m) }
func (*WordInfo) ProtoMessage() {}
func (*WordInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} }
func (*WordInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} }
func (m *WordInfo) GetStartTime() *google_protobuf3.Duration {
if m != nil {
@ -1306,7 +985,6 @@ func init() {
proto.RegisterType((*StreamingRecognizeRequest)(nil), "google.cloud.speech.v1p1beta1.StreamingRecognizeRequest")
proto.RegisterType((*StreamingRecognitionConfig)(nil), "google.cloud.speech.v1p1beta1.StreamingRecognitionConfig")
proto.RegisterType((*RecognitionConfig)(nil), "google.cloud.speech.v1p1beta1.RecognitionConfig")
proto.RegisterType((*RecognitionMetadata)(nil), "google.cloud.speech.v1p1beta1.RecognitionMetadata")
proto.RegisterType((*SpeechContext)(nil), "google.cloud.speech.v1p1beta1.SpeechContext")
proto.RegisterType((*RecognitionAudio)(nil), "google.cloud.speech.v1p1beta1.RecognitionAudio")
proto.RegisterType((*RecognizeResponse)(nil), "google.cloud.speech.v1p1beta1.RecognizeResponse")
@ -1318,11 +996,6 @@ func init() {
proto.RegisterType((*SpeechRecognitionAlternative)(nil), "google.cloud.speech.v1p1beta1.SpeechRecognitionAlternative")
proto.RegisterType((*WordInfo)(nil), "google.cloud.speech.v1p1beta1.WordInfo")
proto.RegisterEnum("google.cloud.speech.v1p1beta1.RecognitionConfig_AudioEncoding", RecognitionConfig_AudioEncoding_name, RecognitionConfig_AudioEncoding_value)
proto.RegisterEnum("google.cloud.speech.v1p1beta1.RecognitionMetadata_InteractionType", RecognitionMetadata_InteractionType_name, RecognitionMetadata_InteractionType_value)
proto.RegisterEnum("google.cloud.speech.v1p1beta1.RecognitionMetadata_MicrophoneDistance", RecognitionMetadata_MicrophoneDistance_name, RecognitionMetadata_MicrophoneDistance_value)
proto.RegisterEnum("google.cloud.speech.v1p1beta1.RecognitionMetadata_OriginalMediaType", RecognitionMetadata_OriginalMediaType_name, RecognitionMetadata_OriginalMediaType_value)
proto.RegisterEnum("google.cloud.speech.v1p1beta1.RecognitionMetadata_NumberOfSpeakers", RecognitionMetadata_NumberOfSpeakers_name, RecognitionMetadata_NumberOfSpeakers_value)
proto.RegisterEnum("google.cloud.speech.v1p1beta1.RecognitionMetadata_RecordingDeviceType", RecognitionMetadata_RecordingDeviceType_name, RecognitionMetadata_RecordingDeviceType_value)
proto.RegisterEnum("google.cloud.speech.v1p1beta1.StreamingRecognizeResponse_SpeechEventType", StreamingRecognizeResponse_SpeechEventType_name, StreamingRecognizeResponse_SpeechEventType_value)
}
@ -1510,137 +1183,95 @@ var _Speech_serviceDesc = grpc.ServiceDesc{
ClientStreams: true,
},
},
Metadata: "google/cloud/speech/v1_1beta1/cloud_speech.proto",
Metadata: "google/cloud/speech/v1p1beta1/cloud_speech.proto",
}
func init() { proto.RegisterFile("google/cloud/speech/v1_1beta1/cloud_speech.proto", fileDescriptor0) }
func init() { proto.RegisterFile("google/cloud/speech/v1p1beta1/cloud_speech.proto", fileDescriptor0) }
var fileDescriptor0 = []byte{
// 2005 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x58, 0xbf, 0x73, 0xdb, 0xc8,
0xf5, 0x37, 0x48, 0x51, 0x12, 0x9f, 0x7e, 0x41, 0xab, 0xf3, 0xd7, 0xb4, 0xac, 0xb3, 0x75, 0xf0,
0xdc, 0x9d, 0xee, 0xbe, 0x37, 0xa4, 0xa5, 0x64, 0x2e, 0x67, 0xdf, 0xe4, 0x26, 0x10, 0x00, 0x99,
0x98, 0x90, 0x00, 0x67, 0x49, 0xda, 0xf1, 0x35, 0x3b, 0x10, 0xb8, 0xa4, 0x31, 0x21, 0x01, 0x1c,
0xb0, 0x50, 0x6c, 0x97, 0x69, 0x33, 0x49, 0x93, 0x99, 0x74, 0xa9, 0x72, 0x75, 0xca, 0x14, 0x69,
0x52, 0x25, 0x45, 0xda, 0x34, 0x29, 0xaf, 0xc8, 0x1f, 0x91, 0x32, 0xb3, 0xbb, 0x00, 0x45, 0x91,
0xb2, 0x2d, 0x6b, 0x72, 0x33, 0xe9, 0x88, 0xcf, 0xbe, 0xf7, 0x79, 0x6f, 0xdf, 0xbe, 0x7d, 0x7c,
0x6f, 0xe1, 0xc1, 0x28, 0x8a, 0x46, 0x63, 0xda, 0xf0, 0xc7, 0x51, 0x36, 0x68, 0xa4, 0x31, 0xa5,
0xfe, 0xf3, 0xc6, 0xd9, 0x21, 0x39, 0x3c, 0xa5, 0xcc, 0x3b, 0x94, 0x30, 0x91, 0x70, 0x3d, 0x4e,
0x22, 0x16, 0xa1, 0xf7, 0xa5, 0x46, 0x5d, 0x2c, 0xd5, 0xf3, 0xa5, 0xb3, 0xc3, 0x58, 0x6a, 0xec,
0xee, 0xe5, 0x84, 0x5e, 0x1c, 0x34, 0xbc, 0x30, 0x8c, 0x98, 0xc7, 0x82, 0x28, 0x4c, 0xa5, 0xf2,
0xee, 0xfd, 0x7c, 0x75, 0x1c, 0x85, 0xa3, 0x24, 0x0b, 0xc3, 0x20, 0x1c, 0x35, 0xa2, 0x98, 0x26,
0x17, 0x84, 0xee, 0xe6, 0x42, 0xe2, 0xeb, 0x34, 0x1b, 0x36, 0x06, 0x99, 0x14, 0xc8, 0xd7, 0xef,
0xcd, 0xaf, 0xb3, 0x60, 0x42, 0x53, 0xe6, 0x4d, 0xe2, 0x5c, 0xe0, 0x56, 0x2e, 0x90, 0xc4, 0x7e,
0x23, 0x65, 0x1e, 0xcb, 0x72, 0x66, 0xed, 0x0f, 0x0a, 0xa8, 0x98, 0xfa, 0xd1, 0x28, 0x0c, 0x5e,
0x51, 0x4c, 0xbf, 0xc9, 0x68, 0xca, 0x50, 0x13, 0x96, 0xfd, 0x28, 0x1c, 0x06, 0xa3, 0x9a, 0xb2,
0xaf, 0x1c, 0xac, 0x1d, 0x3d, 0xa8, 0xbf, 0x71, 0x87, 0xf5, 0x9c, 0x80, 0x3b, 0x64, 0x08, 0x3d,
0x9c, 0xeb, 0x23, 0x0b, 0x2a, 0x5e, 0x36, 0x08, 0xa2, 0x5a, 0x49, 0x10, 0x35, 0xae, 0x4e, 0xa4,
0x73, 0x35, 0x2c, 0xb5, 0xb5, 0x3f, 0x2a, 0x70, 0xa7, 0x15, 0x85, 0x23, 0x2c, 0x03, 0xf4, 0xbf,
0xef, 0xf0, 0x5f, 0x14, 0xb8, 0xdd, 0x65, 0x09, 0xf5, 0x26, 0x97, 0xb9, 0x3b, 0x04, 0x35, 0x2d,
0x16, 0xc9, 0x05, 0xc7, 0x1f, 0xbe, 0xc5, 0xde, 0x3c, 0xe7, 0xf9, 0x0e, 0x9a, 0x37, 0xf0, 0xd6,
0x94, 0x54, 0x42, 0xe8, 0x43, 0xd8, 0x10, 0xee, 0x70, 0x1b, 0x8c, 0x86, 0x4c, 0x6c, 0x6a, 0xbd,
0x79, 0x03, 0xaf, 0x0b, 0xd8, 0x90, 0xe8, 0xf1, 0x0e, 0x6c, 0x9f, 0xbb, 0x93, 0x48, 0x1f, 0xb5,
0x3f, 0x2b, 0xb0, 0xfb, 0x7a, 0x6b, 0xff, 0xc5, 0x88, 0x7f, 0x02, 0x6a, 0x1a, 0x84, 0xa3, 0x31,
0x25, 0x19, 0x63, 0x34, 0xf1, 0x42, 0x9f, 0x0a, 0x3f, 0x57, 0xf1, 0x96, 0xc4, 0xfb, 0x05, 0x8c,
0x3e, 0x86, 0xad, 0x20, 0x64, 0x34, 0x09, 0x26, 0x24, 0xa1, 0x69, 0x36, 0x66, 0x69, 0xad, 0x2c,
0x24, 0x37, 0x73, 0x18, 0x4b, 0x54, 0xfb, 0x5b, 0x05, 0xb6, 0x17, 0x7d, 0xfe, 0x1a, 0x56, 0x69,
0xe8, 0x47, 0x83, 0x20, 0x94, 0x5e, 0x6f, 0x1e, 0x7d, 0xf5, 0xae, 0x5e, 0xd7, 0xc5, 0x29, 0x5b,
0x39, 0x0b, 0x9e, 0xf2, 0xa1, 0x4f, 0x61, 0x3b, 0xf5, 0x26, 0xf1, 0x98, 0x92, 0xc4, 0x63, 0x94,
0x3c, 0xa7, 0x09, 0x7b, 0x25, 0xb6, 0x51, 0xc1, 0x5b, 0x72, 0x01, 0x7b, 0x8c, 0x36, 0x39, 0x8c,
0xee, 0xc3, 0xc6, 0xd8, 0x0b, 0x47, 0x99, 0x37, 0xa2, 0xc4, 0x8f, 0x06, 0x54, 0x6c, 0xa2, 0x8a,
0xd7, 0x0b, 0xd0, 0x88, 0x06, 0x94, 0x87, 0x65, 0xe2, 0xbd, 0x20, 0xde, 0x98, 0xd1, 0x24, 0xf4,
0x58, 0x70, 0x46, 0xd3, 0xda, 0x92, 0xe4, 0x9b, 0x78, 0x2f, 0xf4, 0x19, 0x98, 0x8b, 0xc6, 0x49,
0x34, 0xf4, 0xc2, 0x80, 0xbd, 0x24, 0xc3, 0x80, 0x2f, 0xd5, 0x2a, 0x32, 0x82, 0x53, 0xfc, 0x44,
0xc0, 0xa8, 0x0f, 0x5b, 0x72, 0x93, 0x32, 0x25, 0x5e, 0xb0, 0xb4, 0xb6, 0xbc, 0x5f, 0x3e, 0x58,
0x3b, 0xfa, 0xec, 0x6d, 0x89, 0x27, 0x00, 0x43, 0x2a, 0xe1, 0xcd, 0x74, 0xf6, 0x33, 0x45, 0x3f,
0x82, 0x1a, 0x0d, 0xbd, 0xd3, 0x31, 0x25, 0xbf, 0x88, 0x92, 0x01, 0xe1, 0xd5, 0x87, 0x44, 0xc3,
0x61, 0x4a, 0x59, 0x5a, 0x5b, 0x15, 0x9e, 0xdc, 0x94, 0xeb, 0x4f, 0xa3, 0x64, 0xd0, 0x0b, 0x26,
0xd4, 0x95, 0x8b, 0xe8, 0x27, 0xb0, 0x97, 0x2b, 0x7a, 0x19, 0x8b, 0x26, 0x1e, 0x0b, 0x7c, 0x12,
0x67, 0xa1, 0xcf, 0x32, 0x51, 0xde, 0x6a, 0x6b, 0x42, 0x79, 0x57, 0xca, 0xe8, 0x85, 0x48, 0xe7,
0x5c, 0x02, 0x39, 0xb0, 0x3a, 0xa1, 0xcc, 0x1b, 0x78, 0xcc, 0xab, 0x55, 0x45, 0x2a, 0x1e, 0x5d,
0xfd, 0x50, 0xdb, 0xb9, 0x26, 0x9e, 0x72, 0x68, 0xbf, 0x52, 0x60, 0xe3, 0xc2, 0x21, 0xa3, 0x1a,
0xbc, 0x67, 0x39, 0x86, 0x6b, 0xda, 0xce, 0x63, 0xd2, 0x77, 0xba, 0x1d, 0xcb, 0xb0, 0x4f, 0x6c,
0xcb, 0x54, 0x6f, 0xa0, 0x75, 0x58, 0x6d, 0xd9, 0x8e, 0xa5, 0xe3, 0xc3, 0xcf, 0x55, 0x05, 0xad,
0xc2, 0xd2, 0x49, 0x4b, 0x37, 0xd4, 0x12, 0xaa, 0x42, 0xa5, 0xdd, 0x6f, 0xe9, 0x4f, 0xd5, 0x32,
0x5a, 0x81, 0xb2, 0xde, 0xc6, 0xea, 0x12, 0x02, 0x58, 0xd6, 0xdb, 0x98, 0x3c, 0x3d, 0x56, 0x2b,
0x5c, 0xcf, 0x7d, 0xfc, 0x98, 0xb8, 0x9d, 0x7e, 0x57, 0x5d, 0x46, 0xbb, 0xf0, 0x7f, 0xdd, 0x8e,
0x65, 0xfd, 0x8c, 0x3c, 0xb5, 0x7b, 0x4d, 0xd2, 0xb4, 0x74, 0xd3, 0xc2, 0xe4, 0xf8, 0x59, 0xcf,
0x52, 0x57, 0xb4, 0xef, 0xd6, 0x60, 0xe7, 0x12, 0x7f, 0xd1, 0x04, 0x54, 0x91, 0xf2, 0x9e, 0xcf,
0x61, 0xc2, 0x5e, 0xc6, 0x34, 0x4f, 0xe9, 0xe3, 0x77, 0xdf, 0x7d, 0xdd, 0x3e, 0xa7, 0xea, 0xbd,
0x8c, 0x29, 0xde, 0x0a, 0x2e, 0x02, 0xe8, 0x2b, 0xd8, 0x0b, 0xc2, 0x41, 0x96, 0xb2, 0xe4, 0x25,
0x09, 0xbd, 0xc0, 0x4f, 0x45, 0xde, 0x92, 0x68, 0x48, 0x64, 0xb1, 0xe4, 0x09, 0xbc, 0x81, 0x6b,
0x85, 0x8c, 0xc3, 0x45, 0x78, 0x16, 0xbb, 0x43, 0x11, 0x4a, 0x74, 0x06, 0x3b, 0x93, 0xc0, 0x4f,
0xa2, 0xf8, 0x79, 0x14, 0x52, 0x32, 0x08, 0x52, 0x26, 0xae, 0xf9, 0x92, 0xf0, 0xd8, 0xba, 0x86,
0xc7, 0xed, 0x29, 0x9b, 0x99, 0x93, 0x61, 0x34, 0x59, 0xc0, 0x10, 0x83, 0x9d, 0x28, 0x09, 0x46,
0x41, 0xe8, 0x8d, 0xc9, 0x84, 0x0e, 0x02, 0x4f, 0x46, 0xaa, 0x22, 0xec, 0x9a, 0xd7, 0xb0, 0xeb,
0xe6, 0x6c, 0x6d, 0x4e, 0x26, 0x62, 0xb5, 0x1d, 0xcd, 0x43, 0xe8, 0x1b, 0x40, 0x61, 0x36, 0x39,
0xa5, 0x09, 0x0f, 0x50, 0x1a, 0x53, 0xef, 0xe7, 0x34, 0xe1, 0xf7, 0x8c, 0x1b, 0x35, 0xae, 0x61,
0xd4, 0x11, 0x64, 0xee, 0xb0, 0x9b, 0x53, 0x61, 0x35, 0x9c, 0x43, 0xd0, 0x2b, 0xb8, 0x99, 0x50,
0x3f, 0x4a, 0x78, 0xc2, 0x92, 0x01, 0x3d, 0x0b, 0x7c, 0x2a, 0xb7, 0xba, 0x22, 0xac, 0x9e, 0x5c,
0xc3, 0x2a, 0x2e, 0xf8, 0x4c, 0x41, 0x27, 0x36, 0xbb, 0x93, 0x2c, 0x82, 0xe8, 0xe8, 0x12, 0xdb,
0xa1, 0x37, 0xa1, 0xe2, 0xe6, 0x57, 0x17, 0x74, 0x1c, 0x6f, 0x42, 0xd1, 0x67, 0x80, 0xce, 0x0f,
0x86, 0x57, 0x0b, 0xe1, 0x6c, 0x55, 0x28, 0xa8, 0xd3, 0x88, 0x06, 0x13, 0x69, 0xe1, 0x3e, 0x6c,
0x44, 0xa7, 0xc3, 0x2c, 0xf5, 0x3d, 0x46, 0x07, 0x24, 0x18, 0xd4, 0x60, 0x5f, 0x39, 0x28, 0xe3,
0xf5, 0x73, 0xd0, 0x1e, 0xa0, 0x7b, 0xb0, 0x26, 0xff, 0xec, 0x58, 0x14, 0x07, 0xbe, 0xa8, 0x1c,
0x55, 0x0c, 0x02, 0xea, 0x71, 0x44, 0xfb, 0xab, 0x02, 0x5b, 0x73, 0x99, 0x8e, 0xf6, 0x61, 0xcf,
0x76, 0x7a, 0x16, 0xd6, 0x8d, 0x9e, 0xed, 0x3a, 0xa4, 0xf7, 0xac, 0x63, 0xcd, 0xdd, 0xf1, 0x4d,
0x00, 0xd3, 0xee, 0x1a, 0xfd, 0x6e, 0xd7, 0x76, 0x1d, 0x55, 0x41, 0x2a, 0xac, 0x77, 0xb0, 0xd5,
0xb5, 0x9c, 0x9e, 0xce, 0x55, 0xd4, 0x12, 0x97, 0xe8, 0x34, 0x5d, 0xc7, 0x22, 0x86, 0xde, 0x6a,
0xa9, 0x65, 0xb4, 0x01, 0xd5, 0x27, 0xae, 0x6d, 0x58, 0x6d, 0xdd, 0x6e, 0xa9, 0x4b, 0xe8, 0x0e,
0xdc, 0xea, 0x60, 0xf7, 0xc4, 0x12, 0x04, 0x7a, 0xab, 0xf5, 0x8c, 0x74, 0xb0, 0x6b, 0xf6, 0x0d,
0xcb, 0x54, 0x2b, 0x9c, 0x4d, 0xc8, 0x92, 0xae, 0xa5, 0x63, 0xa3, 0xa9, 0x2e, 0xa3, 0x6d, 0xd8,
0x90, 0x88, 0xe1, 0xb6, 0xdb, 0xba, 0x63, 0xaa, 0x2b, 0x9c, 0xd0, 0xb4, 0x8d, 0xdc, 0xde, 0xaa,
0x36, 0x00, 0xb4, 0x98, 0xfe, 0xe8, 0x3e, 0xdc, 0x6b, 0xdb, 0x06, 0x76, 0xa5, 0x2b, 0xa6, 0xdd,
0xed, 0xe9, 0x8e, 0x31, 0xbf, 0x99, 0x0d, 0xa8, 0xf2, 0x72, 0x75, 0x62, 0x5b, 0x2d, 0x53, 0x55,
0x78, 0x1d, 0x6a, 0xdb, 0xa6, 0xfc, 0x2a, 0xf1, 0xaf, 0x93, 0x62, 0xad, 0xac, 0x39, 0xb0, 0xbd,
0x90, 0xec, 0xdc, 0x88, 0x8b, 0xed, 0xc7, 0xb6, 0xa3, 0xb7, 0x48, 0xdb, 0x32, 0x6d, 0xfd, 0xb2,
0x88, 0x55, 0xa1, 0xa2, 0xf7, 0x4d, 0xdb, 0x55, 0x15, 0xfe, 0xf3, 0x89, 0x6d, 0x5a, 0xae, 0x5a,
0xd2, 0x62, 0x50, 0xe7, 0xf3, 0x18, 0x69, 0x70, 0xd7, 0xe9, 0xb7, 0x8f, 0x2d, 0x4c, 0xdc, 0x13,
0xd2, 0xed, 0x58, 0xfa, 0x4f, 0x2d, 0xdc, 0x9d, 0x63, 0xdb, 0x82, 0x35, 0xbe, 0xa1, 0x7c, 0x55,
0x1e, 0x40, 0xef, 0xa9, 0x3b, 0x15, 0x57, 0x4b, 0xe8, 0x26, 0x6c, 0xb7, 0xfb, 0xad, 0x9e, 0xdd,
0x69, 0x59, 0xe7, 0x70, 0x59, 0xfb, 0x56, 0x91, 0xb5, 0x73, 0x3e, 0x5f, 0x3f, 0x84, 0x0f, 0xb0,
0x65, 0xb8, 0x58, 0x14, 0x74, 0xd3, 0x7a, 0xc2, 0x83, 0x7d, 0xf9, 0xc1, 0x77, 0xdb, 0x3a, 0xee,
0x89, 0x80, 0xaa, 0x0a, 0x5a, 0x86, 0x52, 0xc7, 0x98, 0x3d, 0x6e, 0x5e, 0xfa, 0xd5, 0x32, 0x5a,
0x83, 0x95, 0x27, 0x56, 0xd3, 0x36, 0x5a, 0x96, 0xba, 0xc4, 0xff, 0x2b, 0xdc, 0x5e, 0x93, 0x6f,
0xa8, 0xdf, 0x33, 0x5d, 0x17, 0xe7, 0xfc, 0x6a, 0x05, 0xdd, 0x82, 0x1d, 0xb9, 0x62, 0x3b, 0xb3,
0x0b, 0xcb, 0xda, 0x27, 0xb0, 0x71, 0xe1, 0xcf, 0x15, 0xd5, 0x60, 0x25, 0x7e, 0x9e, 0x78, 0x29,
0x4d, 0x6b, 0xca, 0x7e, 0xf9, 0xa0, 0x8a, 0x8b, 0x4f, 0x0d, 0x4f, 0x7b, 0xf5, 0x69, 0xc3, 0x89,
0x76, 0x61, 0xa5, 0xe8, 0xee, 0x94, 0xbc, 0xbb, 0x2b, 0x00, 0x84, 0xa0, 0x9c, 0x25, 0x81, 0x68,
0x43, 0xaa, 0xcd, 0x1b, 0x98, 0x7f, 0x1c, 0x6f, 0x82, 0x6c, 0xfe, 0x48, 0x1a, 0x65, 0x89, 0x4f,
0x35, 0x3a, 0xed, 0x94, 0x78, 0x7f, 0x9a, 0xc6, 0x51, 0x98, 0x52, 0xd4, 0x81, 0x95, 0xa2, 0xc1,
0x2a, 0x89, 0xf6, 0xe0, 0xf3, 0x2b, 0xb5, 0x07, 0x33, 0xce, 0xc9, 0x4e, 0x0c, 0x17, 0x34, 0x5a,
0x0c, 0x7b, 0x97, 0x37, 0xf0, 0xdf, 0x9b, 0xc5, 0xbf, 0x2b, 0x97, 0x9b, 0x9c, 0xfe, 0x87, 0xca,
0xb6, 0x69, 0x94, 0xd0, 0x34, 0x25, 0x31, 0x4d, 0xfc, 0x22, 0x84, 0x15, 0xd1, 0x36, 0x09, 0xbc,
0x23, 0x61, 0xf4, 0x10, 0x20, 0x65, 0x5e, 0xc2, 0x44, 0x67, 0x93, 0x8f, 0x06, 0xbb, 0x85, 0x83,
0xc5, 0xd0, 0x55, 0xef, 0x15, 0x43, 0x17, 0xae, 0x0a, 0x69, 0xfe, 0x8d, 0x4c, 0x50, 0xc7, 0x5e,
0xca, 0x48, 0x16, 0x0f, 0x78, 0x63, 0x28, 0x08, 0xca, 0x6f, 0x25, 0xd8, 0xe4, 0x3a, 0x7d, 0xa1,
0xc2, 0x41, 0xed, 0xbb, 0xd2, 0x62, 0x37, 0x3e, 0x13, 0xbd, 0x03, 0xa8, 0xd0, 0x24, 0x89, 0x92,
0xbc, 0x19, 0x47, 0x05, 0x73, 0x12, 0xfb, 0xf5, 0xae, 0x18, 0xf7, 0xb0, 0x14, 0x40, 0xdd, 0xf9,
0x38, 0x5f, 0x67, 0xe2, 0x98, 0x0b, 0x35, 0xca, 0x60, 0x3b, 0xef, 0x2a, 0xe9, 0x19, 0x0d, 0x99,
0x2c, 0xe6, 0xf2, 0xcf, 0xdd, 0x7e, 0x47, 0xfa, 0xf3, 0x4d, 0xe5, 0x27, 0x6c, 0x71, 0x46, 0xd9,
0x95, 0xa4, 0x17, 0x01, 0xad, 0x05, 0x5b, 0x73, 0x32, 0x68, 0x0f, 0x6a, 0xbc, 0x97, 0x32, 0x9a,
0xc4, 0x7a, 0x62, 0x39, 0xbd, 0xb9, 0x2b, 0x7d, 0x07, 0x6e, 0x59, 0x8e, 0x29, 0x8a, 0x8d, 0xed,
0x3c, 0x6e, 0x59, 0xa4, 0xdf, 0xe3, 0xb5, 0xdf, 0x31, 0x2c, 0x55, 0xd1, 0xfe, 0xf4, 0x9a, 0x81,
0x47, 0x6e, 0x16, 0x11, 0x58, 0xbf, 0xd0, 0x8b, 0x2b, 0x22, 0x7a, 0x5f, 0xbe, 0x6b, 0x96, 0xce,
0x34, 0xee, 0xf8, 0x02, 0x21, 0xba, 0x0d, 0xab, 0x41, 0x4a, 0x86, 0xbc, 0xe0, 0xe6, 0xf3, 0xcf,
0x4a, 0x90, 0x9e, 0xf0, 0x4f, 0xb4, 0x07, 0x3c, 0xa1, 0x4e, 0x83, 0x71, 0xc0, 0x5e, 0x8a, 0xe4,
0x29, 0xe1, 0x73, 0x40, 0x7b, 0x05, 0xb7, 0x5e, 0x73, 0x19, 0xbe, 0x77, 0xa7, 0xb5, 0xdf, 0x2b,
0xb0, 0xf7, 0x26, 0x71, 0x74, 0x17, 0x80, 0x25, 0x5e, 0x98, 0xfa, 0x49, 0x10, 0xcb, 0xeb, 0x55,
0xc5, 0x33, 0x08, 0x5f, 0x17, 0x73, 0xe0, 0x80, 0x16, 0x73, 0x5f, 0x09, 0xcf, 0x20, 0xe8, 0xc7,
0x50, 0xe1, 0x23, 0x05, 0x1f, 0xf4, 0xb8, 0xeb, 0x1f, 0xbf, 0xc5, 0x75, 0x3e, 0x5f, 0xd8, 0xe1,
0x30, 0xc2, 0x52, 0x4b, 0xfb, 0x8d, 0x02, 0xab, 0x05, 0x86, 0xbe, 0xb8, 0x70, 0x8b, 0xe5, 0x55,
0xb9, 0xbd, 0x70, 0x09, 0xcd, 0xfc, 0x69, 0x65, 0xf6, 0x12, 0xff, 0x90, 0x4f, 0x8e, 0x83, 0xd9,
0xdb, 0xff, 0x06, 0xbd, 0x15, 0x1a, 0x8a, 0x19, 0x07, 0x21, 0x58, 0xe2, 0x5e, 0xe4, 0xe3, 0x9d,
0xf8, 0x7d, 0xf4, 0xcf, 0x32, 0x2c, 0xcb, 0x80, 0xa1, 0xdf, 0x29, 0x50, 0x9d, 0x66, 0x3d, 0xba,
0xe2, 0x4b, 0xc3, 0xf4, 0x11, 0x61, 0xf7, 0xc1, 0xd5, 0x15, 0xe4, 0x85, 0xd2, 0x3e, 0xfa, 0xe5,
0x3f, 0xfe, 0xf5, 0xdb, 0xd2, 0xbe, 0x76, 0xa7, 0x31, 0x95, 0xca, 0xdf, 0xb7, 0x1e, 0x25, 0x85,
0xf0, 0x23, 0xe5, 0x53, 0xf4, 0xad, 0x02, 0xef, 0x5d, 0x56, 0x39, 0xd1, 0xa3, 0xb7, 0x98, 0x7c,
0xc3, 0x13, 0xcd, 0xee, 0xfb, 0x85, 0xee, 0xcc, 0x43, 0x57, 0xdd, 0x2d, 0x1e, 0xba, 0xb4, 0x43,
0xe1, 0xdb, 0xff, 0x6b, 0x1f, 0x2d, 0xfa, 0x36, 0xa3, 0x70, 0xc1, 0xcd, 0x5f, 0x2b, 0x80, 0x16,
0xcb, 0x07, 0xfa, 0xe2, 0x1a, 0x15, 0x47, 0xba, 0xf8, 0xf0, 0xda, 0xb5, 0xea, 0x40, 0x79, 0xa0,
0x1c, 0xbf, 0x82, 0x0f, 0xfc, 0x68, 0xf2, 0x66, 0x8e, 0xe3, 0x35, 0x79, 0xf8, 0x1d, 0x9e, 0x35,
0x1d, 0xe5, 0x6b, 0x23, 0x97, 0x1e, 0x45, 0x7c, 0xf8, 0xaf, 0x47, 0xc9, 0xa8, 0x31, 0xa2, 0xa1,
0xc8, 0xa9, 0x86, 0x5c, 0xf2, 0xe2, 0x20, 0x9d, 0x7f, 0x8b, 0xcc, 0xc9, 0xbe, 0x94, 0xc0, 0xbf,
0x15, 0xe5, 0x74, 0x59, 0xa8, 0xfc, 0xe0, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xdf, 0x32, 0x25,
0x1e, 0xbd, 0x14, 0x00, 0x00,
// 1343 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x57, 0xbb, 0x6f, 0x5b, 0xb7,
0x1a, 0xf7, 0xb1, 0x2c, 0x3f, 0xbe, 0xf8, 0x21, 0xf3, 0xe6, 0xde, 0xc8, 0x8a, 0x93, 0xeb, 0x7b,
0x82, 0x9b, 0x38, 0x69, 0x21, 0xd9, 0x6e, 0x91, 0xe6, 0x81, 0x16, 0x90, 0xe5, 0x63, 0x4b, 0x80,
0x2d, 0x1b, 0xb4, 0x5c, 0xb7, 0x59, 0x08, 0x5a, 0xa2, 0x94, 0x03, 0x48, 0xe4, 0x29, 0x49, 0xa5,
0xb1, 0xc7, 0xae, 0x45, 0xbb, 0x14, 0xe8, 0xd6, 0xa9, 0x9d, 0x3b, 0x76, 0xe8, 0xd2, 0x3d, 0x6b,
0x97, 0x8e, 0x1d, 0xfa, 0x47, 0x74, 0x2c, 0x48, 0x9e, 0x23, 0x4b, 0x7e, 0x27, 0x68, 0x80, 0x6e,
0x87, 0xbf, 0xef, 0xc1, 0x1f, 0x3f, 0x7e, 0x0f, 0x1e, 0x58, 0x6a, 0x09, 0xd1, 0x6a, 0xb3, 0x42,
0xbd, 0x2d, 0xba, 0x8d, 0x82, 0x8a, 0x18, 0xab, 0x3f, 0x2f, 0xbc, 0x58, 0x8e, 0x96, 0x0f, 0x98,
0xa6, 0xcb, 0x0e, 0x26, 0x0e, 0xce, 0x47, 0x52, 0x68, 0x81, 0x6e, 0x39, 0x8b, 0xbc, 0x15, 0xe5,
0x63, 0x51, 0xcf, 0x22, 0x37, 0x1f, 0x3b, 0xa4, 0x51, 0x58, 0xa0, 0x9c, 0x0b, 0x4d, 0x75, 0x28,
0xb8, 0x72, 0xc6, 0xb9, 0x3b, 0xb1, 0xb4, 0x2d, 0x78, 0x4b, 0x76, 0x39, 0x0f, 0x79, 0xab, 0x20,
0x22, 0x26, 0x07, 0x94, 0xe6, 0x62, 0x25, 0xbb, 0x3a, 0xe8, 0x36, 0x0b, 0x94, 0x1f, 0xc6, 0xa2,
0xdb, 0x27, 0x45, 0x8d, 0xae, 0xb3, 0x8d, 0xe5, 0xff, 0x3d, 0x29, 0xd7, 0x61, 0x87, 0x29, 0x4d,
0x3b, 0x51, 0xac, 0x70, 0x23, 0x56, 0x90, 0x51, 0xbd, 0xa0, 0x34, 0xd5, 0xdd, 0x78, 0x53, 0xff,
0x7b, 0x0f, 0x32, 0x98, 0xd5, 0x45, 0x8b, 0x87, 0x47, 0x0c, 0xb3, 0xcf, 0xba, 0x4c, 0x69, 0x54,
0x86, 0xd1, 0xba, 0xe0, 0xcd, 0xb0, 0x95, 0xf5, 0x16, 0xbc, 0xc5, 0x6b, 0x2b, 0x4b, 0xf9, 0x0b,
0x0f, 0x9f, 0x8f, 0x1d, 0x18, 0x42, 0x25, 0x6b, 0x87, 0x63, 0x7b, 0x14, 0x40, 0x9a, 0x76, 0x1b,
0xa1, 0xc8, 0x0e, 0x5b, 0x47, 0x85, 0xab, 0x3b, 0x2a, 0x1a, 0x33, 0xec, 0xac, 0xfd, 0x1f, 0x3d,
0xb8, 0xb9, 0x29, 0x78, 0x0b, 0xbb, 0xd8, 0xfd, 0xf3, 0x09, 0xff, 0xe2, 0xc1, 0xdc, 0xae, 0x96,
0x8c, 0x76, 0xce, 0xa2, 0xdb, 0x84, 0x8c, 0x4a, 0x84, 0x64, 0x80, 0xf8, 0xe3, 0x4b, 0xf6, 0x3b,
0xe9, 0xf3, 0xf8, 0x04, 0xe5, 0x21, 0x3c, 0xd3, 0x73, 0xea, 0x20, 0xf4, 0x7f, 0x98, 0xb2, 0x74,
0xcc, 0x1e, 0x9a, 0x71, 0x6d, 0x0f, 0x35, 0x59, 0x1e, 0xc2, 0x93, 0x16, 0x2e, 0x39, 0x74, 0xf5,
0x5f, 0x30, 0x7b, 0x4c, 0x47, 0x3a, 0x8e, 0xfe, 0xcf, 0x1e, 0xe4, 0xce, 0xdf, 0xed, 0x6f, 0x8c,
0xf8, 0x7d, 0xc8, 0xa8, 0x90, 0xb7, 0xda, 0x8c, 0x74, 0xb5, 0x66, 0x92, 0xf2, 0x3a, 0xb3, 0x3c,
0xc7, 0xf1, 0x8c, 0xc3, 0xf7, 0x12, 0x18, 0xdd, 0x83, 0x99, 0x90, 0x6b, 0x26, 0xc3, 0x0e, 0x91,
0x4c, 0x75, 0xdb, 0x5a, 0x65, 0x53, 0x56, 0x73, 0x3a, 0x86, 0xb1, 0x43, 0xfd, 0x57, 0x23, 0x30,
0x7b, 0x9a, 0xf3, 0x33, 0x18, 0x67, 0xbc, 0x2e, 0x1a, 0x21, 0x77, 0xac, 0xa7, 0x57, 0x3e, 0x7a,
0x5d, 0xd6, 0x79, 0x7b, 0xcb, 0x41, 0xec, 0x05, 0xf7, 0xfc, 0xa1, 0x07, 0x30, 0xab, 0x68, 0x27,
0x6a, 0x33, 0x22, 0xa9, 0x66, 0xe4, 0x39, 0x93, 0xfa, 0xc8, 0x1e, 0x23, 0x8d, 0x67, 0x9c, 0x00,
0x53, 0xcd, 0xca, 0x06, 0x46, 0x77, 0x60, 0xaa, 0x4d, 0x79, 0xab, 0x4b, 0x5b, 0x8c, 0xd4, 0x45,
0x83, 0xd9, 0x43, 0x4c, 0xe0, 0xc9, 0x04, 0x2c, 0x89, 0x06, 0x33, 0x61, 0xe9, 0xd0, 0x97, 0x84,
0xb6, 0x35, 0x93, 0x9c, 0xea, 0xf0, 0x05, 0x53, 0xd9, 0x11, 0xe7, 0xaf, 0x43, 0x5f, 0x16, 0xfb,
0x60, 0xa3, 0x1a, 0x49, 0xd1, 0xa4, 0x3c, 0xd4, 0x87, 0xa4, 0x19, 0x1a, 0x51, 0x36, 0xed, 0x22,
0xd8, 0xc3, 0xd7, 0x2d, 0x8c, 0xf6, 0x60, 0xc6, 0x1d, 0xd2, 0xa5, 0xc4, 0x4b, 0xad, 0xb2, 0xa3,
0x0b, 0xa9, 0xc5, 0x6b, 0x2b, 0xef, 0x5e, 0x96, 0x78, 0x16, 0x28, 0x39, 0x23, 0x3c, 0xad, 0xfa,
0x97, 0x0a, 0x7d, 0x00, 0x59, 0xc6, 0xe9, 0x41, 0x9b, 0x91, 0xcf, 0x85, 0x6c, 0x10, 0xd3, 0x7d,
0x88, 0x68, 0x36, 0x15, 0xd3, 0x2a, 0x3b, 0x6e, 0x99, 0xfc, 0xdb, 0xc9, 0xf7, 0x85, 0x6c, 0xd4,
0xc2, 0x0e, 0xdb, 0x76, 0x42, 0x74, 0x1d, 0xd2, 0x1d, 0xd1, 0x60, 0xed, 0xec, 0x94, 0x0d, 0x81,
0x5b, 0xf8, 0x5f, 0x7a, 0x30, 0x35, 0x10, 0x68, 0x94, 0x85, 0xeb, 0x41, 0xb5, 0xb4, 0xbd, 0x56,
0xa9, 0x6e, 0x90, 0xbd, 0xea, 0xee, 0x4e, 0x50, 0xaa, 0xac, 0x57, 0x82, 0xb5, 0xcc, 0x10, 0x9a,
0x84, 0xf1, 0xcd, 0x4a, 0x35, 0x28, 0xe2, 0xe5, 0x87, 0x19, 0x0f, 0x8d, 0xc3, 0xc8, 0xfa, 0x66,
0xb1, 0x94, 0x19, 0x46, 0x13, 0x90, 0xde, 0xda, 0xdb, 0x2c, 0xee, 0x67, 0x52, 0x68, 0x0c, 0x52,
0xc5, 0x2d, 0x9c, 0x19, 0x41, 0x00, 0xa3, 0xc5, 0x2d, 0x4c, 0xf6, 0x57, 0x33, 0x69, 0x63, 0xb7,
0xbd, 0xb1, 0x41, 0xb6, 0x77, 0xf6, 0x76, 0x33, 0xa3, 0x28, 0x07, 0xff, 0xd9, 0xdd, 0x09, 0x82,
0x4f, 0xc8, 0x7e, 0xa5, 0x56, 0x26, 0xe5, 0xa0, 0xb8, 0x16, 0x60, 0xb2, 0xfa, 0x69, 0x2d, 0xc8,
0x8c, 0xf9, 0xf7, 0x61, 0x6a, 0xe0, 0xf4, 0x28, 0x0b, 0x63, 0xd1, 0x73, 0x49, 0x15, 0x53, 0x59,
0x6f, 0x21, 0xb5, 0x38, 0x81, 0x93, 0xa5, 0x8f, 0x7b, 0xcd, 0xb4, 0xd7, 0x11, 0x50, 0x0e, 0xc6,
0x92, 0xf2, 0xf3, 0xe2, 0xf2, 0x4b, 0x00, 0x84, 0x20, 0xd5, 0x95, 0xa1, 0xcd, 0x93, 0x89, 0xf2,
0x10, 0x36, 0x8b, 0xd5, 0x69, 0x70, 0xd5, 0x49, 0x94, 0xe8, 0xca, 0x3a, 0xf3, 0x59, 0x2f, 0x95,
0x4d, 0x03, 0x51, 0x91, 0xe0, 0x8a, 0xa1, 0x1d, 0x18, 0x4b, 0x2a, 0x60, 0xd8, 0xde, 0xdf, 0xc3,
0x2b, 0xdd, 0x5f, 0x1f, 0x39, 0x57, 0x2a, 0x38, 0x71, 0xe3, 0x47, 0x30, 0x7f, 0x76, 0x87, 0x7d,
0x6b, 0x3b, 0xbe, 0xf2, 0xce, 0xde, 0x72, 0x8b, 0x69, 0xda, 0xa0, 0x9a, 0xc6, 0x79, 0xdd, 0x92,
0x4c, 0x29, 0x12, 0x31, 0x59, 0x4f, 0x42, 0x98, 0xb6, 0x79, 0x6d, 0xf1, 0x1d, 0x07, 0xa3, 0xc7,
0x00, 0x4a, 0x53, 0xa9, 0x6d, 0xea, 0xc5, 0xbd, 0x3b, 0x97, 0x10, 0x4c, 0xa6, 0x62, 0xbe, 0x96,
0x4c, 0x45, 0x3c, 0x61, 0xb5, 0xcd, 0x1a, 0xad, 0x41, 0xa6, 0x4d, 0x95, 0x26, 0xdd, 0xa8, 0x61,
0x2a, 0xd7, 0x3a, 0x48, 0x5d, 0xea, 0x60, 0xda, 0xd8, 0xec, 0x59, 0x13, 0x03, 0xfa, 0xbf, 0x0f,
0x9f, 0x6e, 0x97, 0x7d, 0xd1, 0x5b, 0x84, 0x34, 0x93, 0x52, 0xc8, 0xb8, 0x5b, 0xa2, 0xc4, 0xb3,
0x8c, 0xea, 0xf9, 0x5d, 0x3b, 0x8f, 0xb1, 0x53, 0x40, 0xbb, 0x27, 0xe3, 0xfc, 0x26, 0x23, 0xe1,
0x44, 0xa8, 0x51, 0x17, 0x66, 0xe3, 0xb2, 0x67, 0x2f, 0x18, 0xd7, 0x44, 0x1f, 0x46, 0xcc, 0x76,
0x93, 0xe9, 0x95, 0xca, 0x6b, 0xba, 0x3f, 0x3e, 0x54, 0x7c, 0xc3, 0x81, 0xf1, 0x58, 0x3b, 0x8c,
0x18, 0x8e, 0x5b, 0x4b, 0x0f, 0xf0, 0x37, 0x61, 0xe6, 0x84, 0x0e, 0x9a, 0x87, 0xac, 0x29, 0xb4,
0x52, 0x99, 0x04, 0x1f, 0x07, 0xd5, 0xda, 0x89, 0x62, 0xbe, 0x09, 0x37, 0x82, 0xea, 0x1a, 0xd9,
0x5e, 0x27, 0xbb, 0x95, 0xea, 0xc6, 0x66, 0x40, 0xf6, 0x6a, 0xb5, 0x00, 0x17, 0xab, 0xa5, 0x20,
0xe3, 0xf9, 0x3f, 0x9d, 0x33, 0x91, 0xdc, 0x61, 0x11, 0x81, 0xc9, 0x81, 0x66, 0xe9, 0xd9, 0xe8,
0x3d, 0x7d, 0xdd, 0x2c, 0xed, 0xeb, 0xac, 0x78, 0xc0, 0x21, 0x9a, 0x83, 0xf1, 0x50, 0x91, 0x66,
0xc8, 0x69, 0x3b, 0x1e, 0x50, 0x63, 0xa1, 0x5a, 0x37, 0x4b, 0x34, 0x0f, 0x26, 0xa1, 0x0e, 0xc2,
0x76, 0xa8, 0x0f, 0x6d, 0xf2, 0x0c, 0xe3, 0x63, 0xc0, 0x3f, 0x82, 0x1b, 0xe7, 0x14, 0xc3, 0x5b,
0x27, 0xed, 0x7f, 0xe7, 0xc1, 0xfc, 0x45, 0xea, 0xe8, 0x36, 0x80, 0x96, 0x94, 0xab, 0xba, 0x0c,
0x23, 0x57, 0x5e, 0x13, 0xb8, 0x0f, 0x31, 0x72, 0x3b, 0xa8, 0x1b, 0x2c, 0x19, 0xcc, 0xc3, 0xb8,
0x0f, 0x41, 0x1f, 0x42, 0xda, 0xf4, 0x7c, 0x33, 0x89, 0x0d, 0xf5, 0x7b, 0x97, 0x50, 0x37, 0x03,
0xa0, 0xc2, 0x9b, 0x02, 0x3b, 0x2b, 0xff, 0x6b, 0x0f, 0xc6, 0x13, 0x0c, 0x3d, 0x1a, 0xa8, 0x62,
0x57, 0x2a, 0x73, 0xa7, 0x8a, 0x70, 0x2d, 0x7e, 0xfb, 0xf6, 0x17, 0xf1, 0xfb, 0x66, 0xb4, 0x37,
0xfa, 0xab, 0xff, 0x02, 0xbb, 0x31, 0xc6, 0xed, 0x10, 0x42, 0x08, 0x46, 0x0c, 0x8b, 0x78, 0xfe,
0xda, 0xef, 0x95, 0xdf, 0x52, 0x30, 0xea, 0x02, 0x86, 0xbe, 0xf5, 0x60, 0xa2, 0x97, 0xf5, 0xe8,
0x8a, 0x4f, 0xc1, 0xde, 0x2b, 0x2f, 0xb7, 0x74, 0x75, 0x03, 0x57, 0x50, 0xfe, 0xdd, 0x2f, 0x7e,
0xfd, 0xe3, 0x9b, 0xe1, 0x05, 0xff, 0x66, 0xdf, 0xaf, 0x88, 0x33, 0x7b, 0x22, 0x13, 0xe5, 0x27,
0xde, 0x03, 0xf4, 0x83, 0x07, 0xd7, 0xcf, 0xea, 0x9c, 0xe8, 0xc9, 0x25, 0x5b, 0x5e, 0xf0, 0x86,
0xce, 0xdd, 0x4a, 0x6c, 0xfb, 0x7e, 0x52, 0xf2, 0xdb, 0xc9, 0x4f, 0x8a, 0xbf, 0x6c, 0xb9, 0xbd,
0xe3, 0xdf, 0x3d, 0xcd, 0xad, 0xcf, 0x60, 0x80, 0xe6, 0x57, 0x1e, 0xa0, 0xd3, 0xed, 0x03, 0x3d,
0x7a, 0x83, 0x8e, 0xe3, 0x28, 0x3e, 0x7e, 0xe3, 0x5e, 0xb5, 0xe8, 0x2d, 0x79, 0xab, 0x47, 0xf0,
0xbf, 0xba, 0xe8, 0x5c, 0xec, 0x63, 0xf5, 0x9a, 0xbb, 0xfc, 0x1d, 0x93, 0x35, 0x3b, 0xde, 0xb3,
0x52, 0xac, 0xdd, 0x12, 0xe6, 0x75, 0x96, 0x17, 0xb2, 0x55, 0x68, 0x31, 0x6e, 0x73, 0xaa, 0xe0,
0x44, 0x34, 0x0a, 0xd5, 0x39, 0xff, 0x91, 0x4f, 0x1d, 0xf0, 0xa7, 0xe7, 0x1d, 0x8c, 0x5a, 0x93,
0xf7, 0xfe, 0x0a, 0x00, 0x00, 0xff, 0xff, 0x2f, 0x7b, 0x24, 0x37, 0x79, 0x0e, 0x00, 0x00,
}

View File

@ -0,0 +1,672 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: google/cloud/texttospeech/v1beta1/cloud_tts.proto
/*
Package texttospeech is a generated protocol buffer package.
It is generated from these files:
google/cloud/texttospeech/v1beta1/cloud_tts.proto
It has these top-level messages:
ListVoicesRequest
ListVoicesResponse
Voice
SynthesizeSpeechRequest
SynthesisInput
VoiceSelectionParams
AudioConfig
SynthesizeSpeechResponse
*/
package texttospeech
import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
import _ "google.golang.org/genproto/googleapis/api/annotations"
import (
context "golang.org/x/net/context"
grpc "google.golang.org/grpc"
)
// 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
// Gender of the voice as described in
// [SSML voice element](https://www.w3.org/TR/speech-synthesis11/#edef_voice).
type SsmlVoiceGender int32
const (
// An unspecified gender.
// In VoiceSelectionParams, this means that the client doesn't care which
// gender the selected voice will have. In the Voice field of
// ListVoicesResponse, this may mean that the voice doesn't fit any of the
// other categories in this enum, or that the gender of the voice isn't known.
SsmlVoiceGender_SSML_VOICE_GENDER_UNSPECIFIED SsmlVoiceGender = 0
// A male voice.
SsmlVoiceGender_MALE SsmlVoiceGender = 1
// A female voice.
SsmlVoiceGender_FEMALE SsmlVoiceGender = 2
// A gender-neutral voice.
SsmlVoiceGender_NEUTRAL SsmlVoiceGender = 3
)
var SsmlVoiceGender_name = map[int32]string{
0: "SSML_VOICE_GENDER_UNSPECIFIED",
1: "MALE",
2: "FEMALE",
3: "NEUTRAL",
}
var SsmlVoiceGender_value = map[string]int32{
"SSML_VOICE_GENDER_UNSPECIFIED": 0,
"MALE": 1,
"FEMALE": 2,
"NEUTRAL": 3,
}
func (x SsmlVoiceGender) String() string {
return proto.EnumName(SsmlVoiceGender_name, int32(x))
}
func (SsmlVoiceGender) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
// Configuration to set up audio encoder. The encoding determines the output
// audio format that we'd like.
type AudioEncoding int32
const (
// Not specified. Will return result [google.rpc.Code.INVALID_ARGUMENT][].
AudioEncoding_AUDIO_ENCODING_UNSPECIFIED AudioEncoding = 0
// Uncompressed 16-bit signed little-endian samples (Linear PCM).
// Audio content returned as LINEAR16 also contains a WAV header.
AudioEncoding_LINEAR16 AudioEncoding = 1
// MP3 audio.
AudioEncoding_MP3 AudioEncoding = 2
// Opus encoded audio wrapped in an ogg container. The result will be a
// file which can be played natively on Android, and in browsers (at least
// Chrome and Firefox). The quality of the encoding is considerably higher
// than MP3 while using approximately the same bitrate.
AudioEncoding_OGG_OPUS AudioEncoding = 3
)
var AudioEncoding_name = map[int32]string{
0: "AUDIO_ENCODING_UNSPECIFIED",
1: "LINEAR16",
2: "MP3",
3: "OGG_OPUS",
}
var AudioEncoding_value = map[string]int32{
"AUDIO_ENCODING_UNSPECIFIED": 0,
"LINEAR16": 1,
"MP3": 2,
"OGG_OPUS": 3,
}
func (x AudioEncoding) String() string {
return proto.EnumName(AudioEncoding_name, int32(x))
}
func (AudioEncoding) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
// The top-level message sent by the client for the `ListVoices` method.
type ListVoicesRequest struct {
}
func (m *ListVoicesRequest) Reset() { *m = ListVoicesRequest{} }
func (m *ListVoicesRequest) String() string { return proto.CompactTextString(m) }
func (*ListVoicesRequest) ProtoMessage() {}
func (*ListVoicesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
// The message returned to the client by the `ListVoices` method.
type ListVoicesResponse struct {
// The list of voices.
Voices []*Voice `protobuf:"bytes,1,rep,name=voices" json:"voices,omitempty"`
}
func (m *ListVoicesResponse) Reset() { *m = ListVoicesResponse{} }
func (m *ListVoicesResponse) String() string { return proto.CompactTextString(m) }
func (*ListVoicesResponse) ProtoMessage() {}
func (*ListVoicesResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
func (m *ListVoicesResponse) GetVoices() []*Voice {
if m != nil {
return m.Voices
}
return nil
}
// Description of a voice supported by the TTS service.
type Voice struct {
// The languages that this voice supports, expressed as
// [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tags (e.g.
// "en-US", "es-419", "cmn-tw").
LanguageCodes []string `protobuf:"bytes,1,rep,name=language_codes,json=languageCodes" json:"language_codes,omitempty"`
// The name of this voice. Each distinct voice has a unique name.
Name string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"`
// The gender of this voice.
SsmlGender SsmlVoiceGender `protobuf:"varint,3,opt,name=ssml_gender,json=ssmlGender,enum=google.cloud.texttospeech.v1beta1.SsmlVoiceGender" json:"ssml_gender,omitempty"`
// The natural sample rate (in hertz) for this voice.
NaturalSampleRateHertz int32 `protobuf:"varint,4,opt,name=natural_sample_rate_hertz,json=naturalSampleRateHertz" json:"natural_sample_rate_hertz,omitempty"`
}
func (m *Voice) Reset() { *m = Voice{} }
func (m *Voice) String() string { return proto.CompactTextString(m) }
func (*Voice) ProtoMessage() {}
func (*Voice) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
func (m *Voice) GetLanguageCodes() []string {
if m != nil {
return m.LanguageCodes
}
return nil
}
func (m *Voice) GetName() string {
if m != nil {
return m.Name
}
return ""
}
func (m *Voice) GetSsmlGender() SsmlVoiceGender {
if m != nil {
return m.SsmlGender
}
return SsmlVoiceGender_SSML_VOICE_GENDER_UNSPECIFIED
}
func (m *Voice) GetNaturalSampleRateHertz() int32 {
if m != nil {
return m.NaturalSampleRateHertz
}
return 0
}
// The top-level message sent by the client for the `SynthesizeSpeech` method.
type SynthesizeSpeechRequest struct {
// Required. The Synthesizer requires either plain text or SSML as input.
Input *SynthesisInput `protobuf:"bytes,1,opt,name=input" json:"input,omitempty"`
// Required. The desired voice of the synthesized audio.
Voice *VoiceSelectionParams `protobuf:"bytes,2,opt,name=voice" json:"voice,omitempty"`
// Required. The configuration of the synthesized audio.
AudioConfig *AudioConfig `protobuf:"bytes,3,opt,name=audio_config,json=audioConfig" json:"audio_config,omitempty"`
}
func (m *SynthesizeSpeechRequest) Reset() { *m = SynthesizeSpeechRequest{} }
func (m *SynthesizeSpeechRequest) String() string { return proto.CompactTextString(m) }
func (*SynthesizeSpeechRequest) ProtoMessage() {}
func (*SynthesizeSpeechRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
func (m *SynthesizeSpeechRequest) GetInput() *SynthesisInput {
if m != nil {
return m.Input
}
return nil
}
func (m *SynthesizeSpeechRequest) GetVoice() *VoiceSelectionParams {
if m != nil {
return m.Voice
}
return nil
}
func (m *SynthesizeSpeechRequest) GetAudioConfig() *AudioConfig {
if m != nil {
return m.AudioConfig
}
return nil
}
// Contains text input to be synthesized. Either `text` or `ssml` must be
// supplied. Supplying both or neither returns
// [google.rpc.Code.INVALID_ARGUMENT][]. The input size is limited to 5000
// characters.
type SynthesisInput struct {
// The input source, which is either plain text or SSML.
//
// Types that are valid to be assigned to InputSource:
// *SynthesisInput_Text
// *SynthesisInput_Ssml
InputSource isSynthesisInput_InputSource `protobuf_oneof:"input_source"`
}
func (m *SynthesisInput) Reset() { *m = SynthesisInput{} }
func (m *SynthesisInput) String() string { return proto.CompactTextString(m) }
func (*SynthesisInput) ProtoMessage() {}
func (*SynthesisInput) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }
type isSynthesisInput_InputSource interface {
isSynthesisInput_InputSource()
}
type SynthesisInput_Text struct {
Text string `protobuf:"bytes,1,opt,name=text,oneof"`
}
type SynthesisInput_Ssml struct {
Ssml string `protobuf:"bytes,2,opt,name=ssml,oneof"`
}
func (*SynthesisInput_Text) isSynthesisInput_InputSource() {}
func (*SynthesisInput_Ssml) isSynthesisInput_InputSource() {}
func (m *SynthesisInput) GetInputSource() isSynthesisInput_InputSource {
if m != nil {
return m.InputSource
}
return nil
}
func (m *SynthesisInput) GetText() string {
if x, ok := m.GetInputSource().(*SynthesisInput_Text); ok {
return x.Text
}
return ""
}
func (m *SynthesisInput) GetSsml() string {
if x, ok := m.GetInputSource().(*SynthesisInput_Ssml); ok {
return x.Ssml
}
return ""
}
// XXX_OneofFuncs is for the internal use of the proto package.
func (*SynthesisInput) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
return _SynthesisInput_OneofMarshaler, _SynthesisInput_OneofUnmarshaler, _SynthesisInput_OneofSizer, []interface{}{
(*SynthesisInput_Text)(nil),
(*SynthesisInput_Ssml)(nil),
}
}
func _SynthesisInput_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
m := msg.(*SynthesisInput)
// input_source
switch x := m.InputSource.(type) {
case *SynthesisInput_Text:
b.EncodeVarint(1<<3 | proto.WireBytes)
b.EncodeStringBytes(x.Text)
case *SynthesisInput_Ssml:
b.EncodeVarint(2<<3 | proto.WireBytes)
b.EncodeStringBytes(x.Ssml)
case nil:
default:
return fmt.Errorf("SynthesisInput.InputSource has unexpected type %T", x)
}
return nil
}
func _SynthesisInput_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
m := msg.(*SynthesisInput)
switch tag {
case 1: // input_source.text
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
x, err := b.DecodeStringBytes()
m.InputSource = &SynthesisInput_Text{x}
return true, err
case 2: // input_source.ssml
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
x, err := b.DecodeStringBytes()
m.InputSource = &SynthesisInput_Ssml{x}
return true, err
default:
return false, nil
}
}
func _SynthesisInput_OneofSizer(msg proto.Message) (n int) {
m := msg.(*SynthesisInput)
// input_source
switch x := m.InputSource.(type) {
case *SynthesisInput_Text:
n += proto.SizeVarint(1<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(len(x.Text)))
n += len(x.Text)
case *SynthesisInput_Ssml:
n += proto.SizeVarint(2<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(len(x.Ssml)))
n += len(x.Ssml)
case nil:
default:
panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
}
return n
}
// Description of which voice to use for a synthesis request.
type VoiceSelectionParams struct {
// The language (and optionally also the region) of the voice expressed as a
// [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag, e.g.
// "en-US". Required. This should not include a script tag (e.g. use
// "cmn-cn" rather than "cmn-Hant-cn"), because the script will be inferred
// from the input provided in the SynthesisInput. The TTS service
// will use this parameter to help choose an appropriate voice. Note that
// the TTS service may choose a voice with a slightly different language code
// than the one selected; it may substitute a different region
// (e.g. using en-US rather than en-CA if there isn't a Canadian voice
// available), or even a different language, e.g. using "nb" (Norwegian
// Bokmal) instead of "no" (Norwegian)".
LanguageCode string `protobuf:"bytes,1,opt,name=language_code,json=languageCode" json:"language_code,omitempty"`
// The name of the voice. Optional; if not set, the service will choose a
// voice based on the other parameters such as language_code and gender.
Name string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"`
// The preferred gender of the voice. Optional; if not set, the service will
// choose a voice based on the other parameters such as language_code and
// name. Note that this is only a preference, not requirement; if a
// voice of the appropriate gender is not available, the synthesizer should
// substitute a voice with a different gender rather than failing the request.
SsmlGender SsmlVoiceGender `protobuf:"varint,3,opt,name=ssml_gender,json=ssmlGender,enum=google.cloud.texttospeech.v1beta1.SsmlVoiceGender" json:"ssml_gender,omitempty"`
}
func (m *VoiceSelectionParams) Reset() { *m = VoiceSelectionParams{} }
func (m *VoiceSelectionParams) String() string { return proto.CompactTextString(m) }
func (*VoiceSelectionParams) ProtoMessage() {}
func (*VoiceSelectionParams) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }
func (m *VoiceSelectionParams) GetLanguageCode() string {
if m != nil {
return m.LanguageCode
}
return ""
}
func (m *VoiceSelectionParams) GetName() string {
if m != nil {
return m.Name
}
return ""
}
func (m *VoiceSelectionParams) GetSsmlGender() SsmlVoiceGender {
if m != nil {
return m.SsmlGender
}
return SsmlVoiceGender_SSML_VOICE_GENDER_UNSPECIFIED
}
// Description of audio data to be synthesized.
type AudioConfig struct {
// Required. The format of the requested audio byte stream.
AudioEncoding AudioEncoding `protobuf:"varint,1,opt,name=audio_encoding,json=audioEncoding,enum=google.cloud.texttospeech.v1beta1.AudioEncoding" json:"audio_encoding,omitempty"`
// Optional speaking rate/speed, in the range [0.25, 4.0]. 1.0 is the normal
// native speed supported by the specific voice. 2.0 is twice as fast, and
// 0.5 is half as fast. If unset(0.0), defaults to the native 1.0 speed. Any
// other values < 0.25 or > 4.0 will return an error.
SpeakingRate float64 `protobuf:"fixed64,2,opt,name=speaking_rate,json=speakingRate" json:"speaking_rate,omitempty"`
// Optional speaking pitch, in the range [-20.0, 20.0]. 20 means increase 20
// semitones from the original pitch. -20 means decrease 20 semitones from the
// original pitch.
Pitch float64 `protobuf:"fixed64,3,opt,name=pitch" json:"pitch,omitempty"`
// Optional volume gain (in dB) of the normal native volume supported by the
// specific voice, in the range [-96.0, 16.0]. If unset, or set to a value of
// 0.0 (dB), will play at normal native signal amplitude. A value of -6.0 (dB)
// will play at approximately half the amplitude of the normal native signal
// amplitude. A value of +6.0 (dB) will play at approximately twice the
// amplitude of the normal native signal amplitude. Strongly recommend not to
// exceed +10 (dB) as there's usually no effective increase in loudness for
// any value greater than that.
VolumeGainDb float64 `protobuf:"fixed64,4,opt,name=volume_gain_db,json=volumeGainDb" json:"volume_gain_db,omitempty"`
// The synthesis sample rate (in hertz) for this audio. Optional. If this is
// different from the voice's natural sample rate, then the synthesizer will
// honor this request by converting to the desired sample rate (which might
// result in worse audio quality), unless the specified sample rate is not
// supported for the encoding chosen, in which case it will fail the request
// and return [google.rpc.Code.INVALID_ARGUMENT][].
SampleRateHertz int32 `protobuf:"varint,5,opt,name=sample_rate_hertz,json=sampleRateHertz" json:"sample_rate_hertz,omitempty"`
}
func (m *AudioConfig) Reset() { *m = AudioConfig{} }
func (m *AudioConfig) String() string { return proto.CompactTextString(m) }
func (*AudioConfig) ProtoMessage() {}
func (*AudioConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} }
func (m *AudioConfig) GetAudioEncoding() AudioEncoding {
if m != nil {
return m.AudioEncoding
}
return AudioEncoding_AUDIO_ENCODING_UNSPECIFIED
}
func (m *AudioConfig) GetSpeakingRate() float64 {
if m != nil {
return m.SpeakingRate
}
return 0
}
func (m *AudioConfig) GetPitch() float64 {
if m != nil {
return m.Pitch
}
return 0
}
func (m *AudioConfig) GetVolumeGainDb() float64 {
if m != nil {
return m.VolumeGainDb
}
return 0
}
func (m *AudioConfig) GetSampleRateHertz() int32 {
if m != nil {
return m.SampleRateHertz
}
return 0
}
// The message returned to the client by the `SynthesizeSpeech` method.
type SynthesizeSpeechResponse struct {
// The audio data bytes encoded as specified in the request, including the
// header (For LINEAR16 audio, we include the WAV header). Note: as
// with all bytes fields, protobuffers use a pure binary representation,
// whereas JSON representations use base64.
AudioContent []byte `protobuf:"bytes,1,opt,name=audio_content,json=audioContent,proto3" json:"audio_content,omitempty"`
}
func (m *SynthesizeSpeechResponse) Reset() { *m = SynthesizeSpeechResponse{} }
func (m *SynthesizeSpeechResponse) String() string { return proto.CompactTextString(m) }
func (*SynthesizeSpeechResponse) ProtoMessage() {}
func (*SynthesizeSpeechResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} }
func (m *SynthesizeSpeechResponse) GetAudioContent() []byte {
if m != nil {
return m.AudioContent
}
return nil
}
func init() {
proto.RegisterType((*ListVoicesRequest)(nil), "google.cloud.texttospeech.v1beta1.ListVoicesRequest")
proto.RegisterType((*ListVoicesResponse)(nil), "google.cloud.texttospeech.v1beta1.ListVoicesResponse")
proto.RegisterType((*Voice)(nil), "google.cloud.texttospeech.v1beta1.Voice")
proto.RegisterType((*SynthesizeSpeechRequest)(nil), "google.cloud.texttospeech.v1beta1.SynthesizeSpeechRequest")
proto.RegisterType((*SynthesisInput)(nil), "google.cloud.texttospeech.v1beta1.SynthesisInput")
proto.RegisterType((*VoiceSelectionParams)(nil), "google.cloud.texttospeech.v1beta1.VoiceSelectionParams")
proto.RegisterType((*AudioConfig)(nil), "google.cloud.texttospeech.v1beta1.AudioConfig")
proto.RegisterType((*SynthesizeSpeechResponse)(nil), "google.cloud.texttospeech.v1beta1.SynthesizeSpeechResponse")
proto.RegisterEnum("google.cloud.texttospeech.v1beta1.SsmlVoiceGender", SsmlVoiceGender_name, SsmlVoiceGender_value)
proto.RegisterEnum("google.cloud.texttospeech.v1beta1.AudioEncoding", AudioEncoding_name, AudioEncoding_value)
}
// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConn
// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion4
// Client API for TextToSpeech service
type TextToSpeechClient interface {
// Returns a list of [Voice][google.cloud.texttospeech.v1beta1.Voice]
// supported for synthesis.
ListVoices(ctx context.Context, in *ListVoicesRequest, opts ...grpc.CallOption) (*ListVoicesResponse, error)
// Synthesizes speech synchronously: receive results after all text input
// has been processed.
SynthesizeSpeech(ctx context.Context, in *SynthesizeSpeechRequest, opts ...grpc.CallOption) (*SynthesizeSpeechResponse, error)
}
type textToSpeechClient struct {
cc *grpc.ClientConn
}
func NewTextToSpeechClient(cc *grpc.ClientConn) TextToSpeechClient {
return &textToSpeechClient{cc}
}
func (c *textToSpeechClient) ListVoices(ctx context.Context, in *ListVoicesRequest, opts ...grpc.CallOption) (*ListVoicesResponse, error) {
out := new(ListVoicesResponse)
err := grpc.Invoke(ctx, "/google.cloud.texttospeech.v1beta1.TextToSpeech/ListVoices", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *textToSpeechClient) SynthesizeSpeech(ctx context.Context, in *SynthesizeSpeechRequest, opts ...grpc.CallOption) (*SynthesizeSpeechResponse, error) {
out := new(SynthesizeSpeechResponse)
err := grpc.Invoke(ctx, "/google.cloud.texttospeech.v1beta1.TextToSpeech/SynthesizeSpeech", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// Server API for TextToSpeech service
type TextToSpeechServer interface {
// Returns a list of [Voice][google.cloud.texttospeech.v1beta1.Voice]
// supported for synthesis.
ListVoices(context.Context, *ListVoicesRequest) (*ListVoicesResponse, error)
// Synthesizes speech synchronously: receive results after all text input
// has been processed.
SynthesizeSpeech(context.Context, *SynthesizeSpeechRequest) (*SynthesizeSpeechResponse, error)
}
func RegisterTextToSpeechServer(s *grpc.Server, srv TextToSpeechServer) {
s.RegisterService(&_TextToSpeech_serviceDesc, srv)
}
func _TextToSpeech_ListVoices_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ListVoicesRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(TextToSpeechServer).ListVoices(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.texttospeech.v1beta1.TextToSpeech/ListVoices",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(TextToSpeechServer).ListVoices(ctx, req.(*ListVoicesRequest))
}
return interceptor(ctx, in, info, handler)
}
func _TextToSpeech_SynthesizeSpeech_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(SynthesizeSpeechRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(TextToSpeechServer).SynthesizeSpeech(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.texttospeech.v1beta1.TextToSpeech/SynthesizeSpeech",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(TextToSpeechServer).SynthesizeSpeech(ctx, req.(*SynthesizeSpeechRequest))
}
return interceptor(ctx, in, info, handler)
}
var _TextToSpeech_serviceDesc = grpc.ServiceDesc{
ServiceName: "google.cloud.texttospeech.v1beta1.TextToSpeech",
HandlerType: (*TextToSpeechServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "ListVoices",
Handler: _TextToSpeech_ListVoices_Handler,
},
{
MethodName: "SynthesizeSpeech",
Handler: _TextToSpeech_SynthesizeSpeech_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "google/cloud/texttospeech/v1beta1/cloud_tts.proto",
}
func init() { proto.RegisterFile("google/cloud/texttospeech/v1beta1/cloud_tts.proto", fileDescriptor0) }
var fileDescriptor0 = []byte{
// 844 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x55, 0x4d, 0x6f, 0x1b, 0x45,
0x18, 0xee, 0xd8, 0x71, 0xda, 0xbc, 0x5e, 0x3b, 0xce, 0x10, 0x51, 0x13, 0x51, 0xe4, 0x6e, 0xa8,
0x64, 0xe5, 0x60, 0x63, 0x97, 0x0f, 0x91, 0x1e, 0xc0, 0xb1, 0xb7, 0xae, 0x25, 0x7f, 0x31, 0x9b,
0xa4, 0x12, 0x97, 0xd5, 0x64, 0x3d, 0x6c, 0x56, 0xac, 0x67, 0x16, 0xcf, 0x6c, 0x54, 0x7a, 0x44,
0x9c, 0x39, 0xc0, 0x5f, 0xe0, 0x07, 0xf0, 0x5b, 0x40, 0xe2, 0x17, 0xf0, 0x0f, 0xb8, 0x70, 0x44,
0x33, 0xbb, 0x71, 0x1d, 0x07, 0x51, 0x97, 0x03, 0xb7, 0x9d, 0x67, 0xfc, 0x3c, 0xf3, 0xbe, 0xcf,
0x3c, 0x7e, 0x07, 0x5a, 0x81, 0x10, 0x41, 0xc4, 0x9a, 0x7e, 0x24, 0x92, 0x59, 0x53, 0xb1, 0x17,
0x4a, 0x09, 0x19, 0x33, 0xe6, 0x5f, 0x36, 0xaf, 0x5a, 0x17, 0x4c, 0xd1, 0x56, 0xba, 0xe5, 0x29,
0x25, 0x1b, 0xf1, 0x42, 0x28, 0x81, 0x1f, 0xa6, 0x94, 0x86, 0xc1, 0x1b, 0xab, 0x94, 0x46, 0x46,
0x39, 0x78, 0x37, 0x53, 0xa5, 0x71, 0xd8, 0xa4, 0x9c, 0x0b, 0x45, 0x55, 0x28, 0x78, 0x26, 0x60,
0xbf, 0x05, 0x7b, 0xc3, 0x50, 0xaa, 0x73, 0x11, 0xfa, 0x4c, 0x12, 0xf6, 0x4d, 0xc2, 0xa4, 0xb2,
0xcf, 0x01, 0xaf, 0x82, 0x32, 0x16, 0x5c, 0x32, 0xfc, 0x39, 0x6c, 0x5f, 0x19, 0xa4, 0x8a, 0x6a,
0xf9, 0x7a, 0xb1, 0x5d, 0x6f, 0xbc, 0xf6, 0xf0, 0x86, 0x91, 0x20, 0x19, 0xcf, 0xfe, 0x15, 0x41,
0xc1, 0x20, 0xf8, 0x11, 0x94, 0x23, 0xca, 0x83, 0x84, 0x06, 0xcc, 0xf3, 0xc5, 0x2c, 0xd3, 0xdc,
0x21, 0xa5, 0x6b, 0xb4, 0xab, 0x41, 0x8c, 0x61, 0x8b, 0xd3, 0x39, 0xab, 0xe6, 0x6a, 0xa8, 0xbe,
0x43, 0xcc, 0x37, 0x76, 0xa1, 0x28, 0xe5, 0x3c, 0xf2, 0x02, 0xc6, 0x67, 0x6c, 0x51, 0xcd, 0xd7,
0x50, 0xbd, 0xdc, 0x6e, 0x6f, 0x50, 0x8b, 0x2b, 0xe7, 0x91, 0x39, 0xbd, 0x6f, 0x98, 0x04, 0xb4,
0x4c, 0xfa, 0x8d, 0x3f, 0x85, 0x77, 0x38, 0x55, 0xc9, 0x82, 0x46, 0x9e, 0xa4, 0xf3, 0x38, 0x62,
0xde, 0x82, 0x2a, 0xe6, 0x5d, 0xb2, 0x85, 0x7a, 0x59, 0xdd, 0xaa, 0xa1, 0x7a, 0x81, 0xbc, 0x9d,
0xfd, 0xc0, 0x35, 0xfb, 0x84, 0x2a, 0xf6, 0x4c, 0xef, 0xda, 0xdf, 0xe7, 0xe0, 0xbe, 0xfb, 0x2d,
0x57, 0x97, 0x4c, 0x86, 0x2f, 0x99, 0x6b, 0xce, 0xcc, 0x8c, 0xc4, 0x7d, 0x28, 0x84, 0x3c, 0x4e,
0x54, 0x15, 0xd5, 0x50, 0xbd, 0xd8, 0x6e, 0x6d, 0x52, 0x65, 0x26, 0x25, 0x07, 0x9a, 0x48, 0x52,
0x3e, 0x1e, 0x41, 0xc1, 0x78, 0x68, 0x9c, 0x28, 0xb6, 0x3f, 0xd9, 0xd4, 0x7a, 0x97, 0x45, 0xcc,
0xd7, 0xf7, 0x3d, 0xa5, 0x0b, 0x3a, 0x97, 0x24, 0x55, 0xc1, 0x5f, 0x80, 0x45, 0x93, 0x59, 0x28,
0x3c, 0x5f, 0xf0, 0xaf, 0xc2, 0xc0, 0x98, 0x58, 0x6c, 0x37, 0x36, 0x50, 0xed, 0x68, 0x5a, 0xd7,
0xb0, 0x48, 0x91, 0xbe, 0x5a, 0xd8, 0x43, 0x28, 0xdf, 0x2c, 0x1d, 0xef, 0xc3, 0x96, 0x96, 0x30,
0xbd, 0xef, 0x3c, 0xbb, 0x43, 0xcc, 0x4a, 0xa3, 0xda, 0xf7, 0xf4, 0x4a, 0x35, 0xaa, 0x57, 0x27,
0x65, 0xb0, 0x4c, 0xa3, 0x9e, 0x14, 0xc9, 0xc2, 0x67, 0xf6, 0xcf, 0x08, 0xf6, 0xff, 0xa9, 0x01,
0x7c, 0x08, 0xa5, 0x1b, 0xc1, 0x49, 0xd5, 0x89, 0xb5, 0x9a, 0x9b, 0xff, 0x2d, 0x36, 0xf6, 0x9f,
0x08, 0x8a, 0x2b, 0x8e, 0xe0, 0xe7, 0x50, 0x4e, 0x7d, 0x65, 0xdc, 0x17, 0xb3, 0x90, 0x07, 0xa6,
0xbc, 0x72, 0xfb, 0x83, 0x4d, 0x9d, 0x75, 0x32, 0x1e, 0x29, 0xd1, 0xd5, 0xa5, 0x6e, 0x5b, 0xc6,
0x8c, 0x7e, 0x1d, 0xf2, 0xc0, 0x24, 0xd3, 0xb4, 0x86, 0x88, 0x75, 0x0d, 0xea, 0x38, 0xe2, 0x7d,
0x28, 0xc4, 0xa1, 0xf2, 0x2f, 0x4d, 0x73, 0x88, 0xa4, 0x0b, 0xfc, 0x3e, 0x94, 0xaf, 0x44, 0x94,
0xcc, 0x99, 0x17, 0xd0, 0x90, 0x7b, 0xb3, 0x0b, 0x93, 0x67, 0x44, 0xac, 0x14, 0xed, 0xd3, 0x90,
0xf7, 0x2e, 0xf0, 0x11, 0xec, 0xdd, 0x0e, 0x7e, 0xc1, 0x04, 0x7f, 0x57, 0xae, 0x25, 0xfe, 0x33,
0xa8, 0xde, 0x0e, 0x7c, 0x36, 0x24, 0x0e, 0xa1, 0xb4, 0x4c, 0x96, 0x62, 0x3c, 0xbd, 0x7d, 0x8b,
0x58, 0xd7, 0x51, 0xd1, 0xd8, 0xd1, 0x73, 0xd8, 0x5d, 0x73, 0x15, 0x3f, 0x84, 0x07, 0xae, 0x3b,
0x1a, 0x7a, 0xe7, 0x93, 0x41, 0xd7, 0xf1, 0xfa, 0xce, 0xb8, 0xe7, 0x10, 0xef, 0x6c, 0xec, 0x4e,
0x9d, 0xee, 0xe0, 0xe9, 0xc0, 0xe9, 0x55, 0xee, 0xe0, 0x7b, 0xb0, 0x35, 0xea, 0x0c, 0x9d, 0x0a,
0xc2, 0x00, 0xdb, 0x4f, 0x1d, 0xf3, 0x9d, 0xc3, 0x45, 0xb8, 0x3b, 0x76, 0xce, 0x4e, 0x49, 0x67,
0x58, 0xc9, 0x1f, 0x9d, 0x42, 0xe9, 0x86, 0x8d, 0xf8, 0x3d, 0x38, 0xe8, 0x9c, 0xf5, 0x06, 0x13,
0xcf, 0x19, 0x77, 0x27, 0xbd, 0xc1, 0xb8, 0xbf, 0xa6, 0x69, 0xc1, 0xbd, 0xe1, 0x60, 0xec, 0x74,
0x48, 0xeb, 0xe3, 0x0a, 0xc2, 0x77, 0x21, 0x3f, 0x9a, 0x3e, 0xae, 0xe4, 0x34, 0x3c, 0xe9, 0xf7,
0xbd, 0xc9, 0xf4, 0xcc, 0xad, 0xe4, 0xdb, 0xbf, 0xe7, 0xc0, 0x3a, 0x65, 0x2f, 0xd4, 0xa9, 0x48,
0x9b, 0xc5, 0x3f, 0x22, 0x80, 0x57, 0x03, 0x12, 0x7f, 0xb8, 0xc1, 0xed, 0xde, 0x1a, 0xb2, 0x07,
0x1f, 0xbd, 0x21, 0x2b, 0x35, 0xd8, 0xbe, 0xff, 0xdd, 0x6f, 0x7f, 0xfc, 0x94, 0xdb, 0xc3, 0xbb,
0xcb, 0x37, 0x21, 0x1d, 0xae, 0xf8, 0x17, 0x04, 0x95, 0xf5, 0x6b, 0xc1, 0xc7, 0x6f, 0x30, 0x71,
0xd6, 0x86, 0xd7, 0xc1, 0x93, 0xff, 0xc4, 0xcd, 0xca, 0x3c, 0x34, 0x65, 0x3e, 0xb0, 0xab, 0xcb,
0x32, 0x35, 0xff, 0x58, 0x2e, 0x7f, 0x7f, 0x8c, 0x8e, 0x4e, 0x7e, 0x40, 0xf0, 0xc8, 0x17, 0xf3,
0xd7, 0x9f, 0x73, 0xb2, 0xb7, 0xea, 0xff, 0x54, 0xbf, 0x5c, 0x53, 0xf4, 0xe5, 0x28, 0xe3, 0x05,
0x42, 0xff, 0xfb, 0x1b, 0x62, 0x11, 0x34, 0x03, 0xc6, 0xcd, 0xbb, 0xd6, 0x4c, 0xb7, 0x68, 0x1c,
0xca, 0x7f, 0x79, 0x4e, 0x9f, 0xac, 0x82, 0x7f, 0x21, 0x74, 0xb1, 0x6d, 0xc8, 0x8f, 0xff, 0x0e,
0x00, 0x00, 0xff, 0xff, 0x7f, 0xac, 0x4e, 0x87, 0x8a, 0x07, 0x00, 0x00,
}

View File

@ -29,6 +29,7 @@ It has these top-level messages:
CropHint
CropHintsAnnotation
CropHintsParams
WebDetectionParams
ImageContext
AnnotateImageRequest
AnnotateImageResponse

View File

@ -62,7 +62,7 @@ func (x Likelihood) String() string {
}
func (Likelihood) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{0} }
// Type of image feature.
// Type of Google Cloud Vision API feature to be extracted.
type Feature_Type int32
const (
@ -76,14 +76,18 @@ const (
Feature_LOGO_DETECTION Feature_Type = 3
// Run label detection.
Feature_LABEL_DETECTION Feature_Type = 4
// Run OCR.
// Run text detection / optical character recognition (OCR). Text detection
// is optimized for areas of text within a larger image; if the image is
// a document, use `DOCUMENT_TEXT_DETECTION` instead.
Feature_TEXT_DETECTION Feature_Type = 5
// Run dense text document OCR. Takes precedence when both
// DOCUMENT_TEXT_DETECTION and TEXT_DETECTION are present.
// `DOCUMENT_TEXT_DETECTION` and `TEXT_DETECTION` are present.
Feature_DOCUMENT_TEXT_DETECTION Feature_Type = 11
// Run computer vision models to compute image safe-search properties.
// Run Safe Search to detect potentially unsafe
// or undesirable content.
Feature_SAFE_SEARCH_DETECTION Feature_Type = 6
// Compute a set of image properties, such as the image's dominant colors.
// Compute a set of image properties, such as the
// image's dominant colors.
Feature_IMAGE_PROPERTIES Feature_Type = 7
// Run crop hints.
Feature_CROP_HINTS Feature_Type = 9
@ -284,15 +288,19 @@ func (FaceAnnotation_Landmark_Type) EnumDescriptor() ([]byte, []int) {
return fileDescriptor1, []int{3, 0, 0}
}
// Users describe the type of Google Cloud Vision API tasks to perform over
// images by using *Feature*s. Each Feature indicates a type of image
// detection task to perform. Features encode the Cloud Vision API
// vertical to operate on and the number of top-scoring results to return.
// The type of Google Cloud Vision API detection to perform, and the maximum
// number of results to return for that type. Multiple `Feature` objects can
// be specified in the `features` list.
type Feature struct {
// The feature type.
Type Feature_Type `protobuf:"varint,1,opt,name=type,enum=google.cloud.vision.v1.Feature_Type" json:"type,omitempty"`
// Maximum number of results of this type.
// Maximum number of results of this type. Does not apply to
// `TEXT_DETECTION`, `DOCUMENT_TEXT_DETECTION`, or `CROP_HINTS`.
MaxResults int32 `protobuf:"varint,2,opt,name=max_results,json=maxResults" json:"max_results,omitempty"`
// Model to use for the feature.
// Supported values: "builtin/stable" (the default if unset) and
// "builtin/latest".
Model string `protobuf:"bytes,3,opt,name=model" json:"model,omitempty"`
}
func (m *Feature) Reset() { *m = Feature{} }
@ -314,24 +322,38 @@ func (m *Feature) GetMaxResults() int32 {
return 0
}
// External image source (Google Cloud Storage image location).
func (m *Feature) GetModel() string {
if m != nil {
return m.Model
}
return ""
}
// External image source (Google Cloud Storage or web URL image location).
type ImageSource struct {
// NOTE: For new code `image_uri` below is preferred.
// Google Cloud Storage image URI, which must be in the following form:
// `gs://bucket_name/object_name` (for details, see
// **Use `image_uri` instead.**
//
// The Google Cloud Storage URI of the form
// `gs://bucket_name/object_name`. Object versioning is not supported. See
// [Google Cloud Storage Request
// URIs](https://cloud.google.com/storage/docs/reference-uris)).
// NOTE: Cloud Storage object versioning is not supported.
// URIs](https://cloud.google.com/storage/docs/reference-uris) for more info.
GcsImageUri string `protobuf:"bytes,1,opt,name=gcs_image_uri,json=gcsImageUri" json:"gcs_image_uri,omitempty"`
// Image URI which supports:
// 1) Google Cloud Storage image URI, which must be in the following form:
// `gs://bucket_name/object_name` (for details, see
// [Google Cloud Storage Request
// URIs](https://cloud.google.com/storage/docs/reference-uris)).
// NOTE: Cloud Storage object versioning is not supported.
// 2) Publicly accessible image HTTP/HTTPS URL.
// This is preferred over the legacy `gcs_image_uri` above. When both
// `gcs_image_uri` and `image_uri` are specified, `image_uri` takes
// The URI of the source image. Can be either:
//
// 1. A Google Cloud Storage URI of the form
// `gs://bucket_name/object_name`. Object versioning is not supported. See
// [Google Cloud Storage Request
// URIs](https://cloud.google.com/storage/docs/reference-uris) for more
// info.
//
// 2. A publicly-accessible image HTTP/HTTPS URL. When fetching images from
// HTTP/HTTPS URLs, Google cannot guarantee that the request will be
// completed. Your request may fail if the specified host denies the
// request (e.g. due to request throttling or DOS prevention), or if Google
// throttles requests to the site for abuse prevention. You should not
// depend on externally-hosted images for production applications.
//
// When both `gcs_image_uri` and `image_uri` are specified, `image_uri` takes
// precedence.
ImageUri string `protobuf:"bytes,2,opt,name=image_uri,json=imageUri" json:"image_uri,omitempty"`
}
@ -358,12 +380,12 @@ func (m *ImageSource) GetImageUri() string {
// Client image to perform Google Cloud Vision API tasks over.
type Image struct {
// Image content, represented as a stream of bytes.
// Note: as with all `bytes` fields, protobuffers use a pure binary
// Note: As with all `bytes` fields, protobuffers use a pure binary
// representation, whereas JSON representations use base64.
Content []byte `protobuf:"bytes,1,opt,name=content,proto3" json:"content,omitempty"`
// Google Cloud Storage image location. If both `content` and `source`
// are provided for an image, `content` takes precedence and is
// used to perform the image annotation request.
// Google Cloud Storage image location, or publicly-accessible image
// URL. If both `content` and `source` are provided for an image, `content`
// takes precedence and is used to perform the image annotation request.
Source *ImageSource `protobuf:"bytes,2,opt,name=source" json:"source,omitempty"`
}
@ -547,10 +569,6 @@ func (m *FaceAnnotation) GetHeadwearLikelihood() Likelihood {
}
// A face-specific landmark (for example, a face feature).
// Landmark positions may fall outside the bounds of the image
// if the face is near one or more edges of the image.
// Therefore it is NOT guaranteed that `0 <= x < width` or
// `0 <= y < height`.
type FaceAnnotation_Landmark struct {
// Face landmark type.
Type FaceAnnotation_Landmark_Type `protobuf:"varint,3,opt,name=type,enum=google.cloud.vision.v1.FaceAnnotation_Landmark_Type" json:"type,omitempty"`
@ -601,6 +619,8 @@ type Property struct {
Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
// Value of the property.
Value string `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"`
// Value of numeric properties.
Uint64Value uint64 `protobuf:"varint,3,opt,name=uint64_value,json=uint64Value" json:"uint64_value,omitempty"`
}
func (m *Property) Reset() { *m = Property{} }
@ -622,10 +642,18 @@ func (m *Property) GetValue() string {
return ""
}
func (m *Property) GetUint64Value() uint64 {
if m != nil {
return m.Uint64Value
}
return 0
}
// Set of detected entity features.
type EntityAnnotation struct {
// Opaque entity ID. Some IDs may be available in
// [Google Knowledge Graph Search API](https://developers.google.com/knowledge-graph/).
// [Google Knowledge Graph Search
// API](https://developers.google.com/knowledge-graph/).
Mid string `protobuf:"bytes,1,opt,name=mid" json:"mid,omitempty"`
// The language code for the locale in which the entity textual
// `description` is expressed.
@ -634,6 +662,7 @@ type EntityAnnotation struct {
Description string `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"`
// Overall score of the result. Range [0, 1].
Score float32 `protobuf:"fixed32,4,opt,name=score" json:"score,omitempty"`
// **Deprecated. Use `score` instead.**
// The accuracy of the entity detection in an image.
// For example, for an image in which the "Eiffel Tower" entity is detected,
// this field represents the confidence that there is a tower in the query
@ -645,10 +674,8 @@ type EntityAnnotation struct {
// detected distant towering building, even though the confidence that
// there is a tower in each image may be the same. Range [0, 1].
Topicality float32 `protobuf:"fixed32,6,opt,name=topicality" json:"topicality,omitempty"`
// Image region to which this entity belongs. Currently not produced
// for `LABEL_DETECTION` features. For `TEXT_DETECTION` (OCR), `boundingPoly`s
// are produced for the entire text detected in an image region, followed by
// `boundingPoly`s for each word within the detected text.
// Image region to which this entity belongs. Not produced
// for `LABEL_DETECTION` features.
BoundingPoly *BoundingPoly `protobuf:"bytes,7,opt,name=bounding_poly,json=boundingPoly" json:"bounding_poly,omitempty"`
// The location information for the detected entity. Multiple
// `LocationInfo` elements can be present because one location may
@ -733,7 +760,9 @@ func (m *EntityAnnotation) GetProperties() []*Property {
// methods over safe-search verticals (for example, adult, spoof, medical,
// violence).
type SafeSearchAnnotation struct {
// Represents the adult content likelihood for the image.
// Represents the adult content likelihood for the image. Adult content may
// contain elements such as nudity, pornographic images or cartoons, or
// sexual activities.
Adult Likelihood `protobuf:"varint,1,opt,name=adult,enum=google.cloud.vision.v1.Likelihood" json:"adult,omitempty"`
// Spoof likelihood. The likelihood that an modification
// was made to the image's canonical version to make it appear
@ -741,8 +770,13 @@ type SafeSearchAnnotation struct {
Spoof Likelihood `protobuf:"varint,2,opt,name=spoof,enum=google.cloud.vision.v1.Likelihood" json:"spoof,omitempty"`
// Likelihood that this is a medical image.
Medical Likelihood `protobuf:"varint,3,opt,name=medical,enum=google.cloud.vision.v1.Likelihood" json:"medical,omitempty"`
// Violence likelihood.
// Likelihood that this image contains violent content.
Violence Likelihood `protobuf:"varint,4,opt,name=violence,enum=google.cloud.vision.v1.Likelihood" json:"violence,omitempty"`
// Likelihood that the request image contains racy content. Racy content may
// include (but is not limited to) skimpy or sheer clothing, strategically
// covered nudity, lewd or provocative poses, or close-ups of sensitive
// body areas.
Racy Likelihood `protobuf:"varint,9,opt,name=racy,enum=google.cloud.vision.v1.Likelihood" json:"racy,omitempty"`
}
func (m *SafeSearchAnnotation) Reset() { *m = SafeSearchAnnotation{} }
@ -778,6 +812,13 @@ func (m *SafeSearchAnnotation) GetViolence() Likelihood {
return Likelihood_UNKNOWN
}
func (m *SafeSearchAnnotation) GetRacy() Likelihood {
if m != nil {
return m.Racy
}
return Likelihood_UNKNOWN
}
// Rectangle determined by min and max `LatLng` pairs.
type LatLongRect struct {
// Min lat/long pair.
@ -919,6 +960,7 @@ func (m *CropHint) GetImportanceFraction() float32 {
// Set of crop hints that are used to generate new crops when serving images.
type CropHintsAnnotation struct {
// Crop hint results.
CropHints []*CropHint `protobuf:"bytes,1,rep,name=crop_hints,json=cropHints" json:"crop_hints,omitempty"`
}
@ -957,6 +999,24 @@ func (m *CropHintsParams) GetAspectRatios() []float32 {
return nil
}
// Parameters for web detection request.
type WebDetectionParams struct {
// Whether to include results derived from the geo information in the image.
IncludeGeoResults bool `protobuf:"varint,2,opt,name=include_geo_results,json=includeGeoResults" json:"include_geo_results,omitempty"`
}
func (m *WebDetectionParams) Reset() { *m = WebDetectionParams{} }
func (m *WebDetectionParams) String() string { return proto.CompactTextString(m) }
func (*WebDetectionParams) ProtoMessage() {}
func (*WebDetectionParams) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{15} }
func (m *WebDetectionParams) GetIncludeGeoResults() bool {
if m != nil {
return m.IncludeGeoResults
}
return false
}
// Image context and/or feature-specific parameters.
type ImageContext struct {
// lat/long rectangle that specifies the location of the image.
@ -972,12 +1032,14 @@ type ImageContext struct {
LanguageHints []string `protobuf:"bytes,2,rep,name=language_hints,json=languageHints" json:"language_hints,omitempty"`
// Parameters for crop hints annotation request.
CropHintsParams *CropHintsParams `protobuf:"bytes,4,opt,name=crop_hints_params,json=cropHintsParams" json:"crop_hints_params,omitempty"`
// Parameters for web detection.
WebDetectionParams *WebDetectionParams `protobuf:"bytes,6,opt,name=web_detection_params,json=webDetectionParams" json:"web_detection_params,omitempty"`
}
func (m *ImageContext) Reset() { *m = ImageContext{} }
func (m *ImageContext) String() string { return proto.CompactTextString(m) }
func (*ImageContext) ProtoMessage() {}
func (*ImageContext) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{15} }
func (*ImageContext) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{16} }
func (m *ImageContext) GetLatLongRect() *LatLongRect {
if m != nil {
@ -1000,6 +1062,13 @@ func (m *ImageContext) GetCropHintsParams() *CropHintsParams {
return nil
}
func (m *ImageContext) GetWebDetectionParams() *WebDetectionParams {
if m != nil {
return m.WebDetectionParams
}
return nil
}
// Request for performing Google Cloud Vision API tasks over a user-provided
// image, with user-requested features.
type AnnotateImageRequest struct {
@ -1014,7 +1083,7 @@ type AnnotateImageRequest struct {
func (m *AnnotateImageRequest) Reset() { *m = AnnotateImageRequest{} }
func (m *AnnotateImageRequest) String() string { return proto.CompactTextString(m) }
func (*AnnotateImageRequest) ProtoMessage() {}
func (*AnnotateImageRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{16} }
func (*AnnotateImageRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{17} }
func (m *AnnotateImageRequest) GetImage() *Image {
if m != nil {
@ -1047,8 +1116,7 @@ type AnnotateImageResponse struct {
LogoAnnotations []*EntityAnnotation `protobuf:"bytes,3,rep,name=logo_annotations,json=logoAnnotations" json:"logo_annotations,omitempty"`
// If present, label detection has completed successfully.
LabelAnnotations []*EntityAnnotation `protobuf:"bytes,4,rep,name=label_annotations,json=labelAnnotations" json:"label_annotations,omitempty"`
// If present, text (OCR) detection or document (OCR) text detection has
// completed successfully.
// If present, text (OCR) detection has completed successfully.
TextAnnotations []*EntityAnnotation `protobuf:"bytes,5,rep,name=text_annotations,json=textAnnotations" json:"text_annotations,omitempty"`
// If present, text (OCR) detection or document (OCR) text detection has
// completed successfully.
@ -1072,7 +1140,7 @@ type AnnotateImageResponse struct {
func (m *AnnotateImageResponse) Reset() { *m = AnnotateImageResponse{} }
func (m *AnnotateImageResponse) String() string { return proto.CompactTextString(m) }
func (*AnnotateImageResponse) ProtoMessage() {}
func (*AnnotateImageResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{17} }
func (*AnnotateImageResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{18} }
func (m *AnnotateImageResponse) GetFaceAnnotations() []*FaceAnnotation {
if m != nil {
@ -1160,7 +1228,7 @@ type BatchAnnotateImagesRequest struct {
func (m *BatchAnnotateImagesRequest) Reset() { *m = BatchAnnotateImagesRequest{} }
func (m *BatchAnnotateImagesRequest) String() string { return proto.CompactTextString(m) }
func (*BatchAnnotateImagesRequest) ProtoMessage() {}
func (*BatchAnnotateImagesRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{18} }
func (*BatchAnnotateImagesRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{19} }
func (m *BatchAnnotateImagesRequest) GetRequests() []*AnnotateImageRequest {
if m != nil {
@ -1178,7 +1246,7 @@ type BatchAnnotateImagesResponse struct {
func (m *BatchAnnotateImagesResponse) Reset() { *m = BatchAnnotateImagesResponse{} }
func (m *BatchAnnotateImagesResponse) String() string { return proto.CompactTextString(m) }
func (*BatchAnnotateImagesResponse) ProtoMessage() {}
func (*BatchAnnotateImagesResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{19} }
func (*BatchAnnotateImagesResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{20} }
func (m *BatchAnnotateImagesResponse) GetResponses() []*AnnotateImageResponse {
if m != nil {
@ -1204,6 +1272,7 @@ func init() {
proto.RegisterType((*CropHint)(nil), "google.cloud.vision.v1.CropHint")
proto.RegisterType((*CropHintsAnnotation)(nil), "google.cloud.vision.v1.CropHintsAnnotation")
proto.RegisterType((*CropHintsParams)(nil), "google.cloud.vision.v1.CropHintsParams")
proto.RegisterType((*WebDetectionParams)(nil), "google.cloud.vision.v1.WebDetectionParams")
proto.RegisterType((*ImageContext)(nil), "google.cloud.vision.v1.ImageContext")
proto.RegisterType((*AnnotateImageRequest)(nil), "google.cloud.vision.v1.AnnotateImageRequest")
proto.RegisterType((*AnnotateImageResponse)(nil), "google.cloud.vision.v1.AnnotateImageResponse")
@ -1291,148 +1360,154 @@ var _ImageAnnotator_serviceDesc = grpc.ServiceDesc{
func init() { proto.RegisterFile("google/cloud/vision/v1/image_annotator.proto", fileDescriptor1) }
var fileDescriptor1 = []byte{
// 2281 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x59, 0x4b, 0x73, 0x23, 0x49,
0xf1, 0x5f, 0xc9, 0x2f, 0x29, 0xf5, 0x6a, 0x97, 0x1f, 0xa3, 0xb1, 0xe7, 0xe1, 0xed, 0xfd, 0xcf,
0x1f, 0xc7, 0x30, 0xd8, 0x8c, 0x67, 0x21, 0x96, 0x9d, 0x09, 0x40, 0x92, 0xdb, 0xb6, 0x62, 0x64,
0x49, 0x5b, 0x92, 0xd7, 0x6b, 0x20, 0xe8, 0x68, 0xb7, 0x4a, 0x9a, 0x9e, 0x6d, 0x75, 0x35, 0xdd,
0xad, 0x19, 0xfb, 0x4a, 0x04, 0x11, 0xdc, 0xb9, 0x73, 0xe4, 0x4e, 0x04, 0x5f, 0x81, 0x03, 0x47,
0x62, 0xcf, 0xdc, 0xf8, 0x0c, 0x04, 0x47, 0xa2, 0x1e, 0xdd, 0x2a, 0x69, 0x2c, 0x8f, 0x4c, 0x70,
0x52, 0x57, 0x66, 0xfe, 0x7e, 0x59, 0x95, 0x55, 0x59, 0x59, 0x55, 0x82, 0x67, 0x03, 0x4a, 0x07,
0x2e, 0xd9, 0xb7, 0x5d, 0x3a, 0xea, 0xed, 0xbf, 0x73, 0x42, 0x87, 0x7a, 0xfb, 0xef, 0x9e, 0xef,
0x3b, 0x43, 0x6b, 0x40, 0x4c, 0xcb, 0xf3, 0x68, 0x64, 0x45, 0x34, 0xd8, 0xf3, 0x03, 0x1a, 0x51,
0xb4, 0x29, 0xac, 0xf7, 0xb8, 0xf5, 0x9e, 0xb0, 0xde, 0x7b, 0xf7, 0x7c, 0xeb, 0x81, 0x64, 0xb1,
0x7c, 0x67, 0x5f, 0x62, 0x1c, 0xea, 0x85, 0x02, 0xb5, 0xf5, 0x64, 0x86, 0x8f, 0x01, 0xa1, 0x43,
0x12, 0x05, 0xd7, 0xd2, 0x6c, 0x56, 0x57, 0x22, 0x72, 0x15, 0x99, 0x63, 0x56, 0x69, 0xfd, 0x74,
0x86, 0xf5, 0x7b, 0x72, 0x69, 0xf6, 0x48, 0x44, 0x6c, 0xc5, 0xf6, 0x9e, 0xb4, 0x0d, 0x7c, 0x7b,
0x3f, 0x8c, 0xac, 0x68, 0x14, 0x4e, 0x29, 0xa2, 0x6b, 0x9f, 0xec, 0xdb, 0xd4, 0x8d, 0x07, 0xba,
0x55, 0x56, 0x15, 0xae, 0x15, 0xb9, 0xde, 0x40, 0x68, 0xf4, 0x7f, 0xa4, 0x61, 0xe5, 0x88, 0x58,
0xd1, 0x28, 0x20, 0xe8, 0x0b, 0x58, 0x64, 0x06, 0xe5, 0xd4, 0x4e, 0x6a, 0xb7, 0x78, 0xf0, 0x7f,
0x7b, 0x37, 0x47, 0x67, 0x4f, 0x9a, 0xef, 0x75, 0xaf, 0x7d, 0x82, 0x39, 0x02, 0x3d, 0x86, 0xdc,
0xd0, 0xba, 0x32, 0x03, 0x12, 0x8e, 0xdc, 0x28, 0x2c, 0xa7, 0x77, 0x52, 0xbb, 0x4b, 0x18, 0x86,
0xd6, 0x15, 0x16, 0x12, 0xfd, 0x5f, 0x29, 0x58, 0x64, 0xf6, 0x68, 0x1d, 0xb4, 0xee, 0x45, 0xdb,
0x30, 0xcf, 0x9a, 0x9d, 0xb6, 0x51, 0xab, 0x1f, 0xd5, 0x8d, 0x43, 0xed, 0x13, 0x84, 0xa0, 0x78,
0x54, 0xa9, 0x19, 0xe6, 0xa1, 0xd1, 0x35, 0x6a, 0xdd, 0x7a, 0xab, 0xa9, 0xa5, 0xd0, 0x26, 0xa0,
0x46, 0xa5, 0x79, 0x78, 0x5a, 0xc1, 0xaf, 0x15, 0x79, 0x9a, 0xd9, 0x36, 0x5a, 0xc7, 0x2d, 0x45,
0xb6, 0x80, 0xd6, 0xa0, 0xd4, 0xa8, 0x54, 0x8d, 0x86, 0x22, 0x5c, 0x64, 0x86, 0x5d, 0xe3, 0x9b,
0xae, 0x22, 0x5b, 0x42, 0xdb, 0x70, 0xef, 0xb0, 0x55, 0x3b, 0x3b, 0x35, 0x9a, 0x5d, 0x73, 0x4a,
0x99, 0x43, 0xf7, 0x61, 0xa3, 0x53, 0x39, 0x32, 0xcc, 0x8e, 0x51, 0xc1, 0xb5, 0x13, 0x45, 0xb5,
0xcc, 0xba, 0x5d, 0x3f, 0xad, 0x1c, 0x1b, 0x66, 0x1b, 0xb7, 0xda, 0x06, 0xee, 0xd6, 0x8d, 0x8e,
0xb6, 0x82, 0x8a, 0x00, 0x35, 0xdc, 0x6a, 0x9b, 0x27, 0xf5, 0x66, 0xb7, 0xa3, 0x65, 0xd1, 0x2a,
0x14, 0xce, 0x8d, 0xaa, 0x02, 0x04, 0xbd, 0x09, 0xb9, 0x3a, 0x5b, 0x7b, 0x1d, 0x3a, 0x0a, 0x6c,
0x82, 0x74, 0x28, 0x0c, 0xec, 0xd0, 0x14, 0xcb, 0x71, 0x14, 0x38, 0x3c, 0xd6, 0x59, 0x9c, 0x1b,
0xd8, 0x21, 0x37, 0x3b, 0x0b, 0x1c, 0xb4, 0x0d, 0xd9, 0xb1, 0x3e, 0xcd, 0xf5, 0x19, 0x47, 0x2a,
0xf5, 0x5f, 0xc3, 0x12, 0x37, 0x44, 0x65, 0x58, 0xb1, 0xa9, 0x17, 0x11, 0x2f, 0xe2, 0x1c, 0x79,
0x1c, 0x37, 0xd1, 0x4b, 0x58, 0x0e, 0xb9, 0x37, 0x0e, 0xce, 0x1d, 0x7c, 0x36, 0x6b, 0x22, 0x95,
0x8e, 0x61, 0x09, 0xd1, 0xff, 0x5e, 0x82, 0xe2, 0x91, 0x65, 0x93, 0x4a, 0xb2, 0x40, 0x51, 0x1d,
0x0a, 0x97, 0x74, 0xe4, 0xf5, 0x1c, 0x6f, 0x60, 0xfa, 0xd4, 0xbd, 0xe6, 0xfe, 0x72, 0xb3, 0xd7,
0x47, 0x55, 0x1a, 0xb7, 0xa9, 0x7b, 0x8d, 0xf3, 0x97, 0x4a, 0x0b, 0x35, 0x41, 0xeb, 0xf7, 0xcc,
0x49, 0xb6, 0xf4, 0x1d, 0xd8, 0x8a, 0xfd, 0x9e, 0xda, 0x46, 0xa7, 0x90, 0x75, 0x2d, 0xaf, 0x37,
0xb4, 0x82, 0x6f, 0xc3, 0xf2, 0xc2, 0xce, 0xc2, 0x6e, 0xee, 0x60, 0x7f, 0xe6, 0xb2, 0x9d, 0x18,
0xd5, 0x5e, 0x43, 0xe2, 0xf0, 0x98, 0x01, 0x3d, 0x04, 0x08, 0xa8, 0xeb, 0x9a, 0x96, 0x37, 0x70,
0x49, 0x79, 0x71, 0x27, 0xb5, 0x9b, 0xc6, 0x59, 0x26, 0xa9, 0x30, 0x01, 0x9b, 0x18, 0xdf, 0xf2,
0xa4, 0x76, 0x89, 0x6b, 0x33, 0xbe, 0xe5, 0x09, 0xe5, 0x43, 0x80, 0xc8, 0x71, 0x23, 0xa9, 0x5d,
0x16, 0x58, 0x26, 0x11, 0xea, 0xe7, 0xb0, 0x9e, 0xa4, 0xb1, 0x69, 0x53, 0xaf, 0xef, 0xf4, 0x88,
0x67, 0x93, 0xf2, 0x0a, 0x37, 0x5c, 0x4b, 0x74, 0xb5, 0x44, 0x85, 0x7e, 0x04, 0x9b, 0x71, 0xd7,
0x58, 0xb0, 0x14, 0x50, 0x86, 0x83, 0x36, 0x14, 0xad, 0x02, 0xab, 0x43, 0xf1, 0x2d, 0xbd, 0x36,
0x5d, 0xe7, 0x5b, 0xe2, 0x3a, 0x6f, 0x28, 0xed, 0x95, 0xb3, 0x3c, 0x9f, 0xf5, 0x59, 0x81, 0x69,
0x24, 0x96, 0xb8, 0xf0, 0x96, 0x5e, 0x8f, 0x9b, 0xa8, 0x05, 0xab, 0x21, 0x0d, 0x02, 0xfa, 0x5e,
0x65, 0x83, 0xb9, 0xd9, 0x34, 0x01, 0x56, 0x08, 0x4f, 0x41, 0xb3, 0xbc, 0x01, 0x09, 0x54, 0xbe,
0xdc, 0xdc, 0x7c, 0x25, 0x8e, 0x55, 0xe8, 0x3a, 0xb0, 0x16, 0x8e, 0x02, 0x3f, 0x70, 0x42, 0xa2,
0x32, 0xe6, 0xe7, 0x66, 0x44, 0x31, 0x5c, 0x21, 0xfd, 0x15, 0x94, 0x47, 0x5e, 0x8f, 0x04, 0x26,
0xb9, 0xf2, 0x69, 0x48, 0x7a, 0x2a, 0x73, 0x61, 0x6e, 0xe6, 0x4d, 0xce, 0x61, 0x08, 0x0a, 0x85,
0xfd, 0x2b, 0x40, 0x97, 0xee, 0x28, 0x08, 0x26, 0x79, 0x8b, 0x73, 0xf3, 0xae, 0x4a, 0xf4, 0x64,
0x14, 0xde, 0x10, 0xab, 0xf7, 0x9e, 0x58, 0x13, 0x71, 0x2d, 0xcd, 0x1f, 0x85, 0x18, 0x3e, 0x96,
0x6d, 0xfd, 0x6d, 0x05, 0x32, 0x71, 0x8a, 0xa0, 0x13, 0x59, 0x18, 0x16, 0x38, 0xe5, 0xe7, 0x77,
0xcc, 0x30, 0xb5, 0x50, 0xbc, 0x82, 0x8c, 0x4f, 0x43, 0x87, 0xe9, 0x79, 0x7e, 0xe5, 0x0e, 0x76,
0x66, 0xb1, 0xb5, 0xa5, 0x1d, 0x4e, 0x10, 0xfa, 0x5f, 0x96, 0xc7, 0x55, 0xe4, 0xac, 0xf9, 0xba,
0xd9, 0x3a, 0x6f, 0x9a, 0x71, 0x8d, 0xd0, 0x3e, 0x41, 0x79, 0xc8, 0x34, 0x8c, 0xa3, 0xae, 0x69,
0x5c, 0x18, 0x5a, 0x0a, 0x15, 0x20, 0x8b, 0xeb, 0xc7, 0x27, 0xa2, 0x99, 0x46, 0x65, 0x58, 0xe7,
0xca, 0xd6, 0x91, 0x19, 0x1b, 0x55, 0x71, 0xeb, 0x5c, 0x5b, 0x60, 0xdb, 0xbe, 0x30, 0x9c, 0x56,
0x2d, 0x32, 0x55, 0x0c, 0x4a, 0xb8, 0xb8, 0x6a, 0x09, 0x6d, 0xc1, 0x66, 0x82, 0x9a, 0xd4, 0x2d,
0x33, 0xd8, 0x69, 0xfd, 0xb0, 0xdd, 0xaa, 0x37, 0xbb, 0x66, 0xd5, 0xe8, 0x9e, 0x1b, 0x46, 0x93,
0x69, 0x59, 0xc9, 0xc8, 0x43, 0xa6, 0xd9, 0xea, 0x18, 0x66, 0xb7, 0xde, 0xd6, 0x32, 0xac, 0x8f,
0x67, 0xed, 0xb6, 0x81, 0xcd, 0x46, 0xbd, 0xad, 0x65, 0x59, 0xb3, 0xd1, 0x3a, 0x97, 0x4d, 0x60,
0xe5, 0xe5, 0xb4, 0x75, 0xd6, 0x3d, 0xe1, 0xbd, 0xd2, 0x72, 0xa8, 0x04, 0x39, 0xd1, 0xe6, 0xfe,
0xb4, 0x3c, 0xd2, 0x20, 0x2f, 0x04, 0x35, 0xa3, 0xd9, 0x35, 0xb0, 0x56, 0x40, 0x1b, 0xb0, 0xca,
0xe9, 0xab, 0xad, 0x6e, 0xb7, 0x75, 0x2a, 0x0d, 0x8b, 0x2c, 0x5e, 0xaa, 0x98, 0xf3, 0x95, 0x58,
0x85, 0x55, 0xa5, 0x92, 0x44, 0x4b, 0x46, 0x6d, 0x5c, 0x18, 0x66, 0xb7, 0xd5, 0x36, 0xab, 0xad,
0xb3, 0xe6, 0x61, 0x05, 0x5f, 0x68, 0xab, 0x13, 0x2a, 0x31, 0xea, 0x5a, 0x0b, 0x37, 0x0d, 0xac,
0x21, 0xf4, 0x00, 0xca, 0x89, 0x4a, 0x32, 0x26, 0xc0, 0xb5, 0x24, 0xfc, 0x4c, 0xcb, 0x3f, 0x24,
0x6e, 0x7d, 0x1c, 0xc8, 0x0f, 0xdc, 0x6d, 0x4c, 0xea, 0x26, 0xfc, 0x6d, 0xa2, 0x87, 0x70, 0x7f,
0xac, 0x9b, 0x76, 0x78, 0x6f, 0x3c, 0xab, 0xd3, 0x1e, 0xcb, 0xe8, 0x31, 0x6c, 0xab, 0xf3, 0x6c,
0x8a, 0x29, 0x88, 0x67, 0x4c, 0xbb, 0x8f, 0x76, 0xe0, 0xc1, 0xc4, 0x94, 0x4e, 0x5b, 0x6c, 0xb1,
0x80, 0x0a, 0x8a, 0x0a, 0x36, 0xbb, 0xb8, 0x72, 0xcc, 0x8a, 0xfd, 0x36, 0x8b, 0xbe, 0xc4, 0x29,
0xe2, 0x07, 0xfc, 0xc4, 0x12, 0x8f, 0xbd, 0x7d, 0xd6, 0xae, 0x37, 0xb4, 0x87, 0xec, 0xc4, 0x32,
0xee, 0x9e, 0x10, 0x3e, 0x62, 0xf8, 0xa3, 0x16, 0x36, 0x4e, 0x8c, 0xca, 0xa1, 0x79, 0xcc, 0x0f,
0x34, 0x8d, 0x8a, 0xf6, 0x98, 0x1d, 0x2b, 0x6a, 0x27, 0xf5, 0xa6, 0x79, 0xdc, 0xac, 0x74, 0x4f,
0x18, 0xe5, 0x0e, 0xf3, 0xcf, 0x45, 0x9c, 0xf7, 0xb8, 0xd5, 0x64, 0xd2, 0x4f, 0x19, 0x9e, 0x4b,
0x05, 0xb3, 0x14, 0xeb, 0xfa, 0x2b, 0xc8, 0x37, 0xa8, 0xcd, 0x93, 0xb2, 0xee, 0xf5, 0x29, 0x7a,
0x06, 0x2b, 0xae, 0x15, 0x99, 0xae, 0x37, 0x90, 0xa5, 0x7c, 0x2d, 0xce, 0x41, 0x96, 0xa3, 0x7b,
0x0d, 0x2b, 0x6a, 0x78, 0x03, 0xbc, 0xec, 0xf2, 0x5f, 0xfd, 0x73, 0xc8, 0xb4, 0x03, 0xea, 0x93,
0x20, 0xba, 0x46, 0x08, 0x16, 0x3d, 0x6b, 0x48, 0xe4, 0xa9, 0x85, 0x7f, 0xa3, 0x75, 0x58, 0x7a,
0x67, 0xb9, 0x23, 0x22, 0x8f, 0x2a, 0xa2, 0xa1, 0xff, 0x6e, 0x01, 0x34, 0xc3, 0x8b, 0x9c, 0xe8,
0x5a, 0x39, 0x49, 0x68, 0xb0, 0x30, 0x74, 0x7a, 0x12, 0xcd, 0x3e, 0xd1, 0x26, 0x2c, 0xbb, 0xd4,
0xb6, 0xdc, 0x18, 0x2d, 0x5b, 0x68, 0x07, 0x72, 0x3d, 0x12, 0xda, 0x81, 0xe3, 0xf3, 0xad, 0x62,
0x41, 0x9c, 0x92, 0x14, 0x11, 0x73, 0x1b, 0xda, 0x34, 0x88, 0xcb, 0xb4, 0x68, 0xa0, 0x47, 0x00,
0x4a, 0x9d, 0x14, 0x35, 0x5a, 0x91, 0x30, 0x7d, 0x44, 0x7d, 0xc7, 0xb6, 0x5c, 0x27, 0xba, 0x96,
0x55, 0x5a, 0x91, 0x7c, 0x78, 0xd6, 0x59, 0xf9, 0xaf, 0xcf, 0x3a, 0x55, 0xc8, 0xba, 0x32, 0xea,
0x61, 0x39, 0xc3, 0xcf, 0x26, 0x33, 0x69, 0xd4, 0xe9, 0xc1, 0x63, 0x18, 0xfa, 0x39, 0x80, 0x2f,
0x62, 0xef, 0x90, 0xb0, 0x9c, 0xe5, 0x24, 0xb3, 0x37, 0x4c, 0x39, 0x4b, 0x58, 0xc1, 0xe8, 0xbf,
0x4f, 0xc3, 0x7a, 0xc7, 0xea, 0x93, 0x0e, 0xb1, 0x02, 0xfb, 0x8d, 0x32, 0x17, 0x5f, 0xc0, 0x92,
0xd5, 0x1b, 0xb9, 0x91, 0x3c, 0xed, 0xcf, 0x53, 0x27, 0x04, 0x80, 0x21, 0x43, 0x9f, 0xd2, 0x3e,
0x9f, 0xb2, 0x39, 0x91, 0x1c, 0x80, 0x5e, 0xc1, 0xca, 0x90, 0xf4, 0x58, 0xac, 0x65, 0x29, 0x99,
0x07, 0x1b, 0x43, 0xd0, 0x4f, 0x21, 0xf3, 0xce, 0xa1, 0x2e, 0x9f, 0xd9, 0xc5, 0xb9, 0xe1, 0x09,
0x46, 0x7f, 0x0f, 0x39, 0xb6, 0xb4, 0xa9, 0x37, 0xc0, 0xc4, 0x8e, 0xd0, 0x0b, 0xc8, 0x0d, 0x1d,
0xcf, 0x9c, 0x23, 0x13, 0xb2, 0x43, 0xc7, 0x13, 0x9f, 0x1c, 0x64, 0x5d, 0x25, 0xa0, 0xf4, 0x6d,
0x20, 0xeb, 0x4a, 0x7c, 0xea, 0x01, 0x64, 0x6b, 0xec, 0x32, 0xc6, 0x93, 0x6f, 0x17, 0x96, 0xf8,
0xcd, 0x4c, 0x3a, 0x44, 0x13, 0x58, 0x6e, 0x86, 0x85, 0xc1, 0x78, 0x85, 0xa7, 0xd5, 0x15, 0xfe,
0x04, 0x8a, 0xbe, 0x73, 0x45, 0x5c, 0xb3, 0x1f, 0x58, 0x76, 0x92, 0x1c, 0x69, 0x5c, 0xe0, 0xd2,
0x23, 0x29, 0xd4, 0xcf, 0xa0, 0x7c, 0x48, 0x87, 0x8e, 0x67, 0x79, 0x11, 0x27, 0x0d, 0x95, 0xa9,
0xff, 0x09, 0x2c, 0x73, 0x0f, 0x61, 0x39, 0xc5, 0x57, 0xd4, 0xa7, 0xb3, 0xc2, 0x98, 0xf4, 0x1a,
0x4b, 0x80, 0xee, 0x42, 0x89, 0xdf, 0x1a, 0xda, 0xc9, 0x0a, 0x43, 0x17, 0x50, 0xea, 0x49, 0x4f,
0x66, 0x42, 0xcb, 0x86, 0xf6, 0xc3, 0x59, 0xb4, 0xb3, 0x3a, 0x86, 0x8b, 0xbd, 0x09, 0x8d, 0xfe,
0xa7, 0x14, 0x64, 0x6a, 0x01, 0xf5, 0x4f, 0x1c, 0x2f, 0xfa, 0x5f, 0x5e, 0x43, 0x26, 0x77, 0x89,
0xf4, 0x07, 0xbb, 0xc4, 0x3e, 0xac, 0x39, 0x43, 0x9f, 0x06, 0x91, 0xe5, 0xd9, 0x64, 0x3a, 0xd0,
0x68, 0xac, 0x4a, 0xa2, 0xfd, 0x35, 0xac, 0xc5, 0xfd, 0x54, 0x03, 0xfd, 0x33, 0x00, 0x3b, 0xa0,
0xbe, 0xf9, 0x86, 0xc9, 0x65, 0xb0, 0x67, 0xa6, 0x6f, 0x4c, 0x80, 0xb3, 0x76, 0x4c, 0xa5, 0xff,
0x18, 0x4a, 0x09, 0x6f, 0xdb, 0x0a, 0xac, 0x61, 0x88, 0x3e, 0x83, 0x82, 0x15, 0xfa, 0xc4, 0x8e,
0xcc, 0x80, 0x39, 0x11, 0xb4, 0x69, 0x9c, 0x17, 0x42, 0xcc, 0x65, 0xfa, 0x77, 0x29, 0xc8, 0xf3,
0x79, 0xaa, 0xb1, 0x3b, 0xe1, 0x55, 0x84, 0x8e, 0xa1, 0xc0, 0xd7, 0x2c, 0xf5, 0x06, 0x66, 0x40,
0xec, 0x48, 0x06, 0x6f, 0xe6, 0xd5, 0x50, 0x49, 0x14, 0x9c, 0x73, 0x95, 0xac, 0x79, 0x02, 0x45,
0xd7, 0xf2, 0x06, 0x23, 0x76, 0x3f, 0x15, 0xc3, 0x4a, 0xef, 0x2c, 0xec, 0x66, 0x71, 0x21, 0x96,
0xf2, 0xbe, 0xa2, 0x0e, 0xac, 0x8e, 0x47, 0x6e, 0xfa, 0xbc, 0xeb, 0xf2, 0xc0, 0xf7, 0xbd, 0x8f,
0x05, 0x40, 0x8e, 0x14, 0x97, 0xec, 0x49, 0x01, 0x1b, 0xd5, 0xba, 0x8c, 0x2e, 0xe1, 0xa3, 0xc3,
0xe4, 0x37, 0x23, 0x12, 0xb2, 0x54, 0x5e, 0xe2, 0x17, 0x64, 0x39, 0xaa, 0x87, 0xb7, 0x5e, 0x78,
0xb1, 0xb0, 0x45, 0x2f, 0x21, 0xd3, 0x17, 0x2f, 0x19, 0x62, 0x0c, 0xb9, 0x83, 0xc7, 0x1f, 0x79,
0xf1, 0xc0, 0x09, 0x80, 0x2d, 0x46, 0x71, 0x47, 0xb7, 0x45, 0x80, 0xf9, 0xda, 0xb8, 0x65, 0x31,
0xaa, 0x93, 0x81, 0xf3, 0x8e, 0xd2, 0xd2, 0xff, 0xba, 0x02, 0x1b, 0x53, 0xa3, 0x0a, 0x7d, 0xea,
0x85, 0x04, 0x7d, 0x05, 0x5a, 0xdf, 0xb2, 0x89, 0xf2, 0x58, 0x14, 0x2f, 0xa2, 0xff, 0x9f, 0xef,
0x08, 0x8e, 0x4b, 0xfd, 0x89, 0x76, 0x88, 0x7e, 0x09, 0xeb, 0xf1, 0xad, 0x71, 0x82, 0x56, 0x04,
0x60, 0x77, 0x16, 0xed, 0x74, 0x25, 0xc7, 0x6b, 0x31, 0x8b, 0x4a, 0xde, 0x01, 0xcd, 0xa5, 0x03,
0x3a, 0x41, 0xbc, 0x70, 0x47, 0xe2, 0x12, 0x63, 0x50, 0x49, 0xcf, 0x60, 0xd5, 0xb5, 0x2e, 0x89,
0x3b, 0xc1, 0xba, 0x78, 0x47, 0x56, 0x8d, 0x53, 0x4c, 0xf5, 0x75, 0xea, 0x21, 0x2e, 0x2c, 0x2f,
0xdd, 0xb5, 0xaf, 0x8c, 0x41, 0x25, 0xfd, 0x06, 0xd6, 0xfb, 0x23, 0xd7, 0x35, 0xa7, 0x98, 0xf9,
0x85, 0xf4, 0x96, 0x49, 0xeb, 0x4e, 0xd0, 0x60, 0xc4, 0x38, 0x26, 0x65, 0xe8, 0x12, 0x36, 0x43,
0xab, 0x4f, 0xcc, 0x90, 0x97, 0x71, 0x95, 0x7b, 0x99, 0x73, 0x3f, 0x9b, 0xc5, 0x7d, 0x53, 0xed,
0xc7, 0xeb, 0xe1, 0x4d, 0x27, 0x82, 0x01, 0x6c, 0x8b, 0x35, 0x3d, 0x3e, 0x3e, 0xa8, 0x8e, 0x32,
0xb7, 0x67, 0xef, 0x54, 0x59, 0xc0, 0xf7, 0x9d, 0x49, 0x81, 0xe2, 0xc8, 0x84, 0x0d, 0x65, 0x73,
0x50, 0x5c, 0xe4, 0xb8, 0x8b, 0xef, 0x7f, 0x74, 0x83, 0x50, 0x17, 0xa2, 0x7d, 0xc3, 0xbe, 0x5b,
0x87, 0xc2, 0xc4, 0xbb, 0x29, 0xbf, 0xb7, 0xdf, 0x92, 0x9d, 0xe7, 0xe4, 0xf2, 0x30, 0xb6, 0xc5,
0xf9, 0xf7, 0x4a, 0x8b, 0x95, 0x6b, 0x12, 0x04, 0x34, 0xe0, 0x8f, 0x28, 0x4a, 0xb9, 0x0e, 0x7c,
0x7b, 0xaf, 0xc3, 0xdf, 0x5e, 0xb1, 0x30, 0xd0, 0xfb, 0xb0, 0x55, 0xb5, 0xa2, 0x24, 0xa2, 0x22,
0x97, 0xc3, 0x78, 0x8b, 0x3a, 0x81, 0x4c, 0x20, 0x3e, 0xe3, 0x1c, 0x9e, 0x39, 0x65, 0x37, 0x6d,
0x71, 0x38, 0x41, 0xeb, 0x6f, 0x61, 0xfb, 0x46, 0x3f, 0x72, 0xd3, 0x78, 0x0d, 0xd9, 0x40, 0x7e,
0xc7, 0x9e, 0x7e, 0x30, 0xa7, 0x27, 0x81, 0xc2, 0x63, 0xfc, 0x53, 0x02, 0xa0, 0x3c, 0x34, 0xe4,
0x60, 0x45, 0xde, 0xba, 0xb5, 0x4f, 0xd8, 0xa5, 0xe4, 0x6b, 0x03, 0x5f, 0x98, 0x67, 0xcd, 0x46,
0xfd, 0xb5, 0xd1, 0xb8, 0xd0, 0x52, 0xec, 0x6e, 0x9b, 0xb4, 0xd2, 0xac, 0xd5, 0x6e, 0x75, 0x3a,
0xf5, 0x6a, 0xc3, 0xd0, 0x16, 0x10, 0xc0, 0xb2, 0xd4, 0x2c, 0xb2, 0x7b, 0x2c, 0x87, 0x4a, 0xc1,
0xd2, 0xc1, 0x9f, 0x53, 0x50, 0xe4, 0x7d, 0xa8, 0xc4, 0x0f, 0xf4, 0xe8, 0x8f, 0x29, 0x58, 0xbb,
0x61, 0x98, 0xe8, 0x60, 0x66, 0xb9, 0x9f, 0x19, 0xfb, 0xad, 0x17, 0x77, 0xc2, 0x88, 0xb1, 0xeb,
0x8f, 0x7e, 0xfb, 0xdd, 0x3f, 0xff, 0x90, 0x2e, 0xeb, 0x6b, 0xc9, 0xdf, 0x07, 0xe1, 0x97, 0x72,
0xa9, 0x92, 0x2f, 0x53, 0x4f, 0xab, 0x11, 0x6c, 0xd9, 0x74, 0x38, 0x83, 0xb9, 0xba, 0x36, 0x39,
0x9c, 0x76, 0x40, 0x23, 0xda, 0x4e, 0xfd, 0xe2, 0x95, 0x34, 0x1f, 0x50, 0x56, 0x2e, 0xf7, 0x68,
0x30, 0xd8, 0x1f, 0x10, 0x8f, 0xbf, 0xc4, 0xef, 0x0b, 0x95, 0xe5, 0x3b, 0xe1, 0xf4, 0x9f, 0x00,
0x2f, 0xc5, 0xd7, 0xbf, 0x53, 0xa9, 0xcb, 0x65, 0x6e, 0xfb, 0xe2, 0x3f, 0x01, 0x00, 0x00, 0xff,
0xff, 0xe5, 0x59, 0xbe, 0xb0, 0xe8, 0x18, 0x00, 0x00,
// 2382 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x59, 0x4f, 0x6f, 0xe3, 0xc6,
0x15, 0x8f, 0xe4, 0x7f, 0xd2, 0x93, 0x2c, 0xd1, 0x23, 0xaf, 0xa3, 0xf5, 0xee, 0x66, 0x1d, 0xa6,
0x69, 0x8d, 0x6d, 0x2a, 0x37, 0x4e, 0x1a, 0xa4, 0xc9, 0xa2, 0xad, 0x24, 0xd3, 0xb6, 0xb0, 0xb2,
0xa4, 0x8c, 0xe4, 0x38, 0x6e, 0x83, 0x12, 0x34, 0x35, 0xd2, 0x32, 0xa1, 0x38, 0x2c, 0x49, 0xed,
0xda, 0xd7, 0x02, 0xfd, 0x04, 0xbd, 0xf7, 0xd8, 0x7b, 0x80, 0x7e, 0x80, 0x5e, 0x7a, 0xe8, 0xb1,
0xc8, 0x57, 0xe8, 0x37, 0x28, 0x50, 0xf4, 0x58, 0xcc, 0x1f, 0x52, 0x43, 0xad, 0xb5, 0x2b, 0x17,
0x3d, 0x89, 0xf3, 0xde, 0xfb, 0xfd, 0xde, 0xcc, 0x9b, 0x79, 0x33, 0x6f, 0x46, 0xf0, 0xc1, 0x98,
0xd2, 0xb1, 0x4b, 0x0e, 0x6c, 0x97, 0x4e, 0x87, 0x07, 0x2f, 0x9c, 0xd0, 0xa1, 0xde, 0xc1, 0x8b,
0x0f, 0x0f, 0x9c, 0x89, 0x35, 0x26, 0xa6, 0xe5, 0x79, 0x34, 0xb2, 0x22, 0x1a, 0xd4, 0xfc, 0x80,
0x46, 0x14, 0xed, 0x08, 0xeb, 0x1a, 0xb7, 0xae, 0x09, 0xeb, 0xda, 0x8b, 0x0f, 0x77, 0x1f, 0x4a,
0x16, 0xcb, 0x77, 0x0e, 0x24, 0xc6, 0xa1, 0x5e, 0x28, 0x50, 0xbb, 0xef, 0x2f, 0xf0, 0x31, 0x26,
0x74, 0x42, 0xa2, 0xe0, 0x46, 0x9a, 0x2d, 0xea, 0x4a, 0x44, 0xae, 0x23, 0x73, 0xc6, 0x2a, 0xad,
0x9f, 0x2c, 0xb0, 0x7e, 0x49, 0xae, 0xcc, 0x21, 0x89, 0x88, 0xad, 0xd8, 0xbe, 0x2d, 0x6d, 0x03,
0xdf, 0x3e, 0x08, 0x23, 0x2b, 0x9a, 0x86, 0x73, 0x8a, 0xe8, 0xc6, 0x27, 0x07, 0x36, 0x75, 0xe3,
0x81, 0xee, 0x56, 0x55, 0x85, 0x6b, 0x45, 0xae, 0x37, 0x16, 0x1a, 0xfd, 0x5f, 0x59, 0xd8, 0x38,
0x26, 0x56, 0x34, 0x0d, 0x08, 0xfa, 0x14, 0x56, 0x99, 0x41, 0x35, 0xb3, 0x97, 0xd9, 0x2f, 0x1d,
0xfe, 0xa0, 0x76, 0x7b, 0x74, 0x6a, 0xd2, 0xbc, 0x36, 0xb8, 0xf1, 0x09, 0xe6, 0x08, 0xf4, 0x18,
0x0a, 0x13, 0xeb, 0xda, 0x0c, 0x48, 0x38, 0x75, 0xa3, 0xb0, 0x9a, 0xdd, 0xcb, 0xec, 0xaf, 0x61,
0x98, 0x58, 0xd7, 0x58, 0x48, 0xd0, 0x36, 0xac, 0x4d, 0xe8, 0x90, 0xb8, 0xd5, 0x95, 0xbd, 0xcc,
0x7e, 0x1e, 0x8b, 0x86, 0xfe, 0xef, 0x0c, 0xac, 0x32, 0x16, 0xb4, 0x0d, 0xda, 0xe0, 0xb2, 0x67,
0x98, 0xe7, 0x9d, 0x7e, 0xcf, 0x68, 0xb6, 0x8e, 0x5b, 0xc6, 0x91, 0xf6, 0x16, 0x42, 0x50, 0x3a,
0xae, 0x37, 0x0d, 0xf3, 0xc8, 0x18, 0x18, 0xcd, 0x41, 0xab, 0xdb, 0xd1, 0x32, 0x68, 0x07, 0x50,
0xbb, 0xde, 0x39, 0x3a, 0xab, 0xe3, 0x67, 0x8a, 0x3c, 0xcb, 0x6c, 0xdb, 0xdd, 0x93, 0xae, 0x22,
0x5b, 0x41, 0x15, 0x28, 0xb7, 0xeb, 0x0d, 0xa3, 0xad, 0x08, 0x57, 0x99, 0xe1, 0xc0, 0xf8, 0x6a,
0xa0, 0xc8, 0xd6, 0xd0, 0x03, 0x78, 0xfb, 0xa8, 0xdb, 0x3c, 0x3f, 0x33, 0x3a, 0x03, 0x73, 0x4e,
0x59, 0x40, 0xf7, 0xe1, 0x5e, 0xbf, 0x7e, 0x6c, 0x98, 0x7d, 0xa3, 0x8e, 0x9b, 0xa7, 0x8a, 0x6a,
0x9d, 0x75, 0xbb, 0x75, 0x56, 0x3f, 0x31, 0xcc, 0x1e, 0xee, 0xf6, 0x0c, 0x3c, 0x68, 0x19, 0x7d,
0x6d, 0x03, 0x95, 0x00, 0x9a, 0xb8, 0xdb, 0x33, 0x4f, 0x5b, 0x9d, 0x41, 0x5f, 0xcb, 0xa3, 0x2d,
0xd8, 0xbc, 0x30, 0x1a, 0x0a, 0x10, 0xf4, 0x0e, 0x14, 0x5a, 0x6c, 0x45, 0xf6, 0xe9, 0x34, 0xb0,
0x09, 0xd2, 0x61, 0x73, 0x6c, 0x87, 0xa6, 0x58, 0xa4, 0xd3, 0xc0, 0xe1, 0x33, 0x90, 0xc7, 0x85,
0xb1, 0x1d, 0x72, 0xb3, 0xf3, 0xc0, 0x41, 0x0f, 0x20, 0x3f, 0xd3, 0x67, 0xb9, 0x3e, 0xe7, 0x48,
0xa5, 0xfe, 0x5b, 0x58, 0xe3, 0x86, 0xa8, 0x0a, 0x1b, 0x36, 0xf5, 0x22, 0xe2, 0x45, 0x9c, 0xa3,
0x88, 0xe3, 0x26, 0xfa, 0x1c, 0xd6, 0x43, 0xee, 0x8d, 0x83, 0x0b, 0x87, 0xef, 0x2d, 0x9a, 0x5e,
0xa5, 0x63, 0x58, 0x42, 0xf4, 0x7f, 0x94, 0xa1, 0x74, 0x6c, 0xd9, 0xa4, 0x9e, 0x2c, 0x5b, 0xd4,
0x82, 0xcd, 0x2b, 0x3a, 0xf5, 0x86, 0x8e, 0x37, 0x36, 0x7d, 0xea, 0xde, 0x70, 0x7f, 0x85, 0xc5,
0xab, 0xa6, 0x21, 0x8d, 0x7b, 0xd4, 0xbd, 0xc1, 0xc5, 0x2b, 0xa5, 0x85, 0x3a, 0xa0, 0x8d, 0x86,
0x66, 0x9a, 0x2d, 0x7b, 0x07, 0xb6, 0xd2, 0x68, 0xa8, 0xb6, 0xd1, 0x19, 0xe4, 0x5d, 0xcb, 0x1b,
0x4e, 0xac, 0xe0, 0xdb, 0xb0, 0xba, 0xb2, 0xb7, 0xb2, 0x5f, 0x38, 0x3c, 0x58, 0xb8, 0x98, 0x53,
0xa3, 0xaa, 0xb5, 0x25, 0x0e, 0xcf, 0x18, 0xd0, 0x23, 0x80, 0x80, 0xba, 0xae, 0x69, 0x79, 0x63,
0x97, 0x54, 0x57, 0xf7, 0x32, 0xfb, 0x59, 0x9c, 0x67, 0x92, 0x3a, 0x13, 0xb0, 0x89, 0xf1, 0x2d,
0x4f, 0x6a, 0xd7, 0xb8, 0x36, 0xe7, 0x5b, 0x9e, 0x50, 0x3e, 0x02, 0x88, 0x1c, 0x37, 0x92, 0xda,
0x75, 0x81, 0x65, 0x12, 0xa1, 0xfe, 0x10, 0xb6, 0x93, 0xe4, 0x36, 0x6d, 0xea, 0x8d, 0x9c, 0x21,
0xf1, 0x6c, 0x52, 0xdd, 0xe0, 0x86, 0x95, 0x44, 0xd7, 0x4c, 0x54, 0xe8, 0x67, 0xb0, 0x13, 0x77,
0x8d, 0x05, 0x4b, 0x01, 0xe5, 0x38, 0xe8, 0x9e, 0xa2, 0x55, 0x60, 0x2d, 0x28, 0x7d, 0x43, 0x6f,
0x4c, 0xd7, 0xf9, 0x96, 0xb8, 0xce, 0x73, 0x4a, 0x87, 0xd5, 0x3c, 0xcf, 0x72, 0x7d, 0x51, 0x60,
0xda, 0x89, 0x25, 0xde, 0xfc, 0x86, 0xde, 0xcc, 0x9a, 0xa8, 0x0b, 0x5b, 0x21, 0x0d, 0x02, 0xfa,
0x52, 0x65, 0x83, 0xa5, 0xd9, 0x34, 0x01, 0x56, 0x08, 0xcf, 0x40, 0xb3, 0xbc, 0x31, 0x09, 0x54,
0xbe, 0xc2, 0xd2, 0x7c, 0x65, 0x8e, 0x55, 0xe8, 0xfa, 0x50, 0x09, 0xa7, 0x81, 0x1f, 0x38, 0x21,
0x51, 0x19, 0x8b, 0x4b, 0x33, 0xa2, 0x18, 0xae, 0x90, 0x7e, 0x0d, 0xd5, 0xa9, 0x37, 0x24, 0x81,
0x49, 0xae, 0x7d, 0x1a, 0x92, 0xa1, 0xca, 0xbc, 0xb9, 0x34, 0xf3, 0x0e, 0xe7, 0x30, 0x04, 0x85,
0xc2, 0xfe, 0x05, 0xa0, 0x2b, 0x77, 0x1a, 0x04, 0x69, 0xde, 0xd2, 0xd2, 0xbc, 0x5b, 0x12, 0x9d,
0x8e, 0xc2, 0x73, 0x62, 0x0d, 0x5f, 0x12, 0x2b, 0x15, 0xd7, 0xf2, 0xf2, 0x51, 0x88, 0xe1, 0x33,
0xd9, 0xee, 0xdf, 0x37, 0x20, 0x17, 0xa7, 0x08, 0x3a, 0x95, 0xc7, 0xc5, 0x0a, 0xa7, 0xfc, 0xf8,
0x8e, 0x19, 0xa6, 0x1e, 0x1f, 0x4f, 0x21, 0xe7, 0xd3, 0xd0, 0x61, 0x7a, 0x9e, 0x5f, 0x85, 0xc3,
0xbd, 0x45, 0x6c, 0x3d, 0x69, 0x87, 0x13, 0x84, 0xfe, 0x97, 0xf5, 0xd9, 0x29, 0x72, 0xde, 0x79,
0xd6, 0xe9, 0x5e, 0x74, 0xcc, 0xf8, 0x8c, 0xd0, 0xde, 0x42, 0x45, 0xc8, 0xb5, 0x8d, 0xe3, 0x81,
0x69, 0x5c, 0x1a, 0x5a, 0x06, 0x6d, 0x42, 0x1e, 0xb7, 0x4e, 0x4e, 0x45, 0x33, 0x8b, 0xaa, 0xb0,
0xcd, 0x95, 0xdd, 0x63, 0x33, 0x36, 0x6a, 0xe0, 0xee, 0x85, 0xb6, 0xc2, 0xb6, 0x7d, 0x61, 0x38,
0xaf, 0x5a, 0x65, 0xaa, 0x18, 0x94, 0x70, 0x71, 0xd5, 0x1a, 0xda, 0x85, 0x9d, 0x04, 0x95, 0xd6,
0xad, 0x33, 0xd8, 0x59, 0xeb, 0xa8, 0xd7, 0x6d, 0x75, 0x06, 0x66, 0xc3, 0x18, 0x5c, 0x18, 0x46,
0x87, 0x69, 0xd9, 0x91, 0x51, 0x84, 0x5c, 0xa7, 0xdb, 0x37, 0xcc, 0x41, 0xab, 0xa7, 0xe5, 0x58,
0x1f, 0xcf, 0x7b, 0x3d, 0x03, 0x9b, 0xed, 0x56, 0x4f, 0xcb, 0xb3, 0x66, 0xbb, 0x7b, 0x21, 0x9b,
0xc0, 0x8e, 0x97, 0xb3, 0xee, 0xf9, 0xe0, 0x94, 0xf7, 0x4a, 0x2b, 0xa0, 0x32, 0x14, 0x44, 0x9b,
0xfb, 0xd3, 0x8a, 0x48, 0x83, 0xa2, 0x10, 0x34, 0x8d, 0xce, 0xc0, 0xc0, 0xda, 0x26, 0xba, 0x07,
0x5b, 0x9c, 0xbe, 0xd1, 0x1d, 0x0c, 0xba, 0x67, 0xd2, 0xb0, 0xc4, 0xe2, 0xa5, 0x8a, 0x39, 0x5f,
0x99, 0x9d, 0xb0, 0xaa, 0x54, 0x92, 0x68, 0xc9, 0xa8, 0x8d, 0x4b, 0xc3, 0x1c, 0x74, 0x7b, 0x66,
0xa3, 0x7b, 0xde, 0x39, 0xaa, 0xe3, 0x4b, 0x6d, 0x2b, 0xa5, 0x12, 0xa3, 0x6e, 0x76, 0x71, 0xc7,
0xc0, 0x1a, 0x42, 0x0f, 0xa1, 0x9a, 0xa8, 0x24, 0x63, 0x02, 0xac, 0x24, 0xe1, 0x67, 0x5a, 0xfe,
0x21, 0x71, 0xdb, 0xb3, 0x40, 0xbe, 0xe2, 0xee, 0x5e, 0x5a, 0x97, 0xf2, 0xb7, 0x83, 0x1e, 0xc1,
0xfd, 0x99, 0x6e, 0xde, 0xe1, 0xdb, 0xb3, 0x59, 0x9d, 0xf7, 0x58, 0x45, 0x8f, 0xe1, 0x81, 0x3a,
0xcf, 0xa6, 0x98, 0x82, 0x78, 0xc6, 0xb4, 0xfb, 0x68, 0x0f, 0x1e, 0xa6, 0xa6, 0x74, 0xde, 0x62,
0x97, 0x05, 0x54, 0x50, 0xd4, 0xb1, 0x39, 0xc0, 0xf5, 0x13, 0x76, 0xd8, 0x3f, 0x60, 0xd1, 0x97,
0x38, 0x45, 0xfc, 0x90, 0x57, 0x2c, 0xf1, 0xd8, 0x7b, 0xe7, 0xbd, 0x56, 0x5b, 0x7b, 0xc4, 0x2a,
0x96, 0x59, 0xf7, 0x84, 0xf0, 0x1d, 0x86, 0x3f, 0xee, 0x62, 0xe3, 0xd4, 0xa8, 0x1f, 0x99, 0x27,
0xbc, 0xa0, 0x69, 0xd7, 0xb5, 0xc7, 0xac, 0xac, 0x68, 0x9e, 0xb6, 0x3a, 0xe6, 0x49, 0xa7, 0x3e,
0x38, 0x65, 0x94, 0x7b, 0xcc, 0x3f, 0x17, 0x71, 0xde, 0x93, 0x6e, 0x87, 0x49, 0xdf, 0x65, 0x78,
0x2e, 0x15, 0xcc, 0x52, 0xac, 0xeb, 0x4f, 0xa1, 0xd8, 0xa6, 0x36, 0x4f, 0xca, 0x96, 0x37, 0xa2,
0xe8, 0x03, 0xd8, 0x70, 0xad, 0xc8, 0x74, 0xbd, 0xb1, 0x3c, 0xca, 0x2b, 0x71, 0x0e, 0xb2, 0x1c,
0xad, 0xb5, 0xad, 0xa8, 0xed, 0x8d, 0xf1, 0xba, 0xcb, 0x7f, 0xf5, 0x0b, 0xc8, 0xf5, 0x02, 0xea,
0x93, 0x20, 0xba, 0x41, 0x08, 0x56, 0x3d, 0x6b, 0x42, 0x64, 0xd5, 0xc2, 0xbf, 0x59, 0xc1, 0xf7,
0xc2, 0x72, 0xa7, 0x44, 0x96, 0x2a, 0xa2, 0x81, 0xde, 0x85, 0xe2, 0xd4, 0xf1, 0xa2, 0x4f, 0x3e,
0x36, 0x85, 0x92, 0x6d, 0x1d, 0xab, 0xb8, 0x20, 0x64, 0x5f, 0x32, 0x91, 0xfe, 0x87, 0x15, 0xd0,
0x0c, 0x2f, 0x72, 0xa2, 0x1b, 0xa5, 0xd8, 0xd0, 0x60, 0x65, 0xe2, 0x0c, 0xa5, 0x03, 0xf6, 0x89,
0x76, 0x60, 0xdd, 0xa5, 0xb6, 0xe5, 0xc6, 0x0e, 0x64, 0x0b, 0xed, 0x41, 0x61, 0x48, 0x42, 0x3b,
0x70, 0x7c, 0xbe, 0x9b, 0x88, 0x72, 0x53, 0x15, 0xb1, 0x9e, 0x85, 0x36, 0x0d, 0xe2, 0x93, 0x5c,
0x34, 0xd0, 0x3b, 0x00, 0xca, 0x51, 0x2a, 0x8e, 0x71, 0x45, 0xc2, 0xf4, 0x11, 0xf5, 0x1d, 0xdb,
0x72, 0x9d, 0xe8, 0x46, 0x1e, 0xe4, 0x8a, 0xe4, 0xd5, 0x72, 0x68, 0xe3, 0x7f, 0x2e, 0x87, 0x1a,
0x90, 0x77, 0xe5, 0xc4, 0x84, 0xd5, 0x1c, 0x2f, 0x5f, 0x16, 0xd2, 0xa8, 0x33, 0x88, 0x67, 0x30,
0xf4, 0x2b, 0x00, 0x5f, 0x4c, 0x8f, 0x43, 0xc2, 0x6a, 0x9e, 0x93, 0x2c, 0xde, 0x53, 0xe5, 0x44,
0x62, 0x05, 0xa3, 0xff, 0x35, 0x0b, 0xdb, 0x7d, 0x6b, 0x44, 0xfa, 0xc4, 0x0a, 0xec, 0xe7, 0xca,
0x5c, 0x7c, 0x0a, 0x6b, 0xd6, 0x70, 0xea, 0x46, 0xf2, 0x9a, 0xb0, 0xcc, 0x51, 0x22, 0x00, 0x0c,
0x19, 0xfa, 0x94, 0x8e, 0xf8, 0x94, 0x2d, 0x89, 0xe4, 0x00, 0xf4, 0x14, 0x36, 0x26, 0x64, 0xc8,
0x62, 0x2d, 0x4f, 0x9b, 0x65, 0xb0, 0x31, 0x04, 0xfd, 0x02, 0x72, 0x2f, 0x1c, 0xea, 0xf2, 0x99,
0x5d, 0x5d, 0x1a, 0x9e, 0x60, 0xd0, 0x27, 0xb0, 0x1a, 0x58, 0xf6, 0xcd, 0x1d, 0x2a, 0x26, 0x6e,
0xaf, 0xbf, 0x84, 0x02, 0xcb, 0x1a, 0xea, 0x8d, 0x31, 0xb1, 0x23, 0xf4, 0x11, 0x14, 0x26, 0x8e,
0x67, 0x2e, 0x91, 0x64, 0xf9, 0x89, 0xe3, 0x89, 0x4f, 0x0e, 0xb2, 0xae, 0x13, 0x50, 0xf6, 0x75,
0x20, 0xeb, 0x5a, 0x7c, 0xea, 0x01, 0xe4, 0x9b, 0xec, 0xf6, 0xc7, 0xf3, 0x7a, 0x1f, 0xd6, 0xf8,
0x55, 0x50, 0x3a, 0x44, 0x29, 0x2c, 0x37, 0xc3, 0xc2, 0x60, 0x96, 0x19, 0x59, 0x35, 0x33, 0xde,
0x87, 0x92, 0xef, 0x5c, 0x13, 0xd7, 0x1c, 0x05, 0x96, 0x9d, 0x24, 0x55, 0x16, 0x6f, 0x72, 0xe9,
0xb1, 0x14, 0xea, 0xe7, 0x50, 0x3d, 0xa2, 0x13, 0xc7, 0xb3, 0xbc, 0x88, 0x93, 0x86, 0xca, 0x92,
0xf9, 0x39, 0xac, 0x73, 0x0f, 0x61, 0x35, 0xc3, 0x57, 0xe2, 0xbb, 0x8b, 0x42, 0x98, 0xf4, 0x1a,
0x4b, 0x80, 0xee, 0x42, 0x99, 0x5f, 0x48, 0x7a, 0xc9, 0xca, 0x44, 0x97, 0x50, 0x1e, 0x4a, 0x4f,
0x66, 0x42, 0xcb, 0x86, 0xf6, 0xd3, 0x45, 0xb4, 0x8b, 0x3a, 0x86, 0x4b, 0xc3, 0x94, 0x46, 0xff,
0x73, 0x06, 0x72, 0xcd, 0x80, 0xfa, 0xa7, 0x8e, 0x17, 0xfd, 0x3f, 0x6f, 0x38, 0xe9, 0xdd, 0x25,
0xfb, 0xca, 0xee, 0x72, 0x00, 0x15, 0x67, 0xe2, 0xd3, 0x20, 0xb2, 0x3c, 0x9b, 0xcc, 0x07, 0x1a,
0xcd, 0x54, 0x49, 0xb4, 0xbf, 0x84, 0x4a, 0xdc, 0x4f, 0x35, 0xd0, 0xbf, 0x04, 0xb0, 0x03, 0xea,
0x9b, 0xcf, 0x99, 0x5c, 0x06, 0x7b, 0x61, 0xda, 0xc7, 0x04, 0x38, 0x6f, 0xc7, 0x54, 0xfa, 0x27,
0x50, 0x4e, 0x78, 0x7b, 0x56, 0x60, 0x4d, 0x42, 0xf4, 0x1e, 0x6c, 0x5a, 0xa1, 0x4f, 0xec, 0xc8,
0x0c, 0x98, 0x13, 0x41, 0x9b, 0xc5, 0x45, 0x21, 0xc4, 0x5c, 0xa6, 0x1f, 0x01, 0xba, 0x20, 0x57,
0x47, 0xf1, 0x7d, 0x45, 0x42, 0x6b, 0x50, 0x71, 0x3c, 0xdb, 0x9d, 0x0e, 0x89, 0x39, 0x26, 0x34,
0xf5, 0x3c, 0x90, 0xc3, 0x5b, 0x52, 0x75, 0x42, 0xa8, 0x7c, 0x25, 0xd0, 0xbf, 0xcb, 0x42, 0x91,
0xcf, 0x76, 0x93, 0x5d, 0x5a, 0xaf, 0x23, 0x74, 0x02, 0x9b, 0x7c, 0xe5, 0x53, 0x6f, 0x6c, 0x06,
0xc4, 0x8e, 0xe4, 0x14, 0x2c, 0xbc, 0xbb, 0x2a, 0xe9, 0x86, 0x0b, 0xae, 0x92, 0x7b, 0xef, 0x43,
0xc9, 0xb5, 0xbc, 0xf1, 0x94, 0x5d, 0xa0, 0x45, 0x70, 0xb2, 0x7b, 0x2b, 0xfb, 0x79, 0xbc, 0x19,
0x4b, 0xf9, 0x88, 0x51, 0x1f, 0xb6, 0x66, 0xf1, 0x33, 0x7d, 0x3e, 0x0a, 0x59, 0x91, 0xfe, 0xe8,
0x4d, 0x61, 0x94, 0xf1, 0xc2, 0x65, 0x7b, 0x2e, 0x80, 0x5f, 0xc3, 0x76, 0xea, 0x15, 0x27, 0xe6,
0x5d, 0xe7, 0xbc, 0x4f, 0x16, 0xf1, 0xbe, 0x1a, 0x4f, 0x8c, 0x5e, 0xbe, 0x22, 0xd3, 0xbf, 0xcf,
0xc0, 0xb6, 0x5c, 0x01, 0x84, 0xc7, 0x0e, 0x93, 0xdf, 0x4d, 0x49, 0xc8, 0xb6, 0x9b, 0x35, 0xfe,
0x3e, 0x20, 0x63, 0xf6, 0xe8, 0xb5, 0xf7, 0x7d, 0x2c, 0x6c, 0xd1, 0xe7, 0x90, 0x1b, 0x89, 0xe7,
0x1d, 0x11, 0xa1, 0xc2, 0xe1, 0xe3, 0x37, 0x3c, 0x03, 0xe1, 0x04, 0xc0, 0x12, 0x46, 0x3c, 0x51,
0xd8, 0x62, 0xfa, 0xf8, 0xfa, 0x7d, 0x4d, 0xc2, 0xa8, 0x53, 0x8d, 0x8b, 0x8e, 0xd2, 0xd2, 0xff,
0xb6, 0x01, 0xf7, 0xe6, 0x46, 0x15, 0xfa, 0xd4, 0x0b, 0x09, 0xfa, 0x02, 0xb4, 0x91, 0x65, 0x13,
0xe5, 0x05, 0x2d, 0x5e, 0xe8, 0x3f, 0x5c, 0xee, 0x06, 0x82, 0xcb, 0xa3, 0x54, 0x3b, 0x44, 0xbf,
0x81, 0xed, 0xf8, 0xd2, 0x9c, 0xa2, 0x15, 0x01, 0xd8, 0x5f, 0x44, 0x3b, 0x5f, 0xa5, 0xe0, 0x4a,
0xcc, 0xa2, 0x92, 0xf7, 0x41, 0x73, 0xe9, 0x98, 0xa6, 0x88, 0x57, 0xee, 0x48, 0x5c, 0x66, 0x0c,
0x2a, 0xe9, 0x39, 0x6c, 0xb9, 0xd6, 0x15, 0x71, 0x53, 0xac, 0xab, 0x77, 0x64, 0xd5, 0x38, 0xc5,
0x5c, 0x5f, 0xe7, 0x5e, 0x27, 0xc3, 0xea, 0xda, 0x5d, 0xfb, 0xca, 0x18, 0x54, 0xd2, 0xaf, 0x60,
0x7b, 0x34, 0x75, 0x5d, 0x73, 0x8e, 0x99, 0xdf, 0xc7, 0x5f, 0x33, 0x69, 0x83, 0x14, 0x0d, 0x46,
0x8c, 0x23, 0x2d, 0x43, 0x57, 0xb0, 0x13, 0x5a, 0x23, 0x62, 0x86, 0xbc, 0x44, 0x51, 0xb9, 0x45,
0x6a, 0x7d, 0xb0, 0x88, 0xfb, 0xb6, 0xba, 0x06, 0x6f, 0x87, 0xb7, 0x55, 0x3b, 0x63, 0x78, 0x20,
0xd6, 0xf4, 0xac, 0x34, 0x52, 0x1d, 0xe5, 0x5e, 0xbf, 0x37, 0xcc, 0x1d, 0x5d, 0xf8, 0xbe, 0x93,
0x16, 0x28, 0x8e, 0x4c, 0xb8, 0xa7, 0x6c, 0x3d, 0x8a, 0x8b, 0x02, 0x77, 0xf1, 0xe3, 0x37, 0x6e,
0x3f, 0xea, 0x42, 0xb4, 0x6f, 0x39, 0x1b, 0x5a, 0xb0, 0x99, 0xda, 0x86, 0xf8, 0xb3, 0xc5, 0x6b,
0xb2, 0x53, 0xdd, 0x7f, 0x70, 0x51, 0xdd, 0x79, 0x58, 0x49, 0x41, 0x82, 0x80, 0x06, 0xbc, 0x22,
0x52, 0x4a, 0x8a, 0xc0, 0xb7, 0x6b, 0x7d, 0xfe, 0x20, 0x8d, 0x85, 0x81, 0x3e, 0x82, 0xdd, 0x86,
0x15, 0x25, 0x11, 0x15, 0xb9, 0x1c, 0xc6, 0x5b, 0xd4, 0x29, 0xe4, 0x02, 0xf1, 0x19, 0xe7, 0xf0,
0xc2, 0x29, 0xbb, 0x6d, 0x8b, 0xc3, 0x09, 0x5a, 0xff, 0x06, 0x1e, 0xdc, 0xea, 0x47, 0x6e, 0x1a,
0xcf, 0x20, 0x1f, 0xc8, 0xef, 0xd8, 0xd3, 0x4f, 0x96, 0xf4, 0x24, 0x50, 0x78, 0x86, 0x7f, 0x42,
0x00, 0x94, 0x77, 0x96, 0x02, 0x6c, 0xc8, 0x47, 0x07, 0xed, 0x2d, 0x76, 0x27, 0xfb, 0xd2, 0xc0,
0x97, 0xe6, 0x79, 0xa7, 0xdd, 0x7a, 0x66, 0xb4, 0x2f, 0xb5, 0x0c, 0xbb, 0xda, 0x27, 0xad, 0x2c,
0x6b, 0xf5, 0xba, 0xfd, 0x7e, 0xab, 0xd1, 0x36, 0xb4, 0x15, 0x04, 0xb0, 0x2e, 0x35, 0xab, 0xec,
0x1a, 0xcf, 0xa1, 0x52, 0xb0, 0x76, 0xf8, 0x5d, 0x06, 0x4a, 0xbc, 0x0f, 0xf5, 0xf8, 0x5f, 0x0b,
0xf4, 0xa7, 0x0c, 0x54, 0x6e, 0x19, 0x26, 0x3a, 0x5c, 0x58, 0x92, 0x2c, 0x8c, 0xfd, 0xee, 0x47,
0x77, 0xc2, 0x88, 0xb1, 0xeb, 0xef, 0xfc, 0xfe, 0xfb, 0x7f, 0xfe, 0x31, 0x5b, 0xd5, 0x2b, 0xc9,
0x7f, 0x2a, 0xe1, 0x67, 0x72, 0xa9, 0x92, 0xcf, 0x32, 0x4f, 0x1a, 0x11, 0xec, 0xda, 0x74, 0xb2,
0x80, 0xb9, 0x51, 0x49, 0x0f, 0xa7, 0x17, 0xd0, 0x88, 0xf6, 0x32, 0xbf, 0x7e, 0x2a, 0xcd, 0xc7,
0x94, 0x1d, 0xc6, 0x35, 0x1a, 0x8c, 0x0f, 0xc6, 0xc4, 0xe3, 0x7f, 0x4f, 0x1c, 0x08, 0x95, 0xe5,
0x3b, 0xe1, 0xfc, 0x3f, 0x23, 0x9f, 0x8b, 0xaf, 0xff, 0x64, 0x32, 0x57, 0xeb, 0xdc, 0xf6, 0xa3,
0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0xf4, 0xbf, 0x21, 0x35, 0xfd, 0x19, 0x00, 0x00,
}

View File

@ -25,10 +25,9 @@ const (
TextAnnotation_DetectedBreak_SURE_SPACE TextAnnotation_DetectedBreak_BreakType = 2
// Line-wrapping break.
TextAnnotation_DetectedBreak_EOL_SURE_SPACE TextAnnotation_DetectedBreak_BreakType = 3
// End-line hyphen that is not present in text; does
// End-line hyphen that is not present in text; does not co-occur with
// `SPACE`, `LEADER_SPACE`, or `LINE_BREAK`.
TextAnnotation_DetectedBreak_HYPHEN TextAnnotation_DetectedBreak_BreakType = 4
// not co-occur with SPACE, LEADER_SPACE, or
// LINE_BREAK.
// Line break that ends a paragraph.
TextAnnotation_DetectedBreak_LINE_BREAK TextAnnotation_DetectedBreak_BreakType = 5
)
@ -101,9 +100,9 @@ func (Block_BlockType) EnumDescriptor() ([]byte, []int) { return fileDescriptor2
// The hierarchy of an OCR extracted text structure is like this:
// TextAnnotation -> Page -> Block -> Paragraph -> Word -> Symbol
// Each structural component, starting from Page, may further have their own
// properties. Properties describe detected languages, breaks etc.. Please
// refer to the [google.cloud.vision.v1.TextAnnotation.TextProperty][google.cloud.vision.v1.TextAnnotation.TextProperty] message
// definition below for more detail.
// properties. Properties describe detected languages, breaks etc.. Please refer
// to the [TextAnnotation.TextProperty][google.cloud.vision.v1.TextAnnotation.TextProperty] message definition below for more
// detail.
type TextAnnotation struct {
// List of pages detected by OCR.
Pages []*Page `protobuf:"bytes,1,rep,name=pages" json:"pages,omitempty"`
@ -163,6 +162,7 @@ func (m *TextAnnotation_DetectedLanguage) GetConfidence() float32 {
// Detected start or end of a structural component.
type TextAnnotation_DetectedBreak struct {
// Detected break type.
Type TextAnnotation_DetectedBreak_BreakType `protobuf:"varint,1,opt,name=type,enum=google.cloud.vision.v1.TextAnnotation_DetectedBreak_BreakType" json:"type,omitempty"`
// True if break prepends the element.
IsPrefix bool `protobuf:"varint,2,opt,name=is_prefix,json=isPrefix" json:"is_prefix,omitempty"`
@ -224,6 +224,8 @@ type Page struct {
Height int32 `protobuf:"varint,3,opt,name=height" json:"height,omitempty"`
// List of blocks of text, images etc on this page.
Blocks []*Block `protobuf:"bytes,4,rep,name=blocks" json:"blocks,omitempty"`
// Confidence of the OCR results on the page. Range [0, 1].
Confidence float32 `protobuf:"fixed32,5,opt,name=confidence" json:"confidence,omitempty"`
}
func (m *Page) Reset() { *m = Page{} }
@ -259,6 +261,13 @@ func (m *Page) GetBlocks() []*Block {
return nil
}
func (m *Page) GetConfidence() float32 {
if m != nil {
return m.Confidence
}
return 0
}
// Logical element on the page.
type Block struct {
// Additional information detected for the block.
@ -269,20 +278,27 @@ type Block struct {
// is represented as around the top-left corner as defined when the text is
// read in the 'natural' orientation.
// For example:
// * when the text is horizontal it might look like:
// 0----1
// | |
// 3----2
// * when it's rotated 180 degrees around the top-left corner it becomes:
// 2----3
// | |
// 1----0
//
// * when the text is horizontal it might look like:
//
// 0----1
// | |
// 3----2
//
// * when it's rotated 180 degrees around the top-left corner it becomes:
//
// 2----3
// | |
// 1----0
//
// and the vertice order will still be (0, 1, 2, 3).
BoundingBox *BoundingPoly `protobuf:"bytes,2,opt,name=bounding_box,json=boundingBox" json:"bounding_box,omitempty"`
// List of paragraphs in this block (if this blocks is of type text).
Paragraphs []*Paragraph `protobuf:"bytes,3,rep,name=paragraphs" json:"paragraphs,omitempty"`
// Detected block type (text, image etc) for this block.
BlockType Block_BlockType `protobuf:"varint,4,opt,name=block_type,json=blockType,enum=google.cloud.vision.v1.Block_BlockType" json:"block_type,omitempty"`
// Confidence of the OCR results on the block. Range [0, 1].
Confidence float32 `protobuf:"fixed32,5,opt,name=confidence" json:"confidence,omitempty"`
}
func (m *Block) Reset() { *m = Block{} }
@ -318,6 +334,13 @@ func (m *Block) GetBlockType() Block_BlockType {
return Block_UNKNOWN
}
func (m *Block) GetConfidence() float32 {
if m != nil {
return m.Confidence
}
return 0
}
// Structural unit of text representing a number of words in certain order.
type Paragraph struct {
// Additional information detected for the paragraph.
@ -340,6 +363,8 @@ type Paragraph struct {
BoundingBox *BoundingPoly `protobuf:"bytes,2,opt,name=bounding_box,json=boundingBox" json:"bounding_box,omitempty"`
// List of words in this paragraph.
Words []*Word `protobuf:"bytes,3,rep,name=words" json:"words,omitempty"`
// Confidence of the OCR results for the paragraph. Range [0, 1].
Confidence float32 `protobuf:"fixed32,4,opt,name=confidence" json:"confidence,omitempty"`
}
func (m *Paragraph) Reset() { *m = Paragraph{} }
@ -368,6 +393,13 @@ func (m *Paragraph) GetWords() []*Word {
return nil
}
func (m *Paragraph) GetConfidence() float32 {
if m != nil {
return m.Confidence
}
return 0
}
// A word representation.
type Word struct {
// Additional information detected for the word.
@ -391,6 +423,8 @@ type Word struct {
// List of symbols in the word.
// The order of the symbols follows the natural reading order.
Symbols []*Symbol `protobuf:"bytes,3,rep,name=symbols" json:"symbols,omitempty"`
// Confidence of the OCR results for the word. Range [0, 1].
Confidence float32 `protobuf:"fixed32,4,opt,name=confidence" json:"confidence,omitempty"`
}
func (m *Word) Reset() { *m = Word{} }
@ -419,6 +453,13 @@ func (m *Word) GetSymbols() []*Symbol {
return nil
}
func (m *Word) GetConfidence() float32 {
if m != nil {
return m.Confidence
}
return 0
}
// A single symbol representation.
type Symbol struct {
// Additional information detected for the symbol.
@ -441,6 +482,8 @@ type Symbol struct {
BoundingBox *BoundingPoly `protobuf:"bytes,2,opt,name=bounding_box,json=boundingBox" json:"bounding_box,omitempty"`
// The actual UTF-8 representation of the symbol.
Text string `protobuf:"bytes,3,opt,name=text" json:"text,omitempty"`
// Confidence of the OCR results for the symbol. Range [0, 1].
Confidence float32 `protobuf:"fixed32,4,opt,name=confidence" json:"confidence,omitempty"`
}
func (m *Symbol) Reset() { *m = Symbol{} }
@ -469,6 +512,13 @@ func (m *Symbol) GetText() string {
return ""
}
func (m *Symbol) GetConfidence() float32 {
if m != nil {
return m.Confidence
}
return 0
}
func init() {
proto.RegisterType((*TextAnnotation)(nil), "google.cloud.vision.v1.TextAnnotation")
proto.RegisterType((*TextAnnotation_DetectedLanguage)(nil), "google.cloud.vision.v1.TextAnnotation.DetectedLanguage")
@ -486,52 +536,53 @@ func init() {
func init() { proto.RegisterFile("google/cloud/vision/v1/text_annotation.proto", fileDescriptor2) }
var fileDescriptor2 = []byte{
// 744 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x55, 0x4f, 0x6f, 0xd3, 0x4e,
0x10, 0xfd, 0xb9, 0xb1, 0xd3, 0x78, 0xd2, 0x46, 0xfe, 0x2d, 0xa8, 0x8a, 0x42, 0xa9, 0x8a, 0x01,
0xd1, 0x03, 0x72, 0xd4, 0x14, 0x04, 0x12, 0x08, 0x29, 0x4e, 0x0d, 0xad, 0x1a, 0x25, 0xd6, 0x36,
0x51, 0xf9, 0x73, 0xb0, 0xfc, 0x67, 0xeb, 0x58, 0x4d, 0xbd, 0x96, 0xed, 0xb6, 0xc9, 0x8d, 0x4f,
0xc5, 0x89, 0x6f, 0xc1, 0x09, 0xee, 0x9c, 0xb9, 0x72, 0x44, 0x5e, 0xdb, 0x69, 0x52, 0x61, 0x04,
0x88, 0x43, 0x2f, 0xd6, 0xce, 0xe4, 0xed, 0xdb, 0xf7, 0x66, 0x33, 0x3b, 0xf0, 0xd0, 0xa5, 0xd4,
0x1d, 0x93, 0xa6, 0x3d, 0xa6, 0x67, 0x4e, 0xf3, 0xdc, 0x8b, 0x3c, 0xea, 0x37, 0xcf, 0xb7, 0x9b,
0x31, 0x99, 0xc4, 0x86, 0xe9, 0xfb, 0x34, 0x36, 0x63, 0x8f, 0xfa, 0x4a, 0x10, 0xd2, 0x98, 0xa2,
0xb5, 0x14, 0xad, 0x30, 0xb4, 0x92, 0xa2, 0x95, 0xf3, 0xed, 0xc6, 0x7a, 0xc6, 0x62, 0x06, 0x5e,
0xf3, 0x72, 0x53, 0x94, 0xee, 0x6a, 0xdc, 0x2f, 0x38, 0xc3, 0x25, 0xf4, 0x94, 0xc4, 0xe1, 0x34,
0x85, 0xc9, 0xdf, 0x78, 0xa8, 0x0d, 0xc8, 0x24, 0x6e, 0xcf, 0x08, 0x50, 0x0b, 0x84, 0xc0, 0x74,
0x49, 0x54, 0xe7, 0x36, 0x4b, 0x5b, 0xd5, 0xd6, 0xba, 0xf2, 0xf3, 0xf3, 0x15, 0xdd, 0x74, 0x09,
0x4e, 0xa1, 0x08, 0x01, 0x9f, 0x88, 0xaf, 0x2f, 0x6d, 0x72, 0x5b, 0x22, 0x66, 0xeb, 0xc6, 0x11,
0x48, 0xbb, 0x24, 0x26, 0x76, 0x4c, 0x9c, 0xae, 0xe9, 0xbb, 0x67, 0xa6, 0x4b, 0xd0, 0x5d, 0x58,
0x1d, 0x67, 0x6b, 0xc3, 0xa6, 0x0e, 0xa9, 0x73, 0x6c, 0xc3, 0x4a, 0x9e, 0xec, 0x50, 0x87, 0xa0,
0x0d, 0x00, 0x9b, 0xfa, 0xc7, 0x9e, 0x43, 0x7c, 0x9b, 0x30, 0xca, 0x25, 0x3c, 0x97, 0x69, 0x7c,
0xe5, 0x60, 0x35, 0x67, 0x56, 0x43, 0x62, 0x9e, 0x20, 0x0c, 0x7c, 0x3c, 0x0d, 0x52, 0xb6, 0x5a,
0xeb, 0x45, 0x91, 0xe2, 0x45, 0xa3, 0xca, 0x02, 0x87, 0xc2, 0xbe, 0x83, 0x69, 0x40, 0x30, 0xe3,
0x42, 0xb7, 0x40, 0xf4, 0x22, 0x23, 0x08, 0xc9, 0xb1, 0x37, 0x61, 0x22, 0x2a, 0xb8, 0xe2, 0x45,
0x3a, 0x8b, 0x65, 0x1b, 0xc4, 0x19, 0x1e, 0x55, 0x61, 0x79, 0xd8, 0x3b, 0xe8, 0xf5, 0x8f, 0x7a,
0xd2, 0x7f, 0x48, 0x04, 0xe1, 0x50, 0x6f, 0x77, 0x34, 0x89, 0x43, 0x35, 0x80, 0xc3, 0x21, 0xd6,
0x8c, 0x34, 0x5e, 0x42, 0x08, 0x6a, 0x5a, 0xbf, 0x6b, 0xcc, 0xe5, 0x4a, 0x08, 0xa0, 0xbc, 0xf7,
0x46, 0xdf, 0xd3, 0x7a, 0x12, 0x9f, 0xe0, 0xbb, 0xfb, 0x3d, 0xcd, 0x50, 0xb1, 0xd6, 0x3e, 0x90,
0x84, 0xc6, 0x27, 0x0e, 0x56, 0x12, 0xc9, 0x7a, 0x48, 0x03, 0x12, 0xc6, 0x53, 0x74, 0x0c, 0xc8,
0xc9, 0x34, 0x1b, 0x79, 0xc5, 0xf2, 0x6b, 0x7a, 0xf2, 0x87, 0xa6, 0xf3, 0x2b, 0xc1, 0xff, 0x3b,
0x57, 0x32, 0x11, 0x7a, 0x07, 0xb5, 0xd9, 0x39, 0x56, 0x62, 0x93, 0xf9, 0xaf, 0xb6, 0x1e, 0xfd,
0x4d, 0x61, 0xf1, 0xaa, 0x33, 0x1f, 0xca, 0x1f, 0x39, 0xe0, 0x93, 0xbf, 0x0e, 0xea, 0x43, 0x25,
0xc8, 0x9c, 0xb1, 0x8b, 0xab, 0xb6, 0x76, 0x7e, 0x93, 0x7f, 0xbe, 0x28, 0x78, 0x46, 0x82, 0x6e,
0x82, 0x70, 0xe1, 0x39, 0xf1, 0x88, 0xa9, 0x15, 0x70, 0x1a, 0xa0, 0x35, 0x28, 0x8f, 0x88, 0xe7,
0x8e, 0xe2, 0x7a, 0x89, 0xa5, 0xb3, 0x08, 0x3d, 0x86, 0xb2, 0x35, 0xa6, 0xf6, 0x49, 0x54, 0xe7,
0x59, 0x01, 0x6f, 0x17, 0x1d, 0xae, 0x26, 0x28, 0x9c, 0x81, 0xe5, 0xf7, 0x25, 0x10, 0x58, 0xe6,
0xdf, 0xeb, 0x7f, 0x05, 0x2b, 0x16, 0x3d, 0xf3, 0x1d, 0xcf, 0x77, 0x0d, 0x8b, 0x4e, 0xb2, 0xa2,
0xdf, 0x2b, 0xd4, 0x95, 0x61, 0x75, 0x3a, 0x9e, 0xe2, 0x6a, 0xbe, 0x53, 0xa5, 0x13, 0xd4, 0x06,
0x08, 0xcc, 0xd0, 0x74, 0x43, 0x33, 0x18, 0x45, 0xf5, 0x12, 0xb3, 0x77, 0xa7, 0xb8, 0x8d, 0x33,
0x24, 0x9e, 0xdb, 0x84, 0x5e, 0x02, 0x30, 0xc3, 0x06, 0xeb, 0x2b, 0x9e, 0xf5, 0xd5, 0x83, 0x5f,
0x56, 0x28, 0xfd, 0xb2, 0x06, 0x12, 0xad, 0x7c, 0x29, 0x63, 0x10, 0x67, 0xf9, 0xc5, 0x46, 0xa9,
0x00, 0x3f, 0xd0, 0x5e, 0x0f, 0x24, 0x2e, 0x69, 0x99, 0x41, 0x5b, 0xed, 0x26, 0x2d, 0x52, 0x85,
0x65, 0x7d, 0xbf, 0x33, 0x18, 0xe2, 0xa4, 0x37, 0x44, 0x10, 0xf0, 0xb0, 0xab, 0x61, 0x89, 0x4f,
0xf2, 0x6a, 0x1b, 0x77, 0xfa, 0xbb, 0x9a, 0x24, 0xc8, 0x9f, 0x39, 0x10, 0x67, 0xaa, 0xaf, 0xf1,
0x35, 0xb4, 0x40, 0xb8, 0xa0, 0xa1, 0x93, 0xdf, 0x40, 0xe1, 0x43, 0x7a, 0x44, 0x43, 0x07, 0xa7,
0x50, 0xf9, 0x0b, 0x07, 0x7c, 0x12, 0x5f, 0x63, 0x5b, 0x4f, 0x61, 0x39, 0x9a, 0x9e, 0x5a, 0x74,
0x9c, 0x1b, 0xdb, 0x28, 0xe2, 0x38, 0x64, 0x30, 0x9c, 0xc3, 0xe5, 0x0f, 0x1c, 0x94, 0xd3, 0xdc,
0x35, 0xb6, 0x97, 0x8f, 0xb2, 0xd2, 0xe5, 0x28, 0x53, 0x63, 0x68, 0xd8, 0xf4, 0xb4, 0x80, 0x4b,
0xbd, 0xb1, 0xa8, 0x50, 0x4f, 0x06, 0xab, 0xce, 0xbd, 0x7d, 0x9e, 0xc1, 0x5d, 0x9a, 0xbc, 0xd5,
0x0a, 0x0d, 0xdd, 0xa6, 0x4b, 0x7c, 0x36, 0x76, 0x9b, 0xe9, 0x4f, 0x66, 0xe0, 0x45, 0x57, 0x07,
0xf4, 0xb3, 0x74, 0xf5, 0x9d, 0xe3, 0xac, 0x32, 0xc3, 0xee, 0xfc, 0x08, 0x00, 0x00, 0xff, 0xff,
0x80, 0x29, 0x2a, 0x3b, 0x2f, 0x08, 0x00, 0x00,
// 763 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x56, 0xcf, 0x6f, 0xd3, 0x4a,
0x10, 0x7e, 0x6e, 0xec, 0x34, 0x9e, 0xb4, 0x91, 0xdf, 0xbe, 0xa7, 0x2a, 0x0a, 0xa5, 0x2a, 0x01,
0x44, 0x0f, 0xc8, 0x51, 0x53, 0x10, 0x48, 0x20, 0xa4, 0x38, 0x35, 0xb4, 0x6a, 0x94, 0x58, 0xdb,
0x44, 0xe5, 0xc7, 0xc1, 0xf2, 0x8f, 0xad, 0x63, 0x35, 0xf5, 0x5a, 0xb6, 0xdb, 0x26, 0xff, 0x0d,
0xff, 0x13, 0x12, 0x27, 0xae, 0x9c, 0xb9, 0x02, 0x27, 0xe4, 0xb5, 0x9d, 0x26, 0x01, 0x53, 0x40,
0x1c, 0x7a, 0xb1, 0x76, 0x26, 0xdf, 0x7c, 0x33, 0xdf, 0x8c, 0x27, 0x6b, 0xb8, 0xef, 0x50, 0xea,
0x8c, 0x48, 0xc3, 0x1a, 0xd1, 0x33, 0xbb, 0x71, 0xee, 0x86, 0x2e, 0xf5, 0x1a, 0xe7, 0xdb, 0x8d,
0x88, 0x8c, 0x23, 0xdd, 0xf0, 0x3c, 0x1a, 0x19, 0x91, 0x4b, 0x3d, 0xd9, 0x0f, 0x68, 0x44, 0xd1,
0x5a, 0x82, 0x96, 0x19, 0x5a, 0x4e, 0xd0, 0xf2, 0xf9, 0x76, 0x6d, 0x3d, 0x65, 0x31, 0x7c, 0xb7,
0x71, 0x19, 0x14, 0x26, 0x51, 0xb5, 0xbb, 0x39, 0x39, 0x1c, 0x42, 0x4f, 0x49, 0x14, 0x4c, 0x12,
0x58, 0xfd, 0x13, 0x0f, 0x95, 0x3e, 0x19, 0x47, 0xad, 0x29, 0x01, 0x6a, 0x82, 0xe0, 0x1b, 0x0e,
0x09, 0xab, 0xdc, 0x66, 0x61, 0xab, 0xdc, 0x5c, 0x97, 0x7f, 0x9c, 0x5f, 0xd6, 0x0c, 0x87, 0xe0,
0x04, 0x8a, 0x10, 0xf0, 0x71, 0xf1, 0xd5, 0xa5, 0x4d, 0x6e, 0x4b, 0xc4, 0xec, 0x5c, 0x3b, 0x02,
0x69, 0x97, 0x44, 0xc4, 0x8a, 0x88, 0xdd, 0x31, 0x3c, 0xe7, 0xcc, 0x70, 0x08, 0xba, 0x0d, 0xab,
0xa3, 0xf4, 0xac, 0x5b, 0xd4, 0x26, 0x55, 0x8e, 0x05, 0xac, 0x64, 0xce, 0x36, 0xb5, 0x09, 0xda,
0x00, 0xb0, 0xa8, 0x77, 0xec, 0xda, 0xc4, 0xb3, 0x08, 0xa3, 0x5c, 0xc2, 0x33, 0x9e, 0xda, 0x47,
0x0e, 0x56, 0x33, 0x66, 0x25, 0x20, 0xc6, 0x09, 0xc2, 0xc0, 0x47, 0x13, 0x3f, 0x61, 0xab, 0x34,
0x9f, 0xe5, 0x55, 0x3c, 0x2f, 0x54, 0x9e, 0xe3, 0x90, 0xd9, 0xb3, 0x3f, 0xf1, 0x09, 0x66, 0x5c,
0xe8, 0x06, 0x88, 0x6e, 0xa8, 0xfb, 0x01, 0x39, 0x76, 0xc7, 0xac, 0x88, 0x12, 0x2e, 0xb9, 0xa1,
0xc6, 0xec, 0xba, 0x05, 0xe2, 0x14, 0x8f, 0xca, 0xb0, 0x3c, 0xe8, 0x1e, 0x74, 0x7b, 0x47, 0x5d,
0xe9, 0x1f, 0x24, 0x82, 0x70, 0xa8, 0xb5, 0xda, 0xaa, 0xc4, 0xa1, 0x0a, 0xc0, 0xe1, 0x00, 0xab,
0x7a, 0x62, 0x2f, 0x21, 0x04, 0x15, 0xb5, 0xd7, 0xd1, 0x67, 0x7c, 0x05, 0x04, 0x50, 0xdc, 0x7b,
0xa5, 0xed, 0xa9, 0x5d, 0x89, 0x8f, 0xf1, 0x9d, 0xfd, 0xae, 0xaa, 0x2b, 0x58, 0x6d, 0x1d, 0x48,
0x42, 0xed, 0x1d, 0x07, 0x2b, 0x71, 0xc9, 0x5a, 0x40, 0x7d, 0x12, 0x44, 0x13, 0x74, 0x0c, 0xc8,
0x4e, 0x6b, 0xd6, 0xb3, 0x8e, 0x65, 0x63, 0x7a, 0xf4, 0x9b, 0xa2, 0xb3, 0x91, 0xe0, 0x7f, 0xed,
0x05, 0x4f, 0x88, 0xde, 0x40, 0x65, 0x9a, 0xc7, 0x8c, 0x65, 0x32, 0xfd, 0xe5, 0xe6, 0x83, 0x3f,
0x69, 0x2c, 0x5e, 0xb5, 0x67, 0xcd, 0xfa, 0x07, 0x0e, 0xf8, 0xf8, 0xd5, 0x41, 0x3d, 0x28, 0xf9,
0xa9, 0x32, 0x36, 0xb8, 0x72, 0x73, 0xe7, 0x17, 0xf9, 0x67, 0x9b, 0x82, 0xa7, 0x24, 0xe8, 0x7f,
0x10, 0x2e, 0x5c, 0x3b, 0x1a, 0xb2, 0x6a, 0x05, 0x9c, 0x18, 0x68, 0x0d, 0x8a, 0x43, 0xe2, 0x3a,
0xc3, 0xa8, 0x5a, 0x60, 0xee, 0xd4, 0x42, 0x0f, 0xa1, 0x68, 0x8e, 0xa8, 0x75, 0x12, 0x56, 0x79,
0xd6, 0xc0, 0x9b, 0x79, 0xc9, 0x95, 0x18, 0x85, 0x53, 0xf0, 0xc2, 0xcb, 0x29, 0x2c, 0xbe, 0x9c,
0xf5, 0xb7, 0x05, 0x10, 0x58, 0xc4, 0xdf, 0xd7, 0xf7, 0x02, 0x56, 0x4c, 0x7a, 0xe6, 0xd9, 0xae,
0xe7, 0xe8, 0x26, 0x1d, 0xa7, 0x43, 0xb9, 0x93, 0x5b, 0x77, 0x8a, 0xd5, 0xe8, 0x68, 0x82, 0xcb,
0x59, 0xa4, 0x42, 0xc7, 0xa8, 0x05, 0xe0, 0x1b, 0x81, 0xe1, 0x04, 0x86, 0x3f, 0x0c, 0xab, 0x05,
0x26, 0xff, 0x56, 0xfe, 0x9a, 0xa7, 0x48, 0x3c, 0x13, 0x84, 0x9e, 0x03, 0xb0, 0x86, 0xe8, 0x6c,
0xef, 0x78, 0xb6, 0x77, 0xf7, 0x7e, 0xda, 0xc1, 0xe4, 0xc9, 0x16, 0x4c, 0x34, 0xb3, 0xe3, 0x95,
0xed, 0xc4, 0x20, 0x4e, 0xe3, 0xe6, 0x17, 0xad, 0x04, 0x7c, 0x5f, 0x7d, 0xd9, 0x97, 0xb8, 0x78,
0xe5, 0xfa, 0x2d, 0xa5, 0x13, 0xaf, 0x58, 0x19, 0x96, 0xb5, 0xfd, 0x76, 0x7f, 0x80, 0xe3, 0xdd,
0x12, 0x41, 0xc0, 0x83, 0x8e, 0x8a, 0x25, 0x3e, 0xf6, 0x2b, 0x2d, 0xdc, 0xee, 0xed, 0xaa, 0x92,
0x50, 0xff, 0xc2, 0x81, 0x38, 0x55, 0x75, 0x8d, 0xc7, 0xd4, 0x04, 0xe1, 0x82, 0x06, 0x76, 0x36,
0xa1, 0xdc, 0x3f, 0xe2, 0x23, 0x1a, 0xd8, 0x38, 0x81, 0x2e, 0xf4, 0x93, 0xff, 0xae, 0x9f, 0x5f,
0x39, 0xe0, 0x63, 0xfc, 0x35, 0x96, 0xfd, 0x18, 0x96, 0xc3, 0xc9, 0xa9, 0x49, 0x47, 0x99, 0xf0,
0x8d, 0x3c, 0x8e, 0x43, 0x06, 0xc3, 0x19, 0xfc, 0x4a, 0xf1, 0xef, 0x39, 0x28, 0x26, 0x31, 0xd7,
0x58, 0x7e, 0x76, 0x95, 0x16, 0x2e, 0xaf, 0xd2, 0xab, 0x84, 0x29, 0x11, 0xd4, 0x2c, 0x7a, 0x9a,
0x93, 0x4b, 0xf9, 0x6f, 0x5e, 0x81, 0x16, 0x5f, 0xfc, 0x1a, 0xf7, 0xfa, 0x69, 0x0a, 0x77, 0x68,
0x7c, 0x97, 0xc8, 0x34, 0x70, 0x1a, 0x0e, 0xf1, 0xd8, 0x67, 0x41, 0x23, 0xf9, 0xc9, 0xf0, 0xdd,
0x70, 0xf1, 0x03, 0xe2, 0x49, 0x72, 0xfa, 0xcc, 0x71, 0x66, 0x91, 0x61, 0x77, 0xbe, 0x05, 0x00,
0x00, 0xff, 0xff, 0x3f, 0x4a, 0xe7, 0xb0, 0xcf, 0x08, 0x00, 0x00,
}

View File

@ -18,8 +18,7 @@ type WebDetection struct {
// Deduced entities from similar images on the Internet.
WebEntities []*WebDetection_WebEntity `protobuf:"bytes,1,rep,name=web_entities,json=webEntities" json:"web_entities,omitempty"`
// Fully matching images from the Internet.
// They're definite neardups and most often a copy of the query image with
// merely a size change.
// Can include resized copies of the query image.
FullMatchingImages []*WebDetection_WebImage `protobuf:"bytes,2,rep,name=full_matching_images,json=fullMatchingImages" json:"full_matching_images,omitempty"`
// Partial matching images from the Internet.
// Those images are similar enough to share some key-point features. For
@ -27,6 +26,10 @@ type WebDetection struct {
PartialMatchingImages []*WebDetection_WebImage `protobuf:"bytes,3,rep,name=partial_matching_images,json=partialMatchingImages" json:"partial_matching_images,omitempty"`
// Web pages containing the matching images from the Internet.
PagesWithMatchingImages []*WebDetection_WebPage `protobuf:"bytes,4,rep,name=pages_with_matching_images,json=pagesWithMatchingImages" json:"pages_with_matching_images,omitempty"`
// The visually similar image results.
VisuallySimilarImages []*WebDetection_WebImage `protobuf:"bytes,6,rep,name=visually_similar_images,json=visuallySimilarImages" json:"visually_similar_images,omitempty"`
// Best guess text labels for the request image.
BestGuessLabels []*WebDetection_WebLabel `protobuf:"bytes,8,rep,name=best_guess_labels,json=bestGuessLabels" json:"best_guess_labels,omitempty"`
}
func (m *WebDetection) Reset() { *m = WebDetection{} }
@ -62,6 +65,20 @@ func (m *WebDetection) GetPagesWithMatchingImages() []*WebDetection_WebPage {
return nil
}
func (m *WebDetection) GetVisuallySimilarImages() []*WebDetection_WebImage {
if m != nil {
return m.VisuallySimilarImages
}
return nil
}
func (m *WebDetection) GetBestGuessLabels() []*WebDetection_WebLabel {
if m != nil {
return m.BestGuessLabels
}
return nil
}
// Entity deduced from similar images on the Internet.
type WebDetection_WebEntity struct {
// Opaque entity ID.
@ -103,8 +120,7 @@ func (m *WebDetection_WebEntity) GetDescription() string {
type WebDetection_WebImage struct {
// The result image URL.
Url string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"`
// Overall relevancy score for the image.
// Not normalized and not comparable across different image queries.
// (Deprecated) Overall relevancy score for the image.
Score float32 `protobuf:"fixed32,2,opt,name=score" json:"score,omitempty"`
}
@ -131,9 +147,18 @@ func (m *WebDetection_WebImage) GetScore() float32 {
type WebDetection_WebPage struct {
// The result web page URL.
Url string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"`
// Overall relevancy score for the web page.
// Not normalized and not comparable across different image queries.
// (Deprecated) Overall relevancy score for the web page.
Score float32 `protobuf:"fixed32,2,opt,name=score" json:"score,omitempty"`
// Title for the web page, may contain HTML markups.
PageTitle string `protobuf:"bytes,3,opt,name=page_title,json=pageTitle" json:"page_title,omitempty"`
// Fully matching images on the page.
// Can include resized copies of the query image.
FullMatchingImages []*WebDetection_WebImage `protobuf:"bytes,4,rep,name=full_matching_images,json=fullMatchingImages" json:"full_matching_images,omitempty"`
// Partial matching images on the page.
// Those images are similar enough to share some key-point features. For
// example an original image will likely have partial matching for its
// crops.
PartialMatchingImages []*WebDetection_WebImage `protobuf:"bytes,5,rep,name=partial_matching_images,json=partialMatchingImages" json:"partial_matching_images,omitempty"`
}
func (m *WebDetection_WebPage) Reset() { *m = WebDetection_WebPage{} }
@ -155,39 +180,98 @@ func (m *WebDetection_WebPage) GetScore() float32 {
return 0
}
func (m *WebDetection_WebPage) GetPageTitle() string {
if m != nil {
return m.PageTitle
}
return ""
}
func (m *WebDetection_WebPage) GetFullMatchingImages() []*WebDetection_WebImage {
if m != nil {
return m.FullMatchingImages
}
return nil
}
func (m *WebDetection_WebPage) GetPartialMatchingImages() []*WebDetection_WebImage {
if m != nil {
return m.PartialMatchingImages
}
return nil
}
// Label to provide extra metadata for the web detection.
type WebDetection_WebLabel struct {
// Label for extra metadata.
Label string `protobuf:"bytes,1,opt,name=label" json:"label,omitempty"`
// The BCP-47 language code for `label`, such as "en-US" or "sr-Latn".
// For more information, see
// http://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
LanguageCode string `protobuf:"bytes,2,opt,name=language_code,json=languageCode" json:"language_code,omitempty"`
}
func (m *WebDetection_WebLabel) Reset() { *m = WebDetection_WebLabel{} }
func (m *WebDetection_WebLabel) String() string { return proto.CompactTextString(m) }
func (*WebDetection_WebLabel) ProtoMessage() {}
func (*WebDetection_WebLabel) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0, 3} }
func (m *WebDetection_WebLabel) GetLabel() string {
if m != nil {
return m.Label
}
return ""
}
func (m *WebDetection_WebLabel) GetLanguageCode() string {
if m != nil {
return m.LanguageCode
}
return ""
}
func init() {
proto.RegisterType((*WebDetection)(nil), "google.cloud.vision.v1.WebDetection")
proto.RegisterType((*WebDetection_WebEntity)(nil), "google.cloud.vision.v1.WebDetection.WebEntity")
proto.RegisterType((*WebDetection_WebImage)(nil), "google.cloud.vision.v1.WebDetection.WebImage")
proto.RegisterType((*WebDetection_WebPage)(nil), "google.cloud.vision.v1.WebDetection.WebPage")
proto.RegisterType((*WebDetection_WebLabel)(nil), "google.cloud.vision.v1.WebDetection.WebLabel")
}
func init() { proto.RegisterFile("google/cloud/vision/v1/web_detection.proto", fileDescriptor3) }
var fileDescriptor3 = []byte{
// 383 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x93, 0x41, 0x4f, 0xea, 0x40,
0x14, 0x85, 0x53, 0xca, 0x7b, 0x0f, 0x06, 0x16, 0xcf, 0x09, 0x4a, 0x53, 0x5d, 0x34, 0xae, 0x88,
0xd1, 0x69, 0xc0, 0xa5, 0xae, 0x88, 0x2e, 0x58, 0x98, 0x60, 0x37, 0x24, 0x6e, 0xea, 0xd0, 0x8e,
0xc3, 0x4d, 0xca, 0x4c, 0xd3, 0x19, 0x20, 0xfc, 0x58, 0xff, 0x87, 0x4b, 0x33, 0xd3, 0x62, 0x10,
0x30, 0x21, 0xee, 0xee, 0xdc, 0x9e, 0xf3, 0x9d, 0xf6, 0xf6, 0x0e, 0xba, 0xe2, 0x52, 0xf2, 0x8c,
0x85, 0x49, 0x26, 0x17, 0x69, 0xb8, 0x04, 0x05, 0x52, 0x84, 0xcb, 0x7e, 0xb8, 0x62, 0xd3, 0x38,
0x65, 0x9a, 0x25, 0x1a, 0xa4, 0x20, 0x79, 0x21, 0xb5, 0xc4, 0x67, 0xa5, 0x96, 0x58, 0x2d, 0x29,
0xb5, 0x64, 0xd9, 0xf7, 0x2f, 0x2a, 0x06, 0xcd, 0x21, 0xa4, 0x42, 0x48, 0x4d, 0x8d, 0x49, 0x95,
0xae, 0xcb, 0xf7, 0x3a, 0x6a, 0x4f, 0xd8, 0xf4, 0x61, 0x03, 0xc3, 0xcf, 0xa8, 0x6d, 0xe8, 0x4c,
0x68, 0xd0, 0xc0, 0x94, 0xe7, 0x04, 0x6e, 0xaf, 0x35, 0x20, 0xe4, 0x30, 0x9d, 0x6c, 0x7b, 0xcd,
0xe1, 0xd1, 0xf8, 0xd6, 0x51, 0x6b, 0x55, 0x95, 0xc0, 0x14, 0x8e, 0x51, 0xe7, 0x6d, 0x91, 0x65,
0xf1, 0x9c, 0xea, 0x64, 0x06, 0x82, 0xc7, 0x30, 0xa7, 0x9c, 0x29, 0xaf, 0x66, 0xd1, 0x37, 0xc7,
0xa2, 0x47, 0xc6, 0x15, 0x61, 0x83, 0x7a, 0xaa, 0x48, 0xb6, 0xa5, 0x30, 0x43, 0xdd, 0x9c, 0x16,
0x1a, 0xe8, 0x7e, 0x86, 0xfb, 0x9b, 0x8c, 0xd3, 0x8a, 0xb6, 0x13, 0x03, 0xc8, 0xcf, 0x4d, 0x11,
0xaf, 0x40, 0xcf, 0xf6, 0x92, 0xea, 0x36, 0xe9, 0xfa, 0xd8, 0xa4, 0xb1, 0x09, 0xea, 0x5a, 0xde,
0x04, 0xf4, 0xec, 0x7b, 0x94, 0xff, 0x8a, 0x9a, 0x5f, 0xc3, 0xc4, 0xe7, 0xa8, 0x69, 0x7f, 0xc7,
0x3a, 0x86, 0xd4, 0x73, 0x02, 0xa7, 0xd7, 0x8c, 0x1a, 0x65, 0x63, 0x94, 0xe2, 0x0e, 0xfa, 0xa3,
0x12, 0x59, 0x30, 0xaf, 0x16, 0x38, 0xbd, 0x5a, 0x54, 0x1e, 0x70, 0x80, 0x5a, 0x29, 0x53, 0x49,
0x01, 0xb9, 0xc9, 0xf3, 0x5c, 0x6b, 0xda, 0x6e, 0xf9, 0x03, 0xd4, 0xd8, 0x7c, 0x2f, 0xfe, 0x8f,
0xdc, 0x45, 0x91, 0x55, 0x68, 0x53, 0x1e, 0xa6, 0xfa, 0x7d, 0xf4, 0xaf, 0x7a, 0xf3, 0x63, 0x2d,
0xc3, 0x02, 0xf9, 0x89, 0x9c, 0xff, 0x30, 0x94, 0xe1, 0xc9, 0xf6, 0x54, 0xc6, 0x66, 0x21, 0xc7,
0xce, 0xcb, 0x7d, 0x25, 0xe6, 0x32, 0xa3, 0x82, 0x13, 0x59, 0xf0, 0x90, 0x33, 0x61, 0xd7, 0x35,
0x2c, 0x1f, 0xd1, 0x1c, 0xd4, 0xee, 0x9d, 0xb8, 0x2b, 0xab, 0x0f, 0xc7, 0x99, 0xfe, 0xb5, 0xda,
0xdb, 0xcf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x66, 0xd9, 0xde, 0x3f, 0x3e, 0x03, 0x00, 0x00,
// 505 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x94, 0xd1, 0x8b, 0xd3, 0x4e,
0x10, 0xc7, 0x49, 0x7b, 0x77, 0xbf, 0x76, 0xdb, 0x1f, 0x7a, 0xcb, 0xe9, 0x85, 0xa8, 0x50, 0xf4,
0xa5, 0x88, 0x26, 0xdc, 0xf9, 0xa8, 0x4f, 0xa7, 0x87, 0x1c, 0x28, 0xd4, 0x28, 0x1c, 0xfa, 0xb2,
0x6e, 0x92, 0x35, 0x1d, 0xd8, 0x66, 0x43, 0x76, 0xd3, 0xd2, 0xff, 0xc4, 0xbf, 0xca, 0xbf, 0xc7,
0x47, 0x99, 0xdd, 0x8d, 0x94, 0xeb, 0x1d, 0xd4, 0x43, 0x7c, 0x9b, 0x99, 0xcc, 0xf7, 0xf3, 0xdd,
0x9d, 0x0c, 0x4b, 0x9e, 0x96, 0x4a, 0x95, 0x52, 0x24, 0xb9, 0x54, 0x6d, 0x91, 0x2c, 0x41, 0x83,
0xaa, 0x92, 0xe5, 0x49, 0xb2, 0x12, 0x19, 0x2b, 0x84, 0x11, 0xb9, 0x01, 0x55, 0xc5, 0x75, 0xa3,
0x8c, 0xa2, 0xf7, 0x5d, 0x6f, 0x6c, 0x7b, 0x63, 0xd7, 0x1b, 0x2f, 0x4f, 0xa2, 0x87, 0x9e, 0xc1,
0x6b, 0x48, 0x78, 0x55, 0x29, 0xc3, 0x51, 0xa4, 0x9d, 0xea, 0xf1, 0x8f, 0x01, 0x19, 0x5f, 0x8a,
0xec, 0x4d, 0x07, 0xa3, 0x1f, 0xc8, 0x18, 0xe9, 0xa2, 0x32, 0x60, 0x40, 0xe8, 0x30, 0x98, 0xf4,
0xa7, 0xa3, 0xd3, 0x38, 0xbe, 0x9e, 0x1e, 0x6f, 0x6a, 0x31, 0x39, 0x47, 0xdd, 0x3a, 0x1d, 0xad,
0x7c, 0x08, 0x42, 0x53, 0x46, 0x8e, 0xbe, 0xb5, 0x52, 0xb2, 0x05, 0x37, 0xf9, 0x1c, 0xaa, 0x92,
0xc1, 0x82, 0x97, 0x42, 0x87, 0x3d, 0x8b, 0x7e, 0xbe, 0x2b, 0xfa, 0x02, 0x55, 0x29, 0x45, 0xd4,
0x7b, 0x4f, 0xb2, 0x25, 0x4d, 0x05, 0x39, 0xae, 0x79, 0x63, 0x80, 0x6f, 0x7b, 0xf4, 0x6f, 0xe3,
0x71, 0xcf, 0xd3, 0xae, 0xd8, 0x00, 0x89, 0x6a, 0x0c, 0xd8, 0x0a, 0xcc, 0x7c, 0xcb, 0x69, 0xcf,
0x3a, 0x3d, 0xdb, 0xd5, 0x69, 0x86, 0x46, 0xc7, 0x96, 0x77, 0x09, 0x66, 0xbe, 0x7d, 0xa3, 0x25,
0xe8, 0x96, 0x4b, 0xb9, 0x66, 0x1a, 0x16, 0x20, 0x79, 0xd3, 0xf9, 0x1c, 0xdc, 0xea, 0x46, 0x1d,
0xed, 0xa3, 0x83, 0x79, 0x9b, 0xcf, 0xe4, 0x30, 0x13, 0xda, 0xb0, 0xb2, 0x15, 0x5a, 0x33, 0xc9,
0x33, 0x21, 0x75, 0x38, 0xf8, 0x33, 0x83, 0x77, 0xa8, 0x4a, 0xef, 0x20, 0xe7, 0x2d, 0x62, 0x6c,
0xae, 0xa3, 0xaf, 0x64, 0xf8, 0x7b, 0x1d, 0xe8, 0x03, 0x32, 0xb4, 0x0b, 0xb5, 0x66, 0x50, 0x84,
0xc1, 0x24, 0x98, 0x0e, 0xd3, 0x81, 0x2b, 0x5c, 0x14, 0xf4, 0x88, 0xec, 0xeb, 0x5c, 0x35, 0x22,
0xec, 0x4d, 0x82, 0x69, 0x2f, 0x75, 0x09, 0x9d, 0x90, 0x51, 0x21, 0x74, 0xde, 0x40, 0x8d, 0x46,
0x61, 0xdf, 0x8a, 0x36, 0x4b, 0xd1, 0x29, 0x19, 0x74, 0xf7, 0xa3, 0x77, 0x49, 0xbf, 0x6d, 0xa4,
0x47, 0x63, 0x78, 0x3d, 0x35, 0xfa, 0xde, 0x23, 0xff, 0xf9, 0xe1, 0xef, 0xaa, 0xa1, 0x8f, 0x08,
0xc1, 0xdf, 0xc4, 0x0c, 0x18, 0x29, 0xfc, 0x41, 0x86, 0x58, 0xf9, 0x84, 0x85, 0x1b, 0xb7, 0x7b,
0xef, 0x1f, 0x6c, 0xf7, 0xfe, 0xdf, 0xdb, 0xee, 0xe8, 0xdc, 0x8e, 0xd3, 0xfe, 0x3d, 0x1c, 0x84,
0x5d, 0x06, 0x3f, 0x1c, 0x97, 0xd0, 0x27, 0xe4, 0x7f, 0xc9, 0xab, 0xb2, 0xc5, 0x61, 0xe4, 0xaa,
0x70, 0x63, 0x1a, 0xa6, 0xe3, 0xae, 0xf8, 0x5a, 0x15, 0xe2, 0xac, 0x21, 0x51, 0xae, 0x16, 0x37,
0x9c, 0xe8, 0xec, 0x70, 0xf3, 0x48, 0x33, 0x7c, 0x81, 0x66, 0xc1, 0x97, 0x57, 0xbe, 0xb9, 0x54,
0x48, 0x8a, 0x55, 0x53, 0x26, 0xa5, 0xa8, 0xec, 0xfb, 0x94, 0xb8, 0x4f, 0xbc, 0x06, 0x7d, 0xf5,
0x11, 0x7c, 0xe9, 0xa2, 0x9f, 0x41, 0x90, 0x1d, 0xd8, 0xde, 0x17, 0xbf, 0x02, 0x00, 0x00, 0xff,
0xff, 0x1c, 0xe5, 0x3e, 0x5b, 0x2f, 0x05, 0x00, 0x00,
}

View File

@ -0,0 +1,183 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: google/cloud/vision/v1p2beta1/geometry.proto
/*
Package vision is a generated protocol buffer package.
It is generated from these files:
google/cloud/vision/v1p2beta1/geometry.proto
google/cloud/vision/v1p2beta1/image_annotator.proto
google/cloud/vision/v1p2beta1/text_annotation.proto
google/cloud/vision/v1p2beta1/web_detection.proto
It has these top-level messages:
Vertex
BoundingPoly
Position
Feature
ImageSource
Image
FaceAnnotation
LocationInfo
Property
EntityAnnotation
SafeSearchAnnotation
LatLongRect
ColorInfo
DominantColorsAnnotation
ImageProperties
CropHint
CropHintsAnnotation
CropHintsParams
WebDetectionParams
ImageContext
AnnotateImageRequest
ImageAnnotationContext
AnnotateImageResponse
BatchAnnotateImagesRequest
BatchAnnotateImagesResponse
AsyncAnnotateFileRequest
AsyncAnnotateFileResponse
AsyncBatchAnnotateFilesRequest
AsyncBatchAnnotateFilesResponse
InputConfig
OutputConfig
GcsSource
GcsDestination
OperationMetadata
TextAnnotation
Page
Block
Paragraph
Word
Symbol
WebDetection
*/
package vision
import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
// 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 vertex represents a 2D point in the image.
// NOTE: the vertex coordinates are in the same scale as the original image.
type Vertex struct {
// X coordinate.
X int32 `protobuf:"varint,1,opt,name=x" json:"x,omitempty"`
// Y coordinate.
Y int32 `protobuf:"varint,2,opt,name=y" json:"y,omitempty"`
}
func (m *Vertex) Reset() { *m = Vertex{} }
func (m *Vertex) String() string { return proto.CompactTextString(m) }
func (*Vertex) ProtoMessage() {}
func (*Vertex) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
func (m *Vertex) GetX() int32 {
if m != nil {
return m.X
}
return 0
}
func (m *Vertex) GetY() int32 {
if m != nil {
return m.Y
}
return 0
}
// A bounding polygon for the detected image annotation.
type BoundingPoly struct {
// The bounding polygon vertices.
Vertices []*Vertex `protobuf:"bytes,1,rep,name=vertices" json:"vertices,omitempty"`
}
func (m *BoundingPoly) Reset() { *m = BoundingPoly{} }
func (m *BoundingPoly) String() string { return proto.CompactTextString(m) }
func (*BoundingPoly) ProtoMessage() {}
func (*BoundingPoly) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
func (m *BoundingPoly) GetVertices() []*Vertex {
if m != nil {
return m.Vertices
}
return nil
}
// A 3D position in the image, used primarily for Face detection landmarks.
// A valid Position must have both x and y coordinates.
// The position coordinates are in the same scale as the original image.
type Position struct {
// X coordinate.
X float32 `protobuf:"fixed32,1,opt,name=x" json:"x,omitempty"`
// Y coordinate.
Y float32 `protobuf:"fixed32,2,opt,name=y" json:"y,omitempty"`
// Z coordinate (or depth).
Z float32 `protobuf:"fixed32,3,opt,name=z" json:"z,omitempty"`
}
func (m *Position) Reset() { *m = Position{} }
func (m *Position) String() string { return proto.CompactTextString(m) }
func (*Position) ProtoMessage() {}
func (*Position) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
func (m *Position) GetX() float32 {
if m != nil {
return m.X
}
return 0
}
func (m *Position) GetY() float32 {
if m != nil {
return m.Y
}
return 0
}
func (m *Position) GetZ() float32 {
if m != nil {
return m.Z
}
return 0
}
func init() {
proto.RegisterType((*Vertex)(nil), "google.cloud.vision.v1p2beta1.Vertex")
proto.RegisterType((*BoundingPoly)(nil), "google.cloud.vision.v1p2beta1.BoundingPoly")
proto.RegisterType((*Position)(nil), "google.cloud.vision.v1p2beta1.Position")
}
func init() { proto.RegisterFile("google/cloud/vision/v1p2beta1/geometry.proto", fileDescriptor0) }
var fileDescriptor0 = []byte{
// 243 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x90, 0xb1, 0x4b, 0xc3, 0x40,
0x14, 0x87, 0x79, 0x29, 0x96, 0x72, 0xd6, 0x25, 0x53, 0x16, 0xa1, 0x06, 0x85, 0x0e, 0x72, 0x47,
0xab, 0x9b, 0x93, 0x71, 0x70, 0x8d, 0x19, 0x1c, 0xdc, 0xd2, 0xf4, 0xf1, 0x38, 0x48, 0xef, 0x85,
0xcb, 0x35, 0xf4, 0x8a, 0x7f, 0xb8, 0xa3, 0xf4, 0xae, 0x54, 0x1c, 0xda, 0xf1, 0x77, 0xf7, 0x3d,
0x3e, 0xf8, 0xc4, 0x23, 0x31, 0x53, 0x8b, 0xaa, 0x69, 0x79, 0xbb, 0x56, 0x83, 0xee, 0x35, 0x1b,
0x35, 0x2c, 0xba, 0xe5, 0x0a, 0x5d, 0xbd, 0x50, 0x84, 0xbc, 0x41, 0x67, 0xbd, 0xec, 0x2c, 0x3b,
0x4e, 0x6f, 0x23, 0x2d, 0x03, 0x2d, 0x23, 0x2d, 0x4f, 0x74, 0x7e, 0x2f, 0xc6, 0x9f, 0x68, 0x1d,
0xee, 0xd2, 0xa9, 0x80, 0x5d, 0x06, 0x33, 0x98, 0x5f, 0x55, 0x10, 0x96, 0xcf, 0x92, 0xb8, 0x7c,
0xfe, 0x21, 0xa6, 0x05, 0x6f, 0xcd, 0x5a, 0x1b, 0x2a, 0xb9, 0xf5, 0xe9, 0xab, 0x98, 0x0c, 0x68,
0x9d, 0x6e, 0xb0, 0xcf, 0x60, 0x36, 0x9a, 0x5f, 0x2f, 0x1f, 0xe4, 0x45, 0x8f, 0x8c, 0x92, 0xea,
0x74, 0x96, 0x3f, 0x8b, 0x49, 0xc9, 0xbd, 0x76, 0x9a, 0xcd, 0x9f, 0x3a, 0xf9, 0xa7, 0x4e, 0x2a,
0xf0, 0x87, 0xb5, 0xcf, 0x46, 0x71, 0xed, 0x8b, 0x6f, 0x71, 0xd7, 0xf0, 0xe6, 0xb2, 0xab, 0xb8,
0x79, 0x3f, 0x26, 0x28, 0x0f, 0x05, 0x4a, 0xf8, 0x7a, 0x3b, 0xf2, 0xc4, 0x6d, 0x6d, 0x48, 0xb2,
0x25, 0x45, 0x68, 0x42, 0x1f, 0x15, 0xbf, 0xea, 0x4e, 0xf7, 0x67, 0x82, 0xbe, 0xc4, 0x87, 0x1f,
0x80, 0xd5, 0x38, 0x9c, 0x3c, 0xfd, 0x06, 0x00, 0x00, 0xff, 0xff, 0x5a, 0xa2, 0xee, 0x2b, 0x82,
0x01, 0x00, 0x00,
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,593 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: google/cloud/vision/v1p2beta1/text_annotation.proto
package vision
import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
import _ "google.golang.org/genproto/googleapis/api/annotations"
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// Enum to denote the type of break found. New line, space etc.
type TextAnnotation_DetectedBreak_BreakType int32
const (
// Unknown break label type.
TextAnnotation_DetectedBreak_UNKNOWN TextAnnotation_DetectedBreak_BreakType = 0
// Regular space.
TextAnnotation_DetectedBreak_SPACE TextAnnotation_DetectedBreak_BreakType = 1
// Sure space (very wide).
TextAnnotation_DetectedBreak_SURE_SPACE TextAnnotation_DetectedBreak_BreakType = 2
// Line-wrapping break.
TextAnnotation_DetectedBreak_EOL_SURE_SPACE TextAnnotation_DetectedBreak_BreakType = 3
// End-line hyphen that is not present in text; does not co-occur with
// `SPACE`, `LEADER_SPACE`, or `LINE_BREAK`.
TextAnnotation_DetectedBreak_HYPHEN TextAnnotation_DetectedBreak_BreakType = 4
// Line break that ends a paragraph.
TextAnnotation_DetectedBreak_LINE_BREAK TextAnnotation_DetectedBreak_BreakType = 5
)
var TextAnnotation_DetectedBreak_BreakType_name = map[int32]string{
0: "UNKNOWN",
1: "SPACE",
2: "SURE_SPACE",
3: "EOL_SURE_SPACE",
4: "HYPHEN",
5: "LINE_BREAK",
}
var TextAnnotation_DetectedBreak_BreakType_value = map[string]int32{
"UNKNOWN": 0,
"SPACE": 1,
"SURE_SPACE": 2,
"EOL_SURE_SPACE": 3,
"HYPHEN": 4,
"LINE_BREAK": 5,
}
func (x TextAnnotation_DetectedBreak_BreakType) String() string {
return proto.EnumName(TextAnnotation_DetectedBreak_BreakType_name, int32(x))
}
func (TextAnnotation_DetectedBreak_BreakType) EnumDescriptor() ([]byte, []int) {
return fileDescriptor2, []int{0, 1, 0}
}
// Type of a block (text, image etc) as identified by OCR.
type Block_BlockType int32
const (
// Unknown block type.
Block_UNKNOWN Block_BlockType = 0
// Regular text block.
Block_TEXT Block_BlockType = 1
// Table block.
Block_TABLE Block_BlockType = 2
// Image block.
Block_PICTURE Block_BlockType = 3
// Horizontal/vertical line box.
Block_RULER Block_BlockType = 4
// Barcode block.
Block_BARCODE Block_BlockType = 5
)
var Block_BlockType_name = map[int32]string{
0: "UNKNOWN",
1: "TEXT",
2: "TABLE",
3: "PICTURE",
4: "RULER",
5: "BARCODE",
}
var Block_BlockType_value = map[string]int32{
"UNKNOWN": 0,
"TEXT": 1,
"TABLE": 2,
"PICTURE": 3,
"RULER": 4,
"BARCODE": 5,
}
func (x Block_BlockType) String() string {
return proto.EnumName(Block_BlockType_name, int32(x))
}
func (Block_BlockType) EnumDescriptor() ([]byte, []int) { return fileDescriptor2, []int{2, 0} }
// TextAnnotation contains a structured representation of OCR extracted text.
// The hierarchy of an OCR extracted text structure is like this:
// TextAnnotation -> Page -> Block -> Paragraph -> Word -> Symbol
// Each structural component, starting from Page, may further have their own
// properties. Properties describe detected languages, breaks etc.. Please refer
// to the [TextAnnotation.TextProperty][google.cloud.vision.v1p2beta1.TextAnnotation.TextProperty] message definition below for more
// detail.
type TextAnnotation struct {
// List of pages detected by OCR.
Pages []*Page `protobuf:"bytes,1,rep,name=pages" json:"pages,omitempty"`
// UTF-8 text detected on the pages.
Text string `protobuf:"bytes,2,opt,name=text" json:"text,omitempty"`
}
func (m *TextAnnotation) Reset() { *m = TextAnnotation{} }
func (m *TextAnnotation) String() string { return proto.CompactTextString(m) }
func (*TextAnnotation) ProtoMessage() {}
func (*TextAnnotation) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0} }
func (m *TextAnnotation) GetPages() []*Page {
if m != nil {
return m.Pages
}
return nil
}
func (m *TextAnnotation) GetText() string {
if m != nil {
return m.Text
}
return ""
}
// Detected language for a structural component.
type TextAnnotation_DetectedLanguage struct {
// The BCP-47 language code, such as "en-US" or "sr-Latn". For more
// information, see
// http://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
LanguageCode string `protobuf:"bytes,1,opt,name=language_code,json=languageCode" json:"language_code,omitempty"`
// Confidence of detected language. Range [0, 1].
Confidence float32 `protobuf:"fixed32,2,opt,name=confidence" json:"confidence,omitempty"`
}
func (m *TextAnnotation_DetectedLanguage) Reset() { *m = TextAnnotation_DetectedLanguage{} }
func (m *TextAnnotation_DetectedLanguage) String() string { return proto.CompactTextString(m) }
func (*TextAnnotation_DetectedLanguage) ProtoMessage() {}
func (*TextAnnotation_DetectedLanguage) Descriptor() ([]byte, []int) {
return fileDescriptor2, []int{0, 0}
}
func (m *TextAnnotation_DetectedLanguage) GetLanguageCode() string {
if m != nil {
return m.LanguageCode
}
return ""
}
func (m *TextAnnotation_DetectedLanguage) GetConfidence() float32 {
if m != nil {
return m.Confidence
}
return 0
}
// Detected start or end of a structural component.
type TextAnnotation_DetectedBreak struct {
// Detected break type.
Type TextAnnotation_DetectedBreak_BreakType `protobuf:"varint,1,opt,name=type,enum=google.cloud.vision.v1p2beta1.TextAnnotation_DetectedBreak_BreakType" json:"type,omitempty"`
// True if break prepends the element.
IsPrefix bool `protobuf:"varint,2,opt,name=is_prefix,json=isPrefix" json:"is_prefix,omitempty"`
}
func (m *TextAnnotation_DetectedBreak) Reset() { *m = TextAnnotation_DetectedBreak{} }
func (m *TextAnnotation_DetectedBreak) String() string { return proto.CompactTextString(m) }
func (*TextAnnotation_DetectedBreak) ProtoMessage() {}
func (*TextAnnotation_DetectedBreak) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0, 1} }
func (m *TextAnnotation_DetectedBreak) GetType() TextAnnotation_DetectedBreak_BreakType {
if m != nil {
return m.Type
}
return TextAnnotation_DetectedBreak_UNKNOWN
}
func (m *TextAnnotation_DetectedBreak) GetIsPrefix() bool {
if m != nil {
return m.IsPrefix
}
return false
}
// Additional information detected on the structural component.
type TextAnnotation_TextProperty struct {
// A list of detected languages together with confidence.
DetectedLanguages []*TextAnnotation_DetectedLanguage `protobuf:"bytes,1,rep,name=detected_languages,json=detectedLanguages" json:"detected_languages,omitempty"`
// Detected start or end of a text segment.
DetectedBreak *TextAnnotation_DetectedBreak `protobuf:"bytes,2,opt,name=detected_break,json=detectedBreak" json:"detected_break,omitempty"`
}
func (m *TextAnnotation_TextProperty) Reset() { *m = TextAnnotation_TextProperty{} }
func (m *TextAnnotation_TextProperty) String() string { return proto.CompactTextString(m) }
func (*TextAnnotation_TextProperty) ProtoMessage() {}
func (*TextAnnotation_TextProperty) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0, 2} }
func (m *TextAnnotation_TextProperty) GetDetectedLanguages() []*TextAnnotation_DetectedLanguage {
if m != nil {
return m.DetectedLanguages
}
return nil
}
func (m *TextAnnotation_TextProperty) GetDetectedBreak() *TextAnnotation_DetectedBreak {
if m != nil {
return m.DetectedBreak
}
return nil
}
// Detected page from OCR.
type Page struct {
// Additional information detected on the page.
Property *TextAnnotation_TextProperty `protobuf:"bytes,1,opt,name=property" json:"property,omitempty"`
// Page width. For PDFs the unit is points. For images (including
// TIFFs) the unit is pixels.
Width int32 `protobuf:"varint,2,opt,name=width" json:"width,omitempty"`
// Page height. For PDFs the unit is points. For images (including
// TIFFs) the unit is pixels.
Height int32 `protobuf:"varint,3,opt,name=height" json:"height,omitempty"`
// List of blocks of text, images etc on this page.
Blocks []*Block `protobuf:"bytes,4,rep,name=blocks" json:"blocks,omitempty"`
// Confidence of the OCR results on the page. Range [0, 1].
Confidence float32 `protobuf:"fixed32,5,opt,name=confidence" json:"confidence,omitempty"`
}
func (m *Page) Reset() { *m = Page{} }
func (m *Page) String() string { return proto.CompactTextString(m) }
func (*Page) ProtoMessage() {}
func (*Page) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{1} }
func (m *Page) GetProperty() *TextAnnotation_TextProperty {
if m != nil {
return m.Property
}
return nil
}
func (m *Page) GetWidth() int32 {
if m != nil {
return m.Width
}
return 0
}
func (m *Page) GetHeight() int32 {
if m != nil {
return m.Height
}
return 0
}
func (m *Page) GetBlocks() []*Block {
if m != nil {
return m.Blocks
}
return nil
}
func (m *Page) GetConfidence() float32 {
if m != nil {
return m.Confidence
}
return 0
}
// Logical element on the page.
type Block struct {
// Additional information detected for the block.
Property *TextAnnotation_TextProperty `protobuf:"bytes,1,opt,name=property" json:"property,omitempty"`
// The bounding box for the block.
// The vertices are in the order of top-left, top-right, bottom-right,
// bottom-left. When a rotation of the bounding box is detected the rotation
// is represented as around the top-left corner as defined when the text is
// read in the 'natural' orientation.
// For example:
//
// * when the text is horizontal it might look like:
//
// 0----1
// | |
// 3----2
//
// * when it's rotated 180 degrees around the top-left corner it becomes:
//
// 2----3
// | |
// 1----0
//
// and the vertice order will still be (0, 1, 2, 3).
BoundingBox *BoundingPoly `protobuf:"bytes,2,opt,name=bounding_box,json=boundingBox" json:"bounding_box,omitempty"`
// List of paragraphs in this block (if this blocks is of type text).
Paragraphs []*Paragraph `protobuf:"bytes,3,rep,name=paragraphs" json:"paragraphs,omitempty"`
// Detected block type (text, image etc) for this block.
BlockType Block_BlockType `protobuf:"varint,4,opt,name=block_type,json=blockType,enum=google.cloud.vision.v1p2beta1.Block_BlockType" json:"block_type,omitempty"`
// Confidence of the OCR results on the block. Range [0, 1].
Confidence float32 `protobuf:"fixed32,5,opt,name=confidence" json:"confidence,omitempty"`
}
func (m *Block) Reset() { *m = Block{} }
func (m *Block) String() string { return proto.CompactTextString(m) }
func (*Block) ProtoMessage() {}
func (*Block) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{2} }
func (m *Block) GetProperty() *TextAnnotation_TextProperty {
if m != nil {
return m.Property
}
return nil
}
func (m *Block) GetBoundingBox() *BoundingPoly {
if m != nil {
return m.BoundingBox
}
return nil
}
func (m *Block) GetParagraphs() []*Paragraph {
if m != nil {
return m.Paragraphs
}
return nil
}
func (m *Block) GetBlockType() Block_BlockType {
if m != nil {
return m.BlockType
}
return Block_UNKNOWN
}
func (m *Block) GetConfidence() float32 {
if m != nil {
return m.Confidence
}
return 0
}
// Structural unit of text representing a number of words in certain order.
type Paragraph struct {
// Additional information detected for the paragraph.
Property *TextAnnotation_TextProperty `protobuf:"bytes,1,opt,name=property" json:"property,omitempty"`
// The bounding box for the paragraph.
// The vertices are in the order of top-left, top-right, bottom-right,
// bottom-left. When a rotation of the bounding box is detected the rotation
// is represented as around the top-left corner as defined when the text is
// read in the 'natural' orientation.
// For example:
// * when the text is horizontal it might look like:
// 0----1
// | |
// 3----2
// * when it's rotated 180 degrees around the top-left corner it becomes:
// 2----3
// | |
// 1----0
// and the vertice order will still be (0, 1, 2, 3).
BoundingBox *BoundingPoly `protobuf:"bytes,2,opt,name=bounding_box,json=boundingBox" json:"bounding_box,omitempty"`
// List of words in this paragraph.
Words []*Word `protobuf:"bytes,3,rep,name=words" json:"words,omitempty"`
// Confidence of the OCR results for the paragraph. Range [0, 1].
Confidence float32 `protobuf:"fixed32,4,opt,name=confidence" json:"confidence,omitempty"`
}
func (m *Paragraph) Reset() { *m = Paragraph{} }
func (m *Paragraph) String() string { return proto.CompactTextString(m) }
func (*Paragraph) ProtoMessage() {}
func (*Paragraph) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{3} }
func (m *Paragraph) GetProperty() *TextAnnotation_TextProperty {
if m != nil {
return m.Property
}
return nil
}
func (m *Paragraph) GetBoundingBox() *BoundingPoly {
if m != nil {
return m.BoundingBox
}
return nil
}
func (m *Paragraph) GetWords() []*Word {
if m != nil {
return m.Words
}
return nil
}
func (m *Paragraph) GetConfidence() float32 {
if m != nil {
return m.Confidence
}
return 0
}
// A word representation.
type Word struct {
// Additional information detected for the word.
Property *TextAnnotation_TextProperty `protobuf:"bytes,1,opt,name=property" json:"property,omitempty"`
// The bounding box for the word.
// The vertices are in the order of top-left, top-right, bottom-right,
// bottom-left. When a rotation of the bounding box is detected the rotation
// is represented as around the top-left corner as defined when the text is
// read in the 'natural' orientation.
// For example:
// * when the text is horizontal it might look like:
// 0----1
// | |
// 3----2
// * when it's rotated 180 degrees around the top-left corner it becomes:
// 2----3
// | |
// 1----0
// and the vertice order will still be (0, 1, 2, 3).
BoundingBox *BoundingPoly `protobuf:"bytes,2,opt,name=bounding_box,json=boundingBox" json:"bounding_box,omitempty"`
// List of symbols in the word.
// The order of the symbols follows the natural reading order.
Symbols []*Symbol `protobuf:"bytes,3,rep,name=symbols" json:"symbols,omitempty"`
// Confidence of the OCR results for the word. Range [0, 1].
Confidence float32 `protobuf:"fixed32,4,opt,name=confidence" json:"confidence,omitempty"`
}
func (m *Word) Reset() { *m = Word{} }
func (m *Word) String() string { return proto.CompactTextString(m) }
func (*Word) ProtoMessage() {}
func (*Word) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{4} }
func (m *Word) GetProperty() *TextAnnotation_TextProperty {
if m != nil {
return m.Property
}
return nil
}
func (m *Word) GetBoundingBox() *BoundingPoly {
if m != nil {
return m.BoundingBox
}
return nil
}
func (m *Word) GetSymbols() []*Symbol {
if m != nil {
return m.Symbols
}
return nil
}
func (m *Word) GetConfidence() float32 {
if m != nil {
return m.Confidence
}
return 0
}
// A single symbol representation.
type Symbol struct {
// Additional information detected for the symbol.
Property *TextAnnotation_TextProperty `protobuf:"bytes,1,opt,name=property" json:"property,omitempty"`
// The bounding box for the symbol.
// The vertices are in the order of top-left, top-right, bottom-right,
// bottom-left. When a rotation of the bounding box is detected the rotation
// is represented as around the top-left corner as defined when the text is
// read in the 'natural' orientation.
// For example:
// * when the text is horizontal it might look like:
// 0----1
// | |
// 3----2
// * when it's rotated 180 degrees around the top-left corner it becomes:
// 2----3
// | |
// 1----0
// and the vertice order will still be (0, 1, 2, 3).
BoundingBox *BoundingPoly `protobuf:"bytes,2,opt,name=bounding_box,json=boundingBox" json:"bounding_box,omitempty"`
// The actual UTF-8 representation of the symbol.
Text string `protobuf:"bytes,3,opt,name=text" json:"text,omitempty"`
// Confidence of the OCR results for the symbol. Range [0, 1].
Confidence float32 `protobuf:"fixed32,4,opt,name=confidence" json:"confidence,omitempty"`
}
func (m *Symbol) Reset() { *m = Symbol{} }
func (m *Symbol) String() string { return proto.CompactTextString(m) }
func (*Symbol) ProtoMessage() {}
func (*Symbol) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{5} }
func (m *Symbol) GetProperty() *TextAnnotation_TextProperty {
if m != nil {
return m.Property
}
return nil
}
func (m *Symbol) GetBoundingBox() *BoundingPoly {
if m != nil {
return m.BoundingBox
}
return nil
}
func (m *Symbol) GetText() string {
if m != nil {
return m.Text
}
return ""
}
func (m *Symbol) GetConfidence() float32 {
if m != nil {
return m.Confidence
}
return 0
}
func init() {
proto.RegisterType((*TextAnnotation)(nil), "google.cloud.vision.v1p2beta1.TextAnnotation")
proto.RegisterType((*TextAnnotation_DetectedLanguage)(nil), "google.cloud.vision.v1p2beta1.TextAnnotation.DetectedLanguage")
proto.RegisterType((*TextAnnotation_DetectedBreak)(nil), "google.cloud.vision.v1p2beta1.TextAnnotation.DetectedBreak")
proto.RegisterType((*TextAnnotation_TextProperty)(nil), "google.cloud.vision.v1p2beta1.TextAnnotation.TextProperty")
proto.RegisterType((*Page)(nil), "google.cloud.vision.v1p2beta1.Page")
proto.RegisterType((*Block)(nil), "google.cloud.vision.v1p2beta1.Block")
proto.RegisterType((*Paragraph)(nil), "google.cloud.vision.v1p2beta1.Paragraph")
proto.RegisterType((*Word)(nil), "google.cloud.vision.v1p2beta1.Word")
proto.RegisterType((*Symbol)(nil), "google.cloud.vision.v1p2beta1.Symbol")
proto.RegisterEnum("google.cloud.vision.v1p2beta1.TextAnnotation_DetectedBreak_BreakType", TextAnnotation_DetectedBreak_BreakType_name, TextAnnotation_DetectedBreak_BreakType_value)
proto.RegisterEnum("google.cloud.vision.v1p2beta1.Block_BlockType", Block_BlockType_name, Block_BlockType_value)
}
func init() {
proto.RegisterFile("google/cloud/vision/v1p2beta1/text_annotation.proto", fileDescriptor2)
}
var fileDescriptor2 = []byte{
// 774 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x56, 0x4f, 0x6f, 0xd3, 0x48,
0x14, 0x5f, 0x27, 0x76, 0x1a, 0xbf, 0xb4, 0x91, 0x77, 0x76, 0xb5, 0x8a, 0xb2, 0xbb, 0xa8, 0xa4,
0x20, 0x55, 0x02, 0x39, 0x6a, 0x7a, 0x2a, 0x45, 0xa0, 0x38, 0xb5, 0xd4, 0xaa, 0x21, 0xb5, 0xa6,
0x09, 0xa5, 0x5c, 0x2c, 0xff, 0x99, 0x3a, 0x56, 0x13, 0x8f, 0x65, 0xbb, 0x6d, 0x72, 0xe5, 0x8a,
0x04, 0x5f, 0x88, 0x2f, 0x83, 0xc4, 0x09, 0xf1, 0x01, 0x38, 0x22, 0x8f, 0xed, 0x34, 0x09, 0xa2,
0xe6, 0x8f, 0x38, 0xf4, 0x12, 0xcd, 0x7b, 0x79, 0xbf, 0x37, 0xef, 0xf7, 0x7b, 0xf3, 0x3c, 0x03,
0xdb, 0x0e, 0xa5, 0xce, 0x88, 0x34, 0xad, 0x11, 0xbd, 0xb0, 0x9b, 0x97, 0x6e, 0xe8, 0x52, 0xaf,
0x79, 0xb9, 0xe5, 0xb7, 0x4c, 0x12, 0x19, 0x5b, 0xcd, 0x88, 0x4c, 0x22, 0xdd, 0xf0, 0x3c, 0x1a,
0x19, 0x91, 0x4b, 0x3d, 0xd9, 0x0f, 0x68, 0x44, 0xd1, 0xff, 0x09, 0x48, 0x66, 0x20, 0x39, 0x01,
0xc9, 0x33, 0x50, 0xfd, 0xbf, 0x34, 0xa7, 0xe1, 0xbb, 0xcd, 0x6b, 0x6c, 0x98, 0x80, 0xeb, 0x0f,
0x6f, 0xde, 0xd1, 0x21, 0x74, 0x4c, 0xa2, 0x60, 0x9a, 0x44, 0x37, 0x5e, 0x0b, 0x50, 0xed, 0x93,
0x49, 0xd4, 0x9e, 0xe5, 0x41, 0x3b, 0x20, 0xf8, 0x86, 0x43, 0xc2, 0x1a, 0xb7, 0x5e, 0xdc, 0xac,
0xb4, 0x36, 0xe4, 0x1b, 0xab, 0x91, 0x35, 0xc3, 0x21, 0x38, 0x41, 0x20, 0x04, 0x7c, 0xcc, 0xa8,
0x56, 0x58, 0xe7, 0x36, 0x45, 0xcc, 0xd6, 0xf5, 0x13, 0x90, 0xf6, 0x48, 0x44, 0xac, 0x88, 0xd8,
0x5d, 0xc3, 0x73, 0x2e, 0x0c, 0x87, 0xa0, 0x0d, 0x58, 0x1b, 0xa5, 0x6b, 0xdd, 0xa2, 0x36, 0xa9,
0x71, 0x0c, 0xb0, 0x9a, 0x39, 0x3b, 0xd4, 0x26, 0xe8, 0x0e, 0x80, 0x45, 0xbd, 0x33, 0xd7, 0x26,
0x9e, 0x45, 0x58, 0xca, 0x02, 0x9e, 0xf3, 0xd4, 0x3f, 0x71, 0xb0, 0x96, 0x65, 0x56, 0x02, 0x62,
0x9c, 0xa3, 0x53, 0xe0, 0xa3, 0xa9, 0x9f, 0x64, 0xab, 0xb6, 0xd4, 0x9c, 0xc2, 0x17, 0x69, 0xcb,
0x0b, 0xa9, 0x64, 0xf6, 0xdb, 0x9f, 0xfa, 0x04, 0xb3, 0x94, 0xe8, 0x5f, 0x10, 0xdd, 0x50, 0xf7,
0x03, 0x72, 0xe6, 0x4e, 0x58, 0x2d, 0x65, 0x5c, 0x76, 0x43, 0x8d, 0xd9, 0x0d, 0x0b, 0xc4, 0x59,
0x3c, 0xaa, 0xc0, 0xca, 0xa0, 0x77, 0xd8, 0x3b, 0x3a, 0xe9, 0x49, 0x7f, 0x20, 0x11, 0x84, 0x63,
0xad, 0xdd, 0x51, 0x25, 0x0e, 0x55, 0x01, 0x8e, 0x07, 0x58, 0xd5, 0x13, 0xbb, 0x80, 0x10, 0x54,
0xd5, 0xa3, 0xae, 0x3e, 0xe7, 0x2b, 0x22, 0x80, 0xd2, 0xfe, 0xa9, 0xb6, 0xaf, 0xf6, 0x24, 0x3e,
0x8e, 0xef, 0x1e, 0xf4, 0x54, 0x5d, 0xc1, 0x6a, 0xfb, 0x50, 0x12, 0xea, 0xef, 0x39, 0x58, 0x8d,
0x4b, 0xd6, 0x02, 0xea, 0x93, 0x20, 0x9a, 0xa2, 0x31, 0x20, 0x3b, 0xad, 0x59, 0xcf, 0x84, 0xcb,
0x9a, 0xf6, 0xe4, 0xe7, 0xb8, 0x67, 0x0d, 0xc2, 0x7f, 0xda, 0x4b, 0x9e, 0x10, 0x99, 0x50, 0x9d,
0x6d, 0x67, 0xc6, 0x6c, 0x99, 0x0c, 0x95, 0xd6, 0xee, 0x2f, 0xc8, 0x8c, 0xd7, 0xec, 0x79, 0xb3,
0xf1, 0x91, 0x03, 0x3e, 0x3e, 0x4f, 0xe8, 0x39, 0x94, 0xfd, 0x94, 0x27, 0xeb, 0x66, 0xa5, 0xf5,
0xe8, 0xc7, 0xb6, 0x99, 0x57, 0x0a, 0xcf, 0x72, 0xa1, 0xbf, 0x41, 0xb8, 0x72, 0xed, 0x68, 0xc8,
0x6a, 0x17, 0x70, 0x62, 0xa0, 0x7f, 0xa0, 0x34, 0x24, 0xae, 0x33, 0x8c, 0x6a, 0x45, 0xe6, 0x4e,
0x2d, 0xf4, 0x18, 0x4a, 0xe6, 0x88, 0x5a, 0xe7, 0x61, 0x8d, 0x67, 0xaa, 0xde, 0xcb, 0xa9, 0x41,
0x89, 0x83, 0x71, 0x8a, 0x59, 0x3a, 0xbf, 0xc2, 0xf2, 0xf9, 0x6d, 0xbc, 0x2b, 0x82, 0xc0, 0x10,
0xbf, 0x8d, 0x6d, 0x0f, 0x56, 0x4d, 0x7a, 0xe1, 0xd9, 0xae, 0xe7, 0xe8, 0x26, 0x9d, 0xa4, 0x0d,
0x7b, 0x90, 0xc7, 0x22, 0x85, 0x68, 0x74, 0x34, 0xc5, 0x95, 0x2c, 0x81, 0x42, 0x27, 0x68, 0x1f,
0xc0, 0x37, 0x02, 0xc3, 0x09, 0x0c, 0x7f, 0x18, 0xd6, 0x8a, 0x4c, 0x93, 0xcd, 0xdc, 0xcf, 0x43,
0x0a, 0xc0, 0x73, 0x58, 0xf4, 0x0c, 0x80, 0xa9, 0xa4, 0xb3, 0x79, 0xe5, 0xd9, 0xbc, 0xca, 0xdf,
0xa3, 0x6e, 0xf2, 0xcb, 0x06, 0x53, 0x34, 0xb3, 0x65, 0xae, 0xd4, 0x18, 0xc4, 0x19, 0x6e, 0x71,
0x40, 0xcb, 0xc0, 0xf7, 0xd5, 0x17, 0x7d, 0x89, 0x8b, 0x47, 0xb5, 0xdf, 0x56, 0xba, 0xf1, 0x68,
0x56, 0x60, 0x45, 0x3b, 0xe8, 0xf4, 0x07, 0x38, 0x9e, 0x49, 0x11, 0x04, 0x3c, 0xe8, 0xaa, 0x58,
0xe2, 0x63, 0xbf, 0xd2, 0xc6, 0x9d, 0xa3, 0x3d, 0x55, 0x12, 0x1a, 0x6f, 0x0a, 0x20, 0xce, 0xc8,
0xdd, 0x9a, 0x16, 0xee, 0x80, 0x70, 0x45, 0x03, 0x3b, 0xeb, 0x5e, 0xde, 0xc7, 0xfd, 0x84, 0x06,
0x36, 0x4e, 0x10, 0x4b, 0x22, 0xf3, 0x5f, 0x89, 0xfc, 0xb6, 0x00, 0x7c, 0x1c, 0x7f, 0x6b, 0xb4,
0x78, 0x0a, 0x2b, 0xe1, 0x74, 0x6c, 0xd2, 0x51, 0xa6, 0xc6, 0xfd, 0x9c, 0x54, 0xc7, 0x2c, 0x1a,
0x67, 0xa8, 0x5c, 0x45, 0x3e, 0x70, 0x50, 0x4a, 0x30, 0xb7, 0x46, 0x93, 0xec, 0x06, 0x2f, 0x5e,
0xdf, 0xe0, 0x79, 0x34, 0x95, 0x57, 0x1c, 0xdc, 0xb5, 0xe8, 0xf8, 0xe6, 0x3d, 0x95, 0xbf, 0x16,
0x09, 0x69, 0xf1, 0xf3, 0x43, 0xe3, 0x5e, 0x76, 0x52, 0x94, 0x43, 0xe3, 0x3b, 0x4c, 0xa6, 0x81,
0xd3, 0x74, 0x88, 0xc7, 0x1e, 0x27, 0xcd, 0xe4, 0x2f, 0xc3, 0x77, 0xc3, 0x6f, 0xbc, 0x66, 0x76,
0x13, 0xc7, 0x67, 0x8e, 0x33, 0x4b, 0x0c, 0xb2, 0xfd, 0x25, 0x00, 0x00, 0xff, 0xff, 0xce, 0x91,
0x71, 0x97, 0x71, 0x09, 0x00, 0x00,
}

View File

@ -0,0 +1,278 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: google/cloud/vision/v1p2beta1/web_detection.proto
package vision
import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
import _ "google.golang.org/genproto/googleapis/api/annotations"
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// Relevant information for the image from the Internet.
type WebDetection struct {
// Deduced entities from similar images on the Internet.
WebEntities []*WebDetection_WebEntity `protobuf:"bytes,1,rep,name=web_entities,json=webEntities" json:"web_entities,omitempty"`
// Fully matching images from the Internet.
// Can include resized copies of the query image.
FullMatchingImages []*WebDetection_WebImage `protobuf:"bytes,2,rep,name=full_matching_images,json=fullMatchingImages" json:"full_matching_images,omitempty"`
// Partial matching images from the Internet.
// Those images are similar enough to share some key-point features. For
// example an original image will likely have partial matching for its crops.
PartialMatchingImages []*WebDetection_WebImage `protobuf:"bytes,3,rep,name=partial_matching_images,json=partialMatchingImages" json:"partial_matching_images,omitempty"`
// Web pages containing the matching images from the Internet.
PagesWithMatchingImages []*WebDetection_WebPage `protobuf:"bytes,4,rep,name=pages_with_matching_images,json=pagesWithMatchingImages" json:"pages_with_matching_images,omitempty"`
// The visually similar image results.
VisuallySimilarImages []*WebDetection_WebImage `protobuf:"bytes,6,rep,name=visually_similar_images,json=visuallySimilarImages" json:"visually_similar_images,omitempty"`
// The service's best guess as to the topic of the request image.
// Inferred from similar images on the open web.
BestGuessLabels []*WebDetection_WebLabel `protobuf:"bytes,8,rep,name=best_guess_labels,json=bestGuessLabels" json:"best_guess_labels,omitempty"`
}
func (m *WebDetection) Reset() { *m = WebDetection{} }
func (m *WebDetection) String() string { return proto.CompactTextString(m) }
func (*WebDetection) ProtoMessage() {}
func (*WebDetection) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0} }
func (m *WebDetection) GetWebEntities() []*WebDetection_WebEntity {
if m != nil {
return m.WebEntities
}
return nil
}
func (m *WebDetection) GetFullMatchingImages() []*WebDetection_WebImage {
if m != nil {
return m.FullMatchingImages
}
return nil
}
func (m *WebDetection) GetPartialMatchingImages() []*WebDetection_WebImage {
if m != nil {
return m.PartialMatchingImages
}
return nil
}
func (m *WebDetection) GetPagesWithMatchingImages() []*WebDetection_WebPage {
if m != nil {
return m.PagesWithMatchingImages
}
return nil
}
func (m *WebDetection) GetVisuallySimilarImages() []*WebDetection_WebImage {
if m != nil {
return m.VisuallySimilarImages
}
return nil
}
func (m *WebDetection) GetBestGuessLabels() []*WebDetection_WebLabel {
if m != nil {
return m.BestGuessLabels
}
return nil
}
// Entity deduced from similar images on the Internet.
type WebDetection_WebEntity struct {
// Opaque entity ID.
EntityId string `protobuf:"bytes,1,opt,name=entity_id,json=entityId" json:"entity_id,omitempty"`
// Overall relevancy score for the entity.
// Not normalized and not comparable across different image queries.
Score float32 `protobuf:"fixed32,2,opt,name=score" json:"score,omitempty"`
// Canonical description of the entity, in English.
Description string `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"`
}
func (m *WebDetection_WebEntity) Reset() { *m = WebDetection_WebEntity{} }
func (m *WebDetection_WebEntity) String() string { return proto.CompactTextString(m) }
func (*WebDetection_WebEntity) ProtoMessage() {}
func (*WebDetection_WebEntity) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0, 0} }
func (m *WebDetection_WebEntity) GetEntityId() string {
if m != nil {
return m.EntityId
}
return ""
}
func (m *WebDetection_WebEntity) GetScore() float32 {
if m != nil {
return m.Score
}
return 0
}
func (m *WebDetection_WebEntity) GetDescription() string {
if m != nil {
return m.Description
}
return ""
}
// Metadata for online images.
type WebDetection_WebImage struct {
// The result image URL.
Url string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"`
// (Deprecated) Overall relevancy score for the image.
Score float32 `protobuf:"fixed32,2,opt,name=score" json:"score,omitempty"`
}
func (m *WebDetection_WebImage) Reset() { *m = WebDetection_WebImage{} }
func (m *WebDetection_WebImage) String() string { return proto.CompactTextString(m) }
func (*WebDetection_WebImage) ProtoMessage() {}
func (*WebDetection_WebImage) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0, 1} }
func (m *WebDetection_WebImage) GetUrl() string {
if m != nil {
return m.Url
}
return ""
}
func (m *WebDetection_WebImage) GetScore() float32 {
if m != nil {
return m.Score
}
return 0
}
// Metadata for web pages.
type WebDetection_WebPage struct {
// The result web page URL.
Url string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"`
// (Deprecated) Overall relevancy score for the web page.
Score float32 `protobuf:"fixed32,2,opt,name=score" json:"score,omitempty"`
// Title for the web page, may contain HTML markups.
PageTitle string `protobuf:"bytes,3,opt,name=page_title,json=pageTitle" json:"page_title,omitempty"`
// Fully matching images on the page.
// Can include resized copies of the query image.
FullMatchingImages []*WebDetection_WebImage `protobuf:"bytes,4,rep,name=full_matching_images,json=fullMatchingImages" json:"full_matching_images,omitempty"`
// Partial matching images on the page.
// Those images are similar enough to share some key-point features. For
// example an original image will likely have partial matching for its
// crops.
PartialMatchingImages []*WebDetection_WebImage `protobuf:"bytes,5,rep,name=partial_matching_images,json=partialMatchingImages" json:"partial_matching_images,omitempty"`
}
func (m *WebDetection_WebPage) Reset() { *m = WebDetection_WebPage{} }
func (m *WebDetection_WebPage) String() string { return proto.CompactTextString(m) }
func (*WebDetection_WebPage) ProtoMessage() {}
func (*WebDetection_WebPage) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0, 2} }
func (m *WebDetection_WebPage) GetUrl() string {
if m != nil {
return m.Url
}
return ""
}
func (m *WebDetection_WebPage) GetScore() float32 {
if m != nil {
return m.Score
}
return 0
}
func (m *WebDetection_WebPage) GetPageTitle() string {
if m != nil {
return m.PageTitle
}
return ""
}
func (m *WebDetection_WebPage) GetFullMatchingImages() []*WebDetection_WebImage {
if m != nil {
return m.FullMatchingImages
}
return nil
}
func (m *WebDetection_WebPage) GetPartialMatchingImages() []*WebDetection_WebImage {
if m != nil {
return m.PartialMatchingImages
}
return nil
}
// Label to provide extra metadata for the web detection.
type WebDetection_WebLabel struct {
// Label for extra metadata.
Label string `protobuf:"bytes,1,opt,name=label" json:"label,omitempty"`
// The BCP-47 language code for `label`, such as "en-US" or "sr-Latn".
// For more information, see
// http://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
LanguageCode string `protobuf:"bytes,2,opt,name=language_code,json=languageCode" json:"language_code,omitempty"`
}
func (m *WebDetection_WebLabel) Reset() { *m = WebDetection_WebLabel{} }
func (m *WebDetection_WebLabel) String() string { return proto.CompactTextString(m) }
func (*WebDetection_WebLabel) ProtoMessage() {}
func (*WebDetection_WebLabel) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0, 3} }
func (m *WebDetection_WebLabel) GetLabel() string {
if m != nil {
return m.Label
}
return ""
}
func (m *WebDetection_WebLabel) GetLanguageCode() string {
if m != nil {
return m.LanguageCode
}
return ""
}
func init() {
proto.RegisterType((*WebDetection)(nil), "google.cloud.vision.v1p2beta1.WebDetection")
proto.RegisterType((*WebDetection_WebEntity)(nil), "google.cloud.vision.v1p2beta1.WebDetection.WebEntity")
proto.RegisterType((*WebDetection_WebImage)(nil), "google.cloud.vision.v1p2beta1.WebDetection.WebImage")
proto.RegisterType((*WebDetection_WebPage)(nil), "google.cloud.vision.v1p2beta1.WebDetection.WebPage")
proto.RegisterType((*WebDetection_WebLabel)(nil), "google.cloud.vision.v1p2beta1.WebDetection.WebLabel")
}
func init() { proto.RegisterFile("google/cloud/vision/v1p2beta1/web_detection.proto", fileDescriptor3) }
var fileDescriptor3 = []byte{
// 511 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x94, 0x4f, 0x6f, 0xd3, 0x30,
0x18, 0xc6, 0x95, 0x76, 0x1b, 0x8d, 0x5b, 0x04, 0xb3, 0x86, 0x16, 0x05, 0x26, 0x15, 0xb8, 0xf4,
0x94, 0xa8, 0x1d, 0x9c, 0xb8, 0x6d, 0x4c, 0x68, 0x12, 0x48, 0x55, 0x40, 0x1a, 0xe2, 0x92, 0x39,
0x89, 0x97, 0xbe, 0x92, 0x1b, 0x47, 0xb1, 0xd3, 0xaa, 0x37, 0x4e, 0x7c, 0x14, 0x3e, 0x23, 0x47,
0xf4, 0xda, 0xee, 0x54, 0x51, 0x36, 0x31, 0x86, 0xb8, 0xf9, 0x7d, 0xac, 0xe7, 0xf9, 0xd9, 0xaf,
0xff, 0x90, 0x71, 0x29, 0x65, 0x29, 0x78, 0x9c, 0x0b, 0xd9, 0x16, 0xf1, 0x02, 0x14, 0xc8, 0x2a,
0x5e, 0x8c, 0xeb, 0x49, 0xc6, 0x35, 0x1b, 0xc7, 0x4b, 0x9e, 0xa5, 0x05, 0xd7, 0x3c, 0xd7, 0x20,
0xab, 0xa8, 0x6e, 0xa4, 0x96, 0xf4, 0xc8, 0x5a, 0x22, 0x63, 0x89, 0xac, 0x25, 0xba, 0xb6, 0x84,
0xcf, 0x5c, 0x22, 0xab, 0x21, 0x66, 0x55, 0x25, 0x35, 0x43, 0xaf, 0xb2, 0xe6, 0x17, 0xdf, 0x7c,
0x32, 0xb8, 0xe0, 0xd9, 0xdb, 0x75, 0x26, 0xfd, 0x4c, 0x06, 0x08, 0xe1, 0x95, 0x06, 0x0d, 0x5c,
0x05, 0xde, 0xb0, 0x3b, 0xea, 0x4f, 0x5e, 0x47, 0xb7, 0x42, 0xa2, 0xcd, 0x08, 0x2c, 0xce, 0xd0,
0xbe, 0x4a, 0xfa, 0x4b, 0x37, 0x04, 0xae, 0xe8, 0x15, 0x39, 0xb8, 0x6a, 0x85, 0x48, 0xe7, 0x4c,
0xe7, 0x33, 0xa8, 0xca, 0x14, 0xe6, 0xac, 0xe4, 0x2a, 0xe8, 0x18, 0xc2, 0xab, 0x3b, 0x12, 0xce,
0xd1, 0x9c, 0x50, 0x4c, 0xfc, 0xe0, 0x02, 0x8d, 0xa4, 0xa8, 0x20, 0x87, 0x35, 0x6b, 0x34, 0xb0,
0x6d, 0x54, 0xf7, 0x1e, 0xa8, 0x27, 0x2e, 0xf4, 0x17, 0x5a, 0x4d, 0xc2, 0x1a, 0x07, 0xe9, 0x12,
0xf4, 0x6c, 0x0b, 0xb8, 0x63, 0x80, 0xc7, 0x77, 0x04, 0x4e, 0x91, 0x77, 0x68, 0x62, 0x2f, 0x40,
0xcf, 0xb6, 0xf7, 0xb7, 0x00, 0xd5, 0x32, 0x21, 0x56, 0xa9, 0x82, 0x39, 0x08, 0xd6, 0xac, 0x71,
0x7b, 0xf7, 0xd9, 0xdf, 0x3a, 0xf4, 0xa3, 0xcd, 0x74, 0xb4, 0x4b, 0xb2, 0x9f, 0x71, 0xa5, 0xd3,
0xb2, 0xe5, 0x4a, 0xa5, 0x82, 0x65, 0x5c, 0xa8, 0xa0, 0xf7, 0x57, 0x9c, 0xf7, 0x68, 0x4e, 0x1e,
0x61, 0xdc, 0x3b, 0x4c, 0x33, 0xb5, 0x0a, 0x2f, 0x89, 0x7f, 0x7d, 0x63, 0xe8, 0x53, 0xe2, 0x9b,
0xab, 0xb7, 0x4a, 0xa1, 0x08, 0xbc, 0xa1, 0x37, 0xf2, 0x93, 0x9e, 0x15, 0xce, 0x0b, 0x7a, 0x40,
0x76, 0x55, 0x2e, 0x1b, 0x1e, 0x74, 0x86, 0xde, 0xa8, 0x93, 0xd8, 0x82, 0x0e, 0x49, 0xbf, 0xe0,
0x2a, 0x6f, 0xa0, 0x46, 0x50, 0xd0, 0x35, 0xa6, 0x4d, 0x29, 0x9c, 0x90, 0xde, 0x7a, 0x9b, 0xf4,
0x31, 0xe9, 0xb6, 0x8d, 0x70, 0xd1, 0x38, 0xfc, 0x7d, 0x6a, 0xf8, 0xbd, 0x43, 0x1e, 0xb8, 0xa3,
0xf8, 0x53, 0x0f, 0x3d, 0x22, 0x04, 0x0f, 0x2d, 0xd5, 0xa0, 0x05, 0x77, 0x0b, 0xf1, 0x51, 0xf9,
0x84, 0xc2, 0x8d, 0x0f, 0x60, 0xe7, 0xff, 0x3d, 0x80, 0xdd, 0x7f, 0xfe, 0x00, 0xc2, 0x33, 0xd3,
0x5c, 0x73, 0x96, 0xd8, 0x16, 0x73, 0x43, 0x5c, 0xab, 0x6c, 0x41, 0x5f, 0x92, 0x87, 0x82, 0x55,
0x65, 0x8b, 0xad, 0xc9, 0x65, 0x61, 0x9b, 0xe6, 0x27, 0x83, 0xb5, 0x78, 0x2a, 0x0b, 0x7e, 0xf2,
0xd5, 0x23, 0xcf, 0x73, 0x39, 0xbf, 0x7d, 0x65, 0x27, 0xfb, 0x9b, 0x4b, 0x9b, 0xe2, 0x0f, 0x36,
0xf5, 0xbe, 0x9c, 0x3a, 0x4f, 0x29, 0x31, 0x31, 0x92, 0x4d, 0x19, 0x97, 0xbc, 0x32, 0xff, 0x5b,
0x6c, 0xa7, 0x58, 0x0d, 0xea, 0x86, 0x2f, 0xf5, 0x8d, 0x15, 0x7e, 0x78, 0x5e, 0xb6, 0x67, 0x2c,
0xc7, 0x3f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x66, 0x62, 0xaa, 0xcd, 0x84, 0x05, 0x00, 0x00,
}

View File

@ -18,6 +18,7 @@ It has these top-level messages:
Volume
Results
Build
TimeSpan
BuildOperationMetadata
SourceProvenance
FileHashes
@ -65,25 +66,25 @@ var _ = math.Inf
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
// Possible status of a build.
// Possible status of a build or build step.
type Build_Status int32
const (
// Status of the build is unknown.
Build_STATUS_UNKNOWN Build_Status = 0
// Build is queued; work has not yet begun.
// Build or step is queued; work has not yet begun.
Build_QUEUED Build_Status = 1
// Build is being executed.
// Build or step is being executed.
Build_WORKING Build_Status = 2
// Build finished successfully.
// Build or step finished successfully.
Build_SUCCESS Build_Status = 3
// Build failed to complete successfully.
// Build or step failed to complete successfully.
Build_FAILURE Build_Status = 4
// Build failed due to an internal cause.
// Build or step failed due to an internal cause.
Build_INTERNAL_ERROR Build_Status = 5
// Build took longer than was allowed.
// Build or step took longer than was allowed.
Build_TIMEOUT Build_Status = 6
// Build was canceled by a user.
// Build or step was canceled by a user.
Build_CANCELLED Build_Status = 7
)
@ -135,7 +136,7 @@ var Hash_HashType_value = map[string]int32{
func (x Hash_HashType) String() string {
return proto.EnumName(Hash_HashType_name, int32(x))
}
func (Hash_HashType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{13, 0} }
func (Hash_HashType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{14, 0} }
// Specifies the manner in which the build should be verified, if at all.
type BuildOptions_VerifyOption int32
@ -160,7 +161,7 @@ func (x BuildOptions_VerifyOption) String() string {
return proto.EnumName(BuildOptions_VerifyOption_name, int32(x))
}
func (BuildOptions_VerifyOption) EnumDescriptor() ([]byte, []int) {
return fileDescriptor0, []int{27, 0}
return fileDescriptor0, []int{28, 0}
}
// Supported VM sizes.
@ -169,9 +170,9 @@ type BuildOptions_MachineType int32
const (
// Standard machine type.
BuildOptions_UNSPECIFIED BuildOptions_MachineType = 0
// Medium size.
// Highcpu machine with 8 CPUs.
BuildOptions_N1_HIGHCPU_8 BuildOptions_MachineType = 1
// Large size.
// Highcpu machine with 32 CPUs.
BuildOptions_N1_HIGHCPU_32 BuildOptions_MachineType = 2
)
@ -189,7 +190,7 @@ var BuildOptions_MachineType_value = map[string]int32{
func (x BuildOptions_MachineType) String() string {
return proto.EnumName(BuildOptions_MachineType_name, int32(x))
}
func (BuildOptions_MachineType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{27, 1} }
func (BuildOptions_MachineType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{28, 1} }
// Specifies the behavior when there is an error in the substitution checks.
type BuildOptions_SubstitutionOption int32
@ -215,7 +216,7 @@ func (x BuildOptions_SubstitutionOption) String() string {
return proto.EnumName(BuildOptions_SubstitutionOption_name, int32(x))
}
func (BuildOptions_SubstitutionOption) EnumDescriptor() ([]byte, []int) {
return fileDescriptor0, []int{27, 2}
return fileDescriptor0, []int{28, 2}
}
// Specifies the behavior when writing build logs to Google Cloud Storage.
@ -246,7 +247,7 @@ func (x BuildOptions_LogStreamingOption) String() string {
return proto.EnumName(BuildOptions_LogStreamingOption_name, int32(x))
}
func (BuildOptions_LogStreamingOption) EnumDescriptor() ([]byte, []int) {
return fileDescriptor0, []int{27, 3}
return fileDescriptor0, []int{28, 3}
}
// RetryBuildRequest specifies a build to retry.
@ -373,6 +374,9 @@ type RepoSource struct {
// *RepoSource_CommitSha
Revision isRepoSource_Revision `protobuf_oneof:"revision"`
// Directory, relative to the source root, in which to run the build.
//
// This must be a relative path. If a step's dir is specified and is an
// absolute path, this value is ignored for that step's execution.
Dir string `protobuf:"bytes,7,opt,name=dir" json:"dir,omitempty"`
}
@ -661,6 +665,9 @@ type BuiltImage struct {
Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
// Docker Registry 2.0 digest.
Digest string `protobuf:"bytes,3,opt,name=digest" json:"digest,omitempty"`
// Stores timing information for pushing the specified image.
// @OutputOnly
PushTiming *TimeSpan `protobuf:"bytes,4,opt,name=push_timing,json=pushTiming" json:"push_timing,omitempty"`
}
func (m *BuiltImage) Reset() { *m = BuiltImage{} }
@ -682,6 +689,13 @@ func (m *BuiltImage) GetDigest() string {
return ""
}
func (m *BuiltImage) GetPushTiming() *TimeSpan {
if m != nil {
return m.PushTiming
}
return nil
}
// BuildStep describes a step to perform in the build pipeline.
type BuildStep struct {
// The name of the container image that will run this particular build step.
@ -713,8 +727,16 @@ type BuildStep struct {
// an entrypoint, the first element in args will be used as the entrypoint,
// and the remainder will be used as arguments.
Args []string `protobuf:"bytes,3,rep,name=args" json:"args,omitempty"`
// Working directory (relative to project source root) to use when running
// this operation's container.
// Working directory to use when running this step's container.
//
// If this value is a relative path, it is relative to the build's working
// directory. If this value is absolute, it may be outside the build's working
// directory, in which case the contents of the path may not be persisted
// across build step executions, unless a volume for that path is specified.
//
// If the build specifies a RepoSource with dir and a step with a dir which
// specifies an absolute path, the RepoSource dir is ignored for the step's
// execution.
Dir string `protobuf:"bytes,4,opt,name=dir" json:"dir,omitempty"`
// Optional unique identifier for this build step, used in wait_for to
// reference this build step as a dependency.
@ -740,6 +762,18 @@ type BuildStep struct {
// Using a named volume in only one step is not valid as it is indicative
// of a mis-configured build request.
Volumes []*Volume `protobuf:"bytes,9,rep,name=volumes" json:"volumes,omitempty"`
// Stores timing information for executing this build step.
// @OutputOnly
Timing *TimeSpan `protobuf:"bytes,10,opt,name=timing" json:"timing,omitempty"`
// Time limit for executing this build step. If not defined, the step has no
// time limit and will be allowed to continue to run until either it completes
// or the build itself times out.
Timeout *google_protobuf4.Duration `protobuf:"bytes,11,opt,name=timeout" json:"timeout,omitempty"`
// Status of the build step. At this time, build step status is only updated
// on build completion; step status is not updated in real-time as the build
// progresses.
// @OutputOnly
Status Build_Status `protobuf:"varint,12,opt,name=status,enum=google.devtools.cloudbuild.v1.Build_Status" json:"status,omitempty"`
}
func (m *BuildStep) Reset() { *m = BuildStep{} }
@ -810,6 +844,27 @@ func (m *BuildStep) GetVolumes() []*Volume {
return nil
}
func (m *BuildStep) GetTiming() *TimeSpan {
if m != nil {
return m.Timing
}
return nil
}
func (m *BuildStep) GetTimeout() *google_protobuf4.Duration {
if m != nil {
return m.Timeout
}
return nil
}
func (m *BuildStep) GetStatus() Build_Status {
if m != nil {
return m.Status
}
return Build_STATUS_UNKNOWN
}
// Volume describes a Docker container volume which is mounted into build steps
// in order to persist files across build step execution.
type Volume struct {
@ -950,7 +1005,7 @@ type Build struct {
BuildTriggerId string `protobuf:"bytes,22,opt,name=build_trigger_id,json=buildTriggerId" json:"build_trigger_id,omitempty"`
// Special options for this build.
Options *BuildOptions `protobuf:"bytes,23,opt,name=options" json:"options,omitempty"`
// URL to logs for this build in Google Cloud Logging.
// URL to logs for this build in Google Cloud Console.
// @OutputOnly
LogUrl string `protobuf:"bytes,25,opt,name=log_url,json=logUrl" json:"log_url,omitempty"`
// Substitutions data for Build resource.
@ -959,6 +1014,16 @@ type Build struct {
Tags []string `protobuf:"bytes,31,rep,name=tags" json:"tags,omitempty"`
// Secrets to decrypt using Cloud KMS.
Secrets []*Secret `protobuf:"bytes,32,rep,name=secrets" json:"secrets,omitempty"`
// Stores timing information for phases of the build. Valid keys are:
//
// * BUILD: time to execute all build steps
// * PUSH: time to push all specified images.
// * FETCHSOURCE: time to fetch source.
//
// If the build does not specify source, or does not specify images,
// these keys will not be included.
// @OutputOnly
Timing map[string]*TimeSpan `protobuf:"bytes,33,rep,name=timing" json:"timing,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
}
func (m *Build) Reset() { *m = Build{} }
@ -1106,6 +1171,40 @@ func (m *Build) GetSecrets() []*Secret {
return nil
}
func (m *Build) GetTiming() map[string]*TimeSpan {
if m != nil {
return m.Timing
}
return nil
}
// Stores start and end times for a build execution phase.
type TimeSpan struct {
// Start of time span.
StartTime *google_protobuf5.Timestamp `protobuf:"bytes,1,opt,name=start_time,json=startTime" json:"start_time,omitempty"`
// End of time span.
EndTime *google_protobuf5.Timestamp `protobuf:"bytes,2,opt,name=end_time,json=endTime" json:"end_time,omitempty"`
}
func (m *TimeSpan) Reset() { *m = TimeSpan{} }
func (m *TimeSpan) String() string { return proto.CompactTextString(m) }
func (*TimeSpan) ProtoMessage() {}
func (*TimeSpan) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} }
func (m *TimeSpan) GetStartTime() *google_protobuf5.Timestamp {
if m != nil {
return m.StartTime
}
return nil
}
func (m *TimeSpan) GetEndTime() *google_protobuf5.Timestamp {
if m != nil {
return m.EndTime
}
return nil
}
// Metadata for build operations.
type BuildOperationMetadata struct {
// The build that the operation is tracking.
@ -1115,7 +1214,7 @@ type BuildOperationMetadata struct {
func (m *BuildOperationMetadata) Reset() { *m = BuildOperationMetadata{} }
func (m *BuildOperationMetadata) String() string { return proto.CompactTextString(m) }
func (*BuildOperationMetadata) ProtoMessage() {}
func (*BuildOperationMetadata) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} }
func (*BuildOperationMetadata) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} }
func (m *BuildOperationMetadata) GetBuild() *Build {
if m != nil {
@ -1149,7 +1248,7 @@ type SourceProvenance struct {
func (m *SourceProvenance) Reset() { *m = SourceProvenance{} }
func (m *SourceProvenance) String() string { return proto.CompactTextString(m) }
func (*SourceProvenance) ProtoMessage() {}
func (*SourceProvenance) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} }
func (*SourceProvenance) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} }
func (m *SourceProvenance) GetResolvedStorageSource() *StorageSource {
if m != nil {
@ -1182,7 +1281,7 @@ type FileHashes struct {
func (m *FileHashes) Reset() { *m = FileHashes{} }
func (m *FileHashes) String() string { return proto.CompactTextString(m) }
func (*FileHashes) ProtoMessage() {}
func (*FileHashes) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} }
func (*FileHashes) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} }
func (m *FileHashes) GetFileHash() []*Hash {
if m != nil {
@ -1202,7 +1301,7 @@ type Hash struct {
func (m *Hash) Reset() { *m = Hash{} }
func (m *Hash) String() string { return proto.CompactTextString(m) }
func (*Hash) ProtoMessage() {}
func (*Hash) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} }
func (*Hash) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} }
func (m *Hash) GetType() Hash_HashType {
if m != nil {
@ -1235,7 +1334,7 @@ type Secret struct {
func (m *Secret) Reset() { *m = Secret{} }
func (m *Secret) String() string { return proto.CompactTextString(m) }
func (*Secret) ProtoMessage() {}
func (*Secret) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} }
func (*Secret) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} }
func (m *Secret) GetKmsKeyName() string {
if m != nil {
@ -1262,7 +1361,7 @@ type CreateBuildRequest struct {
func (m *CreateBuildRequest) Reset() { *m = CreateBuildRequest{} }
func (m *CreateBuildRequest) String() string { return proto.CompactTextString(m) }
func (*CreateBuildRequest) ProtoMessage() {}
func (*CreateBuildRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} }
func (*CreateBuildRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} }
func (m *CreateBuildRequest) GetProjectId() string {
if m != nil {
@ -1289,7 +1388,7 @@ type GetBuildRequest struct {
func (m *GetBuildRequest) Reset() { *m = GetBuildRequest{} }
func (m *GetBuildRequest) String() string { return proto.CompactTextString(m) }
func (*GetBuildRequest) ProtoMessage() {}
func (*GetBuildRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} }
func (*GetBuildRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} }
func (m *GetBuildRequest) GetProjectId() string {
if m != nil {
@ -1320,7 +1419,7 @@ type ListBuildsRequest struct {
func (m *ListBuildsRequest) Reset() { *m = ListBuildsRequest{} }
func (m *ListBuildsRequest) String() string { return proto.CompactTextString(m) }
func (*ListBuildsRequest) ProtoMessage() {}
func (*ListBuildsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} }
func (*ListBuildsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} }
func (m *ListBuildsRequest) GetProjectId() string {
if m != nil {
@ -1361,7 +1460,7 @@ type ListBuildsResponse struct {
func (m *ListBuildsResponse) Reset() { *m = ListBuildsResponse{} }
func (m *ListBuildsResponse) String() string { return proto.CompactTextString(m) }
func (*ListBuildsResponse) ProtoMessage() {}
func (*ListBuildsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} }
func (*ListBuildsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} }
func (m *ListBuildsResponse) GetBuilds() []*Build {
if m != nil {
@ -1388,7 +1487,7 @@ type CancelBuildRequest struct {
func (m *CancelBuildRequest) Reset() { *m = CancelBuildRequest{} }
func (m *CancelBuildRequest) String() string { return proto.CompactTextString(m) }
func (*CancelBuildRequest) ProtoMessage() {}
func (*CancelBuildRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} }
func (*CancelBuildRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} }
func (m *CancelBuildRequest) GetProjectId() string {
if m != nil {
@ -1438,7 +1537,7 @@ type BuildTrigger struct {
func (m *BuildTrigger) Reset() { *m = BuildTrigger{} }
func (m *BuildTrigger) String() string { return proto.CompactTextString(m) }
func (*BuildTrigger) ProtoMessage() {}
func (*BuildTrigger) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} }
func (*BuildTrigger) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} }
type isBuildTrigger_BuildTemplate interface {
isBuildTrigger_BuildTemplate()
@ -1598,7 +1697,7 @@ type CreateBuildTriggerRequest struct {
func (m *CreateBuildTriggerRequest) Reset() { *m = CreateBuildTriggerRequest{} }
func (m *CreateBuildTriggerRequest) String() string { return proto.CompactTextString(m) }
func (*CreateBuildTriggerRequest) ProtoMessage() {}
func (*CreateBuildTriggerRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} }
func (*CreateBuildTriggerRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} }
func (m *CreateBuildTriggerRequest) GetProjectId() string {
if m != nil {
@ -1625,7 +1724,7 @@ type GetBuildTriggerRequest struct {
func (m *GetBuildTriggerRequest) Reset() { *m = GetBuildTriggerRequest{} }
func (m *GetBuildTriggerRequest) String() string { return proto.CompactTextString(m) }
func (*GetBuildTriggerRequest) ProtoMessage() {}
func (*GetBuildTriggerRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} }
func (*GetBuildTriggerRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} }
func (m *GetBuildTriggerRequest) GetProjectId() string {
if m != nil {
@ -1650,7 +1749,7 @@ type ListBuildTriggersRequest struct {
func (m *ListBuildTriggersRequest) Reset() { *m = ListBuildTriggersRequest{} }
func (m *ListBuildTriggersRequest) String() string { return proto.CompactTextString(m) }
func (*ListBuildTriggersRequest) ProtoMessage() {}
func (*ListBuildTriggersRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} }
func (*ListBuildTriggersRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} }
func (m *ListBuildTriggersRequest) GetProjectId() string {
if m != nil {
@ -1668,7 +1767,7 @@ type ListBuildTriggersResponse struct {
func (m *ListBuildTriggersResponse) Reset() { *m = ListBuildTriggersResponse{} }
func (m *ListBuildTriggersResponse) String() string { return proto.CompactTextString(m) }
func (*ListBuildTriggersResponse) ProtoMessage() {}
func (*ListBuildTriggersResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} }
func (*ListBuildTriggersResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} }
func (m *ListBuildTriggersResponse) GetTriggers() []*BuildTrigger {
if m != nil {
@ -1688,7 +1787,7 @@ type DeleteBuildTriggerRequest struct {
func (m *DeleteBuildTriggerRequest) Reset() { *m = DeleteBuildTriggerRequest{} }
func (m *DeleteBuildTriggerRequest) String() string { return proto.CompactTextString(m) }
func (*DeleteBuildTriggerRequest) ProtoMessage() {}
func (*DeleteBuildTriggerRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} }
func (*DeleteBuildTriggerRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} }
func (m *DeleteBuildTriggerRequest) GetProjectId() string {
if m != nil {
@ -1717,7 +1816,7 @@ type UpdateBuildTriggerRequest struct {
func (m *UpdateBuildTriggerRequest) Reset() { *m = UpdateBuildTriggerRequest{} }
func (m *UpdateBuildTriggerRequest) String() string { return proto.CompactTextString(m) }
func (*UpdateBuildTriggerRequest) ProtoMessage() {}
func (*UpdateBuildTriggerRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} }
func (*UpdateBuildTriggerRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{27} }
func (m *UpdateBuildTriggerRequest) GetProjectId() string {
if m != nil {
@ -1746,7 +1845,7 @@ type BuildOptions struct {
SourceProvenanceHash []Hash_HashType `protobuf:"varint,1,rep,packed,name=source_provenance_hash,json=sourceProvenanceHash,enum=google.devtools.cloudbuild.v1.Hash_HashType" json:"source_provenance_hash,omitempty"`
// Requested verifiability options.
RequestedVerifyOption BuildOptions_VerifyOption `protobuf:"varint,2,opt,name=requested_verify_option,json=requestedVerifyOption,enum=google.devtools.cloudbuild.v1.BuildOptions_VerifyOption" json:"requested_verify_option,omitempty"`
// GCE VM size to run the build on.
// Compute Engine machine type on which to run the build.
MachineType BuildOptions_MachineType `protobuf:"varint,3,opt,name=machine_type,json=machineType,enum=google.devtools.cloudbuild.v1.BuildOptions_MachineType" json:"machine_type,omitempty"`
// Requested disk size for the VM that runs the build. Note that this is *NOT*
// "disk free"; some of the space will be used by the operating system and
@ -1765,7 +1864,7 @@ type BuildOptions struct {
func (m *BuildOptions) Reset() { *m = BuildOptions{} }
func (m *BuildOptions) String() string { return proto.CompactTextString(m) }
func (*BuildOptions) ProtoMessage() {}
func (*BuildOptions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{27} }
func (*BuildOptions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{28} }
func (m *BuildOptions) GetSourceProvenanceHash() []Hash_HashType {
if m != nil {
@ -1820,6 +1919,7 @@ func init() {
proto.RegisterType((*Volume)(nil), "google.devtools.cloudbuild.v1.Volume")
proto.RegisterType((*Results)(nil), "google.devtools.cloudbuild.v1.Results")
proto.RegisterType((*Build)(nil), "google.devtools.cloudbuild.v1.Build")
proto.RegisterType((*TimeSpan)(nil), "google.devtools.cloudbuild.v1.TimeSpan")
proto.RegisterType((*BuildOperationMetadata)(nil), "google.devtools.cloudbuild.v1.BuildOperationMetadata")
proto.RegisterType((*SourceProvenance)(nil), "google.devtools.cloudbuild.v1.SourceProvenance")
proto.RegisterType((*FileHashes)(nil), "google.devtools.cloudbuild.v1.FileHashes")
@ -1875,28 +1975,6 @@ type CloudBuildClient interface {
ListBuilds(ctx context.Context, in *ListBuildsRequest, opts ...grpc.CallOption) (*ListBuildsResponse, error)
// Cancels a requested build in progress.
CancelBuild(ctx context.Context, in *CancelBuildRequest, opts ...grpc.CallOption) (*Build, error)
// Creates a new BuildTrigger.
//
// This API is experimental.
CreateBuildTrigger(ctx context.Context, in *CreateBuildTriggerRequest, opts ...grpc.CallOption) (*BuildTrigger, error)
// Gets information about a BuildTrigger.
//
// This API is experimental.
GetBuildTrigger(ctx context.Context, in *GetBuildTriggerRequest, opts ...grpc.CallOption) (*BuildTrigger, error)
// Lists existing BuildTrigger.
//
// This API is experimental.
ListBuildTriggers(ctx context.Context, in *ListBuildTriggersRequest, opts ...grpc.CallOption) (*ListBuildTriggersResponse, error)
// Deletes an BuildTrigger by its project ID and trigger ID.
//
// This API is experimental.
DeleteBuildTrigger(ctx context.Context, in *DeleteBuildTriggerRequest, opts ...grpc.CallOption) (*google_protobuf3.Empty, error)
// Updates an BuildTrigger by its project ID and trigger ID.
//
// This API is experimental.
UpdateBuildTrigger(ctx context.Context, in *UpdateBuildTriggerRequest, opts ...grpc.CallOption) (*BuildTrigger, error)
// Runs a BuildTrigger at a particular source revision.
RunBuildTrigger(ctx context.Context, in *RunBuildTriggerRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error)
// Creates a new build based on the given build.
//
// This API creates a new build using the original build request, which may
@ -1925,6 +2003,28 @@ type CloudBuildClient interface {
// object, which may or may not be available depending on the bucket's
// lifecycle management settings.
RetryBuild(ctx context.Context, in *RetryBuildRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error)
// Creates a new BuildTrigger.
//
// This API is experimental.
CreateBuildTrigger(ctx context.Context, in *CreateBuildTriggerRequest, opts ...grpc.CallOption) (*BuildTrigger, error)
// Gets information about a BuildTrigger.
//
// This API is experimental.
GetBuildTrigger(ctx context.Context, in *GetBuildTriggerRequest, opts ...grpc.CallOption) (*BuildTrigger, error)
// Lists existing BuildTrigger.
//
// This API is experimental.
ListBuildTriggers(ctx context.Context, in *ListBuildTriggersRequest, opts ...grpc.CallOption) (*ListBuildTriggersResponse, error)
// Deletes an BuildTrigger by its project ID and trigger ID.
//
// This API is experimental.
DeleteBuildTrigger(ctx context.Context, in *DeleteBuildTriggerRequest, opts ...grpc.CallOption) (*google_protobuf3.Empty, error)
// Updates an BuildTrigger by its project ID and trigger ID.
//
// This API is experimental.
UpdateBuildTrigger(ctx context.Context, in *UpdateBuildTriggerRequest, opts ...grpc.CallOption) (*BuildTrigger, error)
// Runs a BuildTrigger at a particular source revision.
RunBuildTrigger(ctx context.Context, in *RunBuildTriggerRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error)
}
type cloudBuildClient struct {
@ -1971,6 +2071,15 @@ func (c *cloudBuildClient) CancelBuild(ctx context.Context, in *CancelBuildReque
return out, nil
}
func (c *cloudBuildClient) RetryBuild(ctx context.Context, in *RetryBuildRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) {
out := new(google_longrunning.Operation)
err := grpc.Invoke(ctx, "/google.devtools.cloudbuild.v1.CloudBuild/RetryBuild", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *cloudBuildClient) CreateBuildTrigger(ctx context.Context, in *CreateBuildTriggerRequest, opts ...grpc.CallOption) (*BuildTrigger, error) {
out := new(BuildTrigger)
err := grpc.Invoke(ctx, "/google.devtools.cloudbuild.v1.CloudBuild/CreateBuildTrigger", in, out, c.cc, opts...)
@ -2025,15 +2134,6 @@ func (c *cloudBuildClient) RunBuildTrigger(ctx context.Context, in *RunBuildTrig
return out, nil
}
func (c *cloudBuildClient) RetryBuild(ctx context.Context, in *RetryBuildRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) {
out := new(google_longrunning.Operation)
err := grpc.Invoke(ctx, "/google.devtools.cloudbuild.v1.CloudBuild/RetryBuild", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// Server API for CloudBuild service
type CloudBuildServer interface {
@ -2055,28 +2155,6 @@ type CloudBuildServer interface {
ListBuilds(context.Context, *ListBuildsRequest) (*ListBuildsResponse, error)
// Cancels a requested build in progress.
CancelBuild(context.Context, *CancelBuildRequest) (*Build, error)
// Creates a new BuildTrigger.
//
// This API is experimental.
CreateBuildTrigger(context.Context, *CreateBuildTriggerRequest) (*BuildTrigger, error)
// Gets information about a BuildTrigger.
//
// This API is experimental.
GetBuildTrigger(context.Context, *GetBuildTriggerRequest) (*BuildTrigger, error)
// Lists existing BuildTrigger.
//
// This API is experimental.
ListBuildTriggers(context.Context, *ListBuildTriggersRequest) (*ListBuildTriggersResponse, error)
// Deletes an BuildTrigger by its project ID and trigger ID.
//
// This API is experimental.
DeleteBuildTrigger(context.Context, *DeleteBuildTriggerRequest) (*google_protobuf3.Empty, error)
// Updates an BuildTrigger by its project ID and trigger ID.
//
// This API is experimental.
UpdateBuildTrigger(context.Context, *UpdateBuildTriggerRequest) (*BuildTrigger, error)
// Runs a BuildTrigger at a particular source revision.
RunBuildTrigger(context.Context, *RunBuildTriggerRequest) (*google_longrunning.Operation, error)
// Creates a new build based on the given build.
//
// This API creates a new build using the original build request, which may
@ -2105,6 +2183,28 @@ type CloudBuildServer interface {
// object, which may or may not be available depending on the bucket's
// lifecycle management settings.
RetryBuild(context.Context, *RetryBuildRequest) (*google_longrunning.Operation, error)
// Creates a new BuildTrigger.
//
// This API is experimental.
CreateBuildTrigger(context.Context, *CreateBuildTriggerRequest) (*BuildTrigger, error)
// Gets information about a BuildTrigger.
//
// This API is experimental.
GetBuildTrigger(context.Context, *GetBuildTriggerRequest) (*BuildTrigger, error)
// Lists existing BuildTrigger.
//
// This API is experimental.
ListBuildTriggers(context.Context, *ListBuildTriggersRequest) (*ListBuildTriggersResponse, error)
// Deletes an BuildTrigger by its project ID and trigger ID.
//
// This API is experimental.
DeleteBuildTrigger(context.Context, *DeleteBuildTriggerRequest) (*google_protobuf3.Empty, error)
// Updates an BuildTrigger by its project ID and trigger ID.
//
// This API is experimental.
UpdateBuildTrigger(context.Context, *UpdateBuildTriggerRequest) (*BuildTrigger, error)
// Runs a BuildTrigger at a particular source revision.
RunBuildTrigger(context.Context, *RunBuildTriggerRequest) (*google_longrunning.Operation, error)
}
func RegisterCloudBuildServer(s *grpc.Server, srv CloudBuildServer) {
@ -2183,6 +2283,24 @@ func _CloudBuild_CancelBuild_Handler(srv interface{}, ctx context.Context, dec f
return interceptor(ctx, in, info, handler)
}
func _CloudBuild_RetryBuild_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(RetryBuildRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(CloudBuildServer).RetryBuild(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.devtools.cloudbuild.v1.CloudBuild/RetryBuild",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(CloudBuildServer).RetryBuild(ctx, req.(*RetryBuildRequest))
}
return interceptor(ctx, in, info, handler)
}
func _CloudBuild_CreateBuildTrigger_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(CreateBuildTriggerRequest)
if err := dec(in); err != nil {
@ -2291,24 +2409,6 @@ func _CloudBuild_RunBuildTrigger_Handler(srv interface{}, ctx context.Context, d
return interceptor(ctx, in, info, handler)
}
func _CloudBuild_RetryBuild_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(RetryBuildRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(CloudBuildServer).RetryBuild(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.devtools.cloudbuild.v1.CloudBuild/RetryBuild",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(CloudBuildServer).RetryBuild(ctx, req.(*RetryBuildRequest))
}
return interceptor(ctx, in, info, handler)
}
var _CloudBuild_serviceDesc = grpc.ServiceDesc{
ServiceName: "google.devtools.cloudbuild.v1.CloudBuild",
HandlerType: (*CloudBuildServer)(nil),
@ -2329,6 +2429,10 @@ var _CloudBuild_serviceDesc = grpc.ServiceDesc{
MethodName: "CancelBuild",
Handler: _CloudBuild_CancelBuild_Handler,
},
{
MethodName: "RetryBuild",
Handler: _CloudBuild_RetryBuild_Handler,
},
{
MethodName: "CreateBuildTrigger",
Handler: _CloudBuild_CreateBuildTrigger_Handler,
@ -2353,10 +2457,6 @@ var _CloudBuild_serviceDesc = grpc.ServiceDesc{
MethodName: "RunBuildTrigger",
Handler: _CloudBuild_RunBuildTrigger_Handler,
},
{
MethodName: "RetryBuild",
Handler: _CloudBuild_RetryBuild_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "google/devtools/cloudbuild/v1/cloudbuild.proto",
@ -2365,160 +2465,167 @@ var _CloudBuild_serviceDesc = grpc.ServiceDesc{
func init() { proto.RegisterFile("google/devtools/cloudbuild/v1/cloudbuild.proto", fileDescriptor0) }
var fileDescriptor0 = []byte{
// 2467 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x59, 0x5b, 0x73, 0x23, 0x47,
0x15, 0xf6, 0x48, 0xb2, 0x2e, 0x47, 0xbe, 0xcc, 0x76, 0x36, 0xce, 0x58, 0x9b, 0xcd, 0x9a, 0xc9,
0x05, 0x67, 0x93, 0x48, 0xb1, 0x97, 0x64, 0x1d, 0xe7, 0x66, 0x5b, 0x96, 0x2f, 0xb5, 0xb6, 0xbc,
0x8c, 0xa4, 0xdd, 0x22, 0x40, 0x0d, 0x23, 0x4d, 0x7b, 0x3c, 0x78, 0x34, 0x33, 0xcc, 0xb4, 0x44,
0xbc, 0x5b, 0x5b, 0x40, 0xaa, 0xe0, 0x15, 0xaa, 0x28, 0x1e, 0x28, 0x1e, 0xb8, 0x3c, 0x53, 0x14,
0x05, 0x0f, 0x54, 0x51, 0x95, 0x67, 0x7e, 0x00, 0x3f, 0x01, 0x7e, 0x08, 0xd5, 0x97, 0x91, 0x46,
0xd2, 0x2e, 0x23, 0x65, 0xe1, 0xc5, 0xee, 0x3e, 0xdd, 0xe7, 0xf4, 0xe9, 0x73, 0xfd, 0x5a, 0x03,
0x65, 0xcb, 0xf3, 0x2c, 0x07, 0x57, 0x4c, 0xdc, 0x27, 0x9e, 0xe7, 0x84, 0x95, 0x8e, 0xe3, 0xf5,
0xcc, 0x76, 0xcf, 0x76, 0xcc, 0x4a, 0x7f, 0x23, 0x36, 0x2b, 0xfb, 0x81, 0x47, 0x3c, 0x74, 0x93,
0xef, 0x2f, 0x47, 0xfb, 0xcb, 0xb1, 0x1d, 0xfd, 0x8d, 0xd2, 0xcb, 0x42, 0x9c, 0xe1, 0xdb, 0x15,
0xc3, 0x75, 0x3d, 0x62, 0x10, 0xdb, 0x73, 0x43, 0xce, 0x5c, 0x52, 0xc5, 0x2a, 0xe3, 0xa9, 0x18,
0x3d, 0xd3, 0x26, 0xfc, 0xaf, 0xee, 0x78, 0x96, 0xd8, 0xf3, 0xaa, 0xd8, 0xe3, 0x78, 0xae, 0x15,
0xf4, 0x5c, 0xd7, 0x76, 0xad, 0x8a, 0xe7, 0xe3, 0x60, 0x44, 0xd0, 0x2b, 0x62, 0x13, 0x9b, 0xb5,
0x7b, 0xe7, 0x15, 0xb3, 0xc7, 0x37, 0x88, 0xf5, 0x1b, 0xe3, 0xeb, 0xb8, 0xeb, 0x93, 0x2b, 0xb1,
0x78, 0x6b, 0x7c, 0x91, 0xd8, 0x5d, 0x1c, 0x12, 0xa3, 0xeb, 0xf3, 0x0d, 0xea, 0x1e, 0x5c, 0xd3,
0x30, 0x09, 0xae, 0xf6, 0xe8, 0xad, 0x34, 0xfc, 0x83, 0x1e, 0x0e, 0x09, 0xba, 0x09, 0xe0, 0x07,
0xde, 0xf7, 0x71, 0x87, 0xe8, 0xb6, 0xa9, 0x48, 0x6b, 0xd2, 0x7a, 0x41, 0x2b, 0x08, 0xca, 0xb1,
0x89, 0x96, 0x20, 0x65, 0x9b, 0x4a, 0x8a, 0x91, 0x53, 0xb6, 0xa9, 0xfe, 0x5a, 0x82, 0x15, 0xad,
0xe7, 0x32, 0x11, 0xcd, 0xc0, 0xb6, 0x2c, 0x1c, 0x4c, 0x29, 0xe9, 0x26, 0x00, 0xe1, 0x0c, 0xfa,
0x40, 0x62, 0x41, 0x50, 0x8e, 0x4d, 0xb4, 0x0b, 0xd9, 0xd0, 0xeb, 0x05, 0x1d, 0xac, 0xa4, 0xd7,
0xa4, 0xf5, 0xe2, 0xe6, 0x9b, 0xe5, 0xff, 0xea, 0x91, 0xb2, 0x86, 0x7d, 0xaf, 0xc1, 0x18, 0x34,
0xc1, 0xa8, 0xea, 0xb0, 0xd8, 0x20, 0x5e, 0x60, 0x58, 0x98, 0x2f, 0xa0, 0x15, 0xc8, 0xb6, 0x7b,
0x9d, 0x4b, 0x4c, 0x84, 0x36, 0x62, 0x46, 0xe9, 0x5e, 0x9b, 0xaa, 0x25, 0xd4, 0x10, 0x33, 0xf4,
0x0a, 0x80, 0x85, 0x5d, 0xe1, 0x13, 0xa6, 0x47, 0x5a, 0x8b, 0x51, 0xd4, 0x7f, 0x48, 0x00, 0xc3,
0x73, 0x93, 0x2e, 0x7c, 0x03, 0x0a, 0x01, 0xf6, 0x3d, 0xdd, 0x35, 0xba, 0x58, 0x1c, 0x94, 0xa7,
0x84, 0xba, 0xd1, 0xc5, 0xe8, 0x6b, 0x50, 0x6c, 0x07, 0x86, 0xdb, 0xb9, 0xe0, 0xcb, 0xf4, 0xac,
0xc2, 0xd1, 0x9c, 0x06, 0x9c, 0xc8, 0xb6, 0xdc, 0x80, 0x3c, 0x31, 0x2c, 0xbe, 0x9e, 0x11, 0xeb,
0x39, 0x62, 0x58, 0x6c, 0xf1, 0x16, 0x40, 0xc7, 0xeb, 0x76, 0x6d, 0xa2, 0x87, 0x17, 0x86, 0x32,
0x2f, 0x96, 0x0b, 0x9c, 0xd6, 0xb8, 0x30, 0x90, 0x0c, 0x69, 0xd3, 0x0e, 0x94, 0x1c, 0x3b, 0x97,
0x0e, 0xf7, 0x00, 0xf2, 0x01, 0xee, 0xdb, 0x21, 0xbd, 0xc9, 0xdf, 0x24, 0xc8, 0x8a, 0x5b, 0xb4,
0x60, 0x29, 0xe4, 0x56, 0xd3, 0x85, 0x03, 0x52, 0xcc, 0x01, 0x6f, 0x27, 0x38, 0x60, 0xc4, 0xd4,
0x47, 0x73, 0xda, 0x62, 0x38, 0x62, 0xfb, 0x13, 0x28, 0xb2, 0xdb, 0x7f, 0x45, 0xa7, 0x52, 0x5b,
0x04, 0x83, 0xd9, 0x5e, 0x3e, 0x8a, 0x0e, 0x75, 0x0b, 0x80, 0x06, 0x1f, 0x39, 0xee, 0x1a, 0x16,
0x46, 0x08, 0x32, 0xcc, 0x3e, 0xdc, 0xf8, 0x6c, 0x4c, 0xbd, 0x6b, 0xda, 0x16, 0x0e, 0x09, 0xb7,
0xaa, 0x26, 0x66, 0xea, 0x17, 0x29, 0x28, 0xb0, 0xb8, 0x6d, 0x10, 0xec, 0x3f, 0x95, 0x53, 0x86,
0x34, 0x76, 0xfb, 0x4a, 0x6a, 0x2d, 0x4d, 0x6d, 0x86, 0xdd, 0x3e, 0xdd, 0x65, 0x04, 0x56, 0xa8,
0xa4, 0x19, 0x89, 0x8d, 0x23, 0xcb, 0x66, 0x06, 0x96, 0x15, 0x49, 0x32, 0x1f, 0x25, 0x09, 0x5a,
0x85, 0xfc, 0x0f, 0x0d, 0x9b, 0xe8, 0xe7, 0x5e, 0xa0, 0x64, 0x19, 0x67, 0x8e, 0xce, 0x0f, 0xbc,
0x80, 0x86, 0x18, 0x76, 0x49, 0x70, 0xe5, 0x7b, 0xb6, 0x4b, 0x84, 0x77, 0x62, 0x14, 0x1a, 0x53,
0x21, 0xee, 0x04, 0x98, 0xe8, 0x54, 0x93, 0x3c, 0x63, 0x2e, 0x70, 0x4a, 0xcd, 0xed, 0xa3, 0x4f,
0x21, 0xd7, 0xf7, 0x9c, 0x5e, 0x17, 0x87, 0x4a, 0x61, 0x2d, 0xbd, 0x5e, 0xdc, 0x7c, 0x3d, 0xc1,
0xa2, 0x0f, 0xd8, 0x6e, 0x2d, 0xe2, 0x52, 0xdf, 0x85, 0x2c, 0x27, 0x3d, 0xd5, 0x00, 0x08, 0x32,
0xbe, 0x41, 0x2e, 0x44, 0xb4, 0xb2, 0xb1, 0xfa, 0x39, 0xe4, 0x34, 0x1c, 0xf6, 0x1c, 0x12, 0xd2,
0x1c, 0xb5, 0xa9, 0xd9, 0x43, 0x66, 0xa2, 0x64, 0x77, 0x0e, 0x1d, 0xa5, 0x09, 0x46, 0x74, 0x1b,
0xae, 0xb1, 0x65, 0x3d, 0x24, 0xd8, 0xd7, 0x85, 0x34, 0x6e, 0xdd, 0xe5, 0x76, 0xe4, 0x1c, 0xc6,
0x12, 0xaa, 0xff, 0x2a, 0xc0, 0x3c, 0x73, 0x98, 0x30, 0xb0, 0x34, 0x30, 0xf0, 0x68, 0xe6, 0xc9,
0xe3, 0x99, 0x57, 0x85, 0x6c, 0x48, 0x0c, 0xd2, 0x0b, 0xd9, 0x45, 0x96, 0x36, 0xdf, 0x9a, 0x42,
0x4f, 0xb3, 0xdc, 0x60, 0x2c, 0x9a, 0x60, 0x45, 0xaf, 0xc2, 0x22, 0x1f, 0xe9, 0x26, 0x26, 0x86,
0xed, 0x28, 0x0a, 0x3b, 0x66, 0x81, 0x13, 0xf7, 0x19, 0x0d, 0x7d, 0x3c, 0x56, 0xb5, 0x92, 0xdc,
0x31, 0x5a, 0xb1, 0xd0, 0x27, 0x30, 0x4f, 0xed, 0x10, 0x2a, 0x45, 0x66, 0xcf, 0xf5, 0x69, 0xf4,
0xa4, 0x06, 0xd2, 0x38, 0x1b, 0xda, 0x81, 0x5c, 0xc0, 0x7d, 0xa3, 0x00, 0x3b, 0xff, 0x8d, 0xc4,
0x04, 0x63, 0xbb, 0xb5, 0x88, 0x0d, 0x7d, 0x08, 0xc5, 0x4e, 0x80, 0x0d, 0x82, 0x75, 0xda, 0x2d,
0x94, 0x2c, 0x93, 0x52, 0x8a, 0xa4, 0x44, 0xad, 0xa4, 0xdc, 0x8c, 0x5a, 0x89, 0x06, 0x7c, 0x3b,
0x25, 0xa0, 0x0f, 0x00, 0x42, 0x62, 0x04, 0x84, 0xf3, 0xe6, 0x12, 0x79, 0x0b, 0x6c, 0x37, 0x63,
0xfd, 0x10, 0x8a, 0xe7, 0xb6, 0x6b, 0x87, 0x17, 0x9c, 0x37, 0x9f, 0x7c, 0x2e, 0xdf, 0xce, 0x98,
0xef, 0x40, 0x8e, 0x72, 0x79, 0x3d, 0xa2, 0x2c, 0x30, 0xc6, 0xd5, 0x09, 0xc6, 0x7d, 0xd1, 0x38,
0xb5, 0x68, 0x27, 0x2d, 0x0b, 0x22, 0xdc, 0x16, 0x59, 0xb8, 0x45, 0x11, 0x79, 0x0b, 0x8a, 0x8e,
0x67, 0x85, 0xba, 0xe8, 0x14, 0x2f, 0xf0, 0x94, 0xa4, 0xa4, 0x3d, 0xde, 0x2d, 0xbe, 0x03, 0xd7,
0xb8, 0xbb, 0x74, 0x3f, 0xf0, 0xfa, 0xd8, 0x35, 0xdc, 0x0e, 0x56, 0x5e, 0x64, 0xe7, 0x56, 0xa6,
0x72, 0xf7, 0xfd, 0x01, 0x9b, 0x26, 0x87, 0x63, 0x14, 0xb4, 0x0e, 0x32, 0x4f, 0x88, 0x58, 0x73,
0x5c, 0x61, 0x3a, 0x2c, 0xb5, 0x63, 0x4d, 0xf6, 0xd8, 0x44, 0x35, 0xc8, 0x79, 0x3e, 0x43, 0x0b,
0xca, 0x4b, 0xec, 0xf4, 0xa9, 0xc2, 0xfa, 0x8c, 0xb3, 0x68, 0x11, 0x2f, 0x7a, 0x09, 0x72, 0x8e,
0x67, 0xe9, 0xbd, 0xc0, 0x51, 0x56, 0x79, 0x7d, 0x74, 0x3c, 0xab, 0x15, 0x38, 0xe8, 0xbb, 0xb0,
0x18, 0xf6, 0xda, 0x21, 0xb1, 0x49, 0x8f, 0x9f, 0x72, 0x93, 0x05, 0xe5, 0xdd, 0xe9, 0x92, 0x27,
0xce, 0x59, 0xa3, 0xf5, 0x4c, 0x1b, 0x95, 0x46, 0x6b, 0x0b, 0x31, 0xac, 0x50, 0xb9, 0xc5, 0x4b,
0x29, 0x1d, 0xd3, 0x72, 0xc6, 0x6b, 0x5b, 0xa8, 0xac, 0x4d, 0x55, 0xce, 0x1a, 0x6c, 0xb7, 0x16,
0x71, 0x95, 0x76, 0x00, 0x4d, 0x9e, 0x4c, 0x2b, 0xf4, 0x25, 0xbe, 0x12, 0xf5, 0x82, 0x0e, 0xd1,
0x75, 0x98, 0xef, 0x1b, 0x4e, 0x2f, 0xea, 0xc3, 0x7c, 0xb2, 0x9d, 0xda, 0x92, 0xd4, 0x1f, 0x41,
0x96, 0x27, 0x3e, 0x42, 0xb0, 0xd4, 0x68, 0xee, 0x36, 0x5b, 0x0d, 0xbd, 0x55, 0xbf, 0x57, 0x3f,
0x7b, 0x58, 0x97, 0xe7, 0x10, 0x40, 0xf6, 0x9b, 0xad, 0x5a, 0xab, 0xb6, 0x2f, 0x4b, 0xa8, 0x08,
0xb9, 0x87, 0x67, 0xda, 0xbd, 0xe3, 0xfa, 0xa1, 0x9c, 0xa2, 0x93, 0x46, 0xab, 0x5a, 0xad, 0x35,
0x1a, 0x72, 0x9a, 0x4e, 0x0e, 0x76, 0x8f, 0x4f, 0x5a, 0x5a, 0x4d, 0xce, 0x50, 0x31, 0xc7, 0xf5,
0x66, 0x4d, 0xab, 0xef, 0x9e, 0xe8, 0x35, 0x4d, 0x3b, 0xd3, 0xe4, 0x79, 0xba, 0xa1, 0x79, 0x7c,
0x5a, 0x3b, 0x6b, 0x35, 0xe5, 0x2c, 0x5a, 0x84, 0x42, 0x75, 0xb7, 0x5e, 0xad, 0x9d, 0x9c, 0xd4,
0xf6, 0xe5, 0x9c, 0xda, 0x84, 0x15, 0xe1, 0x28, 0x01, 0x33, 0x4e, 0x31, 0x31, 0x4c, 0x83, 0x18,
0x68, 0x1b, 0xe6, 0xd9, 0xc5, 0xd9, 0x45, 0x8a, 0x9b, 0xaf, 0x4d, 0xe3, 0x08, 0x8d, 0xb3, 0xa8,
0xbf, 0x4f, 0x83, 0x3c, 0x1e, 0x7d, 0xc8, 0x84, 0x97, 0x02, 0x1c, 0x7a, 0x4e, 0x1f, 0xd3, 0xfa,
0x3b, 0xd2, 0xf3, 0xd3, 0xb3, 0xf7, 0x7c, 0xed, 0xc5, 0x48, 0xd8, 0x28, 0xea, 0xfa, 0x36, 0x5c,
0x1f, 0x9c, 0x12, 0x87, 0x00, 0xd9, 0x59, 0x71, 0x1d, 0x8a, 0xc4, 0xc4, 0x30, 0xd7, 0xf7, 0x68,
0xdd, 0x70, 0xb0, 0x7e, 0x61, 0x84, 0x17, 0x38, 0x54, 0x32, 0x2c, 0x6a, 0x3e, 0x9d, 0x31, 0x0d,
0xcb, 0x07, 0xb6, 0x83, 0x8f, 0x98, 0x04, 0x1e, 0xaa, 0x70, 0x3e, 0x20, 0x94, 0x2e, 0x60, 0x79,
0x6c, 0xf9, 0x29, 0xf1, 0xf4, 0x69, 0x3c, 0x9e, 0x92, 0x2f, 0x35, 0x14, 0x18, 0x0f, 0xbd, 0x3a,
0xc0, 0x70, 0x01, 0xed, 0x40, 0x61, 0x70, 0x33, 0x45, 0x62, 0xf7, 0x7a, 0x35, 0x41, 0x2c, 0xe5,
0xd4, 0xf2, 0x91, 0xee, 0xea, 0x8f, 0x25, 0xc8, 0xd0, 0x01, 0xda, 0x81, 0x0c, 0xb9, 0xf2, 0x79,
0x6b, 0x5f, 0x4a, 0x74, 0x2a, 0x65, 0x61, 0x7f, 0x9a, 0x57, 0x3e, 0xd6, 0x18, 0xe7, 0x68, 0xbe,
0x2c, 0x08, 0xa5, 0xd5, 0x35, 0xc8, 0x47, 0xfb, 0x50, 0x1e, 0x32, 0xf5, 0xb3, 0x7a, 0x8d, 0xe7,
0x48, 0xe3, 0x68, 0x77, 0xf3, 0xbd, 0xf7, 0x65, 0x49, 0xfd, 0x92, 0xe2, 0x4a, 0x96, 0x9b, 0x68,
0x0d, 0x16, 0x2e, 0xbb, 0xa1, 0x7e, 0x89, 0xaf, 0xf4, 0x18, 0xce, 0x80, 0xcb, 0x6e, 0x78, 0x0f,
0x5f, 0x31, 0x0c, 0xdb, 0x18, 0xc1, 0x3a, 0x69, 0x76, 0xe5, 0x6f, 0x4c, 0x55, 0x00, 0xc4, 0xbf,
0x9a, 0xdb, 0xe7, 0xfe, 0x1b, 0x22, 0xa4, 0xd2, 0x47, 0xb0, 0x34, 0xba, 0x98, 0x54, 0x0d, 0x16,
0xe2, 0x2e, 0xf1, 0x00, 0x55, 0x59, 0x7f, 0x9b, 0xe5, 0x8d, 0x34, 0xc8, 0xd3, 0xd4, 0xec, 0x79,
0xba, 0x03, 0xcb, 0x87, 0x98, 0x3c, 0xcf, 0x8b, 0xec, 0x67, 0x12, 0x5c, 0x3b, 0xb1, 0x43, 0x2e,
0x23, 0x9c, 0x52, 0xc8, 0x0d, 0x28, 0xf8, 0x2c, 0xfb, 0xed, 0x47, 0xdc, 0x0a, 0xf3, 0x5a, 0x9e,
0x12, 0x1a, 0xf6, 0x23, 0xfe, 0xae, 0xa1, 0x8b, 0xc4, 0xbb, 0xc4, 0xae, 0x00, 0xd1, 0x6c, 0x7b,
0x93, 0x12, 0x68, 0x23, 0x3d, 0xb7, 0x1d, 0x82, 0x03, 0xd6, 0xb5, 0x0b, 0x9a, 0x98, 0xa9, 0x8f,
0x00, 0xc5, 0xf5, 0x08, 0x7d, 0xcf, 0x0d, 0x31, 0xfa, 0x88, 0xbe, 0xc1, 0x28, 0x45, 0xc4, 0xf4,
0x74, 0xd6, 0x11, 0x3c, 0xe8, 0x0d, 0x58, 0x76, 0xf1, 0xe7, 0x44, 0x8f, 0xe9, 0xc3, 0x6f, 0xbe,
0x48, 0xc9, 0xf7, 0x23, 0x9d, 0xd4, 0x2a, 0xa0, 0x2a, 0xcd, 0x6c, 0xe7, 0x79, 0x2c, 0xf9, 0xd3,
0x0c, 0x2c, 0xc4, 0x1f, 0xb6, 0x13, 0xb0, 0x73, 0x0d, 0x8a, 0x26, 0x0e, 0x3b, 0x81, 0xcd, 0x5a,
0x29, 0x83, 0x5c, 0x05, 0x2d, 0x4e, 0x42, 0x4d, 0x90, 0xa3, 0x3e, 0x4e, 0x70, 0xd7, 0x77, 0x0c,
0x12, 0xe1, 0xa2, 0x19, 0xea, 0xde, 0xb2, 0x10, 0xd1, 0x14, 0x12, 0xd0, 0x47, 0x51, 0x80, 0x65,
0xa6, 0x0f, 0xb0, 0xa3, 0x39, 0x11, 0x62, 0xe8, 0x65, 0x60, 0x25, 0x82, 0x25, 0x61, 0x5e, 0x3c,
0x14, 0x07, 0x94, 0x71, 0x00, 0x38, 0x3f, 0x13, 0x00, 0x2c, 0x41, 0xde, 0xb4, 0x43, 0xa3, 0xed,
0x60, 0x53, 0x29, 0xac, 0x49, 0xeb, 0x79, 0x6d, 0x30, 0x47, 0xe6, 0x38, 0x9c, 0xe0, 0x18, 0xf7,
0x93, 0x69, 0x94, 0x17, 0x0e, 0x48, 0x46, 0x15, 0xcf, 0x0f, 0x00, 0xf6, 0x64, 0x58, 0x12, 0x00,
0x4c, 0x98, 0x5b, 0xfd, 0x89, 0x04, 0xab, 0xb1, 0x2a, 0x30, 0xdb, 0xcf, 0x1c, 0x35, 0xc8, 0x09,
0xf7, 0x89, 0x72, 0xf0, 0xd6, 0x0c, 0x17, 0xd6, 0x22, 0x5e, 0xf5, 0x01, 0xac, 0x44, 0x75, 0xe1,
0x7f, 0xf9, 0x33, 0x8b, 0xfa, 0x01, 0x28, 0x83, 0x24, 0x15, 0x82, 0xa7, 0xac, 0x19, 0xaa, 0x09,
0xab, 0x4f, 0x61, 0x15, 0x69, 0x7e, 0x08, 0x79, 0x71, 0x48, 0x94, 0xe8, 0x33, 0xdd, 0x7b, 0xc0,
0xac, 0x7e, 0x0b, 0x56, 0xf7, 0xb1, 0x83, 0xbf, 0x92, 0xed, 0x13, 0xee, 0xfe, 0x3b, 0x09, 0x56,
0x5b, 0xbe, 0x69, 0xfc, 0x1f, 0x64, 0xc7, 0xdd, 0x9e, 0x7e, 0x0e, 0xb7, 0xff, 0x3d, 0x2b, 0x4a,
0x90, 0x80, 0xed, 0xa8, 0x0d, 0x2b, 0x13, 0x8f, 0x8f, 0x21, 0x44, 0x98, 0xb5, 0xb9, 0x5f, 0x1f,
0x7f, 0x7e, 0x30, 0xb8, 0xe0, 0x53, 0x58, 0xc8, 0x8c, 0x80, 0x4d, 0xbd, 0x8f, 0x03, 0xfb, 0xfc,
0x4a, 0xe7, 0xaf, 0x05, 0xf1, 0x7e, 0xde, 0x9a, 0xe1, 0xa1, 0x51, 0x7e, 0xc0, 0x04, 0xf0, 0x19,
0x85, 0x88, 0x42, 0x70, 0x9c, 0x8c, 0x3e, 0x83, 0x85, 0xae, 0xd1, 0xb9, 0xb0, 0x5d, 0xac, 0x33,
0xa0, 0x92, 0x66, 0xc7, 0xdc, 0x9d, 0xe5, 0x98, 0x53, 0xce, 0xcf, 0xae, 0x55, 0xec, 0x0e, 0x27,
0x14, 0x77, 0x98, 0x76, 0x78, 0xc9, 0x5a, 0x9b, 0x6e, 0xb5, 0x19, 0xec, 0x4c, 0x6b, 0x40, 0x69,
0xb4, 0xbb, 0x1d, 0xb6, 0x91, 0x07, 0x2f, 0xc4, 0x8b, 0x48, 0x74, 0xd7, 0x0c, 0x53, 0xe2, 0x93,
0x59, 0x94, 0x88, 0x97, 0x1e, 0x71, 0x63, 0x14, 0x4e, 0xd0, 0x90, 0x0f, 0xd7, 0xe9, 0x93, 0x2b,
0x24, 0x01, 0x36, 0xba, 0xb6, 0x6b, 0x45, 0x27, 0xce, 0xcf, 0x7e, 0xe2, 0x89, 0x67, 0x35, 0x22,
0x31, 0xd1, 0x89, 0xce, 0x04, 0x4d, 0x2d, 0xc3, 0xc2, 0x88, 0xc1, 0x65, 0x58, 0xa8, 0x9f, 0x35,
0xf5, 0x07, 0x35, 0xed, 0xf8, 0xe0, 0xb8, 0xb6, 0x2f, 0xcf, 0xa1, 0x05, 0xc8, 0x0f, 0x66, 0x92,
0x5a, 0x85, 0x62, 0xcc, 0xa0, 0x68, 0x19, 0x8a, 0xad, 0x7a, 0xe3, 0x7e, 0xad, 0x1a, 0xed, 0xa6,
0xfc, 0x1b, 0xfa, 0xd1, 0xf1, 0xe1, 0x51, 0xf5, 0x7e, 0x4b, 0xdf, 0x92, 0x25, 0x74, 0x0d, 0x16,
0x63, 0x94, 0x3b, 0x9b, 0x72, 0x4a, 0x7d, 0x6f, 0xb4, 0x16, 0x8b, 0xa3, 0x97, 0x00, 0x4e, 0x5b,
0x8d, 0xa6, 0x7e, 0xba, 0xdb, 0xac, 0x1e, 0xc9, 0x73, 0x54, 0xf6, 0xee, 0xc9, 0xc9, 0xd9, 0x43,
0xfd, 0xe4, 0xec, 0xac, 0x51, 0x93, 0x25, 0xf5, 0x10, 0xd0, 0xe4, 0xad, 0xf8, 0x6b, 0x4c, 0xab,
0xed, 0x9e, 0xea, 0xfb, 0xb5, 0x83, 0xdd, 0xd6, 0x49, 0x53, 0x9e, 0xa3, 0x2f, 0x27, 0x41, 0x3b,
0xab, 0xcb, 0x12, 0x95, 0x1c, 0x4d, 0x0f, 0x0e, 0xe4, 0xd4, 0xe6, 0x5f, 0x97, 0x00, 0xaa, 0xd4,
0x74, 0xfc, 0x47, 0xa3, 0x5f, 0x48, 0x50, 0x8c, 0x95, 0x71, 0xb4, 0x91, 0x60, 0xe7, 0x49, 0xe0,
0x57, 0xba, 0x19, 0xb1, 0xc4, 0x7e, 0xb5, 0x2f, 0x0f, 0x1e, 0x6a, 0x6a, 0xe5, 0x8b, 0x7f, 0xfe,
0xfb, 0x97, 0xa9, 0x37, 0xd5, 0xb5, 0x4a, 0x7f, 0xa3, 0x22, 0x4a, 0x45, 0x58, 0x79, 0x3c, 0x2c,
0x23, 0x4f, 0x2a, 0x1c, 0xc7, 0x6c, 0x8b, 0x56, 0xfc, 0x73, 0x09, 0xf2, 0x51, 0x59, 0x47, 0xe5,
0x04, 0x7d, 0xc6, 0x70, 0x61, 0x69, 0xaa, 0xb6, 0xaf, 0xbe, 0xc3, 0x74, 0xfa, 0x3a, 0x7a, 0x3d,
0x49, 0xa7, 0xca, 0x63, 0xdb, 0x7c, 0x82, 0x7e, 0x23, 0x01, 0x0c, 0x51, 0x1b, 0x7a, 0x37, 0xe1,
0x8c, 0x09, 0xa0, 0x59, 0xda, 0x98, 0x81, 0x83, 0xf7, 0x0a, 0x75, 0x9d, 0xa9, 0xa8, 0xa2, 0x44,
0xb3, 0xa1, 0xdf, 0x52, 0x17, 0x0e, 0x71, 0x5d, 0xb2, 0x0b, 0x27, 0x30, 0xe0, 0x94, 0x56, 0xbb,
0xcb, 0x54, 0xda, 0x50, 0xdf, 0x9e, 0xca, 0x6a, 0xdb, 0x1d, 0x76, 0xce, 0xb6, 0x74, 0x1b, 0xfd,
0x59, 0x1a, 0x79, 0x31, 0x44, 0xc8, 0x71, 0x6b, 0xfa, 0x58, 0x1b, 0x6d, 0x43, 0xa5, 0x59, 0xfa,
0x86, 0x7a, 0x87, 0xa9, 0xfd, 0x8e, 0xaa, 0x3e, 0x5b, 0xed, 0xa8, 0xb1, 0x6e, 0x47, 0x3d, 0x06,
0xfd, 0x49, 0x1a, 0xbe, 0x39, 0x22, 0x7d, 0xdf, 0x9b, 0x32, 0x16, 0x9f, 0x47, 0x59, 0x61, 0x63,
0x54, 0x49, 0x56, 0xb6, 0xf2, 0x78, 0xd8, 0x6b, 0x9f, 0xa0, 0xbf, 0xc4, 0x5f, 0x38, 0x11, 0xf2,
0x40, 0x77, 0xa7, 0x0d, 0xbc, 0x31, 0x98, 0x53, 0xda, 0x9a, 0x9d, 0x51, 0x04, 0xee, 0x6d, 0x76,
0x83, 0xd7, 0xd0, 0x14, 0xe6, 0xa6, 0xa1, 0x8b, 0x26, 0x81, 0x4c, 0x62, 0x60, 0x3c, 0x13, 0xfb,
0x94, 0x56, 0x26, 0x30, 0x79, 0xad, 0xeb, 0x93, 0xab, 0xc8, 0xac, 0xb7, 0x67, 0x36, 0xeb, 0x97,
0x12, 0xa0, 0x49, 0x38, 0x94, 0xa8, 0xe1, 0x33, 0x11, 0xd4, 0x6c, 0xd1, 0xb0, 0xc3, 0xd4, 0xde,
0xde, 0x9c, 0x55, 0xed, 0x61, 0x1c, 0xff, 0x51, 0x82, 0xe5, 0xb1, 0x4f, 0x91, 0x89, 0x71, 0xfc,
0xf4, 0x4f, 0x97, 0x49, 0x75, 0xbe, 0xca, 0x74, 0xfd, 0x58, 0xbd, 0x33, 0xab, 0xae, 0x41, 0xcf,
0xdd, 0x8e, 0x7e, 0xeb, 0xff, 0x15, 0xfb, 0x78, 0x18, 0x7d, 0x7e, 0x4d, 0xac, 0xb4, 0x13, 0x5f,
0x6a, 0x93, 0x94, 0x7c, 0x9f, 0x29, 0xf9, 0xae, 0xfa, 0xd6, 0x74, 0x25, 0x2c, 0xa0, 0xf2, 0xb7,
0xa5, 0xdb, 0x7b, 0x97, 0xa0, 0x74, 0xbc, 0x6e, 0x24, 0x7b, 0x44, 0x89, 0xfb, 0xd2, 0x67, 0x87,
0x82, 0x6e, 0x79, 0x8e, 0xe1, 0x5a, 0x65, 0x2f, 0xb0, 0x2a, 0x16, 0x76, 0x59, 0x08, 0x56, 0xf8,
0x92, 0xe1, 0xdb, 0xe1, 0x33, 0x3e, 0xb3, 0x7f, 0x38, 0x9c, 0xfd, 0x21, 0x95, 0x3e, 0xac, 0xee,
0xb5, 0xb3, 0x8c, 0xf3, 0xce, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0xba, 0xc5, 0x54, 0x96, 0x9f,
0x1f, 0x00, 0x00,
// 2585 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x5a, 0x5b, 0x73, 0xdb, 0xc6,
0xf5, 0x17, 0x48, 0x8a, 0x97, 0x43, 0x5d, 0xe0, 0x8d, 0xa3, 0x40, 0x74, 0x1c, 0x2b, 0xc8, 0x4d,
0x71, 0x12, 0x32, 0x92, 0xff, 0x8e, 0x1d, 0xe5, 0x62, 0x4b, 0x14, 0x75, 0x99, 0xc8, 0x94, 0xff,
0x20, 0xe9, 0x4c, 0xd3, 0x76, 0x50, 0x90, 0x58, 0x43, 0xa8, 0x40, 0x00, 0x05, 0x96, 0x6c, 0x94,
0x34, 0xd3, 0x36, 0x33, 0xed, 0x6b, 0xdb, 0xe9, 0xf4, 0xa1, 0xd3, 0x87, 0x5e, 0x9e, 0x3b, 0x9d,
0x4e, 0xfb, 0xd0, 0x99, 0xce, 0xe4, 0xb9, 0x1f, 0xa0, 0x5f, 0xa1, 0x1f, 0xa4, 0xb3, 0x17, 0x90,
0x20, 0x29, 0x17, 0x44, 0xdc, 0xbe, 0x50, 0xd8, 0xb3, 0x7b, 0xce, 0x9e, 0x3d, 0xb7, 0xfd, 0x1d,
0x40, 0x50, 0xb5, 0x3c, 0xcf, 0x72, 0x70, 0xcd, 0xc4, 0x43, 0xe2, 0x79, 0x4e, 0x58, 0xeb, 0x39,
0xde, 0xc0, 0xec, 0x0e, 0x6c, 0xc7, 0xac, 0x0d, 0xb7, 0x62, 0xa3, 0xaa, 0x1f, 0x78, 0xc4, 0x43,
0xd7, 0xf9, 0xfa, 0x6a, 0xb4, 0xbe, 0x1a, 0x5b, 0x31, 0xdc, 0xaa, 0x3c, 0x2f, 0xc4, 0x19, 0xbe,
0x5d, 0x33, 0x5c, 0xd7, 0x23, 0x06, 0xb1, 0x3d, 0x37, 0xe4, 0xcc, 0x15, 0x55, 0xcc, 0x32, 0x9e,
0x9a, 0x31, 0x30, 0x6d, 0xc2, 0x7f, 0x75, 0xc7, 0xb3, 0xc4, 0x9a, 0x97, 0xc4, 0x1a, 0xc7, 0x73,
0xad, 0x60, 0xe0, 0xba, 0xb6, 0x6b, 0xd5, 0x3c, 0x1f, 0x07, 0x13, 0x82, 0x5e, 0x10, 0x8b, 0xd8,
0xa8, 0x3b, 0x78, 0x5c, 0x33, 0x07, 0x7c, 0x81, 0x98, 0xbf, 0x36, 0x3d, 0x8f, 0xfb, 0x3e, 0xb9,
0x10, 0x93, 0x37, 0xa6, 0x27, 0x89, 0xdd, 0xc7, 0x21, 0x31, 0xfa, 0x3e, 0x5f, 0xa0, 0xee, 0xc1,
0x15, 0x0d, 0x93, 0xe0, 0x62, 0x8f, 0x9e, 0x4a, 0xc3, 0xdf, 0x1b, 0xe0, 0x90, 0xa0, 0xeb, 0x00,
0x7e, 0xe0, 0x7d, 0x17, 0xf7, 0x88, 0x6e, 0x9b, 0x8a, 0xb4, 0x21, 0x6d, 0x96, 0xb4, 0x92, 0xa0,
0x1c, 0x9b, 0x68, 0x05, 0x32, 0xb6, 0xa9, 0x64, 0x18, 0x39, 0x63, 0x9b, 0xea, 0xaf, 0x25, 0x58,
0xd3, 0x06, 0x2e, 0x13, 0xd1, 0x0e, 0x6c, 0xcb, 0xc2, 0xc1, 0x9c, 0x92, 0xae, 0x03, 0x10, 0xce,
0xa0, 0x8f, 0x24, 0x96, 0x04, 0xe5, 0xd8, 0x44, 0xbb, 0x90, 0x0f, 0xbd, 0x41, 0xd0, 0xc3, 0x4a,
0x76, 0x43, 0xda, 0x2c, 0x6f, 0xbf, 0x5e, 0xfd, 0x8f, 0x1e, 0xa9, 0x6a, 0xd8, 0xf7, 0x5a, 0x8c,
0x41, 0x13, 0x8c, 0xaa, 0x0e, 0xcb, 0x2d, 0xe2, 0x05, 0x86, 0x85, 0xf9, 0x04, 0x5a, 0x83, 0x7c,
0x77, 0xd0, 0x3b, 0xc7, 0x44, 0x68, 0x23, 0x46, 0x94, 0xee, 0x75, 0xa9, 0x5a, 0x42, 0x0d, 0x31,
0x42, 0x2f, 0x00, 0x58, 0xd8, 0x15, 0x3e, 0x61, 0x7a, 0x64, 0xb5, 0x18, 0x45, 0xfd, 0x87, 0x04,
0x30, 0xde, 0x37, 0xe9, 0xc0, 0xd7, 0xa0, 0x14, 0x60, 0xdf, 0xd3, 0x5d, 0xa3, 0x8f, 0xc5, 0x46,
0x45, 0x4a, 0x68, 0x1a, 0x7d, 0x8c, 0x5e, 0x84, 0x72, 0x37, 0x30, 0xdc, 0xde, 0x19, 0x9f, 0xa6,
0x7b, 0x95, 0x8e, 0x16, 0x34, 0xe0, 0x44, 0xb6, 0xe4, 0x1a, 0x14, 0x89, 0x61, 0xf1, 0xf9, 0x9c,
0x98, 0x2f, 0x10, 0xc3, 0x62, 0x93, 0x37, 0x00, 0x7a, 0x5e, 0xbf, 0x6f, 0x13, 0x3d, 0x3c, 0x33,
0x94, 0x45, 0x31, 0x5d, 0xe2, 0xb4, 0xd6, 0x99, 0x81, 0x64, 0xc8, 0x9a, 0x76, 0xa0, 0x14, 0xd8,
0xbe, 0xf4, 0x71, 0x0f, 0xa0, 0x18, 0xe0, 0xa1, 0x1d, 0xd2, 0x93, 0xfc, 0x4d, 0x82, 0xbc, 0x38,
0x45, 0x07, 0x56, 0x42, 0x6e, 0x35, 0x5d, 0x38, 0x20, 0xc3, 0x1c, 0xf0, 0x66, 0x82, 0x03, 0x26,
0x4c, 0x7d, 0xb4, 0xa0, 0x2d, 0x87, 0x13, 0xb6, 0x3f, 0x81, 0x32, 0x3b, 0xfd, 0xd7, 0x74, 0x2a,
0xb5, 0x45, 0x30, 0x1a, 0xed, 0x15, 0xa3, 0xe8, 0x50, 0xbf, 0x94, 0x00, 0x68, 0xf4, 0x91, 0xe3,
0xbe, 0x61, 0x61, 0x84, 0x20, 0xc7, 0x0c, 0xc4, 0xad, 0xcf, 0x9e, 0xa9, 0x7b, 0x4d, 0xdb, 0xc2,
0x21, 0xe1, 0x66, 0xd5, 0xc4, 0x08, 0x1d, 0x41, 0xd9, 0x1f, 0x84, 0x67, 0x3a, 0xb1, 0xfb, 0xb6,
0x6b, 0x31, 0x9b, 0x96, 0xb7, 0x5f, 0x4b, 0x50, 0xa9, 0x6d, 0xf7, 0x71, 0xcb, 0x37, 0x5c, 0x0d,
0x28, 0x6f, 0x9b, 0xb1, 0xaa, 0x5f, 0x65, 0xa1, 0xc4, 0x52, 0xa0, 0x45, 0xb0, 0x7f, 0xa9, 0x0e,
0x32, 0x64, 0xb1, 0x3b, 0x54, 0x32, 0x1b, 0x59, 0x6a, 0x7e, 0xec, 0x0e, 0xe9, 0x2a, 0x23, 0xb0,
0x42, 0x25, 0xcb, 0x48, 0xec, 0x39, 0x72, 0x52, 0x6e, 0xe4, 0x24, 0x91, 0x6f, 0x8b, 0x51, 0xbe,
0xa1, 0x75, 0x28, 0x7e, 0xdf, 0xb0, 0x89, 0xfe, 0xd8, 0x0b, 0x94, 0x3c, 0xe3, 0x2c, 0xd0, 0xf1,
0x81, 0x17, 0xd0, 0x68, 0xc5, 0x2e, 0x09, 0x2e, 0x7c, 0xcf, 0x76, 0x89, 0x70, 0x74, 0x8c, 0x42,
0xc3, 0x33, 0xc4, 0xbd, 0x00, 0x13, 0x9d, 0x6a, 0x52, 0x64, 0xcc, 0x25, 0x4e, 0x69, 0xb8, 0x43,
0x74, 0x0f, 0x0a, 0x43, 0xcf, 0x19, 0xf4, 0x71, 0xa8, 0x94, 0x36, 0xb2, 0x9b, 0xe5, 0xed, 0x57,
0x12, 0x2c, 0xf1, 0x88, 0xad, 0xd6, 0x22, 0x2e, 0x74, 0x0f, 0xf2, 0xc2, 0x92, 0x90, 0xce, 0x92,
0x82, 0x0d, 0xdd, 0x82, 0x02, 0x2d, 0x51, 0xde, 0x80, 0x28, 0x65, 0x26, 0x61, 0x3d, 0x92, 0x10,
0x95, 0xb0, 0xea, 0xbe, 0xa8, 0x7f, 0x5a, 0xb4, 0x12, 0xd5, 0x21, 0x1f, 0x12, 0x83, 0x0c, 0x42,
0x65, 0x69, 0x43, 0xda, 0x5c, 0xd9, 0x7e, 0x23, 0x61, 0x57, 0xe6, 0xa6, 0x6a, 0x8b, 0xb1, 0x68,
0x82, 0x55, 0x7d, 0x1b, 0xf2, 0xfc, 0x34, 0x97, 0xfa, 0x0e, 0x41, 0xce, 0x37, 0xc8, 0x99, 0xc8,
0x59, 0xf6, 0xac, 0x7e, 0x0a, 0x05, 0x0d, 0x87, 0x03, 0x87, 0x84, 0xb4, 0x52, 0xd9, 0x34, 0xf6,
0x42, 0xe6, 0xdd, 0xe4, 0xa0, 0x1e, 0x47, 0xab, 0x26, 0x18, 0xd1, 0x4d, 0xb8, 0xc2, 0xa6, 0xf5,
0x90, 0x60, 0x5f, 0x17, 0xd2, 0x78, 0x60, 0xac, 0x76, 0xa3, 0xb8, 0x62, 0x2c, 0xa1, 0xfa, 0x8b,
0x32, 0x2c, 0xb2, 0x43, 0x88, 0xd8, 0x90, 0x46, 0xb1, 0x31, 0x59, 0x7f, 0xe4, 0xe9, 0xfa, 0x33,
0xb6, 0x54, 0xe6, 0x6b, 0x5b, 0x0a, 0xbd, 0x04, 0xcb, 0xfc, 0x49, 0x37, 0x31, 0x31, 0x6c, 0x47,
0x51, 0xd8, 0x36, 0x4b, 0x9c, 0xb8, 0xcf, 0x68, 0xe8, 0x83, 0xa9, 0xda, 0x9d, 0x14, 0x49, 0x93,
0x75, 0x1b, 0x7d, 0x08, 0x8b, 0xd4, 0x0e, 0xa1, 0x52, 0x66, 0xf6, 0xdc, 0x9c, 0x47, 0x4f, 0x6a,
0x20, 0x8d, 0xb3, 0xa1, 0xfb, 0x50, 0x08, 0xb8, 0x6f, 0x44, 0x24, 0xbe, 0x9a, 0x58, 0x66, 0xd8,
0x6a, 0x2d, 0x62, 0x43, 0xef, 0x41, 0xb9, 0x17, 0x60, 0x83, 0x60, 0x5a, 0x1b, 0xb0, 0x92, 0x67,
0x52, 0x2a, 0x33, 0xd1, 0xd8, 0x8e, 0x2e, 0x54, 0x0d, 0xf8, 0x72, 0x4a, 0x40, 0xef, 0x02, 0x84,
0xc4, 0x08, 0x08, 0xe7, 0x2d, 0x24, 0xf2, 0x96, 0xd8, 0x6a, 0xc6, 0xfa, 0x1e, 0x94, 0x1f, 0xdb,
0xae, 0xcd, 0x6b, 0x12, 0x56, 0x8a, 0xc9, 0xfb, 0xf2, 0xe5, 0x8c, 0x39, 0x96, 0x3e, 0x4b, 0x73,
0xa7, 0xcf, 0xda, 0x28, 0x78, 0x97, 0x59, 0xb8, 0x45, 0x11, 0x79, 0x03, 0xca, 0x8e, 0x67, 0x85,
0xba, 0xb8, 0x2f, 0x9f, 0xe1, 0xd5, 0x84, 0x92, 0xf6, 0xf8, 0x9d, 0xf9, 0x2d, 0xb8, 0xc2, 0xdd,
0xa5, 0xfb, 0x81, 0x37, 0xc4, 0xae, 0xe1, 0xf6, 0xb0, 0xf2, 0x2c, 0xdb, 0xb7, 0x36, 0x97, 0xbb,
0x1f, 0x8e, 0xd8, 0x34, 0x39, 0x9c, 0xa2, 0xa0, 0x4d, 0x90, 0x79, 0x42, 0xc4, 0x20, 0xc2, 0x1a,
0xd3, 0x61, 0xa5, 0x1b, 0x83, 0x1a, 0xc7, 0x26, 0x6a, 0x40, 0xc1, 0xf3, 0x19, 0x66, 0x52, 0x9e,
0x63, 0xbb, 0xcf, 0x15, 0xd6, 0xa7, 0x9c, 0x45, 0x8b, 0x78, 0xd1, 0x73, 0x50, 0x70, 0x3c, 0x4b,
0x1f, 0x04, 0x8e, 0xb2, 0xce, 0x2f, 0x09, 0xc7, 0xb3, 0x3a, 0x81, 0x83, 0xbe, 0x0d, 0xcb, 0xe1,
0xa0, 0x1b, 0x12, 0x9b, 0x0c, 0xf8, 0x2e, 0xd7, 0x59, 0x50, 0xde, 0x99, 0x2f, 0x79, 0xe2, 0x9c,
0x0d, 0x5a, 0x8a, 0xb5, 0x49, 0x69, 0xb4, 0xb6, 0x10, 0xc3, 0x0a, 0x95, 0x1b, 0xfc, 0x16, 0xa0,
0xcf, 0xb4, 0x12, 0xf3, 0xb2, 0x1c, 0x2a, 0x1b, 0x73, 0x55, 0xe2, 0x16, 0x5b, 0xad, 0x45, 0x5c,
0xe8, 0x68, 0x54, 0x89, 0x5f, 0x64, 0xfc, 0x6f, 0xcf, 0xa5, 0x2c, 0xbf, 0xcb, 0xb8, 0x96, 0x82,
0xbf, 0x72, 0x1f, 0xd0, 0xec, 0x19, 0xe8, 0x35, 0x75, 0x8e, 0x2f, 0x44, 0xe5, 0xa1, 0x8f, 0xe8,
0x2a, 0x2c, 0x0e, 0x0d, 0x67, 0x10, 0xe1, 0x1a, 0x3e, 0xd8, 0xc9, 0xdc, 0x95, 0x2a, 0x5d, 0x28,
0xc7, 0x04, 0x5f, 0xc2, 0xfa, 0x41, 0x9c, 0x35, 0xc5, 0xad, 0x31, 0xde, 0x43, 0xfd, 0x21, 0xe4,
0x79, 0x99, 0x42, 0x08, 0x56, 0x5a, 0xed, 0xdd, 0x76, 0xa7, 0xa5, 0x77, 0x9a, 0x1f, 0x35, 0x4f,
0x3f, 0x6e, 0xca, 0x0b, 0x08, 0x20, 0xff, 0xff, 0x9d, 0x46, 0xa7, 0xb1, 0x2f, 0x4b, 0xa8, 0x0c,
0x85, 0x8f, 0x4f, 0xb5, 0x8f, 0x8e, 0x9b, 0x87, 0x72, 0x86, 0x0e, 0x5a, 0x9d, 0x7a, 0xbd, 0xd1,
0x6a, 0xc9, 0x59, 0x3a, 0x38, 0xd8, 0x3d, 0x3e, 0xe9, 0x68, 0x0d, 0x39, 0x47, 0xc5, 0x1c, 0x37,
0xdb, 0x0d, 0xad, 0xb9, 0x7b, 0xa2, 0x37, 0x34, 0xed, 0x54, 0x93, 0x17, 0xe9, 0x82, 0xf6, 0xf1,
0x83, 0xc6, 0x69, 0xa7, 0x2d, 0xe7, 0xd1, 0x32, 0x94, 0xea, 0xbb, 0xcd, 0x7a, 0xe3, 0xe4, 0xa4,
0xb1, 0x2f, 0x17, 0xd4, 0x1f, 0x40, 0x31, 0xd2, 0x6b, 0x2a, 0xfd, 0xa5, 0x34, 0xe9, 0x7f, 0x1b,
0x8a, 0xd8, 0x35, 0x39, 0x63, 0x26, 0x91, 0xb1, 0x80, 0x5d, 0x93, 0x8e, 0xd4, 0x36, 0xac, 0x89,
0xa0, 0x16, 0xc0, 0xf4, 0x01, 0x26, 0x86, 0x69, 0x10, 0x03, 0xed, 0xc0, 0x22, 0x33, 0x9c, 0x50,
0xe3, 0xe5, 0x79, 0xe2, 0x40, 0xe3, 0x2c, 0xea, 0xef, 0xb3, 0x20, 0x4f, 0x67, 0x2a, 0x32, 0xe1,
0xb9, 0x00, 0x87, 0x9e, 0x33, 0xc4, 0xf4, 0xae, 0x9a, 0x40, 0x89, 0xd9, 0xf4, 0x28, 0x51, 0x7b,
0x36, 0x12, 0x36, 0x89, 0xd3, 0xbf, 0x09, 0x57, 0x47, 0xbb, 0xc4, 0x41, 0x63, 0x3e, 0x6d, 0x27,
0x80, 0x22, 0x31, 0x31, 0x94, 0xfe, 0x1d, 0x5a, 0x63, 0x1d, 0xac, 0x9f, 0x19, 0xe1, 0x19, 0x0e,
0x95, 0x1c, 0xcb, 0x90, 0x7b, 0x29, 0x4b, 0x56, 0xf5, 0xc0, 0x76, 0xf0, 0x11, 0x93, 0xc0, 0x13,
0x06, 0x1e, 0x8f, 0x08, 0x95, 0x33, 0x58, 0x9d, 0x9a, 0xbe, 0x24, 0xec, 0xef, 0x4d, 0x86, 0x7d,
0xd2, 0xa1, 0xc6, 0x02, 0xe3, 0x81, 0xdf, 0x04, 0x18, 0x4f, 0xa0, 0xfb, 0x50, 0x1a, 0x9d, 0x4c,
0x91, 0xd8, 0xb9, 0x5e, 0x4a, 0x10, 0x4b, 0x39, 0xb5, 0x62, 0xa4, 0xbb, 0xfa, 0x23, 0x09, 0x72,
0xf4, 0x01, 0xdd, 0x87, 0x1c, 0xb9, 0xf0, 0x79, 0xf8, 0xae, 0x24, 0x3a, 0x95, 0xb2, 0xb0, 0x9f,
0xf6, 0x85, 0x8f, 0x35, 0xc6, 0x39, 0x59, 0x11, 0x96, 0x84, 0xd2, 0xea, 0x06, 0x14, 0xa3, 0x75,
0xa8, 0x08, 0xb9, 0xe6, 0x69, 0xb3, 0xc1, 0x33, 0xb4, 0x75, 0xb4, 0xbb, 0x7d, 0xfb, 0x1d, 0x59,
0x52, 0xbf, 0xa2, 0x9d, 0x08, 0xab, 0x63, 0x68, 0x03, 0x96, 0xce, 0xfb, 0xa1, 0x7e, 0x8e, 0x2f,
0xf4, 0x18, 0x26, 0x83, 0xf3, 0x7e, 0xf8, 0x11, 0xbe, 0x60, 0x5d, 0x4f, 0x6b, 0x02, 0xd2, 0x66,
0xd9, 0x91, 0xff, 0x6f, 0xae, 0x62, 0x29, 0xfe, 0x34, 0xdc, 0x21, 0xf7, 0xdf, 0x18, 0x08, 0x57,
0xde, 0x87, 0x95, 0xc9, 0xc9, 0xa4, 0x7a, 0xb7, 0x14, 0x77, 0x89, 0x07, 0xa8, 0xce, 0xb0, 0x40,
0x9a, 0xae, 0x7a, 0x94, 0xa7, 0x99, 0xf4, 0x79, 0x7a, 0x1f, 0x56, 0x0f, 0x31, 0x79, 0x9a, 0x1e,
0xfe, 0xa7, 0x12, 0x5c, 0x39, 0xb1, 0x43, 0x2e, 0x23, 0x9c, 0x53, 0xc8, 0x35, 0x28, 0xf9, 0x2c,
0xfb, 0xed, 0xcf, 0xb8, 0x15, 0x16, 0xb5, 0x22, 0x25, 0xb4, 0xec, 0xcf, 0x78, 0x27, 0x4c, 0x27,
0x89, 0x77, 0x8e, 0x5d, 0xd1, 0x75, 0xb1, 0xe5, 0x6d, 0x4a, 0xa0, 0xa0, 0xe3, 0xb1, 0xed, 0x10,
0x1c, 0x30, 0x84, 0x53, 0xd2, 0xc4, 0x48, 0xfd, 0x0c, 0x50, 0x5c, 0x8f, 0xd0, 0xf7, 0xdc, 0x10,
0xa3, 0xf7, 0x69, 0xd7, 0x4e, 0x29, 0x22, 0xa6, 0xe7, 0xb3, 0x8e, 0xe0, 0x41, 0xaf, 0xc2, 0xaa,
0x8b, 0x3f, 0x25, 0x7a, 0x4c, 0x1f, 0x7e, 0xf2, 0x65, 0x4a, 0x7e, 0x18, 0xe9, 0xa4, 0xd6, 0x01,
0xd5, 0x69, 0x66, 0x3b, 0x4f, 0x63, 0xc9, 0x9f, 0xe4, 0x60, 0x29, 0xfe, 0x2a, 0x64, 0x06, 0xa2,
0x6f, 0x40, 0xd9, 0xc4, 0x61, 0x2f, 0xb0, 0x19, 0xec, 0x60, 0xf0, 0xb4, 0xa4, 0xc5, 0x49, 0xa8,
0x0d, 0x72, 0x84, 0x79, 0x08, 0xee, 0xfb, 0x8e, 0x41, 0x22, 0x0c, 0x99, 0xa2, 0xee, 0xad, 0x0a,
0x11, 0x6d, 0x21, 0x01, 0xbd, 0x1f, 0x05, 0x58, 0x6e, 0xfe, 0x00, 0x3b, 0x5a, 0x10, 0x21, 0x86,
0x9e, 0x07, 0x56, 0x22, 0x58, 0x12, 0x16, 0xc5, 0xab, 0x85, 0x11, 0x65, 0x1a, 0x2c, 0x2f, 0xa6,
0x02, 0xcb, 0x15, 0x28, 0x9a, 0x76, 0x68, 0x74, 0x1d, 0x6c, 0x2a, 0xa5, 0x0d, 0x69, 0xb3, 0xa8,
0x8d, 0xc6, 0xc8, 0x9c, 0x86, 0x5e, 0xbc, 0x1f, 0xf8, 0x70, 0x1e, 0xe5, 0x85, 0x03, 0x92, 0x11,
0xd8, 0xd3, 0x43, 0x9c, 0x3d, 0x19, 0x56, 0x04, 0x58, 0x15, 0xe6, 0x56, 0x7f, 0x2c, 0xc1, 0x7a,
0xac, 0x0a, 0xa4, 0x7b, 0x31, 0xd6, 0x80, 0x82, 0x70, 0x9f, 0x28, 0x07, 0x6f, 0xa4, 0x38, 0xb0,
0x16, 0xf1, 0xaa, 0x8f, 0x60, 0x2d, 0xaa, 0x0b, 0xff, 0xcd, 0x17, 0x73, 0xea, 0xbb, 0xa0, 0x8c,
0x92, 0x54, 0x08, 0x9e, 0xb3, 0x66, 0xa8, 0x26, 0xac, 0x5f, 0xc2, 0x2a, 0xd2, 0xfc, 0x10, 0x8a,
0x62, 0x93, 0x28, 0xd1, 0x53, 0x9d, 0x7b, 0xc4, 0xac, 0x7e, 0x03, 0xd6, 0xf7, 0xb1, 0x83, 0xbf,
0x96, 0xed, 0x13, 0xce, 0xfe, 0x3b, 0x09, 0xd6, 0x3b, 0xbe, 0x69, 0xfc, 0x0f, 0x64, 0xc7, 0xdd,
0x9e, 0x7d, 0x0a, 0xb7, 0xff, 0x3d, 0x2f, 0x4a, 0x90, 0x68, 0x71, 0x50, 0x17, 0xd6, 0x66, 0x1a,
0xb5, 0x31, 0x44, 0x48, 0x7b, 0xb9, 0x5f, 0x9d, 0x6e, 0xd5, 0x18, 0x5c, 0xf0, 0x29, 0x2c, 0x64,
0x46, 0xc0, 0xa6, 0x3e, 0xc4, 0x81, 0xfd, 0xf8, 0x42, 0xe7, 0x9d, 0x95, 0x78, 0xd7, 0x70, 0x37,
0x45, 0x53, 0x56, 0x7d, 0xc4, 0x04, 0xf0, 0x11, 0x85, 0x88, 0x42, 0x70, 0x9c, 0x8c, 0x3e, 0x81,
0xa5, 0xbe, 0xd1, 0x3b, 0xb3, 0x5d, 0xac, 0x33, 0xa0, 0x92, 0x65, 0xdb, 0xdc, 0x49, 0xb3, 0xcd,
0x03, 0xce, 0xcf, 0x8e, 0x55, 0xee, 0x8f, 0x07, 0x14, 0x77, 0x98, 0x76, 0x78, 0xce, 0xae, 0x36,
0xdd, 0xea, 0x32, 0xd8, 0x99, 0xd5, 0x80, 0xd2, 0xe8, 0xed, 0x76, 0xd8, 0x45, 0x1e, 0x3c, 0x13,
0x2f, 0x22, 0xd1, 0x59, 0x73, 0x4c, 0x89, 0x0f, 0xd3, 0x28, 0x11, 0x2f, 0x3d, 0xe2, 0xc4, 0x28,
0x9c, 0xa1, 0x21, 0x1f, 0xae, 0xd2, 0xf6, 0x34, 0x24, 0x01, 0x36, 0x68, 0x33, 0x15, 0xed, 0xb8,
0x98, 0x7e, 0xc7, 0x13, 0xcf, 0x6a, 0x45, 0x62, 0xa2, 0x1d, 0x9d, 0x19, 0x9a, 0x5a, 0x85, 0xa5,
0x09, 0x83, 0xcb, 0xb0, 0xd4, 0x3c, 0x6d, 0xeb, 0x8f, 0x1a, 0xda, 0xf1, 0xc1, 0x71, 0x63, 0x5f,
0x5e, 0x40, 0x4b, 0x50, 0x1c, 0x8d, 0x24, 0xb5, 0x0e, 0xe5, 0x98, 0x41, 0xd1, 0x2a, 0x94, 0x3b,
0xcd, 0xd6, 0xc3, 0x46, 0x3d, 0x5a, 0x4d, 0xf9, 0xb7, 0xf4, 0xa3, 0xe3, 0xc3, 0xa3, 0xfa, 0xc3,
0x8e, 0x7e, 0x57, 0x96, 0xd0, 0x15, 0x58, 0x8e, 0x51, 0x6e, 0x6d, 0xcb, 0x19, 0xf5, 0xf6, 0x64,
0x2d, 0x16, 0x5b, 0xaf, 0x00, 0x3c, 0xe8, 0xb4, 0xda, 0xfa, 0x83, 0xdd, 0x76, 0xfd, 0x48, 0x5e,
0xa0, 0xb2, 0x77, 0x4f, 0x4e, 0x4e, 0x3f, 0xd6, 0x4f, 0x4e, 0x4f, 0x5b, 0x0d, 0x59, 0x52, 0x0f,
0x01, 0xcd, 0x9e, 0x8a, 0xf7, 0x82, 0x5a, 0x63, 0xf7, 0x81, 0xbe, 0xdf, 0x38, 0xd8, 0xed, 0x9c,
0xb4, 0xe5, 0x05, 0xda, 0xb7, 0x09, 0xda, 0x69, 0x53, 0x96, 0xa8, 0xe4, 0x68, 0x78, 0x70, 0x20,
0x67, 0xb6, 0xff, 0xba, 0x02, 0x50, 0xa7, 0xa6, 0xe3, 0x2f, 0xd8, 0x7e, 0x2e, 0x41, 0x39, 0x56,
0xc6, 0xd1, 0x56, 0x82, 0x9d, 0x67, 0x81, 0x5f, 0xe5, 0x7a, 0xc4, 0x12, 0xfb, 0xce, 0x53, 0x1d,
0x35, 0x6a, 0x6a, 0xed, 0xcb, 0x7f, 0xfe, 0xeb, 0x97, 0x99, 0xd7, 0xd5, 0x8d, 0xda, 0x70, 0xab,
0x26, 0x4a, 0x45, 0x58, 0xfb, 0x7c, 0x5c, 0x46, 0xbe, 0xa8, 0x71, 0x1c, 0xb3, 0x23, 0xae, 0xe2,
0x9f, 0x49, 0x50, 0x8c, 0xca, 0x3a, 0xaa, 0x26, 0xe8, 0x33, 0x85, 0x0b, 0x2b, 0x73, 0x5d, 0xfb,
0xea, 0x5b, 0x4c, 0xa7, 0xd7, 0xd0, 0x2b, 0x49, 0x3a, 0xd5, 0x3e, 0xb7, 0xcd, 0x2f, 0xd0, 0x6f,
0x24, 0x80, 0x31, 0x6a, 0x43, 0x49, 0xef, 0x1a, 0x66, 0x80, 0x66, 0x65, 0x2b, 0x05, 0x07, 0xbf,
0x2b, 0xd4, 0x4d, 0xa6, 0xa2, 0x8a, 0x12, 0xcd, 0x86, 0x7e, 0x4b, 0x5d, 0x38, 0xc6, 0x75, 0xc9,
0x2e, 0x9c, 0xc1, 0x80, 0x73, 0x5a, 0xed, 0x0e, 0x53, 0x69, 0x4b, 0x7d, 0x73, 0x2e, 0xab, 0xed,
0xf4, 0xd8, 0x3e, 0x3b, 0xd2, 0x4d, 0xf4, 0x2b, 0xf6, 0x11, 0x29, 0xfa, 0x0c, 0x97, 0x68, 0xbf,
0x99, 0x2f, 0x76, 0x49, 0x21, 0xf6, 0x0e, 0x53, 0xec, 0x6d, 0xf5, 0x8d, 0xf9, 0x14, 0x0b, 0xa8,
0x7c, 0xaa, 0xd7, 0x9f, 0xa5, 0x89, 0x4e, 0x26, 0x42, 0xb4, 0x77, 0xe7, 0xcf, 0x81, 0xc9, 0xeb,
0xb1, 0x92, 0xe6, 0x3e, 0x53, 0x6f, 0x31, 0xad, 0xdf, 0x52, 0xd5, 0x27, 0x6b, 0x1d, 0x5d, 0xf8,
0x3b, 0xd1, 0xdd, 0x87, 0xfe, 0x24, 0x8d, 0x7b, 0xa1, 0x48, 0xdf, 0xdb, 0x73, 0xe6, 0xc8, 0xd3,
0x28, 0x2b, 0x7c, 0x8f, 0x6a, 0xc9, 0xca, 0xd6, 0x3e, 0x1f, 0x63, 0x80, 0x2f, 0xd0, 0x5f, 0xe2,
0x9d, 0x57, 0x84, 0x88, 0xd0, 0x9d, 0x79, 0x13, 0x62, 0x0a, 0x7e, 0x55, 0xee, 0xa6, 0x67, 0x14,
0x09, 0x75, 0x93, 0x9d, 0xe0, 0x65, 0x34, 0x87, 0xb9, 0x69, 0x4a, 0xa1, 0x59, 0x80, 0x95, 0x18,
0x18, 0x4f, 0xc4, 0x64, 0x95, 0xb5, 0x99, 0x5e, 0xa1, 0xd1, 0xf7, 0xc9, 0x45, 0x64, 0xd6, 0x9b,
0xa9, 0xcd, 0xfa, 0x95, 0x04, 0x68, 0x16, 0xa6, 0x25, 0x6a, 0xf8, 0x44, 0x64, 0x97, 0x2e, 0x1a,
0xee, 0x33, 0xb5, 0x77, 0xb6, 0xd3, 0xaa, 0x3d, 0x8e, 0xe3, 0x3f, 0x4a, 0xb0, 0x3a, 0xf5, 0x51,
0x3d, 0x31, 0x8e, 0x2f, 0xff, 0x08, 0x9f, 0x54, 0x1c, 0xea, 0x4c, 0xd7, 0x0f, 0xd4, 0x5b, 0x69,
0x75, 0x0d, 0x06, 0xee, 0x8e, 0xf8, 0x5e, 0xb3, 0x77, 0x0e, 0x4a, 0xcf, 0xeb, 0x47, 0x1b, 0x4d,
0xa8, 0xf5, 0x50, 0xfa, 0xe4, 0x50, 0xd0, 0x2d, 0xcf, 0x31, 0x5c, 0xab, 0xea, 0x05, 0x56, 0xcd,
0xc2, 0x2e, 0x73, 0x75, 0x8d, 0x4f, 0x19, 0xbe, 0x1d, 0x3e, 0xe1, 0x1f, 0x33, 0xde, 0x1b, 0x8f,
0xfe, 0x90, 0xc9, 0x1e, 0xd6, 0xf7, 0xba, 0x79, 0xc6, 0x79, 0xeb, 0xdf, 0x01, 0x00, 0x00, 0xff,
0xff, 0x8d, 0x04, 0xdb, 0x30, 0xd1, 0x21, 0x00, 0x00,
}

View File

@ -434,42 +434,43 @@ var _Controller2_serviceDesc = grpc.ServiceDesc{
func init() { proto.RegisterFile("google/devtools/clouddebugger/v2/controller.proto", fileDescriptor0) }
var fileDescriptor0 = []byte{
// 589 bytes of a gzipped FileDescriptorProto
// 602 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x54, 0xdd, 0x6a, 0xd4, 0x40,
0x14, 0x66, 0x5a, 0x94, 0xf6, 0x44, 0x69, 0x19, 0x50, 0x43, 0x6c, 0x75, 0x1b, 0xa4, 0x94, 0x5a,
0x32, 0x18, 0xbd, 0x71, 0x05, 0x7f, 0xb6, 0x6a, 0x11, 0x5a, 0x2d, 0x4b, 0x55, 0xf0, 0x66, 0xc9,
0x26, 0xc7, 0x30, 0x34, 0x9d, 0x89, 0x99, 0xc9, 0x5a, 0x29, 0xbd, 0xf1, 0x56, 0xf1, 0xc6, 0x47,
0xf0, 0xce, 0x17, 0x10, 0x7c, 0x0d, 0x7d, 0x04, 0xaf, 0x7c, 0x0a, 0xc9, 0xdf, 0xee, 0xf6, 0x67,
0x9b, 0x76, 0xf1, 0x32, 0xdf, 0x9c, 0xef, 0x3b, 0xdf, 0x37, 0x39, 0x73, 0xe0, 0x56, 0x28, 0x65,
0x18, 0x21, 0x0b, 0xb0, 0xa7, 0xa5, 0x8c, 0x14, 0xf3, 0x23, 0x99, 0x06, 0x01, 0x76, 0xd3, 0x30,
0xc4, 0x84, 0xf5, 0x5c, 0xe6, 0x4b, 0xa1, 0x13, 0x19, 0x45, 0x98, 0x38, 0x71, 0x22, 0xb5, 0xa4,
0x8d, 0x82, 0xe2, 0x54, 0x14, 0xe7, 0x00, 0xc5, 0xe9, 0xb9, 0xd6, 0x5c, 0x29, 0xea, 0xc5, 0x9c,
0x79, 0x42, 0x48, 0xed, 0x69, 0x2e, 0x85, 0x2a, 0xf8, 0xd6, 0xcd, 0xda, 0x96, 0x81, 0xa7, 0xbd,
0xb2, 0xf8, 0x6a, 0x59, 0x9c, 0x7f, 0x75, 0xd3, 0xb7, 0x0c, 0x77, 0x62, 0xfd, 0xa1, 0x38, 0xb4,
0x3d, 0xb8, 0xd2, 0xc6, 0x90, 0x2b, 0x8d, 0xc9, 0xe3, 0x82, 0x8e, 0x6d, 0x7c, 0x97, 0xa2, 0xd2,
0xf4, 0x29, 0x4c, 0x95, 0x8a, 0x68, 0x92, 0x06, 0x59, 0x32, 0xdc, 0x65, 0xa7, 0xce, 0xb7, 0xd3,
0x17, 0xe9, 0x73, 0xed, 0x2e, 0x98, 0x47, 0x5b, 0xa8, 0x58, 0x0a, 0x85, 0xff, 0xad, 0xc7, 0x67,
0x02, 0x73, 0xeb, 0x5c, 0xe9, 0x47, 0xbe, 0xe6, 0x3d, 0x6c, 0x25, 0xe8, 0x6d, 0xc7, 0x92, 0x0b,
0xad, 0xaa, 0x30, 0xd7, 0xc1, 0xa8, 0x8a, 0x3b, 0x3c, 0xc8, 0x7b, 0x4d, 0xb7, 0xa1, 0x82, 0x9e,
0x05, 0x74, 0x1e, 0xe0, 0xbd, 0xc7, 0x75, 0x47, 0xcb, 0x6d, 0x14, 0xe6, 0x44, 0x7e, 0x3e, 0x9d,
0x21, 0x5b, 0x19, 0x40, 0x57, 0x80, 0xaa, 0xd4, 0xf7, 0x51, 0xa9, 0x8e, 0x14, 0x1d, 0xcd, 0x77,
0x50, 0xa6, 0xda, 0x9c, 0x6c, 0x90, 0xa5, 0xa9, 0xf6, 0x6c, 0x79, 0xf2, 0x42, 0x6c, 0x15, 0xb8,
0xfd, 0x93, 0xc0, 0xfc, 0x08, 0x3b, 0x65, 0xf0, 0xe7, 0x60, 0x74, 0x07, 0xb0, 0x49, 0x1a, 0x93,
0x4b, 0x86, 0xbb, 0x52, 0x9f, 0x7d, 0xa0, 0xd5, 0x1e, 0x16, 0xa0, 0x8b, 0x30, 0x23, 0x70, 0x57,
0x77, 0x8e, 0x64, 0xb8, 0x98, 0xc1, 0xaf, 0xfb, 0x39, 0x16, 0xe0, 0x42, 0x5e, 0x82, 0xbb, 0x31,
0x4f, 0x30, 0x28, 0x13, 0x18, 0x19, 0xf6, 0xa4, 0x80, 0xec, 0x2f, 0x04, 0xe6, 0x5f, 0xc6, 0x81,
0xa7, 0xf1, 0xb0, 0xfd, 0x53, 0x5f, 0xe6, 0x3a, 0xc0, 0xc0, 0x5c, 0x6e, 0xe4, 0xac, 0xe1, 0x86,
0xf8, 0x76, 0x03, 0xae, 0x8d, 0xf2, 0x53, 0xdc, 0xa6, 0xfb, 0xe9, 0x1c, 0x18, 0xab, 0xfd, 0x47,
0xe6, 0xd2, 0x1f, 0x04, 0x66, 0x0f, 0xcf, 0x1c, 0xbd, 0x5b, 0x6f, 0x60, 0xc4, 0x53, 0xb0, 0x9a,
0xe3, 0x50, 0x0b, 0x6f, 0xf6, 0xca, 0xc7, 0x5f, 0x7f, 0xbe, 0x4e, 0x2c, 0xda, 0x0b, 0x07, 0x37,
0x01, 0xab, 0xae, 0x4b, 0xb1, 0xa4, 0xa4, 0x36, 0xc9, 0x32, 0xfd, 0x4d, 0xe0, 0xd2, 0xb1, 0x93,
0x43, 0xef, 0xd7, 0x7b, 0x38, 0xe9, 0x05, 0x58, 0x0f, 0xc6, 0xe6, 0x97, 0x41, 0x9a, 0x79, 0x90,
0x3b, 0xd4, 0x1d, 0x19, 0x64, 0x6f, 0x68, 0x2a, 0xf6, 0xd9, 0xf0, 0x78, 0xfe, 0x25, 0x70, 0xf9,
0xf8, 0x7f, 0x48, 0x4f, 0xe1, 0xeb, 0xc4, 0x69, 0xb4, 0x1e, 0x8e, 0x2f, 0x50, 0x26, 0xdb, 0xc8,
0x93, 0xad, 0x59, 0xad, 0xb3, 0x27, 0x63, 0x7b, 0x83, 0x0f, 0x87, 0x07, 0xfb, 0x4d, 0xb2, 0xdc,
0xfa, 0x46, 0xe0, 0x86, 0x2f, 0x77, 0x6a, 0x6d, 0xb5, 0x66, 0x06, 0x33, 0xbb, 0x99, 0x6d, 0xe3,
0x4d, 0xf2, 0x66, 0xa3, 0x24, 0x85, 0x32, 0xf2, 0x44, 0xe8, 0xc8, 0x24, 0x64, 0x21, 0x8a, 0x7c,
0x57, 0xb3, 0xe2, 0xc8, 0x8b, 0xb9, 0x1a, 0xbd, 0xf8, 0xef, 0x1d, 0x00, 0xbe, 0x4f, 0x98, 0x6b,
0x85, 0xde, 0x6a, 0x06, 0x57, 0x9b, 0x33, 0x71, 0x5e, 0xb9, 0xdd, 0xf3, 0xb9, 0xe8, 0xed, 0x7f,
0x01, 0x00, 0x00, 0xff, 0xff, 0x05, 0xef, 0x37, 0xb4, 0xbf, 0x06, 0x00, 0x00,
0x14, 0x66, 0x5a, 0x94, 0x76, 0xa2, 0xb4, 0x0c, 0xa8, 0x21, 0xb6, 0xba, 0x0d, 0x52, 0x96, 0x75,
0xc9, 0x60, 0xf4, 0xc6, 0x15, 0xfc, 0xd9, 0xaa, 0x45, 0x68, 0xb5, 0x2c, 0xb5, 0x82, 0x2c, 0x2c,
0xd9, 0xe4, 0x18, 0x86, 0x66, 0x67, 0x62, 0x66, 0xb2, 0x56, 0x4a, 0x6f, 0xbc, 0x55, 0xbc, 0xf1,
0x2d, 0x7c, 0x01, 0xc1, 0x0b, 0x1f, 0xc0, 0x5b, 0x7d, 0x04, 0xaf, 0x7c, 0x0a, 0xc9, 0xdf, 0xfe,
0xb4, 0xdd, 0xa6, 0x5d, 0xbc, 0xcc, 0x77, 0xe6, 0xfb, 0xce, 0xf7, 0x4d, 0xce, 0x1c, 0x7c, 0xcb,
0x17, 0xc2, 0x0f, 0x80, 0x7a, 0xd0, 0x57, 0x42, 0x04, 0x92, 0xba, 0x81, 0x88, 0x3d, 0x0f, 0xba,
0xb1, 0xef, 0x43, 0x44, 0xfb, 0x36, 0x75, 0x05, 0x57, 0x91, 0x08, 0x02, 0x88, 0xac, 0x30, 0x12,
0x4a, 0x90, 0x4a, 0x46, 0xb1, 0x0a, 0x8a, 0x35, 0x46, 0xb1, 0xfa, 0xb6, 0xb1, 0x94, 0x8b, 0x3a,
0x21, 0xa3, 0x0e, 0xe7, 0x42, 0x39, 0x8a, 0x09, 0x2e, 0x33, 0xbe, 0x71, 0xb3, 0xb4, 0xa5, 0xe7,
0x28, 0x27, 0x3f, 0x7c, 0x35, 0x3f, 0x9c, 0x7e, 0x75, 0xe3, 0x37, 0x14, 0x7a, 0xa1, 0x7a, 0x9f,
0x15, 0x4d, 0x07, 0x5f, 0x69, 0x81, 0xcf, 0xa4, 0x82, 0xe8, 0x71, 0x46, 0x87, 0x16, 0xbc, 0x8d,
0x41, 0x2a, 0xf2, 0x14, 0xcf, 0xe5, 0x8a, 0xa0, 0xa3, 0x0a, 0xaa, 0x6a, 0x76, 0xcd, 0x2a, 0xf3,
0x6d, 0x0d, 0x44, 0x06, 0x5c, 0xb3, 0x8b, 0xf5, 0xa3, 0x2d, 0x64, 0x28, 0xb8, 0x84, 0xff, 0xd6,
0xe3, 0x13, 0xc2, 0x4b, 0x1b, 0x4c, 0xaa, 0x47, 0xae, 0x62, 0x7d, 0x68, 0x46, 0xe0, 0xec, 0x86,
0x82, 0x71, 0x25, 0x8b, 0x30, 0xd7, 0xb1, 0x56, 0x1c, 0xee, 0x30, 0x2f, 0xed, 0x35, 0xdf, 0xc2,
0x05, 0xf4, 0xcc, 0x23, 0xcb, 0x18, 0xbf, 0x73, 0x98, 0xea, 0x28, 0xb1, 0x0b, 0x5c, 0x9f, 0x49,
0xeb, 0xf3, 0x09, 0xb2, 0x9d, 0x00, 0xa4, 0x8e, 0x89, 0x8c, 0x5d, 0x17, 0xa4, 0xec, 0x08, 0xde,
0x51, 0xac, 0x07, 0x22, 0x56, 0xfa, 0x6c, 0x05, 0x55, 0xe7, 0x5a, 0x8b, 0x79, 0xe5, 0x05, 0xdf,
0xce, 0x70, 0xf3, 0x3b, 0xc2, 0xcb, 0x13, 0xec, 0xe4, 0xc1, 0x9f, 0x63, 0xad, 0x3b, 0x84, 0x75,
0x54, 0x99, 0xad, 0x6a, 0x76, 0xbd, 0x3c, 0xfb, 0x50, 0xab, 0x35, 0x2a, 0x40, 0x56, 0xf1, 0x02,
0x87, 0x3d, 0xd5, 0x39, 0x92, 0xe1, 0x62, 0x02, 0xbf, 0x1a, 0xe4, 0x58, 0xc1, 0x17, 0xd2, 0x23,
0xb0, 0x17, 0xb2, 0x08, 0xbc, 0x3c, 0x81, 0x96, 0x60, 0x4f, 0x32, 0xc8, 0xfc, 0x8c, 0xf0, 0xf2,
0xcb, 0xd0, 0x73, 0x14, 0x1c, 0xb6, 0x7f, 0xea, 0xcb, 0xdc, 0xc0, 0x78, 0x68, 0x2e, 0x35, 0x72,
0xd6, 0x70, 0x23, 0x7c, 0xb3, 0x82, 0xaf, 0x4d, 0xf2, 0x93, 0xdd, 0xa6, 0xfd, 0xf1, 0x1c, 0xd6,
0xd6, 0x06, 0x8f, 0xcc, 0x26, 0xdf, 0x10, 0x5e, 0x3c, 0x3c, 0x73, 0xe4, 0x6e, 0xb9, 0x81, 0x09,
0x4f, 0xc1, 0x68, 0x4c, 0x43, 0xcd, 0xbc, 0x99, 0xf5, 0x0f, 0xbf, 0xfe, 0x7c, 0x99, 0x59, 0x35,
0x57, 0xc6, 0x37, 0x01, 0x2d, 0xae, 0x4b, 0xd2, 0x28, 0xa7, 0x36, 0x50, 0x8d, 0xfc, 0x46, 0xf8,
0xd2, 0xb1, 0x93, 0x43, 0xee, 0x97, 0x7b, 0x38, 0xe9, 0x05, 0x18, 0x0f, 0xa6, 0xe6, 0xe7, 0x41,
0x1a, 0x69, 0x90, 0x3b, 0xc4, 0x9e, 0x18, 0x64, 0x7f, 0x64, 0x2a, 0x0e, 0xe8, 0xe8, 0x78, 0xfe,
0x45, 0xf8, 0xf2, 0xf1, 0xff, 0x90, 0x9c, 0xc2, 0xd7, 0x89, 0xd3, 0x68, 0x3c, 0x9c, 0x5e, 0x20,
0x4f, 0xb6, 0x99, 0x26, 0x5b, 0x37, 0x9a, 0x67, 0x4f, 0x46, 0xf7, 0x87, 0x1f, 0x16, 0xf3, 0x0e,
0x1a, 0xa8, 0xd6, 0xfc, 0x81, 0xf0, 0x0d, 0x57, 0xf4, 0x4a, 0x6d, 0x35, 0x17, 0x86, 0x33, 0xbb,
0x95, 0x6c, 0xe3, 0x2d, 0xf4, 0x7a, 0x33, 0x27, 0xf9, 0x22, 0x70, 0xb8, 0x6f, 0x89, 0xc8, 0xa7,
0x3e, 0xf0, 0x74, 0x57, 0xd3, 0xac, 0xe4, 0x84, 0x4c, 0x4e, 0x5e, 0xfc, 0xf7, 0xc6, 0x80, 0xaf,
0x33, 0xfa, 0x7a, 0xa6, 0xb7, 0x96, 0xc0, 0xc5, 0xe6, 0x8c, 0xac, 0x1d, 0xfb, 0x67, 0x51, 0x6a,
0xa7, 0xa5, 0x76, 0x51, 0x6a, 0xef, 0xd8, 0xdd, 0xf3, 0x69, 0xbf, 0xdb, 0xff, 0x02, 0x00, 0x00,
0xff, 0xff, 0x54, 0xe1, 0x5c, 0x2a, 0xda, 0x06, 0x00, 0x00,
}

View File

@ -806,84 +806,85 @@ func init() {
func init() { proto.RegisterFile("google/devtools/clouddebugger/v2/data.proto", fileDescriptor1) }
var fileDescriptor1 = []byte{
// 1251 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0xdd, 0x72, 0xda, 0x46,
0x14, 0x0e, 0x3f, 0x06, 0xe9, 0x60, 0x30, 0xd9, 0x26, 0x1d, 0xc5, 0x4d, 0x1d, 0x86, 0xe6, 0xc2,
0xd3, 0x66, 0x20, 0x21, 0xd3, 0x4e, 0xd2, 0x5c, 0x61, 0x2c, 0xbb, 0x4c, 0x08, 0x90, 0xc5, 0xa6,
0x9d, 0xde, 0xa8, 0x6b, 0xb4, 0xa8, 0x6a, 0x84, 0xa4, 0xee, 0x2e, 0xd4, 0xb9, 0xcf, 0x63, 0xb4,
0x2f, 0xd0, 0xe9, 0x3b, 0xf5, 0xae, 0xcf, 0xd1, 0xd9, 0xd5, 0x8a, 0x88, 0xa4, 0x2d, 0x71, 0x93,
0xbb, 0xb3, 0xdf, 0x7e, 0xe7, 0x5b, 0x71, 0xf6, 0x3b, 0x47, 0x02, 0xbe, 0xf0, 0xa2, 0xc8, 0x0b,
0x68, 0xdb, 0xa5, 0x2b, 0x11, 0x45, 0x01, 0x6f, 0xcf, 0x82, 0x68, 0xe9, 0xba, 0xf4, 0x62, 0xe9,
0x79, 0x94, 0xb5, 0x57, 0x9d, 0xb6, 0x4b, 0x04, 0x69, 0xc5, 0x2c, 0x12, 0x11, 0x6a, 0x24, 0xe4,
0x56, 0x4a, 0x6e, 0x6d, 0x90, 0x5b, 0xab, 0xce, 0xfe, 0x6d, 0x2d, 0x47, 0x62, 0xbf, 0x4d, 0xc2,
0x30, 0x12, 0x44, 0xf8, 0x51, 0xc8, 0x93, 0xfc, 0xfd, 0xd6, 0x9b, 0x87, 0xf1, 0x68, 0xc9, 0x66,
0xb4, 0xbd, 0x7a, 0xa0, 0x23, 0x67, 0x16, 0x85, 0x82, 0x5e, 0x0a, 0xcd, 0xbf, 0xa3, 0xf9, 0x6a,
0x75, 0xb1, 0x9c, 0xb7, 0x85, 0xbf, 0xa0, 0x5c, 0x90, 0x45, 0xac, 0x09, 0x07, 0x6f, 0x12, 0x7e,
0x61, 0x24, 0x8e, 0x29, 0xd3, 0x07, 0x36, 0x4f, 0xa1, 0x7a, 0x12, 0xb1, 0x05, 0x11, 0xcf, 0x28,
0xe7, 0xc4, 0xa3, 0xe8, 0x63, 0x28, 0xcd, 0x15, 0x60, 0xe5, 0x1a, 0xb9, 0x43, 0x13, 0xeb, 0x15,
0x3a, 0x00, 0x88, 0x09, 0x23, 0x0b, 0x2a, 0x28, 0xe3, 0x56, 0xbe, 0x51, 0x38, 0x34, 0x71, 0x06,
0x69, 0xbe, 0x2a, 0x40, 0x75, 0x22, 0x88, 0x58, 0xf2, 0x54, 0xe9, 0x16, 0x18, 0x3e, 0x77, 0x28,
0x63, 0x11, 0x53, 0x5a, 0x06, 0x2e, 0xfb, 0xdc, 0x96, 0x4b, 0x34, 0x05, 0x93, 0xd1, 0x39, 0x65,
0xdc, 0x11, 0x91, 0x95, 0x6f, 0xe4, 0x0e, 0x6b, 0x9d, 0xc7, 0xad, 0x6d, 0xa5, 0x6b, 0x6d, 0xc8,
0xb7, 0xb0, 0x14, 0xa0, 0xe1, 0x8c, 0x62, 0x23, 0xd1, 0x3a, 0x8b, 0xd0, 0x73, 0xa8, 0xb8, 0x94,
0xcf, 0x98, 0x1f, 0xcb, 0xa2, 0x5a, 0x85, 0x46, 0xee, 0xb0, 0xd2, 0x69, 0x6f, 0x57, 0xde, 0x28,
0x01, 0xce, 0x6a, 0x34, 0xff, 0xc8, 0x81, 0xb9, 0x3e, 0x0a, 0xed, 0x41, 0xe5, 0x7c, 0x38, 0x19,
0xdb, 0xbd, 0xfe, 0x49, 0xdf, 0x3e, 0xae, 0x5f, 0x43, 0x07, 0xb0, 0x7f, 0x84, 0xed, 0xee, 0xd3,
0xf1, 0xa8, 0x3f, 0x3c, 0x73, 0x26, 0xa3, 0x73, 0xdc, 0xb3, 0x9d, 0xc1, 0xa8, 0xd7, 0x3d, 0xeb,
0x8f, 0x86, 0xf5, 0x02, 0xb2, 0xe0, 0x46, 0x66, 0xbf, 0x37, 0x1a, 0x1e, 0xf7, 0xd5, 0x4e, 0x11,
0xdd, 0x82, 0x9b, 0x99, 0x1d, 0xfb, 0xbb, 0x31, 0xb6, 0x27, 0x13, 0xb9, 0x55, 0x46, 0x08, 0x6a,
0x99, 0xad, 0xee, 0xa9, 0x5d, 0x37, 0xd0, 0x75, 0xa8, 0x4e, 0xbb, 0xb8, 0xdf, 0x3d, 0x1a, 0xd8,
0xce, 0xb0, 0xfb, 0xcc, 0xae, 0xef, 0x48, 0xda, 0x1a, 0x9a, 0x76, 0x07, 0xe7, 0x76, 0xbd, 0xd4,
0x7c, 0x04, 0xb5, 0x89, 0x32, 0xca, 0x20, 0x9a, 0x29, 0x67, 0x21, 0x04, 0xc5, 0x98, 0x88, 0x1f,
0xf5, 0x75, 0xaa, 0x58, 0x62, 0x81, 0x1f, 0x52, 0x55, 0xfa, 0x1d, 0xac, 0xe2, 0xe6, 0xaf, 0x79,
0x30, 0xa6, 0x84, 0xf9, 0xe4, 0x22, 0xa0, 0x92, 0x10, 0x92, 0x05, 0x4d, 0x93, 0x64, 0x8c, 0x6e,
0xc0, 0xce, 0x8a, 0x04, 0xcb, 0x24, 0xcb, 0xc4, 0xc9, 0x42, 0x32, 0xc5, 0xcb, 0x98, 0x5a, 0xa5,
0x84, 0x29, 0x63, 0x74, 0x0c, 0xe5, 0x05, 0x5d, 0x5c, 0x48, 0xa3, 0x14, 0x1a, 0x85, 0xc3, 0x4a,
0xe7, 0xf3, 0xed, 0x57, 0x90, 0x1e, 0x8d, 0xd3, 0x54, 0xd4, 0x83, 0xbd, 0x15, 0x61, 0x8e, 0x90,
0xa8, 0xe3, 0x87, 0x2e, 0xbd, 0xb4, 0x8a, 0xea, 0x42, 0x3f, 0x49, 0xd5, 0x52, 0x53, 0xb7, 0xfa,
0xa1, 0x78, 0xd8, 0x99, 0xca, 0xe7, 0xc1, 0xd5, 0x15, 0x61, 0x67, 0x32, 0xa5, 0x2f, 0x33, 0xd0,
0x29, 0x94, 0xb8, 0xb2, 0x8d, 0xb5, 0xf3, 0xae, 0x66, 0xd8, 0xb0, 0x19, 0xd6, 0xe9, 0xcd, 0x57,
0x79, 0x80, 0x89, 0x20, 0xb3, 0x17, 0x27, 0xd2, 0xf2, 0x68, 0x1f, 0x8c, 0xf9, 0x32, 0x9c, 0x29,
0x9b, 0x25, 0x45, 0x5a, 0xaf, 0xd1, 0x00, 0x8c, 0x40, 0x57, 0x5f, 0xd5, 0xaa, 0xd2, 0xb9, 0xff,
0x0e, 0xa7, 0x6e, 0xdc, 0x1a, 0x5e, 0x2b, 0xa0, 0x6f, 0xc0, 0x24, 0xcc, 0x5b, 0x2e, 0x68, 0x28,
0xfe, 0x4f, 0x39, 0x5f, 0x27, 0xa3, 0x23, 0x28, 0x49, 0xd5, 0x80, 0x5b, 0xc5, 0x2b, 0xcb, 0xe8,
0xcc, 0xe6, 0x9f, 0x06, 0xc0, 0x11, 0xa3, 0xe4, 0x45, 0x1c, 0xf9, 0xa1, 0x40, 0x35, 0xc8, 0xfb,
0xae, 0x2e, 0x40, 0xde, 0x77, 0xd1, 0x53, 0x28, 0x91, 0xa4, 0x28, 0x55, 0xd5, 0xd5, 0x0f, 0xb7,
0x1f, 0xf1, 0x5a, 0xad, 0xd5, 0x55, 0xa9, 0x58, 0x4b, 0x7c, 0xe0, 0x3a, 0xde, 0x06, 0x73, 0x16,
0x85, 0xae, 0xbf, 0x9e, 0x0c, 0x26, 0x7e, 0x0d, 0xa0, 0x06, 0x54, 0xe8, 0x65, 0xcc, 0x28, 0xe7,
0x72, 0x1a, 0xab, 0x02, 0x99, 0x38, 0x0b, 0xa1, 0x7b, 0x80, 0x82, 0xc8, 0x73, 0x16, 0x89, 0x2f,
0x1c, 0x3d, 0x24, 0x6b, 0x4a, 0xa8, 0x1e, 0x44, 0x9e, 0x36, 0x4c, 0x32, 0x4a, 0x10, 0x06, 0x53,
0xb2, 0x03, 0xba, 0xa2, 0x81, 0xb5, 0xa7, 0x6a, 0xf1, 0xe5, 0x95, 0x6a, 0x31, 0x88, 0xbc, 0x81,
0x4c, 0x96, 0xbf, 0x20, 0x89, 0xd0, 0x5d, 0xa8, 0xf9, 0xdc, 0x99, 0xfb, 0x21, 0x09, 0x1c, 0xe9,
0x4a, 0xaa, 0x3c, 0x6d, 0xe0, 0x5d, 0x9f, 0x9f, 0x48, 0x50, 0x1a, 0x97, 0xa2, 0x27, 0x50, 0x99,
0x31, 0x4a, 0x04, 0x75, 0xe4, 0xbb, 0xc0, 0xaa, 0xa8, 0xc2, 0xed, 0xbf, 0xd5, 0x32, 0x67, 0xe9,
0x8b, 0x02, 0x43, 0x42, 0x97, 0x00, 0x7a, 0x0c, 0x90, 0xe8, 0xab, 0xdc, 0xdd, 0xad, 0xb9, 0xa6,
0x62, 0xab, 0xd4, 0x4f, 0x01, 0x96, 0x9c, 0x32, 0x87, 0x2e, 0x88, 0x1f, 0x58, 0xf5, 0xa4, 0xc0,
0x12, 0xb1, 0x25, 0x90, 0x69, 0x44, 0x78, 0xaf, 0x46, 0x44, 0x23, 0xd8, 0xe5, 0xb2, 0x0f, 0x9d,
0xb9, 0x6c, 0x44, 0x6e, 0x95, 0x95, 0x97, 0xef, 0xbd, 0x93, 0x9c, 0xee, 0x5e, 0x5c, 0xe1, 0xeb,
0x98, 0x23, 0x07, 0x6e, 0x52, 0x39, 0xcb, 0x88, 0xa0, 0xae, 0x93, 0x35, 0x81, 0x71, 0xe5, 0x2e,
0xb9, 0xb1, 0x16, 0xb2, 0x33, 0xce, 0x79, 0x0e, 0xb5, 0x95, 0x66, 0x24, 0xd3, 0xcc, 0x32, 0xaf,
0xac, 0x5c, 0x4d, 0x15, 0xd4, 0x6c, 0x43, 0x63, 0x28, 0x05, 0xe4, 0x82, 0x06, 0xdc, 0xba, 0xae,
0xa4, 0x1e, 0x5d, 0xcd, 0x5b, 0x2a, 0xd5, 0x0e, 0x05, 0x7b, 0x89, 0xb5, 0xce, 0xfe, 0x63, 0xa8,
0x64, 0x60, 0x54, 0x87, 0xc2, 0x0b, 0xfa, 0x52, 0x77, 0xb6, 0x0c, 0xff, 0x79, 0xfc, 0x7f, 0x9d,
0x7f, 0x94, 0x6b, 0x1e, 0x40, 0x29, 0xe9, 0x5c, 0x54, 0x81, 0x72, 0xaf, 0x3b, 0x3e, 0x3b, 0xc7,
0x76, 0xfd, 0x1a, 0x2a, 0x43, 0x61, 0x30, 0x3a, 0xad, 0xe7, 0x9a, 0xf7, 0xc0, 0x48, 0xdd, 0x8c,
0x0c, 0x28, 0xf6, 0x87, 0x27, 0xa3, 0xfa, 0x35, 0xc9, 0xfd, 0xb6, 0x8b, 0x87, 0xfd, 0xe1, 0x69,
0x3d, 0x87, 0x4c, 0xd8, 0xb1, 0x31, 0x1e, 0xe1, 0x7a, 0xbe, 0xf9, 0x57, 0x11, 0x8c, 0xe3, 0xe4,
0xb9, 0xe9, 0x5b, 0xf3, 0xc5, 0x82, 0x72, 0xcc, 0xa2, 0x9f, 0xe8, 0x4c, 0xe8, 0xc7, 0x48, 0x97,
0xf2, 0xfb, 0x64, 0x19, 0xfa, 0x3f, 0x2f, 0xfd, 0xb9, 0x4f, 0x99, 0xee, 0xef, 0x0c, 0x22, 0x1b,
0x3c, 0xfb, 0x69, 0x50, 0x54, 0x84, 0x2c, 0x84, 0xee, 0x40, 0xc5, 0xe7, 0x8e, 0x1f, 0xca, 0xe9,
0xb3, 0x4a, 0x7b, 0x0b, 0x7c, 0xde, 0xd7, 0x08, 0xfa, 0x0c, 0xaa, 0xc4, 0xa3, 0xa1, 0x70, 0x56,
0x94, 0xc9, 0x9b, 0xd5, 0xef, 0xbc, 0x5d, 0x05, 0x4e, 0x13, 0x4c, 0xab, 0xb8, 0x3e, 0x97, 0xf7,
0xe4, 0x5a, 0xe5, 0x54, 0xe5, 0x58, 0x23, 0x99, 0x46, 0x30, 0xde, 0xaf, 0x11, 0x9e, 0xc3, 0xde,
0xe6, 0x37, 0x21, 0xd7, 0xbe, 0x3a, 0x7c, 0x4b, 0x31, 0xe1, 0xb5, 0x56, 0x0f, 0xf4, 0x78, 0xec,
0x25, 0x09, 0xb8, 0xc6, 0xb3, 0x4b, 0x8e, 0x7e, 0x80, 0x8f, 0xe8, 0xa5, 0x70, 0xde, 0x94, 0xad,
0x2a, 0xd9, 0xfb, 0xff, 0x21, 0x6b, 0x5f, 0x0a, 0x1a, 0xba, 0xd4, 0xdd, 0x94, 0xbf, 0x4e, 0x2f,
0xc5, 0x64, 0xf3, 0x84, 0xe1, 0xda, 0xb8, 0x15, 0x25, 0xfa, 0xd5, 0xf6, 0x5f, 0x9f, 0x9a, 0xe1,
0x03, 0xdb, 0xf6, 0xe8, 0xb7, 0x1c, 0xdc, 0x9d, 0x45, 0x8b, 0xad, 0x0f, 0x70, 0x64, 0x1e, 0x13,
0x41, 0xc6, 0x72, 0xf8, 0x8d, 0x73, 0xdf, 0x3f, 0xd3, 0x74, 0x2f, 0x0a, 0x48, 0xe8, 0xb5, 0x22,
0xe6, 0xb5, 0x3d, 0x1a, 0xaa, 0xd1, 0xd8, 0x4e, 0xb6, 0x48, 0xec, 0xf3, 0x7f, 0xff, 0xb7, 0xf0,
0x64, 0x03, 0xf8, 0x3d, 0x6f, 0x9d, 0x26, 0x7a, 0x3d, 0x09, 0xa7, 0xbf, 0x95, 0xb5, 0xa6, 0x9d,
0x8b, 0x92, 0x12, 0x7d, 0xf8, 0x77, 0x00, 0x00, 0x00, 0xff, 0xff, 0x06, 0xfd, 0x4c, 0xc8, 0x81,
0x0c, 0x00, 0x00,
// 1270 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0x5d, 0x92, 0xda, 0xc6,
0x16, 0x36, 0x3f, 0x03, 0xd2, 0x61, 0x60, 0x70, 0x5f, 0xfb, 0x96, 0x3c, 0xd7, 0x77, 0x4c, 0x71,
0xfd, 0x30, 0x75, 0xe3, 0x02, 0x1b, 0x57, 0x52, 0x76, 0xfc, 0xc4, 0x30, 0x9a, 0x09, 0x65, 0x0c,
0xb8, 0x99, 0x21, 0xa9, 0x94, 0xab, 0x94, 0x1e, 0xd4, 0x28, 0x8a, 0x85, 0xa4, 0x74, 0x37, 0x64,
0xfc, 0xee, 0x65, 0x64, 0x05, 0xa9, 0x2c, 0x20, 0x6b, 0xc8, 0x26, 0xf2, 0x96, 0x75, 0xa4, 0xba,
0xd5, 0xc2, 0xc2, 0x4e, 0x82, 0x27, 0xf6, 0x5b, 0xf7, 0x77, 0xbe, 0xf3, 0xb5, 0x38, 0xfd, 0x9d,
0x23, 0x01, 0x9f, 0x78, 0x51, 0xe4, 0x05, 0xb4, 0xed, 0xd2, 0x95, 0x88, 0xa2, 0x80, 0xb7, 0x67,
0x41, 0xb4, 0x74, 0x5d, 0x7a, 0xb1, 0xf4, 0x3c, 0xca, 0xda, 0xab, 0x4e, 0xdb, 0x25, 0x82, 0xb4,
0x62, 0x16, 0x89, 0x08, 0x35, 0x12, 0x72, 0x2b, 0x25, 0xb7, 0x36, 0xc8, 0xad, 0x55, 0x67, 0xff,
0xb6, 0x96, 0x23, 0xb1, 0xdf, 0x26, 0x61, 0x18, 0x09, 0x22, 0xfc, 0x28, 0xe4, 0x49, 0xfe, 0x7e,
0xeb, 0xed, 0xc3, 0x78, 0xb4, 0x64, 0x33, 0xda, 0x5e, 0x3d, 0xd0, 0x2b, 0x67, 0x16, 0x85, 0x82,
0x5e, 0x0a, 0xcd, 0xbf, 0xa3, 0xf9, 0x6a, 0x77, 0xb1, 0x9c, 0xb7, 0x85, 0xbf, 0xa0, 0x5c, 0x90,
0x45, 0xac, 0x09, 0x07, 0x6f, 0x13, 0x7e, 0x60, 0x24, 0x8e, 0x29, 0xd3, 0x07, 0x36, 0x4f, 0xa1,
0x7a, 0x12, 0xb1, 0x05, 0x11, 0xcf, 0x28, 0xe7, 0xc4, 0xa3, 0xe8, 0xdf, 0x50, 0x9a, 0x2b, 0xc0,
0xca, 0x35, 0x72, 0x87, 0x26, 0xd6, 0x3b, 0x74, 0x00, 0x10, 0x13, 0x46, 0x16, 0x54, 0x50, 0xc6,
0xad, 0x7c, 0xa3, 0x70, 0x68, 0xe2, 0x0c, 0xd2, 0x7c, 0x5d, 0x80, 0xea, 0x44, 0x10, 0xb1, 0xe4,
0xa9, 0xd2, 0x2d, 0x30, 0x7c, 0xee, 0x50, 0xc6, 0x22, 0xa6, 0xb4, 0x0c, 0x5c, 0xf6, 0xb9, 0x2d,
0xb7, 0x68, 0x0a, 0x26, 0xa3, 0x73, 0xca, 0xb8, 0x23, 0x22, 0x2b, 0xdf, 0xc8, 0x1d, 0xd6, 0x3a,
0x8f, 0x5b, 0xdb, 0x4a, 0xd7, 0xda, 0x90, 0x6f, 0x61, 0x29, 0x40, 0xc3, 0x19, 0xc5, 0x46, 0xa2,
0x75, 0x16, 0xa1, 0xe7, 0x50, 0x71, 0x29, 0x9f, 0x31, 0x3f, 0x96, 0x45, 0xb5, 0x0a, 0x8d, 0xdc,
0x61, 0xa5, 0xd3, 0xde, 0xae, 0xbc, 0x51, 0x02, 0x9c, 0xd5, 0x68, 0xfe, 0x9c, 0x03, 0x73, 0x7d,
0x14, 0xda, 0x83, 0xca, 0xf9, 0x70, 0x32, 0xb6, 0x7b, 0xfd, 0x93, 0xbe, 0x7d, 0x5c, 0xbf, 0x86,
0x0e, 0x60, 0xff, 0x08, 0xdb, 0xdd, 0xa7, 0xe3, 0x51, 0x7f, 0x78, 0xe6, 0x4c, 0x46, 0xe7, 0xb8,
0x67, 0x3b, 0x83, 0x51, 0xaf, 0x7b, 0xd6, 0x1f, 0x0d, 0xeb, 0x05, 0x64, 0xc1, 0x8d, 0x4c, 0xbc,
0x37, 0x1a, 0x1e, 0xf7, 0x55, 0xa4, 0x88, 0x6e, 0xc1, 0xcd, 0x4c, 0xc4, 0xfe, 0x6a, 0x8c, 0xed,
0xc9, 0x44, 0x86, 0xca, 0x08, 0x41, 0x2d, 0x13, 0xea, 0x9e, 0xda, 0x75, 0x03, 0x5d, 0x87, 0xea,
0xb4, 0x8b, 0xfb, 0xdd, 0xa3, 0x81, 0xed, 0x0c, 0xbb, 0xcf, 0xec, 0xfa, 0x8e, 0xa4, 0xad, 0xa1,
0x69, 0x77, 0x70, 0x6e, 0xd7, 0x4b, 0xcd, 0x47, 0x50, 0x9b, 0x28, 0xa3, 0x0c, 0xa2, 0x99, 0x72,
0x16, 0x42, 0x50, 0x8c, 0x89, 0xf8, 0x56, 0x5f, 0xa7, 0x5a, 0x4b, 0x2c, 0xf0, 0x43, 0xaa, 0x4a,
0xbf, 0x83, 0xd5, 0xba, 0xf9, 0x63, 0x1e, 0x8c, 0x29, 0x61, 0x3e, 0xb9, 0x08, 0xa8, 0x24, 0x84,
0x64, 0x41, 0xd3, 0x24, 0xb9, 0x46, 0x37, 0x60, 0x67, 0x45, 0x82, 0x65, 0x92, 0x65, 0xe2, 0x64,
0x23, 0x99, 0xe2, 0x55, 0x4c, 0xad, 0x52, 0xc2, 0x94, 0x6b, 0x74, 0x0c, 0xe5, 0x05, 0x5d, 0x5c,
0x48, 0xa3, 0x14, 0x1a, 0x85, 0xc3, 0x4a, 0xe7, 0xff, 0xdb, 0xaf, 0x20, 0x3d, 0x1a, 0xa7, 0xa9,
0xa8, 0x07, 0x7b, 0x2b, 0xc2, 0x1c, 0x21, 0x51, 0xc7, 0x0f, 0x5d, 0x7a, 0x69, 0x15, 0xd5, 0x85,
0xfe, 0x27, 0x55, 0x4b, 0x4d, 0xdd, 0xea, 0x87, 0xe2, 0x61, 0x67, 0x2a, 0x9f, 0x07, 0x57, 0x57,
0x84, 0x9d, 0xc9, 0x94, 0xbe, 0xcc, 0x40, 0xa7, 0x50, 0xe2, 0xca, 0x36, 0xd6, 0xce, 0xfb, 0x9a,
0x61, 0xc3, 0x66, 0x58, 0xa7, 0x37, 0x5f, 0xe7, 0x01, 0x26, 0x82, 0xcc, 0x5e, 0x9e, 0x48, 0xcb,
0xa3, 0x7d, 0x30, 0xe6, 0xcb, 0x70, 0xa6, 0x6c, 0x96, 0x14, 0x69, 0xbd, 0x47, 0x03, 0x30, 0x02,
0x5d, 0x7d, 0x55, 0xab, 0x4a, 0xe7, 0xfe, 0x7b, 0x9c, 0xba, 0x71, 0x6b, 0x78, 0xad, 0x80, 0xbe,
0x00, 0x93, 0x30, 0x6f, 0xb9, 0xa0, 0xa1, 0xf8, 0x27, 0xe5, 0x7c, 0x93, 0x8c, 0x8e, 0xa0, 0x24,
0x55, 0x03, 0x6e, 0x15, 0xaf, 0x2c, 0xa3, 0x33, 0x9b, 0xbf, 0x19, 0x00, 0x47, 0x8c, 0x92, 0x97,
0x71, 0xe4, 0x87, 0x02, 0xd5, 0x20, 0xef, 0xbb, 0xba, 0x00, 0x79, 0xdf, 0x45, 0x4f, 0xa1, 0x44,
0x92, 0xa2, 0x54, 0x55, 0x57, 0x3f, 0xdc, 0x7e, 0xc4, 0x1b, 0xb5, 0x56, 0x57, 0xa5, 0x62, 0x2d,
0xf1, 0x91, 0xeb, 0x78, 0x1b, 0xcc, 0x59, 0x14, 0xba, 0xfe, 0x7a, 0x32, 0x98, 0xf8, 0x0d, 0x80,
0x1a, 0x50, 0xa1, 0x97, 0x31, 0xa3, 0x9c, 0xcb, 0x69, 0xac, 0x0a, 0x64, 0xe2, 0x2c, 0x84, 0xee,
0x01, 0x0a, 0x22, 0xcf, 0x59, 0x24, 0xbe, 0x70, 0xf4, 0x90, 0xac, 0x29, 0xa1, 0x7a, 0x10, 0x79,
0xda, 0x30, 0xc9, 0x28, 0x41, 0x18, 0x4c, 0xc9, 0x0e, 0xe8, 0x8a, 0x06, 0xd6, 0x9e, 0xaa, 0xc5,
0xa7, 0x57, 0xaa, 0xc5, 0x20, 0xf2, 0x06, 0x32, 0x59, 0xfe, 0x82, 0x64, 0x85, 0xee, 0x42, 0xcd,
0xe7, 0xce, 0xdc, 0x0f, 0x49, 0xe0, 0x48, 0x57, 0x52, 0xe5, 0x69, 0x03, 0xef, 0xfa, 0xfc, 0x44,
0x82, 0xd2, 0xb8, 0x14, 0x3d, 0x81, 0xca, 0x8c, 0x51, 0x22, 0xa8, 0x23, 0xdf, 0x05, 0x56, 0x45,
0x15, 0x6e, 0xff, 0x9d, 0x96, 0x39, 0x4b, 0x5f, 0x14, 0x18, 0x12, 0xba, 0x04, 0xd0, 0x63, 0x80,
0x44, 0x5f, 0xe5, 0xee, 0x6e, 0xcd, 0x35, 0x15, 0x5b, 0xa5, 0xfe, 0x17, 0x60, 0xc9, 0x29, 0x73,
0xe8, 0x82, 0xf8, 0x81, 0x55, 0x4f, 0x0a, 0x2c, 0x11, 0x5b, 0x02, 0x99, 0x46, 0x84, 0x0f, 0x6a,
0x44, 0x34, 0x82, 0x5d, 0x2e, 0xfb, 0xd0, 0x99, 0xcb, 0x46, 0xe4, 0x56, 0x59, 0x79, 0xf9, 0xde,
0x7b, 0xc9, 0xe9, 0xee, 0xc5, 0x15, 0xbe, 0x5e, 0x73, 0xe4, 0xc0, 0x4d, 0x2a, 0x67, 0x19, 0x11,
0xd4, 0x75, 0xb2, 0x26, 0x30, 0xae, 0xdc, 0x25, 0x37, 0xd6, 0x42, 0x76, 0xc6, 0x39, 0xcf, 0xa1,
0xb6, 0xd2, 0x8c, 0x64, 0x9a, 0x59, 0xe6, 0x95, 0x95, 0xab, 0xa9, 0x82, 0x9a, 0x6d, 0x68, 0x0c,
0xa5, 0x80, 0x5c, 0xd0, 0x80, 0x5b, 0xd7, 0x95, 0xd4, 0xa3, 0xab, 0x79, 0x4b, 0xa5, 0xda, 0xa1,
0x60, 0xaf, 0xb0, 0xd6, 0xd9, 0x7f, 0x0c, 0x95, 0x0c, 0x8c, 0xea, 0x50, 0x78, 0x49, 0x5f, 0xe9,
0xce, 0x96, 0xcb, 0x3f, 0x1f, 0xff, 0x9f, 0xe7, 0x1f, 0xe5, 0x9a, 0x07, 0x50, 0x4a, 0x3a, 0x17,
0x55, 0xa0, 0xdc, 0xeb, 0x8e, 0xcf, 0xce, 0xb1, 0x5d, 0xbf, 0x86, 0xca, 0x50, 0x18, 0x8c, 0x4e,
0xeb, 0xb9, 0xe6, 0x3d, 0x30, 0x52, 0x37, 0x23, 0x03, 0x8a, 0xfd, 0xe1, 0xc9, 0xa8, 0x7e, 0x4d,
0x72, 0xbf, 0xec, 0xe2, 0x61, 0x7f, 0x78, 0x5a, 0xcf, 0x21, 0x13, 0x76, 0x6c, 0x8c, 0x47, 0xb8,
0x9e, 0x6f, 0xfe, 0x5e, 0x04, 0xe3, 0x38, 0x79, 0x6e, 0xfa, 0xce, 0x7c, 0xb1, 0xa0, 0x1c, 0xb3,
0xe8, 0x3b, 0x3a, 0x13, 0xfa, 0x31, 0xd2, 0xad, 0xfc, 0x3e, 0x59, 0x86, 0xfe, 0xf7, 0x4b, 0x7f,
0xee, 0x53, 0xa6, 0xfb, 0x3b, 0x83, 0xc8, 0x06, 0xcf, 0x7e, 0x1a, 0x14, 0x15, 0x21, 0x0b, 0xa1,
0x3b, 0x50, 0xf1, 0xb9, 0xe3, 0x87, 0x72, 0xfa, 0xac, 0xd2, 0xde, 0x02, 0x9f, 0xf7, 0x35, 0x82,
0xfe, 0x07, 0x55, 0xe2, 0xd1, 0x50, 0x38, 0x2b, 0xca, 0xe4, 0xcd, 0xea, 0x77, 0xde, 0xae, 0x02,
0xa7, 0x09, 0xa6, 0x55, 0x5c, 0x9f, 0xcb, 0x7b, 0x72, 0xad, 0x72, 0xaa, 0x72, 0xac, 0x91, 0x4c,
0x23, 0x18, 0x1f, 0xd6, 0x08, 0xcf, 0x61, 0x6f, 0xf3, 0x9b, 0x90, 0x6b, 0x5f, 0x1d, 0xbe, 0xa3,
0x98, 0xf0, 0x5a, 0xab, 0x07, 0x7a, 0x3c, 0xf6, 0x92, 0x04, 0x5c, 0xe3, 0xd9, 0x2d, 0x47, 0xdf,
0xc0, 0xbf, 0xe8, 0xa5, 0x70, 0xde, 0x96, 0xad, 0x2a, 0xd9, 0xfb, 0x7f, 0x23, 0x6b, 0x5f, 0x0a,
0x1a, 0xba, 0xd4, 0xdd, 0x94, 0xbf, 0x4e, 0x2f, 0xc5, 0x64, 0xf3, 0x84, 0xe1, 0xda, 0xb8, 0x15,
0x25, 0xfa, 0xd9, 0xf6, 0x5f, 0x9f, 0x9a, 0xe1, 0x23, 0xdb, 0xf6, 0xe8, 0x97, 0x1c, 0xdc, 0x9d,
0x45, 0x8b, 0xad, 0x0f, 0x70, 0x64, 0x1e, 0x13, 0x41, 0xc6, 0x72, 0xf8, 0x8d, 0x73, 0x5f, 0x3f,
0xd3, 0x74, 0x2f, 0x0a, 0x48, 0xe8, 0xb5, 0x22, 0xe6, 0xb5, 0x3d, 0x1a, 0xaa, 0xd1, 0xd8, 0x4e,
0x42, 0x24, 0xf6, 0xf9, 0x5f, 0xff, 0x5b, 0x78, 0xb2, 0x01, 0xfc, 0x94, 0xb7, 0x4e, 0x13, 0xbd,
0x9e, 0x84, 0xd3, 0xdf, 0xca, 0x5a, 0xd3, 0xce, 0xaf, 0x69, 0xe8, 0x85, 0x0a, 0xbd, 0x48, 0x43,
0x2f, 0xa6, 0x9d, 0x8b, 0x92, 0x3a, 0xef, 0xe1, 0x1f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x75, 0x2e,
0xfe, 0xb1, 0x9c, 0x0c, 0x00, 0x00,
}

View File

@ -594,54 +594,55 @@ var _Debugger2_serviceDesc = grpc.ServiceDesc{
func init() { proto.RegisterFile("google/devtools/clouddebugger/v2/debugger.proto", fileDescriptor2) }
var fileDescriptor2 = []byte{
// 781 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x56, 0xcb, 0x6e, 0xd3, 0x4c,
0x18, 0xd5, 0xa4, 0x7f, 0x2f, 0xf9, 0xd2, 0xb4, 0xfd, 0x47, 0xbd, 0x58, 0xe1, 0x16, 0x99, 0x8b,
0x4a, 0x41, 0x36, 0x72, 0x11, 0xb4, 0xb0, 0xa1, 0xa1, 0x28, 0x8d, 0x54, 0xaa, 0x2a, 0x40, 0x91,
0xd8, 0x44, 0x4e, 0x3c, 0xb5, 0x4c, 0x5d, 0x8f, 0xf1, 0x8c, 0x03, 0xa8, 0xea, 0xa6, 0x48, 0xec,
0x11, 0x2f, 0x00, 0x5b, 0x84, 0xc4, 0x13, 0x20, 0xb1, 0x43, 0x62, 0xcb, 0x2b, 0xf0, 0x20, 0xc8,
0xf6, 0xb8, 0x71, 0x82, 0x21, 0x71, 0x2a, 0x75, 0xe7, 0x9c, 0xcc, 0x77, 0x7c, 0xce, 0x99, 0x6f,
0xbe, 0x31, 0xa8, 0x26, 0xa5, 0xa6, 0x4d, 0x54, 0x83, 0xb4, 0x39, 0xa5, 0x36, 0x53, 0x5b, 0x36,
0xf5, 0x0d, 0x83, 0x34, 0x7d, 0xd3, 0x24, 0x9e, 0xda, 0xd6, 0xd4, 0xf8, 0x59, 0x71, 0x3d, 0xca,
0x29, 0x2e, 0x47, 0x05, 0x4a, 0x5c, 0xa0, 0x74, 0x15, 0x28, 0x6d, 0xad, 0x74, 0x56, 0x50, 0xea,
0xae, 0xa5, 0xea, 0x8e, 0x43, 0xb9, 0xce, 0x2d, 0xea, 0xb0, 0xa8, 0xbe, 0x74, 0xad, 0xff, 0x0b,
0x75, 0xae, 0x8b, 0xc5, 0x67, 0xc4, 0xe2, 0xf0, 0x57, 0xd3, 0xdf, 0x55, 0xc9, 0xbe, 0xcb, 0x5f,
0x47, 0x7f, 0xca, 0x9f, 0x11, 0xcc, 0x3e, 0x22, 0xbc, 0xe2, 0x11, 0x7d, 0xcf, 0xa5, 0x96, 0xc3,
0xeb, 0xe4, 0x85, 0x4f, 0x18, 0xc7, 0x17, 0xa0, 0x20, 0xf8, 0x48, 0xc3, 0x32, 0x24, 0x54, 0x46,
0x8b, 0xf9, 0x3a, 0xc4, 0x50, 0xcd, 0xc0, 0x9b, 0x00, 0xcd, 0xe3, 0x2a, 0x29, 0x57, 0x46, 0x8b,
0x05, 0xed, 0xba, 0xd2, 0xcf, 0x98, 0x92, 0x78, 0x53, 0xa2, 0x1e, 0x5f, 0x86, 0xa9, 0x96, 0x6d,
0x11, 0x87, 0x37, 0xda, 0xc4, 0x63, 0x16, 0x75, 0xa4, 0xff, 0xc2, 0x37, 0x16, 0x23, 0x74, 0x27,
0x02, 0x65, 0x02, 0x73, 0x3d, 0x6a, 0x99, 0x4b, 0x1d, 0x46, 0x7a, 0xd4, 0xa0, 0x93, 0xa9, 0x91,
0xdf, 0x20, 0x98, 0xad, 0x0e, 0x95, 0xca, 0x45, 0x28, 0x76, 0x78, 0x82, 0x25, 0xb9, 0x70, 0xc9,
0x64, 0x07, 0xac, 0x19, 0x19, 0xcc, 0x56, 0x4f, 0xc1, 0xec, 0x5b, 0x04, 0x0b, 0xeb, 0xc4, 0x26,
0x9c, 0x9c, 0x9e, 0xdf, 0x91, 0x34, 0xbf, 0xdf, 0x47, 0x60, 0x7e, 0xd3, 0x62, 0x09, 0xc7, 0x6c,
0x60, 0x1d, 0x4b, 0xf0, 0xbf, 0xe5, 0xb4, 0x6c, 0xdf, 0x20, 0x0d, 0xdd, 0xb6, 0x1b, 0x3e, 0x23,
0x1e, 0x0b, 0xb5, 0x4c, 0xd4, 0xa7, 0xc5, 0x1f, 0x6b, 0xb6, 0xfd, 0x24, 0x80, 0xf1, 0x55, 0x98,
0x89, 0xd7, 0x5a, 0x8e, 0xde, 0xe2, 0x56, 0x9b, 0x84, 0x82, 0x3a, 0x4b, 0x6b, 0x02, 0xc6, 0xbb,
0x30, 0x16, 0x3c, 0x89, 0x1d, 0x2a, 0x68, 0x5b, 0xfd, 0x53, 0x4e, 0x77, 0x90, 0x08, 0x7f, 0x2d,
0x24, 0xdc, 0xd1, 0x6d, 0x9f, 0xd4, 0x05, 0x7b, 0x10, 0x23, 0xe3, 0x9e, 0xe5, 0x36, 0x3c, 0xc2,
0x7c, 0x9b, 0x33, 0x69, 0x34, 0xd4, 0x33, 0x19, 0x82, 0xf5, 0x08, 0xc3, 0xe7, 0x00, 0x5e, 0xea,
0x16, 0x6f, 0x70, 0xba, 0x47, 0x1c, 0x69, 0x2c, 0xcc, 0x20, 0x1f, 0x20, 0x8f, 0x03, 0x20, 0x25,
0xe5, 0x89, 0x94, 0x94, 0x4b, 0x4d, 0x98, 0x4b, 0xd5, 0x82, 0x6b, 0x30, 0xda, 0x0e, 0x1e, 0xc2,
0x74, 0xa7, 0xb4, 0xe5, 0x2c, 0x0d, 0xa5, 0x44, 0x44, 0xf5, 0x88, 0x41, 0x7e, 0x87, 0x60, 0xe1,
0x8f, 0x1c, 0x44, 0xf3, 0x6e, 0x41, 0xa1, 0xd3, 0x1c, 0x4c, 0x42, 0xe5, 0x91, 0xcc, 0xdd, 0x9b,
0x24, 0xc0, 0x57, 0x60, 0xda, 0x21, 0xaf, 0x78, 0x23, 0x11, 0x4d, 0xd4, 0x83, 0xc5, 0x00, 0x7e,
0x1a, 0xc7, 0x23, 0x1f, 0x21, 0x98, 0x0d, 0x34, 0xad, 0x8b, 0xa6, 0x39, 0xee, 0x2d, 0x09, 0xc6,
0x5d, 0x8f, 0x3e, 0x27, 0x2d, 0x2e, 0x0a, 0xe3, 0x9f, 0x59, 0x1a, 0x65, 0xc0, 0x23, 0xad, 0xc3,
0x5c, 0x8f, 0x06, 0x91, 0xca, 0x06, 0xe4, 0xe3, 0x6e, 0x8e, 0x33, 0x59, 0xea, 0x9f, 0x49, 0xcc,
0x53, 0xef, 0x14, 0x6b, 0x5f, 0xc7, 0x21, 0x2f, 0x70, 0x4f, 0xc3, 0x3f, 0x10, 0x14, 0xbb, 0x26,
0x26, 0xbe, 0xd5, 0x9f, 0x36, 0xed, 0x42, 0x28, 0xdd, 0xce, 0x5c, 0x17, 0x59, 0x93, 0x37, 0x8e,
0x7e, 0xfe, 0x7a, 0x9f, 0xab, 0xc8, 0x37, 0x93, 0x17, 0xa1, 0x7a, 0x2c, 0x58, 0x3d, 0x48, 0x9c,
0xec, 0x43, 0x35, 0xb1, 0xb5, 0x2a, 0x23, 0xfc, 0x4e, 0xf2, 0x92, 0x08, 0xcc, 0x54, 0xb3, 0x9a,
0xa9, 0x0e, 0x69, 0xa6, 0xfa, 0x2f, 0x33, 0xf8, 0x5e, 0x66, 0x33, 0x07, 0x5d, 0x73, 0xf2, 0x10,
0x7f, 0x41, 0x30, 0xd3, 0x3b, 0x76, 0xf1, 0xea, 0x20, 0x7b, 0x9e, 0x3a, 0xaa, 0x4b, 0xf3, 0x71,
0x69, 0x7c, 0xcf, 0x2b, 0x0f, 0x82, 0x7b, 0x3e, 0x56, 0xbc, 0x74, 0x72, 0xc5, 0xdf, 0x10, 0x4c,
0xf7, 0x9c, 0x6a, 0xbc, 0x32, 0xec, 0x40, 0x2c, 0xad, 0x0e, 0x51, 0x29, 0x36, 0x61, 0x25, 0xb4,
0xa4, 0xe1, 0x1b, 0x59, 0x2d, 0xe1, 0x0f, 0x08, 0x8a, 0x5d, 0x07, 0x70, 0x90, 0x0e, 0x4a, 0x9b,
0x1a, 0x83, 0x74, 0x50, 0xea, 0x49, 0x97, 0xcf, 0x87, 0xe2, 0x25, 0x3c, 0x9f, 0x2e, 0xbe, 0xf2,
0x11, 0xc1, 0xa5, 0x16, 0xdd, 0xef, 0x4b, 0x5f, 0x29, 0xc6, 0xa7, 0x7c, 0x3b, 0xd8, 0xf0, 0x6d,
0xf4, 0xec, 0xa1, 0x28, 0x31, 0xa9, 0xad, 0x3b, 0xa6, 0x42, 0x3d, 0x53, 0x35, 0x89, 0x13, 0xb6,
0x83, 0xf8, 0x42, 0xd5, 0x5d, 0x8b, 0xfd, 0xfd, 0xa3, 0xf1, 0x6e, 0x17, 0xf0, 0x29, 0x27, 0x55,
0x23, 0xbe, 0xfb, 0x01, 0x1c, 0xcf, 0x1a, 0x4f, 0xd9, 0xd1, 0x9a, 0x63, 0x21, 0xe9, 0xf2, 0xef,
0x00, 0x00, 0x00, 0xff, 0xff, 0x66, 0xf8, 0x5d, 0x68, 0xf9, 0x0a, 0x00, 0x00,
// 797 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x56, 0xdd, 0x6a, 0xdb, 0x48,
0x14, 0x66, 0x9c, 0xcd, 0x8f, 0x8f, 0xe3, 0x24, 0x3b, 0xe4, 0x47, 0x78, 0xff, 0x8c, 0xf6, 0x87,
0x6c, 0x76, 0x91, 0x16, 0x65, 0xd9, 0x4d, 0x76, 0x6f, 0x1a, 0x37, 0xc5, 0x31, 0xa4, 0x21, 0xb8,
0xad, 0x0b, 0x25, 0x60, 0x64, 0x7b, 0x22, 0xd4, 0x28, 0x1a, 0x55, 0x33, 0x72, 0x5b, 0x42, 0x6e,
0x52, 0xe8, 0x7d, 0xe9, 0x0b, 0xf4, 0xba, 0x14, 0xfa, 0x02, 0x2d, 0xf4, 0xae, 0x90, 0xdb, 0xbe,
0x42, 0x1f, 0xa4, 0x48, 0x9a, 0x89, 0x65, 0x57, 0xad, 0x2d, 0x07, 0x72, 0x37, 0xfa, 0x66, 0xce,
0x99, 0xef, 0xfb, 0xe6, 0xcc, 0x19, 0x81, 0x6e, 0x51, 0x6a, 0x39, 0x44, 0xef, 0x90, 0x2e, 0xa7,
0xd4, 0x61, 0x7a, 0xdb, 0xa1, 0x41, 0xa7, 0x43, 0x5a, 0x81, 0x65, 0x11, 0x5f, 0xef, 0x1a, 0xba,
0x1c, 0x6b, 0x9e, 0x4f, 0x39, 0xc5, 0xe5, 0x38, 0x40, 0x93, 0x01, 0x5a, 0x5f, 0x80, 0xd6, 0x35,
0x4a, 0xdf, 0x8b, 0x94, 0xa6, 0x67, 0xeb, 0xa6, 0xeb, 0x52, 0x6e, 0x72, 0x9b, 0xba, 0x2c, 0x8e,
0x2f, 0xfd, 0x31, 0x7c, 0x43, 0x93, 0x9b, 0x62, 0xf1, 0x77, 0x62, 0x71, 0xf4, 0xd5, 0x0a, 0x0e,
0x75, 0x72, 0xec, 0xf1, 0xc7, 0xf1, 0xa4, 0xfa, 0x0a, 0xc1, 0xe2, 0x2d, 0xc2, 0x2b, 0x3e, 0x31,
0x8f, 0x3c, 0x6a, 0xbb, 0xbc, 0x4e, 0x1e, 0x04, 0x84, 0x71, 0xfc, 0x13, 0x14, 0x44, 0x3e, 0xd2,
0xb4, 0x3b, 0x0a, 0x2a, 0xa3, 0xd5, 0x7c, 0x1d, 0x24, 0x54, 0xeb, 0xe0, 0x5d, 0x80, 0xd6, 0x45,
0x94, 0x92, 0x2b, 0xa3, 0xd5, 0x82, 0xf1, 0xa7, 0x36, 0x4c, 0x98, 0x96, 0xd8, 0x29, 0x11, 0x8f,
0x7f, 0x85, 0xb9, 0xb6, 0x63, 0x13, 0x97, 0x37, 0xbb, 0xc4, 0x67, 0x36, 0x75, 0x95, 0x6f, 0xa2,
0x1d, 0x8b, 0x31, 0xda, 0x88, 0x41, 0x95, 0xc0, 0xd2, 0x00, 0x5b, 0xe6, 0x51, 0x97, 0x91, 0x01,
0x36, 0xe8, 0x72, 0x6c, 0xd4, 0x27, 0x08, 0x16, 0xab, 0x63, 0xb9, 0xf2, 0x33, 0x14, 0x7b, 0x79,
0xc2, 0x25, 0xb9, 0x68, 0xc9, 0x6c, 0x0f, 0xac, 0x75, 0x32, 0x88, 0xad, 0x5e, 0x81, 0xd8, 0xa7,
0x08, 0x56, 0xb6, 0x89, 0x43, 0x38, 0xb9, 0x3a, 0xbd, 0x13, 0x69, 0x7a, 0xdf, 0x4f, 0xc0, 0xf2,
0xae, 0xcd, 0x12, 0x8a, 0xd9, 0xc8, 0x3c, 0xd6, 0xe0, 0x5b, 0xdb, 0x6d, 0x3b, 0x41, 0x87, 0x34,
0x4d, 0xc7, 0x69, 0x06, 0x8c, 0xf8, 0x2c, 0xe2, 0x32, 0x53, 0x9f, 0x17, 0x13, 0x5b, 0x8e, 0x73,
0x27, 0x84, 0xf1, 0xef, 0xb0, 0x20, 0xd7, 0xda, 0xae, 0xd9, 0xe6, 0x76, 0x97, 0x44, 0x84, 0x7a,
0x4b, 0x6b, 0x02, 0xc6, 0x87, 0x30, 0x15, 0x8e, 0xc4, 0x09, 0x15, 0x8c, 0xbd, 0xe1, 0x2e, 0xa7,
0x2b, 0x48, 0x98, 0xbf, 0x15, 0x25, 0x6c, 0x98, 0x4e, 0x40, 0xea, 0x22, 0x7b, 0x68, 0x23, 0xe3,
0xbe, 0xed, 0x35, 0x7d, 0xc2, 0x02, 0x87, 0x33, 0x65, 0x32, 0xe2, 0x33, 0x1b, 0x81, 0xf5, 0x18,
0xc3, 0x3f, 0x00, 0x3c, 0x34, 0x6d, 0xde, 0xe4, 0xf4, 0x88, 0xb8, 0xca, 0x54, 0xe4, 0x41, 0x3e,
0x44, 0x6e, 0x87, 0x40, 0x8a, 0xcb, 0x33, 0x29, 0x2e, 0x97, 0x5a, 0xb0, 0x94, 0xca, 0x05, 0xd7,
0x60, 0xb2, 0x1b, 0x0e, 0x22, 0x77, 0xe7, 0x8c, 0xf5, 0x2c, 0x05, 0xa5, 0xc5, 0x89, 0xea, 0x71,
0x06, 0xf5, 0x19, 0x82, 0x95, 0xcf, 0x7c, 0x10, 0xc5, 0xbb, 0x07, 0x85, 0x5e, 0x71, 0x30, 0x05,
0x95, 0x27, 0x32, 0x57, 0x6f, 0x32, 0x01, 0xfe, 0x0d, 0xe6, 0x5d, 0xf2, 0x88, 0x37, 0x13, 0xd6,
0xc4, 0x35, 0x58, 0x0c, 0xe1, 0xbb, 0xd2, 0x1e, 0xf5, 0x0c, 0xc1, 0x62, 0xc8, 0x69, 0x5b, 0x14,
0xcd, 0x45, 0x6d, 0x29, 0x30, 0xed, 0xf9, 0xf4, 0x3e, 0x69, 0x73, 0x11, 0x28, 0x3f, 0xb3, 0x14,
0xca, 0x88, 0x57, 0xda, 0x84, 0xa5, 0x01, 0x0e, 0xc2, 0x95, 0x1d, 0xc8, 0xcb, 0x6a, 0x96, 0x9e,
0xac, 0x0d, 0xf7, 0x44, 0xe6, 0xa9, 0xf7, 0x82, 0x8d, 0xb7, 0xd3, 0x90, 0x17, 0xb8, 0x6f, 0xe0,
0x73, 0x04, 0xc5, 0xbe, 0x8e, 0x89, 0xff, 0x19, 0x9e, 0x36, 0xed, 0x41, 0x28, 0xfd, 0x9b, 0x39,
0x2e, 0x96, 0xa6, 0xee, 0x9c, 0x7d, 0xf8, 0xf8, 0x3c, 0x57, 0x51, 0xff, 0x4e, 0x3e, 0x84, 0xfa,
0x05, 0x61, 0xfd, 0x24, 0x71, 0xb3, 0x4f, 0xf5, 0xc4, 0xd1, 0xea, 0x8c, 0xf0, 0xff, 0x92, 0x8f,
0x44, 0x28, 0xa6, 0x9a, 0x55, 0x4c, 0x75, 0x4c, 0x31, 0xd5, 0xaf, 0x89, 0xc1, 0xd7, 0x32, 0x8b,
0x39, 0xe9, 0xeb, 0x93, 0xa7, 0xf8, 0x35, 0x82, 0x85, 0xc1, 0xb6, 0x8b, 0x37, 0x47, 0x39, 0xf3,
0xd4, 0x56, 0x5d, 0x5a, 0x96, 0xa1, 0xf2, 0x9d, 0xd7, 0x6e, 0x84, 0xef, 0xbc, 0x64, 0xbc, 0x76,
0x79, 0xc6, 0xef, 0x10, 0xcc, 0x0f, 0xdc, 0x6a, 0xbc, 0x31, 0x6e, 0x43, 0x2c, 0x6d, 0x8e, 0x11,
0x29, 0x0e, 0x61, 0x23, 0x92, 0x64, 0xe0, 0xbf, 0xb2, 0x4a, 0xc2, 0x2f, 0x10, 0x14, 0xfb, 0x2e,
0xe0, 0x28, 0x15, 0x94, 0xd6, 0x35, 0x46, 0xa9, 0xa0, 0xd4, 0x9b, 0xae, 0xfe, 0x18, 0x91, 0x57,
0xf0, 0x72, 0x3a, 0xf9, 0xca, 0x1b, 0x04, 0xbf, 0xb4, 0xe9, 0xf1, 0xd0, 0xf4, 0x95, 0xa2, 0xbc,
0xe5, 0xfb, 0xe1, 0x81, 0xef, 0xa3, 0x7b, 0x37, 0x45, 0x88, 0x45, 0x1d, 0xd3, 0xb5, 0x34, 0xea,
0x5b, 0xba, 0x45, 0xdc, 0xa8, 0x1c, 0xc4, 0x1f, 0xaa, 0xe9, 0xd9, 0xec, 0xcb, 0x3f, 0x8d, 0xff,
0xf7, 0x01, 0x2f, 0x73, 0x4a, 0x35, 0xce, 0x77, 0x3d, 0x84, 0x65, 0xaf, 0xf1, 0xb5, 0x86, 0x71,
0x2e, 0xa7, 0x0e, 0xa2, 0xa9, 0x03, 0x39, 0x75, 0xd0, 0x30, 0x5a, 0x53, 0xd1, 0x7e, 0xeb, 0x9f,
0x02, 0x00, 0x00, 0xff, 0xff, 0x52, 0x23, 0xb7, 0x95, 0x14, 0x0b, 0x00, 0x00,
}

View File

@ -311,7 +311,7 @@ func (m *Command_EnvironmentVariable) GetValue() string {
return ""
}
// A `Platform` is a set of requirements, such as hardware, operation system, or
// A `Platform` is a set of requirements, such as hardware, operating system, or
// compiler toolchain, for an
// [Action][google.devtools.remoteexecution.v1test.Action]'s execution
// environment. A `Platform` is represented as a series of key-value pairs
@ -1274,7 +1274,6 @@ func (m *BatchUpdateBlobsResponse_Response) GetStatus() *google_rpc.Status {
// A request message for
// [ContentAddressableStorage.GetTree][google.devtools.remoteexecution.v1test.ContentAddressableStorage.GetTree].
// This message is deprecated and should no longer be used.
type GetTreeRequest struct {
// The instance of the execution system to operate against. A server may
// support multiple instances of the execution system (with their own workers,
@ -1333,7 +1332,6 @@ func (m *GetTreeRequest) GetPageToken() string {
// A response message for
// [ContentAddressableStorage.GetTree][google.devtools.remoteexecution.v1test.ContentAddressableStorage.GetTree].
// This message is deprecated and should no longer be used.
type GetTreeResponse struct {
// The directories descended from the requested root.
Directories []*Directory `protobuf:"bytes,1,rep,name=directories" json:"directories,omitempty"`
@ -1832,7 +1830,21 @@ type ContentAddressableStorageClient interface {
// [Digest][google.devtools.remoteexecution.v1test.Digest] does not match the
// provided data.
BatchUpdateBlobs(ctx context.Context, in *BatchUpdateBlobsRequest, opts ...grpc.CallOption) (*BatchUpdateBlobsResponse, error)
// DEPRECATED: This method is deprecated and should no longer be used.
// Fetch the entire directory tree rooted at a node.
//
// This request must be targeted at a
// [Directory][google.devtools.remoteexecution.v1test.Directory] stored in the
// [ContentAddressableStorage][google.devtools.remoteexecution.v1test.ContentAddressableStorage]
// (CAS). The server will enumerate the `Directory` tree recursively and
// return every node descended from the root.
// The exact traversal order is unspecified and, unless retrieving subsequent
// pages from an earlier request, is not guaranteed to be stable across
// multiple invocations of `GetTree`.
//
// If part of the tree is missing from the CAS, the server will return the
// portion present and omit the rest.
//
// * `NOT_FOUND`: The requested tree root is not present in the CAS.
GetTree(ctx context.Context, in *GetTreeRequest, opts ...grpc.CallOption) (*GetTreeResponse, error)
}
@ -1901,7 +1913,21 @@ type ContentAddressableStorageServer interface {
// [Digest][google.devtools.remoteexecution.v1test.Digest] does not match the
// provided data.
BatchUpdateBlobs(context.Context, *BatchUpdateBlobsRequest) (*BatchUpdateBlobsResponse, error)
// DEPRECATED: This method is deprecated and should no longer be used.
// Fetch the entire directory tree rooted at a node.
//
// This request must be targeted at a
// [Directory][google.devtools.remoteexecution.v1test.Directory] stored in the
// [ContentAddressableStorage][google.devtools.remoteexecution.v1test.ContentAddressableStorage]
// (CAS). The server will enumerate the `Directory` tree recursively and
// return every node descended from the root.
// The exact traversal order is unspecified and, unless retrieving subsequent
// pages from an earlier request, is not guaranteed to be stable across
// multiple invocations of `GetTree`.
//
// If part of the tree is missing from the CAS, the server will return the
// portion present and omit the rest.
//
// * `NOT_FOUND`: The requested tree root is not present in the CAS.
GetTree(context.Context, *GetTreeRequest) (*GetTreeResponse, error)
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,468 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: google/devtools/remoteworkers/v1test2/command.proto
package remoteworkers
import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
import google_protobuf5 "github.com/golang/protobuf/ptypes/duration"
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// Describes a shell-style task to execute.
type CommandTask struct {
// The inputs to the task.
Inputs *CommandTask_Inputs `protobuf:"bytes,1,opt,name=inputs" json:"inputs,omitempty"`
// The expected outputs from the task.
ExpectedOutputs *CommandTask_Outputs `protobuf:"bytes,4,opt,name=expected_outputs,json=expectedOutputs" json:"expected_outputs,omitempty"`
// The timeouts of this task.
Timeouts *CommandTask_Timeouts `protobuf:"bytes,5,opt,name=timeouts" json:"timeouts,omitempty"`
}
func (m *CommandTask) Reset() { *m = CommandTask{} }
func (m *CommandTask) String() string { return proto.CompactTextString(m) }
func (*CommandTask) ProtoMessage() {}
func (*CommandTask) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} }
func (m *CommandTask) GetInputs() *CommandTask_Inputs {
if m != nil {
return m.Inputs
}
return nil
}
func (m *CommandTask) GetExpectedOutputs() *CommandTask_Outputs {
if m != nil {
return m.ExpectedOutputs
}
return nil
}
func (m *CommandTask) GetTimeouts() *CommandTask_Timeouts {
if m != nil {
return m.Timeouts
}
return nil
}
// Describes the inputs to a shell-style task.
type CommandTask_Inputs struct {
// The command itself to run (e.g., argv)
Arguments []string `protobuf:"bytes,1,rep,name=arguments" json:"arguments,omitempty"`
// The input filesystem to be set up prior to the task beginning. The
// contents should be a repeated set of FileMetadata messages though other
// formats are allowed if better for the implementation (eg, a LUCI-style
// .isolated file).
//
// This field is repeated since implementations might want to cache the
// metadata, in which case it may be useful to break up portions of the
// filesystem that change frequently (eg, specific input files) from those
// that don't (eg, standard header files).
Files []*Digest `protobuf:"bytes,2,rep,name=files" json:"files,omitempty"`
// All environment variables required by the task.
EnvironmentVariables []*CommandTask_Inputs_EnvironmentVariable `protobuf:"bytes,3,rep,name=environment_variables,json=environmentVariables" json:"environment_variables,omitempty"`
}
func (m *CommandTask_Inputs) Reset() { *m = CommandTask_Inputs{} }
func (m *CommandTask_Inputs) String() string { return proto.CompactTextString(m) }
func (*CommandTask_Inputs) ProtoMessage() {}
func (*CommandTask_Inputs) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0, 0} }
func (m *CommandTask_Inputs) GetArguments() []string {
if m != nil {
return m.Arguments
}
return nil
}
func (m *CommandTask_Inputs) GetFiles() []*Digest {
if m != nil {
return m.Files
}
return nil
}
func (m *CommandTask_Inputs) GetEnvironmentVariables() []*CommandTask_Inputs_EnvironmentVariable {
if m != nil {
return m.EnvironmentVariables
}
return nil
}
// An environment variable required by this task.
type CommandTask_Inputs_EnvironmentVariable struct {
// The envvar name.
Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
// The envvar value.
Value string `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"`
}
func (m *CommandTask_Inputs_EnvironmentVariable) Reset() {
*m = CommandTask_Inputs_EnvironmentVariable{}
}
func (m *CommandTask_Inputs_EnvironmentVariable) String() string { return proto.CompactTextString(m) }
func (*CommandTask_Inputs_EnvironmentVariable) ProtoMessage() {}
func (*CommandTask_Inputs_EnvironmentVariable) Descriptor() ([]byte, []int) {
return fileDescriptor1, []int{0, 0, 0}
}
func (m *CommandTask_Inputs_EnvironmentVariable) GetName() string {
if m != nil {
return m.Name
}
return ""
}
func (m *CommandTask_Inputs_EnvironmentVariable) GetValue() string {
if m != nil {
return m.Value
}
return ""
}
// Describes the expected outputs of the command.
type CommandTask_Outputs struct {
// A list of expected files, relative to the execution root.
Files []string `protobuf:"bytes,1,rep,name=files" json:"files,omitempty"`
// A list of expected directories, relative to the execution root.
Directories []string `protobuf:"bytes,2,rep,name=directories" json:"directories,omitempty"`
}
func (m *CommandTask_Outputs) Reset() { *m = CommandTask_Outputs{} }
func (m *CommandTask_Outputs) String() string { return proto.CompactTextString(m) }
func (*CommandTask_Outputs) ProtoMessage() {}
func (*CommandTask_Outputs) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0, 1} }
func (m *CommandTask_Outputs) GetFiles() []string {
if m != nil {
return m.Files
}
return nil
}
func (m *CommandTask_Outputs) GetDirectories() []string {
if m != nil {
return m.Directories
}
return nil
}
// Describes the timeouts associated with this task.
type CommandTask_Timeouts struct {
// This specifies the maximum time that the task can run, excluding the
// time required to download inputs or upload outputs. That is, the worker
// will terminate the task if it runs longer than this.
Execution *google_protobuf5.Duration `protobuf:"bytes,1,opt,name=execution" json:"execution,omitempty"`
// This specifies the maximum amount of time the task can be idle - that is,
// go without generating some output in either stdout or stderr. If the
// process is silent for more than the specified time, the worker will
// terminate the task.
Idle *google_protobuf5.Duration `protobuf:"bytes,2,opt,name=idle" json:"idle,omitempty"`
// If the execution or IO timeouts are exceeded, the worker will try to
// gracefully terminate the task and return any existing logs. However,
// tasks may be hard-frozen in which case this process will fail. This
// timeout specifies how long to wait for a terminated task to shut down
// gracefully (e.g. via SIGTERM) before we bring down the hammer (e.g.
// SIGKILL on *nix, CTRL_BREAK_EVENT on Windows).
Shutdown *google_protobuf5.Duration `protobuf:"bytes,3,opt,name=shutdown" json:"shutdown,omitempty"`
}
func (m *CommandTask_Timeouts) Reset() { *m = CommandTask_Timeouts{} }
func (m *CommandTask_Timeouts) String() string { return proto.CompactTextString(m) }
func (*CommandTask_Timeouts) ProtoMessage() {}
func (*CommandTask_Timeouts) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0, 2} }
func (m *CommandTask_Timeouts) GetExecution() *google_protobuf5.Duration {
if m != nil {
return m.Execution
}
return nil
}
func (m *CommandTask_Timeouts) GetIdle() *google_protobuf5.Duration {
if m != nil {
return m.Idle
}
return nil
}
func (m *CommandTask_Timeouts) GetShutdown() *google_protobuf5.Duration {
if m != nil {
return m.Shutdown
}
return nil
}
// Describes the actual outputs from the task.
type CommandOutputs struct {
// exit_code is only fully reliable if the status' code is OK. If the task
// exceeded its deadline or was cancelled, the process may still produce an
// exit code as it is cancelled, and this will be populated, but a successful
// (zero) is unlikely to be correct unless the status code is OK.
ExitCode int32 `protobuf:"varint,1,opt,name=exit_code,json=exitCode" json:"exit_code,omitempty"`
// The output files. The blob referenced by the digest should contain
// one of the following (implementation-dependent):
// * A marshalled DirectoryMetadata of the returned filesystem
// * A LUCI-style .isolated file
Outputs *Digest `protobuf:"bytes,2,opt,name=outputs" json:"outputs,omitempty"`
}
func (m *CommandOutputs) Reset() { *m = CommandOutputs{} }
func (m *CommandOutputs) String() string { return proto.CompactTextString(m) }
func (*CommandOutputs) ProtoMessage() {}
func (*CommandOutputs) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} }
func (m *CommandOutputs) GetExitCode() int32 {
if m != nil {
return m.ExitCode
}
return 0
}
func (m *CommandOutputs) GetOutputs() *Digest {
if m != nil {
return m.Outputs
}
return nil
}
// Can be used as part of CompleteRequest.metadata, or are part of a more
// sophisticated message.
type CommandOverhead struct {
// The elapsed time between calling Accept and Complete. The server will also
// have its own idea of what this should be, but this excludes the overhead of
// the RPCs and the bot response time.
Duration *google_protobuf5.Duration `protobuf:"bytes,1,opt,name=duration" json:"duration,omitempty"`
// The amount of time *not* spent executing the command (ie
// uploading/downloading files).
Overhead *google_protobuf5.Duration `protobuf:"bytes,2,opt,name=overhead" json:"overhead,omitempty"`
}
func (m *CommandOverhead) Reset() { *m = CommandOverhead{} }
func (m *CommandOverhead) String() string { return proto.CompactTextString(m) }
func (*CommandOverhead) ProtoMessage() {}
func (*CommandOverhead) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} }
func (m *CommandOverhead) GetDuration() *google_protobuf5.Duration {
if m != nil {
return m.Duration
}
return nil
}
func (m *CommandOverhead) GetOverhead() *google_protobuf5.Duration {
if m != nil {
return m.Overhead
}
return nil
}
// The metadata for a file. Similar to the equivalent message in the Remote
// Execution API.
type FileMetadata struct {
// The path of this file. If this message is part of the
// CommandResult.output_files fields, the path is relative to the execution
// root and must correspond to an entry in CommandTask.outputs.files. If this
// message is part of a Directory message, then the path is relative to the
// root of that directory.
Path string `protobuf:"bytes,1,opt,name=path" json:"path,omitempty"`
// A pointer to the contents of the file. The method by which a client
// retrieves the contents from a CAS system is not defined here.
Digest *Digest `protobuf:"bytes,2,opt,name=digest" json:"digest,omitempty"`
// If the file is small enough, its contents may also or alternatively be
// listed here.
Contents []byte `protobuf:"bytes,3,opt,name=contents,proto3" json:"contents,omitempty"`
// Properties of the file
IsExecutable bool `protobuf:"varint,4,opt,name=is_executable,json=isExecutable" json:"is_executable,omitempty"`
}
func (m *FileMetadata) Reset() { *m = FileMetadata{} }
func (m *FileMetadata) String() string { return proto.CompactTextString(m) }
func (*FileMetadata) ProtoMessage() {}
func (*FileMetadata) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} }
func (m *FileMetadata) GetPath() string {
if m != nil {
return m.Path
}
return ""
}
func (m *FileMetadata) GetDigest() *Digest {
if m != nil {
return m.Digest
}
return nil
}
func (m *FileMetadata) GetContents() []byte {
if m != nil {
return m.Contents
}
return nil
}
func (m *FileMetadata) GetIsExecutable() bool {
if m != nil {
return m.IsExecutable
}
return false
}
// The metadata for a directory. Similar to the equivalent message in the Remote
// Execution API.
type DirectoryMetadata struct {
// The path of the directory, as in [FileMetadata.path][google.devtools.remoteworkers.v1test2.FileMetadata.path].
Path string `protobuf:"bytes,1,opt,name=path" json:"path,omitempty"`
// A pointer to the contents of the directory, in the form of a marshalled
// Directory message.
Digest *Digest `protobuf:"bytes,2,opt,name=digest" json:"digest,omitempty"`
}
func (m *DirectoryMetadata) Reset() { *m = DirectoryMetadata{} }
func (m *DirectoryMetadata) String() string { return proto.CompactTextString(m) }
func (*DirectoryMetadata) ProtoMessage() {}
func (*DirectoryMetadata) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} }
func (m *DirectoryMetadata) GetPath() string {
if m != nil {
return m.Path
}
return ""
}
func (m *DirectoryMetadata) GetDigest() *Digest {
if m != nil {
return m.Digest
}
return nil
}
// A reference to the contents of a file or a directory. If the latter, the has
// refers to the hash of a marshalled Directory message. Similar to the
// equivalent message in the Remote Execution API.
type Digest struct {
// A string-encoded hash (eg "1a2b3c", not the byte array [0x1a, 0x2b, 0x3c])
// using an implementation-defined hash algorithm (eg SHA-256).
Hash string `protobuf:"bytes,1,opt,name=hash" json:"hash,omitempty"`
// The size of the contents. While this is not strictly required as part of an
// identifier (after all, any given hash will have exactly one canonical
// size), it's useful in almost all cases when one might want to send or
// retrieve blobs of content and is included here for this reason.
SizeBytes int64 `protobuf:"varint,2,opt,name=size_bytes,json=sizeBytes" json:"size_bytes,omitempty"`
}
func (m *Digest) Reset() { *m = Digest{} }
func (m *Digest) String() string { return proto.CompactTextString(m) }
func (*Digest) ProtoMessage() {}
func (*Digest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} }
func (m *Digest) GetHash() string {
if m != nil {
return m.Hash
}
return ""
}
func (m *Digest) GetSizeBytes() int64 {
if m != nil {
return m.SizeBytes
}
return 0
}
// The contents of a directory. Similar to the equivalent message in the Remote
// Execution API.
type Directory struct {
// The files in this directory
Files []*FileMetadata `protobuf:"bytes,1,rep,name=files" json:"files,omitempty"`
// Any subdirectories
Directories []*DirectoryMetadata `protobuf:"bytes,2,rep,name=directories" json:"directories,omitempty"`
}
func (m *Directory) Reset() { *m = Directory{} }
func (m *Directory) String() string { return proto.CompactTextString(m) }
func (*Directory) ProtoMessage() {}
func (*Directory) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{6} }
func (m *Directory) GetFiles() []*FileMetadata {
if m != nil {
return m.Files
}
return nil
}
func (m *Directory) GetDirectories() []*DirectoryMetadata {
if m != nil {
return m.Directories
}
return nil
}
func init() {
proto.RegisterType((*CommandTask)(nil), "google.devtools.remoteworkers.v1test2.CommandTask")
proto.RegisterType((*CommandTask_Inputs)(nil), "google.devtools.remoteworkers.v1test2.CommandTask.Inputs")
proto.RegisterType((*CommandTask_Inputs_EnvironmentVariable)(nil), "google.devtools.remoteworkers.v1test2.CommandTask.Inputs.EnvironmentVariable")
proto.RegisterType((*CommandTask_Outputs)(nil), "google.devtools.remoteworkers.v1test2.CommandTask.Outputs")
proto.RegisterType((*CommandTask_Timeouts)(nil), "google.devtools.remoteworkers.v1test2.CommandTask.Timeouts")
proto.RegisterType((*CommandOutputs)(nil), "google.devtools.remoteworkers.v1test2.CommandOutputs")
proto.RegisterType((*CommandOverhead)(nil), "google.devtools.remoteworkers.v1test2.CommandOverhead")
proto.RegisterType((*FileMetadata)(nil), "google.devtools.remoteworkers.v1test2.FileMetadata")
proto.RegisterType((*DirectoryMetadata)(nil), "google.devtools.remoteworkers.v1test2.DirectoryMetadata")
proto.RegisterType((*Digest)(nil), "google.devtools.remoteworkers.v1test2.Digest")
proto.RegisterType((*Directory)(nil), "google.devtools.remoteworkers.v1test2.Directory")
}
func init() {
proto.RegisterFile("google/devtools/remoteworkers/v1test2/command.proto", fileDescriptor1)
}
var fileDescriptor1 = []byte{
// 665 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x95, 0xcb, 0x6e, 0x13, 0x49,
0x14, 0x86, 0xe5, 0x38, 0x76, 0xec, 0xe3, 0xcc, 0x64, 0xa6, 0x26, 0x23, 0x19, 0x73, 0x51, 0x64,
0x84, 0x94, 0x4d, 0xba, 0x85, 0x23, 0xc4, 0x25, 0x0b, 0x44, 0x2e, 0xa0, 0x2c, 0x22, 0x44, 0x29,
0x02, 0x29, 0x1b, 0xab, 0xec, 0x3e, 0x69, 0x97, 0xd2, 0xee, 0xb2, 0xba, 0xaa, 0x3b, 0x09, 0x1b,
0x24, 0xde, 0x06, 0x76, 0xf0, 0x0a, 0xbc, 0x18, 0xaa, 0x5b, 0xc7, 0x21, 0x08, 0x1b, 0x2f, 0xd8,
0x55, 0x9f, 0xd4, 0xff, 0xd5, 0xb9, 0xfc, 0x27, 0x86, 0xed, 0x58, 0x88, 0x38, 0xc1, 0x30, 0xc2,
0x42, 0x09, 0x91, 0xc8, 0x30, 0xc3, 0xb1, 0x50, 0x78, 0x2e, 0xb2, 0x33, 0xcc, 0x64, 0x58, 0x3c,
0x54, 0x28, 0x55, 0x2f, 0x1c, 0x8a, 0xf1, 0x98, 0xa5, 0x51, 0x30, 0xc9, 0x84, 0x12, 0xe4, 0x81,
0x15, 0x05, 0x5e, 0x14, 0x5c, 0x13, 0x05, 0x4e, 0xd4, 0xb9, 0xe7, 0xd8, 0x46, 0x34, 0xc8, 0x4f,
0xc3, 0x28, 0xcf, 0x98, 0xe2, 0x22, 0xb5, 0x98, 0xee, 0xb7, 0x3a, 0xb4, 0xf6, 0x2c, 0xf8, 0x98,
0xc9, 0x33, 0xf2, 0x06, 0xea, 0x3c, 0x9d, 0xe4, 0x4a, 0xb6, 0x2b, 0x1b, 0x95, 0xcd, 0x56, 0xef,
0x69, 0x30, 0xd7, 0x3b, 0xc1, 0x14, 0x23, 0x38, 0x34, 0x00, 0xea, 0x40, 0x04, 0xe1, 0x1f, 0xbc,
0x98, 0xe0, 0x50, 0x61, 0xd4, 0x17, 0xb9, 0x32, 0xf0, 0x65, 0x03, 0x7f, 0xb6, 0x00, 0xfc, 0xb5,
0x25, 0xd0, 0x35, 0xcf, 0x74, 0x01, 0xf2, 0x0e, 0x1a, 0x8a, 0x8f, 0x51, 0x68, 0x7c, 0xcd, 0xe0,
0x77, 0x16, 0xc0, 0x1f, 0x3b, 0x04, 0x2d, 0x61, 0x9d, 0x2f, 0x4b, 0x50, 0xb7, 0x25, 0x91, 0x3b,
0xd0, 0x64, 0x59, 0x9c, 0x8f, 0x31, 0x35, 0x0d, 0xaa, 0x6e, 0x36, 0xe9, 0x55, 0x80, 0xec, 0x41,
0xed, 0x94, 0x27, 0x28, 0xdb, 0x4b, 0x1b, 0xd5, 0xcd, 0x56, 0x6f, 0x6b, 0xce, 0xe7, 0xf7, 0x79,
0x8c, 0x52, 0x51, 0xab, 0x25, 0x1f, 0x2b, 0xf0, 0x3f, 0xa6, 0x05, 0xcf, 0x44, 0xaa, 0xa9, 0xfd,
0x82, 0x65, 0x9c, 0x0d, 0x34, 0xb5, 0x6a, 0xa8, 0x47, 0x0b, 0x0f, 0x24, 0x38, 0xb8, 0xc2, 0xbe,
0x75, 0x54, 0xba, 0x8e, 0x37, 0x83, 0xb2, 0xf3, 0x1c, 0xfe, 0xfb, 0xc9, 0x65, 0x42, 0x60, 0x39,
0x65, 0x63, 0x34, 0xd6, 0x68, 0x52, 0x73, 0x26, 0xeb, 0x50, 0x2b, 0x58, 0x92, 0x63, 0x7b, 0xc9,
0x04, 0xed, 0x47, 0xe7, 0x05, 0xac, 0xf8, 0xb9, 0xac, 0xfb, 0xae, 0xd8, 0x7e, 0xb9, 0x32, 0x37,
0xa0, 0x15, 0xf1, 0x0c, 0x87, 0x4a, 0x64, 0xdc, 0x75, 0xac, 0x49, 0xa7, 0x43, 0x9d, 0x4f, 0x15,
0x68, 0xf8, 0x69, 0x90, 0xc7, 0xd0, 0xc4, 0x0b, 0x1c, 0xe6, 0xda, 0xb9, 0xce, 0x99, 0xb7, 0x7c,
0x23, 0xbc, 0xb5, 0x83, 0x7d, 0x67, 0x6d, 0x7a, 0x75, 0x97, 0x6c, 0xc1, 0x32, 0x8f, 0x12, 0x9b,
0xdd, 0x2f, 0x35, 0xe6, 0x1a, 0x79, 0x04, 0x0d, 0x39, 0xca, 0x55, 0x24, 0xce, 0xd3, 0x76, 0x75,
0x96, 0xa4, 0xbc, 0xda, 0x2d, 0xe0, 0x6f, 0xd7, 0x6f, 0x5f, 0xf5, 0x6d, 0x9d, 0x30, 0x57, 0xfd,
0xa1, 0x88, 0x6c, 0xbf, 0x6a, 0xb4, 0xa1, 0x03, 0x7b, 0x22, 0x42, 0xf2, 0x0a, 0x56, 0xfc, 0x22,
0xd8, 0xbc, 0x7e, 0xd3, 0x2a, 0x5e, 0xdd, 0xfd, 0x00, 0x6b, 0xfe, 0xdd, 0x02, 0xb3, 0x11, 0xb2,
0x48, 0x57, 0xe0, 0x57, 0x7c, 0x76, 0xa3, 0xca, 0xab, 0x5a, 0x26, 0x1c, 0x62, 0x76, 0xaf, 0xca,
0xab, 0xdd, 0xcf, 0x15, 0x58, 0x7d, 0xc9, 0x13, 0x3c, 0x42, 0xc5, 0x22, 0xa6, 0x98, 0xb6, 0xc8,
0x84, 0xa9, 0x91, 0xb7, 0x88, 0x3e, 0x93, 0x03, 0xa8, 0x47, 0x26, 0xf1, 0xc5, 0xaa, 0x75, 0x62,
0xd2, 0x81, 0xc6, 0x50, 0xa4, 0xca, 0xec, 0x9e, 0x9e, 0xcd, 0x2a, 0x2d, 0xbf, 0xc9, 0x7d, 0xf8,
0x8b, 0xcb, 0xbe, 0x1d, 0xbb, 0xb6, 0xaa, 0xf9, 0x07, 0xd3, 0xa0, 0xab, 0x5c, 0x1e, 0x94, 0xb1,
0x6e, 0x0a, 0xff, 0xee, 0x3b, 0x83, 0x5d, 0xfe, 0x81, 0x84, 0xbb, 0x3b, 0x50, 0xb7, 0x11, 0xfd,
0xc8, 0x88, 0xc9, 0xf2, 0x11, 0x7d, 0x26, 0x77, 0x01, 0x24, 0x7f, 0x8f, 0xfd, 0xc1, 0xa5, 0x42,
0xeb, 0x83, 0x2a, 0x6d, 0xea, 0xc8, 0xae, 0x0e, 0x74, 0xbf, 0x56, 0xa0, 0x59, 0x66, 0x4b, 0x0e,
0xa7, 0x97, 0xa8, 0xd5, 0xdb, 0x9e, 0x33, 0xa1, 0xe9, 0xd1, 0xf8, 0xcd, 0x3b, 0xb9, 0xb9, 0x79,
0xad, 0xde, 0x93, 0xb9, 0x2b, 0xfc, 0xa1, 0x7f, 0xd7, 0x76, 0x76, 0xf7, 0xf8, 0x84, 0x3a, 0x4e,
0x2c, 0x12, 0x96, 0xc6, 0x81, 0xc8, 0xe2, 0x30, 0xc6, 0xd4, 0x58, 0x28, 0xb4, 0x7f, 0x62, 0x13,
0x2e, 0x67, 0xfc, 0xd4, 0xed, 0x5c, 0x8b, 0x0e, 0xea, 0x46, 0xbe, 0xfd, 0x3d, 0x00, 0x00, 0xff,
0xff, 0x1c, 0x77, 0x2c, 0xa3, 0x28, 0x07, 0x00, 0x00,
}

View File

@ -0,0 +1,456 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: google/devtools/remoteworkers/v1test2/tasks.proto
package remoteworkers
import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
import _ "google.golang.org/genproto/googleapis/api/annotations"
import google_protobuf1 "github.com/golang/protobuf/ptypes/any"
import google_protobuf3 "google.golang.org/genproto/protobuf/field_mask"
import google_rpc "google.golang.org/genproto/googleapis/rpc/status"
import (
context "golang.org/x/net/context"
grpc "google.golang.org/grpc"
)
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// A Task represents a unit of work. Its result and logs are defined as
// subresources.
//
// If all the `Any` fields are populated, this can be a very large message, and
// clients may not want the entire message returned on every call to every
// method. Such clients should request partial responses
// (https://cloud.google.com/apis/design/design_patterns#partial_response) and
// servers should implement partial responses in order to reduce unnecessry
// overhead.
type Task struct {
// The name of this task. Output only.
Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
// The actual task to perform. For example, this could be CommandTask to run a
// command line.
Description *google_protobuf1.Any `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"`
// Handles to logs. The key is a human-readable name like `stdout`, and the
// handle is a resource name that can be passed to ByteStream or other
// accessors.
//
// An implementation may define some logs by default (like `stdout`), and may
// allow clients to add new logs via AddTaskLog.
Logs map[string]string `protobuf:"bytes,3,rep,name=logs" json:"logs,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
}
func (m *Task) Reset() { *m = Task{} }
func (m *Task) String() string { return proto.CompactTextString(m) }
func (*Task) ProtoMessage() {}
func (*Task) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0} }
func (m *Task) GetName() string {
if m != nil {
return m.Name
}
return ""
}
func (m *Task) GetDescription() *google_protobuf1.Any {
if m != nil {
return m.Description
}
return nil
}
func (m *Task) GetLogs() map[string]string {
if m != nil {
return m.Logs
}
return nil
}
// The result and metadata of the task.
type TaskResult struct {
// The name of the task result; must be a name of a `Task` followed by
// `/result`.
Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
// The result may be updated several times; the client must only set
// `complete` to true to indicate that no further updates are allowed.
// If this is not true, the `status` field must not be examined since its zero
// value is equivalent to `OK`.
//
// Once a task is completed, it must not be updated with further results,
// though the implementation may choose to continue to receive logs.
Complete bool `protobuf:"varint,2,opt,name=complete" json:"complete,omitempty"`
// The final status of the task itself. For example, if task.description
// included a timeout which was violated, status.code may be
// DEADLINE_EXCEEDED. This field can only be read if `complete` is true.
Status *google_rpc.Status `protobuf:"bytes,3,opt,name=status" json:"status,omitempty"`
// Any non-log output, such as output files and exit codes. See
// CommandResult as an example.
Output *google_protobuf1.Any `protobuf:"bytes,4,opt,name=output" json:"output,omitempty"`
// Any information about how the command was executed, eg runtime. See
// CommandOverhead as an example.
Meta *google_protobuf1.Any `protobuf:"bytes,5,opt,name=meta" json:"meta,omitempty"`
}
func (m *TaskResult) Reset() { *m = TaskResult{} }
func (m *TaskResult) String() string { return proto.CompactTextString(m) }
func (*TaskResult) ProtoMessage() {}
func (*TaskResult) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{1} }
func (m *TaskResult) GetName() string {
if m != nil {
return m.Name
}
return ""
}
func (m *TaskResult) GetComplete() bool {
if m != nil {
return m.Complete
}
return false
}
func (m *TaskResult) GetStatus() *google_rpc.Status {
if m != nil {
return m.Status
}
return nil
}
func (m *TaskResult) GetOutput() *google_protobuf1.Any {
if m != nil {
return m.Output
}
return nil
}
func (m *TaskResult) GetMeta() *google_protobuf1.Any {
if m != nil {
return m.Meta
}
return nil
}
// Request message for `GetTask`.
type GetTaskRequest struct {
// The task name.
Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
}
func (m *GetTaskRequest) Reset() { *m = GetTaskRequest{} }
func (m *GetTaskRequest) String() string { return proto.CompactTextString(m) }
func (*GetTaskRequest) ProtoMessage() {}
func (*GetTaskRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{2} }
func (m *GetTaskRequest) GetName() string {
if m != nil {
return m.Name
}
return ""
}
// Request message for `UpdateTaskResult`.
type UpdateTaskResultRequest struct {
// The task result name; must match `result.name`.
Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
// The result being updated.
Result *TaskResult `protobuf:"bytes,2,opt,name=result" json:"result,omitempty"`
// The fields within `result` that are specified.
UpdateMask *google_protobuf3.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"`
// If this is being updated by a bot from BotManager, the source should be
// bot.session_id. That way, if two bots accidentally get the same name, we'll
// know to reject updates from the older one.
Source string `protobuf:"bytes,4,opt,name=source" json:"source,omitempty"`
}
func (m *UpdateTaskResultRequest) Reset() { *m = UpdateTaskResultRequest{} }
func (m *UpdateTaskResultRequest) String() string { return proto.CompactTextString(m) }
func (*UpdateTaskResultRequest) ProtoMessage() {}
func (*UpdateTaskResultRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{3} }
func (m *UpdateTaskResultRequest) GetName() string {
if m != nil {
return m.Name
}
return ""
}
func (m *UpdateTaskResultRequest) GetResult() *TaskResult {
if m != nil {
return m.Result
}
return nil
}
func (m *UpdateTaskResultRequest) GetUpdateMask() *google_protobuf3.FieldMask {
if m != nil {
return m.UpdateMask
}
return nil
}
func (m *UpdateTaskResultRequest) GetSource() string {
if m != nil {
return m.Source
}
return ""
}
// Request message for `AddTaskLog`.
type AddTaskLogRequest struct {
// The name of the task that will own the new log.
Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
// The human-readable name of the log, like `stdout` or a relative file path.
LogId string `protobuf:"bytes,2,opt,name=log_id,json=logId" json:"log_id,omitempty"`
}
func (m *AddTaskLogRequest) Reset() { *m = AddTaskLogRequest{} }
func (m *AddTaskLogRequest) String() string { return proto.CompactTextString(m) }
func (*AddTaskLogRequest) ProtoMessage() {}
func (*AddTaskLogRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{4} }
func (m *AddTaskLogRequest) GetName() string {
if m != nil {
return m.Name
}
return ""
}
func (m *AddTaskLogRequest) GetLogId() string {
if m != nil {
return m.LogId
}
return ""
}
// Response message for `AddTaskLog`.
type AddTaskLogResponse struct {
// The handle for the new log, as would be returned in Task.logs.
Handle string `protobuf:"bytes,1,opt,name=handle" json:"handle,omitempty"`
}
func (m *AddTaskLogResponse) Reset() { *m = AddTaskLogResponse{} }
func (m *AddTaskLogResponse) String() string { return proto.CompactTextString(m) }
func (*AddTaskLogResponse) ProtoMessage() {}
func (*AddTaskLogResponse) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{5} }
func (m *AddTaskLogResponse) GetHandle() string {
if m != nil {
return m.Handle
}
return ""
}
func init() {
proto.RegisterType((*Task)(nil), "google.devtools.remoteworkers.v1test2.Task")
proto.RegisterType((*TaskResult)(nil), "google.devtools.remoteworkers.v1test2.TaskResult")
proto.RegisterType((*GetTaskRequest)(nil), "google.devtools.remoteworkers.v1test2.GetTaskRequest")
proto.RegisterType((*UpdateTaskResultRequest)(nil), "google.devtools.remoteworkers.v1test2.UpdateTaskResultRequest")
proto.RegisterType((*AddTaskLogRequest)(nil), "google.devtools.remoteworkers.v1test2.AddTaskLogRequest")
proto.RegisterType((*AddTaskLogResponse)(nil), "google.devtools.remoteworkers.v1test2.AddTaskLogResponse")
}
// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConn
// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion4
// Client API for Tasks service
type TasksClient interface {
// GetTask reads the current state of the task. Tasks must be created through
// some other interface, and should be immutable once created and exposed to
// the bots.
GetTask(ctx context.Context, in *GetTaskRequest, opts ...grpc.CallOption) (*Task, error)
// UpdateTaskResult updates the result.
UpdateTaskResult(ctx context.Context, in *UpdateTaskResultRequest, opts ...grpc.CallOption) (*TaskResult, error)
// AddTaskLog creates a new streaming log. The log is streamed and marked as
// completed through other interfaces (i.e., ByteStream). This can be called
// by the bot if it wants to create a new log; the server can also predefine
// logs that do not need to be created (e.g. `stdout`).
AddTaskLog(ctx context.Context, in *AddTaskLogRequest, opts ...grpc.CallOption) (*AddTaskLogResponse, error)
}
type tasksClient struct {
cc *grpc.ClientConn
}
func NewTasksClient(cc *grpc.ClientConn) TasksClient {
return &tasksClient{cc}
}
func (c *tasksClient) GetTask(ctx context.Context, in *GetTaskRequest, opts ...grpc.CallOption) (*Task, error) {
out := new(Task)
err := grpc.Invoke(ctx, "/google.devtools.remoteworkers.v1test2.Tasks/GetTask", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *tasksClient) UpdateTaskResult(ctx context.Context, in *UpdateTaskResultRequest, opts ...grpc.CallOption) (*TaskResult, error) {
out := new(TaskResult)
err := grpc.Invoke(ctx, "/google.devtools.remoteworkers.v1test2.Tasks/UpdateTaskResult", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *tasksClient) AddTaskLog(ctx context.Context, in *AddTaskLogRequest, opts ...grpc.CallOption) (*AddTaskLogResponse, error) {
out := new(AddTaskLogResponse)
err := grpc.Invoke(ctx, "/google.devtools.remoteworkers.v1test2.Tasks/AddTaskLog", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// Server API for Tasks service
type TasksServer interface {
// GetTask reads the current state of the task. Tasks must be created through
// some other interface, and should be immutable once created and exposed to
// the bots.
GetTask(context.Context, *GetTaskRequest) (*Task, error)
// UpdateTaskResult updates the result.
UpdateTaskResult(context.Context, *UpdateTaskResultRequest) (*TaskResult, error)
// AddTaskLog creates a new streaming log. The log is streamed and marked as
// completed through other interfaces (i.e., ByteStream). This can be called
// by the bot if it wants to create a new log; the server can also predefine
// logs that do not need to be created (e.g. `stdout`).
AddTaskLog(context.Context, *AddTaskLogRequest) (*AddTaskLogResponse, error)
}
func RegisterTasksServer(s *grpc.Server, srv TasksServer) {
s.RegisterService(&_Tasks_serviceDesc, srv)
}
func _Tasks_GetTask_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetTaskRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(TasksServer).GetTask(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.devtools.remoteworkers.v1test2.Tasks/GetTask",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(TasksServer).GetTask(ctx, req.(*GetTaskRequest))
}
return interceptor(ctx, in, info, handler)
}
func _Tasks_UpdateTaskResult_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(UpdateTaskResultRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(TasksServer).UpdateTaskResult(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.devtools.remoteworkers.v1test2.Tasks/UpdateTaskResult",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(TasksServer).UpdateTaskResult(ctx, req.(*UpdateTaskResultRequest))
}
return interceptor(ctx, in, info, handler)
}
func _Tasks_AddTaskLog_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(AddTaskLogRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(TasksServer).AddTaskLog(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.devtools.remoteworkers.v1test2.Tasks/AddTaskLog",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(TasksServer).AddTaskLog(ctx, req.(*AddTaskLogRequest))
}
return interceptor(ctx, in, info, handler)
}
var _Tasks_serviceDesc = grpc.ServiceDesc{
ServiceName: "google.devtools.remoteworkers.v1test2.Tasks",
HandlerType: (*TasksServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "GetTask",
Handler: _Tasks_GetTask_Handler,
},
{
MethodName: "UpdateTaskResult",
Handler: _Tasks_UpdateTaskResult_Handler,
},
{
MethodName: "AddTaskLog",
Handler: _Tasks_AddTaskLog_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "google/devtools/remoteworkers/v1test2/tasks.proto",
}
func init() { proto.RegisterFile("google/devtools/remoteworkers/v1test2/tasks.proto", fileDescriptor2) }
var fileDescriptor2 = []byte{
// 634 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x54, 0xc1, 0x6e, 0xd3, 0x40,
0x10, 0x95, 0x13, 0xc7, 0x34, 0x13, 0x09, 0x95, 0x55, 0xa1, 0xc6, 0xea, 0x21, 0x58, 0x80, 0xa2,
0x34, 0xb2, 0x95, 0x20, 0xa0, 0xa4, 0xa2, 0x52, 0x91, 0x00, 0x45, 0x0a, 0x17, 0x53, 0x2e, 0x5c,
0xaa, 0x6d, 0xbc, 0x5d, 0xac, 0x38, 0x5e, 0xe3, 0x5d, 0x07, 0x45, 0x28, 0x17, 0x4e, 0x5c, 0x11,
0x1f, 0xc2, 0x95, 0x23, 0x3f, 0xc0, 0x09, 0x89, 0x2f, 0xe0, 0x43, 0x90, 0xd7, 0xeb, 0xb4, 0x69,
0x9b, 0x90, 0x70, 0xf3, 0x78, 0xde, 0x9b, 0x99, 0x37, 0x6f, 0xb4, 0xd0, 0xa6, 0x8c, 0xd1, 0x90,
0xb8, 0x3e, 0x19, 0x0b, 0xc6, 0x42, 0xee, 0x26, 0x64, 0xc4, 0x04, 0xf9, 0xc0, 0x92, 0x21, 0x49,
0xb8, 0x3b, 0x6e, 0x0b, 0xc2, 0x45, 0xc7, 0x15, 0x98, 0x0f, 0xb9, 0x13, 0x27, 0x4c, 0x30, 0x74,
0x2f, 0xa7, 0x38, 0x05, 0xc5, 0x99, 0xa3, 0x38, 0x8a, 0x62, 0xed, 0xa8, 0xca, 0x38, 0x0e, 0x5c,
0x1c, 0x45, 0x4c, 0x60, 0x11, 0xb0, 0x48, 0x15, 0xb1, 0x6e, 0xab, 0xac, 0x8c, 0x4e, 0xd2, 0x53,
0x17, 0x47, 0x13, 0x95, 0xaa, 0x5f, 0x4c, 0x9d, 0x06, 0x24, 0xf4, 0x8f, 0x47, 0x98, 0x0f, 0x15,
0x62, 0x5b, 0x21, 0x92, 0x78, 0xe0, 0x72, 0x81, 0x45, 0xaa, 0xaa, 0xda, 0xbf, 0x35, 0xd0, 0x8f,
0x30, 0x1f, 0x22, 0x04, 0x7a, 0x84, 0x47, 0xc4, 0xd4, 0xea, 0x5a, 0xa3, 0xea, 0xc9, 0x6f, 0xf4,
0x08, 0x6a, 0x3e, 0xe1, 0x83, 0x24, 0x88, 0xb3, 0x41, 0xcc, 0x52, 0x5d, 0x6b, 0xd4, 0x3a, 0x5b,
0x8e, 0x52, 0x53, 0x74, 0x73, 0x0e, 0xa3, 0x89, 0x77, 0x1e, 0x88, 0x7a, 0xa0, 0x87, 0x8c, 0x72,
0xb3, 0x5c, 0x2f, 0x37, 0x6a, 0x9d, 0x87, 0xce, 0x4a, 0xf2, 0x9d, 0x6c, 0x0c, 0xa7, 0xcf, 0x28,
0x7f, 0x1e, 0x89, 0x64, 0xe2, 0xc9, 0x12, 0xd6, 0x63, 0xa8, 0xce, 0x7e, 0xa1, 0x4d, 0x28, 0x0f,
0xc9, 0x44, 0x8d, 0x98, 0x7d, 0xa2, 0x2d, 0xa8, 0x8c, 0x71, 0x98, 0x12, 0x39, 0x5b, 0xd5, 0xcb,
0x83, 0x6e, 0x69, 0x4f, 0xb3, 0x7f, 0x68, 0x00, 0x59, 0x45, 0x8f, 0xf0, 0x34, 0x14, 0x57, 0xca,
0xb3, 0x60, 0x63, 0xc0, 0x46, 0x71, 0x48, 0x44, 0xce, 0xdf, 0xf0, 0x66, 0x31, 0x6a, 0x82, 0x91,
0xef, 0xc9, 0x2c, 0x4b, 0xd5, 0xa8, 0x10, 0x91, 0xc4, 0x03, 0xe7, 0xb5, 0xcc, 0x78, 0x0a, 0x81,
0x5a, 0x60, 0xb0, 0x54, 0xc4, 0xa9, 0x30, 0xf5, 0x25, 0x1b, 0x52, 0x18, 0xd4, 0x00, 0x7d, 0x44,
0x04, 0x36, 0x2b, 0x4b, 0xb0, 0x12, 0x61, 0xdf, 0x85, 0xeb, 0x2f, 0x89, 0xc8, 0x45, 0xbc, 0x4f,
0x09, 0xbf, 0x52, 0x85, 0xfd, 0x53, 0x83, 0xed, 0x37, 0xb1, 0x8f, 0x05, 0x39, 0x93, 0xbb, 0x04,
0x8f, 0x7a, 0x60, 0x24, 0x12, 0xa4, 0xfc, 0x6c, 0xaf, 0x61, 0x8f, 0xaa, 0xae, 0x0a, 0xa0, 0x7d,
0xa8, 0xa5, 0xb2, 0xb3, 0x3c, 0x35, 0xb5, 0x29, 0xeb, 0x92, 0xa2, 0x17, 0xd9, 0x35, 0xbe, 0xca,
0xe8, 0x90, 0xc3, 0xb3, 0x6f, 0x74, 0x0b, 0x0c, 0xce, 0xd2, 0x64, 0x40, 0xe4, 0xd6, 0xaa, 0x9e,
0x8a, 0xec, 0x03, 0xb8, 0x71, 0xe8, 0xfb, 0x59, 0xb7, 0x3e, 0xa3, 0xcb, 0x84, 0xdc, 0x04, 0x23,
0x64, 0xf4, 0x38, 0xf0, 0x0b, 0xf3, 0x43, 0x46, 0x7b, 0xbe, 0xdd, 0x02, 0x74, 0x9e, 0xcf, 0x63,
0x16, 0x71, 0x92, 0x75, 0x7b, 0x87, 0x23, 0x3f, 0x2c, 0x4a, 0xa8, 0xa8, 0xf3, 0x59, 0x87, 0x4a,
0x86, 0xe5, 0xe8, 0x8b, 0x06, 0xd7, 0xd4, 0xba, 0xd1, 0xaa, 0x27, 0x3b, 0x6f, 0x8f, 0xb5, 0xbb,
0xc6, 0x2a, 0x6d, 0xfb, 0xd3, 0xaf, 0x3f, 0x5f, 0x4b, 0x3b, 0xc8, 0x9a, 0x3d, 0x19, 0x1f, 0x33,
0x59, 0x4f, 0x9b, 0xcd, 0xfc, 0xed, 0x70, 0x9b, 0x53, 0xf4, 0x5d, 0x83, 0xcd, 0x8b, 0xde, 0xa2,
0x83, 0x15, 0xbb, 0x2c, 0x38, 0x0a, 0x6b, 0x7d, 0xc3, 0xed, 0xb6, 0x9c, 0x75, 0xb7, 0x73, 0x67,
0xe1, 0xac, 0x6e, 0x7e, 0x12, 0xd3, 0x6e, 0x71, 0x1b, 0xdf, 0x34, 0x80, 0x33, 0x1f, 0xd0, 0xde,
0x8a, 0x4d, 0x2f, 0x59, 0x6f, 0x3d, 0xf9, 0x0f, 0x66, 0x6e, 0xba, 0xdd, 0x92, 0x63, 0xdf, 0xb7,
0x17, 0x8f, 0x3d, 0xed, 0x62, 0xdf, 0xef, 0x33, 0xda, 0xd5, 0x9a, 0xcf, 0x8e, 0xde, 0x7a, 0xaa,
0x13, 0x65, 0x21, 0x8e, 0xa8, 0xc3, 0x12, 0xea, 0x52, 0x12, 0xc9, 0x3b, 0x76, 0xf3, 0x14, 0x8e,
0x03, 0xfe, 0x8f, 0x97, 0x7f, 0x7f, 0xee, 0xef, 0x89, 0x21, 0xe9, 0x0f, 0xfe, 0x06, 0x00, 0x00,
0xff, 0xff, 0xb8, 0x8f, 0xed, 0xe0, 0x37, 0x06, 0x00, 0x00,
}

View File

@ -892,54 +892,55 @@ func init() {
func init() { proto.RegisterFile("google/devtools/source/v1/source_context.proto", fileDescriptor0) }
var fileDescriptor0 = []byte{
// 780 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x55, 0xcb, 0x4e, 0xdb, 0x4c,
0x14, 0x8e, 0xe3, 0x90, 0xe0, 0x13, 0x02, 0xd1, 0xfc, 0x7f, 0xab, 0x00, 0x45, 0x80, 0xa5, 0xaa,
0x48, 0x54, 0x8e, 0x92, 0x4a, 0x55, 0x4b, 0x2b, 0x51, 0x02, 0x29, 0x89, 0xa0, 0x01, 0x4d, 0x29,
0xbd, 0x6c, 0x22, 0x63, 0x8f, 0x8c, 0x8b, 0xf1, 0x58, 0xb6, 0x13, 0xe0, 0x25, 0xba, 0xe6, 0x19,
0xfa, 0x4c, 0x7d, 0x84, 0x2e, 0x2b, 0x75, 0x5b, 0xcd, 0xc5, 0x90, 0x84, 0x60, 0x90, 0xda, 0x95,
0x67, 0x8e, 0xbf, 0xef, 0x3b, 0x67, 0xce, 0x65, 0x06, 0x0c, 0x87, 0x52, 0xc7, 0x23, 0x55, 0x9b,
0xf4, 0x63, 0x4a, 0xbd, 0xa8, 0x1a, 0xd1, 0x5e, 0x68, 0x91, 0x6a, 0xbf, 0x26, 0x57, 0x5d, 0x8b,
0xfa, 0x31, 0x39, 0x8f, 0x8d, 0x20, 0xa4, 0x31, 0x45, 0xb3, 0x02, 0x6f, 0x24, 0x78, 0x43, 0xa0,
0x8c, 0x7e, 0x6d, 0xee, 0x91, 0x94, 0x32, 0x03, 0xb7, 0x6a, 0xfa, 0x3e, 0x8d, 0xcd, 0xd8, 0xa5,
0x7e, 0x24, 0x88, 0xfa, 0x8f, 0x2c, 0x94, 0xde, 0x73, 0xec, 0xa6, 0x10, 0x44, 0x18, 0xc0, 0xf2,
0x68, 0xcf, 0xee, 0x86, 0x24, 0xa0, 0x15, 0x65, 0x49, 0x59, 0x29, 0xd6, 0x6b, 0xc6, 0xad, 0xfa,
0xc6, 0x26, 0x03, 0x63, 0x12, 0xd0, 0x21, 0x99, 0x56, 0x06, 0x6b, 0x56, 0xf2, 0x07, 0x99, 0x30,
0x23, 0x34, 0xcf, 0x68, 0x78, 0x12, 0x05, 0xa6, 0x45, 0x2a, 0x59, 0x2e, 0xfc, 0xfc, 0x2e, 0xe1,
0x8f, 0x09, 0x61, 0x54, 0x7d, 0xda, 0x1a, 0xfa, 0x8d, 0x5a, 0x90, 0x77, 0x48, 0x18, 0xba, 0x71,
0x45, 0xe5, 0xca, 0x46, 0x8a, 0xf2, 0x36, 0x07, 0x8e, 0x2a, 0x4a, 0x3e, 0x5a, 0x07, 0xd5, 0x71,
0xe3, 0x4a, 0x9e, 0xcb, 0xac, 0xa6, 0xc9, 0xdc, 0xd4, 0x60, 0xcc, 0x86, 0x06, 0x05, 0x59, 0x1d,
0xfd, 0xa7, 0x02, 0x0f, 0x9a, 0xe7, 0x31, 0xf1, 0x6d, 0x62, 0x0f, 0xa7, 0xb9, 0x71, 0x05, 0x92,
0x39, 0x5e, 0x49, 0xf1, 0x34, 0x44, 0xc5, 0x09, 0x11, 0x1d, 0x40, 0xde, 0x33, 0x8f, 0x88, 0x17,
0x55, 0xb2, 0x4b, 0xea, 0x4a, 0xb1, 0xfe, 0x3a, 0x45, 0x62, 0x6c, 0x14, 0xc6, 0x2e, 0xa7, 0x37,
0xfd, 0x38, 0xbc, 0xc0, 0x52, 0x6b, 0xee, 0x25, 0x14, 0x07, 0xcc, 0xa8, 0x0c, 0xea, 0x09, 0xb9,
0xe0, 0x41, 0x6a, 0x98, 0x2d, 0xd1, 0xff, 0x30, 0xd1, 0x37, 0xbd, 0x9e, 0xa8, 0xa1, 0x86, 0xc5,
0x66, 0x2d, 0xfb, 0x42, 0xd1, 0x2f, 0x15, 0x98, 0xda, 0xf0, 0x5c, 0x33, 0x4a, 0x4e, 0xf9, 0x06,
0x72, 0x27, 0xae, 0x6f, 0x73, 0xf6, 0x74, 0xfd, 0x69, 0x4a, 0x7c, 0x83, 0x34, 0x63, 0xc7, 0xf5,
0x6d, 0xcc, 0x99, 0x08, 0x41, 0xce, 0x37, 0x4f, 0x13, 0x5f, 0x7c, 0xad, 0xd7, 0x21, 0xc7, 0x10,
0xa8, 0x00, 0xea, 0x46, 0xe7, 0x73, 0x39, 0x83, 0x34, 0x98, 0x78, 0xdb, 0xfe, 0xd4, 0xdc, 0x2a,
0x2b, 0xa8, 0x08, 0x85, 0x77, 0x7b, 0x87, 0x1b, 0x8d, 0xdd, 0x66, 0x39, 0xcb, 0xec, 0x7b, 0x07,
0xad, 0x26, 0x2e, 0xe7, 0xf4, 0x5f, 0x0a, 0x3c, 0x1c, 0xdf, 0xaa, 0x68, 0x0d, 0x0a, 0xac, 0xd7,
0xbb, 0xae, 0x2d, 0x4b, 0xb1, 0x9c, 0x12, 0x27, 0xa3, 0xb7, 0x6d, 0x9c, 0x0f, 0xf9, 0x17, 0x2d,
0x43, 0x31, 0x24, 0x7d, 0x37, 0x72, 0xa9, 0xcf, 0xf8, 0x3c, 0xca, 0x56, 0x06, 0x43, 0x62, 0x6c,
0xdb, 0x68, 0x11, 0xc0, 0x64, 0x87, 0xeb, 0xf2, 0x73, 0xa8, 0x12, 0xa1, 0x71, 0x5b, 0xc7, 0x3c,
0x25, 0xa8, 0x03, 0x25, 0x01, 0x48, 0x1a, 0x22, 0xc7, 0xa3, 0x78, 0x72, 0xcf, 0x6c, 0xb5, 0x32,
0x78, 0xca, 0x1c, 0xd8, 0x37, 0x00, 0x26, 0x13, 0xf7, 0xfa, 0x37, 0x05, 0xe6, 0x53, 0x06, 0x09,
0x75, 0x60, 0xea, 0x6a, 0x26, 0xaf, 0x13, 0xb0, 0x7a, 0xef, 0xb1, 0x6c, 0xdb, 0xb8, 0x78, 0x76,
0xbd, 0x41, 0x8b, 0x50, 0x8c, 0x7c, 0x33, 0x88, 0x8e, 0x69, 0x7c, 0x95, 0x0f, 0x0c, 0x89, 0xa9,
0x6d, 0xeb, 0xbf, 0x15, 0xf8, 0x6f, 0xcc, 0xfc, 0xa1, 0x59, 0x98, 0x3c, 0xa6, 0x51, 0xdc, 0xed,
0x85, 0xae, 0xec, 0xb5, 0x02, 0xdb, 0x7f, 0x08, 0x5d, 0xf4, 0x18, 0xa6, 0xc5, 0x68, 0x76, 0x83,
0x90, 0x7e, 0x25, 0x56, 0x2c, 0x65, 0x4b, 0xc2, 0xba, 0x2f, 0x8c, 0xa3, 0xa5, 0x50, 0xef, 0x2c,
0x45, 0xee, 0x1e, 0xa5, 0x98, 0xf8, 0x77, 0xa5, 0x68, 0x42, 0x79, 0xf4, 0xc6, 0x60, 0xc3, 0xd5,
0x0b, 0xbd, 0x64, 0xb8, 0x7a, 0xa1, 0xc7, 0x12, 0x78, 0xa3, 0xa1, 0x06, 0xcf, 0xa0, 0xf7, 0x21,
0x2f, 0x7a, 0x10, 0x61, 0x98, 0x91, 0x09, 0xe9, 0x0e, 0xf7, 0x6f, 0xda, 0x55, 0x22, 0xb3, 0x25,
0x24, 0x5a, 0x19, 0x5c, 0x0a, 0x06, 0x0d, 0x08, 0x81, 0xda, 0x1b, 0xe8, 0x63, 0xb6, 0x69, 0xe4,
0x20, 0xeb, 0xda, 0xfa, 0x0e, 0x94, 0x86, 0xb8, 0x68, 0x01, 0x20, 0x71, 0x2f, 0x3d, 0x6b, 0x58,
0x93, 0x96, 0xb6, 0x8d, 0xe6, 0x41, 0xe3, 0x51, 0x0d, 0x4c, 0xef, 0x24, 0x33, 0xb0, 0x3c, 0xeb,
0x47, 0x50, 0x1e, 0xed, 0xa3, 0xbf, 0x1a, 0xc3, 0x31, 0xb7, 0x44, 0xe3, 0x52, 0x81, 0x05, 0x8b,
0x9e, 0xde, 0x2e, 0xd2, 0x40, 0x43, 0xc5, 0xd8, 0x67, 0x0f, 0xe2, 0xbe, 0xf2, 0x65, 0x5d, 0x12,
0x1c, 0xea, 0x99, 0xbe, 0x63, 0xd0, 0xd0, 0xa9, 0x3a, 0xc4, 0xe7, 0xcf, 0x65, 0x55, 0xfc, 0x32,
0x03, 0x37, 0x1a, 0xf3, 0x34, 0xbf, 0x12, 0xab, 0xef, 0xd9, 0xc5, 0x6d, 0xa1, 0xc0, 0x8f, 0x68,
0x6c, 0x91, 0xfe, 0x01, 0x77, 0x2c, 0xbc, 0x19, 0x87, 0xb5, 0xa3, 0x3c, 0x57, 0x7b, 0xf6, 0x27,
0x00, 0x00, 0xff, 0xff, 0x9e, 0xd0, 0x5c, 0x10, 0xe7, 0x07, 0x00, 0x00,
// 800 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x55, 0xdd, 0x4e, 0xdb, 0x48,
0x14, 0x8e, 0xe3, 0x90, 0xe0, 0x13, 0x02, 0xd1, 0xec, 0x8f, 0x02, 0x2c, 0x02, 0x2c, 0xad, 0x16,
0x89, 0x95, 0xa3, 0x64, 0xa5, 0xd5, 0x2e, 0xad, 0x44, 0x09, 0xa4, 0x24, 0x82, 0x06, 0x34, 0xa5,
0xf4, 0x47, 0x91, 0x22, 0x63, 0x8f, 0x8c, 0x8b, 0xf1, 0x58, 0xb6, 0x13, 0xe0, 0x25, 0x7a, 0xdd,
0x67, 0xe8, 0x23, 0xf4, 0x11, 0xfa, 0x0c, 0x7d, 0x84, 0x5e, 0x56, 0xea, 0x6d, 0x35, 0x3f, 0x86,
0x24, 0x04, 0x83, 0xd4, 0x5e, 0x79, 0xe6, 0xf8, 0xfb, 0xbe, 0x73, 0xe6, 0xfc, 0xcc, 0x80, 0xe1,
0x50, 0xea, 0x78, 0xa4, 0x6a, 0x93, 0x41, 0x4c, 0xa9, 0x17, 0x55, 0x23, 0xda, 0x0f, 0x2d, 0x52,
0x1d, 0xd4, 0xe4, 0xaa, 0x67, 0x51, 0x3f, 0x26, 0x97, 0xb1, 0x11, 0x84, 0x34, 0xa6, 0x68, 0x5e,
0xe0, 0x8d, 0x04, 0x6f, 0x08, 0x94, 0x31, 0xa8, 0x2d, 0xfc, 0x21, 0xa5, 0xcc, 0xc0, 0xad, 0x9a,
0xbe, 0x4f, 0x63, 0x33, 0x76, 0xa9, 0x1f, 0x09, 0xa2, 0xfe, 0x39, 0x0b, 0xa5, 0xe7, 0x1c, 0xbb,
0x2d, 0x04, 0x11, 0x06, 0xb0, 0x3c, 0xda, 0xb7, 0x7b, 0x21, 0x09, 0x68, 0x45, 0x59, 0x51, 0xd6,
0x8a, 0xf5, 0x9a, 0x71, 0xa7, 0xbe, 0xb1, 0xcd, 0xc0, 0x98, 0x04, 0x74, 0x44, 0xa6, 0x95, 0xc1,
0x9a, 0x95, 0xfc, 0x41, 0x26, 0xcc, 0x09, 0xcd, 0x0b, 0x1a, 0x9e, 0x45, 0x81, 0x69, 0x91, 0x4a,
0x96, 0x0b, 0xff, 0x7b, 0x9f, 0xf0, 0xcb, 0x84, 0x30, 0xae, 0x3e, 0x6b, 0x8d, 0xfc, 0x46, 0x2d,
0xc8, 0x3b, 0x24, 0x0c, 0xdd, 0xb8, 0xa2, 0x72, 0x65, 0x23, 0x45, 0x79, 0x97, 0x03, 0xc7, 0x15,
0x25, 0x1f, 0x6d, 0x82, 0xea, 0xb8, 0x71, 0x25, 0xcf, 0x65, 0xd6, 0xd3, 0x64, 0x6e, 0x6b, 0x30,
0x66, 0x43, 0x83, 0x82, 0xac, 0x8e, 0xfe, 0x45, 0x81, 0xdf, 0x9a, 0x97, 0x31, 0xf1, 0x6d, 0x62,
0x8f, 0xa6, 0xb9, 0x71, 0x0d, 0x92, 0x39, 0x5e, 0x4b, 0xf1, 0x34, 0x42, 0xc5, 0x09, 0x11, 0x1d,
0x41, 0xde, 0x33, 0x4f, 0x88, 0x17, 0x55, 0xb2, 0x2b, 0xea, 0x5a, 0xb1, 0xfe, 0x38, 0x45, 0x62,
0x62, 0x14, 0xc6, 0x3e, 0xa7, 0x37, 0xfd, 0x38, 0xbc, 0xc2, 0x52, 0x6b, 0xe1, 0x7f, 0x28, 0x0e,
0x99, 0x51, 0x19, 0xd4, 0x33, 0x72, 0xc5, 0x83, 0xd4, 0x30, 0x5b, 0xa2, 0x5f, 0x61, 0x6a, 0x60,
0x7a, 0x7d, 0x51, 0x43, 0x0d, 0x8b, 0xcd, 0x46, 0xf6, 0x3f, 0x45, 0x7f, 0xaf, 0xc0, 0xcc, 0x96,
0xe7, 0x9a, 0x51, 0x72, 0xca, 0x27, 0x90, 0x3b, 0x73, 0x7d, 0x9b, 0xb3, 0x67, 0xeb, 0x7f, 0xa7,
0xc4, 0x37, 0x4c, 0x33, 0xf6, 0x5c, 0xdf, 0xc6, 0x9c, 0x89, 0x10, 0xe4, 0x7c, 0xf3, 0x3c, 0xf1,
0xc5, 0xd7, 0x7a, 0x1d, 0x72, 0x0c, 0x81, 0x0a, 0xa0, 0x6e, 0x75, 0x5e, 0x97, 0x33, 0x48, 0x83,
0xa9, 0xa7, 0xed, 0x57, 0xcd, 0x9d, 0xb2, 0x82, 0x8a, 0x50, 0x78, 0x76, 0x70, 0xbc, 0xd5, 0xd8,
0x6f, 0x96, 0xb3, 0xcc, 0x7e, 0x70, 0xd4, 0x6a, 0xe2, 0x72, 0x4e, 0xff, 0xaa, 0xc0, 0xef, 0x93,
0x5b, 0x15, 0x6d, 0x40, 0x81, 0xf5, 0x7a, 0xcf, 0xb5, 0x65, 0x29, 0x56, 0x53, 0xe2, 0x64, 0xf4,
0xb6, 0x8d, 0xf3, 0x21, 0xff, 0xa2, 0x55, 0x28, 0x86, 0x64, 0xe0, 0x46, 0x2e, 0xf5, 0x19, 0x9f,
0x47, 0xd9, 0xca, 0x60, 0x48, 0x8c, 0x6d, 0x1b, 0x2d, 0x03, 0x98, 0xec, 0x70, 0x3d, 0x7e, 0x0e,
0x55, 0x22, 0x34, 0x6e, 0xeb, 0x98, 0xe7, 0x04, 0x75, 0xa0, 0x24, 0x00, 0x49, 0x43, 0xe4, 0x78,
0x14, 0x7f, 0x3d, 0x30, 0x5b, 0xad, 0x0c, 0x9e, 0x31, 0x87, 0xf6, 0x0d, 0x80, 0xe9, 0xc4, 0xbd,
0xfe, 0x4e, 0x81, 0xc5, 0x94, 0x41, 0x42, 0x1d, 0x98, 0xb9, 0x9e, 0xc9, 0x9b, 0x04, 0xac, 0x3f,
0x78, 0x2c, 0xdb, 0x36, 0x2e, 0x5e, 0xdc, 0x6c, 0xd0, 0x32, 0x14, 0x23, 0xdf, 0x0c, 0xa2, 0x53,
0x1a, 0x5f, 0xe7, 0x03, 0x43, 0x62, 0x6a, 0xdb, 0xfa, 0x37, 0x05, 0x7e, 0x99, 0x30, 0x7f, 0x68,
0x1e, 0xa6, 0x4f, 0x69, 0x14, 0xf7, 0xfa, 0xa1, 0x2b, 0x7b, 0xad, 0xc0, 0xf6, 0x2f, 0x42, 0x17,
0xfd, 0x09, 0xb3, 0x62, 0x34, 0x7b, 0x41, 0x48, 0xdf, 0x12, 0x2b, 0x96, 0xb2, 0x25, 0x61, 0x3d,
0x14, 0xc6, 0xf1, 0x52, 0xa8, 0xf7, 0x96, 0x22, 0xf7, 0x80, 0x52, 0x4c, 0xfd, 0xbc, 0x52, 0x34,
0xa1, 0x3c, 0x7e, 0x63, 0xb0, 0xe1, 0xea, 0x87, 0x5e, 0x32, 0x5c, 0xfd, 0xd0, 0x63, 0x09, 0xbc,
0xd5, 0x50, 0xc3, 0x67, 0xd0, 0x07, 0x90, 0x17, 0x3d, 0x88, 0x30, 0xcc, 0xc9, 0x84, 0xf4, 0x46,
0xfb, 0x37, 0xed, 0x2a, 0x91, 0xd9, 0x12, 0x12, 0xad, 0x0c, 0x2e, 0x05, 0xc3, 0x06, 0x84, 0x40,
0xed, 0x0f, 0xf5, 0x31, 0xdb, 0x34, 0x72, 0x90, 0x75, 0x6d, 0x7d, 0x0f, 0x4a, 0x23, 0x5c, 0xb4,
0x04, 0x90, 0xb8, 0x97, 0x9e, 0x35, 0xac, 0x49, 0x4b, 0xdb, 0x46, 0x8b, 0xa0, 0xf1, 0xa8, 0x86,
0xa6, 0x77, 0x9a, 0x19, 0x58, 0x9e, 0xf5, 0x13, 0x28, 0x8f, 0xf7, 0xd1, 0x0f, 0x8d, 0xe1, 0x84,
0x5b, 0xa2, 0xf1, 0x51, 0x81, 0x25, 0x8b, 0x9e, 0xdf, 0x2d, 0xd2, 0x40, 0x23, 0xc5, 0x38, 0x64,
0x0f, 0xe2, 0xa1, 0xf2, 0x66, 0x53, 0x12, 0x1c, 0xea, 0x99, 0xbe, 0x63, 0xd0, 0xd0, 0xa9, 0x3a,
0xc4, 0xe7, 0xcf, 0x65, 0x55, 0xfc, 0x32, 0x03, 0x37, 0x9a, 0xf0, 0x34, 0x3f, 0x12, 0xab, 0x0f,
0xd9, 0xe5, 0x5d, 0xa1, 0xc0, 0x8f, 0x68, 0xec, 0x90, 0xc1, 0x11, 0x77, 0x2c, 0xbc, 0x19, 0xc7,
0xb5, 0x4f, 0x09, 0xa2, 0xcb, 0x11, 0xdd, 0x04, 0xd1, 0x15, 0x88, 0xee, 0x71, 0xed, 0x24, 0xcf,
0xfd, 0xfd, 0xf3, 0x3d, 0x00, 0x00, 0xff, 0xff, 0x54, 0x77, 0xc5, 0xa9, 0x09, 0x08, 0x00, 0x00,
}

View File

@ -0,0 +1,904 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: google/monitoring/v3/alert.proto
/*
Package monitoring is a generated protocol buffer package.
It is generated from these files:
google/monitoring/v3/alert.proto
google/monitoring/v3/alert_service.proto
google/monitoring/v3/common.proto
google/monitoring/v3/group.proto
google/monitoring/v3/group_service.proto
google/monitoring/v3/metric.proto
google/monitoring/v3/metric_service.proto
google/monitoring/v3/mutation_record.proto
google/monitoring/v3/notification.proto
google/monitoring/v3/notification_service.proto
google/monitoring/v3/uptime.proto
google/monitoring/v3/uptime_service.proto
It has these top-level messages:
AlertPolicy
CreateAlertPolicyRequest
GetAlertPolicyRequest
ListAlertPoliciesRequest
ListAlertPoliciesResponse
UpdateAlertPolicyRequest
DeleteAlertPolicyRequest
TypedValue
TimeInterval
Aggregation
Group
ListGroupsRequest
ListGroupsResponse
GetGroupRequest
CreateGroupRequest
UpdateGroupRequest
DeleteGroupRequest
ListGroupMembersRequest
ListGroupMembersResponse
Point
TimeSeries
ListMonitoredResourceDescriptorsRequest
ListMonitoredResourceDescriptorsResponse
GetMonitoredResourceDescriptorRequest
ListMetricDescriptorsRequest
ListMetricDescriptorsResponse
GetMetricDescriptorRequest
CreateMetricDescriptorRequest
DeleteMetricDescriptorRequest
ListTimeSeriesRequest
ListTimeSeriesResponse
CreateTimeSeriesRequest
CreateTimeSeriesError
MutationRecord
NotificationChannelDescriptor
NotificationChannel
ListNotificationChannelDescriptorsRequest
ListNotificationChannelDescriptorsResponse
GetNotificationChannelDescriptorRequest
CreateNotificationChannelRequest
ListNotificationChannelsRequest
ListNotificationChannelsResponse
GetNotificationChannelRequest
UpdateNotificationChannelRequest
DeleteNotificationChannelRequest
SendNotificationChannelVerificationCodeRequest
GetNotificationChannelVerificationCodeRequest
GetNotificationChannelVerificationCodeResponse
VerifyNotificationChannelRequest
UptimeCheckConfig
UptimeCheckIp
ListUptimeCheckConfigsRequest
ListUptimeCheckConfigsResponse
GetUptimeCheckConfigRequest
CreateUptimeCheckConfigRequest
UpdateUptimeCheckConfigRequest
DeleteUptimeCheckConfigRequest
ListUptimeCheckIpsRequest
ListUptimeCheckIpsResponse
*/
package monitoring
import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
import _ "google.golang.org/genproto/googleapis/api/annotations"
import google_protobuf3 "github.com/golang/protobuf/ptypes/duration"
import google_protobuf4 "github.com/golang/protobuf/ptypes/wrappers"
// 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
// Operators for combining conditions.
type AlertPolicy_ConditionCombinerType int32
const (
// An unspecified combiner.
AlertPolicy_COMBINE_UNSPECIFIED AlertPolicy_ConditionCombinerType = 0
// Combine conditions using the logical `AND` operator. An
// incident is created only if all conditions are met
// simultaneously. This combiner is satisfied if all conditions are
// met, even if they are met on completely different resources.
AlertPolicy_AND AlertPolicy_ConditionCombinerType = 1
// Combine conditions using the logical `OR` operator. An incident
// is created if any of the listed conditions is met.
AlertPolicy_OR AlertPolicy_ConditionCombinerType = 2
// Combine conditions using logical `AND` operator, but unlike the regular
// `AND` option, an incident is created only if all conditions are met
// simultaneously on at least one resource.
AlertPolicy_AND_WITH_MATCHING_RESOURCE AlertPolicy_ConditionCombinerType = 3
)
var AlertPolicy_ConditionCombinerType_name = map[int32]string{
0: "COMBINE_UNSPECIFIED",
1: "AND",
2: "OR",
3: "AND_WITH_MATCHING_RESOURCE",
}
var AlertPolicy_ConditionCombinerType_value = map[string]int32{
"COMBINE_UNSPECIFIED": 0,
"AND": 1,
"OR": 2,
"AND_WITH_MATCHING_RESOURCE": 3,
}
func (x AlertPolicy_ConditionCombinerType) String() string {
return proto.EnumName(AlertPolicy_ConditionCombinerType_name, int32(x))
}
func (AlertPolicy_ConditionCombinerType) EnumDescriptor() ([]byte, []int) {
return fileDescriptor0, []int{0, 0}
}
// A description of the conditions under which some aspect of your system is
// considered to be "unhealthy" and the ways to notify people or services about
// this state. For an overview of alert policies, see
// [Introduction to Alerting](/monitoring/alerts/).
type AlertPolicy struct {
// Required if the policy exists. The resource name for this policy. The
// syntax is:
//
// projects/[PROJECT_ID]/alertPolicies/[ALERT_POLICY_ID]
//
// `[ALERT_POLICY_ID]` is assigned by Stackdriver Monitoring when the policy
// is created. When calling the
// [alertPolicies.create][google.monitoring.v3.AlertPolicyService.CreateAlertPolicy]
// method, do not include the `name` field in the alerting policy passed as
// part of the request.
Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
// A short name or phrase used to identify the policy in dashboards,
// notifications, and incidents. To avoid confusion, don't use the same
// display name for multiple policies in the same project. The name is
// limited to 512 Unicode characters.
DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName" json:"display_name,omitempty"`
// Documentation that is included with notifications and incidents related to
// this policy. Best practice is for the documentation to include information
// to help responders understand, mitigate, escalate, and correct the
// underlying problems detected by the alerting policy. Notification channels
// that have limited capacity might not show this documentation.
Documentation *AlertPolicy_Documentation `protobuf:"bytes,13,opt,name=documentation" json:"documentation,omitempty"`
// User-supplied key/value data to be used for organizing and
// identifying the `AlertPolicy` objects.
//
// The field can contain up to 64 entries. Each key and value is limited to
// 63 Unicode characters or 128 bytes, whichever is smaller. Labels and
// values can contain only lowercase letters, numerals, underscores, and
// dashes. Keys must begin with a letter.
UserLabels map[string]string `protobuf:"bytes,16,rep,name=user_labels,json=userLabels" json:"user_labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
// A list of conditions for the policy. The conditions are combined by AND or
// OR according to the `combiner` field. If the combined conditions evaluate
// to true, then an incident is created. A policy can have from one to six
// conditions.
Conditions []*AlertPolicy_Condition `protobuf:"bytes,12,rep,name=conditions" json:"conditions,omitempty"`
// How to combine the results of multiple conditions
// to determine if an incident should be opened.
Combiner AlertPolicy_ConditionCombinerType `protobuf:"varint,6,opt,name=combiner,enum=google.monitoring.v3.AlertPolicy_ConditionCombinerType" json:"combiner,omitempty"`
// Whether or not the policy is enabled. On write, the default interpretation
// if unset is that the policy is enabled. On read, clients should not make
// any assumption about the state if it has not been populated. The
// field should always be populated on List and Get operations, unless
// a field projection has been specified that strips it out.
Enabled *google_protobuf4.BoolValue `protobuf:"bytes,17,opt,name=enabled" json:"enabled,omitempty"`
// Identifies the notification channels to which notifications should be sent
// when incidents are opened or closed or when new violations occur on
// an already opened incident. Each element of this array corresponds to
// the `name` field in each of the
// [`NotificationChannel`][google.monitoring.v3.NotificationChannel]
// objects that are returned from the [`ListNotificationChannels`]
// [google.monitoring.v3.NotificationChannelService.ListNotificationChannels]
// method. The syntax of the entries in this field is:
//
// projects/[PROJECT_ID]/notificationChannels/[CHANNEL_ID]
NotificationChannels []string `protobuf:"bytes,14,rep,name=notification_channels,json=notificationChannels" json:"notification_channels,omitempty"`
// A read-only record of the creation of the alerting policy. If provided
// in a call to create or update, this field will be ignored.
CreationRecord *MutationRecord `protobuf:"bytes,10,opt,name=creation_record,json=creationRecord" json:"creation_record,omitempty"`
// A read-only record of the most recent change to the alerting policy. If
// provided in a call to create or update, this field will be ignored.
MutationRecord *MutationRecord `protobuf:"bytes,11,opt,name=mutation_record,json=mutationRecord" json:"mutation_record,omitempty"`
}
func (m *AlertPolicy) Reset() { *m = AlertPolicy{} }
func (m *AlertPolicy) String() string { return proto.CompactTextString(m) }
func (*AlertPolicy) ProtoMessage() {}
func (*AlertPolicy) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
func (m *AlertPolicy) GetName() string {
if m != nil {
return m.Name
}
return ""
}
func (m *AlertPolicy) GetDisplayName() string {
if m != nil {
return m.DisplayName
}
return ""
}
func (m *AlertPolicy) GetDocumentation() *AlertPolicy_Documentation {
if m != nil {
return m.Documentation
}
return nil
}
func (m *AlertPolicy) GetUserLabels() map[string]string {
if m != nil {
return m.UserLabels
}
return nil
}
func (m *AlertPolicy) GetConditions() []*AlertPolicy_Condition {
if m != nil {
return m.Conditions
}
return nil
}
func (m *AlertPolicy) GetCombiner() AlertPolicy_ConditionCombinerType {
if m != nil {
return m.Combiner
}
return AlertPolicy_COMBINE_UNSPECIFIED
}
func (m *AlertPolicy) GetEnabled() *google_protobuf4.BoolValue {
if m != nil {
return m.Enabled
}
return nil
}
func (m *AlertPolicy) GetNotificationChannels() []string {
if m != nil {
return m.NotificationChannels
}
return nil
}
func (m *AlertPolicy) GetCreationRecord() *MutationRecord {
if m != nil {
return m.CreationRecord
}
return nil
}
func (m *AlertPolicy) GetMutationRecord() *MutationRecord {
if m != nil {
return m.MutationRecord
}
return nil
}
// A content string and a MIME type that describes the content string's
// format.
type AlertPolicy_Documentation struct {
// The text of the documentation, interpreted according to `mime_type`.
// The content may not exceed 8,192 Unicode characters and may not exceed
// more than 10,240 bytes when encoded in UTF-8 format, whichever is
// smaller.
Content string `protobuf:"bytes,1,opt,name=content" json:"content,omitempty"`
// The format of the `content` field. Presently, only the value
// `"text/markdown"` is supported. See
// [Markdown](https://en.wikipedia.org/wiki/Markdown) for more information.
MimeType string `protobuf:"bytes,2,opt,name=mime_type,json=mimeType" json:"mime_type,omitempty"`
}
func (m *AlertPolicy_Documentation) Reset() { *m = AlertPolicy_Documentation{} }
func (m *AlertPolicy_Documentation) String() string { return proto.CompactTextString(m) }
func (*AlertPolicy_Documentation) ProtoMessage() {}
func (*AlertPolicy_Documentation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0, 0} }
func (m *AlertPolicy_Documentation) GetContent() string {
if m != nil {
return m.Content
}
return ""
}
func (m *AlertPolicy_Documentation) GetMimeType() string {
if m != nil {
return m.MimeType
}
return ""
}
// A condition is a true/false test that determines when an alerting policy
// should open an incident. If a condition evaluates to true, it signifies
// that something is wrong.
type AlertPolicy_Condition struct {
// Required if the condition exists. The unique resource name for this
// condition. Its syntax is:
//
// projects/[PROJECT_ID]/alertPolicies/[POLICY_ID]/conditions/[CONDITION_ID]
//
// `[CONDITION_ID]` is assigned by Stackdriver Monitoring when the
// condition is created as part of a new or updated alerting policy.
//
// When calling the
// [alertPolicies.create][google.monitoring.v3.AlertPolicyService.CreateAlertPolicy]
// method, do not include the `name` field in the conditions of the
// requested alerting policy. Stackdriver Monitoring creates the
// condition identifiers and includes them in the new policy.
//
// When calling the
// [alertPolicies.update][google.monitoring.v3.AlertPolicyService.UpdateAlertPolicy]
// method to update a policy, including a condition `name` causes the
// existing condition to be updated. Conditions without names are added to
// the updated policy. Existing conditions are deleted if they are not
// updated.
//
// Best practice is to preserve `[CONDITION_ID]` if you make only small
// changes, such as those to condition thresholds, durations, or trigger
// values. Otherwise, treat the change as a new condition and let the
// existing condition be deleted.
Name string `protobuf:"bytes,12,opt,name=name" json:"name,omitempty"`
// A short name or phrase used to identify the condition in dashboards,
// notifications, and incidents. To avoid confusion, don't use the same
// display name for multiple conditions in the same policy.
DisplayName string `protobuf:"bytes,6,opt,name=display_name,json=displayName" json:"display_name,omitempty"`
// Only one of the following condition types will be specified.
//
// Types that are valid to be assigned to Condition:
// *AlertPolicy_Condition_ConditionThreshold
// *AlertPolicy_Condition_ConditionAbsent
Condition isAlertPolicy_Condition_Condition `protobuf_oneof:"condition"`
}
func (m *AlertPolicy_Condition) Reset() { *m = AlertPolicy_Condition{} }
func (m *AlertPolicy_Condition) String() string { return proto.CompactTextString(m) }
func (*AlertPolicy_Condition) ProtoMessage() {}
func (*AlertPolicy_Condition) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0, 1} }
type isAlertPolicy_Condition_Condition interface {
isAlertPolicy_Condition_Condition()
}
type AlertPolicy_Condition_ConditionThreshold struct {
ConditionThreshold *AlertPolicy_Condition_MetricThreshold `protobuf:"bytes,1,opt,name=condition_threshold,json=conditionThreshold,oneof"`
}
type AlertPolicy_Condition_ConditionAbsent struct {
ConditionAbsent *AlertPolicy_Condition_MetricAbsence `protobuf:"bytes,2,opt,name=condition_absent,json=conditionAbsent,oneof"`
}
func (*AlertPolicy_Condition_ConditionThreshold) isAlertPolicy_Condition_Condition() {}
func (*AlertPolicy_Condition_ConditionAbsent) isAlertPolicy_Condition_Condition() {}
func (m *AlertPolicy_Condition) GetCondition() isAlertPolicy_Condition_Condition {
if m != nil {
return m.Condition
}
return nil
}
func (m *AlertPolicy_Condition) GetName() string {
if m != nil {
return m.Name
}
return ""
}
func (m *AlertPolicy_Condition) GetDisplayName() string {
if m != nil {
return m.DisplayName
}
return ""
}
func (m *AlertPolicy_Condition) GetConditionThreshold() *AlertPolicy_Condition_MetricThreshold {
if x, ok := m.GetCondition().(*AlertPolicy_Condition_ConditionThreshold); ok {
return x.ConditionThreshold
}
return nil
}
func (m *AlertPolicy_Condition) GetConditionAbsent() *AlertPolicy_Condition_MetricAbsence {
if x, ok := m.GetCondition().(*AlertPolicy_Condition_ConditionAbsent); ok {
return x.ConditionAbsent
}
return nil
}
// XXX_OneofFuncs is for the internal use of the proto package.
func (*AlertPolicy_Condition) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
return _AlertPolicy_Condition_OneofMarshaler, _AlertPolicy_Condition_OneofUnmarshaler, _AlertPolicy_Condition_OneofSizer, []interface{}{
(*AlertPolicy_Condition_ConditionThreshold)(nil),
(*AlertPolicy_Condition_ConditionAbsent)(nil),
}
}
func _AlertPolicy_Condition_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
m := msg.(*AlertPolicy_Condition)
// condition
switch x := m.Condition.(type) {
case *AlertPolicy_Condition_ConditionThreshold:
b.EncodeVarint(1<<3 | proto.WireBytes)
if err := b.EncodeMessage(x.ConditionThreshold); err != nil {
return err
}
case *AlertPolicy_Condition_ConditionAbsent:
b.EncodeVarint(2<<3 | proto.WireBytes)
if err := b.EncodeMessage(x.ConditionAbsent); err != nil {
return err
}
case nil:
default:
return fmt.Errorf("AlertPolicy_Condition.Condition has unexpected type %T", x)
}
return nil
}
func _AlertPolicy_Condition_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
m := msg.(*AlertPolicy_Condition)
switch tag {
case 1: // condition.condition_threshold
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
msg := new(AlertPolicy_Condition_MetricThreshold)
err := b.DecodeMessage(msg)
m.Condition = &AlertPolicy_Condition_ConditionThreshold{msg}
return true, err
case 2: // condition.condition_absent
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
msg := new(AlertPolicy_Condition_MetricAbsence)
err := b.DecodeMessage(msg)
m.Condition = &AlertPolicy_Condition_ConditionAbsent{msg}
return true, err
default:
return false, nil
}
}
func _AlertPolicy_Condition_OneofSizer(msg proto.Message) (n int) {
m := msg.(*AlertPolicy_Condition)
// condition
switch x := m.Condition.(type) {
case *AlertPolicy_Condition_ConditionThreshold:
s := proto.Size(x.ConditionThreshold)
n += proto.SizeVarint(1<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(s))
n += s
case *AlertPolicy_Condition_ConditionAbsent:
s := proto.Size(x.ConditionAbsent)
n += proto.SizeVarint(2<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(s))
n += s
case nil:
default:
panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
}
return n
}
// Specifies how many time series must fail a predicate to trigger a
// condition. If not specified, then a `{count: 1}` trigger is used.
type AlertPolicy_Condition_Trigger struct {
// A type of trigger.
//
// Types that are valid to be assigned to Type:
// *AlertPolicy_Condition_Trigger_Count
// *AlertPolicy_Condition_Trigger_Percent
Type isAlertPolicy_Condition_Trigger_Type `protobuf_oneof:"type"`
}
func (m *AlertPolicy_Condition_Trigger) Reset() { *m = AlertPolicy_Condition_Trigger{} }
func (m *AlertPolicy_Condition_Trigger) String() string { return proto.CompactTextString(m) }
func (*AlertPolicy_Condition_Trigger) ProtoMessage() {}
func (*AlertPolicy_Condition_Trigger) Descriptor() ([]byte, []int) {
return fileDescriptor0, []int{0, 1, 0}
}
type isAlertPolicy_Condition_Trigger_Type interface {
isAlertPolicy_Condition_Trigger_Type()
}
type AlertPolicy_Condition_Trigger_Count struct {
Count int32 `protobuf:"varint,1,opt,name=count,oneof"`
}
type AlertPolicy_Condition_Trigger_Percent struct {
Percent float64 `protobuf:"fixed64,2,opt,name=percent,oneof"`
}
func (*AlertPolicy_Condition_Trigger_Count) isAlertPolicy_Condition_Trigger_Type() {}
func (*AlertPolicy_Condition_Trigger_Percent) isAlertPolicy_Condition_Trigger_Type() {}
func (m *AlertPolicy_Condition_Trigger) GetType() isAlertPolicy_Condition_Trigger_Type {
if m != nil {
return m.Type
}
return nil
}
func (m *AlertPolicy_Condition_Trigger) GetCount() int32 {
if x, ok := m.GetType().(*AlertPolicy_Condition_Trigger_Count); ok {
return x.Count
}
return 0
}
func (m *AlertPolicy_Condition_Trigger) GetPercent() float64 {
if x, ok := m.GetType().(*AlertPolicy_Condition_Trigger_Percent); ok {
return x.Percent
}
return 0
}
// XXX_OneofFuncs is for the internal use of the proto package.
func (*AlertPolicy_Condition_Trigger) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
return _AlertPolicy_Condition_Trigger_OneofMarshaler, _AlertPolicy_Condition_Trigger_OneofUnmarshaler, _AlertPolicy_Condition_Trigger_OneofSizer, []interface{}{
(*AlertPolicy_Condition_Trigger_Count)(nil),
(*AlertPolicy_Condition_Trigger_Percent)(nil),
}
}
func _AlertPolicy_Condition_Trigger_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
m := msg.(*AlertPolicy_Condition_Trigger)
// type
switch x := m.Type.(type) {
case *AlertPolicy_Condition_Trigger_Count:
b.EncodeVarint(1<<3 | proto.WireVarint)
b.EncodeVarint(uint64(x.Count))
case *AlertPolicy_Condition_Trigger_Percent:
b.EncodeVarint(2<<3 | proto.WireFixed64)
b.EncodeFixed64(math.Float64bits(x.Percent))
case nil:
default:
return fmt.Errorf("AlertPolicy_Condition_Trigger.Type has unexpected type %T", x)
}
return nil
}
func _AlertPolicy_Condition_Trigger_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
m := msg.(*AlertPolicy_Condition_Trigger)
switch tag {
case 1: // type.count
if wire != proto.WireVarint {
return true, proto.ErrInternalBadWireType
}
x, err := b.DecodeVarint()
m.Type = &AlertPolicy_Condition_Trigger_Count{int32(x)}
return true, err
case 2: // type.percent
if wire != proto.WireFixed64 {
return true, proto.ErrInternalBadWireType
}
x, err := b.DecodeFixed64()
m.Type = &AlertPolicy_Condition_Trigger_Percent{math.Float64frombits(x)}
return true, err
default:
return false, nil
}
}
func _AlertPolicy_Condition_Trigger_OneofSizer(msg proto.Message) (n int) {
m := msg.(*AlertPolicy_Condition_Trigger)
// type
switch x := m.Type.(type) {
case *AlertPolicy_Condition_Trigger_Count:
n += proto.SizeVarint(1<<3 | proto.WireVarint)
n += proto.SizeVarint(uint64(x.Count))
case *AlertPolicy_Condition_Trigger_Percent:
n += proto.SizeVarint(2<<3 | proto.WireFixed64)
n += 8
case nil:
default:
panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
}
return n
}
// A condition type that compares a collection of time series
// against a threshold.
type AlertPolicy_Condition_MetricThreshold struct {
// A [filter](/monitoring/api/v3/filters) that
// identifies which time series should be compared with the threshold.
//
// The filter is similar to the one that is specified in the
// [`MetricService.ListTimeSeries`
// request](/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list) (that
// call is useful to verify the time series that will be retrieved /
// processed) and must specify the metric type and optionally may contain
// restrictions on resource type, resource labels, and metric labels.
// This field may not exceed 2048 Unicode characters in length.
Filter string `protobuf:"bytes,2,opt,name=filter" json:"filter,omitempty"`
// Specifies the alignment of data points in individual time series as
// well as how to combine the retrieved time series together (such as
// when aggregating multiple streams on each resource to a single
// stream for each resource or when aggregating streams across all
// members of a group of resrouces). Multiple aggregations
// are applied in the order specified.
//
// This field is similar to the one in the
// [`MetricService.ListTimeSeries` request](/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list).
// It is advisable to use the `ListTimeSeries` method when debugging this field.
Aggregations []*Aggregation `protobuf:"bytes,8,rep,name=aggregations" json:"aggregations,omitempty"`
// A [filter](/monitoring/api/v3/filters) that identifies a time
// series that should be used as the denominator of a ratio that will be
// compared with the threshold. If a `denominator_filter` is specified,
// the time series specified by the `filter` field will be used as the
// numerator.
//
// The filter is similar to the one that is specified in the
// [`MetricService.ListTimeSeries`
// request](/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list) (that
// call is useful to verify the time series that will be retrieved /
// processed) and must specify the metric type and optionally may contain
// restrictions on resource type, resource labels, and metric labels.
// This field may not exceed 2048 Unicode characters in length.
DenominatorFilter string `protobuf:"bytes,9,opt,name=denominator_filter,json=denominatorFilter" json:"denominator_filter,omitempty"`
// Specifies the alignment of data points in individual time series
// selected by `denominatorFilter` as
// well as how to combine the retrieved time series together (such as
// when aggregating multiple streams on each resource to a single
// stream for each resource or when aggregating streams across all
// members of a group of resources).
//
// When computing ratios, the `aggregations` and
// `denominator_aggregations` fields must use the same alignment period
// and produce time series that have the same periodicity and labels.
//
// This field is similar to the one in the
// [`MetricService.ListTimeSeries`
// request](/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list). It
// is advisable to use the `ListTimeSeries` method when debugging this
// field.
DenominatorAggregations []*Aggregation `protobuf:"bytes,10,rep,name=denominator_aggregations,json=denominatorAggregations" json:"denominator_aggregations,omitempty"`
// The comparison to apply between the time series (indicated by `filter`
// and `aggregation`) and the threshold (indicated by `threshold_value`).
// The comparison is applied on each time series, with the time series
// on the left-hand side and the threshold on the right-hand side.
//
// Only `COMPARISON_LT` and `COMPARISON_GT` are supported currently.
Comparison ComparisonType `protobuf:"varint,4,opt,name=comparison,enum=google.monitoring.v3.ComparisonType" json:"comparison,omitempty"`
// A value against which to compare the time series.
ThresholdValue float64 `protobuf:"fixed64,5,opt,name=threshold_value,json=thresholdValue" json:"threshold_value,omitempty"`
// The amount of time that a time series must violate the
// threshold to be considered failing. Currently, only values
// that are a multiple of a minute--e.g. 60, 120, or 300
// seconds--are supported. If an invalid value is given, an
// error will be returned. The `Duration.nanos` field is
// ignored. When choosing a duration, it is useful to keep in mind the
// frequency of the underlying time series data (which may also be
// affected by any alignments specified in the `aggregation` field);
// a good duration is long enough so that a single outlier does not
// generate spurious alerts, but short enough that unhealthy states
// are detected and alerted on quickly.
Duration *google_protobuf3.Duration `protobuf:"bytes,6,opt,name=duration" json:"duration,omitempty"`
// The number/percent of time series for which the comparison must hold
// in order for the condition to trigger. If unspecified, then the
// condition will trigger if the comparison is true for any of the
// time series that have been identified by `filter` and `aggregations`,
// or by the ratio, if `denominator_filter` and `denominator_aggregations`
// are specified.
Trigger *AlertPolicy_Condition_Trigger `protobuf:"bytes,7,opt,name=trigger" json:"trigger,omitempty"`
}
func (m *AlertPolicy_Condition_MetricThreshold) Reset() { *m = AlertPolicy_Condition_MetricThreshold{} }
func (m *AlertPolicy_Condition_MetricThreshold) String() string { return proto.CompactTextString(m) }
func (*AlertPolicy_Condition_MetricThreshold) ProtoMessage() {}
func (*AlertPolicy_Condition_MetricThreshold) Descriptor() ([]byte, []int) {
return fileDescriptor0, []int{0, 1, 1}
}
func (m *AlertPolicy_Condition_MetricThreshold) GetFilter() string {
if m != nil {
return m.Filter
}
return ""
}
func (m *AlertPolicy_Condition_MetricThreshold) GetAggregations() []*Aggregation {
if m != nil {
return m.Aggregations
}
return nil
}
func (m *AlertPolicy_Condition_MetricThreshold) GetDenominatorFilter() string {
if m != nil {
return m.DenominatorFilter
}
return ""
}
func (m *AlertPolicy_Condition_MetricThreshold) GetDenominatorAggregations() []*Aggregation {
if m != nil {
return m.DenominatorAggregations
}
return nil
}
func (m *AlertPolicy_Condition_MetricThreshold) GetComparison() ComparisonType {
if m != nil {
return m.Comparison
}
return ComparisonType_COMPARISON_UNSPECIFIED
}
func (m *AlertPolicy_Condition_MetricThreshold) GetThresholdValue() float64 {
if m != nil {
return m.ThresholdValue
}
return 0
}
func (m *AlertPolicy_Condition_MetricThreshold) GetDuration() *google_protobuf3.Duration {
if m != nil {
return m.Duration
}
return nil
}
func (m *AlertPolicy_Condition_MetricThreshold) GetTrigger() *AlertPolicy_Condition_Trigger {
if m != nil {
return m.Trigger
}
return nil
}
// A condition type that checks that monitored resources
// are reporting data. The configuration defines a metric and
// a set of monitored resources. The predicate is considered in violation
// when a time series for the specified metric of a monitored
// resource does not include any data in the specified `duration`.
type AlertPolicy_Condition_MetricAbsence struct {
// A [filter](/monitoring/api/v3/filters) that
// identifies which time series should be compared with the threshold.
//
// The filter is similar to the one that is specified in the
// [`MetricService.ListTimeSeries`
// request](/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list) (that
// call is useful to verify the time series that will be retrieved /
// processed) and must specify the metric type and optionally may contain
// restrictions on resource type, resource labels, and metric labels.
// This field may not exceed 2048 Unicode characters in length.
Filter string `protobuf:"bytes,1,opt,name=filter" json:"filter,omitempty"`
// Specifies the alignment of data points in individual time series as
// well as how to combine the retrieved time series together (such as
// when aggregating multiple streams on each resource to a single
// stream for each resource or when aggregating streams across all
// members of a group of resrouces). Multiple aggregations
// are applied in the order specified.
//
// This field is similar to the
// one in the [`MetricService.ListTimeSeries` request](/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list).
// It is advisable to use the `ListTimeSeries` method when debugging this field.
Aggregations []*Aggregation `protobuf:"bytes,5,rep,name=aggregations" json:"aggregations,omitempty"`
// The amount of time that a time series must fail to report new
// data to be considered failing. Currently, only values that
// are a multiple of a minute--e.g. 60, 120, or 300
// seconds--are supported. If an invalid value is given, an
// error will be returned. The `Duration.nanos` field is
// ignored.
Duration *google_protobuf3.Duration `protobuf:"bytes,2,opt,name=duration" json:"duration,omitempty"`
// The number/percent of time series for which the comparison must hold
// in order for the condition to trigger. If unspecified, then the
// condition will trigger if the comparison is true for any of the
// time series that have been identified by `filter` and `aggregations`.
Trigger *AlertPolicy_Condition_Trigger `protobuf:"bytes,3,opt,name=trigger" json:"trigger,omitempty"`
}
func (m *AlertPolicy_Condition_MetricAbsence) Reset() { *m = AlertPolicy_Condition_MetricAbsence{} }
func (m *AlertPolicy_Condition_MetricAbsence) String() string { return proto.CompactTextString(m) }
func (*AlertPolicy_Condition_MetricAbsence) ProtoMessage() {}
func (*AlertPolicy_Condition_MetricAbsence) Descriptor() ([]byte, []int) {
return fileDescriptor0, []int{0, 1, 2}
}
func (m *AlertPolicy_Condition_MetricAbsence) GetFilter() string {
if m != nil {
return m.Filter
}
return ""
}
func (m *AlertPolicy_Condition_MetricAbsence) GetAggregations() []*Aggregation {
if m != nil {
return m.Aggregations
}
return nil
}
func (m *AlertPolicy_Condition_MetricAbsence) GetDuration() *google_protobuf3.Duration {
if m != nil {
return m.Duration
}
return nil
}
func (m *AlertPolicy_Condition_MetricAbsence) GetTrigger() *AlertPolicy_Condition_Trigger {
if m != nil {
return m.Trigger
}
return nil
}
func init() {
proto.RegisterType((*AlertPolicy)(nil), "google.monitoring.v3.AlertPolicy")
proto.RegisterType((*AlertPolicy_Documentation)(nil), "google.monitoring.v3.AlertPolicy.Documentation")
proto.RegisterType((*AlertPolicy_Condition)(nil), "google.monitoring.v3.AlertPolicy.Condition")
proto.RegisterType((*AlertPolicy_Condition_Trigger)(nil), "google.monitoring.v3.AlertPolicy.Condition.Trigger")
proto.RegisterType((*AlertPolicy_Condition_MetricThreshold)(nil), "google.monitoring.v3.AlertPolicy.Condition.MetricThreshold")
proto.RegisterType((*AlertPolicy_Condition_MetricAbsence)(nil), "google.monitoring.v3.AlertPolicy.Condition.MetricAbsence")
proto.RegisterEnum("google.monitoring.v3.AlertPolicy_ConditionCombinerType", AlertPolicy_ConditionCombinerType_name, AlertPolicy_ConditionCombinerType_value)
}
func init() { proto.RegisterFile("google/monitoring/v3/alert.proto", fileDescriptor0) }
var fileDescriptor0 = []byte{
// 941 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0xeb, 0x6e, 0xe3, 0x44,
0x14, 0xae, 0x93, 0xe6, 0x76, 0xd2, 0x36, 0xd9, 0xd9, 0xee, 0xae, 0x31, 0x68, 0x95, 0xae, 0x90,
0x88, 0x40, 0x38, 0x22, 0x01, 0x71, 0x59, 0x81, 0x94, 0x5b, 0x37, 0x11, 0x24, 0xad, 0xa6, 0x69,
0x91, 0x50, 0x25, 0xcb, 0x71, 0xa6, 0xae, 0x85, 0x3d, 0x63, 0x4d, 0xec, 0xa2, 0xbc, 0x0e, 0x3f,
0x79, 0x14, 0x1e, 0x81, 0x7f, 0xbc, 0x02, 0xe2, 0x01, 0x90, 0xc7, 0x63, 0xc7, 0xe9, 0xa6, 0xbb,
0x64, 0xf7, 0x5f, 0xce, 0x9c, 0xef, 0x7c, 0xe7, 0xf6, 0xcd, 0x38, 0xd0, 0xb0, 0x19, 0xb3, 0x5d,
0xd2, 0xf2, 0x18, 0x75, 0x02, 0xc6, 0x1d, 0x6a, 0xb7, 0xee, 0x3a, 0x2d, 0xd3, 0x25, 0x3c, 0xd0,
0x7d, 0xce, 0x02, 0x86, 0x8e, 0x63, 0x84, 0xbe, 0x46, 0xe8, 0x77, 0x1d, 0xed, 0x23, 0x19, 0x67,
0xfa, 0x4e, 0xcb, 0xa4, 0x94, 0x05, 0x66, 0xe0, 0x30, 0xba, 0x8c, 0x63, 0xb4, 0x93, 0xad, 0xac,
0x16, 0xf3, 0x3c, 0x46, 0x25, 0xe4, 0xd3, 0xad, 0x10, 0x2f, 0x8c, 0x89, 0x0c, 0x4e, 0x2c, 0xc6,
0x17, 0x12, 0xfb, 0x5c, 0x62, 0x85, 0x35, 0x0f, 0x6f, 0x5a, 0x8b, 0x90, 0x0b, 0xd8, 0x43, 0xfe,
0xdf, 0xb8, 0xe9, 0xfb, 0x84, 0xcb, 0x72, 0x5e, 0xfc, 0x5d, 0x83, 0x6a, 0x37, 0x6a, 0xe9, 0x9c,
0xb9, 0x8e, 0xb5, 0x42, 0x08, 0xf6, 0xa9, 0xe9, 0x11, 0x55, 0x69, 0x28, 0xcd, 0x0a, 0x16, 0xbf,
0xd1, 0x09, 0x1c, 0x2c, 0x9c, 0xa5, 0xef, 0x9a, 0x2b, 0x43, 0xf8, 0x72, 0xc2, 0x57, 0x95, 0x67,
0xd3, 0x08, 0x72, 0x09, 0x87, 0x0b, 0x66, 0x85, 0x1e, 0xa1, 0x71, 0x91, 0xea, 0x61, 0x43, 0x69,
0x56, 0xdb, 0x2d, 0x7d, 0xdb, 0x84, 0xf4, 0x4c, 0x42, 0x7d, 0x90, 0x0d, 0xc3, 0x9b, 0x2c, 0x08,
0x43, 0x35, 0x5c, 0x12, 0x6e, 0xb8, 0xe6, 0x9c, 0xb8, 0x4b, 0xb5, 0xde, 0xc8, 0x37, 0xab, 0xed,
0x2f, 0xde, 0x4e, 0x7a, 0xb9, 0x24, 0xfc, 0x27, 0x11, 0x33, 0xa4, 0x01, 0x5f, 0x61, 0x08, 0xd3,
0x03, 0xf4, 0x23, 0x80, 0xc5, 0xe8, 0xc2, 0x11, 0x4b, 0x51, 0x0f, 0x04, 0xe5, 0x67, 0x6f, 0xa7,
0xec, 0x27, 0x31, 0x38, 0x13, 0x8e, 0x2e, 0xa0, 0x6c, 0x31, 0x6f, 0xee, 0x50, 0xc2, 0xd5, 0x62,
0x43, 0x69, 0x1e, 0xb5, 0xbf, 0xde, 0x81, 0xaa, 0x2f, 0x43, 0x67, 0x2b, 0x9f, 0xe0, 0x94, 0x08,
0x7d, 0x09, 0x25, 0x42, 0xcd, 0xb9, 0x4b, 0x16, 0xea, 0x23, 0x31, 0x46, 0x2d, 0xe1, 0x4c, 0xb6,
0xa8, 0xf7, 0x18, 0x73, 0xaf, 0x4c, 0x37, 0x24, 0x38, 0x81, 0xa2, 0x0e, 0x3c, 0xa1, 0x2c, 0x70,
0x6e, 0x1c, 0x2b, 0x96, 0x89, 0x75, 0x6b, 0x52, 0x1a, 0x4d, 0xed, 0xa8, 0x91, 0x6f, 0x56, 0xf0,
0x71, 0xd6, 0xd9, 0x97, 0x3e, 0x34, 0x81, 0x9a, 0xc5, 0x49, 0x56, 0x57, 0x2a, 0x88, 0x94, 0x1f,
0x6f, 0x6f, 0x63, 0x22, 0x45, 0x88, 0x05, 0x16, 0x1f, 0x25, 0xc1, 0xb1, 0x1d, 0xd1, 0xdd, 0x93,
0xa9, 0x5a, 0xdd, 0x85, 0xce, 0xdb, 0xb0, 0xb5, 0x53, 0x38, 0xdc, 0x90, 0x07, 0x52, 0xa1, 0x64,
0x31, 0x1a, 0x10, 0x1a, 0x48, 0x81, 0x26, 0x26, 0xfa, 0x10, 0x2a, 0x9e, 0xe3, 0x11, 0x23, 0x58,
0xf9, 0x89, 0x40, 0xcb, 0xd1, 0x41, 0x34, 0x5a, 0xed, 0xaf, 0x32, 0x54, 0xd2, 0xa1, 0xa7, 0x12,
0x3f, 0x78, 0x83, 0xc4, 0x8b, 0xaf, 0x4b, 0x9c, 0xc2, 0xe3, 0x74, 0xf1, 0x46, 0x70, 0xcb, 0xc9,
0xf2, 0x96, 0xb9, 0x0b, 0x51, 0x47, 0xb5, 0xfd, 0x72, 0x87, 0xad, 0xeb, 0x13, 0x12, 0x70, 0xc7,
0x9a, 0x25, 0x14, 0xa3, 0x3d, 0x8c, 0x52, 0xe6, 0xf4, 0x14, 0xdd, 0x40, 0x7d, 0x9d, 0xcf, 0x9c,
0x2f, 0xa3, 0xa6, 0x73, 0x22, 0xd9, 0xb7, 0xbb, 0x27, 0xeb, 0x46, 0xf1, 0x16, 0x19, 0xed, 0xe1,
0x5a, 0x4a, 0x2a, 0xce, 0x02, 0x6d, 0x08, 0xa5, 0x19, 0x77, 0x6c, 0x9b, 0x70, 0xf4, 0x14, 0x0a,
0x16, 0x0b, 0xe5, 0x70, 0x0b, 0xa3, 0x3d, 0x1c, 0x9b, 0x48, 0x83, 0x92, 0x4f, 0xb8, 0x95, 0x54,
0xa0, 0x8c, 0xf6, 0x70, 0x72, 0xd0, 0x2b, 0xc2, 0x7e, 0x34, 0x73, 0xed, 0x9f, 0x3c, 0xd4, 0xee,
0x35, 0x86, 0x9e, 0x42, 0xf1, 0xc6, 0x71, 0x03, 0xc2, 0xe5, 0x46, 0xa4, 0x85, 0x86, 0x70, 0x60,
0xda, 0x36, 0x27, 0x76, 0xfc, 0x32, 0xaa, 0x65, 0x71, 0x09, 0x4f, 0x1e, 0x68, 0x6b, 0x8d, 0xc4,
0x1b, 0x61, 0xe8, 0x73, 0x40, 0x0b, 0x42, 0x99, 0xe7, 0x50, 0x33, 0x60, 0xdc, 0x90, 0xa9, 0x2a,
0x22, 0xd5, 0xa3, 0x8c, 0xe7, 0x34, 0xce, 0x7a, 0x0d, 0x6a, 0x16, 0xbe, 0x51, 0x01, 0xfc, 0xdf,
0x0a, 0x9e, 0x65, 0x28, 0xba, 0xd9, 0x62, 0x06, 0xd1, 0xb3, 0xe2, 0xf9, 0x26, 0x77, 0x96, 0x8c,
0xaa, 0xfb, 0xe2, 0x2d, 0x78, 0x40, 0xf5, 0xfd, 0x14, 0x27, 0x2e, 0x7e, 0x26, 0x0e, 0x7d, 0x02,
0xb5, 0x54, 0x5a, 0xc6, 0x5d, 0x74, 0xc1, 0xd5, 0x42, 0x34, 0x71, 0x7c, 0x94, 0x1e, 0x8b, 0x6b,
0x8f, 0xbe, 0x82, 0x72, 0xf2, 0xd2, 0x0b, 0xb1, 0x56, 0xdb, 0x1f, 0xbc, 0xf6, 0x48, 0x0c, 0x24,
0x00, 0xa7, 0x50, 0x34, 0x81, 0x52, 0x10, 0x2f, 0x5b, 0x2d, 0x89, 0xa8, 0xce, 0x2e, 0x5a, 0x92,
0x3a, 0xc1, 0x09, 0x87, 0xf6, 0xaf, 0x02, 0x87, 0x1b, 0x02, 0xcb, 0xac, 0x5c, 0x79, 0xe3, 0xca,
0x0b, 0xef, 0xb6, 0xf2, 0x6c, 0xdb, 0xb9, 0x77, 0x6a, 0x3b, 0xff, 0xfe, 0x6d, 0xf7, 0xaa, 0x50,
0x49, 0x6f, 0x91, 0xf6, 0x3d, 0xd4, 0xee, 0x7d, 0x6e, 0x50, 0x1d, 0xf2, 0xbf, 0x92, 0x95, 0x9c,
0x40, 0xf4, 0x13, 0x1d, 0x43, 0x21, 0xde, 0x66, 0x7c, 0x11, 0x62, 0xe3, 0xbb, 0xdc, 0x37, 0xca,
0x0b, 0x13, 0x9e, 0x6c, 0xfd, 0x1e, 0xa0, 0x67, 0xf0, 0xb8, 0x7f, 0x36, 0xe9, 0x8d, 0xa7, 0x43,
0xe3, 0x72, 0x7a, 0x71, 0x3e, 0xec, 0x8f, 0x4f, 0xc7, 0xc3, 0x41, 0x7d, 0x0f, 0x95, 0x20, 0xdf,
0x9d, 0x0e, 0xea, 0x0a, 0x2a, 0x42, 0xee, 0x0c, 0xd7, 0x73, 0xe8, 0x39, 0x68, 0xdd, 0xe9, 0xc0,
0xf8, 0x79, 0x3c, 0x1b, 0x19, 0x93, 0xee, 0xac, 0x3f, 0x1a, 0x4f, 0x5f, 0x19, 0x78, 0x78, 0x71,
0x76, 0x89, 0xfb, 0xc3, 0x7a, 0xbe, 0xf7, 0xbb, 0x02, 0xaa, 0xc5, 0xbc, 0xad, 0x2d, 0xf7, 0x20,
0xee, 0x39, 0x1a, 0xde, 0xb9, 0xf2, 0xcb, 0x0f, 0x12, 0x63, 0x33, 0xd7, 0xa4, 0xb6, 0xce, 0xb8,
0xdd, 0xb2, 0x09, 0x15, 0xa3, 0x6d, 0xc5, 0x2e, 0xd3, 0x77, 0x96, 0x9b, 0xff, 0x4c, 0x5e, 0xae,
0xad, 0x3f, 0x72, 0xda, 0xab, 0x98, 0xa0, 0xef, 0xb2, 0x70, 0xa1, 0x4f, 0xd6, 0xa9, 0xae, 0x3a,
0x7f, 0x26, 0xce, 0x6b, 0xe1, 0xbc, 0x5e, 0x3b, 0xaf, 0xaf, 0x3a, 0xf3, 0xa2, 0x48, 0xd2, 0xf9,
0x2f, 0x00, 0x00, 0xff, 0xff, 0x66, 0xb5, 0x16, 0x64, 0x76, 0x09, 0x00, 0x00,
}

View File

@ -0,0 +1,527 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: google/monitoring/v3/alert_service.proto
package monitoring
import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
import _ "google.golang.org/genproto/googleapis/api/annotations"
import google_protobuf5 "github.com/golang/protobuf/ptypes/empty"
import google_protobuf6 "google.golang.org/genproto/protobuf/field_mask"
import (
context "golang.org/x/net/context"
grpc "google.golang.org/grpc"
)
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// The protocol for the `CreateAlertPolicy` request.
type CreateAlertPolicyRequest struct {
// The project in which to create the alerting policy. The format is
// `projects/[PROJECT_ID]`.
//
// Note that this field names the parent container in which the alerting
// policy will be written, not the name of the created policy. The alerting
// policy that is returned will have a name that contains a normalized
// representation of this name as a prefix but adds a suffix of the form
// `/alertPolicies/[POLICY_ID]`, identifying the policy in the container.
Name string `protobuf:"bytes,3,opt,name=name" json:"name,omitempty"`
// The requested alerting policy. You should omit the `name` field in this
// policy. The name will be returned in the new policy, including
// a new [ALERT_POLICY_ID] value.
AlertPolicy *AlertPolicy `protobuf:"bytes,2,opt,name=alert_policy,json=alertPolicy" json:"alert_policy,omitempty"`
}
func (m *CreateAlertPolicyRequest) Reset() { *m = CreateAlertPolicyRequest{} }
func (m *CreateAlertPolicyRequest) String() string { return proto.CompactTextString(m) }
func (*CreateAlertPolicyRequest) ProtoMessage() {}
func (*CreateAlertPolicyRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} }
func (m *CreateAlertPolicyRequest) GetName() string {
if m != nil {
return m.Name
}
return ""
}
func (m *CreateAlertPolicyRequest) GetAlertPolicy() *AlertPolicy {
if m != nil {
return m.AlertPolicy
}
return nil
}
// The protocol for the `GetAlertPolicy` request.
type GetAlertPolicyRequest struct {
// The alerting policy to retrieve. The format is
//
// projects/[PROJECT_ID]/alertPolicies/[ALERT_POLICY_ID]
Name string `protobuf:"bytes,3,opt,name=name" json:"name,omitempty"`
}
func (m *GetAlertPolicyRequest) Reset() { *m = GetAlertPolicyRequest{} }
func (m *GetAlertPolicyRequest) String() string { return proto.CompactTextString(m) }
func (*GetAlertPolicyRequest) ProtoMessage() {}
func (*GetAlertPolicyRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} }
func (m *GetAlertPolicyRequest) GetName() string {
if m != nil {
return m.Name
}
return ""
}
// The protocol for the `ListAlertPolicies` request.
type ListAlertPoliciesRequest struct {
// The project whose alert policies are to be listed. The format is
//
// projects/[PROJECT_ID]
//
// Note that this field names the parent container in which the alerting
// policies to be listed are stored. To retrieve a single alerting policy
// by name, use the
// [GetAlertPolicy][google.monitoring.v3.AlertPolicyService.GetAlertPolicy]
// operation, instead.
Name string `protobuf:"bytes,4,opt,name=name" json:"name,omitempty"`
// If provided, this field specifies the criteria that must be met by
// alert policies to be included in the response.
//
// For more details, see [sorting and
// filtering](/monitoring/api/v3/sorting-and-filtering).
Filter string `protobuf:"bytes,5,opt,name=filter" json:"filter,omitempty"`
// A comma-separated list of fields by which to sort the result. Supports
// the same set of field references as the `filter` field. Entries can be
// prefixed with a minus sign to sort by the field in descending order.
//
// For more details, see [sorting and
// filtering](/monitoring/api/v3/sorting-and-filtering).
OrderBy string `protobuf:"bytes,6,opt,name=order_by,json=orderBy" json:"order_by,omitempty"`
// The maximum number of results to return in a single response.
PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"`
// If this field is not empty then it must contain the `nextPageToken` value
// returned by a previous call to this method. Using this field causes the
// method to return more results from the previous method call.
PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"`
}
func (m *ListAlertPoliciesRequest) Reset() { *m = ListAlertPoliciesRequest{} }
func (m *ListAlertPoliciesRequest) String() string { return proto.CompactTextString(m) }
func (*ListAlertPoliciesRequest) ProtoMessage() {}
func (*ListAlertPoliciesRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} }
func (m *ListAlertPoliciesRequest) GetName() string {
if m != nil {
return m.Name
}
return ""
}
func (m *ListAlertPoliciesRequest) GetFilter() string {
if m != nil {
return m.Filter
}
return ""
}
func (m *ListAlertPoliciesRequest) GetOrderBy() string {
if m != nil {
return m.OrderBy
}
return ""
}
func (m *ListAlertPoliciesRequest) GetPageSize() int32 {
if m != nil {
return m.PageSize
}
return 0
}
func (m *ListAlertPoliciesRequest) GetPageToken() string {
if m != nil {
return m.PageToken
}
return ""
}
// The protocol for the `ListAlertPolicies` response.
type ListAlertPoliciesResponse struct {
// The returned alert policies.
AlertPolicies []*AlertPolicy `protobuf:"bytes,3,rep,name=alert_policies,json=alertPolicies" json:"alert_policies,omitempty"`
// If there might be more results than were returned, then this field is set
// to a non-empty value. To see the additional results,
// use that value as `pageToken` in the next call to this method.
NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"`
}
func (m *ListAlertPoliciesResponse) Reset() { *m = ListAlertPoliciesResponse{} }
func (m *ListAlertPoliciesResponse) String() string { return proto.CompactTextString(m) }
func (*ListAlertPoliciesResponse) ProtoMessage() {}
func (*ListAlertPoliciesResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} }
func (m *ListAlertPoliciesResponse) GetAlertPolicies() []*AlertPolicy {
if m != nil {
return m.AlertPolicies
}
return nil
}
func (m *ListAlertPoliciesResponse) GetNextPageToken() string {
if m != nil {
return m.NextPageToken
}
return ""
}
// The protocol for the `UpdateAlertPolicy` request.
type UpdateAlertPolicyRequest struct {
// Optional. A list of alerting policy field names. If this field is not
// empty, each listed field in the existing alerting policy is set to the
// value of the corresponding field in the supplied policy (`alert_policy`),
// or to the field's default value if the field is not in the supplied
// alerting policy. Fields not listed retain their previous value.
//
// Examples of valid field masks include `display_name`, `documentation`,
// `documentation.content`, `documentation.mime_type`, `user_labels`,
// `user_label.nameofkey`, `enabled`, `conditions`, `combiner`, etc.
//
// If this field is empty, then the supplied alerting policy replaces the
// existing policy. It is the same as deleting the existing policy and
// adding the supplied policy, except for the following:
//
// + The new policy will have the same `[ALERT_POLICY_ID]` as the former
// policy. This gives you continuity with the former policy in your
// notifications and incidents.
// + Conditions in the new policy will keep their former `[CONDITION_ID]` if
// the supplied condition includes the `name` field with that
// `[CONDITION_ID]`. If the supplied condition omits the `name` field,
// then a new `[CONDITION_ID]` is created.
UpdateMask *google_protobuf6.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"`
// Required. The updated alerting policy or the updated values for the
// fields listed in `update_mask`.
// If `update_mask` is not empty, any fields in this policy that are
// not in `update_mask` are ignored.
AlertPolicy *AlertPolicy `protobuf:"bytes,3,opt,name=alert_policy,json=alertPolicy" json:"alert_policy,omitempty"`
}
func (m *UpdateAlertPolicyRequest) Reset() { *m = UpdateAlertPolicyRequest{} }
func (m *UpdateAlertPolicyRequest) String() string { return proto.CompactTextString(m) }
func (*UpdateAlertPolicyRequest) ProtoMessage() {}
func (*UpdateAlertPolicyRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} }
func (m *UpdateAlertPolicyRequest) GetUpdateMask() *google_protobuf6.FieldMask {
if m != nil {
return m.UpdateMask
}
return nil
}
func (m *UpdateAlertPolicyRequest) GetAlertPolicy() *AlertPolicy {
if m != nil {
return m.AlertPolicy
}
return nil
}
// The protocol for the `DeleteAlertPolicy` request.
type DeleteAlertPolicyRequest struct {
// The alerting policy to delete. The format is:
//
// projects/[PROJECT_ID]/alertPolicies/[ALERT_POLICY_ID]
//
// For more information, see [AlertPolicy][google.monitoring.v3.AlertPolicy].
Name string `protobuf:"bytes,3,opt,name=name" json:"name,omitempty"`
}
func (m *DeleteAlertPolicyRequest) Reset() { *m = DeleteAlertPolicyRequest{} }
func (m *DeleteAlertPolicyRequest) String() string { return proto.CompactTextString(m) }
func (*DeleteAlertPolicyRequest) ProtoMessage() {}
func (*DeleteAlertPolicyRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} }
func (m *DeleteAlertPolicyRequest) GetName() string {
if m != nil {
return m.Name
}
return ""
}
func init() {
proto.RegisterType((*CreateAlertPolicyRequest)(nil), "google.monitoring.v3.CreateAlertPolicyRequest")
proto.RegisterType((*GetAlertPolicyRequest)(nil), "google.monitoring.v3.GetAlertPolicyRequest")
proto.RegisterType((*ListAlertPoliciesRequest)(nil), "google.monitoring.v3.ListAlertPoliciesRequest")
proto.RegisterType((*ListAlertPoliciesResponse)(nil), "google.monitoring.v3.ListAlertPoliciesResponse")
proto.RegisterType((*UpdateAlertPolicyRequest)(nil), "google.monitoring.v3.UpdateAlertPolicyRequest")
proto.RegisterType((*DeleteAlertPolicyRequest)(nil), "google.monitoring.v3.DeleteAlertPolicyRequest")
}
// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConn
// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion4
// Client API for AlertPolicyService service
type AlertPolicyServiceClient interface {
// Lists the existing alerting policies for the project.
ListAlertPolicies(ctx context.Context, in *ListAlertPoliciesRequest, opts ...grpc.CallOption) (*ListAlertPoliciesResponse, error)
// Gets a single alerting policy.
GetAlertPolicy(ctx context.Context, in *GetAlertPolicyRequest, opts ...grpc.CallOption) (*AlertPolicy, error)
// Creates a new alerting policy.
CreateAlertPolicy(ctx context.Context, in *CreateAlertPolicyRequest, opts ...grpc.CallOption) (*AlertPolicy, error)
// Deletes an alerting policy.
DeleteAlertPolicy(ctx context.Context, in *DeleteAlertPolicyRequest, opts ...grpc.CallOption) (*google_protobuf5.Empty, error)
// Updates an alerting policy. You can either replace the entire policy with
// a new one or replace only certain fields in the current alerting policy by
// specifying the fields to be updated via `updateMask`. Returns the
// updated alerting policy.
UpdateAlertPolicy(ctx context.Context, in *UpdateAlertPolicyRequest, opts ...grpc.CallOption) (*AlertPolicy, error)
}
type alertPolicyServiceClient struct {
cc *grpc.ClientConn
}
func NewAlertPolicyServiceClient(cc *grpc.ClientConn) AlertPolicyServiceClient {
return &alertPolicyServiceClient{cc}
}
func (c *alertPolicyServiceClient) ListAlertPolicies(ctx context.Context, in *ListAlertPoliciesRequest, opts ...grpc.CallOption) (*ListAlertPoliciesResponse, error) {
out := new(ListAlertPoliciesResponse)
err := grpc.Invoke(ctx, "/google.monitoring.v3.AlertPolicyService/ListAlertPolicies", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *alertPolicyServiceClient) GetAlertPolicy(ctx context.Context, in *GetAlertPolicyRequest, opts ...grpc.CallOption) (*AlertPolicy, error) {
out := new(AlertPolicy)
err := grpc.Invoke(ctx, "/google.monitoring.v3.AlertPolicyService/GetAlertPolicy", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *alertPolicyServiceClient) CreateAlertPolicy(ctx context.Context, in *CreateAlertPolicyRequest, opts ...grpc.CallOption) (*AlertPolicy, error) {
out := new(AlertPolicy)
err := grpc.Invoke(ctx, "/google.monitoring.v3.AlertPolicyService/CreateAlertPolicy", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *alertPolicyServiceClient) DeleteAlertPolicy(ctx context.Context, in *DeleteAlertPolicyRequest, opts ...grpc.CallOption) (*google_protobuf5.Empty, error) {
out := new(google_protobuf5.Empty)
err := grpc.Invoke(ctx, "/google.monitoring.v3.AlertPolicyService/DeleteAlertPolicy", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *alertPolicyServiceClient) UpdateAlertPolicy(ctx context.Context, in *UpdateAlertPolicyRequest, opts ...grpc.CallOption) (*AlertPolicy, error) {
out := new(AlertPolicy)
err := grpc.Invoke(ctx, "/google.monitoring.v3.AlertPolicyService/UpdateAlertPolicy", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// Server API for AlertPolicyService service
type AlertPolicyServiceServer interface {
// Lists the existing alerting policies for the project.
ListAlertPolicies(context.Context, *ListAlertPoliciesRequest) (*ListAlertPoliciesResponse, error)
// Gets a single alerting policy.
GetAlertPolicy(context.Context, *GetAlertPolicyRequest) (*AlertPolicy, error)
// Creates a new alerting policy.
CreateAlertPolicy(context.Context, *CreateAlertPolicyRequest) (*AlertPolicy, error)
// Deletes an alerting policy.
DeleteAlertPolicy(context.Context, *DeleteAlertPolicyRequest) (*google_protobuf5.Empty, error)
// Updates an alerting policy. You can either replace the entire policy with
// a new one or replace only certain fields in the current alerting policy by
// specifying the fields to be updated via `updateMask`. Returns the
// updated alerting policy.
UpdateAlertPolicy(context.Context, *UpdateAlertPolicyRequest) (*AlertPolicy, error)
}
func RegisterAlertPolicyServiceServer(s *grpc.Server, srv AlertPolicyServiceServer) {
s.RegisterService(&_AlertPolicyService_serviceDesc, srv)
}
func _AlertPolicyService_ListAlertPolicies_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ListAlertPoliciesRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(AlertPolicyServiceServer).ListAlertPolicies(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.monitoring.v3.AlertPolicyService/ListAlertPolicies",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(AlertPolicyServiceServer).ListAlertPolicies(ctx, req.(*ListAlertPoliciesRequest))
}
return interceptor(ctx, in, info, handler)
}
func _AlertPolicyService_GetAlertPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetAlertPolicyRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(AlertPolicyServiceServer).GetAlertPolicy(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.monitoring.v3.AlertPolicyService/GetAlertPolicy",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(AlertPolicyServiceServer).GetAlertPolicy(ctx, req.(*GetAlertPolicyRequest))
}
return interceptor(ctx, in, info, handler)
}
func _AlertPolicyService_CreateAlertPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(CreateAlertPolicyRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(AlertPolicyServiceServer).CreateAlertPolicy(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.monitoring.v3.AlertPolicyService/CreateAlertPolicy",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(AlertPolicyServiceServer).CreateAlertPolicy(ctx, req.(*CreateAlertPolicyRequest))
}
return interceptor(ctx, in, info, handler)
}
func _AlertPolicyService_DeleteAlertPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(DeleteAlertPolicyRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(AlertPolicyServiceServer).DeleteAlertPolicy(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.monitoring.v3.AlertPolicyService/DeleteAlertPolicy",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(AlertPolicyServiceServer).DeleteAlertPolicy(ctx, req.(*DeleteAlertPolicyRequest))
}
return interceptor(ctx, in, info, handler)
}
func _AlertPolicyService_UpdateAlertPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(UpdateAlertPolicyRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(AlertPolicyServiceServer).UpdateAlertPolicy(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.monitoring.v3.AlertPolicyService/UpdateAlertPolicy",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(AlertPolicyServiceServer).UpdateAlertPolicy(ctx, req.(*UpdateAlertPolicyRequest))
}
return interceptor(ctx, in, info, handler)
}
var _AlertPolicyService_serviceDesc = grpc.ServiceDesc{
ServiceName: "google.monitoring.v3.AlertPolicyService",
HandlerType: (*AlertPolicyServiceServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "ListAlertPolicies",
Handler: _AlertPolicyService_ListAlertPolicies_Handler,
},
{
MethodName: "GetAlertPolicy",
Handler: _AlertPolicyService_GetAlertPolicy_Handler,
},
{
MethodName: "CreateAlertPolicy",
Handler: _AlertPolicyService_CreateAlertPolicy_Handler,
},
{
MethodName: "DeleteAlertPolicy",
Handler: _AlertPolicyService_DeleteAlertPolicy_Handler,
},
{
MethodName: "UpdateAlertPolicy",
Handler: _AlertPolicyService_UpdateAlertPolicy_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "google/monitoring/v3/alert_service.proto",
}
func init() { proto.RegisterFile("google/monitoring/v3/alert_service.proto", fileDescriptor1) }
var fileDescriptor1 = []byte{
// 656 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x55, 0x41, 0x6f, 0xd3, 0x4c,
0x10, 0x95, 0x93, 0x36, 0x5f, 0xbb, 0xfd, 0x5a, 0x94, 0x15, 0x54, 0xae, 0x0b, 0x52, 0x30, 0x2a,
0x54, 0xad, 0xb0, 0xa5, 0xf8, 0x04, 0x15, 0x48, 0xa4, 0x85, 0xf6, 0x40, 0xa5, 0x28, 0x85, 0x1e,
0x50, 0xa4, 0x68, 0x93, 0x4c, 0xac, 0x25, 0x8e, 0xd7, 0x78, 0x37, 0x11, 0x29, 0xea, 0x85, 0x23,
0x12, 0xe2, 0xc0, 0x99, 0x03, 0x47, 0x38, 0x20, 0x7e, 0x07, 0x57, 0xfe, 0x02, 0x3f, 0x04, 0x79,
0xed, 0x34, 0x76, 0x6d, 0xab, 0x16, 0xb7, 0xcc, 0xce, 0xdb, 0x99, 0xb7, 0x6f, 0xde, 0x38, 0x68,
0xdb, 0x66, 0xcc, 0x76, 0xc0, 0x1c, 0x31, 0x97, 0x0a, 0xe6, 0x53, 0xd7, 0x36, 0x27, 0x96, 0x49,
0x1c, 0xf0, 0x45, 0x87, 0x83, 0x3f, 0xa1, 0x3d, 0x30, 0x3c, 0x9f, 0x09, 0x86, 0xaf, 0x87, 0x48,
0x63, 0x8e, 0x34, 0x26, 0x96, 0x76, 0x33, 0xba, 0x4f, 0x3c, 0x6a, 0x12, 0xd7, 0x65, 0x82, 0x08,
0xca, 0x5c, 0x1e, 0xde, 0xd1, 0x6a, 0xf9, 0xd5, 0x23, 0xc4, 0x66, 0x84, 0x90, 0x51, 0x77, 0x3c,
0x30, 0x61, 0xe4, 0x89, 0xe9, 0xa5, 0xeb, 0x17, 0xc9, 0x01, 0x05, 0xa7, 0xdf, 0x19, 0x11, 0x3e,
0x0c, 0x11, 0xba, 0x40, 0xea, 0xbe, 0x0f, 0x44, 0xc0, 0x93, 0xa0, 0x66, 0x93, 0x39, 0xb4, 0x37,
0x6d, 0xc1, 0x9b, 0x31, 0x70, 0x81, 0x31, 0x5a, 0x70, 0xc9, 0x08, 0xd4, 0x72, 0x4d, 0xd9, 0x5e,
0x6e, 0xc9, 0xdf, 0xf8, 0x00, 0xfd, 0x1f, 0xbe, 0xcd, 0x93, 0x50, 0xb5, 0x54, 0x53, 0xb6, 0x57,
0xea, 0xb7, 0x8d, 0xac, 0xb7, 0x19, 0xf1, 0x9a, 0x2b, 0x64, 0x1e, 0xe8, 0xbb, 0xe8, 0xc6, 0x21,
0x88, 0x62, 0x2d, 0xf5, 0x2f, 0x0a, 0x52, 0x9f, 0x53, 0x1e, 0x83, 0x53, 0xe0, 0x97, 0x2f, 0x2c,
0xc4, 0x38, 0xae, 0xa3, 0xca, 0x80, 0x3a, 0x02, 0x7c, 0x75, 0x51, 0x9e, 0x46, 0x11, 0xde, 0x40,
0x4b, 0xcc, 0xef, 0x83, 0xdf, 0xe9, 0x4e, 0xd5, 0x8a, 0xcc, 0xfc, 0x27, 0xe3, 0xc6, 0x14, 0x6f,
0xa2, 0x65, 0x8f, 0xd8, 0xd0, 0xe1, 0xf4, 0x0c, 0xe4, 0x9b, 0x16, 0x5b, 0x4b, 0xc1, 0xc1, 0x09,
0x3d, 0x03, 0x7c, 0x0b, 0x21, 0x99, 0x14, 0x6c, 0x08, 0x6e, 0x44, 0x4d, 0xc2, 0x5f, 0x04, 0x07,
0xfa, 0x47, 0x05, 0x6d, 0x64, 0xf0, 0xe3, 0x1e, 0x73, 0x39, 0xe0, 0x23, 0xb4, 0x16, 0x13, 0x8c,
0x02, 0x57, 0xcb, 0xb5, 0x72, 0x31, 0xc9, 0x56, 0x49, 0xbc, 0x22, 0xbe, 0x8b, 0xae, 0xb9, 0xf0,
0x56, 0x74, 0x62, 0x5c, 0x4a, 0x92, 0xcb, 0x6a, 0x70, 0xdc, 0xbc, 0xe0, 0x13, 0xe8, 0xf5, 0xd2,
0xeb, 0x67, 0xcf, 0x74, 0x0f, 0xad, 0x8c, 0x65, 0x4e, 0x9a, 0x20, 0x1a, 0x9f, 0x36, 0xe3, 0x32,
0xf3, 0x89, 0xf1, 0x2c, 0xf0, 0xc9, 0x31, 0xe1, 0xc3, 0x16, 0x0a, 0xe1, 0xc1, 0xef, 0xd4, 0xf0,
0xcb, 0xff, 0x34, 0x7c, 0x03, 0xa9, 0x07, 0xe0, 0x40, 0x51, 0xcb, 0xd5, 0x7f, 0x54, 0x10, 0x8e,
0x41, 0x4f, 0xc2, 0xa5, 0xc2, 0x5f, 0x15, 0x54, 0x4d, 0xc9, 0x8e, 0x8d, 0x6c, 0x32, 0x79, 0xfe,
0xd1, 0xcc, 0xc2, 0xf8, 0x70, 0x9e, 0xfa, 0xee, 0xfb, 0xdf, 0x7f, 0x3e, 0x97, 0xb6, 0xf0, 0x9d,
0x60, 0x11, 0xdf, 0x05, 0x04, 0x1f, 0x79, 0x3e, 0x7b, 0x0d, 0x3d, 0xc1, 0xcd, 0x9d, 0x73, 0x33,
0x39, 0xb2, 0x4f, 0x0a, 0x5a, 0x4b, 0x1a, 0x1d, 0xef, 0x66, 0x37, 0xcc, 0x5c, 0x07, 0xed, 0x6a,
0x69, 0xf5, 0xfb, 0x92, 0xcf, 0x3d, 0xbc, 0x95, 0xc5, 0x27, 0x49, 0xc7, 0xdc, 0x39, 0x97, 0xaa,
0xa5, 0x16, 0x3e, 0x4f, 0xb5, 0xbc, 0x2f, 0x43, 0x11, 0x5e, 0x0f, 0x24, 0x2f, 0x4b, 0x2f, 0xa2,
0xd3, 0xc3, 0x84, 0xad, 0xf0, 0x07, 0x05, 0x55, 0x53, 0x0e, 0xc9, 0xe3, 0x98, 0x67, 0x25, 0x6d,
0x3d, 0x65, 0xea, 0xa7, 0xc1, 0x97, 0x71, 0x26, 0xd8, 0x4e, 0x41, 0xc1, 0x7e, 0x2a, 0xa8, 0x9a,
0xda, 0xa6, 0x3c, 0x32, 0x79, 0x6b, 0x57, 0x44, 0xb0, 0x23, 0xc9, 0xab, 0x51, 0xaf, 0x4b, 0x5e,
0x71, 0x41, 0x8c, 0xab, 0x48, 0x26, 0xf5, 0x6b, 0x7c, 0x53, 0x90, 0xda, 0x63, 0xa3, 0xcc, 0x96,
0x8d, 0xaa, 0xec, 0x19, 0x2d, 0x51, 0x33, 0x90, 0xa6, 0xa9, 0xbc, 0x7a, 0x1c, 0x41, 0x6d, 0xe6,
0x10, 0xd7, 0x36, 0x98, 0x6f, 0x9b, 0x36, 0xb8, 0x52, 0x38, 0x33, 0x4c, 0x11, 0x8f, 0xf2, 0xe4,
0xbf, 0xd0, 0xde, 0x3c, 0xfa, 0x5e, 0xd2, 0x0e, 0xc3, 0x02, 0xfb, 0x0e, 0x1b, 0xf7, 0x8d, 0xe3,
0x79, 0xc7, 0x53, 0xeb, 0xd7, 0x2c, 0xd9, 0x96, 0xc9, 0xf6, 0x3c, 0xd9, 0x3e, 0xb5, 0xba, 0x15,
0xd9, 0xc4, 0xfa, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x6f, 0x1f, 0xe6, 0xf0, 0x47, 0x07, 0x00, 0x00,
}

View File

@ -1,61 +1,12 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: google/monitoring/v3/common.proto
/*
Package monitoring is a generated protocol buffer package.
It is generated from these files:
google/monitoring/v3/common.proto
google/monitoring/v3/group.proto
google/monitoring/v3/group_service.proto
google/monitoring/v3/metric.proto
google/monitoring/v3/metric_service.proto
google/monitoring/v3/uptime.proto
google/monitoring/v3/uptime_service.proto
It has these top-level messages:
TypedValue
TimeInterval
Aggregation
Group
ListGroupsRequest
ListGroupsResponse
GetGroupRequest
CreateGroupRequest
UpdateGroupRequest
DeleteGroupRequest
ListGroupMembersRequest
ListGroupMembersResponse
Point
TimeSeries
ListMonitoredResourceDescriptorsRequest
ListMonitoredResourceDescriptorsResponse
GetMonitoredResourceDescriptorRequest
ListMetricDescriptorsRequest
ListMetricDescriptorsResponse
GetMetricDescriptorRequest
CreateMetricDescriptorRequest
DeleteMetricDescriptorRequest
ListTimeSeriesRequest
ListTimeSeriesResponse
CreateTimeSeriesRequest
CreateTimeSeriesError
UptimeCheckConfig
UptimeCheckIp
ListUptimeCheckConfigsRequest
ListUptimeCheckConfigsResponse
GetUptimeCheckConfigRequest
CreateUptimeCheckConfigRequest
UpdateUptimeCheckConfigRequest
DeleteUptimeCheckConfigRequest
ListUptimeCheckIpsRequest
ListUptimeCheckIpsResponse
*/
package monitoring
import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
import _ "google.golang.org/genproto/googleapis/api/annotations"
import google_api2 "google.golang.org/genproto/googleapis/api/distribution"
import google_protobuf3 "github.com/golang/protobuf/ptypes/duration"
import google_protobuf2 "github.com/golang/protobuf/ptypes/timestamp"
@ -65,11 +16,87 @@ 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
// Specifies an ordering relationship on two arguments, here called left and
// right.
type ComparisonType int32
const (
// No ordering relationship is specified.
ComparisonType_COMPARISON_UNSPECIFIED ComparisonType = 0
// The left argument is greater than the right argument.
ComparisonType_COMPARISON_GT ComparisonType = 1
// The left argument is greater than or equal to the right argument.
ComparisonType_COMPARISON_GE ComparisonType = 2
// The left argument is less than the right argument.
ComparisonType_COMPARISON_LT ComparisonType = 3
// The left argument is less than or equal to the right argument.
ComparisonType_COMPARISON_LE ComparisonType = 4
// The left argument is equal to the right argument.
ComparisonType_COMPARISON_EQ ComparisonType = 5
// The left argument is not equal to the right argument.
ComparisonType_COMPARISON_NE ComparisonType = 6
)
var ComparisonType_name = map[int32]string{
0: "COMPARISON_UNSPECIFIED",
1: "COMPARISON_GT",
2: "COMPARISON_GE",
3: "COMPARISON_LT",
4: "COMPARISON_LE",
5: "COMPARISON_EQ",
6: "COMPARISON_NE",
}
var ComparisonType_value = map[string]int32{
"COMPARISON_UNSPECIFIED": 0,
"COMPARISON_GT": 1,
"COMPARISON_GE": 2,
"COMPARISON_LT": 3,
"COMPARISON_LE": 4,
"COMPARISON_EQ": 5,
"COMPARISON_NE": 6,
}
func (x ComparisonType) String() string {
return proto.EnumName(ComparisonType_name, int32(x))
}
func (ComparisonType) EnumDescriptor() ([]byte, []int) { return fileDescriptor2, []int{0} }
// The tier of service for a Stackdriver account. Please see the
// [service tiers documentation](https://cloud.google.com/monitoring/accounts/tiers)
// for more details.
type ServiceTier int32
const (
// An invalid sentinel value, used to indicate that a tier has not
// been provided explicitly.
ServiceTier_SERVICE_TIER_UNSPECIFIED ServiceTier = 0
// The Stackdriver Basic tier, a free tier of service that provides basic
// features, a moderate allotment of logs, and access to built-in metrics.
// A number of features are not available in this tier. For more details,
// see [the service tiers documentation](https://cloud.google.com/monitoring/accounts/tiers).
ServiceTier_SERVICE_TIER_BASIC ServiceTier = 1
// The Stackdriver Premium tier, a higher, more expensive tier of service
// that provides access to all Stackdriver features, lets you use Stackdriver
// with AWS accounts, and has a larger allotments for logs and metrics. For
// more details, see [the service tiers documentation](https://cloud.google.com/monitoring/accounts/tiers).
ServiceTier_SERVICE_TIER_PREMIUM ServiceTier = 2
)
var ServiceTier_name = map[int32]string{
0: "SERVICE_TIER_UNSPECIFIED",
1: "SERVICE_TIER_BASIC",
2: "SERVICE_TIER_PREMIUM",
}
var ServiceTier_value = map[string]int32{
"SERVICE_TIER_UNSPECIFIED": 0,
"SERVICE_TIER_BASIC": 1,
"SERVICE_TIER_PREMIUM": 2,
}
func (x ServiceTier) String() string {
return proto.EnumName(ServiceTier_name, int32(x))
}
func (ServiceTier) EnumDescriptor() ([]byte, []int) { return fileDescriptor2, []int{1} }
// The Aligner describes how to bring the data points in a single
// time series into temporal alignment.
@ -85,11 +112,22 @@ const (
// delta metric to a delta metric requires that the alignment
// period be increased. The value type of the result is the same
// as the value type of the input.
//
// One can think of this aligner as a rate but without time units; that
// is, the output is conceptually (second_point - first_point).
Aggregation_ALIGN_DELTA Aggregation_Aligner = 1
// Align and convert to a rate. This alignment is valid for
// cumulative metrics and delta metrics with numeric values. The output is a
// gauge metric with value type
// [DOUBLE][google.api.MetricDescriptor.ValueType.DOUBLE].
//
// One can think of this aligner as conceptually providing the slope of
// the line that passes through the value at the start and end of the
// window. In other words, this is conceptually ((y1 - y0)/(t1 - t0)),
// and the output unit is one that has a "/time" dimension.
//
// If, by rate, you are looking for percentage change, see the
// `ALIGN_PERCENT_CHANGE` aligner option.
Aggregation_ALIGN_RATE Aggregation_Aligner = 2
// Align by interpolating between adjacent points around the
// period boundary. This alignment is valid for gauge
@ -144,6 +182,12 @@ const (
// [INT64][google.api.MetricDescriptor.ValueType.INT64].
Aggregation_ALIGN_COUNT_TRUE Aggregation_Aligner = 16
// Align time series via aggregation. The resulting data point in
// the alignment period is the count of False-valued data points in the
// period. This alignment is valid for gauge metrics with
// Boolean values. The value type of the output is
// [INT64][google.api.MetricDescriptor.ValueType.INT64].
Aggregation_ALIGN_COUNT_FALSE Aggregation_Aligner = 24
// Align time series via aggregation. The resulting data point in
// the alignment period is the fraction of True-valued data points in the
// period. This alignment is valid for gauge metrics with Boolean values.
// The output value is in the range [0, 1] and has value type
@ -173,6 +217,22 @@ const (
// with distribution values. The output is a gauge metric with value type
// [DOUBLE][google.api.MetricDescriptor.ValueType.DOUBLE].
Aggregation_ALIGN_PERCENTILE_05 Aggregation_Aligner = 21
// Align and convert to a percentage change. This alignment is valid for
// gauge and delta metrics with numeric values. This alignment conceptually
// computes the equivalent of "((current - previous)/previous)*100"
// where previous value is determined based on the alignmentPeriod.
// In the event that previous is 0 the calculated value is infinity with the
// exception that if both (current - previous) and previous are 0 the
// calculated value is 0.
// A 10 minute moving mean is computed at each point of the time window
// prior to the above calculation to smooth the metric and prevent false
// positives from very short lived spikes.
// Only applicable for data that is >= 0. Any values < 0 are treated as
// no data. While delta metrics are accepted by this alignment special care
// should be taken that the values for the metric will always be positive.
// The output is a gauge metric with value type
// [DOUBLE][google.api.MetricDescriptor.ValueType.DOUBLE].
Aggregation_ALIGN_PERCENT_CHANGE Aggregation_Aligner = 23
)
var Aggregation_Aligner_name = map[int32]string{
@ -188,36 +248,40 @@ var Aggregation_Aligner_name = map[int32]string{
14: "ALIGN_SUM",
15: "ALIGN_STDDEV",
16: "ALIGN_COUNT_TRUE",
24: "ALIGN_COUNT_FALSE",
17: "ALIGN_FRACTION_TRUE",
18: "ALIGN_PERCENTILE_99",
19: "ALIGN_PERCENTILE_95",
20: "ALIGN_PERCENTILE_50",
21: "ALIGN_PERCENTILE_05",
23: "ALIGN_PERCENT_CHANGE",
}
var Aggregation_Aligner_value = map[string]int32{
"ALIGN_NONE": 0,
"ALIGN_DELTA": 1,
"ALIGN_RATE": 2,
"ALIGN_INTERPOLATE": 3,
"ALIGN_NEXT_OLDER": 4,
"ALIGN_MIN": 10,
"ALIGN_MAX": 11,
"ALIGN_MEAN": 12,
"ALIGN_COUNT": 13,
"ALIGN_SUM": 14,
"ALIGN_STDDEV": 15,
"ALIGN_COUNT_TRUE": 16,
"ALIGN_FRACTION_TRUE": 17,
"ALIGN_PERCENTILE_99": 18,
"ALIGN_PERCENTILE_95": 19,
"ALIGN_PERCENTILE_50": 20,
"ALIGN_PERCENTILE_05": 21,
"ALIGN_NONE": 0,
"ALIGN_DELTA": 1,
"ALIGN_RATE": 2,
"ALIGN_INTERPOLATE": 3,
"ALIGN_NEXT_OLDER": 4,
"ALIGN_MIN": 10,
"ALIGN_MAX": 11,
"ALIGN_MEAN": 12,
"ALIGN_COUNT": 13,
"ALIGN_SUM": 14,
"ALIGN_STDDEV": 15,
"ALIGN_COUNT_TRUE": 16,
"ALIGN_COUNT_FALSE": 24,
"ALIGN_FRACTION_TRUE": 17,
"ALIGN_PERCENTILE_99": 18,
"ALIGN_PERCENTILE_95": 19,
"ALIGN_PERCENTILE_50": 20,
"ALIGN_PERCENTILE_05": 21,
"ALIGN_PERCENT_CHANGE": 23,
}
func (x Aggregation_Aligner) String() string {
return proto.EnumName(Aggregation_Aligner_name, int32(x))
}
func (Aggregation_Aligner) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 0} }
func (Aggregation_Aligner) EnumDescriptor() ([]byte, []int) { return fileDescriptor2, []int{2, 0} }
// A Reducer describes how to aggregate data points from multiple
// time series into a single time series.
@ -263,6 +327,11 @@ const (
// and gauge metrics of Boolean value type. The value type of
// the output is [INT64][google.api.MetricDescriptor.ValueType.INT64].
Aggregation_REDUCE_COUNT_TRUE Aggregation_Reducer = 7
// Reduce by computing the count of False-valued data points across time
// series for each alignment period. This reducer is valid for delta
// and gauge metrics of Boolean value type. The value type of
// the output is [INT64][google.api.MetricDescriptor.ValueType.INT64].
Aggregation_REDUCE_COUNT_FALSE Aggregation_Reducer = 15
// Reduce by computing the fraction of True-valued data points across time
// series for each alignment period. This reducer is valid for delta
// and gauge metrics of Boolean value type. The output value is in the
@ -300,6 +369,7 @@ var Aggregation_Reducer_name = map[int32]string{
5: "REDUCE_STDDEV",
6: "REDUCE_COUNT",
7: "REDUCE_COUNT_TRUE",
15: "REDUCE_COUNT_FALSE",
8: "REDUCE_FRACTION_TRUE",
9: "REDUCE_PERCENTILE_99",
10: "REDUCE_PERCENTILE_95",
@ -315,6 +385,7 @@ var Aggregation_Reducer_value = map[string]int32{
"REDUCE_STDDEV": 5,
"REDUCE_COUNT": 6,
"REDUCE_COUNT_TRUE": 7,
"REDUCE_COUNT_FALSE": 15,
"REDUCE_FRACTION_TRUE": 8,
"REDUCE_PERCENTILE_99": 9,
"REDUCE_PERCENTILE_95": 10,
@ -325,7 +396,7 @@ var Aggregation_Reducer_value = map[string]int32{
func (x Aggregation_Reducer) String() string {
return proto.EnumName(Aggregation_Reducer_name, int32(x))
}
func (Aggregation_Reducer) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 1} }
func (Aggregation_Reducer) EnumDescriptor() ([]byte, []int) { return fileDescriptor2, []int{2, 1} }
// A single strongly-typed value.
type TypedValue struct {
@ -343,7 +414,7 @@ type TypedValue struct {
func (m *TypedValue) Reset() { *m = TypedValue{} }
func (m *TypedValue) String() string { return proto.CompactTextString(m) }
func (*TypedValue) ProtoMessage() {}
func (*TypedValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
func (*TypedValue) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0} }
type isTypedValue_Value interface {
isTypedValue_Value()
@ -544,7 +615,7 @@ type TimeInterval struct {
func (m *TimeInterval) Reset() { *m = TimeInterval{} }
func (m *TimeInterval) String() string { return proto.CompactTextString(m) }
func (*TimeInterval) ProtoMessage() {}
func (*TimeInterval) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
func (*TimeInterval) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{1} }
func (m *TimeInterval) GetEndTime() *google_protobuf2.Timestamp {
if m != nil {
@ -562,8 +633,9 @@ func (m *TimeInterval) GetStartTime() *google_protobuf2.Timestamp {
// Describes how to combine multiple time series to provide different views of
// the data. Aggregation consists of an alignment step on individual time
// series (`per_series_aligner`) followed by an optional reduction of the data
// across different time series (`cross_series_reducer`). For more details, see
// series (`alignment_period` and `per_series_aligner`) followed by an optional
// reduction step of the data across the aligned time series
// (`cross_series_reducer` and `group_by_fields`). For more details, see
// [Aggregation](/monitoring/api/learn_more#aggregation).
type Aggregation struct {
// The alignment period for per-[time series][google.monitoring.v3.TimeSeries]
@ -619,7 +691,7 @@ type Aggregation struct {
func (m *Aggregation) Reset() { *m = Aggregation{} }
func (m *Aggregation) String() string { return proto.CompactTextString(m) }
func (*Aggregation) ProtoMessage() {}
func (*Aggregation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
func (*Aggregation) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{2} }
func (m *Aggregation) GetAlignmentPeriod() *google_protobuf3.Duration {
if m != nil {
@ -653,62 +725,74 @@ func init() {
proto.RegisterType((*TypedValue)(nil), "google.monitoring.v3.TypedValue")
proto.RegisterType((*TimeInterval)(nil), "google.monitoring.v3.TimeInterval")
proto.RegisterType((*Aggregation)(nil), "google.monitoring.v3.Aggregation")
proto.RegisterEnum("google.monitoring.v3.ComparisonType", ComparisonType_name, ComparisonType_value)
proto.RegisterEnum("google.monitoring.v3.ServiceTier", ServiceTier_name, ServiceTier_value)
proto.RegisterEnum("google.monitoring.v3.Aggregation_Aligner", Aggregation_Aligner_name, Aggregation_Aligner_value)
proto.RegisterEnum("google.monitoring.v3.Aggregation_Reducer", Aggregation_Reducer_name, Aggregation_Reducer_value)
}
func init() { proto.RegisterFile("google/monitoring/v3/common.proto", fileDescriptor0) }
func init() { proto.RegisterFile("google/monitoring/v3/common.proto", fileDescriptor2) }
var fileDescriptor0 = []byte{
// 792 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x55, 0xdd, 0x6a, 0xe3, 0x46,
0x14, 0xb6, 0xec, 0x64, 0x1d, 0x1f, 0x39, 0xf1, 0x64, 0xd6, 0x4b, 0xdd, 0x40, 0xbb, 0x5e, 0x17,
0x8a, 0x7b, 0x23, 0x87, 0xb8, 0x2e, 0x84, 0x42, 0x41, 0xb1, 0xb5, 0x1b, 0x83, 0x23, 0x9b, 0x59,
0x25, 0x0d, 0x6d, 0x40, 0xc8, 0xd1, 0xac, 0x10, 0xc8, 0x1a, 0x31, 0x92, 0x0d, 0xb9, 0xeb, 0x6b,
0xf4, 0xba, 0x77, 0xfb, 0x28, 0x7d, 0x84, 0x3e, 0x44, 0x9f, 0xa1, 0x68, 0x66, 0xb4, 0x52, 0x5a,
0x97, 0xf6, 0xf2, 0xfb, 0x39, 0xdf, 0xe8, 0x7c, 0x23, 0xd9, 0xf0, 0x26, 0x60, 0x2c, 0x88, 0xe8,
0x68, 0xc3, 0xe2, 0x30, 0x63, 0x3c, 0x8c, 0x83, 0xd1, 0x6e, 0x3c, 0x7a, 0x64, 0x9b, 0x0d, 0x8b,
0x8d, 0x84, 0xb3, 0x8c, 0xe1, 0xae, 0xb4, 0x18, 0xa5, 0xc5, 0xd8, 0x8d, 0xcf, 0xbe, 0x50, 0x83,
0x5e, 0x12, 0x8e, 0xfc, 0x30, 0xcd, 0x78, 0xb8, 0xde, 0x66, 0x61, 0x31, 0x74, 0xf6, 0xa5, 0x92,
0x05, 0x5a, 0x6f, 0x3f, 0x8c, 0xfc, 0x2d, 0xf7, 0x2a, 0xfa, 0xeb, 0xbf, 0xeb, 0x59, 0xb8, 0xa1,
0x69, 0xe6, 0x6d, 0x12, 0x69, 0x18, 0xfc, 0xa9, 0x01, 0x38, 0x4f, 0x09, 0xf5, 0xef, 0xbc, 0x68,
0x4b, 0xf1, 0x6b, 0x80, 0x35, 0x63, 0x91, 0xbb, 0xcb, 0x51, 0x4f, 0xeb, 0x6b, 0xc3, 0xa3, 0xeb,
0x1a, 0x69, 0xe5, 0x9c, 0x34, 0xbc, 0x01, 0x3d, 0x8c, 0xb3, 0xef, 0xbe, 0x55, 0x8e, 0x7a, 0x5f,
0x1b, 0x36, 0xae, 0x6b, 0x04, 0x04, 0x29, 0x2d, 0x5f, 0x41, 0xdb, 0x67, 0xdb, 0x75, 0x44, 0x95,
0xa7, 0xd1, 0xd7, 0x86, 0xda, 0x75, 0x8d, 0xe8, 0x92, 0xfd, 0x64, 0xca, 0x97, 0x89, 0x03, 0x65,
0x3a, 0xe8, 0x6b, 0xc3, 0x56, 0x6e, 0x92, 0xac, 0x34, 0xcd, 0x01, 0x57, 0x77, 0x56, 0xd6, 0xc3,
0xbe, 0x36, 0xd4, 0x2f, 0x7a, 0x86, 0xea, 0xcb, 0x4b, 0x42, 0x63, 0x56, 0x71, 0x5d, 0xd7, 0xc8,
0x69, 0x75, 0x4a, 0x44, 0x5d, 0x35, 0xe1, 0x50, 0x4c, 0x0f, 0x7e, 0xd1, 0xa0, 0xed, 0x84, 0x1b,
0x3a, 0x8f, 0x33, 0xca, 0x77, 0x5e, 0x84, 0x27, 0x70, 0x44, 0x63, 0xdf, 0xcd, 0x8b, 0x11, 0xeb,
0xe8, 0x17, 0x67, 0x45, 0x74, 0xd1, 0x9a, 0xe1, 0x14, 0xad, 0x91, 0x26, 0x8d, 0xfd, 0x1c, 0xe1,
0x4b, 0x80, 0x34, 0xf3, 0x78, 0x26, 0x07, 0xb5, 0xff, 0x1c, 0x6c, 0x09, 0x77, 0x8e, 0x07, 0x1f,
0x9b, 0xa0, 0x9b, 0x41, 0xc0, 0x69, 0x20, 0xae, 0x0a, 0xcf, 0x00, 0x79, 0x51, 0x18, 0xc4, 0x1b,
0x1a, 0x67, 0x6e, 0x42, 0x79, 0xc8, 0x7c, 0x15, 0xf8, 0xf9, 0x3f, 0x02, 0x67, 0xea, 0x7e, 0x49,
0xe7, 0xd3, 0xc8, 0x4a, 0x4c, 0xe0, 0x1f, 0x01, 0x27, 0x94, 0xbb, 0x29, 0xe5, 0x21, 0x4d, 0x5d,
0xa1, 0x52, 0x2e, 0x36, 0x3a, 0xb9, 0xf8, 0xc6, 0xd8, 0xf7, 0x72, 0x19, 0x95, 0x87, 0x30, 0x4c,
0x39, 0x40, 0x50, 0x42, 0xf9, 0x7b, 0x91, 0xa1, 0x18, 0xfc, 0x33, 0x74, 0x1f, 0x39, 0x4b, 0xd3,
0x22, 0x9a, 0x53, 0x7f, 0xfb, 0x48, 0xb9, 0xb8, 0xb2, 0xff, 0x15, 0x4d, 0xe4, 0x00, 0xc1, 0x22,
0x46, 0x86, 0x2b, 0x0e, 0x7f, 0x0d, 0x9d, 0x80, 0xb3, 0x6d, 0xe2, 0xae, 0x9f, 0xdc, 0x0f, 0x21,
0x8d, 0xfc, 0xb4, 0x77, 0xd8, 0x6f, 0x0c, 0x5b, 0xe4, 0x58, 0xd0, 0x57, 0x4f, 0x6f, 0x05, 0x39,
0xf8, 0xa3, 0x0e, 0xcd, 0xe2, 0x81, 0x4e, 0x00, 0xcc, 0xc5, 0xfc, 0x9d, 0xed, 0xda, 0x4b, 0xdb,
0x42, 0x35, 0xdc, 0x01, 0x5d, 0xe2, 0x99, 0xb5, 0x70, 0x4c, 0xa4, 0x95, 0x06, 0x62, 0x3a, 0x16,
0xaa, 0xe3, 0x57, 0x70, 0x2a, 0xf1, 0xdc, 0x76, 0x2c, 0xb2, 0x5a, 0x2e, 0x72, 0xba, 0x81, 0xbb,
0x80, 0x54, 0x8e, 0x75, 0xef, 0xb8, 0xcb, 0xc5, 0xcc, 0x22, 0xe8, 0x00, 0x1f, 0x43, 0x4b, 0xb2,
0x37, 0x73, 0x1b, 0x41, 0x05, 0x9a, 0xf7, 0x48, 0x2f, 0xa3, 0x6f, 0x2c, 0xd3, 0x46, 0xed, 0xf2,
0xec, 0xe9, 0xf2, 0xd6, 0x76, 0xd0, 0x71, 0xe9, 0x7f, 0x7f, 0x7b, 0x83, 0x4e, 0x30, 0x82, 0xb6,
0x82, 0xce, 0x6c, 0x66, 0xdd, 0xa1, 0x4e, 0x79, 0xaa, 0x98, 0x70, 0x1d, 0x72, 0x6b, 0x21, 0x84,
0x3f, 0x83, 0x97, 0x92, 0x7d, 0x4b, 0xcc, 0xa9, 0x33, 0x5f, 0xda, 0x52, 0x38, 0x2d, 0x85, 0x95,
0x45, 0xa6, 0x96, 0xed, 0xcc, 0x17, 0x96, 0x7b, 0x79, 0x89, 0xf0, 0x7e, 0x61, 0x82, 0x5e, 0xee,
0x15, 0x26, 0xe7, 0xa8, 0xbb, 0x57, 0x38, 0x9f, 0xa0, 0x57, 0x83, 0x5f, 0xeb, 0xd0, 0x2c, 0x2e,
0xa4, 0x03, 0x3a, 0xb1, 0x66, 0xb7, 0x53, 0xab, 0xd2, 0xae, 0x22, 0xc4, 0xca, 0xa2, 0xdd, 0x82,
0x98, 0xdb, 0xa8, 0x5e, 0xc5, 0xe6, 0x3d, 0x6a, 0x54, 0x70, 0x5e, 0xc1, 0x01, 0x3e, 0x85, 0xe3,
0x02, 0xcb, 0x0e, 0x0e, 0xf3, 0x56, 0x14, 0x25, 0x6b, 0x7b, 0x91, 0x5f, 0x51, 0x95, 0x91, 0xdb,
0x37, 0x71, 0x0f, 0xba, 0x8a, 0x7e, 0xde, 0xcb, 0x51, 0x45, 0x79, 0x5e, 0x4c, 0xeb, 0x5f, 0x94,
0x09, 0x82, 0xfd, 0xca, 0xe4, 0x1c, 0xe9, 0xfb, 0x95, 0xf3, 0x09, 0x6a, 0x5f, 0xfd, 0xa6, 0x41,
0xef, 0x91, 0x6d, 0xf6, 0xbe, 0xe5, 0x57, 0xfa, 0x54, 0xfc, 0x82, 0xaf, 0xf2, 0xaf, 0x73, 0xa5,
0xfd, 0xf4, 0x83, 0x32, 0x05, 0x2c, 0xf2, 0xe2, 0xc0, 0x60, 0x3c, 0x18, 0x05, 0x34, 0x16, 0xdf,
0xee, 0x48, 0x4a, 0x5e, 0x12, 0xa6, 0xcf, 0xff, 0x04, 0xbe, 0x2f, 0xd1, 0xc7, 0xfa, 0xd9, 0x3b,
0x19, 0x30, 0x8d, 0xd8, 0xd6, 0x37, 0x6e, 0xca, 0xb3, 0xee, 0xc6, 0xbf, 0x17, 0xe2, 0x83, 0x10,
0x1f, 0x4a, 0xf1, 0xe1, 0x6e, 0xbc, 0x7e, 0x21, 0x0e, 0x19, 0xff, 0x15, 0x00, 0x00, 0xff, 0xff,
0x57, 0xa4, 0xb9, 0xce, 0x68, 0x06, 0x00, 0x00,
var fileDescriptor2 = []byte{
// 954 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x95, 0xc1, 0x6e, 0xe3, 0x44,
0x18, 0xc7, 0xe3, 0xa4, 0x6d, 0x9a, 0xcf, 0x6d, 0x33, 0x9d, 0xed, 0x76, 0x43, 0xb5, 0xb0, 0xd9,
0x22, 0xa1, 0xb0, 0x07, 0xa7, 0x6a, 0x09, 0x52, 0x85, 0x84, 0xe4, 0x3a, 0xd3, 0xd6, 0x52, 0xe2,
0x84, 0x89, 0x53, 0x2a, 0x28, 0xb2, 0x9c, 0x66, 0xd6, 0xb2, 0x94, 0x78, 0x2c, 0xdb, 0xa9, 0xd4,
0x1b, 0x77, 0xde, 0x81, 0x0b, 0x37, 0x6e, 0xbc, 0x06, 0x0f, 0xc3, 0x85, 0x17, 0x40, 0x9e, 0x71,
0xd6, 0x4e, 0x08, 0x62, 0x8f, 0xdf, 0xef, 0xff, 0xff, 0xbe, 0x99, 0xf9, 0x8f, 0x35, 0x86, 0xb7,
0x1e, 0xe7, 0xde, 0x8c, 0xb5, 0xe7, 0x3c, 0xf0, 0x13, 0x1e, 0xf9, 0x81, 0xd7, 0x7e, 0xba, 0x68,
0x3f, 0xf2, 0xf9, 0x9c, 0x07, 0x5a, 0x18, 0xf1, 0x84, 0xe3, 0x23, 0x69, 0xd1, 0x72, 0x8b, 0xf6,
0x74, 0x71, 0xf2, 0x3a, 0x6b, 0x74, 0x43, 0xbf, 0xed, 0x06, 0x01, 0x4f, 0xdc, 0xc4, 0xe7, 0x41,
0x2c, 0x7b, 0x4e, 0x3e, 0x2d, 0xa8, 0x53, 0x3f, 0x4e, 0x22, 0x7f, 0xb2, 0x48, 0xf5, 0x4c, 0xfe,
0x2c, 0x93, 0x45, 0x35, 0x59, 0xbc, 0x6f, 0x4f, 0x17, 0x91, 0x5b, 0xd0, 0xdf, 0xac, 0xeb, 0x89,
0x3f, 0x67, 0x71, 0xe2, 0xce, 0x43, 0x69, 0x38, 0xfd, 0x4b, 0x01, 0xb0, 0x9f, 0x43, 0x36, 0xbd,
0x73, 0x67, 0x0b, 0x86, 0xdf, 0x00, 0x4c, 0x38, 0x9f, 0x39, 0x4f, 0x69, 0xd5, 0x50, 0x9a, 0x4a,
0x6b, 0xf7, 0xb6, 0x44, 0x6b, 0x29, 0x93, 0x86, 0xb7, 0xa0, 0xfa, 0x41, 0xf2, 0xf5, 0x57, 0x99,
0xa3, 0xdc, 0x54, 0x5a, 0x95, 0xdb, 0x12, 0x05, 0x01, 0xa5, 0xe5, 0x73, 0xd8, 0x9b, 0xf2, 0xc5,
0x64, 0xc6, 0x32, 0x4f, 0xa5, 0xa9, 0xb4, 0x94, 0xdb, 0x12, 0x55, 0x25, 0xfd, 0x60, 0x4a, 0x0f,
0x13, 0x78, 0x99, 0x69, 0xab, 0xa9, 0xb4, 0x6a, 0xa9, 0x49, 0x52, 0x69, 0x32, 0x01, 0x17, 0xcf,
0x9c, 0x59, 0xb7, 0x9b, 0x4a, 0x4b, 0x3d, 0x6f, 0x68, 0x59, 0x9a, 0x6e, 0xe8, 0x6b, 0xdd, 0x82,
0xeb, 0xb6, 0x44, 0x0f, 0x8b, 0x5d, 0x62, 0xd4, 0x55, 0x15, 0xb6, 0x45, 0xf7, 0xe9, 0xcf, 0x0a,
0xec, 0xd9, 0xfe, 0x9c, 0x99, 0x41, 0xc2, 0xa2, 0x27, 0x77, 0x86, 0x3b, 0xb0, 0xcb, 0x82, 0xa9,
0x93, 0x06, 0x23, 0x8e, 0xa3, 0x9e, 0x9f, 0x2c, 0x47, 0x2f, 0x53, 0xd3, 0xec, 0x65, 0x6a, 0xb4,
0xca, 0x82, 0x69, 0x5a, 0xe1, 0x4b, 0x80, 0x38, 0x71, 0xa3, 0x44, 0x36, 0x2a, 0xff, 0xdb, 0x58,
0x13, 0xee, 0xb4, 0x3e, 0xfd, 0xbb, 0x0a, 0xaa, 0xee, 0x79, 0x11, 0xf3, 0xc4, 0x55, 0xe1, 0x2e,
0x20, 0x77, 0xe6, 0x7b, 0xc1, 0x9c, 0x05, 0x89, 0x13, 0xb2, 0xc8, 0xe7, 0xd3, 0x6c, 0xe0, 0x27,
0xff, 0x1a, 0xd8, 0xcd, 0xee, 0x97, 0xd6, 0x3f, 0xb4, 0x0c, 0x45, 0x07, 0xfe, 0x1e, 0x70, 0xc8,
0x22, 0x27, 0x66, 0x91, 0xcf, 0x62, 0x47, 0xa8, 0x2c, 0x12, 0x27, 0x3a, 0x38, 0xff, 0x52, 0xdb,
0xf4, 0xe9, 0x69, 0x85, 0x4d, 0x68, 0xba, 0x6c, 0xa0, 0x28, 0x64, 0xd1, 0x48, 0xcc, 0xc8, 0x08,
0xfe, 0x11, 0x8e, 0x1e, 0x23, 0x1e, 0xc7, 0xcb, 0xd1, 0x11, 0x9b, 0x2e, 0x1e, 0x59, 0x24, 0xae,
0xec, 0xa3, 0x46, 0x53, 0xd9, 0x40, 0xb1, 0x18, 0x23, 0x87, 0x67, 0x0c, 0x7f, 0x01, 0x75, 0x2f,
0xe2, 0x8b, 0xd0, 0x99, 0x3c, 0x3b, 0xef, 0x7d, 0x36, 0x9b, 0xc6, 0x8d, 0xed, 0x66, 0xa5, 0x55,
0xa3, 0xfb, 0x02, 0x5f, 0x3d, 0x5f, 0x0b, 0x78, 0xfa, 0x4b, 0x05, 0xaa, 0xcb, 0x0d, 0x1d, 0x00,
0xe8, 0x3d, 0xf3, 0xc6, 0x72, 0xac, 0x81, 0x45, 0x50, 0x09, 0xd7, 0x41, 0x95, 0x75, 0x97, 0xf4,
0x6c, 0x1d, 0x29, 0xb9, 0x81, 0xea, 0x36, 0x41, 0x65, 0xfc, 0x12, 0x0e, 0x65, 0x6d, 0x5a, 0x36,
0xa1, 0xc3, 0x41, 0x2f, 0xc5, 0x15, 0x7c, 0x04, 0x28, 0x9b, 0x43, 0xee, 0x6d, 0x67, 0xd0, 0xeb,
0x12, 0x8a, 0xb6, 0xf0, 0x3e, 0xd4, 0x24, 0xed, 0x9b, 0x16, 0x82, 0x42, 0xa9, 0xdf, 0x23, 0x35,
0x1f, 0xdd, 0x27, 0xba, 0x85, 0xf6, 0xf2, 0xb5, 0x8d, 0xc1, 0xd8, 0xb2, 0xd1, 0x7e, 0xee, 0x1f,
0x8d, 0xfb, 0xe8, 0x00, 0x23, 0xd8, 0xcb, 0x4a, 0xbb, 0xdb, 0x25, 0x77, 0xa8, 0x9e, 0xaf, 0x2a,
0x3a, 0x1c, 0x9b, 0x8e, 0x09, 0x42, 0xf9, 0x16, 0x25, 0xbd, 0xd6, 0x7b, 0x23, 0x82, 0x1a, 0xf8,
0x15, 0xbc, 0x90, 0xf8, 0x9a, 0xea, 0x86, 0x6d, 0x0e, 0x2c, 0xe9, 0x3f, 0xcc, 0x85, 0x21, 0xa1,
0x06, 0xb1, 0x6c, 0xb3, 0x47, 0x9c, 0xcb, 0x4b, 0x84, 0x37, 0x0b, 0x1d, 0xf4, 0x62, 0xa3, 0xd0,
0x39, 0x43, 0x47, 0x1b, 0x85, 0xb3, 0x0e, 0x7a, 0x89, 0x1b, 0x70, 0xb4, 0x22, 0x38, 0xc6, 0xad,
0x6e, 0xdd, 0x10, 0xf4, 0xea, 0xf4, 0x8f, 0x32, 0x54, 0x97, 0x37, 0x58, 0x07, 0x95, 0x92, 0xee,
0xd8, 0x20, 0x85, 0xeb, 0xc8, 0x80, 0xc8, 0x48, 0x5c, 0xc7, 0x12, 0x98, 0x16, 0x2a, 0x17, 0x6b,
0xfd, 0x1e, 0x55, 0x0a, 0x75, 0x9a, 0xd9, 0x16, 0x3e, 0x84, 0xfd, 0x65, 0x2d, 0x43, 0xdb, 0x4e,
0x63, 0xcc, 0x90, 0xcc, 0x79, 0x27, 0x0d, 0xac, 0x48, 0x64, 0x2e, 0x55, 0x7c, 0x0c, 0x78, 0x05,
0xcb, 0x20, 0xeb, 0xe9, 0x59, 0x32, 0xbe, 0x9a, 0xe4, 0x6e, 0x41, 0x59, 0x8d, 0xb2, 0xf6, 0x1f,
0x4a, 0x07, 0xc1, 0x66, 0xa5, 0x73, 0x86, 0xd4, 0xcd, 0xca, 0x59, 0x07, 0xed, 0xbd, 0xfb, 0x55,
0x81, 0x03, 0x83, 0xcf, 0x43, 0x37, 0xf2, 0x63, 0x1e, 0xa4, 0x6f, 0x2e, 0x3e, 0x81, 0x63, 0x63,
0xd0, 0x1f, 0xea, 0xd4, 0x1c, 0x0d, 0x2c, 0x67, 0x6c, 0x8d, 0x86, 0xc4, 0x30, 0xaf, 0x4d, 0xd2,
0x45, 0xa5, 0x34, 0x84, 0x82, 0x76, 0x63, 0x23, 0x65, 0x1d, 0xa5, 0x5f, 0xf6, 0x2a, 0xea, 0xd9,
0xa8, 0xb2, 0x8e, 0x88, 0x0c, 0xb4, 0x80, 0xc8, 0x77, 0x68, 0x7b, 0x0d, 0x59, 0x04, 0xed, 0xbc,
0xfb, 0x09, 0xd4, 0x11, 0x8b, 0x9e, 0xfc, 0x47, 0x66, 0xfb, 0x2c, 0xc2, 0xaf, 0xa1, 0x31, 0x22,
0xf4, 0xce, 0x34, 0x88, 0x63, 0x9b, 0x84, 0xae, 0x6d, 0xef, 0x18, 0xf0, 0x8a, 0x7a, 0xa5, 0x8f,
0x4c, 0x03, 0x29, 0xe9, 0xf9, 0x57, 0xf8, 0x90, 0x92, 0xbe, 0x39, 0xee, 0xa3, 0xf2, 0xd5, 0x6f,
0x0a, 0x34, 0x1e, 0xf9, 0x7c, 0xe3, 0x73, 0x71, 0xa5, 0x1a, 0xe2, 0x47, 0x39, 0x4c, 0x9f, 0xb9,
0xa1, 0xf2, 0xc3, 0xb7, 0x99, 0xc9, 0xe3, 0x33, 0x37, 0xf0, 0x34, 0x1e, 0x79, 0x6d, 0x8f, 0x05,
0xe2, 0x11, 0x6c, 0x4b, 0xc9, 0x0d, 0xfd, 0x78, 0xf5, 0x5f, 0xfb, 0x4d, 0x5e, 0xfd, 0x5e, 0x3e,
0xb9, 0x91, 0x03, 0x8c, 0x19, 0x5f, 0x4c, 0xb5, 0x7e, 0xbe, 0xd6, 0xdd, 0xc5, 0x9f, 0x4b, 0xf1,
0x41, 0x88, 0x0f, 0xb9, 0xf8, 0x70, 0x77, 0x31, 0xd9, 0x11, 0x8b, 0x5c, 0xfc, 0x13, 0x00, 0x00,
0xff, 0xff, 0xe2, 0x9f, 0x67, 0xb2, 0xcf, 0x07, 0x00, 0x00,
}

View File

@ -61,7 +61,7 @@ type Group struct {
func (m *Group) Reset() { *m = Group{} }
func (m *Group) String() string { return proto.CompactTextString(m) }
func (*Group) ProtoMessage() {}
func (*Group) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} }
func (*Group) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0} }
func (m *Group) GetName() string {
if m != nil {
@ -102,9 +102,9 @@ func init() {
proto.RegisterType((*Group)(nil), "google.monitoring.v3.Group")
}
func init() { proto.RegisterFile("google/monitoring/v3/group.proto", fileDescriptor1) }
func init() { proto.RegisterFile("google/monitoring/v3/group.proto", fileDescriptor3) }
var fileDescriptor1 = []byte{
var fileDescriptor3 = []byte{
// 261 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x90, 0xcf, 0x4a, 0x2b, 0x31,
0x14, 0x87, 0x49, 0xef, 0xed, 0x60, 0x4f, 0x5d, 0x0d, 0x22, 0x83, 0x20, 0x8e, 0xae, 0xba, 0xca,

View File

@ -8,7 +8,7 @@ import fmt "fmt"
import math "math"
import _ "google.golang.org/genproto/googleapis/api/annotations"
import google_api4 "google.golang.org/genproto/googleapis/api/monitoredres"
import google_protobuf4 "github.com/golang/protobuf/ptypes/empty"
import google_protobuf5 "github.com/golang/protobuf/ptypes/empty"
import (
context "golang.org/x/net/context"
@ -45,7 +45,7 @@ type ListGroupsRequest struct {
func (m *ListGroupsRequest) Reset() { *m = ListGroupsRequest{} }
func (m *ListGroupsRequest) String() string { return proto.CompactTextString(m) }
func (*ListGroupsRequest) ProtoMessage() {}
func (*ListGroupsRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0} }
func (*ListGroupsRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{0} }
type isListGroupsRequest_Filter interface {
isListGroupsRequest_Filter()
@ -208,7 +208,7 @@ type ListGroupsResponse struct {
func (m *ListGroupsResponse) Reset() { *m = ListGroupsResponse{} }
func (m *ListGroupsResponse) String() string { return proto.CompactTextString(m) }
func (*ListGroupsResponse) ProtoMessage() {}
func (*ListGroupsResponse) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{1} }
func (*ListGroupsResponse) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{1} }
func (m *ListGroupsResponse) GetGroup() []*Group {
if m != nil {
@ -234,7 +234,7 @@ type GetGroupRequest struct {
func (m *GetGroupRequest) Reset() { *m = GetGroupRequest{} }
func (m *GetGroupRequest) String() string { return proto.CompactTextString(m) }
func (*GetGroupRequest) ProtoMessage() {}
func (*GetGroupRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{2} }
func (*GetGroupRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{2} }
func (m *GetGroupRequest) GetName() string {
if m != nil {
@ -258,7 +258,7 @@ type CreateGroupRequest struct {
func (m *CreateGroupRequest) Reset() { *m = CreateGroupRequest{} }
func (m *CreateGroupRequest) String() string { return proto.CompactTextString(m) }
func (*CreateGroupRequest) ProtoMessage() {}
func (*CreateGroupRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{3} }
func (*CreateGroupRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{3} }
func (m *CreateGroupRequest) GetName() string {
if m != nil {
@ -293,7 +293,7 @@ type UpdateGroupRequest struct {
func (m *UpdateGroupRequest) Reset() { *m = UpdateGroupRequest{} }
func (m *UpdateGroupRequest) String() string { return proto.CompactTextString(m) }
func (*UpdateGroupRequest) ProtoMessage() {}
func (*UpdateGroupRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{4} }
func (*UpdateGroupRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{4} }
func (m *UpdateGroupRequest) GetGroup() *Group {
if m != nil {
@ -319,7 +319,7 @@ type DeleteGroupRequest struct {
func (m *DeleteGroupRequest) Reset() { *m = DeleteGroupRequest{} }
func (m *DeleteGroupRequest) String() string { return proto.CompactTextString(m) }
func (*DeleteGroupRequest) ProtoMessage() {}
func (*DeleteGroupRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{5} }
func (*DeleteGroupRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{5} }
func (m *DeleteGroupRequest) GetName() string {
if m != nil {
@ -357,7 +357,7 @@ type ListGroupMembersRequest struct {
func (m *ListGroupMembersRequest) Reset() { *m = ListGroupMembersRequest{} }
func (m *ListGroupMembersRequest) String() string { return proto.CompactTextString(m) }
func (*ListGroupMembersRequest) ProtoMessage() {}
func (*ListGroupMembersRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{6} }
func (*ListGroupMembersRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{6} }
func (m *ListGroupMembersRequest) GetName() string {
if m != nil {
@ -409,7 +409,7 @@ type ListGroupMembersResponse struct {
func (m *ListGroupMembersResponse) Reset() { *m = ListGroupMembersResponse{} }
func (m *ListGroupMembersResponse) String() string { return proto.CompactTextString(m) }
func (*ListGroupMembersResponse) ProtoMessage() {}
func (*ListGroupMembersResponse) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{7} }
func (*ListGroupMembersResponse) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{7} }
func (m *ListGroupMembersResponse) GetMembers() []*google_api4.MonitoredResource {
if m != nil {
@ -464,7 +464,7 @@ type GroupServiceClient interface {
// You can change any group attributes except `name`.
UpdateGroup(ctx context.Context, in *UpdateGroupRequest, opts ...grpc.CallOption) (*Group, error)
// Deletes an existing group.
DeleteGroup(ctx context.Context, in *DeleteGroupRequest, opts ...grpc.CallOption) (*google_protobuf4.Empty, error)
DeleteGroup(ctx context.Context, in *DeleteGroupRequest, opts ...grpc.CallOption) (*google_protobuf5.Empty, error)
// Lists the monitored resources that are members of a group.
ListGroupMembers(ctx context.Context, in *ListGroupMembersRequest, opts ...grpc.CallOption) (*ListGroupMembersResponse, error)
}
@ -513,8 +513,8 @@ func (c *groupServiceClient) UpdateGroup(ctx context.Context, in *UpdateGroupReq
return out, nil
}
func (c *groupServiceClient) DeleteGroup(ctx context.Context, in *DeleteGroupRequest, opts ...grpc.CallOption) (*google_protobuf4.Empty, error) {
out := new(google_protobuf4.Empty)
func (c *groupServiceClient) DeleteGroup(ctx context.Context, in *DeleteGroupRequest, opts ...grpc.CallOption) (*google_protobuf5.Empty, error) {
out := new(google_protobuf5.Empty)
err := grpc.Invoke(ctx, "/google.monitoring.v3.GroupService/DeleteGroup", in, out, c.cc, opts...)
if err != nil {
return nil, err
@ -544,7 +544,7 @@ type GroupServiceServer interface {
// You can change any group attributes except `name`.
UpdateGroup(context.Context, *UpdateGroupRequest) (*Group, error)
// Deletes an existing group.
DeleteGroup(context.Context, *DeleteGroupRequest) (*google_protobuf4.Empty, error)
DeleteGroup(context.Context, *DeleteGroupRequest) (*google_protobuf5.Empty, error)
// Lists the monitored resources that are members of a group.
ListGroupMembers(context.Context, *ListGroupMembersRequest) (*ListGroupMembersResponse, error)
}
@ -694,9 +694,9 @@ var _GroupService_serviceDesc = grpc.ServiceDesc{
Metadata: "google/monitoring/v3/group_service.proto",
}
func init() { proto.RegisterFile("google/monitoring/v3/group_service.proto", fileDescriptor2) }
func init() { proto.RegisterFile("google/monitoring/v3/group_service.proto", fileDescriptor4) }
var fileDescriptor2 = []byte{
var fileDescriptor4 = []byte{
// 826 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x55, 0x4d, 0x6f, 0xd3, 0x4c,
0x10, 0x7e, 0xdd, 0xa4, 0x69, 0xb2, 0x69, 0xd5, 0x76, 0x55, 0xf5, 0x8d, 0xdc, 0x0f, 0x05, 0xf7,

View File

@ -32,7 +32,7 @@ type Point struct {
func (m *Point) Reset() { *m = Point{} }
func (m *Point) String() string { return proto.CompactTextString(m) }
func (*Point) ProtoMessage() {}
func (*Point) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0} }
func (*Point) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{0} }
func (m *Point) GetInterval() *TimeInterval {
if m != nil {
@ -90,7 +90,7 @@ type TimeSeries struct {
func (m *TimeSeries) Reset() { *m = TimeSeries{} }
func (m *TimeSeries) String() string { return proto.CompactTextString(m) }
func (*TimeSeries) ProtoMessage() {}
func (*TimeSeries) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{1} }
func (*TimeSeries) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{1} }
func (m *TimeSeries) GetMetric() *google_api5.Metric {
if m != nil {
@ -132,9 +132,9 @@ func init() {
proto.RegisterType((*TimeSeries)(nil), "google.monitoring.v3.TimeSeries")
}
func init() { proto.RegisterFile("google/monitoring/v3/metric.proto", fileDescriptor3) }
func init() { proto.RegisterFile("google/monitoring/v3/metric.proto", fileDescriptor5) }
var fileDescriptor3 = []byte{
var fileDescriptor5 = []byte{
// 396 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x92, 0xc1, 0x4a, 0xeb, 0x40,
0x14, 0x86, 0x49, 0x7b, 0x5b, 0x7a, 0x27, 0x70, 0x17, 0xc3, 0x05, 0x43, 0x45, 0x88, 0x15, 0xb4,

View File

@ -9,7 +9,7 @@ import math "math"
import _ "google.golang.org/genproto/googleapis/api/annotations"
import google_api5 "google.golang.org/genproto/googleapis/api/metric"
import google_api4 "google.golang.org/genproto/googleapis/api/monitoredres"
import google_protobuf4 "github.com/golang/protobuf/ptypes/empty"
import google_protobuf5 "github.com/golang/protobuf/ptypes/empty"
import google_rpc "google.golang.org/genproto/googleapis/rpc/status"
import (
@ -47,7 +47,7 @@ func (x ListTimeSeriesRequest_TimeSeriesView) String() string {
return proto.EnumName(ListTimeSeriesRequest_TimeSeriesView_name, int32(x))
}
func (ListTimeSeriesRequest_TimeSeriesView) EnumDescriptor() ([]byte, []int) {
return fileDescriptor4, []int{8, 0}
return fileDescriptor6, []int{8, 0}
}
// The `ListMonitoredResourceDescriptors` request.
@ -77,7 +77,7 @@ func (m *ListMonitoredResourceDescriptorsRequest) Reset() {
func (m *ListMonitoredResourceDescriptorsRequest) String() string { return proto.CompactTextString(m) }
func (*ListMonitoredResourceDescriptorsRequest) ProtoMessage() {}
func (*ListMonitoredResourceDescriptorsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor4, []int{0}
return fileDescriptor6, []int{0}
}
func (m *ListMonitoredResourceDescriptorsRequest) GetName() string {
@ -125,7 +125,7 @@ func (m *ListMonitoredResourceDescriptorsResponse) Reset() {
func (m *ListMonitoredResourceDescriptorsResponse) String() string { return proto.CompactTextString(m) }
func (*ListMonitoredResourceDescriptorsResponse) ProtoMessage() {}
func (*ListMonitoredResourceDescriptorsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor4, []int{1}
return fileDescriptor6, []int{1}
}
func (m *ListMonitoredResourceDescriptorsResponse) GetResourceDescriptors() []*google_api4.MonitoredResourceDescriptor {
@ -155,7 +155,7 @@ func (m *GetMonitoredResourceDescriptorRequest) Reset() { *m = GetMonito
func (m *GetMonitoredResourceDescriptorRequest) String() string { return proto.CompactTextString(m) }
func (*GetMonitoredResourceDescriptorRequest) ProtoMessage() {}
func (*GetMonitoredResourceDescriptorRequest) Descriptor() ([]byte, []int) {
return fileDescriptor4, []int{2}
return fileDescriptor6, []int{2}
}
func (m *GetMonitoredResourceDescriptorRequest) GetName() string {
@ -190,7 +190,7 @@ type ListMetricDescriptorsRequest struct {
func (m *ListMetricDescriptorsRequest) Reset() { *m = ListMetricDescriptorsRequest{} }
func (m *ListMetricDescriptorsRequest) String() string { return proto.CompactTextString(m) }
func (*ListMetricDescriptorsRequest) ProtoMessage() {}
func (*ListMetricDescriptorsRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{3} }
func (*ListMetricDescriptorsRequest) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{3} }
func (m *ListMetricDescriptorsRequest) GetName() string {
if m != nil {
@ -234,7 +234,7 @@ type ListMetricDescriptorsResponse struct {
func (m *ListMetricDescriptorsResponse) Reset() { *m = ListMetricDescriptorsResponse{} }
func (m *ListMetricDescriptorsResponse) String() string { return proto.CompactTextString(m) }
func (*ListMetricDescriptorsResponse) ProtoMessage() {}
func (*ListMetricDescriptorsResponse) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{4} }
func (*ListMetricDescriptorsResponse) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{4} }
func (m *ListMetricDescriptorsResponse) GetMetricDescriptors() []*google_api5.MetricDescriptor {
if m != nil {
@ -262,7 +262,7 @@ type GetMetricDescriptorRequest struct {
func (m *GetMetricDescriptorRequest) Reset() { *m = GetMetricDescriptorRequest{} }
func (m *GetMetricDescriptorRequest) String() string { return proto.CompactTextString(m) }
func (*GetMetricDescriptorRequest) ProtoMessage() {}
func (*GetMetricDescriptorRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{5} }
func (*GetMetricDescriptorRequest) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{5} }
func (m *GetMetricDescriptorRequest) GetName() string {
if m != nil {
@ -284,7 +284,7 @@ type CreateMetricDescriptorRequest struct {
func (m *CreateMetricDescriptorRequest) Reset() { *m = CreateMetricDescriptorRequest{} }
func (m *CreateMetricDescriptorRequest) String() string { return proto.CompactTextString(m) }
func (*CreateMetricDescriptorRequest) ProtoMessage() {}
func (*CreateMetricDescriptorRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{6} }
func (*CreateMetricDescriptorRequest) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{6} }
func (m *CreateMetricDescriptorRequest) GetName() string {
if m != nil {
@ -312,7 +312,7 @@ type DeleteMetricDescriptorRequest struct {
func (m *DeleteMetricDescriptorRequest) Reset() { *m = DeleteMetricDescriptorRequest{} }
func (m *DeleteMetricDescriptorRequest) String() string { return proto.CompactTextString(m) }
func (*DeleteMetricDescriptorRequest) ProtoMessage() {}
func (*DeleteMetricDescriptorRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{7} }
func (*DeleteMetricDescriptorRequest) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{7} }
func (m *DeleteMetricDescriptorRequest) GetName() string {
if m != nil {
@ -362,7 +362,7 @@ type ListTimeSeriesRequest struct {
func (m *ListTimeSeriesRequest) Reset() { *m = ListTimeSeriesRequest{} }
func (m *ListTimeSeriesRequest) String() string { return proto.CompactTextString(m) }
func (*ListTimeSeriesRequest) ProtoMessage() {}
func (*ListTimeSeriesRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{8} }
func (*ListTimeSeriesRequest) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{8} }
func (m *ListTimeSeriesRequest) GetName() string {
if m != nil {
@ -433,7 +433,7 @@ type ListTimeSeriesResponse struct {
func (m *ListTimeSeriesResponse) Reset() { *m = ListTimeSeriesResponse{} }
func (m *ListTimeSeriesResponse) String() string { return proto.CompactTextString(m) }
func (*ListTimeSeriesResponse) ProtoMessage() {}
func (*ListTimeSeriesResponse) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{9} }
func (*ListTimeSeriesResponse) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{9} }
func (m *ListTimeSeriesResponse) GetTimeSeries() []*TimeSeries {
if m != nil {
@ -465,7 +465,7 @@ type CreateTimeSeriesRequest struct {
func (m *CreateTimeSeriesRequest) Reset() { *m = CreateTimeSeriesRequest{} }
func (m *CreateTimeSeriesRequest) String() string { return proto.CompactTextString(m) }
func (*CreateTimeSeriesRequest) ProtoMessage() {}
func (*CreateTimeSeriesRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{10} }
func (*CreateTimeSeriesRequest) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{10} }
func (m *CreateTimeSeriesRequest) GetName() string {
if m != nil {
@ -495,7 +495,7 @@ type CreateTimeSeriesError struct {
func (m *CreateTimeSeriesError) Reset() { *m = CreateTimeSeriesError{} }
func (m *CreateTimeSeriesError) String() string { return proto.CompactTextString(m) }
func (*CreateTimeSeriesError) ProtoMessage() {}
func (*CreateTimeSeriesError) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{11} }
func (*CreateTimeSeriesError) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{11} }
func (m *CreateTimeSeriesError) GetTimeSeries() *TimeSeries {
if m != nil {
@ -552,14 +552,14 @@ type MetricServiceClient interface {
CreateMetricDescriptor(ctx context.Context, in *CreateMetricDescriptorRequest, opts ...grpc.CallOption) (*google_api5.MetricDescriptor, error)
// Deletes a metric descriptor. Only user-created
// [custom metrics](/monitoring/custom-metrics) can be deleted.
DeleteMetricDescriptor(ctx context.Context, in *DeleteMetricDescriptorRequest, opts ...grpc.CallOption) (*google_protobuf4.Empty, error)
DeleteMetricDescriptor(ctx context.Context, in *DeleteMetricDescriptorRequest, opts ...grpc.CallOption) (*google_protobuf5.Empty, error)
// Lists time series that match a filter. This method does not require a Stackdriver account.
ListTimeSeries(ctx context.Context, in *ListTimeSeriesRequest, opts ...grpc.CallOption) (*ListTimeSeriesResponse, error)
// Creates or adds data to one or more time series.
// The response is empty if all time series in the request were written.
// If any time series could not be written, a corresponding failure message is
// included in the error response.
CreateTimeSeries(ctx context.Context, in *CreateTimeSeriesRequest, opts ...grpc.CallOption) (*google_protobuf4.Empty, error)
CreateTimeSeries(ctx context.Context, in *CreateTimeSeriesRequest, opts ...grpc.CallOption) (*google_protobuf5.Empty, error)
}
type metricServiceClient struct {
@ -615,8 +615,8 @@ func (c *metricServiceClient) CreateMetricDescriptor(ctx context.Context, in *Cr
return out, nil
}
func (c *metricServiceClient) DeleteMetricDescriptor(ctx context.Context, in *DeleteMetricDescriptorRequest, opts ...grpc.CallOption) (*google_protobuf4.Empty, error) {
out := new(google_protobuf4.Empty)
func (c *metricServiceClient) DeleteMetricDescriptor(ctx context.Context, in *DeleteMetricDescriptorRequest, opts ...grpc.CallOption) (*google_protobuf5.Empty, error) {
out := new(google_protobuf5.Empty)
err := grpc.Invoke(ctx, "/google.monitoring.v3.MetricService/DeleteMetricDescriptor", in, out, c.cc, opts...)
if err != nil {
return nil, err
@ -633,8 +633,8 @@ func (c *metricServiceClient) ListTimeSeries(ctx context.Context, in *ListTimeSe
return out, nil
}
func (c *metricServiceClient) CreateTimeSeries(ctx context.Context, in *CreateTimeSeriesRequest, opts ...grpc.CallOption) (*google_protobuf4.Empty, error) {
out := new(google_protobuf4.Empty)
func (c *metricServiceClient) CreateTimeSeries(ctx context.Context, in *CreateTimeSeriesRequest, opts ...grpc.CallOption) (*google_protobuf5.Empty, error) {
out := new(google_protobuf5.Empty)
err := grpc.Invoke(ctx, "/google.monitoring.v3.MetricService/CreateTimeSeries", in, out, c.cc, opts...)
if err != nil {
return nil, err
@ -659,14 +659,14 @@ type MetricServiceServer interface {
CreateMetricDescriptor(context.Context, *CreateMetricDescriptorRequest) (*google_api5.MetricDescriptor, error)
// Deletes a metric descriptor. Only user-created
// [custom metrics](/monitoring/custom-metrics) can be deleted.
DeleteMetricDescriptor(context.Context, *DeleteMetricDescriptorRequest) (*google_protobuf4.Empty, error)
DeleteMetricDescriptor(context.Context, *DeleteMetricDescriptorRequest) (*google_protobuf5.Empty, error)
// Lists time series that match a filter. This method does not require a Stackdriver account.
ListTimeSeries(context.Context, *ListTimeSeriesRequest) (*ListTimeSeriesResponse, error)
// Creates or adds data to one or more time series.
// The response is empty if all time series in the request were written.
// If any time series could not be written, a corresponding failure message is
// included in the error response.
CreateTimeSeries(context.Context, *CreateTimeSeriesRequest) (*google_protobuf4.Empty, error)
CreateTimeSeries(context.Context, *CreateTimeSeriesRequest) (*google_protobuf5.Empty, error)
}
func RegisterMetricServiceServer(s *grpc.Server, srv MetricServiceServer) {
@ -858,9 +858,9 @@ var _MetricService_serviceDesc = grpc.ServiceDesc{
Metadata: "google/monitoring/v3/metric_service.proto",
}
func init() { proto.RegisterFile("google/monitoring/v3/metric_service.proto", fileDescriptor4) }
func init() { proto.RegisterFile("google/monitoring/v3/metric_service.proto", fileDescriptor6) }
var fileDescriptor4 = []byte{
var fileDescriptor6 = []byte{
// 1011 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x57, 0x4d, 0x6f, 0x1b, 0x45,
0x18, 0x66, 0x92, 0x34, 0x1f, 0xaf, 0xd5, 0x90, 0x4e, 0x5b, 0xd7, 0x6c, 0x13, 0xe4, 0x2e, 0x2a,

View File

@ -0,0 +1,67 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: google/monitoring/v3/mutation_record.proto
package monitoring
import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
import google_protobuf2 "github.com/golang/protobuf/ptypes/timestamp"
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// Describes a change made to a configuration.
type MutationRecord struct {
// When the change occurred.
MutateTime *google_protobuf2.Timestamp `protobuf:"bytes,1,opt,name=mutate_time,json=mutateTime" json:"mutate_time,omitempty"`
// The email address of the user making the change.
MutatedBy string `protobuf:"bytes,2,opt,name=mutated_by,json=mutatedBy" json:"mutated_by,omitempty"`
}
func (m *MutationRecord) Reset() { *m = MutationRecord{} }
func (m *MutationRecord) String() string { return proto.CompactTextString(m) }
func (*MutationRecord) ProtoMessage() {}
func (*MutationRecord) Descriptor() ([]byte, []int) { return fileDescriptor7, []int{0} }
func (m *MutationRecord) GetMutateTime() *google_protobuf2.Timestamp {
if m != nil {
return m.MutateTime
}
return nil
}
func (m *MutationRecord) GetMutatedBy() string {
if m != nil {
return m.MutatedBy
}
return ""
}
func init() {
proto.RegisterType((*MutationRecord)(nil), "google.monitoring.v3.MutationRecord")
}
func init() { proto.RegisterFile("google/monitoring/v3/mutation_record.proto", fileDescriptor7) }
var fileDescriptor7 = []byte{
// 251 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xd2, 0x4a, 0xcf, 0xcf, 0x4f,
0xcf, 0x49, 0xd5, 0xcf, 0xcd, 0xcf, 0xcb, 0x2c, 0xc9, 0x2f, 0xca, 0xcc, 0x4b, 0xd7, 0x2f, 0x33,
0xd6, 0xcf, 0x2d, 0x2d, 0x49, 0x2c, 0xc9, 0xcc, 0xcf, 0x8b, 0x2f, 0x4a, 0x4d, 0xce, 0x2f, 0x4a,
0xd1, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x81, 0xa8, 0xd5, 0x43, 0xa8, 0xd5, 0x2b, 0x33,
0x96, 0x92, 0x87, 0x9a, 0x00, 0x56, 0x93, 0x54, 0x9a, 0xa6, 0x5f, 0x92, 0x99, 0x9b, 0x5a, 0x5c,
0x92, 0x98, 0x5b, 0x00, 0xd1, 0xa6, 0x94, 0xc3, 0xc5, 0xe7, 0x0b, 0x35, 0x2f, 0x08, 0x6c, 0x9c,
0x90, 0x35, 0x17, 0x37, 0xd8, 0x86, 0xd4, 0x78, 0x90, 0x5a, 0x09, 0x46, 0x05, 0x46, 0x0d, 0x6e,
0x23, 0x29, 0x3d, 0xa8, 0xf1, 0x30, 0x83, 0xf4, 0x42, 0x60, 0x06, 0x05, 0x71, 0x41, 0x94, 0x83,
0x04, 0x84, 0x64, 0xb9, 0xa0, 0xbc, 0x94, 0xf8, 0xa4, 0x4a, 0x09, 0x26, 0x05, 0x46, 0x0d, 0xce,
0x20, 0x4e, 0xa8, 0x88, 0x53, 0xa5, 0xd3, 0x6a, 0x46, 0x2e, 0x89, 0xe4, 0xfc, 0x5c, 0x3d, 0x6c,
0x6e, 0x75, 0x12, 0x46, 0x75, 0x48, 0x00, 0xc8, 0xa6, 0x00, 0xc6, 0x28, 0x3b, 0xa8, 0xe2, 0xf4,
0xfc, 0x9c, 0xc4, 0xbc, 0x74, 0xbd, 0xfc, 0xa2, 0x74, 0xfd, 0xf4, 0xd4, 0x3c, 0xb0, 0x3b, 0xf4,
0x21, 0x52, 0x89, 0x05, 0x99, 0xc5, 0xa8, 0x61, 0x64, 0x8d, 0xe0, 0xad, 0x62, 0x92, 0x72, 0x87,
0x18, 0xe0, 0x9c, 0x93, 0x5f, 0x9a, 0xa2, 0xe7, 0x8b, 0xb0, 0x33, 0xcc, 0xf8, 0x14, 0x4c, 0x32,
0x06, 0x2c, 0x19, 0x83, 0x90, 0x8c, 0x09, 0x33, 0x4e, 0x62, 0x03, 0x5b, 0x62, 0x0c, 0x08, 0x00,
0x00, 0xff, 0xff, 0x95, 0xa7, 0xf3, 0xbd, 0x87, 0x01, 0x00, 0x00,
}

View File

@ -0,0 +1,313 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: google/monitoring/v3/notification.proto
package monitoring
import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
import _ "google.golang.org/genproto/googleapis/api/annotations"
import google_api3 "google.golang.org/genproto/googleapis/api/label"
import google_protobuf4 "github.com/golang/protobuf/ptypes/wrappers"
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// Indicates whether the channel has been verified or not. It is illegal
// to specify this field in a
// [`CreateNotificationChannel`][google.monitoring.v3.NotificationChannelService.CreateNotificationChannel]
// or an
// [`UpdateNotificationChannel`][google.monitoring.v3.NotificationChannelService.UpdateNotificationChannel]
// operation.
type NotificationChannel_VerificationStatus int32
const (
// Sentinel value used to indicate that the state is unknown, omitted, or
// is not applicable (as in the case of channels that neither support
// nor require verification in order to function).
NotificationChannel_VERIFICATION_STATUS_UNSPECIFIED NotificationChannel_VerificationStatus = 0
// The channel has yet to be verified and requires verification to function.
// Note that this state also applies to the case where the verification
// process has been initiated by sending a verification code but where
// the verification code has not been submitted to complete the process.
NotificationChannel_UNVERIFIED NotificationChannel_VerificationStatus = 1
// It has been proven that notifications can be received on this
// notification channel and that someone on the project has access
// to messages that are delivered to that channel.
NotificationChannel_VERIFIED NotificationChannel_VerificationStatus = 2
)
var NotificationChannel_VerificationStatus_name = map[int32]string{
0: "VERIFICATION_STATUS_UNSPECIFIED",
1: "UNVERIFIED",
2: "VERIFIED",
}
var NotificationChannel_VerificationStatus_value = map[string]int32{
"VERIFICATION_STATUS_UNSPECIFIED": 0,
"UNVERIFIED": 1,
"VERIFIED": 2,
}
func (x NotificationChannel_VerificationStatus) String() string {
return proto.EnumName(NotificationChannel_VerificationStatus_name, int32(x))
}
func (NotificationChannel_VerificationStatus) EnumDescriptor() ([]byte, []int) {
return fileDescriptor8, []int{1, 0}
}
// A description of a notification channel. The descriptor includes
// the properties of the channel and the set of labels or fields that
// must be specified to configure channels of a given type.
type NotificationChannelDescriptor struct {
// The full REST resource name for this descriptor. The syntax is:
//
// projects/[PROJECT_ID]/notificationChannelDescriptors/[TYPE]
//
// In the above, `[TYPE]` is the value of the `type` field.
Name string `protobuf:"bytes,6,opt,name=name" json:"name,omitempty"`
// The type of notification channel, such as "email", "sms", etc.
// Notification channel types are globally unique.
Type string `protobuf:"bytes,1,opt,name=type" json:"type,omitempty"`
// A human-readable name for the notification channel type. This
// form of the name is suitable for a user interface.
DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName" json:"display_name,omitempty"`
// A human-readable description of the notification channel
// type. The description may include a description of the properties
// of the channel and pointers to external documentation.
Description string `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"`
// The set of labels that must be defined to identify a particular
// channel of the corresponding type. Each label includes a
// description for how that field should be populated.
Labels []*google_api3.LabelDescriptor `protobuf:"bytes,4,rep,name=labels" json:"labels,omitempty"`
// The tiers that support this notification channel; the project service tier
// must be one of the supported_tiers.
SupportedTiers []ServiceTier `protobuf:"varint,5,rep,packed,name=supported_tiers,json=supportedTiers,enum=google.monitoring.v3.ServiceTier" json:"supported_tiers,omitempty"`
}
func (m *NotificationChannelDescriptor) Reset() { *m = NotificationChannelDescriptor{} }
func (m *NotificationChannelDescriptor) String() string { return proto.CompactTextString(m) }
func (*NotificationChannelDescriptor) ProtoMessage() {}
func (*NotificationChannelDescriptor) Descriptor() ([]byte, []int) { return fileDescriptor8, []int{0} }
func (m *NotificationChannelDescriptor) GetName() string {
if m != nil {
return m.Name
}
return ""
}
func (m *NotificationChannelDescriptor) GetType() string {
if m != nil {
return m.Type
}
return ""
}
func (m *NotificationChannelDescriptor) GetDisplayName() string {
if m != nil {
return m.DisplayName
}
return ""
}
func (m *NotificationChannelDescriptor) GetDescription() string {
if m != nil {
return m.Description
}
return ""
}
func (m *NotificationChannelDescriptor) GetLabels() []*google_api3.LabelDescriptor {
if m != nil {
return m.Labels
}
return nil
}
func (m *NotificationChannelDescriptor) GetSupportedTiers() []ServiceTier {
if m != nil {
return m.SupportedTiers
}
return nil
}
// A `NotificationChannel` is a medium through which an alert is
// delivered when a policy violation is detected. Examples of channels
// include email, SMS, and third-party messaging applications. Fields
// containing sensitive information like authentication tokens or
// contact info are only partially populated on retrieval.
type NotificationChannel struct {
// The type of the notification channel. This field matches the
// value of the [NotificationChannelDescriptor.type][google.monitoring.v3.NotificationChannelDescriptor.type] field.
Type string `protobuf:"bytes,1,opt,name=type" json:"type,omitempty"`
// The full REST resource name for this channel. The syntax is:
//
// projects/[PROJECT_ID]/notificationChannels/[CHANNEL_ID]
//
// The `[CHANNEL_ID]` is automatically assigned by the server on creation.
Name string `protobuf:"bytes,6,opt,name=name" json:"name,omitempty"`
// An optional human-readable name for this notification channel. It is
// recommended that you specify a non-empty and unique name in order to
// make it easier to identify the channels in your project, though this is
// not enforced. The display name is limited to 512 Unicode characters.
DisplayName string `protobuf:"bytes,3,opt,name=display_name,json=displayName" json:"display_name,omitempty"`
// An optional human-readable description of this notification channel. This
// description may provide additional details, beyond the display
// name, for the channel. This may not exceeed 1024 Unicode characters.
Description string `protobuf:"bytes,4,opt,name=description" json:"description,omitempty"`
// Configuration fields that define the channel and its behavior. The
// permissible and required labels are specified in the
// [NotificationChannelDescriptor.labels][google.monitoring.v3.NotificationChannelDescriptor.labels] of the
// `NotificationChannelDescriptor` corresponding to the `type` field.
Labels map[string]string `protobuf:"bytes,5,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
// User-supplied key/value data that does not need to conform to
// the corresponding `NotificationChannelDescriptor`'s schema, unlike
// the `labels` field. This field is intended to be used for organizing
// and identifying the `NotificationChannel` objects.
//
// The field can contain up to 64 entries. Each key and value is limited to
// 63 Unicode characters or 128 bytes, whichever is smaller. Labels and
// values can contain only lowercase letters, numerals, underscores, and
// dashes. Keys must begin with a letter.
UserLabels map[string]string `protobuf:"bytes,8,rep,name=user_labels,json=userLabels" json:"user_labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
// Indicates whether this channel has been verified or not. On a
// [`ListNotificationChannels`][google.monitoring.v3.NotificationChannelService.ListNotificationChannels]
// or
// [`GetNotificationChannel`][google.monitoring.v3.NotificationChannelService.GetNotificationChannel]
// operation, this field is expected to be populated.
//
// If the value is `UNVERIFIED`, then it indicates that the channel is
// non-functioning (it both requires verification and lacks verification);
// otherwise, it is assumed that the channel works.
//
// If the channel is neither `VERIFIED` nor `UNVERIFIED`, it implies that
// the channel is of a type that does not require verification or that
// this specific channel has been exempted from verification because it was
// created prior to verification being required for channels of this type.
//
// This field cannot be modified using a standard
// [`UpdateNotificationChannel`][google.monitoring.v3.NotificationChannelService.UpdateNotificationChannel]
// operation. To change the value of this field, you must call
// [`VerifyNotificationChannel`][google.monitoring.v3.NotificationChannelService.VerifyNotificationChannel].
VerificationStatus NotificationChannel_VerificationStatus `protobuf:"varint,9,opt,name=verification_status,json=verificationStatus,enum=google.monitoring.v3.NotificationChannel_VerificationStatus" json:"verification_status,omitempty"`
// Whether notifications are forwarded to the described channel. This makes
// it possible to disable delivery of notifications to a particular channel
// without removing the channel from all alerting policies that reference
// the channel. This is a more convenient approach when the change is
// temporary and you want to receive notifications from the same set
// of alerting policies on the channel at some point in the future.
Enabled *google_protobuf4.BoolValue `protobuf:"bytes,11,opt,name=enabled" json:"enabled,omitempty"`
}
func (m *NotificationChannel) Reset() { *m = NotificationChannel{} }
func (m *NotificationChannel) String() string { return proto.CompactTextString(m) }
func (*NotificationChannel) ProtoMessage() {}
func (*NotificationChannel) Descriptor() ([]byte, []int) { return fileDescriptor8, []int{1} }
func (m *NotificationChannel) GetType() string {
if m != nil {
return m.Type
}
return ""
}
func (m *NotificationChannel) GetName() string {
if m != nil {
return m.Name
}
return ""
}
func (m *NotificationChannel) GetDisplayName() string {
if m != nil {
return m.DisplayName
}
return ""
}
func (m *NotificationChannel) GetDescription() string {
if m != nil {
return m.Description
}
return ""
}
func (m *NotificationChannel) GetLabels() map[string]string {
if m != nil {
return m.Labels
}
return nil
}
func (m *NotificationChannel) GetUserLabels() map[string]string {
if m != nil {
return m.UserLabels
}
return nil
}
func (m *NotificationChannel) GetVerificationStatus() NotificationChannel_VerificationStatus {
if m != nil {
return m.VerificationStatus
}
return NotificationChannel_VERIFICATION_STATUS_UNSPECIFIED
}
func (m *NotificationChannel) GetEnabled() *google_protobuf4.BoolValue {
if m != nil {
return m.Enabled
}
return nil
}
func init() {
proto.RegisterType((*NotificationChannelDescriptor)(nil), "google.monitoring.v3.NotificationChannelDescriptor")
proto.RegisterType((*NotificationChannel)(nil), "google.monitoring.v3.NotificationChannel")
proto.RegisterEnum("google.monitoring.v3.NotificationChannel_VerificationStatus", NotificationChannel_VerificationStatus_name, NotificationChannel_VerificationStatus_value)
}
func init() { proto.RegisterFile("google/monitoring/v3/notification.proto", fileDescriptor8) }
var fileDescriptor8 = []byte{
// 599 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x94, 0xdd, 0x6e, 0xd3, 0x30,
0x14, 0xc7, 0x49, 0xbb, 0x8e, 0xcd, 0x99, 0xba, 0xe1, 0x4d, 0x28, 0x0a, 0x5f, 0xdd, 0xb8, 0xa0,
0x57, 0x89, 0xd4, 0x82, 0xc4, 0xf8, 0x92, 0xb6, 0xae, 0x43, 0x45, 0xac, 0x4c, 0xfd, 0x42, 0x9a,
0x26, 0x55, 0x6e, 0xeb, 0x05, 0x8b, 0xc4, 0x8e, 0x6c, 0x27, 0xa8, 0x0f, 0xc1, 0x63, 0x70, 0x01,
0x8f, 0xc2, 0x53, 0xa1, 0x38, 0x6e, 0x12, 0xb6, 0x48, 0x8c, 0x3b, 0x9f, 0x73, 0xfe, 0xe7, 0x7f,
0xce, 0xf9, 0x35, 0x2a, 0x78, 0xe6, 0x31, 0xe6, 0xf9, 0xd8, 0x0d, 0x18, 0x25, 0x92, 0x71, 0x42,
0x3d, 0x37, 0x6e, 0xbb, 0x94, 0x49, 0x72, 0x45, 0xe6, 0x48, 0x12, 0x46, 0x9d, 0x90, 0x33, 0xc9,
0xe0, 0x5e, 0x2a, 0x74, 0x72, 0xa1, 0x13, 0xb7, 0xed, 0x87, 0xba, 0x1d, 0x85, 0xc4, 0x45, 0x94,
0x32, 0xa9, 0x5a, 0x44, 0xda, 0x63, 0xdf, 0x2f, 0x54, 0x7d, 0x34, 0xc3, 0xbe, 0xce, 0xef, 0x97,
0x0e, 0x9d, 0xb3, 0x20, 0x58, 0x8d, 0xb3, 0x1f, 0x6b, 0x89, 0x8a, 0x66, 0xd1, 0x95, 0xfb, 0x8d,
0xa3, 0x30, 0xc4, 0x5c, 0x5b, 0x1f, 0x7c, 0xaf, 0x80, 0x47, 0xfd, 0xc2, 0x96, 0x9d, 0x2f, 0x88,
0x52, 0xec, 0x9f, 0x60, 0x31, 0xe7, 0x24, 0x94, 0x8c, 0x43, 0x08, 0xd6, 0x28, 0x0a, 0xb0, 0xb5,
0xde, 0x30, 0x9a, 0x9b, 0x03, 0xf5, 0x4e, 0x72, 0x72, 0x19, 0x62, 0xcb, 0x48, 0x73, 0xc9, 0x1b,
0xee, 0x83, 0xad, 0x05, 0x11, 0xa1, 0x8f, 0x96, 0x53, 0xa5, 0xaf, 0xa8, 0x9a, 0xa9, 0x73, 0xfd,
0xa4, 0xad, 0x01, 0xcc, 0x85, 0x36, 0x26, 0x8c, 0x5a, 0x55, 0xad, 0xc8, 0x53, 0xb0, 0x0d, 0xd6,
0xd5, 0x81, 0xc2, 0x5a, 0x6b, 0x54, 0x9b, 0x66, 0xeb, 0x81, 0xa3, 0x71, 0xa1, 0x90, 0x38, 0x1f,
0x93, 0x4a, 0xbe, 0xd9, 0x40, 0x4b, 0xe1, 0x07, 0xb0, 0x2d, 0xa2, 0x30, 0x64, 0x5c, 0xe2, 0xc5,
0x54, 0x12, 0xcc, 0x85, 0x55, 0x6b, 0x54, 0x9b, 0xf5, 0xd6, 0xbe, 0x53, 0x06, 0xdb, 0x19, 0x62,
0x1e, 0x93, 0x39, 0x1e, 0x11, 0xcc, 0x07, 0xf5, 0xac, 0x33, 0x09, 0xc5, 0xc1, 0x8f, 0x1a, 0xd8,
0x2d, 0xe1, 0x51, 0x7a, 0x71, 0x19, 0x99, 0xeb, 0x14, 0xaa, 0xff, 0xa4, 0xb0, 0x76, 0x93, 0xc2,
0x59, 0x46, 0xa1, 0xa6, 0x28, 0xbc, 0x28, 0xbf, 0xa3, 0x64, 0xcf, 0x94, 0x91, 0xe8, 0x52, 0xc9,
0x97, 0x19, 0x9f, 0x0b, 0x60, 0x46, 0x02, 0xf3, 0xa9, 0xf6, 0xdc, 0x50, 0x9e, 0x87, 0xb7, 0xf7,
0x1c, 0x0b, 0xcc, 0x8b, 0xbe, 0x20, 0xca, 0x12, 0x30, 0x00, 0xbb, 0x31, 0xe6, 0x59, 0xcb, 0x54,
0x48, 0x24, 0x23, 0x61, 0x6d, 0x36, 0x8c, 0x66, 0xbd, 0xf5, 0xe6, 0xf6, 0x33, 0x26, 0x05, 0x93,
0xa1, 0xf2, 0x18, 0xc0, 0xf8, 0x46, 0x0e, 0x3e, 0x07, 0x77, 0x31, 0x45, 0x33, 0x1f, 0x2f, 0x2c,
0xb3, 0x61, 0x34, 0xcd, 0x96, 0xbd, 0x1a, 0xb1, 0xfa, 0xc0, 0x9d, 0x63, 0xc6, 0xfc, 0x09, 0xf2,
0x23, 0x3c, 0x58, 0x49, 0xed, 0x43, 0x60, 0x16, 0xf6, 0x87, 0x3b, 0xa0, 0xfa, 0x15, 0x2f, 0xf5,
0x4f, 0x99, 0x3c, 0xe1, 0x1e, 0xa8, 0xc5, 0x49, 0x8b, 0xfe, 0x68, 0xd3, 0xe0, 0x55, 0xe5, 0xa5,
0x61, 0xbf, 0x05, 0xdb, 0xd7, 0xce, 0xff, 0x9f, 0xf6, 0x83, 0xcf, 0x00, 0xde, 0xbc, 0x0c, 0x3e,
0x05, 0x4f, 0x26, 0xdd, 0x41, 0xef, 0xb4, 0xd7, 0x39, 0x1a, 0xf5, 0x3e, 0xf5, 0xa7, 0xc3, 0xd1,
0xd1, 0x68, 0x3c, 0x9c, 0x8e, 0xfb, 0xc3, 0xf3, 0x6e, 0xa7, 0x77, 0xda, 0xeb, 0x9e, 0xec, 0xdc,
0x81, 0x75, 0x00, 0xc6, 0xfd, 0x54, 0xd6, 0x3d, 0xd9, 0x31, 0xe0, 0x16, 0xd8, 0xc8, 0xa2, 0xca,
0xf1, 0x4f, 0x03, 0x58, 0x73, 0x16, 0x94, 0x02, 0x3e, 0xbe, 0x57, 0x24, 0x7c, 0x9e, 0x80, 0x39,
0x37, 0x2e, 0xde, 0x69, 0xa9, 0xc7, 0x7c, 0x44, 0x3d, 0x87, 0x71, 0xcf, 0xf5, 0x30, 0x55, 0xd8,
0xdc, 0xb4, 0x84, 0x42, 0x22, 0xfe, 0xfe, 0x2f, 0x79, 0x9d, 0x47, 0xbf, 0x2a, 0xf6, 0xfb, 0xd4,
0xa0, 0xe3, 0xb3, 0x68, 0xe1, 0x9c, 0xe5, 0x13, 0x27, 0xed, 0xdf, 0xab, 0xe2, 0xa5, 0x2a, 0x5e,
0xe6, 0xc5, 0xcb, 0x49, 0x7b, 0xb6, 0xae, 0x86, 0xb4, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0xdf,
0xb9, 0x3f, 0x8b, 0x24, 0x05, 0x00, 0x00,
}

File diff suppressed because it is too large Load Diff

View File

@ -51,7 +51,7 @@ var UptimeCheckRegion_value = map[string]int32{
func (x UptimeCheckRegion) String() string {
return proto.EnumName(UptimeCheckRegion_name, int32(x))
}
func (UptimeCheckRegion) EnumDescriptor() ([]byte, []int) { return fileDescriptor5, []int{0} }
func (UptimeCheckRegion) EnumDescriptor() ([]byte, []int) { return fileDescriptor10, []int{0} }
// The supported resource types that can be used as values of
// group_resource.resource_type. gae_app and uptime_url are not allowed
@ -81,7 +81,7 @@ var GroupResourceType_value = map[string]int32{
func (x GroupResourceType) String() string {
return proto.EnumName(GroupResourceType_name, int32(x))
}
func (GroupResourceType) EnumDescriptor() ([]byte, []int) { return fileDescriptor5, []int{1} }
func (GroupResourceType) EnumDescriptor() ([]byte, []int) { return fileDescriptor10, []int{1} }
// This message configures which resources and services to monitor for
// availability.
@ -136,7 +136,7 @@ type UptimeCheckConfig struct {
func (m *UptimeCheckConfig) Reset() { *m = UptimeCheckConfig{} }
func (m *UptimeCheckConfig) String() string { return proto.CompactTextString(m) }
func (*UptimeCheckConfig) ProtoMessage() {}
func (*UptimeCheckConfig) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{0} }
func (*UptimeCheckConfig) Descriptor() ([]byte, []int) { return fileDescriptor10, []int{0} }
type isUptimeCheckConfig_Resource interface {
isUptimeCheckConfig_Resource()
@ -391,7 +391,7 @@ func (m *UptimeCheckConfig_ResourceGroup) Reset() { *m = UptimeCheckConf
func (m *UptimeCheckConfig_ResourceGroup) String() string { return proto.CompactTextString(m) }
func (*UptimeCheckConfig_ResourceGroup) ProtoMessage() {}
func (*UptimeCheckConfig_ResourceGroup) Descriptor() ([]byte, []int) {
return fileDescriptor5, []int{0, 0}
return fileDescriptor10, []int{0, 0}
}
func (m *UptimeCheckConfig_ResourceGroup) GetGroupId() string {
@ -443,7 +443,7 @@ type UptimeCheckConfig_HttpCheck struct {
func (m *UptimeCheckConfig_HttpCheck) Reset() { *m = UptimeCheckConfig_HttpCheck{} }
func (m *UptimeCheckConfig_HttpCheck) String() string { return proto.CompactTextString(m) }
func (*UptimeCheckConfig_HttpCheck) ProtoMessage() {}
func (*UptimeCheckConfig_HttpCheck) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{0, 1} }
func (*UptimeCheckConfig_HttpCheck) Descriptor() ([]byte, []int) { return fileDescriptor10, []int{0, 1} }
func (m *UptimeCheckConfig_HttpCheck) GetUseSsl() bool {
if m != nil {
@ -505,7 +505,7 @@ func (m *UptimeCheckConfig_HttpCheck_BasicAuthentication) String() string {
}
func (*UptimeCheckConfig_HttpCheck_BasicAuthentication) ProtoMessage() {}
func (*UptimeCheckConfig_HttpCheck_BasicAuthentication) Descriptor() ([]byte, []int) {
return fileDescriptor5, []int{0, 1, 0}
return fileDescriptor10, []int{0, 1, 0}
}
func (m *UptimeCheckConfig_HttpCheck_BasicAuthentication) GetUsername() string {
@ -533,7 +533,7 @@ type UptimeCheckConfig_TcpCheck struct {
func (m *UptimeCheckConfig_TcpCheck) Reset() { *m = UptimeCheckConfig_TcpCheck{} }
func (m *UptimeCheckConfig_TcpCheck) String() string { return proto.CompactTextString(m) }
func (*UptimeCheckConfig_TcpCheck) ProtoMessage() {}
func (*UptimeCheckConfig_TcpCheck) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{0, 2} }
func (*UptimeCheckConfig_TcpCheck) Descriptor() ([]byte, []int) { return fileDescriptor10, []int{0, 2} }
func (m *UptimeCheckConfig_TcpCheck) GetPort() int32 {
if m != nil {
@ -554,7 +554,7 @@ func (m *UptimeCheckConfig_ContentMatcher) Reset() { *m = UptimeCheckCon
func (m *UptimeCheckConfig_ContentMatcher) String() string { return proto.CompactTextString(m) }
func (*UptimeCheckConfig_ContentMatcher) ProtoMessage() {}
func (*UptimeCheckConfig_ContentMatcher) Descriptor() ([]byte, []int) {
return fileDescriptor5, []int{0, 3}
return fileDescriptor10, []int{0, 3}
}
func (m *UptimeCheckConfig_ContentMatcher) GetContent() string {
@ -583,7 +583,7 @@ func (m *UptimeCheckConfig_InternalChecker) Reset() { *m = UptimeCheckCo
func (m *UptimeCheckConfig_InternalChecker) String() string { return proto.CompactTextString(m) }
func (*UptimeCheckConfig_InternalChecker) ProtoMessage() {}
func (*UptimeCheckConfig_InternalChecker) Descriptor() ([]byte, []int) {
return fileDescriptor5, []int{0, 4}
return fileDescriptor10, []int{0, 4}
}
func (m *UptimeCheckConfig_InternalChecker) GetProjectId() string {
@ -641,7 +641,7 @@ type UptimeCheckIp struct {
func (m *UptimeCheckIp) Reset() { *m = UptimeCheckIp{} }
func (m *UptimeCheckIp) String() string { return proto.CompactTextString(m) }
func (*UptimeCheckIp) ProtoMessage() {}
func (*UptimeCheckIp) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{1} }
func (*UptimeCheckIp) Descriptor() ([]byte, []int) { return fileDescriptor10, []int{1} }
func (m *UptimeCheckIp) GetRegion() UptimeCheckRegion {
if m != nil {
@ -677,9 +677,9 @@ func init() {
proto.RegisterEnum("google.monitoring.v3.GroupResourceType", GroupResourceType_name, GroupResourceType_value)
}
func init() { proto.RegisterFile("google/monitoring/v3/uptime.proto", fileDescriptor5) }
func init() { proto.RegisterFile("google/monitoring/v3/uptime.proto", fileDescriptor10) }
var fileDescriptor5 = []byte{
var fileDescriptor10 = []byte{
// 1021 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x56, 0xdd, 0x4e, 0xe3, 0x46,
0x14, 0x5e, 0x13, 0xc8, 0xcf, 0x21, 0xb0, 0x66, 0x4a, 0xdb, 0x60, 0x89, 0x15, 0xbb, 0xbd, 0x28,

View File

@ -7,8 +7,8 @@ import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
import _ "google.golang.org/genproto/googleapis/api/annotations"
import google_protobuf4 "github.com/golang/protobuf/ptypes/empty"
import google_protobuf5 "google.golang.org/genproto/protobuf/field_mask"
import google_protobuf5 "github.com/golang/protobuf/ptypes/empty"
import google_protobuf6 "google.golang.org/genproto/protobuf/field_mask"
import (
context "golang.org/x/net/context"
@ -40,7 +40,7 @@ type ListUptimeCheckConfigsRequest struct {
func (m *ListUptimeCheckConfigsRequest) Reset() { *m = ListUptimeCheckConfigsRequest{} }
func (m *ListUptimeCheckConfigsRequest) String() string { return proto.CompactTextString(m) }
func (*ListUptimeCheckConfigsRequest) ProtoMessage() {}
func (*ListUptimeCheckConfigsRequest) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{0} }
func (*ListUptimeCheckConfigsRequest) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{0} }
func (m *ListUptimeCheckConfigsRequest) GetParent() string {
if m != nil {
@ -78,7 +78,7 @@ type ListUptimeCheckConfigsResponse struct {
func (m *ListUptimeCheckConfigsResponse) Reset() { *m = ListUptimeCheckConfigsResponse{} }
func (m *ListUptimeCheckConfigsResponse) String() string { return proto.CompactTextString(m) }
func (*ListUptimeCheckConfigsResponse) ProtoMessage() {}
func (*ListUptimeCheckConfigsResponse) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{1} }
func (*ListUptimeCheckConfigsResponse) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{1} }
func (m *ListUptimeCheckConfigsResponse) GetUptimeCheckConfigs() []*UptimeCheckConfig {
if m != nil {
@ -105,7 +105,7 @@ type GetUptimeCheckConfigRequest struct {
func (m *GetUptimeCheckConfigRequest) Reset() { *m = GetUptimeCheckConfigRequest{} }
func (m *GetUptimeCheckConfigRequest) String() string { return proto.CompactTextString(m) }
func (*GetUptimeCheckConfigRequest) ProtoMessage() {}
func (*GetUptimeCheckConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{2} }
func (*GetUptimeCheckConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{2} }
func (m *GetUptimeCheckConfigRequest) GetName() string {
if m != nil {
@ -127,7 +127,7 @@ type CreateUptimeCheckConfigRequest struct {
func (m *CreateUptimeCheckConfigRequest) Reset() { *m = CreateUptimeCheckConfigRequest{} }
func (m *CreateUptimeCheckConfigRequest) String() string { return proto.CompactTextString(m) }
func (*CreateUptimeCheckConfigRequest) ProtoMessage() {}
func (*CreateUptimeCheckConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{3} }
func (*CreateUptimeCheckConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{3} }
func (m *CreateUptimeCheckConfigRequest) GetParent() string {
if m != nil {
@ -149,7 +149,7 @@ type UpdateUptimeCheckConfigRequest struct {
// configuration are updated with values from the new configuration. If this
// field is empty, then the current configuration is completely replaced with
// the new configuration.
UpdateMask *google_protobuf5.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"`
UpdateMask *google_protobuf6.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"`
// Required. If an `"updateMask"` has been specified, this field gives
// the values for the set of fields mentioned in the `"updateMask"`. If an
// `"updateMask"` has not been given, this uptime check configuration replaces
@ -163,9 +163,9 @@ type UpdateUptimeCheckConfigRequest struct {
func (m *UpdateUptimeCheckConfigRequest) Reset() { *m = UpdateUptimeCheckConfigRequest{} }
func (m *UpdateUptimeCheckConfigRequest) String() string { return proto.CompactTextString(m) }
func (*UpdateUptimeCheckConfigRequest) ProtoMessage() {}
func (*UpdateUptimeCheckConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{4} }
func (*UpdateUptimeCheckConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{4} }
func (m *UpdateUptimeCheckConfigRequest) GetUpdateMask() *google_protobuf5.FieldMask {
func (m *UpdateUptimeCheckConfigRequest) GetUpdateMask() *google_protobuf6.FieldMask {
if m != nil {
return m.UpdateMask
}
@ -190,7 +190,7 @@ type DeleteUptimeCheckConfigRequest struct {
func (m *DeleteUptimeCheckConfigRequest) Reset() { *m = DeleteUptimeCheckConfigRequest{} }
func (m *DeleteUptimeCheckConfigRequest) String() string { return proto.CompactTextString(m) }
func (*DeleteUptimeCheckConfigRequest) ProtoMessage() {}
func (*DeleteUptimeCheckConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{5} }
func (*DeleteUptimeCheckConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{5} }
func (m *DeleteUptimeCheckConfigRequest) GetName() string {
if m != nil {
@ -217,7 +217,7 @@ type ListUptimeCheckIpsRequest struct {
func (m *ListUptimeCheckIpsRequest) Reset() { *m = ListUptimeCheckIpsRequest{} }
func (m *ListUptimeCheckIpsRequest) String() string { return proto.CompactTextString(m) }
func (*ListUptimeCheckIpsRequest) ProtoMessage() {}
func (*ListUptimeCheckIpsRequest) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{6} }
func (*ListUptimeCheckIpsRequest) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{6} }
func (m *ListUptimeCheckIpsRequest) GetPageSize() int32 {
if m != nil {
@ -250,7 +250,7 @@ type ListUptimeCheckIpsResponse struct {
func (m *ListUptimeCheckIpsResponse) Reset() { *m = ListUptimeCheckIpsResponse{} }
func (m *ListUptimeCheckIpsResponse) String() string { return proto.CompactTextString(m) }
func (*ListUptimeCheckIpsResponse) ProtoMessage() {}
func (*ListUptimeCheckIpsResponse) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{7} }
func (*ListUptimeCheckIpsResponse) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{7} }
func (m *ListUptimeCheckIpsResponse) GetUptimeCheckIps() []*UptimeCheckIp {
if m != nil {
@ -303,7 +303,7 @@ type UptimeCheckServiceClient interface {
// Deletes an uptime check configuration. Note that this method will fail
// if the uptime check configuration is referenced by an alert policy or
// other dependent configs that would be rendered invalid by the deletion.
DeleteUptimeCheckConfig(ctx context.Context, in *DeleteUptimeCheckConfigRequest, opts ...grpc.CallOption) (*google_protobuf4.Empty, error)
DeleteUptimeCheckConfig(ctx context.Context, in *DeleteUptimeCheckConfigRequest, opts ...grpc.CallOption) (*google_protobuf5.Empty, error)
// Returns the list of IPs that checkers run from
ListUptimeCheckIps(ctx context.Context, in *ListUptimeCheckIpsRequest, opts ...grpc.CallOption) (*ListUptimeCheckIpsResponse, error)
}
@ -352,8 +352,8 @@ func (c *uptimeCheckServiceClient) UpdateUptimeCheckConfig(ctx context.Context,
return out, nil
}
func (c *uptimeCheckServiceClient) DeleteUptimeCheckConfig(ctx context.Context, in *DeleteUptimeCheckConfigRequest, opts ...grpc.CallOption) (*google_protobuf4.Empty, error) {
out := new(google_protobuf4.Empty)
func (c *uptimeCheckServiceClient) DeleteUptimeCheckConfig(ctx context.Context, in *DeleteUptimeCheckConfigRequest, opts ...grpc.CallOption) (*google_protobuf5.Empty, error) {
out := new(google_protobuf5.Empty)
err := grpc.Invoke(ctx, "/google.monitoring.v3.UptimeCheckService/DeleteUptimeCheckConfig", in, out, c.cc, opts...)
if err != nil {
return nil, err
@ -388,7 +388,7 @@ type UptimeCheckServiceServer interface {
// Deletes an uptime check configuration. Note that this method will fail
// if the uptime check configuration is referenced by an alert policy or
// other dependent configs that would be rendered invalid by the deletion.
DeleteUptimeCheckConfig(context.Context, *DeleteUptimeCheckConfigRequest) (*google_protobuf4.Empty, error)
DeleteUptimeCheckConfig(context.Context, *DeleteUptimeCheckConfigRequest) (*google_protobuf5.Empty, error)
// Returns the list of IPs that checkers run from
ListUptimeCheckIps(context.Context, *ListUptimeCheckIpsRequest) (*ListUptimeCheckIpsResponse, error)
}
@ -538,9 +538,9 @@ var _UptimeCheckService_serviceDesc = grpc.ServiceDesc{
Metadata: "google/monitoring/v3/uptime_service.proto",
}
func init() { proto.RegisterFile("google/monitoring/v3/uptime_service.proto", fileDescriptor6) }
func init() { proto.RegisterFile("google/monitoring/v3/uptime_service.proto", fileDescriptor11) }
var fileDescriptor6 = []byte{
var fileDescriptor11 = []byte{
// 735 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0xdf, 0x4e, 0x13, 0x4f,
0x14, 0xce, 0xb4, 0xfc, 0x08, 0x1c, 0xf2, 0xf3, 0xcf, 0xd8, 0x40, 0x5d, 0xa4, 0xa9, 0x35, 0x51,

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -30,6 +30,11 @@ It has these top-level messages:
ListSessionsResponse
DeleteSessionRequest
ExecuteSqlRequest
PartitionOptions
PartitionQueryRequest
PartitionReadRequest
Partition
PartitionResponse
ReadRequest
BeginTransactionRequest
CommitRequest

View File

@ -286,6 +286,8 @@ type Mutation_Delete struct {
// Required. The table whose rows will be deleted.
Table string `protobuf:"bytes,1,opt,name=table" json:"table,omitempty"`
// Required. The primary keys of the rows within [table][google.spanner.v1.Mutation.Delete.table] to delete.
// Delete is idempotent. The transaction will succeed even if some or all
// rows do not exist.
KeySet *KeySet `protobuf:"bytes,2,opt,name=key_set,json=keySet" json:"key_set,omitempty"`
}

View File

@ -300,8 +300,14 @@ type ExecuteSqlRequest struct {
// request that yielded this token.
ResumeToken []byte `protobuf:"bytes,6,opt,name=resume_token,json=resumeToken,proto3" json:"resume_token,omitempty"`
// Used to control the amount of debugging information returned in
// [ResultSetStats][google.spanner.v1.ResultSetStats].
// [ResultSetStats][google.spanner.v1.ResultSetStats]. If [partition_token][google.spanner.v1.ExecuteSqlRequest.partition_token] is set, [query_mode][google.spanner.v1.ExecuteSqlRequest.query_mode] can only
// be set to [QueryMode.NORMAL][google.spanner.v1.ExecuteSqlRequest.QueryMode.NORMAL].
QueryMode ExecuteSqlRequest_QueryMode `protobuf:"varint,7,opt,name=query_mode,json=queryMode,enum=google.spanner.v1.ExecuteSqlRequest_QueryMode" json:"query_mode,omitempty"`
// If present, results will be restricted to the specified partition
// previously created using PartitionQuery(). There must be an exact
// match for the values of fields common to this message and the
// PartitionQueryRequest message used to create this partition_token.
PartitionToken []byte `protobuf:"bytes,8,opt,name=partition_token,json=partitionToken,proto3" json:"partition_token,omitempty"`
}
func (m *ExecuteSqlRequest) Reset() { *m = ExecuteSqlRequest{} }
@ -358,6 +364,267 @@ func (m *ExecuteSqlRequest) GetQueryMode() ExecuteSqlRequest_QueryMode {
return ExecuteSqlRequest_NORMAL
}
func (m *ExecuteSqlRequest) GetPartitionToken() []byte {
if m != nil {
return m.PartitionToken
}
return nil
}
// Options for a PartitionQueryRequest and
// PartitionReadRequest.
type PartitionOptions struct {
// The desired data size for each partition generated. The default for this
// option is currently 1 GiB. This is only a hint. The actual size of each
// partition may be smaller or larger than this size request.
PartitionSizeBytes int64 `protobuf:"varint,1,opt,name=partition_size_bytes,json=partitionSizeBytes" json:"partition_size_bytes,omitempty"`
// The desired maximum number of partitions to return. For example, this may
// be set to the number of workers available. The default for this option
// is currently 10,000. The maximum value is currently 200,000. This is only
// a hint. The actual number of partitions returned may be smaller or larger
// than this maximum count request.
MaxPartitions int64 `protobuf:"varint,2,opt,name=max_partitions,json=maxPartitions" json:"max_partitions,omitempty"`
}
func (m *PartitionOptions) Reset() { *m = PartitionOptions{} }
func (m *PartitionOptions) String() string { return proto.CompactTextString(m) }
func (*PartitionOptions) ProtoMessage() {}
func (*PartitionOptions) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{7} }
func (m *PartitionOptions) GetPartitionSizeBytes() int64 {
if m != nil {
return m.PartitionSizeBytes
}
return 0
}
func (m *PartitionOptions) GetMaxPartitions() int64 {
if m != nil {
return m.MaxPartitions
}
return 0
}
// The request for [PartitionQuery][google.spanner.v1.Spanner.PartitionQuery]
type PartitionQueryRequest struct {
// Required. The session used to create the partitions.
Session string `protobuf:"bytes,1,opt,name=session" json:"session,omitempty"`
// Read only snapshot transactions are supported, read/write and single use
// transactions are not.
Transaction *TransactionSelector `protobuf:"bytes,2,opt,name=transaction" json:"transaction,omitempty"`
// The query request to generate partitions for. The request will fail if
// the query is not root partitionable. The query plan of a root
// partitionable query has a single distributed union operator. A distributed
// union operator conceptually divides one or more tables into multiple
// splits, remotely evaluates a subquery independently on each split, and
// then unions all results.
Sql string `protobuf:"bytes,3,opt,name=sql" json:"sql,omitempty"`
// The SQL query string can contain parameter placeholders. A parameter
// placeholder consists of `'@'` followed by the parameter
// name. Parameter names consist of any combination of letters,
// numbers, and underscores.
//
// Parameters can appear anywhere that a literal value is expected. The same
// parameter name can be used more than once, for example:
// `"WHERE id > @msg_id AND id < @msg_id + 100"`
//
// It is an error to execute an SQL query with unbound parameters.
//
// Parameter values are specified using `params`, which is a JSON
// object whose keys are parameter names, and whose values are the
// corresponding parameter values.
Params *google_protobuf1.Struct `protobuf:"bytes,4,opt,name=params" json:"params,omitempty"`
// It is not always possible for Cloud Spanner to infer the right SQL type
// from a JSON value. For example, values of type `BYTES` and values
// of type `STRING` both appear in [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings.
//
// In these cases, `param_types` can be used to specify the exact
// SQL type for some or all of the SQL query parameters. See the
// definition of [Type][google.spanner.v1.Type] for more information
// about SQL types.
ParamTypes map[string]*Type `protobuf:"bytes,5,rep,name=param_types,json=paramTypes" json:"param_types,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
// Additional options that affect how many partitions are created.
PartitionOptions *PartitionOptions `protobuf:"bytes,6,opt,name=partition_options,json=partitionOptions" json:"partition_options,omitempty"`
}
func (m *PartitionQueryRequest) Reset() { *m = PartitionQueryRequest{} }
func (m *PartitionQueryRequest) String() string { return proto.CompactTextString(m) }
func (*PartitionQueryRequest) ProtoMessage() {}
func (*PartitionQueryRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{8} }
func (m *PartitionQueryRequest) GetSession() string {
if m != nil {
return m.Session
}
return ""
}
func (m *PartitionQueryRequest) GetTransaction() *TransactionSelector {
if m != nil {
return m.Transaction
}
return nil
}
func (m *PartitionQueryRequest) GetSql() string {
if m != nil {
return m.Sql
}
return ""
}
func (m *PartitionQueryRequest) GetParams() *google_protobuf1.Struct {
if m != nil {
return m.Params
}
return nil
}
func (m *PartitionQueryRequest) GetParamTypes() map[string]*Type {
if m != nil {
return m.ParamTypes
}
return nil
}
func (m *PartitionQueryRequest) GetPartitionOptions() *PartitionOptions {
if m != nil {
return m.PartitionOptions
}
return nil
}
// The request for [PartitionRead][google.spanner.v1.Spanner.PartitionRead]
type PartitionReadRequest struct {
// Required. The session used to create the partitions.
Session string `protobuf:"bytes,1,opt,name=session" json:"session,omitempty"`
// Read only snapshot transactions are supported, read/write and single use
// transactions are not.
Transaction *TransactionSelector `protobuf:"bytes,2,opt,name=transaction" json:"transaction,omitempty"`
// Required. The name of the table in the database to be read.
Table string `protobuf:"bytes,3,opt,name=table" json:"table,omitempty"`
// If non-empty, the name of an index on [table][google.spanner.v1.PartitionReadRequest.table]. This index is
// used instead of the table primary key when interpreting [key_set][google.spanner.v1.PartitionReadRequest.key_set]
// and sorting result rows. See [key_set][google.spanner.v1.PartitionReadRequest.key_set] for further information.
Index string `protobuf:"bytes,4,opt,name=index" json:"index,omitempty"`
// The columns of [table][google.spanner.v1.PartitionReadRequest.table] to be returned for each row matching
// this request.
Columns []string `protobuf:"bytes,5,rep,name=columns" json:"columns,omitempty"`
// Required. `key_set` identifies the rows to be yielded. `key_set` names the
// primary keys of the rows in [table][google.spanner.v1.PartitionReadRequest.table] to be yielded, unless [index][google.spanner.v1.PartitionReadRequest.index]
// is present. If [index][google.spanner.v1.PartitionReadRequest.index] is present, then [key_set][google.spanner.v1.PartitionReadRequest.key_set] instead names
// index keys in [index][google.spanner.v1.PartitionReadRequest.index].
//
// It is not an error for the `key_set` to name rows that do not
// exist in the database. Read yields nothing for nonexistent rows.
KeySet *KeySet `protobuf:"bytes,6,opt,name=key_set,json=keySet" json:"key_set,omitempty"`
// Additional options that affect how many partitions are created.
PartitionOptions *PartitionOptions `protobuf:"bytes,9,opt,name=partition_options,json=partitionOptions" json:"partition_options,omitempty"`
}
func (m *PartitionReadRequest) Reset() { *m = PartitionReadRequest{} }
func (m *PartitionReadRequest) String() string { return proto.CompactTextString(m) }
func (*PartitionReadRequest) ProtoMessage() {}
func (*PartitionReadRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{9} }
func (m *PartitionReadRequest) GetSession() string {
if m != nil {
return m.Session
}
return ""
}
func (m *PartitionReadRequest) GetTransaction() *TransactionSelector {
if m != nil {
return m.Transaction
}
return nil
}
func (m *PartitionReadRequest) GetTable() string {
if m != nil {
return m.Table
}
return ""
}
func (m *PartitionReadRequest) GetIndex() string {
if m != nil {
return m.Index
}
return ""
}
func (m *PartitionReadRequest) GetColumns() []string {
if m != nil {
return m.Columns
}
return nil
}
func (m *PartitionReadRequest) GetKeySet() *KeySet {
if m != nil {
return m.KeySet
}
return nil
}
func (m *PartitionReadRequest) GetPartitionOptions() *PartitionOptions {
if m != nil {
return m.PartitionOptions
}
return nil
}
// Information returned for each partition returned in a
// PartitionResponse.
type Partition struct {
// This token can be passed to Read, StreamingRead, ExecuteSql, or
// ExecuteStreamingSql requests to restrict the results to those identified by
// this partition token.
PartitionToken []byte `protobuf:"bytes,1,opt,name=partition_token,json=partitionToken,proto3" json:"partition_token,omitempty"`
}
func (m *Partition) Reset() { *m = Partition{} }
func (m *Partition) String() string { return proto.CompactTextString(m) }
func (*Partition) ProtoMessage() {}
func (*Partition) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{10} }
func (m *Partition) GetPartitionToken() []byte {
if m != nil {
return m.PartitionToken
}
return nil
}
// The response for [PartitionQuery][google.spanner.v1.Spanner.PartitionQuery]
// or [PartitionRead][google.spanner.v1.Spanner.PartitionRead]
type PartitionResponse struct {
// Partitions created by this request.
Partitions []*Partition `protobuf:"bytes,1,rep,name=partitions" json:"partitions,omitempty"`
// Transaction created by this request.
Transaction *Transaction `protobuf:"bytes,2,opt,name=transaction" json:"transaction,omitempty"`
}
func (m *PartitionResponse) Reset() { *m = PartitionResponse{} }
func (m *PartitionResponse) String() string { return proto.CompactTextString(m) }
func (*PartitionResponse) ProtoMessage() {}
func (*PartitionResponse) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{11} }
func (m *PartitionResponse) GetPartitions() []*Partition {
if m != nil {
return m.Partitions
}
return nil
}
func (m *PartitionResponse) GetTransaction() *Transaction {
if m != nil {
return m.Transaction
}
return nil
}
// The request for [Read][google.spanner.v1.Spanner.Read] and
// [StreamingRead][google.spanner.v1.Spanner.StreamingRead].
type ReadRequest struct {
@ -380,14 +647,17 @@ type ReadRequest struct {
// is present. If [index][google.spanner.v1.ReadRequest.index] is present, then [key_set][google.spanner.v1.ReadRequest.key_set] instead names
// index keys in [index][google.spanner.v1.ReadRequest.index].
//
// Rows are yielded in table primary key order (if [index][google.spanner.v1.ReadRequest.index] is empty)
// or index key order (if [index][google.spanner.v1.ReadRequest.index] is non-empty).
// If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is empty, rows are yielded
// in table primary key order (if [index][google.spanner.v1.ReadRequest.index] is empty) or index key order
// (if [index][google.spanner.v1.ReadRequest.index] is non-empty). If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is not
// empty, rows will be yielded in an unspecified order.
//
// It is not an error for the `key_set` to name rows that do not
// exist in the database. Read yields nothing for nonexistent rows.
KeySet *KeySet `protobuf:"bytes,6,opt,name=key_set,json=keySet" json:"key_set,omitempty"`
// If greater than zero, only the first `limit` rows are yielded. If `limit`
// is zero, the default is no limit.
// is zero, the default is no limit. A limit cannot be specified if
// `partition_token` is set.
Limit int64 `protobuf:"varint,8,opt,name=limit" json:"limit,omitempty"`
// If this request is resuming a previously interrupted read,
// `resume_token` should be copied from the last
@ -396,12 +666,17 @@ type ReadRequest struct {
// rest of the request parameters must exactly match the request
// that yielded this token.
ResumeToken []byte `protobuf:"bytes,9,opt,name=resume_token,json=resumeToken,proto3" json:"resume_token,omitempty"`
// If present, results will be restricted to the specified partition
// previously created using PartitionRead(). There must be an exact
// match for the values of fields common to this message and the
// PartitionReadRequest message used to create this partition_token.
PartitionToken []byte `protobuf:"bytes,10,opt,name=partition_token,json=partitionToken,proto3" json:"partition_token,omitempty"`
}
func (m *ReadRequest) Reset() { *m = ReadRequest{} }
func (m *ReadRequest) String() string { return proto.CompactTextString(m) }
func (*ReadRequest) ProtoMessage() {}
func (*ReadRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{7} }
func (*ReadRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{12} }
func (m *ReadRequest) GetSession() string {
if m != nil {
@ -459,6 +734,13 @@ func (m *ReadRequest) GetResumeToken() []byte {
return nil
}
func (m *ReadRequest) GetPartitionToken() []byte {
if m != nil {
return m.PartitionToken
}
return nil
}
// The request for [BeginTransaction][google.spanner.v1.Spanner.BeginTransaction].
type BeginTransactionRequest struct {
// Required. The session in which the transaction runs.
@ -470,7 +752,7 @@ type BeginTransactionRequest struct {
func (m *BeginTransactionRequest) Reset() { *m = BeginTransactionRequest{} }
func (m *BeginTransactionRequest) String() string { return proto.CompactTextString(m) }
func (*BeginTransactionRequest) ProtoMessage() {}
func (*BeginTransactionRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{8} }
func (*BeginTransactionRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{13} }
func (m *BeginTransactionRequest) GetSession() string {
if m != nil {
@ -505,7 +787,7 @@ type CommitRequest struct {
func (m *CommitRequest) Reset() { *m = CommitRequest{} }
func (m *CommitRequest) String() string { return proto.CompactTextString(m) }
func (*CommitRequest) ProtoMessage() {}
func (*CommitRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{9} }
func (*CommitRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{14} }
type isCommitRequest_Transaction interface {
isCommitRequest_Transaction()
@ -635,7 +917,7 @@ type CommitResponse struct {
func (m *CommitResponse) Reset() { *m = CommitResponse{} }
func (m *CommitResponse) String() string { return proto.CompactTextString(m) }
func (*CommitResponse) ProtoMessage() {}
func (*CommitResponse) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{10} }
func (*CommitResponse) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{15} }
func (m *CommitResponse) GetCommitTimestamp() *google_protobuf3.Timestamp {
if m != nil {
@ -655,7 +937,7 @@ type RollbackRequest struct {
func (m *RollbackRequest) Reset() { *m = RollbackRequest{} }
func (m *RollbackRequest) String() string { return proto.CompactTextString(m) }
func (*RollbackRequest) ProtoMessage() {}
func (*RollbackRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{11} }
func (*RollbackRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{16} }
func (m *RollbackRequest) GetSession() string {
if m != nil {
@ -679,6 +961,11 @@ func init() {
proto.RegisterType((*ListSessionsResponse)(nil), "google.spanner.v1.ListSessionsResponse")
proto.RegisterType((*DeleteSessionRequest)(nil), "google.spanner.v1.DeleteSessionRequest")
proto.RegisterType((*ExecuteSqlRequest)(nil), "google.spanner.v1.ExecuteSqlRequest")
proto.RegisterType((*PartitionOptions)(nil), "google.spanner.v1.PartitionOptions")
proto.RegisterType((*PartitionQueryRequest)(nil), "google.spanner.v1.PartitionQueryRequest")
proto.RegisterType((*PartitionReadRequest)(nil), "google.spanner.v1.PartitionReadRequest")
proto.RegisterType((*Partition)(nil), "google.spanner.v1.Partition")
proto.RegisterType((*PartitionResponse)(nil), "google.spanner.v1.PartitionResponse")
proto.RegisterType((*ReadRequest)(nil), "google.spanner.v1.ReadRequest")
proto.RegisterType((*BeginTransactionRequest)(nil), "google.spanner.v1.BeginTransactionRequest")
proto.RegisterType((*CommitRequest)(nil), "google.spanner.v1.CommitRequest")
@ -787,6 +1074,24 @@ type SpannerClient interface {
// transaction was already aborted, or the transaction is not
// found. `Rollback` never returns `ABORTED`.
Rollback(ctx context.Context, in *RollbackRequest, opts ...grpc.CallOption) (*google_protobuf4.Empty, error)
// Creates a set of partition tokens that can be used to execute a query
// operation in parallel. Each of the returned partition tokens can be used
// by [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] to specify a subset
// of the query result to read. The same session and read-only transaction
// must be used by the PartitionQueryRequest used to create the
// partition tokens and the ExecuteSqlRequests that use the partition tokens.
// Partition tokens become invalid when the session used to create them
// is deleted or begins a new transaction.
PartitionQuery(ctx context.Context, in *PartitionQueryRequest, opts ...grpc.CallOption) (*PartitionResponse, error)
// Creates a set of partition tokens that can be used to execute a read
// operation in parallel. Each of the returned partition tokens can be used
// by [StreamingRead][google.spanner.v1.Spanner.StreamingRead] to specify a subset of the read
// result to read. The same session and read-only transaction must be used by
// the PartitionReadRequest used to create the partition tokens and the
// ReadRequests that use the partition tokens.
// Partition tokens become invalid when the session used to create them
// is deleted or begins a new transaction.
PartitionRead(ctx context.Context, in *PartitionReadRequest, opts ...grpc.CallOption) (*PartitionResponse, error)
}
type spannerClient struct {
@ -942,6 +1247,24 @@ func (c *spannerClient) Rollback(ctx context.Context, in *RollbackRequest, opts
return out, nil
}
func (c *spannerClient) PartitionQuery(ctx context.Context, in *PartitionQueryRequest, opts ...grpc.CallOption) (*PartitionResponse, error) {
out := new(PartitionResponse)
err := grpc.Invoke(ctx, "/google.spanner.v1.Spanner/PartitionQuery", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *spannerClient) PartitionRead(ctx context.Context, in *PartitionReadRequest, opts ...grpc.CallOption) (*PartitionResponse, error) {
out := new(PartitionResponse)
err := grpc.Invoke(ctx, "/google.spanner.v1.Spanner/PartitionRead", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// Server API for Spanner service
type SpannerServer interface {
@ -1034,6 +1357,24 @@ type SpannerServer interface {
// transaction was already aborted, or the transaction is not
// found. `Rollback` never returns `ABORTED`.
Rollback(context.Context, *RollbackRequest) (*google_protobuf4.Empty, error)
// Creates a set of partition tokens that can be used to execute a query
// operation in parallel. Each of the returned partition tokens can be used
// by [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] to specify a subset
// of the query result to read. The same session and read-only transaction
// must be used by the PartitionQueryRequest used to create the
// partition tokens and the ExecuteSqlRequests that use the partition tokens.
// Partition tokens become invalid when the session used to create them
// is deleted or begins a new transaction.
PartitionQuery(context.Context, *PartitionQueryRequest) (*PartitionResponse, error)
// Creates a set of partition tokens that can be used to execute a read
// operation in parallel. Each of the returned partition tokens can be used
// by [StreamingRead][google.spanner.v1.Spanner.StreamingRead] to specify a subset of the read
// result to read. The same session and read-only transaction must be used by
// the PartitionReadRequest used to create the partition tokens and the
// ReadRequests that use the partition tokens.
// Partition tokens become invalid when the session used to create them
// is deleted or begins a new transaction.
PartitionRead(context.Context, *PartitionReadRequest) (*PartitionResponse, error)
}
func RegisterSpannerServer(s *grpc.Server, srv SpannerServer) {
@ -1244,6 +1585,42 @@ func _Spanner_Rollback_Handler(srv interface{}, ctx context.Context, dec func(in
return interceptor(ctx, in, info, handler)
}
func _Spanner_PartitionQuery_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(PartitionQueryRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(SpannerServer).PartitionQuery(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.spanner.v1.Spanner/PartitionQuery",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(SpannerServer).PartitionQuery(ctx, req.(*PartitionQueryRequest))
}
return interceptor(ctx, in, info, handler)
}
func _Spanner_PartitionRead_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(PartitionReadRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(SpannerServer).PartitionRead(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.spanner.v1.Spanner/PartitionRead",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(SpannerServer).PartitionRead(ctx, req.(*PartitionReadRequest))
}
return interceptor(ctx, in, info, handler)
}
var _Spanner_serviceDesc = grpc.ServiceDesc{
ServiceName: "google.spanner.v1.Spanner",
HandlerType: (*SpannerServer)(nil),
@ -1284,6 +1661,14 @@ var _Spanner_serviceDesc = grpc.ServiceDesc{
MethodName: "Rollback",
Handler: _Spanner_Rollback_Handler,
},
{
MethodName: "PartitionQuery",
Handler: _Spanner_PartitionQuery_Handler,
},
{
MethodName: "PartitionRead",
Handler: _Spanner_PartitionRead_Handler,
},
},
Streams: []grpc.StreamDesc{
{
@ -1303,94 +1688,109 @@ var _Spanner_serviceDesc = grpc.ServiceDesc{
func init() { proto.RegisterFile("google/spanner/v1/spanner.proto", fileDescriptor4) }
var fileDescriptor4 = []byte{
// 1416 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x57, 0x4f, 0x6f, 0x13, 0x47,
0x14, 0x67, 0x9d, 0xc4, 0x89, 0x9f, 0xf3, 0x8f, 0x21, 0x0d, 0xc6, 0x50, 0x30, 0x4b, 0x21, 0x91,
0xa5, 0xda, 0x4d, 0x8a, 0x2a, 0x30, 0x6d, 0x81, 0x80, 0x81, 0x08, 0x87, 0x98, 0x75, 0x00, 0x09,
0x51, 0x59, 0x63, 0x7b, 0x70, 0xb7, 0xd9, 0x7f, 0xd9, 0x19, 0x47, 0x31, 0x15, 0x97, 0x4a, 0x3d,
0xf5, 0xd2, 0x52, 0x55, 0x3d, 0xb4, 0xb7, 0xf6, 0x54, 0x71, 0xef, 0xad, 0x1f, 0xa0, 0xd7, 0x7e,
0x85, 0x7e, 0x8b, 0x5e, 0xaa, 0xf9, 0xe7, 0x6c, 0xec, 0xc5, 0x09, 0x72, 0xd5, 0x93, 0x67, 0xe6,
0xbd, 0x79, 0xef, 0xb7, 0xbf, 0xf7, 0x66, 0x7e, 0x63, 0x38, 0xd7, 0xf6, 0xfd, 0xb6, 0x43, 0x8a,
0x34, 0xc0, 0x9e, 0x47, 0xc2, 0xe2, 0xee, 0x8a, 0x1e, 0x16, 0x82, 0xd0, 0x67, 0x3e, 0x3a, 0x2e,
0x1d, 0x0a, 0x7a, 0x75, 0x77, 0x25, 0x7b, 0x46, 0xed, 0xc1, 0x81, 0x5d, 0xc4, 0x9e, 0xe7, 0x33,
0xcc, 0x6c, 0xdf, 0xa3, 0x72, 0x43, 0xf6, 0xb4, 0xb2, 0x8a, 0x59, 0xa3, 0xf3, 0xbc, 0x48, 0xdc,
0x80, 0x75, 0x95, 0xf1, 0x4c, 0xbf, 0x91, 0xb2, 0xb0, 0xd3, 0x64, 0xca, 0x7a, 0xae, 0xdf, 0xca,
0x6c, 0x97, 0x50, 0x86, 0xdd, 0xa0, 0x6f, 0x7b, 0x04, 0xed, 0x36, 0xe9, 0xea, 0xcc, 0xb9, 0x41,
0xab, 0xdb, 0x91, 0xe0, 0x94, 0x87, 0x39, 0xe8, 0x11, 0x12, 0xda, 0x71, 0x58, 0x9d, 0x12, 0x0d,
0xe2, 0xc2, 0xa0, 0x0f, 0x0b, 0xb1, 0x47, 0x71, 0x33, 0x12, 0x28, 0x06, 0x08, 0xeb, 0x06, 0x44,
0x5a, 0xcd, 0xcf, 0x61, 0xe1, 0x56, 0x48, 0x30, 0x23, 0x35, 0x42, 0xa9, 0xed, 0x7b, 0x16, 0xd9,
0xe9, 0x10, 0xca, 0x50, 0x16, 0xa6, 0x5a, 0x98, 0xe1, 0x06, 0xa6, 0x24, 0x63, 0xe4, 0x8c, 0xe5,
0x94, 0xd5, 0x9b, 0xa3, 0xcb, 0x30, 0x49, 0xa5, 0x77, 0x26, 0x91, 0x33, 0x96, 0xd3, 0xab, 0xd9,
0xc2, 0x00, 0xf3, 0x05, 0x1d, 0x4f, 0xbb, 0x9a, 0xaf, 0x13, 0x30, 0xa9, 0x16, 0x11, 0x82, 0x71,
0x0f, 0xbb, 0x3a, 0xb2, 0x18, 0xa3, 0x4f, 0x21, 0xe9, 0xe0, 0x06, 0x71, 0x68, 0x26, 0x91, 0x1b,
0x5b, 0x4e, 0xaf, 0x5e, 0x7a, 0x73, 0xd0, 0x42, 0x45, 0x38, 0x96, 0x3d, 0x16, 0x76, 0x2d, 0xb5,
0x0b, 0x5d, 0x83, 0x74, 0x53, 0x7c, 0x49, 0x9d, 0x97, 0x22, 0x33, 0x76, 0x10, 0x99, 0xae, 0x53,
0x61, 0x4b, 0xd7, 0xc9, 0x02, 0xe9, 0xce, 0x17, 0xd0, 0x23, 0x38, 0x85, 0x83, 0x20, 0xf4, 0xf7,
0x6c, 0x97, 0x47, 0x70, 0x30, 0x65, 0xf5, 0x0e, 0x55, 0xa1, 0xc6, 0x0f, 0x0d, 0xb5, 0x18, 0xd9,
0x5c, 0xc1, 0x94, 0x3d, 0xa2, 0x22, 0x6c, 0xf6, 0x2a, 0xa4, 0x23, 0x50, 0xd1, 0x3c, 0x8c, 0x6d,
0x93, 0xae, 0xfa, 0x6a, 0x3e, 0x44, 0x0b, 0x30, 0xb1, 0x8b, 0x9d, 0x0e, 0x11, 0x44, 0xa6, 0x2c,
0x39, 0x29, 0x25, 0xae, 0x18, 0xe6, 0x12, 0x1c, 0xbf, 0x4b, 0x58, 0x5f, 0x55, 0x62, 0x78, 0x33,
0xbf, 0x36, 0xe0, 0x44, 0xc5, 0xa6, 0xda, 0x95, 0x1e, 0xa5, 0x82, 0xa7, 0x21, 0x15, 0xe0, 0x36,
0xa9, 0x53, 0xfb, 0x85, 0x4c, 0x3d, 0x61, 0x4d, 0xf1, 0x85, 0x9a, 0xfd, 0x82, 0xa0, 0x77, 0x01,
0x84, 0x91, 0xf9, 0xdb, 0xc4, 0x13, 0x3c, 0xa6, 0x2c, 0xe1, 0xbe, 0xc5, 0x17, 0xd0, 0x22, 0x24,
0x9f, 0xdb, 0x0e, 0x23, 0xa1, 0xe0, 0x25, 0x65, 0xa9, 0x99, 0xb9, 0x0b, 0x0b, 0x07, 0x61, 0xd0,
0xc0, 0xf7, 0x28, 0x41, 0x1f, 0xc1, 0x94, 0x6a, 0x01, 0x9a, 0x31, 0x44, 0x65, 0x87, 0xb5, 0x4b,
0xcf, 0x17, 0x5d, 0x82, 0x39, 0x8f, 0xec, 0xb1, 0x7a, 0x04, 0x8b, 0x24, 0x69, 0x86, 0x2f, 0x57,
0x35, 0x1e, 0x33, 0x0f, 0x0b, 0xb7, 0x89, 0x43, 0x06, 0x3a, 0x38, 0x8e, 0xab, 0x6f, 0xc6, 0xe1,
0x78, 0x79, 0x8f, 0x34, 0x3b, 0x8c, 0xd4, 0x76, 0x1c, 0xed, 0x99, 0xd9, 0xef, 0x67, 0xe9, 0xac,
0xa7, 0xe8, 0x1e, 0xa4, 0x23, 0x07, 0x4a, 0x75, 0x7b, 0x5c, 0x63, 0x6e, 0xed, 0x7b, 0xd5, 0x88,
0x43, 0x9a, 0xcc, 0x0f, 0xad, 0xe8, 0x56, 0x5e, 0x7a, 0xba, 0xe3, 0x28, 0x36, 0xf9, 0x10, 0x15,
0x21, 0x19, 0xe0, 0x10, 0xbb, 0x54, 0xf5, 0xd7, 0xc9, 0x81, 0xfe, 0xaa, 0x89, 0x0b, 0xc7, 0x52,
0x6e, 0xe8, 0x11, 0xa4, 0xc5, 0xa8, 0xce, 0x8f, 0x2f, 0xcd, 0x4c, 0x08, 0x2e, 0x2f, 0xc7, 0x80,
0x19, 0xf8, 0xc2, 0x42, 0x95, 0xef, 0xdb, 0xe2, 0xdb, 0xe4, 0x99, 0x81, 0xa0, 0xb7, 0x80, 0xce,
0xc3, 0x34, 0xbf, 0x58, 0x5c, 0x4d, 0x72, 0x32, 0x67, 0x2c, 0x4f, 0x5b, 0x69, 0xb9, 0x26, 0x4b,
0xbe, 0x01, 0xb0, 0xd3, 0x21, 0x61, 0xb7, 0xee, 0xfa, 0x2d, 0x92, 0x99, 0xcc, 0x19, 0xcb, 0xb3,
0xab, 0x85, 0x23, 0x25, 0x7e, 0xc8, 0xb7, 0x6d, 0xf8, 0x2d, 0x62, 0xa5, 0x76, 0xf4, 0x30, 0xfb,
0x18, 0xe6, 0xfa, 0x00, 0xc5, 0x9c, 0x8c, 0xf7, 0xa3, 0x27, 0x23, 0xc2, 0x4e, 0x94, 0xf4, 0x6e,
0x40, 0xa2, 0x47, 0xa6, 0x00, 0xa9, 0x5e, 0x3e, 0x04, 0x90, 0x7c, 0xb0, 0x69, 0x6d, 0xdc, 0xac,
0xcc, 0x1f, 0x43, 0x53, 0x30, 0x5e, 0xad, 0xdc, 0x7c, 0x30, 0x6f, 0xa0, 0x34, 0x4c, 0x56, 0xad,
0xcd, 0x3b, 0xeb, 0x95, 0xf2, 0x7c, 0xc2, 0xfc, 0x35, 0x01, 0x69, 0x8b, 0xe0, 0xd6, 0xff, 0xd9,
0x07, 0x0b, 0x30, 0xc1, 0x70, 0xc3, 0x21, 0xaa, 0x13, 0xe4, 0x84, 0xaf, 0xda, 0x5e, 0x8b, 0xec,
0xa9, 0x23, 0x25, 0x27, 0x1c, 0x4f, 0xd3, 0x77, 0x3a, 0xae, 0x27, 0x8b, 0x9d, 0xb2, 0xf4, 0x14,
0xad, 0xc2, 0xe4, 0x36, 0xe9, 0x72, 0x25, 0x10, 0xe5, 0x4a, 0xaf, 0x9e, 0x8a, 0xc1, 0x72, 0x9f,
0x74, 0x6b, 0x84, 0x59, 0xc9, 0x6d, 0xf1, 0xcb, 0x73, 0x38, 0xb6, 0x6b, 0xb3, 0xcc, 0x54, 0xce,
0x58, 0x1e, 0xb3, 0xe4, 0x64, 0xa0, 0xfa, 0xa9, 0x81, 0xea, 0x9b, 0x0c, 0x4e, 0xae, 0x91, 0xb6,
0xed, 0x45, 0xbe, 0xed, 0x70, 0xc6, 0xae, 0xc3, 0xa4, 0x1f, 0x08, 0xad, 0x55, 0x6c, 0x5d, 0x1c,
0xce, 0xd6, 0xa6, 0x74, 0xb6, 0xf4, 0x2e, 0xf3, 0x1f, 0x03, 0x66, 0x6e, 0xf9, 0xae, 0x6b, 0xb3,
0xc3, 0x93, 0x2d, 0xc1, 0x6c, 0x84, 0xe3, 0xba, 0xdd, 0x12, 0x39, 0xa7, 0xef, 0x1d, 0xb3, 0x66,
0x22, 0xeb, 0xeb, 0x2d, 0xf4, 0x19, 0x2c, 0x52, 0xdb, 0x6b, 0x3b, 0x44, 0x5e, 0xee, 0x91, 0x92,
0x8e, 0xbd, 0x05, 0xc8, 0x7b, 0xc7, 0xac, 0x05, 0x19, 0x86, 0xdf, 0xf3, 0x91, 0xe2, 0x5e, 0x85,
0x94, 0x56, 0x71, 0x7e, 0xaa, 0xf9, 0xf9, 0x3c, 0x1d, 0x13, 0x71, 0x43, 0xf9, 0x58, 0xfb, 0xde,
0x6b, 0x33, 0x07, 0x3a, 0xcc, 0x7c, 0x02, 0xb3, 0xfa, 0xe3, 0xd5, 0x35, 0x5a, 0x86, 0xf9, 0xa6,
0x58, 0xa9, 0xf7, 0x5e, 0x1a, 0x82, 0x86, 0xe1, 0xc2, 0x34, 0x27, 0xf7, 0xf4, 0x16, 0x4c, 0x0b,
0xe6, 0x2c, 0xdf, 0x71, 0x1a, 0xb8, 0xb9, 0x7d, 0x38, 0xaf, 0x17, 0xe3, 0x79, 0xed, 0x63, 0x75,
0xf5, 0xd5, 0x2c, 0x4c, 0xd6, 0xe4, 0xe7, 0xa1, 0x9f, 0x78, 0xd9, 0xa2, 0x0f, 0x0a, 0xb4, 0x14,
0xc3, 0x40, 0xdc, 0x93, 0x23, 0x3b, 0x44, 0x16, 0xcc, 0xf2, 0x57, 0x7f, 0xfd, 0xfd, 0x7d, 0xe2,
0xba, 0x59, 0xe2, 0xcf, 0x97, 0x2f, 0xb5, 0x8e, 0x7d, 0x12, 0x84, 0xfe, 0x17, 0xa4, 0xc9, 0x68,
0x31, 0x5f, 0xb4, 0x3d, 0xca, 0xb0, 0xd7, 0x24, 0x7c, 0xac, 0xed, 0xb4, 0x98, 0x7f, 0x59, 0xd4,
0x82, 0x52, 0x32, 0xf2, 0xe8, 0x5b, 0x03, 0x60, 0x5f, 0x55, 0xd1, 0x7b, 0x31, 0x19, 0x07, 0x44,
0x77, 0x28, 0xae, 0x1b, 0x02, 0x57, 0x09, 0x5d, 0x11, 0xb8, 0xb8, 0xc6, 0x1c, 0x01, 0x53, 0x0f,
0x52, 0x31, 0xff, 0x12, 0xfd, 0x62, 0xc0, 0x74, 0x54, 0x37, 0x51, 0xdc, 0xb5, 0x12, 0xa3, 0xef,
0xd9, 0xa5, 0x43, 0xfd, 0x64, 0xe7, 0x98, 0x6b, 0x02, 0xe3, 0xc7, 0x68, 0x04, 0xee, 0xd0, 0x2b,
0x03, 0x66, 0x0e, 0xa8, 0x6c, 0x6c, 0x59, 0xe3, 0x74, 0x38, 0xbb, 0x38, 0xd0, 0x9e, 0x65, 0xfe,
0xca, 0xd6, 0xd4, 0xe5, 0x47, 0xa2, 0x0e, 0xf6, 0x25, 0x27, 0xb6, 0x9a, 0x03, 0x8a, 0x94, 0x3d,
0x13, 0xe3, 0x65, 0x89, 0x87, 0x75, 0x8d, 0x30, 0xf3, 0xa1, 0x00, 0x75, 0xdf, 0xbc, 0x23, 0x40,
0xa9, 0x64, 0x6f, 0x89, 0xab, 0x44, 0x7a, 0x49, 0x79, 0xcf, 0xfd, 0x61, 0xc0, 0x09, 0x0d, 0x83,
0x85, 0x04, 0xbb, 0xb6, 0xd7, 0x3e, 0x3a, 0xdc, 0x0b, 0x31, 0x5e, 0x55, 0x1c, 0x32, 0x1b, 0x3b,
0xfb, 0xa8, 0x9f, 0x0a, 0xd4, 0x5b, 0xe6, 0xe6, 0x7f, 0x81, 0x3a, 0x82, 0xb1, 0x64, 0xe4, 0x3f,
0x30, 0xd0, 0x77, 0x06, 0x8c, 0x73, 0x99, 0x44, 0x67, 0x63, 0xa9, 0xeb, 0xe9, 0xe7, 0x21, 0xd4,
0xde, 0x17, 0x20, 0xcb, 0xe6, 0x8d, 0x51, 0x40, 0x86, 0x04, 0xb7, 0x38, 0xa9, 0xaf, 0x0d, 0x98,
0xe9, 0x21, 0x3d, 0x12, 0xb8, 0x23, 0x11, 0xb9, 0x25, 0x30, 0x3e, 0x30, 0xd7, 0x47, 0xc1, 0x48,
0xa3, 0xb8, 0x24, 0x85, 0xbf, 0x1b, 0x30, 0xdf, 0xaf, 0xa1, 0x28, 0x1f, 0x83, 0xe8, 0x0d, 0x42,
0x9b, 0x3d, 0x3b, 0x5c, 0x98, 0xcc, 0x27, 0x02, 0xf8, 0x43, 0xb3, 0x32, 0x0a, 0xf0, 0x46, 0x5f,
0x72, 0x4e, 0xf4, 0xcf, 0x06, 0x24, 0xa5, 0x12, 0xa1, 0x5c, 0xdc, 0x45, 0x1e, 0x55, 0xe8, 0xec,
0xf9, 0x21, 0x1e, 0xea, 0x32, 0xda, 0x10, 0x40, 0xef, 0x9a, 0x6b, 0xa3, 0x00, 0x95, 0xa2, 0xc6,
0xe1, 0xfd, 0x68, 0xc0, 0x94, 0xd6, 0x33, 0x64, 0xc6, 0xb5, 0xc0, 0x41, 0xb1, 0x7b, 0xe3, 0x6d,
0xb4, 0x29, 0x70, 0xad, 0x9b, 0xb7, 0x47, 0xea, 0x4e, 0x95, 0xac, 0x64, 0xe4, 0xd7, 0x7e, 0x30,
0xe0, 0x9d, 0xa6, 0xef, 0x0e, 0x42, 0x5a, 0x9b, 0x56, 0x5a, 0x59, 0xe5, 0x08, 0xaa, 0xc6, 0xd3,
0x2b, 0xca, 0xa5, 0xed, 0x3b, 0xd8, 0x6b, 0x17, 0xfc, 0xb0, 0x5d, 0x6c, 0x13, 0x4f, 0xe0, 0x2b,
0x4a, 0x13, 0x0e, 0x6c, 0x1a, 0xf9, 0xff, 0x7e, 0x4d, 0x0d, 0x7f, 0x4b, 0x9c, 0xbc, 0x2b, 0xb7,
0xde, 0x72, 0xfc, 0x4e, 0xab, 0xa0, 0xe2, 0x16, 0x1e, 0xaf, 0xfc, 0xa9, 0x2d, 0xcf, 0x84, 0xe5,
0x99, 0xb2, 0x3c, 0x7b, 0xbc, 0xd2, 0x48, 0x8a, 0xc0, 0x1f, 0xfe, 0x1b, 0x00, 0x00, 0xff, 0xff,
0x57, 0x35, 0x15, 0x7f, 0x4e, 0x11, 0x00, 0x00,
// 1657 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x58, 0xdd, 0x6f, 0x53, 0xc9,
0x15, 0xe7, 0xda, 0x89, 0x13, 0x1f, 0xc7, 0x89, 0x33, 0x98, 0x60, 0x0c, 0x85, 0x70, 0xf9, 0x48,
0x64, 0xa9, 0x36, 0x49, 0x51, 0x15, 0x02, 0x2d, 0x10, 0x08, 0x90, 0x92, 0x10, 0x73, 0x9d, 0x80,
0x8a, 0xa8, 0xac, 0xb1, 0x3d, 0xb8, 0xb7, 0xb9, 0x5f, 0xb9, 0x33, 0x8e, 0x62, 0x2a, 0x5e, 0x5a,
0xf5, 0xbd, 0x2d, 0xaa, 0xfa, 0xd0, 0xbe, 0xed, 0xdb, 0x8a, 0x47, 0x24, 0xde, 0xf6, 0x65, 0xa5,
0x7d, 0x58, 0x69, 0x9f, 0xf6, 0x5f, 0xd8, 0xff, 0x62, 0x5f, 0x56, 0x33, 0xf7, 0xc3, 0xd7, 0xf6,
0xc4, 0x31, 0x32, 0xbb, 0xd2, 0x6a, 0x9f, 0x3c, 0x33, 0xe7, 0xcc, 0x9c, 0xdf, 0xfd, 0x9d, 0x33,
0x73, 0xce, 0x31, 0x5c, 0x68, 0xda, 0x76, 0xd3, 0x20, 0x25, 0xea, 0x60, 0xcb, 0x22, 0x6e, 0xe9,
0x60, 0x29, 0x18, 0x16, 0x1d, 0xd7, 0x66, 0x36, 0x9a, 0xf5, 0x14, 0x8a, 0xc1, 0xea, 0xc1, 0x52,
0xfe, 0x9c, 0xbf, 0x07, 0x3b, 0x7a, 0x09, 0x5b, 0x96, 0xcd, 0x30, 0xd3, 0x6d, 0x8b, 0x7a, 0x1b,
0xf2, 0x67, 0x7d, 0xa9, 0x98, 0xd5, 0x5a, 0xaf, 0x4a, 0xc4, 0x74, 0x58, 0xdb, 0x17, 0x9e, 0xeb,
0x15, 0x52, 0xe6, 0xb6, 0xea, 0xcc, 0x97, 0x5e, 0xe8, 0x95, 0x32, 0xdd, 0x24, 0x94, 0x61, 0xd3,
0xe9, 0xd9, 0x1e, 0x41, 0xbb, 0x47, 0xda, 0x81, 0xe5, 0xf9, 0x7e, 0xa9, 0xd9, 0xf2, 0xc0, 0xf9,
0x1a, 0x6a, 0xbf, 0x86, 0x4b, 0x68, 0xcb, 0x60, 0x55, 0x4a, 0x02, 0x10, 0x97, 0xfa, 0x75, 0x98,
0x8b, 0x2d, 0x8a, 0xeb, 0x91, 0x83, 0x24, 0x40, 0x58, 0xdb, 0x21, 0x9e, 0x54, 0xfd, 0x33, 0x64,
0xef, 0xb9, 0x04, 0x33, 0x52, 0x21, 0x94, 0xea, 0xb6, 0xa5, 0x91, 0xfd, 0x16, 0xa1, 0x0c, 0xe5,
0x61, 0xb2, 0x81, 0x19, 0xae, 0x61, 0x4a, 0x72, 0xca, 0xbc, 0xb2, 0x98, 0xd4, 0xc2, 0x39, 0xba,
0x0e, 0x13, 0xd4, 0xd3, 0xce, 0xc5, 0xe6, 0x95, 0xc5, 0xd4, 0x72, 0xbe, 0xd8, 0xc7, 0x7c, 0x31,
0x38, 0x2f, 0x50, 0x55, 0xdf, 0xc5, 0x60, 0xc2, 0x5f, 0x44, 0x08, 0xc6, 0x2c, 0x6c, 0x06, 0x27,
0x8b, 0x31, 0xfa, 0x3d, 0x24, 0x0c, 0x5c, 0x23, 0x06, 0xcd, 0xc5, 0xe6, 0xe3, 0x8b, 0xa9, 0xe5,
0xab, 0x47, 0x1f, 0x5a, 0xdc, 0x14, 0x8a, 0xeb, 0x16, 0x73, 0xdb, 0x9a, 0xbf, 0x0b, 0xdd, 0x84,
0x54, 0x5d, 0x7c, 0x49, 0x95, 0xbb, 0x22, 0x17, 0xef, 0x46, 0x16, 0xf8, 0xa9, 0xb8, 0x13, 0xf8,
0x49, 0x03, 0x4f, 0x9d, 0x2f, 0xa0, 0x5d, 0x38, 0x83, 0x1d, 0xc7, 0xb5, 0x0f, 0x75, 0x93, 0x9f,
0x60, 0x60, 0xca, 0xaa, 0x2d, 0xea, 0x1f, 0x35, 0x76, 0xec, 0x51, 0x73, 0x91, 0xcd, 0x9b, 0x98,
0xb2, 0x5d, 0x2a, 0x8e, 0xcd, 0xdf, 0x80, 0x54, 0x04, 0x2a, 0xca, 0x40, 0x7c, 0x8f, 0xb4, 0xfd,
0xaf, 0xe6, 0x43, 0x94, 0x85, 0xf1, 0x03, 0x6c, 0xb4, 0x88, 0x20, 0x32, 0xa9, 0x79, 0x93, 0xd5,
0xd8, 0x8a, 0xa2, 0x2e, 0xc0, 0xec, 0x43, 0xc2, 0x7a, 0xbc, 0x22, 0xe1, 0x4d, 0xfd, 0x87, 0x02,
0x27, 0x37, 0x75, 0x1a, 0xa8, 0xd2, 0x61, 0x3c, 0x78, 0x16, 0x92, 0x0e, 0x6e, 0x92, 0x2a, 0xd5,
0x5f, 0x7b, 0xa6, 0xc7, 0xb5, 0x49, 0xbe, 0x50, 0xd1, 0x5f, 0x13, 0xf4, 0x2b, 0x00, 0x21, 0x64,
0xf6, 0x1e, 0xb1, 0x04, 0x8f, 0x49, 0x4d, 0xa8, 0xef, 0xf0, 0x05, 0x34, 0x07, 0x89, 0x57, 0xba,
0xc1, 0x88, 0x2b, 0x78, 0x49, 0x6a, 0xfe, 0x4c, 0x3d, 0x80, 0x6c, 0x37, 0x0c, 0xea, 0xd8, 0x16,
0x25, 0xe8, 0xb7, 0x30, 0xe9, 0x87, 0x00, 0xcd, 0x29, 0xc2, 0xb3, 0x83, 0xc2, 0x25, 0xd4, 0x45,
0x57, 0x61, 0xc6, 0x22, 0x87, 0xac, 0x1a, 0xc1, 0xe2, 0x91, 0x94, 0xe6, 0xcb, 0xe5, 0x00, 0x8f,
0x5a, 0x80, 0xec, 0x7d, 0x62, 0x90, 0xbe, 0x08, 0x96, 0x71, 0xf5, 0x7e, 0x0c, 0x66, 0xd7, 0x0f,
0x49, 0xbd, 0xc5, 0x48, 0x65, 0xdf, 0x08, 0x34, 0x73, 0x9d, 0x78, 0xf6, 0x94, 0x83, 0x29, 0x7a,
0x04, 0xa9, 0xc8, 0x85, 0xf2, 0xa3, 0x5d, 0x16, 0x98, 0x3b, 0x1d, 0xad, 0x0a, 0x31, 0x48, 0x9d,
0xd9, 0xae, 0x16, 0xdd, 0xca, 0x5d, 0x4f, 0xf7, 0x0d, 0x9f, 0x4d, 0x3e, 0x44, 0x25, 0x48, 0x38,
0xd8, 0xc5, 0x26, 0xf5, 0xe3, 0xeb, 0x74, 0x5f, 0x7c, 0x55, 0xc4, 0x83, 0xa3, 0xf9, 0x6a, 0x68,
0x17, 0x52, 0x62, 0x54, 0xe5, 0xd7, 0x97, 0xe6, 0xc6, 0x05, 0x97, 0xd7, 0x25, 0x60, 0xfa, 0xbe,
0xb0, 0x58, 0xe6, 0xfb, 0x76, 0xf8, 0x36, 0xef, 0xce, 0x80, 0x13, 0x2e, 0xa0, 0x8b, 0x30, 0xc5,
0x1f, 0x16, 0x33, 0x20, 0x39, 0x31, 0xaf, 0x2c, 0x4e, 0x69, 0x29, 0x6f, 0xcd, 0x73, 0xf9, 0x16,
0xc0, 0x7e, 0x8b, 0xb8, 0xed, 0xaa, 0x69, 0x37, 0x48, 0x6e, 0x62, 0x5e, 0x59, 0x9c, 0x5e, 0x2e,
0x0e, 0x65, 0xf8, 0x29, 0xdf, 0xb6, 0x65, 0x37, 0x88, 0x96, 0xdc, 0x0f, 0x86, 0x68, 0x01, 0x66,
0x1c, 0xec, 0x32, 0x9d, 0x13, 0xe3, 0x1b, 0x9d, 0x14, 0x46, 0xa7, 0xc3, 0x65, 0x61, 0x37, 0xff,
0x0c, 0x66, 0x7a, 0x90, 0x4b, 0xae, 0xd0, 0xaf, 0xa3, 0x57, 0x28, 0x42, 0x63, 0xd4, 0x3b, 0x6d,
0x87, 0x44, 0xef, 0x56, 0x11, 0x92, 0x21, 0x30, 0x04, 0x90, 0x78, 0xb2, 0xad, 0x6d, 0xdd, 0xdd,
0xcc, 0x9c, 0x40, 0x93, 0x30, 0x56, 0xde, 0xbc, 0xfb, 0x24, 0xa3, 0xa0, 0x14, 0x4c, 0x94, 0xb5,
0xed, 0x07, 0x1b, 0x9b, 0xeb, 0x99, 0x98, 0xba, 0x07, 0x99, 0x72, 0x80, 0x6c, 0xdb, 0x11, 0x19,
0x04, 0x5d, 0x83, 0x6c, 0xe7, 0x23, 0xf8, 0x3d, 0xaa, 0xd6, 0xda, 0x8c, 0x50, 0x81, 0x2c, 0xae,
0xa1, 0x50, 0xc6, 0xaf, 0xd4, 0x1a, 0x97, 0xa0, 0x2b, 0x30, 0x6d, 0xe2, 0xc3, 0x6a, 0x28, 0xa1,
0x02, 0x71, 0x5c, 0x4b, 0x9b, 0xf8, 0x30, 0x3c, 0x9e, 0xaa, 0x5f, 0xc6, 0xe1, 0x54, 0x38, 0x15,
0x30, 0x7f, 0x66, 0x71, 0xfa, 0x47, 0x59, 0x9c, 0xae, 0x48, 0xc0, 0x48, 0xbf, 0x72, 0x60, 0xac,
0x96, 0x61, 0xb6, 0x43, 0xba, 0xed, 0x79, 0x42, 0x04, 0x6c, 0x6a, 0xf9, 0xd2, 0x20, 0x03, 0xbe,
0xd3, 0xb4, 0x8c, 0xd3, 0xb3, 0xf2, 0xa3, 0x85, 0xd8, 0x57, 0x31, 0xc8, 0x86, 0xe6, 0x35, 0x82,
0x1b, 0x3f, 0xa5, 0x13, 0xb3, 0x30, 0xce, 0x70, 0xcd, 0x20, 0xbe, 0x1b, 0xbd, 0x09, 0x5f, 0xd5,
0xad, 0x06, 0x39, 0xf4, 0xdf, 0x6d, 0x6f, 0xc2, 0xf1, 0xd4, 0x6d, 0xa3, 0x65, 0x5a, 0x9e, 0xa7,
0x92, 0x5a, 0x30, 0x45, 0xcb, 0x30, 0xb1, 0x47, 0xda, 0xbc, 0xdc, 0xf0, 0x29, 0x3e, 0x23, 0xc1,
0xf2, 0x98, 0xb4, 0x2b, 0x84, 0x69, 0x89, 0x3d, 0xf1, 0x2b, 0x77, 0x50, 0x72, 0x04, 0x07, 0xa9,
0xd7, 0x21, 0x19, 0x6a, 0xc9, 0x5e, 0x0e, 0x45, 0xf6, 0x72, 0xa8, 0x6f, 0x15, 0x98, 0x8d, 0xd0,
0xef, 0xa7, 0xa2, 0x5b, 0x3c, 0xb3, 0x85, 0xb7, 0xcf, 0x4b, 0x46, 0xe7, 0x06, 0xc1, 0xd2, 0x22,
0xfa, 0xe8, 0x8e, 0xcc, 0x3f, 0xe7, 0x07, 0xfb, 0xa7, 0xcb, 0x2f, 0xea, 0x37, 0x31, 0x48, 0xfd,
0x72, 0x62, 0x21, 0x0b, 0xe3, 0x86, 0x6e, 0xea, 0x4c, 0x3c, 0xee, 0x71, 0xcd, 0x9b, 0xf4, 0xa5,
0x9b, 0x64, 0x7f, 0xba, 0x91, 0x78, 0x19, 0xa4, 0x5e, 0x66, 0x70, 0x7a, 0x8d, 0x34, 0x75, 0x2b,
0x4a, 0xf8, 0xb1, 0xd4, 0xde, 0x86, 0x89, 0x20, 0x30, 0x3d, 0x5a, 0xaf, 0x0c, 0xa6, 0x35, 0x08,
0xcd, 0x60, 0x97, 0xfa, 0xbd, 0x02, 0xe9, 0x7b, 0xb6, 0x69, 0xea, 0xec, 0x78, 0x63, 0x0b, 0x30,
0x1d, 0x71, 0x46, 0x55, 0x6f, 0x08, 0x9b, 0x53, 0x8f, 0x4e, 0x68, 0xe9, 0xc8, 0xfa, 0x46, 0x03,
0xfd, 0x09, 0xe6, 0xa8, 0x6e, 0x35, 0x0d, 0xe2, 0x95, 0x9d, 0x11, 0xdf, 0xc7, 0x3f, 0x02, 0xe4,
0xa3, 0x13, 0x5a, 0xd6, 0x3b, 0x86, 0x57, 0xa0, 0x91, 0x28, 0xb8, 0x01, 0xc9, 0xa0, 0xbf, 0xe0,
0xef, 0x38, 0x0f, 0xfc, 0xb3, 0x92, 0x13, 0xb7, 0x7c, 0x1d, 0xad, 0xa3, 0xbd, 0x96, 0xee, 0x0a,
0x45, 0xf5, 0x39, 0x4c, 0x07, 0x1f, 0xef, 0xdf, 0xaa, 0x75, 0xc8, 0xd4, 0xc5, 0x4a, 0x35, 0xec,
0x81, 0x04, 0x0d, 0x83, 0x4b, 0xe6, 0x19, 0x6f, 0x4f, 0xb8, 0xa0, 0x6a, 0x30, 0xa3, 0xd9, 0x86,
0x51, 0xc3, 0xf5, 0xbd, 0xe3, 0x79, 0xbd, 0x22, 0xe7, 0xb5, 0x87, 0xd5, 0xe5, 0xbf, 0xcf, 0xc2,
0x44, 0xc5, 0xfb, 0x3c, 0xf4, 0x3f, 0xee, 0xb6, 0x68, 0xab, 0x83, 0x16, 0x24, 0x0c, 0xc8, 0x9a,
0xa1, 0xfc, 0x80, 0x82, 0x55, 0x5d, 0xff, 0xdb, 0xb7, 0xdf, 0xbd, 0x8d, 0xdd, 0x56, 0x57, 0x79,
0x63, 0xf5, 0xd7, 0xa0, 0xc2, 0xfe, 0x9d, 0xe3, 0xda, 0x7f, 0x21, 0x75, 0x46, 0x4b, 0x85, 0x92,
0x6e, 0x51, 0x86, 0xad, 0x3a, 0xe1, 0xe3, 0x40, 0x4e, 0x4b, 0x85, 0x37, 0xa5, 0xa0, 0xd4, 0x5d,
0x55, 0x0a, 0xe8, 0x9f, 0x0a, 0x40, 0xa7, 0xde, 0x47, 0x97, 0x25, 0x16, 0xfb, 0xda, 0x81, 0x81,
0xb8, 0xee, 0x08, 0x5c, 0xab, 0x68, 0x45, 0xe0, 0xe2, 0xd5, 0xef, 0x10, 0x98, 0x42, 0x48, 0xa5,
0xc2, 0x1b, 0xf4, 0x99, 0x02, 0x53, 0xd1, 0x8a, 0x1e, 0xc9, 0xde, 0x1f, 0x49, 0xe7, 0x91, 0x5f,
0x38, 0x56, 0xcf, 0x8b, 0x1c, 0x75, 0x4d, 0x60, 0xbc, 0x85, 0x46, 0xe0, 0x0e, 0xfd, 0x5b, 0x81,
0x74, 0x57, 0xfd, 0x2f, 0x75, 0xab, 0xac, 0x43, 0xc8, 0xcf, 0xf5, 0x85, 0xe7, 0x3a, 0xef, 0xff,
0x03, 0xea, 0x0a, 0x23, 0x51, 0x07, 0x9d, 0x62, 0x58, 0xea, 0xcd, 0xbe, 0x5a, 0x39, 0x2f, 0xcb,
0x44, 0x9a, 0x68, 0xf9, 0x2b, 0x84, 0xa9, 0x4f, 0x05, 0xa8, 0xc7, 0xea, 0x03, 0x01, 0xca, 0x37,
0xf6, 0x91, 0xb8, 0x56, 0x49, 0x68, 0x94, 0xc7, 0xdc, 0x17, 0x0a, 0x9c, 0x0c, 0x60, 0x30, 0x97,
0x60, 0x53, 0xb7, 0x9a, 0xc3, 0xc3, 0x3d, 0x32, 0x9f, 0x63, 0xa3, 0x83, 0xfa, 0x85, 0x40, 0xbd,
0xa3, 0x6e, 0x7f, 0x0a, 0xd4, 0x11, 0x8c, 0xab, 0x4a, 0xe1, 0x9a, 0x82, 0xfe, 0xa5, 0xc0, 0x18,
0xcf, 0xa7, 0xe8, 0xbc, 0x94, 0xba, 0x30, 0xd1, 0x1e, 0x43, 0xed, 0x63, 0x01, 0x72, 0x5d, 0xbd,
0x33, 0x0a, 0x48, 0x97, 0xe0, 0x06, 0x27, 0xf5, 0x9d, 0x02, 0xe9, 0x10, 0xe9, 0x50, 0xe0, 0x86,
0x22, 0x72, 0x47, 0x60, 0x7c, 0xa2, 0x6e, 0x8c, 0x82, 0x91, 0x46, 0x71, 0x79, 0x14, 0x7e, 0x50,
0x20, 0xd3, 0x9b, 0x43, 0x51, 0x41, 0x82, 0xe8, 0x88, 0x44, 0x9b, 0x3f, 0xa6, 0x00, 0x52, 0x9f,
0x0b, 0xe0, 0x4f, 0xd5, 0xcd, 0x51, 0x80, 0xd7, 0x7a, 0x8c, 0x73, 0xa2, 0xff, 0xaf, 0x40, 0xc2,
0xcb, 0x44, 0x68, 0x5e, 0xf6, 0x90, 0x47, 0x33, 0x74, 0xfe, 0xe2, 0x00, 0x0d, 0xff, 0x31, 0xda,
0x12, 0x40, 0x1f, 0xaa, 0x6b, 0xa3, 0x00, 0xf5, 0x92, 0x1a, 0x87, 0xf7, 0x5f, 0x05, 0x26, 0x83,
0x7c, 0x86, 0x54, 0x59, 0x08, 0x74, 0x27, 0xbb, 0x23, 0x5f, 0xa3, 0x6d, 0x81, 0x6b, 0x43, 0xbd,
0x3f, 0x52, 0x74, 0xfa, 0xc6, 0x38, 0xb2, 0x0f, 0x0a, 0x4c, 0x77, 0xb7, 0x5e, 0x68, 0x71, 0xd8,
0xee, 0x2c, 0x7f, 0x79, 0x60, 0xb9, 0x1c, 0x70, 0xb9, 0x2b, 0x30, 0x6f, 0xab, 0x7f, 0x18, 0x05,
0xb3, 0xd3, 0x05, 0x80, 0x23, 0x7f, 0xaf, 0x40, 0xba, 0xab, 0xa9, 0x92, 0xbe, 0xf5, 0xb2, 0xb6,
0x6b, 0x48, 0xdc, 0x9f, 0xe4, 0x96, 0x39, 0x51, 0xfb, 0xab, 0x4a, 0x61, 0xed, 0x3f, 0x0a, 0x9c,
0xaa, 0xdb, 0x66, 0x3f, 0x82, 0xb5, 0x29, 0xbf, 0x38, 0x29, 0x73, 0x97, 0x97, 0x95, 0x17, 0x2b,
0xbe, 0x4a, 0xd3, 0x36, 0xb0, 0xd5, 0x2c, 0xda, 0x6e, 0xb3, 0xd4, 0x24, 0x96, 0x08, 0x88, 0x92,
0x27, 0xc2, 0x8e, 0x4e, 0x23, 0x7f, 0xe5, 0xde, 0xf4, 0x87, 0x9f, 0xc7, 0x4e, 0x3f, 0xf4, 0xb6,
0xde, 0x33, 0xec, 0x56, 0xa3, 0xe8, 0x9f, 0x5b, 0x7c, 0xb6, 0xf4, 0x75, 0x20, 0x79, 0x29, 0x24,
0x2f, 0x7d, 0xc9, 0xcb, 0x67, 0x4b, 0xb5, 0x84, 0x38, 0xf8, 0x37, 0x3f, 0x04, 0x00, 0x00, 0xff,
0xff, 0x92, 0x18, 0x4b, 0x1c, 0x59, 0x17, 0x00, 0x00,
}

View File

@ -1,888 +0,0 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: google/tracing/trace.proto
/*
Package tracing is a generated protocol buffer package.
It is generated from these files:
google/tracing/trace.proto
It has these top-level messages:
TraceId
Module
StackTrace
LabelValue
Span
Trace
*/
package tracing
import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
import _ "google.golang.org/genproto/googleapis/api/annotations"
import google_protobuf1 "github.com/golang/protobuf/ptypes/timestamp"
import google_rpc "google.golang.org/genproto/googleapis/rpc/status"
// 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
// The type of the network event. SENT or RECV event.
type Span_TimeEvent_NetworkEvent_Type int32
const (
Span_TimeEvent_NetworkEvent_UNSPECIFIED Span_TimeEvent_NetworkEvent_Type = 0
Span_TimeEvent_NetworkEvent_SENT Span_TimeEvent_NetworkEvent_Type = 1
Span_TimeEvent_NetworkEvent_RECV Span_TimeEvent_NetworkEvent_Type = 2
)
var Span_TimeEvent_NetworkEvent_Type_name = map[int32]string{
0: "UNSPECIFIED",
1: "SENT",
2: "RECV",
}
var Span_TimeEvent_NetworkEvent_Type_value = map[string]int32{
"UNSPECIFIED": 0,
"SENT": 1,
"RECV": 2,
}
func (x Span_TimeEvent_NetworkEvent_Type) String() string {
return proto.EnumName(Span_TimeEvent_NetworkEvent_Type_name, int32(x))
}
func (Span_TimeEvent_NetworkEvent_Type) EnumDescriptor() ([]byte, []int) {
return fileDescriptor0, []int{4, 0, 1, 0}
}
// The type of the link.
type Span_Link_Type int32
const (
Span_Link_UNSPECIFIED Span_Link_Type = 0
Span_Link_CHILD Span_Link_Type = 1
Span_Link_PARENT Span_Link_Type = 2
)
var Span_Link_Type_name = map[int32]string{
0: "UNSPECIFIED",
1: "CHILD",
2: "PARENT",
}
var Span_Link_Type_value = map[string]int32{
"UNSPECIFIED": 0,
"CHILD": 1,
"PARENT": 2,
}
func (x Span_Link_Type) String() string {
return proto.EnumName(Span_Link_Type_name, int32(x))
}
func (Span_Link_Type) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{4, 1, 0} }
// A TraceId uniquely identifies a Trace. It is conceptually a 128-bit value,
// represented as a string, containing the hex-encoded value.
type TraceId struct {
// Trace ID specified as a hex-encoded string. *Must* be 32 bytes long.
HexEncoded string `protobuf:"bytes,1,opt,name=hex_encoded,json=hexEncoded" json:"hex_encoded,omitempty"`
}
func (m *TraceId) Reset() { *m = TraceId{} }
func (m *TraceId) String() string { return proto.CompactTextString(m) }
func (*TraceId) ProtoMessage() {}
func (*TraceId) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
func (m *TraceId) GetHexEncoded() string {
if m != nil {
return m.HexEncoded
}
return ""
}
type Module struct {
// Binary module.
// E.g. main binary, kernel modules, and dynamic libraries
// such as libc.so, sharedlib.so
Module string `protobuf:"bytes,1,opt,name=module" json:"module,omitempty"`
// Build_id is a unique identifier for the module,
// probably a hash of its contents
BuildId string `protobuf:"bytes,2,opt,name=build_id,json=buildId" json:"build_id,omitempty"`
}
func (m *Module) Reset() { *m = Module{} }
func (m *Module) String() string { return proto.CompactTextString(m) }
func (*Module) ProtoMessage() {}
func (*Module) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
func (m *Module) GetModule() string {
if m != nil {
return m.Module
}
return ""
}
func (m *Module) GetBuildId() string {
if m != nil {
return m.BuildId
}
return ""
}
type StackTrace struct {
// Stack frames of this stack trace.
StackFrame []*StackTrace_StackFrame `protobuf:"bytes,1,rep,name=stack_frame,json=stackFrame" json:"stack_frame,omitempty"`
// User can choose to use his own hash function to hash large labels to save
// network bandwidth and storage.
// Typical usage is to pass both initially to inform the storage of the
// mapping. And in subsequent calls, pass in stack_trace_hash_id only.
// User shall verify the hash value is successfully stored.
StackTraceHashId uint64 `protobuf:"varint,2,opt,name=stack_trace_hash_id,json=stackTraceHashId" json:"stack_trace_hash_id,omitempty"`
}
func (m *StackTrace) Reset() { *m = StackTrace{} }
func (m *StackTrace) String() string { return proto.CompactTextString(m) }
func (*StackTrace) ProtoMessage() {}
func (*StackTrace) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
func (m *StackTrace) GetStackFrame() []*StackTrace_StackFrame {
if m != nil {
return m.StackFrame
}
return nil
}
func (m *StackTrace) GetStackTraceHashId() uint64 {
if m != nil {
return m.StackTraceHashId
}
return 0
}
// Presents a single stack frame in a stack trace.
type StackTrace_StackFrame struct {
// Fully qualified names which uniquely identify function/method/etc.
FunctionName string `protobuf:"bytes,1,opt,name=function_name,json=functionName" json:"function_name,omitempty"`
// Used when function name is mangled. Not guaranteed to be fully
// qualified but usually it is.
OrigFunctionName string `protobuf:"bytes,2,opt,name=orig_function_name,json=origFunctionName" json:"orig_function_name,omitempty"`
// File name of the frame.
FileName string `protobuf:"bytes,3,opt,name=file_name,json=fileName" json:"file_name,omitempty"`
// Line number of the frame.
LineNumber int64 `protobuf:"varint,4,opt,name=line_number,json=lineNumber" json:"line_number,omitempty"`
// Column number is important in JavaScript(anonymous functions),
// Might not be available in some languages.
ColumnNumber int64 `protobuf:"varint,5,opt,name=column_number,json=columnNumber" json:"column_number,omitempty"`
// Binary module the code is loaded from.
LoadModule *Module `protobuf:"bytes,6,opt,name=load_module,json=loadModule" json:"load_module,omitempty"`
// source_version is deployment specific. It might be
// better to be stored in deployment metadata.
// However, in distributed tracing, its hard to keep track of
// source/binary versions at one place for all spans.
SourceVersion string `protobuf:"bytes,7,opt,name=source_version,json=sourceVersion" json:"source_version,omitempty"`
}
func (m *StackTrace_StackFrame) Reset() { *m = StackTrace_StackFrame{} }
func (m *StackTrace_StackFrame) String() string { return proto.CompactTextString(m) }
func (*StackTrace_StackFrame) ProtoMessage() {}
func (*StackTrace_StackFrame) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 0} }
func (m *StackTrace_StackFrame) GetFunctionName() string {
if m != nil {
return m.FunctionName
}
return ""
}
func (m *StackTrace_StackFrame) GetOrigFunctionName() string {
if m != nil {
return m.OrigFunctionName
}
return ""
}
func (m *StackTrace_StackFrame) GetFileName() string {
if m != nil {
return m.FileName
}
return ""
}
func (m *StackTrace_StackFrame) GetLineNumber() int64 {
if m != nil {
return m.LineNumber
}
return 0
}
func (m *StackTrace_StackFrame) GetColumnNumber() int64 {
if m != nil {
return m.ColumnNumber
}
return 0
}
func (m *StackTrace_StackFrame) GetLoadModule() *Module {
if m != nil {
return m.LoadModule
}
return nil
}
func (m *StackTrace_StackFrame) GetSourceVersion() string {
if m != nil {
return m.SourceVersion
}
return ""
}
// Allowed label values.
type LabelValue struct {
// The value of the label.
//
// Types that are valid to be assigned to Value:
// *LabelValue_StringValue
// *LabelValue_IntValue
// *LabelValue_BoolValue
Value isLabelValue_Value `protobuf_oneof:"value"`
}
func (m *LabelValue) Reset() { *m = LabelValue{} }
func (m *LabelValue) String() string { return proto.CompactTextString(m) }
func (*LabelValue) ProtoMessage() {}
func (*LabelValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
type isLabelValue_Value interface {
isLabelValue_Value()
}
type LabelValue_StringValue struct {
StringValue string `protobuf:"bytes,1,opt,name=string_value,json=stringValue,oneof"`
}
type LabelValue_IntValue struct {
IntValue int64 `protobuf:"varint,2,opt,name=int_value,json=intValue,oneof"`
}
type LabelValue_BoolValue struct {
BoolValue bool `protobuf:"varint,3,opt,name=bool_value,json=boolValue,oneof"`
}
func (*LabelValue_StringValue) isLabelValue_Value() {}
func (*LabelValue_IntValue) isLabelValue_Value() {}
func (*LabelValue_BoolValue) isLabelValue_Value() {}
func (m *LabelValue) GetValue() isLabelValue_Value {
if m != nil {
return m.Value
}
return nil
}
func (m *LabelValue) GetStringValue() string {
if x, ok := m.GetValue().(*LabelValue_StringValue); ok {
return x.StringValue
}
return ""
}
func (m *LabelValue) GetIntValue() int64 {
if x, ok := m.GetValue().(*LabelValue_IntValue); ok {
return x.IntValue
}
return 0
}
func (m *LabelValue) GetBoolValue() bool {
if x, ok := m.GetValue().(*LabelValue_BoolValue); ok {
return x.BoolValue
}
return false
}
// XXX_OneofFuncs is for the internal use of the proto package.
func (*LabelValue) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
return _LabelValue_OneofMarshaler, _LabelValue_OneofUnmarshaler, _LabelValue_OneofSizer, []interface{}{
(*LabelValue_StringValue)(nil),
(*LabelValue_IntValue)(nil),
(*LabelValue_BoolValue)(nil),
}
}
func _LabelValue_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
m := msg.(*LabelValue)
// value
switch x := m.Value.(type) {
case *LabelValue_StringValue:
b.EncodeVarint(1<<3 | proto.WireBytes)
b.EncodeStringBytes(x.StringValue)
case *LabelValue_IntValue:
b.EncodeVarint(2<<3 | proto.WireVarint)
b.EncodeVarint(uint64(x.IntValue))
case *LabelValue_BoolValue:
t := uint64(0)
if x.BoolValue {
t = 1
}
b.EncodeVarint(3<<3 | proto.WireVarint)
b.EncodeVarint(t)
case nil:
default:
return fmt.Errorf("LabelValue.Value has unexpected type %T", x)
}
return nil
}
func _LabelValue_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
m := msg.(*LabelValue)
switch tag {
case 1: // value.string_value
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
x, err := b.DecodeStringBytes()
m.Value = &LabelValue_StringValue{x}
return true, err
case 2: // value.int_value
if wire != proto.WireVarint {
return true, proto.ErrInternalBadWireType
}
x, err := b.DecodeVarint()
m.Value = &LabelValue_IntValue{int64(x)}
return true, err
case 3: // value.bool_value
if wire != proto.WireVarint {
return true, proto.ErrInternalBadWireType
}
x, err := b.DecodeVarint()
m.Value = &LabelValue_BoolValue{x != 0}
return true, err
default:
return false, nil
}
}
func _LabelValue_OneofSizer(msg proto.Message) (n int) {
m := msg.(*LabelValue)
// value
switch x := m.Value.(type) {
case *LabelValue_StringValue:
n += proto.SizeVarint(1<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(len(x.StringValue)))
n += len(x.StringValue)
case *LabelValue_IntValue:
n += proto.SizeVarint(2<<3 | proto.WireVarint)
n += proto.SizeVarint(uint64(x.IntValue))
case *LabelValue_BoolValue:
n += proto.SizeVarint(3<<3 | proto.WireVarint)
n += 1
case nil:
default:
panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
}
return n
}
// A span represents a single operation within a trace. Spans can be nested
// and form a trace tree. Often, a trace contains a root span that describes the
// end-to-end latency and, optionally, one or more subspans for
// its sub-operations. Spans do not need to be contiguous. There may be gaps
// between spans in a trace.
type Span struct {
// Identifier for the span. Must be a 64-bit integer other than 0 and
// unique within a trace.
Id uint64 `protobuf:"fixed64,1,opt,name=id" json:"id,omitempty"`
// Name of the span. The span name is sanitized and displayed in the
// Stackdriver Trace tool in the {% dynamic print site_values.console_name %}.
// The name may be a method name or some other per-call site name.
// For the same executable and the same call point, a best practice is
// to use a consistent name, which makes it easier to correlate
// cross-trace spans.
Name string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"`
// ID of parent span. 0 or missing if this is a root span.
ParentId uint64 `protobuf:"fixed64,3,opt,name=parent_id,json=parentId" json:"parent_id,omitempty"`
// Local machine clock in nanoseconds from the UNIX epoch,
// at which span execution started.
// On the server side these are the times when the server application
// handler starts running.
LocalStartTime *google_protobuf1.Timestamp `protobuf:"bytes,4,opt,name=local_start_time,json=localStartTime" json:"local_start_time,omitempty"`
// Local machine clock in nanoseconds from the UNIX epoch,
// at which span execution ended.
// On the server side these are the times when the server application
// handler finishes running.
LocalEndTime *google_protobuf1.Timestamp `protobuf:"bytes,5,opt,name=local_end_time,json=localEndTime" json:"local_end_time,omitempty"`
// Properties of a span. Labels at the span level.
// E.g.
// "/instance_id": "my-instance"
// "/zone": "us-central1-a"
// "/grpc/peer_address": "ip:port" (dns, etc.)
// "/grpc/deadline": "Duration"
// "/http/user_agent"
// "/http/request_bytes": 300
// "/http/response_bytes": 1200
// "/http/url": google.com/apis
// "/pid"
// "abc.com/mylabel": "my label value"
Labels map[string]*LabelValue `protobuf:"bytes,6,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
// Stack trace captured at the start of the span. This is optional.
StackTrace *StackTrace `protobuf:"bytes,7,opt,name=stack_trace,json=stackTrace" json:"stack_trace,omitempty"`
// A collection of time-stamped events.
TimeEvents []*Span_TimeEvent `protobuf:"bytes,8,rep,name=time_events,json=timeEvents" json:"time_events,omitempty"`
// A collection of links.
Links []*Span_Link `protobuf:"bytes,9,rep,name=links" json:"links,omitempty"`
// The final status of the Span. This is optional.
Status *google_rpc.Status `protobuf:"bytes,10,opt,name=status" json:"status,omitempty"`
// True if this Span has a remote parent (is an RPC server Span).
HasRemoteParent bool `protobuf:"varint,11,opt,name=has_remote_parent,json=hasRemoteParent" json:"has_remote_parent,omitempty"`
}
func (m *Span) Reset() { *m = Span{} }
func (m *Span) String() string { return proto.CompactTextString(m) }
func (*Span) ProtoMessage() {}
func (*Span) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }
func (m *Span) GetId() uint64 {
if m != nil {
return m.Id
}
return 0
}
func (m *Span) GetName() string {
if m != nil {
return m.Name
}
return ""
}
func (m *Span) GetParentId() uint64 {
if m != nil {
return m.ParentId
}
return 0
}
func (m *Span) GetLocalStartTime() *google_protobuf1.Timestamp {
if m != nil {
return m.LocalStartTime
}
return nil
}
func (m *Span) GetLocalEndTime() *google_protobuf1.Timestamp {
if m != nil {
return m.LocalEndTime
}
return nil
}
func (m *Span) GetLabels() map[string]*LabelValue {
if m != nil {
return m.Labels
}
return nil
}
func (m *Span) GetStackTrace() *StackTrace {
if m != nil {
return m.StackTrace
}
return nil
}
func (m *Span) GetTimeEvents() []*Span_TimeEvent {
if m != nil {
return m.TimeEvents
}
return nil
}
func (m *Span) GetLinks() []*Span_Link {
if m != nil {
return m.Links
}
return nil
}
func (m *Span) GetStatus() *google_rpc.Status {
if m != nil {
return m.Status
}
return nil
}
func (m *Span) GetHasRemoteParent() bool {
if m != nil {
return m.HasRemoteParent
}
return false
}
// A time-stamped annotation in the Span.
type Span_TimeEvent struct {
// The local machine absolute timestamp when this event happened.
LocalTime *google_protobuf1.Timestamp `protobuf:"bytes,1,opt,name=local_time,json=localTime" json:"local_time,omitempty"`
// Types that are valid to be assigned to Value:
// *Span_TimeEvent_Annotation_
// *Span_TimeEvent_NetworkEvent_
Value isSpan_TimeEvent_Value `protobuf_oneof:"value"`
}
func (m *Span_TimeEvent) Reset() { *m = Span_TimeEvent{} }
func (m *Span_TimeEvent) String() string { return proto.CompactTextString(m) }
func (*Span_TimeEvent) ProtoMessage() {}
func (*Span_TimeEvent) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4, 0} }
type isSpan_TimeEvent_Value interface {
isSpan_TimeEvent_Value()
}
type Span_TimeEvent_Annotation_ struct {
Annotation *Span_TimeEvent_Annotation `protobuf:"bytes,2,opt,name=annotation,oneof"`
}
type Span_TimeEvent_NetworkEvent_ struct {
NetworkEvent *Span_TimeEvent_NetworkEvent `protobuf:"bytes,3,opt,name=network_event,json=networkEvent,oneof"`
}
func (*Span_TimeEvent_Annotation_) isSpan_TimeEvent_Value() {}
func (*Span_TimeEvent_NetworkEvent_) isSpan_TimeEvent_Value() {}
func (m *Span_TimeEvent) GetValue() isSpan_TimeEvent_Value {
if m != nil {
return m.Value
}
return nil
}
func (m *Span_TimeEvent) GetLocalTime() *google_protobuf1.Timestamp {
if m != nil {
return m.LocalTime
}
return nil
}
func (m *Span_TimeEvent) GetAnnotation() *Span_TimeEvent_Annotation {
if x, ok := m.GetValue().(*Span_TimeEvent_Annotation_); ok {
return x.Annotation
}
return nil
}
func (m *Span_TimeEvent) GetNetworkEvent() *Span_TimeEvent_NetworkEvent {
if x, ok := m.GetValue().(*Span_TimeEvent_NetworkEvent_); ok {
return x.NetworkEvent
}
return nil
}
// XXX_OneofFuncs is for the internal use of the proto package.
func (*Span_TimeEvent) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
return _Span_TimeEvent_OneofMarshaler, _Span_TimeEvent_OneofUnmarshaler, _Span_TimeEvent_OneofSizer, []interface{}{
(*Span_TimeEvent_Annotation_)(nil),
(*Span_TimeEvent_NetworkEvent_)(nil),
}
}
func _Span_TimeEvent_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
m := msg.(*Span_TimeEvent)
// value
switch x := m.Value.(type) {
case *Span_TimeEvent_Annotation_:
b.EncodeVarint(2<<3 | proto.WireBytes)
if err := b.EncodeMessage(x.Annotation); err != nil {
return err
}
case *Span_TimeEvent_NetworkEvent_:
b.EncodeVarint(3<<3 | proto.WireBytes)
if err := b.EncodeMessage(x.NetworkEvent); err != nil {
return err
}
case nil:
default:
return fmt.Errorf("Span_TimeEvent.Value has unexpected type %T", x)
}
return nil
}
func _Span_TimeEvent_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
m := msg.(*Span_TimeEvent)
switch tag {
case 2: // value.annotation
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
msg := new(Span_TimeEvent_Annotation)
err := b.DecodeMessage(msg)
m.Value = &Span_TimeEvent_Annotation_{msg}
return true, err
case 3: // value.network_event
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
msg := new(Span_TimeEvent_NetworkEvent)
err := b.DecodeMessage(msg)
m.Value = &Span_TimeEvent_NetworkEvent_{msg}
return true, err
default:
return false, nil
}
}
func _Span_TimeEvent_OneofSizer(msg proto.Message) (n int) {
m := msg.(*Span_TimeEvent)
// value
switch x := m.Value.(type) {
case *Span_TimeEvent_Annotation_:
s := proto.Size(x.Annotation)
n += proto.SizeVarint(2<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(s))
n += s
case *Span_TimeEvent_NetworkEvent_:
s := proto.Size(x.NetworkEvent)
n += proto.SizeVarint(3<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(s))
n += s
case nil:
default:
panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
}
return n
}
// Text annotation with a set of labels.
type Span_TimeEvent_Annotation struct {
// A user-supplied message describing the event.
Description string `protobuf:"bytes,1,opt,name=description" json:"description,omitempty"`
// A set of labels on the annotation.
Labels map[string]*LabelValue `protobuf:"bytes,2,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
}
func (m *Span_TimeEvent_Annotation) Reset() { *m = Span_TimeEvent_Annotation{} }
func (m *Span_TimeEvent_Annotation) String() string { return proto.CompactTextString(m) }
func (*Span_TimeEvent_Annotation) ProtoMessage() {}
func (*Span_TimeEvent_Annotation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4, 0, 0} }
func (m *Span_TimeEvent_Annotation) GetDescription() string {
if m != nil {
return m.Description
}
return ""
}
func (m *Span_TimeEvent_Annotation) GetLabels() map[string]*LabelValue {
if m != nil {
return m.Labels
}
return nil
}
// An event describing an RPC message sent/received on the network.
type Span_TimeEvent_NetworkEvent struct {
// If available, this is the kernel time:
// For sent messages, this is the time at which the first bit was sent.
// For received messages, this is the time at which the last bit was
// received.
KernelTime *google_protobuf1.Timestamp `protobuf:"bytes,1,opt,name=kernel_time,json=kernelTime" json:"kernel_time,omitempty"`
Type Span_TimeEvent_NetworkEvent_Type `protobuf:"varint,2,opt,name=type,enum=google.tracing.v1.Span_TimeEvent_NetworkEvent_Type" json:"type,omitempty"`
// Every message has an identifier, that must be different from all the
// network messages in this span.
// This is very important when the request/response are streamed.
MessageId uint64 `protobuf:"varint,3,opt,name=message_id,json=messageId" json:"message_id,omitempty"`
// Number of bytes send/receive.
MessageSize uint64 `protobuf:"varint,4,opt,name=message_size,json=messageSize" json:"message_size,omitempty"`
}
func (m *Span_TimeEvent_NetworkEvent) Reset() { *m = Span_TimeEvent_NetworkEvent{} }
func (m *Span_TimeEvent_NetworkEvent) String() string { return proto.CompactTextString(m) }
func (*Span_TimeEvent_NetworkEvent) ProtoMessage() {}
func (*Span_TimeEvent_NetworkEvent) Descriptor() ([]byte, []int) {
return fileDescriptor0, []int{4, 0, 1}
}
func (m *Span_TimeEvent_NetworkEvent) GetKernelTime() *google_protobuf1.Timestamp {
if m != nil {
return m.KernelTime
}
return nil
}
func (m *Span_TimeEvent_NetworkEvent) GetType() Span_TimeEvent_NetworkEvent_Type {
if m != nil {
return m.Type
}
return Span_TimeEvent_NetworkEvent_UNSPECIFIED
}
func (m *Span_TimeEvent_NetworkEvent) GetMessageId() uint64 {
if m != nil {
return m.MessageId
}
return 0
}
func (m *Span_TimeEvent_NetworkEvent) GetMessageSize() uint64 {
if m != nil {
return m.MessageSize
}
return 0
}
// Link one span with another which may be in a different Trace. Used (for
// example) in batching operations, where a single batch handler processes
// multiple requests from different traces.
type Span_Link struct {
// The trace and span identifier of the linked span.
TraceId *TraceId `protobuf:"bytes,1,opt,name=trace_id,json=traceId" json:"trace_id,omitempty"`
SpanId uint64 `protobuf:"fixed64,2,opt,name=span_id,json=spanId" json:"span_id,omitempty"`
Type Span_Link_Type `protobuf:"varint,3,opt,name=type,enum=google.tracing.v1.Span_Link_Type" json:"type,omitempty"`
}
func (m *Span_Link) Reset() { *m = Span_Link{} }
func (m *Span_Link) String() string { return proto.CompactTextString(m) }
func (*Span_Link) ProtoMessage() {}
func (*Span_Link) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4, 1} }
func (m *Span_Link) GetTraceId() *TraceId {
if m != nil {
return m.TraceId
}
return nil
}
func (m *Span_Link) GetSpanId() uint64 {
if m != nil {
return m.SpanId
}
return 0
}
func (m *Span_Link) GetType() Span_Link_Type {
if m != nil {
return m.Type
}
return Span_Link_UNSPECIFIED
}
// A trace describes how long it takes for an application to perform some
// operations. It consists of a tree of spans, each of which contains details
// about an operation with time information and operation details.
type Trace struct {
// Globally unique identifier for the trace. Common to all the spans.
TraceId *TraceId `protobuf:"bytes,1,opt,name=trace_id,json=traceId" json:"trace_id,omitempty"`
// Collection of spans in the trace. The root span has parent_id == 0.
Spans []*Span `protobuf:"bytes,2,rep,name=spans" json:"spans,omitempty"`
}
func (m *Trace) Reset() { *m = Trace{} }
func (m *Trace) String() string { return proto.CompactTextString(m) }
func (*Trace) ProtoMessage() {}
func (*Trace) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }
func (m *Trace) GetTraceId() *TraceId {
if m != nil {
return m.TraceId
}
return nil
}
func (m *Trace) GetSpans() []*Span {
if m != nil {
return m.Spans
}
return nil
}
func init() {
proto.RegisterType((*TraceId)(nil), "google.tracing.v1.TraceId")
proto.RegisterType((*Module)(nil), "google.tracing.v1.Module")
proto.RegisterType((*StackTrace)(nil), "google.tracing.v1.StackTrace")
proto.RegisterType((*StackTrace_StackFrame)(nil), "google.tracing.v1.StackTrace.StackFrame")
proto.RegisterType((*LabelValue)(nil), "google.tracing.v1.LabelValue")
proto.RegisterType((*Span)(nil), "google.tracing.v1.Span")
proto.RegisterType((*Span_TimeEvent)(nil), "google.tracing.v1.Span.TimeEvent")
proto.RegisterType((*Span_TimeEvent_Annotation)(nil), "google.tracing.v1.Span.TimeEvent.Annotation")
proto.RegisterType((*Span_TimeEvent_NetworkEvent)(nil), "google.tracing.v1.Span.TimeEvent.NetworkEvent")
proto.RegisterType((*Span_Link)(nil), "google.tracing.v1.Span.Link")
proto.RegisterType((*Trace)(nil), "google.tracing.v1.Trace")
proto.RegisterEnum("google.tracing.v1.Span_TimeEvent_NetworkEvent_Type", Span_TimeEvent_NetworkEvent_Type_name, Span_TimeEvent_NetworkEvent_Type_value)
proto.RegisterEnum("google.tracing.v1.Span_Link_Type", Span_Link_Type_name, Span_Link_Type_value)
}
func init() { proto.RegisterFile("google/tracing/trace.proto", fileDescriptor0) }
var fileDescriptor0 = []byte{
// 1102 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x56, 0xdd, 0x6e, 0x1a, 0x47,
0x14, 0x66, 0xf9, 0x59, 0xe0, 0x2c, 0x76, 0xc8, 0x54, 0xad, 0x09, 0x8d, 0x65, 0x9b, 0xa8, 0x92,
0xe5, 0x26, 0x8b, 0x82, 0x15, 0xc9, 0x8d, 0xa5, 0xaa, 0xb1, 0x8d, 0x0b, 0x52, 0x8a, 0xd0, 0xe0,
0x58, 0x55, 0x6f, 0x56, 0xc3, 0xee, 0x18, 0x56, 0x2c, 0xb3, 0xab, 0x9d, 0x81, 0xc6, 0xbe, 0xed,
0x1b, 0xf4, 0x1d, 0x7a, 0xdb, 0x37, 0xe8, 0x83, 0xb4, 0x4f, 0x53, 0xcd, 0xcf, 0x62, 0xaa, 0xd8,
0x71, 0x53, 0xa9, 0x57, 0xcc, 0x7c, 0xe7, 0x3b, 0x67, 0xce, 0x7c, 0xe7, 0x9c, 0x59, 0xa0, 0x39,
0x89, 0xe3, 0x49, 0x44, 0xdb, 0x22, 0x25, 0x7e, 0xc8, 0x26, 0xea, 0x97, 0xba, 0x49, 0x1a, 0x8b,
0x18, 0x3d, 0xd6, 0x36, 0xd7, 0xd8, 0xdc, 0xe5, 0xcb, 0xe6, 0x53, 0x43, 0x27, 0x49, 0xd8, 0x26,
0x8c, 0xc5, 0x82, 0x88, 0x30, 0x66, 0x5c, 0x3b, 0x34, 0x77, 0x8c, 0x55, 0xed, 0xc6, 0x8b, 0xab,
0xb6, 0x08, 0xe7, 0x94, 0x0b, 0x32, 0x4f, 0x0c, 0x61, 0xcb, 0x10, 0xd2, 0xc4, 0x6f, 0x73, 0x41,
0xc4, 0xc2, 0x78, 0xb6, 0x0e, 0xa0, 0x7c, 0x21, 0x4f, 0xee, 0x07, 0x68, 0x07, 0x9c, 0x29, 0x7d,
0xef, 0x51, 0xe6, 0xc7, 0x01, 0x0d, 0x1a, 0xd6, 0xae, 0xb5, 0x5f, 0xc5, 0x30, 0xa5, 0xef, 0xbb,
0x1a, 0x69, 0x1d, 0x83, 0xfd, 0x43, 0x1c, 0x2c, 0x22, 0x8a, 0xbe, 0x00, 0x7b, 0xae, 0x56, 0x86,
0x65, 0x76, 0xe8, 0x09, 0x54, 0xc6, 0x8b, 0x30, 0x0a, 0xbc, 0x30, 0x68, 0xe4, 0x95, 0xa5, 0xac,
0xf6, 0xfd, 0xa0, 0xf5, 0x7b, 0x01, 0x60, 0x24, 0x88, 0x3f, 0x53, 0xc7, 0xa1, 0x3e, 0x38, 0x5c,
0xee, 0xbc, 0xab, 0x94, 0xcc, 0x65, 0x98, 0xc2, 0xbe, 0xd3, 0xd9, 0x77, 0x3f, 0xb8, 0xb8, 0x7b,
0xeb, 0xa3, 0x97, 0xe7, 0x92, 0x8f, 0x81, 0xaf, 0xd6, 0xe8, 0x05, 0x7c, 0xa6, 0x43, 0x29, 0x09,
0xbd, 0x29, 0xe1, 0xd3, 0xec, 0xfc, 0x22, 0xae, 0xf3, 0x95, 0x7f, 0x8f, 0xf0, 0x69, 0x3f, 0x68,
0xfe, 0x96, 0x37, 0x89, 0x68, 0xef, 0x67, 0xb0, 0x71, 0xb5, 0x60, 0xbe, 0x54, 0xd3, 0x63, 0x3a,
0x15, 0x99, 0x77, 0x2d, 0x03, 0x07, 0x92, 0xf4, 0x1c, 0x50, 0x9c, 0x86, 0x13, 0xef, 0x9f, 0x4c,
0x7d, 0xc3, 0xba, 0xb4, 0x9c, 0xaf, 0xb3, 0xbf, 0x84, 0xea, 0x55, 0x18, 0x51, 0x4d, 0x2a, 0x28,
0x52, 0x45, 0x02, 0xca, 0xb8, 0x03, 0x4e, 0x14, 0x32, 0xea, 0xb1, 0xc5, 0x7c, 0x4c, 0xd3, 0x46,
0x71, 0xd7, 0xda, 0x2f, 0x60, 0x90, 0xd0, 0x40, 0x21, 0x32, 0x21, 0x3f, 0x8e, 0x16, 0x73, 0x96,
0x51, 0x4a, 0x8a, 0x52, 0xd3, 0xa0, 0x21, 0xbd, 0x06, 0x27, 0x8a, 0x49, 0xe0, 0x99, 0x2a, 0xd8,
0xbb, 0xd6, 0xbe, 0xd3, 0x79, 0x72, 0x87, 0x7c, 0xba, 0x60, 0x18, 0x24, 0xdb, 0x14, 0xef, 0x2b,
0xd8, 0xe4, 0xf1, 0x22, 0xf5, 0xa9, 0xb7, 0xa4, 0x29, 0x0f, 0x63, 0xd6, 0x28, 0xab, 0x1c, 0x37,
0x34, 0x7a, 0xa9, 0xc1, 0xd6, 0x0d, 0xc0, 0x5b, 0x32, 0xa6, 0xd1, 0x25, 0x89, 0x16, 0x52, 0xa6,
0x1a, 0x17, 0x69, 0xc8, 0x26, 0xde, 0x52, 0xee, 0xb5, 0x4a, 0xbd, 0x1c, 0x76, 0x34, 0xaa, 0x49,
0xdb, 0x50, 0x0d, 0x99, 0x30, 0x0c, 0xa9, 0x4e, 0xa1, 0x97, 0xc3, 0x95, 0x90, 0x09, 0x6d, 0xde,
0x01, 0x18, 0xc7, 0x71, 0x64, 0xec, 0x52, 0x98, 0x4a, 0x2f, 0x87, 0xab, 0x12, 0x53, 0x84, 0x93,
0x32, 0x94, 0x94, 0xad, 0xf5, 0x6b, 0x0d, 0x8a, 0xa3, 0x84, 0x30, 0xb4, 0x09, 0xf9, 0x50, 0xb7,
0xa2, 0x8d, 0xf3, 0x61, 0x80, 0x10, 0x14, 0xd7, 0xa4, 0x57, 0x6b, 0x29, 0x77, 0x42, 0x52, 0xca,
0x84, 0xac, 0x7a, 0x41, 0x51, 0x2b, 0x1a, 0xe8, 0x07, 0xe8, 0x0c, 0xea, 0x51, 0xec, 0x93, 0xc8,
0xe3, 0x82, 0xa4, 0xc2, 0x93, 0x73, 0xa1, 0x34, 0x77, 0x3a, 0xcd, 0x4c, 0xad, 0x6c, 0x68, 0xdc,
0x8b, 0x6c, 0x68, 0xf0, 0xa6, 0xf2, 0x19, 0x49, 0x17, 0x09, 0xa2, 0xef, 0x40, 0x23, 0x1e, 0x65,
0x81, 0x8e, 0x51, 0x7a, 0x30, 0x46, 0x4d, 0x79, 0x74, 0x59, 0xa0, 0x22, 0x1c, 0x83, 0x1d, 0x49,
0x35, 0x79, 0xc3, 0x56, 0xad, 0xfe, 0xec, 0xae, 0x56, 0x4f, 0x08, 0x73, 0x95, 0xe6, 0xbc, 0xcb,
0x44, 0x7a, 0x8d, 0x8d, 0x0b, 0xfa, 0x36, 0x1b, 0x16, 0xd5, 0xe1, 0xaa, 0x5c, 0x4e, 0x67, 0xfb,
0xa3, 0xc3, 0x62, 0x26, 0x44, 0x0f, 0xdb, 0x09, 0x38, 0x32, 0x69, 0x8f, 0x2e, 0x29, 0x13, 0xbc,
0x51, 0x51, 0x19, 0xec, 0xdd, 0x97, 0x81, 0xcc, 0xb7, 0x2b, 0x99, 0x18, 0x44, 0xb6, 0xe4, 0xa8,
0x03, 0xa5, 0x28, 0x64, 0x33, 0xde, 0xa8, 0x2a, 0xef, 0xa7, 0xf7, 0xe6, 0x1f, 0xb2, 0x19, 0xd6,
0x54, 0x74, 0x00, 0xb6, 0x7e, 0x6c, 0x1a, 0xa0, 0x52, 0x46, 0x99, 0x53, 0x9a, 0xf8, 0x32, 0x57,
0xb1, 0xe0, 0xd8, 0x30, 0xd0, 0x01, 0x3c, 0x9e, 0x12, 0xee, 0xa5, 0x74, 0x1e, 0x0b, 0xea, 0xe9,
0xfa, 0x35, 0x1c, 0xd9, 0x23, 0xf8, 0xd1, 0x94, 0x70, 0xac, 0xf0, 0xa1, 0x82, 0x9b, 0x7f, 0x96,
0xa0, 0xba, 0xca, 0x12, 0x7d, 0x03, 0xa0, 0x8b, 0xa3, 0x0a, 0x63, 0x3d, 0x58, 0x98, 0xaa, 0x62,
0xab, 0xaa, 0x0c, 0x00, 0x6e, 0x1f, 0x53, 0xd5, 0x54, 0x4e, 0xe7, 0xf9, 0x83, 0xba, 0xb8, 0x6f,
0x56, 0x3e, 0xbd, 0x1c, 0x5e, 0x8b, 0x80, 0xde, 0xc1, 0x06, 0xa3, 0xe2, 0xe7, 0x38, 0x9d, 0x69,
0xad, 0x55, 0x3b, 0x3a, 0x1d, 0xf7, 0xe1, 0x90, 0x03, 0xed, 0xa6, 0x36, 0xbd, 0x1c, 0xae, 0xb1,
0xb5, 0x7d, 0xf3, 0x2f, 0x0b, 0xe0, 0xf6, 0x4c, 0xb4, 0x0b, 0x4e, 0x40, 0xb9, 0x9f, 0x86, 0x89,
0x4a, 0x5b, 0x3f, 0x58, 0xeb, 0x10, 0x1a, 0xae, 0xba, 0x2d, 0xaf, 0xaa, 0x75, 0xf4, 0x29, 0x77,
0xba, 0xab, 0x05, 0x9b, 0x3f, 0x82, 0xb3, 0x06, 0xa3, 0x3a, 0x14, 0x66, 0xf4, 0xda, 0x1c, 0x2d,
0x97, 0xe8, 0xd0, 0xcc, 0xae, 0x51, 0xf1, 0xae, 0xee, 0xbc, 0x7d, 0x4e, 0xb0, 0xe6, 0xbe, 0xce,
0x1f, 0x59, 0xcd, 0x5f, 0xf2, 0x50, 0x5b, 0xbf, 0x3d, 0x3a, 0x06, 0x67, 0x46, 0x53, 0x46, 0xff,
0x75, 0x41, 0x41, 0xd3, 0x55, 0x45, 0xbf, 0x87, 0xa2, 0xb8, 0x4e, 0x74, 0x16, 0x9b, 0x9d, 0xc3,
0x4f, 0x13, 0xde, 0xbd, 0xb8, 0x4e, 0x28, 0x56, 0x01, 0xd0, 0x36, 0xc0, 0x9c, 0x72, 0x4e, 0x26,
0x34, 0x7b, 0x56, 0x8a, 0xb8, 0x6a, 0x90, 0x7e, 0x80, 0xf6, 0xa0, 0x96, 0x99, 0x79, 0x78, 0xa3,
0xdf, 0x94, 0x22, 0x76, 0x0c, 0x36, 0x0a, 0x6f, 0x68, 0xeb, 0x6b, 0x28, 0xca, 0x78, 0xe8, 0x11,
0x38, 0xef, 0x06, 0xa3, 0x61, 0xf7, 0xb4, 0x7f, 0xde, 0xef, 0x9e, 0xd5, 0x73, 0xa8, 0x02, 0xc5,
0x51, 0x77, 0x70, 0x51, 0xb7, 0xe4, 0x0a, 0x77, 0x4f, 0x2f, 0xeb, 0xf9, 0xd5, 0xd3, 0xd7, 0xfc,
0xc3, 0x82, 0xa2, 0x9c, 0x21, 0xf4, 0x0a, 0x2a, 0xfa, 0x83, 0x66, 0x1e, 0xc0, 0x35, 0x0d, 0xd6,
0x6e, 0x63, 0x3e, 0xde, 0xb8, 0x2c, 0xcc, 0x57, 0x7c, 0x0b, 0xca, 0x3c, 0x21, 0x2c, 0xfb, 0x02,
0xda, 0xd8, 0x96, 0xdb, 0x7e, 0x80, 0x5e, 0x19, 0x65, 0x0a, 0x4a, 0x99, 0xbd, 0x8f, 0xcd, 0xef,
0x9a, 0x0e, 0x2d, 0xf7, 0xbe, 0x5b, 0x54, 0xa1, 0x74, 0xda, 0xeb, 0xbf, 0x3d, 0xab, 0x5b, 0x08,
0xc0, 0x1e, 0xbe, 0xc1, 0xf2, 0x4a, 0xf9, 0xff, 0xaf, 0x51, 0x5a, 0x73, 0x28, 0xe9, 0xe7, 0xec,
0x3f, 0x2a, 0xf3, 0x02, 0x4a, 0x52, 0x8a, 0x6c, 0x26, 0xb6, 0xee, 0x51, 0x00, 0x6b, 0xd6, 0x89,
0x07, 0x9f, 0xfb, 0xf1, 0xfc, 0x43, 0xd2, 0x09, 0xa8, 0xc8, 0x43, 0xd9, 0x87, 0x43, 0xeb, 0xa7,
0x23, 0x43, 0x98, 0xc4, 0x11, 0x61, 0x13, 0x37, 0x4e, 0x27, 0xed, 0x09, 0x65, 0xaa, 0x4b, 0xdb,
0xda, 0x44, 0x92, 0x90, 0xaf, 0xfe, 0xe6, 0x2d, 0x5f, 0x1e, 0x9b, 0xe5, 0xd8, 0x56, 0xa4, 0xc3,
0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0xdc, 0x30, 0x5b, 0x04, 0x0a, 0x0a, 0x00, 0x00,
}

View File

146
vendor/google.golang.org/grpc/Documentation/encoding.md generated vendored Normal file
View File

@ -0,0 +1,146 @@
# Encoding
The gRPC API for sending and receiving is based upon *messages*. However,
messages cannot be transmitted directly over a network; they must first be
converted into *bytes*. This document describes how gRPC-Go converts messages
into bytes and vice-versa for the purposes of network transmission.
## Codecs (Serialization and Deserialization)
A `Codec` contains code to serialize a message into a byte slice (`Marshal`) and
deserialize a byte slice back into a message (`Unmarshal`). `Codec`s are
registered by name into a global registry maintained in the `encoding` package.
### Implementing a `Codec`
A typical `Codec` will be implemented in its own package with an `init` function
that registers itself, and is imported anonymously. For example:
```go
package proto
import "google.golang.org/grpc/encoding"
func init() {
encoding.RegisterCodec(protoCodec{})
}
// ... implementation of protoCodec ...
```
For an example, gRPC's implementation of the `proto` codec can be found in
[`encoding/proto`](https://godoc.org/google.golang.org/grpc/encoding/proto).
### Using a `Codec`
By default, gRPC registers and uses the "proto" codec, so it is not necessary to
do this in your own code to send and receive proto messages. To use another
`Codec` from a client or server:
```go
package myclient
import _ "path/to/another/codec"
```
`Codec`s, by definition, must be symmetric, so the same desired `Codec` should
be registered in both client and server binaries.
On the client-side, to specify a `Codec` to use for message transmission, the
`CallOption` `CallContentSubtype` should be used as follows:
```go
response, err := myclient.MyCall(ctx, request, grpc.CallContentSubtype("mycodec"))
```
As a reminder, all `CallOption`s may be converted into `DialOption`s that become
the default for all RPCs sent through a client using `grpc.WithDefaultCallOptions`:
```go
myclient := grpc.Dial(ctx, target, grpc.WithDefaultCallOptions(grpc.CallContentSubtype("mycodec")))
```
When specified in either of these ways, messages will be encoded using this
codec and sent along with headers indicating the codec (`content-type` set to
`application/grpc+<codec name>`).
On the server-side, using a `Codec` is as simple as registering it into the
global registry (i.e. `import`ing it). If a message is encoded with the content
sub-type supported by a registered `Codec`, it will be used automatically for
decoding the request and encoding the response. Otherwise, for
backward-compatibility reasons, gRPC will attempt to use the "proto" codec. In
an upcoming change (tracked in [this
issue](https://github.com/grpc/grpc-go/issues/1824)), such requests will be
rejected with status code `Unimplemented` instead.
## Compressors (Compression and Decompression)
Sometimes, the resulting serialization of a message is not space-efficient, and
it may be beneficial to compress this byte stream before transmitting it over
the network. To facilitate this operation, gRPC supports a mechanism for
performing compression and decompression.
A `Compressor` contains code to compress and decompress by wrapping `io.Writer`s
and `io.Reader`s, respectively. (The form of `Compress` and `Decompress` were
chosen to most closely match Go's standard package
[implementations](https://golang.org/pkg/compress/) of compressors. Like
`Codec`s, `Compressor`s are registered by name into a global registry maintained
in the `encoding` package.
### Implementing a `Compressor`
A typical `Compressor` will be implemented in its own package with an `init`
function that registers itself, and is imported anonymously. For example:
```go
package gzip
import "google.golang.org/grpc/encoding"
func init() {
encoding.RegisterCompressor(compressor{})
}
// ... implementation of compressor ...
```
An implementation of a `gzip` compressor can be found in
[`encoding/gzip`](https://godoc.org/google.golang.org/grpc/encoding/gzip).
### Using a `Compressor`
By default, gRPC does not register or use any compressors. To use a
`Compressor` from a client or server:
```go
package myclient
import _ "google.golang.org/grpc/encoding/gzip"
```
`Compressor`s, by definition, must be symmetric, so the same desired
`Compressor` should be registered in both client and server binaries.
On the client-side, to specify a `Compressor` to use for message transmission,
the `CallOption` `UseCompressor` should be used as follows:
```go
response, err := myclient.MyCall(ctx, request, grpc.UseCompressor("gzip"))
```
As a reminder, all `CallOption`s may be converted into `DialOption`s that become
the default for all RPCs sent through a client using `grpc.WithDefaultCallOptions`:
```go
myclient := grpc.Dial(ctx, target, grpc.WithDefaultCallOptions(grpc.UseCompresor("gzip")))
```
When specified in either of these ways, messages will be compressed using this
compressor and sent along with headers indicating the compressor
(`content-coding` set to `<compressor name>`).
On the server-side, using a `Compressor` is as simple as registering it into the
global registry (i.e. `import`ing it). If a message is compressed with the
content coding supported by a registered `Compressor`, it will be used
automatically for decompressing the request and compressing the response.
Otherwise, the request will be rejected with status code `Unimplemented`.

View File

@ -82,13 +82,16 @@ func (s *server) SomeRPC(ctx context.Context, in *pb.SomeRequest) (*pb.SomeRespo
### Sending metadata
To send metadata to server, the client can wrap the metadata into a context using `NewOutgoingContext`, and make the RPC with this context:
There are two ways to send metadata to the server. The recommended way is to append kv pairs to the context using
`AppendToOutgoingContext`. This can be used with or without existing metadata on the context. When there is no prior
metadata, metadata is added; when metadata already exists on the context, kv pairs are merged in.
```go
md := metadata.Pairs("key", "val")
// create a new context with some metadata
ctx := metadata.AppendToOutgoingContext(ctx, "k1", "v1", "k1", "v2", "k2", "v3")
// create a new context with this metadata
ctx := metadata.NewOutgoingContext(context.Background(), md)
// later, add some more metadata to the context (e.g. in an interceptor)
ctx := metadata.AppendToOutgoingContext(ctx, "k3", "v4")
// make unary RPC
response, err := client.SomeRPC(ctx, someRequest)
@ -97,7 +100,27 @@ response, err := client.SomeRPC(ctx, someRequest)
stream, err := client.SomeStreamingRPC(ctx)
```
To read this back from the context on the client (e.g. in an interceptor) before the RPC is sent, use `FromOutgoingContext`.
Alternatively, metadata may be attached to the context using `NewOutgoingContext`. However, this
replaces any existing metadata in the context, so care must be taken to preserve the existing
metadata if desired. This is slower than using `AppendToOutgoingContext`. An example of this
is below:
```go
// create a new context with some metadata
md := metadata.Pairs("k1", "v1", "k1", "v2", "k2", "v3")
ctx := metadata.NewOutgoingContext(context.Background(), md)
// later, add some more metadata to the context (e.g. in an interceptor)
md, _ := metadata.FromOutgoingContext(ctx)
newMD := metadata.Pairs("k3", "v3")
ctx = metadata.NewContext(ctx, metadata.Join(metadata.New(send), newMD))
// make unary RPC
response, err := client.SomeRPC(ctx, someRequest)
// or make streaming RPC
stream, err := client.SomeStreamingRPC(ctx)
```
### Receiving metadata

View File

@ -277,55 +277,82 @@ func BenchmarkAtomicTimePointerStore(b *testing.B) {
b.StopTimer()
}
func BenchmarkValueStoreWithContention(b *testing.B) {
func BenchmarkStoreContentionWithAtomic(b *testing.B) {
t := 123
for _, n := range []int{10, 100, 1000, 10000, 100000} {
b.Run(fmt.Sprintf("Atomic/%v", n), func(b *testing.B) {
var wg sync.WaitGroup
var c atomic.Value
for i := 0; i < n; i++ {
wg.Add(1)
go func() {
for j := 0; j < b.N; j++ {
c.Store(t)
var c unsafe.Pointer
b.RunParallel(func(pb *testing.PB) {
for pb.Next() {
atomic.StorePointer(&c, unsafe.Pointer(&t))
}
})
}
func BenchmarkStoreContentionWithMutex(b *testing.B) {
t := 123
var mu sync.Mutex
var c int
b.RunParallel(func(pb *testing.PB) {
for pb.Next() {
mu.Lock()
c = t
mu.Unlock()
}
})
_ = c
}
type dummyStruct struct {
a int64
b time.Time
}
func BenchmarkStructStoreContention(b *testing.B) {
d := dummyStruct{}
dp := unsafe.Pointer(&d)
t := time.Now()
for _, j := range []int{100000000, 10000, 0} {
for _, i := range []int{100000, 10} {
b.Run(fmt.Sprintf("CAS/%v/%v", j, i), func(b *testing.B) {
b.SetParallelism(i)
b.RunParallel(func(pb *testing.PB) {
n := &dummyStruct{
b: t,
}
wg.Done()
}()
}
wg.Wait()
})
b.Run(fmt.Sprintf("AtomicStorePointer/%v", n), func(b *testing.B) {
var wg sync.WaitGroup
var up unsafe.Pointer
for i := 0; i < n; i++ {
wg.Add(1)
go func() {
for j := 0; j < b.N; j++ {
atomic.StorePointer(&up, unsafe.Pointer(&t))
for pb.Next() {
for y := 0; y < j; y++ {
}
for {
v := (*dummyStruct)(atomic.LoadPointer(&dp))
n.a = v.a + 1
if atomic.CompareAndSwapPointer(&dp, unsafe.Pointer(v), unsafe.Pointer(n)) {
n = v
break
}
}
}
wg.Done()
}()
}
wg.Wait()
})
b.Run(fmt.Sprintf("Mutex/%v", n), func(b *testing.B) {
var wg sync.WaitGroup
var c int
mu := sync.Mutex{}
for i := 0; i < n; i++ {
wg.Add(1)
go func() {
for j := 0; j < b.N; j++ {
})
})
}
}
var mu sync.Mutex
for _, j := range []int{100000000, 10000, 0} {
for _, i := range []int{100000, 10} {
b.Run(fmt.Sprintf("Mutex/%v/%v", j, i), func(b *testing.B) {
b.SetParallelism(i)
b.RunParallel(func(pb *testing.PB) {
for pb.Next() {
for y := 0; y < j; y++ {
}
mu.Lock()
c = t
d.a++
d.b = t
mu.Unlock()
}
wg.Done()
}()
}
_ = c
wg.Wait()
})
})
})
}
}
}

View File

@ -139,7 +139,7 @@ func createConns(config *testpb.ClientConfig) ([]*grpc.ClientConn, func(), error
if config.PayloadConfig != nil {
switch config.PayloadConfig.Payload.(type) {
case *testpb.PayloadConfig_BytebufParams:
opts = append(opts, grpc.WithCodec(byteBufCodec{}))
opts = append(opts, grpc.WithDefaultCallOptions(grpc.CallCustomCodec(byteBufCodec{})))
case *testpb.PayloadConfig_SimpleParams:
default:
return nil, nil, status.Errorf(codes.InvalidArgument, "unknow payload config: %v", config.PayloadConfig)

312
vendor/google.golang.org/grpc/call.go generated vendored
View File

@ -19,131 +19,13 @@
package grpc
import (
"io"
"time"
"golang.org/x/net/context"
"golang.org/x/net/trace"
"google.golang.org/grpc/balancer"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/encoding"
"google.golang.org/grpc/peer"
"google.golang.org/grpc/stats"
"google.golang.org/grpc/status"
"google.golang.org/grpc/transport"
)
// recvResponse receives and parses an RPC response.
// On error, it returns the error and indicates whether the call should be retried.
//
// TODO(zhaoq): Check whether the received message sequence is valid.
// TODO ctx is used for stats collection and processing. It is the context passed from the application.
func recvResponse(ctx context.Context, dopts dialOptions, t transport.ClientTransport, c *callInfo, stream *transport.Stream, reply interface{}) (err error) {
// Try to acquire header metadata from the server if there is any.
defer func() {
if err != nil {
if _, ok := err.(transport.ConnectionError); !ok {
t.CloseStream(stream, err)
}
}
}()
c.headerMD, err = stream.Header()
if err != nil {
return
}
p := &parser{r: stream}
var inPayload *stats.InPayload
if dopts.copts.StatsHandler != nil {
inPayload = &stats.InPayload{
Client: true,
}
}
for {
if c.maxReceiveMessageSize == nil {
return status.Errorf(codes.Internal, "callInfo maxReceiveMessageSize field uninitialized(nil)")
}
// Set dc if it exists and matches the message compression type used,
// otherwise set comp if a registered compressor exists for it.
var comp encoding.Compressor
var dc Decompressor
if rc := stream.RecvCompress(); dopts.dc != nil && dopts.dc.Type() == rc {
dc = dopts.dc
} else if rc != "" && rc != encoding.Identity {
comp = encoding.GetCompressor(rc)
}
if err = recv(p, dopts.codec, stream, dc, reply, *c.maxReceiveMessageSize, inPayload, comp); err != nil {
if err == io.EOF {
break
}
return
}
}
if inPayload != nil && err == io.EOF && stream.Status().Code() == codes.OK {
// TODO in the current implementation, inTrailer may be handled before inPayload in some cases.
// Fix the order if necessary.
dopts.copts.StatsHandler.HandleRPC(ctx, inPayload)
}
c.trailerMD = stream.Trailer()
return nil
}
// sendRequest writes out various information of an RPC such as Context and Message.
func sendRequest(ctx context.Context, dopts dialOptions, compressor Compressor, c *callInfo, callHdr *transport.CallHdr, stream *transport.Stream, t transport.ClientTransport, args interface{}, opts *transport.Options) (err error) {
defer func() {
if err != nil {
// If err is connection error, t will be closed, no need to close stream here.
if _, ok := err.(transport.ConnectionError); !ok {
t.CloseStream(stream, err)
}
}
}()
var (
outPayload *stats.OutPayload
)
if dopts.copts.StatsHandler != nil {
outPayload = &stats.OutPayload{
Client: true,
}
}
// Set comp and clear compressor if a registered compressor matches the type
// specified via UseCompressor. (And error if a matching compressor is not
// registered.)
var comp encoding.Compressor
if ct := c.compressorType; ct != "" && ct != encoding.Identity {
compressor = nil // Disable the legacy compressor.
comp = encoding.GetCompressor(ct)
if comp == nil {
return status.Errorf(codes.Internal, "grpc: Compressor is not installed for grpc-encoding %q", ct)
}
}
hdr, data, err := encode(dopts.codec, args, compressor, outPayload, comp)
if err != nil {
return err
}
if c.maxSendMessageSize == nil {
return status.Errorf(codes.Internal, "callInfo maxSendMessageSize field uninitialized(nil)")
}
if len(data) > *c.maxSendMessageSize {
return status.Errorf(codes.ResourceExhausted, "grpc: trying to send message larger than max (%d vs. %d)", len(data), *c.maxSendMessageSize)
}
err = t.Write(stream, hdr, data, opts)
if err == nil && outPayload != nil {
outPayload.SentTime = time.Now()
dopts.copts.StatsHandler.HandleRPC(ctx, outPayload)
}
// t.NewStream(...) could lead to an early rejection of the RPC (e.g., the service/method
// does not exist.) so that t.Write could get io.EOF from wait(...). Leave the following
// recvResponse to get the final status.
if err != nil && err != io.EOF {
return err
}
// Sent successfully.
return nil
}
// Invoke sends the RPC request on the wire and returns after response is
// received. This is typically called by generated code.
//
// All errors returned by Invoke are compatible with the status package.
func (cc *ClientConn) Invoke(ctx context.Context, method string, args, reply interface{}, opts ...CallOption) error {
if cc.dopts.unaryInt != nil {
return cc.dopts.unaryInt(ctx, method, args, reply, cc, invoke, opts...)
@ -159,188 +41,34 @@ func Invoke(ctx context.Context, method string, args, reply interface{}, cc *Cli
return cc.Invoke(ctx, method, args, reply, opts...)
}
func invoke(ctx context.Context, method string, args, reply interface{}, cc *ClientConn, opts ...CallOption) (e error) {
c := defaultCallInfo()
mc := cc.GetMethodConfig(method)
if mc.WaitForReady != nil {
c.failFast = !*mc.WaitForReady
}
var unaryStreamDesc = &StreamDesc{ServerStreams: false, ClientStreams: false}
if mc.Timeout != nil && *mc.Timeout >= 0 {
var cancel context.CancelFunc
ctx, cancel = context.WithTimeout(ctx, *mc.Timeout)
defer cancel()
}
opts = append(cc.dopts.callOptions, opts...)
for _, o := range opts {
if err := o.before(c); err != nil {
return toRPCErr(err)
}
}
defer func() {
for _, o := range opts {
o.after(c)
}
}()
c.maxSendMessageSize = getMaxSize(mc.MaxReqSize, c.maxSendMessageSize, defaultClientMaxSendMessageSize)
c.maxReceiveMessageSize = getMaxSize(mc.MaxRespSize, c.maxReceiveMessageSize, defaultClientMaxReceiveMessageSize)
if EnableTracing {
c.traceInfo.tr = trace.New("grpc.Sent."+methodFamily(method), method)
defer c.traceInfo.tr.Finish()
c.traceInfo.firstLine.client = true
if deadline, ok := ctx.Deadline(); ok {
c.traceInfo.firstLine.deadline = deadline.Sub(time.Now())
}
c.traceInfo.tr.LazyLog(&c.traceInfo.firstLine, false)
// TODO(dsymonds): Arrange for c.traceInfo.firstLine.remoteAddr to be set.
defer func() {
if e != nil {
c.traceInfo.tr.LazyLog(&fmtStringer{"%v", []interface{}{e}}, true)
c.traceInfo.tr.SetError()
}
}()
}
ctx = newContextWithRPCInfo(ctx, c.failFast)
sh := cc.dopts.copts.StatsHandler
if sh != nil {
ctx = sh.TagRPC(ctx, &stats.RPCTagInfo{FullMethodName: method, FailFast: c.failFast})
begin := &stats.Begin{
Client: true,
BeginTime: time.Now(),
FailFast: c.failFast,
}
sh.HandleRPC(ctx, begin)
defer func() {
end := &stats.End{
Client: true,
EndTime: time.Now(),
Error: e,
}
sh.HandleRPC(ctx, end)
}()
}
topts := &transport.Options{
Last: true,
Delay: false,
}
callHdr := &transport.CallHdr{
Host: cc.authority,
Method: method,
}
if c.creds != nil {
callHdr.Creds = c.creds
}
if c.compressorType != "" {
callHdr.SendCompress = c.compressorType
} else if cc.dopts.cp != nil {
callHdr.SendCompress = cc.dopts.cp.Type()
}
func invoke(ctx context.Context, method string, req, reply interface{}, cc *ClientConn, opts ...CallOption) error {
// TODO: implement retries in clientStream and make this simply
// newClientStream, SendMsg, RecvMsg.
firstAttempt := true
for {
// Check to make sure the context has expired. This will prevent us from
// looping forever if an error occurs for wait-for-ready RPCs where no data
// is sent on the wire.
select {
case <-ctx.Done():
return toRPCErr(ctx.Err())
default:
}
// Record the done handler from Balancer.Get(...). It is called once the
// RPC has completed or failed.
t, done, err := cc.getTransport(ctx, c.failFast)
csInt, err := newClientStream(ctx, unaryStreamDesc, cc, method, opts...)
if err != nil {
return err
}
stream, err := t.NewStream(ctx, callHdr)
if err != nil {
if done != nil {
done(balancer.DoneInfo{Err: err})
}
// In the event of any error from NewStream, we never attempted to write
// anything to the wire, so we can retry indefinitely for non-fail-fast
// RPCs.
if !c.failFast {
continue
}
return toRPCErr(err)
}
if peer, ok := peer.FromContext(stream.Context()); ok {
c.peer = peer
}
if c.traceInfo.tr != nil {
c.traceInfo.tr.LazyLog(&payload{sent: true, msg: args}, true)
}
err = sendRequest(ctx, cc.dopts, cc.dopts.cp, c, callHdr, stream, t, args, topts)
if err != nil {
if done != nil {
done(balancer.DoneInfo{
Err: err,
BytesSent: true,
BytesReceived: stream.BytesReceived(),
})
}
// Retry a non-failfast RPC when
// i) the server started to drain before this RPC was initiated.
// ii) the server refused the stream.
if !c.failFast && stream.Unprocessed() {
// In this case, the server did not receive the data, but we still
// created wire traffic, so we should not retry indefinitely.
if firstAttempt {
// TODO: Add a field to header for grpc-transparent-retry-attempts
firstAttempt = false
continue
}
// Otherwise, give up and return an error anyway.
}
return toRPCErr(err)
}
err = recvResponse(ctx, cc.dopts, t, c, stream, reply)
if err != nil {
if done != nil {
done(balancer.DoneInfo{
Err: err,
BytesSent: true,
BytesReceived: stream.BytesReceived(),
})
}
if !c.failFast && stream.Unprocessed() {
// In these cases, the server did not receive the data, but we still
// created wire traffic, so we should not retry indefinitely.
if firstAttempt {
// TODO: Add a field to header for grpc-transparent-retry-attempts
firstAttempt = false
continue
}
// Otherwise, give up and return an error anyway.
}
return toRPCErr(err)
}
if c.traceInfo.tr != nil {
c.traceInfo.tr.LazyLog(&payload{sent: false, msg: reply}, true)
}
t.CloseStream(stream, nil)
err = stream.Status().Err()
if done != nil {
done(balancer.DoneInfo{
Err: err,
BytesSent: true,
BytesReceived: stream.BytesReceived(),
})
}
if !c.failFast && stream.Unprocessed() {
// In these cases, the server did not receive the data, but we still
// created wire traffic, so we should not retry indefinitely.
if firstAttempt {
cs := csInt.(*clientStream)
if err := cs.SendMsg(req); err != nil {
if !cs.c.failFast && cs.s.Unprocessed() && firstAttempt {
// TODO: Add a field to header for grpc-transparent-retry-attempts
firstAttempt = false
continue
}
return err
}
return err
if err := cs.RecvMsg(reply); err != nil {
if !cs.c.failFast && cs.s.Unprocessed() && firstAttempt {
// TODO: Add a field to header for grpc-transparent-retry-attempts
firstAttempt = false
continue
}
return err
}
return nil
}
}

View File

@ -32,6 +32,7 @@ import (
"golang.org/x/net/trace"
"google.golang.org/grpc/balancer"
_ "google.golang.org/grpc/balancer/roundrobin" // To register roundrobin.
"google.golang.org/grpc/codes"
"google.golang.org/grpc/connectivity"
"google.golang.org/grpc/credentials"
"google.golang.org/grpc/grpclog"
@ -40,17 +41,17 @@ import (
_ "google.golang.org/grpc/resolver/dns" // To register dns resolver.
_ "google.golang.org/grpc/resolver/passthrough" // To register passthrough resolver.
"google.golang.org/grpc/stats"
"google.golang.org/grpc/status"
"google.golang.org/grpc/transport"
)
var (
// ErrClientConnClosing indicates that the operation is illegal because
// the ClientConn is closing.
ErrClientConnClosing = errors.New("grpc: the client connection is closing")
// ErrClientConnTimeout indicates that the ClientConn cannot establish the
// underlying connections within the specified timeout.
// DEPRECATED: Please use context.DeadlineExceeded instead.
ErrClientConnTimeout = errors.New("grpc: timed out when dialing")
//
// Deprecated: this error should not be relied upon by users; use the status
// code of Canceled instead.
ErrClientConnClosing = status.Error(codes.Canceled, "grpc: the client connection is closing")
// errConnDrain indicates that the connection starts to be drained and does not accept any new RPCs.
errConnDrain = errors.New("grpc: the connection is drained")
// errConnClosing indicates that the connection is closing.
@ -85,7 +86,6 @@ var (
type dialOptions struct {
unaryInt UnaryClientInterceptor
streamInt StreamClientInterceptor
codec Codec
cp Compressor
dc Decompressor
bs backoffStrategy
@ -99,10 +99,8 @@ type dialOptions struct {
// balancer, and also by WithBalancerName dial option.
balancerBuilder balancer.Builder
// This is to support grpclb.
resolverBuilder resolver.Builder
// Custom user options for resolver.Build.
resolverBuildUserOptions interface{}
waitForHandshake bool
resolverBuilder resolver.Builder
waitForHandshake bool
}
const (
@ -167,10 +165,10 @@ func WithDefaultCallOptions(cos ...CallOption) DialOption {
}
// WithCodec returns a DialOption which sets a codec for message marshaling and unmarshaling.
//
// Deprecated: use WithDefaultCallOptions(CallCustomCodec(c)) instead.
func WithCodec(c Codec) DialOption {
return func(o *dialOptions) {
o.codec = c
}
return WithDefaultCallOptions(CallCustomCodec(c))
}
// WithCompressor returns a DialOption which sets a Compressor to use for
@ -236,14 +234,6 @@ func withResolverBuilder(b resolver.Builder) DialOption {
}
}
// WithResolverUserOptions returns a DialOption which sets the UserOptions
// field of resolver's BuildOption.
func WithResolverUserOptions(userOpt interface{}) DialOption {
return func(o *dialOptions) {
o.resolverBuildUserOptions = userOpt
}
}
// WithServiceConfig returns a DialOption which has a channel to read the service configuration.
// DEPRECATED: service config should be received through name resolver, as specified here.
// https://github.com/grpc/grpc/blob/master/doc/service_config.md
@ -407,6 +397,10 @@ func Dial(target string, opts ...DialOption) (*ClientConn, error) {
// cancel or expire the pending connection. Once this function returns, the
// cancellation and expiration of ctx will be noop. Users should call ClientConn.Close
// to terminate all the pending operations after this function returns.
//
// The target name syntax is defined in
// https://github.com/grpc/grpc/blob/master/doc/naming.md.
// e.g. to use dns resolver, a "dns:///" prefix should be applied to the target.
func DialContext(ctx context.Context, target string, opts ...DialOption) (conn *ClientConn, err error) {
cc := &ClientConn{
target: target,
@ -482,10 +476,6 @@ func DialContext(ctx context.Context, target string, opts ...DialOption) (conn *
default:
}
}
// Set defaults.
if cc.dopts.codec == nil {
cc.dopts.codec = protoCodec{}
}
if cc.dopts.bs == nil {
cc.dopts.bs = DefaultBackoffConfig
}
@ -1119,8 +1109,8 @@ func (ac *addrConn) createTransport(connectRetryNum, ridx int, backoffDeadline,
}
done := make(chan struct{})
onPrefaceReceipt := func() {
close(done)
ac.mu.Lock()
close(done)
if !ac.backoffDeadline.IsZero() {
// If we haven't already started reconnecting to
// other backends.
@ -1185,10 +1175,16 @@ func (ac *addrConn) createTransport(connectRetryNum, ridx int, backoffDeadline,
close(ac.ready)
ac.ready = nil
}
ac.connectRetryNum = connectRetryNum
ac.backoffDeadline = backoffDeadline
ac.connectDeadline = connectDeadline
ac.reconnectIdx = i + 1 // Start reconnecting from the next backend in the list.
select {
case <-done:
// If the server has responded back with preface already,
// don't set the reconnect parameters.
default:
ac.connectRetryNum = connectRetryNum
ac.backoffDeadline = backoffDeadline
ac.connectDeadline = connectDeadline
ac.reconnectIdx = i + 1 // Start reconnecting from the next backend in the list.
}
ac.mu.Unlock()
return true, nil
}
@ -1379,3 +1375,10 @@ func (ac *addrConn) getState() connectivity.State {
defer ac.mu.Unlock()
return ac.state
}
// ErrClientConnTimeout indicates that the ClientConn cannot establish the
// underlying connections within the specified timeout.
//
// Deprecated: This error is never returned by grpc and should not be
// referenced by users.
var ErrClientConnTimeout = errors.New("grpc: timed out when dialing")

View File

@ -599,6 +599,41 @@ func TestNonblockingDialWithEmptyBalancer(t *testing.T) {
}
}
func TestResolverServiceConfigBeforeAddressNotPanic(t *testing.T) {
defer leakcheck.Check(t)
r, rcleanup := manual.GenerateAndRegisterManualResolver()
defer rcleanup()
cc, err := Dial(r.Scheme()+":///test.server", WithInsecure())
if err != nil {
t.Fatalf("failed to dial: %v", err)
}
defer cc.Close()
// SwitchBalancer before NewAddress. There was no balancer created, this
// makes sure we don't call close on nil balancerWrapper.
r.NewServiceConfig(`{"loadBalancingPolicy": "round_robin"}`) // This should not panic.
time.Sleep(time.Second) // Sleep to make sure the service config is handled by ClientConn.
}
func TestResolverEmptyUpdateNotPanic(t *testing.T) {
defer leakcheck.Check(t)
r, rcleanup := manual.GenerateAndRegisterManualResolver()
defer rcleanup()
cc, err := Dial(r.Scheme()+":///test.server", WithInsecure())
if err != nil {
t.Fatalf("failed to dial: %v", err)
}
defer cc.Close()
// This make sure we don't create addrConn with empty address list.
r.NewAddress([]resolver.Address{}) // This should not panic.
time.Sleep(time.Second) // Sleep to make sure the service config is handled by ClientConn.
}
func TestClientUpdatesParamsAfterGoAway(t *testing.T) {
defer leakcheck.Check(t)
lis, err := net.Listen("tcp", "localhost:0")

View File

@ -19,96 +19,32 @@
package grpc
import (
"math"
"sync"
"github.com/golang/protobuf/proto"
"google.golang.org/grpc/encoding"
_ "google.golang.org/grpc/encoding/proto" // to register the Codec for "proto"
)
// baseCodec contains the functionality of both Codec and encoding.Codec, but
// omits the name/string, which vary between the two and are not needed for
// anything besides the registry in the encoding package.
type baseCodec interface {
Marshal(v interface{}) ([]byte, error)
Unmarshal(data []byte, v interface{}) error
}
var _ baseCodec = Codec(nil)
var _ baseCodec = encoding.Codec(nil)
// Codec defines the interface gRPC uses to encode and decode messages.
// Note that implementations of this interface must be thread safe;
// a Codec's methods can be called from concurrent goroutines.
//
// Deprecated: use encoding.Codec instead.
type Codec interface {
// Marshal returns the wire format of v.
Marshal(v interface{}) ([]byte, error)
// Unmarshal parses the wire format into v.
Unmarshal(data []byte, v interface{}) error
// String returns the name of the Codec implementation. The returned
// string will be used as part of content type in transmission.
// String returns the name of the Codec implementation. This is unused by
// gRPC.
String() string
}
// protoCodec is a Codec implementation with protobuf. It is the default codec for gRPC.
type protoCodec struct {
}
type cachedProtoBuffer struct {
lastMarshaledSize uint32
proto.Buffer
}
func capToMaxInt32(val int) uint32 {
if val > math.MaxInt32 {
return uint32(math.MaxInt32)
}
return uint32(val)
}
func (p protoCodec) marshal(v interface{}, cb *cachedProtoBuffer) ([]byte, error) {
protoMsg := v.(proto.Message)
newSlice := make([]byte, 0, cb.lastMarshaledSize)
cb.SetBuf(newSlice)
cb.Reset()
if err := cb.Marshal(protoMsg); err != nil {
return nil, err
}
out := cb.Bytes()
cb.lastMarshaledSize = capToMaxInt32(len(out))
return out, nil
}
func (p protoCodec) Marshal(v interface{}) ([]byte, error) {
if pm, ok := v.(proto.Marshaler); ok {
// object can marshal itself, no need for buffer
return pm.Marshal()
}
cb := protoBufferPool.Get().(*cachedProtoBuffer)
out, err := p.marshal(v, cb)
// put back buffer and lose the ref to the slice
cb.SetBuf(nil)
protoBufferPool.Put(cb)
return out, err
}
func (p protoCodec) Unmarshal(data []byte, v interface{}) error {
protoMsg := v.(proto.Message)
protoMsg.Reset()
if pu, ok := protoMsg.(proto.Unmarshaler); ok {
// object can unmarshal itself, no need for buffer
return pu.Unmarshal(data)
}
cb := protoBufferPool.Get().(*cachedProtoBuffer)
cb.SetBuf(data)
err := cb.Unmarshal(protoMsg)
cb.SetBuf(nil)
protoBufferPool.Put(cb)
return err
}
func (protoCodec) String() string {
return "proto"
}
var protoBufferPool = &sync.Pool{
New: func() interface{} {
return &cachedProtoBuffer{
Buffer: proto.Buffer{},
lastMarshaledSize: 16,
}
},
}

View File

@ -19,110 +19,14 @@
package grpc
import (
"bytes"
"sync"
"testing"
"google.golang.org/grpc/test/codec_perf"
"google.golang.org/grpc/encoding"
"google.golang.org/grpc/encoding/proto"
)
func marshalAndUnmarshal(t *testing.T, protoCodec Codec, expectedBody []byte) {
p := &codec_perf.Buffer{}
p.Body = expectedBody
marshalledBytes, err := protoCodec.Marshal(p)
if err != nil {
t.Errorf("protoCodec.Marshal(_) returned an error")
}
if err := protoCodec.Unmarshal(marshalledBytes, p); err != nil {
t.Errorf("protoCodec.Unmarshal(_) returned an error")
}
if bytes.Compare(p.GetBody(), expectedBody) != 0 {
t.Errorf("Unexpected body; got %v; want %v", p.GetBody(), expectedBody)
}
}
func TestBasicProtoCodecMarshalAndUnmarshal(t *testing.T) {
marshalAndUnmarshal(t, protoCodec{}, []byte{1, 2, 3})
}
// Try to catch possible race conditions around use of pools
func TestConcurrentUsage(t *testing.T) {
const (
numGoRoutines = 100
numMarshUnmarsh = 1000
)
// small, arbitrary byte slices
protoBodies := [][]byte{
[]byte("one"),
[]byte("two"),
[]byte("three"),
[]byte("four"),
[]byte("five"),
}
var wg sync.WaitGroup
codec := protoCodec{}
for i := 0; i < numGoRoutines; i++ {
wg.Add(1)
go func() {
defer wg.Done()
for k := 0; k < numMarshUnmarsh; k++ {
marshalAndUnmarshal(t, codec, protoBodies[k%len(protoBodies)])
}
}()
}
wg.Wait()
}
// TestStaggeredMarshalAndUnmarshalUsingSamePool tries to catch potential errors in which slices get
// stomped on during reuse of a proto.Buffer.
func TestStaggeredMarshalAndUnmarshalUsingSamePool(t *testing.T) {
codec1 := protoCodec{}
codec2 := protoCodec{}
expectedBody1 := []byte{1, 2, 3}
expectedBody2 := []byte{4, 5, 6}
proto1 := codec_perf.Buffer{Body: expectedBody1}
proto2 := codec_perf.Buffer{Body: expectedBody2}
var m1, m2 []byte
var err error
if m1, err = codec1.Marshal(&proto1); err != nil {
t.Errorf("protoCodec.Marshal(%v) failed", proto1)
}
if m2, err = codec2.Marshal(&proto2); err != nil {
t.Errorf("protoCodec.Marshal(%v) failed", proto2)
}
if err = codec1.Unmarshal(m1, &proto1); err != nil {
t.Errorf("protoCodec.Unmarshal(%v) failed", m1)
}
if err = codec2.Unmarshal(m2, &proto2); err != nil {
t.Errorf("protoCodec.Unmarshal(%v) failed", m2)
}
b1 := proto1.GetBody()
b2 := proto2.GetBody()
for i, v := range b1 {
if expectedBody1[i] != v {
t.Errorf("expected %v at index %v but got %v", i, expectedBody1[i], v)
}
}
for i, v := range b2 {
if expectedBody2[i] != v {
t.Errorf("expected %v at index %v but got %v", i, expectedBody2[i], v)
}
func TestGetCodecForProtoIsNotNil(t *testing.T) {
if encoding.GetCodec(proto.Name) == nil {
t.Fatalf("encoding.GetCodec(%q) must not be nil by default", proto.Name)
}
}

View File

@ -19,6 +19,7 @@
// Package codes defines the canonical error codes used by gRPC. It is
// consistent across various languages.
package codes // import "google.golang.org/grpc/codes"
import (
"fmt"
)
@ -33,9 +34,9 @@ const (
// Canceled indicates the operation was canceled (typically by the caller).
Canceled Code = 1
// Unknown error. An example of where this error may be returned is
// Unknown error. An example of where this error may be returned is
// if a Status value received from another address space belongs to
// an error-space that is not known in this address space. Also
// an error-space that is not known in this address space. Also
// errors raised by APIs that do not return enough error information
// may be converted to this error.
Unknown Code = 2
@ -64,15 +65,11 @@ const (
// PermissionDenied indicates the caller does not have permission to
// execute the specified operation. It must not be used for rejections
// caused by exhausting some resource (use ResourceExhausted
// instead for those errors). It must not be
// instead for those errors). It must not be
// used if the caller cannot be identified (use Unauthenticated
// instead for those errors).
PermissionDenied Code = 7
// Unauthenticated indicates the request does not have valid
// authentication credentials for the operation.
Unauthenticated Code = 16
// ResourceExhausted indicates some resource has been exhausted, perhaps
// a per-user quota, or perhaps the entire file system is out of space.
ResourceExhausted Code = 8
@ -88,7 +85,7 @@ const (
// (b) Use Aborted if the client should retry at a higher-level
// (e.g., restarting a read-modify-write sequence).
// (c) Use FailedPrecondition if the client should not retry until
// the system state has been explicitly fixed. E.g., if an "rmdir"
// the system state has been explicitly fixed. E.g., if an "rmdir"
// fails because the directory is non-empty, FailedPrecondition
// should be returned since the client should not retry unless
// they have first fixed up the directory by deleting files from it.
@ -117,7 +114,7 @@ const (
// file size.
//
// There is a fair bit of overlap between FailedPrecondition and
// OutOfRange. We recommend using OutOfRange (the more specific
// OutOfRange. We recommend using OutOfRange (the more specific
// error) when it applies so that callers who are iterating through
// a space can easily look for an OutOfRange error to detect when
// they are done.
@ -127,8 +124,8 @@ const (
// supported/enabled in this service.
Unimplemented Code = 12
// Internal errors. Means some invariants expected by underlying
// system has been broken. If you see one of these errors,
// Internal errors. Means some invariants expected by underlying
// system has been broken. If you see one of these errors,
// something is very broken.
Internal Code = 13
@ -142,6 +139,10 @@ const (
// DataLoss indicates unrecoverable data loss or corruption.
DataLoss Code = 15
// Unauthenticated indicates the request does not have valid
// authentication credentials for the operation.
Unauthenticated Code = 16
)
var strToCode = map[string]Code{

View File

@ -43,8 +43,9 @@ type PerRPCCredentials interface {
// GetRequestMetadata gets the current request metadata, refreshing
// tokens if required. This should be called by the transport layer on
// each request, and the data should be populated in headers or other
// context. uri is the URI of the entry point for the request. When
// supported by the underlying implementation, ctx can be used for
// context. If a status code is returned, it will be used as the status
// for the RPC. uri is the URI of the entry point for the request.
// When supported by the underlying implementation, ctx can be used for
// timeout and cancellation.
// TODO(zhaoq): Define the set of the qualified keys instead of leaving
// it as an arbitrary string.

View File

@ -16,46 +16,103 @@
*
*/
// Package encoding defines the interface for the compressor and the functions
// to register and get the compossor.
// Package encoding defines the interface for the compressor and codec, and
// functions to register and retrieve compressors and codecs.
//
// This package is EXPERIMENTAL.
package encoding
import (
"io"
"strings"
)
var registerCompressor = make(map[string]Compressor)
// Compressor is used for compressing and decompressing when sending or receiving messages.
type Compressor interface {
// Compress writes the data written to wc to w after compressing it. If an error
// occurs while initializing the compressor, that error is returned instead.
Compress(w io.Writer) (io.WriteCloser, error)
// Decompress reads data from r, decompresses it, and provides the uncompressed data
// via the returned io.Reader. If an error occurs while initializing the decompressor, that error
// is returned instead.
Decompress(r io.Reader) (io.Reader, error)
// Name is the name of the compression codec and is used to set the content coding header.
Name() string
}
// RegisterCompressor registers the compressor with gRPC by its name. It can be activated when
// sending an RPC via grpc.UseCompressor(). It will be automatically accessed when receiving a
// message based on the content coding header. Servers also use it to send a response with the
// same encoding as the request.
//
// NOTE: this function must only be called during initialization time (i.e. in an init() function). If
// multiple Compressors are registered with the same name, the one registered last will take effect.
func RegisterCompressor(c Compressor) {
registerCompressor[c.Name()] = c
}
// GetCompressor returns Compressor for the given compressor name.
func GetCompressor(name string) Compressor {
return registerCompressor[name]
}
// Identity specifies the optional encoding for uncompressed streams.
// It is intended for grpc internal use only.
const Identity = "identity"
// Compressor is used for compressing and decompressing when sending or
// receiving messages.
type Compressor interface {
// Compress writes the data written to wc to w after compressing it. If an
// error occurs while initializing the compressor, that error is returned
// instead.
Compress(w io.Writer) (io.WriteCloser, error)
// Decompress reads data from r, decompresses it, and provides the
// uncompressed data via the returned io.Reader. If an error occurs while
// initializing the decompressor, that error is returned instead.
Decompress(r io.Reader) (io.Reader, error)
// Name is the name of the compression codec and is used to set the content
// coding header. The result must be static; the result cannot change
// between calls.
Name() string
}
var registeredCompressor = make(map[string]Compressor)
// RegisterCompressor registers the compressor with gRPC by its name. It can
// be activated when sending an RPC via grpc.UseCompressor(). It will be
// automatically accessed when receiving a message based on the content coding
// header. Servers also use it to send a response with the same encoding as
// the request.
//
// NOTE: this function must only be called during initialization time (i.e. in
// an init() function), and is not thread-safe. If multiple Compressors are
// registered with the same name, the one registered last will take effect.
func RegisterCompressor(c Compressor) {
registeredCompressor[c.Name()] = c
}
// GetCompressor returns Compressor for the given compressor name.
func GetCompressor(name string) Compressor {
return registeredCompressor[name]
}
// Codec defines the interface gRPC uses to encode and decode messages. Note
// that implementations of this interface must be thread safe; a Codec's
// methods can be called from concurrent goroutines.
type Codec interface {
// Marshal returns the wire format of v.
Marshal(v interface{}) ([]byte, error)
// Unmarshal parses the wire format into v.
Unmarshal(data []byte, v interface{}) error
// Name returns the name of the Codec implementation. The returned string
// will be used as part of content type in transmission. The result must be
// static; the result cannot change between calls.
Name() string
}
var registeredCodecs = make(map[string]Codec, 0)
// RegisterCodec registers the provided Codec for use with all gRPC clients and
// servers.
//
// The Codec will be stored and looked up by result of its Name() method, which
// should match the content-subtype of the encoding handled by the Codec. This
// is case-insensitive, and is stored and looked up as lowercase. If the
// result of calling Name() is an empty string, RegisterCodec will panic. See
// Content-Type on
// https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests for
// more details.
//
// NOTE: this function must only be called during initialization time (i.e. in
// an init() function), and is not thread-safe. If multiple Compressors are
// registered with the same name, the one registered last will take effect.
func RegisterCodec(codec Codec) {
if codec == nil {
panic("cannot register a nil Codec")
}
contentSubtype := strings.ToLower(codec.Name())
if contentSubtype == "" {
panic("cannot register Codec with empty string result for String()")
}
registeredCodecs[contentSubtype] = codec
}
// GetCodec gets a registered Codec by content-subtype, or nil if no Codec is
// registered for the content-subtype.
//
// The content-subtype is expected to be lowercase.
func GetCodec(contentSubtype string) Codec {
return registeredCodecs[contentSubtype]
}

View File

@ -30,6 +30,9 @@ import (
"google.golang.org/grpc/encoding"
)
// Name is the name registered for the gzip compressor.
const Name = "gzip"
func init() {
c := &compressor{}
c.poolCompressor.New = func() interface{} {
@ -84,7 +87,7 @@ func (z *reader) Read(p []byte) (n int, err error) {
}
func (c *compressor) Name() string {
return "gzip"
return Name
}
type compressor struct {

110
vendor/google.golang.org/grpc/encoding/proto/proto.go generated vendored Normal file
View File

@ -0,0 +1,110 @@
/*
*
* Copyright 2018 gRPC authors.
*
* 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
*
* http://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 proto defines the protobuf codec. Importing this package will
// register the codec.
package proto
import (
"math"
"sync"
"github.com/golang/protobuf/proto"
"google.golang.org/grpc/encoding"
)
// Name is the name registered for the proto compressor.
const Name = "proto"
func init() {
encoding.RegisterCodec(codec{})
}
// codec is a Codec implementation with protobuf. It is the default codec for gRPC.
type codec struct{}
type cachedProtoBuffer struct {
lastMarshaledSize uint32
proto.Buffer
}
func capToMaxInt32(val int) uint32 {
if val > math.MaxInt32 {
return uint32(math.MaxInt32)
}
return uint32(val)
}
func marshal(v interface{}, cb *cachedProtoBuffer) ([]byte, error) {
protoMsg := v.(proto.Message)
newSlice := make([]byte, 0, cb.lastMarshaledSize)
cb.SetBuf(newSlice)
cb.Reset()
if err := cb.Marshal(protoMsg); err != nil {
return nil, err
}
out := cb.Bytes()
cb.lastMarshaledSize = capToMaxInt32(len(out))
return out, nil
}
func (codec) Marshal(v interface{}) ([]byte, error) {
if pm, ok := v.(proto.Marshaler); ok {
// object can marshal itself, no need for buffer
return pm.Marshal()
}
cb := protoBufferPool.Get().(*cachedProtoBuffer)
out, err := marshal(v, cb)
// put back buffer and lose the ref to the slice
cb.SetBuf(nil)
protoBufferPool.Put(cb)
return out, err
}
func (codec) Unmarshal(data []byte, v interface{}) error {
protoMsg := v.(proto.Message)
protoMsg.Reset()
if pu, ok := protoMsg.(proto.Unmarshaler); ok {
// object can unmarshal itself, no need for buffer
return pu.Unmarshal(data)
}
cb := protoBufferPool.Get().(*cachedProtoBuffer)
cb.SetBuf(data)
err := cb.Unmarshal(protoMsg)
cb.SetBuf(nil)
protoBufferPool.Put(cb)
return err
}
func (codec) Name() string {
return Name
}
var protoBufferPool = &sync.Pool{
New: func() interface{} {
return &cachedProtoBuffer{
Buffer: proto.Buffer{},
lastMarshaledSize: 16,
}
},
}

View File

@ -18,13 +18,14 @@
*
*/
package grpc
package proto
import (
"fmt"
"testing"
"github.com/golang/protobuf/proto"
"google.golang.org/grpc/encoding"
"google.golang.org/grpc/test/codec_perf"
)
@ -68,7 +69,7 @@ func BenchmarkProtoCodec(b *testing.B) {
protoStructs := setupBenchmarkProtoCodecInputs(s)
name := fmt.Sprintf("MinPayloadSize:%v/SetParallelism(%v)", s, p)
b.Run(name, func(b *testing.B) {
codec := &protoCodec{}
codec := &codec{}
b.SetParallelism(p)
b.RunParallel(func(pb *testing.PB) {
benchmarkProtoCodec(codec, protoStructs, pb, b)
@ -78,7 +79,7 @@ func BenchmarkProtoCodec(b *testing.B) {
}
}
func benchmarkProtoCodec(codec *protoCodec, protoStructs []proto.Message, pb *testing.PB, b *testing.B) {
func benchmarkProtoCodec(codec *codec, protoStructs []proto.Message, pb *testing.PB, b *testing.B) {
counter := 0
for pb.Next() {
counter++
@ -87,13 +88,13 @@ func benchmarkProtoCodec(codec *protoCodec, protoStructs []proto.Message, pb *te
}
}
func fastMarshalAndUnmarshal(protoCodec Codec, protoStruct proto.Message, b *testing.B) {
marshaledBytes, err := protoCodec.Marshal(protoStruct)
func fastMarshalAndUnmarshal(codec encoding.Codec, protoStruct proto.Message, b *testing.B) {
marshaledBytes, err := codec.Marshal(protoStruct)
if err != nil {
b.Errorf("protoCodec.Marshal(_) returned an error")
b.Errorf("codec.Marshal(_) returned an error")
}
res := codec_perf.Buffer{}
if err := protoCodec.Unmarshal(marshaledBytes, &res); err != nil {
b.Errorf("protoCodec.Unmarshal(_) returned an error")
if err := codec.Unmarshal(marshaledBytes, &res); err != nil {
b.Errorf("codec.Unmarshal(_) returned an error")
}
}

View File

@ -0,0 +1,129 @@
/*
*
* Copyright 2018 gRPC authors.
*
* 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
*
* http://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 proto
import (
"bytes"
"sync"
"testing"
"google.golang.org/grpc/encoding"
"google.golang.org/grpc/test/codec_perf"
)
func marshalAndUnmarshal(t *testing.T, codec encoding.Codec, expectedBody []byte) {
p := &codec_perf.Buffer{}
p.Body = expectedBody
marshalledBytes, err := codec.Marshal(p)
if err != nil {
t.Errorf("codec.Marshal(_) returned an error")
}
if err := codec.Unmarshal(marshalledBytes, p); err != nil {
t.Errorf("codec.Unmarshal(_) returned an error")
}
if bytes.Compare(p.GetBody(), expectedBody) != 0 {
t.Errorf("Unexpected body; got %v; want %v", p.GetBody(), expectedBody)
}
}
func TestBasicProtoCodecMarshalAndUnmarshal(t *testing.T) {
marshalAndUnmarshal(t, codec{}, []byte{1, 2, 3})
}
// Try to catch possible race conditions around use of pools
func TestConcurrentUsage(t *testing.T) {
const (
numGoRoutines = 100
numMarshUnmarsh = 1000
)
// small, arbitrary byte slices
protoBodies := [][]byte{
[]byte("one"),
[]byte("two"),
[]byte("three"),
[]byte("four"),
[]byte("five"),
}
var wg sync.WaitGroup
codec := codec{}
for i := 0; i < numGoRoutines; i++ {
wg.Add(1)
go func() {
defer wg.Done()
for k := 0; k < numMarshUnmarsh; k++ {
marshalAndUnmarshal(t, codec, protoBodies[k%len(protoBodies)])
}
}()
}
wg.Wait()
}
// TestStaggeredMarshalAndUnmarshalUsingSamePool tries to catch potential errors in which slices get
// stomped on during reuse of a proto.Buffer.
func TestStaggeredMarshalAndUnmarshalUsingSamePool(t *testing.T) {
codec1 := codec{}
codec2 := codec{}
expectedBody1 := []byte{1, 2, 3}
expectedBody2 := []byte{4, 5, 6}
proto1 := codec_perf.Buffer{Body: expectedBody1}
proto2 := codec_perf.Buffer{Body: expectedBody2}
var m1, m2 []byte
var err error
if m1, err = codec1.Marshal(&proto1); err != nil {
t.Errorf("codec.Marshal(%v) failed", proto1)
}
if m2, err = codec2.Marshal(&proto2); err != nil {
t.Errorf("codec.Marshal(%v) failed", proto2)
}
if err = codec1.Unmarshal(m1, &proto1); err != nil {
t.Errorf("codec.Unmarshal(%v) failed", m1)
}
if err = codec2.Unmarshal(m2, &proto2); err != nil {
t.Errorf("codec.Unmarshal(%v) failed", m2)
}
b1 := proto1.GetBody()
b2 := proto2.GetBody()
for i, v := range b1 {
if expectedBody1[i] != v {
t.Errorf("expected %v at index %v but got %v", i, expectedBody1[i], v)
}
}
for i, v := range b2 {
if expectedBody2[i] != v {
t.Errorf("expected %v at index %v but got %v", i, expectedBody2[i], v)
}
}
}

View File

@ -101,12 +101,12 @@ func runRecordRoute(client pb.RouteGuideClient) {
// runRouteChat receives a sequence of route notes, while sending notes for various locations.
func runRouteChat(client pb.RouteGuideClient) {
notes := []*pb.RouteNote{
{&pb.Point{Latitude: 0, Longitude: 1}, "First message"},
{&pb.Point{Latitude: 0, Longitude: 2}, "Second message"},
{&pb.Point{Latitude: 0, Longitude: 3}, "Third message"},
{&pb.Point{Latitude: 0, Longitude: 1}, "Fourth message"},
{&pb.Point{Latitude: 0, Longitude: 2}, "Fifth message"},
{&pb.Point{Latitude: 0, Longitude: 3}, "Sixth message"},
{Location: &pb.Point{Latitude: 0, Longitude: 1}, Message: "First message"},
{Location: &pb.Point{Latitude: 0, Longitude: 2}, Message: "Second message"},
{Location: &pb.Point{Latitude: 0, Longitude: 3}, Message: "Third message"},
{Location: &pb.Point{Latitude: 0, Longitude: 1}, Message: "Fourth message"},
{Location: &pb.Point{Latitude: 0, Longitude: 2}, Message: "Fifth message"},
{Location: &pb.Point{Latitude: 0, Longitude: 3}, Message: "Sixth message"},
}
stream, err := client.RouteChat(context.Background())
if err != nil {

View File

@ -48,6 +48,9 @@ func sendHTTPRequest(ctx context.Context, req *http.Request, conn net.Conn) erro
// toRPCErr converts an error into an error from the status package.
func toRPCErr(err error) error {
if err == nil || err == io.EOF {
return err
}
if _, ok := status.FromError(err); ok {
return err
}
@ -62,8 +65,6 @@ func toRPCErr(err error) error {
return status.Error(codes.DeadlineExceeded, err.Error())
case context.Canceled:
return status.Error(codes.Canceled, err.Error())
case ErrClientConnClosing:
return status.Error(codes.FailedPrecondition, err.Error())
}
}
return status.Error(codes.Unknown, err.Error())

View File

@ -49,6 +49,9 @@ func sendHTTPRequest(ctx context.Context, req *http.Request, conn net.Conn) erro
// toRPCErr converts an error into an error from the status package.
func toRPCErr(err error) error {
if err == nil || err == io.EOF {
return err
}
if _, ok := status.FromError(err); ok {
return err
}
@ -63,8 +66,6 @@ func toRPCErr(err error) error {
return status.Error(codes.DeadlineExceeded, err.Error())
case context.Canceled, netctx.Canceled:
return status.Error(codes.Canceled, err.Error())
case ErrClientConnClosing:
return status.Error(codes.FailedPrecondition, err.Error())
}
}
return status.Error(codes.Unknown, err.Error())

View File

@ -241,10 +241,8 @@ func DoTimeoutOnSleepingServer(tc testpb.TestServiceClient, args ...grpc.CallOpt
ResponseType: testpb.PayloadType_COMPRESSABLE,
Payload: pl,
}
if err := stream.Send(req); err != nil {
if status.Code(err) != codes.DeadlineExceeded {
grpclog.Fatalf("%v.Send(_) = %v", stream, err)
}
if err := stream.Send(req); err != nil && err != io.EOF {
grpclog.Fatalf("%v.Send(_) = %v", stream, err)
}
if _, err := stream.Recv(); status.Code(err) != codes.DeadlineExceeded {
grpclog.Fatalf("%v.Recv() = _, %v, want error code %d", stream, err, codes.DeadlineExceeded)

View File

@ -17,7 +17,8 @@
*/
// Package metadata define the structure of the metadata supported by gRPC library.
// Please refer to https://grpc.io/docs/guides/wire.html for more information about custom-metadata.
// Please refer to https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md
// for more information about custom-metadata.
package metadata // import "google.golang.org/grpc/metadata"
import (
@ -115,9 +116,22 @@ func NewIncomingContext(ctx context.Context, md MD) context.Context {
return context.WithValue(ctx, mdIncomingKey{}, md)
}
// NewOutgoingContext creates a new context with outgoing md attached.
// NewOutgoingContext creates a new context with outgoing md attached. If used
// in conjunction with AppendToOutgoingContext, NewOutgoingContext will
// overwrite any previously-appended metadata.
func NewOutgoingContext(ctx context.Context, md MD) context.Context {
return context.WithValue(ctx, mdOutgoingKey{}, md)
return context.WithValue(ctx, mdOutgoingKey{}, rawMD{md: md})
}
// AppendToOutgoingContext returns a new context with the provided kv merged
// with any existing metadata in the context. Please refer to the
// documentation of Pairs for a description of kv.
func AppendToOutgoingContext(ctx context.Context, kv ...string) context.Context {
if len(kv)%2 == 1 {
panic(fmt.Sprintf("metadata: AppendToOutgoingContext got an odd number of input pairs for metadata: %d", len(kv)))
}
md, _ := ctx.Value(mdOutgoingKey{}).(rawMD)
return context.WithValue(ctx, mdOutgoingKey{}, rawMD{md: md.md, added: append(md.added, kv)})
}
// FromIncomingContext returns the incoming metadata in ctx if it exists. The
@ -128,10 +142,39 @@ func FromIncomingContext(ctx context.Context) (md MD, ok bool) {
return
}
// FromOutgoingContextRaw returns the un-merged, intermediary contents
// of rawMD. Remember to perform strings.ToLower on the keys. The returned
// MD should not be modified. Writing to it may cause races. Modification
// should be made to copies of the returned MD.
//
// This is intended for gRPC-internal use ONLY.
func FromOutgoingContextRaw(ctx context.Context) (MD, [][]string, bool) {
raw, ok := ctx.Value(mdOutgoingKey{}).(rawMD)
if !ok {
return nil, nil, false
}
return raw.md, raw.added, true
}
// FromOutgoingContext returns the outgoing metadata in ctx if it exists. The
// returned MD should not be modified. Writing to it may cause races.
// Modification should be made to the copies of the returned MD.
func FromOutgoingContext(ctx context.Context) (md MD, ok bool) {
md, ok = ctx.Value(mdOutgoingKey{}).(MD)
return
func FromOutgoingContext(ctx context.Context) (MD, bool) {
raw, ok := ctx.Value(mdOutgoingKey{}).(rawMD)
if !ok {
return nil, false
}
mds := make([]MD, 0, len(raw.added)+1)
mds = append(mds, raw.md)
for _, vv := range raw.added {
mds = append(mds, Pairs(vv...))
}
return Join(mds...), ok
}
type rawMD struct {
md MD
added [][]string
}

View File

@ -21,6 +21,8 @@ package metadata
import (
"reflect"
"testing"
"golang.org/x/net/context"
)
func TestPairsMD(t *testing.T) {
@ -69,3 +71,55 @@ func TestJoin(t *testing.T) {
}
}
}
func TestAppendToOutgoingContext(t *testing.T) {
// Pre-existing metadata
ctx := NewOutgoingContext(context.Background(), Pairs("k1", "v1", "k2", "v2"))
ctx = AppendToOutgoingContext(ctx, "k1", "v3")
ctx = AppendToOutgoingContext(ctx, "k1", "v4")
md, ok := FromOutgoingContext(ctx)
if !ok {
t.Errorf("Expected MD to exist in ctx, but got none")
}
want := Pairs("k1", "v1", "k1", "v3", "k1", "v4", "k2", "v2")
if !reflect.DeepEqual(md, want) {
t.Errorf("context's metadata is %v, want %v", md, want)
}
// No existing metadata
ctx = AppendToOutgoingContext(context.Background(), "k1", "v1")
md, ok = FromOutgoingContext(ctx)
if !ok {
t.Errorf("Expected MD to exist in ctx, but got none")
}
want = Pairs("k1", "v1")
if !reflect.DeepEqual(md, want) {
t.Errorf("context's metadata is %v, want %v", md, want)
}
}
// Old/slow approach to adding metadata to context
func Benchmark_AddingMetadata_ContextManipulationApproach(b *testing.B) {
for n := 0; n < b.N; n++ {
ctx := context.Background()
md, _ := FromOutgoingContext(ctx)
NewOutgoingContext(ctx, Join(Pairs("k1", "v1", "k2", "v2"), md))
}
}
// Newer/faster approach to adding metadata to context
func BenchmarkAppendToOutgoingContext(b *testing.B) {
for n := 0; n < b.N; n++ {
AppendToOutgoingContext(context.Background(), "k1", "v1", "k2", "v2")
}
}
func BenchmarkFromOutgoingContext(b *testing.B) {
ctx := context.Background()
ctx = NewOutgoingContext(ctx, MD{"k3": {"v3", "v4"}})
ctx = AppendToOutgoingContext(ctx, "k1", "v1", "k2", "v2")
for n := 0; n < b.N; n++ {
FromOutgoingContext(ctx)
}
}

View File

@ -90,9 +90,6 @@ type Address struct {
// BuildOption includes additional information for the builder to create
// the resolver.
type BuildOption struct {
// UserOptions can be used to pass configuration between DialOptions and the
// resolver.
UserOptions interface{}
}
// ClientConn contains the callbacks for resolver to notify any updates

View File

@ -83,9 +83,7 @@ func newCCResolverWrapper(cc *ClientConn) (*ccResolverWrapper, error) {
}
var err error
ccr.resolver, err = rb.Build(cc.parsedTarget, ccr, resolver.BuildOption{
UserOptions: cc.dopts.resolverBuildUserOptions,
})
ccr.resolver, err = rb.Build(cc.parsedTarget, ccr, resolver.BuildOption{})
if err != nil {
return nil, err
}

View File

@ -1,99 +0,0 @@
/*
*
* Copyright 2017 gRPC authors.
*
* 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
*
* http://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 grpc
import (
"fmt"
"strings"
"testing"
"time"
"google.golang.org/grpc/resolver"
"google.golang.org/grpc/resolver/manual"
"google.golang.org/grpc/test/leakcheck"
)
func TestResolverServiceConfigBeforeAddressNotPanic(t *testing.T) {
defer leakcheck.Check(t)
r, rcleanup := manual.GenerateAndRegisterManualResolver()
defer rcleanup()
cc, err := Dial(r.Scheme()+":///test.server", WithInsecure())
if err != nil {
t.Fatalf("failed to dial: %v", err)
}
defer cc.Close()
// SwitchBalancer before NewAddress. There was no balancer created, this
// makes sure we don't call close on nil balancerWrapper.
r.NewServiceConfig(`{"loadBalancingPolicy": "round_robin"}`) // This should not panic.
time.Sleep(time.Second) // Sleep to make sure the service config is handled by ClientConn.
}
func TestResolverEmptyUpdateNotPanic(t *testing.T) {
defer leakcheck.Check(t)
r, rcleanup := manual.GenerateAndRegisterManualResolver()
defer rcleanup()
cc, err := Dial(r.Scheme()+":///test.server", WithInsecure())
if err != nil {
t.Fatalf("failed to dial: %v", err)
}
defer cc.Close()
// This make sure we don't create addrConn with empty address list.
r.NewAddress([]resolver.Address{}) // This should not panic.
time.Sleep(time.Second) // Sleep to make sure the service config is handled by ClientConn.
}
var (
errTestResolverFailBuild = fmt.Errorf("test resolver build error")
)
type testResolverFailBuilder struct {
buildOpt resolver.BuildOption
}
func (r *testResolverFailBuilder) Build(target resolver.Target, cc resolver.ClientConn, opts resolver.BuildOption) (resolver.Resolver, error) {
r.buildOpt = opts
return nil, errTestResolverFailBuild
}
func (r *testResolverFailBuilder) Scheme() string {
return "testResolverFailBuilderScheme"
}
// Tests that options in WithResolverUserOptions are passed to resolver.Build().
func TestResolverUserOptions(t *testing.T) {
r := &testResolverFailBuilder{}
userOpt := "testUserOpt"
_, err := Dial("scheme:///test.server", WithInsecure(),
withResolverBuilder(r),
WithResolverUserOptions(userOpt),
)
if err == nil || !strings.Contains(err.Error(), errTestResolverFailBuild.Error()) {
t.Fatalf("Dial with testResolverFailBuilder returns err: %v, want: %v", err, errTestResolverFailBuild)
}
if r.buildOpt.UserOptions != userOpt {
t.Fatalf("buildOpt.UserOptions = %T %+v, want %v", r.buildOpt.UserOptions, r.buildOpt.UserOptions, userOpt)
}
}

View File

@ -25,6 +25,7 @@ import (
"io"
"io/ioutil"
"math"
"strings"
"sync"
"time"
@ -32,6 +33,7 @@ import (
"google.golang.org/grpc/codes"
"google.golang.org/grpc/credentials"
"google.golang.org/grpc/encoding"
"google.golang.org/grpc/encoding/proto"
"google.golang.org/grpc/metadata"
"google.golang.org/grpc/peer"
"google.golang.org/grpc/stats"
@ -125,13 +127,13 @@ func (d *gzipDecompressor) Type() string {
type callInfo struct {
compressorType string
failFast bool
headerMD metadata.MD
trailerMD metadata.MD
peer *peer.Peer
stream *transport.Stream
traceInfo traceInfo // in trace.go
maxReceiveMessageSize *int
maxSendMessageSize *int
creds credentials.PerRPCCredentials
contentSubtype string
codec baseCodec
}
func defaultCallInfo() *callInfo {
@ -172,7 +174,9 @@ func (o afterCall) after(c *callInfo) { o(c) }
// for a unary RPC.
func Header(md *metadata.MD) CallOption {
return afterCall(func(c *callInfo) {
*md = c.headerMD
if c.stream != nil {
*md, _ = c.stream.Header()
}
})
}
@ -180,16 +184,20 @@ func Header(md *metadata.MD) CallOption {
// for a unary RPC.
func Trailer(md *metadata.MD) CallOption {
return afterCall(func(c *callInfo) {
*md = c.trailerMD
if c.stream != nil {
*md = c.stream.Trailer()
}
})
}
// Peer returns a CallOption that retrieves peer information for a
// unary RPC.
func Peer(peer *peer.Peer) CallOption {
func Peer(p *peer.Peer) CallOption {
return afterCall(func(c *callInfo) {
if c.peer != nil {
*peer = *c.peer
if c.stream != nil {
if x, ok := peer.FromContext(c.stream.Context()); ok {
*p = *x
}
}
})
}
@ -248,6 +256,49 @@ func UseCompressor(name string) CallOption {
})
}
// CallContentSubtype returns a CallOption that will set the content-subtype
// for a call. For example, if content-subtype is "json", the Content-Type over
// the wire will be "application/grpc+json". The content-subtype is converted
// to lowercase before being included in Content-Type. See Content-Type on
// https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests for
// more details.
//
// If CallCustomCodec is not also used, the content-subtype will be used to
// look up the Codec to use in the registry controlled by RegisterCodec. See
// the documention on RegisterCodec for details on registration. The lookup
// of content-subtype is case-insensitive. If no such Codec is found, the call
// will result in an error with code codes.Internal.
//
// If CallCustomCodec is also used, that Codec will be used for all request and
// response messages, with the content-subtype set to the given contentSubtype
// here for requests.
func CallContentSubtype(contentSubtype string) CallOption {
contentSubtype = strings.ToLower(contentSubtype)
return beforeCall(func(c *callInfo) error {
c.contentSubtype = contentSubtype
return nil
})
}
// CallCustomCodec returns a CallOption that will set the given Codec to be
// used for all request and response messages for a call. The result of calling
// String() will be used as the content-subtype in a case-insensitive manner.
//
// See Content-Type on
// https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests for
// more details. Also see the documentation on RegisterCodec and
// CallContentSubtype for more details on the interaction between Codec and
// content-subtype.
//
// This function is provided for advanced users; prefer to use only
// CallContentSubtype to select a registered codec instead.
func CallCustomCodec(codec Codec) CallOption {
return beforeCall(func(c *callInfo) error {
c.codec = codec
return nil
})
}
// The format of the payload: compressed or not?
type payloadFormat uint8
@ -263,8 +314,8 @@ type parser struct {
// error types.
r io.Reader
// The header of a gRPC message. Find more detail
// at https://grpc.io/docs/guides/wire.html.
// The header of a gRPC message. Find more detail at
// https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md
header [5]byte
}
@ -313,7 +364,7 @@ func (p *parser) recvMsg(maxReceiveMessageSize int) (pf payloadFormat, msg []byt
// encode serializes msg and returns a buffer of message header and a buffer of msg.
// If msg is nil, it generates the message header and an empty msg buffer.
// TODO(ddyihai): eliminate extra Compressor parameter.
func encode(c Codec, msg interface{}, cp Compressor, outPayload *stats.OutPayload, compressor encoding.Compressor) ([]byte, []byte, error) {
func encode(c baseCodec, msg interface{}, cp Compressor, outPayload *stats.OutPayload, compressor encoding.Compressor) ([]byte, []byte, error) {
var (
b []byte
cbuf *bytes.Buffer
@ -390,7 +441,7 @@ func checkRecvPayload(pf payloadFormat, recvCompress string, haveCompressor bool
// For the two compressor parameters, both should not be set, but if they are,
// dc takes precedence over compressor.
// TODO(dfawley): wrap the old compressor/decompressor using the new API?
func recv(p *parser, c Codec, s *transport.Stream, dc Decompressor, m interface{}, maxReceiveMessageSize int, inPayload *stats.InPayload, compressor encoding.Compressor) error {
func recv(p *parser, c baseCodec, s *transport.Stream, dc Decompressor, m interface{}, maxReceiveMessageSize int, inPayload *stats.InPayload, compressor encoding.Compressor) error {
pf, d, err := p.recvMsg(maxReceiveMessageSize)
if err != nil {
return err
@ -485,6 +536,27 @@ func Errorf(c codes.Code, format string, a ...interface{}) error {
return status.Errorf(c, format, a...)
}
// setCallInfoCodec should only be called after CallOptions have been applied.
func setCallInfoCodec(c *callInfo) error {
if c.codec != nil {
// codec was already set by a CallOption; use it.
return nil
}
if c.contentSubtype == "" {
// No codec specified in CallOptions; use proto by default.
c.codec = encoding.GetCodec(proto.Name)
return nil
}
// c.contentSubtype is already lowercased in CallContentSubtype
c.codec = encoding.GetCodec(c.contentSubtype)
if c.codec == nil {
return status.Errorf(codes.Internal, "no codec registered for content-subtype %s", c.contentSubtype)
}
return nil
}
// The SupportPackageIsVersion variables are referenced from generated protocol
// buffer files to ensure compatibility with the gRPC version used. The latest
// support package version is 5.
@ -500,6 +572,6 @@ const (
)
// Version is the current grpc version.
const Version = "1.9.0"
const Version = "1.10.0"
const grpcUA = "grpc-go/" + Version

View File

@ -27,6 +27,8 @@ import (
"github.com/golang/protobuf/proto"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/encoding"
protoenc "google.golang.org/grpc/encoding/proto"
"google.golang.org/grpc/status"
perfpb "google.golang.org/grpc/test/codec_perf"
"google.golang.org/grpc/transport"
@ -110,7 +112,7 @@ func TestEncode(t *testing.T) {
}{
{nil, nil, []byte{0, 0, 0, 0, 0}, []byte{}, nil},
} {
hdr, data, err := encode(protoCodec{}, test.msg, nil, nil, nil)
hdr, data, err := encode(encoding.GetCodec(protoenc.Name), test.msg, nil, nil, nil)
if err != test.err || !bytes.Equal(hdr, test.hdr) || !bytes.Equal(data, test.data) {
t.Fatalf("encode(_, _, %v, _) = %v, %v, %v\nwant %v, %v, %v", test.cp, hdr, data, err, test.hdr, test.data, test.err)
}
@ -164,13 +166,14 @@ func TestToRPCErr(t *testing.T) {
// bmEncode benchmarks encoding a Protocol Buffer message containing mSize
// bytes.
func bmEncode(b *testing.B, mSize int) {
cdc := encoding.GetCodec(protoenc.Name)
msg := &perfpb.Buffer{Body: make([]byte, mSize)}
encodeHdr, encodeData, _ := encode(protoCodec{}, msg, nil, nil, nil)
encodeHdr, encodeData, _ := encode(cdc, msg, nil, nil, nil)
encodedSz := int64(len(encodeHdr) + len(encodeData))
b.ReportAllocs()
b.ResetTimer()
for i := 0; i < b.N; i++ {
encode(protoCodec{}, msg, nil, nil, nil)
encode(cdc, msg, nil, nil, nil)
}
b.SetBytes(encodedSz)
}

View File

@ -40,6 +40,7 @@ import (
"google.golang.org/grpc/codes"
"google.golang.org/grpc/credentials"
"google.golang.org/grpc/encoding"
"google.golang.org/grpc/encoding/proto"
"google.golang.org/grpc/grpclog"
"google.golang.org/grpc/internal"
"google.golang.org/grpc/keepalive"
@ -105,7 +106,7 @@ type Server struct {
type options struct {
creds credentials.TransportCredentials
codec Codec
codec baseCodec
cp Compressor
dc Decompressor
unaryInt UnaryServerInterceptor
@ -182,6 +183,8 @@ func KeepaliveEnforcementPolicy(kep keepalive.EnforcementPolicy) ServerOption {
}
// CustomCodec returns a ServerOption that sets a codec for message marshaling and unmarshaling.
//
// This will override any lookups by content-subtype for Codecs registered with RegisterCodec.
func CustomCodec(codec Codec) ServerOption {
return func(o *options) {
o.codec = codec
@ -327,10 +330,6 @@ func NewServer(opt ...ServerOption) *Server {
for _, o := range opt {
o(&opts)
}
if opts.codec == nil {
// Set the default codec.
opts.codec = protoCodec{}
}
s := &Server{
lis: make(map[net.Listener]bool),
opts: opts,
@ -695,7 +694,7 @@ func (s *Server) serveUsingHandler(conn net.Conn) {
// available through grpc-go's HTTP/2 server, and it is currently EXPERIMENTAL
// and subject to change.
func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
st, err := transport.NewServerHandlerTransport(w, r)
st, err := transport.NewServerHandlerTransport(w, r, s.opts.statsHandler)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
@ -759,7 +758,7 @@ func (s *Server) sendResponse(t transport.ServerTransport, stream *transport.Str
if s.opts.statsHandler != nil {
outPayload = &stats.OutPayload{}
}
hdr, data, err := encode(s.opts.codec, msg, cp, outPayload, comp)
hdr, data, err := encode(s.getCodec(stream.ContentSubtype()), msg, cp, outPayload, comp)
if err != nil {
grpclog.Errorln("grpc: server failed to encode response: ", err)
return err
@ -904,7 +903,7 @@ func (s *Server) processUnaryRPC(t transport.ServerTransport, stream *transport.
// java implementation.
return status.Errorf(codes.ResourceExhausted, "grpc: received message larger than max (%d vs. %d)", len(req), s.opts.maxReceiveMessageSize)
}
if err := s.opts.codec.Unmarshal(req, v); err != nil {
if err := s.getCodec(stream.ContentSubtype()).Unmarshal(req, v); err != nil {
return status.Errorf(codes.Internal, "grpc: error unmarshalling request: %v", err)
}
if inPayload != nil {
@ -996,7 +995,7 @@ func (s *Server) processStreamingRPC(t transport.ServerTransport, stream *transp
t: t,
s: stream,
p: &parser{r: stream},
codec: s.opts.codec,
codec: s.getCodec(stream.ContentSubtype()),
maxReceiveMessageSize: s.opts.maxReceiveMessageSize,
maxSendMessageSize: s.opts.maxSendMessageSize,
trInfo: trInfo,
@ -1262,6 +1261,22 @@ func init() {
}
}
// contentSubtype must be lowercase
// cannot return nil
func (s *Server) getCodec(contentSubtype string) baseCodec {
if s.opts.codec != nil {
return s.opts.codec
}
if contentSubtype == "" {
return encoding.GetCodec(proto.Name)
}
codec := encoding.GetCodec(contentSubtype)
if codec == nil {
return encoding.GetCodec(proto.Name)
}
return codec
}
// SetHeader sets the header metadata.
// When called multiple times, all the provided metadata will be merged.
// All the metadata will be sent out when one of the following happens:

View File

@ -256,11 +256,10 @@ const (
)
type rpcConfig struct {
count int // Number of requests and responses for streaming RPCs.
success bool // Whether the RPC should succeed or return error.
failfast bool
callType rpcType // Type of RPC.
noLastRecv bool // Whether to call recv for io.EOF. When true, last recv won't be called. Only valid for streaming RPCs.
count int // Number of requests and responses for streaming RPCs.
success bool // Whether the RPC should succeed or return error.
failfast bool
callType rpcType // Type of RPC.
}
func (te *test) doUnaryCall(c *rpcConfig) (*testpb.SimpleRequest, *testpb.SimpleResponse, error) {
@ -313,14 +312,8 @@ func (te *test) doFullDuplexCallRoundtrip(c *rpcConfig) ([]*testpb.SimpleRequest
if err = stream.CloseSend(); err != nil && err != io.EOF {
return reqs, resps, err
}
if !c.noLastRecv {
if _, err = stream.Recv(); err != io.EOF {
return reqs, resps, err
}
} else {
// In the case of not calling the last recv, sleep to avoid
// returning too fast to miss the remaining stats (InTrailer and End).
time.Sleep(time.Second)
if _, err = stream.Recv(); err != io.EOF {
return reqs, resps, err
}
return reqs, resps, nil
@ -651,7 +644,7 @@ func checkEnd(t *testing.T, d *gotData, e *expectedData) {
actual, ok := status.FromError(st.Error)
if !ok {
t.Fatalf("expected st.Error to be a statusError, got %T", st.Error)
t.Fatalf("expected st.Error to be a statusError, got %v (type %T)", st.Error, st.Error)
}
expectedStatus, _ := status.FromError(e.err)
@ -1222,20 +1215,6 @@ func TestClientStatsFullDuplexRPCError(t *testing.T) {
})
}
// If the user doesn't call the last recv() on clientStream.
func TestClientStatsFullDuplexRPCNotCallingLastRecv(t *testing.T) {
count := 1
testClientStats(t, &testConfig{compress: "gzip"}, &rpcConfig{count: count, success: true, failfast: false, callType: fullDuplexStreamRPC, noLastRecv: true}, map[int]*checkFuncWithCount{
begin: {checkBegin, 1},
outHeader: {checkOutHeader, 1},
outPayload: {checkOutPayload, count},
inHeader: {checkInHeader, 1},
inPayload: {checkInPayload, count},
inTrailer: {checkInTrailer, 1},
end: {checkEnd, 1},
})
}
func TestTags(t *testing.T) {
b := []byte{5, 2, 4, 3, 1}
ctx := stats.SetTags(context.Background(), b)

View File

@ -120,7 +120,8 @@ func FromProto(s *spb.Status) *Status {
}
// FromError returns a Status representing err if it was produced from this
// package, otherwise it returns nil, false.
// package. Otherwise, ok is false and a Status is returned with codes.Unknown
// and the original error message.
func FromError(err error) (s *Status, ok bool) {
if err == nil {
return &Status{s: &spb.Status{Code: int32(codes.OK)}}, true
@ -128,7 +129,14 @@ func FromError(err error) (s *Status, ok bool) {
if se, ok := err.(*statusError); ok {
return se.status(), true
}
return nil, false
return New(codes.Unknown, err.Error()), false
}
// Convert is a convenience function which removes the need to handle the
// boolean return value from FromError.
func Convert(err error) *Status {
s, _ := FromError(err)
return s
}
// WithDetails returns a new status with the provided details messages appended to the status.

View File

@ -119,6 +119,33 @@ func TestFromErrorOK(t *testing.T) {
}
}
func TestFromErrorUnknownError(t *testing.T) {
code, message := codes.Unknown, "unknown error"
err := errors.New("unknown error")
s, ok := FromError(err)
if ok || s.Code() != code || s.Message() != message {
t.Fatalf("FromError(%v) = %v, %v; want <Code()=%s, Message()=%q>, false", err, s, ok, code, message)
}
}
func TestConvertKnownError(t *testing.T) {
code, message := codes.Internal, "test description"
err := Error(code, message)
s := Convert(err)
if s.Code() != code || s.Message() != message {
t.Fatalf("Convert(%v) = %v; want <Code()=%s, Message()=%q>", err, s, code, message)
}
}
func TestConvertUnknownError(t *testing.T) {
code, message := codes.Unknown, "unknown error"
err := errors.New("unknown error")
s := Convert(err)
if s.Code() != code || s.Message() != message {
t.Fatalf("Convert(%v) = %v; want <Code()=%s, Message()=%q>", err, s, code, message)
}
}
func TestStatus_ErrorDetails(t *testing.T) {
tests := []struct {
code codes.Code

View File

@ -30,7 +30,6 @@ import (
"google.golang.org/grpc/codes"
"google.golang.org/grpc/encoding"
"google.golang.org/grpc/metadata"
"google.golang.org/grpc/peer"
"google.golang.org/grpc/stats"
"google.golang.org/grpc/status"
"google.golang.org/grpc/transport"
@ -51,6 +50,8 @@ type StreamDesc struct {
}
// Stream defines the common interface a client or server stream has to satisfy.
//
// All errors returned from Stream are compatible with the status package.
type Stream interface {
// Context returns the context for this stream.
Context() context.Context
@ -89,8 +90,9 @@ type ClientStream interface {
// Stream.SendMsg() may return a non-nil error when something wrong happens sending
// the request. The returned error indicates the status of this sending, not the final
// status of the RPC.
// Always call Stream.RecvMsg() to get the final status if you care about the status of
// the RPC.
//
// Always call Stream.RecvMsg() to drain the stream and get the final
// status, otherwise there could be leaked resources.
Stream
}
@ -112,26 +114,28 @@ func NewClientStream(ctx context.Context, desc *StreamDesc, cc *ClientConn, meth
}
func newClientStream(ctx context.Context, desc *StreamDesc, cc *ClientConn, method string, opts ...CallOption) (_ ClientStream, err error) {
var (
t transport.ClientTransport
s *transport.Stream
done func(balancer.DoneInfo)
cancel context.CancelFunc
)
c := defaultCallInfo()
mc := cc.GetMethodConfig(method)
if mc.WaitForReady != nil {
c.failFast = !*mc.WaitForReady
}
// Possible context leak:
// The cancel function for the child context we create will only be called
// when RecvMsg returns a non-nil error, if the ClientConn is closed, or if
// an error is generated by SendMsg.
// https://github.com/grpc/grpc-go/issues/1818.
var cancel context.CancelFunc
if mc.Timeout != nil && *mc.Timeout >= 0 {
ctx, cancel = context.WithTimeout(ctx, *mc.Timeout)
defer func() {
if err != nil {
cancel()
}
}()
} else {
ctx, cancel = context.WithCancel(ctx)
}
defer func() {
if err != nil {
cancel()
}
}()
opts = append(cc.dopts.callOptions, opts...)
for _, o := range opts {
@ -141,6 +145,9 @@ func newClientStream(ctx context.Context, desc *StreamDesc, cc *ClientConn, meth
}
c.maxSendMessageSize = getMaxSize(mc.MaxReqSize, c.maxSendMessageSize, defaultClientMaxSendMessageSize)
c.maxReceiveMessageSize = getMaxSize(mc.MaxRespSize, c.maxReceiveMessageSize, defaultClientMaxReceiveMessageSize)
if err := setCallInfoCodec(c); err != nil {
return nil, err
}
callHdr := &transport.CallHdr{
Host: cc.authority,
@ -149,7 +156,8 @@ func newClientStream(ctx context.Context, desc *StreamDesc, cc *ClientConn, meth
// so we don't flush the header.
// If it's client streaming, the user may never send a request or send it any
// time soon, so we ask the transport to flush the header.
Flush: desc.ClientStreams,
Flush: desc.ClientStreams,
ContentSubtype: c.contentSubtype,
}
// Set our outgoing compression according to the UseCompressor CallOption, if
@ -214,6 +222,11 @@ func newClientStream(ctx context.Context, desc *StreamDesc, cc *ClientConn, meth
}()
}
var (
t transport.ClientTransport
s *transport.Stream
done func(balancer.DoneInfo)
)
for {
// Check to make sure the context has expired. This will prevent us from
// looping forever if an error occurs for wait-for-ready RPCs where no data
@ -232,14 +245,7 @@ func newClientStream(ctx context.Context, desc *StreamDesc, cc *ClientConn, meth
s, err = t.NewStream(ctx, callHdr)
if err != nil {
if done != nil {
doneInfo := balancer.DoneInfo{Err: err}
if _, ok := err.(transport.ConnectionError); ok {
// If error is connection error, transport was sending data on wire,
// and we are not sure if anything has been sent on wire.
// If error is not connection error, we are sure nothing has been sent.
doneInfo.BytesSent = true
}
done(doneInfo)
done(balancer.DoneInfo{Err: err})
done = nil
}
// In the event of any error from NewStream, we never attempted to write
@ -253,15 +259,12 @@ func newClientStream(ctx context.Context, desc *StreamDesc, cc *ClientConn, meth
break
}
// Set callInfo.peer object from stream's context.
if peer, ok := peer.FromContext(s.Context()); ok {
c.peer = peer
}
c.stream = s
cs := &clientStream{
opts: opts,
c: c,
desc: desc,
codec: cc.dopts.codec,
codec: c.codec,
cp: cp,
dc: cc.dopts.dc,
comp: comp,
@ -278,29 +281,21 @@ func newClientStream(ctx context.Context, desc *StreamDesc, cc *ClientConn, meth
statsCtx: ctx,
statsHandler: cc.dopts.copts.StatsHandler,
}
// Listen on s.Context().Done() to detect cancellation and s.Done() to detect
// normal termination when there is no pending I/O operations on this stream.
go func() {
select {
case <-t.Error():
// Incur transport error, simply exit.
case <-cc.ctx.Done():
cs.finish(ErrClientConnClosing)
cs.closeTransportStream(ErrClientConnClosing)
case <-s.Done():
// TODO: The trace of the RPC is terminated here when there is no pending
// I/O, which is probably not the optimal solution.
cs.finish(s.Status().Err())
cs.closeTransportStream(nil)
case <-s.GoAway():
cs.finish(errConnDrain)
cs.closeTransportStream(errConnDrain)
case <-s.Context().Done():
err := s.Context().Err()
cs.finish(err)
cs.closeTransportStream(transport.ContextErr(err))
}
}()
if desc != unaryStreamDesc {
// Listen on cc and stream contexts to cleanup when the user closes the
// ClientConn or cancels the stream context. In all other cases, an error
// should already be injected into the recv buffer by the transport, which
// the client will eventually receive, and then we will cancel the stream's
// context in clientStream.finish.
go func() {
select {
case <-cc.ctx.Done():
cs.finish(ErrClientConnClosing)
case <-ctx.Done():
cs.finish(toRPCErr(s.Context().Err()))
}
}()
}
return cs, nil
}
@ -313,20 +308,22 @@ type clientStream struct {
p *parser
desc *StreamDesc
codec Codec
codec baseCodec
cp Compressor
dc Decompressor
comp encoding.Compressor
decomp encoding.Compressor
decompSet bool
// cancel is only called when RecvMsg() returns non-nil error, which means
// the stream finishes with error or with io.EOF.
cancel context.CancelFunc
tracing bool // set to EnableTracing when the clientStream is created.
mu sync.Mutex
done func(balancer.DoneInfo)
closed bool
sentLast bool // sent an end stream
finished bool
// trInfo.tr is set when the clientStream is created (if EnableTracing is true),
// and is set to nil when the clientStream's finish method is called.
@ -346,9 +343,8 @@ func (cs *clientStream) Context() context.Context {
func (cs *clientStream) Header() (metadata.MD, error) {
m, err := cs.s.Header()
if err != nil {
if _, ok := err.(transport.ConnectionError); !ok {
cs.closeTransportStream(err)
}
err = toRPCErr(err)
cs.finish(err)
}
return m, err
}
@ -358,6 +354,7 @@ func (cs *clientStream) Trailer() metadata.MD {
}
func (cs *clientStream) SendMsg(m interface{}) (err error) {
// TODO: Check cs.sentLast and error if we already ended the stream.
if cs.tracing {
cs.mu.Lock()
if cs.trInfo.tr != nil {
@ -368,26 +365,18 @@ func (cs *clientStream) SendMsg(m interface{}) (err error) {
// TODO Investigate how to signal the stats handling party.
// generate error stats if err != nil && err != io.EOF?
defer func() {
if err != nil {
// For non-client-streaming RPCs, we return nil instead of EOF on success
// because the generated code requires it. finish is not called; RecvMsg()
// will call it with the stream's status independently.
if err == io.EOF && !cs.desc.ClientStreams {
err = nil
}
if err != nil && err != io.EOF {
// Call finish for errors generated by this SendMsg call. (Transport
// errors are converted to an io.EOF error below; the real error will be
// returned from RecvMsg eventually in that case.)
cs.finish(err)
}
if err == nil {
return
}
if err == io.EOF {
// Specialize the process for server streaming. SendMsg is only called
// once when creating the stream object. io.EOF needs to be skipped when
// the rpc is early finished (before the stream object is created.).
// TODO: It is probably better to move this into the generated code.
if !cs.desc.ClientStreams && cs.desc.ServerStreams {
err = nil
}
return
}
if _, ok := err.(transport.ConnectionError); !ok {
cs.closeTransportStream(err)
}
err = toRPCErr(err)
}()
var outPayload *stats.OutPayload
if cs.statsHandler != nil {
@ -399,30 +388,36 @@ func (cs *clientStream) SendMsg(m interface{}) (err error) {
if err != nil {
return err
}
if cs.c.maxSendMessageSize == nil {
return status.Errorf(codes.Internal, "callInfo maxSendMessageSize field uninitialized(nil)")
}
if len(data) > *cs.c.maxSendMessageSize {
return status.Errorf(codes.ResourceExhausted, "trying to send message larger than max (%d vs. %d)", len(data), *cs.c.maxSendMessageSize)
}
err = cs.t.Write(cs.s, hdr, data, &transport.Options{Last: false})
if err == nil && outPayload != nil {
outPayload.SentTime = time.Now()
cs.statsHandler.HandleRPC(cs.statsCtx, outPayload)
if !cs.desc.ClientStreams {
cs.sentLast = true
}
return err
err = cs.t.Write(cs.s, hdr, data, &transport.Options{Last: !cs.desc.ClientStreams})
if err == nil {
if outPayload != nil {
outPayload.SentTime = time.Now()
cs.statsHandler.HandleRPC(cs.statsCtx, outPayload)
}
return nil
}
return io.EOF
}
func (cs *clientStream) RecvMsg(m interface{}) (err error) {
defer func() {
if err != nil || !cs.desc.ServerStreams {
// err != nil or non-server-streaming indicates end of stream.
cs.finish(err)
}
}()
var inPayload *stats.InPayload
if cs.statsHandler != nil {
inPayload = &stats.InPayload{
Client: true,
}
}
if cs.c.maxReceiveMessageSize == nil {
return status.Errorf(codes.Internal, "callInfo maxReceiveMessageSize field uninitialized(nil)")
}
if !cs.decompSet {
// Block until we receive headers containing received message encoding.
if ct := cs.s.RecvCompress(); ct != "" && ct != encoding.Identity {
@ -440,98 +435,67 @@ func (cs *clientStream) RecvMsg(m interface{}) (err error) {
cs.decompSet = true
}
err = recv(cs.p, cs.codec, cs.s, cs.dc, m, *cs.c.maxReceiveMessageSize, inPayload, cs.decomp)
defer func() {
// err != nil indicates the termination of the stream.
if err != nil {
cs.finish(err)
}
}()
if err == nil {
if cs.tracing {
cs.mu.Lock()
if cs.trInfo.tr != nil {
cs.trInfo.tr.LazyLog(&payload{sent: false, msg: m}, true)
}
cs.mu.Unlock()
}
if inPayload != nil {
cs.statsHandler.HandleRPC(cs.statsCtx, inPayload)
}
if !cs.desc.ClientStreams || cs.desc.ServerStreams {
return
}
// Special handling for client streaming rpc.
// This recv expects EOF or errors, so we don't collect inPayload.
if cs.c.maxReceiveMessageSize == nil {
return status.Errorf(codes.Internal, "callInfo maxReceiveMessageSize field uninitialized(nil)")
}
err = recv(cs.p, cs.codec, cs.s, cs.dc, m, *cs.c.maxReceiveMessageSize, nil, cs.decomp)
cs.closeTransportStream(err)
if err == nil {
return toRPCErr(errors.New("grpc: client streaming protocol violation: get <nil>, want <EOF>"))
}
if err != nil {
if err == io.EOF {
if se := cs.s.Status().Err(); se != nil {
return se
if statusErr := cs.s.Status().Err(); statusErr != nil {
return statusErr
}
cs.finish(err)
return nil
return io.EOF // indicates successful end of stream.
}
return toRPCErr(err)
}
if _, ok := err.(transport.ConnectionError); !ok {
cs.closeTransportStream(err)
if cs.tracing {
cs.mu.Lock()
if cs.trInfo.tr != nil {
cs.trInfo.tr.LazyLog(&payload{sent: false, msg: m}, true)
}
cs.mu.Unlock()
}
if inPayload != nil {
cs.statsHandler.HandleRPC(cs.statsCtx, inPayload)
}
if cs.desc.ServerStreams {
// Subsequent messages should be received by subsequent RecvMsg calls.
return nil
}
// Special handling for non-server-stream rpcs.
// This recv expects EOF or errors, so we don't collect inPayload.
err = recv(cs.p, cs.codec, cs.s, cs.dc, m, *cs.c.maxReceiveMessageSize, nil, cs.decomp)
if err == nil {
return toRPCErr(errors.New("grpc: client streaming protocol violation: get <nil>, want <EOF>"))
}
if err == io.EOF {
if statusErr := cs.s.Status().Err(); statusErr != nil {
return statusErr
}
// Returns io.EOF to indicate the end of the stream.
return
return cs.s.Status().Err() // non-server streaming Recv returns nil on success
}
return toRPCErr(err)
}
func (cs *clientStream) CloseSend() (err error) {
err = cs.t.Write(cs.s, nil, nil, &transport.Options{Last: true})
defer func() {
if err != nil {
cs.finish(err)
}
}()
if err == nil || err == io.EOF {
func (cs *clientStream) CloseSend() error {
if cs.sentLast {
return nil
}
if _, ok := err.(transport.ConnectionError); !ok {
cs.closeTransportStream(err)
}
err = toRPCErr(err)
return
}
func (cs *clientStream) closeTransportStream(err error) {
cs.mu.Lock()
if cs.closed {
cs.mu.Unlock()
return
}
cs.closed = true
cs.mu.Unlock()
cs.t.CloseStream(cs.s, err)
cs.sentLast = true
cs.t.Write(cs.s, nil, nil, &transport.Options{Last: true})
// We ignore errors from Write and always return nil here. Any error it
// would return would also be returned by a subsequent RecvMsg call, and the
// user is supposed to always finish the stream by calling RecvMsg until it
// returns err != nil.
return nil
}
func (cs *clientStream) finish(err error) {
if err == io.EOF {
// Ending a stream with EOF indicates a success.
err = nil
}
cs.mu.Lock()
defer cs.mu.Unlock()
if cs.finished {
return
}
cs.finished = true
defer func() {
if cs.cancel != nil {
cs.cancel()
}
}()
cs.t.CloseStream(cs.s, err)
for _, o := range cs.opts {
o.after(cs.c)
}
@ -547,18 +511,16 @@ func (cs *clientStream) finish(err error) {
end := &stats.End{
Client: true,
EndTime: time.Now(),
}
if err != io.EOF {
// end.Error is nil if the RPC finished successfully.
end.Error = toRPCErr(err)
Error: err,
}
cs.statsHandler.HandleRPC(cs.statsCtx, end)
}
cs.cancel()
if !cs.tracing {
return
}
if cs.trInfo.tr != nil {
if err == nil || err == io.EOF {
if err == nil {
cs.trInfo.tr.LazyPrintf("RPC: [OK]")
} else {
cs.trInfo.tr.LazyPrintf("RPC: [%v]", err)
@ -593,7 +555,7 @@ type serverStream struct {
t transport.ServerTransport
s *transport.Stream
p *parser
codec Codec
codec baseCodec
cp Compressor
dc Decompressor

View File

@ -705,7 +705,7 @@ func (te *test) clientConn() *grpc.ClientConn {
opts = append(opts, grpc.WithPerRPCCredentials(te.perRPCCreds))
}
if te.customCodec != nil {
opts = append(opts, grpc.WithCodec(te.customCodec))
opts = append(opts, grpc.WithDefaultCallOptions(grpc.CallCustomCodec(te.customCodec)))
}
if !te.nonBlockingDial && te.srvAddr != "" {
// Only do a blocking dial if server is up.
@ -925,7 +925,7 @@ func testServerGoAwayPendingRPC(t *testing.T, e env) {
cc := te.clientConn()
tc := testpb.NewTestServiceClient(cc)
ctx, cancel := context.WithCancel(context.Background())
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
stream, err := tc.FullDuplexCall(ctx, grpc.FailFast(false))
if err != nil {
t.Fatalf("%v.FullDuplexCall(_) = _, %v, want <nil>", tc, err)
@ -1164,10 +1164,22 @@ func testConcurrentServerStopAndGoAway(t *testing.T, e env) {
ResponseParameters: respParam,
Payload: payload,
}
if err := stream.Send(req); err == nil {
if _, err := stream.Recv(); err == nil {
t.Fatalf("%v.Recv() = _, %v, want _, <nil>", stream, err)
sendStart := time.Now()
for {
if err := stream.Send(req); err == io.EOF {
// stream.Send should eventually send io.EOF
break
} else if err != nil {
// Send should never return a transport-level error.
t.Fatalf("stream.Send(%v) = %v; want <nil or io.EOF>", req, err)
}
if time.Since(sendStart) > 2*time.Second {
t.Fatalf("stream.Send(_) did not return io.EOF after 2s")
}
time.Sleep(time.Millisecond)
}
if _, err := stream.Recv(); err == nil || err == io.EOF {
t.Fatalf("%v.Recv() = _, %v, want _, <non-nil, non-EOF>", stream, err)
}
<-ch
awaitNewConnLogOutput()
@ -1190,7 +1202,9 @@ func testClientConnCloseAfterGoAwayWithActiveStream(t *testing.T, e env) {
cc := te.clientConn()
tc := testpb.NewTestServiceClient(cc)
if _, err := tc.FullDuplexCall(context.Background()); err != nil {
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
if _, err := tc.FullDuplexCall(ctx); err != nil {
t.Fatalf("%v.FullDuplexCall(_) = _, %v, want _, <nil>", tc, err)
}
done := make(chan struct{})
@ -1808,6 +1822,80 @@ func TestServiceConfigMaxMsgSize(t *testing.T) {
}
}
// Reading from a streaming RPC may fail with context canceled if timeout was
// set by service config (https://github.com/grpc/grpc-go/issues/1818). This
// test makes sure read from streaming RPC doesn't fail in this case.
func TestStreamingRPCWithTimeoutInServiceConfigRecv(t *testing.T) {
te := testServiceConfigSetup(t, tcpClearRREnv)
te.startServer(&testServer{security: tcpClearRREnv.security})
defer te.tearDown()
r, rcleanup := manual.GenerateAndRegisterManualResolver()
defer rcleanup()
te.resolverScheme = r.Scheme()
te.nonBlockingDial = true
fmt.Println("1")
cc := te.clientConn()
fmt.Println("10")
tc := testpb.NewTestServiceClient(cc)
r.NewAddress([]resolver.Address{{Addr: te.srvAddr}})
r.NewServiceConfig(`{
"methodConfig": [
{
"name": [
{
"service": "grpc.testing.TestService",
"method": "FullDuplexCall"
}
],
"waitForReady": true,
"timeout": "10s"
}
]
}`)
// Make sure service config has been processed by grpc.
for {
if cc.GetMethodConfig("/grpc.testing.TestService/FullDuplexCall").Timeout != nil {
break
}
time.Sleep(time.Millisecond)
}
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
stream, err := tc.FullDuplexCall(ctx, grpc.FailFast(false))
if err != nil {
t.Fatalf("TestService/FullDuplexCall(_) = _, %v, want <nil>", err)
}
payload, err := newPayload(testpb.PayloadType_COMPRESSABLE, 0)
if err != nil {
t.Fatalf("failed to newPayload: %v", err)
}
req := &testpb.StreamingOutputCallRequest{
ResponseType: testpb.PayloadType_COMPRESSABLE,
ResponseParameters: []*testpb.ResponseParameters{{Size: 0}},
Payload: payload,
}
if err := stream.Send(req); err != nil {
t.Fatalf("stream.Send(%v) = %v, want <nil>", req, err)
}
stream.CloseSend()
time.Sleep(time.Second)
// Sleep 1 second before recv to make sure the final status is received
// before the recv.
if _, err := stream.Recv(); err != nil {
t.Fatalf("stream.Recv = _, %v, want _, <nil>", err)
}
// Keep reading to drain the stream.
for {
if _, err := stream.Recv(); err != nil {
break
}
}
}
func TestMaxMsgSizeClientDefault(t *testing.T) {
defer leakcheck.Check(t)
for _, e := range listTestEnv() {
@ -2260,24 +2348,6 @@ func testHealthCheckServingStatus(t *testing.T, e env) {
}
func TestErrorChanNoIO(t *testing.T) {
defer leakcheck.Check(t)
for _, e := range listTestEnv() {
testErrorChanNoIO(t, e)
}
}
func testErrorChanNoIO(t *testing.T, e env) {
te := newTest(t, e)
te.startServer(&testServer{security: e.security})
defer te.tearDown()
tc := testpb.NewTestServiceClient(te.clientConn())
if _, err := tc.FullDuplexCall(context.Background()); err != nil {
t.Fatalf("%v.FullDuplexCall(_) = _, %v, want <nil>", tc, err)
}
}
func TestEmptyUnaryWithUserAgent(t *testing.T) {
defer leakcheck.Check(t)
for _, e := range listTestEnv() {
@ -2607,6 +2677,7 @@ func testMetadataUnaryRPC(t *testing.T, e env) {
delete(header, "trailer") // RFC 2616 says server SHOULD (but optional) declare trailers
delete(header, "date") // the Date header is also optional
delete(header, "user-agent")
delete(header, "content-type")
}
if !reflect.DeepEqual(header, testMetadata) {
t.Fatalf("Received header metadata %v, want %v", header, testMetadata)
@ -2723,6 +2794,7 @@ func testSetAndSendHeaderUnaryRPC(t *testing.T, e env) {
t.Fatalf("TestService.UnaryCall(%v, _, _, _) = _, %v; want _, <nil>", ctx, err)
}
delete(header, "user-agent")
delete(header, "content-type")
expectedHeader := metadata.Join(testMetadata, testMetadata2)
if !reflect.DeepEqual(header, expectedHeader) {
t.Fatalf("Received header metadata %v, want %v", header, expectedHeader)
@ -2767,6 +2839,7 @@ func testMultipleSetHeaderUnaryRPC(t *testing.T, e env) {
t.Fatalf("TestService.UnaryCall(%v, _, _, _) = _, %v; want _, <nil>", ctx, err)
}
delete(header, "user-agent")
delete(header, "content-type")
expectedHeader := metadata.Join(testMetadata, testMetadata2)
if !reflect.DeepEqual(header, expectedHeader) {
t.Fatalf("Received header metadata %v, want %v", header, expectedHeader)
@ -2810,6 +2883,7 @@ func testMultipleSetHeaderUnaryRPCError(t *testing.T, e env) {
t.Fatalf("TestService.UnaryCall(%v, _, _, _) = _, %v; want _, <non-nil>", ctx, err)
}
delete(header, "user-agent")
delete(header, "content-type")
expectedHeader := metadata.Join(testMetadata, testMetadata2)
if !reflect.DeepEqual(header, expectedHeader) {
t.Fatalf("Received header metadata %v, want %v", header, expectedHeader)
@ -2854,6 +2928,7 @@ func testSetAndSendHeaderStreamingRPC(t *testing.T, e env) {
t.Fatalf("%v.Header() = _, %v, want _, <nil>", stream, err)
}
delete(header, "user-agent")
delete(header, "content-type")
expectedHeader := metadata.Join(testMetadata, testMetadata2)
if !reflect.DeepEqual(header, expectedHeader) {
t.Fatalf("Received header metadata %v, want %v", header, expectedHeader)
@ -2917,6 +2992,7 @@ func testMultipleSetHeaderStreamingRPC(t *testing.T, e env) {
t.Fatalf("%v.Header() = _, %v, want _, <nil>", stream, err)
}
delete(header, "user-agent")
delete(header, "content-type")
expectedHeader := metadata.Join(testMetadata, testMetadata2)
if !reflect.DeepEqual(header, expectedHeader) {
t.Fatalf("Received header metadata %v, want %v", header, expectedHeader)
@ -2975,6 +3051,7 @@ func testMultipleSetHeaderStreamingRPCError(t *testing.T, e env) {
t.Fatalf("%v.Header() = _, %v, want _, <nil>", stream, err)
}
delete(header, "user-agent")
delete(header, "content-type")
expectedHeader := metadata.Join(testMetadata, testMetadata2)
if !reflect.DeepEqual(header, expectedHeader) {
t.Fatalf("Received header metadata %v, want %v", header, expectedHeader)
@ -3335,6 +3412,7 @@ func testMetadataStreamingRPC(t *testing.T, e env) {
}
delete(headerMD, "trailer") // ignore if present
delete(headerMD, "user-agent")
delete(headerMD, "content-type")
if err != nil || !reflect.DeepEqual(testMetadata, headerMD) {
t.Errorf("#1 %v.Header() = %v, %v, want %v, <nil>", stream, headerMD, err, testMetadata)
}
@ -3342,6 +3420,7 @@ func testMetadataStreamingRPC(t *testing.T, e env) {
headerMD, err = stream.Header()
delete(headerMD, "trailer") // ignore if present
delete(headerMD, "user-agent")
delete(headerMD, "content-type")
if err != nil || !reflect.DeepEqual(testMetadata, headerMD) {
t.Errorf("#2 %v.Header() = %v, %v, want %v, <nil>", stream, headerMD, err, testMetadata)
}
@ -3728,22 +3807,24 @@ func testStreamsQuotaRecovery(t *testing.T, e env) {
cc := te.clientConn()
tc := testpb.NewTestServiceClient(cc)
if _, err := tc.StreamingInputCall(context.Background()); err != nil {
t.Fatalf("%v.StreamingInputCall(_) = _, %v, want _, <nil>", tc, err)
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
if _, err := tc.StreamingInputCall(ctx); err != nil {
t.Fatalf("tc.StreamingInputCall(_) = _, %v, want _, <nil>", err)
}
// Loop until the new max stream setting is effective.
for {
ctx, cancel := context.WithTimeout(context.Background(), 50*time.Millisecond)
defer cancel()
_, err := tc.StreamingInputCall(ctx)
cancel()
if err == nil {
time.Sleep(50 * time.Millisecond)
time.Sleep(5 * time.Millisecond)
continue
}
if status.Code(err) == codes.DeadlineExceeded {
break
}
t.Fatalf("%v.StreamingInputCall(_) = _, %v, want _, %s", tc, err, codes.DeadlineExceeded)
t.Fatalf("tc.StreamingInputCall(_) = _, %v, want _, %s", err, codes.DeadlineExceeded)
}
var wg sync.WaitGroup
@ -3765,11 +3846,19 @@ func testStreamsQuotaRecovery(t *testing.T, e env) {
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Millisecond)
defer cancel()
if _, err := tc.UnaryCall(ctx, req, grpc.FailFast(false)); status.Code(err) != codes.DeadlineExceeded {
t.Errorf("TestService/UnaryCall(_, _) = _, %v, want _, %s", err, codes.DeadlineExceeded)
t.Errorf("tc.UnaryCall(_, _) = _, %v, want _, %s", err, codes.DeadlineExceeded)
}
}()
}
wg.Wait()
cancel()
// A new stream should be allowed after canceling the first one.
ctx, cancel = context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
if _, err := tc.StreamingInputCall(ctx); err != nil {
t.Fatalf("tc.StreamingInputCall(_) = _, %v, want _, %v", err, nil)
}
}
func TestCompressServerHasNoSupport(t *testing.T) {
@ -3807,23 +3896,6 @@ func testCompressServerHasNoSupport(t *testing.T, e env) {
if err != nil {
t.Fatalf("%v.FullDuplexCall(_) = _, %v, want <nil>", tc, err)
}
respParam := []*testpb.ResponseParameters{
{
Size: 31415,
},
}
payload, err = newPayload(testpb.PayloadType_COMPRESSABLE, int32(31415))
if err != nil {
t.Fatal(err)
}
sreq := &testpb.StreamingOutputCallRequest{
ResponseType: testpb.PayloadType_COMPRESSABLE,
ResponseParameters: respParam,
Payload: payload,
}
if err := stream.Send(sreq); err != nil {
t.Fatalf("%v.Send(%v) = %v, want <nil>", stream, sreq, err)
}
if _, err := stream.Recv(); err == nil || status.Code(err) != codes.Unimplemented {
t.Fatalf("%v.Recv() = %v, want error code %s", stream, err, codes.Unimplemented)
}
@ -4107,6 +4179,7 @@ type funcServer struct {
testpb.TestServiceServer
unaryCall func(ctx context.Context, in *testpb.SimpleRequest) (*testpb.SimpleResponse, error)
streamingInputCall func(stream testpb.TestService_StreamingInputCallServer) error
fullDuplexCall func(stream testpb.TestService_FullDuplexCallServer) error
}
func (s *funcServer) UnaryCall(ctx context.Context, in *testpb.SimpleRequest) (*testpb.SimpleResponse, error) {
@ -4117,6 +4190,10 @@ func (s *funcServer) StreamingInputCall(stream testpb.TestService_StreamingInput
return s.streamingInputCall(stream)
}
func (s *funcServer) FullDuplexCall(stream testpb.TestService_FullDuplexCallServer) error {
return s.fullDuplexCall(stream)
}
func TestClientRequestBodyErrorUnexpectedEOF(t *testing.T) {
defer leakcheck.Check(t)
for _, e := range listTestEnv() {
@ -4238,6 +4315,76 @@ func testClientRequestBodyErrorCancelStreamingInput(t *testing.T, e env) {
})
}
func TestClientResourceExhaustedCancelFullDuplex(t *testing.T) {
defer leakcheck.Check(t)
for _, e := range listTestEnv() {
if e.httpHandler {
// httpHandler write won't be blocked on flow control window.
continue
}
testClientResourceExhaustedCancelFullDuplex(t, e)
}
}
func testClientResourceExhaustedCancelFullDuplex(t *testing.T, e env) {
te := newTest(t, e)
recvErr := make(chan error, 1)
ts := &funcServer{fullDuplexCall: func(stream testpb.TestService_FullDuplexCallServer) error {
defer close(recvErr)
_, err := stream.Recv()
if err != nil {
return status.Errorf(codes.Internal, "stream.Recv() got error: %v, want <nil>", err)
}
// create a payload that's larger than the default flow control window.
payload, err := newPayload(testpb.PayloadType_COMPRESSABLE, 10)
if err != nil {
return err
}
resp := &testpb.StreamingOutputCallResponse{
Payload: payload,
}
ce := make(chan error)
go func() {
var err error
for {
if err = stream.Send(resp); err != nil {
break
}
}
ce <- err
}()
select {
case err = <-ce:
case <-time.After(10 * time.Second):
err = errors.New("10s timeout reached")
}
recvErr <- err
return err
}}
te.startServer(ts)
defer te.tearDown()
// set a low limit on receive message size to error with Resource Exhausted on
// client side when server send a large message.
te.maxClientReceiveMsgSize = newInt(10)
cc := te.clientConn()
tc := testpb.NewTestServiceClient(cc)
stream, err := tc.FullDuplexCall(context.Background())
if err != nil {
t.Fatalf("%v.FullDuplexCall(_) = _, %v, want <nil>", tc, err)
}
req := &testpb.StreamingOutputCallRequest{}
if err := stream.Send(req); err != nil {
t.Fatalf("%v.Send(%v) = %v, want <nil>", stream, req, err)
}
if _, err := stream.Recv(); status.Code(err) != codes.ResourceExhausted {
t.Fatalf("%v.Recv() = _, %v, want _, error code: %s", stream, err, codes.ResourceExhausted)
}
err = <-recvErr
if status.Code(err) != codes.Canceled {
t.Fatalf("server got error %v, want error code: %s", err, codes.Canceled)
}
}
type clientTimeoutCreds struct {
timeoutReturned bool
}
@ -4924,6 +5071,36 @@ func TestTapTimeout(t *testing.T) {
t.Fatalf("ss.client.EmptyCall(context.Background(), _) = %v, %v; want nil, <status with Code()=Canceled>", res, err)
}
}
}
func TestClientWriteFailsAfterServerClosesStream(t *testing.T) {
ss := &stubServer{
fullDuplexCall: func(stream testpb.TestService_FullDuplexCallServer) error {
return status.Errorf(codes.Internal, "")
},
}
sopts := []grpc.ServerOption{}
if err := ss.Start(sopts); err != nil {
t.Fatalf("Error starting endpoing server: %v", err)
}
defer ss.Stop()
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
stream, err := ss.client.FullDuplexCall(ctx)
if err != nil {
t.Fatalf("Error while creating stream: %v", err)
}
for {
if err := stream.Send(&testpb.StreamingOutputCallRequest{}); err == nil {
time.Sleep(5 * time.Millisecond)
} else if err == io.EOF {
break // Success.
} else {
t.Fatalf("stream.Send(_) = %v, want io.EOF", err)
}
}
}
type windowSizeConfig struct {
@ -5819,3 +5996,47 @@ func TestServeExitsWhenListenerClosed(t *testing.T) {
t.Fatalf("Serve did not return after %v", timeout)
}
}
func TestClientDoesntDeadlockWhileWritingErrornousLargeMessages(t *testing.T) {
defer leakcheck.Check(t)
for _, e := range listTestEnv() {
if e.httpHandler {
continue
}
testClientDoesntDeadlockWhileWritingErrornousLargeMessages(t, e)
}
}
func testClientDoesntDeadlockWhileWritingErrornousLargeMessages(t *testing.T, e env) {
te := newTest(t, e)
te.userAgent = testAppUA
smallSize := 1024
te.maxServerReceiveMsgSize = &smallSize
te.startServer(&testServer{security: e.security})
defer te.tearDown()
tc := testpb.NewTestServiceClient(te.clientConn())
payload, err := newPayload(testpb.PayloadType_COMPRESSABLE, 1048576)
if err != nil {
t.Fatal(err)
}
req := &testpb.SimpleRequest{
ResponseType: testpb.PayloadType_COMPRESSABLE,
Payload: payload,
}
var wg sync.WaitGroup
for i := 0; i < 10; i++ {
wg.Add(1)
go func() {
defer wg.Done()
for j := 0; j < 100; j++ {
ctx, cancel := context.WithDeadline(context.Background(), time.Now().Add(time.Second*10))
defer cancel()
if _, err := tc.UnaryCall(ctx, req); status.Code(err) != codes.ResourceExhausted {
t.Errorf("TestService/UnaryCall(_,_) = _. %v, want code: %s", err, codes.ResourceExhausted)
return
}
}
}()
}
wg.Wait()
}

View File

@ -40,20 +40,24 @@ import (
"google.golang.org/grpc/credentials"
"google.golang.org/grpc/metadata"
"google.golang.org/grpc/peer"
"google.golang.org/grpc/stats"
"google.golang.org/grpc/status"
)
// NewServerHandlerTransport returns a ServerTransport handling gRPC
// from inside an http.Handler. It requires that the http Server
// supports HTTP/2.
func NewServerHandlerTransport(w http.ResponseWriter, r *http.Request) (ServerTransport, error) {
func NewServerHandlerTransport(w http.ResponseWriter, r *http.Request, stats stats.Handler) (ServerTransport, error) {
if r.ProtoMajor != 2 {
return nil, errors.New("gRPC requires HTTP/2")
}
if r.Method != "POST" {
return nil, errors.New("invalid gRPC request method")
}
if !validContentType(r.Header.Get("Content-Type")) {
contentType := r.Header.Get("Content-Type")
// TODO: do we assume contentType is lowercase? we did before
contentSubtype, validContentType := contentSubtype(contentType)
if !validContentType {
return nil, errors.New("invalid gRPC request content-type")
}
if _, ok := w.(http.Flusher); !ok {
@ -64,10 +68,13 @@ func NewServerHandlerTransport(w http.ResponseWriter, r *http.Request) (ServerTr
}
st := &serverHandlerTransport{
rw: w,
req: r,
closedCh: make(chan struct{}),
writes: make(chan func()),
rw: w,
req: r,
closedCh: make(chan struct{}),
writes: make(chan func()),
contentType: contentType,
contentSubtype: contentSubtype,
stats: stats,
}
if v := r.Header.Get("grpc-timeout"); v != "" {
@ -79,7 +86,7 @@ func NewServerHandlerTransport(w http.ResponseWriter, r *http.Request) (ServerTr
st.timeout = to
}
var metakv []string
metakv := []string{"content-type", contentType}
if r.Host != "" {
metakv = append(metakv, ":authority", r.Host)
}
@ -126,6 +133,14 @@ type serverHandlerTransport struct {
// block concurrent WriteStatus calls
// e.g. grpc/(*serverStream).SendMsg/RecvMsg
writeStatusMu sync.Mutex
// we just mirror the request content-type
contentType string
// we store both contentType and contentSubtype so we don't keep recreating them
// TODO make sure this is consistent across handler_server and http2_server
contentSubtype string
stats stats.Handler
}
func (ht *serverHandlerTransport) Close() error {
@ -219,6 +234,9 @@ func (ht *serverHandlerTransport) WriteStatus(s *Stream, st *status.Status) erro
})
if err == nil { // transport has not been closed
if ht.stats != nil {
ht.stats.HandleRPC(s.Context(), &stats.OutTrailer{})
}
ht.Close()
close(ht.writes)
}
@ -235,7 +253,7 @@ func (ht *serverHandlerTransport) writeCommonHeaders(s *Stream) {
h := ht.rw.Header()
h["Date"] = nil // suppress Date to make tests happy; TODO: restore
h.Set("Content-Type", "application/grpc")
h.Set("Content-Type", ht.contentType)
// Predeclare trailers we'll set later in WriteStatus (after the body).
// This is a SHOULD in the HTTP RFC, and the way you add (known)
@ -263,7 +281,7 @@ func (ht *serverHandlerTransport) Write(s *Stream, hdr []byte, data []byte, opts
}
func (ht *serverHandlerTransport) WriteHeader(s *Stream, md metadata.MD) error {
return ht.do(func() {
err := ht.do(func() {
ht.writeCommonHeaders(s)
h := ht.rw.Header()
for k, vv := range md {
@ -279,6 +297,13 @@ func (ht *serverHandlerTransport) WriteHeader(s *Stream, md metadata.MD) error {
ht.rw.WriteHeader(200)
ht.rw.(http.Flusher).Flush()
})
if err == nil {
if ht.stats != nil {
ht.stats.HandleRPC(s.Context(), &stats.OutHeader{})
}
}
return err
}
func (ht *serverHandlerTransport) HandleStreams(startStream func(*Stream), traceCtx func(context.Context, string) context.Context) {
@ -313,13 +338,14 @@ func (ht *serverHandlerTransport) HandleStreams(startStream func(*Stream), trace
req := ht.req
s := &Stream{
id: 0, // irrelevant
requestRead: func(int) {},
cancel: cancel,
buf: newRecvBuffer(),
st: ht,
method: req.URL.Path,
recvCompress: req.Header.Get("grpc-encoding"),
id: 0, // irrelevant
requestRead: func(int) {},
cancel: cancel,
buf: newRecvBuffer(),
st: ht,
method: req.URL.Path,
recvCompress: req.Header.Get("grpc-encoding"),
contentSubtype: ht.contentSubtype,
}
pr := &peer.Peer{
Addr: ht.RemoteAddr(),
@ -330,6 +356,15 @@ func (ht *serverHandlerTransport) HandleStreams(startStream func(*Stream), trace
ctx = metadata.NewIncomingContext(ctx, ht.headerMD)
ctx = peer.NewContext(ctx, pr)
s.ctx = newContextWithStream(ctx, s)
if ht.stats != nil {
s.ctx = ht.stats.TagRPC(s.ctx, &stats.RPCTagInfo{FullMethodName: s.method})
inHeader := &stats.InHeader{
FullMethod: s.method,
RemoteAddr: ht.RemoteAddr(),
Compression: s.recvCompress,
}
ht.stats.HandleRPC(s.ctx, inHeader)
}
s.trReader = &transportReader{
reader: &recvBufferReader{ctx: s.ctx, recv: s.buf},
windowHandler: func(int) {},

View File

@ -199,9 +199,10 @@ func TestHandlerTransport_NewServerHandlerTransport(t *testing.T) {
},
check: func(ht *serverHandlerTransport, tt *testCase) error {
want := metadata.MD{
"meta-bar": {"bar-val1", "bar-val2"},
"user-agent": {"x/y a/b"},
"meta-foo": {"foo-val"},
"meta-bar": {"bar-val1", "bar-val2"},
"user-agent": {"x/y a/b"},
"meta-foo": {"foo-val"},
"content-type": {"application/grpc"},
}
if !reflect.DeepEqual(ht.headerMD, want) {
@ -217,7 +218,7 @@ func TestHandlerTransport_NewServerHandlerTransport(t *testing.T) {
if tt.modrw != nil {
rw = tt.modrw(rw)
}
got, gotErr := NewServerHandlerTransport(rw, tt.req)
got, gotErr := NewServerHandlerTransport(rw, tt.req, nil)
if (gotErr != nil) != (tt.wantErr != "") || (gotErr != nil && gotErr.Error() != tt.wantErr) {
t.Errorf("%s: error = %v; want %q", tt.name, gotErr, tt.wantErr)
continue
@ -271,7 +272,7 @@ func newHandleStreamTest(t *testing.T) *handleStreamTest {
Body: bodyr,
}
rw := newTestHandlerResponseWriter().(testHandlerResponseWriter)
ht, err := NewServerHandlerTransport(rw, req)
ht, err := NewServerHandlerTransport(rw, req, nil)
if err != nil {
t.Fatal(err)
}
@ -356,7 +357,7 @@ func TestHandlerTransport_HandleStreams_Timeout(t *testing.T) {
Body: bodyr,
}
rw := newTestHandlerResponseWriter().(testHandlerResponseWriter)
ht, err := NewServerHandlerTransport(rw, req)
ht, err := NewServerHandlerTransport(rw, req, nil)
if err != nil {
t.Fatal(err)
}

View File

@ -314,15 +314,16 @@ func newHTTP2Client(connectCtx, ctx context.Context, addr TargetInfo, opts Conne
func (t *http2Client) newStream(ctx context.Context, callHdr *CallHdr) *Stream {
// TODO(zhaoq): Handle uint32 overflow of Stream.id.
s := &Stream{
id: t.nextID,
done: make(chan struct{}),
goAway: make(chan struct{}),
method: callHdr.Method,
sendCompress: callHdr.SendCompress,
buf: newRecvBuffer(),
fc: &inFlow{limit: uint32(t.initialWindowSize)},
sendQuotaPool: newQuotaPool(int(t.streamSendQuota)),
headerChan: make(chan struct{}),
id: t.nextID,
done: make(chan struct{}),
goAway: make(chan struct{}),
method: callHdr.Method,
sendCompress: callHdr.SendCompress,
buf: newRecvBuffer(),
fc: &inFlow{limit: uint32(t.initialWindowSize)},
sendQuotaPool: newQuotaPool(int(t.streamSendQuota)),
headerChan: make(chan struct{}),
contentSubtype: callHdr.ContentSubtype,
}
t.nextID += 2
s.requestRead = func(n int) {
@ -380,7 +381,11 @@ func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (_ *Strea
for _, c := range t.creds {
data, err := c.GetRequestMetadata(ctx, audience)
if err != nil {
return nil, streamErrorf(codes.Internal, "transport: %v", err)
if _, ok := status.FromError(err); ok {
return nil, err
}
return nil, streamErrorf(codes.Unauthenticated, "transport: %v", err)
}
for k, v := range data {
// Capital header names are illegal in HTTP/2.
@ -434,7 +439,7 @@ func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (_ *Strea
headerFields = append(headerFields, hpack.HeaderField{Name: ":scheme", Value: t.scheme})
headerFields = append(headerFields, hpack.HeaderField{Name: ":path", Value: callHdr.Method})
headerFields = append(headerFields, hpack.HeaderField{Name: ":authority", Value: callHdr.Host})
headerFields = append(headerFields, hpack.HeaderField{Name: "content-type", Value: "application/grpc"})
headerFields = append(headerFields, hpack.HeaderField{Name: "content-type", Value: contentType(callHdr.ContentSubtype)})
headerFields = append(headerFields, hpack.HeaderField{Name: "user-agent", Value: t.userAgent})
headerFields = append(headerFields, hpack.HeaderField{Name: "te", Value: "trailers"})
@ -459,7 +464,22 @@ func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (_ *Strea
if b := stats.OutgoingTrace(ctx); b != nil {
headerFields = append(headerFields, hpack.HeaderField{Name: "grpc-trace-bin", Value: encodeBinHeader(b)})
}
if md, ok := metadata.FromOutgoingContext(ctx); ok {
if md, added, ok := metadata.FromOutgoingContextRaw(ctx); ok {
var k string
for _, vv := range added {
for i, v := range vv {
if i%2 == 0 {
k = v
continue
}
// HTTP doesn't allow you to set pseudoheaders after non pseudoheaders were set.
if isReservedHeader(k) {
continue
}
headerFields = append(headerFields, hpack.HeaderField{Name: strings.ToLower(k), Value: encodeMetadataHeader(k, v)})
}
}
for k, vv := range md {
// HTTP doesn't allow you to set pseudoheaders after non pseudoheaders were set.
if isReservedHeader(k) {
@ -576,7 +596,7 @@ func (t *http2Client) CloseStream(s *Stream, err error) {
}
s.state = streamDone
s.mu.Unlock()
if _, ok := err.(StreamError); ok {
if err != nil && !rstStream {
rstStream = true
rstError = http2.ErrCodeCancel
}
@ -645,6 +665,8 @@ func (t *http2Client) Write(s *Stream, hdr []byte, data []byte, opts *Options) e
select {
case <-s.ctx.Done():
return ContextErr(s.ctx.Err())
case <-s.done:
return io.EOF
case <-t.ctx.Done():
return ErrConnClosing
default:
@ -694,6 +716,8 @@ func (t *http2Client) Write(s *Stream, hdr []byte, data []byte, opts *Options) e
}
ltq, _, err := t.localSendQuota.get(size, s.waiters)
if err != nil {
// Add the acquired quota back to transport.
t.sendQuotaPool.add(tq)
return err
}
// even if ltq is smaller than size we don't adjust size since
@ -1110,16 +1134,17 @@ func (t *http2Client) operateHeaders(frame *http2.MetaHeadersFrame) {
}()
s.mu.Lock()
if !endStream {
s.recvCompress = state.encoding
}
if !s.headerDone {
if !endStream && len(state.mdata) > 0 {
s.header = state.mdata
if !endStream {
// Headers frame is not actually a trailers-only frame.
isHeader = true
s.recvCompress = state.encoding
if len(state.mdata) > 0 {
s.header = state.mdata
}
}
close(s.headerChan)
s.headerDone = true
isHeader = true
}
if !endStream || s.state == streamDone {
s.mu.Unlock()

View File

@ -281,12 +281,13 @@ func (t *http2Server) operateHeaders(frame *http2.MetaHeadersFrame, handle func(
buf := newRecvBuffer()
s := &Stream{
id: streamID,
st: t,
buf: buf,
fc: &inFlow{limit: uint32(t.initialWindowSize)},
recvCompress: state.encoding,
method: state.method,
id: streamID,
st: t,
buf: buf,
fc: &inFlow{limit: uint32(t.initialWindowSize)},
recvCompress: state.encoding,
method: state.method,
contentSubtype: state.contentSubtype,
}
if frame.StreamEnded() {
@ -730,7 +731,7 @@ func (t *http2Server) WriteHeader(s *Stream, md metadata.MD) error {
// first and create a slice of that exact size.
headerFields := make([]hpack.HeaderField, 0, 2) // at least :status, content-type will be there if none else.
headerFields = append(headerFields, hpack.HeaderField{Name: ":status", Value: "200"})
headerFields = append(headerFields, hpack.HeaderField{Name: "content-type", Value: "application/grpc"})
headerFields = append(headerFields, hpack.HeaderField{Name: "content-type", Value: contentType(s.contentSubtype)})
if s.sendCompress != "" {
headerFields = append(headerFields, hpack.HeaderField{Name: "grpc-encoding", Value: s.sendCompress})
}
@ -749,9 +750,9 @@ func (t *http2Server) WriteHeader(s *Stream, md metadata.MD) error {
endStream: false,
})
if t.stats != nil {
outHeader := &stats.OutHeader{
//WireLength: // TODO(mmukhi): Revisit this later, if needed.
}
// Note: WireLength is not set in outHeader.
// TODO(mmukhi): Revisit this later, if needed.
outHeader := &stats.OutHeader{}
t.stats.HandleRPC(s.Context(), outHeader)
}
return nil
@ -792,7 +793,7 @@ func (t *http2Server) WriteStatus(s *Stream, st *status.Status) error {
headerFields := make([]hpack.HeaderField, 0, 2) // grpc-status and grpc-message will be there if none else.
if !headersSent {
headerFields = append(headerFields, hpack.HeaderField{Name: ":status", Value: "200"})
headerFields = append(headerFields, hpack.HeaderField{Name: "content-type", Value: "application/grpc"})
headerFields = append(headerFields, hpack.HeaderField{Name: "content-type", Value: contentType(s.contentSubtype)})
}
headerFields = append(headerFields, hpack.HeaderField{Name: "grpc-status", Value: strconv.Itoa(int(st.Code()))})
headerFields = append(headerFields, hpack.HeaderField{Name: "grpc-message", Value: encodeGrpcMessage(st.Message())})
@ -842,10 +843,6 @@ func (t *http2Server) Write(s *Stream, hdr []byte, data []byte, opts *Options) e
var writeHeaderFrame bool
s.mu.Lock()
if s.state == streamDone {
s.mu.Unlock()
return streamErrorf(codes.Unknown, "the stream has been done")
}
if !s.headerOk {
writeHeaderFrame = true
}
@ -891,6 +888,8 @@ func (t *http2Server) Write(s *Stream, hdr []byte, data []byte, opts *Options) e
}
ltq, _, err := t.localSendQuota.get(size, s.waiters)
if err != nil {
// Add the acquired quota back to transport.
t.sendQuotaPool.add(tq)
return err
}
// even if ltq is smaller than size we don't adjust size since,

View File

@ -46,6 +46,12 @@ const (
// http2IOBufSize specifies the buffer size for sending frames.
defaultWriteBufSize = 32 * 1024
defaultReadBufSize = 32 * 1024
// baseContentType is the base content-type for gRPC. This is a valid
// content-type on it's own, but can also include a content-subtype such as
// "proto" as a suffix after "+" or ";". See
// https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests
// for more details.
baseContentType = "application/grpc"
)
var (
@ -111,9 +117,10 @@ type decodeState struct {
timeout time.Duration
method string
// key-value metadata map from the peer.
mdata map[string][]string
statsTags []byte
statsTrace []byte
mdata map[string][]string
statsTags []byte
statsTrace []byte
contentSubtype string
}
// isReservedHeader checks whether hdr belongs to HTTP2 headers
@ -149,17 +156,44 @@ func isWhitelistedPseudoHeader(hdr string) bool {
}
}
func validContentType(t string) bool {
e := "application/grpc"
if !strings.HasPrefix(t, e) {
return false
// contentSubtype returns the content-subtype for the given content-type. The
// given content-type must be a valid content-type that starts with
// "application/grpc". A content-subtype will follow "application/grpc" after a
// "+" or ";". See
// https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests for
// more details.
//
// If contentType is not a valid content-type for gRPC, the boolean
// will be false, otherwise true. If content-type == "application/grpc",
// "application/grpc+", or "application/grpc;", the boolean will be true,
// but no content-subtype will be returned.
//
// contentType is assumed to be lowercase already.
func contentSubtype(contentType string) (string, bool) {
if contentType == baseContentType {
return "", true
}
// Support variations on the content-type
// (e.g. "application/grpc+blah", "application/grpc;blah").
if len(t) > len(e) && t[len(e)] != '+' && t[len(e)] != ';' {
return false
if !strings.HasPrefix(contentType, baseContentType) {
return "", false
}
return true
// guaranteed since != baseContentType and has baseContentType prefix
switch contentType[len(baseContentType)] {
case '+', ';':
// this will return true for "application/grpc+" or "application/grpc;"
// which the previous validContentType function tested to be valid, so we
// just say that no content-subtype is specified in this case
return contentType[len(baseContentType)+1:], true
default:
return "", false
}
}
// contentSubtype is assumed to be lowercase
func contentType(contentSubtype string) string {
if contentSubtype == "" {
return baseContentType
}
return baseContentType + "+" + contentSubtype
}
func (d *decodeState) status() *status.Status {
@ -247,9 +281,16 @@ func (d *decodeState) addMetadata(k, v string) {
func (d *decodeState) processHeaderField(f hpack.HeaderField) error {
switch f.Name {
case "content-type":
if !validContentType(f.Value) {
contentSubtype, validContentType := contentSubtype(f.Value)
if !validContentType {
return streamErrorf(codes.FailedPrecondition, "transport: received the unexpected content-type %q", f.Value)
}
d.contentSubtype = contentSubtype
// TODO: do we want to propagate the whole content-type in the metadata,
// or come up with a way to just propagate the content-subtype if it was set?
// ie {"content-type": "application/grpc+proto"} or {"content-subtype": "proto"}
// in the metadata?
d.addMetadata(f.Name, f.Value)
case "grpc-encoding":
d.encoding = f.Value
case "grpc-status":

View File

@ -72,24 +72,25 @@ func TestTimeoutDecode(t *testing.T) {
}
}
func TestValidContentType(t *testing.T) {
func TestContentSubtype(t *testing.T) {
tests := []struct {
h string
want bool
contentType string
want string
wantValid bool
}{
{"application/grpc", true},
{"application/grpc+", true},
{"application/grpc+blah", true},
{"application/grpc;", true},
{"application/grpc;blah", true},
{"application/grpcd", false},
{"application/grpd", false},
{"application/grp", false},
{"application/grpc", "", true},
{"application/grpc+", "", true},
{"application/grpc+blah", "blah", true},
{"application/grpc;", "", true},
{"application/grpc;blah", "blah", true},
{"application/grpcd", "", false},
{"application/grpd", "", false},
{"application/grp", "", false},
}
for _, tt := range tests {
got := validContentType(tt.h)
if got != tt.want {
t.Errorf("validContentType(%q) = %v; want %v", tt.h, got, tt.want)
got, gotValid := contentSubtype(tt.contentType)
if got != tt.want || gotValid != tt.wantValid {
t.Errorf("contentSubtype(%q) = (%v, %v); want (%v, %v)", tt.contentType, got, gotValid, tt.want, tt.wantValid)
}
}
}

View File

@ -246,6 +246,10 @@ type Stream struct {
bytesReceived bool // indicates whether any bytes have been received on this stream
unprocessed bool // set if the server sends a refused stream or GOAWAY including this stream
// contentSubtype is the content-subtype for requests.
// this must be lowercase or the behavior is undefined.
contentSubtype string
}
func (s *Stream) waitOnHeader() error {
@ -321,6 +325,15 @@ func (s *Stream) ServerTransport() ServerTransport {
return s.st
}
// ContentSubtype returns the content-subtype for a request. For example, a
// content-subtype of "proto" will result in a content-type of
// "application/grpc+proto". This will always be lowercase. See
// https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests for
// more details.
func (s *Stream) ContentSubtype() string {
return s.contentSubtype
}
// Context returns the context of the stream.
func (s *Stream) Context() context.Context {
return s.ctx
@ -553,6 +566,14 @@ type CallHdr struct {
// for performance purposes.
// If it's false, new stream will never be flushed.
Flush bool
// ContentSubtype specifies the content-subtype for a request. For example, a
// content-subtype of "proto" will result in a content-type of
// "application/grpc+proto". The value of ContentSubtype must be all
// lowercase, otherwise the behavior is undefined. See
// https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests
// for more details.
ContentSubtype string
}
// ClientTransport is the common interface for all gRPC client-side transport
@ -676,13 +697,13 @@ func (e ConnectionError) Origin() error {
var (
// ErrConnClosing indicates that the transport is closing.
ErrConnClosing = connectionErrorf(true, nil, "transport is closing")
// errStreamDrain indicates that the stream is rejected by the server because
// the server stops accepting new RPCs.
// TODO: delete this error; it is no longer necessary.
errStreamDrain = streamErrorf(codes.Unavailable, "the server stops accepting new RPCs")
// errStreamDrain indicates that the stream is rejected because the
// connection is draining. This could be caused by goaway or balancer
// removing the address.
errStreamDrain = streamErrorf(codes.Unavailable, "the connection is draining")
// StatusGoAway indicates that the server sent a GOAWAY that included this
// stream's ID in unprocessed RPCs.
statusGoAway = status.New(codes.Unavailable, "the server stopped accepting new RPCs")
statusGoAway = status.New(codes.Unavailable, "the stream is rejected because server is draining the connection")
)
// TODO: See if we can replace StreamError with status package errors.