diff --git a/examples/internal/clients/abe/api/swagger.yaml b/examples/internal/clients/abe/api/swagger.yaml index f832a67cb4e..a0183d4028a 100644 --- a/examples/internal/clients/abe/api/swagger.yaml +++ b/examples/internal/clients/abe/api/swagger.yaml @@ -2685,6 +2685,7 @@ definitions: correlationId: type: "string" format: "uuid" + example: "2438ac3c-37eb-4902-adef-ed16b4431030" description: "Unique event identifier for server requests" title: "x-correlation-id" pattern: "^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$" diff --git a/examples/internal/clients/generateunboundmethods/.swagger-codegen/VERSION b/examples/internal/clients/generateunboundmethods/.swagger-codegen/VERSION index 87e5fea55f0..752a79ef362 100644 --- a/examples/internal/clients/generateunboundmethods/.swagger-codegen/VERSION +++ b/examples/internal/clients/generateunboundmethods/.swagger-codegen/VERSION @@ -1 +1 @@ -3.0.20 \ No newline at end of file +2.4.8 \ No newline at end of file diff --git a/examples/internal/clients/generateunboundmethods/api/swagger.yaml b/examples/internal/clients/generateunboundmethods/api/swagger.yaml index 03837c43259..d4d0099bccc 100644 --- a/examples/internal/clients/generateunboundmethods/api/swagger.yaml +++ b/examples/internal/clients/generateunboundmethods/api/swagger.yaml @@ -1,136 +1,121 @@ -openapi: 3.0.1 +--- +swagger: "2.0" info: - title: examples/internal/proto/examplepb/generate_unbound_methods.proto - description: |- - Generate Unannotated Methods Echo Service - Similar to echo_service.proto but without annotations and without external configuration. - - Generate Unannotated Methods Echo Service API consists of a single service which returns - a message. - version: version not set -servers: -- url: / + description: "Generate Unannotated Methods Echo Service\nSimilar to echo_service.proto\ + \ but without annotations and without external configuration.\n\nGenerate Unannotated\ + \ Methods Echo Service API consists of a single service which returns\na message." + version: "version not set" + title: "examples/internal/proto/examplepb/generate_unbound_methods.proto" +consumes: +- "application/json" +produces: +- "application/json" paths: /grpc.gateway.examples.internal.examplepb.GenerateUnboundMethodsEchoService/Echo: post: tags: - - GenerateUnboundMethodsEchoService - summary: Echo method receives a simple message and returns it. - description: |- - The message posted as the id parameter will also be - returned. - operationId: GenerateUnboundMethodsEchoService_Echo - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/examplepbGenerateUnboundMethodsSimpleMessage' + - "GenerateUnboundMethodsEchoService" + summary: "Echo method receives a simple message and returns it." + description: "The message posted as the id parameter will also be\nreturned." + operationId: "GenerateUnboundMethodsEchoService_Echo" + parameters: + - in: "body" + name: "body" required: true + schema: + $ref: "#/definitions/examplepbGenerateUnboundMethodsSimpleMessage" + x-exportParamName: "Body" responses: - "200": - description: A successful response. - content: - application/json: - schema: - $ref: '#/components/schemas/examplepbGenerateUnboundMethodsSimpleMessage' + 200: + description: "A successful response." + schema: + $ref: "#/definitions/examplepbGenerateUnboundMethodsSimpleMessage" default: - description: An unexpected error response. - content: - application/json: - schema: - $ref: '#/components/schemas/runtimeError' - x-codegen-request-body-name: body + description: "An unexpected error response." + schema: + $ref: "#/definitions/runtimeError" /grpc.gateway.examples.internal.examplepb.GenerateUnboundMethodsEchoService/EchoBody: post: tags: - - GenerateUnboundMethodsEchoService - summary: EchoBody method receives a simple message and returns it. - operationId: GenerateUnboundMethodsEchoService_EchoBody - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/examplepbGenerateUnboundMethodsSimpleMessage' + - "GenerateUnboundMethodsEchoService" + summary: "EchoBody method receives a simple message and returns it." + operationId: "GenerateUnboundMethodsEchoService_EchoBody" + parameters: + - in: "body" + name: "body" required: true + schema: + $ref: "#/definitions/examplepbGenerateUnboundMethodsSimpleMessage" + x-exportParamName: "Body" responses: - "200": - description: A successful response. - content: - application/json: - schema: - $ref: '#/components/schemas/examplepbGenerateUnboundMethodsSimpleMessage' + 200: + description: "A successful response." + schema: + $ref: "#/definitions/examplepbGenerateUnboundMethodsSimpleMessage" default: - description: An unexpected error response. - content: - application/json: - schema: - $ref: '#/components/schemas/runtimeError' - x-codegen-request-body-name: body + description: "An unexpected error response." + schema: + $ref: "#/definitions/runtimeError" /grpc.gateway.examples.internal.examplepb.GenerateUnboundMethodsEchoService/EchoDelete: post: tags: - - GenerateUnboundMethodsEchoService - summary: EchoDelete method receives a simple message and returns it. - operationId: GenerateUnboundMethodsEchoService_EchoDelete - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/examplepbGenerateUnboundMethodsSimpleMessage' + - "GenerateUnboundMethodsEchoService" + summary: "EchoDelete method receives a simple message and returns it." + operationId: "GenerateUnboundMethodsEchoService_EchoDelete" + parameters: + - in: "body" + name: "body" required: true + schema: + $ref: "#/definitions/examplepbGenerateUnboundMethodsSimpleMessage" + x-exportParamName: "Body" responses: - "200": - description: A successful response. - content: - application/json: - schema: - $ref: '#/components/schemas/examplepbGenerateUnboundMethodsSimpleMessage' + 200: + description: "A successful response." + schema: + $ref: "#/definitions/examplepbGenerateUnboundMethodsSimpleMessage" default: - description: An unexpected error response. - content: - application/json: - schema: - $ref: '#/components/schemas/runtimeError' - x-codegen-request-body-name: body -components: - schemas: - examplepbGenerateUnboundMethodsSimpleMessage: - type: object - properties: - id: - type: string - description: Id represents the message identifier. - num: - type: string - format: int64 - duration: - type: string - description: GenerateUnboundMethodsSimpleMessage represents a simple message - sent to the unannotated GenerateUnboundMethodsEchoService service. - example: - duration: duration - num: num - id: id - protobufAny: - type: object - properties: - type_url: - type: string - value: - pattern: ^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$ - type: string - format: byte - runtimeError: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - $ref: '#/components/schemas/protobufAny' + description: "An unexpected error response." + schema: + $ref: "#/definitions/runtimeError" +definitions: + examplepbGenerateUnboundMethodsSimpleMessage: + type: "object" + properties: + id: + type: "string" + description: "Id represents the message identifier." + num: + type: "string" + format: "int64" + duration: + type: "string" + description: "GenerateUnboundMethodsSimpleMessage represents a simple message\ + \ sent to the unannotated GenerateUnboundMethodsEchoService service." + example: + duration: "duration" + num: "num" + id: "id" + protobufAny: + type: "object" + properties: + type_url: + type: "string" + value: + type: "string" + format: "byte" + pattern: "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$" + runtimeError: + type: "object" + properties: + error: + type: "string" + code: + type: "integer" + format: "int32" + message: + type: "string" + details: + type: "array" + items: + $ref: "#/definitions/protobufAny" diff --git a/examples/internal/clients/generateunboundmethods/api_generate_unbound_methods_echo_service.go b/examples/internal/clients/generateunboundmethods/api_generate_unbound_methods_echo_service.go index 927741975e9..234a46b2cb1 100644 --- a/examples/internal/clients/generateunboundmethods/api_generate_unbound_methods_echo_service.go +++ b/examples/internal/clients/generateunboundmethods/api_generate_unbound_methods_echo_service.go @@ -1,4 +1,3 @@ - /* * examples/internal/proto/examplepb/generate_unbound_methods.proto * @@ -7,6 +6,7 @@ * API version: version not set * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) */ + package generateunboundmethods import ( @@ -23,11 +23,13 @@ var ( ) type GenerateUnboundMethodsEchoServiceApiService service -/* + +/* GenerateUnboundMethodsEchoServiceApiService Echo method receives a simple message and returns it. The message posted as the id parameter will also be returned. * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). * @param body + @return ExamplepbGenerateUnboundMethodsSimpleMessage */ func (a *GenerateUnboundMethodsEchoServiceApiService) GenerateUnboundMethodsEchoServiceEcho(ctx context.Context, body ExamplepbGenerateUnboundMethodsSimpleMessage) (ExamplepbGenerateUnboundMethodsSimpleMessage, *http.Response, error) { @@ -94,6 +96,7 @@ func (a *GenerateUnboundMethodsEchoServiceApiService) GenerateUnboundMethodsEcho body: localVarBody, error: localVarHttpResponse.Status, } + if localVarHttpResponse.StatusCode == 200 { var v ExamplepbGenerateUnboundMethodsSimpleMessage err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); @@ -104,6 +107,7 @@ func (a *GenerateUnboundMethodsEchoServiceApiService) GenerateUnboundMethodsEcho newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr } + if localVarHttpResponse.StatusCode == 0 { var v RuntimeError err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); @@ -114,15 +118,18 @@ func (a *GenerateUnboundMethodsEchoServiceApiService) GenerateUnboundMethodsEcho newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr } + return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } -/* + +/* GenerateUnboundMethodsEchoServiceApiService EchoBody method receives a simple message and returns it. * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). * @param body + @return ExamplepbGenerateUnboundMethodsSimpleMessage */ func (a *GenerateUnboundMethodsEchoServiceApiService) GenerateUnboundMethodsEchoServiceEchoBody(ctx context.Context, body ExamplepbGenerateUnboundMethodsSimpleMessage) (ExamplepbGenerateUnboundMethodsSimpleMessage, *http.Response, error) { @@ -189,6 +196,7 @@ func (a *GenerateUnboundMethodsEchoServiceApiService) GenerateUnboundMethodsEcho body: localVarBody, error: localVarHttpResponse.Status, } + if localVarHttpResponse.StatusCode == 200 { var v ExamplepbGenerateUnboundMethodsSimpleMessage err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); @@ -199,6 +207,7 @@ func (a *GenerateUnboundMethodsEchoServiceApiService) GenerateUnboundMethodsEcho newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr } + if localVarHttpResponse.StatusCode == 0 { var v RuntimeError err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); @@ -209,15 +218,18 @@ func (a *GenerateUnboundMethodsEchoServiceApiService) GenerateUnboundMethodsEcho newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr } + return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } -/* + +/* GenerateUnboundMethodsEchoServiceApiService EchoDelete method receives a simple message and returns it. * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). * @param body + @return ExamplepbGenerateUnboundMethodsSimpleMessage */ func (a *GenerateUnboundMethodsEchoServiceApiService) GenerateUnboundMethodsEchoServiceEchoDelete(ctx context.Context, body ExamplepbGenerateUnboundMethodsSimpleMessage) (ExamplepbGenerateUnboundMethodsSimpleMessage, *http.Response, error) { @@ -284,6 +296,7 @@ func (a *GenerateUnboundMethodsEchoServiceApiService) GenerateUnboundMethodsEcho body: localVarBody, error: localVarHttpResponse.Status, } + if localVarHttpResponse.StatusCode == 200 { var v ExamplepbGenerateUnboundMethodsSimpleMessage err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); @@ -294,6 +307,7 @@ func (a *GenerateUnboundMethodsEchoServiceApiService) GenerateUnboundMethodsEcho newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr } + if localVarHttpResponse.StatusCode == 0 { var v RuntimeError err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); @@ -304,6 +318,7 @@ func (a *GenerateUnboundMethodsEchoServiceApiService) GenerateUnboundMethodsEcho newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr } + return localVarReturnValue, localVarHttpResponse, newErr } diff --git a/examples/internal/clients/generateunboundmethods/client.go b/examples/internal/clients/generateunboundmethods/client.go index 58fa91d1a08..1c8138048ea 100644 --- a/examples/internal/clients/generateunboundmethods/client.go +++ b/examples/internal/clients/generateunboundmethods/client.go @@ -6,6 +6,7 @@ * API version: version not set * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) */ + package generateunboundmethods import ( @@ -180,7 +181,7 @@ func (c *APIClient) prepareRequest( } // add form parameters and file if available. - if strings.HasPrefix(headerParams["Content-Type"], "multipart/form-data") && len(formParams) > 0 || (len(fileBytes) > 0 && fileName != "") { + if len(formParams) > 0 || (len(fileBytes) > 0 && fileName != "") { if body != nil { return nil, errors.New("Cannot specify postBody and multipart form at the same time.") } @@ -219,16 +220,6 @@ func (c *APIClient) prepareRequest( w.Close() } - if strings.HasPrefix(headerParams["Content-Type"], "application/x-www-form-urlencoded") && len(formParams) > 0 { - if body != nil { - return nil, errors.New("Cannot specify postBody and x-www-form-urlencoded form at the same time.") - } - body = &bytes.Buffer{} - body.WriteString(formParams.Encode()) - // Set Content-Length - headerParams["Content-Length"] = fmt.Sprintf("%d", body.Len()) - } - // Setup path and query parameters url, err := url.Parse(path) if err != nil { @@ -470,4 +461,4 @@ func (e GenericSwaggerError) Body() []byte { // Model returns the unpacked model of the error func (e GenericSwaggerError) Model() interface{} { return e.model -} +} \ No newline at end of file diff --git a/examples/internal/clients/generateunboundmethods/configuration.go b/examples/internal/clients/generateunboundmethods/configuration.go index edbdbb9919d..1a0022dd7d8 100644 --- a/examples/internal/clients/generateunboundmethods/configuration.go +++ b/examples/internal/clients/generateunboundmethods/configuration.go @@ -6,6 +6,7 @@ * API version: version not set * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) */ + package generateunboundmethods import ( @@ -59,7 +60,7 @@ type Configuration struct { func NewConfiguration() *Configuration { cfg := &Configuration{ - BasePath: "/", + BasePath: "https://localhost", DefaultHeader: make(map[string]string), UserAgent: "Swagger-Codegen/1.0.0/go", } diff --git a/examples/internal/clients/generateunboundmethods/docs/ExamplepbGenerateUnboundMethodsSimpleMessage.md b/examples/internal/clients/generateunboundmethods/docs/ExamplepbGenerateUnboundMethodsSimpleMessage.md index fdb3935b3b7..aba65365948 100644 --- a/examples/internal/clients/generateunboundmethods/docs/ExamplepbGenerateUnboundMethodsSimpleMessage.md +++ b/examples/internal/clients/generateunboundmethods/docs/ExamplepbGenerateUnboundMethodsSimpleMessage.md @@ -9,3 +9,4 @@ Name | Type | Description | Notes [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/examples/internal/clients/generateunboundmethods/docs/GenerateUnboundMethodsEchoServiceApi.md b/examples/internal/clients/generateunboundmethods/docs/GenerateUnboundMethodsEchoServiceApi.md index 373fcf12782..69224a6fb85 100644 --- a/examples/internal/clients/generateunboundmethods/docs/GenerateUnboundMethodsEchoServiceApi.md +++ b/examples/internal/clients/generateunboundmethods/docs/GenerateUnboundMethodsEchoServiceApi.md @@ -1,6 +1,6 @@ -# {{classname}} +# \GenerateUnboundMethodsEchoServiceApi -All URIs are relative to */* +All URIs are relative to *https://localhost* Method | HTTP request | Description ------------- | ------------- | ------------- @@ -8,6 +8,7 @@ Method | HTTP request | Description [**GenerateUnboundMethodsEchoServiceEchoBody**](GenerateUnboundMethodsEchoServiceApi.md#GenerateUnboundMethodsEchoServiceEchoBody) | **Post** /grpc.gateway.examples.internal.examplepb.GenerateUnboundMethodsEchoService/EchoBody | EchoBody method receives a simple message and returns it. [**GenerateUnboundMethodsEchoServiceEchoDelete**](GenerateUnboundMethodsEchoServiceApi.md#GenerateUnboundMethodsEchoServiceEchoDelete) | **Post** /grpc.gateway.examples.internal.examplepb.GenerateUnboundMethodsEchoService/EchoDelete | EchoDelete method receives a simple message and returns it. + # **GenerateUnboundMethodsEchoServiceEcho** > ExamplepbGenerateUnboundMethodsSimpleMessage GenerateUnboundMethodsEchoServiceEcho(ctx, body) Echo method receives a simple message and returns it. diff --git a/examples/internal/clients/generateunboundmethods/docs/ProtobufAny.md b/examples/internal/clients/generateunboundmethods/docs/ProtobufAny.md index 490ce47d181..8305460df3c 100644 --- a/examples/internal/clients/generateunboundmethods/docs/ProtobufAny.md +++ b/examples/internal/clients/generateunboundmethods/docs/ProtobufAny.md @@ -8,3 +8,4 @@ Name | Type | Description | Notes [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/examples/internal/clients/generateunboundmethods/docs/RuntimeError.md b/examples/internal/clients/generateunboundmethods/docs/RuntimeError.md index 6451b933d00..664dd90b514 100644 --- a/examples/internal/clients/generateunboundmethods/docs/RuntimeError.md +++ b/examples/internal/clients/generateunboundmethods/docs/RuntimeError.md @@ -10,3 +10,4 @@ Name | Type | Description | Notes [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/examples/internal/clients/generateunboundmethods/model_examplepb_generate_unbound_methods_simple_message.go b/examples/internal/clients/generateunboundmethods/model_examplepb_generate_unbound_methods_simple_message.go index b35840b9220..9f884625983 100644 --- a/examples/internal/clients/generateunboundmethods/model_examplepb_generate_unbound_methods_simple_message.go +++ b/examples/internal/clients/generateunboundmethods/model_examplepb_generate_unbound_methods_simple_message.go @@ -6,6 +6,7 @@ * API version: version not set * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) */ + package generateunboundmethods // GenerateUnboundMethodsSimpleMessage represents a simple message sent to the unannotated GenerateUnboundMethodsEchoService service. diff --git a/examples/internal/clients/generateunboundmethods/model_protobuf_any.go b/examples/internal/clients/generateunboundmethods/model_protobuf_any.go index a168f42d281..773d87bae06 100644 --- a/examples/internal/clients/generateunboundmethods/model_protobuf_any.go +++ b/examples/internal/clients/generateunboundmethods/model_protobuf_any.go @@ -6,6 +6,7 @@ * API version: version not set * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) */ + package generateunboundmethods type ProtobufAny struct { diff --git a/examples/internal/clients/generateunboundmethods/model_runtime_error.go b/examples/internal/clients/generateunboundmethods/model_runtime_error.go index e06904e29c9..ba80e2376c9 100644 --- a/examples/internal/clients/generateunboundmethods/model_runtime_error.go +++ b/examples/internal/clients/generateunboundmethods/model_runtime_error.go @@ -6,6 +6,7 @@ * API version: version not set * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) */ + package generateunboundmethods type RuntimeError struct { diff --git a/examples/internal/clients/generateunboundmethods/response.go b/examples/internal/clients/generateunboundmethods/response.go index e0729288127..a4a4c064884 100644 --- a/examples/internal/clients/generateunboundmethods/response.go +++ b/examples/internal/clients/generateunboundmethods/response.go @@ -6,6 +6,7 @@ * API version: version not set * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) */ + package generateunboundmethods import ( diff --git a/examples/internal/proto/examplepb/a_bit_of_everything.pb.go b/examples/internal/proto/examplepb/a_bit_of_everything.pb.go index 94ca23686c1..22ccd5ffead 100644 --- a/examples/internal/proto/examplepb/a_bit_of_everything.pb.go +++ b/examples/internal/proto/examplepb/a_bit_of_everything.pb.go @@ -1054,267 +1054,268 @@ func init() { } var fileDescriptor_e6ccf6cab3ab66ab = []byte{ - // 4153 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x7a, 0x5d, 0x6c, 0x1b, 0xc7, - 0x76, 0xbf, 0x86, 0xd4, 0xe7, 0xc8, 0xfa, 0x1a, 0x59, 0xb6, 0x4c, 0x2b, 0xf1, 0x64, 0xe3, 0x7b, - 0x43, 0x33, 0x26, 0x29, 0xad, 0xe8, 0xd8, 0xa2, 0x6f, 0x6e, 0xb2, 0x94, 0x64, 0x47, 0xb6, 0x23, - 0xdb, 0x6b, 0xc7, 0x37, 0xb1, 0xe1, 0xc8, 0x4b, 0xee, 0x50, 0xdc, 0x88, 0xdc, 0xd9, 0xec, 0xce, - 0xca, 0xa2, 0xf5, 0x27, 0xfe, 0xe9, 0xf7, 0x45, 0x5a, 0xf4, 0x83, 0xfd, 0x44, 0xd3, 0x00, 0x45, - 0xd0, 0x02, 0xc5, 0x45, 0x51, 0xf4, 0xa5, 0x0f, 0x45, 0x1f, 0xee, 0x53, 0x71, 0x1f, 0xfa, 0x96, - 0x16, 0x17, 0x28, 0xfa, 0xd4, 0xa2, 0x0f, 0x45, 0xd1, 0xb7, 0x02, 0x01, 0xfa, 0x70, 0x81, 0x62, - 0x66, 0x77, 0xa9, 0x5d, 0x7e, 0x58, 0xa2, 0xe5, 0x22, 0xd7, 0x0f, 0xd6, 0xce, 0xcc, 0x99, 0x73, - 0x7e, 0xe7, 0xcc, 0x99, 0x39, 0xe7, 0x0c, 0x07, 0x5e, 0x25, 0x7b, 0x5a, 0xcd, 0xaa, 0x12, 0x27, - 0x6b, 0x98, 0x8c, 0xd8, 0xa6, 0x56, 0xcd, 0x5a, 0x36, 0x65, 0x34, 0xeb, 0xf7, 0x5b, 0xc5, 0xac, - 0xb6, 0x55, 0x34, 0xd8, 0x16, 0x2d, 0x6f, 0x91, 0x5d, 0x62, 0xd7, 0x59, 0xc5, 0x30, 0xb7, 0x33, - 0x82, 0x06, 0x25, 0xb7, 0x6d, 0xab, 0x94, 0xd9, 0xd6, 0x18, 0x79, 0xaa, 0xd5, 0x33, 0x01, 0xa7, - 0x4c, 0xc0, 0x29, 0xd3, 0xe2, 0x91, 0x58, 0xd8, 0xa6, 0x74, 0xbb, 0x4a, 0xb2, 0x9a, 0x65, 0x64, - 0x35, 0xd3, 0xa4, 0x4c, 0x63, 0x06, 0x35, 0x1d, 0x8f, 0x4f, 0x02, 0xfb, 0xa3, 0xa2, 0x55, 0x74, - 0xcb, 0xd9, 0xb2, 0x41, 0xaa, 0xfa, 0x56, 0x4d, 0x73, 0x76, 0x7c, 0x8a, 0xb3, 0xed, 0x14, 0xa4, - 0x66, 0xb1, 0xba, 0x3f, 0xf8, 0x6a, 0xfb, 0xa0, 0xee, 0xda, 0x82, 0x7f, 0xaf, 0xf1, 0xa7, 0xb6, - 0x66, 0x59, 0xc4, 0x0e, 0xc4, 0x2f, 0xf6, 0xb2, 0x81, 0xa5, 0xb1, 0x0a, 0x31, 0xdd, 0x9a, 0xf8, - 0xd8, 0xe2, 0x5f, 0xfe, 0x8c, 0x0b, 0xbd, 0x66, 0x38, 0x6e, 0x31, 0x5b, 0x23, 0x8e, 0xa3, 0x6d, - 0x13, 0x9f, 0x34, 0xf5, 0x1c, 0x52, 0xb9, 0x8d, 0xf6, 0x5c, 0x3b, 0x50, 0x66, 0xd4, 0x88, 0xc3, - 0xb4, 0x9a, 0xe5, 0x13, 0x5c, 0x14, 0x7f, 0x4a, 0xe9, 0x6d, 0x62, 0xa6, 0x9d, 0xa7, 0xda, 0xf6, - 0x36, 0xb1, 0xb3, 0xd4, 0x12, 0xa6, 0xec, 0x34, 0xab, 0xf4, 0x47, 0x31, 0x38, 0xb1, 0x6e, 0xdb, - 0xd4, 0x56, 0x89, 0x63, 0x51, 0xd3, 0x21, 0xe8, 0x6f, 0x01, 0x9c, 0x28, 0x51, 0xdb, 0x26, 0x55, - 0x41, 0xb8, 0xa1, 0xcf, 0x03, 0x0c, 0x92, 0x63, 0x85, 0x26, 0x68, 0x2a, 0xbf, 0x09, 0x52, 0xd3, - 0x7b, 0xe9, 0xd0, 0x68, 0xda, 0xd0, 0xe5, 0x37, 0x3f, 0x30, 0x8d, 0x4f, 0x5d, 0x82, 0xc9, 0x2e, - 0x31, 0x19, 0x36, 0x74, 0x62, 0x32, 0xa3, 0x6c, 0x10, 0x1b, 0x97, 0xa9, 0x8d, 0x1d, 0x62, 0xef, - 0x12, 0x1b, 0xdb, 0xe4, 0x53, 0x97, 0x38, 0xcc, 0xf9, 0x1c, 0xac, 0x7f, 0xfc, 0x68, 0x31, 0xbd, - 0xa2, 0xa4, 0xaf, 0x3d, 0xde, 0xbf, 0xd2, 0x48, 0xb7, 0xbe, 0x73, 0x8d, 0x74, 0xae, 0xd5, 0x58, - 0x6e, 0xa4, 0x1f, 0x5d, 0x59, 0x51, 0x0a, 0x8f, 0x23, 0x3d, 0xc1, 0xf7, 0x92, 0xdc, 0x38, 0xff, - 0x55, 0x6c, 0xd0, 0x75, 0x0d, 0x5d, 0x8d, 0x22, 0x45, 0x37, 0xe1, 0x10, 0xe1, 0xca, 0xcc, 0xc7, - 0x30, 0x48, 0x8e, 0xcb, 0x97, 0x32, 0x47, 0x75, 0xbe, 0x8c, 0xb0, 0xc1, 0xed, 0xe2, 0x27, 0xa4, - 0xc4, 0x54, 0x8f, 0x87, 0xf4, 0xa7, 0x00, 0x8e, 0x87, 0xba, 0xd1, 0xbb, 0x70, 0xb0, 0x44, 0x75, - 0x22, 0xcc, 0x31, 0x54, 0xb8, 0xd8, 0x54, 0x2e, 0xa4, 0x44, 0x87, 0x3c, 0x11, 0xd8, 0x0e, 0xf3, - 0xe6, 0xe7, 0x60, 0x44, 0xa8, 0xf8, 0xf8, 0xfc, 0x57, 0xb1, 0x11, 0x2e, 0x69, 0x9b, 0xd8, 0xaa, - 0x20, 0x44, 0xb7, 0xe1, 0x88, 0xbf, 0x98, 0x02, 0xe0, 0x58, 0xe1, 0x52, 0x53, 0x91, 0x53, 0x41, - 0x9f, 0x3c, 0xdd, 0xe2, 0xe3, 0xf7, 0x7c, 0x0e, 0x4e, 0x7e, 0xfc, 0x48, 0x4b, 0x3f, 0x53, 0xd2, - 0x0f, 0x39, 0xc3, 0xfd, 0xa5, 0x8b, 0x78, 0x59, 0x6e, 0x9c, 0x57, 0x83, 0x19, 0xd2, 0xbf, 0x2c, - 0xc0, 0x69, 0xa5, 0x60, 0xb0, 0xdb, 0xe5, 0xf5, 0xd6, 0xbe, 0x43, 0x65, 0x38, 0xe1, 0x18, 0xe6, - 0x76, 0x95, 0x6c, 0x99, 0xc4, 0x61, 0x44, 0x9f, 0x3f, 0x23, 0x8c, 0xa1, 0x1c, 0xdd, 0x18, 0xed, - 0x2c, 0x33, 0x9b, 0x82, 0x91, 0x7a, 0xc2, 0xe3, 0xeb, 0xb5, 0x50, 0x05, 0x8a, 0x35, 0xf0, 0xdd, - 0xe3, 0x7e, 0x53, 0xb9, 0xfb, 0x19, 0x00, 0x9f, 0x83, 0x9b, 0x8f, 0xb4, 0x74, 0x59, 0x49, 0x5f, - 0x13, 0x88, 0xf9, 0x12, 0x87, 0x9a, 0xb9, 0x7e, 0x9a, 0x4b, 0x72, 0x43, 0x15, 0x12, 0xd0, 0x47, - 0x70, 0xd8, 0x57, 0x25, 0x86, 0xe3, 0x2f, 0x47, 0x15, 0x9f, 0x21, 0xba, 0x01, 0xc7, 0xcb, 0x55, - 0xaa, 0xb1, 0xad, 0x5d, 0xad, 0xea, 0x92, 0xf9, 0x38, 0x06, 0xc9, 0x58, 0xe1, 0x42, 0x53, 0xf9, - 0xae, 0x3c, 0x73, 0x8d, 0xf7, 0x63, 0xd1, 0x8f, 0xc5, 0x61, 0x93, 0x8f, 0x2f, 0x66, 0xe4, 0xaf, - 0x41, 0x78, 0x82, 0x0a, 0x45, 0xe3, 0x01, 0xff, 0x46, 0xaf, 0xc1, 0x13, 0x3a, 0x75, 0x8b, 0x55, - 0xe2, 0x33, 0x1b, 0xc4, 0x20, 0x09, 0xd4, 0x71, 0xaf, 0xcf, 0x23, 0x39, 0x07, 0xc7, 0x0d, 0x93, - 0xbd, 0x95, 0xf3, 0x29, 0x86, 0x30, 0x48, 0xc6, 0x55, 0x28, 0xba, 0x5a, 0x3c, 0xdc, 0x30, 0xc5, - 0x30, 0x06, 0xc9, 0x41, 0x75, 0xdc, 0x0d, 0x91, 0x78, 0x3c, 0x96, 0x65, 0x9f, 0x62, 0x84, 0xbb, - 0xa3, 0xe0, 0xb1, 0x2c, 0x7b, 0x04, 0xaf, 0xc3, 0x89, 0xb2, 0xb1, 0x47, 0xf4, 0x16, 0x93, 0x51, - 0x0c, 0x92, 0xc3, 0xea, 0x09, 0xbf, 0x33, 0x4a, 0xd4, 0xe2, 0x33, 0x86, 0x41, 0x72, 0xc4, 0x27, - 0x0a, 0x38, 0xbd, 0x02, 0x61, 0x91, 0xd2, 0xaa, 0x4f, 0x01, 0x31, 0x48, 0x8e, 0xaa, 0x63, 0xbc, - 0xa7, 0x05, 0xd6, 0x61, 0xb6, 0x61, 0x6e, 0xfb, 0x04, 0xe3, 0xdc, 0x13, 0xd4, 0x71, 0xaf, 0xaf, - 0x05, 0xb6, 0x58, 0x67, 0xc4, 0xf1, 0x29, 0x5e, 0xc1, 0x20, 0x79, 0x42, 0x85, 0xa2, 0x2b, 0xa2, - 0x70, 0x0b, 0xc6, 0x04, 0x06, 0xc9, 0x09, 0x4f, 0xe1, 0x00, 0xc5, 0x7d, 0x08, 0xf9, 0xb9, 0xea, - 0x13, 0x4c, 0x62, 0x90, 0x9c, 0xec, 0x67, 0x6b, 0x6f, 0xba, 0x35, 0x62, 0x1b, 0xa5, 0x75, 0xd3, - 0xad, 0xa9, 0x63, 0x9c, 0x91, 0xc7, 0xf5, 0x23, 0x38, 0xd5, 0x3a, 0xb2, 0x7d, 0xd6, 0xaf, 0x0a, - 0xd6, 0x4b, 0x87, 0xb1, 0x0e, 0x8e, 0xfc, 0xcc, 0x1d, 0x8d, 0x55, 0x04, 0xdb, 0x09, 0xcb, 0xff, - 0xf2, 0x58, 0xff, 0x3f, 0x78, 0xca, 0x73, 0xaf, 0xad, 0x76, 0x09, 0xe7, 0x84, 0x84, 0xeb, 0x47, - 0x96, 0xf0, 0xbe, 0xb7, 0xd1, 0x03, 0x41, 0xbe, 0xf7, 0xb6, 0xe4, 0xce, 0x9a, 0x91, 0xb6, 0x27, - 0xfd, 0x3b, 0x70, 0xd2, 0x89, 0x2e, 0xed, 0x14, 0x06, 0xc9, 0x29, 0x75, 0xc2, 0x89, 0xac, 0x6d, - 0x8b, 0xac, 0xe5, 0x26, 0xd3, 0x18, 0x24, 0xa7, 0x03, 0xb2, 0x90, 0x43, 0x3a, 0xe1, 0xf5, 0x99, - 0xc1, 0x20, 0x39, 0xa3, 0x8e, 0x3b, 0xa1, 0xf5, 0xf1, 0x49, 0x5a, 0x7c, 0x10, 0x06, 0x49, 0xe4, - 0x91, 0x04, 0x5c, 0x64, 0x38, 0x67, 0x13, 0x8b, 0x68, 0xdc, 0x26, 0x11, 0x97, 0x99, 0xc5, 0xf1, - 0xe4, 0x98, 0x3a, 0x1b, 0x0c, 0xde, 0x0b, 0xb9, 0xce, 0x0a, 0x1c, 0xa7, 0x26, 0xe1, 0x39, 0x05, - 0x8f, 0xe3, 0xf3, 0x27, 0xc5, 0x29, 0x76, 0x2a, 0xe3, 0xc5, 0xbf, 0x4c, 0x10, 0xff, 0x32, 0xeb, - 0x7c, 0xf4, 0xbd, 0x01, 0x15, 0x0a, 0x62, 0xd1, 0x42, 0xaf, 0xc3, 0x13, 0xde, 0x54, 0x4f, 0xd6, - 0xfc, 0x1c, 0x77, 0xcc, 0xf7, 0x06, 0x54, 0x8f, 0xa1, 0x27, 0x04, 0x11, 0x38, 0x56, 0xd3, 0x2c, - 0x1f, 0xc7, 0x29, 0x71, 0xb0, 0xbc, 0x77, 0x8c, 0x83, 0xe5, 0x7d, 0xcd, 0x12, 0xb8, 0xd7, 0x4d, - 0x66, 0xd7, 0xd5, 0xd1, 0x9a, 0xdf, 0x44, 0xbf, 0x00, 0xe0, 0x6c, 0x8d, 0xe7, 0x12, 0x6d, 0x9a, - 0x9f, 0x16, 0x12, 0xef, 0x1e, 0x4f, 0xa2, 0x15, 0x31, 0x99, 0x27, 0x7a, 0xa6, 0xd6, 0xde, 0x1f, - 0xc6, 0xe0, 0x3b, 0xa6, 0x87, 0x61, 0xfe, 0x25, 0x61, 0xf0, 0xdc, 0xb2, 0x13, 0x43, 0xa8, 0x1f, - 0xe5, 0xe1, 0xbc, 0x49, 0xcd, 0x55, 0x6a, 0xf2, 0x34, 0xc1, 0xa0, 0xa6, 0x56, 0xdd, 0xd4, 0x6a, - 0xde, 0xb1, 0x38, 0x9f, 0x10, 0x07, 0x47, 0xcf, 0x71, 0xb4, 0x0a, 0xa7, 0x5a, 0x69, 0x8e, 0x0f, - 0xfd, 0xac, 0x70, 0x87, 0x44, 0x87, 0x3b, 0xdc, 0x0f, 0xe8, 0xd4, 0xc9, 0xd6, 0x14, 0x8f, 0x09, - 0x81, 0x2d, 0x37, 0x0b, 0x6f, 0xc9, 0x05, 0x1c, 0x7f, 0xf1, 0xf3, 0x64, 0x26, 0xe0, 0x78, 0xb0, - 0xfd, 0xfe, 0x06, 0xc0, 0xf9, 0xa8, 0x9c, 0x83, 0xac, 0x6b, 0x1e, 0x1f, 0x43, 0x58, 0x61, 0xad, - 0xa9, 0x28, 0xa9, 0xb3, 0xaa, 0xcf, 0x1b, 0x9b, 0xde, 0x10, 0xe6, 0x32, 0x30, 0x33, 0x58, 0x95, - 0xc8, 0x52, 0xf7, 0x41, 0x9d, 0x38, 0x25, 0xdb, 0x10, 0x39, 0x60, 0x46, 0x3d, 0x15, 0x86, 0xac, - 0xb4, 0xa0, 0xa1, 0x2f, 0x01, 0x9c, 0x3b, 0x30, 0x4b, 0x18, 0xf4, 0x6b, 0xc7, 0x38, 0x71, 0x0b, - 0x72, 0x53, 0xc9, 0xa6, 0xd0, 0x66, 0x27, 0xd6, 0x33, 0x9b, 0x3d, 0x21, 0xce, 0xb6, 0x4e, 0xe9, - 0x10, 0xbe, 0x5d, 0x98, 0x68, 0x3f, 0x42, 0x42, 0x18, 0x25, 0x7e, 0x8e, 0x14, 0xae, 0x34, 0x95, - 0x4b, 0xa9, 0xb9, 0x96, 0x11, 0x3c, 0x32, 0x5f, 0xde, 0x42, 0x7b, 0x77, 0x44, 0xe4, 0x7c, 0xf4, - 0x04, 0x0a, 0xc9, 0xfd, 0x09, 0x08, 0x09, 0xf6, 0x77, 0x4f, 0x48, 0xf0, 0xeb, 0x2f, 0x29, 0x23, - 0x29, 0x5c, 0x6b, 0x2a, 0xab, 0xa9, 0x03, 0x90, 0x9e, 0x24, 0x4c, 0x45, 0xee, 0xe9, 0xab, 0xf0, - 0x7a, 0x8f, 0xd1, 0xee, 0x9a, 0x78, 0x7c, 0x43, 0x9a, 0xfc, 0x19, 0x80, 0x33, 0x9d, 0x0a, 0x9c, - 0x7f, 0x49, 0xd9, 0x61, 0x21, 0xd7, 0x54, 0x96, 0x52, 0xb3, 0x9b, 0x5d, 0x70, 0x27, 0x36, 0x7b, - 0xc3, 0x9d, 0x36, 0xdb, 0x61, 0x5e, 0x86, 0xb3, 0x5e, 0x34, 0xa1, 0xbb, 0xc4, 0xb6, 0x0d, 0x9d, - 0x6c, 0xb1, 0xba, 0x45, 0xe6, 0xbf, 0xc3, 0x73, 0xa5, 0xc2, 0x48, 0x53, 0x19, 0xfc, 0xe3, 0x18, - 0x88, 0xab, 0x33, 0x82, 0xe6, 0xb6, 0x4f, 0x72, 0xbf, 0x6e, 0x91, 0xc4, 0xbf, 0x01, 0x38, 0xec, - 0xe7, 0xa6, 0x08, 0x0e, 0x9a, 0x5a, 0xcd, 0xcb, 0xd5, 0xc7, 0x54, 0xf1, 0x8d, 0x4e, 0xc1, 0x61, - 0xad, 0x46, 0x5d, 0x93, 0x89, 0xe4, 0x7b, 0x42, 0xf5, 0x5b, 0x68, 0x17, 0xc6, 0xe8, 0x8e, 0xc8, - 0xfc, 0x26, 0xe5, 0x1b, 0xc7, 0x36, 0x43, 0x66, 0x8d, 0x10, 0x4b, 0x78, 0x7e, 0xa2, 0xa9, 0x9c, - 0x96, 0xe7, 0x82, 0x66, 0x54, 0xeb, 0x18, 0xdd, 0x91, 0xce, 0xc1, 0xd1, 0x60, 0x10, 0x8d, 0xc1, - 0xa1, 0x6b, 0xca, 0xad, 0x7b, 0xeb, 0xd3, 0x03, 0x68, 0x14, 0x0e, 0xde, 0x57, 0x3f, 0x58, 0x9f, - 0x06, 0xf9, 0xd9, 0xa6, 0x32, 0x9d, 0x9f, 0xdc, 0x97, 0xe8, 0x8e, 0x94, 0xc7, 0x12, 0xef, 0x94, - 0x1a, 0x09, 0x1b, 0x4e, 0x44, 0x22, 0x0d, 0x9a, 0x86, 0xf1, 0x1d, 0x52, 0xf7, 0x35, 0xe5, 0x9f, - 0xbc, 0x0a, 0xf2, 0x8e, 0xb6, 0xd8, 0x71, 0x52, 0x25, 0x8f, 0x47, 0x3e, 0x76, 0x05, 0x24, 0xd6, - 0xe0, 0xa9, 0xee, 0xb1, 0xa6, 0x8b, 0xf0, 0x93, 0x61, 0xe1, 0x63, 0x61, 0x2e, 0xbf, 0x06, 0x02, - 0x36, 0xed, 0xe1, 0xa2, 0x0b, 0x9b, 0x1f, 0x84, 0xd9, 0xbc, 0x94, 0x8c, 0xff, 0x00, 0x49, 0xfe, - 0xf7, 0x63, 0x4d, 0xe5, 0x77, 0x62, 0xf0, 0x97, 0x41, 0x6a, 0x56, 0xc1, 0x45, 0x83, 0x61, 0x5a, - 0xc6, 0x07, 0x17, 0x17, 0xf2, 0xc6, 0x86, 0xc9, 0x82, 0x18, 0x54, 0xc7, 0x25, 0x5a, 0xb3, 0xaa, - 0x46, 0x49, 0x6c, 0x3b, 0xbf, 0xee, 0xc2, 0xdc, 0x21, 0x31, 0xa3, 0xb8, 0xc4, 0x5d, 0x14, 0xd7, - 0x34, 0xb3, 0x8e, 0xcb, 0x44, 0x63, 0xae, 0x4d, 0x1c, 0xce, 0xeb, 0x4e, 0x10, 0x8c, 0xbe, 0x06, - 0xa2, 0x80, 0xf9, 0x1a, 0x84, 0xb3, 0xfe, 0xaf, 0x41, 0xa4, 0x4c, 0x48, 0x3d, 0x80, 0xe7, 0xaf, - 0x19, 0xa6, 0x8e, 0xa9, 0xcb, 0x70, 0x8d, 0xda, 0x04, 0x6b, 0x45, 0xfe, 0xd9, 0x51, 0xd7, 0x65, - 0x2a, 0x8c, 0x59, 0x4e, 0x3e, 0x9b, 0xdd, 0x36, 0x58, 0xc5, 0x2d, 0x66, 0x4a, 0xb4, 0x96, 0xe5, - 0x56, 0x49, 0x93, 0x12, 0x75, 0xea, 0x0e, 0x23, 0x7e, 0xd3, 0x37, 0x52, 0x7e, 0x71, 0x5f, 0xe2, - 0xc2, 0xb9, 0xef, 0x2c, 0x96, 0xca, 0xcb, 0x6f, 0x2d, 0x91, 0xa5, 0x74, 0xae, 0x98, 0xcb, 0xa5, - 0x73, 0x57, 0x96, 0xf5, 0xb4, 0xb6, 0x74, 0x69, 0x25, 0x7d, 0x29, 0xa7, 0x6b, 0x45, 0xbd, 0x7c, - 0x99, 0x5c, 0x59, 0xca, 0x49, 0x8d, 0xc2, 0x44, 0x90, 0x71, 0x09, 0x60, 0xd2, 0x2f, 0x8d, 0xc1, - 0xf9, 0x76, 0x14, 0xc1, 0x09, 0x84, 0x56, 0xe0, 0x19, 0x91, 0xdc, 0xb6, 0x8e, 0xc6, 0x70, 0x19, - 0x05, 0x70, 0x3c, 0x19, 0x53, 0x4f, 0x71, 0x82, 0x60, 0xc2, 0xb5, 0x83, 0x3a, 0xe9, 0x2a, 0x4c, - 0x44, 0xa7, 0x46, 0xaa, 0x26, 0x5e, 0xe2, 0x01, 0xf5, 0x74, 0x78, 0xee, 0x5a, 0xa8, 0x82, 0xea, - 0x90, 0x1b, 0xce, 0x3c, 0xe3, 0x38, 0x9e, 0x8c, 0x47, 0xe5, 0x6e, 0x1c, 0x24, 0xa1, 0x1d, 0x72, - 0x23, 0x95, 0xd6, 0x20, 0x8e, 0x27, 0x07, 0xa3, 0x72, 0x3f, 0x08, 0x65, 0xb0, 0xdd, 0xe4, 0xb6, - 0x92, 0xe2, 0x21, 0x1c, 0x4f, 0x0e, 0x75, 0xc8, 0x0d, 0xf2, 0xe3, 0xb7, 0xe1, 0xd9, 0x36, 0x53, - 0x45, 0xd2, 0xee, 0x61, 0x1c, 0x4f, 0x0e, 0xab, 0xf3, 0x11, 0x63, 0x85, 0x33, 0xf0, 0xee, 0xd3, - 0x43, 0xf5, 0x5f, 0x3c, 0x39, 0xd2, 0x65, 0x7a, 0x20, 0xfd, 0x32, 0x9c, 0x8f, 0x4e, 0x0f, 0x55, - 0x74, 0xa3, 0x38, 0x9e, 0x1c, 0x55, 0xe7, 0xc2, 0x73, 0x0b, 0xad, 0xea, 0xae, 0xc3, 0x5c, 0x91, - 0xf4, 0x75, 0x4c, 0x24, 0xee, 0x11, 0x73, 0x45, 0x93, 0xf7, 0x36, 0x73, 0x85, 0xab, 0x40, 0x88, - 0xe3, 0xc9, 0x13, 0x51, 0x73, 0x15, 0x0e, 0x2a, 0xc2, 0xae, 0xcb, 0xd4, 0x52, 0x77, 0x1c, 0xc7, - 0x93, 0x13, 0x9d, 0xcb, 0x14, 0x68, 0x6b, 0xb6, 0x6b, 0x1b, 0xca, 0xf4, 0x4e, 0x1c, 0x27, 0xd3, - 0x8b, 0x18, 0xe9, 0x20, 0xdb, 0x7b, 0x07, 0x2e, 0xb4, 0x19, 0x29, 0xba, 0x3a, 0x13, 0x38, 0x9e, - 0x9c, 0x52, 0xcf, 0x44, 0xcc, 0x14, 0x29, 0xc3, 0x7a, 0x30, 0x68, 0x79, 0xc7, 0x24, 0x8e, 0x27, - 0xa7, 0xbb, 0x31, 0xe8, 0xe9, 0xd5, 0x91, 0x72, 0x6d, 0x0a, 0xc7, 0x93, 0x33, 0x6d, 0xcb, 0x14, - 0x32, 0x57, 0xd7, 0xc9, 0xa1, 0x82, 0x30, 0x9e, 0x44, 0x9d, 0x93, 0x7d, 0xc9, 0x79, 0xbd, 0xa9, - 0x68, 0xf9, 0xad, 0x7d, 0xa9, 0x97, 0x7b, 0x49, 0x79, 0xfc, 0x88, 0xd9, 0x2e, 0xb9, 0x88, 0xbd, - 0xff, 0xcb, 0x5a, 0xd5, 0xf1, 0x1b, 0x8f, 0x2f, 0x62, 0xa9, 0xe7, 0x76, 0xe2, 0xf3, 0x96, 0x2e, - 0x62, 0xf9, 0x22, 0x5e, 0x7e, 0xdc, 0x90, 0x12, 0x70, 0xb0, 0x40, 0xf5, 0x7a, 0xb7, 0x90, 0x2e, - 0x11, 0x38, 0xe5, 0x57, 0xc8, 0x3f, 0x30, 0x58, 0x45, 0x90, 0x4d, 0xc2, 0x58, 0x70, 0x27, 0xa5, - 0xc6, 0x0c, 0x1d, 0x15, 0xe0, 0xa0, 0xae, 0x31, 0xcd, 0x8f, 0x23, 0x99, 0xa3, 0x2f, 0x3e, 0xe7, - 0xa6, 0x8a, 0xb9, 0xd2, 0x9f, 0x00, 0x38, 0xf5, 0x81, 0xa5, 0x6b, 0x8c, 0x3c, 0x90, 0x55, 0xef, - 0x26, 0x13, 0xdd, 0x82, 0x71, 0xad, 0xe8, 0xa1, 0x19, 0x97, 0xf3, 0x2f, 0x1e, 0x9e, 0x54, 0xce, - 0x06, 0x5d, 0x85, 0xe3, 0xae, 0x10, 0x20, 0x2e, 0xb4, 0x7d, 0xb0, 0x9d, 0xc5, 0xcd, 0x35, 0x83, - 0x54, 0xf5, 0xf7, 0x35, 0x67, 0x47, 0x85, 0x1e, 0x39, 0xff, 0x96, 0xb6, 0xb9, 0x85, 0xe8, 0x4e, - 0xd7, 0xa4, 0xc7, 0x33, 0x47, 0xac, 0x65, 0x8e, 0xab, 0x70, 0xbc, 0x64, 0x73, 0x8b, 0x6f, 0xf1, - 0xea, 0x48, 0x64, 0x3d, 0xcf, 0xaf, 0xa2, 0xa0, 0x47, 0xce, 0x3b, 0xa4, 0x1f, 0x02, 0x38, 0xb3, - 0x2a, 0x9a, 0x5c, 0x5e, 0x60, 0x89, 0x53, 0x70, 0xd8, 0xd2, 0x6c, 0x62, 0x32, 0x5f, 0xb0, 0xdf, - 0xe2, 0x96, 0x2f, 0x52, 0xba, 0xf3, 0x22, 0x96, 0xa7, 0x3b, 0xaa, 0x98, 0x8b, 0x4e, 0xc3, 0x11, - 0xfe, 0x77, 0xcb, 0xd0, 0x05, 0xd4, 0x31, 0x75, 0x98, 0x37, 0x37, 0xf4, 0x14, 0x86, 0xe3, 0xa1, - 0xdd, 0xc9, 0x93, 0xa6, 0x87, 0xeb, 0xea, 0xed, 0xe9, 0x01, 0x34, 0x02, 0xe3, 0xb7, 0x37, 0xd7, - 0xa7, 0x81, 0xfc, 0xab, 0x49, 0x78, 0xba, 0xdd, 0xd8, 0xf7, 0x88, 0xbd, 0x6b, 0x94, 0x08, 0xfa, - 0x6c, 0x10, 0x0e, 0x7b, 0x8a, 0xa0, 0x63, 0x2c, 0x5d, 0xe2, 0x18, 0x73, 0xa5, 0x9f, 0xc5, 0x7e, - 0xf1, 0x1f, 0xff, 0xfd, 0x77, 0x63, 0xdf, 0xc4, 0xa4, 0xff, 0x8e, 0x65, 0x77, 0x97, 0x82, 0xdf, - 0x52, 0xba, 0xfd, 0x92, 0x92, 0xdd, 0x0f, 0xc5, 0xd6, 0x46, 0x76, 0x3f, 0x1c, 0x2e, 0x1b, 0xd9, - 0xfd, 0xd0, 0x8e, 0x6d, 0x64, 0x1d, 0x62, 0x69, 0xb6, 0xc6, 0xa8, 0x9d, 0xdd, 0x77, 0x23, 0x03, - 0xfb, 0xa1, 0x0d, 0xd6, 0xc8, 0xee, 0x47, 0x0e, 0x99, 0xa0, 0x1d, 0x1a, 0x3f, 0xd8, 0xc5, 0x8d, - 0xec, 0x7e, 0xf8, 0xe0, 0x7f, 0xdb, 0x61, 0xb6, 0x65, 0x93, 0xb2, 0xb1, 0x97, 0x4d, 0x35, 0x3c, - 0x21, 0xa1, 0x69, 0x4e, 0x3b, 0x1f, 0xa7, 0x5d, 0x90, 0xd3, 0x36, 0x21, 0x0a, 0xb2, 0xd7, 0x0d, - 0x40, 0x23, 0xbb, 0x7f, 0x70, 0x90, 0x37, 0xb2, 0xfb, 0x6d, 0xf7, 0x6a, 0x7c, 0x66, 0xd7, 0x0b, - 0xb7, 0xc8, 0xbc, 0x50, 0xd5, 0xd3, 0x40, 0x7f, 0x0d, 0x20, 0x0c, 0x7c, 0x59, 0xaf, 0x7f, 0x6b, - 0x6e, 0x90, 0x12, 0x5e, 0x70, 0x5e, 0x3a, 0x77, 0x88, 0x0f, 0xe4, 0x41, 0x0a, 0xfd, 0x45, 0x08, - 0x32, 0xdd, 0x41, 0x57, 0x8f, 0x2e, 0xb6, 0x63, 0xd3, 0x26, 0xfa, 0xdc, 0x8e, 0x52, 0x5a, 0xe0, - 0x7c, 0xc3, 0xc3, 0xb9, 0xef, 0xed, 0xf0, 0xb7, 0x2d, 0xb7, 0x58, 0x35, 0x9c, 0x0a, 0xb1, 0x1d, - 0xee, 0x0b, 0x7c, 0x67, 0x3a, 0x79, 0x6f, 0xdf, 0xfe, 0x0a, 0x80, 0xc3, 0xb7, 0x28, 0xdd, 0x71, - 0x2d, 0x34, 0x95, 0x71, 0xdc, 0xa2, 0x9c, 0xd9, 0xd0, 0xfd, 0x93, 0xfa, 0x58, 0xe6, 0xca, 0x08, - 0x18, 0x49, 0xf4, 0xdd, 0x43, 0xb7, 0x0c, 0x4f, 0x7d, 0x1b, 0xe8, 0xb7, 0x00, 0x1c, 0xf6, 0x4e, - 0xee, 0x63, 0xad, 0x70, 0x8f, 0x5b, 0x47, 0x69, 0x49, 0xc0, 0x79, 0x33, 0x71, 0x44, 0x38, 0x7c, - 0x11, 0x7f, 0x06, 0xe0, 0x68, 0x10, 0x4b, 0xd0, 0xca, 0xd1, 0x31, 0xb5, 0xc5, 0x9f, 0x9e, 0x90, - 0xbe, 0x04, 0x02, 0xd3, 0x1f, 0x80, 0x44, 0x2a, 0xbb, 0x2b, 0x3f, 0x1f, 0x94, 0x56, 0x24, 0x19, - 0x0f, 0x18, 0x0f, 0x42, 0x0f, 0x97, 0xe4, 0xbe, 0xa7, 0x2c, 0xca, 0x6f, 0x66, 0x77, 0x65, 0xed, - 0xa8, 0x73, 0x40, 0x0a, 0xfd, 0x39, 0x80, 0xc3, 0x6b, 0xa4, 0x4a, 0x18, 0xe9, 0xf4, 0x8c, 0x5e, - 0x3a, 0xd9, 0x4d, 0x45, 0x29, 0x5e, 0x80, 0x93, 0x10, 0x2a, 0x96, 0x71, 0x93, 0xd4, 0x15, 0x97, - 0x55, 0xd0, 0x00, 0x3c, 0x0d, 0x87, 0x6f, 0xf3, 0x4f, 0x19, 0x4d, 0xc0, 0x41, 0x9b, 0x68, 0x3a, - 0x1c, 0x7a, 0x6a, 0x1b, 0x8c, 0x7c, 0x72, 0x12, 0x4e, 0xee, 0xa5, 0x0d, 0xdb, 0xe6, 0x20, 0x1c, - 0xa3, 0x58, 0x25, 0x28, 0x86, 0x3d, 0xb3, 0x24, 0x53, 0x47, 0xf5, 0x9c, 0xff, 0x02, 0x70, 0xf4, - 0x3a, 0x61, 0x77, 0x5d, 0x62, 0xd7, 0xff, 0x4f, 0x7c, 0xe7, 0xd7, 0x41, 0x53, 0xb9, 0x2f, 0x6d, - 0xc2, 0x85, 0x6e, 0xc5, 0x5f, 0x4b, 0x72, 0x9f, 0x45, 0xdf, 0x87, 0xa0, 0x38, 0x20, 0x14, 0xcd, - 0xa0, 0x8b, 0x87, 0x29, 0xfa, 0x29, 0x17, 0x10, 0xa8, 0xfb, 0xe5, 0x10, 0x9c, 0xbe, 0x4e, 0x58, - 0x90, 0xe6, 0x79, 0xc2, 0x0b, 0xc7, 0x48, 0x6b, 0x7c, 0x46, 0x89, 0x97, 0xc0, 0x43, 0xfa, 0x6c, - 0x50, 0xe8, 0xf4, 0x3f, 0x71, 0xf4, 0x4d, 0xfc, 0x10, 0xad, 0x5a, 0x09, 0xa5, 0x1f, 0x23, 0xba, - 0x95, 0xa7, 0x8d, 0xf6, 0xb1, 0xb6, 0x80, 0xda, 0xb3, 0xbe, 0xec, 0x18, 0x73, 0x9f, 0x37, 0x18, - 0x0d, 0x74, 0xcf, 0xa9, 0x00, 0xbb, 0x8f, 0xf6, 0x9c, 0x1b, 0x09, 0xcd, 0xbd, 0x2b, 0xb4, 0xce, - 0x79, 0x07, 0x15, 0x58, 0x57, 0x45, 0x7a, 0x0a, 0xec, 0x8c, 0xbc, 0x3d, 0xaa, 0x9d, 0x1e, 0xc3, - 0x3d, 0xf5, 0x74, 0x9e, 0x27, 0x35, 0x92, 0x19, 0xa0, 0x2f, 0x06, 0xe1, 0xe0, 0x7a, 0xa9, 0x42, - 0xd1, 0xa1, 0xbf, 0xce, 0x39, 0x6e, 0x31, 0xe3, 0x55, 0xa2, 0xc1, 0xb1, 0xd2, 0xff, 0x14, 0xe9, - 0x2f, 0xe3, 0x4d, 0xe5, 0xef, 0x63, 0x70, 0x94, 0x94, 0x2a, 0x14, 0xdb, 0x56, 0x09, 0xcd, 0xdc, - 0x73, 0x6b, 0x35, 0xcd, 0xae, 0xe7, 0xf1, 0xba, 0xdf, 0x95, 0x98, 0x5e, 0x3b, 0xb8, 0xd1, 0x13, - 0xbd, 0xd2, 0x1a, 0x44, 0xd1, 0xcd, 0x2c, 0x10, 0xf7, 0xb9, 0x85, 0x6f, 0xac, 0xc0, 0xb8, 0xbc, - 0xb8, 0x88, 0x64, 0x69, 0x11, 0x4e, 0x6b, 0x96, 0x77, 0xf7, 0x64, 0x50, 0x33, 0xfb, 0x89, 0x43, - 0x4d, 0xb4, 0xb0, 0x2f, 0x05, 0x35, 0x92, 0xc4, 0x2a, 0x04, 0x1b, 0xa6, 0xe5, 0xfa, 0x3f, 0x52, - 0x4b, 0x8d, 0x1b, 0x0f, 0x60, 0xfc, 0xd2, 0xe2, 0x32, 0xba, 0x0d, 0xdf, 0x52, 0x09, 0x73, 0x6d, - 0x93, 0xe8, 0xf8, 0x69, 0x85, 0x98, 0x98, 0x53, 0xda, 0xc4, 0xa1, 0xae, 0x5d, 0x22, 0xd8, 0x70, - 0x30, 0x23, 0x35, 0x8b, 0xda, 0x9a, 0x6d, 0x54, 0xeb, 0xd8, 0x35, 0xb5, 0x5d, 0xcd, 0xa8, 0x6a, - 0xc5, 0x2a, 0xc9, 0xa4, 0xe6, 0xe0, 0xe8, 0x5e, 0xda, 0x74, 0x6b, 0x45, 0x62, 0xa3, 0xb1, 0x99, - 0x01, 0xf1, 0xef, 0xa3, 0x77, 0x6f, 0x5c, 0x85, 0xf1, 0xdc, 0x62, 0x0e, 0xe5, 0x60, 0xea, 0x39, - 0x7c, 0x75, 0x4a, 0x1c, 0x6c, 0x52, 0x86, 0xc9, 0x9e, 0xe1, 0xb0, 0x0c, 0x1a, 0x86, 0xe2, 0xa6, - 0x56, 0x6c, 0xdd, 0xc7, 0x87, 0x1f, 0x47, 0xdc, 0xd4, 0xd9, 0x7d, 0x6f, 0xb9, 0x1f, 0x9e, 0x91, - 0xa6, 0xc3, 0xa1, 0x88, 0x8f, 0xe5, 0xbd, 0x0b, 0xbc, 0x87, 0x08, 0x75, 0x0c, 0xa1, 0x9f, 0x00, - 0x78, 0x62, 0x8d, 0x10, 0x4b, 0xfc, 0x10, 0xca, 0x3b, 0xbe, 0xad, 0x74, 0xee, 0x1d, 0xa1, 0xed, - 0x8a, 0x94, 0x3b, 0x34, 0xca, 0x44, 0x9e, 0x68, 0x64, 0x78, 0xad, 0x26, 0xc2, 0xa3, 0x02, 0xe1, - 0x26, 0x2d, 0x18, 0xa6, 0x6e, 0x98, 0xdb, 0x0e, 0x3a, 0xd3, 0x11, 0x3b, 0xd6, 0xfc, 0x67, 0x4b, - 0x3d, 0xc3, 0xca, 0x00, 0x7a, 0x00, 0x47, 0x78, 0xb5, 0x46, 0x5d, 0x86, 0x7a, 0x10, 0xf5, 0x9c, - 0x7c, 0x56, 0xc0, 0x9f, 0x43, 0xb3, 0x61, 0x0b, 0x33, 0x9f, 0x59, 0x05, 0x4e, 0x8b, 0xe7, 0x30, - 0xbc, 0xd4, 0x5e, 0x23, 0x4c, 0x33, 0xaa, 0x4e, 0xdf, 0x02, 0xce, 0x0b, 0x01, 0xaf, 0xa2, 0x85, - 0xc8, 0x12, 0x72, 0xae, 0x4f, 0x0d, 0x56, 0xd1, 0x7d, 0xae, 0xbf, 0x0d, 0x20, 0xba, 0x4e, 0x58, - 0x7b, 0x69, 0xdf, 0x47, 0xb6, 0xd4, 0x36, 0xb5, 0x27, 0x9e, 0x37, 0x04, 0x9e, 0xd7, 0xa4, 0x33, - 0x61, 0x3c, 0x1c, 0x4a, 0x91, 0xea, 0xf5, 0xec, 0x3e, 0xcf, 0x59, 0xc4, 0x15, 0x00, 0xfa, 0x0d, - 0x00, 0x67, 0xee, 0x50, 0x87, 0x71, 0x8e, 0x62, 0xaa, 0x40, 0xd4, 0xe7, 0x75, 0x42, 0x4f, 0x18, - 0x59, 0x01, 0xe3, 0x82, 0x74, 0x3e, 0x0c, 0xc3, 0xa2, 0x0e, 0xe3, 0x50, 0xc4, 0xcf, 0xdf, 0x1e, - 0x9e, 0x96, 0x9b, 0xfc, 0x14, 0xc0, 0xd9, 0xd5, 0x0a, 0x29, 0xed, 0x04, 0x89, 0xc2, 0x1d, 0xcd, - 0xd6, 0x6a, 0xce, 0xb7, 0xe6, 0xf7, 0xd7, 0x85, 0x02, 0x0a, 0x7a, 0xe7, 0x30, 0xbf, 0xb7, 0x04, - 0xce, 0xec, 0x36, 0x61, 0x5d, 0xb7, 0x00, 0xfa, 0x4f, 0x00, 0x5f, 0x11, 0x8a, 0x79, 0xb7, 0xf6, - 0xbc, 0xb8, 0xff, 0x39, 0x51, 0xf1, 0xae, 0x50, 0xf1, 0x26, 0xda, 0xe8, 0x43, 0x45, 0xbf, 0x28, - 0x15, 0xef, 0x03, 0xdb, 0xd4, 0xa5, 0x3b, 0x0d, 0xf4, 0xaf, 0x00, 0x9e, 0x14, 0xca, 0x72, 0xcf, - 0xfa, 0x39, 0xd2, 0x51, 0xca, 0x1f, 0x51, 0x47, 0xee, 0xa2, 0xd1, 0xeb, 0x81, 0x46, 0x3e, 0xfa, - 0xf8, 0x0c, 0x7d, 0x01, 0xe0, 0xc2, 0xed, 0x5d, 0x62, 0x8b, 0xcc, 0x3c, 0x78, 0xe0, 0xb6, 0x4a, - 0xc5, 0x2f, 0x2c, 0xf7, 0xeb, 0x16, 0xe9, 0x79, 0x84, 0x2c, 0x74, 0xf4, 0x87, 0xee, 0x97, 0xa5, - 0xf5, 0xa6, 0x82, 0xf2, 0x91, 0xf0, 0xc8, 0xc8, 0x1e, 0x13, 0xf0, 0x53, 0x28, 0x19, 0xde, 0x46, - 0x34, 0x10, 0x6e, 0xfb, 0xc2, 0x4b, 0x9e, 0x70, 0xc6, 0x85, 0xff, 0x10, 0xc0, 0x39, 0xb1, 0x02, - 0xeb, 0x7b, 0x9e, 0x75, 0x82, 0xa7, 0x34, 0xe8, 0x7b, 0xfd, 0xbe, 0xd1, 0xe1, 0x27, 0x43, 0x30, - 0xbb, 0xe7, 0x46, 0x3f, 0x23, 0x10, 0xce, 0xa2, 0x19, 0x8e, 0xd0, 0x0f, 0x76, 0xf9, 0x12, 0x07, - 0x80, 0x7e, 0x0f, 0xc0, 0xb3, 0x11, 0x28, 0xd1, 0xb7, 0x3e, 0x87, 0x27, 0xe3, 0xdd, 0x00, 0x45, - 0x79, 0xbc, 0x00, 0xac, 0xc4, 0x8f, 0x41, 0x53, 0xf9, 0x3b, 0x80, 0xca, 0x3d, 0xae, 0xd2, 0xc2, - 0x3f, 0x6b, 0xe2, 0x74, 0x1a, 0x3f, 0xad, 0x18, 0xa5, 0x0a, 0x76, 0x2a, 0xd4, 0xad, 0xea, 0x22, - 0x19, 0x28, 0x12, 0xec, 0x3a, 0x44, 0xc7, 0x86, 0x89, 0xad, 0xaa, 0x56, 0x22, 0x98, 0x96, 0x45, - 0xda, 0xa0, 0xd3, 0x92, 0x5b, 0x23, 0xa6, 0x77, 0x1d, 0x83, 0x4b, 0xb4, 0xc6, 0x1b, 0xaf, 0x25, - 0xee, 0xc2, 0x73, 0xdd, 0xea, 0x21, 0x1e, 0xd4, 0x83, 0xcb, 0xbb, 0x3e, 0xf3, 0x29, 0xf9, 0x13, - 0x78, 0xb2, 0xa4, 0xd5, 0x48, 0x75, 0x55, 0x73, 0x88, 0xcf, 0x63, 0x53, 0xab, 0x11, 0xa4, 0xc2, - 0x21, 0xef, 0xb5, 0x50, 0xbf, 0x41, 0x2c, 0x62, 0xad, 0x56, 0x10, 0xe3, 0x43, 0xf2, 0xc7, 0x70, - 0x41, 0x31, 0x29, 0xab, 0x10, 0xdb, 0x97, 0x24, 0x16, 0xe1, 0x20, 0xa0, 0x7f, 0x3f, 0x12, 0xde, - 0xfb, 0x15, 0x3c, 0x50, 0xf8, 0x8f, 0xf1, 0xa6, 0xf2, 0xcf, 0xe3, 0xe8, 0x1b, 0x00, 0x67, 0x15, - 0x5c, 0xf0, 0x7e, 0xb9, 0x0c, 0xed, 0xdf, 0x0f, 0xe1, 0xc9, 0x6d, 0xf5, 0xce, 0x6a, 0xfa, 0xba, - 0xa7, 0x3a, 0xb6, 0x6c, 0x2a, 0x9e, 0xae, 0xf6, 0x69, 0xb2, 0xc4, 0xb4, 0x49, 0x4d, 0xf2, 0xae, - 0xaf, 0x1a, 0xa7, 0x4e, 0x7d, 0x0c, 0x4f, 0x16, 0xee, 0xad, 0xe1, 0xe5, 0xf4, 0x6a, 0x55, 0x73, - 0x1d, 0x82, 0x6f, 0x19, 0x25, 0x62, 0x3a, 0x04, 0x5d, 0xeb, 0x8f, 0x73, 0xb6, 0x58, 0xa5, 0xc5, - 0x6c, 0x4d, 0x73, 0x18, 0xb1, 0xb3, 0xb7, 0x36, 0x56, 0xd7, 0x37, 0xef, 0xad, 0x67, 0xd8, 0x1e, - 0x93, 0xe3, 0x4b, 0x99, 0xc5, 0x3c, 0x86, 0x73, 0x7b, 0x69, 0x87, 0xd6, 0x88, 0xd0, 0xe6, 0xe0, - 0x0b, 0x8d, 0x24, 0x86, 0xea, 0x9a, 0xae, 0x6b, 0xa9, 0x38, 0x88, 0x0d, 0xca, 0x1d, 0x59, 0xb1, - 0x7c, 0x2a, 0xdc, 0xb3, 0x97, 0x2e, 0x53, 0x9a, 0xae, 0x19, 0x35, 0x92, 0xef, 0xa0, 0xcc, 0xf7, - 0xa0, 0x54, 0xef, 0xf0, 0x0c, 0x77, 0x19, 0x6d, 0xc0, 0xeb, 0x9d, 0x19, 0xae, 0xeb, 0x10, 0xfb, - 0x20, 0xbb, 0xad, 0x68, 0xbb, 0x04, 0x5b, 0xc4, 0xae, 0x19, 0x8e, 0xc3, 0x5d, 0x97, 0x51, 0xac, - 0x95, 0x4a, 0xc4, 0x71, 0x22, 0xd9, 0x70, 0x46, 0x3d, 0x46, 0xce, 0x3c, 0xa2, 0xde, 0x85, 0xf1, - 0xdc, 0xd2, 0x15, 0x74, 0x03, 0x4e, 0x6c, 0xbc, 0x51, 0xc3, 0x1a, 0x66, 0x44, 0xb3, 0x28, 0xcb, - 0xa0, 0x15, 0x78, 0x39, 0xf1, 0x82, 0x3f, 0x60, 0xfd, 0x28, 0xc6, 0x8b, 0x83, 0x45, 0xf4, 0x55, - 0x0c, 0x9e, 0xb8, 0xe7, 0xbd, 0xca, 0x16, 0x89, 0x17, 0xba, 0x0a, 0x57, 0x12, 0x97, 0xfb, 0x7c, - 0x29, 0x1d, 0x1c, 0xe4, 0x89, 0x7f, 0x02, 0xb0, 0xe3, 0x45, 0x38, 0xfa, 0x31, 0x80, 0x7f, 0x05, - 0xfa, 0x78, 0x15, 0x0e, 0xe1, 0xba, 0xc7, 0x3e, 0x8f, 0x9f, 0xc8, 0xb9, 0xe5, 0x2b, 0x5a, 0x69, - 0xb9, 0x94, 0x5e, 0xbe, 0x4c, 0x8a, 0xe9, 0xdc, 0xca, 0xa2, 0x9c, 0xd6, 0x74, 0x52, 0x4e, 0x13, - 0x7d, 0xe9, 0xad, 0x62, 0x2e, 0xb7, 0xbc, 0xb4, 0xb8, 0xbc, 0xf8, 0x04, 0xc2, 0x3b, 0x1a, 0xe3, - 0xc8, 0xf2, 0xf8, 0xc9, 0x4b, 0x79, 0x4f, 0xfe, 0x04, 0x0d, 0x7b, 0x51, 0x2c, 0x21, 0x7e, 0xb0, - 0x7f, 0xf8, 0x87, 0x71, 0x38, 0x05, 0xc7, 0x0a, 0x9a, 0x63, 0x94, 0xc4, 0x65, 0x53, 0x6c, 0x14, - 0xc0, 0x1f, 0x81, 0xc8, 0xfd, 0xd3, 0x17, 0x60, 0x34, 0x96, 0x18, 0xfb, 0x30, 0xad, 0xdc, 0xd9, - 0x48, 0xdf, 0x24, 0x75, 0x1c, 0xbb, 0x91, 0x84, 0x0b, 0x7b, 0x69, 0xad, 0xa6, 0x3d, 0xa3, 0x66, - 0x5a, 0xb3, 0x0c, 0xdf, 0x98, 0x69, 0xcd, 0x65, 0x15, 0x11, 0x6c, 0x46, 0x13, 0xc3, 0x94, 0x37, - 0xe4, 0x1b, 0x4f, 0xe0, 0xab, 0xbd, 0x28, 0xa9, 0x6d, 0x3c, 0x23, 0x36, 0xfa, 0x7e, 0xea, 0x7b, - 0x70, 0x0a, 0x0e, 0x8a, 0x79, 0x23, 0x89, 0x21, 0x46, 0x77, 0x88, 0x09, 0x2f, 0xc0, 0x85, 0x03, - 0x12, 0x95, 0x38, 0x6e, 0x95, 0xdd, 0x67, 0xd5, 0x0d, 0xf3, 0x1e, 0x8f, 0x69, 0xba, 0xd3, 0xaa, - 0xd8, 0x36, 0xdf, 0x85, 0x3f, 0x05, 0xad, 0xcb, 0xb1, 0x7f, 0x00, 0xa3, 0xf1, 0xe4, 0xa0, 0xfc, - 0x7a, 0xb0, 0x53, 0x43, 0xdb, 0x3a, 0x2b, 0xf0, 0x64, 0x5b, 0x4c, 0xf3, 0xe7, 0x7a, 0x13, 0x09, - 0x08, 0x85, 0xff, 0x0f, 0x13, 0xde, 0x5d, 0x1b, 0x42, 0xd7, 0x6d, 0xcd, 0x64, 0x0e, 0xe6, 0x0d, - 0x7f, 0x07, 0xc0, 0x05, 0xff, 0x06, 0x0e, 0xcd, 0xfa, 0x83, 0xa2, 0x15, 0x8c, 0xae, 0xc2, 0x21, - 0x4d, 0xaf, 0x19, 0x26, 0xca, 0x47, 0xa6, 0x9a, 0x7a, 0x84, 0x4c, 0x6c, 0x28, 0x4e, 0x66, 0x38, - 0x8c, 0xd7, 0x3a, 0xbb, 0xbc, 0xc8, 0x2d, 0x53, 0xbb, 0x26, 0xdc, 0xab, 0x78, 0x0e, 0x4e, 0x84, - 0x17, 0x66, 0xa0, 0xfd, 0x56, 0xb0, 0x78, 0xa1, 0xe7, 0xbd, 0x60, 0x3b, 0xa9, 0xbd, 0x01, 0x4f, - 0xbf, 0x7f, 0x10, 0x63, 0xc2, 0x27, 0x67, 0xbf, 0x27, 0xe6, 0xb3, 0xb3, 0x10, 0xed, 0xa5, 0xc3, - 0x3d, 0xfc, 0x68, 0x41, 0x43, 0x89, 0x78, 0x51, 0xb3, 0x9f, 0x25, 0xe1, 0xe9, 0xb6, 0xc1, 0xa2, - 0xf6, 0x2c, 0x5d, 0x35, 0x1c, 0x86, 0x26, 0xe4, 0x71, 0x38, 0x94, 0x88, 0x53, 0x93, 0xc0, 0x18, - 0x06, 0x0f, 0xc7, 0x5a, 0xfb, 0xac, 0x38, 0x2c, 0x0e, 0xff, 0xe5, 0xff, 0x0d, 0x00, 0x00, 0xff, - 0xff, 0xf0, 0x1f, 0x97, 0xb4, 0x7e, 0x33, 0x00, 0x00, + // 4165 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0x5d, 0x6c, 0x1b, 0xc7, + 0x76, 0xd6, 0x90, 0xfa, 0x1d, 0xfd, 0x8f, 0x2c, 0x5b, 0xa6, 0x75, 0xe3, 0xc9, 0xc6, 0x37, 0xa1, + 0x19, 0x93, 0x94, 0x56, 0x74, 0x6c, 0xd1, 0x37, 0x37, 0x59, 0x4a, 0xb2, 0x23, 0x27, 0x91, 0xed, + 0xb5, 0x93, 0x9b, 0xd8, 0x70, 0xe4, 0x25, 0x77, 0x28, 0x6e, 0x44, 0xee, 0x6c, 0x76, 0x67, 0x65, + 0xd1, 0x2a, 0xd1, 0xdc, 0xfe, 0x5e, 0xa4, 0x05, 0x7a, 0xcb, 0xfe, 0x01, 0x4d, 0x03, 0x14, 0x17, + 0x2d, 0x50, 0x14, 0x45, 0xd1, 0x97, 0xf6, 0xa1, 0x7d, 0x68, 0x5f, 0x8a, 0x0b, 0xb4, 0x6f, 0x2e, + 0x70, 0x5f, 0xfa, 0x74, 0x8b, 0x02, 0x05, 0x8a, 0xbe, 0x15, 0x08, 0x50, 0xa0, 0x17, 0x28, 0x66, + 0x76, 0x97, 0xda, 0xe5, 0x8f, 0x25, 0x5a, 0x2e, 0x72, 0xfd, 0x60, 0xed, 0xcc, 0x9c, 0x39, 0xe7, + 0x3b, 0x67, 0xce, 0xcc, 0x39, 0x67, 0x38, 0xf0, 0x1a, 0xd9, 0xd7, 0x6a, 0x56, 0x95, 0x38, 0x59, + 0xc3, 0x64, 0xc4, 0x36, 0xb5, 0x6a, 0xd6, 0xb2, 0x29, 0xa3, 0x59, 0xbf, 0xdf, 0x2a, 0x66, 0xb5, + 0xed, 0xa2, 0xc1, 0xb6, 0x69, 0x79, 0x9b, 0xec, 0x11, 0xbb, 0xce, 0x2a, 0x86, 0xb9, 0x93, 0x11, + 0x34, 0x28, 0xb9, 0x63, 0x5b, 0xa5, 0xcc, 0x8e, 0xc6, 0xc8, 0x63, 0xad, 0x9e, 0x09, 0x38, 0x65, + 0x02, 0x4e, 0x99, 0x16, 0x8f, 0xc4, 0xe2, 0x0e, 0xa5, 0x3b, 0x55, 0x92, 0xd5, 0x2c, 0x23, 0xab, + 0x99, 0x26, 0x65, 0x1a, 0x33, 0xa8, 0xe9, 0x78, 0x7c, 0x12, 0xd8, 0x1f, 0x15, 0xad, 0xa2, 0x5b, + 0xce, 0x96, 0x0d, 0x52, 0xd5, 0xb7, 0x6b, 0x9a, 0xb3, 0xeb, 0x53, 0x9c, 0x6b, 0xa7, 0x20, 0x35, + 0x8b, 0xd5, 0xfd, 0xc1, 0x97, 0xda, 0x07, 0x75, 0xd7, 0x16, 0xfc, 0x7b, 0x8d, 0x3f, 0xb6, 0x35, + 0xcb, 0x22, 0x76, 0x20, 0x7e, 0xa9, 0x97, 0x0d, 0x2c, 0x8d, 0x55, 0x88, 0xe9, 0xd6, 0xc4, 0xc7, + 0x36, 0xff, 0xf2, 0x67, 0x5c, 0xec, 0x35, 0xc3, 0x71, 0x8b, 0xd9, 0x1a, 0x71, 0x1c, 0x6d, 0x87, + 0xf8, 0xa4, 0xa9, 0x67, 0x90, 0xca, 0x6d, 0xb4, 0xe7, 0xdb, 0x81, 0x32, 0xa3, 0x46, 0x1c, 0xa6, + 0xd5, 0x2c, 0x9f, 0xe0, 0x92, 0xf8, 0x53, 0x4a, 0xef, 0x10, 0x33, 0xed, 0x3c, 0xd6, 0x76, 0x76, + 0x88, 0x9d, 0xa5, 0x96, 0x30, 0x65, 0xa7, 0x59, 0xa5, 0x7f, 0x88, 0xc1, 0xc9, 0x0d, 0xdb, 0xa6, + 0xb6, 0x4a, 0x1c, 0x8b, 0x9a, 0x0e, 0x41, 0x3f, 0x05, 0x70, 0xb2, 0x44, 0x6d, 0x9b, 0x54, 0x05, + 0xe1, 0xa6, 0xbe, 0x00, 0x30, 0x48, 0x8e, 0x15, 0xfe, 0x16, 0x34, 0x95, 0xbf, 0x01, 0xa9, 0x99, + 0xfd, 0x74, 0x68, 0x34, 0x6d, 0xe8, 0xf2, 0xeb, 0x1f, 0x98, 0xc6, 0x67, 0x2e, 0xc1, 0x64, 0x8f, + 0x98, 0x0c, 0x1b, 0x3a, 0x31, 0x99, 0x51, 0x36, 0x88, 0x8d, 0xcb, 0xd4, 0xc6, 0x0e, 0xb1, 0xf7, + 0x88, 0x8d, 0x6d, 0xf2, 0x99, 0x4b, 0x1c, 0xe6, 0xdc, 0x7c, 0x55, 0x92, 0x73, 0x2b, 0x57, 0xb5, + 0xd2, 0x4a, 0x29, 0xbd, 0x72, 0x85, 0x14, 0xd3, 0xb9, 0xd5, 0x25, 0x39, 0xad, 0xe9, 0xa4, 0x9c, + 0x26, 0xfa, 0xf2, 0x1b, 0xc5, 0x5c, 0x6e, 0x65, 0x79, 0x69, 0x65, 0x49, 0xfa, 0x02, 0x6c, 0x7c, + 0xf2, 0x60, 0x29, 0xbd, 0xaa, 0xa4, 0xaf, 0x3f, 0x3c, 0xb8, 0xda, 0x48, 0xb7, 0xbe, 0x73, 0x8d, + 0x74, 0xae, 0xd5, 0x58, 0x69, 0xa4, 0x1f, 0x5c, 0x5d, 0x55, 0x0a, 0x0f, 0x23, 0x3d, 0xc1, 0xf7, + 0xb2, 0xdc, 0xb8, 0xf0, 0xa3, 0xd8, 0xa0, 0xeb, 0x1a, 0xba, 0x1a, 0xd5, 0x08, 0xbd, 0x0b, 0x87, + 0x08, 0x57, 0x7a, 0x21, 0x86, 0x41, 0x72, 0x5c, 0xbe, 0x9c, 0x39, 0xae, 0x93, 0x66, 0x84, 0xad, + 0x6e, 0x15, 0x3f, 0x25, 0x25, 0xa6, 0x7a, 0x3c, 0xa4, 0x3f, 0x06, 0x70, 0x3c, 0xd4, 0x8d, 0xde, + 0x86, 0x83, 0x25, 0xaa, 0x13, 0x61, 0xb6, 0xa1, 0xc2, 0xa5, 0xa6, 0x72, 0x31, 0x25, 0x3a, 0xe4, + 0xc9, 0xc0, 0xc6, 0x98, 0x37, 0xbf, 0x00, 0x23, 0x42, 0xc5, 0x87, 0x17, 0x7e, 0x14, 0x1b, 0xe1, + 0x92, 0x76, 0x88, 0xad, 0x0a, 0x42, 0x74, 0x0b, 0x8e, 0xf8, 0x8b, 0x2e, 0x00, 0x8e, 0x15, 0x2e, + 0x37, 0x15, 0x39, 0x15, 0xf4, 0xc9, 0x33, 0x2d, 0x3e, 0x7e, 0xcf, 0x17, 0xe0, 0xd4, 0x27, 0x0f, + 0xb4, 0xf4, 0x13, 0x25, 0x7d, 0x9f, 0x33, 0x3c, 0x58, 0xbe, 0x84, 0x57, 0xe4, 0xc6, 0x05, 0x35, + 0x98, 0x21, 0xfd, 0xeb, 0x22, 0x9c, 0x51, 0x0a, 0x06, 0xbb, 0x55, 0xde, 0x68, 0xed, 0x4f, 0x54, + 0x86, 0x93, 0x8e, 0x61, 0xee, 0x54, 0xc9, 0xb6, 0x49, 0x1c, 0x46, 0xf4, 0x85, 0xb3, 0xc2, 0x18, + 0xca, 0xf1, 0x8d, 0xd1, 0xce, 0x32, 0xb3, 0x25, 0x18, 0xa9, 0x13, 0x1e, 0x5f, 0xaf, 0x85, 0x2a, + 0x50, 0xac, 0x81, 0xef, 0x46, 0xf7, 0x9a, 0xca, 0x9d, 0xcf, 0x01, 0xf8, 0x02, 0xbc, 0xfb, 0x40, + 0x4b, 0x97, 0x95, 0xf4, 0x75, 0x81, 0x98, 0x2f, 0x71, 0xa8, 0x99, 0xeb, 0xa7, 0xb9, 0x2c, 0x37, + 0x54, 0x21, 0x01, 0x7d, 0x0c, 0x87, 0x7d, 0x55, 0x62, 0x38, 0xfe, 0x62, 0x54, 0xf1, 0x19, 0xa2, + 0x9b, 0x70, 0xbc, 0x5c, 0xa5, 0x1a, 0xdb, 0xde, 0xd3, 0xaa, 0x2e, 0x59, 0x88, 0x63, 0x90, 0x8c, + 0x15, 0x2e, 0x36, 0x95, 0x57, 0xe5, 0xd9, 0xeb, 0xbc, 0x1f, 0x8b, 0x7e, 0x2c, 0x0e, 0xa5, 0x7c, + 0x7c, 0x29, 0x23, 0x3f, 0x05, 0xe1, 0x09, 0x2a, 0x14, 0x8d, 0x0f, 0xf9, 0x37, 0x7a, 0x19, 0x4e, + 0xe8, 0xd4, 0x2d, 0x56, 0x89, 0xcf, 0x6c, 0x10, 0x83, 0x24, 0x50, 0xc7, 0xbd, 0x3e, 0x8f, 0xe4, + 0x3c, 0x1c, 0x37, 0x4c, 0xf6, 0x46, 0xce, 0xa7, 0x18, 0xc2, 0x20, 0x19, 0x57, 0xa1, 0xe8, 0x6a, + 0xf1, 0x70, 0xc3, 0x14, 0xc3, 0x18, 0x24, 0x07, 0xd5, 0x71, 0x37, 0x44, 0xe2, 0xf1, 0x58, 0x91, + 0x7d, 0x8a, 0x11, 0xee, 0x8e, 0x82, 0xc7, 0x8a, 0xec, 0x11, 0xbc, 0x02, 0x27, 0xcb, 0xc6, 0x3e, + 0xd1, 0x5b, 0x4c, 0x46, 0x31, 0x48, 0x0e, 0xab, 0x13, 0x7e, 0x67, 0x94, 0xa8, 0xc5, 0x67, 0x0c, + 0x83, 0xe4, 0x88, 0x4f, 0x14, 0x70, 0xfa, 0x16, 0x84, 0x45, 0x4a, 0xab, 0x3e, 0x05, 0xc4, 0x20, + 0x39, 0xaa, 0x8e, 0xf1, 0x9e, 0x16, 0x58, 0x87, 0xd9, 0x86, 0xb9, 0xe3, 0x13, 0x8c, 0x73, 0x4f, + 0x50, 0xc7, 0xbd, 0xbe, 0x16, 0xd8, 0x62, 0x9d, 0x11, 0xc7, 0xa7, 0xf8, 0x16, 0x06, 0xc9, 0x09, + 0x15, 0x8a, 0xae, 0x88, 0xc2, 0x2d, 0x18, 0x93, 0x18, 0x24, 0x27, 0x3d, 0x85, 0x03, 0x14, 0xf7, + 0x20, 0xe4, 0xe7, 0xaf, 0x4f, 0x30, 0x85, 0x41, 0x72, 0xaa, 0x9f, 0xad, 0xbd, 0xe5, 0xd6, 0x88, + 0x6d, 0x94, 0x36, 0x4c, 0xb7, 0xa6, 0x8e, 0x71, 0x46, 0x1e, 0xd7, 0x8f, 0xe1, 0x74, 0xeb, 0x68, + 0xf7, 0x59, 0xbf, 0x24, 0x58, 0x2f, 0x1f, 0xc5, 0x3a, 0x08, 0x0d, 0x99, 0xdb, 0x1a, 0xab, 0x08, + 0xb6, 0x93, 0x96, 0xff, 0xe5, 0xb1, 0xfe, 0x05, 0x78, 0xda, 0x73, 0xaf, 0xed, 0x76, 0x09, 0xe7, + 0x85, 0x84, 0x1b, 0xc7, 0x96, 0xf0, 0xbe, 0xb7, 0xd1, 0x03, 0x41, 0xbe, 0xf7, 0xb6, 0xe4, 0xce, + 0x99, 0x91, 0xb6, 0x27, 0xfd, 0xdb, 0x70, 0xca, 0x89, 0x2e, 0xed, 0x34, 0x06, 0xc9, 0x69, 0x75, + 0xd2, 0x89, 0xac, 0x6d, 0x8b, 0xac, 0xe5, 0x26, 0x33, 0x18, 0x24, 0x67, 0x02, 0xb2, 0x90, 0x43, + 0x3a, 0xe1, 0xf5, 0x99, 0xc5, 0x20, 0x39, 0xab, 0x8e, 0x3b, 0xa1, 0xf5, 0xf1, 0x49, 0x5a, 0x7c, + 0x10, 0x06, 0x49, 0xe4, 0x91, 0x04, 0x5c, 0x64, 0x38, 0x6f, 0x13, 0x8b, 0x68, 0xdc, 0x26, 0x11, + 0x97, 0x99, 0xc3, 0xf1, 0xe4, 0x98, 0x3a, 0x17, 0x0c, 0xde, 0x0d, 0xb9, 0xce, 0x2a, 0x1c, 0xa7, + 0x26, 0xe1, 0xb9, 0x07, 0x8f, 0xf7, 0x0b, 0xa7, 0xc4, 0x29, 0x76, 0x3a, 0xe3, 0xc5, 0xc9, 0x4c, + 0x10, 0x27, 0x33, 0x1b, 0x7c, 0xf4, 0x9d, 0x01, 0x15, 0x0a, 0x62, 0xd1, 0x42, 0xaf, 0xc0, 0x09, + 0x6f, 0xaa, 0x27, 0x6b, 0x61, 0x9e, 0x3b, 0xe6, 0x3b, 0x03, 0xaa, 0xc7, 0xd0, 0x13, 0x82, 0x08, + 0x1c, 0xab, 0x69, 0x96, 0x8f, 0xe3, 0xb4, 0x38, 0x58, 0xde, 0x39, 0xc1, 0xc1, 0xf2, 0xbe, 0x66, + 0x09, 0xdc, 0x1b, 0x26, 0xb3, 0xeb, 0xea, 0x68, 0xcd, 0x6f, 0xa2, 0xef, 0x03, 0x38, 0x57, 0xe3, + 0x39, 0x47, 0x9b, 0xe6, 0x67, 0x84, 0xc4, 0x3b, 0x27, 0x93, 0x68, 0x45, 0x4c, 0xe6, 0x89, 0x9e, + 0xad, 0xb5, 0xf7, 0x87, 0x31, 0xf8, 0x8e, 0xe9, 0x61, 0x58, 0x78, 0x41, 0x18, 0x3c, 0xb7, 0xec, + 0xc4, 0x10, 0xea, 0x47, 0x79, 0xb8, 0x60, 0x52, 0x73, 0x8d, 0x9a, 0x3c, 0x9d, 0x30, 0xa8, 0xa9, + 0x55, 0xb7, 0xb4, 0x9a, 0x77, 0x2c, 0x2e, 0x24, 0xc4, 0xc1, 0xd1, 0x73, 0x1c, 0xad, 0xc1, 0xe9, + 0x56, 0x3a, 0xe4, 0x43, 0x3f, 0x27, 0xdc, 0x21, 0xd1, 0xe1, 0x0e, 0xf7, 0x02, 0x3a, 0x75, 0xaa, + 0x35, 0xc5, 0x63, 0x42, 0x60, 0xcb, 0xcd, 0xc2, 0x5b, 0x72, 0x11, 0xc7, 0x9f, 0xff, 0x3c, 0x99, + 0x0d, 0x38, 0x1e, 0x6e, 0xbf, 0xbf, 0x06, 0x70, 0x21, 0x2a, 0xe7, 0x30, 0x3b, 0x5b, 0xc0, 0x27, + 0x10, 0x56, 0x58, 0x6f, 0x2a, 0x4a, 0xea, 0x9c, 0xea, 0xf3, 0xc6, 0xa6, 0x37, 0x84, 0xb9, 0x0c, + 0xcc, 0x0c, 0x56, 0x25, 0xb2, 0xd4, 0x7d, 0x50, 0x27, 0x4e, 0xc9, 0x36, 0x44, 0xae, 0x98, 0x51, + 0x4f, 0x87, 0x21, 0x2b, 0x2d, 0x68, 0xe8, 0x2b, 0x00, 0xe7, 0x0f, 0xcd, 0x12, 0x06, 0xfd, 0xf2, + 0x09, 0x4e, 0xdc, 0x82, 0xdc, 0x54, 0xb2, 0x29, 0xb4, 0xd5, 0x89, 0xf5, 0xec, 0x56, 0x4f, 0x88, + 0x73, 0xad, 0x53, 0x3a, 0x84, 0x6f, 0x0f, 0x26, 0xda, 0x8f, 0x90, 0x10, 0x46, 0x89, 0x9f, 0x23, + 0x85, 0xab, 0x4d, 0xe5, 0x72, 0x6a, 0xbe, 0x65, 0x04, 0x8f, 0xcc, 0x97, 0xb7, 0xd8, 0xde, 0x1d, + 0x11, 0xb9, 0x10, 0x3d, 0x81, 0x42, 0x72, 0x7f, 0x0c, 0x42, 0x82, 0xfd, 0xdd, 0x13, 0x12, 0xfc, + 0xca, 0x0b, 0xca, 0x48, 0x0a, 0xd7, 0x9b, 0xca, 0x5a, 0xea, 0x10, 0xa4, 0x27, 0x09, 0x53, 0x91, + 0x7b, 0xfa, 0x2a, 0xbc, 0xd2, 0x63, 0xb4, 0xbb, 0x26, 0x1e, 0xdf, 0x90, 0x26, 0x7f, 0x02, 0xe0, + 0x6c, 0xa7, 0x02, 0x17, 0x5e, 0x50, 0x76, 0x58, 0xc8, 0x35, 0x95, 0xe5, 0xd4, 0xdc, 0x56, 0x17, + 0xdc, 0x89, 0xad, 0xde, 0x70, 0x67, 0xcc, 0x76, 0x98, 0x57, 0xe0, 0x9c, 0x17, 0x4d, 0xe8, 0x1e, + 0xb1, 0x6d, 0x43, 0x27, 0xdb, 0xac, 0x6e, 0x91, 0x85, 0x6f, 0xf3, 0x5c, 0xa9, 0x30, 0xd2, 0x54, + 0x06, 0xff, 0x30, 0x06, 0xe2, 0xea, 0xac, 0xa0, 0xb9, 0xe5, 0x93, 0xdc, 0xab, 0x5b, 0x24, 0xf1, + 0x6f, 0x00, 0x0e, 0xfb, 0xb9, 0x29, 0x82, 0x83, 0xa6, 0x56, 0xf3, 0x72, 0xf5, 0x31, 0x55, 0x7c, + 0xa3, 0xd3, 0x70, 0x58, 0xab, 0x51, 0xd7, 0x64, 0x22, 0xf9, 0x9e, 0x54, 0xfd, 0x16, 0xda, 0x83, + 0x31, 0xba, 0x2b, 0x32, 0xbf, 0x29, 0xf9, 0xe6, 0x89, 0xcd, 0x90, 0x59, 0x27, 0xc4, 0x12, 0x9e, + 0x9f, 0x68, 0x2a, 0x67, 0xe4, 0xf9, 0xa0, 0x19, 0xd5, 0x3a, 0x46, 0x77, 0xa5, 0xf3, 0x70, 0x34, + 0x18, 0x44, 0x63, 0x70, 0xe8, 0xba, 0xf2, 0xde, 0xdd, 0x8d, 0x99, 0x01, 0x34, 0x0a, 0x07, 0xef, + 0xa9, 0x1f, 0x6c, 0xcc, 0x80, 0xfc, 0x5c, 0x53, 0x99, 0xc9, 0x4f, 0x1d, 0x48, 0x74, 0x57, 0xca, + 0x63, 0x89, 0x77, 0x4a, 0x8d, 0x84, 0x0d, 0x27, 0x23, 0x91, 0x06, 0xcd, 0xc0, 0xf8, 0x2e, 0xa9, + 0xfb, 0x9a, 0xf2, 0x4f, 0x5e, 0x05, 0x79, 0x47, 0x5b, 0xec, 0x24, 0xa9, 0x92, 0xc7, 0x23, 0x1f, + 0xbb, 0x0a, 0x12, 0xeb, 0xf0, 0x74, 0xf7, 0x58, 0xd3, 0x45, 0xf8, 0xa9, 0xb0, 0xf0, 0xb1, 0x30, + 0x97, 0x5f, 0x07, 0x01, 0x9b, 0xf6, 0x70, 0xd1, 0x85, 0xcd, 0xf7, 0xc2, 0x6c, 0x5e, 0x48, 0xc6, + 0x7f, 0x88, 0x24, 0xff, 0x7b, 0xb1, 0xa6, 0xf2, 0xdb, 0x31, 0xf8, 0x2b, 0x20, 0x35, 0xa7, 0xe0, + 0xa2, 0xc1, 0x30, 0x2d, 0xe3, 0xc3, 0x0b, 0x0e, 0x79, 0x73, 0xd3, 0x64, 0x41, 0x0c, 0xaa, 0xe3, + 0x12, 0xad, 0x59, 0x55, 0xa3, 0x24, 0xb6, 0x9d, 0x5f, 0x77, 0x61, 0xee, 0x90, 0x98, 0x51, 0x5c, + 0xe2, 0x2e, 0x8a, 0x6b, 0x9a, 0x59, 0xc7, 0x65, 0xa2, 0x31, 0xd7, 0x26, 0x0e, 0xe7, 0x75, 0x3b, + 0x08, 0x46, 0x4f, 0x81, 0x28, 0x60, 0x9e, 0x82, 0x70, 0xd6, 0xff, 0x14, 0x44, 0xca, 0x84, 0xd4, + 0x87, 0xf0, 0xc2, 0x75, 0xc3, 0xd4, 0x31, 0x75, 0x19, 0xae, 0x51, 0x9b, 0x60, 0xad, 0xc8, 0x3f, + 0x3b, 0xea, 0xba, 0x4c, 0x85, 0x31, 0xcb, 0xc9, 0x67, 0xb3, 0x3b, 0x06, 0xab, 0xb8, 0xc5, 0x4c, + 0x89, 0xd6, 0xb2, 0xdc, 0x2a, 0x69, 0x52, 0xa2, 0x4e, 0xdd, 0x61, 0xc4, 0x6f, 0xfa, 0x46, 0xca, + 0x2f, 0x1d, 0x48, 0x5c, 0x38, 0xf7, 0x9d, 0xa5, 0x52, 0x79, 0xe5, 0x8d, 0x65, 0xb2, 0x9c, 0xce, + 0x15, 0x73, 0xb9, 0x74, 0xee, 0xea, 0x8a, 0x9e, 0xd6, 0x96, 0x2f, 0xaf, 0xa6, 0x2f, 0xe7, 0x74, + 0xad, 0xa8, 0x97, 0xaf, 0x90, 0xab, 0xcb, 0x39, 0xa9, 0x51, 0x98, 0x0c, 0x32, 0x2e, 0x01, 0x4c, + 0xfa, 0xe5, 0x31, 0xb8, 0xd0, 0x8e, 0x22, 0x38, 0x81, 0xd0, 0x2a, 0x3c, 0x2b, 0x92, 0xdb, 0xd6, + 0xd1, 0x18, 0x2e, 0xa3, 0x00, 0x8e, 0x27, 0x63, 0xea, 0x69, 0x4e, 0x10, 0x4c, 0xb8, 0x7e, 0x58, + 0x27, 0x5d, 0x83, 0x89, 0xe8, 0xd4, 0x48, 0xd5, 0xc4, 0x4b, 0x3c, 0xa0, 0x9e, 0x09, 0xcf, 0x5d, + 0x0f, 0x55, 0x50, 0x1d, 0x72, 0xc3, 0x99, 0x67, 0x1c, 0xc7, 0x93, 0xf1, 0xa8, 0xdc, 0xcd, 0xc3, + 0x24, 0xb4, 0x43, 0x6e, 0xa4, 0xd2, 0x1a, 0xc4, 0xf1, 0xe4, 0x60, 0x54, 0xee, 0x07, 0xa1, 0x0c, + 0xb6, 0x9b, 0xdc, 0x56, 0x52, 0x3c, 0x84, 0xe3, 0xc9, 0xa1, 0x0e, 0xb9, 0x41, 0x7e, 0xfc, 0x26, + 0x3c, 0xd7, 0x66, 0xaa, 0x48, 0xda, 0x3d, 0x8c, 0xe3, 0xc9, 0x61, 0x75, 0x21, 0x62, 0xac, 0x70, + 0x06, 0xde, 0x7d, 0x7a, 0xa8, 0xfe, 0x8b, 0x27, 0x47, 0xba, 0x4c, 0x0f, 0xa4, 0x5f, 0x81, 0x0b, + 0xd1, 0xe9, 0xa1, 0x8a, 0x6e, 0x14, 0xc7, 0x93, 0xa3, 0xea, 0x7c, 0x78, 0x6e, 0xa1, 0x55, 0xdd, + 0x75, 0x98, 0x2b, 0x92, 0xbe, 0x8e, 0x89, 0xc4, 0x3d, 0x62, 0xae, 0x68, 0xf2, 0xde, 0x66, 0xae, + 0x70, 0x15, 0x08, 0x71, 0x3c, 0x39, 0x11, 0x35, 0x57, 0xe1, 0xb0, 0x22, 0xec, 0xba, 0x4c, 0x2d, + 0x75, 0xc7, 0x71, 0x3c, 0x39, 0xd9, 0xb9, 0x4c, 0x81, 0xb6, 0x66, 0xbb, 0xb6, 0xa1, 0x4c, 0x6f, + 0xe2, 0x24, 0x99, 0x5e, 0xc4, 0x48, 0x87, 0xd9, 0xde, 0x5b, 0x70, 0xb1, 0xcd, 0x48, 0xd1, 0xd5, + 0x99, 0xc4, 0xf1, 0xe4, 0xb4, 0x7a, 0x36, 0x62, 0xa6, 0x48, 0x19, 0xd6, 0x83, 0x41, 0xcb, 0x3b, + 0xa6, 0x70, 0x3c, 0x39, 0xd3, 0x8d, 0x41, 0x4f, 0xaf, 0x8e, 0x94, 0x6b, 0xd3, 0x38, 0x9e, 0x9c, + 0x6d, 0x5b, 0xa6, 0x90, 0xb9, 0xba, 0x4e, 0x0e, 0x15, 0x84, 0xf1, 0x24, 0xea, 0x9c, 0xec, 0x4b, + 0xce, 0xeb, 0x4d, 0x45, 0xcb, 0x6f, 0x1f, 0x48, 0xbd, 0xdc, 0x4b, 0xca, 0xe3, 0x07, 0xcc, 0x76, + 0xc9, 0x25, 0xec, 0xfd, 0x5f, 0xd6, 0xaa, 0x8e, 0xdf, 0x78, 0x78, 0x09, 0x4b, 0x3d, 0xb7, 0x13, + 0x9f, 0xb7, 0x7c, 0x09, 0xcb, 0x97, 0xf0, 0xca, 0xc3, 0x86, 0x94, 0x80, 0x83, 0x05, 0xaa, 0xd7, + 0xbb, 0x85, 0x74, 0x89, 0xc0, 0x69, 0xbf, 0x42, 0xfe, 0x9e, 0xc1, 0x2a, 0x82, 0x6c, 0x0a, 0xc6, + 0x82, 0x3b, 0x29, 0x35, 0x66, 0xe8, 0xa8, 0x00, 0x07, 0x75, 0x8d, 0x69, 0x7e, 0x1c, 0xc9, 0x1c, + 0x7f, 0xf1, 0x39, 0x37, 0x55, 0xcc, 0x95, 0xfe, 0x08, 0xc0, 0xe9, 0x0f, 0x2c, 0x5d, 0x63, 0xe4, + 0x43, 0x59, 0xf5, 0x6e, 0x3c, 0xd1, 0x7b, 0x30, 0xae, 0x15, 0x3d, 0x34, 0xe3, 0x72, 0xfe, 0xf9, + 0xc3, 0x93, 0xca, 0xd9, 0xa0, 0x6b, 0x70, 0xdc, 0x15, 0x02, 0xc4, 0xc5, 0xb7, 0x0f, 0xb6, 0xb3, + 0xb8, 0xb9, 0x6e, 0x90, 0xaa, 0xfe, 0xbe, 0xe6, 0xec, 0xaa, 0xd0, 0x23, 0xe7, 0xdf, 0xd2, 0x0e, + 0xb7, 0x10, 0xdd, 0xed, 0x9a, 0xf4, 0x78, 0xe6, 0x88, 0xb5, 0xcc, 0x71, 0x0d, 0x8e, 0x97, 0x6c, + 0x6e, 0xf1, 0x6d, 0x5e, 0x1d, 0x89, 0xac, 0xe7, 0xd9, 0x55, 0x14, 0xf4, 0xc8, 0x79, 0x87, 0xf4, + 0x03, 0x00, 0x67, 0xd7, 0x44, 0x93, 0xcb, 0x0b, 0x2c, 0x71, 0x1a, 0x0e, 0x5b, 0x9a, 0x4d, 0x4c, + 0xe6, 0x0b, 0xf6, 0x5b, 0xdc, 0xf2, 0x45, 0x4a, 0x77, 0x9f, 0xc7, 0xf2, 0x74, 0x57, 0x15, 0x73, + 0xd1, 0x19, 0x38, 0xc2, 0xff, 0x6e, 0x1b, 0xba, 0x80, 0x3a, 0xa6, 0x0e, 0xf3, 0xe6, 0xa6, 0x9e, + 0xc2, 0x70, 0x3c, 0xb4, 0x3b, 0x79, 0xd2, 0x74, 0x7f, 0x43, 0xbd, 0x35, 0x33, 0x80, 0x46, 0x60, + 0xfc, 0xd6, 0xd6, 0xc6, 0x0c, 0x90, 0x7f, 0x2d, 0x09, 0xcf, 0xb4, 0x1b, 0xfb, 0x2e, 0xb1, 0xf7, + 0x8c, 0x12, 0x41, 0x9f, 0x0f, 0xc2, 0x61, 0x4f, 0x11, 0x74, 0x82, 0xa5, 0x4b, 0x9c, 0x60, 0xae, + 0xf4, 0xb3, 0xd8, 0x2f, 0xfd, 0xcb, 0xbf, 0xff, 0x4e, 0xec, 0xeb, 0x98, 0xf4, 0xdf, 0xb1, 0xec, + 0xde, 0x72, 0xf0, 0x9b, 0x4b, 0xb7, 0x5f, 0x5c, 0xb2, 0x07, 0xa1, 0xd8, 0xda, 0xc8, 0x1e, 0x84, + 0xc3, 0x65, 0x23, 0x7b, 0x10, 0xda, 0xb1, 0x8d, 0xac, 0x43, 0x2c, 0xcd, 0xd6, 0x18, 0xb5, 0xb3, + 0x07, 0x6e, 0x64, 0xe0, 0x20, 0xb4, 0xc1, 0x1a, 0xd9, 0x83, 0xc8, 0x21, 0x13, 0xb4, 0x43, 0xe3, + 0x87, 0xbb, 0xb8, 0x91, 0x3d, 0x08, 0x1f, 0xfc, 0x6f, 0x3a, 0xcc, 0xb6, 0x6c, 0x52, 0x36, 0xf6, + 0xb3, 0xa9, 0x86, 0x27, 0x24, 0x34, 0xcd, 0x69, 0xe7, 0xe3, 0xb4, 0x0b, 0x72, 0xda, 0x26, 0x44, + 0x41, 0xf6, 0xba, 0x01, 0x68, 0x64, 0x0f, 0x0e, 0x0f, 0xf2, 0x46, 0xf6, 0xa0, 0xed, 0x5e, 0x8d, + 0xcf, 0xec, 0x7a, 0xe1, 0x16, 0x99, 0x17, 0xaa, 0x7a, 0x1a, 0xe8, 0xaf, 0x00, 0x84, 0x81, 0x2f, + 0xeb, 0xf5, 0x6f, 0xcc, 0x0d, 0x52, 0xc2, 0x0b, 0x2e, 0x48, 0xe7, 0x8f, 0xf0, 0x81, 0x3c, 0x48, + 0xa1, 0x3f, 0x0b, 0x41, 0xa6, 0xbb, 0xe8, 0xda, 0xf1, 0xc5, 0x76, 0x6c, 0xda, 0x44, 0x9f, 0xdb, + 0x51, 0x4a, 0x0b, 0x9c, 0xaf, 0x79, 0x38, 0x0f, 0xbc, 0x1d, 0xfe, 0xa6, 0xe5, 0x16, 0xab, 0x86, + 0x53, 0x21, 0xb6, 0xc3, 0x7d, 0x81, 0xef, 0x4c, 0x27, 0xef, 0xed, 0xdb, 0x5f, 0x05, 0x70, 0xf8, + 0x3d, 0x4a, 0x77, 0x5d, 0x0b, 0x4d, 0x67, 0x1c, 0xb7, 0x28, 0x67, 0x36, 0x75, 0xff, 0xa4, 0x3e, + 0x91, 0xb9, 0x32, 0x02, 0x46, 0x12, 0xbd, 0x7a, 0xe4, 0x96, 0xe1, 0xa9, 0x6f, 0x03, 0xfd, 0x16, + 0x80, 0xc3, 0xde, 0xc9, 0x7d, 0xa2, 0x15, 0xee, 0x71, 0xeb, 0x28, 0x2d, 0x0b, 0x38, 0xaf, 0x27, + 0x8e, 0x09, 0x87, 0x2f, 0xe2, 0xcf, 0x00, 0x1c, 0x0d, 0x62, 0x09, 0x5a, 0x3d, 0x3e, 0xa6, 0xb6, + 0xf8, 0xd3, 0x13, 0xd2, 0x57, 0x40, 0x60, 0xfa, 0x7d, 0x90, 0x48, 0x65, 0xf7, 0xe4, 0x67, 0x83, + 0xd2, 0x8a, 0x24, 0xe3, 0x01, 0xe3, 0x41, 0xe8, 0xfe, 0xb2, 0xdc, 0xf7, 0x94, 0x25, 0xf9, 0xf5, + 0xec, 0x9e, 0xac, 0x1d, 0x77, 0x0e, 0x48, 0xa1, 0x3f, 0x05, 0x70, 0x78, 0x9d, 0x54, 0x09, 0x23, + 0x9d, 0x9e, 0xd1, 0x4b, 0x27, 0xbb, 0xa9, 0x28, 0xc5, 0x8b, 0x70, 0x0a, 0x42, 0xc5, 0x32, 0xde, + 0x25, 0x75, 0xc5, 0x65, 0x15, 0x34, 0x00, 0xcf, 0xc0, 0xe1, 0x5b, 0xfc, 0x53, 0x46, 0x93, 0x70, + 0xd0, 0x26, 0x9a, 0x0e, 0x87, 0x1e, 0xdb, 0x06, 0x23, 0x9f, 0x9e, 0x82, 0x53, 0xfb, 0x69, 0xc3, + 0xb6, 0x39, 0x08, 0xc7, 0x28, 0x56, 0x09, 0x8a, 0x61, 0xcf, 0x2c, 0xc9, 0xd4, 0x71, 0x3d, 0xe7, + 0xbf, 0x00, 0x1c, 0xbd, 0x41, 0xd8, 0x1d, 0x97, 0xd8, 0xf5, 0xff, 0x17, 0xdf, 0xf9, 0x0d, 0xd0, + 0x54, 0xee, 0x49, 0x5b, 0x70, 0xb1, 0x5b, 0xf1, 0xd7, 0x92, 0xdc, 0x67, 0xd1, 0xf7, 0x11, 0x28, + 0x0e, 0x08, 0x45, 0x33, 0xe8, 0xd2, 0x51, 0x8a, 0x7e, 0xc6, 0x05, 0x04, 0xea, 0x7e, 0x35, 0x04, + 0x67, 0x6e, 0x10, 0x16, 0xa4, 0x79, 0x9e, 0xf0, 0xc2, 0x09, 0xd2, 0x1a, 0x9f, 0x51, 0xe2, 0x05, + 0xf0, 0x90, 0x3e, 0x1f, 0x14, 0x3a, 0xfd, 0x4f, 0x1c, 0x7d, 0x1d, 0x3f, 0x42, 0xab, 0x56, 0x42, + 0xe9, 0xc7, 0x88, 0x6e, 0xe5, 0x69, 0xa3, 0x7d, 0xac, 0x2d, 0xa0, 0xf6, 0xac, 0x2f, 0x3b, 0xc6, + 0xdc, 0x67, 0x0d, 0x46, 0x03, 0xdd, 0x33, 0x2a, 0xc0, 0xee, 0xa3, 0x3d, 0xe7, 0x46, 0x42, 0x73, + 0xef, 0x0a, 0xad, 0x73, 0xde, 0x61, 0x05, 0xd6, 0x55, 0x91, 0x9e, 0x02, 0x3b, 0x23, 0x6f, 0x8f, + 0x6a, 0xa7, 0xc7, 0x70, 0x4f, 0x3d, 0x9d, 0x67, 0x49, 0x8d, 0x64, 0x06, 0xe8, 0xcb, 0x41, 0x38, + 0xb8, 0x51, 0xaa, 0x50, 0x74, 0xe4, 0xaf, 0x73, 0x8e, 0x5b, 0xcc, 0x78, 0x95, 0x68, 0x70, 0xac, + 0xf4, 0x3f, 0x45, 0xfa, 0x8b, 0x78, 0x53, 0xf9, 0xc7, 0x18, 0x1c, 0x25, 0xa5, 0x0a, 0xc5, 0xb6, + 0x55, 0x42, 0xb3, 0x77, 0xdd, 0x5a, 0x4d, 0xb3, 0xeb, 0x79, 0xbc, 0xe1, 0x77, 0x25, 0x66, 0xd6, + 0x0f, 0x6f, 0xf4, 0x44, 0xaf, 0xb4, 0x0e, 0x51, 0x74, 0x33, 0x0b, 0xc4, 0x7d, 0x6e, 0xe1, 0x9b, + 0xab, 0x30, 0x2e, 0x2f, 0x2d, 0x21, 0x59, 0x5a, 0x82, 0x33, 0x9a, 0xe5, 0xdd, 0x3d, 0x19, 0xd4, + 0xcc, 0x7e, 0xea, 0x50, 0x13, 0x2d, 0x1e, 0x48, 0x41, 0x8d, 0x24, 0xb1, 0x0a, 0xc1, 0x86, 0x69, + 0xb9, 0xfe, 0x8f, 0xd4, 0x52, 0xe3, 0xe6, 0x87, 0x30, 0x7e, 0x79, 0x69, 0x05, 0xdd, 0x82, 0x6f, + 0xa8, 0x84, 0xb9, 0xb6, 0x49, 0x74, 0xfc, 0xb8, 0x42, 0x4c, 0xcc, 0x29, 0x6d, 0xe2, 0x50, 0xd7, + 0x2e, 0x11, 0x6c, 0x38, 0x98, 0x91, 0x9a, 0x45, 0x6d, 0xcd, 0x36, 0xaa, 0x75, 0xec, 0x9a, 0xda, + 0x9e, 0x66, 0x54, 0xb5, 0x62, 0x95, 0x64, 0x52, 0xf3, 0x70, 0x74, 0x3f, 0x6d, 0xba, 0xb5, 0x22, + 0xb1, 0xd1, 0xd8, 0xec, 0x80, 0xf8, 0xf7, 0xf1, 0xdb, 0x37, 0xaf, 0xc1, 0x78, 0x6e, 0x29, 0x87, + 0x72, 0x30, 0xf5, 0x0c, 0xbe, 0x3a, 0x25, 0x0e, 0x36, 0x29, 0xc3, 0x64, 0xdf, 0x70, 0x58, 0x06, + 0x0d, 0x43, 0x71, 0x53, 0x2b, 0xb6, 0xee, 0xc3, 0xa3, 0x8f, 0x23, 0x6e, 0xea, 0xec, 0x81, 0xb7, + 0xdc, 0xf7, 0xcf, 0x4a, 0x33, 0xe1, 0x50, 0xc4, 0xc7, 0xf2, 0xde, 0x05, 0xde, 0x7d, 0x84, 0x3a, + 0x86, 0xd0, 0x8f, 0x01, 0x9c, 0x58, 0x27, 0xc4, 0x12, 0x3f, 0x84, 0xf2, 0x8e, 0x6f, 0x2a, 0x9d, + 0x7b, 0x4b, 0x68, 0xbb, 0x2a, 0xe5, 0x8e, 0x8c, 0x32, 0x91, 0x27, 0x1a, 0x19, 0x5e, 0xab, 0x89, + 0xf0, 0xa8, 0x40, 0xb8, 0x45, 0x0b, 0x86, 0xa9, 0x1b, 0xe6, 0x8e, 0x83, 0xce, 0x76, 0xc4, 0x8e, + 0x75, 0xff, 0x79, 0x53, 0xcf, 0xb0, 0x32, 0x80, 0x3e, 0x84, 0x23, 0xbc, 0x5a, 0xa3, 0x2e, 0x43, + 0x3d, 0x88, 0x7a, 0x4e, 0x3e, 0x27, 0xe0, 0xcf, 0xa3, 0xb9, 0xb0, 0x85, 0x99, 0xcf, 0xac, 0x02, + 0x67, 0xc4, 0x73, 0x18, 0x5e, 0x6a, 0xaf, 0x13, 0xa6, 0x19, 0x55, 0xa7, 0x6f, 0x01, 0x17, 0x84, + 0x80, 0x97, 0xd0, 0x62, 0x64, 0x09, 0x39, 0xd7, 0xc7, 0x06, 0xab, 0xe8, 0x3e, 0xd7, 0x1f, 0x02, + 0x88, 0x6e, 0x10, 0xd6, 0x5e, 0xda, 0xf7, 0x91, 0x2d, 0xb5, 0x4d, 0xed, 0x89, 0xe7, 0x35, 0x81, + 0xe7, 0x65, 0xe9, 0x6c, 0x18, 0x0f, 0x87, 0x52, 0xa4, 0x7a, 0x3d, 0x7b, 0xc0, 0x73, 0x16, 0x71, + 0x05, 0x80, 0x7e, 0x13, 0xc0, 0xd9, 0xdb, 0xd4, 0x61, 0x9c, 0xa3, 0x98, 0x2a, 0x10, 0xf5, 0x79, + 0x9d, 0xd0, 0x13, 0x46, 0x56, 0xc0, 0xb8, 0x28, 0x5d, 0x08, 0xc3, 0xb0, 0xa8, 0xc3, 0x38, 0x14, + 0xf1, 0xf3, 0xb7, 0x87, 0xa7, 0xe5, 0x26, 0x3f, 0x01, 0x70, 0x6e, 0xad, 0x42, 0x4a, 0xbb, 0x41, + 0xa2, 0x70, 0x5b, 0xb3, 0xb5, 0x9a, 0xf3, 0x8d, 0xf9, 0xfd, 0x0d, 0xa1, 0x80, 0x82, 0xde, 0x3a, + 0xca, 0xef, 0x2d, 0x81, 0x33, 0xbb, 0x43, 0x58, 0xd7, 0x2d, 0x80, 0xfe, 0x13, 0xc0, 0x6f, 0x09, + 0xc5, 0xbc, 0x5b, 0x7b, 0x5e, 0xdc, 0xff, 0x9c, 0xa8, 0x78, 0x47, 0xa8, 0xf8, 0x2e, 0xda, 0xec, + 0x43, 0x45, 0xbf, 0x28, 0x15, 0xef, 0x08, 0xdb, 0xd4, 0xa5, 0xbb, 0x0d, 0xf4, 0x53, 0x00, 0x4f, + 0x09, 0x65, 0xb9, 0x67, 0xfd, 0x1c, 0xe9, 0x28, 0xe5, 0x8f, 0xa9, 0x23, 0x77, 0xd1, 0xe8, 0xf5, + 0x40, 0x23, 0x1f, 0x7d, 0x7c, 0x86, 0xbe, 0x04, 0x70, 0xf1, 0xd6, 0x1e, 0xb1, 0x45, 0x66, 0x1e, + 0x3c, 0x70, 0x5b, 0xa3, 0xe2, 0x17, 0x96, 0x7b, 0x75, 0x8b, 0xf4, 0x3c, 0x42, 0x16, 0x3b, 0xfa, + 0x43, 0xf7, 0xcb, 0xd2, 0x46, 0x53, 0x41, 0xf9, 0x48, 0x78, 0x64, 0x64, 0x9f, 0x09, 0xf8, 0x29, + 0x94, 0x0c, 0x6f, 0x23, 0x1a, 0x08, 0xb7, 0x7d, 0xe1, 0x25, 0x4f, 0x38, 0xe3, 0xc2, 0x7f, 0x00, + 0xe0, 0xbc, 0x58, 0x81, 0x8d, 0x7d, 0xcf, 0x3a, 0xc1, 0x53, 0x1a, 0xf4, 0x9d, 0x7e, 0xdf, 0xe8, + 0xf0, 0x93, 0x21, 0x98, 0xdd, 0x73, 0xa3, 0x9f, 0x15, 0x08, 0xe7, 0xd0, 0x2c, 0x47, 0xe8, 0x07, + 0xbb, 0x7c, 0x89, 0x03, 0x40, 0xbf, 0x0b, 0xe0, 0xb9, 0x08, 0x94, 0xe8, 0x5b, 0x9f, 0xa3, 0x93, + 0xf1, 0x6e, 0x80, 0xa2, 0x3c, 0x9e, 0x03, 0x56, 0xe2, 0xef, 0x41, 0x53, 0xf9, 0x3b, 0x80, 0xca, + 0x3d, 0xae, 0xd2, 0xc2, 0x3f, 0x6b, 0xe2, 0x74, 0x1a, 0x3f, 0xae, 0x18, 0xa5, 0x0a, 0x76, 0x2a, + 0xd4, 0xad, 0xea, 0x22, 0x19, 0x28, 0x12, 0xec, 0x3a, 0x44, 0xc7, 0x86, 0x89, 0xad, 0xaa, 0x56, + 0x22, 0x98, 0x96, 0x45, 0xda, 0xa0, 0xd3, 0x92, 0x5b, 0x23, 0xa6, 0x77, 0x1d, 0x83, 0x4b, 0xb4, + 0xc6, 0x1b, 0x2f, 0x27, 0xee, 0xc0, 0xf3, 0xdd, 0xea, 0x21, 0x1e, 0xd4, 0x83, 0xcb, 0xbb, 0x3e, + 0xf3, 0x29, 0xf9, 0x53, 0x78, 0xaa, 0xa4, 0xd5, 0x48, 0x75, 0x4d, 0x73, 0x88, 0xcf, 0x63, 0x4b, + 0xab, 0x11, 0xa4, 0xc2, 0x21, 0xef, 0xb5, 0x50, 0xbf, 0x41, 0x2c, 0x62, 0xad, 0x56, 0x10, 0xe3, + 0x43, 0xf2, 0x27, 0x70, 0x51, 0x31, 0x29, 0xab, 0x10, 0xdb, 0x97, 0x24, 0x16, 0xe1, 0x30, 0xa0, + 0x7f, 0x37, 0x12, 0xde, 0xfb, 0x15, 0x3c, 0x50, 0xf8, 0xe1, 0x44, 0x53, 0xf9, 0xfe, 0x04, 0xfa, + 0x1a, 0xc0, 0x39, 0x05, 0x17, 0xbc, 0x5f, 0x2e, 0x43, 0xfb, 0xf7, 0x23, 0x78, 0x6a, 0x47, 0xbd, + 0xbd, 0x96, 0xbe, 0xe1, 0xa9, 0x8e, 0x2d, 0x9b, 0x8a, 0xa7, 0xab, 0x7d, 0x9a, 0x2c, 0x31, 0x63, + 0x52, 0x93, 0xbc, 0xed, 0xab, 0xc6, 0xa9, 0x53, 0x9f, 0xc0, 0x53, 0x85, 0xbb, 0xeb, 0x78, 0x25, + 0xbd, 0x56, 0xd5, 0x5c, 0x87, 0xe0, 0xf7, 0x8c, 0x12, 0x31, 0x1d, 0x82, 0xae, 0xf7, 0xc7, 0x39, + 0x5b, 0xac, 0xd2, 0x62, 0xb6, 0xa6, 0x39, 0x8c, 0xd8, 0xd9, 0xf7, 0x36, 0xd7, 0x36, 0xb6, 0xee, + 0x6e, 0x64, 0xd8, 0x3e, 0x93, 0xe3, 0xcb, 0x99, 0xa5, 0x3c, 0x86, 0xf3, 0xfb, 0x69, 0x87, 0xd6, + 0x88, 0xd0, 0xe6, 0xf0, 0x0b, 0x8d, 0x24, 0x86, 0xea, 0x9a, 0xae, 0x6b, 0xa9, 0x38, 0x88, 0x0d, + 0xca, 0x1d, 0x59, 0xb1, 0x7c, 0x3a, 0xdc, 0xb3, 0x9f, 0x2e, 0x53, 0x9a, 0xae, 0x19, 0x35, 0x92, + 0xef, 0xa0, 0xcc, 0xf7, 0xa0, 0x54, 0x6f, 0xf3, 0x0c, 0x77, 0x05, 0x6d, 0xc2, 0x1b, 0x9d, 0x19, + 0xae, 0xeb, 0x10, 0xfb, 0x30, 0xbb, 0xad, 0x68, 0x7b, 0x04, 0x5b, 0xc4, 0xae, 0x19, 0x8e, 0xc3, + 0x5d, 0x97, 0x51, 0xac, 0x95, 0x4a, 0xc4, 0x71, 0x22, 0xd9, 0x70, 0x46, 0x3d, 0x41, 0xce, 0x3c, + 0xa2, 0xde, 0x81, 0xf1, 0xdc, 0xf2, 0x55, 0x74, 0x13, 0x4e, 0x6e, 0xbe, 0x56, 0xc3, 0x1a, 0x66, + 0x44, 0xb3, 0x28, 0xcb, 0xa0, 0x55, 0x78, 0x25, 0xf1, 0x9c, 0x3f, 0x60, 0x3d, 0x8d, 0xf1, 0xe2, + 0x60, 0x09, 0xfd, 0x53, 0x0c, 0x4e, 0xdc, 0xf5, 0x5e, 0x6f, 0x8b, 0xc4, 0x0b, 0x5d, 0x83, 0xab, + 0x89, 0x2b, 0x7d, 0xbe, 0x94, 0x0e, 0x0e, 0xf2, 0xc4, 0xff, 0x02, 0xd8, 0xf1, 0x72, 0x1c, 0xfd, + 0x07, 0x80, 0x7f, 0x09, 0xfa, 0x78, 0x3d, 0x0e, 0xe1, 0x86, 0xc7, 0x3e, 0x8f, 0x1f, 0x1d, 0xe7, + 0x19, 0xf9, 0x23, 0x08, 0x6f, 0x6b, 0x8c, 0x23, 0xcb, 0xe3, 0x47, 0x2f, 0xe4, 0x3d, 0xf9, 0x23, + 0x34, 0xec, 0x45, 0xb1, 0x84, 0xf8, 0xc1, 0x5e, 0x3e, 0xe6, 0x73, 0xf6, 0xfb, 0x7f, 0x10, 0x87, + 0xd3, 0x70, 0xac, 0xa0, 0x39, 0x46, 0x49, 0x5c, 0x4a, 0xc5, 0x46, 0x01, 0xfc, 0x73, 0x10, 0xb9, + 0xa7, 0xfa, 0x12, 0x8c, 0xc6, 0x12, 0x63, 0x1f, 0xa5, 0x95, 0xdb, 0x9b, 0xe9, 0x77, 0x49, 0x1d, + 0xc7, 0x6e, 0x26, 0xe1, 0xe2, 0x7e, 0x5a, 0xab, 0x69, 0x4f, 0xa8, 0x99, 0xd6, 0x2c, 0xc3, 0x37, + 0x7a, 0x5a, 0x73, 0x59, 0x45, 0x04, 0xa5, 0xd1, 0xc4, 0x30, 0xe5, 0x0d, 0xf9, 0xe6, 0x23, 0xf8, + 0x52, 0x2f, 0x4a, 0x6a, 0x1b, 0x4f, 0x88, 0x8d, 0xbe, 0x9b, 0xfa, 0x0e, 0x9c, 0x86, 0x83, 0x62, + 0xde, 0x48, 0x62, 0x88, 0xd1, 0x5d, 0x62, 0xc2, 0x8b, 0x70, 0xf1, 0x90, 0x44, 0x25, 0x8e, 0x5b, + 0x65, 0xf7, 0x58, 0x75, 0xd3, 0xbc, 0xcb, 0x63, 0x9f, 0xee, 0xb4, 0x2a, 0xbb, 0xad, 0xb7, 0xe1, + 0x4f, 0x40, 0xeb, 0x12, 0xed, 0x9f, 0xc1, 0x68, 0x3c, 0x39, 0x28, 0xbf, 0x12, 0xec, 0xe8, 0xd0, + 0xf6, 0xcf, 0x0a, 0x3c, 0xd9, 0x16, 0xd3, 0xfc, 0xf9, 0xde, 0x44, 0x02, 0x42, 0xe1, 0x17, 0x61, + 0xc2, 0xbb, 0x93, 0x43, 0xe8, 0x86, 0xad, 0x99, 0xcc, 0xc1, 0xbc, 0xe1, 0xef, 0x14, 0xb8, 0xe8, + 0xdf, 0xd4, 0xa1, 0x39, 0x7f, 0x50, 0xb4, 0x82, 0xd1, 0x35, 0x38, 0xa4, 0xe9, 0x35, 0xc3, 0x44, + 0xf9, 0xc8, 0x54, 0x53, 0x8f, 0x90, 0x89, 0x8d, 0xc7, 0xc9, 0x0c, 0x87, 0xf1, 0x9a, 0x68, 0x8f, + 0x17, 0xc3, 0x65, 0x6a, 0xd7, 0x84, 0x1b, 0x16, 0xcf, 0xc3, 0xc9, 0xf0, 0xc2, 0x0c, 0xb4, 0xdf, + 0x1e, 0x16, 0x2f, 0xf6, 0xbc, 0x3f, 0x6c, 0x27, 0xb5, 0x37, 0xe1, 0x99, 0xf7, 0x0f, 0x63, 0x51, + 0xf8, 0x84, 0xed, 0xf7, 0x64, 0x7d, 0x72, 0x0e, 0xa2, 0xfd, 0x74, 0xb8, 0x87, 0x1f, 0x41, 0x68, + 0x28, 0x11, 0x2f, 0x6a, 0xf6, 0x93, 0x24, 0x3c, 0xd3, 0x36, 0x58, 0xd4, 0x9e, 0xa4, 0xab, 0x86, + 0xc3, 0xd0, 0xa4, 0x3c, 0x0e, 0x87, 0x12, 0x71, 0x6a, 0x12, 0x18, 0xc3, 0xe0, 0xfe, 0x58, 0x6b, + 0x3f, 0x16, 0x87, 0x45, 0x90, 0x58, 0xf9, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xed, 0x39, 0x13, + 0xfb, 0xce, 0x33, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/examples/internal/proto/examplepb/a_bit_of_everything.proto b/examples/internal/proto/examplepb/a_bit_of_everything.proto index d3f52ae5a24..fe2a44f87a1 100644 --- a/examples/internal/proto/examplepb/a_bit_of_everything.proto +++ b/examples/internal/proto/examplepb/a_bit_of_everything.proto @@ -170,6 +170,7 @@ option (grpc.gateway.protoc_gen_swagger.options.openapiv2_swagger) = { description: "Unique event identifier for server requests\n\nExample: `2438ac3c-37eb-4902-adef-ed16b4431030`\n\nPattern: `^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$`" type: "string" format: "uuid" + default: "\"2438ac3c-37eb-4902-adef-ed16b4431030\"" } }; schema: { @@ -204,8 +205,9 @@ message ErrorResponse{ string correlationId = 1 [(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { pattern: "^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$", title: "x-correlation-id", - description: "Unique event identifier for server requests" - format: "uuid" + description: "Unique event identifier for server requests", + format: "uuid", + example: "\"2438ac3c-37eb-4902-adef-ed16b4431030\"" }]; ErrorObject error = 2; } @@ -214,7 +216,7 @@ message ErrorObject{ int32 code = 1 [(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { pattern: "^[0-9]$", title: "code", - description: "Response code" + description: "Response code", format: "integer" }]; string message = 2 [(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { @@ -314,7 +316,6 @@ message ABitOfEverything { Nested nested_annotation = 36 [(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = {title: "Nested object title", description: "Nested object description."}]; int64 int64_override_type = 37 [(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = {type: INTEGER}]; - } // ABitOfEverythingRepeated is used to validate repeated path parameter functionality diff --git a/examples/internal/proto/examplepb/a_bit_of_everything.swagger.json b/examples/internal/proto/examplepb/a_bit_of_everything.swagger.json index 5673d040a1d..b5bfd4eb3d6 100644 --- a/examples/internal/proto/examplepb/a_bit_of_everything.swagger.json +++ b/examples/internal/proto/examplepb/a_bit_of_everything.swagger.json @@ -3305,6 +3305,7 @@ "correlationId": { "type": "string", "format": "uuid", + "example": "2438ac3c-37eb-4902-adef-ed16b4431030", "description": "Unique event identifier for server requests", "title": "x-correlation-id", "pattern": "^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$" diff --git a/go.mod b/go.mod index 7e31539ac27..f974afb318d 100644 --- a/go.mod +++ b/go.mod @@ -10,6 +10,7 @@ require ( github.com/rogpeppe/fastuuid v1.2.0 golang.org/x/net v0.0.0-20200822124328-c89045814202 // indirect golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d + golang.org/x/tools v0.0.0-20201008172056-03e951c4abd2 // indirect golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884 google.golang.org/grpc v1.32.0 diff --git a/go.sum b/go.sum index 44e684ba386..81921fe2175 100644 --- a/go.sum +++ b/go.sum @@ -27,19 +27,24 @@ github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/rogpeppe/fastuuid v1.2.0 h1:Ppwyp6VYCF1nvBTXL3trRso7mXMlRrw9ooo375wvi2s= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3 h1:XQyxROzUlZH+WIQwySDgnISgOivlhjIEwaQaJEJrrN0= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200822124328-c89045814202 h1:VvcQYSHwXgi7W+TpUR6A9g6Up98WAHf3f/ulnJ62IyA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be h1:vEDujvNQGv4jgYKudGeI/+DAX4Jffq6hpD55MmoEvKs= @@ -50,6 +55,7 @@ golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -63,6 +69,11 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135 h1:5Beo0mZN8dRzgrMMkDp0jc8YXQKx9DiJ2k1dkvGsn5A= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20201008172056-03e951c4abd2 h1:dsCKiisqD3p5CK4EdxImDYTywMPbdNmk4CXQ8qUfQ2c= +golang.org/x/tools v0.0.0-20201008172056-03e951c4abd2/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= diff --git a/protoc-gen-grpc-gateway/descriptor/grpc_api_configuration_test.go b/protoc-gen-grpc-gateway/descriptor/grpc_api_configuration_test.go index cc6cb441202..2976b17dac1 100644 --- a/protoc-gen-grpc-gateway/descriptor/grpc_api_configuration_test.go +++ b/protoc-gen-grpc-gateway/descriptor/grpc_api_configuration_test.go @@ -1,164 +1,164 @@ -package descriptor - -import ( - "strings" - "testing" -) - -func TestLoadGrpcAPIServiceFromYAMLEmpty(t *testing.T) { - service, err := loadGrpcAPIServiceFromYAML([]byte(``), "empty") - if err != nil { - t.Fatal(err) - } - - if service == nil { - t.Fatal("No service returned") - } - - if service.HTTP != nil { - t.Fatal("HTTP not empty") - } -} - -func TestLoadGrpcAPIServiceFromYAMLInvalidType(t *testing.T) { - // Ideally this would fail but for now this test documents that it doesn't - service, err := loadGrpcAPIServiceFromYAML([]byte(`type: not.the.right.type`), "invalidtype") - if err != nil { - t.Fatal(err) - } - - if service == nil { - t.Fatal("No service returned") - } -} - -func TestLoadGrpcAPIServiceFromYAMLSingleRule(t *testing.T) { - service, err := loadGrpcAPIServiceFromYAML([]byte(` -type: google.api.Service -config_version: 3 - -http: - rules: - - selector: grpctest.YourService.Echo - post: /v1/myecho - body: "*" -`), "example") - if err != nil { - t.Fatal(err) - } - - if service.HTTP == nil { - t.Fatal("HTTP is empty") - } - - if len(service.HTTP.GetRules()) != 1 { - t.Fatalf("Have %v rules instead of one. Got: %v", len(service.HTTP.GetRules()), service.HTTP.GetRules()) - } - - rule := service.HTTP.GetRules()[0] - if rule.GetSelector() != "grpctest.YourService.Echo" { - t.Errorf("Rule has unexpected selector '%v'", rule.GetSelector()) - } - if rule.GetPost() != "/v1/myecho" { - t.Errorf("Rule has unexpected post '%v'", rule.GetPost()) - } - if rule.GetBody() != "*" { - t.Errorf("Rule has unexpected body '%v'", rule.GetBody()) - } -} - -func TestLoadGrpcAPIServiceFromYAMLRejectInvalidYAML(t *testing.T) { - service, err := loadGrpcAPIServiceFromYAML([]byte(` -type: google.api.Service -config_version: 3 - -http: - rules: - - selector: grpctest.YourService.Echo - - post: thislinebreakstheselectorblockabovewiththeleadingdash - body: "*" -`), "invalidyaml") - if err == nil { - t.Fatal(err) - } - - if !strings.Contains(err.Error(), "line 7") { - t.Errorf("Expected yaml error to be detected in line 7. Got other error: %v", err) - } - - if service != nil { - t.Fatal("Service returned") - } -} - -func TestLoadGrpcAPIServiceFromYAMLMultipleWithAdditionalBindings(t *testing.T) { - service, err := loadGrpcAPIServiceFromYAML([]byte(` -type: google.api.Service -config_version: 3 - -http: - rules: - - selector: first.selector - post: /my/post/path - body: "*" - additional_bindings: - - post: /additional/post/path - - put: /additional/put/{value}/path - - delete: "{value}" - - patch: "/additional/patch/{value}" - - selector: some.other.service - delete: foo -`), "example") - if err != nil { - t.Fatalf("Failed to load service description from YAML: %v", err) - } - - if service == nil { - t.Fatal("No service returned") - } - - if service.HTTP == nil { - t.Fatal("HTTP is empty") - } - - if len(service.HTTP.GetRules()) != 2 { - t.Fatalf("%v service(s) returned when two were expected. Got: %v", len(service.HTTP.GetRules()), service.HTTP) - } - - first := service.HTTP.GetRules()[0] - if first.GetSelector() != "first.selector" { - t.Errorf("first.selector has unexpected selector '%v'", first.GetSelector()) - } - if first.GetBody() != "*" { - t.Errorf("first.selector has unexpected body '%v'", first.GetBody()) - } - if first.GetPost() != "/my/post/path" { - t.Errorf("first.selector has unexpected post '%v'", first.GetPost()) - } - if len(first.GetAdditionalBindings()) != 4 { - t.Fatalf("first.selector has unexpected number of bindings %v instead of four. Got: %v", len(first.GetAdditionalBindings()), first.GetAdditionalBindings()) - } - if first.GetAdditionalBindings()[0].GetPost() != "/additional/post/path" { - t.Errorf("first.selector additional binding 0 has unexpected post '%v'", first.GetAdditionalBindings()[0].GetPost()) - } - if first.GetAdditionalBindings()[1].GetPut() != "/additional/put/{value}/path" { - t.Errorf("first.selector additional binding 1 has unexpected put '%v'", first.GetAdditionalBindings()[0].GetPost()) - } - if first.GetAdditionalBindings()[2].GetDelete() != "{value}" { - t.Errorf("first.selector additional binding 2 has unexpected delete '%v'", first.GetAdditionalBindings()[0].GetPost()) - } - if first.GetAdditionalBindings()[3].GetPatch() != "/additional/patch/{value}" { - t.Errorf("first.selector additional binding 3 has unexpected patch '%v'", first.GetAdditionalBindings()[0].GetPost()) - } - - second := service.HTTP.GetRules()[1] - if second.GetSelector() != "some.other.service" { - t.Errorf("some.other.service has unexpected selector '%v'", second.GetSelector()) - } - if second.GetDelete() != "foo" { - t.Errorf("some.other.service has unexpected delete '%v'", second.GetDelete()) - } - if len(second.GetAdditionalBindings()) != 0 { - t.Errorf("some.other.service has %v additional bindings when it should not have any. Got: %v", len(second.GetAdditionalBindings()), second.GetAdditionalBindings()) - } -} +package descriptor + +import ( + "strings" + "testing" +) + +func TestLoadGrpcAPIServiceFromYAMLEmpty(t *testing.T) { + service, err := loadGrpcAPIServiceFromYAML([]byte(``), "empty") + if err != nil { + t.Fatal(err) + } + + if service == nil { + t.Fatal("No service returned") + } + + if service.HTTP != nil { + t.Fatal("HTTP not empty") + } +} + +func TestLoadGrpcAPIServiceFromYAMLInvalidType(t *testing.T) { + // Ideally this would fail but for now this test documents that it doesn't + service, err := loadGrpcAPIServiceFromYAML([]byte(`type: not.the.right.type`), "invalidtype") + if err != nil { + t.Fatal(err) + } + + if service == nil { + t.Fatal("No service returned") + } +} + +func TestLoadGrpcAPIServiceFromYAMLSingleRule(t *testing.T) { + service, err := loadGrpcAPIServiceFromYAML([]byte(` +type: google.api.Service +config_version: 3 + +http: + rules: + - selector: grpctest.YourService.Echo + post: /v1/myecho + body: "*" +`), "example") + if err != nil { + t.Fatal(err) + } + + if service.HTTP == nil { + t.Fatal("HTTP is empty") + } + + if len(service.HTTP.GetRules()) != 1 { + t.Fatalf("Have %v rules instead of one. Got: %v", len(service.HTTP.GetRules()), service.HTTP.GetRules()) + } + + rule := service.HTTP.GetRules()[0] + if rule.GetSelector() != "grpctest.YourService.Echo" { + t.Errorf("Rule has unexpected selector '%v'", rule.GetSelector()) + } + if rule.GetPost() != "/v1/myecho" { + t.Errorf("Rule has unexpected post '%v'", rule.GetPost()) + } + if rule.GetBody() != "*" { + t.Errorf("Rule has unexpected body '%v'", rule.GetBody()) + } +} + +func TestLoadGrpcAPIServiceFromYAMLRejectInvalidYAML(t *testing.T) { + service, err := loadGrpcAPIServiceFromYAML([]byte(` +type: google.api.Service +config_version: 3 + +http: + rules: + - selector: grpctest.YourService.Echo + - post: thislinebreakstheselectorblockabovewiththeleadingdash + body: "*" +`), "invalidyaml") + if err == nil { + t.Fatal(err) + } + + if !strings.Contains(err.Error(), "line 7") { + t.Errorf("Expected yaml error to be detected in line 7. Got other error: %v", err) + } + + if service != nil { + t.Fatal("Service returned") + } +} + +func TestLoadGrpcAPIServiceFromYAMLMultipleWithAdditionalBindings(t *testing.T) { + service, err := loadGrpcAPIServiceFromYAML([]byte(` +type: google.api.Service +config_version: 3 + +http: + rules: + - selector: first.selector + post: /my/post/path + body: "*" + additional_bindings: + - post: /additional/post/path + - put: /additional/put/{value}/path + - delete: "{value}" + - patch: "/additional/patch/{value}" + - selector: some.other.service + delete: foo +`), "example") + if err != nil { + t.Fatalf("Failed to load service description from YAML: %v", err) + } + + if service == nil { + t.Fatal("No service returned") + } + + if service.HTTP == nil { + t.Fatal("HTTP is empty") + } + + if len(service.HTTP.GetRules()) != 2 { + t.Fatalf("%v service(s) returned when two were expected. Got: %v", len(service.HTTP.GetRules()), service.HTTP) + } + + first := service.HTTP.GetRules()[0] + if first.GetSelector() != "first.selector" { + t.Errorf("first.selector has unexpected selector '%v'", first.GetSelector()) + } + if first.GetBody() != "*" { + t.Errorf("first.selector has unexpected body '%v'", first.GetBody()) + } + if first.GetPost() != "/my/post/path" { + t.Errorf("first.selector has unexpected post '%v'", first.GetPost()) + } + if len(first.GetAdditionalBindings()) != 4 { + t.Fatalf("first.selector has unexpected number of bindings %v instead of four. Got: %v", len(first.GetAdditionalBindings()), first.GetAdditionalBindings()) + } + if first.GetAdditionalBindings()[0].GetPost() != "/additional/post/path" { + t.Errorf("first.selector additional binding 0 has unexpected post '%v'", first.GetAdditionalBindings()[0].GetPost()) + } + if first.GetAdditionalBindings()[1].GetPut() != "/additional/put/{value}/path" { + t.Errorf("first.selector additional binding 1 has unexpected put '%v'", first.GetAdditionalBindings()[0].GetPost()) + } + if first.GetAdditionalBindings()[2].GetDelete() != "{value}" { + t.Errorf("first.selector additional binding 2 has unexpected delete '%v'", first.GetAdditionalBindings()[0].GetPost()) + } + if first.GetAdditionalBindings()[3].GetPatch() != "/additional/patch/{value}" { + t.Errorf("first.selector additional binding 3 has unexpected patch '%v'", first.GetAdditionalBindings()[0].GetPost()) + } + + second := service.HTTP.GetRules()[1] + if second.GetSelector() != "some.other.service" { + t.Errorf("some.other.service has unexpected selector '%v'", second.GetSelector()) + } + if second.GetDelete() != "foo" { + t.Errorf("some.other.service has unexpected delete '%v'", second.GetDelete()) + } + if len(second.GetAdditionalBindings()) != 0 { + t.Errorf("some.other.service has %v additional bindings when it should not have any. Got: %v", len(second.GetAdditionalBindings()), second.GetAdditionalBindings()) + } +} diff --git a/protoc-gen-grpc-gateway/descriptor/grpc_api_service.go b/protoc-gen-grpc-gateway/descriptor/grpc_api_service.go index 75b824057dd..70bb3decc0a 100644 --- a/protoc-gen-grpc-gateway/descriptor/grpc_api_service.go +++ b/protoc-gen-grpc-gateway/descriptor/grpc_api_service.go @@ -1,31 +1,31 @@ -package descriptor - -import ( - "github.com/golang/protobuf/proto" - "google.golang.org/genproto/googleapis/api/annotations" -) - -// GrpcAPIService represents a stripped down version of google.api.Service . -// Compare to https://github.com/googleapis/googleapis/blob/master/google/api/service.proto -// The original imports 23 other protobuf files we are not interested in. If a significant -// subset (>50%) of these start being reproduced in this file we should swap to using the -// full generated version instead. -// -// For the purposes of the gateway generator we only consider a small subset of all -// available features google supports in their service descriptions. Thanks to backwards -// compatibility guarantees by protobuf it is safe for us to remove the other fields. -// We also only implement the absolute minimum of protobuf generator boilerplate to use -// our simplified version. These should be pretty stable too. -type GrpcAPIService struct { - // Http Rule. Named Http in the actual proto. Changed to suppress linter warning. - HTTP *annotations.Http `protobuf:"bytes,9,opt,name=http" json:"http,omitempty"` -} - -// ProtoMessage returns an empty GrpcAPIService element -func (*GrpcAPIService) ProtoMessage() {} - -// Reset resets the GrpcAPIService -func (m *GrpcAPIService) Reset() { *m = GrpcAPIService{} } - -// String returns the string representation of the GrpcAPIService -func (m *GrpcAPIService) String() string { return proto.CompactTextString(m) } +package descriptor + +import ( + "github.com/golang/protobuf/proto" + "google.golang.org/genproto/googleapis/api/annotations" +) + +// GrpcAPIService represents a stripped down version of google.api.Service . +// Compare to https://github.com/googleapis/googleapis/blob/master/google/api/service.proto +// The original imports 23 other protobuf files we are not interested in. If a significant +// subset (>50%) of these start being reproduced in this file we should swap to using the +// full generated version instead. +// +// For the purposes of the gateway generator we only consider a small subset of all +// available features google supports in their service descriptions. Thanks to backwards +// compatibility guarantees by protobuf it is safe for us to remove the other fields. +// We also only implement the absolute minimum of protobuf generator boilerplate to use +// our simplified version. These should be pretty stable too. +type GrpcAPIService struct { + // Http Rule. Named Http in the actual proto. Changed to suppress linter warning. + HTTP *annotations.Http `protobuf:"bytes,9,opt,name=http" json:"http,omitempty"` +} + +// ProtoMessage returns an empty GrpcAPIService element +func (*GrpcAPIService) ProtoMessage() {} + +// Reset resets the GrpcAPIService +func (m *GrpcAPIService) Reset() { *m = GrpcAPIService{} } + +// String returns the string representation of the GrpcAPIService +func (m *GrpcAPIService) String() string { return proto.CompactTextString(m) } diff --git a/protoc-gen-grpc-gateway/descriptor/services.go b/protoc-gen-grpc-gateway/descriptor/services.go index 10960a64fb0..48d00b6579e 100644 --- a/protoc-gen-grpc-gateway/descriptor/services.go +++ b/protoc-gen-grpc-gateway/descriptor/services.go @@ -44,7 +44,7 @@ func (r *Registry) loadServices(file *File) error { optsList = append(optsList, defaultOpts) } else { logFn := glog.V(1).Infof - if r.warnOnUnboundMethods { + if r.warnOnUnboundMethods { logFn = glog.Warningf } logFn("No HttpRule found for method: %s.%s", svc.GetName(), md.GetName()) diff --git a/protoc-gen-swagger/genswagger/BUILD.bazel b/protoc-gen-swagger/genswagger/BUILD.bazel index ec44136445e..7d980f5fe7c 100644 --- a/protoc-gen-swagger/genswagger/BUILD.bazel +++ b/protoc-gen-swagger/genswagger/BUILD.bazel @@ -40,7 +40,6 @@ go_test( "//protoc-gen-grpc-gateway/httprule:go_default_library", "//protoc-gen-swagger/options:go_default_library", "@com_github_golang_protobuf//proto:go_default_library", - "@io_bazel_rules_go//proto/wkt:any_go_proto", "@io_bazel_rules_go//proto/wkt:compiler_plugin_go_proto", "@io_bazel_rules_go//proto/wkt:descriptor_go_proto", "@io_bazel_rules_go//proto/wkt:struct_go_proto", diff --git a/protoc-gen-swagger/genswagger/template.go b/protoc-gen-swagger/genswagger/template.go index fd3ae0c1ce3..ed908b55520 100644 --- a/protoc-gen-swagger/genswagger/template.go +++ b/protoc-gen-swagger/genswagger/template.go @@ -84,6 +84,10 @@ var wktSchemas = map[string]schemaCore{ }, } +var regBool = `^true|false$` + +var regString = `^"\w+"$` + func listEnumNames(enum *descriptor.Enum) (names []string) { for _, value := range enum.GetValue() { names = append(names, value.GetName()) @@ -1008,8 +1012,7 @@ func renderServices(services []*descriptor.Service, paths swaggerPathsObject, re "200": swaggerResponseObject{ Description: desc, Schema: responseSchema, - Headers: swaggerHeadersObject{}, - + Headers: swaggerHeadersObject{}, }, }, } @@ -1108,7 +1111,7 @@ func renderServices(services []*descriptor.Service, paths swaggerPathsObject, re } if resp.Headers != nil { hdrs, err := processHeaders(resp.Headers) - if err != nil{ + if err != nil { return err } respObj.Headers = hdrs @@ -1463,92 +1466,76 @@ func validateHeaderType(headerType string) error { "number", "integer", "boolean": - return nil + return nil } - return fmt.Errorf("The provided header type: %s. Is not supported", headerType) + return fmt.Errorf("the provided header type %q is not supported", headerType) } -func validateDefaultValueType(headerType string, defaultValue string) (error){ - +func validateDefaultValueType(headerType string, defaultValue string) error { switch headerType { case "string": - if !(isString(defaultValue)){ - return fmt.Errorf("The provided default value: %s does not match provider type: %s, or is not properly qouted with escaped quotations", defaultValue, headerType) + if !(isString(defaultValue)) { + return fmt.Errorf("the provided default value %q does not match provider type %q, or is not properly quoted with escaped quotations", defaultValue, headerType) } case "number": - if !(isNumber(defaultValue)){ - return fmt.Errorf("The provided default value: %s does not match provider type: %s", defaultValue, headerType) - } + _, err := strconv.ParseFloat(defaultValue, 64) + if err != nil { + return fmt.Errorf("the provided default value %q does not match provider type %q", defaultValue, headerType) + } case "integer": - if !(isInt(defaultValue)){ - return fmt.Errorf("The provided default value: %s does not match provider type: %s", defaultValue, headerType) - } + _, err := strconv.ParseInt(defaultValue, 0, 64) + if err != nil { + return fmt.Errorf("the provided default value %q does not match provider type %q", defaultValue, headerType) + } case "boolean": - if !(isBool(defaultValue)){ - return fmt.Errorf("The provided default value: %s does not match provider type: %s", defaultValue, headerType) - } + if !isBool(defaultValue) { + return fmt.Errorf("the provided default value %q does not match provider type %q", defaultValue, headerType) + } } return nil } -func isInt(s string) (bool) { - var digitCheck = regexp.MustCompile(`^[0-9]+$`) - return digitCheck.MatchString(s) -} - -func isNumber(s string) (bool) { - var digitCheck = regexp.MustCompile(`^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$`) - return digitCheck.MatchString(s) -} - -func isString(s string) (bool) { - var digitCheck = regexp.MustCompile(`^"\w+"$`) +func isString(s string) bool { + var digitCheck = regexp.MustCompile(regString) return digitCheck.MatchString(s) } -func isBool(s string) (bool) { - var digitCheck = regexp.MustCompile(`^true|false$`) +func isBool(s string) bool { + //Unable to use strconv.ParseBool because it returns truthy values https://golang.org/pkg/strconv/#example_ParseBool + // per https://swagger.io/docs/specification/data-models/data-types/#boolean + // type: boolean represents two values: true and false. Note that truthy and falsy values such as "true", "", 0 or null are not considered boolean values. + var digitCheck = regexp.MustCompile(regBool) return digitCheck.MatchString(s) } - - func processHeaders(inputHdrs map[string]*swagger_options.Header) (swaggerHeadersObject, error) { hdrs := map[string]swaggerHeaderObject{} - for k, v := range inputHdrs{ + for k, v := range inputHdrs { ret := swaggerHeaderObject{ Description: v.Description, - Format: v.Format, - Pattern: v.Pattern, + Format: v.Format, + Pattern: v.Pattern, } err := validateHeaderType(v.Type) - if err != nil{ + if err != nil { return nil, err } ret.Type = v.Type - - - if v.Default != nil { - raw := json.RawMessage(v.Default.Value) - defaultString := string(raw) - err := validateDefaultValueType(v.Type, defaultString) - if err != nil{ + if v.Default != "" { + err := validateDefaultValueType(v.Type, v.Default) + if err != nil { return nil, err } - ret.Default = raw - + ret.Default = json.RawMessage(v.Default) } - hdrs[k] = ret - - } return hdrs, nil @@ -1967,13 +1954,14 @@ func updateSwaggerObjectFromJSONSchema(s *swaggerSchemaObject, j *swagger_option s.MaxProperties = j.GetMaxProperties() s.MinProperties = j.GetMinProperties() s.Required = j.GetRequired() - s.Enum = j.GetEnum() + s.Enum = j.GetEnum() if overrideType := j.GetType(); len(overrideType) > 0 { s.Type = strings.ToLower(overrideType[0].String()) } - if j != nil && j.GetExample() != nil { - s.Example = j.GetExample().Value + if j != nil && j.GetExample() != "" { + s.Example = json.RawMessage(j.GetExample()) } + if j != nil && j.GetFormat() != "" { s.Format = j.GetFormat() } diff --git a/protoc-gen-swagger/genswagger/template_test.go b/protoc-gen-swagger/genswagger/template_test.go index 9760a550060..9be18039ba8 100644 --- a/protoc-gen-swagger/genswagger/template_test.go +++ b/protoc-gen-swagger/genswagger/template_test.go @@ -4,7 +4,6 @@ import ( "encoding/json" "errors" "fmt" - "github.com/golang/protobuf/ptypes/any" "reflect" "strings" "testing" @@ -1189,19 +1188,18 @@ func TestApplyTemplateExtensions(t *testing.T) { } } -func TestValidateHeaderType(t *testing.T){ +func TestValidateHeaderType(t *testing.T) { type test struct { - Type string + Type string expectedError error } tests := []test{ - { "string", + {"string", nil, }, { "boolean", nil, - }, { "number", @@ -1213,11 +1211,11 @@ func TestValidateHeaderType(t *testing.T){ }, { "array", - errors.New("The provided header type: array. Is not supported"), + errors.New("the provided header type \"array\" is not supported"), }, { "foo", - errors.New("The provided header type: foo. Is not supported"), + errors.New("the provided header type \"foo\" is not supported"), }, } for _, v := range tests { @@ -1229,7 +1227,7 @@ func TestValidateHeaderType(t *testing.T){ } } else { if err == nil { - t.Error("expected update error not returned") + t.Fatal("expected header error not returned") } if err.Error() != v.expectedError.Error() { t.Errorf("expected error malformed, expected %q, got %q", v.expectedError.Error(), err.Error()) @@ -1239,42 +1237,41 @@ func TestValidateHeaderType(t *testing.T){ } -func TestValidateDefaultValueType(t *testing.T){ +func TestValidateDefaultValueType(t *testing.T) { type test struct { - Type string - Value string + Type string + Value string expectedError error } tests := []test{ - { "string", - "\"string\"", + {"string", + `"string"`, nil, }, { "string", "0", - errors.New("The provided default value: 0 does not match provider type: string, or is not properly qouted with escaped quotations"), + errors.New("the provided default value \"0\" does not match provider type \"string\", or is not properly quoted with escaped quotations"), }, { "string", "false", - errors.New("The provided default value: false does not match provider type: string, or is not properly qouted with escaped quotations"), + errors.New("the provided default value \"false\" does not match provider type \"string\", or is not properly quoted with escaped quotations"), }, { "boolean", "true", nil, - }, { "boolean", "0", - errors.New("The provided default value: 0 does not match provider type: boolean"), + errors.New("the provided default value \"0\" does not match provider type \"boolean\""), }, { "boolean", - "\"string\"", - errors.New("The provided default value: \"string\" does not match provider type: boolean"), + `"string"`, + errors.New("the provided default value \"\\\"string\\\"\" does not match provider type \"boolean\""), }, { "number", @@ -1286,15 +1283,35 @@ func TestValidateDefaultValueType(t *testing.T){ "123", nil, }, + { + "number", + "NaN", + nil, + }, + { + "number", + "-459.67", + nil, + }, + { + "number", + "inf", + nil, + }, + { + "number", + "infinity", + nil, + }, { "number", "false", - errors.New("The provided default value: false does not match provider type: number"), + errors.New("the provided default value \"false\" does not match provider type \"number\""), }, { "number", - "\"string\"", - errors.New("The provided default value: \"string\" does not match provider type: number"), + `"string"`, + errors.New("the provided default value \"\\\"string\\\"\" does not match provider type \"number\""), }, { "integer", @@ -1304,19 +1321,18 @@ func TestValidateDefaultValueType(t *testing.T){ { "integer", "false", - errors.New("The provided default value: false does not match provider type: integer"), + errors.New("the provided default value \"false\" does not match provider type \"integer\""), }, { "integer", "1.2", - errors.New("The provided default value: 1.2 does not match provider type: integer"), + errors.New("the provided default value \"1.2\" does not match provider type \"integer\""), }, { "integer", - "\"string\"", - errors.New("The provided default value: \"string\" does not match provider type: integer"), + `"string"`, + errors.New("the provided default value \"\\\"string\\\"\" does not match provider type \"integer\""), }, - } for _, v := range tests { err := validateDefaultValueType(v.Type, v.Value) @@ -1384,7 +1400,7 @@ func TestApplyTemplateHeaders(t *testing.T) { PathTmpl: httprule.Template{ Version: 1, OpCodes: []int{0, 0}, - Template: "/v1/echo", // TODO(achew22): Figure out what this should really be + Template: "/v1/echo", }, }, }, @@ -1401,27 +1417,27 @@ func TestApplyTemplateHeaders(t *testing.T) { Headers: map[string]*swagger_options.Header{ "string": { Description: "string header description", - Type: "string", - Format: "uuid", - Pattern: "", + Type: "string", + Format: "uuid", + Pattern: "", }, "boolean": { Description: "boolean header description", - Type: "boolean", - Default: &any.Any{Value: []byte("true")}, - Pattern: "^true|false$", + Type: "boolean", + Default: "true", + Pattern: "^true|false$", }, "integer": { Description: "integer header description", - Type: "integer", - Default: &any.Any{Value: []byte("0")}, - Pattern: "^[0-9]$", + Type: "integer", + Default: "0", + Pattern: "^[0-9]$", }, "number": { Description: "number header description", - Type: "number", - Default: &any.Any{Value: []byte("1.2")}, - Pattern: "^[-+]?[0-9]*\\.?[0-9]+([eE][-+]?[0-9]+)?$", + Type: "number", + Default: "1.2", + Pattern: "^[-+]?[0-9]*\\.?[0-9]+([eE][-+]?[0-9]+)?$", }, }, }, @@ -1454,30 +1470,29 @@ func TestApplyTemplateHeaders(t *testing.T) { { "string": swaggerHeaderObject{ Description: "string header description", - Type: "string", - Format: "uuid", - Pattern: "", + Type: "string", + Format: "uuid", + Pattern: "", }, "boolean": swaggerHeaderObject{ Description: "boolean header description", - Type: "boolean", - Default: json.RawMessage("true"), - Pattern: "^true|false$", + Type: "boolean", + Default: json.RawMessage("true"), + Pattern: "^true|false$", }, "integer": swaggerHeaderObject{ Description: "integer header description", - Type: "integer", - Default: json.RawMessage("0"), - Pattern: "^[0-9]$", + Type: "integer", + Default: json.RawMessage("0"), + Pattern: "^[0-9]$", }, "number": swaggerHeaderObject{ Description: "number header description", - Type: "number", - Default: json.RawMessage("1.2"), - Pattern: "^[-+]?[0-9]*\\.?[0-9]+([eE][-+]?[0-9]+)?$", + Type: "number", + Default: json.RawMessage("1.2"), + Pattern: "^[-+]?[0-9]*\\.?[0-9]+([eE][-+]?[0-9]+)?$", }, }, - }[0], response.Headers, "response.Headers"; !reflect.DeepEqual(is, want) { t.Errorf("applyTemplate(%#v).%s = %s want to be %s", file, name, is, want) } diff --git a/protoc-gen-swagger/genswagger/types.go b/protoc-gen-swagger/genswagger/types.go index d6bcf82d99f..6bceb34e8f0 100644 --- a/protoc-gen-swagger/genswagger/types.go +++ b/protoc-gen-swagger/genswagger/types.go @@ -4,6 +4,7 @@ import ( "bytes" "encoding/json" "fmt" + "github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway/descriptor" ) @@ -180,7 +181,7 @@ type swaggerResponseObject struct { Description string `json:"description"` Schema swaggerSchemaObject `json:"schema"` Examples map[string]interface{} `json:"examples,omitempty"` - Headers swaggerHeadersObject `json:"headers,omitempty"` + Headers swaggerHeadersObject `json:"headers,omitempty"` extensions []extension } @@ -189,14 +190,13 @@ type swaggerHeadersObject map[string]swaggerHeaderObject // http://swagger.io/specification/#headerObject type swaggerHeaderObject struct { - Description string `json:"description,omitempty"` - Type string `json:"type,omitempty"` - Format string `json:"format,omitempty"` - Default json.RawMessage `json:"default,omitempty"` - Pattern string `json:"pattern,omitempty"` + Description string `json:"description,omitempty"` + Type string `json:"type,omitempty"` + Format string `json:"format,omitempty"` + Default json.RawMessage `json:"default,omitempty"` + Pattern string `json:"pattern,omitempty"` } - type keyVal struct { Key string Value interface{} diff --git a/protoc-gen-swagger/options/openapiv2.pb.go b/protoc-gen-swagger/options/openapiv2.pb.go index d5af8785838..79b720bd4a0 100644 --- a/protoc-gen-swagger/options/openapiv2.pb.go +++ b/protoc-gen-swagger/options/openapiv2.pb.go @@ -573,14 +573,14 @@ func (m *Operation) GetExtensions() map[string]*_struct.Value { type Header struct { // `Description` is a short description of the header. Description string `protobuf:"bytes,1,opt,name=description,proto3" json:"description,omitempty"` - // `Type` Required. The type of the object. The value MUST be one of "string", "number", "integer", or "boolean" "array" is not supported. + // The type of the object. The value MUST be one of "string", "number", "integer", or "boolean". The "array" type is not supported. Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` // `Format` The extending format for the previously mentioned type. Format string `protobuf:"bytes,3,opt,name=format,proto3" json:"format,omitempty"` - // Declares the value of the header that the server will use if none is provided. (Note: "default" has no meaning for required headers.) See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-6.2. Unlike JSON Schema this value MUST conform to the defined type for the header. - // A free-form property to include a JSON example of this field. This is copied - // verbatim to the output swagger.json. Quotes must be escaped. - Default *any.Any `protobuf:"bytes,6,opt,name=default,proto3" json:"default,omitempty"` + // `Default` Declares the value of the header that the server will use if none is provided. + // See: https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-6.2. + // Unlike JSON Schema this value MUST conform to the defined type for the header. + Default string `protobuf:"bytes,6,opt,name=default,proto3" json:"default,omitempty"` // 'Pattern' See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.2.3. Pattern string `protobuf:"bytes,13,opt,name=pattern,proto3" json:"pattern,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` @@ -634,11 +634,11 @@ func (m *Header) GetFormat() string { return "" } -func (m *Header) GetDefault() *any.Any { +func (m *Header) GetDefault() string { if m != nil { return m.Default } - return nil + return "" } func (m *Header) GetPattern() string { @@ -1206,8 +1206,8 @@ type JSONSchema struct { // A free-form property to include a JSON example of this field. This is copied // verbatim to the output swagger.json. Quotes must be escaped. // This property is the same for 2.0 and 3.0.0 https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/3.0.0.md#schemaObject https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#schemaObject - Example *any.Any `protobuf:"bytes,9,opt,name=example,proto3" json:"example,omitempty"` - MultipleOf float64 `protobuf:"fixed64,10,opt,name=multiple_of,json=multipleOf,proto3" json:"multiple_of,omitempty"` + Example string `protobuf:"bytes,9,opt,name=example,proto3" json:"example,omitempty"` + MultipleOf float64 `protobuf:"fixed64,10,opt,name=multiple_of,json=multipleOf,proto3" json:"multiple_of,omitempty"` // Maximum represents an inclusive upper limit for a numeric instance. The // value of MUST be a number, Maximum float64 `protobuf:"fixed64,11,opt,name=maximum,proto3" json:"maximum,omitempty"` @@ -1297,11 +1297,11 @@ func (m *JSONSchema) GetReadOnly() bool { return false } -func (m *JSONSchema) GetExample() *any.Any { +func (m *JSONSchema) GetExample() string { if m != nil { return m.Example } - return nil + return "" } func (m *JSONSchema) GetMultipleOf() float64 { @@ -1851,136 +1851,136 @@ func init() { } var fileDescriptor_ba35ad8af024fb48 = []byte{ - // 2087 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x59, 0x5d, 0x77, 0x1a, 0xc7, - 0xf9, 0xcf, 0xc2, 0x02, 0xc3, 0xc3, 0x8b, 0xc6, 0x23, 0xd9, 0xff, 0x0d, 0xb1, 0xfd, 0x57, 0x68, - 0x7c, 0xaa, 0x63, 0xd7, 0x28, 0x51, 0x2e, 0x9a, 0x93, 0xb6, 0x69, 0x91, 0x44, 0x64, 0xd6, 0x32, - 0xd0, 0x05, 0x45, 0x71, 0x7b, 0x7c, 0xe8, 0x6a, 0x19, 0xd0, 0xc6, 0xec, 0x2e, 0xd9, 0x5d, 0x24, - 0xd1, 0x4f, 0xd0, 0xcb, 0x9e, 0x9e, 0xde, 0xf6, 0x7b, 0xf4, 0xba, 0x9f, 0xa0, 0xdf, 0xa2, 0x77, - 0xbd, 0x68, 0x4e, 0xef, 0x7b, 0xe6, 0x65, 0x61, 0x11, 0x58, 0x05, 0x39, 0x6e, 0x2f, 0x7a, 0xc5, - 0xcc, 0xf3, 0xcc, 0xfc, 0x66, 0x9e, 0xf7, 0x67, 0x16, 0x78, 0x3c, 0xf2, 0xbd, 0xd0, 0xb3, 0x9e, - 0x0e, 0xa8, 0xfb, 0x34, 0xb8, 0x34, 0x07, 0x03, 0xea, 0xef, 0x7a, 0xa3, 0xd0, 0xf6, 0xdc, 0x60, - 0xd7, 0x1b, 0x51, 0xd7, 0x1c, 0xd9, 0x17, 0x7b, 0x15, 0xbe, 0x88, 0xfc, 0x70, 0xe0, 0x8f, 0xac, - 0xca, 0xc0, 0x0c, 0xe9, 0xa5, 0x39, 0x11, 0x34, 0xab, 0x3b, 0xa0, 0x6e, 0x57, 0x6e, 0xac, 0xc8, - 0x8d, 0xa5, 0xf7, 0x07, 0x9e, 0x37, 0x18, 0xd2, 0x5d, 0xbe, 0xe4, 0x6c, 0xdc, 0xdf, 0x35, 0x5d, - 0xb9, 0xbe, 0x74, 0xff, 0x3a, 0x2b, 0x08, 0xfd, 0xb1, 0x15, 0x0a, 0x6e, 0xf9, 0xcf, 0x08, 0x32, - 0x6d, 0x01, 0x46, 0x34, 0xc8, 0x48, 0x5c, 0x4d, 0xd9, 0x56, 0x76, 0xb2, 0x46, 0x34, 0x25, 0x55, - 0x50, 0x6d, 0xb7, 0xef, 0x69, 0x89, 0x6d, 0x65, 0x27, 0xb7, 0xf7, 0xb4, 0xb2, 0xe2, 0xb5, 0x2a, - 0x75, 0xb7, 0xef, 0x19, 0x7c, 0x2b, 0x21, 0xa0, 0x9e, 0x7b, 0x41, 0xa8, 0x25, 0x39, 0x32, 0x1f, - 0x93, 0x0f, 0x20, 0x7b, 0x66, 0x06, 0xb4, 0x3b, 0x32, 0xc3, 0x73, 0x4d, 0xe5, 0x0c, 0xc4, 0x08, - 0x2d, 0x33, 0x3c, 0x27, 0x5f, 0x43, 0x26, 0xb0, 0xce, 0xa9, 0x43, 0x03, 0x2d, 0xb5, 0x9d, 0xdc, - 0x29, 0xee, 0x7d, 0xb1, 0xf2, 0xb1, 0x52, 0xa0, 0xe8, 0xb7, 0xcd, 0x61, 0x8c, 0x08, 0x8e, 0x94, - 0x00, 0x59, 0x9e, 0x1b, 0x8c, 0x19, 0x74, 0x7a, 0x3b, 0xc9, 0x4e, 0x8d, 0xe6, 0x8c, 0x37, 0xf2, - 0xbd, 0xde, 0xd8, 0xa2, 0x81, 0x96, 0x11, 0xbc, 0x68, 0x4e, 0x5e, 0x41, 0xd6, 0xa7, 0xc1, 0xc8, - 0x73, 0x03, 0x1a, 0x68, 0xb0, 0x9d, 0xdc, 0xc9, 0xed, 0xfd, 0x7c, 0xed, 0x3b, 0x19, 0x11, 0x42, - 0xcd, 0x0d, 0xfd, 0x89, 0x31, 0x43, 0x24, 0x1e, 0x6c, 0x05, 0xd4, 0x1a, 0xfb, 0x76, 0x38, 0xe9, - 0xf6, 0x68, 0xdf, 0x76, 0x6d, 0xbe, 0x53, 0xcb, 0x71, 0xa5, 0xff, 0x74, 0xf5, 0x93, 0x24, 0xc8, - 0xe1, 0x0c, 0xc3, 0xd8, 0x0c, 0x16, 0x89, 0xe4, 0x6b, 0x40, 0x11, 0x59, 0xcb, 0x73, 0x71, 0xd6, - 0x3f, 0xc4, 0xa0, 0xdf, 0x8e, 0x6d, 0x9f, 0x3a, 0xd4, 0x0d, 0x8d, 0x29, 0x1a, 0xb1, 0xa0, 0x40, - 0xaf, 0x42, 0xea, 0xbb, 0xe6, 0xb0, 0xdb, 0xf3, 0xac, 0x40, 0x2b, 0x72, 0x19, 0x56, 0xb7, 0x60, - 0x4d, 0xee, 0x3e, 0xf4, 0xac, 0x31, 0xc3, 0x36, 0x19, 0xd9, 0xc8, 0xd3, 0x19, 0x39, 0x20, 0xbf, - 0x01, 0x60, 0x73, 0x37, 0xe0, 0x5a, 0xda, 0xe0, 0x02, 0xfc, 0x62, 0x6d, 0x7b, 0xd4, 0xa6, 0x10, - 0xc2, 0x20, 0x31, 0xcc, 0x92, 0x07, 0xc5, 0x79, 0x73, 0x11, 0x0c, 0xc9, 0xd7, 0x74, 0x22, 0xc3, - 0x83, 0x0d, 0xc9, 0x11, 0xa4, 0x2e, 0xcc, 0xe1, 0x98, 0xca, 0xd8, 0xf8, 0x64, 0xe5, 0x0b, 0x44, - 0xc8, 0x86, 0xd8, 0xff, 0x79, 0xe2, 0x33, 0xa5, 0x74, 0x02, 0x1b, 0xd7, 0xee, 0xb3, 0xe4, 0xc4, - 0x1f, 0xcd, 0x9f, 0x78, 0xaf, 0x22, 0x02, 0xbc, 0x12, 0x05, 0x78, 0xe5, 0x2b, 0xc6, 0x8d, 0xc1, - 0x96, 0xf7, 0xa1, 0x30, 0x17, 0x0a, 0x24, 0x07, 0x99, 0x93, 0xc6, 0xf3, 0x46, 0xf3, 0xb4, 0x81, - 0xdf, 0x23, 0x08, 0xd4, 0x67, 0x9d, 0x4e, 0x0b, 0x2b, 0x24, 0x0b, 0x29, 0x36, 0x6a, 0xe3, 0x04, - 0x49, 0x43, 0xe2, 0xb4, 0x8d, 0x93, 0x24, 0x03, 0xc9, 0xd3, 0x76, 0x1b, 0xab, 0xba, 0x8a, 0x10, - 0xce, 0xea, 0x2a, 0xca, 0x62, 0xd0, 0x55, 0x54, 0xc0, 0xc5, 0xf2, 0x5f, 0xd2, 0x90, 0x6d, 0x8e, - 0xa8, 0xcf, 0x6d, 0xc3, 0xe2, 0x3b, 0x34, 0x07, 0x81, 0xa6, 0xf0, 0xa0, 0xe1, 0x63, 0x9e, 0x50, - 0xc6, 0x8e, 0x63, 0xfa, 0x13, 0x7e, 0x57, 0x96, 0x50, 0xc4, 0x94, 0x6c, 0x43, 0xae, 0x47, 0x03, - 0xcb, 0xb7, 0xb9, 0x32, 0x64, 0x52, 0x88, 0x93, 0x16, 0x5d, 0x48, 0x7d, 0x07, 0x2e, 0xf4, 0x21, - 0xe4, 0xbd, 0x48, 0x82, 0xae, 0xdd, 0xd3, 0x52, 0xe2, 0x1e, 0x53, 0x5a, 0xbd, 0x77, 0xeb, 0x64, - 0xd1, 0x8d, 0x27, 0x8b, 0x2c, 0x77, 0xce, 0xea, 0xca, 0x77, 0x9f, 0xaa, 0xf5, 0x86, 0x74, 0xa1, - 0xcd, 0xf2, 0x23, 0xf0, 0xb3, 0xa7, 0xf9, 0xed, 0x21, 0x40, 0x8f, 0x8e, 0x7c, 0x6a, 0x99, 0x21, - 0xed, 0xf1, 0xf4, 0x81, 0x8c, 0x18, 0xe5, 0x1d, 0xc6, 0xfd, 0xd9, 0x5c, 0x48, 0x16, 0x38, 0xf6, - 0xfe, 0x2d, 0xa4, 0xfe, 0x1f, 0x08, 0x4a, 0x11, 0x50, 0xe5, 0xbf, 0x2b, 0x90, 0x7e, 0x46, 0xcd, - 0x1e, 0xf5, 0xaf, 0xc7, 0x84, 0xb2, 0x18, 0x13, 0x2c, 0xc6, 0x26, 0x23, 0x2a, 0x83, 0x89, 0x8f, - 0xc9, 0x3d, 0x48, 0xf7, 0x3d, 0xdf, 0x31, 0xa3, 0xca, 0x2a, 0x67, 0xa4, 0x02, 0x99, 0x1e, 0xed, - 0x9b, 0xe3, 0x61, 0xa8, 0xa5, 0xf9, 0x95, 0xb6, 0x16, 0xae, 0x54, 0x75, 0x27, 0x46, 0xb4, 0x88, - 0xb9, 0xd3, 0xc8, 0x0c, 0x59, 0x6c, 0x68, 0x05, 0x11, 0xab, 0x72, 0xaa, 0xab, 0x48, 0xc5, 0x29, - 0x5d, 0x45, 0x29, 0x9c, 0xd6, 0x55, 0x94, 0xc1, 0xe8, 0x5a, 0x2e, 0x00, 0x9c, 0xd3, 0x55, 0x94, - 0xc3, 0x79, 0x5d, 0x45, 0x79, 0x5c, 0xd0, 0x55, 0x54, 0xc4, 0x1b, 0xba, 0x8a, 0x36, 0x30, 0xd6, - 0x55, 0x84, 0xf1, 0x1d, 0x5d, 0x45, 0x77, 0x30, 0xd1, 0x55, 0x44, 0xf0, 0x66, 0xf9, 0xf7, 0x29, - 0x40, 0x91, 0x96, 0x57, 0x10, 0xf9, 0x08, 0xd2, 0xdc, 0xad, 0x4d, 0xa9, 0xd8, 0xdd, 0xd5, 0x3d, - 0x95, 0x6f, 0x33, 0xe4, 0x76, 0xd6, 0x4e, 0x9c, 0x73, 0x3d, 0x07, 0x5a, 0x92, 0xfb, 0xe5, 0x17, - 0x6b, 0x3b, 0x45, 0x45, 0x18, 0x4a, 0xfa, 0x64, 0x04, 0x47, 0x7e, 0x0d, 0x88, 0x5e, 0x99, 0xce, - 0x68, 0x48, 0x59, 0x92, 0x5a, 0xaf, 0x2b, 0x98, 0x42, 0xd7, 0x24, 0x82, 0xc0, 0x9e, 0x02, 0x12, - 0x73, 0x2e, 0xa2, 0x52, 0x6b, 0xe6, 0x91, 0x18, 0xfc, 0x9b, 0x03, 0xea, 0x35, 0xe4, 0xe3, 0x82, - 0x2d, 0x71, 0xee, 0xda, 0xbc, 0x73, 0xaf, 0x6e, 0x03, 0x81, 0x1b, 0x0f, 0xa6, 0x9f, 0x40, 0x61, - 0x4e, 0xd4, 0x25, 0xa7, 0x6d, 0xc5, 0x4f, 0xcb, 0xfe, 0x07, 0xca, 0xe3, 0x5f, 0x93, 0xa0, 0xb2, - 0x4e, 0x95, 0x9d, 0x1c, 0xda, 0xe1, 0x90, 0x4a, 0x38, 0x31, 0xb9, 0xee, 0xa4, 0x89, 0x45, 0x27, - 0xdd, 0x01, 0x1c, 0x52, 0xdf, 0x09, 0xba, 0x5e, 0xbf, 0x1b, 0x50, 0xff, 0xc2, 0xb6, 0xa8, 0x8c, - 0xc6, 0x22, 0xa7, 0x37, 0xfb, 0x6d, 0x41, 0x25, 0x3a, 0x64, 0x2c, 0xcf, 0x0d, 0x4d, 0x2b, 0x94, - 0xf5, 0xec, 0xe3, 0x95, 0x75, 0x79, 0x20, 0xf6, 0x19, 0x11, 0x00, 0xc3, 0x1a, 0xda, 0x16, 0x75, - 0x03, 0xca, 0xeb, 0xd6, 0x3a, 0x58, 0xc7, 0x62, 0x9f, 0x11, 0x01, 0xb0, 0xe8, 0xbf, 0xa0, 0x3e, - 0xd3, 0x2b, 0xcf, 0x16, 0x59, 0x23, 0x9a, 0x92, 0x57, 0x73, 0x0e, 0x98, 0xe1, 0x0e, 0xf8, 0xb3, - 0xb5, 0x1e, 0x00, 0x37, 0x3a, 0xdf, 0x3b, 0x32, 0x69, 0x0d, 0x32, 0x52, 0x5f, 0x2c, 0x69, 0xba, - 0xa6, 0x13, 0xd9, 0x94, 0x8f, 0xd9, 0x11, 0x63, 0x7f, 0x28, 0x4d, 0xc9, 0x86, 0xcc, 0xf4, 0xd4, - 0x31, 0xed, 0xa1, 0xb4, 0x9b, 0x98, 0x94, 0x77, 0x21, 0x23, 0x55, 0xb5, 0x1a, 0x4c, 0xf9, 0x39, - 0xdc, 0x5d, 0xda, 0x77, 0xac, 0x90, 0xe9, 0x16, 0xc1, 0xfe, 0x96, 0x80, 0xb4, 0xc8, 0x62, 0xa4, - 0x03, 0xb9, 0x6f, 0x02, 0xcf, 0xed, 0xca, 0x5c, 0xa8, 0x70, 0x3d, 0x7c, 0xba, 0xb2, 0x19, 0xf4, - 0x76, 0xb3, 0x21, 0xf3, 0x21, 0x30, 0x1c, 0x89, 0xfa, 0x11, 0x14, 0x7a, 0x36, 0xbb, 0x81, 0x63, - 0xbb, 0x66, 0xe8, 0xf9, 0xf2, 0xf0, 0x79, 0x22, 0x7b, 0xa5, 0xf9, 0xd4, 0xec, 0x75, 0x3d, 0x77, - 0x38, 0xe1, 0xea, 0x41, 0x06, 0x62, 0x84, 0xa6, 0x3b, 0x5c, 0xd2, 0xe9, 0xa7, 0xde, 0x41, 0x9b, - 0xb6, 0x07, 0x19, 0x99, 0x10, 0x6f, 0xaa, 0x65, 0xfb, 0x09, 0x4d, 0x31, 0xa2, 0x85, 0xe4, 0x11, - 0x14, 0xe5, 0xb0, 0x1b, 0x84, 0xbe, 0xed, 0x0e, 0xb4, 0x8c, 0x10, 0x4e, 0x52, 0xdb, 0x9c, 0x28, - 0x8a, 0x5b, 0xf9, 0xbb, 0x0c, 0xc0, 0x4c, 0x47, 0xcc, 0x14, 0x3e, 0xed, 0x4b, 0x57, 0x60, 0xc3, - 0x59, 0x66, 0x48, 0xdd, 0x90, 0x19, 0xd2, 0x8b, 0x46, 0xd5, 0x66, 0x55, 0x58, 0x1c, 0x3f, 0xad, - 0xb7, 0x73, 0x5a, 0x45, 0xd7, 0xb4, 0x5a, 0x99, 0x09, 0x9c, 0xbd, 0xa9, 0x78, 0x47, 0xc2, 0xfe, - 0x3f, 0xe4, 0x9c, 0xf1, 0x30, 0xb4, 0x99, 0xb4, 0x5e, 0x5f, 0x83, 0x6d, 0x65, 0x47, 0x31, 0x20, - 0x22, 0x35, 0xfb, 0xec, 0x1e, 0x8e, 0x79, 0x65, 0x3b, 0x63, 0x87, 0xf7, 0x83, 0x8a, 0x11, 0x4d, - 0xc9, 0x13, 0xb8, 0x43, 0xaf, 0xac, 0xe1, 0x38, 0xb0, 0x2f, 0x68, 0x37, 0x5a, 0x93, 0xe7, 0xf7, - 0xc1, 0x53, 0xc6, 0x0b, 0xb9, 0x98, 0xc1, 0xd8, 0x2e, 0x5f, 0x52, 0x90, 0x30, 0x62, 0x7a, 0x0d, - 0x46, 0xae, 0x29, 0x5e, 0x87, 0x91, 0x8b, 0x1f, 0x00, 0x38, 0xe6, 0x55, 0x77, 0x48, 0xdd, 0x41, - 0x78, 0xae, 0x6d, 0x6c, 0x2b, 0x3b, 0xaa, 0x91, 0x75, 0xcc, 0xab, 0x63, 0x4e, 0xe0, 0x6c, 0xdb, - 0x8d, 0xd8, 0x58, 0xb2, 0x6d, 0x57, 0xb2, 0x63, 0x9d, 0xca, 0x9d, 0xb9, 0x4e, 0x85, 0xe9, 0x94, - 0xe1, 0xda, 0x21, 0x75, 0x02, 0x6d, 0x8b, 0xef, 0x43, 0x8e, 0x79, 0x55, 0x67, 0x73, 0xce, 0xb4, - 0x5d, 0xc9, 0xbc, 0x2b, 0x99, 0xb6, 0x2b, 0x98, 0x1f, 0x42, 0x7e, 0xec, 0xda, 0xdf, 0x8e, 0xa9, - 0xe4, 0xdf, 0xe3, 0x37, 0xcf, 0x09, 0x9a, 0x58, 0xf2, 0x08, 0x8a, 0x0c, 0x7c, 0xe4, 0xb3, 0xd7, - 0x41, 0x68, 0xd3, 0x40, 0xd3, 0x38, 0x48, 0xc1, 0x31, 0xaf, 0x5a, 0x53, 0x22, 0x5f, 0x66, 0xbb, - 0xf1, 0x65, 0xef, 0xcb, 0x65, 0xb6, 0x1b, 0x5b, 0x56, 0x02, 0xe4, 0x8b, 0x16, 0xba, 0xa7, 0x95, - 0xc4, 0xd3, 0x21, 0x9a, 0x33, 0x67, 0x33, 0x7d, 0xdf, 0x9c, 0x68, 0x65, 0xce, 0x10, 0x13, 0xf2, - 0x4a, 0x36, 0x7f, 0x3f, 0xe0, 0x1f, 0x43, 0xea, 0xb7, 0x88, 0xfd, 0xd8, 0xb0, 0x6d, 0x33, 0xbf, - 0xe9, 0x4c, 0x46, 0x34, 0x58, 0xe8, 0x23, 0x3f, 0x9a, 0xeb, 0x23, 0x09, 0xa8, 0xd4, 0x1d, 0x3b, - 0x5a, 0x45, 0xbc, 0xeb, 0xd8, 0xb8, 0x7c, 0x09, 0x77, 0x97, 0x42, 0xcd, 0xbf, 0x2b, 0xb3, 0x90, - 0xaa, 0x1a, 0x46, 0xf5, 0x25, 0x56, 0x18, 0x7d, 0xbf, 0xd9, 0x3c, 0xae, 0x55, 0x1b, 0x38, 0xc1, - 0x26, 0xf5, 0x46, 0xa7, 0x76, 0x54, 0x33, 0x70, 0x92, 0x3d, 0x3e, 0x1b, 0x27, 0xc7, 0xc7, 0x58, - 0x25, 0x00, 0xe9, 0xc6, 0xc9, 0x8b, 0xfd, 0x9a, 0x81, 0x53, 0x6c, 0xdc, 0xdc, 0xd7, 0x6b, 0x07, - 0x1d, 0x9c, 0x66, 0xe3, 0x76, 0xc7, 0xa8, 0x37, 0x8e, 0x70, 0x46, 0x57, 0x91, 0x82, 0x13, 0xba, - 0x8a, 0x12, 0x38, 0x39, 0x6d, 0x4b, 0x09, 0xde, 0xd4, 0x55, 0xb4, 0x89, 0xb7, 0x74, 0x15, 0xfd, - 0x1f, 0xd6, 0x74, 0x15, 0x7d, 0x80, 0xef, 0xeb, 0x2a, 0xba, 0x8f, 0x1f, 0xe8, 0x2a, 0x7a, 0x80, - 0x1f, 0xea, 0x2a, 0x7a, 0x88, 0xcb, 0xba, 0x8a, 0x1e, 0xe1, 0xc7, 0xba, 0x8a, 0x1e, 0xe3, 0x27, - 0xba, 0x8a, 0x9e, 0xe0, 0x4a, 0xf9, 0x0f, 0x0a, 0x24, 0x3b, 0xe6, 0x60, 0x85, 0x02, 0xbf, 0x90, - 0xe5, 0x92, 0xdf, 0x7f, 0x96, 0x13, 0xc2, 0x95, 0xbf, 0x53, 0x60, 0x73, 0xc9, 0x17, 0x1c, 0xd2, - 0x8f, 0x3d, 0xda, 0x14, 0x5e, 0x85, 0xf5, 0xb7, 0xf9, 0x22, 0x34, 0xa5, 0xc9, 0x86, 0x33, 0xc2, - 0x2e, 0x85, 0x50, 0x98, 0x63, 0x2d, 0x29, 0xc7, 0x2f, 0xe6, 0xcb, 0xf1, 0x8f, 0xd7, 0xbe, 0x87, - 0xfc, 0x20, 0x17, 0xab, 0xd7, 0xff, 0x4c, 0x43, 0x71, 0x9e, 0x4b, 0x5a, 0xd2, 0xdf, 0xd9, 0xc1, - 0xc5, 0x5b, 0xbc, 0x50, 0x05, 0x4c, 0x85, 0x39, 0xa6, 0x74, 0xf1, 0x7f, 0x6f, 0xe7, 0xa8, 0xc8, - 0x27, 0x63, 0x45, 0x5e, 0x87, 0x84, 0xed, 0xf2, 0x6e, 0xad, 0xb8, 0xf7, 0xf9, 0x6d, 0x6f, 0x51, - 0x77, 0x8d, 0x84, 0xed, 0x32, 0x99, 0xfa, 0x43, 0xef, 0x92, 0x57, 0x91, 0xb7, 0x90, 0xe9, 0xcb, - 0xa1, 0x77, 0x69, 0x70, 0x24, 0x96, 0x77, 0xcd, 0x71, 0x78, 0xee, 0xf9, 0xf6, 0x6f, 0xc5, 0x57, - 0x0c, 0xd6, 0x43, 0x88, 0x42, 0x84, 0xe7, 0x18, 0x27, 0xfe, 0x90, 0xa5, 0xc0, 0xd0, 0x7b, 0x4d, - 0xc5, 0x22, 0x51, 0x8f, 0x10, 0x27, 0x30, 0x26, 0x7f, 0x69, 0x79, 0x23, 0x1a, 0xf0, 0x6a, 0xb4, - 0xde, 0x4b, 0x8b, 0x6d, 0x33, 0xe4, 0x76, 0x32, 0x98, 0xeb, 0x18, 0xc5, 0xa7, 0x8f, 0xa3, 0xdb, - 0x8a, 0xfa, 0x5f, 0xe8, 0x1d, 0x9f, 0x83, 0xca, 0x9c, 0x86, 0x60, 0xc8, 0x77, 0x5e, 0xb6, 0x6a, - 0xdd, 0x7a, 0xe3, 0xab, 0xea, 0x71, 0xfd, 0x10, 0xbf, 0x47, 0x8a, 0x00, 0x9c, 0xb2, 0x5f, 0x6d, - 0xd7, 0x0f, 0xb0, 0x32, 0x5d, 0x51, 0x6d, 0xd5, 0xbb, 0xcf, 0x6b, 0x2f, 0x71, 0x82, 0x6c, 0x40, - 0x8e, 0x53, 0x9a, 0xd5, 0x93, 0xce, 0xb3, 0x3d, 0x9c, 0x2c, 0x7f, 0x02, 0x89, 0xba, 0xcb, 0x36, - 0xd6, 0x1b, 0x31, 0xa0, 0x3c, 0xa0, 0x7a, 0xa3, 0xfb, 0xcb, 0x93, 0x9a, 0xc1, 0xb2, 0x63, 0x01, - 0xb2, 0xf5, 0x46, 0xf7, 0x59, 0xad, 0x7a, 0x58, 0x33, 0x70, 0xa2, 0xfc, 0x0d, 0xa8, 0xcc, 0xc0, - 0x0c, 0xfd, 0xcb, 0xe3, 0xe6, 0x69, 0x6c, 0xdb, 0x1d, 0x28, 0x08, 0xca, 0x8b, 0xd6, 0x71, 0xfd, - 0xa0, 0xde, 0xc1, 0xca, 0x94, 0xd4, 0xaa, 0xb6, 0xdb, 0xa7, 0x4d, 0xe3, 0x10, 0x27, 0xc8, 0x16, - 0x60, 0x4e, 0xaa, 0xb6, 0xd8, 0xaa, 0x6a, 0xa7, 0xde, 0x6c, 0xe0, 0xe4, 0x8c, 0x7a, 0x70, 0x50, - 0x6b, 0xb7, 0xbb, 0x07, 0xcd, 0xc3, 0x1a, 0x56, 0xcb, 0xff, 0x48, 0xcc, 0xb2, 0x4d, 0xec, 0x93, - 0x0e, 0xf9, 0x9d, 0x12, 0xfb, 0x18, 0xed, 0xcf, 0x18, 0x32, 0xf5, 0x9c, 0xbc, 0xcd, 0xf7, 0xa2, - 0x65, 0x34, 0x61, 0xdc, 0xe9, 0x57, 0xea, 0x18, 0xa7, 0xf4, 0x31, 0x68, 0x4b, 0x36, 0x70, 0xab, - 0xb1, 0x4a, 0xc9, 0x9d, 0x4e, 0x7e, 0x75, 0x14, 0x93, 0xd2, 0x9f, 0x94, 0xa5, 0x5b, 0xde, 0xe4, - 0x21, 0xaf, 0xe7, 0x3d, 0xe4, 0x7b, 0x97, 0x6d, 0xc1, 0xc1, 0xfe, 0xa8, 0xb0, 0xbe, 0x9e, 0xc7, - 0x4a, 0x2b, 0x2e, 0x40, 0x6e, 0x9d, 0xfc, 0xc2, 0xf7, 0x8b, 0x1f, 0xa1, 0x3c, 0x29, 0xfc, 0x67, - 0x00, 0x33, 0xe2, 0x3a, 0xaf, 0xeb, 0xfd, 0x83, 0x5f, 0x55, 0x07, 0x76, 0x78, 0x3e, 0x3e, 0xab, - 0x58, 0x9e, 0xb3, 0xcb, 0x2e, 0xf2, 0x94, 0x5a, 0x5e, 0x30, 0x09, 0x42, 0x2a, 0xa7, 0xf2, 0x5e, - 0xbb, 0x6f, 0xfe, 0x07, 0xeb, 0x2c, 0xcd, 0x79, 0x9f, 0xfe, 0x2b, 0x00, 0x00, 0xff, 0xff, 0x5a, - 0xa4, 0x50, 0x4e, 0xe6, 0x1a, 0x00, 0x00, + // 2081 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x59, 0xcf, 0x73, 0xdb, 0xc6, + 0xf5, 0x0f, 0x48, 0x90, 0x5c, 0x3e, 0xfe, 0xd0, 0x7a, 0x2d, 0xfb, 0x8b, 0x30, 0xb6, 0xbf, 0x0a, + 0x1b, 0x4f, 0x35, 0x76, 0x4d, 0x25, 0xca, 0xa1, 0x99, 0xb4, 0x4d, 0x4b, 0x49, 0x8c, 0x4d, 0x58, + 0x26, 0x59, 0x90, 0x8a, 0xe3, 0x76, 0x3c, 0x2c, 0x04, 0x2e, 0x29, 0xc4, 0x04, 0xc0, 0x00, 0xa0, + 0x24, 0xf6, 0x2f, 0xe8, 0xb1, 0xd3, 0xe9, 0xb5, 0xff, 0x47, 0xcf, 0xfd, 0x0b, 0x7a, 0xec, 0xa5, + 0xe7, 0xde, 0xdb, 0xe9, 0xbd, 0xb3, 0x3f, 0x40, 0x02, 0x22, 0xed, 0x92, 0x72, 0xdc, 0x1e, 0x7a, + 0xe2, 0xee, 0x7b, 0xfb, 0x3e, 0xbb, 0x6f, 0xdf, 0x4f, 0x2c, 0xe1, 0xc1, 0xc4, 0xf7, 0x42, 0xcf, + 0x7a, 0x34, 0xa2, 0xee, 0xa3, 0xe0, 0xc2, 0x1c, 0x8d, 0xa8, 0xbf, 0xe7, 0x4d, 0x42, 0xdb, 0x73, + 0x83, 0x3d, 0x6f, 0x42, 0x5d, 0x73, 0x62, 0x9f, 0xef, 0xd7, 0xf8, 0x22, 0xf2, 0xfd, 0x91, 0x3f, + 0xb1, 0x6a, 0x23, 0x33, 0xa4, 0x17, 0xe6, 0x4c, 0xd0, 0xac, 0xfe, 0x88, 0xba, 0x7d, 0x29, 0x58, + 0x93, 0x82, 0x95, 0xf7, 0x47, 0x9e, 0x37, 0x1a, 0xd3, 0x3d, 0xbe, 0xe4, 0x74, 0x3a, 0xdc, 0x33, + 0x5d, 0xb9, 0xbe, 0x72, 0xe7, 0x2a, 0x2b, 0x08, 0xfd, 0xa9, 0x15, 0x0a, 0x6e, 0xf5, 0x8f, 0x08, + 0x72, 0x5d, 0x01, 0x46, 0x34, 0xc8, 0x49, 0x5c, 0x4d, 0xd9, 0x51, 0x76, 0xf3, 0x46, 0x34, 0x25, + 0x75, 0x50, 0x6d, 0x77, 0xe8, 0x69, 0xa9, 0x1d, 0x65, 0xb7, 0xb0, 0xff, 0xa8, 0xb6, 0xe6, 0xb1, + 0x6a, 0x4d, 0x77, 0xe8, 0x19, 0x5c, 0x94, 0x10, 0x50, 0xcf, 0xbc, 0x20, 0xd4, 0xd2, 0x1c, 0x99, + 0x8f, 0xc9, 0x07, 0x90, 0x3f, 0x35, 0x03, 0xda, 0x9f, 0x98, 0xe1, 0x99, 0xa6, 0x72, 0x06, 0x62, + 0x84, 0x8e, 0x19, 0x9e, 0x91, 0xaf, 0x21, 0x17, 0x58, 0x67, 0xd4, 0xa1, 0x81, 0x96, 0xd9, 0x49, + 0xef, 0x96, 0xf7, 0xbf, 0x58, 0x7b, 0x5b, 0xa9, 0x50, 0xf4, 0xdb, 0xe5, 0x30, 0x46, 0x04, 0x47, + 0x2a, 0x80, 0x2c, 0xcf, 0x0d, 0xa6, 0x0c, 0x3a, 0xbb, 0x93, 0x66, 0xbb, 0x46, 0x73, 0xc6, 0x9b, + 0xf8, 0xde, 0x60, 0x6a, 0xd1, 0x40, 0xcb, 0x09, 0x5e, 0x34, 0x27, 0x2f, 0x21, 0xef, 0xd3, 0x60, + 0xe2, 0xb9, 0x01, 0x0d, 0x34, 0xd8, 0x49, 0xef, 0x16, 0xf6, 0x7f, 0xba, 0xf1, 0x99, 0x8c, 0x08, + 0xa1, 0xe1, 0x86, 0xfe, 0xcc, 0x58, 0x20, 0x12, 0x0f, 0xb6, 0x03, 0x6a, 0x4d, 0x7d, 0x3b, 0x9c, + 0xf5, 0x07, 0x74, 0x68, 0xbb, 0x36, 0x97, 0xd4, 0x0a, 0xfc, 0xd2, 0x7f, 0xbc, 0xfe, 0x4e, 0x12, + 0xe4, 0x68, 0x81, 0x61, 0xdc, 0x0c, 0x96, 0x89, 0xe4, 0x6b, 0x40, 0x11, 0x59, 0x2b, 0x72, 0x75, + 0x36, 0xdf, 0xc4, 0xa0, 0xdf, 0x4e, 0x6d, 0x9f, 0x3a, 0xd4, 0x0d, 0x8d, 0x39, 0x1a, 0xb1, 0xa0, + 0x44, 0x2f, 0x43, 0xea, 0xbb, 0xe6, 0xb8, 0x3f, 0xf0, 0xac, 0x40, 0x2b, 0x73, 0x1d, 0xd6, 0xb7, + 0x60, 0x43, 0x4a, 0x1f, 0x79, 0xd6, 0x94, 0x61, 0x9b, 0x8c, 0x6c, 0x14, 0xe9, 0x82, 0x1c, 0x90, + 0x5f, 0x01, 0xb0, 0xb9, 0x1b, 0xf0, 0x5b, 0xda, 0xe2, 0x0a, 0xfc, 0x6c, 0x63, 0x7b, 0x34, 0xe6, + 0x10, 0xc2, 0x20, 0x31, 0xcc, 0x8a, 0x07, 0xe5, 0xa4, 0xb9, 0x08, 0x86, 0xf4, 0x2b, 0x3a, 0x93, + 0xe1, 0xc1, 0x86, 0xe4, 0x31, 0x64, 0xce, 0xcd, 0xf1, 0x94, 0xca, 0xd8, 0xf8, 0x64, 0xed, 0x03, + 0x44, 0xc8, 0x86, 0x90, 0xff, 0x3c, 0xf5, 0x99, 0x52, 0x39, 0x81, 0xad, 0x2b, 0xe7, 0x59, 0xb1, + 0xe3, 0x0f, 0x92, 0x3b, 0xde, 0xae, 0x89, 0x00, 0xaf, 0x45, 0x01, 0x5e, 0xfb, 0x8a, 0x71, 0x63, + 0xb0, 0xd5, 0x03, 0x28, 0x25, 0x42, 0x81, 0x14, 0x20, 0x77, 0xd2, 0x7a, 0xda, 0x6a, 0x3f, 0x6f, + 0xe1, 0xf7, 0x08, 0x02, 0xf5, 0x49, 0xaf, 0xd7, 0xc1, 0x0a, 0xc9, 0x43, 0x86, 0x8d, 0xba, 0x38, + 0x45, 0xb2, 0x90, 0x7a, 0xde, 0xc5, 0x69, 0x92, 0x83, 0xf4, 0xf3, 0x6e, 0x17, 0xab, 0xba, 0x8a, + 0x10, 0xce, 0xeb, 0x2a, 0xca, 0x63, 0xd0, 0x55, 0x54, 0xc2, 0xe5, 0xea, 0x9f, 0xb2, 0x90, 0x6f, + 0x4f, 0xa8, 0xcf, 0x6d, 0xc3, 0xe2, 0x3b, 0x34, 0x47, 0x81, 0xa6, 0xf0, 0xa0, 0xe1, 0x63, 0x9e, + 0x50, 0xa6, 0x8e, 0x63, 0xfa, 0x33, 0x7e, 0x56, 0x96, 0x50, 0xc4, 0x94, 0xec, 0x40, 0x61, 0x40, + 0x03, 0xcb, 0xb7, 0xf9, 0x65, 0xc8, 0xa4, 0x10, 0x27, 0x2d, 0xbb, 0x90, 0xfa, 0x0e, 0x5c, 0xe8, + 0x43, 0x28, 0x7a, 0x91, 0x06, 0x7d, 0x7b, 0xa0, 0x65, 0xc4, 0x39, 0xe6, 0xb4, 0xe6, 0xe0, 0xda, + 0xc9, 0xa2, 0x1f, 0x4f, 0x16, 0x79, 0xee, 0x9c, 0xf5, 0xb5, 0xcf, 0x3e, 0xbf, 0xd6, 0x37, 0xa4, + 0x0b, 0x6d, 0x91, 0x1f, 0x81, 0xef, 0x3d, 0xcf, 0x6f, 0xf7, 0x00, 0x06, 0x74, 0xe2, 0x53, 0xcb, + 0x0c, 0xe9, 0x80, 0xa7, 0x0f, 0x64, 0xc4, 0x28, 0xef, 0x30, 0xee, 0x4f, 0x13, 0x21, 0x59, 0xe2, + 0xd8, 0x07, 0xd7, 0xd0, 0xfa, 0x7f, 0x20, 0x28, 0x45, 0x40, 0x55, 0xff, 0xa2, 0x40, 0xf6, 0x09, + 0x35, 0x07, 0xd4, 0xbf, 0x1a, 0x13, 0xca, 0x72, 0x4c, 0xb0, 0x18, 0x9b, 0x4d, 0xa8, 0x0c, 0x26, + 0x3e, 0x26, 0xb7, 0x21, 0x3b, 0xf4, 0x7c, 0xc7, 0x8c, 0x2a, 0xab, 0x9c, 0x31, 0xf7, 0x18, 0xd0, + 0xa1, 0x39, 0x1d, 0x87, 0x5a, 0x56, 0xc4, 0x9e, 0x9c, 0x32, 0xce, 0xc4, 0x0c, 0x59, 0x14, 0x68, + 0x25, 0xc1, 0x91, 0x53, 0x5d, 0x45, 0x2a, 0xce, 0xe8, 0x2a, 0xca, 0xe0, 0xac, 0xae, 0xa2, 0x1c, + 0x46, 0x57, 0xa2, 0x1e, 0x70, 0x41, 0x57, 0x51, 0x01, 0x17, 0x75, 0x15, 0x15, 0x71, 0x49, 0x57, + 0x51, 0x19, 0x6f, 0xe9, 0x2a, 0xda, 0xc2, 0x58, 0x57, 0x11, 0xc6, 0x37, 0x74, 0x15, 0xdd, 0xc0, + 0x44, 0x57, 0x11, 0xc1, 0x37, 0xab, 0xbf, 0xcd, 0x00, 0x8a, 0xee, 0x73, 0x0d, 0xe5, 0x1e, 0x43, + 0x96, 0x3b, 0xb0, 0x29, 0xaf, 0x70, 0x6f, 0x7d, 0x9f, 0xe4, 0x62, 0x86, 0x14, 0x67, 0x8d, 0xc3, + 0x19, 0xbf, 0xd1, 0x40, 0x4b, 0x73, 0x0f, 0xfc, 0x62, 0x63, 0xf3, 0xd7, 0x84, 0x49, 0xa4, 0xf7, + 0x45, 0x70, 0xe4, 0x97, 0x80, 0xe8, 0xa5, 0xe9, 0x4c, 0xc6, 0x94, 0xa5, 0xa3, 0xcd, 0xea, 0xff, + 0x1c, 0xba, 0x21, 0x11, 0x04, 0xf6, 0x1c, 0x90, 0x98, 0x89, 0xd8, 0xc9, 0x6c, 0x98, 0x31, 0x62, + 0xf0, 0xaf, 0x0f, 0x9d, 0x57, 0x50, 0x8c, 0x2b, 0xb6, 0xc2, 0x8d, 0x1b, 0x49, 0x37, 0x5e, 0xdf, + 0x06, 0x02, 0x37, 0x1e, 0x36, 0x3f, 0x82, 0x52, 0x42, 0xd5, 0x15, 0xbb, 0x6d, 0xc7, 0x77, 0xcb, + 0xff, 0x07, 0x0a, 0xe1, 0x9f, 0xd3, 0xa0, 0xb2, 0x9e, 0x94, 0xed, 0x1c, 0xda, 0xe1, 0x98, 0x4a, + 0x38, 0x31, 0xb9, 0xea, 0xa4, 0xa9, 0x65, 0x27, 0xdd, 0x05, 0x1c, 0x52, 0xdf, 0x09, 0xfa, 0xde, + 0xb0, 0x1f, 0x50, 0xff, 0xdc, 0xb6, 0xa8, 0x8c, 0xbb, 0x32, 0xa7, 0xb7, 0x87, 0x5d, 0x41, 0x25, + 0x3a, 0xe4, 0x2c, 0xcf, 0x0d, 0x4d, 0x2b, 0x94, 0x95, 0xeb, 0xe3, 0xb5, 0xef, 0xf2, 0x50, 0xc8, + 0x19, 0x11, 0x00, 0xc3, 0x1a, 0xdb, 0x16, 0x75, 0x03, 0xca, 0x2b, 0xd4, 0x26, 0x58, 0xc7, 0x42, + 0xce, 0x88, 0x00, 0x58, 0xf4, 0x9f, 0x53, 0x9f, 0xdd, 0x6b, 0x94, 0x17, 0xe4, 0x94, 0xbc, 0x4c, + 0x38, 0x60, 0x8e, 0x3b, 0xe0, 0x4f, 0x36, 0x6a, 0xf5, 0xdf, 0xe8, 0x7c, 0xef, 0xc8, 0xa4, 0x0d, + 0xc8, 0xc9, 0xfb, 0x62, 0xe9, 0xd1, 0x35, 0x9d, 0xc8, 0xa6, 0x7c, 0xcc, 0xb6, 0x98, 0xfa, 0x63, + 0x69, 0x4a, 0x36, 0x64, 0xa6, 0xa7, 0x8e, 0x69, 0x8f, 0xa5, 0xdd, 0xc4, 0xa4, 0xba, 0x07, 0x39, + 0x79, 0x55, 0xeb, 0xc1, 0x54, 0x9f, 0xc2, 0xad, 0x95, 0x1d, 0xc6, 0x1a, 0x99, 0x6e, 0x19, 0xec, + 0x6f, 0x29, 0xc8, 0x8a, 0x2c, 0x46, 0x7a, 0x50, 0xf8, 0x26, 0xf0, 0xdc, 0xbe, 0xcc, 0x85, 0x0a, + 0xbf, 0x87, 0x4f, 0xd7, 0x36, 0x83, 0xde, 0x6d, 0xb7, 0x64, 0x3e, 0x04, 0x86, 0x23, 0x51, 0x3f, + 0x82, 0xd2, 0xc0, 0x66, 0x27, 0x70, 0x6c, 0xd7, 0x0c, 0x3d, 0x5f, 0x6e, 0x9e, 0x24, 0xb2, 0xef, + 0x31, 0x9f, 0x9a, 0x83, 0xbe, 0xe7, 0x8e, 0x67, 0xfc, 0x7a, 0x90, 0x81, 0x18, 0xa1, 0xed, 0x8e, + 0x57, 0xf4, 0xf4, 0x99, 0x77, 0xd0, 0x90, 0xed, 0x43, 0x4e, 0x26, 0x44, 0xee, 0x9d, 0x85, 0xfd, + 0xed, 0x25, 0x0f, 0xa8, 0xbb, 0xb3, 0x83, 0x94, 0xa6, 0x18, 0xd1, 0x42, 0x72, 0x1f, 0xca, 0x72, + 0xd8, 0x0f, 0x42, 0xdf, 0x76, 0x47, 0x5a, 0x4e, 0x28, 0x27, 0xa9, 0x5d, 0x4e, 0x14, 0xc5, 0xad, + 0xfa, 0xd7, 0x1c, 0xc0, 0xe2, 0x8e, 0x98, 0x29, 0x7c, 0x3a, 0x94, 0xae, 0xc0, 0x86, 0x8b, 0xcc, + 0x90, 0x79, 0x43, 0x66, 0xc8, 0x2e, 0x1b, 0x35, 0x56, 0x6f, 0x73, 0xc9, 0x7a, 0x9b, 0xb8, 0x55, + 0x74, 0xe5, 0x56, 0xb5, 0x85, 0xc2, 0x79, 0x21, 0x16, 0xa9, 0xf5, 0xff, 0x50, 0x70, 0xa6, 0xe3, + 0xd0, 0x66, 0x7a, 0x79, 0x43, 0x0d, 0x76, 0x94, 0x5d, 0xc5, 0x80, 0x88, 0xd4, 0x1e, 0x32, 0x51, + 0xc7, 0xbc, 0xb4, 0x9d, 0xa9, 0xc3, 0x7b, 0x3c, 0xc5, 0x88, 0xa6, 0xe4, 0x21, 0xdc, 0xa0, 0x97, + 0xd6, 0x78, 0x1a, 0xd8, 0xe7, 0xb4, 0x1f, 0xad, 0x29, 0xf2, 0x9d, 0xf1, 0x9c, 0xf1, 0x4c, 0x2e, + 0x66, 0x30, 0xb6, 0xcb, 0x97, 0x94, 0x24, 0x8c, 0x98, 0x5e, 0x81, 0x91, 0x6b, 0xca, 0x57, 0x61, + 0xe4, 0xe2, 0xbb, 0x00, 0x8e, 0x79, 0xd9, 0x1f, 0x53, 0x77, 0x14, 0x9e, 0x69, 0x5b, 0x3b, 0xca, + 0xae, 0x6a, 0xe4, 0x1d, 0xf3, 0xf2, 0x98, 0x13, 0x38, 0xdb, 0x76, 0x23, 0x36, 0x96, 0x6c, 0xdb, + 0x95, 0xec, 0x58, 0x4f, 0x72, 0x23, 0xd1, 0x93, 0xb0, 0xdb, 0x63, 0xb8, 0x76, 0x48, 0x9d, 0x40, + 0xdb, 0xe6, 0x72, 0xc8, 0x31, 0x2f, 0x9b, 0x6c, 0xce, 0x99, 0xb6, 0x2b, 0x99, 0xb7, 0x24, 0xd3, + 0x76, 0x05, 0xf3, 0x43, 0x28, 0x4e, 0x5d, 0xfb, 0xdb, 0x29, 0x95, 0xfc, 0xdb, 0xfc, 0xe4, 0x05, + 0x41, 0x13, 0x4b, 0xee, 0x43, 0x99, 0x81, 0x4f, 0x7c, 0xd6, 0xf1, 0x87, 0x36, 0x0d, 0x34, 0x8d, + 0x83, 0x94, 0x1c, 0xf3, 0xb2, 0x33, 0x27, 0xf2, 0x65, 0xb6, 0x1b, 0x5f, 0xf6, 0xbe, 0x5c, 0x66, + 0xbb, 0xb1, 0x65, 0x15, 0x40, 0xbe, 0x68, 0x8b, 0x07, 0x5a, 0x45, 0x7c, 0x0e, 0x44, 0x73, 0xe6, + 0x56, 0xa6, 0xef, 0x9b, 0x33, 0xad, 0xca, 0x19, 0x62, 0x42, 0x5e, 0xca, 0x86, 0xee, 0x7b, 0xfc, + 0x81, 0xa3, 0x79, 0x8d, 0x28, 0x8f, 0x0d, 0xbb, 0x36, 0xf3, 0x9b, 0xde, 0x6c, 0x42, 0x83, 0xa5, + 0xde, 0xf0, 0xa3, 0x44, 0x6f, 0x48, 0x40, 0xa5, 0xee, 0xd4, 0xd1, 0x6a, 0xe2, 0x5b, 0x8d, 0x8d, + 0xab, 0x17, 0x70, 0x6b, 0x25, 0x54, 0xf2, 0x5b, 0x31, 0x0f, 0x99, 0xba, 0x61, 0xd4, 0x5f, 0x60, + 0x85, 0xd1, 0x0f, 0xda, 0xed, 0xe3, 0x46, 0xbd, 0x85, 0x53, 0x6c, 0xd2, 0x6c, 0xf5, 0x1a, 0x8f, + 0x1b, 0x06, 0x4e, 0xb3, 0x0f, 0xca, 0xd6, 0xc9, 0xf1, 0x31, 0x56, 0x09, 0x40, 0xb6, 0x75, 0xf2, + 0xec, 0xa0, 0x61, 0xe0, 0x0c, 0x1b, 0xb7, 0x0f, 0xf4, 0xc6, 0x61, 0x0f, 0x67, 0xd9, 0xb8, 0xdb, + 0x33, 0x9a, 0xad, 0xc7, 0x38, 0xa7, 0xab, 0x48, 0xc1, 0x29, 0x5d, 0x45, 0x29, 0x9c, 0x9e, 0x37, + 0xa0, 0x04, 0xdf, 0xd4, 0x55, 0x74, 0x13, 0x6f, 0xeb, 0x2a, 0xfa, 0x3f, 0xac, 0xe9, 0x2a, 0xfa, + 0x00, 0xdf, 0xd1, 0x55, 0x74, 0x07, 0xdf, 0xd5, 0x55, 0x74, 0x17, 0xdf, 0xd3, 0x55, 0x74, 0x0f, + 0x57, 0x75, 0x15, 0xdd, 0xc7, 0x0f, 0x74, 0x15, 0x3d, 0xc0, 0x0f, 0x75, 0x15, 0x3d, 0xc4, 0xb5, + 0xea, 0xef, 0x14, 0x48, 0xf7, 0xcc, 0xd1, 0x1a, 0xa5, 0x7c, 0x29, 0x9f, 0xa5, 0xbf, 0xfb, 0x7c, + 0x26, 0x94, 0xab, 0xfe, 0x43, 0x81, 0x9b, 0x2b, 0x5e, 0x65, 0xc8, 0x30, 0xf6, 0x21, 0xa6, 0xf0, + 0x7a, 0xab, 0xbf, 0xcd, 0x2b, 0xcf, 0x9c, 0x26, 0x5b, 0xcb, 0x08, 0xbb, 0x12, 0x42, 0x29, 0xc1, + 0x5a, 0x51, 0x78, 0x9f, 0x25, 0x0b, 0xef, 0x0f, 0x37, 0x3e, 0x87, 0x7c, 0x64, 0x8b, 0x55, 0xe6, + 0x7f, 0x66, 0xa1, 0x9c, 0xe4, 0x92, 0x8e, 0xf4, 0x77, 0xb6, 0x71, 0xf9, 0x1a, 0x5f, 0x9d, 0x02, + 0xa6, 0xc6, 0x1c, 0x53, 0xba, 0xf8, 0xbf, 0xb7, 0x73, 0x54, 0xce, 0xd3, 0xb1, 0x72, 0xae, 0x43, + 0xca, 0x76, 0x79, 0x5f, 0x56, 0xde, 0xff, 0xfc, 0xba, 0xa7, 0x68, 0xba, 0x46, 0xca, 0x76, 0x99, + 0x4e, 0xc3, 0xb1, 0x77, 0xc1, 0xeb, 0xc5, 0x5b, 0xe8, 0xf4, 0xe5, 0xd8, 0xbb, 0x30, 0x38, 0x12, + 0xcb, 0xbb, 0xe6, 0x34, 0x3c, 0xf3, 0x7c, 0xfb, 0xd7, 0xe2, 0x65, 0x82, 0x75, 0x0b, 0xa2, 0xe4, + 0xe0, 0x04, 0xe3, 0xc4, 0x1f, 0xb3, 0x14, 0x18, 0x7a, 0xaf, 0xa8, 0x58, 0x24, 0x2a, 0x0f, 0xe2, + 0x04, 0xc6, 0xe4, 0xdf, 0x54, 0xde, 0x84, 0x06, 0xbc, 0xee, 0x6c, 0xf6, 0x4d, 0xc5, 0xc4, 0x0c, + 0x29, 0x4e, 0x46, 0x89, 0xde, 0x50, 0x3c, 0x67, 0x3c, 0xbe, 0xae, 0xaa, 0xff, 0x85, 0x2e, 0xf1, + 0x29, 0xa8, 0xcc, 0x69, 0x08, 0x86, 0x62, 0xef, 0x45, 0xa7, 0xd1, 0x6f, 0xb6, 0xbe, 0xaa, 0x1f, + 0x37, 0x8f, 0xf0, 0x7b, 0xa4, 0x0c, 0xc0, 0x29, 0x07, 0xf5, 0x6e, 0xf3, 0x10, 0x2b, 0xf3, 0x15, + 0xf5, 0x4e, 0xb3, 0xff, 0xb4, 0xf1, 0x02, 0xa7, 0xc8, 0x16, 0x14, 0x38, 0xa5, 0x5d, 0x3f, 0xe9, + 0x3d, 0xd9, 0xc7, 0xe9, 0xea, 0x27, 0x90, 0x6a, 0xba, 0x4c, 0xb0, 0xd9, 0x8a, 0x01, 0x15, 0x01, + 0x35, 0x5b, 0xfd, 0x9f, 0x9f, 0x34, 0x0c, 0x96, 0x1d, 0x4b, 0x90, 0x6f, 0xb6, 0xfa, 0x4f, 0x1a, + 0xf5, 0xa3, 0x86, 0x81, 0x53, 0xd5, 0x6f, 0x40, 0x65, 0x06, 0x66, 0xe8, 0x5f, 0x1e, 0xb7, 0x9f, + 0xc7, 0xc4, 0x6e, 0x40, 0x49, 0x50, 0x9e, 0x75, 0x8e, 0x9b, 0x87, 0xcd, 0x1e, 0x56, 0xe6, 0xa4, + 0x4e, 0xbd, 0xdb, 0x7d, 0xde, 0x36, 0x8e, 0x70, 0x8a, 0x6c, 0x03, 0xe6, 0xa4, 0x7a, 0x87, 0xad, + 0xaa, 0xf7, 0x9a, 0xed, 0x16, 0x4e, 0x2f, 0xa8, 0x87, 0x87, 0x8d, 0x6e, 0xb7, 0x7f, 0xd8, 0x3e, + 0x6a, 0x60, 0xb5, 0xfa, 0xf7, 0xd4, 0x22, 0xdb, 0xc4, 0x9e, 0x69, 0xc8, 0x6f, 0x94, 0xd8, 0x03, + 0xb3, 0xbf, 0x60, 0xc8, 0xd4, 0x73, 0xf2, 0x36, 0x6f, 0x40, 0xab, 0x68, 0xc2, 0xb8, 0xf3, 0x97, + 0xe7, 0x18, 0xa7, 0xf2, 0x31, 0x68, 0x2b, 0x04, 0xb8, 0xd5, 0x58, 0xa5, 0xe4, 0x4e, 0x27, 0x5f, + 0x12, 0xc5, 0xa4, 0xf2, 0x07, 0x65, 0xa5, 0xc8, 0xeb, 0x3c, 0xe4, 0x55, 0xd2, 0x43, 0xbe, 0x73, + 0xdd, 0x96, 0x1c, 0xec, 0xf7, 0x0a, 0xeb, 0xe0, 0x79, 0xac, 0x74, 0xe2, 0x0a, 0x14, 0x36, 0xc9, + 0x2f, 0x5c, 0x5e, 0xfc, 0x88, 0xcb, 0x93, 0xca, 0x7f, 0x06, 0xb0, 0x20, 0x6e, 0xf2, 0x1d, 0x7d, + 0x70, 0xf8, 0x8b, 0xfa, 0xc8, 0x0e, 0xcf, 0xa6, 0xa7, 0x35, 0xcb, 0x73, 0xf6, 0xd8, 0x41, 0x1e, + 0x51, 0xcb, 0x0b, 0x66, 0x41, 0x48, 0xe5, 0x54, 0x9e, 0x6b, 0xef, 0xf5, 0xff, 0x4a, 0x9d, 0x66, + 0x39, 0xef, 0xd3, 0x7f, 0x05, 0x00, 0x00, 0xff, 0xff, 0x2f, 0xcd, 0x75, 0x32, 0xba, 0x1a, 0x00, + 0x00, } diff --git a/protoc-gen-swagger/options/openapiv2.proto b/protoc-gen-swagger/options/openapiv2.proto index 813646eebe7..df5dea34847 100644 --- a/protoc-gen-swagger/options/openapiv2.proto +++ b/protoc-gen-swagger/options/openapiv2.proto @@ -177,7 +177,7 @@ message Operation { message Header { // `Description` is a short description of the header. string description = 1; - // `Type` Required. The type of the object. The value MUST be one of "string", "number", "integer", or "boolean" "array" is not supported. + // The type of the object. The value MUST be one of "string", "number", "integer", or "boolean". The "array" type is not supported. string type = 2; // `Format` The extending format for the previously mentioned type. string format = 3; @@ -185,10 +185,10 @@ message Header { reserved 4; // field 5 is reserved `Collection Format` Determines the format of the array if type array is used. reserved 5; - // Declares the value of the header that the server will use if none is provided. (Note: "default" has no meaning for required headers.) See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-6.2. Unlike JSON Schema this value MUST conform to the defined type for the header. - // A free-form property to include a JSON example of this field. This is copied - // verbatim to the output swagger.json. Quotes must be escaped. - google.protobuf.Any default = 6; + // `Default` Declares the value of the header that the server will use if none is provided. + // See: https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-6.2. + // Unlike JSON Schema this value MUST conform to the defined type for the header. + string default = 6; // field 7 is reserved for 'maximum'. reserved 7; // field 8 is reserved for 'exclusiveMaximum'. @@ -439,7 +439,7 @@ message JSONSchema { // A free-form property to include a JSON example of this field. This is copied // verbatim to the output swagger.json. Quotes must be escaped. // This property is the same for 2.0 and 3.0.0 https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/3.0.0.md#schemaObject https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#schemaObject - google.protobuf.Any example = 9; + string example = 9; double multiple_of = 10; // Maximum represents an inclusive upper limit for a numeric instance. The // value of MUST be a number, diff --git a/repositories.bzl b/repositories.bzl index b2ffc77ec8b..4d7b77eca3f 100644 --- a/repositories.bzl +++ b/repositories.bzl @@ -96,6 +96,13 @@ def go_repositories(): sum = "h1:Ppwyp6VYCF1nvBTXL3trRso7mXMlRrw9ooo375wvi2s=", version = "v1.2.0", ) + go_repository( + name = "com_github_yuin_goldmark", + importpath = "github.com/yuin/goldmark", + sum = "h1:ruQGxdhGHe7FWOJPT0mKs5+pD2Xs1Bm/kdGlHO04FmM=", + version = "v1.2.1", + ) + go_repository( name = "com_google_cloud_go", importpath = "cloud.google.com/go", @@ -137,8 +144,8 @@ def go_repositories(): go_repository( name = "org_golang_x_crypto", importpath = "golang.org/x/crypto", - sum = "h1:VklqNMn3ovrHsnt90PveolxSbWFaJdECFbxSq0Mqo2M=", - version = "v0.0.0-20190308221718-c2843e01d9a2", + sum = "h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI=", + version = "v0.0.0-20200622213623-75b288015ac9", ) go_repository( name = "org_golang_x_exp", @@ -152,11 +159,18 @@ def go_repositories(): sum = "h1:XQyxROzUlZH+WIQwySDgnISgOivlhjIEwaQaJEJrrN0=", version = "v0.0.0-20190313153728-d0100b6bd8b3", ) + go_repository( + name = "org_golang_x_mod", + importpath = "golang.org/x/mod", + sum = "h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4=", + version = "v0.3.0", + ) + go_repository( name = "org_golang_x_net", importpath = "golang.org/x/net", - sum = "h1:2mqDk8w/o6UmeUCu5Qiq2y7iMf6anbx+YA8d1JFoFrs=", - version = "v0.0.0-20191002035440-2ec189313ef0", + sum = "h1:VvcQYSHwXgi7W+TpUR6A9g6Up98WAHf3f/ulnJ62IyA=", + version = "v0.0.0-20200822124328-c89045814202", ) go_repository( name = "org_golang_x_oauth2", @@ -167,14 +181,14 @@ def go_repositories(): go_repository( name = "org_golang_x_sync", importpath = "golang.org/x/sync", - sum = "h1:8gQV6CLnAEikrhgkHFbMAEhagSSnXWGV915qUMm9mrU=", - version = "v0.0.0-20190423024810-112230192c58", + sum = "h1:qwRHBd0NqMbJxfbotnDhm2ByMI1Shq4Y6oRJo21SGJA=", + version = "v0.0.0-20200625203802-6e8e738ad208", ) go_repository( name = "org_golang_x_sys", importpath = "golang.org/x/sys", - sum = "h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU=", - version = "v0.0.0-20190215142949-d0b11bdaac8a", + sum = "h1:xhmwyvizuTgC2qz7ZlMluP20uW+C3Rm0FD/WLDX8884=", + version = "v0.0.0-20200323222414-85ca7c5b95cd", ) go_repository( name = "org_golang_x_text", @@ -185,13 +199,13 @@ def go_repositories(): go_repository( name = "org_golang_x_tools", importpath = "golang.org/x/tools", - sum = "h1:5Beo0mZN8dRzgrMMkDp0jc8YXQKx9DiJ2k1dkvGsn5A=", - version = "v0.0.0-20190524140312-2c0ae7006135", + sum = "h1:dsCKiisqD3p5CK4EdxImDYTywMPbdNmk4CXQ8qUfQ2c=", + version = "v0.0.0-20201008172056-03e951c4abd2", ) go_repository( name = "org_golang_x_xerrors", importpath = "golang.org/x/xerrors", - sum = "h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=", - version = "v0.0.0-20191204190536-9bdfabe68543", + sum = "h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=", + version = "v0.0.0-20200804184101-5ec99f83aff1", )