Unverified Commit 4b874a02 authored by Cristian Maglie's avatar Cristian Maglie Committed by GitHub

Added dependencies, license and provides_includes fields in 'lib search' (#599)

* Added 'license' and 'provides_includes' fields in lib search

* Added 'dependencies' field in lib search

* Do not output empty field in 'lib search'

Fields 'license', 'provided includes' and 'dependencies' are printed
only if populated.
parent 561618a4
......@@ -41,17 +41,19 @@ type Library struct {
// Release is a release of a library available for download
type Release struct {
Author string
Version *semver.Version
Dependencies []semver.Dependency
Maintainer string
Sentence string
Paragraph string
Website string
Category string
Architectures []string
Types []string
Resource *resources.DownloadResource
Author string
Version *semver.Version
Dependencies []semver.Dependency
Maintainer string
Sentence string
Paragraph string
Website string
Category string
Architectures []string
Types []string
Resource *resources.DownloadResource
License string
ProvidesIncludes []string
Library *Library `json:"-"`
}
......
......@@ -29,21 +29,23 @@ type indexJSON struct {
}
type indexRelease struct {
Name string `json:"name,required"`
Version *semver.Version `json:"version,required"`
Author string `json:"author"`
Maintainer string `json:"maintainer"`
Sentence string `json:"sentence"`
Paragraph string `json:"paragraph"`
Website string `json:"website"`
Category string `json:"category"`
Architectures []string `json:"architectures"`
Types []string `json:"types"`
URL string `json:"url"`
ArchiveFileName string `json:"archiveFileName"`
Size int64 `json:"size"`
Checksum string `json:"checksum"`
Dependencies []*indexDependency `json:"dependencies,omitempty"`
Name string `json:"name,required"`
Version *semver.Version `json:"version,required"`
Author string `json:"author"`
Maintainer string `json:"maintainer"`
Sentence string `json:"sentence"`
Paragraph string `json:"paragraph"`
Website string `json:"website"`
Category string `json:"category"`
Architectures []string `json:"architectures"`
Types []string `json:"types"`
URL string `json:"url"`
ArchiveFileName string `json:"archiveFileName"`
Size int64 `json:"size"`
Checksum string `json:"checksum"`
Dependencies []*indexDependency `json:"dependencies,omitempty"`
License string `json:"license"`
ProvidesIncludes []string `json:"providesIncludes"`
}
type indexDependency struct {
......@@ -107,8 +109,10 @@ func (indexLib *indexRelease) extractReleaseIn(library *Library) {
Checksum: indexLib.Checksum,
CachePath: "libraries",
},
Library: library,
Dependencies: indexLib.extractDependencies(),
Library: library,
Dependencies: indexLib.extractDependencies(),
License: indexLib.License,
ProvidesIncludes: indexLib.ProvidesIncludes,
}
library.Releases[indexLib.Version.String()] = release
if library.Latest == nil || library.Latest.Version.LessThan(release.Version) {
......
......@@ -113,21 +113,41 @@ func (res result) String() string {
var out strings.Builder
for _, lsr := range results {
out.WriteString(fmt.Sprintf("Name: \"%s\"\n", lsr.Name))
for _, lib := range results {
out.WriteString(fmt.Sprintf("Name: \"%s\"\n", lib.Name))
if res.namesOnly {
continue
}
out.WriteString(fmt.Sprintf(" Author: %s\n", lsr.GetLatest().Author))
out.WriteString(fmt.Sprintf(" Maintainer: %s\n", lsr.GetLatest().Maintainer))
out.WriteString(fmt.Sprintf(" Sentence: %s\n", lsr.GetLatest().Sentence))
out.WriteString(fmt.Sprintf(" Paragraph: %s\n", lsr.GetLatest().Paragraph))
out.WriteString(fmt.Sprintf(" Website: %s\n", lsr.GetLatest().Website))
out.WriteString(fmt.Sprintf(" Category: %s\n", lsr.GetLatest().Category))
out.WriteString(fmt.Sprintf(" Architecture: %s\n", strings.Join(lsr.GetLatest().Architectures, ", ")))
out.WriteString(fmt.Sprintf(" Types: %s\n", strings.Join(lsr.GetLatest().Types, ", ")))
out.WriteString(fmt.Sprintf(" Versions: %s\n", strings.Replace(fmt.Sprint(versionsFromSearchedLibrary(lsr)), " ", ", ", -1)))
latest := lib.GetLatest()
deps := []string{}
for _, dep := range latest.GetDependencies() {
if dep.GetVersionConstraint() == "" {
deps = append(deps, dep.GetName())
} else {
deps = append(deps, dep.GetName()+" ("+dep.GetVersionConstraint()+")")
}
}
out.WriteString(fmt.Sprintf(" Author: %s\n", latest.Author))
out.WriteString(fmt.Sprintf(" Maintainer: %s\n", latest.Maintainer))
out.WriteString(fmt.Sprintf(" Sentence: %s\n", latest.Sentence))
out.WriteString(fmt.Sprintf(" Paragraph: %s\n", latest.Paragraph))
out.WriteString(fmt.Sprintf(" Website: %s\n", latest.Website))
if latest.License != "" {
out.WriteString(fmt.Sprintf(" License: %s\n", latest.License))
}
out.WriteString(fmt.Sprintf(" Category: %s\n", latest.Category))
out.WriteString(fmt.Sprintf(" Architecture: %s\n", strings.Join(latest.Architectures, ", ")))
out.WriteString(fmt.Sprintf(" Types: %s\n", strings.Join(latest.Types, ", ")))
out.WriteString(fmt.Sprintf(" Versions: %s\n", strings.Replace(fmt.Sprint(versionsFromSearchedLibrary(lib)), " ", ", ", -1)))
if len(latest.ProvidesIncludes) > 0 {
out.WriteString(fmt.Sprintf(" Provides includes: %s\n", strings.Join(latest.ProvidesIncludes, ", ")))
}
if len(latest.Dependencies) > 0 {
out.WriteString(fmt.Sprintf(" Dependencies: %s\n", strings.Join(deps, ", ")))
}
}
return fmt.Sprintf("%s", out.String())
......
......@@ -23,6 +23,7 @@ import (
"github.com/arduino/arduino-cli/arduino/libraries/librariesindex"
"github.com/arduino/arduino-cli/commands"
rpc "github.com/arduino/arduino-cli/rpc/commands"
semver "go.bug.st/relaxed-semver"
)
// LibrarySearch FIXMEDOC
......@@ -60,15 +61,18 @@ func LibrarySearch(ctx context.Context, req *rpc.LibrarySearchReq) (*rpc.Library
// GetLibraryParameters FIXMEDOC
func GetLibraryParameters(rel *librariesindex.Release) *rpc.LibraryRelease {
return &rpc.LibraryRelease{
Author: rel.Author,
Version: rel.Version.String(),
Maintainer: rel.Maintainer,
Sentence: rel.Sentence,
Paragraph: rel.Paragraph,
Website: rel.Website,
Category: rel.Category,
Architectures: rel.Architectures,
Types: rel.Types,
Author: rel.Author,
Version: rel.Version.String(),
Maintainer: rel.Maintainer,
Sentence: rel.Sentence,
Paragraph: rel.Paragraph,
Website: rel.Website,
Category: rel.Category,
Architectures: rel.Architectures,
Types: rel.Types,
License: rel.License,
ProvidesIncludes: rel.ProvidesIncludes,
Dependencies: getLibraryDependenciesParameter(rel.GetDependencies()),
Resources: &rpc.DownloadResource{
Url: rel.Resource.URL,
Archivefilename: rel.Resource.ArchiveFileName,
......@@ -78,3 +82,14 @@ func GetLibraryParameters(rel *librariesindex.Release) *rpc.LibraryRelease {
},
}
}
func getLibraryDependenciesParameter(deps []semver.Dependency) []*rpc.LibraryDependency {
res := []*rpc.LibraryDependency{}
for _, dep := range deps {
res = append(res, &rpc.LibraryDependency{
Name: dep.GetName(),
VersionConstraint: dep.GetConstraint().String(),
})
}
return res
}
......@@ -743,19 +743,22 @@ func (m *SearchedLibrary) GetLatest() *LibraryRelease {
}
type LibraryRelease struct {
Author string `protobuf:"bytes,1,opt,name=author,proto3" json:"author,omitempty"`
Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"`
Maintainer string `protobuf:"bytes,3,opt,name=maintainer,proto3" json:"maintainer,omitempty"`
Sentence string `protobuf:"bytes,4,opt,name=sentence,proto3" json:"sentence,omitempty"`
Paragraph string `protobuf:"bytes,5,opt,name=paragraph,proto3" json:"paragraph,omitempty"`
Website string `protobuf:"bytes,6,opt,name=website,proto3" json:"website,omitempty"`
Category string `protobuf:"bytes,7,opt,name=category,proto3" json:"category,omitempty"`
Architectures []string `protobuf:"bytes,8,rep,name=architectures,proto3" json:"architectures,omitempty"`
Types []string `protobuf:"bytes,9,rep,name=types,proto3" json:"types,omitempty"`
Resources *DownloadResource `protobuf:"bytes,10,opt,name=resources,proto3" json:"resources,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
Author string `protobuf:"bytes,1,opt,name=author,proto3" json:"author,omitempty"`
Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"`
Maintainer string `protobuf:"bytes,3,opt,name=maintainer,proto3" json:"maintainer,omitempty"`
Sentence string `protobuf:"bytes,4,opt,name=sentence,proto3" json:"sentence,omitempty"`
Paragraph string `protobuf:"bytes,5,opt,name=paragraph,proto3" json:"paragraph,omitempty"`
Website string `protobuf:"bytes,6,opt,name=website,proto3" json:"website,omitempty"`
Category string `protobuf:"bytes,7,opt,name=category,proto3" json:"category,omitempty"`
Architectures []string `protobuf:"bytes,8,rep,name=architectures,proto3" json:"architectures,omitempty"`
Types []string `protobuf:"bytes,9,rep,name=types,proto3" json:"types,omitempty"`
Resources *DownloadResource `protobuf:"bytes,10,opt,name=resources,proto3" json:"resources,omitempty"`
License string `protobuf:"bytes,11,opt,name=license,proto3" json:"license,omitempty"`
ProvidesIncludes []string `protobuf:"bytes,12,rep,name=provides_includes,json=providesIncludes,proto3" json:"provides_includes,omitempty"`
Dependencies []*LibraryDependency `protobuf:"bytes,13,rep,name=dependencies,proto3" json:"dependencies,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *LibraryRelease) Reset() { *m = LibraryRelease{} }
......@@ -853,6 +856,74 @@ func (m *LibraryRelease) GetResources() *DownloadResource {
return nil
}
func (m *LibraryRelease) GetLicense() string {
if m != nil {
return m.License
}
return ""
}
func (m *LibraryRelease) GetProvidesIncludes() []string {
if m != nil {
return m.ProvidesIncludes
}
return nil
}
func (m *LibraryRelease) GetDependencies() []*LibraryDependency {
if m != nil {
return m.Dependencies
}
return nil
}
type LibraryDependency struct {
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
VersionConstraint string `protobuf:"bytes,2,opt,name=version_constraint,json=versionConstraint,proto3" json:"version_constraint,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *LibraryDependency) Reset() { *m = LibraryDependency{} }
func (m *LibraryDependency) String() string { return proto.CompactTextString(m) }
func (*LibraryDependency) ProtoMessage() {}
func (*LibraryDependency) Descriptor() ([]byte, []int) {
return fileDescriptor_9feed0d29806df6c, []int{15}
}
func (m *LibraryDependency) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_LibraryDependency.Unmarshal(m, b)
}
func (m *LibraryDependency) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_LibraryDependency.Marshal(b, m, deterministic)
}
func (m *LibraryDependency) XXX_Merge(src proto.Message) {
xxx_messageInfo_LibraryDependency.Merge(m, src)
}
func (m *LibraryDependency) XXX_Size() int {
return xxx_messageInfo_LibraryDependency.Size(m)
}
func (m *LibraryDependency) XXX_DiscardUnknown() {
xxx_messageInfo_LibraryDependency.DiscardUnknown(m)
}
var xxx_messageInfo_LibraryDependency proto.InternalMessageInfo
func (m *LibraryDependency) GetName() string {
if m != nil {
return m.Name
}
return ""
}
func (m *LibraryDependency) GetVersionConstraint() string {
if m != nil {
return m.VersionConstraint
}
return ""
}
type DownloadResource struct {
Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"`
Archivefilename string `protobuf:"bytes,2,opt,name=archivefilename,proto3" json:"archivefilename,omitempty"`
......@@ -868,7 +939,7 @@ func (m *DownloadResource) Reset() { *m = DownloadResource{} }
func (m *DownloadResource) String() string { return proto.CompactTextString(m) }
func (*DownloadResource) ProtoMessage() {}
func (*DownloadResource) Descriptor() ([]byte, []int) {
return fileDescriptor_9feed0d29806df6c, []int{15}
return fileDescriptor_9feed0d29806df6c, []int{16}
}
func (m *DownloadResource) XXX_Unmarshal(b []byte) error {
......@@ -937,7 +1008,7 @@ func (m *LibraryListReq) Reset() { *m = LibraryListReq{} }
func (m *LibraryListReq) String() string { return proto.CompactTextString(m) }
func (*LibraryListReq) ProtoMessage() {}
func (*LibraryListReq) Descriptor() ([]byte, []int) {
return fileDescriptor_9feed0d29806df6c, []int{16}
return fileDescriptor_9feed0d29806df6c, []int{17}
}
func (m *LibraryListReq) XXX_Unmarshal(b []byte) error {
......@@ -990,7 +1061,7 @@ func (m *LibraryListResp) Reset() { *m = LibraryListResp{} }
func (m *LibraryListResp) String() string { return proto.CompactTextString(m) }
func (*LibraryListResp) ProtoMessage() {}
func (*LibraryListResp) Descriptor() ([]byte, []int) {
return fileDescriptor_9feed0d29806df6c, []int{17}
return fileDescriptor_9feed0d29806df6c, []int{18}
}
func (m *LibraryListResp) XXX_Unmarshal(b []byte) error {
......@@ -1030,7 +1101,7 @@ func (m *InstalledLibrary) Reset() { *m = InstalledLibrary{} }
func (m *InstalledLibrary) String() string { return proto.CompactTextString(m) }
func (*InstalledLibrary) ProtoMessage() {}
func (*InstalledLibrary) Descriptor() ([]byte, []int) {
return fileDescriptor_9feed0d29806df6c, []int{18}
return fileDescriptor_9feed0d29806df6c, []int{19}
}
func (m *InstalledLibrary) XXX_Unmarshal(b []byte) error {
......@@ -1098,7 +1169,7 @@ func (m *Library) Reset() { *m = Library{} }
func (m *Library) String() string { return proto.CompactTextString(m) }
func (*Library) ProtoMessage() {}
func (*Library) Descriptor() ([]byte, []int) {
return fileDescriptor_9feed0d29806df6c, []int{19}
return fileDescriptor_9feed0d29806df6c, []int{20}
}
func (m *Library) XXX_Unmarshal(b []byte) error {
......@@ -1299,6 +1370,7 @@ func init() {
proto.RegisterType((*SearchedLibrary)(nil), "cc.arduino.cli.commands.SearchedLibrary")
proto.RegisterMapType((map[string]*LibraryRelease)(nil), "cc.arduino.cli.commands.SearchedLibrary.ReleasesEntry")
proto.RegisterType((*LibraryRelease)(nil), "cc.arduino.cli.commands.LibraryRelease")
proto.RegisterType((*LibraryDependency)(nil), "cc.arduino.cli.commands.LibraryDependency")
proto.RegisterType((*DownloadResource)(nil), "cc.arduino.cli.commands.DownloadResource")
proto.RegisterType((*LibraryListReq)(nil), "cc.arduino.cli.commands.LibraryListReq")
proto.RegisterType((*LibraryListResp)(nil), "cc.arduino.cli.commands.LibraryListResp")
......@@ -1310,80 +1382,84 @@ func init() {
func init() { proto.RegisterFile("commands/lib.proto", fileDescriptor_9feed0d29806df6c) }
var fileDescriptor_9feed0d29806df6c = []byte{
// 1191 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x57, 0xdf, 0x6f, 0x1b, 0xc5,
0x13, 0xff, 0x9e, 0xdd, 0x26, 0xf6, 0xb8, 0xae, 0x9d, 0x6d, 0xda, 0xde, 0x37, 0xa5, 0xad, 0x39,
0x81, 0x70, 0x8b, 0xea, 0xa0, 0x22, 0x55, 0xa8, 0x52, 0x85, 0x8a, 0xd2, 0x22, 0x50, 0x84, 0xa2,
0x6b, 0xcb, 0x03, 0x20, 0x9d, 0xd6, 0x77, 0x13, 0x7b, 0xe5, 0xf5, 0xdd, 0x65, 0x77, 0xcf, 0x95,
0x79, 0xe1, 0xd7, 0x2b, 0x2f, 0xbc, 0xf3, 0xc0, 0x0b, 0x42, 0xe2, 0x1f, 0xe2, 0xdf, 0x41, 0x7b,
0xbb, 0x77, 0x3e, 0x3b, 0x71, 0x1a, 0x50, 0x54, 0x10, 0x4f, 0xb9, 0xf9, 0xcc, 0xce, 0xcc, 0x67,
0x66, 0x76, 0x66, 0x63, 0x20, 0x61, 0x32, 0x9d, 0xd2, 0x38, 0x92, 0xbb, 0x9c, 0x0d, 0x07, 0xa9,
0x48, 0x54, 0x42, 0xae, 0x87, 0xe1, 0x80, 0x8a, 0x28, 0x63, 0x71, 0x32, 0x08, 0x39, 0x1b, 0x14,
0x47, 0x76, 0xae, 0x96, 0x87, 0xf5, 0x47, 0x12, 0x9b, 0xf3, 0xde, 0x77, 0x0e, 0x90, 0x7d, 0x36,
0x14, 0x54, 0xcc, 0xf7, 0x92, 0x97, 0x31, 0x4f, 0x68, 0xe4, 0xe3, 0x11, 0x79, 0x04, 0x0d, 0x16,
0x4b, 0x45, 0xe3, 0x10, 0x5d, 0xa7, 0xe7, 0xf4, 0x5b, 0xf7, 0xdf, 0x1c, 0xac, 0xf1, 0x3c, 0xf8,
0xc4, 0x1e, 0xf4, 0x4b, 0x13, 0x42, 0xe0, 0x42, 0x4c, 0xa7, 0xe8, 0xd6, 0x7a, 0x4e, 0xbf, 0xe9,
0xe7, 0xdf, 0xc4, 0x85, 0xcd, 0x19, 0x0a, 0xc9, 0x92, 0xd8, 0xad, 0xe7, 0x70, 0x21, 0x7a, 0x5f,
0xc1, 0x95, 0x63, 0x14, 0x64, 0x4a, 0x9e, 0x40, 0x23, 0x15, 0xc9, 0x48, 0xa0, 0x94, 0x96, 0xc3,
0x9d, 0xb5, 0x1c, 0x0a, 0xc3, 0x03, 0x6b, 0xe0, 0x97, 0xa6, 0xde, 0xb7, 0x0e, 0x6c, 0x59, 0xf7,
0x39, 0x53, 0xce, 0x5f, 0x7b, 0x82, 0xbf, 0x2d, 0x8a, 0x5c, 0x52, 0x38, 0xb7, 0x04, 0xc9, 0xa7,
0xd0, 0x56, 0x54, 0x4e, 0x82, 0xd2, 0x57, 0x2d, 0xf7, 0xf5, 0xf6, 0x5a, 0x5f, 0xcf, 0xa9, 0x9c,
0x94, 0x7e, 0x2e, 0xa9, 0x8a, 0xe4, 0x7d, 0xef, 0x94, 0xbd, 0x78, 0x11, 0xb3, 0x7f, 0xa8, 0x5c,
0x43, 0xd8, 0x3e, 0xce, 0x41, 0xa6, 0xc7, 0x13, 0x75, 0xfe, 0x7e, 0xa2, 0x2f, 0x16, 0x31, 0xd2,
0x91, 0xa0, 0x11, 0x3e, 0x3e, 0x8f, 0x44, 0xbd, 0xdf, 0x1d, 0xb8, 0x7a, 0x82, 0xdf, 0x7f, 0x67,
0xb3, 0x7f, 0x74, 0xe0, 0xa6, 0x25, 0xeb, 0xa3, 0x4c, 0xf8, 0x0c, 0xf7, 0x30, 0xc5, 0x38, 0xc2,
0x38, 0x64, 0x28, 0x5f, 0x7b, 0xdb, 0x67, 0x70, 0xeb, 0x34, 0x36, 0x32, 0x25, 0xcf, 0xe1, 0x52,
0x54, 0xc1, 0x5c, 0xa7, 0x57, 0xef, 0xb7, 0xee, 0xbf, 0xb7, 0x96, 0x52, 0xb1, 0x55, 0x0a, 0x9b,
0xf9, 0x33, 0x45, 0x55, 0x26, 0xfd, 0x25, 0x2f, 0xde, 0x0f, 0x0e, 0x5c, 0x5f, 0x73, 0xb2, 0xcc,
0xc0, 0xa9, 0x64, 0xd0, 0x87, 0x8e, 0xa5, 0xec, 0xe3, 0x51, 0xc6, 0x04, 0x46, 0x36, 0xc1, 0x55,
0x98, 0xdc, 0x85, 0xae, 0x85, 0xec, 0xd8, 0x63, 0x64, 0x93, 0x3e, 0x86, 0x7b, 0x23, 0xe8, 0x5a,
0x12, 0xcf, 0x90, 0x8a, 0x70, 0x7c, 0x0e, 0xe5, 0xdf, 0x86, 0x8b, 0x47, 0x19, 0x8a, 0xb9, 0xa5,
0x67, 0x04, 0xef, 0xcb, 0x72, 0x1d, 0x16, 0x81, 0x64, 0x4a, 0x9e, 0x42, 0x93, 0xe7, 0xe0, 0xa2,
0xac, 0xfd, 0xb5, 0xa1, 0x8c, 0x1d, 0x46, 0x45, 0xb7, 0x16, 0xa6, 0xde, 0x2f, 0x35, 0xe8, 0xac,
0xa8, 0x4f, 0xac, 0xa1, 0x0f, 0x0d, 0x81, 0x1c, 0xa9, 0x44, 0x7d, 0x83, 0x75, 0xb8, 0x07, 0x67,
0x0d, 0x37, 0xf0, 0xad, 0xe1, 0x93, 0x58, 0x89, 0xb9, 0x5f, 0xfa, 0x21, 0x1f, 0xc2, 0x06, 0xa7,
0x0a, 0xa5, 0xca, 0x6b, 0xdc, 0xba, 0xff, 0xce, 0xab, 0xee, 0x85, 0x75, 0xe4, 0x5b, 0xb3, 0x9d,
0x08, 0xda, 0x4b, 0xbe, 0x49, 0x17, 0xea, 0x13, 0x9c, 0x5b, 0xe2, 0xfa, 0x93, 0x3c, 0x82, 0x8b,
0x33, 0xca, 0x33, 0xb4, 0x63, 0x77, 0xe6, 0x10, 0xc6, 0xea, 0x61, 0xed, 0x03, 0xc7, 0xfb, 0xa3,
0x06, 0x97, 0x97, 0xb5, 0xe4, 0x1a, 0x6c, 0xd0, 0x4c, 0x8d, 0x13, 0x61, 0x43, 0x59, 0xa9, 0x3a,
0x2b, 0xb5, 0xa5, 0x59, 0x21, 0xb7, 0x00, 0xa6, 0x94, 0xc5, 0x8a, 0xb2, 0x18, 0x85, 0xbd, 0x53,
0x15, 0x84, 0xec, 0x40, 0x43, 0x62, 0xac, 0x50, 0xdf, 0x9c, 0x0b, 0xb9, 0xb6, 0x94, 0xc9, 0x1b,
0xd0, 0x4c, 0xa9, 0xa0, 0x23, 0x41, 0xd3, 0xb1, 0x7b, 0x31, 0x57, 0x2e, 0x00, 0x1d, 0xf3, 0x25,
0x0e, 0x25, 0x53, 0xe8, 0x6e, 0x98, 0x98, 0x56, 0xd4, 0x3e, 0x43, 0xaa, 0x70, 0x94, 0x88, 0xb9,
0xbb, 0x69, 0x7c, 0x16, 0x32, 0x79, 0x0b, 0xda, 0xba, 0x49, 0x4c, 0x61, 0xa8, 0x32, 0x81, 0xd2,
0x6d, 0xf4, 0xea, 0xfd, 0xa6, 0xbf, 0x0c, 0xea, 0x0b, 0xa9, 0xe6, 0x29, 0x4a, 0xb7, 0x99, 0x6b,
0x8d, 0x40, 0x3e, 0x86, 0xa6, 0x40, 0x99, 0x64, 0x22, 0x44, 0xe9, 0xc2, 0x19, 0x57, 0xa3, 0x6f,
0x2d, 0xfc, 0x85, 0xad, 0xf7, 0xb3, 0x03, 0xdd, 0x55, 0xbd, 0xee, 0x61, 0x26, 0x78, 0xd1, 0xc3,
0x4c, 0x70, 0x3d, 0xbf, 0x39, 0xad, 0x19, 0x1e, 0x32, 0x8e, 0x95, 0x05, 0xb5, 0x0a, 0xe7, 0x19,
0x8f, 0x31, 0x9c, 0xc8, 0x6c, 0x6a, 0x6b, 0x5c, 0xca, 0xfa, 0x56, 0x4b, 0xf6, 0xb5, 0xa9, 0x6e,
0xdd, 0xcf, 0xbf, 0x75, 0x65, 0x43, 0x1a, 0x8e, 0x31, 0xa5, 0xaa, 0xac, 0x6c, 0x09, 0x78, 0xdf,
0x94, 0x7d, 0xdf, 0x67, 0x52, 0x9d, 0xc3, 0x7c, 0x77, 0xa1, 0x4e, 0x39, 0xcf, 0xc9, 0x37, 0x7c,
0xfd, 0xa9, 0x09, 0x64, 0x69, 0x44, 0x15, 0x1d, 0x72, 0xcc, 0x19, 0x37, 0xfc, 0x05, 0xe0, 0x31,
0xe8, 0x2c, 0x11, 0x90, 0x29, 0xf9, 0x1c, 0xb6, 0x58, 0xb1, 0x82, 0x02, 0x33, 0xc6, 0x73, 0x3b,
0xff, 0x77, 0x4e, 0xa7, 0xa2, 0x2d, 0x8a, 0x6b, 0xdc, 0x65, 0x2b, 0x88, 0xf7, 0x93, 0x03, 0xdd,
0xd5, 0x63, 0xe4, 0x21, 0x6c, 0x2e, 0x42, 0xe8, 0x6c, 0x7b, 0xaf, 0x1c, 0x9f, 0xc2, 0x80, 0x3c,
0x86, 0x4d, 0x3b, 0xe8, 0x7f, 0x75, 0xf4, 0x0a, 0x3b, 0xef, 0xd7, 0x0d, 0xd8, 0x3c, 0x6d, 0x27,
0x2d, 0xa6, 0xb0, 0xb6, 0x34, 0x85, 0xff, 0xa5, 0x59, 0xbb, 0x0d, 0x2d, 0xdb, 0xab, 0x20, 0x62,
0x22, 0x9f, 0xb6, 0xa6, 0x0f, 0x16, 0xda, 0x63, 0x82, 0xdc, 0x04, 0x30, 0x83, 0x93, 0xeb, 0x5b,
0x86, 0xb1, 0x41, 0xb4, 0xfa, 0x36, 0xb4, 0x32, 0xc5, 0x38, 0x53, 0xf3, 0x5c, 0x7f, 0xc9, 0xd8,
0x5b, 0x48, 0x1f, 0xd8, 0x81, 0x06, 0x4f, 0x42, 0xaa, 0xf4, 0xce, 0x6a, 0x1b, 0xe2, 0x85, 0x4c,
0xee, 0xe9, 0x5f, 0x2c, 0xb6, 0x6a, 0x41, 0xca, 0xa9, 0x3a, 0x4c, 0xc4, 0xd4, 0xbd, 0x9c, 0x9f,
0xda, 0x2a, 0x35, 0x07, 0x56, 0xa1, 0xfb, 0xc1, 0xe9, 0x3c, 0xc9, 0x94, 0xdb, 0x31, 0xfd, 0x30,
0x12, 0xb9, 0xa1, 0xf7, 0x05, 0xe5, 0x41, 0xde, 0xc0, 0xae, 0x89, 0xa1, 0x81, 0xcf, 0x74, 0x13,
0x3d, 0x68, 0x47, 0x89, 0x0a, 0x68, 0xc0, 0x59, 0x3c, 0xa1, 0x23, 0x74, 0xb7, 0xf2, 0x29, 0x68,
0x45, 0x89, 0x7a, 0xbc, 0x6f, 0x20, 0xd2, 0x83, 0x56, 0x2a, 0x30, 0x4c, 0xa6, 0x29, 0xd3, 0x2f,
0x32, 0x31, 0x27, 0x2a, 0x10, 0xf9, 0x3f, 0x34, 0x78, 0x14, 0x1c, 0x72, 0x3a, 0x92, 0xee, 0x15,
0xd3, 0x19, 0x1e, 0x3d, 0xd5, 0xa2, 0x8e, 0xce, 0x64, 0xc0, 0x71, 0x44, 0xc3, 0xb9, 0xbb, 0x9d,
0x9b, 0x36, 0x98, 0xdc, 0xcf, 0xe5, 0xea, 0xc2, 0xbe, 0xba, 0xbc, 0xb0, 0x5d, 0x7d, 0xf7, 0x43,
0x8c, 0x25, 0xba, 0xd7, 0xac, 0x43, 0x23, 0x92, 0x03, 0x80, 0x54, 0x24, 0x29, 0x0a, 0xa5, 0xdf,
0xde, 0xeb, 0x67, 0xfb, 0x97, 0x66, 0x70, 0x50, 0x9a, 0x98, 0x67, 0xb0, 0xe2, 0x63, 0xe7, 0x11,
0x74, 0x56, 0xd4, 0x27, 0xbc, 0x64, 0xdb, 0xd5, 0x97, 0xac, 0x59, 0x79, 0xa0, 0xee, 0x3e, 0x80,
0x76, 0xb1, 0x26, 0x4c, 0xc1, 0x3b, 0xd0, 0x3a, 0xe4, 0x54, 0x05, 0xa6, 0xfe, 0xdd, 0xff, 0x91,
0x6d, 0xe8, 0x0a, 0x0c, 0x33, 0x21, 0xd9, 0x0c, 0x0b, 0xd4, 0xb9, 0x5b, 0x59, 0x2f, 0x45, 0xc7,
0x3b, 0xd0, 0x62, 0x11, 0x06, 0xc3, 0x8c, 0x71, 0xc5, 0x62, 0x63, 0x59, 0x34, 0xbe, 0x44, 0x1d,
0x72, 0x1b, 0x6e, 0x08, 0x3c, 0x44, 0xa1, 0x47, 0x26, 0x0a, 0x8e, 0x1d, 0xa8, 0x91, 0xcb, 0x00,
0x72, 0x82, 0x2a, 0x1c, 0x0f, 0x93, 0x64, 0xd2, 0xad, 0x7f, 0x74, 0xef, 0x8b, 0x77, 0x47, 0x4c,
0x8d, 0xb3, 0xa1, 0x2e, 0xcc, 0xae, 0x2d, 0x54, 0xf1, 0xf7, 0x5e, 0xc8, 0xd9, 0xae, 0x48, 0xc3,
0xdd, 0xa2, 0x68, 0xc3, 0x8d, 0xfc, 0xb7, 0xee, 0xfb, 0x7f, 0x06, 0x00, 0x00, 0xff, 0xff, 0x26,
0x21, 0xca, 0x20, 0x31, 0x0f, 0x00, 0x00,
// 1261 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x57, 0xdd, 0x6f, 0x1b, 0x45,
0x10, 0xe7, 0xec, 0x36, 0xb1, 0xc7, 0x71, 0xed, 0x6c, 0xd3, 0xf6, 0x48, 0x69, 0x1b, 0x4e, 0x20,
0xd2, 0x54, 0x75, 0x50, 0x91, 0x2a, 0x54, 0xa9, 0x42, 0x85, 0xb6, 0xa8, 0x28, 0xaa, 0xa2, 0xeb,
0xc7, 0x03, 0x20, 0x9d, 0xd6, 0x77, 0x13, 0x7b, 0xe5, 0xf5, 0xed, 0x75, 0x77, 0xcf, 0x95, 0x79,
0xe1, 0xeb, 0x95, 0x17, 0xde, 0x79, 0xe0, 0x05, 0x21, 0xf1, 0xc7, 0xf1, 0x37, 0xa0, 0xbd, 0xdd,
0x3b, 0x7f, 0x24, 0x69, 0x03, 0x8a, 0x0a, 0xe2, 0x29, 0x37, 0x33, 0x3b, 0x33, 0xbf, 0x9d, 0x8f,
0xdf, 0x3a, 0x40, 0x62, 0x31, 0x1e, 0xd3, 0x34, 0x51, 0xbb, 0x9c, 0xf5, 0x7b, 0x99, 0x14, 0x5a,
0x90, 0x4b, 0x71, 0xdc, 0xa3, 0x32, 0xc9, 0x59, 0x2a, 0x7a, 0x31, 0x67, 0xbd, 0xf2, 0xc8, 0xe6,
0x85, 0xea, 0xb0, 0xf9, 0x10, 0xa9, 0x3d, 0x1f, 0x7c, 0xef, 0x01, 0xd9, 0x63, 0x7d, 0x49, 0xe5,
0xf4, 0xbe, 0x78, 0x99, 0x72, 0x41, 0x93, 0x10, 0x5f, 0x90, 0xbb, 0xd0, 0x60, 0xa9, 0xd2, 0x34,
0x8d, 0xd1, 0xf7, 0xb6, 0xbc, 0xed, 0xd6, 0xad, 0x77, 0x7b, 0xc7, 0x44, 0xee, 0x3d, 0x72, 0x07,
0xc3, 0xca, 0x85, 0x10, 0x38, 0x93, 0xd2, 0x31, 0xfa, 0xb5, 0x2d, 0x6f, 0xbb, 0x19, 0x16, 0xdf,
0xc4, 0x87, 0xd5, 0x09, 0x4a, 0xc5, 0x44, 0xea, 0xd7, 0x0b, 0x75, 0x29, 0x06, 0x5f, 0xc3, 0xf9,
0x43, 0x10, 0x54, 0x46, 0x1e, 0x40, 0x23, 0x93, 0x62, 0x20, 0x51, 0x29, 0x87, 0xe1, 0xfa, 0xb1,
0x18, 0x4a, 0xc7, 0x7d, 0xe7, 0x10, 0x56, 0xae, 0xc1, 0x77, 0x1e, 0xac, 0xbb, 0xf0, 0x05, 0x52,
0xce, 0xdf, 0xf8, 0x05, 0x7f, 0x9f, 0x15, 0xb9, 0x82, 0x70, 0x6a, 0x17, 0x24, 0x5f, 0x40, 0x5b,
0x53, 0x35, 0x8a, 0xaa, 0x58, 0xb5, 0x22, 0xd6, 0xfb, 0xc7, 0xc6, 0x7a, 0x4a, 0xd5, 0xa8, 0x8a,
0xb3, 0xa6, 0xe7, 0xa4, 0xe0, 0x07, 0xaf, 0xea, 0xc5, 0xb3, 0x94, 0xfd, 0x4b, 0xe5, 0xea, 0xc3,
0xc6, 0x61, 0x0c, 0x2a, 0x3b, 0x7c, 0x51, 0xef, 0x9f, 0x5f, 0xf4, 0xd9, 0x2c, 0x47, 0x36, 0x90,
0x34, 0xc1, 0x7b, 0xa7, 0x71, 0xd1, 0xe0, 0x0f, 0x0f, 0x2e, 0x1c, 0x11, 0xf7, 0xbf, 0xd9, 0xec,
0x9f, 0x3c, 0xb8, 0xe2, 0xc0, 0x86, 0xa8, 0x04, 0x9f, 0xe0, 0x7d, 0xcc, 0x30, 0x4d, 0x30, 0x8d,
0x19, 0xaa, 0x37, 0xde, 0xf6, 0x09, 0x5c, 0x7d, 0x15, 0x1a, 0x95, 0x91, 0xa7, 0xb0, 0x96, 0xcc,
0xe9, 0x7c, 0x6f, 0xab, 0xbe, 0xdd, 0xba, 0xf5, 0xe1, 0xb1, 0x90, 0x4a, 0x56, 0x29, 0x7d, 0xa6,
0x4f, 0x34, 0xd5, 0xb9, 0x0a, 0x17, 0xa2, 0x04, 0x3f, 0x7a, 0x70, 0xe9, 0x98, 0x93, 0xd5, 0x0d,
0xbc, 0xb9, 0x1b, 0x6c, 0x43, 0xc7, 0x41, 0x0e, 0xf1, 0x45, 0xce, 0x24, 0x26, 0xee, 0x82, 0xcb,
0x6a, 0xb2, 0x03, 0x5d, 0xa7, 0x72, 0x6b, 0x8f, 0x89, 0xbb, 0xf4, 0x21, 0x7d, 0x30, 0x80, 0xae,
0x03, 0xf1, 0x04, 0xa9, 0x8c, 0x87, 0xa7, 0x50, 0xfe, 0x0d, 0x38, 0xfb, 0x22, 0x47, 0x39, 0x75,
0xf0, 0xac, 0x10, 0x7c, 0x55, 0xd1, 0x61, 0x99, 0x48, 0x65, 0xe4, 0x21, 0x34, 0x79, 0xa1, 0x9c,
0x95, 0x75, 0xfb, 0xd8, 0x54, 0xd6, 0x0f, 0x93, 0xb2, 0x5b, 0x33, 0xd7, 0xe0, 0xd7, 0x1a, 0x74,
0x96, 0xcc, 0x47, 0xd6, 0x30, 0x84, 0x86, 0x44, 0x8e, 0x54, 0xa1, 0x99, 0x60, 0x93, 0xee, 0xf6,
0x49, 0xd3, 0xf5, 0x42, 0xe7, 0xf8, 0x20, 0xd5, 0x72, 0x1a, 0x56, 0x71, 0xc8, 0x27, 0xb0, 0xc2,
0xa9, 0x46, 0xa5, 0x8b, 0x1a, 0xb7, 0x6e, 0x7d, 0xf0, 0xba, 0xb9, 0x70, 0x81, 0x42, 0xe7, 0xb6,
0x99, 0x40, 0x7b, 0x21, 0x36, 0xe9, 0x42, 0x7d, 0x84, 0x53, 0x07, 0xdc, 0x7c, 0x92, 0xbb, 0x70,
0x76, 0x42, 0x79, 0x8e, 0x6e, 0xed, 0x4e, 0x9c, 0xc2, 0x7a, 0xdd, 0xa9, 0x7d, 0xec, 0x05, 0x7f,
0xd6, 0xe1, 0xdc, 0xa2, 0x95, 0x5c, 0x84, 0x15, 0x9a, 0xeb, 0xa1, 0x90, 0x2e, 0x95, 0x93, 0xe6,
0x77, 0xa5, 0xb6, 0xb0, 0x2b, 0xe4, 0x2a, 0xc0, 0x98, 0xb2, 0x54, 0x53, 0x96, 0xa2, 0x74, 0x33,
0x35, 0xa7, 0x21, 0x9b, 0xd0, 0x50, 0x98, 0x6a, 0x34, 0x93, 0x73, 0xa6, 0xb0, 0x56, 0x32, 0x79,
0x07, 0x9a, 0x19, 0x95, 0x74, 0x20, 0x69, 0x36, 0xf4, 0xcf, 0x16, 0xc6, 0x99, 0xc2, 0xe4, 0x7c,
0x89, 0x7d, 0xc5, 0x34, 0xfa, 0x2b, 0x36, 0xa7, 0x13, 0x4d, 0xcc, 0x98, 0x6a, 0x1c, 0x08, 0x39,
0xf5, 0x57, 0x6d, 0xcc, 0x52, 0x26, 0xef, 0x41, 0xdb, 0x34, 0x89, 0x69, 0x8c, 0x75, 0x2e, 0x51,
0xf9, 0x8d, 0xad, 0xfa, 0x76, 0x33, 0x5c, 0x54, 0x9a, 0x81, 0xd4, 0xd3, 0x0c, 0x95, 0xdf, 0x2c,
0xac, 0x56, 0x20, 0x9f, 0x43, 0x53, 0xa2, 0x12, 0xb9, 0x8c, 0x51, 0xf9, 0x70, 0x42, 0x6a, 0x0c,
0x9d, 0x47, 0x38, 0xf3, 0x35, 0xd0, 0x39, 0x8b, 0x31, 0x55, 0xe8, 0xb7, 0x2c, 0x74, 0x27, 0x92,
0x1b, 0xb0, 0x9e, 0x49, 0x31, 0x61, 0x09, 0xaa, 0x88, 0xa5, 0x31, 0xcf, 0x13, 0x54, 0xfe, 0x5a,
0x01, 0xa2, 0x5b, 0x1a, 0x1e, 0x39, 0x3d, 0x79, 0xbc, 0xc4, 0x32, 0xed, 0x62, 0x3e, 0x77, 0x4e,
0xce, 0x32, 0x4b, 0xfc, 0xf2, 0xbc, 0x5a, 0xb8, 0xd9, 0x91, 0x23, 0x97, 0xe2, 0x26, 0x10, 0xd7,
0xdf, 0x28, 0x16, 0xa9, 0xd2, 0xd2, 0xf4, 0xd3, 0x75, 0x7e, 0xdd, 0x59, 0x3e, 0xab, 0x0c, 0xc1,
0x2f, 0x1e, 0x74, 0x97, 0xcb, 0x61, 0x46, 0x36, 0x97, 0xbc, 0x1c, 0xd9, 0x5c, 0x72, 0x43, 0x57,
0x45, 0x17, 0x26, 0x78, 0xc0, 0x38, 0xce, 0xf1, 0xf1, 0xb2, 0xba, 0x68, 0xf0, 0x10, 0xe3, 0x91,
0xca, 0xc7, 0x6e, 0xa4, 0x2a, 0xd9, 0xe0, 0x55, 0xec, 0x1b, 0x3b, 0x4c, 0xf5, 0xb0, 0xf8, 0x36,
0x83, 0x14, 0xd3, 0x78, 0x88, 0x19, 0xd5, 0xd5, 0x20, 0x55, 0x8a, 0xe0, 0xdb, 0x6a, 0xcc, 0xf7,
0x98, 0xd2, 0xa7, 0x40, 0x67, 0x5d, 0xa8, 0x53, 0xce, 0x0b, 0xf0, 0x8d, 0xd0, 0x7c, 0x1a, 0x00,
0x79, 0x96, 0x50, 0x4d, 0xfb, 0x1c, 0x0b, 0xc4, 0x8d, 0x70, 0xa6, 0x08, 0x18, 0x74, 0x16, 0x00,
0xa8, 0x8c, 0x3c, 0x87, 0x75, 0x56, 0x32, 0x6e, 0x64, 0x59, 0x6b, 0xea, 0xe8, 0xee, 0xfa, 0xab,
0xa1, 0x18, 0x8f, 0x72, 0x6b, 0xbb, 0x6c, 0x49, 0x13, 0xfc, 0xec, 0x41, 0x77, 0xf9, 0x18, 0xb9,
0x63, 0xc6, 0xb1, 0x4c, 0x61, 0x6e, 0xbb, 0xf5, 0x5a, 0xb6, 0x28, 0x1d, 0xc8, 0x3d, 0x58, 0x75,
0xbc, 0xf6, 0x77, 0x99, 0xa6, 0xf4, 0x0b, 0x7e, 0x5b, 0x81, 0xd5, 0x57, 0x51, 0xf0, 0x8c, 0x74,
0x6a, 0x0b, 0xa4, 0xf3, 0x7f, 0xa2, 0x96, 0x6b, 0xd0, 0x72, 0xbd, 0x8a, 0x12, 0x26, 0x0b, 0x72,
0x69, 0x86, 0xe0, 0x54, 0xf7, 0x99, 0x24, 0x57, 0x00, 0xec, 0xe2, 0x14, 0x76, 0xcb, 0x1a, 0x4d,
0xab, 0x31, 0xe6, 0x6b, 0xd0, 0xca, 0x35, 0xe3, 0x4c, 0x4f, 0x0b, 0xfb, 0x9a, 0xf5, 0x77, 0x2a,
0x73, 0x60, 0x13, 0x1a, 0x5c, 0xc4, 0x54, 0x1b, 0x8a, 0x6e, 0x5b, 0xe0, 0xa5, 0x6c, 0xd6, 0x39,
0x16, 0xae, 0x6a, 0x51, 0xc6, 0xa9, 0x3e, 0x10, 0x72, 0xec, 0x9f, 0xb3, 0xeb, 0x5c, 0x59, 0xf6,
0x9d, 0xc1, 0xf4, 0x83, 0xd3, 0xa9, 0xc8, 0xb5, 0xdf, 0xb1, 0xfd, 0xb0, 0x12, 0xb9, 0x6c, 0xe8,
0x91, 0xf2, 0xa8, 0x68, 0x60, 0xd7, 0xe6, 0x30, 0x8a, 0xc7, 0xa6, 0x89, 0x01, 0xb4, 0x13, 0xa1,
0x23, 0x1a, 0x71, 0x96, 0x8e, 0xe8, 0x00, 0xfd, 0xf5, 0x62, 0x0b, 0x5a, 0x89, 0xd0, 0xf7, 0xf6,
0xac, 0x8a, 0x6c, 0x41, 0x2b, 0x93, 0x18, 0x8b, 0x71, 0xc6, 0xcc, 0x0f, 0x10, 0x62, 0x4f, 0xcc,
0xa9, 0xc8, 0xdb, 0xd0, 0xe0, 0x49, 0x74, 0xc0, 0xe9, 0x40, 0xf9, 0xe7, 0x1d, 0x73, 0x26, 0x0f,
0x8d, 0x68, 0xb2, 0x33, 0x15, 0x71, 0x1c, 0xd0, 0x78, 0xea, 0x6f, 0x14, 0xae, 0x0d, 0xa6, 0xf6,
0x0a, 0x79, 0xfe, 0x7d, 0xba, 0xb0, 0xf8, 0x3e, 0xcd, 0x51, 0xf1, 0xc5, 0x45, 0x2a, 0xde, 0x07,
0xc8, 0xa4, 0xc8, 0x50, 0x6a, 0xc3, 0xad, 0x97, 0x4e, 0xf6, 0x0b, 0xae, 0xb7, 0x5f, 0xb9, 0xd8,
0x57, 0x7f, 0x2e, 0xc6, 0xe6, 0x5d, 0xe8, 0x2c, 0x99, 0x8f, 0x78, 0xb8, 0x37, 0xe6, 0x1f, 0xee,
0xe6, 0xdc, 0x7b, 0xbc, 0x73, 0x1b, 0xda, 0x25, 0x4d, 0xd8, 0x82, 0x77, 0xa0, 0x75, 0xc0, 0xa9,
0x8e, 0x6c, 0xfd, 0xbb, 0x6f, 0x91, 0x0d, 0xe8, 0x4a, 0x8c, 0x73, 0xa9, 0xd8, 0x04, 0x4b, 0xad,
0xb7, 0x33, 0x47, 0x2f, 0x65, 0xc7, 0x3b, 0xd0, 0x62, 0x09, 0x46, 0xfd, 0x9c, 0x71, 0xcd, 0x52,
0xeb, 0x59, 0x36, 0xbe, 0xd2, 0x7a, 0xe4, 0x1a, 0x5c, 0x96, 0x78, 0x80, 0xd2, 0xac, 0x4c, 0x12,
0x1d, 0x3a, 0x50, 0x23, 0xe7, 0x00, 0xd4, 0x08, 0x75, 0x3c, 0xec, 0x0b, 0x31, 0xea, 0xd6, 0x3f,
0xbd, 0xf9, 0xe5, 0x8d, 0x01, 0xd3, 0xc3, 0xbc, 0x6f, 0x0a, 0xb3, 0xeb, 0x0a, 0x55, 0xfe, 0xbd,
0x19, 0x73, 0xb6, 0x2b, 0xb3, 0x78, 0xb7, 0x2c, 0x5a, 0x7f, 0xa5, 0xf8, 0xd7, 0xfe, 0xa3, 0xbf,
0x02, 0x00, 0x00, 0xff, 0xff, 0x02, 0x41, 0xe8, 0x67, 0x20, 0x10, 0x00, 0x00,
}
......@@ -103,6 +103,14 @@ message LibraryRelease {
repeated string architectures = 8;
repeated string types = 9;
DownloadResource resources = 10;
string license = 11;
repeated string provides_includes = 12;
repeated LibraryDependency dependencies = 13;
}
message LibraryDependency {
string name = 1;
string version_constraint = 2;
}
message DownloadResource {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment