diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 21bc3e9..912e19a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -17,20 +17,20 @@ jobs: - name: Install dart-sass-embedded Linux if: matrix.os == 'ubuntu-latest' run: | - curl -LJO https://github.com/sass/dart-sass-embedded/releases/download/1.0.0-beta.5/sass_embedded-1.0.0-beta.5-linux-x64.tar.gz; - tar -xvf sass_embedded-1.0.0-beta.5-linux-x64.tar.gz; + curl -LJO https://github.com/sass/dart-sass-embedded/releases/download/1.0.0-beta.6/sass_embedded-1.0.0-beta.6-linux-x64.tar.gz; + tar -xvf sass_embedded-1.0.0-beta.6-linux-x64.tar.gz; echo "DART_SASS_EMBEDDED_BINARY=$GITHUB_WORKSPACE/sass_embedded/dart-sass-embedded" >> $GITHUB_ENV - name: Install dart-sass-embedded MacOS if: matrix.os == 'macos-latest' run: | - curl -LJO https://github.com/sass/dart-sass-embedded/releases/download/1.0.0-beta.5/sass_embedded-1.0.0-beta.5-macos-x64.tar.gz; - tar -xvf sass_embedded-1.0.0-beta.5-macos-x64.tar.gz; + curl -LJO https://github.com/sass/dart-sass-embedded/releases/download/1.0.0-beta.6/sass_embedded-1.0.0-beta.6-macos-x64.tar.gz; + tar -xvf sass_embedded-1.0.0-beta.6-macos-x64.tar.gz; echo "DART_SASS_EMBEDDED_BINARY=$GITHUB_WORKSPACE/sass_embedded/dart-sass-embedded" >> $GITHUB_ENV - name: Install dart-sass-embedded Windows if: matrix.os == 'windows-latest' run: | - curl -LJO https://github.com/sass/dart-sass-embedded/releases/download/1.0.0-beta.5/sass_embedded-1.0.0-beta.5-windows-x64.zip; - unzip sass_embedded-1.0.0-beta.5-windows-x64.zip; + curl -LJO https://github.com/sass/dart-sass-embedded/releases/download/1.0.0-beta.6/sass_embedded-1.0.0-beta.6-windows-x64.zip; + unzip sass_embedded-1.0.0-beta.6-windows-x64.zip; echo "DART_SASS_EMBEDDED_BINARY=$env:GITHUB_WORKSPACE/sass_embedded/dart-sass-embedded.bat" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf-8 -Append - name: Test run: go test -race . -coverprofile=coverage.txt -covermode=atomic diff --git a/.gitignore b/.gitignore index 66fd13c..dff079f 100644 --- a/.gitignore +++ b/.gitignore @@ -11,5 +11,7 @@ # Output of the go coverage tool, specifically when used with LiteIDE *.out +lib/ + # Dependency directories (remove the comment below to include it) # vendor/ diff --git a/conn.go b/conn.go index 333cbdb..12f7d5b 100644 --- a/conn.go +++ b/conn.go @@ -1,6 +1,7 @@ package godartsass import ( + "bufio" "bytes" "errors" "io" @@ -22,15 +23,22 @@ func newConn(cmd *exec.Cmd) (_ conn, err error) { out, err := cmd.StdoutPipe() stdErr := &tailBuffer{limit: 1024} - c := conn{out, in, stdErr, cmd} + buff := bufio.NewReader(out) + c := conn{buff, buff, out, in, stdErr, cmd} cmd.Stderr = c.stdErr return c, err } -// conn wraps a ReadCloser, WriteCloser, and a Cmd. +type byteReadWriteCloser interface { + io.ReadWriteCloser + io.ByteReader +} + type conn struct { - io.ReadCloser + io.ByteReader + io.Reader + readerCloser io.Closer io.WriteCloser stdErr *tailBuffer cmd *exec.Cmd @@ -48,7 +56,7 @@ func (c conn) Start() error { // Close closes conn's WriteCloser, ReadClosers, and waits for the command to finish. func (c conn) Close() error { writeErr := c.WriteCloser.Close() - readErr := c.ReadCloser.Close() + readErr := c.readerCloser.Close() cmdErr := c.waitWithTimeout() if writeErr != nil { diff --git a/go.sum b/go.sum index cb77c41..0749443 100644 --- a/go.sum +++ b/go.sum @@ -17,7 +17,6 @@ github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:x github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1 h1:ZFgWrT+bLgsYPirOnRfKLYJLvssAegOj/hgyMFdJZe0= github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= diff --git a/internal/embeddedsass/README.md b/internal/embeddedsass/README.md new file mode 100644 index 0000000..b2376d5 --- /dev/null +++ b/internal/embeddedsass/README.md @@ -0,0 +1,6 @@ + +* Install protobuf: https://github.com/protocolbuffers/protobuf +* Install the Go plugin: go get -u google.golang.org/protobuf/cmd/protoc-gen-go +* Download the correct version of the proto file: https://github.com/sass/embedded-protocol/blob/master/embedded_sass.proto +* protoc --go_out=. embedded_sass.proto +* Fix package name in embedded_sass.pb.go (TODO(bep)) \ No newline at end of file diff --git a/internal/embeddedsass/embedded_sass.pb.go b/internal/embeddedsass/embedded_sass.pb.go index b9d19e8..6692f1d 100644 --- a/internal/embeddedsass/embedded_sass.pb.go +++ b/internal/embeddedsass/embedded_sass.pb.go @@ -137,7 +137,7 @@ func (x InboundMessage_CompileRequest_OutputStyle) Number() protoreflect.EnumNum // Deprecated: Use InboundMessage_CompileRequest_OutputStyle.Descriptor instead. func (InboundMessage_CompileRequest_OutputStyle) EnumDescriptor() ([]byte, []int) { - return file_embedded_sass_proto_rawDescGZIP(), []int{0, 0, 0} + return file_embedded_sass_proto_rawDescGZIP(), []int{0, 1, 0} } // The type of message. @@ -194,7 +194,7 @@ func (x OutboundMessage_LogEvent_Type) Number() protoreflect.EnumNumber { // Deprecated: Use OutboundMessage_LogEvent_Type.Descriptor instead. func (OutboundMessage_LogEvent_Type) EnumDescriptor() ([]byte, []int) { - return file_embedded_sass_proto_rawDescGZIP(), []int{1, 1, 0} + return file_embedded_sass_proto_rawDescGZIP(), []int{1, 2, 0} } // Potential types of errors. @@ -382,6 +382,7 @@ type InboundMessage struct { // *InboundMessage_ImportResponse_ // *InboundMessage_FileImportResponse_ // *InboundMessage_FunctionCallResponse_ + // *InboundMessage_VersionRequest_ Message isInboundMessage_Message `protobuf_oneof:"message"` } @@ -459,6 +460,13 @@ func (x *InboundMessage) GetFunctionCallResponse() *InboundMessage_FunctionCallR return nil } +func (x *InboundMessage) GetVersionRequest() *InboundMessage_VersionRequest { + if x, ok := x.GetMessage().(*InboundMessage_VersionRequest_); ok { + return x.VersionRequest + } + return nil +} + type isInboundMessage_Message interface { isInboundMessage_Message() } @@ -483,6 +491,10 @@ type InboundMessage_FunctionCallResponse_ struct { FunctionCallResponse *InboundMessage_FunctionCallResponse `protobuf:"bytes,6,opt,name=functionCallResponse,proto3,oneof"` } +type InboundMessage_VersionRequest_ struct { + VersionRequest *InboundMessage_VersionRequest `protobuf:"bytes,7,opt,name=versionRequest,proto3,oneof"` +} + func (*InboundMessage_CompileRequest_) isInboundMessage_Message() {} func (*InboundMessage_CanonicalizeResponse_) isInboundMessage_Message() {} @@ -493,6 +505,8 @@ func (*InboundMessage_FileImportResponse_) isInboundMessage_Message() {} func (*InboundMessage_FunctionCallResponse_) isInboundMessage_Message() {} +func (*InboundMessage_VersionRequest_) isInboundMessage_Message() {} + // The wrapper type for all messages sent from the compiler to the host. This // provides a `oneof` that makes it possible to determine the type of each // outbound message. @@ -511,6 +525,7 @@ type OutboundMessage struct { // *OutboundMessage_ImportRequest_ // *OutboundMessage_FileImportRequest_ // *OutboundMessage_FunctionCallRequest_ + // *OutboundMessage_VersionResponse_ Message isOutboundMessage_Message `protobuf_oneof:"message"` } @@ -602,6 +617,13 @@ func (x *OutboundMessage) GetFunctionCallRequest() *OutboundMessage_FunctionCall return nil } +func (x *OutboundMessage) GetVersionResponse() *OutboundMessage_VersionResponse { + if x, ok := x.GetMessage().(*OutboundMessage_VersionResponse_); ok { + return x.VersionResponse + } + return nil +} + type isOutboundMessage_Message interface { isOutboundMessage_Message() } @@ -634,6 +656,10 @@ type OutboundMessage_FunctionCallRequest_ struct { FunctionCallRequest *OutboundMessage_FunctionCallRequest `protobuf:"bytes,7,opt,name=functionCallRequest,proto3,oneof"` } +type OutboundMessage_VersionResponse_ struct { + VersionResponse *OutboundMessage_VersionResponse `protobuf:"bytes,8,opt,name=versionResponse,proto3,oneof"` +} + func (*OutboundMessage_Error) isOutboundMessage_Message() {} func (*OutboundMessage_CompileResponse_) isOutboundMessage_Message() {} @@ -648,6 +674,8 @@ func (*OutboundMessage_FileImportRequest_) isOutboundMessage_Message() {} func (*OutboundMessage_FunctionCallRequest_) isOutboundMessage_Message() {} +func (*OutboundMessage_VersionResponse_) isOutboundMessage_Message() {} + // An error reported when an endpoint violates the embedded Sass protocol. type ProtocolError struct { state protoimpl.MessageState @@ -658,7 +686,7 @@ type ProtocolError struct { // The ID of the request that had an error. This MUST be `-1` if the request // ID couldn't be determined, or if the error is being reported for a response // or an event. - Id int32 `protobuf:"varint,2,opt,name=id,proto3" json:"id,omitempty"` + Id uint32 `protobuf:"varint,2,opt,name=id,proto3" json:"id,omitempty"` // A human-readable message providing more detail about the error. Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` } @@ -702,7 +730,7 @@ func (x *ProtocolError) GetType() ProtocolError_ErrorType { return ProtocolError_PARSE } -func (x *ProtocolError) GetId() int32 { +func (x *ProtocolError) GetId() uint32 { if x != nil { return x.Id } @@ -1001,6 +1029,48 @@ func (*Value_CompilerFunction_) isValue_Value() {} func (*Value_HostFunction_) isValue_Value() {} +// A request for information about the version of the embedded compiler. The +// host can use this to provide diagnostic information to the user, to check +// which features the compiler supports, or to ensure that it's compatible +// with the same protocol version the compiler supports. +type InboundMessage_VersionRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *InboundMessage_VersionRequest) Reset() { + *x = InboundMessage_VersionRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_embedded_sass_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *InboundMessage_VersionRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InboundMessage_VersionRequest) ProtoMessage() {} + +func (x *InboundMessage_VersionRequest) ProtoReflect() protoreflect.Message { + mi := &file_embedded_sass_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InboundMessage_VersionRequest.ProtoReflect.Descriptor instead. +func (*InboundMessage_VersionRequest) Descriptor() ([]byte, []int) { + return file_embedded_sass_proto_rawDescGZIP(), []int{0, 0} +} + // A request that compiles an entrypoint to CSS. type InboundMessage_CompileRequest struct { state protoimpl.MessageState @@ -1039,7 +1109,7 @@ type InboundMessage_CompileRequest struct { func (x *InboundMessage_CompileRequest) Reset() { *x = InboundMessage_CompileRequest{} if protoimpl.UnsafeEnabled { - mi := &file_embedded_sass_proto_msgTypes[5] + mi := &file_embedded_sass_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1052,7 +1122,7 @@ func (x *InboundMessage_CompileRequest) String() string { func (*InboundMessage_CompileRequest) ProtoMessage() {} func (x *InboundMessage_CompileRequest) ProtoReflect() protoreflect.Message { - mi := &file_embedded_sass_proto_msgTypes[5] + mi := &file_embedded_sass_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1065,7 +1135,7 @@ func (x *InboundMessage_CompileRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use InboundMessage_CompileRequest.ProtoReflect.Descriptor instead. func (*InboundMessage_CompileRequest) Descriptor() ([]byte, []int) { - return file_embedded_sass_proto_rawDescGZIP(), []int{0, 0} + return file_embedded_sass_proto_rawDescGZIP(), []int{0, 1} } func (x *InboundMessage_CompileRequest) GetId() uint32 { @@ -1162,7 +1232,7 @@ type InboundMessage_CanonicalizeResponse struct { func (x *InboundMessage_CanonicalizeResponse) Reset() { *x = InboundMessage_CanonicalizeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_embedded_sass_proto_msgTypes[6] + mi := &file_embedded_sass_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1175,7 +1245,7 @@ func (x *InboundMessage_CanonicalizeResponse) String() string { func (*InboundMessage_CanonicalizeResponse) ProtoMessage() {} func (x *InboundMessage_CanonicalizeResponse) ProtoReflect() protoreflect.Message { - mi := &file_embedded_sass_proto_msgTypes[6] + mi := &file_embedded_sass_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1188,7 +1258,7 @@ func (x *InboundMessage_CanonicalizeResponse) ProtoReflect() protoreflect.Messag // Deprecated: Use InboundMessage_CanonicalizeResponse.ProtoReflect.Descriptor instead. func (*InboundMessage_CanonicalizeResponse) Descriptor() ([]byte, []int) { - return file_embedded_sass_proto_rawDescGZIP(), []int{0, 1} + return file_embedded_sass_proto_rawDescGZIP(), []int{0, 2} } func (x *InboundMessage_CanonicalizeResponse) GetId() uint32 { @@ -1260,7 +1330,7 @@ type InboundMessage_ImportResponse struct { func (x *InboundMessage_ImportResponse) Reset() { *x = InboundMessage_ImportResponse{} if protoimpl.UnsafeEnabled { - mi := &file_embedded_sass_proto_msgTypes[7] + mi := &file_embedded_sass_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1273,7 +1343,7 @@ func (x *InboundMessage_ImportResponse) String() string { func (*InboundMessage_ImportResponse) ProtoMessage() {} func (x *InboundMessage_ImportResponse) ProtoReflect() protoreflect.Message { - mi := &file_embedded_sass_proto_msgTypes[7] + mi := &file_embedded_sass_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1286,7 +1356,7 @@ func (x *InboundMessage_ImportResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use InboundMessage_ImportResponse.ProtoReflect.Descriptor instead. func (*InboundMessage_ImportResponse) Descriptor() ([]byte, []int) { - return file_embedded_sass_proto_rawDescGZIP(), []int{0, 2} + return file_embedded_sass_proto_rawDescGZIP(), []int{0, 3} } func (x *InboundMessage_ImportResponse) GetId() uint32 { @@ -1353,7 +1423,7 @@ type InboundMessage_FileImportResponse struct { func (x *InboundMessage_FileImportResponse) Reset() { *x = InboundMessage_FileImportResponse{} if protoimpl.UnsafeEnabled { - mi := &file_embedded_sass_proto_msgTypes[8] + mi := &file_embedded_sass_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1366,7 +1436,7 @@ func (x *InboundMessage_FileImportResponse) String() string { func (*InboundMessage_FileImportResponse) ProtoMessage() {} func (x *InboundMessage_FileImportResponse) ProtoReflect() protoreflect.Message { - mi := &file_embedded_sass_proto_msgTypes[8] + mi := &file_embedded_sass_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1379,7 +1449,7 @@ func (x *InboundMessage_FileImportResponse) ProtoReflect() protoreflect.Message // Deprecated: Use InboundMessage_FileImportResponse.ProtoReflect.Descriptor instead. func (*InboundMessage_FileImportResponse) Descriptor() ([]byte, []int) { - return file_embedded_sass_proto_rawDescGZIP(), []int{0, 3} + return file_embedded_sass_proto_rawDescGZIP(), []int{0, 4} } func (x *InboundMessage_FileImportResponse) GetId() uint32 { @@ -1459,7 +1529,7 @@ type InboundMessage_FunctionCallResponse struct { func (x *InboundMessage_FunctionCallResponse) Reset() { *x = InboundMessage_FunctionCallResponse{} if protoimpl.UnsafeEnabled { - mi := &file_embedded_sass_proto_msgTypes[9] + mi := &file_embedded_sass_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1472,7 +1542,7 @@ func (x *InboundMessage_FunctionCallResponse) String() string { func (*InboundMessage_FunctionCallResponse) ProtoMessage() {} func (x *InboundMessage_FunctionCallResponse) ProtoReflect() protoreflect.Message { - mi := &file_embedded_sass_proto_msgTypes[9] + mi := &file_embedded_sass_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1485,7 +1555,7 @@ func (x *InboundMessage_FunctionCallResponse) ProtoReflect() protoreflect.Messag // Deprecated: Use InboundMessage_FunctionCallResponse.ProtoReflect.Descriptor instead. func (*InboundMessage_FunctionCallResponse) Descriptor() ([]byte, []int) { - return file_embedded_sass_proto_rawDescGZIP(), []int{0, 4} + return file_embedded_sass_proto_rawDescGZIP(), []int{0, 5} } func (x *InboundMessage_FunctionCallResponse) GetId() uint32 { @@ -1557,7 +1627,7 @@ type InboundMessage_CompileRequest_StringInput struct { func (x *InboundMessage_CompileRequest_StringInput) Reset() { *x = InboundMessage_CompileRequest_StringInput{} if protoimpl.UnsafeEnabled { - mi := &file_embedded_sass_proto_msgTypes[10] + mi := &file_embedded_sass_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1570,7 +1640,7 @@ func (x *InboundMessage_CompileRequest_StringInput) String() string { func (*InboundMessage_CompileRequest_StringInput) ProtoMessage() {} func (x *InboundMessage_CompileRequest_StringInput) ProtoReflect() protoreflect.Message { - mi := &file_embedded_sass_proto_msgTypes[10] + mi := &file_embedded_sass_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1583,7 +1653,7 @@ func (x *InboundMessage_CompileRequest_StringInput) ProtoReflect() protoreflect. // Deprecated: Use InboundMessage_CompileRequest_StringInput.ProtoReflect.Descriptor instead. func (*InboundMessage_CompileRequest_StringInput) Descriptor() ([]byte, []int) { - return file_embedded_sass_proto_rawDescGZIP(), []int{0, 0, 0} + return file_embedded_sass_proto_rawDescGZIP(), []int{0, 1, 0} } func (x *InboundMessage_CompileRequest_StringInput) GetSource() string { @@ -1634,7 +1704,7 @@ type InboundMessage_CompileRequest_Importer struct { func (x *InboundMessage_CompileRequest_Importer) Reset() { *x = InboundMessage_CompileRequest_Importer{} if protoimpl.UnsafeEnabled { - mi := &file_embedded_sass_proto_msgTypes[11] + mi := &file_embedded_sass_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1647,7 +1717,7 @@ func (x *InboundMessage_CompileRequest_Importer) String() string { func (*InboundMessage_CompileRequest_Importer) ProtoMessage() {} func (x *InboundMessage_CompileRequest_Importer) ProtoReflect() protoreflect.Message { - mi := &file_embedded_sass_proto_msgTypes[11] + mi := &file_embedded_sass_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1660,7 +1730,7 @@ func (x *InboundMessage_CompileRequest_Importer) ProtoReflect() protoreflect.Mes // Deprecated: Use InboundMessage_CompileRequest_Importer.ProtoReflect.Descriptor instead. func (*InboundMessage_CompileRequest_Importer) Descriptor() ([]byte, []int) { - return file_embedded_sass_proto_rawDescGZIP(), []int{0, 0, 1} + return file_embedded_sass_proto_rawDescGZIP(), []int{0, 1, 1} } func (m *InboundMessage_CompileRequest_Importer) GetImporter() isInboundMessage_CompileRequest_Importer_Importer { @@ -1756,7 +1826,7 @@ type InboundMessage_ImportResponse_ImportSuccess struct { func (x *InboundMessage_ImportResponse_ImportSuccess) Reset() { *x = InboundMessage_ImportResponse_ImportSuccess{} if protoimpl.UnsafeEnabled { - mi := &file_embedded_sass_proto_msgTypes[12] + mi := &file_embedded_sass_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1769,7 +1839,7 @@ func (x *InboundMessage_ImportResponse_ImportSuccess) String() string { func (*InboundMessage_ImportResponse_ImportSuccess) ProtoMessage() {} func (x *InboundMessage_ImportResponse_ImportSuccess) ProtoReflect() protoreflect.Message { - mi := &file_embedded_sass_proto_msgTypes[12] + mi := &file_embedded_sass_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1782,7 +1852,7 @@ func (x *InboundMessage_ImportResponse_ImportSuccess) ProtoReflect() protoreflec // Deprecated: Use InboundMessage_ImportResponse_ImportSuccess.ProtoReflect.Descriptor instead. func (*InboundMessage_ImportResponse_ImportSuccess) Descriptor() ([]byte, []int) { - return file_embedded_sass_proto_rawDescGZIP(), []int{0, 2, 0} + return file_embedded_sass_proto_rawDescGZIP(), []int{0, 3, 0} } func (x *InboundMessage_ImportResponse_ImportSuccess) GetContents() string { @@ -1806,6 +1876,85 @@ func (x *InboundMessage_ImportResponse_ImportSuccess) GetSourceMapUrl() string { return "" } +// A response that contains the version of the embedded compiler. +type OutboundMessage_VersionResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The version of the embedded protocol, in semver format. + ProtocolVersion string `protobuf:"bytes,1,opt,name=protocol_version,json=protocolVersion,proto3" json:"protocol_version,omitempty"` + // The version of the embedded compiler package. This has no guaranteed + // format, although compilers are encouraged to use semver. + CompilerVersion string `protobuf:"bytes,2,opt,name=compiler_version,json=compilerVersion,proto3" json:"compiler_version,omitempty"` + // The version of the Sass implementation that the embedded compiler wraps. + // This has no guaranteed format, although Sass implementations are + // encouraged to use semver. + ImplementationVersion string `protobuf:"bytes,3,opt,name=implementation_version,json=implementationVersion,proto3" json:"implementation_version,omitempty"` + // The name of the Sass implementation that the embedded compiler wraps. + ImplementationName string `protobuf:"bytes,4,opt,name=implementation_name,json=implementationName,proto3" json:"implementation_name,omitempty"` +} + +func (x *OutboundMessage_VersionResponse) Reset() { + *x = OutboundMessage_VersionResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_embedded_sass_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OutboundMessage_VersionResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OutboundMessage_VersionResponse) ProtoMessage() {} + +func (x *OutboundMessage_VersionResponse) ProtoReflect() protoreflect.Message { + mi := &file_embedded_sass_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OutboundMessage_VersionResponse.ProtoReflect.Descriptor instead. +func (*OutboundMessage_VersionResponse) Descriptor() ([]byte, []int) { + return file_embedded_sass_proto_rawDescGZIP(), []int{1, 0} +} + +func (x *OutboundMessage_VersionResponse) GetProtocolVersion() string { + if x != nil { + return x.ProtocolVersion + } + return "" +} + +func (x *OutboundMessage_VersionResponse) GetCompilerVersion() string { + if x != nil { + return x.CompilerVersion + } + return "" +} + +func (x *OutboundMessage_VersionResponse) GetImplementationVersion() string { + if x != nil { + return x.ImplementationVersion + } + return "" +} + +func (x *OutboundMessage_VersionResponse) GetImplementationName() string { + if x != nil { + return x.ImplementationName + } + return "" +} + // A response that contains the result of a compilation. type OutboundMessage_CompileResponse struct { state protoimpl.MessageState @@ -1813,7 +1962,7 @@ type OutboundMessage_CompileResponse struct { unknownFields protoimpl.UnknownFields // The compilation's request id. Mandatory. - Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` // The success or failure result of the compilation. Mandatory. // // Types that are assignable to Result: @@ -1825,7 +1974,7 @@ type OutboundMessage_CompileResponse struct { func (x *OutboundMessage_CompileResponse) Reset() { *x = OutboundMessage_CompileResponse{} if protoimpl.UnsafeEnabled { - mi := &file_embedded_sass_proto_msgTypes[13] + mi := &file_embedded_sass_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1838,7 +1987,7 @@ func (x *OutboundMessage_CompileResponse) String() string { func (*OutboundMessage_CompileResponse) ProtoMessage() {} func (x *OutboundMessage_CompileResponse) ProtoReflect() protoreflect.Message { - mi := &file_embedded_sass_proto_msgTypes[13] + mi := &file_embedded_sass_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1851,10 +2000,10 @@ func (x *OutboundMessage_CompileResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use OutboundMessage_CompileResponse.ProtoReflect.Descriptor instead. func (*OutboundMessage_CompileResponse) Descriptor() ([]byte, []int) { - return file_embedded_sass_proto_rawDescGZIP(), []int{1, 0} + return file_embedded_sass_proto_rawDescGZIP(), []int{1, 1} } -func (x *OutboundMessage_CompileResponse) GetId() int32 { +func (x *OutboundMessage_CompileResponse) GetId() uint32 { if x != nil { return x.Id } @@ -1924,7 +2073,7 @@ type OutboundMessage_LogEvent struct { func (x *OutboundMessage_LogEvent) Reset() { *x = OutboundMessage_LogEvent{} if protoimpl.UnsafeEnabled { - mi := &file_embedded_sass_proto_msgTypes[14] + mi := &file_embedded_sass_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1937,7 +2086,7 @@ func (x *OutboundMessage_LogEvent) String() string { func (*OutboundMessage_LogEvent) ProtoMessage() {} func (x *OutboundMessage_LogEvent) ProtoReflect() protoreflect.Message { - mi := &file_embedded_sass_proto_msgTypes[14] + mi := &file_embedded_sass_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1950,7 +2099,7 @@ func (x *OutboundMessage_LogEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use OutboundMessage_LogEvent.ProtoReflect.Descriptor instead. func (*OutboundMessage_LogEvent) Descriptor() ([]byte, []int) { - return file_embedded_sass_proto_rawDescGZIP(), []int{1, 1} + return file_embedded_sass_proto_rawDescGZIP(), []int{1, 2} } func (x *OutboundMessage_LogEvent) GetCompilationId() uint32 { @@ -2056,19 +2205,19 @@ type OutboundMessage_CanonicalizeRequest struct { // The URL of the import to be canonicalized. This may be either absolute or // relative. // - // When loading a URL, the host must first try resolving that URL relative - // to the canonical URL of the current file, and canonicalizing the result - // using the importer that loaded the current file. If this returns `null`, - // the host must then try canonicalizing the original URL with each importer - // in order until one returns something other than `null`. That is the - // result of the import. + // When loading a URL, the compiler must first try resolving that URL + // relative to the canonical URL of the current file, and canonicalizing the + // result using the importer that loaded the current file. If this returns + // `null`, the compiler must then try canonicalizing the original URL with + // each importer in order until one returns something other than `null`. + // That is the result of the import. Url string `protobuf:"bytes,4,opt,name=url,proto3" json:"url,omitempty"` } func (x *OutboundMessage_CanonicalizeRequest) Reset() { *x = OutboundMessage_CanonicalizeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_embedded_sass_proto_msgTypes[15] + mi := &file_embedded_sass_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2081,7 +2230,7 @@ func (x *OutboundMessage_CanonicalizeRequest) String() string { func (*OutboundMessage_CanonicalizeRequest) ProtoMessage() {} func (x *OutboundMessage_CanonicalizeRequest) ProtoReflect() protoreflect.Message { - mi := &file_embedded_sass_proto_msgTypes[15] + mi := &file_embedded_sass_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2094,7 +2243,7 @@ func (x *OutboundMessage_CanonicalizeRequest) ProtoReflect() protoreflect.Messag // Deprecated: Use OutboundMessage_CanonicalizeRequest.ProtoReflect.Descriptor instead. func (*OutboundMessage_CanonicalizeRequest) Descriptor() ([]byte, []int) { - return file_embedded_sass_proto_rawDescGZIP(), []int{1, 2} + return file_embedded_sass_proto_rawDescGZIP(), []int{1, 3} } func (x *OutboundMessage_CanonicalizeRequest) GetId() uint32 { @@ -2147,7 +2296,7 @@ type OutboundMessage_ImportRequest struct { func (x *OutboundMessage_ImportRequest) Reset() { *x = OutboundMessage_ImportRequest{} if protoimpl.UnsafeEnabled { - mi := &file_embedded_sass_proto_msgTypes[16] + mi := &file_embedded_sass_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2160,7 +2309,7 @@ func (x *OutboundMessage_ImportRequest) String() string { func (*OutboundMessage_ImportRequest) ProtoMessage() {} func (x *OutboundMessage_ImportRequest) ProtoReflect() protoreflect.Message { - mi := &file_embedded_sass_proto_msgTypes[16] + mi := &file_embedded_sass_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2173,7 +2322,7 @@ func (x *OutboundMessage_ImportRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use OutboundMessage_ImportRequest.ProtoReflect.Descriptor instead. func (*OutboundMessage_ImportRequest) Descriptor() ([]byte, []int) { - return file_embedded_sass_proto_rawDescGZIP(), []int{1, 3} + return file_embedded_sass_proto_rawDescGZIP(), []int{1, 4} } func (x *OutboundMessage_ImportRequest) GetId() uint32 { @@ -2219,15 +2368,14 @@ type OutboundMessage_FileImportRequest struct { // `CompileRequest.importers` or `CompileRequest.input.string.importer`. // Mandatory. ImporterId uint32 `protobuf:"varint,3,opt,name=importer_id,json=importerId,proto3" json:"importer_id,omitempty"` - // The canonical URL of the import. This is guaranteed to be a URL returned - // by a `CanonicalizeRequest` to this importer. + // The (non-canonicalized) URL of the import. Url string `protobuf:"bytes,4,opt,name=url,proto3" json:"url,omitempty"` } func (x *OutboundMessage_FileImportRequest) Reset() { *x = OutboundMessage_FileImportRequest{} if protoimpl.UnsafeEnabled { - mi := &file_embedded_sass_proto_msgTypes[17] + mi := &file_embedded_sass_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2240,7 +2388,7 @@ func (x *OutboundMessage_FileImportRequest) String() string { func (*OutboundMessage_FileImportRequest) ProtoMessage() {} func (x *OutboundMessage_FileImportRequest) ProtoReflect() protoreflect.Message { - mi := &file_embedded_sass_proto_msgTypes[17] + mi := &file_embedded_sass_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2253,7 +2401,7 @@ func (x *OutboundMessage_FileImportRequest) ProtoReflect() protoreflect.Message // Deprecated: Use OutboundMessage_FileImportRequest.ProtoReflect.Descriptor instead. func (*OutboundMessage_FileImportRequest) Descriptor() ([]byte, []int) { - return file_embedded_sass_proto_rawDescGZIP(), []int{1, 4} + return file_embedded_sass_proto_rawDescGZIP(), []int{1, 5} } func (x *OutboundMessage_FileImportRequest) GetId() uint32 { @@ -2312,7 +2460,7 @@ type OutboundMessage_FunctionCallRequest struct { func (x *OutboundMessage_FunctionCallRequest) Reset() { *x = OutboundMessage_FunctionCallRequest{} if protoimpl.UnsafeEnabled { - mi := &file_embedded_sass_proto_msgTypes[18] + mi := &file_embedded_sass_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2325,7 +2473,7 @@ func (x *OutboundMessage_FunctionCallRequest) String() string { func (*OutboundMessage_FunctionCallRequest) ProtoMessage() {} func (x *OutboundMessage_FunctionCallRequest) ProtoReflect() protoreflect.Message { - mi := &file_embedded_sass_proto_msgTypes[18] + mi := &file_embedded_sass_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2338,7 +2486,7 @@ func (x *OutboundMessage_FunctionCallRequest) ProtoReflect() protoreflect.Messag // Deprecated: Use OutboundMessage_FunctionCallRequest.ProtoReflect.Descriptor instead. func (*OutboundMessage_FunctionCallRequest) Descriptor() ([]byte, []int) { - return file_embedded_sass_proto_rawDescGZIP(), []int{1, 5} + return file_embedded_sass_proto_rawDescGZIP(), []int{1, 6} } func (x *OutboundMessage_FunctionCallRequest) GetId() uint32 { @@ -2429,7 +2577,7 @@ type OutboundMessage_CompileResponse_CompileSuccess struct { func (x *OutboundMessage_CompileResponse_CompileSuccess) Reset() { *x = OutboundMessage_CompileResponse_CompileSuccess{} if protoimpl.UnsafeEnabled { - mi := &file_embedded_sass_proto_msgTypes[19] + mi := &file_embedded_sass_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2442,7 +2590,7 @@ func (x *OutboundMessage_CompileResponse_CompileSuccess) String() string { func (*OutboundMessage_CompileResponse_CompileSuccess) ProtoMessage() {} func (x *OutboundMessage_CompileResponse_CompileSuccess) ProtoReflect() protoreflect.Message { - mi := &file_embedded_sass_proto_msgTypes[19] + mi := &file_embedded_sass_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2455,7 +2603,7 @@ func (x *OutboundMessage_CompileResponse_CompileSuccess) ProtoReflect() protoref // Deprecated: Use OutboundMessage_CompileResponse_CompileSuccess.ProtoReflect.Descriptor instead. func (*OutboundMessage_CompileResponse_CompileSuccess) Descriptor() ([]byte, []int) { - return file_embedded_sass_proto_rawDescGZIP(), []int{1, 0, 0} + return file_embedded_sass_proto_rawDescGZIP(), []int{1, 1, 0} } func (x *OutboundMessage_CompileResponse_CompileSuccess) GetCss() string { @@ -2494,7 +2642,7 @@ type OutboundMessage_CompileResponse_CompileFailure struct { func (x *OutboundMessage_CompileResponse_CompileFailure) Reset() { *x = OutboundMessage_CompileResponse_CompileFailure{} if protoimpl.UnsafeEnabled { - mi := &file_embedded_sass_proto_msgTypes[20] + mi := &file_embedded_sass_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2507,7 +2655,7 @@ func (x *OutboundMessage_CompileResponse_CompileFailure) String() string { func (*OutboundMessage_CompileResponse_CompileFailure) ProtoMessage() {} func (x *OutboundMessage_CompileResponse_CompileFailure) ProtoReflect() protoreflect.Message { - mi := &file_embedded_sass_proto_msgTypes[20] + mi := &file_embedded_sass_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2520,7 +2668,7 @@ func (x *OutboundMessage_CompileResponse_CompileFailure) ProtoReflect() protoref // Deprecated: Use OutboundMessage_CompileResponse_CompileFailure.ProtoReflect.Descriptor instead. func (*OutboundMessage_CompileResponse_CompileFailure) Descriptor() ([]byte, []int) { - return file_embedded_sass_proto_rawDescGZIP(), []int{1, 0, 1} + return file_embedded_sass_proto_rawDescGZIP(), []int{1, 1, 1} } func (x *OutboundMessage_CompileResponse_CompileFailure) GetMessage() string { @@ -2562,7 +2710,7 @@ type SourceSpan_SourceLocation struct { func (x *SourceSpan_SourceLocation) Reset() { *x = SourceSpan_SourceLocation{} if protoimpl.UnsafeEnabled { - mi := &file_embedded_sass_proto_msgTypes[21] + mi := &file_embedded_sass_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2575,7 +2723,7 @@ func (x *SourceSpan_SourceLocation) String() string { func (*SourceSpan_SourceLocation) ProtoMessage() {} func (x *SourceSpan_SourceLocation) ProtoReflect() protoreflect.Message { - mi := &file_embedded_sass_proto_msgTypes[21] + mi := &file_embedded_sass_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2627,7 +2775,7 @@ type Value_String struct { func (x *Value_String) Reset() { *x = Value_String{} if protoimpl.UnsafeEnabled { - mi := &file_embedded_sass_proto_msgTypes[22] + mi := &file_embedded_sass_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2640,7 +2788,7 @@ func (x *Value_String) String() string { func (*Value_String) ProtoMessage() {} func (x *Value_String) ProtoReflect() protoreflect.Message { - mi := &file_embedded_sass_proto_msgTypes[22] + mi := &file_embedded_sass_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2694,7 +2842,7 @@ type Value_Number struct { func (x *Value_Number) Reset() { *x = Value_Number{} if protoimpl.UnsafeEnabled { - mi := &file_embedded_sass_proto_msgTypes[23] + mi := &file_embedded_sass_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2707,7 +2855,7 @@ func (x *Value_Number) String() string { func (*Value_Number) ProtoMessage() {} func (x *Value_Number) ProtoReflect() protoreflect.Message { - mi := &file_embedded_sass_proto_msgTypes[23] + mi := &file_embedded_sass_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2764,7 +2912,7 @@ type Value_RgbColor struct { func (x *Value_RgbColor) Reset() { *x = Value_RgbColor{} if protoimpl.UnsafeEnabled { - mi := &file_embedded_sass_proto_msgTypes[24] + mi := &file_embedded_sass_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2777,7 +2925,7 @@ func (x *Value_RgbColor) String() string { func (*Value_RgbColor) ProtoMessage() {} func (x *Value_RgbColor) ProtoReflect() protoreflect.Message { - mi := &file_embedded_sass_proto_msgTypes[24] + mi := &file_embedded_sass_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2843,7 +2991,7 @@ type Value_HslColor struct { func (x *Value_HslColor) Reset() { *x = Value_HslColor{} if protoimpl.UnsafeEnabled { - mi := &file_embedded_sass_proto_msgTypes[25] + mi := &file_embedded_sass_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2856,7 +3004,7 @@ func (x *Value_HslColor) String() string { func (*Value_HslColor) ProtoMessage() {} func (x *Value_HslColor) ProtoReflect() protoreflect.Message { - mi := &file_embedded_sass_proto_msgTypes[25] + mi := &file_embedded_sass_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2917,7 +3065,7 @@ type Value_List struct { func (x *Value_List) Reset() { *x = Value_List{} if protoimpl.UnsafeEnabled { - mi := &file_embedded_sass_proto_msgTypes[26] + mi := &file_embedded_sass_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2930,7 +3078,7 @@ func (x *Value_List) String() string { func (*Value_List) ProtoMessage() {} func (x *Value_List) ProtoReflect() protoreflect.Message { - mi := &file_embedded_sass_proto_msgTypes[26] + mi := &file_embedded_sass_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2981,7 +3129,7 @@ type Value_Map struct { func (x *Value_Map) Reset() { *x = Value_Map{} if protoimpl.UnsafeEnabled { - mi := &file_embedded_sass_proto_msgTypes[27] + mi := &file_embedded_sass_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2994,7 +3142,7 @@ func (x *Value_Map) String() string { func (*Value_Map) ProtoMessage() {} func (x *Value_Map) ProtoReflect() protoreflect.Message { - mi := &file_embedded_sass_proto_msgTypes[27] + mi := &file_embedded_sass_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3036,7 +3184,7 @@ type Value_CompilerFunction struct { func (x *Value_CompilerFunction) Reset() { *x = Value_CompilerFunction{} if protoimpl.UnsafeEnabled { - mi := &file_embedded_sass_proto_msgTypes[28] + mi := &file_embedded_sass_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3049,7 +3197,7 @@ func (x *Value_CompilerFunction) String() string { func (*Value_CompilerFunction) ProtoMessage() {} func (x *Value_CompilerFunction) ProtoReflect() protoreflect.Message { - mi := &file_embedded_sass_proto_msgTypes[28] + mi := &file_embedded_sass_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3099,7 +3247,7 @@ type Value_HostFunction struct { func (x *Value_HostFunction) Reset() { *x = Value_HostFunction{} if protoimpl.UnsafeEnabled { - mi := &file_embedded_sass_proto_msgTypes[29] + mi := &file_embedded_sass_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3112,7 +3260,7 @@ func (x *Value_HostFunction) String() string { func (*Value_HostFunction) ProtoMessage() {} func (x *Value_HostFunction) ProtoReflect() protoreflect.Message { - mi := &file_embedded_sass_proto_msgTypes[29] + mi := &file_embedded_sass_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3157,7 +3305,7 @@ type Value_Map_Entry struct { func (x *Value_Map_Entry) Reset() { *x = Value_Map_Entry{} if protoimpl.UnsafeEnabled { - mi := &file_embedded_sass_proto_msgTypes[30] + mi := &file_embedded_sass_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3170,7 +3318,7 @@ func (x *Value_Map_Entry) String() string { func (*Value_Map_Entry) ProtoMessage() {} func (x *Value_Map_Entry) ProtoReflect() protoreflect.Message { - mi := &file_embedded_sass_proto_msgTypes[30] + mi := &file_embedded_sass_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3205,7 +3353,7 @@ var File_embedded_sass_proto protoreflect.FileDescriptor var file_embedded_sass_proto_rawDesc = []byte{ 0x0a, 0x13, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x73, 0x61, 0x73, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16, 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, - 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x22, 0xa3, 0x10, + 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x22, 0x96, 0x11, 0x0a, 0x0e, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x5f, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, @@ -3240,360 +3388,387 @@ var file_embedded_sass_proto_rawDesc = []byte{ 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x14, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0xbd, 0x06, 0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x5b, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, - 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x2e, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, - 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, 0x06, 0x73, - 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x14, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x57, 0x0a, 0x05, 0x73, - 0x74, 0x79, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x41, 0x2e, 0x73, 0x61, 0x73, - 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x6f, 0x6c, 0x2e, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x52, 0x05, 0x73, - 0x74, 0x79, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, - 0x61, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x4d, 0x61, 0x70, 0x12, 0x5c, 0x0a, 0x09, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x73, - 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, 0x6d, - 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, - 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x43, - 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6d, - 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, - 0x73, 0x12, 0x29, 0x0a, 0x10, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x66, 0x75, 0x6e, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x67, 0x6c, 0x6f, - 0x62, 0x61, 0x6c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0xda, 0x01, 0x0a, - 0x0b, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x16, 0x0a, 0x06, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x45, 0x0a, 0x06, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, 0x6d, - 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, - 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x53, - 0x79, 0x6e, 0x74, 0x61, 0x78, 0x52, 0x06, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x12, 0x5a, 0x0a, - 0x08, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x3e, 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, - 0x08, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x1a, 0x7b, 0x0a, 0x08, 0x49, 0x6d, 0x70, - 0x6f, 0x72, 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x21, 0x0a, 0x0b, 0x69, - 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, - 0x48, 0x00, 0x52, 0x0a, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2a, - 0x0a, 0x10, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x5f, - 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x0e, 0x66, 0x69, 0x6c, 0x65, - 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x49, 0x64, 0x42, 0x0a, 0x0a, 0x08, 0x69, 0x6d, - 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x22, 0x44, 0x0a, 0x0b, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, - 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x58, 0x50, 0x41, 0x4e, 0x44, 0x45, - 0x44, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x4f, 0x4d, 0x50, 0x52, 0x45, 0x53, 0x53, 0x45, - 0x44, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x45, 0x53, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, - 0x0b, 0x0a, 0x07, 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x43, 0x54, 0x10, 0x03, 0x42, 0x07, 0x0a, 0x05, - 0x69, 0x6e, 0x70, 0x75, 0x74, 0x1a, 0x5c, 0x0a, 0x14, 0x43, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, - 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, - 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x75, 0x72, - 0x6c, 0x12, 0x16, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x1a, 0xbc, 0x02, 0x0a, 0x0e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x5f, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, - 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0x2e, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, - 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x49, - 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x48, 0x00, 0x52, 0x07, - 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x16, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x1a, - 0x96, 0x01, 0x0a, 0x0d, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x45, 0x0a, - 0x06, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5f, 0x0a, 0x0e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x53, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x52, 0x06, 0x73, 0x79, - 0x6e, 0x74, 0x61, 0x78, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, - 0x70, 0x55, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x4d, 0x61, 0x70, 0x55, 0x72, 0x6c, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x1a, 0x63, 0x0a, 0x12, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, - 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x66, 0x69, - 0x6c, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x08, 0x0a, - 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x1a, 0x83, 0x01, 0x0a, 0x14, 0x46, 0x75, 0x6e, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x0a, 0x0e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0xbd, 0x06, 0x0a, 0x0e, 0x43, 0x6f, 0x6d, + 0x70, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x5b, 0x0a, 0x06, 0x73, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x73, 0x61, + 0x73, 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, + 0x52, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x14, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x57, + 0x0a, 0x05, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x41, 0x2e, + 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x53, 0x74, 0x79, 0x6c, 0x65, + 0x52, 0x05, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x12, 0x5c, 0x0a, 0x09, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, + 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x73, 0x61, 0x73, 0x73, + 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6c, 0x2e, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6d, 0x70, 0x6f, 0x72, + 0x74, 0x65, 0x72, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x66, + 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, + 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, + 0xda, 0x01, 0x0a, 0x0b, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, + 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x45, 0x0a, 0x06, 0x73, 0x79, 0x6e, + 0x74, 0x61, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x73, 0x61, 0x73, 0x73, + 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6c, 0x2e, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x2e, 0x53, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x52, 0x06, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, + 0x12, 0x5a, 0x0a, 0x08, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, + 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x49, 0x6e, 0x62, 0x6f, + 0x75, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x69, + 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, + 0x65, 0x72, 0x52, 0x08, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x1a, 0x7b, 0x0a, 0x08, + 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x21, + 0x0a, 0x0b, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x0a, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x49, + 0x64, 0x12, 0x2a, 0x0a, 0x10, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, + 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x0e, 0x66, + 0x69, 0x6c, 0x65, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x49, 0x64, 0x42, 0x0a, 0x0a, + 0x08, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x22, 0x44, 0x0a, 0x0b, 0x4f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x58, 0x50, 0x41, + 0x4e, 0x44, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x4f, 0x4d, 0x50, 0x52, 0x45, + 0x53, 0x53, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x45, 0x53, 0x54, 0x45, 0x44, + 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x43, 0x54, 0x10, 0x03, 0x42, + 0x07, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x1a, 0x5c, 0x0a, 0x14, 0x43, 0x61, 0x6e, 0x6f, + 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x39, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, - 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x48, 0x00, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x16, 0x0a, 0x05, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x29, 0x0a, - 0x06, 0x53, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x43, 0x53, 0x53, 0x10, - 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x4e, 0x44, 0x45, 0x4e, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, - 0x07, 0x0a, 0x03, 0x43, 0x53, 0x53, 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x22, 0xf4, 0x0f, 0x0a, 0x0f, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3d, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, 0x6d, + 0x12, 0x12, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, + 0x03, 0x75, 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x08, 0x0a, 0x06, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x1a, 0xbc, 0x02, 0x0a, 0x0e, 0x49, 0x6d, 0x70, 0x6f, 0x72, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x5f, 0x0a, 0x07, 0x73, 0x75, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x73, 0x61, 0x73, + 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x2e, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x48, + 0x00, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x16, 0x0a, 0x05, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x1a, 0x96, 0x01, 0x0a, 0x0d, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x75, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, + 0x12, 0x45, 0x0a, 0x06, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x2d, 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, + 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, + 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x53, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x52, + 0x06, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x4d, 0x61, 0x70, 0x55, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x55, 0x72, 0x6c, 0x42, 0x08, 0x0a, 0x06, 0x72, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x1a, 0x63, 0x0a, 0x12, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6d, 0x70, + 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x08, 0x66, + 0x69, 0x6c, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, + 0x07, 0x66, 0x69, 0x6c, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x1a, 0x83, 0x01, 0x0a, 0x14, 0x46, + 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x39, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, + 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x16, + 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, + 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x22, 0x29, 0x0a, 0x06, 0x53, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x43, + 0x53, 0x53, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x4e, 0x44, 0x45, 0x4e, 0x54, 0x45, 0x44, + 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x43, 0x53, 0x53, 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xab, 0x12, 0x0a, 0x0f, 0x4f, 0x75, 0x74, 0x62, 0x6f, + 0x75, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3d, 0x0a, 0x05, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x61, 0x73, 0x73, + 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6c, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x45, 0x72, 0x72, 0x6f, 0x72, + 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x63, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, + 0x70, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, + 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x4f, 0x75, 0x74, 0x62, + 0x6f, 0x75, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, + 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x0f, 0x63, + 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e, + 0x0a, 0x08, 0x6c, 0x6f, 0x67, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x30, 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, + 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, + 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x48, 0x00, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x6f, + 0x0a, 0x13, 0x63, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x73, 0x61, + 0x73, 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x2e, 0x43, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x69, 0x7a, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x13, 0x63, 0x61, 0x6e, 0x6f, + 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x5d, 0x0a, 0x0d, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, - 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x63, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x37, 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, - 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x0f, 0x63, 0x6f, 0x6d, 0x70, - 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x08, 0x6c, - 0x6f, 0x67, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, - 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, - 0x00, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x6f, 0x0a, 0x13, 0x63, - 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, - 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x2e, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x2e, 0x43, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x13, 0x63, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, - 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5d, 0x0a, 0x0d, - 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, - 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x4f, 0x75, 0x74, - 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x49, 0x6d, 0x70, - 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x69, 0x6d, - 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x69, 0x0a, 0x11, 0x66, - 0x69, 0x6c, 0x65, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, 0x6d, + 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, + 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, + 0x0d, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x69, + 0x0a, 0x11, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x73, 0x61, 0x73, 0x73, + 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6c, 0x2e, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x11, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6d, 0x70, 0x6f, + 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x6f, 0x0a, 0x13, 0x66, 0x75, 0x6e, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, - 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x48, 0x00, 0x52, 0x11, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x6f, 0x0a, 0x13, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, + 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x13, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, + 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x63, 0x0a, 0x0f, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x4f, 0x75, 0x74, - 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x46, 0x75, 0x6e, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x48, 0x00, 0x52, 0x13, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x6c, 0x6c, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0xbc, 0x03, 0x0a, 0x0f, 0x43, 0x6f, 0x6d, 0x70, - 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x62, 0x0a, 0x07, 0x73, - 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x73, - 0x61, 0x73, 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x53, 0x75, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x48, 0x00, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, - 0x62, 0x0a, 0x07, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x46, 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, - 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, - 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, - 0x65, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x48, 0x00, 0x52, 0x07, 0x66, 0x61, 0x69, 0x6c, - 0x75, 0x72, 0x65, 0x1a, 0x41, 0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x53, 0x75, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x63, 0x73, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x1a, 0x83, 0x01, 0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x70, 0x69, - 0x6c, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x12, 0x36, 0x0a, 0x04, 0x73, 0x70, 0x61, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, - 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x53, 0x70, 0x61, 0x6e, 0x52, 0x04, 0x73, 0x70, 0x61, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x73, - 0x74, 0x61, 0x63, 0x6b, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x1a, 0xa8, 0x02, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x63, 0x6f, 0x6d, - 0x70, 0x69, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x49, 0x0a, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x35, 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, - 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x2e, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, - 0x36, 0x0a, 0x04, 0x73, 0x70, 0x61, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, - 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x70, 0x61, - 0x6e, 0x52, 0x04, 0x73, 0x70, 0x61, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x63, 0x6b, - 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, - 0x61, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x22, 0x37, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x0b, 0x0a, 0x07, 0x57, 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x00, 0x12, 0x17, 0x0a, - 0x13, 0x44, 0x45, 0x50, 0x52, 0x45, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x57, 0x41, 0x52, - 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, - 0x02, 0x1a, 0x7f, 0x0a, 0x13, 0x43, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x69, 0x7a, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x70, - 0x69, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, - 0x1f, 0x0a, 0x0b, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x49, 0x64, - 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, - 0x72, 0x6c, 0x1a, 0x79, 0x0a, 0x0d, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x02, 0x69, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x63, 0x6f, 0x6d, - 0x70, 0x69, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6d, - 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x0a, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, - 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x1a, 0x7d, 0x0a, - 0x11, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x0f, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, + 0xcf, 0x01, 0x0a, 0x0f, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, + 0x0a, 0x10, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, + 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x0a, 0x16, 0x69, 0x6d, 0x70, + 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x69, 0x6d, 0x70, 0x6c, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x2f, 0x0a, 0x13, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x69, + 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, + 0x65, 0x1a, 0xbc, 0x03, 0x0a, 0x0f, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x62, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, 0x6d, + 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, + 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, + 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, + 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x48, 0x00, + 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x62, 0x0a, 0x07, 0x66, 0x61, 0x69, + 0x6c, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x73, 0x61, 0x73, + 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x2e, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x75, + 0x72, 0x65, 0x48, 0x00, 0x52, 0x07, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x1a, 0x41, 0x0a, + 0x0e, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, + 0x10, 0x0a, 0x03, 0x63, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x73, + 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, + 0x1a, 0x83, 0x01, 0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x46, 0x61, 0x69, 0x6c, + 0x75, 0x72, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x36, 0x0a, + 0x04, 0x73, 0x70, 0x61, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x61, + 0x73, 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x70, 0x61, 0x6e, 0x52, + 0x04, 0x73, 0x70, 0x61, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x5f, 0x74, + 0x72, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x63, + 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x1a, 0xa8, 0x02, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x25, 0x0a, + 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x49, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x35, 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, + 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x4f, 0x75, 0x74, 0x62, + 0x6f, 0x75, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, + 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x36, 0x0a, 0x04, 0x73, 0x70, 0x61, + 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, + 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, + 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x70, 0x61, 0x6e, 0x52, 0x04, 0x73, 0x70, 0x61, + 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x54, 0x72, 0x61, + 0x63, 0x65, 0x22, 0x37, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x57, 0x41, + 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x44, 0x45, 0x50, 0x52, 0x45, + 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x57, 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x01, + 0x12, 0x09, 0x0a, 0x05, 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x02, 0x1a, 0x7f, 0x0a, 0x13, 0x43, + 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, - 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x1a, 0xd0, 0x01, 0x0a, - 0x13, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x63, 0x6f, - 0x6d, 0x70, 0x69, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x21, 0x0a, 0x0b, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x3b, 0x0a, 0x09, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, - 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, - 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, - 0x73, 0x42, 0x0c, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, - 0x09, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xb0, 0x01, 0x0a, 0x0d, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x43, 0x0a, 0x04, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x73, 0x61, 0x73, - 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x6f, 0x6c, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x30, 0x0a, 0x09, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x09, 0x0a, 0x05, 0x50, 0x41, 0x52, 0x53, - 0x45, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x41, 0x52, 0x41, 0x4d, 0x53, 0x10, 0x01, 0x12, - 0x0c, 0x0a, 0x08, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x10, 0x02, 0x22, 0xb0, 0x02, - 0x0a, 0x0a, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x70, 0x61, 0x6e, 0x12, 0x12, 0x0a, 0x04, - 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, - 0x12, 0x47, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x31, 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, - 0x70, 0x61, 0x6e, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x43, 0x0a, 0x03, 0x65, 0x6e, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, 0x6d, - 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, - 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x70, 0x61, 0x6e, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x10, - 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, - 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x1a, 0x54, 0x0a, 0x0e, 0x53, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6f, 0x66, - 0x66, 0x73, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x04, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6c, 0x75, - 0x6d, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, - 0x22, 0xac, 0x0c, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3e, 0x0a, 0x06, 0x73, 0x74, - 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x61, 0x73, - 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x6f, 0x6c, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, - 0x48, 0x00, 0x52, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x3e, 0x0a, 0x06, 0x6e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x61, 0x73, - 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x6f, 0x6c, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x2e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x48, 0x00, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x45, 0x0a, 0x09, 0x72, 0x67, - 0x62, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, - 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x2e, 0x52, 0x67, 0x62, - 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x08, 0x72, 0x67, 0x62, 0x43, 0x6f, 0x6c, 0x6f, - 0x72, 0x12, 0x45, 0x0a, 0x09, 0x68, 0x73, 0x6c, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, + 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x1a, 0x79, 0x0a, 0x0d, + 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x25, 0x0a, + 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, + 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x69, 0x6d, 0x70, 0x6f, 0x72, + 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x1a, 0x7d, 0x0a, 0x11, 0x46, 0x69, 0x6c, 0x65, 0x49, + 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x25, 0x0a, 0x0e, + 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x5f, + 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, + 0x65, 0x72, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x1a, 0xd0, 0x01, 0x0a, 0x13, 0x46, 0x75, 0x6e, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x25, + 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0b, 0x66, + 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x00, 0x52, 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x3b, + 0x0a, 0x09, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, + 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x09, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x42, 0x0c, 0x0a, 0x0a, 0x69, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x09, 0x0a, 0x07, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x22, 0xb0, 0x01, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, + 0x6c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x43, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, + 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x50, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x45, 0x72, 0x72, 0x6f, + 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x30, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x09, 0x0a, 0x05, 0x50, 0x41, 0x52, 0x53, 0x45, 0x10, 0x00, 0x12, 0x0a, 0x0a, + 0x06, 0x50, 0x41, 0x52, 0x41, 0x4d, 0x53, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x4e, 0x54, + 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x10, 0x02, 0x22, 0xb0, 0x02, 0x0a, 0x0a, 0x53, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x53, 0x70, 0x61, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x47, 0x0a, 0x05, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x73, 0x61, 0x73, 0x73, + 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6c, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x70, 0x61, 0x6e, 0x2e, 0x53, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x12, 0x43, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x31, 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, + 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x53, 0x70, 0x61, 0x6e, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, + 0x74, 0x65, 0x78, 0x74, 0x1a, 0x54, 0x0a, 0x0e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x6c, 0x69, + 0x6e, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x22, 0xac, 0x0c, 0x0a, 0x05, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3e, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x2e, 0x48, 0x73, 0x6c, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x08, - 0x68, 0x73, 0x6c, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x38, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, 0x6d, + 0x6c, 0x75, 0x65, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x06, 0x73, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x12, 0x3e, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, + 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x2e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x6e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x12, 0x45, 0x0a, 0x09, 0x72, 0x67, 0x62, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, + 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, + 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, + 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x2e, 0x52, 0x67, 0x62, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x48, + 0x00, 0x52, 0x08, 0x72, 0x67, 0x62, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x45, 0x0a, 0x09, 0x68, + 0x73, 0x6c, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, + 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x2e, 0x48, 0x73, + 0x6c, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x08, 0x68, 0x73, 0x6c, 0x43, 0x6f, 0x6c, + 0x6f, 0x72, 0x12, 0x38, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x22, 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, + 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x35, 0x0a, 0x03, + 0x6d, 0x61, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x61, 0x73, 0x73, + 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6c, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x2e, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x03, + 0x6d, 0x61, 0x70, 0x12, 0x47, 0x0a, 0x09, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x74, 0x6f, 0x6e, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x04, 0x6c, 0x69, - 0x73, 0x74, 0x12, 0x35, 0x0a, 0x03, 0x6d, 0x61, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x21, 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x2e, 0x4d, - 0x61, 0x70, 0x48, 0x00, 0x52, 0x03, 0x6d, 0x61, 0x70, 0x12, 0x47, 0x0a, 0x09, 0x73, 0x69, 0x6e, - 0x67, 0x6c, 0x65, 0x74, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x73, - 0x61, 0x73, 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x2e, 0x53, 0x69, 0x6e, 0x67, - 0x6c, 0x65, 0x74, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x09, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x74, - 0x6f, 0x6e, 0x12, 0x5d, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x5f, 0x66, - 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, - 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x2e, 0x43, 0x6f, 0x6d, - 0x70, 0x69, 0x6c, 0x65, 0x72, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, - 0x10, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x51, 0x0a, 0x0d, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, - 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x46, 0x75, 0x6e, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0c, 0x68, 0x6f, 0x73, 0x74, 0x46, 0x75, 0x6e, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x34, 0x0a, 0x06, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x12, - 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, - 0x78, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x06, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x64, 0x1a, 0x62, 0x0a, 0x06, 0x4e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x75, - 0x6d, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, - 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x64, 0x65, - 0x6e, 0x6f, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x0c, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x1a, 0x5c, - 0x0a, 0x08, 0x52, 0x67, 0x62, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x65, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x72, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, - 0x67, 0x72, 0x65, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x67, 0x72, 0x65, - 0x65, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x04, 0x62, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x1a, 0x70, 0x0a, 0x08, - 0x48, 0x73, 0x6c, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x68, 0x75, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x68, 0x75, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x61, - 0x74, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, - 0x73, 0x61, 0x74, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x69, - 0x67, 0x68, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x6c, - 0x69, 0x67, 0x68, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x1a, 0xed, - 0x01, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x4a, 0x0a, 0x09, 0x73, 0x65, 0x70, 0x61, 0x72, - 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x73, 0x61, 0x73, - 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x6f, 0x6c, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x2e, 0x53, - 0x65, 0x70, 0x61, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x09, 0x73, 0x65, 0x70, 0x61, 0x72, 0x61, - 0x74, 0x6f, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x68, 0x61, 0x73, 0x5f, 0x62, 0x72, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x68, 0x61, 0x73, 0x42, 0x72, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x39, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, - 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, - 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x73, 0x22, 0x3b, 0x0a, 0x09, 0x53, 0x65, 0x70, 0x61, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x09, - 0x0a, 0x05, 0x43, 0x4f, 0x4d, 0x4d, 0x41, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x50, 0x41, - 0x43, 0x45, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x4c, 0x41, 0x53, 0x48, 0x10, 0x02, 0x12, - 0x0d, 0x0a, 0x09, 0x55, 0x4e, 0x44, 0x45, 0x43, 0x49, 0x44, 0x45, 0x44, 0x10, 0x03, 0x1a, 0xb7, - 0x01, 0x0a, 0x03, 0x4d, 0x61, 0x70, 0x12, 0x41, 0x0a, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x2e, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x74, 0x6f, 0x6e, 0x48, + 0x00, 0x52, 0x09, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x74, 0x6f, 0x6e, 0x12, 0x5d, 0x0a, 0x11, + 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x2e, 0x4d, 0x61, 0x70, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x1a, 0x6d, 0x0a, 0x05, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x2f, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1d, 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x33, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x46, + 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x10, 0x63, 0x6f, 0x6d, 0x70, 0x69, + 0x6c, 0x65, 0x72, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x51, 0x0a, 0x0d, 0x68, + 0x6f, 0x73, 0x74, 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, + 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, + 0x52, 0x0c, 0x68, 0x6f, 0x73, 0x74, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x34, + 0x0a, 0x06, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x16, 0x0a, 0x06, + 0x71, 0x75, 0x6f, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x71, 0x75, + 0x6f, 0x74, 0x65, 0x64, 0x1a, 0x62, 0x0a, 0x06, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x14, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x69, 0x6e, 0x61, + 0x74, 0x6f, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x65, 0x6e, 0x6f, + 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x1a, 0x5c, 0x0a, 0x08, 0x52, 0x67, 0x62, 0x43, + 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x03, 0x72, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x12, 0x12, 0x0a, 0x04, + 0x62, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x62, 0x6c, 0x75, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, + 0x05, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x1a, 0x70, 0x0a, 0x08, 0x48, 0x73, 0x6c, 0x43, 0x6f, 0x6c, + 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x68, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, + 0x03, 0x68, 0x75, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x61, 0x74, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x73, 0x61, 0x74, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x6e, 0x65, 0x73, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x6e, 0x65, + 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x01, 0x52, 0x05, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x1a, 0xed, 0x01, 0x0a, 0x04, 0x4c, 0x69, 0x73, + 0x74, 0x12, 0x4a, 0x0a, 0x09, 0x73, 0x65, 0x70, 0x61, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, + 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x2e, 0x53, 0x65, 0x70, 0x61, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x52, 0x09, 0x73, 0x65, 0x70, 0x61, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x21, 0x0a, + 0x0c, 0x68, 0x61, 0x73, 0x5f, 0x62, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0b, 0x68, 0x61, 0x73, 0x42, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, + 0x12, 0x39, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x22, 0x0a, 0x10, 0x43, 0x6f, 0x6d, 0x70, - 0x69, 0x6c, 0x65, 0x72, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x1a, 0x3c, 0x0a, 0x0c, - 0x48, 0x6f, 0x73, 0x74, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, - 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0x2a, 0x0a, 0x09, 0x53, 0x69, - 0x6e, 0x67, 0x6c, 0x65, 0x74, 0x6f, 0x6e, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x52, 0x55, 0x45, 0x10, - 0x00, 0x12, 0x09, 0x0a, 0x05, 0x46, 0x41, 0x4c, 0x53, 0x45, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, - 0x4e, 0x55, 0x4c, 0x4c, 0x10, 0x02, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x3b, 0x0a, 0x09, 0x53, + 0x65, 0x70, 0x61, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x09, 0x0a, 0x05, 0x43, 0x4f, 0x4d, 0x4d, + 0x41, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x50, 0x41, 0x43, 0x45, 0x10, 0x01, 0x12, 0x09, + 0x0a, 0x05, 0x53, 0x4c, 0x41, 0x53, 0x48, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x55, 0x4e, 0x44, + 0x45, 0x43, 0x49, 0x44, 0x45, 0x44, 0x10, 0x03, 0x1a, 0xb7, 0x01, 0x0a, 0x03, 0x4d, 0x61, 0x70, + 0x12, 0x41, 0x0a, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x61, 0x73, 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, + 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x2e, 0x4d, 0x61, 0x70, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, + 0x69, 0x65, 0x73, 0x1a, 0x6d, 0x0a, 0x05, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x2f, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x61, 0x73, 0x73, + 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6c, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x33, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, + 0x61, 0x73, 0x73, 0x2e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x1a, 0x22, 0x0a, 0x10, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x46, 0x75, + 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x1a, 0x3c, 0x0a, 0x0c, 0x48, 0x6f, 0x73, 0x74, 0x46, 0x75, + 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x22, 0x2a, 0x0a, 0x09, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x74, 0x6f, + 0x6e, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x52, 0x55, 0x45, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x46, + 0x41, 0x4c, 0x53, 0x45, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x55, 0x4c, 0x4c, 0x10, 0x02, + 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, } var ( @@ -3609,7 +3784,7 @@ func file_embedded_sass_proto_rawDescGZIP() []byte { } var file_embedded_sass_proto_enumTypes = make([]protoimpl.EnumInfo, 6) -var file_embedded_sass_proto_msgTypes = make([]protoimpl.MessageInfo, 31) +var file_embedded_sass_proto_msgTypes = make([]protoimpl.MessageInfo, 33) var file_embedded_sass_proto_goTypes = []interface{}{ (InboundMessage_Syntax)(0), // 0: sass.embedded_protocol.InboundMessage.Syntax (InboundMessage_CompileRequest_OutputStyle)(0), // 1: sass.embedded_protocol.InboundMessage.CompileRequest.OutputStyle @@ -3622,82 +3797,86 @@ var file_embedded_sass_proto_goTypes = []interface{}{ (*ProtocolError)(nil), // 8: sass.embedded_protocol.ProtocolError (*SourceSpan)(nil), // 9: sass.embedded_protocol.SourceSpan (*Value)(nil), // 10: sass.embedded_protocol.Value - (*InboundMessage_CompileRequest)(nil), // 11: sass.embedded_protocol.InboundMessage.CompileRequest - (*InboundMessage_CanonicalizeResponse)(nil), // 12: sass.embedded_protocol.InboundMessage.CanonicalizeResponse - (*InboundMessage_ImportResponse)(nil), // 13: sass.embedded_protocol.InboundMessage.ImportResponse - (*InboundMessage_FileImportResponse)(nil), // 14: sass.embedded_protocol.InboundMessage.FileImportResponse - (*InboundMessage_FunctionCallResponse)(nil), // 15: sass.embedded_protocol.InboundMessage.FunctionCallResponse - (*InboundMessage_CompileRequest_StringInput)(nil), // 16: sass.embedded_protocol.InboundMessage.CompileRequest.StringInput - (*InboundMessage_CompileRequest_Importer)(nil), // 17: sass.embedded_protocol.InboundMessage.CompileRequest.Importer - (*InboundMessage_ImportResponse_ImportSuccess)(nil), // 18: sass.embedded_protocol.InboundMessage.ImportResponse.ImportSuccess - (*OutboundMessage_CompileResponse)(nil), // 19: sass.embedded_protocol.OutboundMessage.CompileResponse - (*OutboundMessage_LogEvent)(nil), // 20: sass.embedded_protocol.OutboundMessage.LogEvent - (*OutboundMessage_CanonicalizeRequest)(nil), // 21: sass.embedded_protocol.OutboundMessage.CanonicalizeRequest - (*OutboundMessage_ImportRequest)(nil), // 22: sass.embedded_protocol.OutboundMessage.ImportRequest - (*OutboundMessage_FileImportRequest)(nil), // 23: sass.embedded_protocol.OutboundMessage.FileImportRequest - (*OutboundMessage_FunctionCallRequest)(nil), // 24: sass.embedded_protocol.OutboundMessage.FunctionCallRequest - (*OutboundMessage_CompileResponse_CompileSuccess)(nil), // 25: sass.embedded_protocol.OutboundMessage.CompileResponse.CompileSuccess - (*OutboundMessage_CompileResponse_CompileFailure)(nil), // 26: sass.embedded_protocol.OutboundMessage.CompileResponse.CompileFailure - (*SourceSpan_SourceLocation)(nil), // 27: sass.embedded_protocol.SourceSpan.SourceLocation - (*Value_String)(nil), // 28: sass.embedded_protocol.Value.String - (*Value_Number)(nil), // 29: sass.embedded_protocol.Value.Number - (*Value_RgbColor)(nil), // 30: sass.embedded_protocol.Value.RgbColor - (*Value_HslColor)(nil), // 31: sass.embedded_protocol.Value.HslColor - (*Value_List)(nil), // 32: sass.embedded_protocol.Value.List - (*Value_Map)(nil), // 33: sass.embedded_protocol.Value.Map - (*Value_CompilerFunction)(nil), // 34: sass.embedded_protocol.Value.CompilerFunction - (*Value_HostFunction)(nil), // 35: sass.embedded_protocol.Value.HostFunction - (*Value_Map_Entry)(nil), // 36: sass.embedded_protocol.Value.Map.Entry + (*InboundMessage_VersionRequest)(nil), // 11: sass.embedded_protocol.InboundMessage.VersionRequest + (*InboundMessage_CompileRequest)(nil), // 12: sass.embedded_protocol.InboundMessage.CompileRequest + (*InboundMessage_CanonicalizeResponse)(nil), // 13: sass.embedded_protocol.InboundMessage.CanonicalizeResponse + (*InboundMessage_ImportResponse)(nil), // 14: sass.embedded_protocol.InboundMessage.ImportResponse + (*InboundMessage_FileImportResponse)(nil), // 15: sass.embedded_protocol.InboundMessage.FileImportResponse + (*InboundMessage_FunctionCallResponse)(nil), // 16: sass.embedded_protocol.InboundMessage.FunctionCallResponse + (*InboundMessage_CompileRequest_StringInput)(nil), // 17: sass.embedded_protocol.InboundMessage.CompileRequest.StringInput + (*InboundMessage_CompileRequest_Importer)(nil), // 18: sass.embedded_protocol.InboundMessage.CompileRequest.Importer + (*InboundMessage_ImportResponse_ImportSuccess)(nil), // 19: sass.embedded_protocol.InboundMessage.ImportResponse.ImportSuccess + (*OutboundMessage_VersionResponse)(nil), // 20: sass.embedded_protocol.OutboundMessage.VersionResponse + (*OutboundMessage_CompileResponse)(nil), // 21: sass.embedded_protocol.OutboundMessage.CompileResponse + (*OutboundMessage_LogEvent)(nil), // 22: sass.embedded_protocol.OutboundMessage.LogEvent + (*OutboundMessage_CanonicalizeRequest)(nil), // 23: sass.embedded_protocol.OutboundMessage.CanonicalizeRequest + (*OutboundMessage_ImportRequest)(nil), // 24: sass.embedded_protocol.OutboundMessage.ImportRequest + (*OutboundMessage_FileImportRequest)(nil), // 25: sass.embedded_protocol.OutboundMessage.FileImportRequest + (*OutboundMessage_FunctionCallRequest)(nil), // 26: sass.embedded_protocol.OutboundMessage.FunctionCallRequest + (*OutboundMessage_CompileResponse_CompileSuccess)(nil), // 27: sass.embedded_protocol.OutboundMessage.CompileResponse.CompileSuccess + (*OutboundMessage_CompileResponse_CompileFailure)(nil), // 28: sass.embedded_protocol.OutboundMessage.CompileResponse.CompileFailure + (*SourceSpan_SourceLocation)(nil), // 29: sass.embedded_protocol.SourceSpan.SourceLocation + (*Value_String)(nil), // 30: sass.embedded_protocol.Value.String + (*Value_Number)(nil), // 31: sass.embedded_protocol.Value.Number + (*Value_RgbColor)(nil), // 32: sass.embedded_protocol.Value.RgbColor + (*Value_HslColor)(nil), // 33: sass.embedded_protocol.Value.HslColor + (*Value_List)(nil), // 34: sass.embedded_protocol.Value.List + (*Value_Map)(nil), // 35: sass.embedded_protocol.Value.Map + (*Value_CompilerFunction)(nil), // 36: sass.embedded_protocol.Value.CompilerFunction + (*Value_HostFunction)(nil), // 37: sass.embedded_protocol.Value.HostFunction + (*Value_Map_Entry)(nil), // 38: sass.embedded_protocol.Value.Map.Entry } var file_embedded_sass_proto_depIdxs = []int32{ - 11, // 0: sass.embedded_protocol.InboundMessage.compileRequest:type_name -> sass.embedded_protocol.InboundMessage.CompileRequest - 12, // 1: sass.embedded_protocol.InboundMessage.canonicalizeResponse:type_name -> sass.embedded_protocol.InboundMessage.CanonicalizeResponse - 13, // 2: sass.embedded_protocol.InboundMessage.importResponse:type_name -> sass.embedded_protocol.InboundMessage.ImportResponse - 14, // 3: sass.embedded_protocol.InboundMessage.fileImportResponse:type_name -> sass.embedded_protocol.InboundMessage.FileImportResponse - 15, // 4: sass.embedded_protocol.InboundMessage.functionCallResponse:type_name -> sass.embedded_protocol.InboundMessage.FunctionCallResponse - 8, // 5: sass.embedded_protocol.OutboundMessage.error:type_name -> sass.embedded_protocol.ProtocolError - 19, // 6: sass.embedded_protocol.OutboundMessage.compileResponse:type_name -> sass.embedded_protocol.OutboundMessage.CompileResponse - 20, // 7: sass.embedded_protocol.OutboundMessage.logEvent:type_name -> sass.embedded_protocol.OutboundMessage.LogEvent - 21, // 8: sass.embedded_protocol.OutboundMessage.canonicalizeRequest:type_name -> sass.embedded_protocol.OutboundMessage.CanonicalizeRequest - 22, // 9: sass.embedded_protocol.OutboundMessage.importRequest:type_name -> sass.embedded_protocol.OutboundMessage.ImportRequest - 23, // 10: sass.embedded_protocol.OutboundMessage.fileImportRequest:type_name -> sass.embedded_protocol.OutboundMessage.FileImportRequest - 24, // 11: sass.embedded_protocol.OutboundMessage.functionCallRequest:type_name -> sass.embedded_protocol.OutboundMessage.FunctionCallRequest - 3, // 12: sass.embedded_protocol.ProtocolError.type:type_name -> sass.embedded_protocol.ProtocolError.ErrorType - 27, // 13: sass.embedded_protocol.SourceSpan.start:type_name -> sass.embedded_protocol.SourceSpan.SourceLocation - 27, // 14: sass.embedded_protocol.SourceSpan.end:type_name -> sass.embedded_protocol.SourceSpan.SourceLocation - 28, // 15: sass.embedded_protocol.Value.string:type_name -> sass.embedded_protocol.Value.String - 29, // 16: sass.embedded_protocol.Value.number:type_name -> sass.embedded_protocol.Value.Number - 30, // 17: sass.embedded_protocol.Value.rgb_color:type_name -> sass.embedded_protocol.Value.RgbColor - 31, // 18: sass.embedded_protocol.Value.hsl_color:type_name -> sass.embedded_protocol.Value.HslColor - 32, // 19: sass.embedded_protocol.Value.list:type_name -> sass.embedded_protocol.Value.List - 33, // 20: sass.embedded_protocol.Value.map:type_name -> sass.embedded_protocol.Value.Map - 4, // 21: sass.embedded_protocol.Value.singleton:type_name -> sass.embedded_protocol.Value.Singleton - 34, // 22: sass.embedded_protocol.Value.compiler_function:type_name -> sass.embedded_protocol.Value.CompilerFunction - 35, // 23: sass.embedded_protocol.Value.host_function:type_name -> sass.embedded_protocol.Value.HostFunction - 16, // 24: sass.embedded_protocol.InboundMessage.CompileRequest.string:type_name -> sass.embedded_protocol.InboundMessage.CompileRequest.StringInput - 1, // 25: sass.embedded_protocol.InboundMessage.CompileRequest.style:type_name -> sass.embedded_protocol.InboundMessage.CompileRequest.OutputStyle - 17, // 26: sass.embedded_protocol.InboundMessage.CompileRequest.importers:type_name -> sass.embedded_protocol.InboundMessage.CompileRequest.Importer - 18, // 27: sass.embedded_protocol.InboundMessage.ImportResponse.success:type_name -> sass.embedded_protocol.InboundMessage.ImportResponse.ImportSuccess - 10, // 28: sass.embedded_protocol.InboundMessage.FunctionCallResponse.success:type_name -> sass.embedded_protocol.Value - 0, // 29: sass.embedded_protocol.InboundMessage.CompileRequest.StringInput.syntax:type_name -> sass.embedded_protocol.InboundMessage.Syntax - 17, // 30: sass.embedded_protocol.InboundMessage.CompileRequest.StringInput.importer:type_name -> sass.embedded_protocol.InboundMessage.CompileRequest.Importer - 0, // 31: sass.embedded_protocol.InboundMessage.ImportResponse.ImportSuccess.syntax:type_name -> sass.embedded_protocol.InboundMessage.Syntax - 25, // 32: sass.embedded_protocol.OutboundMessage.CompileResponse.success:type_name -> sass.embedded_protocol.OutboundMessage.CompileResponse.CompileSuccess - 26, // 33: sass.embedded_protocol.OutboundMessage.CompileResponse.failure:type_name -> sass.embedded_protocol.OutboundMessage.CompileResponse.CompileFailure - 2, // 34: sass.embedded_protocol.OutboundMessage.LogEvent.type:type_name -> sass.embedded_protocol.OutboundMessage.LogEvent.Type - 9, // 35: sass.embedded_protocol.OutboundMessage.LogEvent.span:type_name -> sass.embedded_protocol.SourceSpan - 10, // 36: sass.embedded_protocol.OutboundMessage.FunctionCallRequest.arguments:type_name -> sass.embedded_protocol.Value - 9, // 37: sass.embedded_protocol.OutboundMessage.CompileResponse.CompileFailure.span:type_name -> sass.embedded_protocol.SourceSpan - 5, // 38: sass.embedded_protocol.Value.List.separator:type_name -> sass.embedded_protocol.Value.List.Separator - 10, // 39: sass.embedded_protocol.Value.List.contents:type_name -> sass.embedded_protocol.Value - 36, // 40: sass.embedded_protocol.Value.Map.entries:type_name -> sass.embedded_protocol.Value.Map.Entry - 10, // 41: sass.embedded_protocol.Value.Map.Entry.key:type_name -> sass.embedded_protocol.Value - 10, // 42: sass.embedded_protocol.Value.Map.Entry.value:type_name -> sass.embedded_protocol.Value - 43, // [43:43] is the sub-list for method output_type - 43, // [43:43] is the sub-list for method input_type - 43, // [43:43] is the sub-list for extension type_name - 43, // [43:43] is the sub-list for extension extendee - 0, // [0:43] is the sub-list for field type_name + 12, // 0: sass.embedded_protocol.InboundMessage.compileRequest:type_name -> sass.embedded_protocol.InboundMessage.CompileRequest + 13, // 1: sass.embedded_protocol.InboundMessage.canonicalizeResponse:type_name -> sass.embedded_protocol.InboundMessage.CanonicalizeResponse + 14, // 2: sass.embedded_protocol.InboundMessage.importResponse:type_name -> sass.embedded_protocol.InboundMessage.ImportResponse + 15, // 3: sass.embedded_protocol.InboundMessage.fileImportResponse:type_name -> sass.embedded_protocol.InboundMessage.FileImportResponse + 16, // 4: sass.embedded_protocol.InboundMessage.functionCallResponse:type_name -> sass.embedded_protocol.InboundMessage.FunctionCallResponse + 11, // 5: sass.embedded_protocol.InboundMessage.versionRequest:type_name -> sass.embedded_protocol.InboundMessage.VersionRequest + 8, // 6: sass.embedded_protocol.OutboundMessage.error:type_name -> sass.embedded_protocol.ProtocolError + 21, // 7: sass.embedded_protocol.OutboundMessage.compileResponse:type_name -> sass.embedded_protocol.OutboundMessage.CompileResponse + 22, // 8: sass.embedded_protocol.OutboundMessage.logEvent:type_name -> sass.embedded_protocol.OutboundMessage.LogEvent + 23, // 9: sass.embedded_protocol.OutboundMessage.canonicalizeRequest:type_name -> sass.embedded_protocol.OutboundMessage.CanonicalizeRequest + 24, // 10: sass.embedded_protocol.OutboundMessage.importRequest:type_name -> sass.embedded_protocol.OutboundMessage.ImportRequest + 25, // 11: sass.embedded_protocol.OutboundMessage.fileImportRequest:type_name -> sass.embedded_protocol.OutboundMessage.FileImportRequest + 26, // 12: sass.embedded_protocol.OutboundMessage.functionCallRequest:type_name -> sass.embedded_protocol.OutboundMessage.FunctionCallRequest + 20, // 13: sass.embedded_protocol.OutboundMessage.versionResponse:type_name -> sass.embedded_protocol.OutboundMessage.VersionResponse + 3, // 14: sass.embedded_protocol.ProtocolError.type:type_name -> sass.embedded_protocol.ProtocolError.ErrorType + 29, // 15: sass.embedded_protocol.SourceSpan.start:type_name -> sass.embedded_protocol.SourceSpan.SourceLocation + 29, // 16: sass.embedded_protocol.SourceSpan.end:type_name -> sass.embedded_protocol.SourceSpan.SourceLocation + 30, // 17: sass.embedded_protocol.Value.string:type_name -> sass.embedded_protocol.Value.String + 31, // 18: sass.embedded_protocol.Value.number:type_name -> sass.embedded_protocol.Value.Number + 32, // 19: sass.embedded_protocol.Value.rgb_color:type_name -> sass.embedded_protocol.Value.RgbColor + 33, // 20: sass.embedded_protocol.Value.hsl_color:type_name -> sass.embedded_protocol.Value.HslColor + 34, // 21: sass.embedded_protocol.Value.list:type_name -> sass.embedded_protocol.Value.List + 35, // 22: sass.embedded_protocol.Value.map:type_name -> sass.embedded_protocol.Value.Map + 4, // 23: sass.embedded_protocol.Value.singleton:type_name -> sass.embedded_protocol.Value.Singleton + 36, // 24: sass.embedded_protocol.Value.compiler_function:type_name -> sass.embedded_protocol.Value.CompilerFunction + 37, // 25: sass.embedded_protocol.Value.host_function:type_name -> sass.embedded_protocol.Value.HostFunction + 17, // 26: sass.embedded_protocol.InboundMessage.CompileRequest.string:type_name -> sass.embedded_protocol.InboundMessage.CompileRequest.StringInput + 1, // 27: sass.embedded_protocol.InboundMessage.CompileRequest.style:type_name -> sass.embedded_protocol.InboundMessage.CompileRequest.OutputStyle + 18, // 28: sass.embedded_protocol.InboundMessage.CompileRequest.importers:type_name -> sass.embedded_protocol.InboundMessage.CompileRequest.Importer + 19, // 29: sass.embedded_protocol.InboundMessage.ImportResponse.success:type_name -> sass.embedded_protocol.InboundMessage.ImportResponse.ImportSuccess + 10, // 30: sass.embedded_protocol.InboundMessage.FunctionCallResponse.success:type_name -> sass.embedded_protocol.Value + 0, // 31: sass.embedded_protocol.InboundMessage.CompileRequest.StringInput.syntax:type_name -> sass.embedded_protocol.InboundMessage.Syntax + 18, // 32: sass.embedded_protocol.InboundMessage.CompileRequest.StringInput.importer:type_name -> sass.embedded_protocol.InboundMessage.CompileRequest.Importer + 0, // 33: sass.embedded_protocol.InboundMessage.ImportResponse.ImportSuccess.syntax:type_name -> sass.embedded_protocol.InboundMessage.Syntax + 27, // 34: sass.embedded_protocol.OutboundMessage.CompileResponse.success:type_name -> sass.embedded_protocol.OutboundMessage.CompileResponse.CompileSuccess + 28, // 35: sass.embedded_protocol.OutboundMessage.CompileResponse.failure:type_name -> sass.embedded_protocol.OutboundMessage.CompileResponse.CompileFailure + 2, // 36: sass.embedded_protocol.OutboundMessage.LogEvent.type:type_name -> sass.embedded_protocol.OutboundMessage.LogEvent.Type + 9, // 37: sass.embedded_protocol.OutboundMessage.LogEvent.span:type_name -> sass.embedded_protocol.SourceSpan + 10, // 38: sass.embedded_protocol.OutboundMessage.FunctionCallRequest.arguments:type_name -> sass.embedded_protocol.Value + 9, // 39: sass.embedded_protocol.OutboundMessage.CompileResponse.CompileFailure.span:type_name -> sass.embedded_protocol.SourceSpan + 5, // 40: sass.embedded_protocol.Value.List.separator:type_name -> sass.embedded_protocol.Value.List.Separator + 10, // 41: sass.embedded_protocol.Value.List.contents:type_name -> sass.embedded_protocol.Value + 38, // 42: sass.embedded_protocol.Value.Map.entries:type_name -> sass.embedded_protocol.Value.Map.Entry + 10, // 43: sass.embedded_protocol.Value.Map.Entry.key:type_name -> sass.embedded_protocol.Value + 10, // 44: sass.embedded_protocol.Value.Map.Entry.value:type_name -> sass.embedded_protocol.Value + 45, // [45:45] is the sub-list for method output_type + 45, // [45:45] is the sub-list for method input_type + 45, // [45:45] is the sub-list for extension type_name + 45, // [45:45] is the sub-list for extension extendee + 0, // [0:45] is the sub-list for field type_name } func init() { file_embedded_sass_proto_init() } @@ -3767,7 +3946,7 @@ func file_embedded_sass_proto_init() { } } file_embedded_sass_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*InboundMessage_CompileRequest); i { + switch v := v.(*InboundMessage_VersionRequest); i { case 0: return &v.state case 1: @@ -3779,7 +3958,7 @@ func file_embedded_sass_proto_init() { } } file_embedded_sass_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*InboundMessage_CanonicalizeResponse); i { + switch v := v.(*InboundMessage_CompileRequest); i { case 0: return &v.state case 1: @@ -3791,7 +3970,7 @@ func file_embedded_sass_proto_init() { } } file_embedded_sass_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*InboundMessage_ImportResponse); i { + switch v := v.(*InboundMessage_CanonicalizeResponse); i { case 0: return &v.state case 1: @@ -3803,7 +3982,7 @@ func file_embedded_sass_proto_init() { } } file_embedded_sass_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*InboundMessage_FileImportResponse); i { + switch v := v.(*InboundMessage_ImportResponse); i { case 0: return &v.state case 1: @@ -3815,7 +3994,7 @@ func file_embedded_sass_proto_init() { } } file_embedded_sass_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*InboundMessage_FunctionCallResponse); i { + switch v := v.(*InboundMessage_FileImportResponse); i { case 0: return &v.state case 1: @@ -3827,7 +4006,7 @@ func file_embedded_sass_proto_init() { } } file_embedded_sass_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*InboundMessage_CompileRequest_StringInput); i { + switch v := v.(*InboundMessage_FunctionCallResponse); i { case 0: return &v.state case 1: @@ -3839,7 +4018,7 @@ func file_embedded_sass_proto_init() { } } file_embedded_sass_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*InboundMessage_CompileRequest_Importer); i { + switch v := v.(*InboundMessage_CompileRequest_StringInput); i { case 0: return &v.state case 1: @@ -3851,7 +4030,7 @@ func file_embedded_sass_proto_init() { } } file_embedded_sass_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*InboundMessage_ImportResponse_ImportSuccess); i { + switch v := v.(*InboundMessage_CompileRequest_Importer); i { case 0: return &v.state case 1: @@ -3863,7 +4042,7 @@ func file_embedded_sass_proto_init() { } } file_embedded_sass_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OutboundMessage_CompileResponse); i { + switch v := v.(*InboundMessage_ImportResponse_ImportSuccess); i { case 0: return &v.state case 1: @@ -3875,7 +4054,7 @@ func file_embedded_sass_proto_init() { } } file_embedded_sass_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OutboundMessage_LogEvent); i { + switch v := v.(*OutboundMessage_VersionResponse); i { case 0: return &v.state case 1: @@ -3887,7 +4066,7 @@ func file_embedded_sass_proto_init() { } } file_embedded_sass_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OutboundMessage_CanonicalizeRequest); i { + switch v := v.(*OutboundMessage_CompileResponse); i { case 0: return &v.state case 1: @@ -3899,7 +4078,7 @@ func file_embedded_sass_proto_init() { } } file_embedded_sass_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OutboundMessage_ImportRequest); i { + switch v := v.(*OutboundMessage_LogEvent); i { case 0: return &v.state case 1: @@ -3911,7 +4090,7 @@ func file_embedded_sass_proto_init() { } } file_embedded_sass_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OutboundMessage_FileImportRequest); i { + switch v := v.(*OutboundMessage_CanonicalizeRequest); i { case 0: return &v.state case 1: @@ -3923,7 +4102,7 @@ func file_embedded_sass_proto_init() { } } file_embedded_sass_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OutboundMessage_FunctionCallRequest); i { + switch v := v.(*OutboundMessage_ImportRequest); i { case 0: return &v.state case 1: @@ -3935,7 +4114,7 @@ func file_embedded_sass_proto_init() { } } file_embedded_sass_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OutboundMessage_CompileResponse_CompileSuccess); i { + switch v := v.(*OutboundMessage_FileImportRequest); i { case 0: return &v.state case 1: @@ -3947,7 +4126,7 @@ func file_embedded_sass_proto_init() { } } file_embedded_sass_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OutboundMessage_CompileResponse_CompileFailure); i { + switch v := v.(*OutboundMessage_FunctionCallRequest); i { case 0: return &v.state case 1: @@ -3959,7 +4138,7 @@ func file_embedded_sass_proto_init() { } } file_embedded_sass_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SourceSpan_SourceLocation); i { + switch v := v.(*OutboundMessage_CompileResponse_CompileSuccess); i { case 0: return &v.state case 1: @@ -3971,7 +4150,7 @@ func file_embedded_sass_proto_init() { } } file_embedded_sass_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Value_String); i { + switch v := v.(*OutboundMessage_CompileResponse_CompileFailure); i { case 0: return &v.state case 1: @@ -3983,7 +4162,7 @@ func file_embedded_sass_proto_init() { } } file_embedded_sass_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Value_Number); i { + switch v := v.(*SourceSpan_SourceLocation); i { case 0: return &v.state case 1: @@ -3995,7 +4174,7 @@ func file_embedded_sass_proto_init() { } } file_embedded_sass_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Value_RgbColor); i { + switch v := v.(*Value_String); i { case 0: return &v.state case 1: @@ -4007,7 +4186,7 @@ func file_embedded_sass_proto_init() { } } file_embedded_sass_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Value_HslColor); i { + switch v := v.(*Value_Number); i { case 0: return &v.state case 1: @@ -4019,7 +4198,7 @@ func file_embedded_sass_proto_init() { } } file_embedded_sass_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Value_List); i { + switch v := v.(*Value_RgbColor); i { case 0: return &v.state case 1: @@ -4031,7 +4210,7 @@ func file_embedded_sass_proto_init() { } } file_embedded_sass_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Value_Map); i { + switch v := v.(*Value_HslColor); i { case 0: return &v.state case 1: @@ -4043,7 +4222,7 @@ func file_embedded_sass_proto_init() { } } file_embedded_sass_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Value_CompilerFunction); i { + switch v := v.(*Value_List); i { case 0: return &v.state case 1: @@ -4055,7 +4234,7 @@ func file_embedded_sass_proto_init() { } } file_embedded_sass_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Value_HostFunction); i { + switch v := v.(*Value_Map); i { case 0: return &v.state case 1: @@ -4067,6 +4246,30 @@ func file_embedded_sass_proto_init() { } } file_embedded_sass_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Value_CompilerFunction); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_embedded_sass_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Value_HostFunction); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_embedded_sass_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Value_Map_Entry); i { case 0: return &v.state @@ -4085,6 +4288,7 @@ func file_embedded_sass_proto_init() { (*InboundMessage_ImportResponse_)(nil), (*InboundMessage_FileImportResponse_)(nil), (*InboundMessage_FunctionCallResponse_)(nil), + (*InboundMessage_VersionRequest_)(nil), } file_embedded_sass_proto_msgTypes[1].OneofWrappers = []interface{}{ (*OutboundMessage_Error)(nil), @@ -4094,6 +4298,7 @@ func file_embedded_sass_proto_init() { (*OutboundMessage_ImportRequest_)(nil), (*OutboundMessage_FileImportRequest_)(nil), (*OutboundMessage_FunctionCallRequest_)(nil), + (*OutboundMessage_VersionResponse_)(nil), } file_embedded_sass_proto_msgTypes[4].OneofWrappers = []interface{}{ (*Value_String_)(nil), @@ -4106,36 +4311,36 @@ func file_embedded_sass_proto_init() { (*Value_CompilerFunction_)(nil), (*Value_HostFunction_)(nil), } - file_embedded_sass_proto_msgTypes[5].OneofWrappers = []interface{}{ + file_embedded_sass_proto_msgTypes[6].OneofWrappers = []interface{}{ (*InboundMessage_CompileRequest_String_)(nil), (*InboundMessage_CompileRequest_Path)(nil), } - file_embedded_sass_proto_msgTypes[6].OneofWrappers = []interface{}{ + file_embedded_sass_proto_msgTypes[7].OneofWrappers = []interface{}{ (*InboundMessage_CanonicalizeResponse_Url)(nil), (*InboundMessage_CanonicalizeResponse_Error)(nil), } - file_embedded_sass_proto_msgTypes[7].OneofWrappers = []interface{}{ + file_embedded_sass_proto_msgTypes[8].OneofWrappers = []interface{}{ (*InboundMessage_ImportResponse_Success)(nil), (*InboundMessage_ImportResponse_Error)(nil), } - file_embedded_sass_proto_msgTypes[8].OneofWrappers = []interface{}{ + file_embedded_sass_proto_msgTypes[9].OneofWrappers = []interface{}{ (*InboundMessage_FileImportResponse_FileUrl)(nil), (*InboundMessage_FileImportResponse_Error)(nil), } - file_embedded_sass_proto_msgTypes[9].OneofWrappers = []interface{}{ + file_embedded_sass_proto_msgTypes[10].OneofWrappers = []interface{}{ (*InboundMessage_FunctionCallResponse_Success)(nil), (*InboundMessage_FunctionCallResponse_Error)(nil), } - file_embedded_sass_proto_msgTypes[11].OneofWrappers = []interface{}{ + file_embedded_sass_proto_msgTypes[12].OneofWrappers = []interface{}{ (*InboundMessage_CompileRequest_Importer_Path)(nil), (*InboundMessage_CompileRequest_Importer_ImporterId)(nil), (*InboundMessage_CompileRequest_Importer_FileImporterId)(nil), } - file_embedded_sass_proto_msgTypes[13].OneofWrappers = []interface{}{ + file_embedded_sass_proto_msgTypes[15].OneofWrappers = []interface{}{ (*OutboundMessage_CompileResponse_Success)(nil), (*OutboundMessage_CompileResponse_Failure)(nil), } - file_embedded_sass_proto_msgTypes[18].OneofWrappers = []interface{}{ + file_embedded_sass_proto_msgTypes[20].OneofWrappers = []interface{}{ (*OutboundMessage_FunctionCallRequest_Name)(nil), (*OutboundMessage_FunctionCallRequest_FunctionId)(nil), } @@ -4145,7 +4350,7 @@ func file_embedded_sass_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_embedded_sass_proto_rawDesc, NumEnums: 6, - NumMessages: 31, + NumMessages: 33, NumExtensions: 0, NumServices: 0, }, diff --git a/internal/embeddedsass/embedded_sass.proto b/internal/embeddedsass/embedded_sass.proto index 3a9ed2c..521dfa8 100644 --- a/internal/embeddedsass/embedded_sass.proto +++ b/internal/embeddedsass/embedded_sass.proto @@ -10,6 +10,16 @@ package sass.embedded_protocol; // provides a `oneof` that makes it possible to determine the type of each // inbound message. message InboundMessage { + // A request for information about the version of the embedded compiler. The + // host can use this to provide diagnostic information to the user, to check + // which features the compiler supports, or to ensure that it's compatible + // with the same protocol version the compiler supports. + message VersionRequest { + // This message's contents are intentionally empty. It just acts as a signal + // to the compiler to send a VersionResponse. More fields may be added in + // the future. + } + // A request that compiles an entrypoint to CSS. message CompileRequest { // This compilation's request id. This is included in messages sent from the @@ -231,6 +241,7 @@ message InboundMessage { ImportResponse importResponse = 4; FileImportResponse fileImportResponse = 5; FunctionCallResponse functionCallResponse = 6; + VersionRequest versionRequest = 7; } } @@ -238,10 +249,28 @@ message InboundMessage { // provides a `oneof` that makes it possible to determine the type of each // outbound message. message OutboundMessage { + // A response that contains the version of the embedded compiler. + message VersionResponse { + // The version of the embedded protocol, in semver format. + string protocol_version = 1; + + // The version of the embedded compiler package. This has no guaranteed + // format, although compilers are encouraged to use semver. + string compiler_version = 2; + + // The version of the Sass implementation that the embedded compiler wraps. + // This has no guaranteed format, although Sass implementations are + // encouraged to use semver. + string implementation_version = 3; + + // The name of the Sass implementation that the embedded compiler wraps. + string implementation_name = 4; + } + // A response that contains the result of a compilation. message CompileResponse { // The compilation's request id. Mandatory. - int32 id = 1; + uint32 id = 1; // A message indicating that the Sass file was successfully compiled to CSS. message CompileSuccess { @@ -387,12 +416,12 @@ message OutboundMessage { // The URL of the import to be canonicalized. This may be either absolute or // relative. // - // When loading a URL, the host must first try resolving that URL relative - // to the canonical URL of the current file, and canonicalizing the result - // using the importer that loaded the current file. If this returns `null`, - // the host must then try canonicalizing the original URL with each importer - // in order until one returns something other than `null`. That is the - // result of the import. + // When loading a URL, the compiler must first try resolving that URL + // relative to the canonical URL of the current file, and canonicalizing the + // result using the importer that loaded the current file. If this returns + // `null`, the compiler must then try canonicalizing the original URL with + // each importer in order until one returns something other than `null`. + // That is the result of the import. string url = 4; } @@ -428,8 +457,7 @@ message OutboundMessage { // Mandatory. uint32 importer_id = 3; - // The canonical URL of the import. This is guaranteed to be a URL returned - // by a `CanonicalizeRequest` to this importer. + // The (non-canonicalized) URL of the import. string url = 4; } @@ -475,6 +503,7 @@ message OutboundMessage { ImportRequest importRequest = 5; FileImportRequest fileImportRequest = 6; FunctionCallRequest functionCallRequest = 7; + VersionResponse versionResponse = 8; } } @@ -498,7 +527,7 @@ message ProtocolError { // The ID of the request that had an error. This MUST be `-1` if the request // ID couldn't be determined, or if the error is being reported for a response // or an event. - int32 id = 2; + uint32 id = 2; // A human-readable message providing more detail about the error. string message = 3; diff --git a/options.go b/options.go index 1280ad7..d3ef2cf 100644 --- a/options.go +++ b/options.go @@ -4,6 +4,7 @@ import ( "fmt" "path/filepath" "strings" + "time" "github.com/bep/godartsass/internal/embeddedsass" ) @@ -17,6 +18,12 @@ type Options struct { // There may be several ways to install this, one would be to // download it from here: https://github.com/sass/dart-sass-embedded/releases DartSassEmbeddedFilename string + + // Timeout is the duration allowed for dart sass to transpile. + // This was added for the beta6 version of Dart Sass Protocol, + // as running this code against the beta5 binary would hang + // on Execute. + Timeout time.Duration } func (opts *Options) init() error { @@ -24,6 +31,10 @@ func (opts *Options) init() error { opts.DartSassEmbeddedFilename = defaultDartSassEmbeddedFilename } + if opts.Timeout == 0 { + opts.Timeout = 30 * time.Second + } + return nil } diff --git a/transpiler.go b/transpiler.go index d68d110..8988de3 100644 --- a/transpiler.go +++ b/transpiler.go @@ -13,6 +13,7 @@ import ( "net/url" "path" "strings" + "time" "os" "os/exec" @@ -63,6 +64,7 @@ func Start(opts Options) (*Transpiler, error) { t := &Transpiler{ opts: opts, conn: conn, + lenBuf: make([]byte, binary.MaxVarintLen64), pending: make(map[uint32]*call), } @@ -76,7 +78,9 @@ type Transpiler struct { opts Options // stdin/stdout of the Dart Sass protocol - conn io.ReadWriteCloser + conn byteReadWriteCloser + lenBuf []byte + msgBuf []byte closing bool shutdown bool @@ -172,7 +176,13 @@ func (t *Transpiler) Execute(args Args) (Result, error) { if err != nil { return result, err } - call = <-call.Done + + select { + case call = <-call.Done: + case <-time.After(t.opts.Timeout): + return result, errors.New("timeout waiting for Dart Sass to respond; if you're running with Embedded Sass protocol < beta6, you need to upgrade") + } + if call.Error != nil { return result, call.Error } @@ -217,29 +227,33 @@ func (t *Transpiler) input() { for err == nil { // The header is the length in bytes of the remaining message. - var plen int32 - err = binary.Read(t.conn, binary.LittleEndian, &plen) + var l uint64 + l, err = binary.ReadUvarint(t.conn) if err != nil { break } - b := make([]byte, plen) + plen := int(l) + if len(t.msgBuf) < plen { + t.msgBuf = make([]byte, plen) + } + + buf := t.msgBuf[:plen] - _, err = io.ReadFull(t.conn, b) + _, err = io.ReadFull(t.conn, buf) if err != nil { break } var msg embeddedsass.OutboundMessage - if err = proto.Unmarshal(b, &msg); err != nil { + if err = proto.Unmarshal(buf, &msg); err != nil { break } switch c := msg.Message.(type) { case *embeddedsass.OutboundMessage_CompileResponse_: - // Type mismatch, see https://github.com/sass/embedded-protocol/issues/36 - id := uint32(c.CompileResponse.Id) + id := c.CompileResponse.Id // Attach it to the correct pending call. t.mu.Lock() call := t.pending[id] @@ -253,14 +267,14 @@ func (t *Transpiler) input() { call.done() case *embeddedsass.OutboundMessage_CanonicalizeRequest_: call := t.getCall(c.CanonicalizeRequest.CompilationId) - resolved, err := call.importResolver.CanonicalizeURL(c.CanonicalizeRequest.GetUrl()) + resolved, resolveErr := call.importResolver.CanonicalizeURL(c.CanonicalizeRequest.GetUrl()) var response *embeddedsass.InboundMessage_CanonicalizeResponse - if err != nil { + if resolveErr != nil { response = &embeddedsass.InboundMessage_CanonicalizeResponse{ Id: c.CanonicalizeRequest.GetId(), Result: &embeddedsass.InboundMessage_CanonicalizeResponse_Error{ - Error: err.Error(), + Error: resolveErr.Error(), }, } } else { @@ -286,7 +300,7 @@ func (t *Transpiler) input() { case *embeddedsass.OutboundMessage_ImportRequest_: call := t.getCall(c.ImportRequest.CompilationId) url := c.ImportRequest.GetUrl() - contents, err := call.importResolver.Load(url) + contents, loadErr := call.importResolver.Load(url) var response *embeddedsass.InboundMessage_ImportResponse var sourceMapURL string @@ -298,11 +312,11 @@ func (t *Transpiler) input() { sourceMapURL = url } - if err != nil { + if loadErr != nil { response = &embeddedsass.InboundMessage_ImportResponse{ Id: c.ImportRequest.GetId(), Result: &embeddedsass.InboundMessage_ImportResponse_Error{ - Error: err.Error(), + Error: loadErr.Error(), }, } } else { @@ -331,6 +345,7 @@ func (t *Transpiler) input() { default: err = fmt.Errorf("unsupported response message type. %T", msg.Message) } + } // Terminate pending calls. @@ -407,15 +422,17 @@ func (t *Transpiler) sendInboundMessage(message *embeddedsass.InboundMessage) er return fmt.Errorf("failed to marshal request: %s", err) } - // Every message must begin with a 4-byte (32-bit) unsigned little-endian - // integer indicating the length in bytes of the remaining message. - reqLen := uint32(len(out)) + // Every message must begin with a varint indicating the length in bytes of + // the remaining message. + reqLen := uint64(len(out)) - if err := binary.Write(t.conn, binary.LittleEndian, reqLen); err != nil { + n := binary.PutUvarint(t.lenBuf, reqLen) + _, err = t.conn.Write(t.lenBuf[:n]) + if err != nil { return err } - n, err := t.conn.Write(out) + n, err = t.conn.Write(out) if n != len(out) { return errors.New("failed to write payload") }