controller: strongly type the controller api

Strongly typing the API allows us to perform all command line parsing
fully on the client-side, where we have access to the client local
directory and all the client environment variables, which may not be
available on the remote server.

Additionally, the controller api starts to look a lot like
build.Options, so at some point in the future there may be an
oppportunity to merge the two, which would allow both build and bake to
execute through the controller, instead of needing to maintain multiple
code paths.

Signed-off-by: Justin Chadwell <me@jedevc.com>
This commit is contained in:
Justin Chadwell
2023-02-09 12:03:58 +00:00
parent c4ad930e2a
commit 90d7fb5e77
15 changed files with 842 additions and 470 deletions

View File

@ -72,35 +72,34 @@ func (m *BuildRequest) GetOptions() *BuildOptions {
}
type BuildOptions struct {
ContextPath string `protobuf:"bytes,1,opt,name=ContextPath,proto3" json:"ContextPath,omitempty"`
DockerfileName string `protobuf:"bytes,2,opt,name=DockerfileName,proto3" json:"DockerfileName,omitempty"`
PrintFunc string `protobuf:"bytes,3,opt,name=PrintFunc,proto3" json:"PrintFunc,omitempty"`
Allow []string `protobuf:"bytes,4,rep,name=Allow,proto3" json:"Allow,omitempty"`
Attests []string `protobuf:"bytes,5,rep,name=Attests,proto3" json:"Attests,omitempty"`
BuildArgs []string `protobuf:"bytes,6,rep,name=BuildArgs,proto3" json:"BuildArgs,omitempty"`
CacheFrom []string `protobuf:"bytes,7,rep,name=CacheFrom,proto3" json:"CacheFrom,omitempty"`
CacheTo []string `protobuf:"bytes,8,rep,name=CacheTo,proto3" json:"CacheTo,omitempty"`
CgroupParent string `protobuf:"bytes,9,opt,name=CgroupParent,proto3" json:"CgroupParent,omitempty"`
Contexts []string `protobuf:"bytes,10,rep,name=Contexts,proto3" json:"Contexts,omitempty"`
ExtraHosts []string `protobuf:"bytes,11,rep,name=ExtraHosts,proto3" json:"ExtraHosts,omitempty"`
ImageIDFile string `protobuf:"bytes,12,opt,name=ImageIDFile,proto3" json:"ImageIDFile,omitempty"`
Labels []string `protobuf:"bytes,13,rep,name=Labels,proto3" json:"Labels,omitempty"`
NetworkMode string `protobuf:"bytes,14,opt,name=NetworkMode,proto3" json:"NetworkMode,omitempty"`
NoCacheFilter []string `protobuf:"bytes,15,rep,name=NoCacheFilter,proto3" json:"NoCacheFilter,omitempty"`
Outputs []string `protobuf:"bytes,16,rep,name=Outputs,proto3" json:"Outputs,omitempty"`
Platforms []string `protobuf:"bytes,17,rep,name=Platforms,proto3" json:"Platforms,omitempty"`
Quiet bool `protobuf:"varint,18,opt,name=Quiet,proto3" json:"Quiet,omitempty"`
Secrets []string `protobuf:"bytes,19,rep,name=Secrets,proto3" json:"Secrets,omitempty"`
ShmSize int64 `protobuf:"varint,20,opt,name=ShmSize,proto3" json:"ShmSize,omitempty"`
SSH []string `protobuf:"bytes,21,rep,name=SSH,proto3" json:"SSH,omitempty"`
Tags []string `protobuf:"bytes,22,rep,name=Tags,proto3" json:"Tags,omitempty"`
Target string `protobuf:"bytes,23,opt,name=Target,proto3" json:"Target,omitempty"`
Ulimits *UlimitOpt `protobuf:"bytes,24,opt,name=Ulimits,proto3" json:"Ulimits,omitempty"`
// string Invoke: provided via Invoke API
Opts *CommonOptions `protobuf:"bytes,25,opt,name=Opts,proto3" json:"Opts,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
ContextPath string `protobuf:"bytes,1,opt,name=ContextPath,proto3" json:"ContextPath,omitempty"`
DockerfileName string `protobuf:"bytes,2,opt,name=DockerfileName,proto3" json:"DockerfileName,omitempty"`
PrintFunc string `protobuf:"bytes,3,opt,name=PrintFunc,proto3" json:"PrintFunc,omitempty"`
NamedContexts map[string]string `protobuf:"bytes,4,rep,name=NamedContexts,proto3" json:"NamedContexts,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
Allow []string `protobuf:"bytes,5,rep,name=Allow,proto3" json:"Allow,omitempty"`
Attests []string `protobuf:"bytes,6,rep,name=Attests,proto3" json:"Attests,omitempty"`
BuildArgs map[string]string `protobuf:"bytes,7,rep,name=BuildArgs,proto3" json:"BuildArgs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
CacheFrom []*CacheOptionsEntry `protobuf:"bytes,8,rep,name=CacheFrom,proto3" json:"CacheFrom,omitempty"`
CacheTo []*CacheOptionsEntry `protobuf:"bytes,9,rep,name=CacheTo,proto3" json:"CacheTo,omitempty"`
CgroupParent string `protobuf:"bytes,10,opt,name=CgroupParent,proto3" json:"CgroupParent,omitempty"`
Exports []*ExportEntry `protobuf:"bytes,11,rep,name=Exports,proto3" json:"Exports,omitempty"`
ExtraHosts []string `protobuf:"bytes,12,rep,name=ExtraHosts,proto3" json:"ExtraHosts,omitempty"`
ImageIDFile string `protobuf:"bytes,13,opt,name=ImageIDFile,proto3" json:"ImageIDFile,omitempty"`
Labels map[string]string `protobuf:"bytes,14,rep,name=Labels,proto3" json:"Labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
NetworkMode string `protobuf:"bytes,15,opt,name=NetworkMode,proto3" json:"NetworkMode,omitempty"`
NoCacheFilter []string `protobuf:"bytes,16,rep,name=NoCacheFilter,proto3" json:"NoCacheFilter,omitempty"`
Platforms []string `protobuf:"bytes,17,rep,name=Platforms,proto3" json:"Platforms,omitempty"`
Quiet bool `protobuf:"varint,18,opt,name=Quiet,proto3" json:"Quiet,omitempty"`
Secrets []*Secret `protobuf:"bytes,19,rep,name=Secrets,proto3" json:"Secrets,omitempty"`
ShmSize int64 `protobuf:"varint,20,opt,name=ShmSize,proto3" json:"ShmSize,omitempty"`
SSH []*SSH `protobuf:"bytes,21,rep,name=SSH,proto3" json:"SSH,omitempty"`
Tags []string `protobuf:"bytes,22,rep,name=Tags,proto3" json:"Tags,omitempty"`
Target string `protobuf:"bytes,23,opt,name=Target,proto3" json:"Target,omitempty"`
Ulimits *UlimitOpt `protobuf:"bytes,24,opt,name=Ulimits,proto3" json:"Ulimits,omitempty"`
Opts *CommonOptions `protobuf:"bytes,25,opt,name=Opts,proto3" json:"Opts,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *BuildOptions) Reset() { *m = BuildOptions{} }
@ -148,6 +147,13 @@ func (m *BuildOptions) GetPrintFunc() string {
return ""
}
func (m *BuildOptions) GetNamedContexts() map[string]string {
if m != nil {
return m.NamedContexts
}
return nil
}
func (m *BuildOptions) GetAllow() []string {
if m != nil {
return m.Allow
@ -162,21 +168,21 @@ func (m *BuildOptions) GetAttests() []string {
return nil
}
func (m *BuildOptions) GetBuildArgs() []string {
func (m *BuildOptions) GetBuildArgs() map[string]string {
if m != nil {
return m.BuildArgs
}
return nil
}
func (m *BuildOptions) GetCacheFrom() []string {
func (m *BuildOptions) GetCacheFrom() []*CacheOptionsEntry {
if m != nil {
return m.CacheFrom
}
return nil
}
func (m *BuildOptions) GetCacheTo() []string {
func (m *BuildOptions) GetCacheTo() []*CacheOptionsEntry {
if m != nil {
return m.CacheTo
}
@ -190,9 +196,9 @@ func (m *BuildOptions) GetCgroupParent() string {
return ""
}
func (m *BuildOptions) GetContexts() []string {
func (m *BuildOptions) GetExports() []*ExportEntry {
if m != nil {
return m.Contexts
return m.Exports
}
return nil
}
@ -211,7 +217,7 @@ func (m *BuildOptions) GetImageIDFile() string {
return ""
}
func (m *BuildOptions) GetLabels() []string {
func (m *BuildOptions) GetLabels() map[string]string {
if m != nil {
return m.Labels
}
@ -232,13 +238,6 @@ func (m *BuildOptions) GetNoCacheFilter() []string {
return nil
}
func (m *BuildOptions) GetOutputs() []string {
if m != nil {
return m.Outputs
}
return nil
}
func (m *BuildOptions) GetPlatforms() []string {
if m != nil {
return m.Platforms
@ -253,7 +252,7 @@ func (m *BuildOptions) GetQuiet() bool {
return false
}
func (m *BuildOptions) GetSecrets() []string {
func (m *BuildOptions) GetSecrets() []*Secret {
if m != nil {
return m.Secrets
}
@ -267,7 +266,7 @@ func (m *BuildOptions) GetShmSize() int64 {
return 0
}
func (m *BuildOptions) GetSSH() []string {
func (m *BuildOptions) GetSSH() []*SSH {
if m != nil {
return m.SSH
}
@ -302,6 +301,206 @@ func (m *BuildOptions) GetOpts() *CommonOptions {
return nil
}
type ExportEntry struct {
Type string `protobuf:"bytes,1,opt,name=Type,proto3" json:"Type,omitempty"`
Attrs map[string]string `protobuf:"bytes,2,rep,name=Attrs,proto3" json:"Attrs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
Destination string `protobuf:"bytes,3,opt,name=Destination,proto3" json:"Destination,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ExportEntry) Reset() { *m = ExportEntry{} }
func (m *ExportEntry) String() string { return proto.CompactTextString(m) }
func (*ExportEntry) ProtoMessage() {}
func (*ExportEntry) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{2}
}
func (m *ExportEntry) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ExportEntry.Unmarshal(m, b)
}
func (m *ExportEntry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ExportEntry.Marshal(b, m, deterministic)
}
func (m *ExportEntry) XXX_Merge(src proto.Message) {
xxx_messageInfo_ExportEntry.Merge(m, src)
}
func (m *ExportEntry) XXX_Size() int {
return xxx_messageInfo_ExportEntry.Size(m)
}
func (m *ExportEntry) XXX_DiscardUnknown() {
xxx_messageInfo_ExportEntry.DiscardUnknown(m)
}
var xxx_messageInfo_ExportEntry proto.InternalMessageInfo
func (m *ExportEntry) GetType() string {
if m != nil {
return m.Type
}
return ""
}
func (m *ExportEntry) GetAttrs() map[string]string {
if m != nil {
return m.Attrs
}
return nil
}
func (m *ExportEntry) GetDestination() string {
if m != nil {
return m.Destination
}
return ""
}
type CacheOptionsEntry struct {
Type string `protobuf:"bytes,1,opt,name=Type,proto3" json:"Type,omitempty"`
Attrs map[string]string `protobuf:"bytes,2,rep,name=Attrs,proto3" json:"Attrs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *CacheOptionsEntry) Reset() { *m = CacheOptionsEntry{} }
func (m *CacheOptionsEntry) String() string { return proto.CompactTextString(m) }
func (*CacheOptionsEntry) ProtoMessage() {}
func (*CacheOptionsEntry) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{3}
}
func (m *CacheOptionsEntry) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CacheOptionsEntry.Unmarshal(m, b)
}
func (m *CacheOptionsEntry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_CacheOptionsEntry.Marshal(b, m, deterministic)
}
func (m *CacheOptionsEntry) XXX_Merge(src proto.Message) {
xxx_messageInfo_CacheOptionsEntry.Merge(m, src)
}
func (m *CacheOptionsEntry) XXX_Size() int {
return xxx_messageInfo_CacheOptionsEntry.Size(m)
}
func (m *CacheOptionsEntry) XXX_DiscardUnknown() {
xxx_messageInfo_CacheOptionsEntry.DiscardUnknown(m)
}
var xxx_messageInfo_CacheOptionsEntry proto.InternalMessageInfo
func (m *CacheOptionsEntry) GetType() string {
if m != nil {
return m.Type
}
return ""
}
func (m *CacheOptionsEntry) GetAttrs() map[string]string {
if m != nil {
return m.Attrs
}
return nil
}
type SSH struct {
ID string `protobuf:"bytes,1,opt,name=ID,proto3" json:"ID,omitempty"`
Paths []string `protobuf:"bytes,2,rep,name=Paths,proto3" json:"Paths,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *SSH) Reset() { *m = SSH{} }
func (m *SSH) String() string { return proto.CompactTextString(m) }
func (*SSH) ProtoMessage() {}
func (*SSH) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{4}
}
func (m *SSH) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SSH.Unmarshal(m, b)
}
func (m *SSH) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_SSH.Marshal(b, m, deterministic)
}
func (m *SSH) XXX_Merge(src proto.Message) {
xxx_messageInfo_SSH.Merge(m, src)
}
func (m *SSH) XXX_Size() int {
return xxx_messageInfo_SSH.Size(m)
}
func (m *SSH) XXX_DiscardUnknown() {
xxx_messageInfo_SSH.DiscardUnknown(m)
}
var xxx_messageInfo_SSH proto.InternalMessageInfo
func (m *SSH) GetID() string {
if m != nil {
return m.ID
}
return ""
}
func (m *SSH) GetPaths() []string {
if m != nil {
return m.Paths
}
return nil
}
type Secret struct {
ID string `protobuf:"bytes,1,opt,name=ID,proto3" json:"ID,omitempty"`
FilePath string `protobuf:"bytes,2,opt,name=FilePath,proto3" json:"FilePath,omitempty"`
Env string `protobuf:"bytes,3,opt,name=Env,proto3" json:"Env,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Secret) Reset() { *m = Secret{} }
func (m *Secret) String() string { return proto.CompactTextString(m) }
func (*Secret) ProtoMessage() {}
func (*Secret) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{5}
}
func (m *Secret) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Secret.Unmarshal(m, b)
}
func (m *Secret) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Secret.Marshal(b, m, deterministic)
}
func (m *Secret) XXX_Merge(src proto.Message) {
xxx_messageInfo_Secret.Merge(m, src)
}
func (m *Secret) XXX_Size() int {
return xxx_messageInfo_Secret.Size(m)
}
func (m *Secret) XXX_DiscardUnknown() {
xxx_messageInfo_Secret.DiscardUnknown(m)
}
var xxx_messageInfo_Secret proto.InternalMessageInfo
func (m *Secret) GetID() string {
if m != nil {
return m.ID
}
return ""
}
func (m *Secret) GetFilePath() string {
if m != nil {
return m.FilePath
}
return ""
}
func (m *Secret) GetEnv() string {
if m != nil {
return m.Env
}
return ""
}
type UlimitOpt struct {
Values map[string]*Ulimit `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
@ -313,7 +512,7 @@ func (m *UlimitOpt) Reset() { *m = UlimitOpt{} }
func (m *UlimitOpt) String() string { return proto.CompactTextString(m) }
func (*UlimitOpt) ProtoMessage() {}
func (*UlimitOpt) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{2}
return fileDescriptor_ed7f10298fa1d90f, []int{6}
}
func (m *UlimitOpt) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UlimitOpt.Unmarshal(m, b)
@ -353,7 +552,7 @@ func (m *Ulimit) Reset() { *m = Ulimit{} }
func (m *Ulimit) String() string { return proto.CompactTextString(m) }
func (*Ulimit) ProtoMessage() {}
func (*Ulimit) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{3}
return fileDescriptor_ed7f10298fa1d90f, []int{7}
}
func (m *Ulimit) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Ulimit.Unmarshal(m, b)
@ -413,7 +612,7 @@ func (m *CommonOptions) Reset() { *m = CommonOptions{} }
func (m *CommonOptions) String() string { return proto.CompactTextString(m) }
func (*CommonOptions) ProtoMessage() {}
func (*CommonOptions) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{4}
return fileDescriptor_ed7f10298fa1d90f, []int{8}
}
func (m *CommonOptions) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CommonOptions.Unmarshal(m, b)
@ -499,7 +698,7 @@ func (m *BuildResponse) Reset() { *m = BuildResponse{} }
func (m *BuildResponse) String() string { return proto.CompactTextString(m) }
func (*BuildResponse) ProtoMessage() {}
func (*BuildResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{5}
return fileDescriptor_ed7f10298fa1d90f, []int{9}
}
func (m *BuildResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_BuildResponse.Unmarshal(m, b)
@ -530,7 +729,7 @@ func (m *DisconnectRequest) Reset() { *m = DisconnectRequest{} }
func (m *DisconnectRequest) String() string { return proto.CompactTextString(m) }
func (*DisconnectRequest) ProtoMessage() {}
func (*DisconnectRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{6}
return fileDescriptor_ed7f10298fa1d90f, []int{10}
}
func (m *DisconnectRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DisconnectRequest.Unmarshal(m, b)
@ -567,7 +766,7 @@ func (m *DisconnectResponse) Reset() { *m = DisconnectResponse{} }
func (m *DisconnectResponse) String() string { return proto.CompactTextString(m) }
func (*DisconnectResponse) ProtoMessage() {}
func (*DisconnectResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{7}
return fileDescriptor_ed7f10298fa1d90f, []int{11}
}
func (m *DisconnectResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DisconnectResponse.Unmarshal(m, b)
@ -598,7 +797,7 @@ func (m *ListRequest) Reset() { *m = ListRequest{} }
func (m *ListRequest) String() string { return proto.CompactTextString(m) }
func (*ListRequest) ProtoMessage() {}
func (*ListRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{8}
return fileDescriptor_ed7f10298fa1d90f, []int{12}
}
func (m *ListRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ListRequest.Unmarshal(m, b)
@ -636,7 +835,7 @@ func (m *ListResponse) Reset() { *m = ListResponse{} }
func (m *ListResponse) String() string { return proto.CompactTextString(m) }
func (*ListResponse) ProtoMessage() {}
func (*ListResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{9}
return fileDescriptor_ed7f10298fa1d90f, []int{13}
}
func (m *ListResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ListResponse.Unmarshal(m, b)
@ -677,7 +876,7 @@ func (m *InputMessage) Reset() { *m = InputMessage{} }
func (m *InputMessage) String() string { return proto.CompactTextString(m) }
func (*InputMessage) ProtoMessage() {}
func (*InputMessage) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{10}
return fileDescriptor_ed7f10298fa1d90f, []int{14}
}
func (m *InputMessage) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InputMessage.Unmarshal(m, b)
@ -751,7 +950,7 @@ func (m *InputInitMessage) Reset() { *m = InputInitMessage{} }
func (m *InputInitMessage) String() string { return proto.CompactTextString(m) }
func (*InputInitMessage) ProtoMessage() {}
func (*InputInitMessage) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{11}
return fileDescriptor_ed7f10298fa1d90f, []int{15}
}
func (m *InputInitMessage) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InputInitMessage.Unmarshal(m, b)
@ -790,7 +989,7 @@ func (m *DataMessage) Reset() { *m = DataMessage{} }
func (m *DataMessage) String() string { return proto.CompactTextString(m) }
func (*DataMessage) ProtoMessage() {}
func (*DataMessage) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{12}
return fileDescriptor_ed7f10298fa1d90f, []int{16}
}
func (m *DataMessage) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DataMessage.Unmarshal(m, b)
@ -834,7 +1033,7 @@ func (m *InputResponse) Reset() { *m = InputResponse{} }
func (m *InputResponse) String() string { return proto.CompactTextString(m) }
func (*InputResponse) ProtoMessage() {}
func (*InputResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{13}
return fileDescriptor_ed7f10298fa1d90f, []int{17}
}
func (m *InputResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InputResponse.Unmarshal(m, b)
@ -870,7 +1069,7 @@ func (m *Message) Reset() { *m = Message{} }
func (m *Message) String() string { return proto.CompactTextString(m) }
func (*Message) ProtoMessage() {}
func (*Message) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{14}
return fileDescriptor_ed7f10298fa1d90f, []int{18}
}
func (m *Message) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Message.Unmarshal(m, b)
@ -969,7 +1168,7 @@ func (m *InitMessage) Reset() { *m = InitMessage{} }
func (m *InitMessage) String() string { return proto.CompactTextString(m) }
func (*InitMessage) ProtoMessage() {}
func (*InitMessage) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{15}
return fileDescriptor_ed7f10298fa1d90f, []int{19}
}
func (m *InitMessage) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InitMessage.Unmarshal(m, b)
@ -1021,7 +1220,7 @@ func (m *ContainerConfig) Reset() { *m = ContainerConfig{} }
func (m *ContainerConfig) String() string { return proto.CompactTextString(m) }
func (*ContainerConfig) ProtoMessage() {}
func (*ContainerConfig) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{16}
return fileDescriptor_ed7f10298fa1d90f, []int{20}
}
func (m *ContainerConfig) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ContainerConfig.Unmarshal(m, b)
@ -1110,7 +1309,7 @@ func (m *FdMessage) Reset() { *m = FdMessage{} }
func (m *FdMessage) String() string { return proto.CompactTextString(m) }
func (*FdMessage) ProtoMessage() {}
func (*FdMessage) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{17}
return fileDescriptor_ed7f10298fa1d90f, []int{21}
}
func (m *FdMessage) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FdMessage.Unmarshal(m, b)
@ -1163,7 +1362,7 @@ func (m *ResizeMessage) Reset() { *m = ResizeMessage{} }
func (m *ResizeMessage) String() string { return proto.CompactTextString(m) }
func (*ResizeMessage) ProtoMessage() {}
func (*ResizeMessage) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{18}
return fileDescriptor_ed7f10298fa1d90f, []int{22}
}
func (m *ResizeMessage) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ResizeMessage.Unmarshal(m, b)
@ -1210,7 +1409,7 @@ func (m *SignalMessage) Reset() { *m = SignalMessage{} }
func (m *SignalMessage) String() string { return proto.CompactTextString(m) }
func (*SignalMessage) ProtoMessage() {}
func (*SignalMessage) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{19}
return fileDescriptor_ed7f10298fa1d90f, []int{23}
}
func (m *SignalMessage) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalMessage.Unmarshal(m, b)
@ -1248,7 +1447,7 @@ func (m *StatusRequest) Reset() { *m = StatusRequest{} }
func (m *StatusRequest) String() string { return proto.CompactTextString(m) }
func (*StatusRequest) ProtoMessage() {}
func (*StatusRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{20}
return fileDescriptor_ed7f10298fa1d90f, []int{24}
}
func (m *StatusRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_StatusRequest.Unmarshal(m, b)
@ -1289,7 +1488,7 @@ func (m *StatusResponse) Reset() { *m = StatusResponse{} }
func (m *StatusResponse) String() string { return proto.CompactTextString(m) }
func (*StatusResponse) ProtoMessage() {}
func (*StatusResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{21}
return fileDescriptor_ed7f10298fa1d90f, []int{25}
}
func (m *StatusResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_StatusResponse.Unmarshal(m, b)
@ -1347,7 +1546,7 @@ func (m *InfoRequest) Reset() { *m = InfoRequest{} }
func (m *InfoRequest) String() string { return proto.CompactTextString(m) }
func (*InfoRequest) ProtoMessage() {}
func (*InfoRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{22}
return fileDescriptor_ed7f10298fa1d90f, []int{26}
}
func (m *InfoRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InfoRequest.Unmarshal(m, b)
@ -1378,7 +1577,7 @@ func (m *InfoResponse) Reset() { *m = InfoResponse{} }
func (m *InfoResponse) String() string { return proto.CompactTextString(m) }
func (*InfoResponse) ProtoMessage() {}
func (*InfoResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{23}
return fileDescriptor_ed7f10298fa1d90f, []int{27}
}
func (m *InfoResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InfoResponse.Unmarshal(m, b)
@ -1418,7 +1617,7 @@ func (m *BuildxVersion) Reset() { *m = BuildxVersion{} }
func (m *BuildxVersion) String() string { return proto.CompactTextString(m) }
func (*BuildxVersion) ProtoMessage() {}
func (*BuildxVersion) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{24}
return fileDescriptor_ed7f10298fa1d90f, []int{28}
}
func (m *BuildxVersion) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_BuildxVersion.Unmarshal(m, b)
@ -1462,6 +1661,15 @@ func (m *BuildxVersion) GetRevision() string {
func init() {
proto.RegisterType((*BuildRequest)(nil), "buildx.controller.v1.BuildRequest")
proto.RegisterType((*BuildOptions)(nil), "buildx.controller.v1.BuildOptions")
proto.RegisterMapType((map[string]string)(nil), "buildx.controller.v1.BuildOptions.BuildArgsEntry")
proto.RegisterMapType((map[string]string)(nil), "buildx.controller.v1.BuildOptions.LabelsEntry")
proto.RegisterMapType((map[string]string)(nil), "buildx.controller.v1.BuildOptions.NamedContextsEntry")
proto.RegisterType((*ExportEntry)(nil), "buildx.controller.v1.ExportEntry")
proto.RegisterMapType((map[string]string)(nil), "buildx.controller.v1.ExportEntry.AttrsEntry")
proto.RegisterType((*CacheOptionsEntry)(nil), "buildx.controller.v1.CacheOptionsEntry")
proto.RegisterMapType((map[string]string)(nil), "buildx.controller.v1.CacheOptionsEntry.AttrsEntry")
proto.RegisterType((*SSH)(nil), "buildx.controller.v1.SSH")
proto.RegisterType((*Secret)(nil), "buildx.controller.v1.Secret")
proto.RegisterType((*UlimitOpt)(nil), "buildx.controller.v1.UlimitOpt")
proto.RegisterMapType((map[string]*Ulimit)(nil), "buildx.controller.v1.UlimitOpt.ValuesEntry")
proto.RegisterType((*Ulimit)(nil), "buildx.controller.v1.Ulimit")
@ -1491,97 +1699,111 @@ func init() {
func init() { proto.RegisterFile("controller.proto", fileDescriptor_ed7f10298fa1d90f) }
var fileDescriptor_ed7f10298fa1d90f = []byte{
// 1436 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x57, 0xdd, 0x52, 0x1b, 0xc7,
0x12, 0x3e, 0x8b, 0x84, 0x7e, 0x5a, 0x08, 0xe3, 0x39, 0x1c, 0x9f, 0x39, 0x3a, 0x8e, 0x8d, 0x17,
0xdb, 0x51, 0x55, 0xaa, 0x84, 0x83, 0x93, 0x72, 0x62, 0x3b, 0x17, 0x20, 0xa0, 0x20, 0xc5, 0x5f,
0x16, 0x6c, 0x57, 0x72, 0x11, 0xd7, 0x22, 0x0d, 0x62, 0x4b, 0xab, 0x1d, 0x65, 0x67, 0x24, 0x20,
0x57, 0x79, 0x82, 0x5c, 0xe4, 0x2d, 0xf2, 0x0c, 0x79, 0x8d, 0xbc, 0x47, 0xf2, 0x08, 0xa9, 0xee,
0x99, 0x5d, 0x56, 0x58, 0x2b, 0x5f, 0x69, 0xfa, 0x9b, 0xef, 0xeb, 0x99, 0xee, 0xe9, 0xe9, 0x59,
0xc1, 0x52, 0x47, 0x46, 0x3a, 0x96, 0x61, 0x28, 0xe2, 0xd6, 0x30, 0x96, 0x5a, 0xb2, 0xe5, 0xb3,
0x51, 0x10, 0x76, 0xaf, 0x5a, 0x99, 0x89, 0xf1, 0xe7, 0x8d, 0x57, 0xbd, 0x40, 0x5f, 0x8c, 0xce,
0x5a, 0x1d, 0x39, 0x58, 0x1b, 0xc8, 0xb3, 0xeb, 0x35, 0x62, 0xf5, 0x03, 0xbd, 0xe6, 0x0f, 0x83,
0x35, 0x25, 0xe2, 0x71, 0xd0, 0x11, 0x6a, 0xcd, 0x8a, 0x92, 0x5f, 0xe3, 0xd2, 0xfd, 0x11, 0x16,
0x36, 0x91, 0xee, 0x89, 0x9f, 0x46, 0x42, 0x69, 0xb6, 0x04, 0x05, 0x4f, 0x9c, 0x73, 0x67, 0xc5,
0x69, 0x56, 0x3d, 0x1c, 0xb2, 0xd7, 0x50, 0x3e, 0x1a, 0xea, 0x40, 0x46, 0x8a, 0xcf, 0xad, 0x38,
0xcd, 0xda, 0xba, 0xdb, 0x9a, 0xb6, 0x8d, 0x16, 0xb9, 0xb1, 0x4c, 0x2f, 0x91, 0xb8, 0xbf, 0x95,
0xec, 0x02, 0x16, 0x60, 0x2b, 0x50, 0x6b, 0xcb, 0x48, 0x8b, 0x2b, 0x7d, 0xec, 0xeb, 0x0b, 0xbb,
0x50, 0x16, 0x62, 0x4f, 0x61, 0x71, 0x4b, 0x76, 0xfa, 0x22, 0x3e, 0x0f, 0x42, 0x71, 0xe8, 0x0f,
0x04, 0xad, 0x5b, 0xf5, 0x6e, 0xa1, 0xec, 0x3e, 0x54, 0x8f, 0xe3, 0x20, 0xd2, 0x3b, 0xa3, 0xa8,
0xc3, 0x0b, 0x44, 0xb9, 0x01, 0xd8, 0x32, 0xcc, 0x6f, 0x84, 0xa1, 0xbc, 0xe4, 0xc5, 0x95, 0x42,
0xb3, 0xea, 0x19, 0x83, 0x71, 0x28, 0x6f, 0x68, 0x2d, 0x94, 0x56, 0x7c, 0x9e, 0xf0, 0xc4, 0x44,
0x6f, 0xb4, 0xcf, 0x8d, 0xb8, 0xa7, 0x78, 0x89, 0xe6, 0x6e, 0x00, 0x9c, 0x6d, 0xfb, 0x9d, 0x0b,
0xb1, 0x13, 0xcb, 0x01, 0x2f, 0x9b, 0xd9, 0x14, 0x40, 0xaf, 0x64, 0x9c, 0x4a, 0x5e, 0x31, 0x5e,
0xad, 0xc9, 0x5c, 0x58, 0x68, 0xf7, 0x62, 0x39, 0x1a, 0x1e, 0xfb, 0xb1, 0x88, 0x34, 0xaf, 0xd2,
0x36, 0x27, 0x30, 0xd6, 0x80, 0x8a, 0x0d, 0x5f, 0x71, 0x20, 0x79, 0x6a, 0xb3, 0x07, 0x00, 0xdb,
0x57, 0x3a, 0xf6, 0x77, 0x25, 0x6e, 0xb9, 0x46, 0xb3, 0x19, 0x04, 0xb3, 0xb9, 0x37, 0xf0, 0x7b,
0x62, 0x6f, 0x6b, 0x27, 0x08, 0x05, 0x5f, 0x30, 0xd9, 0xcc, 0x40, 0xec, 0x1e, 0x94, 0xf6, 0xfd,
0x33, 0x11, 0x2a, 0x5e, 0x27, 0xb5, 0xb5, 0x50, 0x79, 0x28, 0xf4, 0xa5, 0x8c, 0xfb, 0x07, 0xb2,
0x2b, 0xf8, 0xa2, 0x51, 0x66, 0x20, 0xf6, 0x18, 0xea, 0x87, 0xd2, 0x04, 0x19, 0x84, 0x5a, 0xc4,
0xfc, 0x0e, 0x39, 0x98, 0x04, 0x31, 0xf6, 0xa3, 0x91, 0x1e, 0x8e, 0xb4, 0xe2, 0x4b, 0x26, 0x76,
0x6b, 0xd2, 0xf9, 0x84, 0xbe, 0x3e, 0x97, 0xf1, 0x40, 0xf1, 0xbb, 0x26, 0x67, 0x29, 0x80, 0xe7,
0xf3, 0xdd, 0x28, 0x10, 0x9a, 0xb3, 0x15, 0xa7, 0x59, 0xf1, 0x8c, 0x81, 0xde, 0x4e, 0x44, 0x27,
0x16, 0x5a, 0xf1, 0x7f, 0x1b, 0x6f, 0xd6, 0xa4, 0x99, 0x8b, 0xc1, 0x49, 0xf0, 0xb3, 0xe0, 0xcb,
0x2b, 0x4e, 0xb3, 0xe0, 0x25, 0x26, 0x96, 0xec, 0xc9, 0xc9, 0x2e, 0xff, 0x0f, 0xf1, 0x71, 0xc8,
0x18, 0x14, 0x4f, 0xfd, 0x9e, 0xe2, 0xf7, 0x08, 0xa2, 0x31, 0xe6, 0xe1, 0xd4, 0x8f, 0x7b, 0x42,
0xf3, 0xff, 0x52, 0xa8, 0xd6, 0x62, 0x5f, 0x43, 0xf9, 0x4d, 0x18, 0x0c, 0x02, 0xad, 0x38, 0xa7,
0xf2, 0x7e, 0x38, 0xbd, 0xbc, 0x0d, 0xe9, 0x68, 0xa8, 0xbd, 0x84, 0xcf, 0x5e, 0x40, 0xf1, 0x68,
0xa8, 0x15, 0xff, 0x1f, 0xe9, 0x56, 0xa7, 0xeb, 0xda, 0x72, 0x30, 0x90, 0x51, 0x72, 0x2f, 0x48,
0xe0, 0xfe, 0xee, 0x40, 0x35, 0xf5, 0xc7, 0xda, 0x50, 0x1a, 0xfb, 0xe1, 0x48, 0x28, 0xee, 0xac,
0x14, 0x9a, 0xb5, 0xf5, 0xcf, 0x3e, 0xb2, 0x81, 0xd6, 0x5b, 0x62, 0x6f, 0x47, 0x3a, 0xbe, 0xf6,
0xac, 0xb4, 0xf1, 0x0e, 0x6a, 0x19, 0x18, 0x73, 0xd2, 0x17, 0xd7, 0xc9, 0x35, 0xee, 0x8b, 0x6b,
0xb6, 0x0e, 0xf3, 0x44, 0xb5, 0x97, 0xf8, 0xfe, 0xac, 0x45, 0x3c, 0x43, 0x7d, 0x39, 0xf7, 0x95,
0xe3, 0x6e, 0x41, 0xc9, 0x80, 0x98, 0x55, 0xba, 0x8d, 0xc6, 0x29, 0x8d, 0x11, 0xdb, 0xf5, 0xe3,
0x2e, 0x39, 0x2d, 0x78, 0x34, 0x46, 0xec, 0x44, 0x9e, 0x6b, 0xba, 0x92, 0x05, 0x8f, 0xc6, 0xee,
0x5f, 0x0e, 0xd4, 0x27, 0x32, 0x81, 0xe7, 0x49, 0xd7, 0x4b, 0xc4, 0xd6, 0x61, 0x62, 0xe2, 0x9d,
0x39, 0x10, 0xda, 0xef, 0xfa, 0xda, 0xa7, 0xa2, 0x36, 0xb7, 0x7f, 0x02, 0x43, 0xb5, 0x2d, 0x43,
0x5a, 0xa6, 0xe2, 0x25, 0x26, 0xae, 0x7e, 0x3c, 0x0a, 0x43, 0x5e, 0x24, 0x98, 0xc6, 0xe6, 0x16,
0x0d, 0x65, 0xac, 0x8f, 0x47, 0xea, 0x82, 0xcf, 0xd3, 0x4c, 0x06, 0xb9, 0x99, 0xdf, 0x97, 0x7e,
0x97, 0x97, 0xb2, 0xf3, 0x88, 0x50, 0x44, 0x9b, 0x47, 0x07, 0xbc, 0x6c, 0x22, 0xc7, 0x31, 0x6a,
0x8e, 0x63, 0x39, 0x16, 0x91, 0x1f, 0x75, 0x04, 0xaf, 0xd0, 0x4c, 0x06, 0x71, 0xef, 0x40, 0xdd,
0x36, 0x56, 0x35, 0x94, 0x91, 0x12, 0xee, 0x13, 0xb8, 0xbb, 0x15, 0xa8, 0x8e, 0x8c, 0x22, 0xd1,
0xd1, 0xb9, 0xed, 0xd6, 0x5d, 0x06, 0x96, 0xa5, 0x59, 0xf1, 0x43, 0xa8, 0xed, 0x07, 0x6a, 0x86,
0xcc, 0x85, 0x05, 0x43, 0x30, 0x02, 0xdc, 0x72, 0x5f, 0x5c, 0x9b, 0x92, 0xaa, 0x7a, 0x34, 0x76,
0x7f, 0x75, 0x60, 0x61, 0x2f, 0x1a, 0x8e, 0xf4, 0x81, 0x50, 0xca, 0xef, 0x09, 0xf6, 0x1a, 0x8a,
0x7b, 0x51, 0xa0, 0xc9, 0x4f, 0x6d, 0xfd, 0xe9, 0xf4, 0x92, 0x20, 0x05, 0xd2, 0xac, 0x6a, 0xf7,
0x5f, 0x1e, 0xa9, 0xb0, 0xfc, 0xb7, 0x7c, 0xed, 0xdb, 0x82, 0x7a, 0x34, 0x5d, 0x8d, 0x8c, 0x8c,
0x10, 0xcd, 0xcd, 0x32, 0xcc, 0x93, 0x53, 0xf7, 0x31, 0x2c, 0xdd, 0xf6, 0x3e, 0x25, 0xb4, 0xe7,
0x50, 0xcb, 0x78, 0x41, 0xc2, 0xf6, 0xd1, 0x0e, 0x11, 0x2a, 0x1e, 0x0e, 0x31, 0xd6, 0x74, 0x23,
0x0b, 0x66, 0x0d, 0x4c, 0x3f, 0xb9, 0x4e, 0x33, 0xf8, 0xcb, 0x1c, 0x94, 0x13, 0x17, 0x2f, 0x26,
0xe2, 0x7e, 0x94, 0x17, 0xf7, 0x87, 0x21, 0x7f, 0x09, 0xc5, 0xb4, 0x24, 0x73, 0x3b, 0xc5, 0x4e,
0x37, 0x23, 0xa3, 0x6a, 0xfd, 0x06, 0x4a, 0x9e, 0x50, 0xd8, 0xba, 0x0a, 0xb3, 0x5a, 0x85, 0xe1,
0xdc, 0x88, 0xad, 0x08, 0xe5, 0x27, 0x41, 0x2f, 0xf2, 0x4d, 0x51, 0xe7, 0xca, 0x0d, 0x27, 0x23,
0x37, 0xc0, 0x4d, 0xba, 0x87, 0x50, 0x9b, 0x99, 0x69, 0x76, 0x04, 0x77, 0xf0, 0xe5, 0xf1, 0x83,
0x48, 0xc4, 0x6d, 0x19, 0x9d, 0x07, 0x3d, 0x1b, 0xe9, 0x93, 0xbc, 0xde, 0x36, 0x41, 0xf6, 0x6e,
0xab, 0xdd, 0x3f, 0x9c, 0x0f, 0x3c, 0xd2, 0x65, 0xc3, 0x1e, 0x35, 0x94, 0x41, 0xa4, 0x6d, 0x7d,
0x66, 0x10, 0xdc, 0x56, 0x7b, 0x80, 0x1d, 0x85, 0xda, 0x79, 0x7b, 0xd0, 0xa5, 0x13, 0x8f, 0xc6,
0xbc, 0x60, 0x90, 0xed, 0x68, 0x8c, 0x27, 0xfe, 0x46, 0x89, 0x98, 0xf2, 0x51, 0xf5, 0x68, 0x8c,
0x0d, 0xfe, 0x50, 0x12, 0x6a, 0x2e, 0xb8, 0xb5, 0xc8, 0xdf, 0xa5, 0xb9, 0xd5, 0xe8, 0xef, 0xb2,
0x8b, 0x4f, 0xcf, 0xa1, 0x44, 0xac, 0x6c, 0x9e, 0x1e, 0x32, 0x90, 0x77, 0xaa, 0xaf, 0xe9, 0x26,
0x57, 0x3c, 0x1c, 0xba, 0x1b, 0x50, 0x4d, 0xcf, 0x92, 0x2d, 0xc2, 0xdc, 0x4e, 0x97, 0x92, 0x55,
0xf7, 0xe6, 0x76, 0xba, 0x49, 0x19, 0xce, 0x7d, 0x58, 0x86, 0x85, 0x4c, 0x19, 0xbe, 0x80, 0xfa,
0xc4, 0xa9, 0x22, 0xc9, 0x93, 0x97, 0xca, 0x3a, 0xa2, 0x31, 0x62, 0x6d, 0x19, 0x9a, 0xcf, 0xab,
0xba, 0x47, 0x63, 0x77, 0x15, 0xea, 0x13, 0xe7, 0x39, 0xad, 0xfb, 0xba, 0x8f, 0xa0, 0x7e, 0xa2,
0x7d, 0x3d, 0x52, 0xf9, 0x7d, 0xe1, 0x6f, 0x07, 0x16, 0x13, 0x8e, 0x6d, 0x0d, 0x5f, 0x40, 0x65,
0x2c, 0x62, 0x2d, 0xae, 0xd2, 0x17, 0x87, 0xb7, 0xf0, 0xbb, 0xb1, 0x95, 0x7c, 0x37, 0xe2, 0xd1,
0xbe, 0x25, 0x86, 0x97, 0x32, 0xd9, 0x4b, 0xa8, 0x28, 0xf2, 0x23, 0x14, 0x9d, 0x4d, 0x6d, 0xfd,
0x41, 0x9e, 0xca, 0xae, 0x97, 0xf2, 0xd9, 0x1a, 0x14, 0x43, 0xd9, 0x53, 0x74, 0x82, 0xb5, 0xf5,
0xff, 0xe7, 0xe9, 0xf6, 0x65, 0xcf, 0x23, 0x22, 0x7b, 0x05, 0x95, 0x4b, 0x3f, 0x8e, 0x82, 0xa8,
0xa7, 0xe8, 0xfb, 0x0d, 0xef, 0x5a, 0x8e, 0xe8, 0x9d, 0xe1, 0x79, 0xa9, 0xc0, 0xad, 0x63, 0x99,
0x9f, 0x4b, 0x9b, 0x13, 0xf7, 0x7b, 0x6c, 0x7a, 0x68, 0xda, 0xf0, 0xf7, 0xa0, 0x6e, 0x8a, 0xf9,
0xad, 0x88, 0x55, 0x20, 0x23, 0xdb, 0x05, 0x56, 0x67, 0x7c, 0xd5, 0x26, 0x54, 0x6f, 0x52, 0xe9,
0xbe, 0xb7, 0x3d, 0x3e, 0x01, 0xf0, 0x59, 0x1a, 0xfa, 0x9d, 0xbe, 0xdf, 0x4b, 0xce, 0x29, 0x31,
0x71, 0x66, 0x6c, 0xd7, 0x33, 0xef, 0x59, 0x62, 0xe2, 0xe7, 0x5f, 0x2c, 0xc6, 0x01, 0x4d, 0x99,
0xaf, 0xd8, 0xd4, 0x5e, 0xff, 0xb3, 0x08, 0xd0, 0x4e, 0xf7, 0xc3, 0x8e, 0x61, 0x9e, 0xd6, 0x63,
0xb3, 0x3e, 0xc1, 0x6d, 0xdc, 0x8d, 0xd5, 0x99, 0x1c, 0x9b, 0x8c, 0x37, 0x50, 0x32, 0xa7, 0xc5,
0xf2, 0x9a, 0x4a, 0xb6, 0xbe, 0x1a, 0x8f, 0x67, 0x93, 0x8c, 0xd3, 0x67, 0x0e, 0xf3, 0x6c, 0xcb,
0xc9, 0xdb, 0x68, 0xf6, 0x15, 0xca, 0xdb, 0xe8, 0x44, 0xfb, 0x6e, 0x3a, 0xec, 0x5b, 0x28, 0xed,
0x45, 0x63, 0xd9, 0x17, 0xec, 0x93, 0xe9, 0x82, 0xc4, 0xdf, 0xec, 0xe9, 0xa6, 0xf3, 0xcc, 0x61,
0x07, 0x50, 0xc4, 0xd7, 0x92, 0xe5, 0xb4, 0xfe, 0xcc, 0x53, 0xdb, 0x70, 0x67, 0x51, 0x6c, 0x16,
0xdf, 0x03, 0xdc, 0xbc, 0xd9, 0xec, 0xd3, 0x9c, 0x97, 0xf0, 0xf6, 0xe3, 0xdf, 0x68, 0x7e, 0x9c,
0x68, 0x17, 0x38, 0xc0, 0x07, 0xeb, 0x5c, 0xb2, 0xdc, 0xa7, 0x2a, 0x2d, 0xf7, 0x86, 0x3b, 0x8b,
0x62, 0xdc, 0x6d, 0x16, 0x7f, 0x98, 0x1b, 0x9e, 0x9d, 0x95, 0xe8, 0x1f, 0xe0, 0xf3, 0x7f, 0x02,
0x00, 0x00, 0xff, 0xff, 0x10, 0xcd, 0x98, 0x21, 0x68, 0x0e, 0x00, 0x00,
// 1653 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x58, 0xef, 0x72, 0x1b, 0x49,
0x11, 0x67, 0x25, 0x59, 0x7f, 0x5a, 0x96, 0x93, 0x0c, 0xe1, 0x98, 0x13, 0xc7, 0xc5, 0xd9, 0xe4,
0x0e, 0x55, 0x1d, 0x25, 0xdf, 0xf9, 0x38, 0x72, 0x77, 0x09, 0x55, 0xd8, 0x92, 0x55, 0x16, 0x15,
0xff, 0x61, 0x95, 0xe4, 0x0a, 0xa8, 0xe2, 0x6a, 0x2d, 0x8d, 0xe5, 0x2d, 0xad, 0x76, 0xc4, 0xce,
0x48, 0xb6, 0xf9, 0xc4, 0x13, 0xf0, 0x0a, 0x7c, 0xa6, 0x78, 0x04, 0x3e, 0xf1, 0x0e, 0xbc, 0x07,
0x3c, 0x02, 0xd5, 0x3d, 0xb3, 0xd2, 0x2a, 0xd2, 0x2a, 0x71, 0xf1, 0x49, 0xd3, 0xbd, 0xbf, 0x5f,
0x77, 0x4f, 0x4f, 0x4f, 0xf7, 0xae, 0xe0, 0x7e, 0x5f, 0x46, 0x3a, 0x96, 0x61, 0x28, 0xe2, 0xe6,
0x24, 0x96, 0x5a, 0xb2, 0x87, 0x17, 0xd3, 0x20, 0x1c, 0xdc, 0x34, 0x53, 0x0f, 0x66, 0x5f, 0xd4,
0x9f, 0x0f, 0x03, 0x7d, 0x35, 0xbd, 0x68, 0xf6, 0xe5, 0x78, 0x6f, 0x2c, 0x2f, 0x6e, 0xf7, 0x08,
0x35, 0x0a, 0xf4, 0x9e, 0x3f, 0x09, 0xf6, 0x94, 0x88, 0x67, 0x41, 0x5f, 0xa8, 0x3d, 0x4b, 0x4a,
0x7e, 0x8d, 0x49, 0xf7, 0x8f, 0xb0, 0x7d, 0x88, 0x70, 0x4f, 0xfc, 0x69, 0x2a, 0x94, 0x66, 0xf7,
0x21, 0xef, 0x89, 0x4b, 0xee, 0xec, 0x3a, 0x8d, 0x8a, 0x87, 0x4b, 0xf6, 0x02, 0x4a, 0x67, 0x13,
0x1d, 0xc8, 0x48, 0xf1, 0xdc, 0xae, 0xd3, 0xa8, 0xee, 0xbb, 0xcd, 0x75, 0x61, 0x34, 0xc9, 0x8c,
0x45, 0x7a, 0x09, 0xc5, 0xfd, 0x1b, 0x58, 0x07, 0x56, 0xc1, 0x76, 0xa1, 0xda, 0x92, 0x91, 0x16,
0x37, 0xfa, 0xdc, 0xd7, 0x57, 0xd6, 0x51, 0x5a, 0xc5, 0x3e, 0x85, 0x9d, 0xb6, 0xec, 0x8f, 0x44,
0x7c, 0x19, 0x84, 0xe2, 0xd4, 0x1f, 0x0b, 0xf2, 0x5b, 0xf1, 0xde, 0xd2, 0xb2, 0x8f, 0xa0, 0x72,
0x1e, 0x07, 0x91, 0xee, 0x4c, 0xa3, 0x3e, 0xcf, 0x13, 0x64, 0xa1, 0x60, 0x7f, 0x80, 0x1a, 0xa2,
0x06, 0xd6, 0xb2, 0xe2, 0x85, 0xdd, 0x7c, 0xa3, 0xba, 0xff, 0xd5, 0xbb, 0x83, 0x6f, 0x2e, 0xf1,
0x8e, 0x22, 0x1d, 0xdf, 0x7a, 0xcb, 0xb6, 0xd8, 0x43, 0xd8, 0x3a, 0x08, 0x43, 0x79, 0xcd, 0xb7,
0x76, 0xf3, 0x8d, 0x8a, 0x67, 0x04, 0xc6, 0xa1, 0x74, 0xa0, 0xb5, 0x50, 0x5a, 0xf1, 0x22, 0xe9,
0x13, 0x91, 0x9d, 0x41, 0x85, 0x3c, 0x1c, 0xc4, 0x43, 0xc5, 0x4b, 0x14, 0xc8, 0x17, 0xef, 0x11,
0xc8, 0x9c, 0x63, 0x82, 0x58, 0xd8, 0x60, 0x47, 0x50, 0x69, 0xf9, 0xfd, 0x2b, 0xd1, 0x89, 0xe5,
0x98, 0x97, 0xc9, 0xe0, 0xcf, 0xd6, 0x1b, 0x24, 0x98, 0x35, 0x68, 0xcd, 0xcc, 0x99, 0xec, 0x00,
0x4a, 0x24, 0xbc, 0x92, 0xbc, 0x72, 0x37, 0x23, 0x09, 0x8f, 0xb9, 0xb0, 0xdd, 0x1a, 0xc6, 0x72,
0x3a, 0x39, 0xf7, 0x63, 0x11, 0x69, 0x0e, 0x74, 0x10, 0x4b, 0x3a, 0xf6, 0x1c, 0x4a, 0x47, 0x37,
0x13, 0x19, 0x6b, 0xc5, 0xab, 0xe4, 0xe6, 0xf1, 0x7a, 0x37, 0x06, 0x64, 0x1d, 0x58, 0x06, 0xfb,
0x18, 0xe0, 0xe8, 0x46, 0xc7, 0xfe, 0xb1, 0xc4, 0xc4, 0x6e, 0x53, 0x62, 0x53, 0x1a, 0x2c, 0xa8,
0xee, 0xd8, 0x1f, 0x8a, 0x6e, 0xbb, 0x13, 0x84, 0x82, 0xd7, 0x4c, 0x41, 0xa5, 0x54, 0xac, 0x03,
0xc5, 0x97, 0xfe, 0x85, 0x08, 0x15, 0xdf, 0x21, 0xef, 0xcd, 0xf7, 0x48, 0xbd, 0x21, 0x98, 0x50,
0x2c, 0x1b, 0x3d, 0x9d, 0x0a, 0x7d, 0x2d, 0xe3, 0xd1, 0x89, 0x1c, 0x08, 0x7e, 0xcf, 0x78, 0x4a,
0xa9, 0xd8, 0x53, 0xa8, 0x9d, 0x4a, 0x93, 0xde, 0x20, 0xd4, 0x22, 0xe6, 0xf7, 0x29, 0xdc, 0x65,
0x25, 0x15, 0x6e, 0xe8, 0xeb, 0x4b, 0x19, 0x8f, 0x15, 0x7f, 0x40, 0x88, 0x85, 0x02, 0x6b, 0xeb,
0xb7, 0xd3, 0x40, 0x68, 0xce, 0x76, 0x9d, 0x46, 0xd9, 0x33, 0x02, 0xfb, 0x25, 0x94, 0x7a, 0xa2,
0x1f, 0x0b, 0xad, 0xf8, 0x0f, 0x69, 0x13, 0x1f, 0xad, 0xdf, 0x84, 0x01, 0x79, 0x09, 0x18, 0x6b,
0xb2, 0x77, 0x35, 0xee, 0x05, 0x7f, 0x16, 0xfc, 0xe1, 0xae, 0xd3, 0xc8, 0x7b, 0x89, 0xc8, 0x3e,
0x83, 0x7c, 0xaf, 0x77, 0xcc, 0x7f, 0x44, 0xd6, 0x3e, 0xcc, 0xb0, 0xd6, 0x3b, 0xf6, 0x10, 0xc5,
0x18, 0x14, 0x5e, 0xf9, 0x43, 0xc5, 0x3f, 0xa0, 0x68, 0x69, 0xcd, 0x3e, 0x80, 0xe2, 0x2b, 0x3f,
0x1e, 0x0a, 0xcd, 0x7f, 0x4c, 0x99, 0xb0, 0x12, 0xfb, 0x06, 0x4a, 0xaf, 0xc3, 0x60, 0x1c, 0x68,
0xc5, 0x39, 0x35, 0x8c, 0x47, 0xeb, 0x8d, 0x1b, 0xd0, 0xd9, 0x44, 0x7b, 0x09, 0x9e, 0x3d, 0x83,
0xc2, 0xd9, 0x44, 0x2b, 0xfe, 0x21, 0xf1, 0x9e, 0x64, 0x14, 0xa3, 0x1c, 0x8f, 0x65, 0x94, 0x74,
0x1a, 0x22, 0xd4, 0x7f, 0x0d, 0x6c, 0xf5, 0xd6, 0x62, 0x33, 0x1b, 0x89, 0xdb, 0xa4, 0x99, 0x8d,
0xc4, 0x2d, 0x26, 0x77, 0xe6, 0x87, 0xd3, 0xa4, 0xa5, 0x18, 0xe1, 0xdb, 0xdc, 0xd7, 0x4e, 0xfd,
0x05, 0xec, 0x2c, 0x5f, 0xb7, 0x3b, 0xb1, 0xbf, 0x81, 0x6a, 0xaa, 0x62, 0xee, 0x42, 0x75, 0xff,
0xe5, 0x40, 0x35, 0x55, 0xf8, 0x94, 0xea, 0xdb, 0x89, 0xb0, 0x64, 0x5a, 0xb3, 0x43, 0xd8, 0x3a,
0xd0, 0x3a, 0xc6, 0x0e, 0x8c, 0xa7, 0xf5, 0xf3, 0x77, 0x5e, 0x9f, 0x26, 0xc1, 0x4d, 0xf9, 0x1a,
0x2a, 0x56, 0x6f, 0x5b, 0x28, 0x1d, 0x44, 0x3e, 0x26, 0xce, 0x36, 0xcc, 0xb4, 0xaa, 0xfe, 0x35,
0xc0, 0x82, 0x76, 0xa7, 0x3d, 0xfc, 0xc3, 0x81, 0x07, 0x2b, 0x3d, 0x62, 0xed, 0x4e, 0x8e, 0x97,
0x77, 0xb2, 0xff, 0x9e, 0xfd, 0x66, 0x75, 0x3f, 0xff, 0x47, 0xb4, 0xa6, 0xf2, 0xd9, 0x0e, 0xe4,
0xba, 0x6d, 0xcb, 0xc8, 0x75, 0xdb, 0x48, 0xc0, 0xf9, 0x63, 0x42, 0xab, 0x78, 0x46, 0x70, 0x3b,
0x50, 0x34, 0x77, 0x69, 0x05, 0x5f, 0x87, 0x32, 0xb6, 0x17, 0x1a, 0x63, 0xc6, 0xc7, 0x5c, 0xc6,
0x70, 0x8e, 0xa2, 0x99, 0x4d, 0x32, 0x2e, 0xdd, 0xbf, 0x3b, 0x50, 0x99, 0x57, 0x3c, 0x6b, 0x41,
0x91, 0xe2, 0x51, 0xdc, 0xa1, 0x3c, 0x7c, 0xf6, 0x8e, 0x2b, 0xd2, 0x7c, 0x43, 0x68, 0xdb, 0x8f,
0x0c, 0xb5, 0xfe, 0x1d, 0x54, 0x53, 0xea, 0x35, 0x29, 0xd8, 0x4f, 0xa7, 0x20, 0xb3, 0x65, 0x18,
0x27, 0xe9, 0x04, 0xb5, 0xa1, 0x68, 0x94, 0x78, 0x84, 0x34, 0x81, 0xed, 0x11, 0xd2, 0xdc, 0x65,
0x50, 0x38, 0xf6, 0xe3, 0x01, 0x19, 0xcd, 0x7b, 0xb4, 0x46, 0x5d, 0x4f, 0x5e, 0x6a, 0xda, 0x70,
0xde, 0xa3, 0xb5, 0xfb, 0x1f, 0x07, 0x6a, 0x4b, 0x77, 0x15, 0x9b, 0x11, 0xdd, 0x31, 0x11, 0x5b,
0x83, 0x89, 0x88, 0x53, 0xe4, 0x44, 0x68, 0x7f, 0xe0, 0x6b, 0x9f, 0xba, 0xb8, 0xc9, 0xe7, 0x92,
0x0e, 0xd9, 0xb6, 0x8f, 0x92, 0x9b, 0xb2, 0x97, 0x88, 0xe8, 0xfd, 0x7c, 0x1a, 0x86, 0xbc, 0x40,
0x6a, 0x5a, 0x9b, 0xb1, 0x81, 0xf7, 0xe1, 0x7c, 0xaa, 0xae, 0xf8, 0x16, 0x3d, 0x49, 0x69, 0x16,
0xcf, 0x5f, 0x4a, 0x7f, 0xc0, 0x8b, 0xe9, 0xe7, 0xa8, 0xa1, 0x1d, 0x1d, 0x9e, 0x9d, 0xf0, 0x92,
0xd9, 0x39, 0xae, 0x91, 0x73, 0x1e, 0xcb, 0x99, 0x88, 0xfc, 0xa8, 0x2f, 0x78, 0x99, 0x9e, 0xa4,
0x34, 0xee, 0x3d, 0xa8, 0xd9, 0x97, 0x29, 0x35, 0x91, 0x91, 0x12, 0xee, 0x27, 0xf0, 0xa0, 0x1d,
0xa8, 0xbe, 0x8c, 0x22, 0xd1, 0xd7, 0x99, 0xaf, 0x58, 0xee, 0x43, 0x60, 0x69, 0x98, 0x25, 0x3f,
0x82, 0xea, 0xcb, 0x40, 0x6d, 0xa0, 0xb9, 0xb0, 0x6d, 0x00, 0x86, 0x80, 0x21, 0x8f, 0xc4, 0xad,
0x29, 0xa9, 0x8a, 0x47, 0x6b, 0xf7, 0xaf, 0x0e, 0x6c, 0x77, 0xa3, 0xc9, 0x54, 0x9f, 0x08, 0xa5,
0xfc, 0xa1, 0x60, 0x2f, 0xa0, 0xd0, 0x8d, 0x02, 0x4d, 0x76, 0xaa, 0xfb, 0x9f, 0xae, 0x2f, 0x09,
0x62, 0x20, 0xcc, 0xb2, 0x8e, 0x7f, 0xe0, 0x11, 0x0b, 0x1b, 0x74, 0xdb, 0xd7, 0xbe, 0x2d, 0xa8,
0x8c, 0x31, 0x8e, 0x88, 0x14, 0x11, 0xc5, 0xc3, 0x12, 0x6c, 0x91, 0x51, 0xf7, 0x29, 0xdc, 0x7f,
0xdb, 0xfa, 0x9a, 0xad, 0x7d, 0x09, 0xd5, 0x94, 0x15, 0xba, 0x4e, 0x67, 0x1d, 0x02, 0x94, 0x3d,
0x5c, 0xe2, 0x5e, 0xe7, 0x81, 0x6c, 0x1b, 0x1f, 0x98, 0x7e, 0x32, 0x3d, 0xcf, 0xe0, 0x5f, 0x72,
0x50, 0x4a, 0x4c, 0x3c, 0x5b, 0xda, 0xf7, 0xe3, 0xac, 0x7d, 0xaf, 0x6e, 0xf9, 0x2b, 0x28, 0xcc,
0x4b, 0x32, 0x73, 0x96, 0x75, 0x06, 0x29, 0x1a, 0x55, 0xeb, 0xaf, 0xa0, 0xe8, 0x09, 0x85, 0x73,
0x37, 0xbf, 0x69, 0x98, 0x19, 0xcc, 0x82, 0x6c, 0x49, 0x48, 0xef, 0x05, 0xc3, 0xc8, 0x37, 0x45,
0x9d, 0x49, 0x37, 0x98, 0x14, 0xdd, 0x28, 0x16, 0xe9, 0x9e, 0x40, 0x75, 0x63, 0xa6, 0xd9, 0x19,
0xdc, 0xc3, 0xa1, 0xe9, 0x07, 0x91, 0x88, 0x5b, 0x32, 0xba, 0x0c, 0x86, 0x76, 0xa7, 0x9f, 0x64,
0x4d, 0xdf, 0x25, 0xb0, 0xf7, 0x36, 0xdb, 0xfd, 0xa7, 0xb3, 0x62, 0x91, 0x2e, 0x1b, 0xf6, 0xa8,
0x89, 0x0c, 0x22, 0x6d, 0xeb, 0x33, 0xa5, 0xc1, 0xb0, 0x5a, 0xe3, 0x81, 0x6d, 0xbc, 0xb8, 0x5c,
0x34, 0xd0, 0xbc, 0x6d, 0xa0, 0x78, 0xe2, 0xaf, 0x95, 0x88, 0x29, 0x1f, 0x15, 0x8f, 0xd6, 0xf8,
0x0a, 0x72, 0x2a, 0x49, 0x6b, 0x2e, 0xb8, 0x95, 0xc8, 0xde, 0xb5, 0xb9, 0xd5, 0x68, 0xef, 0x7a,
0x80, 0xcd, 0xfd, 0x54, 0xa2, 0xae, 0x64, 0xde, 0xaa, 0x48, 0x40, 0xdc, 0x2b, 0x7d, 0x4b, 0x37,
0xb9, 0xec, 0xe1, 0xd2, 0x3d, 0x80, 0xca, 0xfc, 0x2c, 0xb1, 0xe3, 0x77, 0x06, 0x94, 0xac, 0x9a,
0x97, 0xeb, 0x0c, 0x92, 0x32, 0xcc, 0xad, 0x96, 0x61, 0x3e, 0x55, 0x86, 0xcf, 0xa0, 0xb6, 0x74,
0xaa, 0x08, 0xf2, 0xe4, 0xb5, 0xb2, 0x86, 0x68, 0x8d, 0xba, 0x96, 0x0c, 0xcd, 0x27, 0x55, 0xcd,
0xa3, 0xb5, 0xfb, 0x04, 0x6a, 0x4b, 0xe7, 0xb9, 0xae, 0xfb, 0xba, 0x8f, 0xa1, 0xd6, 0xd3, 0xbe,
0x9e, 0xaa, 0xec, 0xbe, 0xf0, 0x5f, 0x07, 0x76, 0x12, 0x8c, 0x6d, 0x0d, 0xbf, 0x80, 0xf2, 0x4c,
0xc4, 0x5a, 0xdc, 0xcc, 0x27, 0x0e, 0x6f, 0xe2, 0xb7, 0x62, 0x33, 0xf9, 0x56, 0xc4, 0xa3, 0x7d,
0x43, 0x08, 0x6f, 0x8e, 0x64, 0xdf, 0x42, 0x59, 0x91, 0x1d, 0x91, 0xcc, 0xeb, 0x8f, 0xb3, 0x58,
0xd6, 0xdf, 0x1c, 0xcf, 0xf6, 0xa0, 0x10, 0xca, 0xa1, 0xa2, 0x13, 0xac, 0xee, 0xff, 0x24, 0x8b,
0xf7, 0x52, 0x0e, 0x3d, 0x02, 0xb2, 0xe7, 0x50, 0xbe, 0xf6, 0xe3, 0x28, 0x88, 0x86, 0xc9, 0xb7,
0xda, 0xa3, 0x2c, 0xd2, 0x77, 0x06, 0xe7, 0xcd, 0x09, 0x6e, 0x0d, 0xcb, 0xfc, 0x52, 0xda, 0x9c,
0xb8, 0xbf, 0xc3, 0xa6, 0x87, 0xa2, 0xdd, 0x7e, 0x17, 0x6a, 0xa6, 0x98, 0xdf, 0x88, 0x58, 0xe1,
0xdb, 0x8f, 0xb3, 0xe9, 0x52, 0x1d, 0xa6, 0xa1, 0xde, 0x32, 0xd3, 0xfd, 0xde, 0xf6, 0xf8, 0x44,
0x81, 0x63, 0x69, 0xe2, 0xf7, 0x47, 0xfe, 0x30, 0x39, 0xa7, 0x44, 0xc4, 0x27, 0x33, 0xeb, 0xcf,
0xcc, 0xb3, 0x44, 0xc4, 0x57, 0x87, 0x58, 0xcc, 0x02, 0xb5, 0x78, 0x11, 0x9b, 0xcb, 0xfb, 0xff,
0x2e, 0x00, 0xb4, 0xe6, 0xf1, 0xb0, 0x73, 0xd8, 0x22, 0x7f, 0x6c, 0xd3, 0x67, 0xb7, 0xdd, 0x77,
0xfd, 0xc9, 0x46, 0x8c, 0x4d, 0xc6, 0x6b, 0x28, 0x9a, 0xd3, 0x62, 0x59, 0x4d, 0x25, 0x5d, 0x5f,
0xf5, 0xa7, 0x9b, 0x41, 0xc6, 0xe8, 0xe7, 0x0e, 0xf3, 0x6c, 0xcb, 0xc9, 0x0a, 0x34, 0x3d, 0x85,
0xb2, 0x02, 0x5d, 0x6a, 0xdf, 0x0d, 0x87, 0xfd, 0x06, 0x8a, 0xdd, 0x68, 0x26, 0x47, 0x82, 0xfd,
0x74, 0x3d, 0x21, 0xb1, 0xb7, 0xf9, 0x71, 0xc3, 0xf9, 0xdc, 0x61, 0x27, 0x50, 0xc0, 0x69, 0xc9,
0x32, 0x5a, 0x7f, 0x6a, 0xd4, 0xd6, 0xdd, 0x4d, 0x10, 0x9b, 0xc5, 0xef, 0x01, 0x16, 0x33, 0x9b,
0x65, 0x7c, 0x37, 0xaf, 0x0c, 0xff, 0x7a, 0xe3, 0xdd, 0x40, 0xeb, 0xe0, 0x04, 0x07, 0xd6, 0xa5,
0x64, 0x99, 0xa3, 0x6a, 0x5e, 0xee, 0x75, 0x77, 0x13, 0xc4, 0x98, 0x3b, 0x2c, 0xfc, 0x3e, 0x37,
0xb9, 0xb8, 0x28, 0xd2, 0xbf, 0x3e, 0x5f, 0xfe, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x47, 0x50, 0x7d,
0xc5, 0x5c, 0x12, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.