From 16c699a4b448e6f8911afbf41822d2ec03c03c46 Mon Sep 17 00:00:00 2001 From: Diogo Monica Date: Fri, 12 Aug 2016 17:11:27 -0700 Subject: [PATCH 1/9] Initial secrets protobuf changes Add a Secret top-level object type. Add a SecretReference that allows a service to reference the secrets it needs. Signed-off-by: Aaron Lehmann --- api/objects.pb.go | 421 ++++++++++++++++++++++---- api/objects.proto | 12 + api/raft.pb.go | 225 ++++++++++---- api/raft.proto | 1 + api/snapshot.pb.go | 116 +++++-- api/snapshot.proto | 1 + api/specs.pb.go | 542 +++++++++++++++++++++++++++------ api/specs.proto | 18 ++ api/types.pb.go | 738 +++++++++++++++++++++++++++++++-------------- api/types.proto | 24 ++ 10 files changed, 1638 insertions(+), 460 deletions(-) diff --git a/api/objects.pb.go b/api/objects.pb.go index 522fbac542..7b25f45c7f 100644 --- a/api/objects.pb.go +++ b/api/objects.pb.go @@ -233,6 +233,19 @@ func (m *Cluster) Reset() { *m = Cluster{} } func (*Cluster) ProtoMessage() {} func (*Cluster) Descriptor() ([]byte, []int) { return fileDescriptorObjects, []int{7} } +// Secret +type Secret struct { + ID string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Meta Meta `protobuf:"bytes,2,opt,name=meta" json:"meta"` + Spec SecretSpec `protobuf:"bytes,3,opt,name=spec" json:"spec"` + // Version is a hash of the secret. + Version string `protobuf:"bytes,4,opt,name=version,proto3" json:"version,omitempty"` +} + +func (m *Secret) Reset() { *m = Secret{} } +func (*Secret) ProtoMessage() {} +func (*Secret) Descriptor() ([]byte, []int) { return fileDescriptorObjects, []int{8} } + func init() { proto.RegisterType((*Meta)(nil), "docker.swarmkit.v1.Meta") proto.RegisterType((*Node)(nil), "docker.swarmkit.v1.Node") @@ -243,6 +256,7 @@ func init() { proto.RegisterType((*NetworkAttachment)(nil), "docker.swarmkit.v1.NetworkAttachment") proto.RegisterType((*Network)(nil), "docker.swarmkit.v1.Network") proto.RegisterType((*Cluster)(nil), "docker.swarmkit.v1.Cluster") + proto.RegisterType((*Secret)(nil), "docker.swarmkit.v1.Secret") } func (m *Meta) Copy() *Meta { @@ -429,6 +443,21 @@ func (m *Cluster) Copy() *Cluster { return o } +func (m *Secret) Copy() *Secret { + if m == nil { + return nil + } + + o := &Secret{ + ID: m.ID, + Meta: *m.Meta.Copy(), + Spec: *m.Spec.Copy(), + Version: m.Version, + } + + return o +} + func (this *Meta) GoString() string { if this == nil { return "nil" @@ -595,6 +624,19 @@ func (this *Cluster) GoString() string { s = append(s, "}") return strings.Join(s, "") } +func (this *Secret) GoString() string { + if this == nil { + return "nil" + } + s := make([]string, 0, 8) + s = append(s, "&api.Secret{") + s = append(s, "ID: "+fmt.Sprintf("%#v", this.ID)+",\n") + s = append(s, "Meta: "+strings.Replace(this.Meta.GoString(), `&`, ``, 1)+",\n") + s = append(s, "Spec: "+strings.Replace(this.Spec.GoString(), `&`, ``, 1)+",\n") + s = append(s, "Version: "+fmt.Sprintf("%#v", this.Version)+",\n") + s = append(s, "}") + return strings.Join(s, "") +} func valueToGoStringObjects(v interface{}, typ string) string { rv := reflect.ValueOf(v) if rv.IsNil() { @@ -1206,6 +1248,52 @@ func (m *Cluster) MarshalTo(data []byte) (int, error) { return i, nil } +func (m *Secret) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *Secret) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.ID) > 0 { + data[i] = 0xa + i++ + i = encodeVarintObjects(data, i, uint64(len(m.ID))) + i += copy(data[i:], m.ID) + } + data[i] = 0x12 + i++ + i = encodeVarintObjects(data, i, uint64(m.Meta.Size())) + n32, err := m.Meta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n32 + data[i] = 0x1a + i++ + i = encodeVarintObjects(data, i, uint64(m.Spec.Size())) + n33, err := m.Spec.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n33 + if len(m.Version) > 0 { + data[i] = 0x22 + i++ + i = encodeVarintObjects(data, i, uint64(len(m.Version))) + i += copy(data[i:], m.Version) + } + return i, nil +} + func encodeFixed64Objects(data []byte, offset int, v uint64) int { data[offset] = uint8(v) data[offset+1] = uint8(v >> 8) @@ -1459,6 +1547,24 @@ func (m *Cluster) Size() (n int) { return n } +func (m *Secret) Size() (n int) { + var l int + _ = l + l = len(m.ID) + if l > 0 { + n += 1 + l + sovObjects(uint64(l)) + } + l = m.Meta.Size() + n += 1 + l + sovObjects(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovObjects(uint64(l)) + l = len(m.Version) + if l > 0 { + n += 1 + l + sovObjects(uint64(l)) + } + return n +} + func sovObjects(x uint64) (n int) { for { n++ @@ -1602,6 +1708,19 @@ func (this *Cluster) String() string { }, "") return s } +func (this *Secret) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Secret{`, + `ID:` + fmt.Sprintf("%v", this.ID) + `,`, + `Meta:` + strings.Replace(strings.Replace(this.Meta.String(), "Meta", "Meta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "SecretSpec", "SecretSpec", 1), `&`, ``, 1) + `,`, + `Version:` + fmt.Sprintf("%v", this.Version) + `,`, + `}`, + }, "") + return s +} func valueToStringObjects(v interface{}) string { rv := reflect.ValueOf(v) if rv.IsNil() { @@ -3532,6 +3651,174 @@ func (m *Cluster) Unmarshal(data []byte) error { } return nil } +func (m *Secret) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowObjects + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Secret: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Secret: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowObjects + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthObjects + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ID = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Meta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowObjects + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthObjects + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Meta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowObjects + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthObjects + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowObjects + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthObjects + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Version = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipObjects(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthObjects + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipObjects(data []byte) (n int, err error) { l := len(data) iNdEx := 0 @@ -3640,70 +3927,72 @@ var ( func init() { proto.RegisterFile("objects.proto", fileDescriptorObjects) } var fileDescriptorObjects = []byte{ - // 1029 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xbc, 0x56, 0x4d, 0x6f, 0x1b, 0x45, - 0x18, 0xce, 0xda, 0x1b, 0xdb, 0xfb, 0x3a, 0x8e, 0xc4, 0x50, 0x55, 0xdb, 0x10, 0xec, 0xe0, 0x0a, - 0xd4, 0x43, 0xe5, 0x8a, 0x52, 0x10, 0x15, 0xad, 0x90, 0xbf, 0x04, 0x56, 0x09, 0x44, 0xd3, 0x92, - 0x1e, 0x57, 0x93, 0xdd, 0xa9, 0x59, 0x6c, 0xef, 0xac, 0x66, 0xc6, 0xae, 0x7c, 0x43, 0xfc, 0x00, - 0x7e, 0x02, 0x7f, 0x85, 0x6b, 0x0e, 0x1c, 0xb8, 0xc1, 0xc9, 0x22, 0xbe, 0x71, 0x82, 0x9f, 0x80, - 0x66, 0x76, 0xd6, 0xde, 0xc8, 0xeb, 0x90, 0x4a, 0x28, 0xb7, 0x99, 0x9d, 0xe7, 0x79, 0xde, 0xcf, - 0x79, 0x77, 0xa0, 0xc6, 0xce, 0xbe, 0xa7, 0xbe, 0x14, 0xad, 0x98, 0x33, 0xc9, 0x10, 0x0a, 0x98, - 0x3f, 0xa2, 0xbc, 0x25, 0x5e, 0x13, 0x3e, 0x19, 0x85, 0xb2, 0x35, 0xfb, 0xf0, 0xa0, 0x2a, 0xe7, - 0x31, 0x35, 0x80, 0x83, 0xaa, 0x88, 0xa9, 0x9f, 0x6e, 0xee, 0xc8, 0x70, 0x42, 0x85, 0x24, 0x93, - 0xf8, 0xc1, 0x6a, 0x65, 0x8e, 0x6e, 0x0d, 0xd9, 0x90, 0xe9, 0xe5, 0x03, 0xb5, 0x4a, 0xbe, 0x36, - 0x7f, 0xb1, 0xc0, 0x3e, 0xa6, 0x92, 0xa0, 0xcf, 0xa0, 0x3c, 0xa3, 0x5c, 0x84, 0x2c, 0x72, 0xad, - 0x23, 0xeb, 0x5e, 0xf5, 0xe1, 0x3b, 0xad, 0x4d, 0xcb, 0xad, 0xd3, 0x04, 0xd2, 0xb1, 0xcf, 0x17, - 0x8d, 0x1d, 0x9c, 0x32, 0xd0, 0x13, 0x00, 0x9f, 0x53, 0x22, 0x69, 0xe0, 0x11, 0xe9, 0x16, 0x34, - 0xff, 0xdd, 0x3c, 0xfe, 0x8b, 0xd4, 0x29, 0xec, 0x18, 0x42, 0x5b, 0x2a, 0xf6, 0x34, 0x0e, 0x52, - 0x76, 0xf1, 0x5a, 0x6c, 0x43, 0x68, 0xcb, 0xe6, 0x5f, 0x45, 0xb0, 0xbf, 0x66, 0x01, 0x45, 0xb7, - 0xa1, 0x10, 0x06, 0xda, 0x79, 0xa7, 0x53, 0x5a, 0x2e, 0x1a, 0x85, 0x41, 0x0f, 0x17, 0xc2, 0x00, - 0x3d, 0x04, 0x7b, 0x42, 0x25, 0x31, 0x6e, 0xb9, 0x79, 0xc2, 0x2a, 0x03, 0x26, 0x26, 0x8d, 0x45, - 0x9f, 0x80, 0xad, 0xd2, 0x6a, 0x9c, 0x39, 0xcc, 0xe3, 0x28, 0x9b, 0xcf, 0x63, 0xea, 0xa7, 0x3c, - 0x85, 0x47, 0x7d, 0xa8, 0x06, 0x54, 0xf8, 0x3c, 0x8c, 0xa5, 0xca, 0xa4, 0xad, 0xe9, 0x77, 0xb7, - 0xd1, 0x7b, 0x6b, 0x28, 0xce, 0xf2, 0xd0, 0x13, 0x28, 0x09, 0x49, 0xe4, 0x54, 0xb8, 0xbb, 0x5a, - 0xa1, 0xbe, 0xd5, 0x01, 0x8d, 0x32, 0x2e, 0x18, 0x0e, 0xfa, 0x12, 0xf6, 0x27, 0x24, 0x22, 0x43, - 0xca, 0x3d, 0xa3, 0x52, 0xd2, 0x2a, 0xef, 0xe5, 0x86, 0x9e, 0x20, 0x13, 0x21, 0x5c, 0x9b, 0x64, - 0xb7, 0xa8, 0x0f, 0x40, 0xa4, 0x24, 0xfe, 0x77, 0x13, 0x1a, 0x49, 0xb7, 0xac, 0x55, 0xde, 0xcf, - 0xf5, 0x85, 0xca, 0xd7, 0x8c, 0x8f, 0xda, 0x2b, 0x30, 0xce, 0x10, 0xd1, 0x17, 0x50, 0xf5, 0x29, - 0x97, 0xe1, 0xab, 0xd0, 0x27, 0x92, 0xba, 0x15, 0xad, 0xd3, 0xc8, 0xd3, 0xe9, 0xae, 0x61, 0x26, - 0xa8, 0x2c, 0xb3, 0xf9, 0x7b, 0x01, 0xca, 0xcf, 0x29, 0x9f, 0x85, 0xfe, 0xff, 0x5b, 0xee, 0xc7, - 0x97, 0xca, 0x9d, 0xeb, 0x99, 0x31, 0xbb, 0x51, 0xf1, 0x4f, 0xa1, 0x42, 0xa3, 0x20, 0x66, 0x61, - 0x24, 0x4d, 0xb9, 0x73, 0xbb, 0xa5, 0x6f, 0x30, 0x78, 0x85, 0x46, 0x7d, 0xa8, 0x25, 0x5d, 0xec, - 0x5d, 0xaa, 0xf5, 0x51, 0x1e, 0xfd, 0x5b, 0x0d, 0x34, 0x45, 0xda, 0x9b, 0x66, 0x76, 0xa8, 0x07, - 0xb5, 0x98, 0xd3, 0x59, 0xc8, 0xa6, 0xc2, 0xd3, 0x41, 0x94, 0xae, 0x15, 0x04, 0xde, 0x4b, 0x59, - 0x6a, 0xd7, 0xfc, 0xb9, 0x00, 0x95, 0xd4, 0x47, 0xf4, 0xc8, 0xa4, 0xc3, 0xda, 0xee, 0x50, 0x8a, - 0xd5, 0x52, 0x49, 0x26, 0x1e, 0xc1, 0x6e, 0xcc, 0xb8, 0x14, 0x6e, 0xe1, 0xa8, 0xb8, 0xad, 0x67, - 0x4f, 0x18, 0x97, 0x5d, 0x16, 0xbd, 0x0a, 0x87, 0x38, 0x01, 0xa3, 0x97, 0x50, 0x9d, 0x85, 0x5c, - 0x4e, 0xc9, 0xd8, 0x0b, 0x63, 0xe1, 0x16, 0x35, 0xf7, 0x83, 0xab, 0x4c, 0xb6, 0x4e, 0x13, 0xfc, - 0xe0, 0xa4, 0xb3, 0xbf, 0x5c, 0x34, 0x60, 0xb5, 0x15, 0x18, 0x8c, 0xd4, 0x20, 0x16, 0x07, 0xc7, - 0xe0, 0xac, 0x4e, 0xd0, 0x7d, 0x80, 0x28, 0x69, 0x51, 0x6f, 0xd5, 0x34, 0xb5, 0xe5, 0xa2, 0xe1, - 0x98, 0xc6, 0x1d, 0xf4, 0xb0, 0x63, 0x00, 0x83, 0x00, 0x21, 0xb0, 0x49, 0x10, 0x70, 0xdd, 0x42, - 0x0e, 0xd6, 0xeb, 0xe6, 0xaf, 0xbb, 0x60, 0xbf, 0x20, 0x62, 0x74, 0xd3, 0x63, 0x46, 0xd9, 0xdc, - 0x68, 0xba, 0xfb, 0x00, 0x22, 0x29, 0xa5, 0x0a, 0xc7, 0x5e, 0x87, 0x63, 0x0a, 0xac, 0xc2, 0x31, - 0x80, 0x24, 0x1c, 0x31, 0x66, 0x52, 0xf7, 0x97, 0x8d, 0xf5, 0x1a, 0xdd, 0x85, 0x72, 0xc4, 0x02, - 0x4d, 0x2f, 0x69, 0x3a, 0x2c, 0x17, 0x8d, 0x92, 0x1a, 0x29, 0x83, 0x1e, 0x2e, 0xa9, 0xa3, 0x41, - 0xa0, 0xee, 0x2d, 0x89, 0x22, 0x26, 0x89, 0x1a, 0x4a, 0xc2, 0xdc, 0xff, 0xdc, 0xc6, 0x6a, 0xaf, - 0x61, 0xe9, 0xbd, 0xcd, 0x30, 0xd1, 0x29, 0xbc, 0x9d, 0xfa, 0x9b, 0x15, 0xac, 0xbc, 0x89, 0x20, - 0x32, 0x0a, 0x99, 0x93, 0xcc, 0x9c, 0x74, 0xb6, 0xcf, 0x49, 0x9d, 0xc1, 0xbc, 0x39, 0xd9, 0x81, - 0x5a, 0x40, 0x45, 0xc8, 0x69, 0xa0, 0x6f, 0x20, 0x75, 0xe1, 0xc8, 0xba, 0xb7, 0xbf, 0xe5, 0xd7, - 0x63, 0x44, 0x28, 0xde, 0x33, 0x1c, 0xbd, 0x43, 0x6d, 0xa8, 0x98, 0xbe, 0x11, 0x6e, 0x55, 0xf7, - 0xee, 0x35, 0xe7, 0xe3, 0x8a, 0x76, 0x69, 0x82, 0xec, 0xbd, 0xd1, 0x04, 0x79, 0x0c, 0x30, 0x66, - 0x43, 0x2f, 0xe0, 0xe1, 0x8c, 0x72, 0xb7, 0xa6, 0xb9, 0x07, 0x79, 0xdc, 0x9e, 0x46, 0x60, 0x67, - 0xcc, 0x86, 0xc9, 0xb2, 0xf9, 0xa3, 0x05, 0x6f, 0x6d, 0x38, 0x85, 0x3e, 0x86, 0xb2, 0x71, 0xeb, - 0xaa, 0x47, 0x80, 0xe1, 0xe1, 0x14, 0x8b, 0x0e, 0xc1, 0x51, 0x77, 0x84, 0x0a, 0x41, 0x93, 0xdb, - 0xef, 0xe0, 0xf5, 0x07, 0xe4, 0x42, 0x99, 0x8c, 0x43, 0xa2, 0xce, 0x8a, 0xfa, 0x2c, 0xdd, 0x36, - 0x7f, 0x2a, 0x40, 0xd9, 0x88, 0xdd, 0xf4, 0x38, 0x37, 0x66, 0x37, 0x6e, 0xd6, 0x53, 0xd8, 0x4b, - 0xd2, 0x69, 0x5a, 0xc2, 0xfe, 0xcf, 0xa4, 0x56, 0x13, 0x7c, 0xd2, 0x0e, 0x4f, 0xc1, 0x0e, 0x63, - 0x32, 0x31, 0xa3, 0x3c, 0xd7, 0xf2, 0xe0, 0xa4, 0x7d, 0xfc, 0x4d, 0x9c, 0x74, 0x76, 0x65, 0xb9, - 0x68, 0xd8, 0xea, 0x03, 0xd6, 0xb4, 0xe6, 0xdf, 0x05, 0x28, 0x77, 0xc7, 0x53, 0x21, 0x29, 0xbf, - 0xe9, 0x84, 0x18, 0xb3, 0x1b, 0x09, 0xe9, 0x42, 0x99, 0x33, 0x26, 0x3d, 0x9f, 0x5c, 0x95, 0x0b, - 0xcc, 0x98, 0xec, 0xb6, 0x3b, 0xfb, 0x8a, 0xa8, 0x06, 0x49, 0xb2, 0xc7, 0x25, 0x45, 0xed, 0x12, - 0xf4, 0x12, 0x6e, 0xa7, 0xe3, 0xf7, 0x8c, 0x31, 0x29, 0x24, 0x27, 0xb1, 0x37, 0xa2, 0x73, 0xf5, - 0xcf, 0x2b, 0x6e, 0x7b, 0x99, 0xf4, 0x23, 0x9f, 0xcf, 0x75, 0xa2, 0x9e, 0xd1, 0x39, 0xbe, 0x65, - 0x04, 0x3a, 0x29, 0xff, 0x19, 0x9d, 0x0b, 0xf4, 0x39, 0x1c, 0xd2, 0x15, 0x4c, 0x29, 0x7a, 0x63, - 0x32, 0x51, 0x3f, 0x16, 0xcf, 0x1f, 0x33, 0x7f, 0xa4, 0x67, 0x9b, 0x8d, 0xef, 0xd0, 0xac, 0xd4, - 0x57, 0x09, 0xa2, 0xab, 0x00, 0x9d, 0xc3, 0xf3, 0x8b, 0xfa, 0xce, 0x1f, 0x17, 0xf5, 0x9d, 0x7f, - 0x2e, 0xea, 0xd6, 0x0f, 0xcb, 0xba, 0x75, 0xbe, 0xac, 0x5b, 0xbf, 0x2d, 0xeb, 0xd6, 0x9f, 0xcb, - 0xba, 0x75, 0x56, 0xd2, 0x8f, 0xe4, 0x8f, 0xfe, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x6a, 0xb2, 0x97, - 0xcc, 0x94, 0x0b, 0x00, 0x00, + // 1064 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xbc, 0x56, 0x4f, 0x6f, 0x1b, 0xc5, + 0x1b, 0xce, 0xda, 0x1b, 0xdb, 0xfb, 0x3a, 0x8e, 0xf4, 0x9b, 0x5f, 0x55, 0x6d, 0x43, 0xb0, 0x83, + 0x2b, 0x50, 0x0f, 0x95, 0x2b, 0x4a, 0x41, 0xad, 0x68, 0x85, 0xfc, 0x27, 0x02, 0xab, 0x04, 0xa2, + 0x49, 0x49, 0x8f, 0xab, 0xc9, 0xee, 0xd4, 0x2c, 0xb6, 0x77, 0x56, 0x33, 0x63, 0x57, 0xbe, 0x21, + 0x3e, 0x00, 0x1f, 0x81, 0x33, 0xdf, 0x82, 0x6b, 0x0e, 0x1c, 0xb8, 0xc1, 0xc9, 0x22, 0xbe, 0x71, + 0x82, 0x8f, 0x80, 0x66, 0x76, 0xd6, 0xde, 0xc8, 0xeb, 0x90, 0x4a, 0x55, 0x6e, 0x33, 0x3b, 0xcf, + 0xf3, 0xbc, 0x7f, 0xe7, 0xdd, 0x81, 0x1a, 0x3b, 0xfb, 0x8e, 0xfa, 0x52, 0xb4, 0x62, 0xce, 0x24, + 0x43, 0x28, 0x60, 0xfe, 0x90, 0xf2, 0x96, 0x78, 0x4d, 0xf8, 0x78, 0x18, 0xca, 0xd6, 0xf4, 0xc3, + 0xbd, 0xaa, 0x9c, 0xc5, 0xd4, 0x00, 0xf6, 0xaa, 0x22, 0xa6, 0x7e, 0xba, 0xb9, 0x23, 0xc3, 0x31, + 0x15, 0x92, 0x8c, 0xe3, 0x07, 0xcb, 0x95, 0x39, 0xba, 0x35, 0x60, 0x03, 0xa6, 0x97, 0x0f, 0xd4, + 0x2a, 0xf9, 0xda, 0xfc, 0xc5, 0x02, 0xfb, 0x88, 0x4a, 0x82, 0x3e, 0x85, 0xf2, 0x94, 0x72, 0x11, + 0xb2, 0xc8, 0xb5, 0x0e, 0xac, 0x7b, 0xd5, 0x87, 0xef, 0xb4, 0xd6, 0x2d, 0xb7, 0x4e, 0x13, 0x48, + 0xc7, 0x3e, 0x9f, 0x37, 0xb6, 0x70, 0xca, 0x40, 0x4f, 0x01, 0x7c, 0x4e, 0x89, 0xa4, 0x81, 0x47, + 0xa4, 0x5b, 0xd0, 0xfc, 0x77, 0xf3, 0xf8, 0x2f, 0x52, 0xa7, 0xb0, 0x63, 0x08, 0x6d, 0xa9, 0xd8, + 0x93, 0x38, 0x48, 0xd9, 0xc5, 0x6b, 0xb1, 0x0d, 0xa1, 0x2d, 0x9b, 0x7f, 0x15, 0xc1, 0xfe, 0x8a, + 0x05, 0x14, 0xdd, 0x86, 0x42, 0x18, 0x68, 0xe7, 0x9d, 0x4e, 0x69, 0x31, 0x6f, 0x14, 0xfa, 0x3d, + 0x5c, 0x08, 0x03, 0xf4, 0x10, 0xec, 0x31, 0x95, 0xc4, 0xb8, 0xe5, 0xe6, 0x09, 0xab, 0x0c, 0x98, + 0x98, 0x34, 0x16, 0x7d, 0x02, 0xb6, 0x4a, 0xab, 0x71, 0x66, 0x3f, 0x8f, 0xa3, 0x6c, 0x9e, 0xc4, + 0xd4, 0x4f, 0x79, 0x0a, 0x8f, 0x0e, 0xa1, 0x1a, 0x50, 0xe1, 0xf3, 0x30, 0x96, 0x2a, 0x93, 0xb6, + 0xa6, 0xdf, 0xdd, 0x44, 0xef, 0xad, 0xa0, 0x38, 0xcb, 0x43, 0x4f, 0xa1, 0x24, 0x24, 0x91, 0x13, + 0xe1, 0x6e, 0x6b, 0x85, 0xfa, 0x46, 0x07, 0x34, 0xca, 0xb8, 0x60, 0x38, 0xe8, 0x0b, 0xd8, 0x1d, + 0x93, 0x88, 0x0c, 0x28, 0xf7, 0x8c, 0x4a, 0x49, 0xab, 0xbc, 0x97, 0x1b, 0x7a, 0x82, 0x4c, 0x84, + 0x70, 0x6d, 0x9c, 0xdd, 0xa2, 0x43, 0x00, 0x22, 0x25, 0xf1, 0xbf, 0x1d, 0xd3, 0x48, 0xba, 0x65, + 0xad, 0xf2, 0x7e, 0xae, 0x2f, 0x54, 0xbe, 0x66, 0x7c, 0xd8, 0x5e, 0x82, 0x71, 0x86, 0x88, 0x3e, + 0x87, 0xaa, 0x4f, 0xb9, 0x0c, 0x5f, 0x85, 0x3e, 0x91, 0xd4, 0xad, 0x68, 0x9d, 0x46, 0x9e, 0x4e, + 0x77, 0x05, 0x33, 0x41, 0x65, 0x99, 0xcd, 0xdf, 0x0b, 0x50, 0x3e, 0xa1, 0x7c, 0x1a, 0xfa, 0x6f, + 0xb7, 0xdc, 0x4f, 0x2e, 0x95, 0x3b, 0xd7, 0x33, 0x63, 0x76, 0xad, 0xe2, 0x8f, 0xa1, 0x42, 0xa3, + 0x20, 0x66, 0x61, 0x24, 0x4d, 0xb9, 0x73, 0xbb, 0xe5, 0xd0, 0x60, 0xf0, 0x12, 0x8d, 0x0e, 0xa1, + 0x96, 0x74, 0xb1, 0x77, 0xa9, 0xd6, 0x07, 0x79, 0xf4, 0x6f, 0x34, 0xd0, 0x14, 0x69, 0x67, 0x92, + 0xd9, 0xa1, 0x1e, 0xd4, 0x62, 0x4e, 0xa7, 0x21, 0x9b, 0x08, 0x4f, 0x07, 0x51, 0xba, 0x56, 0x10, + 0x78, 0x27, 0x65, 0xa9, 0x5d, 0xf3, 0xa7, 0x02, 0x54, 0x52, 0x1f, 0xd1, 0x23, 0x93, 0x0e, 0x6b, + 0xb3, 0x43, 0x29, 0x56, 0x4b, 0x25, 0x99, 0x78, 0x04, 0xdb, 0x31, 0xe3, 0x52, 0xb8, 0x85, 0x83, + 0xe2, 0xa6, 0x9e, 0x3d, 0x66, 0x5c, 0x76, 0x59, 0xf4, 0x2a, 0x1c, 0xe0, 0x04, 0x8c, 0x5e, 0x42, + 0x75, 0x1a, 0x72, 0x39, 0x21, 0x23, 0x2f, 0x8c, 0x85, 0x5b, 0xd4, 0xdc, 0x0f, 0xae, 0x32, 0xd9, + 0x3a, 0x4d, 0xf0, 0xfd, 0xe3, 0xce, 0xee, 0x62, 0xde, 0x80, 0xe5, 0x56, 0x60, 0x30, 0x52, 0xfd, + 0x58, 0xec, 0x1d, 0x81, 0xb3, 0x3c, 0x41, 0xf7, 0x01, 0xa2, 0xa4, 0x45, 0xbd, 0x65, 0xd3, 0xd4, + 0x16, 0xf3, 0x86, 0x63, 0x1a, 0xb7, 0xdf, 0xc3, 0x8e, 0x01, 0xf4, 0x03, 0x84, 0xc0, 0x26, 0x41, + 0xc0, 0x75, 0x0b, 0x39, 0x58, 0xaf, 0x9b, 0xbf, 0x6e, 0x83, 0xfd, 0x82, 0x88, 0xe1, 0x4d, 0x8f, + 0x19, 0x65, 0x73, 0xad, 0xe9, 0xee, 0x03, 0x88, 0xa4, 0x94, 0x2a, 0x1c, 0x7b, 0x15, 0x8e, 0x29, + 0xb0, 0x0a, 0xc7, 0x00, 0x92, 0x70, 0xc4, 0x88, 0x49, 0xdd, 0x5f, 0x36, 0xd6, 0x6b, 0x74, 0x17, + 0xca, 0x11, 0x0b, 0x34, 0xbd, 0xa4, 0xe9, 0xb0, 0x98, 0x37, 0x4a, 0x6a, 0xa4, 0xf4, 0x7b, 0xb8, + 0xa4, 0x8e, 0xfa, 0x81, 0xba, 0xb7, 0x24, 0x8a, 0x98, 0x24, 0x6a, 0x28, 0x09, 0x73, 0xff, 0x73, + 0x1b, 0xab, 0xbd, 0x82, 0xa5, 0xf7, 0x36, 0xc3, 0x44, 0xa7, 0xf0, 0xff, 0xd4, 0xdf, 0xac, 0x60, + 0xe5, 0x4d, 0x04, 0x91, 0x51, 0xc8, 0x9c, 0x64, 0xe6, 0xa4, 0xb3, 0x79, 0x4e, 0xea, 0x0c, 0xe6, + 0xcd, 0xc9, 0x0e, 0xd4, 0x02, 0x2a, 0x42, 0x4e, 0x03, 0x7d, 0x03, 0xa9, 0x0b, 0x07, 0xd6, 0xbd, + 0xdd, 0x0d, 0xbf, 0x1e, 0x23, 0x42, 0xf1, 0x8e, 0xe1, 0xe8, 0x1d, 0x6a, 0x43, 0xc5, 0xf4, 0x8d, + 0x70, 0xab, 0xba, 0x77, 0xaf, 0x39, 0x1f, 0x97, 0xb4, 0x4b, 0x13, 0x64, 0xe7, 0x8d, 0x26, 0xc8, + 0x13, 0x80, 0x11, 0x1b, 0x78, 0x01, 0x0f, 0xa7, 0x94, 0xbb, 0x35, 0xcd, 0xdd, 0xcb, 0xe3, 0xf6, + 0x34, 0x02, 0x3b, 0x23, 0x36, 0x48, 0x96, 0xcd, 0x1f, 0x2c, 0xf8, 0xdf, 0x9a, 0x53, 0xe8, 0x63, + 0x28, 0x1b, 0xb7, 0xae, 0x7a, 0x04, 0x18, 0x1e, 0x4e, 0xb1, 0x68, 0x1f, 0x1c, 0x75, 0x47, 0xa8, + 0x10, 0x34, 0xb9, 0xfd, 0x0e, 0x5e, 0x7d, 0x40, 0x2e, 0x94, 0xc9, 0x28, 0x24, 0xea, 0xac, 0xa8, + 0xcf, 0xd2, 0x6d, 0xf3, 0xc7, 0x02, 0x94, 0x8d, 0xd8, 0x4d, 0x8f, 0x73, 0x63, 0x76, 0xed, 0x66, + 0x3d, 0x83, 0x9d, 0x24, 0x9d, 0xa6, 0x25, 0xec, 0xff, 0x4c, 0x6a, 0x35, 0xc1, 0x27, 0xed, 0xf0, + 0x0c, 0xec, 0x30, 0x26, 0x63, 0x33, 0xca, 0x73, 0x2d, 0xf7, 0x8f, 0xdb, 0x47, 0x5f, 0xc7, 0x49, + 0x67, 0x57, 0x16, 0xf3, 0x86, 0xad, 0x3e, 0x60, 0x4d, 0x6b, 0xfe, 0x5d, 0x80, 0x72, 0x77, 0x34, + 0x11, 0x92, 0xf2, 0x9b, 0x4e, 0x88, 0x31, 0xbb, 0x96, 0x90, 0x2e, 0x94, 0x39, 0x63, 0xd2, 0xf3, + 0xc9, 0x55, 0xb9, 0xc0, 0x8c, 0xc9, 0x6e, 0xbb, 0xb3, 0xab, 0x88, 0x6a, 0x90, 0x24, 0x7b, 0x5c, + 0x52, 0xd4, 0x2e, 0x41, 0x2f, 0xe1, 0x76, 0x3a, 0x7e, 0xcf, 0x18, 0x93, 0x42, 0x72, 0x12, 0x7b, + 0x43, 0x3a, 0x53, 0xff, 0xbc, 0xe2, 0xa6, 0x97, 0xc9, 0x61, 0xe4, 0xf3, 0x99, 0x4e, 0xd4, 0x73, + 0x3a, 0xc3, 0xb7, 0x8c, 0x40, 0x27, 0xe5, 0x3f, 0xa7, 0x33, 0x81, 0x3e, 0x83, 0x7d, 0xba, 0x84, + 0x29, 0x45, 0x6f, 0x44, 0xc6, 0xea, 0xc7, 0xe2, 0xf9, 0x23, 0xe6, 0x0f, 0xf5, 0x6c, 0xb3, 0xf1, + 0x1d, 0x9a, 0x95, 0xfa, 0x32, 0x41, 0x74, 0x15, 0xa0, 0xf9, 0xb3, 0x05, 0xa5, 0x13, 0xea, 0x73, + 0x2a, 0xdf, 0x6a, 0xc2, 0x1f, 0x5f, 0x4a, 0x78, 0x3d, 0xff, 0x5f, 0xac, 0xac, 0xae, 0xe5, 0xdb, + 0x5d, 0xbd, 0xc3, 0xf5, 0x5c, 0x5f, 0x3e, 0xb2, 0x3b, 0xfb, 0xe7, 0x17, 0xf5, 0xad, 0x3f, 0x2e, + 0xea, 0x5b, 0xff, 0x5c, 0xd4, 0xad, 0xef, 0x17, 0x75, 0xeb, 0x7c, 0x51, 0xb7, 0x7e, 0x5b, 0xd4, + 0xad, 0x3f, 0x17, 0x75, 0xeb, 0xac, 0xa4, 0xdf, 0xf3, 0x1f, 0xfd, 0x1b, 0x00, 0x00, 0xff, 0xff, + 0xc3, 0x47, 0xf4, 0x5b, 0x3f, 0x0c, 0x00, 0x00, } diff --git a/api/objects.proto b/api/objects.proto index 2864637dd8..e948493e46 100644 --- a/api/objects.proto +++ b/api/objects.proto @@ -226,3 +226,15 @@ message Cluster { // a new key is allocated on key rotation. uint64 encryption_key_lamport_clock = 6; } + +// Secret +message Secret { + string id = 1 [(gogoproto.customname) = "ID"]; + + Meta meta = 2 [(gogoproto.nullable) = false]; + + SecretSpec spec = 3 [(gogoproto.nullable) = false]; + + // Version is a hash of the secret. + string version = 4; +} diff --git a/api/raft.pb.go b/api/raft.pb.go index c597b44d85..d1d6102557 100644 --- a/api/raft.pb.go +++ b/api/raft.pb.go @@ -173,6 +173,7 @@ type StoreAction struct { // *StoreAction_Task // *StoreAction_Network // *StoreAction_Cluster + // *StoreAction_Secret Target isStoreAction_Target `protobuf_oneof:"target"` } @@ -201,12 +202,16 @@ type StoreAction_Network struct { type StoreAction_Cluster struct { Cluster *Cluster `protobuf:"bytes,6,opt,name=cluster,oneof"` } +type StoreAction_Secret struct { + Secret *Secret `protobuf:"bytes,7,opt,name=secret,oneof"` +} func (*StoreAction_Node) isStoreAction_Target() {} func (*StoreAction_Service) isStoreAction_Target() {} func (*StoreAction_Task) isStoreAction_Target() {} func (*StoreAction_Network) isStoreAction_Target() {} func (*StoreAction_Cluster) isStoreAction_Target() {} +func (*StoreAction_Secret) isStoreAction_Target() {} func (m *StoreAction) GetTarget() isStoreAction_Target { if m != nil { @@ -250,6 +255,13 @@ func (m *StoreAction) GetCluster() *Cluster { return nil } +func (m *StoreAction) GetSecret() *Secret { + if x, ok := m.GetTarget().(*StoreAction_Secret); ok { + return x.Secret + } + return nil +} + // XXX_OneofFuncs is for the internal use of the proto package. func (*StoreAction) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { return _StoreAction_OneofMarshaler, _StoreAction_OneofUnmarshaler, _StoreAction_OneofSizer, []interface{}{ @@ -258,6 +270,7 @@ func (*StoreAction) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) e (*StoreAction_Task)(nil), (*StoreAction_Network)(nil), (*StoreAction_Cluster)(nil), + (*StoreAction_Secret)(nil), } } @@ -290,6 +303,11 @@ func _StoreAction_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { if err := b.EncodeMessage(x.Cluster); err != nil { return err } + case *StoreAction_Secret: + _ = b.EncodeVarint(7<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Secret); err != nil { + return err + } case nil: default: return fmt.Errorf("StoreAction.Target has unexpected type %T", x) @@ -340,6 +358,14 @@ func _StoreAction_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Bu err := b.DecodeMessage(msg) m.Target = &StoreAction_Cluster{msg} return true, err + case 7: // target.secret + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(Secret) + err := b.DecodeMessage(msg) + m.Target = &StoreAction_Secret{msg} + return true, err default: return false, nil } @@ -374,6 +400,11 @@ func _StoreAction_OneofSizer(msg proto.Message) (n int) { n += proto.SizeVarint(6<<3 | proto.WireBytes) n += proto.SizeVarint(uint64(s)) n += s + case *StoreAction_Secret: + s := proto.Size(x.Secret) + n += proto.SizeVarint(7<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s case nil: default: panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) @@ -619,6 +650,12 @@ func (m *StoreAction) Copy() *StoreAction { Cluster: m.GetCluster().Copy(), } + o.Target = i + case *StoreAction_Secret: + i := &StoreAction_Secret{ + Secret: m.GetSecret().Copy(), + } + o.Target = i } @@ -741,7 +778,7 @@ func (this *StoreAction) GoString() string { if this == nil { return "nil" } - s := make([]string, 0, 10) + s := make([]string, 0, 11) s = append(s, "&api.StoreAction{") s = append(s, "Action: "+fmt.Sprintf("%#v", this.Action)+",\n") if this.Target != nil { @@ -790,6 +827,14 @@ func (this *StoreAction_Cluster) GoString() string { `Cluster:` + fmt.Sprintf("%#v", this.Cluster) + `}`}, ", ") return s } +func (this *StoreAction_Secret) GoString() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&api.StoreAction_Secret{` + + `Secret:` + fmt.Sprintf("%#v", this.Secret) + `}`}, ", ") + return s +} func valueToGoStringRaft(v interface{}, typ string) string { rv := reflect.ValueOf(v) if rv.IsNil() { @@ -1412,6 +1457,20 @@ func (m *StoreAction_Cluster) MarshalTo(data []byte) (int, error) { } return i, nil } +func (m *StoreAction_Secret) MarshalTo(data []byte) (int, error) { + i := 0 + if m.Secret != nil { + data[i] = 0x3a + i++ + i = encodeVarintRaft(data, i, uint64(m.Secret.Size())) + n10, err := m.Secret.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n10 + } + return i, nil +} func encodeFixed64Raft(data []byte, offset int, v uint64) int { data[offset] = uint8(v) data[offset+1] = uint8(v >> 8) @@ -1868,6 +1927,15 @@ func (m *StoreAction_Cluster) Size() (n int) { } return n } +func (m *StoreAction_Secret) Size() (n int) { + var l int + _ = l + if m.Secret != nil { + l = m.Secret.Size() + n += 1 + l + sovRaft(uint64(l)) + } + return n +} func sovRaft(x uint64) (n int) { for { @@ -2047,6 +2115,16 @@ func (this *StoreAction_Cluster) String() string { }, "") return s } +func (this *StoreAction_Secret) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&StoreAction_Secret{`, + `Secret:` + strings.Replace(fmt.Sprintf("%v", this.Secret), "Secret", "Secret", 1) + `,`, + `}`, + }, "") + return s +} func valueToStringRaft(v interface{}) string { rv := reflect.ValueOf(v) if rv.IsNil() { @@ -3133,6 +3211,38 @@ func (m *StoreAction) Unmarshal(data []byte) error { } m.Target = &StoreAction_Cluster{v} iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Secret", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRaft + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthRaft + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &Secret{} + if err := v.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + m.Target = &StoreAction_Secret{v} + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipRaft(data[iNdEx:]) @@ -3262,60 +3372,61 @@ var ( func init() { proto.RegisterFile("raft.proto", fileDescriptorRaft) } var fileDescriptorRaft = []byte{ - // 868 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x8c, 0x95, 0x4f, 0x73, 0xdb, 0x44, - 0x18, 0xc6, 0xb5, 0xb2, 0xaa, 0xc0, 0xeb, 0x26, 0xce, 0x6c, 0x48, 0x70, 0x45, 0x47, 0x51, 0x55, - 0x66, 0xea, 0x76, 0x88, 0x3c, 0x88, 0x43, 0x19, 0xe0, 0x12, 0x27, 0x9e, 0xa9, 0x69, 0xeb, 0x74, - 0x94, 0x04, 0x7a, 0x0b, 0xb2, 0xb4, 0x71, 0x85, 0x63, 0xad, 0xd9, 0x5d, 0x3b, 0xc3, 0x85, 0xe9, - 0x91, 0xc9, 0x95, 0x19, 0xe0, 0xd2, 0x13, 0x9c, 0xfb, 0x01, 0xf8, 0x04, 0x19, 0x4e, 0xdc, 0xe0, - 0x14, 0x88, 0x3f, 0x00, 0xf0, 0x11, 0x98, 0xd5, 0x9f, 0x24, 0x38, 0x8a, 0xe3, 0x8b, 0x2d, 0xef, - 0xfe, 0x9e, 0xe7, 0xd9, 0x7d, 0x57, 0xef, 0x1a, 0x80, 0xf9, 0xfb, 0xc2, 0x19, 0x30, 0x2a, 0x28, - 0xc6, 0x21, 0x0d, 0x7a, 0x84, 0x39, 0xfc, 0xd0, 0x67, 0xfd, 0x5e, 0x24, 0x9c, 0xd1, 0xfb, 0xc6, - 0x3c, 0xed, 0x7c, 0x49, 0x02, 0xc1, 0x53, 0xc4, 0x28, 0x8b, 0xaf, 0x07, 0x24, 0xff, 0xb1, 0xd6, - 0x8d, 0xc4, 0x8b, 0x61, 0xc7, 0x09, 0x68, 0xbf, 0x1e, 0x50, 0x46, 0x28, 0xaf, 0x13, 0x11, 0x84, - 0x75, 0x69, 0x99, 0x7c, 0x0c, 0x3a, 0xf5, 0x73, 0x7b, 0xe3, 0xad, 0x2e, 0xed, 0xd2, 0xe4, 0xb1, - 0x2e, 0x9f, 0xb2, 0xd1, 0xa5, 0xc1, 0xc1, 0xb0, 0x1b, 0xc5, 0xf5, 0xf4, 0x2b, 0x1d, 0xb4, 0x5f, - 0x23, 0x00, 0xcf, 0xdf, 0x17, 0x4f, 0x49, 0xbf, 0x43, 0x18, 0xbe, 0x0b, 0x73, 0xd2, 0x67, 0x2f, - 0x0a, 0xab, 0xc8, 0x42, 0x35, 0xad, 0x01, 0xe3, 0x93, 0x55, 0x5d, 0x02, 0xad, 0x4d, 0x4f, 0x97, - 0x53, 0xad, 0x50, 0x42, 0x31, 0x0d, 0x89, 0x84, 0x54, 0x0b, 0xd5, 0xde, 0x4c, 0xa1, 0x36, 0x0d, - 0x89, 0x84, 0xe4, 0x54, 0x2b, 0xc4, 0x18, 0x34, 0x3f, 0x0c, 0x59, 0xb5, 0x24, 0x09, 0x2f, 0x79, - 0xc6, 0x0d, 0xd0, 0xb9, 0xf0, 0xc5, 0x90, 0x57, 0x35, 0x0b, 0xd5, 0xca, 0xee, 0xbb, 0xce, 0xe5, - 0x3a, 0x38, 0xe7, 0xab, 0xd9, 0x4e, 0xd8, 0x86, 0x76, 0x7c, 0xb2, 0xaa, 0x78, 0x99, 0xd2, 0xbe, - 0x03, 0xe5, 0x4f, 0x69, 0x14, 0x7b, 0xe4, 0xab, 0x21, 0xe1, 0xe2, 0x2c, 0x06, 0x9d, 0xc7, 0xd8, - 0xdf, 0x23, 0xb8, 0x99, 0x32, 0x7c, 0x40, 0x63, 0x4e, 0x66, 0xdb, 0xd5, 0x87, 0x30, 0xd7, 0x4f, - 0x62, 0x79, 0x55, 0xb5, 0x4a, 0xb5, 0xb2, 0x6b, 0x4e, 0x5f, 0x9d, 0x97, 0xe3, 0xf8, 0x1e, 0x54, - 0x18, 0xe9, 0xd3, 0x11, 0x09, 0xf7, 0x72, 0x87, 0x92, 0x55, 0xaa, 0x69, 0xde, 0x42, 0x36, 0x9c, - 0x0a, 0xb8, 0xdd, 0x80, 0x9b, 0x4f, 0x88, 0x3f, 0x22, 0xf9, 0xe2, 0x5d, 0xd0, 0x64, 0xb5, 0x92, - 0x45, 0x5d, 0x9f, 0x97, 0xb0, 0x76, 0x05, 0xe6, 0x33, 0x8f, 0x74, 0x73, 0xf6, 0x13, 0xb8, 0xf5, - 0x8c, 0xd1, 0x80, 0x70, 0x9e, 0xb2, 0x9c, 0xfb, 0xdd, 0xb3, 0x84, 0xfb, 0x72, 0x53, 0xc9, 0x48, - 0x16, 0x52, 0x71, 0xd2, 0xd7, 0xc5, 0xc9, 0xc1, 0x7c, 0xfe, 0x23, 0xed, 0xe5, 0x0f, 0xb6, 0x62, - 0xdf, 0x06, 0xa3, 0xc8, 0x2d, 0xcb, 0xfa, 0x04, 0x96, 0x3d, 0xc2, 0xe9, 0xc1, 0x88, 0xac, 0x87, - 0x21, 0x93, 0x50, 0x96, 0x33, 0x4b, 0x85, 0xed, 0xf7, 0x60, 0x65, 0x52, 0x9d, 0x1d, 0x50, 0xd1, - 0x29, 0xee, 0xc3, 0x52, 0x2b, 0x16, 0x84, 0xc5, 0xfe, 0x81, 0xf4, 0xc9, 0x93, 0x56, 0x40, 0x3d, - 0x0b, 0xd1, 0xc7, 0x27, 0xab, 0x6a, 0x6b, 0xd3, 0x53, 0xa3, 0x10, 0x3f, 0x04, 0xdd, 0x0f, 0x44, - 0x44, 0xe3, 0xec, 0xf4, 0x56, 0x8b, 0xaa, 0xb9, 0x2d, 0x28, 0x23, 0xeb, 0x09, 0xe6, 0x65, 0xb8, - 0xfd, 0xa7, 0x0a, 0xe5, 0x0b, 0xe3, 0xf8, 0xe3, 0x33, 0x23, 0x19, 0xb2, 0xe0, 0xde, 0xbd, 0xc6, - 0xe8, 0x71, 0x14, 0x87, 0xb9, 0x19, 0x76, 0xb2, 0x13, 0x55, 0x93, 0x62, 0x57, 0x8b, 0xa4, 0xb2, - 0x4f, 0x1e, 0x29, 0xe9, 0x69, 0xe2, 0x87, 0x30, 0xc7, 0x09, 0x1b, 0x45, 0x01, 0x49, 0x1a, 0xa5, - 0xec, 0xbe, 0x53, 0x98, 0x96, 0x22, 0x8f, 0x14, 0x2f, 0xa7, 0x65, 0x90, 0xf0, 0x79, 0x2f, 0x6b, - 0xa4, 0xc2, 0xa0, 0x1d, 0x9f, 0xf7, 0x64, 0x90, 0xe4, 0x64, 0x50, 0x4c, 0xc4, 0x21, 0x65, 0xbd, - 0xea, 0x8d, 0xab, 0x83, 0xda, 0x29, 0x22, 0x83, 0x32, 0x5a, 0x0a, 0x83, 0x83, 0x21, 0x17, 0x84, - 0x55, 0xf5, 0xab, 0x85, 0x1b, 0x29, 0x22, 0x85, 0x19, 0xdd, 0x78, 0x03, 0x74, 0xe1, 0xb3, 0x2e, - 0x11, 0x0f, 0xfe, 0x41, 0x50, 0x99, 0x28, 0x18, 0xbe, 0x07, 0x73, 0xbb, 0xed, 0xc7, 0xed, 0xad, - 0xcf, 0xdb, 0x8b, 0x8a, 0x61, 0x1c, 0xbd, 0xb2, 0x56, 0x26, 0x88, 0xdd, 0xb8, 0x17, 0xd3, 0xc3, - 0x18, 0xbb, 0xb0, 0xb4, 0xbd, 0xb3, 0xe5, 0x35, 0xf7, 0xd6, 0x37, 0x76, 0x5a, 0x5b, 0xed, 0xbd, - 0x0d, 0xaf, 0xb9, 0xbe, 0xd3, 0x5c, 0x44, 0xc6, 0xad, 0xa3, 0x57, 0xd6, 0xf2, 0x84, 0x68, 0x83, - 0x11, 0x5f, 0x90, 0x4b, 0x9a, 0xdd, 0x67, 0x9b, 0x52, 0xa3, 0x16, 0x6a, 0x76, 0x07, 0x61, 0x91, - 0xc6, 0x6b, 0x3e, 0xdd, 0xfa, 0xac, 0xb9, 0x58, 0x2a, 0xd4, 0x78, 0x49, 0x5f, 0x1b, 0x6f, 0x7f, - 0xfb, 0x93, 0xa9, 0xfc, 0xf2, 0xb3, 0x39, 0xb9, 0x3b, 0xf7, 0x3b, 0x15, 0x34, 0xf9, 0xd2, 0xe2, - 0x23, 0x04, 0xf8, 0x72, 0x3f, 0xe1, 0xb5, 0xa2, 0x1a, 0x5e, 0xd9, 0xc5, 0x86, 0x33, 0x2b, 0x9e, - 0xb5, 0xe9, 0xf2, 0xaf, 0xaf, 0xff, 0xfe, 0x51, 0xad, 0xc0, 0x7c, 0xc2, 0xaf, 0xf5, 0xfd, 0xd8, - 0xef, 0x12, 0x86, 0xbf, 0x81, 0x85, 0xff, 0xf7, 0x1f, 0xbe, 0x5f, 0x78, 0xe5, 0x14, 0x75, 0xb8, - 0xf1, 0x60, 0x16, 0x74, 0x6a, 0xbe, 0xfb, 0x3b, 0x82, 0x85, 0xf3, 0xfb, 0x8c, 0xbf, 0x88, 0x06, - 0xf8, 0x0b, 0xd0, 0xe4, 0x4d, 0x8d, 0x0b, 0xbb, 0xf5, 0xc2, 0x3d, 0x6f, 0x58, 0x57, 0x03, 0xd3, - 0x37, 0x1d, 0xc0, 0x8d, 0xe4, 0xbe, 0xc4, 0x85, 0x0e, 0x17, 0xaf, 0x63, 0xe3, 0xce, 0x14, 0x62, - 0x6a, 0x48, 0xe3, 0xf6, 0xf1, 0xa9, 0xa9, 0xfc, 0x71, 0x6a, 0x2a, 0xff, 0x9e, 0x9a, 0xe8, 0xe5, - 0xd8, 0x44, 0xc7, 0x63, 0x13, 0xfd, 0x36, 0x36, 0xd1, 0x5f, 0x63, 0x13, 0x3d, 0x2f, 0x3d, 0xd7, - 0x3a, 0x7a, 0xf2, 0x77, 0xfb, 0xc1, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xd7, 0x61, 0x3c, 0x43, - 0x06, 0x08, 0x00, 0x00, + // 890 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x8c, 0x95, 0xcf, 0x73, 0xdb, 0x44, + 0x14, 0xc7, 0xbd, 0xb2, 0x2a, 0xc3, 0x73, 0x13, 0x67, 0x36, 0x24, 0xb8, 0xa2, 0xa3, 0xb8, 0x2a, + 0x33, 0x75, 0x3b, 0x44, 0x1e, 0x0c, 0x33, 0x65, 0x80, 0x4b, 0x9c, 0x78, 0x26, 0xa6, 0xad, 0xd3, + 0x51, 0x12, 0xe8, 0x2d, 0xc8, 0xd2, 0xc6, 0x15, 0x8e, 0xb5, 0x66, 0x77, 0xed, 0x0c, 0x17, 0xa6, + 0x47, 0x26, 0x57, 0x86, 0x1f, 0x97, 0x9e, 0xe0, 0xdc, 0x3f, 0x80, 0xbf, 0x20, 0xc3, 0x89, 0x1b, + 0x9c, 0x32, 0xc4, 0x7f, 0x00, 0xf0, 0x27, 0x30, 0xbb, 0x92, 0x92, 0xd4, 0x51, 0x1c, 0x5f, 0x92, + 0xf5, 0xea, 0xf3, 0x7d, 0xdf, 0x7d, 0x6f, 0xf5, 0x9e, 0x00, 0x98, 0xb7, 0x2f, 0x9c, 0x01, 0xa3, + 0x82, 0x62, 0x1c, 0x50, 0xbf, 0x47, 0x98, 0xc3, 0x0f, 0x3d, 0xd6, 0xef, 0x85, 0xc2, 0x19, 0xbd, + 0x6f, 0xce, 0xd1, 0xce, 0x57, 0xc4, 0x17, 0x3c, 0x46, 0xcc, 0xa2, 0xf8, 0x66, 0x40, 0xd2, 0x1f, + 0xab, 0xdd, 0x50, 0x3c, 0x1f, 0x76, 0x1c, 0x9f, 0xf6, 0x6b, 0x3e, 0x65, 0x84, 0xf2, 0x1a, 0x11, + 0x7e, 0x50, 0x93, 0x21, 0xd5, 0x9f, 0x41, 0xa7, 0x76, 0x1e, 0xde, 0x7c, 0xab, 0x4b, 0xbb, 0x54, + 0x2d, 0x6b, 0x72, 0x95, 0xec, 0x2e, 0x0e, 0x0e, 0x86, 0xdd, 0x30, 0xaa, 0xc5, 0xff, 0xe2, 0x4d, + 0xfb, 0x15, 0x02, 0x70, 0xbd, 0x7d, 0xf1, 0x84, 0xf4, 0x3b, 0x84, 0xe1, 0xbb, 0x50, 0x90, 0x71, + 0xf6, 0xc2, 0xa0, 0x8c, 0x2a, 0xa8, 0xaa, 0x37, 0x60, 0x7c, 0xb2, 0x62, 0x48, 0xa0, 0xb5, 0xe1, + 0x1a, 0xf2, 0x51, 0x2b, 0x90, 0x50, 0x44, 0x03, 0x22, 0x21, 0xad, 0x82, 0xaa, 0x6f, 0xc6, 0x50, + 0x9b, 0x06, 0x44, 0x42, 0xf2, 0x51, 0x2b, 0xc0, 0x18, 0x74, 0x2f, 0x08, 0x58, 0x39, 0x2f, 0x09, + 0x57, 0xad, 0x71, 0x03, 0x0c, 0x2e, 0x3c, 0x31, 0xe4, 0x65, 0xbd, 0x82, 0xaa, 0xc5, 0xfa, 0xbb, + 0xce, 0xe5, 0x3a, 0x38, 0xe7, 0xa7, 0xd9, 0x56, 0x6c, 0x43, 0x3f, 0x3e, 0x59, 0xc9, 0xb9, 0x89, + 0xd2, 0xbe, 0x03, 0xc5, 0xcf, 0x68, 0x18, 0xb9, 0xe4, 0xeb, 0x21, 0xe1, 0xe2, 0xcc, 0x06, 0x9d, + 0xdb, 0xd8, 0x3f, 0x22, 0xb8, 0x19, 0x33, 0x7c, 0x40, 0x23, 0x4e, 0x66, 0xcb, 0xea, 0x23, 0x28, + 0xf4, 0x95, 0x2d, 0x2f, 0x6b, 0x95, 0x7c, 0xb5, 0x58, 0xb7, 0xa6, 0x9f, 0xce, 0x4d, 0x71, 0x7c, + 0x0f, 0x4a, 0x8c, 0xf4, 0xe9, 0x88, 0x04, 0x7b, 0x69, 0x84, 0x7c, 0x25, 0x5f, 0xd5, 0xdd, 0xf9, + 0x64, 0x3b, 0x16, 0x70, 0xbb, 0x01, 0x37, 0x1f, 0x13, 0x6f, 0x44, 0xd2, 0xc3, 0xd7, 0x41, 0x97, + 0xd5, 0x52, 0x87, 0xba, 0xde, 0x4f, 0xb1, 0x76, 0x09, 0xe6, 0x92, 0x18, 0x71, 0x72, 0xf6, 0x63, + 0xb8, 0xf5, 0x94, 0x51, 0x9f, 0x70, 0x1e, 0xb3, 0x9c, 0x7b, 0xdd, 0x33, 0x87, 0xfb, 0x32, 0x29, + 0xb5, 0x93, 0x98, 0x94, 0x9c, 0xf8, 0x75, 0x71, 0x52, 0x30, 0x7d, 0xfe, 0xb1, 0xfe, 0xe2, 0x27, + 0x3b, 0x67, 0xdf, 0x06, 0x33, 0x2b, 0x5a, 0xe2, 0xf5, 0x29, 0x2c, 0xb9, 0x84, 0xd3, 0x83, 0x11, + 0x59, 0x0b, 0x02, 0x26, 0xa1, 0xc4, 0x67, 0x96, 0x0a, 0xdb, 0xef, 0xc1, 0xf2, 0xa4, 0x3a, 0xb9, + 0xa0, 0xac, 0x5b, 0xdc, 0x87, 0xc5, 0x56, 0x24, 0x08, 0x8b, 0xbc, 0x03, 0x19, 0x27, 0x75, 0x5a, + 0x06, 0xed, 0xcc, 0xc4, 0x18, 0x9f, 0xac, 0x68, 0xad, 0x0d, 0x57, 0x0b, 0x03, 0xfc, 0x10, 0x0c, + 0xcf, 0x17, 0x21, 0x8d, 0x92, 0xdb, 0x5b, 0xc9, 0xaa, 0xe6, 0xb6, 0xa0, 0x8c, 0xac, 0x29, 0xcc, + 0x4d, 0x70, 0xfb, 0x87, 0x3c, 0x14, 0x2f, 0xec, 0xe3, 0x4f, 0xce, 0x02, 0x49, 0x93, 0xf9, 0xfa, + 0xdd, 0x6b, 0x02, 0x3d, 0x0a, 0xa3, 0x20, 0x0d, 0x86, 0x9d, 0xe4, 0x46, 0x35, 0x55, 0xec, 0x72, + 0x96, 0x54, 0xf6, 0xc9, 0x66, 0x2e, 0xbe, 0x4d, 0xfc, 0x10, 0x0a, 0x9c, 0xb0, 0x51, 0xe8, 0x13, + 0xd5, 0x28, 0xc5, 0xfa, 0x3b, 0x99, 0x6e, 0x31, 0xb2, 0x99, 0x73, 0x53, 0x5a, 0x1a, 0x09, 0x8f, + 0xf7, 0x92, 0x46, 0xca, 0x34, 0xda, 0xf1, 0x78, 0x4f, 0x1a, 0x49, 0x4e, 0x1a, 0x45, 0x44, 0x1c, + 0x52, 0xd6, 0x2b, 0xdf, 0xb8, 0xda, 0xa8, 0x1d, 0x23, 0xd2, 0x28, 0xa1, 0xa5, 0xd0, 0x3f, 0x18, + 0x72, 0x41, 0x58, 0xd9, 0xb8, 0x5a, 0xb8, 0x1e, 0x23, 0x52, 0x98, 0xd0, 0xf8, 0x43, 0x30, 0x38, + 0xf1, 0x19, 0x11, 0xe5, 0x82, 0xd2, 0x99, 0xd9, 0x99, 0x49, 0x62, 0x53, 0xb6, 0xb7, 0x5a, 0x35, + 0xde, 0x00, 0x43, 0x78, 0xac, 0x4b, 0xc4, 0x83, 0x7f, 0x11, 0x94, 0x26, 0xca, 0x8c, 0xef, 0x41, + 0x61, 0xb7, 0xfd, 0xa8, 0xbd, 0xf5, 0x45, 0x7b, 0x21, 0x67, 0x9a, 0x47, 0x2f, 0x2b, 0xcb, 0x13, + 0xc4, 0x6e, 0xd4, 0x8b, 0xe8, 0x61, 0x84, 0xeb, 0xb0, 0xb8, 0xbd, 0xb3, 0xe5, 0x36, 0xf7, 0xd6, + 0xd6, 0x77, 0x5a, 0x5b, 0xed, 0xbd, 0x75, 0xb7, 0xb9, 0xb6, 0xd3, 0x5c, 0x40, 0xe6, 0xad, 0xa3, + 0x97, 0x95, 0xa5, 0x09, 0xd1, 0x3a, 0x23, 0x9e, 0x20, 0x97, 0x34, 0xbb, 0x4f, 0x37, 0xa4, 0x46, + 0xcb, 0xd4, 0xec, 0x0e, 0x82, 0x2c, 0x8d, 0xdb, 0x7c, 0xb2, 0xf5, 0x79, 0x73, 0x21, 0x9f, 0xa9, + 0x71, 0xd5, 0x34, 0x30, 0xdf, 0xfe, 0xee, 0x17, 0x2b, 0xf7, 0xdb, 0xaf, 0xd6, 0x64, 0x76, 0xf5, + 0xef, 0x35, 0xd0, 0xe5, 0xab, 0x8e, 0x8f, 0x10, 0xe0, 0xcb, 0x5d, 0x88, 0x57, 0xb3, 0x2a, 0x78, + 0x65, 0xef, 0x9b, 0xce, 0xac, 0x78, 0xd2, 0xdc, 0x4b, 0xbf, 0xbf, 0xfa, 0xe7, 0x67, 0xad, 0x04, + 0x73, 0x8a, 0x5f, 0xed, 0x7b, 0x91, 0xd7, 0x25, 0x0c, 0x7f, 0x0b, 0xf3, 0xaf, 0x77, 0x2d, 0xbe, + 0x9f, 0x39, 0xa8, 0xb2, 0xe6, 0x82, 0xf9, 0x60, 0x16, 0x74, 0xaa, 0x7f, 0xfd, 0x4f, 0x04, 0xf3, + 0xe7, 0x53, 0x90, 0x3f, 0x0f, 0x07, 0xf8, 0x4b, 0xd0, 0xe5, 0x7c, 0xc7, 0x99, 0x3d, 0x7e, 0xe1, + 0xeb, 0x60, 0x56, 0xae, 0x06, 0xa6, 0x27, 0xed, 0xc3, 0x0d, 0x35, 0x65, 0x71, 0x66, 0x84, 0x8b, + 0x43, 0xdc, 0xbc, 0x33, 0x85, 0x98, 0x6a, 0xd2, 0xb8, 0x7d, 0x7c, 0x6a, 0xe5, 0xfe, 0x3a, 0xb5, + 0x72, 0xff, 0x9d, 0x5a, 0xe8, 0xc5, 0xd8, 0x42, 0xc7, 0x63, 0x0b, 0xfd, 0x31, 0xb6, 0xd0, 0xdf, + 0x63, 0x0b, 0x3d, 0xcb, 0x3f, 0xd3, 0x3b, 0x86, 0xfa, 0x48, 0x7f, 0xf0, 0x7f, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x53, 0x4c, 0x9e, 0xad, 0x3c, 0x08, 0x00, 0x00, } diff --git a/api/raft.proto b/api/raft.proto index e5a0ffb4d8..e1d9c19568 100644 --- a/api/raft.proto +++ b/api/raft.proto @@ -124,5 +124,6 @@ message StoreAction { Task task = 4; Network network = 5; Cluster cluster = 6; + Secret secret = 7; } } diff --git a/api/snapshot.pb.go b/api/snapshot.pb.go index a6f49f95c0..f57e70ea8b 100644 --- a/api/snapshot.pb.go +++ b/api/snapshot.pb.go @@ -49,6 +49,7 @@ type StoreSnapshot struct { Networks []*Network `protobuf:"bytes,3,rep,name=networks" json:"networks,omitempty"` Tasks []*Task `protobuf:"bytes,4,rep,name=tasks" json:"tasks,omitempty"` Clusters []*Cluster `protobuf:"bytes,5,rep,name=clusters" json:"clusters,omitempty"` + Secrets []*Secret `protobuf:"bytes,6,rep,name=secrets" json:"secrets,omitempty"` } func (m *StoreSnapshot) Reset() { *m = StoreSnapshot{} } @@ -124,6 +125,13 @@ func (m *StoreSnapshot) Copy() *StoreSnapshot { } } + if m.Secrets != nil { + o.Secrets = make([]*Secret, 0, len(m.Secrets)) + for _, v := range m.Secrets { + o.Secrets = append(o.Secrets, v.Copy()) + } + } + return o } @@ -169,7 +177,7 @@ func (this *StoreSnapshot) GoString() string { if this == nil { return "nil" } - s := make([]string, 0, 9) + s := make([]string, 0, 10) s = append(s, "&api.StoreSnapshot{") if this.Nodes != nil { s = append(s, "Nodes: "+fmt.Sprintf("%#v", this.Nodes)+",\n") @@ -186,6 +194,9 @@ func (this *StoreSnapshot) GoString() string { if this.Clusters != nil { s = append(s, "Clusters: "+fmt.Sprintf("%#v", this.Clusters)+",\n") } + if this.Secrets != nil { + s = append(s, "Secrets: "+fmt.Sprintf("%#v", this.Secrets)+",\n") + } s = append(s, "}") return strings.Join(s, "") } @@ -315,6 +326,18 @@ func (m *StoreSnapshot) MarshalTo(data []byte) (int, error) { i += n } } + if len(m.Secrets) > 0 { + for _, msg := range m.Secrets { + data[i] = 0x32 + i++ + i = encodeVarintSnapshot(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } return i, nil } @@ -455,6 +478,12 @@ func (m *StoreSnapshot) Size() (n int) { n += 1 + l + sovSnapshot(uint64(l)) } } + if len(m.Secrets) > 0 { + for _, e := range m.Secrets { + l = e.Size() + n += 1 + l + sovSnapshot(uint64(l)) + } + } return n } @@ -511,6 +540,7 @@ func (this *StoreSnapshot) String() string { `Networks:` + strings.Replace(fmt.Sprintf("%v", this.Networks), "Network", "Network", 1) + `,`, `Tasks:` + strings.Replace(fmt.Sprintf("%v", this.Tasks), "Task", "Task", 1) + `,`, `Clusters:` + strings.Replace(fmt.Sprintf("%v", this.Clusters), "Cluster", "Cluster", 1) + `,`, + `Secrets:` + strings.Replace(fmt.Sprintf("%v", this.Secrets), "Secret", "Secret", 1) + `,`, `}`, }, "") return s @@ -730,6 +760,37 @@ func (m *StoreSnapshot) Unmarshal(data []byte) error { return err } iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Secrets", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSnapshot + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthSnapshot + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Secrets = append(m.Secrets, &Secret{}) + if err := m.Secrets[len(m.Secrets)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipSnapshot(data[iNdEx:]) @@ -1089,30 +1150,31 @@ var ( func init() { proto.RegisterFile("snapshot.proto", fileDescriptorSnapshot) } var fileDescriptorSnapshot = []byte{ - // 396 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x7c, 0x92, 0xbd, 0x6e, 0xdb, 0x30, - 0x14, 0x85, 0x45, 0xf9, 0x47, 0x06, 0x0d, 0xbb, 0x2d, 0xd1, 0x81, 0x70, 0x0b, 0xd6, 0x55, 0x3b, - 0x78, 0x52, 0x5b, 0x77, 0x68, 0x97, 0x76, 0x70, 0xa6, 0x0c, 0xf1, 0x40, 0x07, 0x46, 0x56, 0x59, - 0xa2, 0x6d, 0x45, 0x91, 0x68, 0x90, 0x8c, 0xbc, 0xe6, 0x39, 0xf2, 0x44, 0x1e, 0x33, 0x66, 0x0a, - 0x62, 0x2d, 0x59, 0xf3, 0x08, 0x81, 0x44, 0x49, 0x30, 0x10, 0x39, 0x1b, 0x75, 0xf1, 0x9d, 0x73, - 0xae, 0x2e, 0x0e, 0xec, 0xcb, 0xd8, 0xdd, 0xc8, 0x35, 0x57, 0xce, 0x46, 0x70, 0xc5, 0x11, 0xf2, - 0xb9, 0x17, 0x32, 0xe1, 0xc8, 0xad, 0x2b, 0xa2, 0x30, 0x50, 0x4e, 0xf2, 0x6b, 0xd0, 0xe3, 0x8b, - 0x4b, 0xe6, 0x29, 0xa9, 0x91, 0x01, 0x14, 0xee, 0xb2, 0xc0, 0x07, 0x1f, 0x57, 0x7c, 0xc5, 0xf3, - 0xe7, 0x8f, 0xec, 0xa5, 0xa7, 0xf6, 0xad, 0x09, 0x7b, 0x33, 0xc5, 0x05, 0x9b, 0x15, 0xe6, 0xc8, - 0x81, 0xad, 0x98, 0xfb, 0x4c, 0x62, 0x30, 0x6c, 0x8c, 0xba, 0x63, 0xec, 0xbc, 0x8e, 0x71, 0xa6, - 0xdc, 0x67, 0x54, 0x63, 0xe8, 0x0f, 0xec, 0x48, 0x26, 0x92, 0xc0, 0x63, 0x12, 0x9b, 0xb9, 0xe4, - 0x53, 0x9d, 0x64, 0xa6, 0x19, 0x5a, 0xc1, 0x99, 0x30, 0x66, 0x6a, 0xcb, 0x45, 0x28, 0x71, 0xe3, - 0xb8, 0x70, 0xaa, 0x19, 0x5a, 0xc1, 0xd9, 0x86, 0xca, 0x95, 0xa1, 0xc4, 0xcd, 0xe3, 0x1b, 0x9e, - 0xbb, 0x32, 0xa4, 0x1a, 0xcb, 0x82, 0xbc, 0xab, 0x6b, 0xa9, 0x98, 0x90, 0xb8, 0x75, 0x3c, 0xe8, - 0x44, 0x33, 0xb4, 0x82, 0x6d, 0x06, 0xdf, 0x15, 0xc3, 0xea, 0x3a, 0x7f, 0xa1, 0x15, 0xb1, 0x68, - 0x91, 0x59, 0xe9, 0xfb, 0x90, 0x3a, 0x2b, 0xea, 0x2e, 0xd5, 0x59, 0x8e, 0xd1, 0x12, 0x47, 0x18, - 0x5a, 0x82, 0x45, 0x3c, 0x61, 0x7e, 0x7e, 0xa6, 0x26, 0x2d, 0x3f, 0xed, 0x27, 0x00, 0x3b, 0x55, - 0xc0, 0x7f, 0x68, 0x25, 0x4c, 0xc8, 0x80, 0xc7, 0x18, 0x0c, 0xc1, 0xa8, 0x3f, 0xfe, 0x5e, 0x7b, - 0xcd, 0xb2, 0x0a, 0x73, 0xcd, 0xd2, 0x52, 0x84, 0x4e, 0x21, 0x2c, 0x12, 0xd7, 0xc1, 0x06, 0x9b, - 0x43, 0x30, 0xea, 0x8e, 0xbf, 0xbd, 0xf1, 0xbb, 0xa5, 0xd3, 0xa4, 0xb9, 0x7b, 0xf8, 0x62, 0xd0, - 0x03, 0x31, 0xfa, 0x07, 0x5b, 0x32, 0xab, 0x06, 0x6e, 0xe4, 0x2e, 0x5f, 0x6b, 0x17, 0x39, 0xec, - 0x4e, 0xe1, 0xa1, 0x55, 0xf6, 0x07, 0x68, 0x15, 0xdb, 0xa1, 0x36, 0x34, 0xe7, 0x3f, 0xdf, 0x1b, - 0x93, 0xcf, 0xbb, 0x3d, 0x31, 0xee, 0xf7, 0xc4, 0x78, 0xde, 0x13, 0x70, 0x93, 0x12, 0xb0, 0x4b, - 0x09, 0xb8, 0x4b, 0x09, 0x78, 0x4c, 0x09, 0xb8, 0x30, 0x17, 0xed, 0xbc, 0x94, 0xbf, 0x5f, 0x02, - 0x00, 0x00, 0xff, 0xff, 0xc9, 0xd9, 0x1a, 0xd9, 0xeb, 0x02, 0x00, 0x00, + // 409 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x7c, 0x92, 0xbf, 0x6f, 0xd3, 0x40, + 0x14, 0xc7, 0x73, 0xce, 0x0f, 0x57, 0xaf, 0x6a, 0x81, 0x13, 0xc3, 0x29, 0xa0, 0x23, 0x04, 0x86, + 0x4c, 0x06, 0x02, 0x12, 0x2c, 0x30, 0x94, 0x89, 0x81, 0x0e, 0x17, 0x54, 0xb1, 0x3a, 0xf6, 0x6b, + 0x6b, 0x8c, 0x7d, 0xd1, 0xbd, 0xc3, 0x5d, 0xf9, 0xf3, 0x32, 0x76, 0x64, 0x42, 0xc4, 0x0b, 0x2b, + 0x7f, 0x02, 0xb2, 0xcf, 0xb6, 0x22, 0xe1, 0xb0, 0x3d, 0x5b, 0x9f, 0xef, 0x8f, 0x7b, 0x7a, 0x70, + 0x4a, 0x79, 0xb8, 0xa1, 0x6b, 0x6d, 0x83, 0x8d, 0xd1, 0x56, 0x73, 0x1e, 0xeb, 0x28, 0x45, 0x13, + 0xd0, 0x4d, 0x68, 0xb2, 0x34, 0xb1, 0x41, 0xf1, 0x62, 0x7a, 0xa2, 0xd7, 0x5f, 0x30, 0xb2, 0xe4, + 0x90, 0x29, 0x98, 0xf0, 0xb2, 0xc1, 0xa7, 0xf7, 0xaf, 0xf4, 0x95, 0xae, 0xc7, 0x67, 0xd5, 0xe4, + 0xfe, 0xce, 0x6f, 0x3d, 0x38, 0x59, 0x59, 0x6d, 0x70, 0xd5, 0x98, 0xf3, 0x00, 0xc6, 0xb9, 0x8e, + 0x91, 0x04, 0x9b, 0x0d, 0x17, 0xc7, 0x4b, 0x11, 0xfc, 0x1b, 0x13, 0x9c, 0xeb, 0x18, 0x95, 0xc3, + 0xf8, 0x6b, 0x38, 0x22, 0x34, 0x45, 0x12, 0x21, 0x09, 0xaf, 0x96, 0x3c, 0xe8, 0x93, 0xac, 0x1c, + 0xa3, 0x3a, 0xb8, 0x12, 0xe6, 0x68, 0x6f, 0xb4, 0x49, 0x49, 0x0c, 0x0f, 0x0b, 0xcf, 0x1d, 0xa3, + 0x3a, 0xb8, 0x6a, 0x68, 0x43, 0x4a, 0x49, 0x8c, 0x0e, 0x37, 0xfc, 0x14, 0x52, 0xaa, 0x1c, 0x56, + 0x05, 0x45, 0x5f, 0xbf, 0x91, 0x45, 0x43, 0x62, 0x7c, 0x38, 0xe8, 0xbd, 0x63, 0x54, 0x07, 0xf3, + 0x57, 0xe0, 0x13, 0x46, 0x06, 0x2d, 0x89, 0x49, 0xad, 0x9b, 0xf6, 0xbf, 0xac, 0x42, 0x54, 0x8b, + 0xce, 0x11, 0xee, 0x34, 0x56, 0xdd, 0x4e, 0xdf, 0x80, 0x9f, 0x61, 0xb6, 0xae, 0x0a, 0xb8, 0xad, + 0xca, 0x3e, 0x23, 0x15, 0x5e, 0xda, 0x8f, 0x35, 0xa6, 0x5a, 0x9c, 0x0b, 0xf0, 0x0d, 0x66, 0xba, + 0xc0, 0xb8, 0x5e, 0xee, 0x48, 0xb5, 0x9f, 0xf3, 0xdf, 0x0c, 0x8e, 0xba, 0x80, 0x77, 0xe0, 0x17, + 0x68, 0x28, 0xd1, 0xb9, 0x60, 0x33, 0xb6, 0x38, 0x5d, 0x3e, 0xed, 0x6d, 0xda, 0x1e, 0xd0, 0x85, + 0x63, 0x55, 0x2b, 0xe2, 0x1f, 0x00, 0x9a, 0xc4, 0xeb, 0x64, 0x23, 0xbc, 0x19, 0x5b, 0x1c, 0x2f, + 0x9f, 0xfc, 0x67, 0x49, 0xad, 0xd3, 0xd9, 0x68, 0xfb, 0xf3, 0xd1, 0x40, 0xed, 0x89, 0xf9, 0x5b, + 0x18, 0x53, 0x75, 0x50, 0x62, 0x58, 0xbb, 0x3c, 0xee, 0x2d, 0xb2, 0x7f, 0x71, 0x8d, 0x87, 0x53, + 0xcd, 0xef, 0x81, 0xdf, 0xb4, 0xe3, 0x13, 0xf0, 0x2e, 0x9e, 0xdf, 0x1d, 0x9c, 0x3d, 0xdc, 0xee, + 0xe4, 0xe0, 0xc7, 0x4e, 0x0e, 0xfe, 0xec, 0x24, 0xfb, 0x5e, 0x4a, 0xb6, 0x2d, 0x25, 0xbb, 0x2d, + 0x25, 0xfb, 0x55, 0x4a, 0xf6, 0xd9, 0x5b, 0x4f, 0xea, 0x53, 0x7e, 0xf9, 0x37, 0x00, 0x00, 0xff, + 0xff, 0x48, 0xfb, 0x27, 0x26, 0x21, 0x03, 0x00, 0x00, } diff --git a/api/snapshot.proto b/api/snapshot.proto index 04751b1bd2..9054306d52 100644 --- a/api/snapshot.proto +++ b/api/snapshot.proto @@ -19,6 +19,7 @@ message StoreSnapshot { repeated Network networks = 3; repeated Task tasks = 4; repeated Cluster clusters = 5; + repeated Secret secrets = 6; } // ClusterSnapshot stores cluster membership information in snapshots. diff --git a/api/specs.pb.go b/api/specs.pb.go index eea1d552e0..b8f54cc06e 100644 --- a/api/specs.pb.go +++ b/api/specs.pb.go @@ -473,6 +473,9 @@ type ContainerSpec struct { StopGracePeriod *docker_swarmkit_v11.Duration `protobuf:"bytes,9,opt,name=stop_grace_period,json=stopGracePeriod" json:"stop_grace_period,omitempty"` // PullOptions parameterize the behavior of image pulls. PullOptions *ContainerSpec_PullOptions `protobuf:"bytes,10,opt,name=pull_options,json=pullOptions" json:"pull_options,omitempty"` + // SecretReference contains references to zero or more secrets that + // will be exposed to the container. + Secrets []*SecretReference `protobuf:"bytes,12,rep,name=secrets" json:"secrets,omitempty"` } func (m *ContainerSpec) Reset() { *m = ContainerSpec{} } @@ -555,6 +558,21 @@ func (m *ClusterSpec) Reset() { *m = ClusterSpec{} } func (*ClusterSpec) ProtoMessage() {} func (*ClusterSpec) Descriptor() ([]byte, []int) { return fileDescriptorSpecs, []int{9} } +// SecretSpec specifies a user-provided secret. +type SecretSpec struct { + Annotations Annotations `protobuf:"bytes,1,opt,name=annotations" json:"annotations"` + // Type distinguishes the different kinds of secrets in the system. + Type SecretType `protobuf:"varint,2,opt,name=type,proto3,enum=docker.swarmkit.v1.SecretType" json:"type,omitempty"` + // Tags group secrets. + Tags []string `protobuf:"bytes,3,rep,name=tags" json:"tags,omitempty"` + // Secret payload. + Data []byte `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"` +} + +func (m *SecretSpec) Reset() { *m = SecretSpec{} } +func (*SecretSpec) ProtoMessage() {} +func (*SecretSpec) Descriptor() ([]byte, []int) { return fileDescriptorSpecs, []int{10} } + func init() { proto.RegisterType((*NodeSpec)(nil), "docker.swarmkit.v1.NodeSpec") proto.RegisterType((*ServiceSpec)(nil), "docker.swarmkit.v1.ServiceSpec") @@ -567,6 +585,7 @@ func init() { proto.RegisterType((*EndpointSpec)(nil), "docker.swarmkit.v1.EndpointSpec") proto.RegisterType((*NetworkSpec)(nil), "docker.swarmkit.v1.NetworkSpec") proto.RegisterType((*ClusterSpec)(nil), "docker.swarmkit.v1.ClusterSpec") + proto.RegisterType((*SecretSpec)(nil), "docker.swarmkit.v1.SecretSpec") proto.RegisterEnum("docker.swarmkit.v1.NodeSpec_Membership", NodeSpec_Membership_name, NodeSpec_Membership_value) proto.RegisterEnum("docker.swarmkit.v1.NodeSpec_Availability", NodeSpec_Availability_name, NodeSpec_Availability_value) proto.RegisterEnum("docker.swarmkit.v1.EndpointSpec_ResolutionMode", EndpointSpec_ResolutionMode_name, EndpointSpec_ResolutionMode_value) @@ -750,6 +769,13 @@ func (m *ContainerSpec) Copy() *ContainerSpec { } } + if m.Secrets != nil { + o.Secrets = make([]*SecretReference, 0, len(m.Secrets)) + for _, v := range m.Secrets { + o.Secrets = append(o.Secrets, v.Copy()) + } + } + return o } @@ -819,6 +845,27 @@ func (m *ClusterSpec) Copy() *ClusterSpec { return o } +func (m *SecretSpec) Copy() *SecretSpec { + if m == nil { + return nil + } + + o := &SecretSpec{ + Annotations: *m.Annotations.Copy(), + Type: m.Type, + Data: m.Data, + } + + if m.Tags != nil { + o.Tags = make([]string, 0, len(m.Tags)) + for _, v := range m.Tags { + o.Tags = append(o.Tags, v) + } + } + + return o +} + func (this *NodeSpec) GoString() string { if this == nil { return "nil" @@ -947,7 +994,7 @@ func (this *ContainerSpec) GoString() string { if this == nil { return "nil" } - s := make([]string, 0, 15) + s := make([]string, 0, 16) s = append(s, "&api.ContainerSpec{") s = append(s, "Image: "+fmt.Sprintf("%#v", this.Image)+",\n") keysForLabels := make([]string, 0, len(this.Labels)) @@ -978,6 +1025,9 @@ func (this *ContainerSpec) GoString() string { if this.PullOptions != nil { s = append(s, "PullOptions: "+fmt.Sprintf("%#v", this.PullOptions)+",\n") } + if this.Secrets != nil { + s = append(s, "Secrets: "+fmt.Sprintf("%#v", this.Secrets)+",\n") + } s = append(s, "}") return strings.Join(s, "") } @@ -1039,6 +1089,19 @@ func (this *ClusterSpec) GoString() string { s = append(s, "}") return strings.Join(s, "") } +func (this *SecretSpec) GoString() string { + if this == nil { + return "nil" + } + s := make([]string, 0, 8) + s = append(s, "&api.SecretSpec{") + s = append(s, "Annotations: "+strings.Replace(this.Annotations.GoString(), `&`, ``, 1)+",\n") + s = append(s, "Type: "+fmt.Sprintf("%#v", this.Type)+",\n") + s = append(s, "Tags: "+fmt.Sprintf("%#v", this.Tags)+",\n") + s = append(s, "Data: "+fmt.Sprintf("%#v", this.Data)+",\n") + s = append(s, "}") + return strings.Join(s, "") +} func valueToGoStringSpecs(v interface{}, typ string) string { rv := reflect.ValueOf(v) if rv.IsNil() { @@ -1519,6 +1582,18 @@ func (m *ContainerSpec) MarshalTo(data []byte) (int, error) { i += copy(data[i:], s) } } + if len(m.Secrets) > 0 { + for _, msg := range m.Secrets { + data[i] = 0x62 + i++ + i = encodeVarintSpecs(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } return i, nil } @@ -1733,6 +1808,58 @@ func (m *ClusterSpec) MarshalTo(data []byte) (int, error) { return i, nil } +func (m *SecretSpec) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *SecretSpec) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintSpecs(data, i, uint64(m.Annotations.Size())) + n28, err := m.Annotations.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n28 + if m.Type != 0 { + data[i] = 0x10 + i++ + i = encodeVarintSpecs(data, i, uint64(m.Type)) + } + if len(m.Tags) > 0 { + for _, s := range m.Tags { + data[i] = 0x1a + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + data[i] = uint8(l) + i++ + i += copy(data[i:], s) + } + } + if len(m.Data) > 0 { + data[i] = 0x22 + i++ + i = encodeVarintSpecs(data, i, uint64(len(m.Data))) + i += copy(data[i:], m.Data) + } + return i, nil +} + func encodeFixed64Specs(data []byte, offset int, v uint64) int { data[offset] = uint8(v) data[offset+1] = uint8(v >> 8) @@ -1958,6 +2085,12 @@ func (m *ContainerSpec) Size() (n int) { n += 1 + l + sovSpecs(uint64(l)) } } + if len(m.Secrets) > 0 { + for _, e := range m.Secrets { + l = e.Size() + n += 1 + l + sovSpecs(uint64(l)) + } + } return n } @@ -2031,6 +2164,27 @@ func (m *ClusterSpec) Size() (n int) { return n } +func (m *SecretSpec) Size() (n int) { + var l int + _ = l + l = m.Annotations.Size() + n += 1 + l + sovSpecs(uint64(l)) + if m.Type != 0 { + n += 1 + sovSpecs(uint64(m.Type)) + } + if len(m.Tags) > 0 { + for _, s := range m.Tags { + l = len(s) + n += 1 + l + sovSpecs(uint64(l)) + } + } + l = len(m.Data) + if l > 0 { + n += 1 + l + sovSpecs(uint64(l)) + } + return n +} + func sovSpecs(x uint64) (n int) { for { n++ @@ -2182,6 +2336,7 @@ func (this *ContainerSpec) String() string { `StopGracePeriod:` + strings.Replace(fmt.Sprintf("%v", this.StopGracePeriod), "Duration", "docker_swarmkit_v11.Duration", 1) + `,`, `PullOptions:` + strings.Replace(fmt.Sprintf("%v", this.PullOptions), "ContainerSpec_PullOptions", "ContainerSpec_PullOptions", 1) + `,`, `Groups:` + fmt.Sprintf("%v", this.Groups) + `,`, + `Secrets:` + strings.Replace(fmt.Sprintf("%v", this.Secrets), "SecretReference", "SecretReference", 1) + `,`, `}`, }, "") return s @@ -2238,6 +2393,19 @@ func (this *ClusterSpec) String() string { }, "") return s } +func (this *SecretSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SecretSpec{`, + `Annotations:` + strings.Replace(strings.Replace(this.Annotations.String(), "Annotations", "Annotations", 1), `&`, ``, 1) + `,`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Tags:` + fmt.Sprintf("%v", this.Tags) + `,`, + `Data:` + fmt.Sprintf("%v", this.Data) + `,`, + `}`, + }, "") + return s +} func valueToStringSpecs(v interface{}) string { rv := reflect.ValueOf(v) if rv.IsNil() { @@ -3574,6 +3742,37 @@ func (m *ContainerSpec) Unmarshal(data []byte) error { } m.Groups = append(m.Groups, string(data[iNdEx:postIndex])) iNdEx = postIndex + case 12: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Secrets", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSpecs + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthSpecs + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Secrets = append(m.Secrets, &SecretReference{}) + if err := m.Secrets[len(m.Secrets)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipSpecs(data[iNdEx:]) @@ -4240,6 +4439,165 @@ func (m *ClusterSpec) Unmarshal(data []byte) error { } return nil } +func (m *SecretSpec) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSpecs + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SecretSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SecretSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Annotations", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSpecs + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthSpecs + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Annotations.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + m.Type = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSpecs + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.Type |= (SecretType(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Tags", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSpecs + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthSpecs + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Tags = append(m.Tags, string(data[iNdEx:postIndex])) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSpecs + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + byteLen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthSpecs + } + postIndex := iNdEx + byteLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Data = append(m.Data[:0], data[iNdEx:postIndex]...) + if m.Data == nil { + m.Data = []byte{} + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipSpecs(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthSpecs + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipSpecs(data []byte) (n int, err error) { l := len(data) iNdEx := 0 @@ -4348,93 +4706,97 @@ var ( func init() { proto.RegisterFile("specs.proto", fileDescriptorSpecs) } var fileDescriptorSpecs = []byte{ - // 1397 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x57, 0x4f, 0x6f, 0xdb, 0xc6, - 0x12, 0x17, 0x6d, 0x5a, 0x96, 0x86, 0x72, 0xa2, 0x2c, 0xf2, 0x87, 0x51, 0xf2, 0x64, 0x45, 0x2f, - 0x2f, 0xcf, 0x79, 0x0f, 0xb5, 0x5b, 0xb5, 0x48, 0x93, 0xa6, 0x45, 0x2b, 0x4b, 0xaa, 0xa3, 0xba, - 0x76, 0x84, 0x75, 0x12, 0xa0, 0x27, 0x61, 0x4d, 0xae, 0x65, 0xc2, 0x14, 0x97, 0x5d, 0x2e, 0x15, - 0xf8, 0xd6, 0x63, 0xe0, 0x43, 0xbf, 0x81, 0x4f, 0x05, 0x7a, 0xec, 0xad, 0xdf, 0x21, 0xc7, 0x1e, - 0x7b, 0x32, 0x6a, 0x5f, 0x7b, 0x29, 0xd0, 0x2f, 0x50, 0xec, 0x72, 0x25, 0x51, 0x0d, 0x9d, 0x04, - 0x68, 0x6e, 0xbb, 0xc3, 0xdf, 0x6f, 0x76, 0x34, 0xf3, 0xdb, 0x99, 0x15, 0x58, 0x51, 0x48, 0x9d, - 0x68, 0x35, 0xe4, 0x4c, 0x30, 0x84, 0x5c, 0xe6, 0x1c, 0x50, 0xbe, 0x1a, 0x3d, 0x27, 0x7c, 0x78, - 0xe0, 0x89, 0xd5, 0xd1, 0x07, 0x15, 0x4b, 0x1c, 0x86, 0x54, 0x03, 0x2a, 0x97, 0x07, 0x6c, 0xc0, - 0xd4, 0x72, 0x4d, 0xae, 0xb4, 0xf5, 0x9a, 0x1b, 0x73, 0x22, 0x3c, 0x16, 0xac, 0x8d, 0x17, 0xc9, - 0x87, 0xfa, 0xf7, 0x26, 0x14, 0xb6, 0x99, 0x4b, 0x77, 0x42, 0xea, 0xa0, 0x0d, 0xb0, 0x48, 0x10, - 0x30, 0xa1, 0x00, 0x91, 0x6d, 0xd4, 0x8c, 0x15, 0xab, 0xb1, 0xbc, 0xfa, 0xea, 0x91, 0xab, 0xcd, - 0x29, 0x6c, 0xdd, 0x7c, 0x79, 0xb2, 0x9c, 0xc3, 0x69, 0x26, 0x7a, 0x1f, 0x4c, 0xce, 0x7c, 0x6a, - 0xcf, 0xd5, 0x8c, 0x95, 0x0b, 0x8d, 0x9b, 0x59, 0x1e, 0xe4, 0xa1, 0x98, 0xf9, 0x14, 0x2b, 0x24, - 0xda, 0x00, 0x18, 0xd2, 0xe1, 0x2e, 0xe5, 0xd1, 0xbe, 0x17, 0xda, 0xf3, 0x8a, 0xf7, 0xdf, 0xf3, - 0x78, 0x32, 0xd8, 0xd5, 0xad, 0x09, 0x1c, 0xa7, 0xa8, 0x68, 0x0b, 0x4a, 0x64, 0x44, 0x3c, 0x9f, - 0xec, 0x7a, 0xbe, 0x27, 0x0e, 0x6d, 0x53, 0xb9, 0xba, 0xfb, 0x5a, 0x57, 0xcd, 0x14, 0x01, 0xcf, - 0xd0, 0xeb, 0x2e, 0xc0, 0xf4, 0x20, 0x74, 0x07, 0x16, 0x7b, 0x9d, 0xed, 0x76, 0x77, 0x7b, 0xa3, - 0x9c, 0xab, 0x5c, 0x3f, 0x3a, 0xae, 0x5d, 0x91, 0x3e, 0xa6, 0x80, 0x1e, 0x0d, 0x5c, 0x2f, 0x18, - 0xa0, 0x15, 0x28, 0x34, 0x5b, 0xad, 0x4e, 0xef, 0x49, 0xa7, 0x5d, 0x36, 0x2a, 0x95, 0xa3, 0xe3, - 0xda, 0xd5, 0x59, 0x60, 0xd3, 0x71, 0x68, 0x28, 0xa8, 0x5b, 0x31, 0x5f, 0xfc, 0x50, 0xcd, 0xd5, - 0x5f, 0x18, 0x50, 0x4a, 0x07, 0x81, 0xee, 0x40, 0xbe, 0xd9, 0x7a, 0xd2, 0x7d, 0xd6, 0x29, 0xe7, - 0xa6, 0xf4, 0x34, 0xa2, 0xe9, 0x08, 0x6f, 0x44, 0xd1, 0x6d, 0x58, 0xe8, 0x35, 0x9f, 0xee, 0x74, - 0xca, 0xc6, 0x34, 0x9c, 0x34, 0xac, 0x47, 0xe2, 0x48, 0xa1, 0xda, 0xb8, 0xd9, 0xdd, 0x2e, 0xcf, - 0x65, 0xa3, 0xda, 0x9c, 0x78, 0x81, 0x0e, 0xe5, 0x74, 0x1e, 0xac, 0x1d, 0xca, 0x47, 0x9e, 0xf3, - 0x8e, 0x35, 0x71, 0x0f, 0x4c, 0x41, 0xa2, 0x03, 0xa5, 0x09, 0x2b, 0x5b, 0x13, 0x4f, 0x48, 0x74, - 0x20, 0x0f, 0xd5, 0x74, 0x85, 0x97, 0xca, 0xe0, 0x34, 0xf4, 0x3d, 0x87, 0x08, 0xea, 0x2a, 0x65, - 0x58, 0x8d, 0xff, 0x64, 0xb1, 0xf1, 0x04, 0xa5, 0xe3, 0x7f, 0x94, 0xc3, 0x29, 0x2a, 0x7a, 0x08, - 0xf9, 0x81, 0xcf, 0x76, 0x89, 0xaf, 0x34, 0x61, 0x35, 0x6e, 0x65, 0x39, 0xd9, 0x50, 0x88, 0xa9, - 0x03, 0x4d, 0x41, 0xf7, 0x21, 0x1f, 0x87, 0x2e, 0x11, 0xd4, 0xce, 0x2b, 0x72, 0x2d, 0x8b, 0xfc, - 0x54, 0x21, 0x5a, 0x2c, 0xd8, 0xf3, 0x06, 0x58, 0xe3, 0xd1, 0x26, 0x14, 0x02, 0x2a, 0x9e, 0x33, - 0x7e, 0x10, 0xd9, 0x8b, 0xb5, 0xf9, 0x15, 0xab, 0xf1, 0xff, 0x4c, 0x31, 0x26, 0x98, 0xa6, 0x10, - 0xc4, 0xd9, 0x1f, 0xd2, 0x40, 0x24, 0x6e, 0xd6, 0xe7, 0x6c, 0x03, 0x4f, 0x1c, 0xa0, 0x4f, 0xa1, - 0x40, 0x03, 0x37, 0x64, 0x5e, 0x20, 0xec, 0xc2, 0xf9, 0x81, 0x74, 0x34, 0x46, 0x26, 0x13, 0x4f, - 0x18, 0xeb, 0x79, 0x30, 0x87, 0xcc, 0xa5, 0xf5, 0x35, 0xb8, 0xf4, 0x4a, 0xb2, 0x50, 0x05, 0x0a, - 0x3a, 0x59, 0x49, 0x95, 0x4d, 0x3c, 0xd9, 0xd7, 0x2f, 0xc2, 0xd2, 0x4c, 0x62, 0xea, 0xbf, 0xcf, - 0x43, 0x61, 0x5c, 0x2d, 0xd4, 0x84, 0xa2, 0xc3, 0x02, 0x41, 0xbc, 0x80, 0x72, 0x2d, 0x90, 0xcc, - 0xdc, 0xb6, 0xc6, 0x20, 0xc9, 0x7a, 0x94, 0xc3, 0x53, 0x16, 0xfa, 0x12, 0x8a, 0x9c, 0x46, 0x2c, - 0xe6, 0x0e, 0x8d, 0xb4, 0x42, 0x56, 0xb2, 0x6b, 0x9c, 0x80, 0x30, 0xfd, 0x36, 0xf6, 0x38, 0x95, - 0x79, 0x8a, 0xf0, 0x94, 0x8a, 0x1e, 0xc2, 0x22, 0xa7, 0x91, 0x20, 0x5c, 0xbc, 0xae, 0xc8, 0x38, - 0x81, 0xf4, 0x98, 0xef, 0x39, 0x87, 0x78, 0xcc, 0x40, 0x0f, 0xa1, 0x18, 0xfa, 0xc4, 0x51, 0x5e, - 0xed, 0x05, 0x45, 0xff, 0x57, 0x16, 0xbd, 0x37, 0x06, 0xe1, 0x29, 0x1e, 0x3d, 0x00, 0xf0, 0xd9, - 0xa0, 0xef, 0x72, 0x6f, 0x44, 0xb9, 0x16, 0x49, 0x25, 0x8b, 0xdd, 0x56, 0x08, 0x5c, 0xf4, 0xd9, - 0x20, 0x59, 0xa2, 0x8d, 0x7f, 0xa4, 0x90, 0x94, 0x3a, 0x36, 0x01, 0xc8, 0xe4, 0xab, 0xd6, 0xc7, - 0xdd, 0xb7, 0x72, 0xa5, 0x2b, 0x92, 0xa2, 0xaf, 0x17, 0x61, 0x91, 0xc7, 0x81, 0xf0, 0x86, 0xb4, - 0xbe, 0x09, 0x57, 0x32, 0x19, 0xa8, 0x01, 0xa5, 0x49, 0x0d, 0xfb, 0x9e, 0xab, 0x8a, 0x5f, 0x5c, - 0xbf, 0x78, 0x76, 0xb2, 0x6c, 0x4d, 0x8a, 0xdd, 0x6d, 0x63, 0x6b, 0x02, 0xea, 0xba, 0xf5, 0x9f, - 0x4c, 0x58, 0x9a, 0x51, 0x02, 0xba, 0x0c, 0x0b, 0xde, 0x90, 0x0c, 0x68, 0x42, 0xc7, 0xc9, 0x06, - 0x75, 0x20, 0xef, 0x93, 0x5d, 0xea, 0x4b, 0x3d, 0xc8, 0x9c, 0xbc, 0xf7, 0x46, 0x49, 0xad, 0x7e, - 0xad, 0xf0, 0x9d, 0x40, 0xf0, 0x43, 0xac, 0xc9, 0xc8, 0x86, 0x45, 0x87, 0x0d, 0x87, 0x24, 0x90, - 0xbd, 0x63, 0x7e, 0xa5, 0x88, 0xc7, 0x5b, 0x84, 0xc0, 0x24, 0x7c, 0x10, 0xd9, 0xa6, 0x32, 0xab, - 0x35, 0x2a, 0xc3, 0x3c, 0x0d, 0x46, 0xf6, 0x82, 0x32, 0xc9, 0xa5, 0xb4, 0xb8, 0x5e, 0x52, 0xd0, - 0x22, 0x96, 0x4b, 0xc9, 0x8b, 0x23, 0xca, 0xed, 0x45, 0x65, 0x52, 0x6b, 0xf4, 0x31, 0xe4, 0x87, - 0x2c, 0x0e, 0x44, 0x64, 0x17, 0x54, 0xb0, 0xd7, 0xb3, 0x82, 0xdd, 0x92, 0x08, 0xdd, 0xdb, 0x34, - 0x1c, 0x3d, 0x82, 0x4b, 0x91, 0x60, 0x61, 0x7f, 0xc0, 0x89, 0x43, 0xfb, 0x21, 0xe5, 0x1e, 0x73, - 0xed, 0xe2, 0xf9, 0x2d, 0xb2, 0xad, 0xc7, 0x37, 0xbe, 0x28, 0x69, 0x1b, 0x92, 0xd5, 0x53, 0x24, - 0xd4, 0x83, 0x52, 0x18, 0xfb, 0x7e, 0x9f, 0x85, 0x49, 0xa7, 0x06, 0xe5, 0xe4, 0x2d, 0xb2, 0xd6, - 0x8b, 0x7d, 0xff, 0x71, 0x42, 0xc2, 0x56, 0x38, 0xdd, 0xa0, 0xab, 0x90, 0x1f, 0x70, 0x16, 0x87, - 0x91, 0x6d, 0xa9, 0x7c, 0xe8, 0x5d, 0xe5, 0x01, 0x58, 0xa9, 0x4c, 0xcb, 0x0c, 0x1d, 0xd0, 0x43, - 0x5d, 0x3c, 0xb9, 0x94, 0x05, 0x1d, 0x11, 0x3f, 0x4e, 0xe6, 0x7f, 0x11, 0x27, 0x9b, 0x4f, 0xe6, - 0xee, 0x1b, 0x95, 0x06, 0x58, 0xa9, 0xe3, 0xd0, 0xbf, 0x61, 0x89, 0xd3, 0x81, 0x17, 0x09, 0x7e, - 0xd8, 0x27, 0xb1, 0xd8, 0xb7, 0xbf, 0x50, 0x84, 0xd2, 0xd8, 0xd8, 0x8c, 0xc5, 0x7e, 0xfd, 0x4f, - 0x03, 0x4a, 0xe9, 0x86, 0x86, 0x5a, 0x49, 0x1b, 0x53, 0x27, 0x5e, 0x68, 0xac, 0xbd, 0xa9, 0x01, - 0xaa, 0xa6, 0xe1, 0xc7, 0xf2, 0xc4, 0x2d, 0xf9, 0xe8, 0x50, 0x64, 0xf4, 0x11, 0x2c, 0x84, 0x8c, - 0x8b, 0xb1, 0xba, 0xaa, 0x99, 0x17, 0x9d, 0xf1, 0xf1, 0x25, 0x4b, 0xc0, 0xf5, 0x7d, 0xb8, 0x30, - 0xeb, 0x0d, 0xdd, 0x86, 0xf9, 0x67, 0xdd, 0x5e, 0x39, 0x57, 0xb9, 0x71, 0x74, 0x5c, 0xbb, 0x36, - 0xfb, 0xf1, 0x99, 0xc7, 0x45, 0x4c, 0xfc, 0x6e, 0x0f, 0xfd, 0x0f, 0x16, 0xda, 0xdb, 0x3b, 0x18, - 0x97, 0x8d, 0xca, 0xf2, 0xd1, 0x71, 0xed, 0xc6, 0x2c, 0x4e, 0x7e, 0x62, 0x71, 0xe0, 0x62, 0xb6, - 0x3b, 0x99, 0xc3, 0x3f, 0xcf, 0x81, 0xa5, 0x2f, 0xdd, 0xbb, 0x9d, 0xc3, 0x9f, 0xc3, 0x52, 0xd2, - 0xa4, 0xfa, 0x8e, 0xfa, 0x69, 0xba, 0xdd, 0xbe, 0xae, 0x57, 0x95, 0x12, 0x42, 0x92, 0x0a, 0x74, - 0x0b, 0x4a, 0x5e, 0x38, 0xba, 0xd7, 0xa7, 0x01, 0xd9, 0xf5, 0xf5, 0x48, 0x2e, 0x60, 0x4b, 0xda, - 0x3a, 0x89, 0x49, 0xce, 0x12, 0x2f, 0x10, 0x94, 0x07, 0x7a, 0xd8, 0x16, 0xf0, 0x64, 0x8f, 0x3e, - 0x03, 0xd3, 0x0b, 0xc9, 0x50, 0x37, 0xd8, 0xcc, 0x5f, 0xd0, 0xed, 0x35, 0xb7, 0xb4, 0x44, 0xd6, - 0x0b, 0x67, 0x27, 0xcb, 0xa6, 0x34, 0x60, 0x45, 0x43, 0xd5, 0x71, 0x8f, 0x93, 0x27, 0xa9, 0x6b, - 0x59, 0xc0, 0x29, 0x4b, 0xfd, 0x47, 0x13, 0xac, 0x96, 0x1f, 0x47, 0x42, 0x37, 0x97, 0x77, 0x96, - 0xb7, 0x6f, 0xe0, 0x12, 0x51, 0xaf, 0x36, 0x12, 0xc8, 0x9b, 0xaa, 0x66, 0x87, 0xce, 0xdd, 0xed, - 0x4c, 0x77, 0x13, 0x70, 0x32, 0x67, 0xd6, 0xf3, 0xd2, 0xa7, 0x6d, 0xe0, 0x32, 0xf9, 0xdb, 0x17, - 0xb4, 0x03, 0x4b, 0x8c, 0x3b, 0xfb, 0x34, 0x12, 0xc9, 0xe5, 0xd6, 0xaf, 0x9c, 0xcc, 0xf7, 0xef, - 0xe3, 0x34, 0x50, 0xbf, 0x11, 0x92, 0x68, 0x67, 0x7d, 0xa0, 0xfb, 0x60, 0x72, 0xb2, 0x37, 0x9e, - 0x83, 0x99, 0xfa, 0xc6, 0x64, 0x4f, 0xcc, 0xb8, 0x50, 0x0c, 0xf4, 0x15, 0x80, 0xeb, 0x45, 0x21, - 0x11, 0xce, 0x3e, 0xe5, 0xba, 0x4e, 0x99, 0x3f, 0xb1, 0x3d, 0x41, 0xcd, 0x78, 0x49, 0xb1, 0xd1, - 0x26, 0x14, 0x1d, 0x32, 0x56, 0x5a, 0xfe, 0xfc, 0xbe, 0xd6, 0x6a, 0x6a, 0x17, 0x65, 0xe9, 0xe2, - 0xec, 0x64, 0xb9, 0x30, 0xb6, 0xe0, 0x82, 0x43, 0xb4, 0xf2, 0x36, 0x61, 0x49, 0x3e, 0x09, 0xfb, - 0x2e, 0xdd, 0x23, 0xb1, 0x2f, 0x22, 0xd5, 0x82, 0xcf, 0x79, 0x02, 0xc9, 0xd7, 0x49, 0x5b, 0xe3, - 0x74, 0x5c, 0x25, 0x91, 0xb6, 0xdd, 0x7c, 0x79, 0x5a, 0xcd, 0xfd, 0x7a, 0x5a, 0xcd, 0xfd, 0x71, - 0x5a, 0x35, 0xbe, 0x3b, 0xab, 0x1a, 0x2f, 0xcf, 0xaa, 0xc6, 0x2f, 0x67, 0x55, 0xe3, 0xb7, 0xb3, - 0xaa, 0xb1, 0x9b, 0x57, 0x7f, 0x8f, 0x3e, 0xfc, 0x2b, 0x00, 0x00, 0xff, 0xff, 0x70, 0x4c, 0x36, - 0xfc, 0x7d, 0x0d, 0x00, 0x00, + // 1470 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x57, 0x4f, 0x6f, 0xdb, 0xc8, + 0x15, 0x17, 0x6d, 0x5a, 0x96, 0x1e, 0xe5, 0x44, 0x19, 0xe4, 0x0f, 0xa3, 0xa4, 0xb2, 0xa2, 0xa4, + 0xa9, 0xd3, 0xa2, 0x76, 0xab, 0x16, 0x69, 0xd2, 0x34, 0x68, 0xf5, 0xaf, 0x8e, 0xea, 0xda, 0x11, + 0xc6, 0x4e, 0x80, 0x9e, 0x84, 0x31, 0x39, 0x96, 0x09, 0x53, 0x1c, 0x76, 0x38, 0x54, 0xe0, 0x5b, + 0x8f, 0x81, 0x0f, 0xfd, 0x06, 0x3e, 0x15, 0xe8, 0xbd, 0x87, 0x7e, 0x87, 0x1c, 0x7b, 0xec, 0xc9, + 0x58, 0xfb, 0xba, 0x58, 0x60, 0x81, 0xfd, 0x02, 0x8b, 0x19, 0x8e, 0x24, 0x6a, 0x43, 0x27, 0x01, + 0xd6, 0xb7, 0x99, 0xc7, 0xdf, 0xef, 0xcd, 0xe3, 0x7b, 0x3f, 0xbe, 0x37, 0x04, 0x2b, 0x0a, 0xa9, + 0x13, 0xad, 0x87, 0x9c, 0x09, 0x86, 0x90, 0xcb, 0x9c, 0x23, 0xca, 0xd7, 0xa3, 0x77, 0x84, 0x8f, + 0x8e, 0x3c, 0xb1, 0x3e, 0xfe, 0x75, 0xc5, 0x12, 0xc7, 0x21, 0xd5, 0x80, 0xca, 0xcd, 0x21, 0x1b, + 0x32, 0xb5, 0xdc, 0x90, 0x2b, 0x6d, 0xbd, 0xe3, 0xc6, 0x9c, 0x08, 0x8f, 0x05, 0x1b, 0x93, 0x45, + 0xf2, 0xa0, 0xfe, 0x4f, 0x13, 0x0a, 0x3b, 0xcc, 0xa5, 0xbb, 0x21, 0x75, 0xd0, 0x26, 0x58, 0x24, + 0x08, 0x98, 0x50, 0x80, 0xc8, 0x36, 0x6a, 0xc6, 0x9a, 0xd5, 0x58, 0x5d, 0xff, 0xf8, 0xc8, 0xf5, + 0xe6, 0x0c, 0xd6, 0x32, 0x3f, 0x9c, 0xad, 0xe6, 0x70, 0x9a, 0x89, 0x7e, 0x05, 0x26, 0x67, 0x3e, + 0xb5, 0x17, 0x6a, 0xc6, 0xda, 0xb5, 0xc6, 0xfd, 0x2c, 0x0f, 0xf2, 0x50, 0xcc, 0x7c, 0x8a, 0x15, + 0x12, 0x6d, 0x02, 0x8c, 0xe8, 0x68, 0x9f, 0xf2, 0xe8, 0xd0, 0x0b, 0xed, 0x45, 0xc5, 0xfb, 0xd9, + 0x65, 0x3c, 0x19, 0xec, 0xfa, 0xf6, 0x14, 0x8e, 0x53, 0x54, 0xb4, 0x0d, 0x25, 0x32, 0x26, 0x9e, + 0x4f, 0xf6, 0x3d, 0xdf, 0x13, 0xc7, 0xb6, 0xa9, 0x5c, 0x3d, 0xf9, 0xa4, 0xab, 0x66, 0x8a, 0x80, + 0xe7, 0xe8, 0x75, 0x17, 0x60, 0x76, 0x10, 0x7a, 0x0c, 0xcb, 0xfd, 0xee, 0x4e, 0xa7, 0xb7, 0xb3, + 0x59, 0xce, 0x55, 0xee, 0x9e, 0x9c, 0xd6, 0x6e, 0x49, 0x1f, 0x33, 0x40, 0x9f, 0x06, 0xae, 0x17, + 0x0c, 0xd1, 0x1a, 0x14, 0x9a, 0xed, 0x76, 0xb7, 0xbf, 0xd7, 0xed, 0x94, 0x8d, 0x4a, 0xe5, 0xe4, + 0xb4, 0x76, 0x7b, 0x1e, 0xd8, 0x74, 0x1c, 0x1a, 0x0a, 0xea, 0x56, 0xcc, 0xf7, 0xff, 0xaa, 0xe6, + 0xea, 0xef, 0x0d, 0x28, 0xa5, 0x83, 0x40, 0x8f, 0x21, 0xdf, 0x6c, 0xef, 0xf5, 0xde, 0x76, 0xcb, + 0xb9, 0x19, 0x3d, 0x8d, 0x68, 0x3a, 0xc2, 0x1b, 0x53, 0xf4, 0x08, 0x96, 0xfa, 0xcd, 0x37, 0xbb, + 0xdd, 0xb2, 0x31, 0x0b, 0x27, 0x0d, 0xeb, 0x93, 0x38, 0x52, 0xa8, 0x0e, 0x6e, 0xf6, 0x76, 0xca, + 0x0b, 0xd9, 0xa8, 0x0e, 0x27, 0x5e, 0xa0, 0x43, 0x39, 0x5f, 0x04, 0x6b, 0x97, 0xf2, 0xb1, 0xe7, + 0x5c, 0xb1, 0x26, 0x9e, 0x82, 0x29, 0x48, 0x74, 0xa4, 0x34, 0x61, 0x65, 0x6b, 0x62, 0x8f, 0x44, + 0x47, 0xf2, 0x50, 0x4d, 0x57, 0x78, 0xa9, 0x0c, 0x4e, 0x43, 0xdf, 0x73, 0x88, 0xa0, 0xae, 0x52, + 0x86, 0xd5, 0xf8, 0x69, 0x16, 0x1b, 0x4f, 0x51, 0x3a, 0xfe, 0x57, 0x39, 0x9c, 0xa2, 0xa2, 0x17, + 0x90, 0x1f, 0xfa, 0x6c, 0x9f, 0xf8, 0x4a, 0x13, 0x56, 0xe3, 0x41, 0x96, 0x93, 0x4d, 0x85, 0x98, + 0x39, 0xd0, 0x14, 0xf4, 0x0c, 0xf2, 0x71, 0xe8, 0x12, 0x41, 0xed, 0xbc, 0x22, 0xd7, 0xb2, 0xc8, + 0x6f, 0x14, 0xa2, 0xcd, 0x82, 0x03, 0x6f, 0x88, 0x35, 0x1e, 0x6d, 0x41, 0x21, 0xa0, 0xe2, 0x1d, + 0xe3, 0x47, 0x91, 0xbd, 0x5c, 0x5b, 0x5c, 0xb3, 0x1a, 0xbf, 0xc8, 0x14, 0x63, 0x82, 0x69, 0x0a, + 0x41, 0x9c, 0xc3, 0x11, 0x0d, 0x44, 0xe2, 0xa6, 0xb5, 0x60, 0x1b, 0x78, 0xea, 0x00, 0xfd, 0x01, + 0x0a, 0x34, 0x70, 0x43, 0xe6, 0x05, 0xc2, 0x2e, 0x5c, 0x1e, 0x48, 0x57, 0x63, 0x64, 0x32, 0xf1, + 0x94, 0xd1, 0xca, 0x83, 0x39, 0x62, 0x2e, 0xad, 0x6f, 0xc0, 0x8d, 0x8f, 0x92, 0x85, 0x2a, 0x50, + 0xd0, 0xc9, 0x4a, 0xaa, 0x6c, 0xe2, 0xe9, 0xbe, 0x7e, 0x1d, 0x56, 0xe6, 0x12, 0x53, 0xff, 0x7a, + 0x11, 0x0a, 0x93, 0x6a, 0xa1, 0x26, 0x14, 0x1d, 0x16, 0x08, 0xe2, 0x05, 0x94, 0x6b, 0x81, 0x64, + 0xe6, 0xb6, 0x3d, 0x01, 0x49, 0xd6, 0xab, 0x1c, 0x9e, 0xb1, 0xd0, 0x9f, 0xa1, 0xc8, 0x69, 0xc4, + 0x62, 0xee, 0xd0, 0x48, 0x2b, 0x64, 0x2d, 0xbb, 0xc6, 0x09, 0x08, 0xd3, 0xbf, 0xc7, 0x1e, 0xa7, + 0x32, 0x4f, 0x11, 0x9e, 0x51, 0xd1, 0x0b, 0x58, 0xe6, 0x34, 0x12, 0x84, 0x8b, 0x4f, 0x15, 0x19, + 0x27, 0x90, 0x3e, 0xf3, 0x3d, 0xe7, 0x18, 0x4f, 0x18, 0xe8, 0x05, 0x14, 0x43, 0x9f, 0x38, 0xca, + 0xab, 0xbd, 0xa4, 0xe8, 0x3f, 0xc9, 0xa2, 0xf7, 0x27, 0x20, 0x3c, 0xc3, 0xa3, 0xe7, 0x00, 0x3e, + 0x1b, 0x0e, 0x5c, 0xee, 0x8d, 0x29, 0xd7, 0x22, 0xa9, 0x64, 0xb1, 0x3b, 0x0a, 0x81, 0x8b, 0x3e, + 0x1b, 0x26, 0x4b, 0xb4, 0xf9, 0xa3, 0x14, 0x92, 0x52, 0xc7, 0x16, 0x00, 0x99, 0x3e, 0xd5, 0xfa, + 0x78, 0xf2, 0x45, 0xae, 0x74, 0x45, 0x52, 0xf4, 0x56, 0x11, 0x96, 0x79, 0x1c, 0x08, 0x6f, 0x44, + 0xeb, 0x5b, 0x70, 0x2b, 0x93, 0x81, 0x1a, 0x50, 0x9a, 0xd6, 0x70, 0xe0, 0xb9, 0xaa, 0xf8, 0xc5, + 0xd6, 0xf5, 0x8b, 0xb3, 0x55, 0x6b, 0x5a, 0xec, 0x5e, 0x07, 0x5b, 0x53, 0x50, 0xcf, 0xad, 0x7f, + 0x63, 0xc2, 0xca, 0x9c, 0x12, 0xd0, 0x4d, 0x58, 0xf2, 0x46, 0x64, 0x48, 0x13, 0x3a, 0x4e, 0x36, + 0xa8, 0x0b, 0x79, 0x9f, 0xec, 0x53, 0x5f, 0xea, 0x41, 0xe6, 0xe4, 0x97, 0x9f, 0x95, 0xd4, 0xfa, + 0x5f, 0x15, 0xbe, 0x1b, 0x08, 0x7e, 0x8c, 0x35, 0x19, 0xd9, 0xb0, 0xec, 0xb0, 0xd1, 0x88, 0x04, + 0xb2, 0x77, 0x2c, 0xae, 0x15, 0xf1, 0x64, 0x8b, 0x10, 0x98, 0x84, 0x0f, 0x23, 0xdb, 0x54, 0x66, + 0xb5, 0x46, 0x65, 0x58, 0xa4, 0xc1, 0xd8, 0x5e, 0x52, 0x26, 0xb9, 0x94, 0x16, 0xd7, 0x4b, 0x0a, + 0x5a, 0xc4, 0x72, 0x29, 0x79, 0x71, 0x44, 0xb9, 0xbd, 0xac, 0x4c, 0x6a, 0x8d, 0x7e, 0x07, 0xf9, + 0x11, 0x8b, 0x03, 0x11, 0xd9, 0x05, 0x15, 0xec, 0xdd, 0xac, 0x60, 0xb7, 0x25, 0x42, 0xf7, 0x36, + 0x0d, 0x47, 0xaf, 0xe0, 0x46, 0x24, 0x58, 0x38, 0x18, 0x72, 0xe2, 0xd0, 0x41, 0x48, 0xb9, 0xc7, + 0x5c, 0xbb, 0x78, 0x79, 0x8b, 0xec, 0xe8, 0xf1, 0x8d, 0xaf, 0x4b, 0xda, 0xa6, 0x64, 0xf5, 0x15, + 0x09, 0xf5, 0xa1, 0x14, 0xc6, 0xbe, 0x3f, 0x60, 0x61, 0xd2, 0xa9, 0x41, 0x39, 0xf9, 0x82, 0xac, + 0xf5, 0x63, 0xdf, 0x7f, 0x9d, 0x90, 0xb0, 0x15, 0xce, 0x36, 0xe8, 0x36, 0xe4, 0x87, 0x9c, 0xc5, + 0x61, 0x64, 0x5b, 0x2a, 0x1f, 0x7a, 0x87, 0x5e, 0xc2, 0x72, 0x44, 0x1d, 0x4e, 0x45, 0x64, 0x97, + 0xd4, 0xdb, 0x3e, 0xcc, 0x3a, 0x64, 0x57, 0x41, 0x30, 0x3d, 0xa0, 0x9c, 0x06, 0x0e, 0xc5, 0x13, + 0x4e, 0xe5, 0x39, 0x58, 0xa9, 0x42, 0xc9, 0x04, 0x1f, 0xd1, 0x63, 0x5d, 0x7b, 0xb9, 0x94, 0x7a, + 0x18, 0x13, 0x3f, 0x4e, 0xae, 0x0f, 0x45, 0x9c, 0x6c, 0x7e, 0xbf, 0xf0, 0xcc, 0xa8, 0x34, 0xc0, + 0x4a, 0x45, 0x8b, 0x1e, 0xc2, 0x0a, 0xa7, 0x43, 0x2f, 0x12, 0xfc, 0x78, 0x40, 0x62, 0x71, 0x68, + 0xff, 0x49, 0x11, 0x4a, 0x13, 0x63, 0x33, 0x16, 0x87, 0xf5, 0xef, 0x0c, 0x28, 0xa5, 0xfb, 0x21, + 0x6a, 0x27, 0x5d, 0x50, 0x9d, 0x78, 0xad, 0xb1, 0xf1, 0xb9, 0xfe, 0xa9, 0x7a, 0x8e, 0x1f, 0xcb, + 0x13, 0xb7, 0xe5, 0x9d, 0x45, 0x91, 0xd1, 0x6f, 0x61, 0x29, 0x64, 0x5c, 0x4c, 0xc4, 0x59, 0xcd, + 0xec, 0x13, 0x8c, 0x4f, 0xbe, 0xd1, 0x04, 0x5c, 0x3f, 0x84, 0x6b, 0xf3, 0xde, 0xd0, 0x23, 0x58, + 0x7c, 0xdb, 0xeb, 0x97, 0x73, 0x95, 0x7b, 0x27, 0xa7, 0xb5, 0x3b, 0xf3, 0x0f, 0xdf, 0x7a, 0x5c, + 0xc4, 0xc4, 0xef, 0xf5, 0xd1, 0xcf, 0x61, 0xa9, 0xb3, 0xb3, 0x8b, 0x71, 0xd9, 0xa8, 0xac, 0x9e, + 0x9c, 0xd6, 0xee, 0xcd, 0xe3, 0xe4, 0x23, 0x16, 0x07, 0x2e, 0x66, 0xfb, 0xd3, 0x31, 0xfe, 0xdf, + 0x05, 0xb0, 0xf4, 0x37, 0x7b, 0xb5, 0x63, 0xfc, 0x8f, 0xb0, 0x92, 0xf4, 0xb8, 0x81, 0xa3, 0x5e, + 0x4d, 0x77, 0xeb, 0x4f, 0xb5, 0xba, 0x52, 0x42, 0x48, 0x52, 0x81, 0x1e, 0x40, 0xc9, 0x0b, 0xc7, + 0x4f, 0x07, 0x34, 0x20, 0xfb, 0xbe, 0x9e, 0xe8, 0x05, 0x6c, 0x49, 0x5b, 0x37, 0x31, 0xc9, 0x51, + 0xe4, 0x05, 0x82, 0xf2, 0x40, 0xcf, 0xea, 0x02, 0x9e, 0xee, 0xd1, 0x4b, 0x30, 0xbd, 0x90, 0x8c, + 0x74, 0x7f, 0xce, 0x7c, 0x83, 0x5e, 0xbf, 0xb9, 0xad, 0x25, 0xd2, 0x2a, 0x5c, 0x9c, 0xad, 0x9a, + 0xd2, 0x80, 0x15, 0x0d, 0x55, 0x27, 0x2d, 0x52, 0x9e, 0xa4, 0xbe, 0xea, 0x02, 0x4e, 0x59, 0xea, + 0xff, 0x36, 0xc1, 0x6a, 0xfb, 0x71, 0x24, 0x74, 0x6f, 0xba, 0xb2, 0xbc, 0xfd, 0x0d, 0x6e, 0x10, + 0x75, 0xe9, 0x23, 0x81, 0xfc, 0xd0, 0xd5, 0xe8, 0xd1, 0xb9, 0x7b, 0x94, 0xe9, 0x6e, 0x0a, 0x4e, + 0xc6, 0x54, 0x2b, 0x2f, 0x7d, 0xda, 0x06, 0x2e, 0x93, 0x1f, 0x3c, 0x41, 0xbb, 0xb0, 0xc2, 0xb8, + 0x73, 0x48, 0x23, 0x91, 0xf4, 0x06, 0x7d, 0x49, 0xca, 0xbc, 0x3e, 0xbf, 0x4e, 0x03, 0xf5, 0x15, + 0x23, 0x89, 0x76, 0xde, 0x07, 0x7a, 0x06, 0x26, 0x27, 0x07, 0x93, 0x31, 0x9a, 0xa9, 0x6f, 0x4c, + 0x0e, 0xc4, 0x9c, 0x0b, 0xc5, 0x40, 0x7f, 0x01, 0x70, 0xbd, 0x28, 0x24, 0xc2, 0x39, 0xa4, 0x5c, + 0xd7, 0x29, 0xf3, 0x15, 0x3b, 0x53, 0xd4, 0x9c, 0x97, 0x14, 0x1b, 0x6d, 0x41, 0xd1, 0x21, 0x13, + 0xa5, 0xe5, 0x2f, 0x6f, 0x8b, 0xed, 0xa6, 0x76, 0x51, 0x96, 0x2e, 0x2e, 0xce, 0x56, 0x0b, 0x13, + 0x0b, 0x2e, 0x38, 0x44, 0x2b, 0x6f, 0x0b, 0x56, 0xe4, 0x8d, 0x72, 0xe0, 0xd2, 0x03, 0x12, 0xfb, + 0x22, 0x52, 0x1d, 0xfc, 0x92, 0x1b, 0x94, 0xbc, 0xdc, 0x74, 0x34, 0x4e, 0xc7, 0x55, 0x12, 0x29, + 0x5b, 0xfd, 0x3f, 0x06, 0x40, 0xd2, 0xe2, 0xae, 0x56, 0x27, 0x0d, 0x30, 0xe5, 0xef, 0x9c, 0xfe, + 0x75, 0xaa, 0x5e, 0xde, 0x59, 0xf7, 0x8e, 0x43, 0x8a, 0x15, 0x56, 0x4e, 0x24, 0x41, 0x86, 0x91, + 0x1e, 0x70, 0x6a, 0x2d, 0x6d, 0x2e, 0x11, 0x44, 0xd5, 0xaf, 0x84, 0xd5, 0xba, 0x75, 0xff, 0xc3, + 0x79, 0x35, 0xf7, 0xff, 0xf3, 0x6a, 0xee, 0xdb, 0xf3, 0xaa, 0xf1, 0x8f, 0x8b, 0xaa, 0xf1, 0xe1, + 0xa2, 0x6a, 0xfc, 0xef, 0xa2, 0x6a, 0x7c, 0x75, 0x51, 0x35, 0xf6, 0xf3, 0xea, 0x8f, 0xf0, 0x37, + 0xdf, 0x07, 0x00, 0x00, 0xff, 0xff, 0x1e, 0xd5, 0xdd, 0x17, 0x70, 0x0e, 0x00, 0x00, } diff --git a/api/specs.proto b/api/specs.proto index 9f51ec5979..25288ce6ec 100644 --- a/api/specs.proto +++ b/api/specs.proto @@ -188,6 +188,10 @@ message ContainerSpec { // PullOptions parameterize the behavior of image pulls. PullOptions pull_options = 10; + + // SecretReference contains references to zero or more secrets that + // will be exposed to the container. + repeated SecretReference secrets = 12; } // EndpointSpec defines the properties that can be configured to @@ -271,3 +275,17 @@ message ClusterSpec { // TaskDefaults specifies the default values to use for task creation. TaskDefaults task_defaults = 7 [(gogoproto.nullable) = false]; } + +// SecretSpec specifies a user-provided secret. +message SecretSpec { + Annotations annotations = 1 [(gogoproto.nullable) = false]; + + // Type distinguishes the different kinds of secrets in the system. + SecretType type = 2; + + // Tags group secrets. + repeated string tags = 3; + + // Secret payload. + bytes data = 4; +} diff --git a/api/types.pb.go b/api/types.pb.go index 2ce0db5fb0..ace78848b4 100644 --- a/api/types.pb.go +++ b/api/types.pb.go @@ -56,6 +56,7 @@ Certificate EncryptionKey ManagerStatus + SecretReference NodeSpec ServiceSpec ReplicatedService @@ -66,6 +67,7 @@ EndpointSpec NetworkSpec ClusterSpec + SecretSpec Meta Node Service @@ -74,6 +76,7 @@ NetworkAttachment Network Cluster + Secret GetNodeRequest GetNodeResponse ListNodesRequest @@ -259,6 +262,28 @@ func (x NodeRole) String() string { } func (NodeRole) EnumDescriptor() ([]byte, []int) { return fileDescriptorTypes, []int{1} } +// SecretType provides information about what kind of secret this is +type SecretType int32 + +const ( + SecretType_ContainerSecret SecretType = 0 + SecretType_NodeSecret SecretType = 1 +) + +var SecretType_name = map[int32]string{ + 0: "CONTAINER", + 1: "NODE", +} +var SecretType_value = map[string]int32{ + "CONTAINER": 0, + "NODE": 1, +} + +func (x SecretType) String() string { + return proto.EnumName(SecretType_name, int32(x)) +} +func (SecretType) EnumDescriptor() ([]byte, []int) { return fileDescriptorTypes, []int{2} } + type RaftMemberStatus_Reachability int32 const ( @@ -597,6 +622,28 @@ func (EncryptionKey_Algorithm) EnumDescriptor() ([]byte, []int) { return fileDescriptorTypes, []int{36, 0} } +// Mode specifies how this secret should be exposed inside the task. +type SecretReference_Mode int32 + +const ( + SecretReference_FILE SecretReference_Mode = 0 + SecretReference_ENV SecretReference_Mode = 1 +) + +var SecretReference_Mode_name = map[int32]string{ + 0: "FILE", + 1: "ENV", +} +var SecretReference_Mode_value = map[string]int32{ + "FILE": 0, + "ENV": 1, +} + +func (x SecretReference_Mode) String() string { + return proto.EnumName(SecretReference_Mode_name, int32(x)) +} +func (SecretReference_Mode) EnumDescriptor() ([]byte, []int) { return fileDescriptorTypes, []int{38, 0} } + // Version tracks the last time an object in the store was updated. type Version struct { Index uint64 `protobuf:"varint,1,opt,name=index,proto3" json:"index,omitempty"` @@ -1335,6 +1382,20 @@ func (m *ManagerStatus) Reset() { *m = ManagerStatus{} } func (*ManagerStatus) ProtoMessage() {} func (*ManagerStatus) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{37} } +// SecretReference is the linkage between a service and a secret that it uses. +type SecretReference struct { + // Name is the name of the secret that this reference. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Mode is one or more ways the secret should be presented. + Mode []SecretReference_Mode `protobuf:"varint,2,rep,name=mode,enum=docker.swarmkit.v1.SecretReference_Mode" json:"mode,omitempty"` + // Target is the name by which the image accesses the secret. + Target string `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` +} + +func (m *SecretReference) Reset() { *m = SecretReference{} } +func (*SecretReference) ProtoMessage() {} +func (*SecretReference) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{38} } + func init() { proto.RegisterType((*Version)(nil), "docker.swarmkit.v1.Version") proto.RegisterType((*Annotations)(nil), "docker.swarmkit.v1.Annotations") @@ -1379,8 +1440,10 @@ func init() { proto.RegisterType((*Certificate)(nil), "docker.swarmkit.v1.Certificate") proto.RegisterType((*EncryptionKey)(nil), "docker.swarmkit.v1.EncryptionKey") proto.RegisterType((*ManagerStatus)(nil), "docker.swarmkit.v1.ManagerStatus") + proto.RegisterType((*SecretReference)(nil), "docker.swarmkit.v1.SecretReference") proto.RegisterEnum("docker.swarmkit.v1.TaskState", TaskState_name, TaskState_value) proto.RegisterEnum("docker.swarmkit.v1.NodeRole", NodeRole_name, NodeRole_value) + proto.RegisterEnum("docker.swarmkit.v1.SecretType", SecretType_name, SecretType_value) proto.RegisterEnum("docker.swarmkit.v1.RaftMemberStatus_Reachability", RaftMemberStatus_Reachability_name, RaftMemberStatus_Reachability_value) proto.RegisterEnum("docker.swarmkit.v1.NodeStatus_State", NodeStatus_State_name, NodeStatus_State_value) proto.RegisterEnum("docker.swarmkit.v1.Mount_MountType", Mount_MountType_name, Mount_MountType_value) @@ -1393,6 +1456,7 @@ func init() { proto.RegisterEnum("docker.swarmkit.v1.IssuanceStatus_State", IssuanceStatus_State_name, IssuanceStatus_State_value) proto.RegisterEnum("docker.swarmkit.v1.ExternalCA_CAProtocol", ExternalCA_CAProtocol_name, ExternalCA_CAProtocol_value) proto.RegisterEnum("docker.swarmkit.v1.EncryptionKey_Algorithm", EncryptionKey_Algorithm_name, EncryptionKey_Algorithm_value) + proto.RegisterEnum("docker.swarmkit.v1.SecretReference_Mode", SecretReference_Mode_name, SecretReference_Mode_value) } func (m *Version) Copy() *Version { @@ -2071,6 +2135,26 @@ func (m *ManagerStatus) Copy() *ManagerStatus { return o } +func (m *SecretReference) Copy() *SecretReference { + if m == nil { + return nil + } + + o := &SecretReference{ + Name: m.Name, + Target: m.Target, + } + + if m.Mode != nil { + o.Mode = make([]SecretReference_Mode, 0, len(m.Mode)) + for _, v := range m.Mode { + o.Mode = append(o.Mode, v) + } + } + + return o +} + func (this *Version) GoString() string { if this == nil { return "nil" @@ -2709,6 +2793,18 @@ func (this *ManagerStatus) GoString() string { s = append(s, "}") return strings.Join(s, "") } +func (this *SecretReference) GoString() string { + if this == nil { + return "nil" + } + s := make([]string, 0, 7) + s = append(s, "&api.SecretReference{") + s = append(s, "Name: "+fmt.Sprintf("%#v", this.Name)+",\n") + s = append(s, "Mode: "+fmt.Sprintf("%#v", this.Mode)+",\n") + s = append(s, "Target: "+fmt.Sprintf("%#v", this.Target)+",\n") + s = append(s, "}") + return strings.Join(s, "") +} func valueToGoStringTypes(v interface{}, typ string) string { rv := reflect.ValueOf(v) if rv.IsNil() { @@ -4428,6 +4524,43 @@ func (m *ManagerStatus) MarshalTo(data []byte) (int, error) { return i, nil } +func (m *SecretReference) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *SecretReference) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Name) > 0 { + data[i] = 0xa + i++ + i = encodeVarintTypes(data, i, uint64(len(m.Name))) + i += copy(data[i:], m.Name) + } + if len(m.Mode) > 0 { + for _, num := range m.Mode { + data[i] = 0x10 + i++ + i = encodeVarintTypes(data, i, uint64(num)) + } + } + if len(m.Target) > 0 { + data[i] = 0x1a + i++ + i = encodeVarintTypes(data, i, uint64(len(m.Target))) + i += copy(data[i:], m.Target) + } + return i, nil +} + func encodeFixed64Types(data []byte, offset int, v uint64) int { data[offset] = uint8(v) data[offset+1] = uint8(v >> 8) @@ -5188,6 +5321,25 @@ func (m *ManagerStatus) Size() (n int) { return n } +func (m *SecretReference) Size() (n int) { + var l int + _ = l + l = len(m.Name) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + if len(m.Mode) > 0 { + for _, e := range m.Mode { + n += 1 + sovTypes(uint64(e)) + } + } + l = len(m.Target) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + return n +} + func sovTypes(x uint64) (n int) { for { n++ @@ -5777,6 +5929,18 @@ func (this *ManagerStatus) String() string { }, "") return s } +func (this *SecretReference) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SecretReference{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `Mode:` + fmt.Sprintf("%v", this.Mode) + `,`, + `Target:` + fmt.Sprintf("%v", this.Target) + `,`, + `}`, + }, "") + return s +} func valueToStringTypes(v interface{}) string { rv := reflect.ValueOf(v) if rv.IsNil() { @@ -11598,6 +11762,134 @@ func (m *ManagerStatus) Unmarshal(data []byte) error { } return nil } +func (m *SecretReference) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SecretReference: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SecretReference: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Mode", wireType) + } + var v SecretReference_Mode + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (SecretReference_Mode(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Mode = append(m.Mode, v) + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Target", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Target = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTypes(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthTypes + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipTypes(data []byte) (n int, err error) { l := len(data) iNdEx := 0 @@ -11706,225 +11998,231 @@ var ( func init() { proto.RegisterFile("types.proto", fileDescriptorTypes) } var fileDescriptorTypes = []byte{ - // 3514 bytes of a gzipped FileDescriptorProto + // 3609 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x59, 0xcd, 0x6f, 0x23, 0x47, - 0x76, 0x17, 0x3f, 0x45, 0x3e, 0x52, 0x52, 0x4f, 0xcd, 0xec, 0x58, 0x43, 0x8f, 0x25, 0xba, 0xc7, - 0xb3, 0x9e, 0xf5, 0x3a, 0xb4, 0x2d, 0x6f, 0x8c, 0x59, 0x4f, 0xb2, 0x76, 0x8b, 0xa4, 0x66, 0xb8, - 0x23, 0x51, 0x44, 0x91, 0x9c, 0x81, 0x11, 0x20, 0x44, 0xa9, 0xbb, 0x44, 0xb6, 0xd5, 0xec, 0x62, - 0xba, 0x8b, 0xd2, 0x30, 0x41, 0x80, 0x49, 0x0e, 0x49, 0xa0, 0x53, 0xee, 0x81, 0xb0, 0x08, 0x12, - 0xe4, 0x96, 0x73, 0x80, 0x9c, 0x7c, 0xf4, 0x71, 0x83, 0x00, 0xc1, 0x22, 0x41, 0x06, 0xb1, 0xf2, - 0x0f, 0x2c, 0x10, 0x04, 0x7b, 0x48, 0x0e, 0x41, 0x7d, 0x74, 0xf3, 0x63, 0x38, 0xf2, 0x38, 0xbb, - 0x27, 0x76, 0xbd, 0xfa, 0xbd, 0x57, 0xaf, 0xea, 0xbd, 0x7a, 0xf5, 0xab, 0x22, 0x14, 0xf8, 0x64, - 0x44, 0xc3, 0xca, 0x28, 0x60, 0x9c, 0x21, 0xe4, 0x30, 0xfb, 0x84, 0x06, 0x95, 0xf0, 0x8c, 0x04, - 0xc3, 0x13, 0x97, 0x57, 0x4e, 0x3f, 0x2a, 0xdd, 0xe2, 0xee, 0x90, 0x86, 0x9c, 0x0c, 0x47, 0x1f, - 0xc4, 0x5f, 0x0a, 0x5e, 0x7a, 0xc3, 0x19, 0x07, 0x84, 0xbb, 0xcc, 0xff, 0x20, 0xfa, 0xd0, 0x1d, - 0x37, 0xfa, 0xac, 0xcf, 0xe4, 0xe7, 0x07, 0xe2, 0x4b, 0x49, 0xcd, 0x6d, 0x58, 0x7d, 0x42, 0x83, - 0xd0, 0x65, 0x3e, 0xba, 0x01, 0x19, 0xd7, 0x77, 0xe8, 0xb3, 0xcd, 0x44, 0x39, 0x71, 0x2f, 0x8d, - 0x55, 0xc3, 0xfc, 0xeb, 0x04, 0x14, 0x2c, 0xdf, 0x67, 0x5c, 0xda, 0x0a, 0x11, 0x82, 0xb4, 0x4f, - 0x86, 0x54, 0x82, 0xf2, 0x58, 0x7e, 0xa3, 0x2a, 0x64, 0x3d, 0x72, 0x44, 0xbd, 0x70, 0x33, 0x59, - 0x4e, 0xdd, 0x2b, 0xec, 0xfc, 0xb0, 0xf2, 0xb2, 0xcf, 0x95, 0x19, 0x23, 0x95, 0x7d, 0x89, 0xae, - 0xfb, 0x3c, 0x98, 0x60, 0xad, 0x5a, 0xfa, 0x31, 0x14, 0x66, 0xc4, 0xc8, 0x80, 0xd4, 0x09, 0x9d, - 0xe8, 0x61, 0xc4, 0xa7, 0xf0, 0xef, 0x94, 0x78, 0x63, 0xba, 0x99, 0x94, 0x32, 0xd5, 0xf8, 0x34, - 0x79, 0x3f, 0x61, 0x7e, 0x01, 0x79, 0x4c, 0x43, 0x36, 0x0e, 0x6c, 0x1a, 0xa2, 0x1f, 0x40, 0xde, - 0x27, 0x3e, 0xeb, 0xd9, 0xa3, 0x71, 0x28, 0xd5, 0x53, 0xbb, 0xc5, 0xcb, 0x17, 0xdb, 0xb9, 0x26, - 0xf1, 0x59, 0xb5, 0xd5, 0x0d, 0x71, 0x4e, 0x74, 0x57, 0x47, 0xe3, 0x10, 0xbd, 0x0d, 0xc5, 0x21, - 0x1d, 0xb2, 0x60, 0xd2, 0x3b, 0x9a, 0x70, 0x1a, 0x4a, 0xc3, 0x29, 0x5c, 0x50, 0xb2, 0x5d, 0x21, - 0x32, 0xff, 0x32, 0x01, 0x37, 0x22, 0xdb, 0x98, 0xfe, 0xc1, 0xd8, 0x0d, 0xe8, 0x90, 0xfa, 0x3c, - 0x44, 0xbf, 0x0d, 0x59, 0xcf, 0x1d, 0xba, 0x5c, 0x8d, 0x51, 0xd8, 0x79, 0x6b, 0xd9, 0x9c, 0x63, - 0xaf, 0xb0, 0x06, 0x23, 0x0b, 0x8a, 0x01, 0x0d, 0x69, 0x70, 0xaa, 0x56, 0x42, 0x0e, 0xf9, 0xad, - 0xca, 0x73, 0x2a, 0xe6, 0x1e, 0xe4, 0x5a, 0x1e, 0xe1, 0xc7, 0x2c, 0x18, 0x22, 0x13, 0x8a, 0x24, - 0xb0, 0x07, 0x2e, 0xa7, 0x36, 0x1f, 0x07, 0x51, 0x54, 0xe6, 0x64, 0xe8, 0x26, 0x24, 0x99, 0x1a, - 0x28, 0xbf, 0x9b, 0xbd, 0x7c, 0xb1, 0x9d, 0x3c, 0x6c, 0xe3, 0x24, 0x0b, 0xcd, 0x07, 0x70, 0xad, - 0xe5, 0x8d, 0xfb, 0xae, 0x5f, 0xa3, 0xa1, 0x1d, 0xb8, 0x23, 0x61, 0x5d, 0x84, 0x57, 0x24, 0x5f, - 0x14, 0x5e, 0xf1, 0x1d, 0x87, 0x3c, 0x39, 0x0d, 0xb9, 0xf9, 0xe7, 0x49, 0xb8, 0x56, 0xf7, 0xfb, - 0xae, 0x4f, 0x67, 0xb5, 0xef, 0xc2, 0x3a, 0x95, 0xc2, 0xde, 0xa9, 0x4a, 0x2a, 0x6d, 0x67, 0x4d, - 0x49, 0xa3, 0x4c, 0x6b, 0x2c, 0xe4, 0xcb, 0x47, 0xcb, 0xa6, 0xff, 0x92, 0xf5, 0x65, 0x59, 0x83, - 0xea, 0xb0, 0x3a, 0x92, 0x93, 0x08, 0x37, 0x53, 0xd2, 0xd6, 0xdd, 0x65, 0xb6, 0x5e, 0x9a, 0xe7, - 0x6e, 0xfa, 0xeb, 0x17, 0xdb, 0x2b, 0x38, 0xd2, 0xfd, 0x75, 0x92, 0xef, 0x3f, 0x13, 0xb0, 0xd1, - 0x64, 0xce, 0xdc, 0x3a, 0x94, 0x20, 0x37, 0x60, 0x21, 0x9f, 0xd9, 0x28, 0x71, 0x1b, 0xdd, 0x87, - 0xdc, 0x48, 0x87, 0x4f, 0x47, 0xff, 0xf6, 0x72, 0x97, 0x15, 0x06, 0xc7, 0x68, 0xf4, 0x00, 0xf2, - 0x41, 0x94, 0x13, 0x9b, 0xa9, 0xd7, 0x49, 0x9c, 0x29, 0x1e, 0xfd, 0x2e, 0x64, 0x55, 0x10, 0x36, - 0xd3, 0x52, 0xf3, 0xee, 0x6b, 0xad, 0x39, 0xd6, 0x4a, 0xe6, 0x2f, 0x12, 0x60, 0x60, 0x72, 0xcc, - 0x0f, 0xe8, 0xf0, 0x88, 0x06, 0x6d, 0x4e, 0xf8, 0x38, 0x44, 0x37, 0x21, 0xeb, 0x51, 0xe2, 0xd0, - 0x40, 0x4e, 0x32, 0x87, 0x75, 0x0b, 0x75, 0x45, 0x92, 0x13, 0x7b, 0x40, 0x8e, 0x5c, 0xcf, 0xe5, - 0x13, 0x39, 0xcd, 0xf5, 0xe5, 0x51, 0x5e, 0xb4, 0x59, 0xc1, 0x33, 0x8a, 0x78, 0xce, 0x0c, 0xda, - 0x84, 0xd5, 0x21, 0x0d, 0x43, 0xd2, 0xa7, 0x72, 0xf6, 0x79, 0x1c, 0x35, 0xcd, 0x07, 0x50, 0x9c, - 0xd5, 0x43, 0x05, 0x58, 0xed, 0x36, 0x1f, 0x37, 0x0f, 0x9f, 0x36, 0x8d, 0x15, 0xb4, 0x01, 0x85, - 0x6e, 0x13, 0xd7, 0xad, 0xea, 0x23, 0x6b, 0x77, 0xbf, 0x6e, 0x24, 0xd0, 0x1a, 0xe4, 0xa7, 0xcd, - 0xa4, 0xf9, 0xb3, 0x04, 0x80, 0x08, 0xa0, 0x9e, 0xd4, 0xa7, 0x90, 0x09, 0x39, 0xe1, 0x2a, 0x70, - 0xeb, 0x3b, 0xef, 0x2c, 0xf3, 0x7a, 0x0a, 0xaf, 0x88, 0x1f, 0x8a, 0x95, 0xca, 0xac, 0x87, 0xc9, - 0x45, 0x0f, 0x33, 0x12, 0x39, 0xef, 0x5a, 0x0e, 0xd2, 0x35, 0xf1, 0x95, 0x40, 0x79, 0xc8, 0xe0, - 0xba, 0x55, 0xfb, 0xc2, 0x48, 0x22, 0x03, 0x8a, 0xb5, 0x46, 0xbb, 0x7a, 0xd8, 0x6c, 0xd6, 0xab, - 0x9d, 0x7a, 0xcd, 0x48, 0x99, 0x77, 0x21, 0xd3, 0x18, 0x92, 0x3e, 0x45, 0xb7, 0x45, 0x06, 0x1c, - 0xd3, 0x80, 0xfa, 0x76, 0x94, 0x58, 0x53, 0x81, 0xf9, 0xf3, 0x3c, 0x64, 0x0e, 0xd8, 0xd8, 0xe7, - 0x68, 0x67, 0x66, 0x17, 0xaf, 0xef, 0x6c, 0x2d, 0x9b, 0x82, 0x04, 0x56, 0x3a, 0x93, 0x11, 0xd5, - 0xbb, 0xfc, 0x26, 0x64, 0x55, 0xae, 0x68, 0xd7, 0x75, 0x4b, 0xc8, 0x39, 0x09, 0xfa, 0x94, 0xeb, - 0x45, 0xd7, 0x2d, 0x74, 0x0f, 0x72, 0x01, 0x25, 0x0e, 0xf3, 0xbd, 0x89, 0x4c, 0xa9, 0x9c, 0x2a, - 0xb3, 0x98, 0x12, 0xe7, 0xd0, 0xf7, 0x26, 0x38, 0xee, 0x45, 0x8f, 0xa0, 0x78, 0xe4, 0xfa, 0x4e, - 0x8f, 0x8d, 0x54, 0xcd, 0xcb, 0xbc, 0x3a, 0x01, 0x95, 0x57, 0xbb, 0xae, 0xef, 0x1c, 0x2a, 0x30, - 0x2e, 0x1c, 0x4d, 0x1b, 0xa8, 0x09, 0xeb, 0xa7, 0xcc, 0x1b, 0x0f, 0x69, 0x6c, 0x2b, 0x2b, 0x6d, - 0xbd, 0xfb, 0x6a, 0x5b, 0x4f, 0x24, 0x3e, 0xb2, 0xb6, 0x76, 0x3a, 0xdb, 0x44, 0x8f, 0x61, 0x8d, - 0x0f, 0x47, 0xc7, 0x61, 0x6c, 0x6e, 0x55, 0x9a, 0xfb, 0xfe, 0x15, 0x0b, 0x26, 0xe0, 0x91, 0xb5, - 0x22, 0x9f, 0x69, 0x95, 0xfe, 0x34, 0x05, 0x85, 0x19, 0xcf, 0x51, 0x1b, 0x0a, 0xa3, 0x80, 0x8d, - 0x48, 0x5f, 0xd6, 0x6d, 0x1d, 0x8b, 0x8f, 0x5e, 0x6b, 0xd6, 0x95, 0xd6, 0x54, 0x11, 0xcf, 0x5a, - 0x31, 0x2f, 0x92, 0x50, 0x98, 0xe9, 0x44, 0xef, 0x41, 0x0e, 0xb7, 0x70, 0xe3, 0x89, 0xd5, 0xa9, - 0x1b, 0x2b, 0xa5, 0xdb, 0xe7, 0x17, 0xe5, 0x4d, 0x69, 0x6d, 0xd6, 0x40, 0x2b, 0x70, 0x4f, 0x45, - 0xea, 0xdd, 0x83, 0xd5, 0x08, 0x9a, 0x28, 0xbd, 0x79, 0x7e, 0x51, 0x7e, 0x63, 0x11, 0x3a, 0x83, - 0xc4, 0xed, 0x47, 0x16, 0xae, 0xd7, 0x8c, 0xe4, 0x72, 0x24, 0x6e, 0x0f, 0x48, 0x40, 0x1d, 0xf4, - 0x7d, 0xc8, 0x6a, 0x60, 0xaa, 0x54, 0x3a, 0xbf, 0x28, 0xdf, 0x5c, 0x04, 0x4e, 0x71, 0xb8, 0xbd, - 0x6f, 0x3d, 0xa9, 0x1b, 0xe9, 0xe5, 0x38, 0xdc, 0xf6, 0xc8, 0x29, 0x45, 0xef, 0x40, 0x46, 0xc1, - 0x32, 0xa5, 0x5b, 0xe7, 0x17, 0xe5, 0xef, 0xbd, 0x64, 0x4e, 0xa0, 0x4a, 0x9b, 0x7f, 0xf1, 0x37, - 0x5b, 0x2b, 0xff, 0xf8, 0xb7, 0x5b, 0xc6, 0x62, 0x77, 0xe9, 0x7f, 0x13, 0xb0, 0x36, 0x17, 0x72, - 0x64, 0x42, 0xd6, 0x67, 0x36, 0x1b, 0xa9, 0x72, 0x9e, 0xdb, 0x85, 0xcb, 0x17, 0xdb, 0xd9, 0x26, - 0xab, 0xb2, 0xd1, 0x04, 0xeb, 0x1e, 0xf4, 0x78, 0xe1, 0x40, 0xfa, 0xf8, 0x35, 0xf3, 0x69, 0xe9, - 0x91, 0xf4, 0x19, 0xac, 0x39, 0x81, 0x7b, 0x4a, 0x83, 0x9e, 0xcd, 0xfc, 0x63, 0xb7, 0xaf, 0x4b, - 0x75, 0x69, 0x99, 0xcd, 0x9a, 0x04, 0xe2, 0xa2, 0x52, 0xa8, 0x4a, 0xfc, 0xaf, 0x71, 0x18, 0x95, - 0x9e, 0x40, 0x71, 0x36, 0x43, 0xd1, 0x5b, 0x00, 0xa1, 0xfb, 0x87, 0x54, 0xf3, 0x1b, 0xc9, 0x86, - 0x70, 0x5e, 0x48, 0x24, 0xbb, 0x41, 0xef, 0x42, 0x7a, 0xc8, 0x1c, 0x65, 0x27, 0xb3, 0x7b, 0x5d, - 0x9c, 0x89, 0xff, 0xfa, 0x62, 0xbb, 0xc0, 0xc2, 0xca, 0x9e, 0xeb, 0xd1, 0x03, 0xe6, 0x50, 0x2c, - 0x01, 0xe6, 0x29, 0xa4, 0x45, 0xa9, 0x40, 0x6f, 0x42, 0x7a, 0xb7, 0xd1, 0xac, 0x19, 0x2b, 0xa5, - 0x6b, 0xe7, 0x17, 0xe5, 0x35, 0xb9, 0x24, 0xa2, 0x43, 0xe4, 0x2e, 0xda, 0x86, 0xec, 0x93, 0xc3, - 0xfd, 0xee, 0x81, 0x48, 0xaf, 0xeb, 0xe7, 0x17, 0xe5, 0x8d, 0xb8, 0x5b, 0x2d, 0x1a, 0x7a, 0x0b, - 0x32, 0x9d, 0x83, 0xd6, 0x5e, 0xdb, 0x48, 0x96, 0xd0, 0xf9, 0x45, 0x79, 0x3d, 0xee, 0x97, 0x3e, - 0x97, 0xae, 0xe9, 0xa8, 0xe6, 0x63, 0xb9, 0xf9, 0x3f, 0x49, 0x58, 0xc3, 0x82, 0xdf, 0x06, 0xbc, - 0xc5, 0x3c, 0xd7, 0x9e, 0xa0, 0x16, 0xe4, 0x6d, 0xe6, 0x3b, 0xee, 0xcc, 0x9e, 0xda, 0x79, 0xc5, - 0x21, 0x38, 0xd5, 0x8a, 0x5a, 0xd5, 0x48, 0x13, 0x4f, 0x8d, 0xa0, 0x1d, 0xc8, 0x38, 0xd4, 0x23, - 0x93, 0xab, 0x4e, 0xe3, 0x9a, 0xe6, 0xd2, 0x58, 0x41, 0x25, 0x73, 0x24, 0xcf, 0x7a, 0x84, 0x73, - 0x3a, 0x1c, 0x71, 0x75, 0x1a, 0xa7, 0x71, 0x61, 0x48, 0x9e, 0x59, 0x5a, 0x84, 0x7e, 0x04, 0xd9, - 0x33, 0xd7, 0x77, 0xd8, 0x99, 0x3e, 0x70, 0xaf, 0xb6, 0xab, 0xb1, 0xe6, 0xb9, 0x38, 0x67, 0x17, - 0x9c, 0x15, 0xab, 0xde, 0x3c, 0x6c, 0xd6, 0xa3, 0x55, 0xd7, 0xfd, 0x87, 0x7e, 0x93, 0xf9, 0x62, - 0xc7, 0xc0, 0x61, 0xb3, 0xb7, 0x67, 0x35, 0xf6, 0xbb, 0x58, 0xac, 0xfc, 0x8d, 0xf3, 0x8b, 0xb2, - 0x11, 0x43, 0xf6, 0x88, 0xeb, 0x09, 0x12, 0x78, 0x0b, 0x52, 0x56, 0xf3, 0x0b, 0x23, 0x59, 0x32, - 0xce, 0x2f, 0xca, 0xc5, 0xb8, 0xdb, 0xf2, 0x27, 0xd3, 0xcd, 0xb4, 0x38, 0xae, 0xf9, 0xef, 0x49, - 0x28, 0x76, 0x47, 0x0e, 0xe1, 0x54, 0x65, 0x26, 0x2a, 0x43, 0x61, 0x44, 0x02, 0xe2, 0x79, 0xd4, - 0x73, 0xc3, 0xa1, 0xbe, 0x28, 0xcc, 0x8a, 0xd0, 0xfd, 0xef, 0xb0, 0x98, 0x9a, 0x84, 0xe9, 0x25, - 0xed, 0xc2, 0xfa, 0xb1, 0x72, 0xb6, 0x47, 0x6c, 0x19, 0xdd, 0x94, 0x8c, 0x6e, 0x65, 0x99, 0x89, - 0x59, 0xaf, 0x2a, 0x7a, 0x8e, 0x96, 0xd4, 0xc2, 0x6b, 0xc7, 0xb3, 0x4d, 0xf4, 0x09, 0xac, 0x0e, - 0x99, 0xef, 0x72, 0x16, 0xbc, 0x56, 0x1c, 0x22, 0x30, 0x7a, 0x0f, 0xae, 0x89, 0x08, 0x47, 0x2e, - 0xc9, 0x6e, 0x79, 0x72, 0x25, 0xf1, 0xc6, 0x90, 0x3c, 0xd3, 0x63, 0x62, 0x21, 0x36, 0x3f, 0x81, - 0xb5, 0x39, 0x1f, 0xc4, 0x69, 0xde, 0xb2, 0xba, 0xed, 0xba, 0xb1, 0x82, 0x8a, 0x90, 0xab, 0x1e, - 0x36, 0x3b, 0x8d, 0x66, 0x57, 0x50, 0x8f, 0x22, 0xe4, 0xf0, 0xe1, 0xfe, 0xfe, 0xae, 0x55, 0x7d, - 0x6c, 0x24, 0xcd, 0xff, 0x8e, 0xd7, 0x57, 0x73, 0x8f, 0xdd, 0x79, 0xee, 0xf1, 0xfe, 0xab, 0xa7, - 0xae, 0xd9, 0xc7, 0xb4, 0x11, 0x73, 0x90, 0xdf, 0x01, 0x90, 0x61, 0xa4, 0x4e, 0x8f, 0xf0, 0xab, - 0xee, 0x17, 0x9d, 0xe8, 0xe6, 0x88, 0xf3, 0x5a, 0xc1, 0xe2, 0xe8, 0x73, 0x28, 0xda, 0x6c, 0x38, - 0xf2, 0xa8, 0xd6, 0x4f, 0xbd, 0x8e, 0x7e, 0x21, 0x56, 0xb1, 0xf8, 0x2c, 0x07, 0x4a, 0xcf, 0x73, - 0xa0, 0x3f, 0x4b, 0x40, 0x61, 0xc6, 0xe1, 0x79, 0x2a, 0x54, 0x84, 0x5c, 0xb7, 0x55, 0xb3, 0x3a, - 0x8d, 0xe6, 0x43, 0x23, 0x81, 0x00, 0xb2, 0x72, 0x01, 0x6b, 0x46, 0x52, 0xd0, 0xb5, 0xea, 0xe1, - 0x41, 0x6b, 0xbf, 0x2e, 0xc9, 0x10, 0xba, 0x01, 0x46, 0xb4, 0x84, 0xbd, 0x76, 0xc7, 0xc2, 0x42, - 0x9a, 0x46, 0xd7, 0x61, 0x23, 0x96, 0x6a, 0xcd, 0x0c, 0xba, 0x09, 0x28, 0x16, 0x4e, 0x4d, 0x64, - 0xcd, 0x3f, 0x86, 0x8d, 0x2a, 0xf3, 0x39, 0x71, 0xfd, 0x98, 0xca, 0xee, 0x88, 0x79, 0x6b, 0x51, - 0xcf, 0x75, 0x54, 0xb5, 0xdd, 0xdd, 0xb8, 0x7c, 0xb1, 0x5d, 0x88, 0xa1, 0x8d, 0x9a, 0x98, 0x69, - 0xd4, 0x70, 0xc4, 0x9e, 0x1a, 0xb9, 0x8e, 0x2e, 0x9e, 0xab, 0x97, 0x2f, 0xb6, 0x53, 0xad, 0x46, - 0x0d, 0x0b, 0x19, 0x7a, 0x13, 0xf2, 0xf4, 0x99, 0xcb, 0x7b, 0xb6, 0xa8, 0xae, 0x62, 0x0d, 0x33, - 0x38, 0x27, 0x04, 0x55, 0x51, 0x4c, 0xff, 0x24, 0x09, 0xd0, 0x21, 0xe1, 0x89, 0x1e, 0xfa, 0x01, - 0xe4, 0xe3, 0x4b, 0xfc, 0x55, 0x97, 0xc9, 0x99, 0x78, 0xc5, 0x78, 0xf4, 0x71, 0x94, 0x31, 0x8a, - 0x63, 0x2f, 0x57, 0xd4, 0x63, 0x2d, 0xa3, 0xa9, 0xf3, 0x44, 0x5a, 0x9c, 0x35, 0x34, 0x08, 0x74, - 0xe0, 0xc4, 0x27, 0xaa, 0xca, 0x7a, 0xab, 0xe6, 0xac, 0x99, 0xdb, 0x9d, 0x65, 0x83, 0x2c, 0x2c, - 0xe8, 0xa3, 0x15, 0x3c, 0xd5, 0xdb, 0x35, 0x60, 0x3d, 0x18, 0xfb, 0xc2, 0xeb, 0x5e, 0x28, 0xbb, - 0x4d, 0x17, 0xde, 0x68, 0x52, 0x7e, 0xc6, 0x82, 0x13, 0x8b, 0x73, 0x62, 0x0f, 0xc4, 0xa5, 0x5a, - 0x17, 0x99, 0x29, 0xe1, 0x4c, 0xcc, 0x11, 0xce, 0x4d, 0x58, 0x25, 0x9e, 0x4b, 0x42, 0xaa, 0x4e, - 0xe9, 0x3c, 0x8e, 0x9a, 0x82, 0x16, 0x13, 0xc7, 0x09, 0x68, 0x18, 0x52, 0x75, 0x0d, 0xcc, 0xe3, - 0xa9, 0xc0, 0xfc, 0xe7, 0x24, 0x40, 0xa3, 0x65, 0x1d, 0x68, 0xf3, 0x35, 0xc8, 0x1e, 0x93, 0xa1, - 0xeb, 0x4d, 0xae, 0xda, 0x64, 0x53, 0x7c, 0xc5, 0x52, 0x86, 0xf6, 0xa4, 0x0e, 0xd6, 0xba, 0x92, - 0x2d, 0x8f, 0x8f, 0x7c, 0xca, 0x63, 0xb6, 0x2c, 0x5b, 0xe2, 0x68, 0x0e, 0x88, 0x1f, 0x2f, 0xac, - 0x6a, 0x08, 0xd7, 0xfb, 0x84, 0xd3, 0x33, 0x32, 0x89, 0xf6, 0x84, 0x6e, 0xa2, 0x47, 0x82, 0x45, - 0x8b, 0xcb, 0x3d, 0x75, 0x36, 0x33, 0x92, 0x7b, 0x7c, 0x9b, 0x3f, 0x58, 0xc3, 0x15, 0xe9, 0x88, - 0xb5, 0x4b, 0x0f, 0xe4, 0x49, 0x39, 0xed, 0xfa, 0x4e, 0x97, 0xd8, 0x0f, 0x61, 0x6d, 0x6e, 0x9e, - 0x2f, 0x5d, 0x53, 0x1a, 0xad, 0x27, 0x3f, 0x32, 0xd2, 0xfa, 0xeb, 0x13, 0x23, 0x6b, 0xfe, 0x57, - 0x02, 0xa0, 0xc5, 0x82, 0x28, 0x68, 0xcb, 0x9f, 0x85, 0x72, 0xf2, 0x91, 0xc9, 0x66, 0x9e, 0x4e, - 0xcf, 0xa5, 0x3c, 0x7d, 0x6a, 0x45, 0xd0, 0x5e, 0x09, 0xc7, 0xb1, 0x22, 0xda, 0x86, 0x82, 0x8a, - 0x7f, 0x6f, 0xc4, 0x02, 0x55, 0x8f, 0xd6, 0x30, 0x28, 0x91, 0xd0, 0x44, 0x77, 0x61, 0x7d, 0x34, - 0x3e, 0xf2, 0xdc, 0x70, 0x40, 0x1d, 0x85, 0x49, 0x4b, 0xcc, 0x5a, 0x2c, 0x15, 0x30, 0xb3, 0x06, - 0xb9, 0xc8, 0x3a, 0xda, 0x84, 0x54, 0xa7, 0xda, 0x32, 0x56, 0x4a, 0x1b, 0xe7, 0x17, 0xe5, 0x42, - 0x24, 0xee, 0x54, 0x5b, 0xa2, 0xa7, 0x5b, 0x6b, 0x19, 0x89, 0xf9, 0x9e, 0x6e, 0xad, 0x55, 0x4a, - 0x8b, 0x53, 0xd2, 0xfc, 0xab, 0x04, 0x64, 0x15, 0x67, 0x5b, 0x3a, 0x63, 0x0b, 0x56, 0xa3, 0x9b, - 0x84, 0x22, 0x92, 0xef, 0xbe, 0x9a, 0xf4, 0x55, 0x34, 0x47, 0x53, 0x71, 0x8c, 0xf4, 0x4a, 0x9f, - 0x42, 0x71, 0xb6, 0xe3, 0x3b, 0x45, 0xf1, 0x8f, 0xa0, 0x20, 0x12, 0x25, 0x22, 0x7f, 0x3b, 0x90, - 0x55, 0xbc, 0x52, 0x57, 0x95, 0xab, 0x18, 0xa8, 0x46, 0xa2, 0xfb, 0xb0, 0xaa, 0x58, 0x6b, 0xf4, - 0x9e, 0xb2, 0x75, 0x75, 0x3a, 0xe2, 0x08, 0x6e, 0x7e, 0x06, 0xe9, 0x16, 0xa5, 0x01, 0xba, 0x03, - 0xab, 0x3e, 0x73, 0xe8, 0xb4, 0x88, 0x6a, 0xc2, 0xed, 0xd0, 0x46, 0x4d, 0x10, 0x6e, 0x87, 0x36, - 0x1c, 0xb1, 0x78, 0x62, 0x83, 0x46, 0x4f, 0x4a, 0xe2, 0xdb, 0xec, 0x40, 0xf1, 0x29, 0x75, 0xfb, - 0x03, 0x4e, 0x1d, 0x69, 0xe8, 0x7d, 0x48, 0x8f, 0x68, 0xec, 0xfc, 0xe6, 0xd2, 0xd4, 0xa1, 0x34, - 0xc0, 0x12, 0x25, 0x36, 0xe4, 0x99, 0xd4, 0xd6, 0xaf, 0x78, 0xba, 0x65, 0xfe, 0x7d, 0x12, 0xd6, - 0x1b, 0x61, 0x38, 0x26, 0xbe, 0x1d, 0x9d, 0xb2, 0x3f, 0x99, 0x3f, 0x65, 0xef, 0x2d, 0x9d, 0xe1, - 0x9c, 0xca, 0xfc, 0x2d, 0x5f, 0x17, 0xc9, 0x64, 0x5c, 0x24, 0xcd, 0xaf, 0x13, 0xd1, 0xf5, 0xfe, - 0xee, 0xcc, 0xbe, 0x29, 0x6d, 0x9e, 0x5f, 0x94, 0x6f, 0xcc, 0x5a, 0xa2, 0x5d, 0xff, 0xc4, 0x67, - 0x67, 0x3e, 0x7a, 0x5b, 0x5c, 0xf7, 0x9b, 0xf5, 0xa7, 0x46, 0xa2, 0x74, 0xf3, 0xfc, 0xa2, 0x8c, - 0xe6, 0x40, 0x98, 0xfa, 0xf4, 0x4c, 0x58, 0x6a, 0xd5, 0x9b, 0x35, 0x71, 0x1e, 0x26, 0x97, 0x58, - 0x6a, 0x51, 0xdf, 0x71, 0xfd, 0x3e, 0xba, 0x03, 0xd9, 0x46, 0xbb, 0xdd, 0x95, 0x17, 0xb0, 0x37, - 0xce, 0x2f, 0xca, 0xd7, 0xe7, 0x50, 0xa2, 0x41, 0x1d, 0x01, 0x12, 0x04, 0x51, 0x9c, 0x94, 0x4b, - 0x40, 0x82, 0xbb, 0x50, 0x47, 0x67, 0xf8, 0xbf, 0x25, 0xc1, 0xb0, 0x6c, 0x9b, 0x8e, 0xb8, 0xe8, - 0xd7, 0xa4, 0xbb, 0x03, 0xb9, 0x91, 0xf8, 0x72, 0xe5, 0x25, 0x42, 0xa4, 0xc5, 0xfd, 0xa5, 0x4f, - 0xbc, 0x0b, 0x7a, 0x15, 0xcc, 0x3c, 0x6a, 0x39, 0x43, 0x37, 0x0c, 0xc5, 0xe5, 0x52, 0xca, 0x70, - 0x6c, 0xa9, 0xf4, 0xcb, 0x04, 0x5c, 0x5f, 0x82, 0x40, 0x1f, 0x42, 0x3a, 0x60, 0x5e, 0x14, 0x9e, - 0xdb, 0xaf, 0x7a, 0x80, 0x11, 0xaa, 0x58, 0x22, 0xd1, 0x16, 0x00, 0x19, 0x73, 0x46, 0xe4, 0xf8, - 0x32, 0x30, 0x39, 0x3c, 0x23, 0x41, 0x4f, 0x21, 0x1b, 0x52, 0x3b, 0xa0, 0x11, 0x9f, 0xf9, 0xec, - 0xff, 0xeb, 0x7d, 0xa5, 0x2d, 0xcd, 0x60, 0x6d, 0xae, 0x54, 0x81, 0xac, 0x92, 0x88, 0x8c, 0x76, - 0x08, 0x27, 0xd2, 0xe9, 0x22, 0x96, 0xdf, 0x22, 0x51, 0x88, 0xd7, 0x8f, 0x12, 0x85, 0x78, 0x7d, - 0xf3, 0x67, 0x49, 0x80, 0xfa, 0x33, 0x4e, 0x03, 0x9f, 0x78, 0x55, 0x0b, 0xd5, 0x67, 0x2a, 0xa4, - 0x9a, 0xed, 0x0f, 0x96, 0x3e, 0xcb, 0xc5, 0x1a, 0x95, 0xaa, 0xb5, 0xa4, 0x46, 0xde, 0x82, 0xd4, - 0x38, 0xf0, 0xf4, 0x13, 0xaf, 0x24, 0x22, 0x5d, 0xbc, 0x8f, 0x85, 0x0c, 0xd5, 0xa7, 0x15, 0x29, - 0xf5, 0xea, 0xb7, 0xf9, 0x99, 0x01, 0x7e, 0xf3, 0x55, 0xe9, 0x7d, 0x80, 0xa9, 0xd7, 0x68, 0x0b, - 0x32, 0xd5, 0xbd, 0x76, 0x7b, 0xdf, 0x58, 0x51, 0x77, 0xc4, 0x69, 0x97, 0x14, 0x9b, 0x7f, 0x97, - 0x80, 0x5c, 0xd5, 0xd2, 0xa7, 0xca, 0x1e, 0x18, 0xb2, 0x96, 0xd8, 0x34, 0xe0, 0x3d, 0xfa, 0x6c, - 0xe4, 0x06, 0x13, 0x5d, 0x0e, 0xae, 0x66, 0xf1, 0xeb, 0x42, 0xab, 0x4a, 0x03, 0x5e, 0x97, 0x3a, - 0x08, 0x43, 0x91, 0xea, 0x29, 0xf6, 0x6c, 0x12, 0x15, 0xe7, 0xad, 0xab, 0x97, 0x42, 0xb1, 0xbf, - 0x69, 0x3b, 0xc4, 0x85, 0xc8, 0x48, 0x95, 0x84, 0xe6, 0x13, 0xb8, 0x7e, 0x18, 0xd8, 0x03, 0x1a, - 0x72, 0x35, 0xa8, 0x76, 0xf9, 0x33, 0xb8, 0xcd, 0x49, 0x78, 0xd2, 0x1b, 0xb8, 0x21, 0x67, 0xc1, - 0xa4, 0x17, 0x50, 0x4e, 0x7d, 0xd1, 0xdf, 0x93, 0xff, 0x00, 0xe8, 0x3b, 0xf8, 0x2d, 0x81, 0x79, - 0xa4, 0x20, 0x38, 0x42, 0xec, 0x0b, 0x80, 0xd9, 0x80, 0xa2, 0x20, 0x6c, 0x35, 0x7a, 0x4c, 0xc6, - 0x1e, 0x0f, 0xd1, 0x8f, 0x01, 0x3c, 0xd6, 0xef, 0xbd, 0x76, 0x25, 0xcf, 0x7b, 0xac, 0xaf, 0x3e, - 0xcd, 0xdf, 0x03, 0xa3, 0xe6, 0x86, 0x23, 0xc2, 0xed, 0x41, 0xf4, 0xb8, 0x80, 0x1e, 0x82, 0x31, - 0xa0, 0x24, 0xe0, 0x47, 0x94, 0xf0, 0xde, 0x88, 0x06, 0x2e, 0x73, 0x5e, 0x6b, 0x49, 0x37, 0x62, - 0xad, 0x96, 0x54, 0x32, 0x7f, 0x95, 0x00, 0xc0, 0xe4, 0x38, 0x22, 0x00, 0x3f, 0x84, 0x6b, 0xa1, - 0x4f, 0x46, 0xe1, 0x80, 0xf1, 0x9e, 0xeb, 0x73, 0x1a, 0x9c, 0x12, 0x4f, 0x5f, 0x10, 0x8d, 0xa8, - 0xa3, 0xa1, 0xe5, 0xe8, 0x7d, 0x40, 0x27, 0x94, 0x8e, 0x7a, 0xcc, 0x73, 0x7a, 0x51, 0xa7, 0xfa, - 0x8b, 0x22, 0x8d, 0x0d, 0xd1, 0x73, 0xe8, 0x39, 0xed, 0x48, 0x8e, 0x76, 0x61, 0x4b, 0xac, 0x00, - 0xf5, 0x79, 0xe0, 0xd2, 0xb0, 0x77, 0xcc, 0x82, 0x5e, 0xe8, 0xb1, 0xb3, 0xde, 0x31, 0xf3, 0x3c, - 0x76, 0x46, 0x83, 0xe8, 0xfa, 0x5d, 0xf2, 0x58, 0xbf, 0xae, 0x40, 0x7b, 0x2c, 0x68, 0x7b, 0xec, - 0x6c, 0x2f, 0x42, 0x08, 0x96, 0x30, 0x9d, 0x36, 0x77, 0xed, 0x93, 0x88, 0x25, 0xc4, 0xd2, 0x8e, - 0x6b, 0x9f, 0xa0, 0x3b, 0xb0, 0x46, 0x3d, 0x2a, 0x2f, 0x71, 0x0a, 0x95, 0x91, 0xa8, 0x62, 0x24, - 0x14, 0x20, 0xf3, 0xb7, 0x20, 0xdf, 0xf2, 0x88, 0x2d, 0xff, 0x08, 0x12, 0x57, 0x62, 0x9b, 0xf9, - 0x22, 0x09, 0x5c, 0x9f, 0xab, 0xea, 0x98, 0xc7, 0xb3, 0x22, 0xf3, 0x27, 0x00, 0x3f, 0x65, 0xae, - 0xdf, 0x61, 0x27, 0xd4, 0x97, 0x6f, 0xe6, 0x82, 0xf5, 0xea, 0x50, 0xe6, 0xb1, 0x6e, 0x49, 0x4e, - 0x4e, 0x7c, 0xd2, 0xa7, 0x41, 0xfc, 0x74, 0xac, 0x9a, 0xe2, 0x70, 0xc9, 0x62, 0xc6, 0x78, 0xd5, - 0x42, 0x65, 0xc8, 0xda, 0xa4, 0x17, 0xed, 0xbc, 0xe2, 0x6e, 0xfe, 0xf2, 0xc5, 0x76, 0xa6, 0x6a, - 0x3d, 0xa6, 0x13, 0x9c, 0xb1, 0xc9, 0x63, 0x3a, 0x11, 0xa7, 0xaf, 0x4d, 0xe4, 0x7e, 0x91, 0x66, - 0x8a, 0xea, 0xf4, 0xad, 0x5a, 0x62, 0x33, 0xe0, 0xac, 0x4d, 0xc4, 0x2f, 0xfa, 0x10, 0x8a, 0x1a, - 0xd4, 0x1b, 0x90, 0x70, 0xa0, 0xb8, 0xea, 0xee, 0xfa, 0xe5, 0x8b, 0x6d, 0x50, 0xc8, 0x47, 0x24, - 0x1c, 0x60, 0x50, 0x68, 0xf1, 0x8d, 0xea, 0x50, 0xf8, 0x92, 0xb9, 0x7e, 0x8f, 0xcb, 0x49, 0xe8, - 0x9b, 0xf4, 0xd2, 0xfd, 0x33, 0x9d, 0xaa, 0xbe, 0xde, 0xc3, 0x97, 0xb1, 0xc4, 0xfc, 0x97, 0x04, - 0x14, 0x84, 0x4d, 0xf7, 0xd8, 0xb5, 0xc5, 0x69, 0xf9, 0xdd, 0x2b, 0xfd, 0x2d, 0x48, 0xd9, 0x61, - 0xa0, 0xe7, 0x26, 0x4b, 0x5d, 0xb5, 0x8d, 0xb1, 0x90, 0xa1, 0xcf, 0x21, 0xab, 0x2e, 0x17, 0xba, - 0xc8, 0x9b, 0xdf, 0x7e, 0xae, 0x6b, 0x17, 0xb5, 0x9e, 0x8c, 0xe5, 0xd4, 0x3b, 0x39, 0xcb, 0x22, - 0x9e, 0x15, 0xa1, 0x9b, 0x90, 0xb4, 0x7d, 0x99, 0x14, 0xfa, 0xbf, 0xb4, 0x6a, 0x13, 0x27, 0x6d, - 0xdf, 0xfc, 0xa7, 0x04, 0xac, 0xd5, 0x7d, 0x3b, 0x98, 0xc8, 0x22, 0x29, 0x02, 0x71, 0x1b, 0xf2, - 0xe1, 0xf8, 0x28, 0x9c, 0x84, 0x9c, 0x0e, 0xa3, 0xa7, 0xfa, 0x58, 0x80, 0x1a, 0x90, 0x27, 0x5e, - 0x9f, 0x05, 0x2e, 0x1f, 0x0c, 0x35, 0x37, 0x5e, 0x5e, 0x98, 0x67, 0x6d, 0x56, 0xac, 0x48, 0x05, - 0x4f, 0xb5, 0xa3, 0x52, 0x9c, 0x92, 0xce, 0xca, 0x52, 0xfc, 0x36, 0x14, 0x3d, 0x32, 0x14, 0x54, - 0xb8, 0x27, 0xae, 0x5c, 0x72, 0x1e, 0x69, 0x5c, 0xd0, 0x32, 0x71, 0x8d, 0x34, 0x4d, 0xc8, 0xc7, - 0xc6, 0xd0, 0x06, 0x14, 0xac, 0x7a, 0xbb, 0xf7, 0xd1, 0xce, 0xfd, 0xde, 0xc3, 0xea, 0x81, 0xb1, - 0xa2, 0x99, 0xc0, 0x3f, 0x24, 0x60, 0xed, 0x40, 0xe5, 0xa0, 0x26, 0x4e, 0x77, 0x60, 0x35, 0x20, - 0xc7, 0x3c, 0xa2, 0x76, 0x69, 0x95, 0x5c, 0xa2, 0x08, 0x08, 0x6a, 0x27, 0xba, 0x96, 0x53, 0xbb, - 0x99, 0x3f, 0x8a, 0x52, 0x57, 0xfe, 0x51, 0x94, 0xfe, 0x8d, 0xfc, 0x51, 0xf4, 0xde, 0xaf, 0x52, - 0x90, 0x8f, 0x2f, 0xbd, 0x22, 0x65, 0x04, 0xd3, 0x5a, 0x51, 0x4f, 0x5f, 0xb1, 0xbc, 0x29, 0x39, - 0x56, 0xde, 0xda, 0xdf, 0x3f, 0xac, 0x5a, 0x9d, 0x7a, 0xcd, 0xf8, 0x5c, 0x51, 0xb1, 0x18, 0x60, - 0x79, 0x1e, 0x13, 0x41, 0x77, 0x90, 0x39, 0xa5, 0x62, 0xcf, 0xf5, 0x03, 0x5b, 0x8c, 0x8a, 0x78, - 0xd8, 0x3b, 0x90, 0xb3, 0xda, 0xed, 0xc6, 0xc3, 0x66, 0xbd, 0x66, 0x7c, 0x95, 0x28, 0x7d, 0xef, - 0xfc, 0xa2, 0x7c, 0x6d, 0x6a, 0x2a, 0x0c, 0xdd, 0xbe, 0x4f, 0x1d, 0x89, 0xaa, 0x56, 0xeb, 0x2d, - 0x31, 0xde, 0xf3, 0xe4, 0x22, 0x4a, 0x12, 0x10, 0xf9, 0x58, 0x9e, 0x6f, 0xe1, 0x7a, 0xcb, 0xc2, - 0x62, 0xc4, 0xaf, 0x92, 0x0b, 0x7e, 0xb5, 0x02, 0x3a, 0x22, 0x81, 0x18, 0x73, 0x2b, 0xfa, 0xd3, - 0xe8, 0x79, 0x4a, 0x3d, 0xa8, 0x4e, 0x6f, 0xfa, 0x94, 0x38, 0x13, 0x31, 0x9a, 0x7c, 0x21, 0x91, - 0x66, 0x52, 0x0b, 0xa3, 0xb5, 0x39, 0x09, 0xb8, 0xb0, 0x62, 0xc2, 0x2a, 0xee, 0x36, 0x9b, 0x72, - 0x76, 0xe9, 0x85, 0xd9, 0xe1, 0xb1, 0xef, 0x0b, 0xcc, 0x5d, 0xc8, 0x45, 0x0f, 0x28, 0xc6, 0x57, - 0xe9, 0x05, 0x87, 0xaa, 0xd1, 0xeb, 0x8f, 0x1c, 0xf0, 0x51, 0xb7, 0x23, 0xff, 0xd3, 0x7a, 0x9e, - 0x59, 0x1c, 0x70, 0x30, 0xe6, 0x8e, 0x20, 0xbf, 0xe5, 0x98, 0x8d, 0x7e, 0x95, 0x51, 0x24, 0x20, - 0xc6, 0x28, 0x2a, 0x2a, 0xec, 0xe0, 0xfa, 0x4f, 0xd5, 0xdf, 0x5f, 0xcf, 0xb3, 0x0b, 0x76, 0x30, - 0xfd, 0x92, 0xda, 0x9c, 0x3a, 0xd3, 0xf7, 0xe2, 0xb8, 0xeb, 0xbd, 0xdf, 0x87, 0x5c, 0x54, 0x30, - 0xd0, 0x16, 0x64, 0x9f, 0x1e, 0xe2, 0xc7, 0x75, 0x6c, 0xac, 0xa8, 0xd5, 0x89, 0x7a, 0x9e, 0xaa, - 0x8a, 0x5b, 0x86, 0xd5, 0x03, 0xab, 0x69, 0x3d, 0xac, 0xe3, 0xe8, 0xbd, 0x3a, 0x02, 0xe8, 0xac, - 0x2f, 0x19, 0x7a, 0x80, 0xd8, 0xe6, 0xee, 0xed, 0xaf, 0xbf, 0xd9, 0x5a, 0xf9, 0xc5, 0x37, 0x5b, - 0x2b, 0xbf, 0xfc, 0x66, 0x2b, 0xf1, 0xfc, 0x72, 0x2b, 0xf1, 0xf5, 0xe5, 0x56, 0xe2, 0xe7, 0x97, - 0x5b, 0x89, 0xff, 0xb8, 0xdc, 0x4a, 0x1c, 0x65, 0x25, 0x23, 0xfb, 0xf8, 0xff, 0x02, 0x00, 0x00, - 0xff, 0xff, 0x8f, 0x1a, 0xda, 0xd0, 0xc0, 0x21, 0x00, 0x00, + 0x76, 0x57, 0xf3, 0x4b, 0xe4, 0x23, 0x25, 0xf5, 0xd4, 0xcc, 0x8e, 0x35, 0xf4, 0x58, 0xa2, 0x7b, + 0x3c, 0xeb, 0xd9, 0x59, 0x87, 0xb6, 0xe5, 0x8d, 0x31, 0xeb, 0xd9, 0xac, 0xdd, 0x22, 0xa9, 0x19, + 0x7a, 0x24, 0x92, 0x28, 0x92, 0x1a, 0x18, 0x01, 0x42, 0x94, 0xba, 0x4b, 0x54, 0x5b, 0xcd, 0x6e, + 0xa6, 0xbb, 0x28, 0x0d, 0x13, 0x04, 0x98, 0xe4, 0x90, 0x04, 0x3a, 0xe5, 0x94, 0x4b, 0x20, 0x2c, + 0x82, 0x04, 0xb9, 0xe5, 0x1c, 0x20, 0x27, 0x1f, 0x7d, 0xdc, 0x20, 0x40, 0xb0, 0x48, 0x10, 0x21, + 0x56, 0xfe, 0x81, 0x05, 0x82, 0x60, 0x0f, 0xc9, 0x21, 0xa8, 0x8f, 0x6e, 0x7e, 0x0c, 0x25, 0x8f, + 0xb3, 0x7b, 0x62, 0xd7, 0xab, 0xdf, 0x7b, 0xf5, 0xaa, 0xea, 0xd5, 0xab, 0xdf, 0x2b, 0x42, 0x9e, + 0x8d, 0x87, 0x34, 0x2c, 0x0f, 0x03, 0x9f, 0xf9, 0x08, 0xd9, 0xbe, 0x75, 0x4c, 0x83, 0x72, 0x78, + 0x4a, 0x82, 0xc1, 0xb1, 0xc3, 0xca, 0x27, 0x1f, 0x16, 0xef, 0x30, 0x67, 0x40, 0x43, 0x46, 0x06, + 0xc3, 0xf7, 0xe3, 0x2f, 0x09, 0x2f, 0xbe, 0x61, 0x8f, 0x02, 0xc2, 0x1c, 0xdf, 0x7b, 0x3f, 0xfa, + 0x50, 0x1d, 0xb7, 0xfa, 0x7e, 0xdf, 0x17, 0x9f, 0xef, 0xf3, 0x2f, 0x29, 0x35, 0x36, 0x61, 0x79, + 0x9f, 0x06, 0xa1, 0xe3, 0x7b, 0xe8, 0x16, 0xa4, 0x1d, 0xcf, 0xa6, 0x2f, 0xd6, 0xb5, 0x92, 0xf6, + 0x20, 0x85, 0x65, 0xc3, 0xf8, 0x6b, 0x0d, 0xf2, 0xa6, 0xe7, 0xf9, 0x4c, 0xd8, 0x0a, 0x11, 0x82, + 0x94, 0x47, 0x06, 0x54, 0x80, 0x72, 0x58, 0x7c, 0xa3, 0x0a, 0x64, 0x5c, 0x72, 0x40, 0xdd, 0x70, + 0x3d, 0x51, 0x4a, 0x3e, 0xc8, 0x6f, 0xfd, 0xb0, 0xfc, 0xaa, 0xcf, 0xe5, 0x29, 0x23, 0xe5, 0x5d, + 0x81, 0xae, 0x79, 0x2c, 0x18, 0x63, 0xa5, 0x5a, 0xfc, 0x31, 0xe4, 0xa7, 0xc4, 0x48, 0x87, 0xe4, + 0x31, 0x1d, 0xab, 0x61, 0xf8, 0x27, 0xf7, 0xef, 0x84, 0xb8, 0x23, 0xba, 0x9e, 0x10, 0x32, 0xd9, + 0xf8, 0x24, 0xf1, 0x48, 0x33, 0xbe, 0x80, 0x1c, 0xa6, 0xa1, 0x3f, 0x0a, 0x2c, 0x1a, 0xa2, 0x1f, + 0x40, 0xce, 0x23, 0x9e, 0xdf, 0xb3, 0x86, 0xa3, 0x50, 0xa8, 0x27, 0xb7, 0x0b, 0x97, 0x17, 0x9b, + 0xd9, 0x06, 0xf1, 0xfc, 0x4a, 0xab, 0x1b, 0xe2, 0x2c, 0xef, 0xae, 0x0c, 0x47, 0x21, 0x7a, 0x1b, + 0x0a, 0x03, 0x3a, 0xf0, 0x83, 0x71, 0xef, 0x60, 0xcc, 0x68, 0x28, 0x0c, 0x27, 0x71, 0x5e, 0xca, + 0xb6, 0xb9, 0xc8, 0xf8, 0x0b, 0x0d, 0x6e, 0x45, 0xb6, 0x31, 0xfd, 0xfd, 0x91, 0x13, 0xd0, 0x01, + 0xf5, 0x58, 0x88, 0x7e, 0x1b, 0x32, 0xae, 0x33, 0x70, 0x98, 0x1c, 0x23, 0xbf, 0xf5, 0xd6, 0xa2, + 0x39, 0xc7, 0x5e, 0x61, 0x05, 0x46, 0x26, 0x14, 0x02, 0x1a, 0xd2, 0xe0, 0x44, 0xae, 0x84, 0x18, + 0xf2, 0x5b, 0x95, 0x67, 0x54, 0x8c, 0x1d, 0xc8, 0xb6, 0x5c, 0xc2, 0x0e, 0xfd, 0x60, 0x80, 0x0c, + 0x28, 0x90, 0xc0, 0x3a, 0x72, 0x18, 0xb5, 0xd8, 0x28, 0x88, 0x76, 0x65, 0x46, 0x86, 0x6e, 0x43, + 0xc2, 0x97, 0x03, 0xe5, 0xb6, 0x33, 0x97, 0x17, 0x9b, 0x89, 0x66, 0x1b, 0x27, 0xfc, 0xd0, 0x78, + 0x0c, 0x37, 0x5a, 0xee, 0xa8, 0xef, 0x78, 0x55, 0x1a, 0x5a, 0x81, 0x33, 0xe4, 0xd6, 0xf9, 0xf6, + 0xf2, 0xe0, 0x8b, 0xb6, 0x97, 0x7f, 0xc7, 0x5b, 0x9e, 0x98, 0x6c, 0xb9, 0xf1, 0x67, 0x09, 0xb8, + 0x51, 0xf3, 0xfa, 0x8e, 0x47, 0xa7, 0xb5, 0xef, 0xc3, 0x2a, 0x15, 0xc2, 0xde, 0x89, 0x0c, 0x2a, + 0x65, 0x67, 0x45, 0x4a, 0xa3, 0x48, 0xab, 0xcf, 0xc5, 0xcb, 0x87, 0x8b, 0xa6, 0xff, 0x8a, 0xf5, + 0x45, 0x51, 0x83, 0x6a, 0xb0, 0x3c, 0x14, 0x93, 0x08, 0xd7, 0x93, 0xc2, 0xd6, 0xfd, 0x45, 0xb6, + 0x5e, 0x99, 0xe7, 0x76, 0xea, 0xeb, 0x8b, 0xcd, 0x25, 0x1c, 0xe9, 0xfe, 0x3a, 0xc1, 0xf7, 0x9f, + 0x1a, 0xac, 0x35, 0x7c, 0x7b, 0x66, 0x1d, 0x8a, 0x90, 0x3d, 0xf2, 0x43, 0x36, 0x75, 0x50, 0xe2, + 0x36, 0x7a, 0x04, 0xd9, 0xa1, 0xda, 0x3e, 0xb5, 0xfb, 0x77, 0x17, 0xbb, 0x2c, 0x31, 0x38, 0x46, + 0xa3, 0xc7, 0x90, 0x0b, 0xa2, 0x98, 0x58, 0x4f, 0xbe, 0x4e, 0xe0, 0x4c, 0xf0, 0xe8, 0x77, 0x20, + 0x23, 0x37, 0x61, 0x3d, 0x25, 0x34, 0xef, 0xbf, 0xd6, 0x9a, 0x63, 0xa5, 0x64, 0xfc, 0x42, 0x03, + 0x1d, 0x93, 0x43, 0xb6, 0x47, 0x07, 0x07, 0x34, 0x68, 0x33, 0xc2, 0x46, 0x21, 0xba, 0x0d, 0x19, + 0x97, 0x12, 0x9b, 0x06, 0x62, 0x92, 0x59, 0xac, 0x5a, 0xa8, 0xcb, 0x83, 0x9c, 0x58, 0x47, 0xe4, + 0xc0, 0x71, 0x1d, 0x36, 0x16, 0xd3, 0x5c, 0x5d, 0xbc, 0xcb, 0xf3, 0x36, 0xcb, 0x78, 0x4a, 0x11, + 0xcf, 0x98, 0x41, 0xeb, 0xb0, 0x3c, 0xa0, 0x61, 0x48, 0xfa, 0x54, 0xcc, 0x3e, 0x87, 0xa3, 0xa6, + 0xf1, 0x18, 0x0a, 0xd3, 0x7a, 0x28, 0x0f, 0xcb, 0xdd, 0xc6, 0xb3, 0x46, 0xf3, 0x79, 0x43, 0x5f, + 0x42, 0x6b, 0x90, 0xef, 0x36, 0x70, 0xcd, 0xac, 0x3c, 0x35, 0xb7, 0x77, 0x6b, 0xba, 0x86, 0x56, + 0x20, 0x37, 0x69, 0x26, 0x8c, 0x9f, 0x69, 0x00, 0x7c, 0x03, 0xd5, 0xa4, 0x3e, 0x81, 0x74, 0xc8, + 0x08, 0x93, 0x1b, 0xb7, 0xba, 0xf5, 0xce, 0x22, 0xaf, 0x27, 0xf0, 0x32, 0xff, 0xa1, 0x58, 0xaa, + 0x4c, 0x7b, 0x98, 0x98, 0xf7, 0x30, 0x2d, 0x90, 0xb3, 0xae, 0x65, 0x21, 0x55, 0xe5, 0x5f, 0x1a, + 0xca, 0x41, 0x1a, 0xd7, 0xcc, 0xea, 0x17, 0x7a, 0x02, 0xe9, 0x50, 0xa8, 0xd6, 0xdb, 0x95, 0x66, + 0xa3, 0x51, 0xab, 0x74, 0x6a, 0x55, 0x3d, 0x69, 0xdc, 0x87, 0x74, 0x7d, 0x40, 0xfa, 0x14, 0xdd, + 0xe5, 0x11, 0x70, 0x48, 0x03, 0xea, 0x59, 0x51, 0x60, 0x4d, 0x04, 0xc6, 0xcf, 0x73, 0x90, 0xde, + 0xf3, 0x47, 0x1e, 0x43, 0x5b, 0x53, 0xa7, 0x78, 0x75, 0x6b, 0x63, 0xd1, 0x14, 0x04, 0xb0, 0xdc, + 0x19, 0x0f, 0xa9, 0x3a, 0xe5, 0xb7, 0x21, 0x23, 0x63, 0x45, 0xb9, 0xae, 0x5a, 0x5c, 0xce, 0x48, + 0xd0, 0xa7, 0x4c, 0x2d, 0xba, 0x6a, 0xa1, 0x07, 0x90, 0x0d, 0x28, 0xb1, 0x7d, 0xcf, 0x1d, 0x8b, + 0x90, 0xca, 0xca, 0x34, 0x8b, 0x29, 0xb1, 0x9b, 0x9e, 0x3b, 0xc6, 0x71, 0x2f, 0x7a, 0x0a, 0x85, + 0x03, 0xc7, 0xb3, 0x7b, 0xfe, 0x50, 0xe6, 0xbc, 0xf4, 0xd5, 0x01, 0x28, 0xbd, 0xda, 0x76, 0x3c, + 0xbb, 0x29, 0xc1, 0x38, 0x7f, 0x30, 0x69, 0xa0, 0x06, 0xac, 0x9e, 0xf8, 0xee, 0x68, 0x40, 0x63, + 0x5b, 0x19, 0x61, 0xeb, 0xdd, 0xab, 0x6d, 0xed, 0x0b, 0x7c, 0x64, 0x6d, 0xe5, 0x64, 0xba, 0x89, + 0x9e, 0xc1, 0x0a, 0x1b, 0x0c, 0x0f, 0xc3, 0xd8, 0xdc, 0xb2, 0x30, 0xf7, 0xfd, 0x6b, 0x16, 0x8c, + 0xc3, 0x23, 0x6b, 0x05, 0x36, 0xd5, 0x2a, 0xfe, 0x49, 0x12, 0xf2, 0x53, 0x9e, 0xa3, 0x36, 0xe4, + 0x87, 0x81, 0x3f, 0x24, 0x7d, 0x91, 0xb7, 0xd5, 0x5e, 0x7c, 0xf8, 0x5a, 0xb3, 0x2e, 0xb7, 0x26, + 0x8a, 0x78, 0xda, 0x8a, 0x71, 0x9e, 0x80, 0xfc, 0x54, 0x27, 0x7a, 0x08, 0x59, 0xdc, 0xc2, 0xf5, + 0x7d, 0xb3, 0x53, 0xd3, 0x97, 0x8a, 0x77, 0xcf, 0xce, 0x4b, 0xeb, 0xc2, 0xda, 0xb4, 0x81, 0x56, + 0xe0, 0x9c, 0xf0, 0xd0, 0x7b, 0x00, 0xcb, 0x11, 0x54, 0x2b, 0xbe, 0x79, 0x76, 0x5e, 0x7a, 0x63, + 0x1e, 0x3a, 0x85, 0xc4, 0xed, 0xa7, 0x26, 0xae, 0x55, 0xf5, 0xc4, 0x62, 0x24, 0x6e, 0x1f, 0x91, + 0x80, 0xda, 0xe8, 0xfb, 0x90, 0x51, 0xc0, 0x64, 0xb1, 0x78, 0x76, 0x5e, 0xba, 0x3d, 0x0f, 0x9c, + 0xe0, 0x70, 0x7b, 0xd7, 0xdc, 0xaf, 0xe9, 0xa9, 0xc5, 0x38, 0xdc, 0x76, 0xc9, 0x09, 0x45, 0xef, + 0x40, 0x5a, 0xc2, 0xd2, 0xc5, 0x3b, 0x67, 0xe7, 0xa5, 0xef, 0xbd, 0x62, 0x8e, 0xa3, 0x8a, 0xeb, + 0x7f, 0xfe, 0x37, 0x1b, 0x4b, 0xff, 0xf8, 0xb7, 0x1b, 0xfa, 0x7c, 0x77, 0xf1, 0x7f, 0x35, 0x58, + 0x99, 0xd9, 0x72, 0x64, 0x40, 0xc6, 0xf3, 0x2d, 0x7f, 0x28, 0xd3, 0x79, 0x76, 0x1b, 0x2e, 0x2f, + 0x36, 0x33, 0x0d, 0xbf, 0xe2, 0x0f, 0xc7, 0x58, 0xf5, 0xa0, 0x67, 0x73, 0x17, 0xd2, 0x47, 0xaf, + 0x19, 0x4f, 0x0b, 0xaf, 0xa4, 0x4f, 0x61, 0xc5, 0x0e, 0x9c, 0x13, 0x1a, 0xf4, 0x2c, 0xdf, 0x3b, + 0x74, 0xfa, 0x2a, 0x55, 0x17, 0x17, 0xd9, 0xac, 0x0a, 0x20, 0x2e, 0x48, 0x85, 0x8a, 0xc0, 0xff, + 0x1a, 0x97, 0x51, 0x71, 0x1f, 0x0a, 0xd3, 0x11, 0x8a, 0xde, 0x02, 0x08, 0x9d, 0x3f, 0xa0, 0x8a, + 0xdf, 0x08, 0x36, 0x84, 0x73, 0x5c, 0x22, 0xd8, 0x0d, 0x7a, 0x17, 0x52, 0x03, 0xdf, 0x96, 0x76, + 0xd2, 0xdb, 0x37, 0xf9, 0x9d, 0xf8, 0xaf, 0x17, 0x9b, 0x79, 0x3f, 0x2c, 0xef, 0x38, 0x2e, 0xdd, + 0xf3, 0x6d, 0x8a, 0x05, 0xc0, 0x38, 0x81, 0x14, 0x4f, 0x15, 0xe8, 0x4d, 0x48, 0x6d, 0xd7, 0x1b, + 0x55, 0x7d, 0xa9, 0x78, 0xe3, 0xec, 0xbc, 0xb4, 0x22, 0x96, 0x84, 0x77, 0xf0, 0xd8, 0x45, 0x9b, + 0x90, 0xd9, 0x6f, 0xee, 0x76, 0xf7, 0x78, 0x78, 0xdd, 0x3c, 0x3b, 0x2f, 0xad, 0xc5, 0xdd, 0x72, + 0xd1, 0xd0, 0x5b, 0x90, 0xee, 0xec, 0xb5, 0x76, 0xda, 0x7a, 0xa2, 0x88, 0xce, 0xce, 0x4b, 0xab, + 0x71, 0xbf, 0xf0, 0xb9, 0x78, 0x43, 0xed, 0x6a, 0x2e, 0x96, 0x1b, 0xff, 0x93, 0x80, 0x15, 0xcc, + 0xf9, 0x6d, 0xc0, 0x5a, 0xbe, 0xeb, 0x58, 0x63, 0xd4, 0x82, 0x9c, 0xe5, 0x7b, 0xb6, 0x33, 0x75, + 0xa6, 0xb6, 0xae, 0xb8, 0x04, 0x27, 0x5a, 0x51, 0xab, 0x12, 0x69, 0xe2, 0x89, 0x11, 0xb4, 0x05, + 0x69, 0x9b, 0xba, 0x64, 0x7c, 0xdd, 0x6d, 0x5c, 0x55, 0x5c, 0x1a, 0x4b, 0xa8, 0x60, 0x8e, 0xe4, + 0x45, 0x8f, 0x30, 0x46, 0x07, 0x43, 0x26, 0x6f, 0xe3, 0x14, 0xce, 0x0f, 0xc8, 0x0b, 0x53, 0x89, + 0xd0, 0x8f, 0x20, 0x73, 0xea, 0x78, 0xb6, 0x7f, 0xaa, 0x2e, 0xdc, 0xeb, 0xed, 0x2a, 0xac, 0x71, + 0xc6, 0xef, 0xd9, 0x39, 0x67, 0xf9, 0xaa, 0x37, 0x9a, 0x8d, 0x5a, 0xb4, 0xea, 0xaa, 0xbf, 0xe9, + 0x35, 0x7c, 0x8f, 0x9f, 0x18, 0x68, 0x36, 0x7a, 0x3b, 0x66, 0x7d, 0xb7, 0x8b, 0xf9, 0xca, 0xdf, + 0x3a, 0x3b, 0x2f, 0xe9, 0x31, 0x64, 0x87, 0x38, 0x2e, 0x27, 0x81, 0x77, 0x20, 0x69, 0x36, 0xbe, + 0xd0, 0x13, 0x45, 0xfd, 0xec, 0xbc, 0x54, 0x88, 0xbb, 0x4d, 0x6f, 0x3c, 0x39, 0x4c, 0xf3, 0xe3, + 0x1a, 0xff, 0x9e, 0x80, 0x42, 0x77, 0x68, 0x13, 0x46, 0x65, 0x64, 0xa2, 0x12, 0xe4, 0x87, 0x24, + 0x20, 0xae, 0x4b, 0x5d, 0x27, 0x1c, 0xa8, 0x42, 0x61, 0x5a, 0x84, 0x1e, 0x7d, 0x87, 0xc5, 0x54, + 0x24, 0x4c, 0x2d, 0x69, 0x17, 0x56, 0x0f, 0xa5, 0xb3, 0x3d, 0x62, 0x89, 0xdd, 0x4d, 0x8a, 0xdd, + 0x2d, 0x2f, 0x32, 0x31, 0xed, 0x55, 0x59, 0xcd, 0xd1, 0x14, 0x5a, 0x78, 0xe5, 0x70, 0xba, 0x89, + 0x3e, 0x86, 0xe5, 0x81, 0xef, 0x39, 0xcc, 0x0f, 0x5e, 0x6b, 0x1f, 0x22, 0x30, 0x7a, 0x08, 0x37, + 0xf8, 0x0e, 0x47, 0x2e, 0x89, 0x6e, 0x71, 0x73, 0x25, 0xf0, 0xda, 0x80, 0xbc, 0x50, 0x63, 0x62, + 0x2e, 0x36, 0x3e, 0x86, 0x95, 0x19, 0x1f, 0xf8, 0x6d, 0xde, 0x32, 0xbb, 0xed, 0x9a, 0xbe, 0x84, + 0x0a, 0x90, 0xad, 0x34, 0x1b, 0x9d, 0x7a, 0xa3, 0xcb, 0xa9, 0x47, 0x01, 0xb2, 0xb8, 0xb9, 0xbb, + 0xbb, 0x6d, 0x56, 0x9e, 0xe9, 0x09, 0xe3, 0xbf, 0xe3, 0xf5, 0x55, 0xdc, 0x63, 0x7b, 0x96, 0x7b, + 0xbc, 0x77, 0xf5, 0xd4, 0x15, 0xfb, 0x98, 0x34, 0x62, 0x0e, 0xf2, 0x13, 0x00, 0xb1, 0x8d, 0xd4, + 0xee, 0x11, 0x76, 0x5d, 0x7d, 0xd1, 0x89, 0x2a, 0x47, 0x9c, 0x53, 0x0a, 0x26, 0x43, 0x9f, 0x41, + 0xc1, 0xf2, 0x07, 0x43, 0x97, 0x2a, 0xfd, 0xe4, 0xeb, 0xe8, 0xe7, 0x63, 0x15, 0x93, 0x4d, 0x73, + 0xa0, 0xd4, 0x2c, 0x07, 0xfa, 0x53, 0x0d, 0xf2, 0x53, 0x0e, 0xcf, 0x52, 0xa1, 0x02, 0x64, 0xbb, + 0xad, 0xaa, 0xd9, 0xa9, 0x37, 0x9e, 0xe8, 0x1a, 0x02, 0xc8, 0x88, 0x05, 0xac, 0xea, 0x09, 0x4e, + 0xd7, 0x2a, 0xcd, 0xbd, 0xd6, 0x6e, 0x4d, 0x90, 0x21, 0x74, 0x0b, 0xf4, 0x68, 0x09, 0x7b, 0xed, + 0x8e, 0x89, 0xb9, 0x34, 0x85, 0x6e, 0xc2, 0x5a, 0x2c, 0x55, 0x9a, 0x69, 0x74, 0x1b, 0x50, 0x2c, + 0x9c, 0x98, 0xc8, 0x18, 0x7f, 0x04, 0x6b, 0x15, 0xdf, 0x63, 0xc4, 0xf1, 0x62, 0x2a, 0xbb, 0xc5, + 0xe7, 0xad, 0x44, 0x3d, 0xc7, 0x96, 0xd9, 0x76, 0x7b, 0xed, 0xf2, 0x62, 0x33, 0x1f, 0x43, 0xeb, + 0x55, 0x3e, 0xd3, 0xa8, 0x61, 0xf3, 0x33, 0x35, 0x74, 0x6c, 0x95, 0x3c, 0x97, 0x2f, 0x2f, 0x36, + 0x93, 0xad, 0x7a, 0x15, 0x73, 0x19, 0x7a, 0x13, 0x72, 0xf4, 0x85, 0xc3, 0x7a, 0x16, 0xcf, 0xae, + 0x7c, 0x0d, 0xd3, 0x38, 0xcb, 0x05, 0x15, 0x9e, 0x4c, 0xff, 0x38, 0x01, 0xd0, 0x21, 0xe1, 0xb1, + 0x1a, 0xfa, 0x31, 0xe4, 0xe2, 0x22, 0xfe, 0xba, 0x62, 0x72, 0x6a, 0xbf, 0x62, 0x3c, 0xfa, 0x28, + 0x8a, 0x18, 0xc9, 0xb1, 0x17, 0x2b, 0xaa, 0xb1, 0x16, 0xd1, 0xd4, 0x59, 0x22, 0xcd, 0xef, 0x1a, + 0x1a, 0x04, 0x6a, 0xe3, 0xf8, 0x27, 0xaa, 0x88, 0x7c, 0x2b, 0xe7, 0xac, 0x98, 0xdb, 0xbd, 0x45, + 0x83, 0xcc, 0x2d, 0xe8, 0xd3, 0x25, 0x3c, 0xd1, 0xdb, 0xd6, 0x61, 0x35, 0x18, 0x79, 0xdc, 0xeb, + 0x5e, 0x28, 0xba, 0x0d, 0x07, 0xde, 0x68, 0x50, 0x76, 0xea, 0x07, 0xc7, 0x26, 0x63, 0xc4, 0x3a, + 0xe2, 0x45, 0xb5, 0x4a, 0x32, 0x13, 0xc2, 0xa9, 0xcd, 0x10, 0xce, 0x75, 0x58, 0x26, 0xae, 0x43, + 0x42, 0x2a, 0x6f, 0xe9, 0x1c, 0x8e, 0x9a, 0x9c, 0x16, 0x13, 0xdb, 0x0e, 0x68, 0x18, 0x52, 0x59, + 0x06, 0xe6, 0xf0, 0x44, 0x60, 0xfc, 0x73, 0x02, 0xa0, 0xde, 0x32, 0xf7, 0x94, 0xf9, 0x2a, 0x64, + 0x0e, 0xc9, 0xc0, 0x71, 0xc7, 0xd7, 0x1d, 0xb2, 0x09, 0xbe, 0x6c, 0x4a, 0x43, 0x3b, 0x42, 0x07, + 0x2b, 0x5d, 0xc1, 0x96, 0x47, 0x07, 0x1e, 0x65, 0x31, 0x5b, 0x16, 0x2d, 0x7e, 0x35, 0x07, 0xc4, + 0x8b, 0x17, 0x56, 0x36, 0xb8, 0xeb, 0x7d, 0xc2, 0xe8, 0x29, 0x19, 0x47, 0x67, 0x42, 0x35, 0xd1, + 0x53, 0xce, 0xa2, 0x79, 0x71, 0x4f, 0xed, 0xf5, 0xb4, 0xe0, 0x1e, 0xdf, 0xe6, 0x0f, 0x56, 0x70, + 0x49, 0x3a, 0x62, 0xed, 0xe2, 0x63, 0x71, 0x53, 0x4e, 0xba, 0xbe, 0x53, 0x11, 0xfb, 0x01, 0xac, + 0xcc, 0xcc, 0xf3, 0x95, 0x32, 0xa5, 0xde, 0xda, 0xff, 0x91, 0x9e, 0x52, 0x5f, 0x1f, 0xeb, 0x19, + 0xe3, 0xbf, 0x34, 0x80, 0x96, 0x1f, 0x44, 0x9b, 0xb6, 0xf8, 0x59, 0x28, 0x2b, 0x1e, 0x99, 0x2c, + 0xdf, 0x55, 0xe1, 0xb9, 0x90, 0xa7, 0x4f, 0xac, 0x70, 0xda, 0x2b, 0xe0, 0x38, 0x56, 0x44, 0x9b, + 0x90, 0x97, 0xfb, 0xdf, 0x1b, 0xfa, 0x81, 0xcc, 0x47, 0x2b, 0x18, 0xa4, 0x88, 0x6b, 0xa2, 0xfb, + 0xb0, 0x3a, 0x1c, 0x1d, 0xb8, 0x4e, 0x78, 0x44, 0x6d, 0x89, 0x49, 0x09, 0xcc, 0x4a, 0x2c, 0xe5, + 0x30, 0xa3, 0x0a, 0xd9, 0xc8, 0x3a, 0x5a, 0x87, 0x64, 0xa7, 0xd2, 0xd2, 0x97, 0x8a, 0x6b, 0x67, + 0xe7, 0xa5, 0x7c, 0x24, 0xee, 0x54, 0x5a, 0xbc, 0xa7, 0x5b, 0x6d, 0xe9, 0xda, 0x6c, 0x4f, 0xb7, + 0xda, 0x2a, 0xa6, 0xf8, 0x2d, 0x69, 0xfc, 0x95, 0x06, 0x19, 0xc9, 0xd9, 0x16, 0xce, 0xd8, 0x84, + 0xe5, 0xa8, 0x92, 0x90, 0x44, 0xf2, 0xdd, 0xab, 0x49, 0x5f, 0x59, 0x71, 0x34, 0xb9, 0x8f, 0x91, + 0x5e, 0xf1, 0x13, 0x28, 0x4c, 0x77, 0x7c, 0xa7, 0x5d, 0xfc, 0x43, 0xc8, 0xf3, 0x40, 0x89, 0xc8, + 0xdf, 0x16, 0x64, 0x24, 0xaf, 0x54, 0x59, 0xe5, 0x3a, 0x06, 0xaa, 0x90, 0xe8, 0x11, 0x2c, 0x4b, + 0xd6, 0x1a, 0xbd, 0xa7, 0x6c, 0x5c, 0x1f, 0x8e, 0x38, 0x82, 0x1b, 0x9f, 0x42, 0xaa, 0x45, 0x69, + 0x80, 0xee, 0xc1, 0xb2, 0xe7, 0xdb, 0x74, 0x92, 0x44, 0x15, 0xe1, 0xb6, 0x69, 0xbd, 0xca, 0x09, + 0xb7, 0x4d, 0xeb, 0x36, 0x5f, 0x3c, 0x7e, 0x40, 0xa3, 0x27, 0x25, 0xfe, 0x6d, 0x74, 0xa0, 0xf0, + 0x9c, 0x3a, 0xfd, 0x23, 0x46, 0x6d, 0x61, 0xe8, 0x3d, 0x48, 0x0d, 0x69, 0xec, 0xfc, 0xfa, 0xc2, + 0xd0, 0xa1, 0x34, 0xc0, 0x02, 0xc5, 0x0f, 0xe4, 0xa9, 0xd0, 0x56, 0xaf, 0x78, 0xaa, 0x65, 0xfc, + 0x7d, 0x02, 0x56, 0xeb, 0x61, 0x38, 0x22, 0x9e, 0x15, 0xdd, 0xb2, 0x3f, 0x9d, 0xbd, 0x65, 0x1f, + 0x2c, 0x9c, 0xe1, 0x8c, 0xca, 0x6c, 0x95, 0xaf, 0x92, 0x64, 0x22, 0x4e, 0x92, 0xc6, 0xd7, 0x5a, + 0x54, 0xde, 0xdf, 0x9f, 0x3a, 0x37, 0xc5, 0xf5, 0xb3, 0xf3, 0xd2, 0xad, 0x69, 0x4b, 0xb4, 0xeb, + 0x1d, 0x7b, 0xfe, 0xa9, 0x87, 0xde, 0xe6, 0xe5, 0x7e, 0xa3, 0xf6, 0x5c, 0xd7, 0x8a, 0xb7, 0xcf, + 0xce, 0x4b, 0x68, 0x06, 0x84, 0xa9, 0x47, 0x4f, 0xb9, 0xa5, 0x56, 0xad, 0x51, 0xe5, 0xf7, 0x61, + 0x62, 0x81, 0xa5, 0x16, 0xf5, 0x6c, 0xc7, 0xeb, 0xa3, 0x7b, 0x90, 0xa9, 0xb7, 0xdb, 0x5d, 0x51, + 0x80, 0xbd, 0x71, 0x76, 0x5e, 0xba, 0x39, 0x83, 0xe2, 0x0d, 0x6a, 0x73, 0x10, 0x27, 0x88, 0xfc, + 0xa6, 0x5c, 0x00, 0xe2, 0xdc, 0x85, 0xda, 0x2a, 0xc2, 0xff, 0x2d, 0x01, 0xba, 0x69, 0x59, 0x74, + 0xc8, 0x78, 0xbf, 0x22, 0xdd, 0x1d, 0xc8, 0x0e, 0xf9, 0x97, 0x23, 0x8a, 0x08, 0x1e, 0x16, 0x8f, + 0x16, 0x3e, 0xf1, 0xce, 0xe9, 0x95, 0xb1, 0xef, 0x52, 0xd3, 0x1e, 0x38, 0x61, 0xc8, 0x8b, 0x4b, + 0x21, 0xc3, 0xb1, 0xa5, 0xe2, 0x2f, 0x35, 0xb8, 0xb9, 0x00, 0x81, 0x3e, 0x80, 0x54, 0xe0, 0xbb, + 0xd1, 0xf6, 0xdc, 0xbd, 0xea, 0x01, 0x86, 0xab, 0x62, 0x81, 0x44, 0x1b, 0x00, 0x64, 0xc4, 0x7c, + 0x22, 0xc6, 0x17, 0x1b, 0x93, 0xc5, 0x53, 0x12, 0xf4, 0x1c, 0x32, 0x21, 0xb5, 0x02, 0x1a, 0xf1, + 0x99, 0x4f, 0xff, 0xbf, 0xde, 0x97, 0xdb, 0xc2, 0x0c, 0x56, 0xe6, 0x8a, 0x65, 0xc8, 0x48, 0x09, + 0x8f, 0x68, 0x9b, 0x30, 0x22, 0x9c, 0x2e, 0x60, 0xf1, 0xcd, 0x03, 0x85, 0xb8, 0xfd, 0x28, 0x50, + 0x88, 0xdb, 0x37, 0x7e, 0x96, 0x00, 0xa8, 0xbd, 0x60, 0x34, 0xf0, 0x88, 0x5b, 0x31, 0x51, 0x6d, + 0x2a, 0x43, 0xca, 0xd9, 0xfe, 0x60, 0xe1, 0xb3, 0x5c, 0xac, 0x51, 0xae, 0x98, 0x0b, 0x72, 0xe4, + 0x1d, 0x48, 0x8e, 0x02, 0x57, 0x3d, 0xf1, 0x0a, 0x22, 0xd2, 0xc5, 0xbb, 0x98, 0xcb, 0x50, 0x6d, + 0x92, 0x91, 0x92, 0x57, 0xbf, 0xcd, 0x4f, 0x0d, 0xf0, 0x9b, 0xcf, 0x4a, 0xef, 0x01, 0x4c, 0xbc, + 0x46, 0x1b, 0x90, 0xae, 0xec, 0xb4, 0xdb, 0xbb, 0xfa, 0x92, 0xac, 0x11, 0x27, 0x5d, 0x42, 0x6c, + 0xfc, 0x9d, 0x06, 0xd9, 0x8a, 0xa9, 0x6e, 0x95, 0x1d, 0xd0, 0x45, 0x2e, 0xb1, 0x68, 0xc0, 0x7a, + 0xf4, 0xc5, 0xd0, 0x09, 0xc6, 0x2a, 0x1d, 0x5c, 0xcf, 0xe2, 0x57, 0xb9, 0x56, 0x85, 0x06, 0xac, + 0x26, 0x74, 0x10, 0x86, 0x02, 0x55, 0x53, 0xec, 0x59, 0x24, 0x4a, 0xce, 0x1b, 0xd7, 0x2f, 0x85, + 0x64, 0x7f, 0x93, 0x76, 0x88, 0xf3, 0x91, 0x91, 0x0a, 0x09, 0x8d, 0x7d, 0xb8, 0xd9, 0x0c, 0xac, + 0x23, 0x1a, 0x32, 0x39, 0xa8, 0x72, 0xf9, 0x53, 0xb8, 0xcb, 0x48, 0x78, 0xdc, 0x3b, 0x72, 0x42, + 0xe6, 0x07, 0xe3, 0x5e, 0x40, 0x19, 0xf5, 0x78, 0x7f, 0x4f, 0xfc, 0x03, 0xa0, 0x6a, 0xf0, 0x3b, + 0x1c, 0xf3, 0x54, 0x42, 0x70, 0x84, 0xd8, 0xe5, 0x00, 0xa3, 0x0e, 0x05, 0x4e, 0xd8, 0xaa, 0xf4, + 0x90, 0x8c, 0x5c, 0x16, 0xa2, 0x1f, 0x03, 0xb8, 0x7e, 0xbf, 0xf7, 0xda, 0x99, 0x3c, 0xe7, 0xfa, + 0x7d, 0xf9, 0x69, 0xfc, 0x2e, 0xe8, 0x55, 0x27, 0x1c, 0x12, 0x66, 0x1d, 0x45, 0x8f, 0x0b, 0xe8, + 0x09, 0xe8, 0x47, 0x94, 0x04, 0xec, 0x80, 0x12, 0xd6, 0x1b, 0xd2, 0xc0, 0xf1, 0xed, 0xd7, 0x5a, + 0xd2, 0xb5, 0x58, 0xab, 0x25, 0x94, 0x8c, 0x5f, 0x69, 0x00, 0x98, 0x1c, 0x46, 0x04, 0xe0, 0x87, + 0x70, 0x23, 0xf4, 0xc8, 0x30, 0x3c, 0xf2, 0x59, 0xcf, 0xf1, 0x18, 0x0d, 0x4e, 0x88, 0xab, 0x0a, + 0x44, 0x3d, 0xea, 0xa8, 0x2b, 0x39, 0x7a, 0x0f, 0xd0, 0x31, 0xa5, 0xc3, 0x9e, 0xef, 0xda, 0xbd, + 0xa8, 0x53, 0xfe, 0x45, 0x91, 0xc2, 0x3a, 0xef, 0x69, 0xba, 0x76, 0x3b, 0x92, 0xa3, 0x6d, 0xd8, + 0xe0, 0x2b, 0x40, 0x3d, 0x16, 0x38, 0x34, 0xec, 0x1d, 0xfa, 0x41, 0x2f, 0x74, 0xfd, 0xd3, 0xde, + 0xa1, 0xef, 0xba, 0xfe, 0x29, 0x0d, 0xa2, 0xf2, 0xbb, 0xe8, 0xfa, 0xfd, 0x9a, 0x04, 0xed, 0xf8, + 0x41, 0xdb, 0xf5, 0x4f, 0x77, 0x22, 0x04, 0x67, 0x09, 0x93, 0x69, 0x33, 0xc7, 0x3a, 0x8e, 0x58, + 0x42, 0x2c, 0xed, 0x38, 0xd6, 0x31, 0xba, 0x07, 0x2b, 0xd4, 0xa5, 0xa2, 0x88, 0x93, 0xa8, 0xb4, + 0x40, 0x15, 0x22, 0x21, 0x07, 0x19, 0xbf, 0x05, 0xb9, 0x96, 0x4b, 0x2c, 0xf1, 0x47, 0x10, 0x2f, + 0x89, 0x2d, 0xdf, 0xe3, 0x41, 0xe0, 0x78, 0x4c, 0x66, 0xc7, 0x1c, 0x9e, 0x16, 0x19, 0x3f, 0x05, + 0xf8, 0xdc, 0x77, 0xbc, 0x8e, 0x7f, 0x4c, 0x3d, 0xf1, 0x66, 0xce, 0x59, 0xaf, 0xda, 0xca, 0x1c, + 0x56, 0x2d, 0xc1, 0xc9, 0x89, 0x47, 0xfa, 0x34, 0x88, 0x9f, 0x8e, 0x65, 0x93, 0x5f, 0x2e, 0x19, + 0xec, 0xfb, 0xac, 0x62, 0xa2, 0x12, 0x64, 0x2c, 0xd2, 0x8b, 0x4e, 0x5e, 0x61, 0x3b, 0x77, 0x79, + 0xb1, 0x99, 0xae, 0x98, 0xcf, 0xe8, 0x18, 0xa7, 0x2d, 0xf2, 0x8c, 0x8e, 0xf9, 0xed, 0x6b, 0x11, + 0x71, 0x5e, 0x84, 0x99, 0x82, 0xbc, 0x7d, 0x2b, 0x26, 0x3f, 0x0c, 0x38, 0x63, 0x11, 0xfe, 0x8b, + 0x3e, 0x80, 0x82, 0x02, 0xf5, 0x8e, 0x48, 0x78, 0x24, 0xb9, 0xea, 0xf6, 0xea, 0xe5, 0xc5, 0x26, + 0x48, 0xe4, 0x53, 0x12, 0x1e, 0x61, 0x90, 0x68, 0xfe, 0x8d, 0x6a, 0x90, 0xff, 0xd2, 0x77, 0xbc, + 0x1e, 0x13, 0x93, 0x50, 0x95, 0xf4, 0xc2, 0xf3, 0x33, 0x99, 0xaa, 0x2a, 0xef, 0xe1, 0xcb, 0x58, + 0x62, 0xfc, 0x8b, 0x06, 0x79, 0x6e, 0xd3, 0x39, 0x74, 0x2c, 0x7e, 0x5b, 0x7e, 0xf7, 0x4c, 0x7f, + 0x07, 0x92, 0x56, 0x18, 0xa8, 0xb9, 0x89, 0x54, 0x57, 0x69, 0x63, 0xcc, 0x65, 0xe8, 0x33, 0xc8, + 0xc8, 0xe2, 0x42, 0x25, 0x79, 0xe3, 0xdb, 0xef, 0x75, 0xe5, 0xa2, 0xd2, 0x13, 0x7b, 0x39, 0xf1, + 0x4e, 0xcc, 0xb2, 0x80, 0xa7, 0x45, 0xe8, 0x36, 0x24, 0x2c, 0x4f, 0x04, 0x85, 0xfa, 0x2f, 0xad, + 0xd2, 0xc0, 0x09, 0xcb, 0x33, 0xfe, 0x49, 0x83, 0x95, 0x9a, 0x67, 0x05, 0x63, 0x91, 0x24, 0xf9, + 0x46, 0xdc, 0x85, 0x5c, 0x38, 0x3a, 0x08, 0xc7, 0x21, 0xa3, 0x83, 0xe8, 0xa9, 0x3e, 0x16, 0xa0, + 0x3a, 0xe4, 0x88, 0xdb, 0xf7, 0x03, 0x87, 0x1d, 0x0d, 0x14, 0x37, 0x5e, 0x9c, 0x98, 0xa7, 0x6d, + 0x96, 0xcd, 0x48, 0x05, 0x4f, 0xb4, 0xa3, 0x54, 0x9c, 0x14, 0xce, 0x8a, 0x54, 0xfc, 0x36, 0x14, + 0x5c, 0x32, 0xe0, 0x54, 0xb8, 0xc7, 0x4b, 0x2e, 0x31, 0x8f, 0x14, 0xce, 0x2b, 0x19, 0x2f, 0x23, + 0x0d, 0x03, 0x72, 0xb1, 0x31, 0xb4, 0x06, 0x79, 0xb3, 0xd6, 0xee, 0x7d, 0xb8, 0xf5, 0xa8, 0xf7, + 0xa4, 0xb2, 0xa7, 0x2f, 0x29, 0x26, 0xf0, 0x0f, 0x1a, 0xac, 0xec, 0xc9, 0x18, 0x54, 0xc4, 0xe9, + 0x1e, 0x2c, 0x07, 0xe4, 0x90, 0x45, 0xd4, 0x2e, 0x25, 0x83, 0x8b, 0x27, 0x01, 0x4e, 0xed, 0x78, + 0xd7, 0x62, 0x6a, 0x37, 0xf5, 0x47, 0x51, 0xf2, 0xda, 0x3f, 0x8a, 0x52, 0xbf, 0x91, 0x3f, 0x8a, + 0x8c, 0xbf, 0xd4, 0x60, 0x4d, 0x5d, 0xd4, 0xd1, 0x9f, 0x23, 0x0b, 0xe9, 0xfa, 0x4f, 0xe2, 0xe7, + 0xcf, 0xe4, 0x55, 0x3c, 0x70, 0xce, 0x4c, 0x79, 0xf2, 0x26, 0x7a, 0xd5, 0x1f, 0x23, 0xc6, 0x1d, + 0x48, 0x71, 0x14, 0xaf, 0x95, 0x76, 0xea, 0xbb, 0x35, 0x7d, 0x09, 0x2d, 0x43, 0xb2, 0xd6, 0xd8, + 0xd7, 0xb5, 0x87, 0xbf, 0x4a, 0x42, 0x2e, 0xae, 0xc6, 0x79, 0x2c, 0x73, 0x0a, 0xb8, 0x24, 0xdf, + 0xe4, 0x62, 0x79, 0x43, 0x90, 0xbf, 0x9c, 0xb9, 0xbb, 0xdb, 0xac, 0x98, 0x9d, 0x5a, 0x55, 0xff, + 0x4c, 0x72, 0xc4, 0x18, 0x60, 0xba, 0xae, 0xcf, 0xa3, 0xd1, 0x46, 0xc6, 0x84, 0x23, 0xbe, 0x54, + 0x2f, 0x7f, 0x31, 0x2a, 0x22, 0x88, 0xef, 0x40, 0xd6, 0x6c, 0xb7, 0xeb, 0x4f, 0x1a, 0xb5, 0xaa, + 0xfe, 0x95, 0x56, 0xfc, 0xde, 0xd9, 0x79, 0xe9, 0xc6, 0xc4, 0x54, 0x18, 0x3a, 0x7d, 0x8f, 0xda, + 0x02, 0x55, 0xa9, 0xd4, 0x5a, 0x7c, 0xbc, 0x97, 0x89, 0x79, 0x94, 0x60, 0x46, 0xe2, 0x15, 0x3f, + 0xd7, 0xc2, 0xb5, 0x96, 0x89, 0xf9, 0x88, 0x5f, 0x25, 0xe6, 0xfc, 0x6a, 0x05, 0x74, 0x48, 0x02, + 0x3e, 0xe6, 0x46, 0xf4, 0x6f, 0xd6, 0xcb, 0xa4, 0x7c, 0xe9, 0x9d, 0x3c, 0x41, 0x50, 0x62, 0x8f, + 0xf9, 0x68, 0xe2, 0xe9, 0x46, 0x98, 0x49, 0xce, 0x8d, 0xd6, 0x66, 0x24, 0x60, 0xdc, 0x8a, 0x01, + 0xcb, 0xb8, 0xdb, 0x68, 0x88, 0xd9, 0xa5, 0xe6, 0x66, 0x87, 0x47, 0x9e, 0xc7, 0x31, 0xf7, 0x21, + 0x1b, 0xbd, 0xec, 0xe8, 0x5f, 0xa5, 0xe6, 0x1c, 0xaa, 0x44, 0xcf, 0x52, 0x62, 0xc0, 0xa7, 0xdd, + 0x8e, 0xf8, 0xb3, 0xed, 0x65, 0x7a, 0x7e, 0xc0, 0xa3, 0x11, 0xb3, 0x39, 0x2b, 0x2f, 0xc5, 0x34, + 0xf9, 0xab, 0xb4, 0x64, 0x27, 0x31, 0x46, 0x72, 0x64, 0x6e, 0x07, 0xd7, 0x3e, 0x97, 0xff, 0xcb, + 0xbd, 0xcc, 0xcc, 0xd9, 0xc1, 0xf4, 0x4b, 0x6a, 0x31, 0x6a, 0x4f, 0x1e, 0xb2, 0xe3, 0xae, 0x87, + 0xbf, 0x07, 0xd9, 0x28, 0x93, 0xa1, 0x0d, 0xc8, 0x3c, 0x6f, 0xe2, 0x67, 0x35, 0xac, 0x2f, 0xc9, + 0xd5, 0x89, 0x7a, 0x9e, 0xcb, 0xab, 0xa0, 0x04, 0xcb, 0x7b, 0x66, 0xc3, 0x7c, 0x52, 0xc3, 0xd1, + 0x43, 0x7a, 0x04, 0x50, 0xc7, 0xb1, 0xa8, 0xab, 0x01, 0x62, 0x9b, 0x0f, 0x3f, 0x07, 0x90, 0xa1, + 0x2a, 0x9e, 0xe9, 0x0d, 0xc8, 0x55, 0x9a, 0x8d, 0x8e, 0x59, 0x6f, 0x88, 0x41, 0x24, 0xd1, 0x8a, + 0x1f, 0x68, 0x24, 0x61, 0x5d, 0x87, 0x54, 0xa3, 0x59, 0xad, 0xe9, 0x5a, 0x71, 0xf5, 0xec, 0xbc, + 0x24, 0xff, 0x01, 0x15, 0x3d, 0xdb, 0x77, 0xbf, 0xfe, 0x66, 0x63, 0xe9, 0x17, 0xdf, 0x6c, 0x2c, + 0xfd, 0xf2, 0x9b, 0x0d, 0xed, 0xe5, 0xe5, 0x86, 0xf6, 0xf5, 0xe5, 0x86, 0xf6, 0xf3, 0xcb, 0x0d, + 0xed, 0x3f, 0x2e, 0x37, 0xb4, 0x83, 0x8c, 0xa0, 0x9d, 0x1f, 0xfd, 0x5f, 0x00, 0x00, 0x00, 0xff, + 0xff, 0x20, 0xa1, 0x9b, 0x4d, 0xa5, 0x22, 0x00, 0x00, } diff --git a/api/types.proto b/api/types.proto index 18f2f8ae16..9ade595cca 100644 --- a/api/types.proto +++ b/api/types.proto @@ -747,3 +747,27 @@ message ManagerStatus { // Reachability specifies whether this node is reachable. RaftMemberStatus.Reachability reachability = 4; } + +// SecretType provides information about what kind of secret this is +enum SecretType { + CONTAINER = 0 [(gogoproto.enumvalue_customname) = "ContainerSecret"]; + NODE = 1 [(gogoproto.enumvalue_customname) = "NodeSecret"]; +} + +// SecretReference is the linkage between a service and a secret that it uses. +message SecretReference { + // Name is the name of the secret that this reference. + string name = 1; + + // Mode specifies how this secret should be exposed inside the task. + enum Mode { + FILE = 0; + ENV = 1; + } + + // Mode is one or more ways the secret should be presented. + repeated Mode mode = 2; + + // Target is the name by which the image accesses the secret. + string target = 3; +} From a3f8c85555cf26ef75a6b1b96a7f107d2adc0e4a Mon Sep 17 00:00:00 2001 From: Diogo Monica Date: Mon, 29 Aug 2016 16:33:37 -0700 Subject: [PATCH 2/9] Changing protos and addressing comments Signed-off-by: Diogo Monica --- api/specs.pb.go | 287 +++++++---------- api/specs.proto | 5 +- api/types.pb.go | 841 ++++++++++++++++++++++++++++++++++-------------- api/types.proto | 27 +- 4 files changed, 737 insertions(+), 423 deletions(-) diff --git a/api/specs.pb.go b/api/specs.pb.go index b8f54cc06e..bc2353fe80 100644 --- a/api/specs.pb.go +++ b/api/specs.pb.go @@ -563,10 +563,8 @@ type SecretSpec struct { Annotations Annotations `protobuf:"bytes,1,opt,name=annotations" json:"annotations"` // Type distinguishes the different kinds of secrets in the system. Type SecretType `protobuf:"varint,2,opt,name=type,proto3,enum=docker.swarmkit.v1.SecretType" json:"type,omitempty"` - // Tags group secrets. - Tags []string `protobuf:"bytes,3,rep,name=tags" json:"tags,omitempty"` // Secret payload. - Data []byte `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"` + Data []*SecretData `protobuf:"bytes,4,rep,name=data" json:"data,omitempty"` } func (m *SecretSpec) Reset() { *m = SecretSpec{} } @@ -853,13 +851,12 @@ func (m *SecretSpec) Copy() *SecretSpec { o := &SecretSpec{ Annotations: *m.Annotations.Copy(), Type: m.Type, - Data: m.Data, } - if m.Tags != nil { - o.Tags = make([]string, 0, len(m.Tags)) - for _, v := range m.Tags { - o.Tags = append(o.Tags, v) + if m.Data != nil { + o.Data = make([]*SecretData, 0, len(m.Data)) + for _, v := range m.Data { + o.Data = append(o.Data, v.Copy()) } } @@ -1093,12 +1090,13 @@ func (this *SecretSpec) GoString() string { if this == nil { return "nil" } - s := make([]string, 0, 8) + s := make([]string, 0, 7) s = append(s, "&api.SecretSpec{") s = append(s, "Annotations: "+strings.Replace(this.Annotations.GoString(), `&`, ``, 1)+",\n") s = append(s, "Type: "+fmt.Sprintf("%#v", this.Type)+",\n") - s = append(s, "Tags: "+fmt.Sprintf("%#v", this.Tags)+",\n") - s = append(s, "Data: "+fmt.Sprintf("%#v", this.Data)+",\n") + if this.Data != nil { + s = append(s, "Data: "+fmt.Sprintf("%#v", this.Data)+",\n") + } s = append(s, "}") return strings.Join(s, "") } @@ -1836,27 +1834,18 @@ func (m *SecretSpec) MarshalTo(data []byte) (int, error) { i++ i = encodeVarintSpecs(data, i, uint64(m.Type)) } - if len(m.Tags) > 0 { - for _, s := range m.Tags { - data[i] = 0x1a + if len(m.Data) > 0 { + for _, msg := range m.Data { + data[i] = 0x22 i++ - l = len(s) - for l >= 1<<7 { - data[i] = uint8(uint64(l)&0x7f | 0x80) - l >>= 7 - i++ + i = encodeVarintSpecs(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err } - data[i] = uint8(l) - i++ - i += copy(data[i:], s) + i += n } } - if len(m.Data) > 0 { - data[i] = 0x22 - i++ - i = encodeVarintSpecs(data, i, uint64(len(m.Data))) - i += copy(data[i:], m.Data) - } return i, nil } @@ -2172,16 +2161,12 @@ func (m *SecretSpec) Size() (n int) { if m.Type != 0 { n += 1 + sovSpecs(uint64(m.Type)) } - if len(m.Tags) > 0 { - for _, s := range m.Tags { - l = len(s) + if len(m.Data) > 0 { + for _, e := range m.Data { + l = e.Size() n += 1 + l + sovSpecs(uint64(l)) } } - l = len(m.Data) - if l > 0 { - n += 1 + l + sovSpecs(uint64(l)) - } return n } @@ -2400,8 +2385,7 @@ func (this *SecretSpec) String() string { s := strings.Join([]string{`&SecretSpec{`, `Annotations:` + strings.Replace(strings.Replace(this.Annotations.String(), "Annotations", "Annotations", 1), `&`, ``, 1) + `,`, `Type:` + fmt.Sprintf("%v", this.Type) + `,`, - `Tags:` + fmt.Sprintf("%v", this.Tags) + `,`, - `Data:` + fmt.Sprintf("%v", this.Data) + `,`, + `Data:` + strings.Replace(fmt.Sprintf("%v", this.Data), "SecretData", "SecretData", 1) + `,`, `}`, }, "") return s @@ -4517,40 +4501,11 @@ func (m *SecretSpec) Unmarshal(data []byte) error { break } } - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Tags", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSpecs - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthSpecs - } - postIndex := iNdEx + intStringLen - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Tags = append(m.Tags, string(data[iNdEx:postIndex])) - iNdEx = postIndex case 4: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType) } - var byteLen int + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowSpecs @@ -4560,21 +4515,21 @@ func (m *SecretSpec) Unmarshal(data []byte) error { } b := data[iNdEx] iNdEx++ - byteLen |= (int(b) & 0x7F) << shift + msglen |= (int(b) & 0x7F) << shift if b < 0x80 { break } } - if byteLen < 0 { + if msglen < 0 { return ErrInvalidLengthSpecs } - postIndex := iNdEx + byteLen + postIndex := iNdEx + msglen if postIndex > l { return io.ErrUnexpectedEOF } - m.Data = append(m.Data[:0], data[iNdEx:postIndex]...) - if m.Data == nil { - m.Data = []byte{} + m.Data = append(m.Data, &SecretData{}) + if err := m.Data[len(m.Data)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err } iNdEx = postIndex default: @@ -4706,97 +4661,97 @@ var ( func init() { proto.RegisterFile("specs.proto", fileDescriptorSpecs) } var fileDescriptorSpecs = []byte{ - // 1470 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x57, 0x4f, 0x6f, 0xdb, 0xc8, - 0x15, 0x17, 0x6d, 0x5a, 0x96, 0x1e, 0xe5, 0x44, 0x19, 0xe4, 0x0f, 0xa3, 0xa4, 0xb2, 0xa2, 0xa4, - 0xa9, 0xd3, 0xa2, 0x76, 0xab, 0x16, 0x69, 0xd2, 0x34, 0x68, 0xf5, 0xaf, 0x8e, 0xea, 0xda, 0x11, - 0xc6, 0x4e, 0x80, 0x9e, 0x84, 0x31, 0x39, 0x96, 0x09, 0x53, 0x1c, 0x76, 0x38, 0x54, 0xe0, 0x5b, - 0x8f, 0x81, 0x0f, 0xfd, 0x06, 0x3e, 0x15, 0xe8, 0xbd, 0x87, 0x7e, 0x87, 0x1c, 0x7b, 0xec, 0xc9, - 0x58, 0xfb, 0xba, 0x58, 0x60, 0x81, 0xfd, 0x02, 0x8b, 0x19, 0x8e, 0x24, 0x6a, 0x43, 0x27, 0x01, - 0xd6, 0xb7, 0x99, 0xc7, 0xdf, 0xef, 0xcd, 0xe3, 0x7b, 0x3f, 0xbe, 0x37, 0x04, 0x2b, 0x0a, 0xa9, - 0x13, 0xad, 0x87, 0x9c, 0x09, 0x86, 0x90, 0xcb, 0x9c, 0x23, 0xca, 0xd7, 0xa3, 0x77, 0x84, 0x8f, - 0x8e, 0x3c, 0xb1, 0x3e, 0xfe, 0x75, 0xc5, 0x12, 0xc7, 0x21, 0xd5, 0x80, 0xca, 0xcd, 0x21, 0x1b, - 0x32, 0xb5, 0xdc, 0x90, 0x2b, 0x6d, 0xbd, 0xe3, 0xc6, 0x9c, 0x08, 0x8f, 0x05, 0x1b, 0x93, 0x45, - 0xf2, 0xa0, 0xfe, 0x4f, 0x13, 0x0a, 0x3b, 0xcc, 0xa5, 0xbb, 0x21, 0x75, 0xd0, 0x26, 0x58, 0x24, - 0x08, 0x98, 0x50, 0x80, 0xc8, 0x36, 0x6a, 0xc6, 0x9a, 0xd5, 0x58, 0x5d, 0xff, 0xf8, 0xc8, 0xf5, - 0xe6, 0x0c, 0xd6, 0x32, 0x3f, 0x9c, 0xad, 0xe6, 0x70, 0x9a, 0x89, 0x7e, 0x05, 0x26, 0x67, 0x3e, - 0xb5, 0x17, 0x6a, 0xc6, 0xda, 0xb5, 0xc6, 0xfd, 0x2c, 0x0f, 0xf2, 0x50, 0xcc, 0x7c, 0x8a, 0x15, - 0x12, 0x6d, 0x02, 0x8c, 0xe8, 0x68, 0x9f, 0xf2, 0xe8, 0xd0, 0x0b, 0xed, 0x45, 0xc5, 0xfb, 0xd9, - 0x65, 0x3c, 0x19, 0xec, 0xfa, 0xf6, 0x14, 0x8e, 0x53, 0x54, 0xb4, 0x0d, 0x25, 0x32, 0x26, 0x9e, - 0x4f, 0xf6, 0x3d, 0xdf, 0x13, 0xc7, 0xb6, 0xa9, 0x5c, 0x3d, 0xf9, 0xa4, 0xab, 0x66, 0x8a, 0x80, - 0xe7, 0xe8, 0x75, 0x17, 0x60, 0x76, 0x10, 0x7a, 0x0c, 0xcb, 0xfd, 0xee, 0x4e, 0xa7, 0xb7, 0xb3, - 0x59, 0xce, 0x55, 0xee, 0x9e, 0x9c, 0xd6, 0x6e, 0x49, 0x1f, 0x33, 0x40, 0x9f, 0x06, 0xae, 0x17, - 0x0c, 0xd1, 0x1a, 0x14, 0x9a, 0xed, 0x76, 0xb7, 0xbf, 0xd7, 0xed, 0x94, 0x8d, 0x4a, 0xe5, 0xe4, - 0xb4, 0x76, 0x7b, 0x1e, 0xd8, 0x74, 0x1c, 0x1a, 0x0a, 0xea, 0x56, 0xcc, 0xf7, 0xff, 0xaa, 0xe6, - 0xea, 0xef, 0x0d, 0x28, 0xa5, 0x83, 0x40, 0x8f, 0x21, 0xdf, 0x6c, 0xef, 0xf5, 0xde, 0x76, 0xcb, - 0xb9, 0x19, 0x3d, 0x8d, 0x68, 0x3a, 0xc2, 0x1b, 0x53, 0xf4, 0x08, 0x96, 0xfa, 0xcd, 0x37, 0xbb, - 0xdd, 0xb2, 0x31, 0x0b, 0x27, 0x0d, 0xeb, 0x93, 0x38, 0x52, 0xa8, 0x0e, 0x6e, 0xf6, 0x76, 0xca, - 0x0b, 0xd9, 0xa8, 0x0e, 0x27, 0x5e, 0xa0, 0x43, 0x39, 0x5f, 0x04, 0x6b, 0x97, 0xf2, 0xb1, 0xe7, - 0x5c, 0xb1, 0x26, 0x9e, 0x82, 0x29, 0x48, 0x74, 0xa4, 0x34, 0x61, 0x65, 0x6b, 0x62, 0x8f, 0x44, - 0x47, 0xf2, 0x50, 0x4d, 0x57, 0x78, 0xa9, 0x0c, 0x4e, 0x43, 0xdf, 0x73, 0x88, 0xa0, 0xae, 0x52, - 0x86, 0xd5, 0xf8, 0x69, 0x16, 0x1b, 0x4f, 0x51, 0x3a, 0xfe, 0x57, 0x39, 0x9c, 0xa2, 0xa2, 0x17, - 0x90, 0x1f, 0xfa, 0x6c, 0x9f, 0xf8, 0x4a, 0x13, 0x56, 0xe3, 0x41, 0x96, 0x93, 0x4d, 0x85, 0x98, - 0x39, 0xd0, 0x14, 0xf4, 0x0c, 0xf2, 0x71, 0xe8, 0x12, 0x41, 0xed, 0xbc, 0x22, 0xd7, 0xb2, 0xc8, - 0x6f, 0x14, 0xa2, 0xcd, 0x82, 0x03, 0x6f, 0x88, 0x35, 0x1e, 0x6d, 0x41, 0x21, 0xa0, 0xe2, 0x1d, - 0xe3, 0x47, 0x91, 0xbd, 0x5c, 0x5b, 0x5c, 0xb3, 0x1a, 0xbf, 0xc8, 0x14, 0x63, 0x82, 0x69, 0x0a, - 0x41, 0x9c, 0xc3, 0x11, 0x0d, 0x44, 0xe2, 0xa6, 0xb5, 0x60, 0x1b, 0x78, 0xea, 0x00, 0xfd, 0x01, - 0x0a, 0x34, 0x70, 0x43, 0xe6, 0x05, 0xc2, 0x2e, 0x5c, 0x1e, 0x48, 0x57, 0x63, 0x64, 0x32, 0xf1, - 0x94, 0xd1, 0xca, 0x83, 0x39, 0x62, 0x2e, 0xad, 0x6f, 0xc0, 0x8d, 0x8f, 0x92, 0x85, 0x2a, 0x50, - 0xd0, 0xc9, 0x4a, 0xaa, 0x6c, 0xe2, 0xe9, 0xbe, 0x7e, 0x1d, 0x56, 0xe6, 0x12, 0x53, 0xff, 0x7a, - 0x11, 0x0a, 0x93, 0x6a, 0xa1, 0x26, 0x14, 0x1d, 0x16, 0x08, 0xe2, 0x05, 0x94, 0x6b, 0x81, 0x64, - 0xe6, 0xb6, 0x3d, 0x01, 0x49, 0xd6, 0xab, 0x1c, 0x9e, 0xb1, 0xd0, 0x9f, 0xa1, 0xc8, 0x69, 0xc4, - 0x62, 0xee, 0xd0, 0x48, 0x2b, 0x64, 0x2d, 0xbb, 0xc6, 0x09, 0x08, 0xd3, 0xbf, 0xc7, 0x1e, 0xa7, - 0x32, 0x4f, 0x11, 0x9e, 0x51, 0xd1, 0x0b, 0x58, 0xe6, 0x34, 0x12, 0x84, 0x8b, 0x4f, 0x15, 0x19, - 0x27, 0x90, 0x3e, 0xf3, 0x3d, 0xe7, 0x18, 0x4f, 0x18, 0xe8, 0x05, 0x14, 0x43, 0x9f, 0x38, 0xca, - 0xab, 0xbd, 0xa4, 0xe8, 0x3f, 0xc9, 0xa2, 0xf7, 0x27, 0x20, 0x3c, 0xc3, 0xa3, 0xe7, 0x00, 0x3e, - 0x1b, 0x0e, 0x5c, 0xee, 0x8d, 0x29, 0xd7, 0x22, 0xa9, 0x64, 0xb1, 0x3b, 0x0a, 0x81, 0x8b, 0x3e, - 0x1b, 0x26, 0x4b, 0xb4, 0xf9, 0xa3, 0x14, 0x92, 0x52, 0xc7, 0x16, 0x00, 0x99, 0x3e, 0xd5, 0xfa, - 0x78, 0xf2, 0x45, 0xae, 0x74, 0x45, 0x52, 0xf4, 0x56, 0x11, 0x96, 0x79, 0x1c, 0x08, 0x6f, 0x44, - 0xeb, 0x5b, 0x70, 0x2b, 0x93, 0x81, 0x1a, 0x50, 0x9a, 0xd6, 0x70, 0xe0, 0xb9, 0xaa, 0xf8, 0xc5, - 0xd6, 0xf5, 0x8b, 0xb3, 0x55, 0x6b, 0x5a, 0xec, 0x5e, 0x07, 0x5b, 0x53, 0x50, 0xcf, 0xad, 0x7f, - 0x63, 0xc2, 0xca, 0x9c, 0x12, 0xd0, 0x4d, 0x58, 0xf2, 0x46, 0x64, 0x48, 0x13, 0x3a, 0x4e, 0x36, - 0xa8, 0x0b, 0x79, 0x9f, 0xec, 0x53, 0x5f, 0xea, 0x41, 0xe6, 0xe4, 0x97, 0x9f, 0x95, 0xd4, 0xfa, - 0x5f, 0x15, 0xbe, 0x1b, 0x08, 0x7e, 0x8c, 0x35, 0x19, 0xd9, 0xb0, 0xec, 0xb0, 0xd1, 0x88, 0x04, - 0xb2, 0x77, 0x2c, 0xae, 0x15, 0xf1, 0x64, 0x8b, 0x10, 0x98, 0x84, 0x0f, 0x23, 0xdb, 0x54, 0x66, - 0xb5, 0x46, 0x65, 0x58, 0xa4, 0xc1, 0xd8, 0x5e, 0x52, 0x26, 0xb9, 0x94, 0x16, 0xd7, 0x4b, 0x0a, - 0x5a, 0xc4, 0x72, 0x29, 0x79, 0x71, 0x44, 0xb9, 0xbd, 0xac, 0x4c, 0x6a, 0x8d, 0x7e, 0x07, 0xf9, - 0x11, 0x8b, 0x03, 0x11, 0xd9, 0x05, 0x15, 0xec, 0xdd, 0xac, 0x60, 0xb7, 0x25, 0x42, 0xf7, 0x36, - 0x0d, 0x47, 0xaf, 0xe0, 0x46, 0x24, 0x58, 0x38, 0x18, 0x72, 0xe2, 0xd0, 0x41, 0x48, 0xb9, 0xc7, - 0x5c, 0xbb, 0x78, 0x79, 0x8b, 0xec, 0xe8, 0xf1, 0x8d, 0xaf, 0x4b, 0xda, 0xa6, 0x64, 0xf5, 0x15, - 0x09, 0xf5, 0xa1, 0x14, 0xc6, 0xbe, 0x3f, 0x60, 0x61, 0xd2, 0xa9, 0x41, 0x39, 0xf9, 0x82, 0xac, - 0xf5, 0x63, 0xdf, 0x7f, 0x9d, 0x90, 0xb0, 0x15, 0xce, 0x36, 0xe8, 0x36, 0xe4, 0x87, 0x9c, 0xc5, - 0x61, 0x64, 0x5b, 0x2a, 0x1f, 0x7a, 0x87, 0x5e, 0xc2, 0x72, 0x44, 0x1d, 0x4e, 0x45, 0x64, 0x97, - 0xd4, 0xdb, 0x3e, 0xcc, 0x3a, 0x64, 0x57, 0x41, 0x30, 0x3d, 0xa0, 0x9c, 0x06, 0x0e, 0xc5, 0x13, - 0x4e, 0xe5, 0x39, 0x58, 0xa9, 0x42, 0xc9, 0x04, 0x1f, 0xd1, 0x63, 0x5d, 0x7b, 0xb9, 0x94, 0x7a, - 0x18, 0x13, 0x3f, 0x4e, 0xae, 0x0f, 0x45, 0x9c, 0x6c, 0x7e, 0xbf, 0xf0, 0xcc, 0xa8, 0x34, 0xc0, - 0x4a, 0x45, 0x8b, 0x1e, 0xc2, 0x0a, 0xa7, 0x43, 0x2f, 0x12, 0xfc, 0x78, 0x40, 0x62, 0x71, 0x68, - 0xff, 0x49, 0x11, 0x4a, 0x13, 0x63, 0x33, 0x16, 0x87, 0xf5, 0xef, 0x0c, 0x28, 0xa5, 0xfb, 0x21, - 0x6a, 0x27, 0x5d, 0x50, 0x9d, 0x78, 0xad, 0xb1, 0xf1, 0xb9, 0xfe, 0xa9, 0x7a, 0x8e, 0x1f, 0xcb, - 0x13, 0xb7, 0xe5, 0x9d, 0x45, 0x91, 0xd1, 0x6f, 0x61, 0x29, 0x64, 0x5c, 0x4c, 0xc4, 0x59, 0xcd, - 0xec, 0x13, 0x8c, 0x4f, 0xbe, 0xd1, 0x04, 0x5c, 0x3f, 0x84, 0x6b, 0xf3, 0xde, 0xd0, 0x23, 0x58, - 0x7c, 0xdb, 0xeb, 0x97, 0x73, 0x95, 0x7b, 0x27, 0xa7, 0xb5, 0x3b, 0xf3, 0x0f, 0xdf, 0x7a, 0x5c, - 0xc4, 0xc4, 0xef, 0xf5, 0xd1, 0xcf, 0x61, 0xa9, 0xb3, 0xb3, 0x8b, 0x71, 0xd9, 0xa8, 0xac, 0x9e, - 0x9c, 0xd6, 0xee, 0xcd, 0xe3, 0xe4, 0x23, 0x16, 0x07, 0x2e, 0x66, 0xfb, 0xd3, 0x31, 0xfe, 0xdf, - 0x05, 0xb0, 0xf4, 0x37, 0x7b, 0xb5, 0x63, 0xfc, 0x8f, 0xb0, 0x92, 0xf4, 0xb8, 0x81, 0xa3, 0x5e, - 0x4d, 0x77, 0xeb, 0x4f, 0xb5, 0xba, 0x52, 0x42, 0x48, 0x52, 0x81, 0x1e, 0x40, 0xc9, 0x0b, 0xc7, - 0x4f, 0x07, 0x34, 0x20, 0xfb, 0xbe, 0x9e, 0xe8, 0x05, 0x6c, 0x49, 0x5b, 0x37, 0x31, 0xc9, 0x51, - 0xe4, 0x05, 0x82, 0xf2, 0x40, 0xcf, 0xea, 0x02, 0x9e, 0xee, 0xd1, 0x4b, 0x30, 0xbd, 0x90, 0x8c, - 0x74, 0x7f, 0xce, 0x7c, 0x83, 0x5e, 0xbf, 0xb9, 0xad, 0x25, 0xd2, 0x2a, 0x5c, 0x9c, 0xad, 0x9a, - 0xd2, 0x80, 0x15, 0x0d, 0x55, 0x27, 0x2d, 0x52, 0x9e, 0xa4, 0xbe, 0xea, 0x02, 0x4e, 0x59, 0xea, - 0xff, 0x36, 0xc1, 0x6a, 0xfb, 0x71, 0x24, 0x74, 0x6f, 0xba, 0xb2, 0xbc, 0xfd, 0x0d, 0x6e, 0x10, - 0x75, 0xe9, 0x23, 0x81, 0xfc, 0xd0, 0xd5, 0xe8, 0xd1, 0xb9, 0x7b, 0x94, 0xe9, 0x6e, 0x0a, 0x4e, - 0xc6, 0x54, 0x2b, 0x2f, 0x7d, 0xda, 0x06, 0x2e, 0x93, 0x1f, 0x3c, 0x41, 0xbb, 0xb0, 0xc2, 0xb8, - 0x73, 0x48, 0x23, 0x91, 0xf4, 0x06, 0x7d, 0x49, 0xca, 0xbc, 0x3e, 0xbf, 0x4e, 0x03, 0xf5, 0x15, - 0x23, 0x89, 0x76, 0xde, 0x07, 0x7a, 0x06, 0x26, 0x27, 0x07, 0x93, 0x31, 0x9a, 0xa9, 0x6f, 0x4c, - 0x0e, 0xc4, 0x9c, 0x0b, 0xc5, 0x40, 0x7f, 0x01, 0x70, 0xbd, 0x28, 0x24, 0xc2, 0x39, 0xa4, 0x5c, - 0xd7, 0x29, 0xf3, 0x15, 0x3b, 0x53, 0xd4, 0x9c, 0x97, 0x14, 0x1b, 0x6d, 0x41, 0xd1, 0x21, 0x13, - 0xa5, 0xe5, 0x2f, 0x6f, 0x8b, 0xed, 0xa6, 0x76, 0x51, 0x96, 0x2e, 0x2e, 0xce, 0x56, 0x0b, 0x13, - 0x0b, 0x2e, 0x38, 0x44, 0x2b, 0x6f, 0x0b, 0x56, 0xe4, 0x8d, 0x72, 0xe0, 0xd2, 0x03, 0x12, 0xfb, - 0x22, 0x52, 0x1d, 0xfc, 0x92, 0x1b, 0x94, 0xbc, 0xdc, 0x74, 0x34, 0x4e, 0xc7, 0x55, 0x12, 0x29, - 0x5b, 0xfd, 0x3f, 0x06, 0x40, 0xd2, 0xe2, 0xae, 0x56, 0x27, 0x0d, 0x30, 0xe5, 0xef, 0x9c, 0xfe, - 0x75, 0xaa, 0x5e, 0xde, 0x59, 0xf7, 0x8e, 0x43, 0x8a, 0x15, 0x56, 0x4e, 0x24, 0x41, 0x86, 0x91, - 0x1e, 0x70, 0x6a, 0x2d, 0x6d, 0x2e, 0x11, 0x44, 0xd5, 0xaf, 0x84, 0xd5, 0xba, 0x75, 0xff, 0xc3, - 0x79, 0x35, 0xf7, 0xff, 0xf3, 0x6a, 0xee, 0xdb, 0xf3, 0xaa, 0xf1, 0x8f, 0x8b, 0xaa, 0xf1, 0xe1, - 0xa2, 0x6a, 0xfc, 0xef, 0xa2, 0x6a, 0x7c, 0x75, 0x51, 0x35, 0xf6, 0xf3, 0xea, 0x8f, 0xf0, 0x37, - 0xdf, 0x07, 0x00, 0x00, 0xff, 0xff, 0x1e, 0xd5, 0xdd, 0x17, 0x70, 0x0e, 0x00, 0x00, + // 1463 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x57, 0x4f, 0x6f, 0x1b, 0x45, + 0x14, 0xf7, 0x26, 0x1b, 0xc7, 0x7e, 0xeb, 0xb4, 0xee, 0xa8, 0x7f, 0xb6, 0x6e, 0x71, 0x5c, 0xb7, + 0x94, 0x14, 0x44, 0x02, 0x06, 0x95, 0x96, 0x52, 0x81, 0xff, 0x91, 0x9a, 0x90, 0xd4, 0x9a, 0xa4, + 0x95, 0x38, 0x59, 0x93, 0xdd, 0x89, 0xb3, 0xca, 0x7a, 0x77, 0x99, 0x9d, 0x75, 0x95, 0x1b, 0xc7, + 0x2a, 0x07, 0xbe, 0x41, 0x4e, 0x48, 0x7c, 0x03, 0x8e, 0xdc, 0x7b, 0xe4, 0xc8, 0x29, 0x22, 0xb9, + 0x22, 0x24, 0x24, 0xbe, 0x00, 0x9a, 0xd9, 0xb1, 0xbd, 0xa6, 0x9b, 0xb4, 0x12, 0xb9, 0xcd, 0xbc, + 0xfd, 0xfd, 0xde, 0xbc, 0x7d, 0xef, 0xb7, 0xef, 0xcd, 0x82, 0x11, 0x06, 0xd4, 0x0a, 0x97, 0x03, + 0xe6, 0x73, 0x1f, 0x21, 0xdb, 0xb7, 0xf6, 0x28, 0x5b, 0x0e, 0x5f, 0x10, 0x36, 0xd8, 0x73, 0xf8, + 0xf2, 0xf0, 0xe3, 0x92, 0xc1, 0xf7, 0x03, 0xaa, 0x00, 0xa5, 0xcb, 0x7d, 0xbf, 0xef, 0xcb, 0xe5, + 0x8a, 0x58, 0x29, 0xeb, 0x35, 0x3b, 0x62, 0x84, 0x3b, 0xbe, 0xb7, 0x32, 0x5a, 0xc4, 0x0f, 0xaa, + 0x3f, 0xea, 0x90, 0xdb, 0xf0, 0x6d, 0xba, 0x19, 0x50, 0x0b, 0xad, 0x82, 0x41, 0x3c, 0xcf, 0xe7, + 0x12, 0x10, 0x9a, 0x5a, 0x45, 0x5b, 0x32, 0x6a, 0x8b, 0xcb, 0xaf, 0x1f, 0xb9, 0x5c, 0x9f, 0xc0, + 0x1a, 0xfa, 0xab, 0xa3, 0xc5, 0x0c, 0x4e, 0x32, 0xd1, 0x47, 0xa0, 0x33, 0xdf, 0xa5, 0xe6, 0x4c, + 0x45, 0x5b, 0xba, 0x50, 0xbb, 0x99, 0xe6, 0x41, 0x1c, 0x8a, 0x7d, 0x97, 0x62, 0x89, 0x44, 0xab, + 0x00, 0x03, 0x3a, 0xd8, 0xa6, 0x2c, 0xdc, 0x75, 0x02, 0x73, 0x56, 0xf2, 0xde, 0x3b, 0x8d, 0x27, + 0x82, 0x5d, 0x5e, 0x1f, 0xc3, 0x71, 0x82, 0x8a, 0xd6, 0xa1, 0x40, 0x86, 0xc4, 0x71, 0xc9, 0xb6, + 0xe3, 0x3a, 0x7c, 0xdf, 0xd4, 0xa5, 0xab, 0x7b, 0x67, 0xba, 0xaa, 0x27, 0x08, 0x78, 0x8a, 0x5e, + 0xb5, 0x01, 0x26, 0x07, 0xa1, 0xbb, 0x30, 0xdf, 0x6d, 0x6f, 0xb4, 0x3a, 0x1b, 0xab, 0xc5, 0x4c, + 0xe9, 0xfa, 0xc1, 0x61, 0xe5, 0x8a, 0xf0, 0x31, 0x01, 0x74, 0xa9, 0x67, 0x3b, 0x5e, 0x1f, 0x2d, + 0x41, 0xae, 0xde, 0x6c, 0xb6, 0xbb, 0x5b, 0xed, 0x56, 0x51, 0x2b, 0x95, 0x0e, 0x0e, 0x2b, 0x57, + 0xa7, 0x81, 0x75, 0xcb, 0xa2, 0x01, 0xa7, 0x76, 0x49, 0x7f, 0xf9, 0x53, 0x39, 0x53, 0x7d, 0xa9, + 0x41, 0x21, 0x19, 0x04, 0xba, 0x0b, 0xd9, 0x7a, 0x73, 0xab, 0xf3, 0xbc, 0x5d, 0xcc, 0x4c, 0xe8, + 0x49, 0x44, 0xdd, 0xe2, 0xce, 0x90, 0xa2, 0x3b, 0x30, 0xd7, 0xad, 0x3f, 0xdb, 0x6c, 0x17, 0xb5, + 0x49, 0x38, 0x49, 0x58, 0x97, 0x44, 0xa1, 0x44, 0xb5, 0x70, 0xbd, 0xb3, 0x51, 0x9c, 0x49, 0x47, + 0xb5, 0x18, 0x71, 0x3c, 0x15, 0xca, 0xf1, 0x2c, 0x18, 0x9b, 0x94, 0x0d, 0x1d, 0xeb, 0x9c, 0x35, + 0x71, 0x1f, 0x74, 0x4e, 0xc2, 0x3d, 0xa9, 0x09, 0x23, 0x5d, 0x13, 0x5b, 0x24, 0xdc, 0x13, 0x87, + 0x2a, 0xba, 0xc4, 0x0b, 0x65, 0x30, 0x1a, 0xb8, 0x8e, 0x45, 0x38, 0xb5, 0xa5, 0x32, 0x8c, 0xda, + 0xbb, 0x69, 0x6c, 0x3c, 0x46, 0xa9, 0xf8, 0x9f, 0x64, 0x70, 0x82, 0x8a, 0x1e, 0x41, 0xb6, 0xef, + 0xfa, 0xdb, 0xc4, 0x95, 0x9a, 0x30, 0x6a, 0xb7, 0xd2, 0x9c, 0xac, 0x4a, 0xc4, 0xc4, 0x81, 0xa2, + 0xa0, 0x07, 0x90, 0x8d, 0x02, 0x9b, 0x70, 0x6a, 0x66, 0x25, 0xb9, 0x92, 0x46, 0x7e, 0x26, 0x11, + 0x4d, 0xdf, 0xdb, 0x71, 0xfa, 0x58, 0xe1, 0xd1, 0x1a, 0xe4, 0x3c, 0xca, 0x5f, 0xf8, 0x6c, 0x2f, + 0x34, 0xe7, 0x2b, 0xb3, 0x4b, 0x46, 0xed, 0x83, 0x54, 0x31, 0xc6, 0x98, 0x3a, 0xe7, 0xc4, 0xda, + 0x1d, 0x50, 0x8f, 0xc7, 0x6e, 0x1a, 0x33, 0xa6, 0x86, 0xc7, 0x0e, 0xd0, 0x17, 0x90, 0xa3, 0x9e, + 0x1d, 0xf8, 0x8e, 0xc7, 0xcd, 0xdc, 0xe9, 0x81, 0xb4, 0x15, 0x46, 0x24, 0x13, 0x8f, 0x19, 0x8d, + 0x2c, 0xe8, 0x03, 0xdf, 0xa6, 0xd5, 0x15, 0xb8, 0xf4, 0x5a, 0xb2, 0x50, 0x09, 0x72, 0x2a, 0x59, + 0x71, 0x95, 0x75, 0x3c, 0xde, 0x57, 0x2f, 0xc2, 0xc2, 0x54, 0x62, 0xaa, 0x7f, 0xce, 0x42, 0x6e, + 0x54, 0x2d, 0x54, 0x87, 0xbc, 0xe5, 0x7b, 0x9c, 0x38, 0x1e, 0x65, 0x4a, 0x20, 0xa9, 0xb9, 0x6d, + 0x8e, 0x40, 0x82, 0xf5, 0x24, 0x83, 0x27, 0x2c, 0xf4, 0x35, 0xe4, 0x19, 0x0d, 0xfd, 0x88, 0x59, + 0x34, 0x54, 0x0a, 0x59, 0x4a, 0xaf, 0x71, 0x0c, 0xc2, 0xf4, 0xfb, 0xc8, 0x61, 0x54, 0xe4, 0x29, + 0xc4, 0x13, 0x2a, 0x7a, 0x04, 0xf3, 0x8c, 0x86, 0x9c, 0x30, 0x7e, 0x56, 0x91, 0x71, 0x0c, 0xe9, + 0xfa, 0xae, 0x63, 0xed, 0xe3, 0x11, 0x03, 0x3d, 0x82, 0x7c, 0xe0, 0x12, 0x4b, 0x7a, 0x35, 0xe7, + 0x24, 0xfd, 0x9d, 0x34, 0x7a, 0x77, 0x04, 0xc2, 0x13, 0x3c, 0x7a, 0x08, 0xe0, 0xfa, 0xfd, 0x9e, + 0xcd, 0x9c, 0x21, 0x65, 0x4a, 0x24, 0xa5, 0x34, 0x76, 0x4b, 0x22, 0x70, 0xde, 0xf5, 0xfb, 0xf1, + 0x12, 0xad, 0xfe, 0x2f, 0x85, 0x24, 0xd4, 0xb1, 0x06, 0x40, 0xc6, 0x4f, 0x95, 0x3e, 0xee, 0xbd, + 0x95, 0x2b, 0x55, 0x91, 0x04, 0xbd, 0x91, 0x87, 0x79, 0x16, 0x79, 0xdc, 0x19, 0xd0, 0xea, 0x1a, + 0x5c, 0x49, 0x65, 0xa0, 0x1a, 0x14, 0xc6, 0x35, 0xec, 0x39, 0xb6, 0x2c, 0x7e, 0xbe, 0x71, 0xf1, + 0xe4, 0x68, 0xd1, 0x18, 0x17, 0xbb, 0xd3, 0xc2, 0xc6, 0x18, 0xd4, 0xb1, 0xab, 0x7f, 0xe9, 0xb0, + 0x30, 0xa5, 0x04, 0x74, 0x19, 0xe6, 0x9c, 0x01, 0xe9, 0xd3, 0x98, 0x8e, 0xe3, 0x0d, 0x6a, 0x43, + 0xd6, 0x25, 0xdb, 0xd4, 0x15, 0x7a, 0x10, 0x39, 0xf9, 0xf0, 0x8d, 0x92, 0x5a, 0xfe, 0x56, 0xe2, + 0xdb, 0x1e, 0x67, 0xfb, 0x58, 0x91, 0x91, 0x09, 0xf3, 0x96, 0x3f, 0x18, 0x10, 0x4f, 0xf4, 0x8e, + 0xd9, 0xa5, 0x3c, 0x1e, 0x6d, 0x11, 0x02, 0x9d, 0xb0, 0x7e, 0x68, 0xea, 0xd2, 0x2c, 0xd7, 0xa8, + 0x08, 0xb3, 0xd4, 0x1b, 0x9a, 0x73, 0xd2, 0x24, 0x96, 0xc2, 0x62, 0x3b, 0x71, 0x41, 0xf3, 0x58, + 0x2c, 0x05, 0x2f, 0x0a, 0x29, 0x33, 0xe7, 0xa5, 0x49, 0xae, 0xd1, 0x67, 0x90, 0x1d, 0xf8, 0x91, + 0xc7, 0x43, 0x33, 0x27, 0x83, 0xbd, 0x9e, 0x16, 0xec, 0xba, 0x40, 0xa8, 0xde, 0xa6, 0xe0, 0xe8, + 0x09, 0x5c, 0x0a, 0xb9, 0x1f, 0xf4, 0xfa, 0x8c, 0x58, 0xb4, 0x17, 0x50, 0xe6, 0xf8, 0xb6, 0x99, + 0x3f, 0xbd, 0x45, 0xb6, 0xd4, 0xf8, 0xc6, 0x17, 0x05, 0x6d, 0x55, 0xb0, 0xba, 0x92, 0x84, 0xba, + 0x50, 0x08, 0x22, 0xd7, 0xed, 0xf9, 0x41, 0xdc, 0xa9, 0x41, 0x3a, 0x79, 0x8b, 0xac, 0x75, 0x23, + 0xd7, 0x7d, 0x1a, 0x93, 0xb0, 0x11, 0x4c, 0x36, 0xe8, 0x2a, 0x64, 0xfb, 0xcc, 0x8f, 0x82, 0xd0, + 0x34, 0x64, 0x3e, 0xd4, 0x0e, 0x3d, 0x86, 0xf9, 0x90, 0x5a, 0x8c, 0xf2, 0xd0, 0x2c, 0xc8, 0xb7, + 0xbd, 0x9d, 0x76, 0xc8, 0xa6, 0x84, 0x60, 0xba, 0x43, 0x19, 0xf5, 0x2c, 0x8a, 0x47, 0x9c, 0xd2, + 0x43, 0x30, 0x12, 0x85, 0x12, 0x09, 0xde, 0xa3, 0xfb, 0xaa, 0xf6, 0x62, 0x29, 0xf4, 0x30, 0x24, + 0x6e, 0x14, 0x5f, 0x1f, 0xf2, 0x38, 0xde, 0x7c, 0x3e, 0xf3, 0x40, 0x2b, 0xd5, 0xc0, 0x48, 0x44, + 0x8b, 0x6e, 0xc3, 0x02, 0xa3, 0x7d, 0x27, 0xe4, 0x6c, 0xbf, 0x47, 0x22, 0xbe, 0x6b, 0x7e, 0x25, + 0x09, 0x85, 0x91, 0xb1, 0x1e, 0xf1, 0xdd, 0xea, 0x3f, 0x1a, 0x14, 0x92, 0xfd, 0x10, 0x35, 0xe3, + 0x2e, 0x28, 0x4f, 0xbc, 0x50, 0x5b, 0x79, 0x53, 0xff, 0x94, 0x3d, 0xc7, 0x8d, 0xc4, 0x89, 0xeb, + 0xe2, 0xce, 0x22, 0xc9, 0xe8, 0x53, 0x98, 0x0b, 0x7c, 0xc6, 0x47, 0xe2, 0x2c, 0xa7, 0xf6, 0x09, + 0x9f, 0x8d, 0xbe, 0xd1, 0x18, 0x5c, 0xdd, 0x85, 0x0b, 0xd3, 0xde, 0xd0, 0x1d, 0x98, 0x7d, 0xde, + 0xe9, 0x16, 0x33, 0xa5, 0x1b, 0x07, 0x87, 0x95, 0x6b, 0xd3, 0x0f, 0x9f, 0x3b, 0x8c, 0x47, 0xc4, + 0xed, 0x74, 0xd1, 0xfb, 0x30, 0xd7, 0xda, 0xd8, 0xc4, 0xb8, 0xa8, 0x95, 0x16, 0x0f, 0x0e, 0x2b, + 0x37, 0xa6, 0x71, 0xe2, 0x91, 0x1f, 0x79, 0x36, 0xf6, 0xb7, 0xc7, 0x63, 0xfc, 0x97, 0x19, 0x30, + 0xd4, 0x37, 0x7b, 0xbe, 0x63, 0xfc, 0x4b, 0x58, 0x88, 0x7b, 0x5c, 0xcf, 0x92, 0xaf, 0xa6, 0xba, + 0xf5, 0x59, 0xad, 0xae, 0x10, 0x13, 0xe2, 0x54, 0xa0, 0x5b, 0x50, 0x70, 0x82, 0xe1, 0xfd, 0x1e, + 0xf5, 0xc8, 0xb6, 0xab, 0x26, 0x7a, 0x0e, 0x1b, 0xc2, 0xd6, 0x8e, 0x4d, 0x62, 0x14, 0x39, 0x1e, + 0xa7, 0xcc, 0x53, 0xb3, 0x3a, 0x87, 0xc7, 0x7b, 0xf4, 0x18, 0x74, 0x27, 0x20, 0x03, 0xd5, 0x9f, + 0x53, 0xdf, 0xa0, 0xd3, 0xad, 0xaf, 0x2b, 0x89, 0x34, 0x72, 0x27, 0x47, 0x8b, 0xba, 0x30, 0x60, + 0x49, 0x43, 0xe5, 0x51, 0x8b, 0x14, 0x27, 0xc9, 0xaf, 0x3a, 0x87, 0x13, 0x96, 0xea, 0xcf, 0x3a, + 0x18, 0x4d, 0x37, 0x0a, 0xb9, 0xea, 0x4d, 0xe7, 0x96, 0xb7, 0xef, 0xe0, 0x12, 0x91, 0x97, 0x3e, + 0xe2, 0x89, 0x0f, 0x5d, 0x8e, 0x1e, 0x95, 0xbb, 0x3b, 0xa9, 0xee, 0xc6, 0xe0, 0x78, 0x4c, 0x35, + 0xb2, 0xc2, 0xa7, 0xa9, 0xe1, 0x22, 0xf9, 0xcf, 0x13, 0xb4, 0x09, 0x0b, 0x3e, 0xb3, 0x76, 0x69, + 0xc8, 0xe3, 0xde, 0xa0, 0x2e, 0x49, 0xa9, 0xd7, 0xe7, 0xa7, 0x49, 0xa0, 0xba, 0x62, 0xc4, 0xd1, + 0x4e, 0xfb, 0x40, 0x0f, 0x40, 0x67, 0x64, 0x67, 0x34, 0x46, 0x53, 0xf5, 0x8d, 0xc9, 0x0e, 0x9f, + 0x72, 0x21, 0x19, 0xe8, 0x1b, 0x00, 0xdb, 0x09, 0x03, 0xc2, 0xad, 0x5d, 0xca, 0x54, 0x9d, 0x52, + 0x5f, 0xb1, 0x35, 0x46, 0x4d, 0x79, 0x49, 0xb0, 0xd1, 0x1a, 0xe4, 0x2d, 0x32, 0x52, 0x5a, 0xf6, + 0xf4, 0xb6, 0xd8, 0xac, 0x2b, 0x17, 0x45, 0xe1, 0xe2, 0xe4, 0x68, 0x31, 0x37, 0xb2, 0xe0, 0x9c, + 0x45, 0x94, 0xf2, 0xd6, 0x60, 0x41, 0xdc, 0x28, 0x7b, 0x36, 0xdd, 0x21, 0x91, 0xcb, 0x43, 0xd9, + 0xc1, 0x4f, 0xb9, 0x41, 0x89, 0xcb, 0x4d, 0x4b, 0xe1, 0x54, 0x5c, 0x05, 0x9e, 0xb0, 0x55, 0x7f, + 0xd5, 0x00, 0xe2, 0x16, 0x77, 0xbe, 0x3a, 0xa9, 0x81, 0x2e, 0x7e, 0xe7, 0xd4, 0xaf, 0x53, 0xf9, + 0xf4, 0xce, 0xba, 0xb5, 0x1f, 0x50, 0x2c, 0xb1, 0x82, 0x63, 0x13, 0x4e, 0xe4, 0x24, 0x33, 0xce, + 0xe2, 0xb4, 0x08, 0x27, 0x58, 0x62, 0x1b, 0x37, 0x5f, 0x1d, 0x97, 0x33, 0xbf, 0x1f, 0x97, 0x33, + 0x7f, 0x1f, 0x97, 0xb5, 0x1f, 0x4e, 0xca, 0xda, 0xab, 0x93, 0xb2, 0xf6, 0xdb, 0x49, 0x59, 0xfb, + 0xe3, 0xa4, 0xac, 0x6d, 0x67, 0xe5, 0xdf, 0xe1, 0x27, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0x31, + 0x9c, 0x79, 0xf4, 0x7c, 0x0e, 0x00, 0x00, } diff --git a/api/specs.proto b/api/specs.proto index 25288ce6ec..a20cabbd06 100644 --- a/api/specs.proto +++ b/api/specs.proto @@ -283,9 +283,6 @@ message SecretSpec { // Type distinguishes the different kinds of secrets in the system. SecretType type = 2; - // Tags group secrets. - repeated string tags = 3; - // Secret payload. - bytes data = 4; + repeated SecretData data = 4; } diff --git a/api/types.pb.go b/api/types.pb.go index ace78848b4..3831f1324d 100644 --- a/api/types.pb.go +++ b/api/types.pb.go @@ -57,6 +57,7 @@ EncryptionKey ManagerStatus SecretReference + SecretData NodeSpec ServiceSpec ReplicatedService @@ -1386,16 +1387,37 @@ func (*ManagerStatus) Descriptor() ([]byte, []int) { return fileDescriptorTypes, type SecretReference struct { // Name is the name of the secret that this reference. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Mode is one or more ways the secret should be presented. - Mode []SecretReference_Mode `protobuf:"varint,2,rep,name=mode,enum=docker.swarmkit.v1.SecretReference_Mode" json:"mode,omitempty"` + // DataID represents the specific Secret version that we're referencing to. + // This identifier exists so that SecretReferences don't leak any information + // about the secret contents. + DataId string `protobuf:"bytes,2,opt,name=data_id,json=dataId,proto3" json:"data_id,omitempty"` + // Mode is the way the secret should be presented. + Mode SecretReference_Mode `protobuf:"varint,3,opt,name=mode,proto3,enum=docker.swarmkit.v1.SecretReference_Mode" json:"mode,omitempty"` // Target is the name by which the image accesses the secret. - Target string `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` + Target string `protobuf:"bytes,4,opt,name=target,proto3" json:"target,omitempty"` } func (m *SecretReference) Reset() { *m = SecretReference{} } func (*SecretReference) ProtoMessage() {} func (*SecretReference) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{38} } +// SecretData is represents a specific version of a secret, and is immutable +type SecretData struct { + // DataID is an opaque, randomly generated identifier to link a SecretReference + // to a specific SecretData. + DataID string `protobuf:"bytes,1,opt,name=data_id,json=dataId,proto3" json:"data_id,omitempty"` + // Data contains the secret bytes. + Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` + // Digest is a digest of the data bytes. + Digest string `protobuf:"bytes,3,opt,name=digest,proto3" json:"digest,omitempty"` + // CreatedAt is the time at which this secret data was created. + CreatedAt *docker_swarmkit_v1.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt" json:"created_at,omitempty"` +} + +func (m *SecretData) Reset() { *m = SecretData{} } +func (*SecretData) ProtoMessage() {} +func (*SecretData) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{39} } + func init() { proto.RegisterType((*Version)(nil), "docker.swarmkit.v1.Version") proto.RegisterType((*Annotations)(nil), "docker.swarmkit.v1.Annotations") @@ -1441,6 +1463,7 @@ func init() { proto.RegisterType((*EncryptionKey)(nil), "docker.swarmkit.v1.EncryptionKey") proto.RegisterType((*ManagerStatus)(nil), "docker.swarmkit.v1.ManagerStatus") proto.RegisterType((*SecretReference)(nil), "docker.swarmkit.v1.SecretReference") + proto.RegisterType((*SecretData)(nil), "docker.swarmkit.v1.SecretData") proto.RegisterEnum("docker.swarmkit.v1.TaskState", TaskState_name, TaskState_value) proto.RegisterEnum("docker.swarmkit.v1.NodeRole", NodeRole_name, NodeRole_value) proto.RegisterEnum("docker.swarmkit.v1.SecretType", SecretType_name, SecretType_value) @@ -2142,14 +2165,24 @@ func (m *SecretReference) Copy() *SecretReference { o := &SecretReference{ Name: m.Name, + DataId: m.DataId, + Mode: m.Mode, Target: m.Target, } - if m.Mode != nil { - o.Mode = make([]SecretReference_Mode, 0, len(m.Mode)) - for _, v := range m.Mode { - o.Mode = append(o.Mode, v) - } + return o +} + +func (m *SecretData) Copy() *SecretData { + if m == nil { + return nil + } + + o := &SecretData{ + DataID: m.DataID, + Data: m.Data, + Digest: m.Digest, + CreatedAt: m.CreatedAt.Copy(), } return o @@ -2797,14 +2830,30 @@ func (this *SecretReference) GoString() string { if this == nil { return "nil" } - s := make([]string, 0, 7) + s := make([]string, 0, 8) s = append(s, "&api.SecretReference{") s = append(s, "Name: "+fmt.Sprintf("%#v", this.Name)+",\n") + s = append(s, "DataId: "+fmt.Sprintf("%#v", this.DataId)+",\n") s = append(s, "Mode: "+fmt.Sprintf("%#v", this.Mode)+",\n") s = append(s, "Target: "+fmt.Sprintf("%#v", this.Target)+",\n") s = append(s, "}") return strings.Join(s, "") } +func (this *SecretData) GoString() string { + if this == nil { + return "nil" + } + s := make([]string, 0, 8) + s = append(s, "&api.SecretData{") + s = append(s, "DataID: "+fmt.Sprintf("%#v", this.DataID)+",\n") + s = append(s, "Data: "+fmt.Sprintf("%#v", this.Data)+",\n") + s = append(s, "Digest: "+fmt.Sprintf("%#v", this.Digest)+",\n") + if this.CreatedAt != nil { + s = append(s, "CreatedAt: "+fmt.Sprintf("%#v", this.CreatedAt)+",\n") + } + s = append(s, "}") + return strings.Join(s, "") +} func valueToGoStringTypes(v interface{}, typ string) string { rv := reflect.ValueOf(v) if rv.IsNil() { @@ -4545,15 +4594,19 @@ func (m *SecretReference) MarshalTo(data []byte) (int, error) { i = encodeVarintTypes(data, i, uint64(len(m.Name))) i += copy(data[i:], m.Name) } - if len(m.Mode) > 0 { - for _, num := range m.Mode { - data[i] = 0x10 - i++ - i = encodeVarintTypes(data, i, uint64(num)) - } + if len(m.DataId) > 0 { + data[i] = 0x12 + i++ + i = encodeVarintTypes(data, i, uint64(len(m.DataId))) + i += copy(data[i:], m.DataId) + } + if m.Mode != 0 { + data[i] = 0x18 + i++ + i = encodeVarintTypes(data, i, uint64(m.Mode)) } if len(m.Target) > 0 { - data[i] = 0x1a + data[i] = 0x22 i++ i = encodeVarintTypes(data, i, uint64(len(m.Target))) i += copy(data[i:], m.Target) @@ -4561,6 +4614,52 @@ func (m *SecretReference) MarshalTo(data []byte) (int, error) { return i, nil } +func (m *SecretData) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *SecretData) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.DataID) > 0 { + data[i] = 0xa + i++ + i = encodeVarintTypes(data, i, uint64(len(m.DataID))) + i += copy(data[i:], m.DataID) + } + if len(m.Data) > 0 { + data[i] = 0x12 + i++ + i = encodeVarintTypes(data, i, uint64(len(m.Data))) + i += copy(data[i:], m.Data) + } + if len(m.Digest) > 0 { + data[i] = 0x1a + i++ + i = encodeVarintTypes(data, i, uint64(len(m.Digest))) + i += copy(data[i:], m.Digest) + } + if m.CreatedAt != nil { + data[i] = 0x22 + i++ + i = encodeVarintTypes(data, i, uint64(m.CreatedAt.Size())) + n27, err := m.CreatedAt.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n27 + } + return i, nil +} + func encodeFixed64Types(data []byte, offset int, v uint64) int { data[offset] = uint8(v) data[offset+1] = uint8(v >> 8) @@ -5328,10 +5427,12 @@ func (m *SecretReference) Size() (n int) { if l > 0 { n += 1 + l + sovTypes(uint64(l)) } - if len(m.Mode) > 0 { - for _, e := range m.Mode { - n += 1 + sovTypes(uint64(e)) - } + l = len(m.DataId) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + if m.Mode != 0 { + n += 1 + sovTypes(uint64(m.Mode)) } l = len(m.Target) if l > 0 { @@ -5340,6 +5441,28 @@ func (m *SecretReference) Size() (n int) { return n } +func (m *SecretData) Size() (n int) { + var l int + _ = l + l = len(m.DataID) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + l = len(m.Data) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + l = len(m.Digest) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + if m.CreatedAt != nil { + l = m.CreatedAt.Size() + n += 1 + l + sovTypes(uint64(l)) + } + return n +} + func sovTypes(x uint64) (n int) { for { n++ @@ -5935,12 +6058,26 @@ func (this *SecretReference) String() string { } s := strings.Join([]string{`&SecretReference{`, `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `DataId:` + fmt.Sprintf("%v", this.DataId) + `,`, `Mode:` + fmt.Sprintf("%v", this.Mode) + `,`, `Target:` + fmt.Sprintf("%v", this.Target) + `,`, `}`, }, "") return s } +func (this *SecretData) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SecretData{`, + `DataID:` + fmt.Sprintf("%v", this.DataID) + `,`, + `Data:` + fmt.Sprintf("%v", this.Data) + `,`, + `Digest:` + fmt.Sprintf("%v", this.Digest) + `,`, + `CreatedAt:` + strings.Replace(fmt.Sprintf("%v", this.CreatedAt), "Timestamp", "docker_swarmkit_v1.Timestamp", 1) + `,`, + `}`, + }, "") + return s +} func valueToStringTypes(v interface{}) string { rv := reflect.ValueOf(v) if rv.IsNil() { @@ -11821,10 +11958,39 @@ func (m *SecretReference) Unmarshal(data []byte) error { m.Name = string(data[iNdEx:postIndex]) iNdEx = postIndex case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DataId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DataId = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field Mode", wireType) } - var v SecretReference_Mode + m.Mode = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTypes @@ -11834,13 +12000,12 @@ func (m *SecretReference) Unmarshal(data []byte) error { } b := data[iNdEx] iNdEx++ - v |= (SecretReference_Mode(b) & 0x7F) << shift + m.Mode |= (SecretReference_Mode(b) & 0x7F) << shift if b < 0x80 { break } } - m.Mode = append(m.Mode, v) - case 3: + case 4: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Target", wireType) } @@ -11890,6 +12055,178 @@ func (m *SecretReference) Unmarshal(data []byte) error { } return nil } +func (m *SecretData) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SecretData: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SecretData: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DataID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DataID = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + byteLen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + byteLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Data = append(m.Data[:0], data[iNdEx:postIndex]...) + if m.Data == nil { + m.Data = []byte{} + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Digest", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Digest = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CreatedAt", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.CreatedAt == nil { + m.CreatedAt = &docker_swarmkit_v1.Timestamp{} + } + if err := m.CreatedAt.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTypes(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthTypes + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipTypes(data []byte) (n int, err error) { l := len(data) iNdEx := 0 @@ -11998,231 +12335,235 @@ var ( func init() { proto.RegisterFile("types.proto", fileDescriptorTypes) } var fileDescriptorTypes = []byte{ - // 3609 bytes of a gzipped FileDescriptorProto + // 3676 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x59, 0xcd, 0x6f, 0x23, 0x47, - 0x76, 0x57, 0xf3, 0x4b, 0xe4, 0x23, 0x25, 0xf5, 0xd4, 0xcc, 0x8e, 0x35, 0xf4, 0x58, 0xa2, 0x7b, - 0x3c, 0xeb, 0xd9, 0x59, 0x87, 0xb6, 0xe5, 0x8d, 0x31, 0xeb, 0xd9, 0xac, 0xdd, 0x22, 0xa9, 0x19, - 0x7a, 0x24, 0x92, 0x28, 0x92, 0x1a, 0x18, 0x01, 0x42, 0x94, 0xba, 0x4b, 0x54, 0x5b, 0xcd, 0x6e, - 0xa6, 0xbb, 0x28, 0x0d, 0x13, 0x04, 0x98, 0xe4, 0x90, 0x04, 0x3a, 0xe5, 0x94, 0x4b, 0x20, 0x2c, - 0x82, 0x04, 0xb9, 0xe5, 0x1c, 0x20, 0x27, 0x1f, 0x7d, 0xdc, 0x20, 0x40, 0xb0, 0x48, 0x10, 0x21, - 0x56, 0xfe, 0x81, 0x05, 0x82, 0x60, 0x0f, 0xc9, 0x21, 0xa8, 0x8f, 0x6e, 0x7e, 0x0c, 0x25, 0x8f, - 0xb3, 0x7b, 0x62, 0xd7, 0xab, 0xdf, 0x7b, 0xf5, 0xaa, 0xea, 0xd5, 0xab, 0xdf, 0x2b, 0x42, 0x9e, - 0x8d, 0x87, 0x34, 0x2c, 0x0f, 0x03, 0x9f, 0xf9, 0x08, 0xd9, 0xbe, 0x75, 0x4c, 0x83, 0x72, 0x78, - 0x4a, 0x82, 0xc1, 0xb1, 0xc3, 0xca, 0x27, 0x1f, 0x16, 0xef, 0x30, 0x67, 0x40, 0x43, 0x46, 0x06, - 0xc3, 0xf7, 0xe3, 0x2f, 0x09, 0x2f, 0xbe, 0x61, 0x8f, 0x02, 0xc2, 0x1c, 0xdf, 0x7b, 0x3f, 0xfa, - 0x50, 0x1d, 0xb7, 0xfa, 0x7e, 0xdf, 0x17, 0x9f, 0xef, 0xf3, 0x2f, 0x29, 0x35, 0x36, 0x61, 0x79, - 0x9f, 0x06, 0xa1, 0xe3, 0x7b, 0xe8, 0x16, 0xa4, 0x1d, 0xcf, 0xa6, 0x2f, 0xd6, 0xb5, 0x92, 0xf6, - 0x20, 0x85, 0x65, 0xc3, 0xf8, 0x6b, 0x0d, 0xf2, 0xa6, 0xe7, 0xf9, 0x4c, 0xd8, 0x0a, 0x11, 0x82, - 0x94, 0x47, 0x06, 0x54, 0x80, 0x72, 0x58, 0x7c, 0xa3, 0x0a, 0x64, 0x5c, 0x72, 0x40, 0xdd, 0x70, - 0x3d, 0x51, 0x4a, 0x3e, 0xc8, 0x6f, 0xfd, 0xb0, 0xfc, 0xaa, 0xcf, 0xe5, 0x29, 0x23, 0xe5, 0x5d, - 0x81, 0xae, 0x79, 0x2c, 0x18, 0x63, 0xa5, 0x5a, 0xfc, 0x31, 0xe4, 0xa7, 0xc4, 0x48, 0x87, 0xe4, - 0x31, 0x1d, 0xab, 0x61, 0xf8, 0x27, 0xf7, 0xef, 0x84, 0xb8, 0x23, 0xba, 0x9e, 0x10, 0x32, 0xd9, - 0xf8, 0x24, 0xf1, 0x48, 0x33, 0xbe, 0x80, 0x1c, 0xa6, 0xa1, 0x3f, 0x0a, 0x2c, 0x1a, 0xa2, 0x1f, - 0x40, 0xce, 0x23, 0x9e, 0xdf, 0xb3, 0x86, 0xa3, 0x50, 0xa8, 0x27, 0xb7, 0x0b, 0x97, 0x17, 0x9b, - 0xd9, 0x06, 0xf1, 0xfc, 0x4a, 0xab, 0x1b, 0xe2, 0x2c, 0xef, 0xae, 0x0c, 0x47, 0x21, 0x7a, 0x1b, - 0x0a, 0x03, 0x3a, 0xf0, 0x83, 0x71, 0xef, 0x60, 0xcc, 0x68, 0x28, 0x0c, 0x27, 0x71, 0x5e, 0xca, - 0xb6, 0xb9, 0xc8, 0xf8, 0x0b, 0x0d, 0x6e, 0x45, 0xb6, 0x31, 0xfd, 0xfd, 0x91, 0x13, 0xd0, 0x01, - 0xf5, 0x58, 0x88, 0x7e, 0x1b, 0x32, 0xae, 0x33, 0x70, 0x98, 0x1c, 0x23, 0xbf, 0xf5, 0xd6, 0xa2, - 0x39, 0xc7, 0x5e, 0x61, 0x05, 0x46, 0x26, 0x14, 0x02, 0x1a, 0xd2, 0xe0, 0x44, 0xae, 0x84, 0x18, - 0xf2, 0x5b, 0x95, 0x67, 0x54, 0x8c, 0x1d, 0xc8, 0xb6, 0x5c, 0xc2, 0x0e, 0xfd, 0x60, 0x80, 0x0c, - 0x28, 0x90, 0xc0, 0x3a, 0x72, 0x18, 0xb5, 0xd8, 0x28, 0x88, 0x76, 0x65, 0x46, 0x86, 0x6e, 0x43, - 0xc2, 0x97, 0x03, 0xe5, 0xb6, 0x33, 0x97, 0x17, 0x9b, 0x89, 0x66, 0x1b, 0x27, 0xfc, 0xd0, 0x78, - 0x0c, 0x37, 0x5a, 0xee, 0xa8, 0xef, 0x78, 0x55, 0x1a, 0x5a, 0x81, 0x33, 0xe4, 0xd6, 0xf9, 0xf6, - 0xf2, 0xe0, 0x8b, 0xb6, 0x97, 0x7f, 0xc7, 0x5b, 0x9e, 0x98, 0x6c, 0xb9, 0xf1, 0x67, 0x09, 0xb8, - 0x51, 0xf3, 0xfa, 0x8e, 0x47, 0xa7, 0xb5, 0xef, 0xc3, 0x2a, 0x15, 0xc2, 0xde, 0x89, 0x0c, 0x2a, - 0x65, 0x67, 0x45, 0x4a, 0xa3, 0x48, 0xab, 0xcf, 0xc5, 0xcb, 0x87, 0x8b, 0xa6, 0xff, 0x8a, 0xf5, - 0x45, 0x51, 0x83, 0x6a, 0xb0, 0x3c, 0x14, 0x93, 0x08, 0xd7, 0x93, 0xc2, 0xd6, 0xfd, 0x45, 0xb6, - 0x5e, 0x99, 0xe7, 0x76, 0xea, 0xeb, 0x8b, 0xcd, 0x25, 0x1c, 0xe9, 0xfe, 0x3a, 0xc1, 0xf7, 0x9f, - 0x1a, 0xac, 0x35, 0x7c, 0x7b, 0x66, 0x1d, 0x8a, 0x90, 0x3d, 0xf2, 0x43, 0x36, 0x75, 0x50, 0xe2, - 0x36, 0x7a, 0x04, 0xd9, 0xa1, 0xda, 0x3e, 0xb5, 0xfb, 0x77, 0x17, 0xbb, 0x2c, 0x31, 0x38, 0x46, - 0xa3, 0xc7, 0x90, 0x0b, 0xa2, 0x98, 0x58, 0x4f, 0xbe, 0x4e, 0xe0, 0x4c, 0xf0, 0xe8, 0x77, 0x20, - 0x23, 0x37, 0x61, 0x3d, 0x25, 0x34, 0xef, 0xbf, 0xd6, 0x9a, 0x63, 0xa5, 0x64, 0xfc, 0x42, 0x03, - 0x1d, 0x93, 0x43, 0xb6, 0x47, 0x07, 0x07, 0x34, 0x68, 0x33, 0xc2, 0x46, 0x21, 0xba, 0x0d, 0x19, - 0x97, 0x12, 0x9b, 0x06, 0x62, 0x92, 0x59, 0xac, 0x5a, 0xa8, 0xcb, 0x83, 0x9c, 0x58, 0x47, 0xe4, - 0xc0, 0x71, 0x1d, 0x36, 0x16, 0xd3, 0x5c, 0x5d, 0xbc, 0xcb, 0xf3, 0x36, 0xcb, 0x78, 0x4a, 0x11, - 0xcf, 0x98, 0x41, 0xeb, 0xb0, 0x3c, 0xa0, 0x61, 0x48, 0xfa, 0x54, 0xcc, 0x3e, 0x87, 0xa3, 0xa6, - 0xf1, 0x18, 0x0a, 0xd3, 0x7a, 0x28, 0x0f, 0xcb, 0xdd, 0xc6, 0xb3, 0x46, 0xf3, 0x79, 0x43, 0x5f, - 0x42, 0x6b, 0x90, 0xef, 0x36, 0x70, 0xcd, 0xac, 0x3c, 0x35, 0xb7, 0x77, 0x6b, 0xba, 0x86, 0x56, - 0x20, 0x37, 0x69, 0x26, 0x8c, 0x9f, 0x69, 0x00, 0x7c, 0x03, 0xd5, 0xa4, 0x3e, 0x81, 0x74, 0xc8, - 0x08, 0x93, 0x1b, 0xb7, 0xba, 0xf5, 0xce, 0x22, 0xaf, 0x27, 0xf0, 0x32, 0xff, 0xa1, 0x58, 0xaa, - 0x4c, 0x7b, 0x98, 0x98, 0xf7, 0x30, 0x2d, 0x90, 0xb3, 0xae, 0x65, 0x21, 0x55, 0xe5, 0x5f, 0x1a, - 0xca, 0x41, 0x1a, 0xd7, 0xcc, 0xea, 0x17, 0x7a, 0x02, 0xe9, 0x50, 0xa8, 0xd6, 0xdb, 0x95, 0x66, - 0xa3, 0x51, 0xab, 0x74, 0x6a, 0x55, 0x3d, 0x69, 0xdc, 0x87, 0x74, 0x7d, 0x40, 0xfa, 0x14, 0xdd, - 0xe5, 0x11, 0x70, 0x48, 0x03, 0xea, 0x59, 0x51, 0x60, 0x4d, 0x04, 0xc6, 0xcf, 0x73, 0x90, 0xde, - 0xf3, 0x47, 0x1e, 0x43, 0x5b, 0x53, 0xa7, 0x78, 0x75, 0x6b, 0x63, 0xd1, 0x14, 0x04, 0xb0, 0xdc, - 0x19, 0x0f, 0xa9, 0x3a, 0xe5, 0xb7, 0x21, 0x23, 0x63, 0x45, 0xb9, 0xae, 0x5a, 0x5c, 0xce, 0x48, - 0xd0, 0xa7, 0x4c, 0x2d, 0xba, 0x6a, 0xa1, 0x07, 0x90, 0x0d, 0x28, 0xb1, 0x7d, 0xcf, 0x1d, 0x8b, - 0x90, 0xca, 0xca, 0x34, 0x8b, 0x29, 0xb1, 0x9b, 0x9e, 0x3b, 0xc6, 0x71, 0x2f, 0x7a, 0x0a, 0x85, - 0x03, 0xc7, 0xb3, 0x7b, 0xfe, 0x50, 0xe6, 0xbc, 0xf4, 0xd5, 0x01, 0x28, 0xbd, 0xda, 0x76, 0x3c, - 0xbb, 0x29, 0xc1, 0x38, 0x7f, 0x30, 0x69, 0xa0, 0x06, 0xac, 0x9e, 0xf8, 0xee, 0x68, 0x40, 0x63, - 0x5b, 0x19, 0x61, 0xeb, 0xdd, 0xab, 0x6d, 0xed, 0x0b, 0x7c, 0x64, 0x6d, 0xe5, 0x64, 0xba, 0x89, - 0x9e, 0xc1, 0x0a, 0x1b, 0x0c, 0x0f, 0xc3, 0xd8, 0xdc, 0xb2, 0x30, 0xf7, 0xfd, 0x6b, 0x16, 0x8c, - 0xc3, 0x23, 0x6b, 0x05, 0x36, 0xd5, 0x2a, 0xfe, 0x49, 0x12, 0xf2, 0x53, 0x9e, 0xa3, 0x36, 0xe4, - 0x87, 0x81, 0x3f, 0x24, 0x7d, 0x91, 0xb7, 0xd5, 0x5e, 0x7c, 0xf8, 0x5a, 0xb3, 0x2e, 0xb7, 0x26, - 0x8a, 0x78, 0xda, 0x8a, 0x71, 0x9e, 0x80, 0xfc, 0x54, 0x27, 0x7a, 0x08, 0x59, 0xdc, 0xc2, 0xf5, - 0x7d, 0xb3, 0x53, 0xd3, 0x97, 0x8a, 0x77, 0xcf, 0xce, 0x4b, 0xeb, 0xc2, 0xda, 0xb4, 0x81, 0x56, - 0xe0, 0x9c, 0xf0, 0xd0, 0x7b, 0x00, 0xcb, 0x11, 0x54, 0x2b, 0xbe, 0x79, 0x76, 0x5e, 0x7a, 0x63, - 0x1e, 0x3a, 0x85, 0xc4, 0xed, 0xa7, 0x26, 0xae, 0x55, 0xf5, 0xc4, 0x62, 0x24, 0x6e, 0x1f, 0x91, - 0x80, 0xda, 0xe8, 0xfb, 0x90, 0x51, 0xc0, 0x64, 0xb1, 0x78, 0x76, 0x5e, 0xba, 0x3d, 0x0f, 0x9c, - 0xe0, 0x70, 0x7b, 0xd7, 0xdc, 0xaf, 0xe9, 0xa9, 0xc5, 0x38, 0xdc, 0x76, 0xc9, 0x09, 0x45, 0xef, - 0x40, 0x5a, 0xc2, 0xd2, 0xc5, 0x3b, 0x67, 0xe7, 0xa5, 0xef, 0xbd, 0x62, 0x8e, 0xa3, 0x8a, 0xeb, - 0x7f, 0xfe, 0x37, 0x1b, 0x4b, 0xff, 0xf8, 0xb7, 0x1b, 0xfa, 0x7c, 0x77, 0xf1, 0x7f, 0x35, 0x58, - 0x99, 0xd9, 0x72, 0x64, 0x40, 0xc6, 0xf3, 0x2d, 0x7f, 0x28, 0xd3, 0x79, 0x76, 0x1b, 0x2e, 0x2f, - 0x36, 0x33, 0x0d, 0xbf, 0xe2, 0x0f, 0xc7, 0x58, 0xf5, 0xa0, 0x67, 0x73, 0x17, 0xd2, 0x47, 0xaf, - 0x19, 0x4f, 0x0b, 0xaf, 0xa4, 0x4f, 0x61, 0xc5, 0x0e, 0x9c, 0x13, 0x1a, 0xf4, 0x2c, 0xdf, 0x3b, - 0x74, 0xfa, 0x2a, 0x55, 0x17, 0x17, 0xd9, 0xac, 0x0a, 0x20, 0x2e, 0x48, 0x85, 0x8a, 0xc0, 0xff, - 0x1a, 0x97, 0x51, 0x71, 0x1f, 0x0a, 0xd3, 0x11, 0x8a, 0xde, 0x02, 0x08, 0x9d, 0x3f, 0xa0, 0x8a, - 0xdf, 0x08, 0x36, 0x84, 0x73, 0x5c, 0x22, 0xd8, 0x0d, 0x7a, 0x17, 0x52, 0x03, 0xdf, 0x96, 0x76, - 0xd2, 0xdb, 0x37, 0xf9, 0x9d, 0xf8, 0xaf, 0x17, 0x9b, 0x79, 0x3f, 0x2c, 0xef, 0x38, 0x2e, 0xdd, - 0xf3, 0x6d, 0x8a, 0x05, 0xc0, 0x38, 0x81, 0x14, 0x4f, 0x15, 0xe8, 0x4d, 0x48, 0x6d, 0xd7, 0x1b, - 0x55, 0x7d, 0xa9, 0x78, 0xe3, 0xec, 0xbc, 0xb4, 0x22, 0x96, 0x84, 0x77, 0xf0, 0xd8, 0x45, 0x9b, - 0x90, 0xd9, 0x6f, 0xee, 0x76, 0xf7, 0x78, 0x78, 0xdd, 0x3c, 0x3b, 0x2f, 0xad, 0xc5, 0xdd, 0x72, - 0xd1, 0xd0, 0x5b, 0x90, 0xee, 0xec, 0xb5, 0x76, 0xda, 0x7a, 0xa2, 0x88, 0xce, 0xce, 0x4b, 0xab, - 0x71, 0xbf, 0xf0, 0xb9, 0x78, 0x43, 0xed, 0x6a, 0x2e, 0x96, 0x1b, 0xff, 0x93, 0x80, 0x15, 0xcc, - 0xf9, 0x6d, 0xc0, 0x5a, 0xbe, 0xeb, 0x58, 0x63, 0xd4, 0x82, 0x9c, 0xe5, 0x7b, 0xb6, 0x33, 0x75, - 0xa6, 0xb6, 0xae, 0xb8, 0x04, 0x27, 0x5a, 0x51, 0xab, 0x12, 0x69, 0xe2, 0x89, 0x11, 0xb4, 0x05, - 0x69, 0x9b, 0xba, 0x64, 0x7c, 0xdd, 0x6d, 0x5c, 0x55, 0x5c, 0x1a, 0x4b, 0xa8, 0x60, 0x8e, 0xe4, - 0x45, 0x8f, 0x30, 0x46, 0x07, 0x43, 0x26, 0x6f, 0xe3, 0x14, 0xce, 0x0f, 0xc8, 0x0b, 0x53, 0x89, - 0xd0, 0x8f, 0x20, 0x73, 0xea, 0x78, 0xb6, 0x7f, 0xaa, 0x2e, 0xdc, 0xeb, 0xed, 0x2a, 0xac, 0x71, - 0xc6, 0xef, 0xd9, 0x39, 0x67, 0xf9, 0xaa, 0x37, 0x9a, 0x8d, 0x5a, 0xb4, 0xea, 0xaa, 0xbf, 0xe9, - 0x35, 0x7c, 0x8f, 0x9f, 0x18, 0x68, 0x36, 0x7a, 0x3b, 0x66, 0x7d, 0xb7, 0x8b, 0xf9, 0xca, 0xdf, - 0x3a, 0x3b, 0x2f, 0xe9, 0x31, 0x64, 0x87, 0x38, 0x2e, 0x27, 0x81, 0x77, 0x20, 0x69, 0x36, 0xbe, - 0xd0, 0x13, 0x45, 0xfd, 0xec, 0xbc, 0x54, 0x88, 0xbb, 0x4d, 0x6f, 0x3c, 0x39, 0x4c, 0xf3, 0xe3, - 0x1a, 0xff, 0x9e, 0x80, 0x42, 0x77, 0x68, 0x13, 0x46, 0x65, 0x64, 0xa2, 0x12, 0xe4, 0x87, 0x24, - 0x20, 0xae, 0x4b, 0x5d, 0x27, 0x1c, 0xa8, 0x42, 0x61, 0x5a, 0x84, 0x1e, 0x7d, 0x87, 0xc5, 0x54, - 0x24, 0x4c, 0x2d, 0x69, 0x17, 0x56, 0x0f, 0xa5, 0xb3, 0x3d, 0x62, 0x89, 0xdd, 0x4d, 0x8a, 0xdd, - 0x2d, 0x2f, 0x32, 0x31, 0xed, 0x55, 0x59, 0xcd, 0xd1, 0x14, 0x5a, 0x78, 0xe5, 0x70, 0xba, 0x89, - 0x3e, 0x86, 0xe5, 0x81, 0xef, 0x39, 0xcc, 0x0f, 0x5e, 0x6b, 0x1f, 0x22, 0x30, 0x7a, 0x08, 0x37, - 0xf8, 0x0e, 0x47, 0x2e, 0x89, 0x6e, 0x71, 0x73, 0x25, 0xf0, 0xda, 0x80, 0xbc, 0x50, 0x63, 0x62, - 0x2e, 0x36, 0x3e, 0x86, 0x95, 0x19, 0x1f, 0xf8, 0x6d, 0xde, 0x32, 0xbb, 0xed, 0x9a, 0xbe, 0x84, - 0x0a, 0x90, 0xad, 0x34, 0x1b, 0x9d, 0x7a, 0xa3, 0xcb, 0xa9, 0x47, 0x01, 0xb2, 0xb8, 0xb9, 0xbb, - 0xbb, 0x6d, 0x56, 0x9e, 0xe9, 0x09, 0xe3, 0xbf, 0xe3, 0xf5, 0x55, 0xdc, 0x63, 0x7b, 0x96, 0x7b, - 0xbc, 0x77, 0xf5, 0xd4, 0x15, 0xfb, 0x98, 0x34, 0x62, 0x0e, 0xf2, 0x13, 0x00, 0xb1, 0x8d, 0xd4, - 0xee, 0x11, 0x76, 0x5d, 0x7d, 0xd1, 0x89, 0x2a, 0x47, 0x9c, 0x53, 0x0a, 0x26, 0x43, 0x9f, 0x41, - 0xc1, 0xf2, 0x07, 0x43, 0x97, 0x2a, 0xfd, 0xe4, 0xeb, 0xe8, 0xe7, 0x63, 0x15, 0x93, 0x4d, 0x73, - 0xa0, 0xd4, 0x2c, 0x07, 0xfa, 0x53, 0x0d, 0xf2, 0x53, 0x0e, 0xcf, 0x52, 0xa1, 0x02, 0x64, 0xbb, - 0xad, 0xaa, 0xd9, 0xa9, 0x37, 0x9e, 0xe8, 0x1a, 0x02, 0xc8, 0x88, 0x05, 0xac, 0xea, 0x09, 0x4e, - 0xd7, 0x2a, 0xcd, 0xbd, 0xd6, 0x6e, 0x4d, 0x90, 0x21, 0x74, 0x0b, 0xf4, 0x68, 0x09, 0x7b, 0xed, - 0x8e, 0x89, 0xb9, 0x34, 0x85, 0x6e, 0xc2, 0x5a, 0x2c, 0x55, 0x9a, 0x69, 0x74, 0x1b, 0x50, 0x2c, - 0x9c, 0x98, 0xc8, 0x18, 0x7f, 0x04, 0x6b, 0x15, 0xdf, 0x63, 0xc4, 0xf1, 0x62, 0x2a, 0xbb, 0xc5, - 0xe7, 0xad, 0x44, 0x3d, 0xc7, 0x96, 0xd9, 0x76, 0x7b, 0xed, 0xf2, 0x62, 0x33, 0x1f, 0x43, 0xeb, - 0x55, 0x3e, 0xd3, 0xa8, 0x61, 0xf3, 0x33, 0x35, 0x74, 0x6c, 0x95, 0x3c, 0x97, 0x2f, 0x2f, 0x36, - 0x93, 0xad, 0x7a, 0x15, 0x73, 0x19, 0x7a, 0x13, 0x72, 0xf4, 0x85, 0xc3, 0x7a, 0x16, 0xcf, 0xae, - 0x7c, 0x0d, 0xd3, 0x38, 0xcb, 0x05, 0x15, 0x9e, 0x4c, 0xff, 0x38, 0x01, 0xd0, 0x21, 0xe1, 0xb1, - 0x1a, 0xfa, 0x31, 0xe4, 0xe2, 0x22, 0xfe, 0xba, 0x62, 0x72, 0x6a, 0xbf, 0x62, 0x3c, 0xfa, 0x28, - 0x8a, 0x18, 0xc9, 0xb1, 0x17, 0x2b, 0xaa, 0xb1, 0x16, 0xd1, 0xd4, 0x59, 0x22, 0xcd, 0xef, 0x1a, - 0x1a, 0x04, 0x6a, 0xe3, 0xf8, 0x27, 0xaa, 0x88, 0x7c, 0x2b, 0xe7, 0xac, 0x98, 0xdb, 0xbd, 0x45, - 0x83, 0xcc, 0x2d, 0xe8, 0xd3, 0x25, 0x3c, 0xd1, 0xdb, 0xd6, 0x61, 0x35, 0x18, 0x79, 0xdc, 0xeb, - 0x5e, 0x28, 0xba, 0x0d, 0x07, 0xde, 0x68, 0x50, 0x76, 0xea, 0x07, 0xc7, 0x26, 0x63, 0xc4, 0x3a, - 0xe2, 0x45, 0xb5, 0x4a, 0x32, 0x13, 0xc2, 0xa9, 0xcd, 0x10, 0xce, 0x75, 0x58, 0x26, 0xae, 0x43, - 0x42, 0x2a, 0x6f, 0xe9, 0x1c, 0x8e, 0x9a, 0x9c, 0x16, 0x13, 0xdb, 0x0e, 0x68, 0x18, 0x52, 0x59, - 0x06, 0xe6, 0xf0, 0x44, 0x60, 0xfc, 0x73, 0x02, 0xa0, 0xde, 0x32, 0xf7, 0x94, 0xf9, 0x2a, 0x64, - 0x0e, 0xc9, 0xc0, 0x71, 0xc7, 0xd7, 0x1d, 0xb2, 0x09, 0xbe, 0x6c, 0x4a, 0x43, 0x3b, 0x42, 0x07, - 0x2b, 0x5d, 0xc1, 0x96, 0x47, 0x07, 0x1e, 0x65, 0x31, 0x5b, 0x16, 0x2d, 0x7e, 0x35, 0x07, 0xc4, - 0x8b, 0x17, 0x56, 0x36, 0xb8, 0xeb, 0x7d, 0xc2, 0xe8, 0x29, 0x19, 0x47, 0x67, 0x42, 0x35, 0xd1, - 0x53, 0xce, 0xa2, 0x79, 0x71, 0x4f, 0xed, 0xf5, 0xb4, 0xe0, 0x1e, 0xdf, 0xe6, 0x0f, 0x56, 0x70, - 0x49, 0x3a, 0x62, 0xed, 0xe2, 0x63, 0x71, 0x53, 0x4e, 0xba, 0xbe, 0x53, 0x11, 0xfb, 0x01, 0xac, - 0xcc, 0xcc, 0xf3, 0x95, 0x32, 0xa5, 0xde, 0xda, 0xff, 0x91, 0x9e, 0x52, 0x5f, 0x1f, 0xeb, 0x19, - 0xe3, 0xbf, 0x34, 0x80, 0x96, 0x1f, 0x44, 0x9b, 0xb6, 0xf8, 0x59, 0x28, 0x2b, 0x1e, 0x99, 0x2c, - 0xdf, 0x55, 0xe1, 0xb9, 0x90, 0xa7, 0x4f, 0xac, 0x70, 0xda, 0x2b, 0xe0, 0x38, 0x56, 0x44, 0x9b, - 0x90, 0x97, 0xfb, 0xdf, 0x1b, 0xfa, 0x81, 0xcc, 0x47, 0x2b, 0x18, 0xa4, 0x88, 0x6b, 0xa2, 0xfb, - 0xb0, 0x3a, 0x1c, 0x1d, 0xb8, 0x4e, 0x78, 0x44, 0x6d, 0x89, 0x49, 0x09, 0xcc, 0x4a, 0x2c, 0xe5, - 0x30, 0xa3, 0x0a, 0xd9, 0xc8, 0x3a, 0x5a, 0x87, 0x64, 0xa7, 0xd2, 0xd2, 0x97, 0x8a, 0x6b, 0x67, - 0xe7, 0xa5, 0x7c, 0x24, 0xee, 0x54, 0x5a, 0xbc, 0xa7, 0x5b, 0x6d, 0xe9, 0xda, 0x6c, 0x4f, 0xb7, - 0xda, 0x2a, 0xa6, 0xf8, 0x2d, 0x69, 0xfc, 0x95, 0x06, 0x19, 0xc9, 0xd9, 0x16, 0xce, 0xd8, 0x84, - 0xe5, 0xa8, 0x92, 0x90, 0x44, 0xf2, 0xdd, 0xab, 0x49, 0x5f, 0x59, 0x71, 0x34, 0xb9, 0x8f, 0x91, - 0x5e, 0xf1, 0x13, 0x28, 0x4c, 0x77, 0x7c, 0xa7, 0x5d, 0xfc, 0x43, 0xc8, 0xf3, 0x40, 0x89, 0xc8, - 0xdf, 0x16, 0x64, 0x24, 0xaf, 0x54, 0x59, 0xe5, 0x3a, 0x06, 0xaa, 0x90, 0xe8, 0x11, 0x2c, 0x4b, - 0xd6, 0x1a, 0xbd, 0xa7, 0x6c, 0x5c, 0x1f, 0x8e, 0x38, 0x82, 0x1b, 0x9f, 0x42, 0xaa, 0x45, 0x69, - 0x80, 0xee, 0xc1, 0xb2, 0xe7, 0xdb, 0x74, 0x92, 0x44, 0x15, 0xe1, 0xb6, 0x69, 0xbd, 0xca, 0x09, - 0xb7, 0x4d, 0xeb, 0x36, 0x5f, 0x3c, 0x7e, 0x40, 0xa3, 0x27, 0x25, 0xfe, 0x6d, 0x74, 0xa0, 0xf0, - 0x9c, 0x3a, 0xfd, 0x23, 0x46, 0x6d, 0x61, 0xe8, 0x3d, 0x48, 0x0d, 0x69, 0xec, 0xfc, 0xfa, 0xc2, - 0xd0, 0xa1, 0x34, 0xc0, 0x02, 0xc5, 0x0f, 0xe4, 0xa9, 0xd0, 0x56, 0xaf, 0x78, 0xaa, 0x65, 0xfc, - 0x7d, 0x02, 0x56, 0xeb, 0x61, 0x38, 0x22, 0x9e, 0x15, 0xdd, 0xb2, 0x3f, 0x9d, 0xbd, 0x65, 0x1f, - 0x2c, 0x9c, 0xe1, 0x8c, 0xca, 0x6c, 0x95, 0xaf, 0x92, 0x64, 0x22, 0x4e, 0x92, 0xc6, 0xd7, 0x5a, - 0x54, 0xde, 0xdf, 0x9f, 0x3a, 0x37, 0xc5, 0xf5, 0xb3, 0xf3, 0xd2, 0xad, 0x69, 0x4b, 0xb4, 0xeb, - 0x1d, 0x7b, 0xfe, 0xa9, 0x87, 0xde, 0xe6, 0xe5, 0x7e, 0xa3, 0xf6, 0x5c, 0xd7, 0x8a, 0xb7, 0xcf, - 0xce, 0x4b, 0x68, 0x06, 0x84, 0xa9, 0x47, 0x4f, 0xb9, 0xa5, 0x56, 0xad, 0x51, 0xe5, 0xf7, 0x61, - 0x62, 0x81, 0xa5, 0x16, 0xf5, 0x6c, 0xc7, 0xeb, 0xa3, 0x7b, 0x90, 0xa9, 0xb7, 0xdb, 0x5d, 0x51, - 0x80, 0xbd, 0x71, 0x76, 0x5e, 0xba, 0x39, 0x83, 0xe2, 0x0d, 0x6a, 0x73, 0x10, 0x27, 0x88, 0xfc, - 0xa6, 0x5c, 0x00, 0xe2, 0xdc, 0x85, 0xda, 0x2a, 0xc2, 0xff, 0x2d, 0x01, 0xba, 0x69, 0x59, 0x74, - 0xc8, 0x78, 0xbf, 0x22, 0xdd, 0x1d, 0xc8, 0x0e, 0xf9, 0x97, 0x23, 0x8a, 0x08, 0x1e, 0x16, 0x8f, - 0x16, 0x3e, 0xf1, 0xce, 0xe9, 0x95, 0xb1, 0xef, 0x52, 0xd3, 0x1e, 0x38, 0x61, 0xc8, 0x8b, 0x4b, - 0x21, 0xc3, 0xb1, 0xa5, 0xe2, 0x2f, 0x35, 0xb8, 0xb9, 0x00, 0x81, 0x3e, 0x80, 0x54, 0xe0, 0xbb, - 0xd1, 0xf6, 0xdc, 0xbd, 0xea, 0x01, 0x86, 0xab, 0x62, 0x81, 0x44, 0x1b, 0x00, 0x64, 0xc4, 0x7c, - 0x22, 0xc6, 0x17, 0x1b, 0x93, 0xc5, 0x53, 0x12, 0xf4, 0x1c, 0x32, 0x21, 0xb5, 0x02, 0x1a, 0xf1, - 0x99, 0x4f, 0xff, 0xbf, 0xde, 0x97, 0xdb, 0xc2, 0x0c, 0x56, 0xe6, 0x8a, 0x65, 0xc8, 0x48, 0x09, - 0x8f, 0x68, 0x9b, 0x30, 0x22, 0x9c, 0x2e, 0x60, 0xf1, 0xcd, 0x03, 0x85, 0xb8, 0xfd, 0x28, 0x50, - 0x88, 0xdb, 0x37, 0x7e, 0x96, 0x00, 0xa8, 0xbd, 0x60, 0x34, 0xf0, 0x88, 0x5b, 0x31, 0x51, 0x6d, - 0x2a, 0x43, 0xca, 0xd9, 0xfe, 0x60, 0xe1, 0xb3, 0x5c, 0xac, 0x51, 0xae, 0x98, 0x0b, 0x72, 0xe4, - 0x1d, 0x48, 0x8e, 0x02, 0x57, 0x3d, 0xf1, 0x0a, 0x22, 0xd2, 0xc5, 0xbb, 0x98, 0xcb, 0x50, 0x6d, - 0x92, 0x91, 0x92, 0x57, 0xbf, 0xcd, 0x4f, 0x0d, 0xf0, 0x9b, 0xcf, 0x4a, 0xef, 0x01, 0x4c, 0xbc, - 0x46, 0x1b, 0x90, 0xae, 0xec, 0xb4, 0xdb, 0xbb, 0xfa, 0x92, 0xac, 0x11, 0x27, 0x5d, 0x42, 0x6c, - 0xfc, 0x9d, 0x06, 0xd9, 0x8a, 0xa9, 0x6e, 0x95, 0x1d, 0xd0, 0x45, 0x2e, 0xb1, 0x68, 0xc0, 0x7a, - 0xf4, 0xc5, 0xd0, 0x09, 0xc6, 0x2a, 0x1d, 0x5c, 0xcf, 0xe2, 0x57, 0xb9, 0x56, 0x85, 0x06, 0xac, - 0x26, 0x74, 0x10, 0x86, 0x02, 0x55, 0x53, 0xec, 0x59, 0x24, 0x4a, 0xce, 0x1b, 0xd7, 0x2f, 0x85, - 0x64, 0x7f, 0x93, 0x76, 0x88, 0xf3, 0x91, 0x91, 0x0a, 0x09, 0x8d, 0x7d, 0xb8, 0xd9, 0x0c, 0xac, - 0x23, 0x1a, 0x32, 0x39, 0xa8, 0x72, 0xf9, 0x53, 0xb8, 0xcb, 0x48, 0x78, 0xdc, 0x3b, 0x72, 0x42, - 0xe6, 0x07, 0xe3, 0x5e, 0x40, 0x19, 0xf5, 0x78, 0x7f, 0x4f, 0xfc, 0x03, 0xa0, 0x6a, 0xf0, 0x3b, - 0x1c, 0xf3, 0x54, 0x42, 0x70, 0x84, 0xd8, 0xe5, 0x00, 0xa3, 0x0e, 0x05, 0x4e, 0xd8, 0xaa, 0xf4, - 0x90, 0x8c, 0x5c, 0x16, 0xa2, 0x1f, 0x03, 0xb8, 0x7e, 0xbf, 0xf7, 0xda, 0x99, 0x3c, 0xe7, 0xfa, - 0x7d, 0xf9, 0x69, 0xfc, 0x2e, 0xe8, 0x55, 0x27, 0x1c, 0x12, 0x66, 0x1d, 0x45, 0x8f, 0x0b, 0xe8, - 0x09, 0xe8, 0x47, 0x94, 0x04, 0xec, 0x80, 0x12, 0xd6, 0x1b, 0xd2, 0xc0, 0xf1, 0xed, 0xd7, 0x5a, - 0xd2, 0xb5, 0x58, 0xab, 0x25, 0x94, 0x8c, 0x5f, 0x69, 0x00, 0x98, 0x1c, 0x46, 0x04, 0xe0, 0x87, - 0x70, 0x23, 0xf4, 0xc8, 0x30, 0x3c, 0xf2, 0x59, 0xcf, 0xf1, 0x18, 0x0d, 0x4e, 0x88, 0xab, 0x0a, - 0x44, 0x3d, 0xea, 0xa8, 0x2b, 0x39, 0x7a, 0x0f, 0xd0, 0x31, 0xa5, 0xc3, 0x9e, 0xef, 0xda, 0xbd, - 0xa8, 0x53, 0xfe, 0x45, 0x91, 0xc2, 0x3a, 0xef, 0x69, 0xba, 0x76, 0x3b, 0x92, 0xa3, 0x6d, 0xd8, - 0xe0, 0x2b, 0x40, 0x3d, 0x16, 0x38, 0x34, 0xec, 0x1d, 0xfa, 0x41, 0x2f, 0x74, 0xfd, 0xd3, 0xde, - 0xa1, 0xef, 0xba, 0xfe, 0x29, 0x0d, 0xa2, 0xf2, 0xbb, 0xe8, 0xfa, 0xfd, 0x9a, 0x04, 0xed, 0xf8, - 0x41, 0xdb, 0xf5, 0x4f, 0x77, 0x22, 0x04, 0x67, 0x09, 0x93, 0x69, 0x33, 0xc7, 0x3a, 0x8e, 0x58, - 0x42, 0x2c, 0xed, 0x38, 0xd6, 0x31, 0xba, 0x07, 0x2b, 0xd4, 0xa5, 0xa2, 0x88, 0x93, 0xa8, 0xb4, - 0x40, 0x15, 0x22, 0x21, 0x07, 0x19, 0xbf, 0x05, 0xb9, 0x96, 0x4b, 0x2c, 0xf1, 0x47, 0x10, 0x2f, - 0x89, 0x2d, 0xdf, 0xe3, 0x41, 0xe0, 0x78, 0x4c, 0x66, 0xc7, 0x1c, 0x9e, 0x16, 0x19, 0x3f, 0x05, - 0xf8, 0xdc, 0x77, 0xbc, 0x8e, 0x7f, 0x4c, 0x3d, 0xf1, 0x66, 0xce, 0x59, 0xaf, 0xda, 0xca, 0x1c, - 0x56, 0x2d, 0xc1, 0xc9, 0x89, 0x47, 0xfa, 0x34, 0x88, 0x9f, 0x8e, 0x65, 0x93, 0x5f, 0x2e, 0x19, - 0xec, 0xfb, 0xac, 0x62, 0xa2, 0x12, 0x64, 0x2c, 0xd2, 0x8b, 0x4e, 0x5e, 0x61, 0x3b, 0x77, 0x79, - 0xb1, 0x99, 0xae, 0x98, 0xcf, 0xe8, 0x18, 0xa7, 0x2d, 0xf2, 0x8c, 0x8e, 0xf9, 0xed, 0x6b, 0x11, - 0x71, 0x5e, 0x84, 0x99, 0x82, 0xbc, 0x7d, 0x2b, 0x26, 0x3f, 0x0c, 0x38, 0x63, 0x11, 0xfe, 0x8b, - 0x3e, 0x80, 0x82, 0x02, 0xf5, 0x8e, 0x48, 0x78, 0x24, 0xb9, 0xea, 0xf6, 0xea, 0xe5, 0xc5, 0x26, - 0x48, 0xe4, 0x53, 0x12, 0x1e, 0x61, 0x90, 0x68, 0xfe, 0x8d, 0x6a, 0x90, 0xff, 0xd2, 0x77, 0xbc, - 0x1e, 0x13, 0x93, 0x50, 0x95, 0xf4, 0xc2, 0xf3, 0x33, 0x99, 0xaa, 0x2a, 0xef, 0xe1, 0xcb, 0x58, - 0x62, 0xfc, 0x8b, 0x06, 0x79, 0x6e, 0xd3, 0x39, 0x74, 0x2c, 0x7e, 0x5b, 0x7e, 0xf7, 0x4c, 0x7f, - 0x07, 0x92, 0x56, 0x18, 0xa8, 0xb9, 0x89, 0x54, 0x57, 0x69, 0x63, 0xcc, 0x65, 0xe8, 0x33, 0xc8, - 0xc8, 0xe2, 0x42, 0x25, 0x79, 0xe3, 0xdb, 0xef, 0x75, 0xe5, 0xa2, 0xd2, 0x13, 0x7b, 0x39, 0xf1, - 0x4e, 0xcc, 0xb2, 0x80, 0xa7, 0x45, 0xe8, 0x36, 0x24, 0x2c, 0x4f, 0x04, 0x85, 0xfa, 0x2f, 0xad, - 0xd2, 0xc0, 0x09, 0xcb, 0x33, 0xfe, 0x49, 0x83, 0x95, 0x9a, 0x67, 0x05, 0x63, 0x91, 0x24, 0xf9, - 0x46, 0xdc, 0x85, 0x5c, 0x38, 0x3a, 0x08, 0xc7, 0x21, 0xa3, 0x83, 0xe8, 0xa9, 0x3e, 0x16, 0xa0, - 0x3a, 0xe4, 0x88, 0xdb, 0xf7, 0x03, 0x87, 0x1d, 0x0d, 0x14, 0x37, 0x5e, 0x9c, 0x98, 0xa7, 0x6d, - 0x96, 0xcd, 0x48, 0x05, 0x4f, 0xb4, 0xa3, 0x54, 0x9c, 0x14, 0xce, 0x8a, 0x54, 0xfc, 0x36, 0x14, - 0x5c, 0x32, 0xe0, 0x54, 0xb8, 0xc7, 0x4b, 0x2e, 0x31, 0x8f, 0x14, 0xce, 0x2b, 0x19, 0x2f, 0x23, - 0x0d, 0x03, 0x72, 0xb1, 0x31, 0xb4, 0x06, 0x79, 0xb3, 0xd6, 0xee, 0x7d, 0xb8, 0xf5, 0xa8, 0xf7, - 0xa4, 0xb2, 0xa7, 0x2f, 0x29, 0x26, 0xf0, 0x0f, 0x1a, 0xac, 0xec, 0xc9, 0x18, 0x54, 0xc4, 0xe9, - 0x1e, 0x2c, 0x07, 0xe4, 0x90, 0x45, 0xd4, 0x2e, 0x25, 0x83, 0x8b, 0x27, 0x01, 0x4e, 0xed, 0x78, - 0xd7, 0x62, 0x6a, 0x37, 0xf5, 0x47, 0x51, 0xf2, 0xda, 0x3f, 0x8a, 0x52, 0xbf, 0x91, 0x3f, 0x8a, - 0x8c, 0xbf, 0xd4, 0x60, 0x4d, 0x5d, 0xd4, 0xd1, 0x9f, 0x23, 0x0b, 0xe9, 0xfa, 0x4f, 0xe2, 0xe7, - 0xcf, 0xe4, 0x55, 0x3c, 0x70, 0xce, 0x4c, 0x79, 0xf2, 0x26, 0x7a, 0xd5, 0x1f, 0x23, 0xc6, 0x1d, - 0x48, 0x71, 0x14, 0xaf, 0x95, 0x76, 0xea, 0xbb, 0x35, 0x7d, 0x09, 0x2d, 0x43, 0xb2, 0xd6, 0xd8, - 0xd7, 0xb5, 0x87, 0xbf, 0x4a, 0x42, 0x2e, 0xae, 0xc6, 0x79, 0x2c, 0x73, 0x0a, 0xb8, 0x24, 0xdf, - 0xe4, 0x62, 0x79, 0x43, 0x90, 0xbf, 0x9c, 0xb9, 0xbb, 0xdb, 0xac, 0x98, 0x9d, 0x5a, 0x55, 0xff, - 0x4c, 0x72, 0xc4, 0x18, 0x60, 0xba, 0xae, 0xcf, 0xa3, 0xd1, 0x46, 0xc6, 0x84, 0x23, 0xbe, 0x54, - 0x2f, 0x7f, 0x31, 0x2a, 0x22, 0x88, 0xef, 0x40, 0xd6, 0x6c, 0xb7, 0xeb, 0x4f, 0x1a, 0xb5, 0xaa, - 0xfe, 0x95, 0x56, 0xfc, 0xde, 0xd9, 0x79, 0xe9, 0xc6, 0xc4, 0x54, 0x18, 0x3a, 0x7d, 0x8f, 0xda, - 0x02, 0x55, 0xa9, 0xd4, 0x5a, 0x7c, 0xbc, 0x97, 0x89, 0x79, 0x94, 0x60, 0x46, 0xe2, 0x15, 0x3f, - 0xd7, 0xc2, 0xb5, 0x96, 0x89, 0xf9, 0x88, 0x5f, 0x25, 0xe6, 0xfc, 0x6a, 0x05, 0x74, 0x48, 0x02, - 0x3e, 0xe6, 0x46, 0xf4, 0x6f, 0xd6, 0xcb, 0xa4, 0x7c, 0xe9, 0x9d, 0x3c, 0x41, 0x50, 0x62, 0x8f, - 0xf9, 0x68, 0xe2, 0xe9, 0x46, 0x98, 0x49, 0xce, 0x8d, 0xd6, 0x66, 0x24, 0x60, 0xdc, 0x8a, 0x01, - 0xcb, 0xb8, 0xdb, 0x68, 0x88, 0xd9, 0xa5, 0xe6, 0x66, 0x87, 0x47, 0x9e, 0xc7, 0x31, 0xf7, 0x21, - 0x1b, 0xbd, 0xec, 0xe8, 0x5f, 0xa5, 0xe6, 0x1c, 0xaa, 0x44, 0xcf, 0x52, 0x62, 0xc0, 0xa7, 0xdd, - 0x8e, 0xf8, 0xb3, 0xed, 0x65, 0x7a, 0x7e, 0xc0, 0xa3, 0x11, 0xb3, 0x39, 0x2b, 0x2f, 0xc5, 0x34, - 0xf9, 0xab, 0xb4, 0x64, 0x27, 0x31, 0x46, 0x72, 0x64, 0x6e, 0x07, 0xd7, 0x3e, 0x97, 0xff, 0xcb, - 0xbd, 0xcc, 0xcc, 0xd9, 0xc1, 0xf4, 0x4b, 0x6a, 0x31, 0x6a, 0x4f, 0x1e, 0xb2, 0xe3, 0xae, 0x87, - 0xbf, 0x07, 0xd9, 0x28, 0x93, 0xa1, 0x0d, 0xc8, 0x3c, 0x6f, 0xe2, 0x67, 0x35, 0xac, 0x2f, 0xc9, - 0xd5, 0x89, 0x7a, 0x9e, 0xcb, 0xab, 0xa0, 0x04, 0xcb, 0x7b, 0x66, 0xc3, 0x7c, 0x52, 0xc3, 0xd1, - 0x43, 0x7a, 0x04, 0x50, 0xc7, 0xb1, 0xa8, 0xab, 0x01, 0x62, 0x9b, 0x0f, 0x3f, 0x07, 0x90, 0xa1, - 0x2a, 0x9e, 0xe9, 0x0d, 0xc8, 0x55, 0x9a, 0x8d, 0x8e, 0x59, 0x6f, 0x88, 0x41, 0x24, 0xd1, 0x8a, - 0x1f, 0x68, 0x24, 0x61, 0x5d, 0x87, 0x54, 0xa3, 0x59, 0xad, 0xe9, 0x5a, 0x71, 0xf5, 0xec, 0xbc, - 0x24, 0xff, 0x01, 0x15, 0x3d, 0xdb, 0x77, 0xbf, 0xfe, 0x66, 0x63, 0xe9, 0x17, 0xdf, 0x6c, 0x2c, - 0xfd, 0xf2, 0x9b, 0x0d, 0xed, 0xe5, 0xe5, 0x86, 0xf6, 0xf5, 0xe5, 0x86, 0xf6, 0xf3, 0xcb, 0x0d, - 0xed, 0x3f, 0x2e, 0x37, 0xb4, 0x83, 0x8c, 0xa0, 0x9d, 0x1f, 0xfd, 0x5f, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x20, 0xa1, 0x9b, 0x4d, 0xa5, 0x22, 0x00, 0x00, + 0x76, 0x17, 0x3f, 0x45, 0x3e, 0x52, 0x52, 0x4f, 0xcd, 0xec, 0x8c, 0x86, 0x1e, 0x4b, 0x74, 0x8f, + 0x67, 0x3d, 0x3b, 0xeb, 0xd0, 0xb6, 0xbc, 0x31, 0x66, 0x3d, 0xce, 0xda, 0x2d, 0x92, 0x9a, 0xa1, + 0x47, 0x22, 0x89, 0x22, 0x39, 0x03, 0x23, 0x40, 0x88, 0x52, 0x77, 0x89, 0x6a, 0xab, 0xd9, 0xcd, + 0x74, 0x17, 0xa5, 0x61, 0x82, 0x00, 0x93, 0x1c, 0x92, 0x40, 0xa7, 0xdc, 0x03, 0x61, 0x11, 0x24, + 0xc8, 0x2d, 0xc8, 0x31, 0x40, 0x4e, 0x3e, 0xfa, 0xb8, 0x41, 0x80, 0x60, 0x91, 0x20, 0x42, 0xac, + 0xfc, 0x03, 0x0b, 0x04, 0xc1, 0x1e, 0x92, 0x43, 0x50, 0x1f, 0xdd, 0x6c, 0x72, 0x38, 0xb2, 0x9c, + 0xf5, 0x89, 0xac, 0x57, 0xbf, 0xf7, 0xea, 0x55, 0xd5, 0xab, 0x57, 0xbf, 0x57, 0x0d, 0x05, 0x36, + 0x19, 0xd1, 0xa0, 0x32, 0xf2, 0x3d, 0xe6, 0x21, 0x64, 0x79, 0xe6, 0x11, 0xf5, 0x2b, 0xc1, 0x09, + 0xf1, 0x87, 0x47, 0x36, 0xab, 0x1c, 0x7f, 0x50, 0xba, 0xcd, 0xec, 0x21, 0x0d, 0x18, 0x19, 0x8e, + 0xde, 0x8b, 0xfe, 0x49, 0x78, 0xe9, 0x96, 0x35, 0xf6, 0x09, 0xb3, 0x3d, 0xf7, 0xbd, 0xf0, 0x8f, + 0xea, 0xb8, 0x31, 0xf0, 0x06, 0x9e, 0xf8, 0xfb, 0x1e, 0xff, 0x27, 0xa5, 0xfa, 0x26, 0x2c, 0x3f, + 0xa3, 0x7e, 0x60, 0x7b, 0x2e, 0xba, 0x01, 0x19, 0xdb, 0xb5, 0xe8, 0x8b, 0xf5, 0x44, 0x39, 0x71, + 0x3f, 0x8d, 0x65, 0x43, 0xff, 0xab, 0x04, 0x14, 0x0c, 0xd7, 0xf5, 0x98, 0xb0, 0x15, 0x20, 0x04, + 0x69, 0x97, 0x0c, 0xa9, 0x00, 0xe5, 0xb1, 0xf8, 0x8f, 0xaa, 0x90, 0x75, 0xc8, 0x3e, 0x75, 0x82, + 0xf5, 0x64, 0x39, 0x75, 0xbf, 0xb0, 0xf5, 0xe3, 0xca, 0xab, 0x3e, 0x57, 0x62, 0x46, 0x2a, 0xbb, + 0x02, 0x5d, 0x77, 0x99, 0x3f, 0xc1, 0x4a, 0xb5, 0xf4, 0x53, 0x28, 0xc4, 0xc4, 0x48, 0x83, 0xd4, + 0x11, 0x9d, 0xa8, 0x61, 0xf8, 0x5f, 0xee, 0xdf, 0x31, 0x71, 0xc6, 0x74, 0x3d, 0x29, 0x64, 0xb2, + 0xf1, 0x71, 0xf2, 0x61, 0x42, 0xff, 0x02, 0xf2, 0x98, 0x06, 0xde, 0xd8, 0x37, 0x69, 0x80, 0x7e, + 0x04, 0x79, 0x97, 0xb8, 0x5e, 0xdf, 0x1c, 0x8d, 0x03, 0xa1, 0x9e, 0xda, 0x2e, 0x5e, 0x9c, 0x6f, + 0xe6, 0x9a, 0xc4, 0xf5, 0xaa, 0xed, 0x5e, 0x80, 0x73, 0xbc, 0xbb, 0x3a, 0x1a, 0x07, 0xe8, 0x2d, + 0x28, 0x0e, 0xe9, 0xd0, 0xf3, 0x27, 0xfd, 0xfd, 0x09, 0xa3, 0x81, 0x30, 0x9c, 0xc2, 0x05, 0x29, + 0xdb, 0xe6, 0x22, 0xfd, 0x2f, 0x12, 0x70, 0x23, 0xb4, 0x8d, 0xe9, 0xef, 0x8f, 0x6d, 0x9f, 0x0e, + 0xa9, 0xcb, 0x02, 0xf4, 0xdb, 0x90, 0x75, 0xec, 0xa1, 0xcd, 0xe4, 0x18, 0x85, 0xad, 0x37, 0x17, + 0xcd, 0x39, 0xf2, 0x0a, 0x2b, 0x30, 0x32, 0xa0, 0xe8, 0xd3, 0x80, 0xfa, 0xc7, 0x72, 0x25, 0xc4, + 0x90, 0xdf, 0xaa, 0x3c, 0xa3, 0xa2, 0xef, 0x40, 0xae, 0xed, 0x10, 0x76, 0xe0, 0xf9, 0x43, 0xa4, + 0x43, 0x91, 0xf8, 0xe6, 0xa1, 0xcd, 0xa8, 0xc9, 0xc6, 0x7e, 0xb8, 0x2b, 0x33, 0x32, 0x74, 0x13, + 0x92, 0x9e, 0x1c, 0x28, 0xbf, 0x9d, 0xbd, 0x38, 0xdf, 0x4c, 0xb6, 0x3a, 0x38, 0xe9, 0x05, 0xfa, + 0x23, 0xb8, 0xd6, 0x76, 0xc6, 0x03, 0xdb, 0xad, 0xd1, 0xc0, 0xf4, 0xed, 0x11, 0xb7, 0xce, 0xb7, + 0x97, 0x07, 0x5f, 0xb8, 0xbd, 0xfc, 0x7f, 0xb4, 0xe5, 0xc9, 0xe9, 0x96, 0xeb, 0x7f, 0x96, 0x84, + 0x6b, 0x75, 0x77, 0x60, 0xbb, 0x34, 0xae, 0x7d, 0x0f, 0x56, 0xa9, 0x10, 0xf6, 0x8f, 0x65, 0x50, + 0x29, 0x3b, 0x2b, 0x52, 0x1a, 0x46, 0x5a, 0x63, 0x2e, 0x5e, 0x3e, 0x58, 0x34, 0xfd, 0x57, 0xac, + 0x2f, 0x8a, 0x1a, 0x54, 0x87, 0xe5, 0x91, 0x98, 0x44, 0xb0, 0x9e, 0x12, 0xb6, 0xee, 0x2d, 0xb2, + 0xf5, 0xca, 0x3c, 0xb7, 0xd3, 0x5f, 0x9f, 0x6f, 0x2e, 0xe1, 0x50, 0xf7, 0x37, 0x09, 0xbe, 0xff, + 0x4c, 0xc0, 0x5a, 0xd3, 0xb3, 0x66, 0xd6, 0xa1, 0x04, 0xb9, 0x43, 0x2f, 0x60, 0xb1, 0x83, 0x12, + 0xb5, 0xd1, 0x43, 0xc8, 0x8d, 0xd4, 0xf6, 0xa9, 0xdd, 0xbf, 0xb3, 0xd8, 0x65, 0x89, 0xc1, 0x11, + 0x1a, 0x3d, 0x82, 0xbc, 0x1f, 0xc6, 0xc4, 0x7a, 0xea, 0x2a, 0x81, 0x33, 0xc5, 0xa3, 0xdf, 0x81, + 0xac, 0xdc, 0x84, 0xf5, 0xb4, 0xd0, 0xbc, 0x77, 0xa5, 0x35, 0xc7, 0x4a, 0x49, 0xff, 0x65, 0x02, + 0x34, 0x4c, 0x0e, 0xd8, 0x1e, 0x1d, 0xee, 0x53, 0xbf, 0xc3, 0x08, 0x1b, 0x07, 0xe8, 0x26, 0x64, + 0x1d, 0x4a, 0x2c, 0xea, 0x8b, 0x49, 0xe6, 0xb0, 0x6a, 0xa1, 0x1e, 0x0f, 0x72, 0x62, 0x1e, 0x92, + 0x7d, 0xdb, 0xb1, 0xd9, 0x44, 0x4c, 0x73, 0x75, 0xf1, 0x2e, 0xcf, 0xdb, 0xac, 0xe0, 0x98, 0x22, + 0x9e, 0x31, 0x83, 0xd6, 0x61, 0x79, 0x48, 0x83, 0x80, 0x0c, 0xa8, 0x98, 0x7d, 0x1e, 0x87, 0x4d, + 0xfd, 0x11, 0x14, 0xe3, 0x7a, 0xa8, 0x00, 0xcb, 0xbd, 0xe6, 0xd3, 0x66, 0xeb, 0x79, 0x53, 0x5b, + 0x42, 0x6b, 0x50, 0xe8, 0x35, 0x71, 0xdd, 0xa8, 0x3e, 0x31, 0xb6, 0x77, 0xeb, 0x5a, 0x02, 0xad, + 0x40, 0x7e, 0xda, 0x4c, 0xea, 0x3f, 0x4f, 0x00, 0xf0, 0x0d, 0x54, 0x93, 0xfa, 0x18, 0x32, 0x01, + 0x23, 0x4c, 0x6e, 0xdc, 0xea, 0xd6, 0xdb, 0x8b, 0xbc, 0x9e, 0xc2, 0x2b, 0xfc, 0x87, 0x62, 0xa9, + 0x12, 0xf7, 0x30, 0x39, 0xef, 0x61, 0x46, 0x20, 0x67, 0x5d, 0xcb, 0x41, 0xba, 0xc6, 0xff, 0x25, + 0x50, 0x1e, 0x32, 0xb8, 0x6e, 0xd4, 0xbe, 0xd0, 0x92, 0x48, 0x83, 0x62, 0xad, 0xd1, 0xa9, 0xb6, + 0x9a, 0xcd, 0x7a, 0xb5, 0x5b, 0xaf, 0x69, 0x29, 0xfd, 0x1e, 0x64, 0x1a, 0x43, 0x32, 0xa0, 0xe8, + 0x0e, 0x8f, 0x80, 0x03, 0xea, 0x53, 0xd7, 0x0c, 0x03, 0x6b, 0x2a, 0xd0, 0x7f, 0x91, 0x87, 0xcc, + 0x9e, 0x37, 0x76, 0x19, 0xda, 0x8a, 0x9d, 0xe2, 0xd5, 0xad, 0x8d, 0x45, 0x53, 0x10, 0xc0, 0x4a, + 0x77, 0x32, 0xa2, 0xea, 0x94, 0xdf, 0x84, 0xac, 0x8c, 0x15, 0xe5, 0xba, 0x6a, 0x71, 0x39, 0x23, + 0xfe, 0x80, 0x32, 0xb5, 0xe8, 0xaa, 0x85, 0xee, 0x43, 0xce, 0xa7, 0xc4, 0xf2, 0x5c, 0x67, 0x22, + 0x42, 0x2a, 0x27, 0xd3, 0x2c, 0xa6, 0xc4, 0x6a, 0xb9, 0xce, 0x04, 0x47, 0xbd, 0xe8, 0x09, 0x14, + 0xf7, 0x6d, 0xd7, 0xea, 0x7b, 0x23, 0x99, 0xf3, 0x32, 0xaf, 0x0f, 0x40, 0xe9, 0xd5, 0xb6, 0xed, + 0x5a, 0x2d, 0x09, 0xc6, 0x85, 0xfd, 0x69, 0x03, 0x35, 0x61, 0xf5, 0xd8, 0x73, 0xc6, 0x43, 0x1a, + 0xd9, 0xca, 0x0a, 0x5b, 0xef, 0xbc, 0xde, 0xd6, 0x33, 0x81, 0x0f, 0xad, 0xad, 0x1c, 0xc7, 0x9b, + 0xe8, 0x29, 0xac, 0xb0, 0xe1, 0xe8, 0x20, 0x88, 0xcc, 0x2d, 0x0b, 0x73, 0x3f, 0xbc, 0x64, 0xc1, + 0x38, 0x3c, 0xb4, 0x56, 0x64, 0xb1, 0x56, 0xe9, 0x4f, 0x52, 0x50, 0x88, 0x79, 0x8e, 0x3a, 0x50, + 0x18, 0xf9, 0xde, 0x88, 0x0c, 0x44, 0xde, 0x56, 0x7b, 0xf1, 0xc1, 0x95, 0x66, 0x5d, 0x69, 0x4f, + 0x15, 0x71, 0xdc, 0x8a, 0x7e, 0x96, 0x84, 0x42, 0xac, 0x13, 0x3d, 0x80, 0x1c, 0x6e, 0xe3, 0xc6, + 0x33, 0xa3, 0x5b, 0xd7, 0x96, 0x4a, 0x77, 0x4e, 0xcf, 0xca, 0xeb, 0xc2, 0x5a, 0xdc, 0x40, 0xdb, + 0xb7, 0x8f, 0x79, 0xe8, 0xdd, 0x87, 0xe5, 0x10, 0x9a, 0x28, 0xbd, 0x71, 0x7a, 0x56, 0xbe, 0x35, + 0x0f, 0x8d, 0x21, 0x71, 0xe7, 0x89, 0x81, 0xeb, 0x35, 0x2d, 0xb9, 0x18, 0x89, 0x3b, 0x87, 0xc4, + 0xa7, 0x16, 0xfa, 0x21, 0x64, 0x15, 0x30, 0x55, 0x2a, 0x9d, 0x9e, 0x95, 0x6f, 0xce, 0x03, 0xa7, + 0x38, 0xdc, 0xd9, 0x35, 0x9e, 0xd5, 0xb5, 0xf4, 0x62, 0x1c, 0xee, 0x38, 0xe4, 0x98, 0xa2, 0xb7, + 0x21, 0x23, 0x61, 0x99, 0xd2, 0xed, 0xd3, 0xb3, 0xf2, 0x0f, 0x5e, 0x31, 0xc7, 0x51, 0xa5, 0xf5, + 0x3f, 0xff, 0xeb, 0x8d, 0xa5, 0x7f, 0xfc, 0x9b, 0x0d, 0x6d, 0xbe, 0xbb, 0xf4, 0xbf, 0x09, 0x58, + 0x99, 0xd9, 0x72, 0xa4, 0x43, 0xd6, 0xf5, 0x4c, 0x6f, 0x24, 0xd3, 0x79, 0x6e, 0x1b, 0x2e, 0xce, + 0x37, 0xb3, 0x4d, 0xaf, 0xea, 0x8d, 0x26, 0x58, 0xf5, 0xa0, 0xa7, 0x73, 0x17, 0xd2, 0x87, 0x57, + 0x8c, 0xa7, 0x85, 0x57, 0xd2, 0xa7, 0xb0, 0x62, 0xf9, 0xf6, 0x31, 0xf5, 0xfb, 0xa6, 0xe7, 0x1e, + 0xd8, 0x03, 0x95, 0xaa, 0x4b, 0x8b, 0x6c, 0xd6, 0x04, 0x10, 0x17, 0xa5, 0x42, 0x55, 0xe0, 0x7f, + 0x83, 0xcb, 0xa8, 0xf4, 0x0c, 0x8a, 0xf1, 0x08, 0x45, 0x6f, 0x02, 0x04, 0xf6, 0x1f, 0x50, 0xc5, + 0x6f, 0x04, 0x1b, 0xc2, 0x79, 0x2e, 0x11, 0xec, 0x06, 0xbd, 0x03, 0xe9, 0xa1, 0x67, 0x49, 0x3b, + 0x99, 0xed, 0xeb, 0xfc, 0x4e, 0xfc, 0xd7, 0xf3, 0xcd, 0x82, 0x17, 0x54, 0x76, 0x6c, 0x87, 0xee, + 0x79, 0x16, 0xc5, 0x02, 0xa0, 0x1f, 0x43, 0x9a, 0xa7, 0x0a, 0xf4, 0x06, 0xa4, 0xb7, 0x1b, 0xcd, + 0x9a, 0xb6, 0x54, 0xba, 0x76, 0x7a, 0x56, 0x5e, 0x11, 0x4b, 0xc2, 0x3b, 0x78, 0xec, 0xa2, 0x4d, + 0xc8, 0x3e, 0x6b, 0xed, 0xf6, 0xf6, 0x78, 0x78, 0x5d, 0x3f, 0x3d, 0x2b, 0xaf, 0x45, 0xdd, 0x72, + 0xd1, 0xd0, 0x9b, 0x90, 0xe9, 0xee, 0xb5, 0x77, 0x3a, 0x5a, 0xb2, 0x84, 0x4e, 0xcf, 0xca, 0xab, + 0x51, 0xbf, 0xf0, 0xb9, 0x74, 0x4d, 0xed, 0x6a, 0x3e, 0x92, 0xeb, 0xff, 0x93, 0x84, 0x15, 0xcc, + 0xf9, 0xad, 0xcf, 0xda, 0x9e, 0x63, 0x9b, 0x13, 0xd4, 0x86, 0xbc, 0xe9, 0xb9, 0x96, 0x1d, 0x3b, + 0x53, 0x5b, 0xaf, 0xb9, 0x04, 0xa7, 0x5a, 0x61, 0xab, 0x1a, 0x6a, 0xe2, 0xa9, 0x11, 0xb4, 0x05, + 0x19, 0x8b, 0x3a, 0x64, 0x72, 0xd9, 0x6d, 0x5c, 0x53, 0x5c, 0x1a, 0x4b, 0xa8, 0x60, 0x8e, 0xe4, + 0x45, 0x9f, 0x30, 0x46, 0x87, 0x23, 0x26, 0x6f, 0xe3, 0x34, 0x2e, 0x0c, 0xc9, 0x0b, 0x43, 0x89, + 0xd0, 0x4f, 0x20, 0x7b, 0x62, 0xbb, 0x96, 0x77, 0xa2, 0x2e, 0xdc, 0xcb, 0xed, 0x2a, 0xac, 0x7e, + 0xca, 0xef, 0xd9, 0x39, 0x67, 0xf9, 0xaa, 0x37, 0x5b, 0xcd, 0x7a, 0xb8, 0xea, 0xaa, 0xbf, 0xe5, + 0x36, 0x3d, 0x97, 0x9f, 0x18, 0x68, 0x35, 0xfb, 0x3b, 0x46, 0x63, 0xb7, 0x87, 0xf9, 0xca, 0xdf, + 0x38, 0x3d, 0x2b, 0x6b, 0x11, 0x64, 0x87, 0xd8, 0x0e, 0x27, 0x81, 0xb7, 0x21, 0x65, 0x34, 0xbf, + 0xd0, 0x92, 0x25, 0xed, 0xf4, 0xac, 0x5c, 0x8c, 0xba, 0x0d, 0x77, 0x32, 0x3d, 0x4c, 0xf3, 0xe3, + 0xea, 0xff, 0x9e, 0x84, 0x62, 0x6f, 0x64, 0x11, 0x46, 0x65, 0x64, 0xa2, 0x32, 0x14, 0x46, 0xc4, + 0x27, 0x8e, 0x43, 0x1d, 0x3b, 0x18, 0xaa, 0x42, 0x21, 0x2e, 0x42, 0x0f, 0xbf, 0xc3, 0x62, 0x2a, + 0x12, 0xa6, 0x96, 0xb4, 0x07, 0xab, 0x07, 0xd2, 0xd9, 0x3e, 0x31, 0xc5, 0xee, 0xa6, 0xc4, 0xee, + 0x56, 0x16, 0x99, 0x88, 0x7b, 0x55, 0x51, 0x73, 0x34, 0x84, 0x16, 0x5e, 0x39, 0x88, 0x37, 0xd1, + 0x47, 0xb0, 0x3c, 0xf4, 0x5c, 0x9b, 0x79, 0xfe, 0x95, 0xf6, 0x21, 0x04, 0xa3, 0x07, 0x70, 0x8d, + 0xef, 0x70, 0xe8, 0x92, 0xe8, 0x16, 0x37, 0x57, 0x12, 0xaf, 0x0d, 0xc9, 0x0b, 0x35, 0x26, 0xe6, + 0x62, 0xfd, 0x23, 0x58, 0x99, 0xf1, 0x81, 0xdf, 0xe6, 0x6d, 0xa3, 0xd7, 0xa9, 0x6b, 0x4b, 0xa8, + 0x08, 0xb9, 0x6a, 0xab, 0xd9, 0x6d, 0x34, 0x7b, 0x9c, 0x7a, 0x14, 0x21, 0x87, 0x5b, 0xbb, 0xbb, + 0xdb, 0x46, 0xf5, 0xa9, 0x96, 0xd4, 0xff, 0x3b, 0x5a, 0x5f, 0xc5, 0x3d, 0xb6, 0x67, 0xb9, 0xc7, + 0xbb, 0xaf, 0x9f, 0xba, 0x62, 0x1f, 0xd3, 0x46, 0xc4, 0x41, 0x3e, 0x01, 0x10, 0xdb, 0x48, 0xad, + 0x3e, 0x61, 0x97, 0xd5, 0x17, 0xdd, 0xb0, 0x72, 0xc4, 0x79, 0xa5, 0x60, 0x30, 0xf4, 0x19, 0x14, + 0x4d, 0x6f, 0x38, 0x72, 0xa8, 0xd2, 0x4f, 0x5d, 0x45, 0xbf, 0x10, 0xa9, 0x18, 0x2c, 0xce, 0x81, + 0xd2, 0xb3, 0x1c, 0xe8, 0x4f, 0x13, 0x50, 0x88, 0x39, 0x3c, 0x4b, 0x85, 0x8a, 0x90, 0xeb, 0xb5, + 0x6b, 0x46, 0xb7, 0xd1, 0x7c, 0xac, 0x25, 0x10, 0x40, 0x56, 0x2c, 0x60, 0x4d, 0x4b, 0x72, 0xba, + 0x56, 0x6d, 0xed, 0xb5, 0x77, 0xeb, 0x82, 0x0c, 0xa1, 0x1b, 0xa0, 0x85, 0x4b, 0xd8, 0xef, 0x74, + 0x0d, 0xcc, 0xa5, 0x69, 0x74, 0x1d, 0xd6, 0x22, 0xa9, 0xd2, 0xcc, 0xa0, 0x9b, 0x80, 0x22, 0xe1, + 0xd4, 0x44, 0x56, 0xff, 0x23, 0x58, 0xab, 0x7a, 0x2e, 0x23, 0xb6, 0x1b, 0x51, 0xd9, 0x2d, 0x3e, + 0x6f, 0x25, 0xea, 0xdb, 0x96, 0xcc, 0xb6, 0xdb, 0x6b, 0x17, 0xe7, 0x9b, 0x85, 0x08, 0xda, 0xa8, + 0xf1, 0x99, 0x86, 0x0d, 0x8b, 0x9f, 0xa9, 0x91, 0x6d, 0xa9, 0xe4, 0xb9, 0x7c, 0x71, 0xbe, 0x99, + 0x6a, 0x37, 0x6a, 0x98, 0xcb, 0xd0, 0x1b, 0x90, 0xa7, 0x2f, 0x6c, 0xd6, 0x37, 0x79, 0x76, 0xe5, + 0x6b, 0x98, 0xc1, 0x39, 0x2e, 0xa8, 0xf2, 0x64, 0xfa, 0xc7, 0x49, 0x80, 0x2e, 0x09, 0x8e, 0xd4, + 0xd0, 0x8f, 0x20, 0x1f, 0x15, 0xf1, 0x97, 0x15, 0x93, 0xb1, 0xfd, 0x8a, 0xf0, 0xe8, 0xc3, 0x30, + 0x62, 0x24, 0xc7, 0x5e, 0xac, 0xa8, 0xc6, 0x5a, 0x44, 0x53, 0x67, 0x89, 0x34, 0xbf, 0x6b, 0xa8, + 0xef, 0xab, 0x8d, 0xe3, 0x7f, 0x51, 0x55, 0xe4, 0x5b, 0x39, 0x67, 0xc5, 0xdc, 0xee, 0x2e, 0x1a, + 0x64, 0x6e, 0x41, 0x9f, 0x2c, 0xe1, 0xa9, 0xde, 0xb6, 0x06, 0xab, 0xfe, 0xd8, 0xe5, 0x5e, 0xf7, + 0x03, 0xd1, 0xad, 0xdb, 0x70, 0xab, 0x49, 0xd9, 0x89, 0xe7, 0x1f, 0x19, 0x8c, 0x11, 0xf3, 0x90, + 0x17, 0xd5, 0x2a, 0xc9, 0x4c, 0x09, 0x67, 0x62, 0x86, 0x70, 0xae, 0xc3, 0x32, 0x71, 0x6c, 0x12, + 0x50, 0x79, 0x4b, 0xe7, 0x71, 0xd8, 0xe4, 0xb4, 0x98, 0x58, 0x96, 0x4f, 0x83, 0x80, 0xca, 0x32, + 0x30, 0x8f, 0xa7, 0x02, 0xfd, 0x9f, 0x93, 0x00, 0x8d, 0xb6, 0xb1, 0xa7, 0xcc, 0xd7, 0x20, 0x7b, + 0x40, 0x86, 0xb6, 0x33, 0xb9, 0xec, 0x90, 0x4d, 0xf1, 0x15, 0x43, 0x1a, 0xda, 0x11, 0x3a, 0x58, + 0xe9, 0x0a, 0xb6, 0x3c, 0xde, 0x77, 0x29, 0x8b, 0xd8, 0xb2, 0x68, 0xf1, 0xab, 0xd9, 0x27, 0x6e, + 0xb4, 0xb0, 0xb2, 0xc1, 0x5d, 0x1f, 0x10, 0x46, 0x4f, 0xc8, 0x24, 0x3c, 0x13, 0xaa, 0x89, 0x9e, + 0x70, 0x16, 0xcd, 0x8b, 0x7b, 0x6a, 0xad, 0x67, 0x04, 0xf7, 0xf8, 0x36, 0x7f, 0xb0, 0x82, 0x4b, + 0xd2, 0x11, 0x69, 0x97, 0x1e, 0x89, 0x9b, 0x72, 0xda, 0xf5, 0x9d, 0x8a, 0xd8, 0xf7, 0x61, 0x65, + 0x66, 0x9e, 0xaf, 0x94, 0x29, 0x8d, 0xf6, 0xb3, 0x9f, 0x68, 0x69, 0xf5, 0xef, 0x23, 0x2d, 0xab, + 0xff, 0x57, 0x02, 0xa0, 0xed, 0xf9, 0xe1, 0xa6, 0x2d, 0x7e, 0x16, 0xca, 0x89, 0x47, 0x26, 0xd3, + 0x73, 0x54, 0x78, 0x2e, 0xe4, 0xe9, 0x53, 0x2b, 0x9c, 0xf6, 0x0a, 0x38, 0x8e, 0x14, 0xd1, 0x26, + 0x14, 0xe4, 0xfe, 0xf7, 0x47, 0x9e, 0x2f, 0xf3, 0xd1, 0x0a, 0x06, 0x29, 0xe2, 0x9a, 0xe8, 0x1e, + 0xac, 0x8e, 0xc6, 0xfb, 0x8e, 0x1d, 0x1c, 0x52, 0x4b, 0x62, 0xd2, 0x02, 0xb3, 0x12, 0x49, 0x39, + 0x4c, 0xaf, 0x41, 0x2e, 0xb4, 0x8e, 0xd6, 0x21, 0xd5, 0xad, 0xb6, 0xb5, 0xa5, 0xd2, 0xda, 0xe9, + 0x59, 0xb9, 0x10, 0x8a, 0xbb, 0xd5, 0x36, 0xef, 0xe9, 0xd5, 0xda, 0x5a, 0x62, 0xb6, 0xa7, 0x57, + 0x6b, 0x97, 0xd2, 0xfc, 0x96, 0xd4, 0xff, 0x32, 0x01, 0x59, 0xc9, 0xd9, 0x16, 0xce, 0xd8, 0x80, + 0xe5, 0xb0, 0x92, 0x90, 0x44, 0xf2, 0x9d, 0xd7, 0x93, 0xbe, 0x8a, 0xe2, 0x68, 0x72, 0x1f, 0x43, + 0xbd, 0xd2, 0xc7, 0x50, 0x8c, 0x77, 0x7c, 0xa7, 0x5d, 0xfc, 0x43, 0x28, 0xf0, 0x40, 0x09, 0xc9, + 0xdf, 0x16, 0x64, 0x25, 0xaf, 0x54, 0x59, 0xe5, 0x32, 0x06, 0xaa, 0x90, 0xe8, 0x21, 0x2c, 0x4b, + 0xd6, 0x1a, 0xbe, 0xa7, 0x6c, 0x5c, 0x1e, 0x8e, 0x38, 0x84, 0xeb, 0x9f, 0x42, 0xba, 0x4d, 0xa9, + 0x8f, 0xee, 0xc2, 0xb2, 0xeb, 0x59, 0x74, 0x9a, 0x44, 0x15, 0xe1, 0xb6, 0x68, 0xa3, 0xc6, 0x09, + 0xb7, 0x45, 0x1b, 0x16, 0x5f, 0x3c, 0x7e, 0x40, 0xc3, 0x27, 0x25, 0xfe, 0x5f, 0xef, 0x42, 0xf1, + 0x39, 0xb5, 0x07, 0x87, 0x8c, 0x5a, 0xc2, 0xd0, 0xbb, 0x90, 0x1e, 0xd1, 0xc8, 0xf9, 0xf5, 0x85, + 0xa1, 0x43, 0xa9, 0x8f, 0x05, 0x8a, 0x1f, 0xc8, 0x13, 0xa1, 0xad, 0x5e, 0xf1, 0x54, 0x4b, 0xff, + 0xbb, 0x24, 0xac, 0x36, 0x82, 0x60, 0x4c, 0x5c, 0x33, 0xbc, 0x65, 0x7f, 0x36, 0x7b, 0xcb, 0xde, + 0x5f, 0x38, 0xc3, 0x19, 0x95, 0xd9, 0x2a, 0x5f, 0x25, 0xc9, 0x64, 0x94, 0x24, 0xf5, 0xaf, 0x13, + 0x61, 0x79, 0x7f, 0x2f, 0x76, 0x6e, 0x4a, 0xeb, 0xa7, 0x67, 0xe5, 0x1b, 0x71, 0x4b, 0xb4, 0xe7, + 0x1e, 0xb9, 0xde, 0x89, 0x8b, 0xde, 0xe2, 0xe5, 0x7e, 0xb3, 0xfe, 0x5c, 0x4b, 0x94, 0x6e, 0x9e, + 0x9e, 0x95, 0xd1, 0x0c, 0x08, 0x53, 0x97, 0x9e, 0x70, 0x4b, 0xed, 0x7a, 0xb3, 0xc6, 0xef, 0xc3, + 0xe4, 0x02, 0x4b, 0x6d, 0xea, 0x5a, 0xb6, 0x3b, 0x40, 0x77, 0x21, 0xdb, 0xe8, 0x74, 0x7a, 0xa2, + 0x00, 0xbb, 0x75, 0x7a, 0x56, 0xbe, 0x3e, 0x83, 0xe2, 0x0d, 0x6a, 0x71, 0x10, 0x27, 0x88, 0xfc, + 0xa6, 0x5c, 0x00, 0xe2, 0xdc, 0x85, 0x5a, 0x2a, 0xc2, 0xff, 0x2d, 0x09, 0x9a, 0x61, 0x9a, 0x74, + 0xc4, 0x78, 0xbf, 0x22, 0xdd, 0x5d, 0xc8, 0x8d, 0xf8, 0x3f, 0x5b, 0x14, 0x11, 0x3c, 0x2c, 0x1e, + 0x2e, 0x7c, 0xe2, 0x9d, 0xd3, 0xab, 0x60, 0xcf, 0xa1, 0x86, 0x35, 0xb4, 0x83, 0x80, 0x17, 0x97, + 0x42, 0x86, 0x23, 0x4b, 0xa5, 0x5f, 0x25, 0xe0, 0xfa, 0x02, 0x04, 0x7a, 0x1f, 0xd2, 0xbe, 0xe7, + 0x84, 0xdb, 0x73, 0xe7, 0x75, 0x0f, 0x30, 0x5c, 0x15, 0x0b, 0x24, 0xda, 0x00, 0x20, 0x63, 0xe6, + 0x11, 0x31, 0xbe, 0xd8, 0x98, 0x1c, 0x8e, 0x49, 0xd0, 0x73, 0xc8, 0x06, 0xd4, 0xf4, 0x69, 0xc8, + 0x67, 0x3e, 0xfd, 0xff, 0x7a, 0x5f, 0xe9, 0x08, 0x33, 0x58, 0x99, 0x2b, 0x55, 0x20, 0x2b, 0x25, + 0x3c, 0xa2, 0x2d, 0xc2, 0x88, 0x70, 0xba, 0x88, 0xc5, 0x7f, 0x1e, 0x28, 0xc4, 0x19, 0x84, 0x81, + 0x42, 0x9c, 0x81, 0xfe, 0xf3, 0x24, 0x40, 0xfd, 0x05, 0xa3, 0xbe, 0x4b, 0x9c, 0xaa, 0x81, 0xea, + 0xb1, 0x0c, 0x29, 0x67, 0xfb, 0xa3, 0x85, 0xcf, 0x72, 0x91, 0x46, 0xa5, 0x6a, 0x2c, 0xc8, 0x91, + 0xb7, 0x21, 0x35, 0xf6, 0x1d, 0xf5, 0xc4, 0x2b, 0x88, 0x48, 0x0f, 0xef, 0x62, 0x2e, 0x43, 0xf5, + 0x69, 0x46, 0x4a, 0xbd, 0xfe, 0x6d, 0x3e, 0x36, 0xc0, 0xf7, 0x9f, 0x95, 0xde, 0x05, 0x98, 0x7a, + 0x8d, 0x36, 0x20, 0x53, 0xdd, 0xe9, 0x74, 0x76, 0xb5, 0x25, 0x59, 0x23, 0x4e, 0xbb, 0x84, 0x58, + 0xff, 0xdb, 0x04, 0xe4, 0xaa, 0x86, 0xba, 0x55, 0x76, 0x40, 0x13, 0xb9, 0xc4, 0xa4, 0x3e, 0xeb, + 0xd3, 0x17, 0x23, 0xdb, 0x9f, 0xa8, 0x74, 0x70, 0x39, 0x8b, 0x5f, 0xe5, 0x5a, 0x55, 0xea, 0xb3, + 0xba, 0xd0, 0x41, 0x18, 0x8a, 0x54, 0x4d, 0xb1, 0x6f, 0x92, 0x30, 0x39, 0x6f, 0x5c, 0xbe, 0x14, + 0x92, 0xfd, 0x4d, 0xdb, 0x01, 0x2e, 0x84, 0x46, 0xaa, 0x24, 0xd0, 0x9f, 0xc1, 0xf5, 0x96, 0x6f, + 0x1e, 0xd2, 0x80, 0xc9, 0x41, 0x95, 0xcb, 0x9f, 0xc2, 0x1d, 0x46, 0x82, 0xa3, 0xfe, 0xa1, 0x1d, + 0x30, 0xcf, 0x9f, 0xf4, 0x7d, 0xca, 0xa8, 0xcb, 0xfb, 0xfb, 0xe2, 0x0b, 0x80, 0xaa, 0xc1, 0x6f, + 0x73, 0xcc, 0x13, 0x09, 0xc1, 0x21, 0x62, 0x97, 0x03, 0xf4, 0x06, 0x14, 0x39, 0x61, 0xab, 0xd1, + 0x03, 0x32, 0x76, 0x58, 0x80, 0x7e, 0x0a, 0xe0, 0x78, 0x83, 0xfe, 0x95, 0x33, 0x79, 0xde, 0xf1, + 0x06, 0xf2, 0xaf, 0xfe, 0xbb, 0xa0, 0xd5, 0xec, 0x60, 0x44, 0x98, 0x79, 0x18, 0x3e, 0x2e, 0xa0, + 0xc7, 0xa0, 0x1d, 0x52, 0xe2, 0xb3, 0x7d, 0x4a, 0x58, 0x7f, 0x44, 0x7d, 0xdb, 0xb3, 0xae, 0xb4, + 0xa4, 0x6b, 0x91, 0x56, 0x5b, 0x28, 0xe9, 0xbf, 0x4e, 0x00, 0x60, 0x72, 0x10, 0x12, 0x80, 0x1f, + 0xc3, 0xb5, 0xc0, 0x25, 0xa3, 0xe0, 0xd0, 0x63, 0x7d, 0xdb, 0x65, 0xd4, 0x3f, 0x26, 0x8e, 0x2a, + 0x10, 0xb5, 0xb0, 0xa3, 0xa1, 0xe4, 0xe8, 0x5d, 0x40, 0x47, 0x94, 0x8e, 0xfa, 0x9e, 0x63, 0xf5, + 0xc3, 0x4e, 0xf9, 0x89, 0x22, 0x8d, 0x35, 0xde, 0xd3, 0x72, 0xac, 0x4e, 0x28, 0x47, 0xdb, 0xb0, + 0xc1, 0x57, 0x80, 0xba, 0xcc, 0xb7, 0x69, 0xd0, 0x3f, 0xf0, 0xfc, 0x7e, 0xe0, 0x78, 0x27, 0xfd, + 0x03, 0xcf, 0x71, 0xbc, 0x13, 0xea, 0x87, 0xe5, 0x77, 0xc9, 0xf1, 0x06, 0x75, 0x09, 0xda, 0xf1, + 0xfc, 0x8e, 0xe3, 0x9d, 0xec, 0x84, 0x08, 0xce, 0x12, 0xa6, 0xd3, 0x66, 0xb6, 0x79, 0x14, 0xb2, + 0x84, 0x48, 0xda, 0xb5, 0xcd, 0x23, 0x74, 0x17, 0x56, 0xa8, 0x43, 0x45, 0x11, 0x27, 0x51, 0x19, + 0x81, 0x2a, 0x86, 0x42, 0x0e, 0xd2, 0x7f, 0x0b, 0xf2, 0x6d, 0x87, 0x98, 0xe2, 0x43, 0x10, 0x2f, + 0x89, 0x4d, 0xcf, 0xe5, 0x41, 0x60, 0xbb, 0x4c, 0x66, 0xc7, 0x3c, 0x8e, 0x8b, 0xf4, 0x9f, 0x01, + 0x7c, 0xee, 0xd9, 0x6e, 0xd7, 0x3b, 0xa2, 0xae, 0x78, 0x33, 0xe7, 0xac, 0x57, 0x6d, 0x65, 0x1e, + 0xab, 0x96, 0xe0, 0xe4, 0xc4, 0x25, 0x03, 0xea, 0x47, 0x4f, 0xc7, 0xb2, 0xc9, 0x2f, 0x97, 0x2c, + 0xf6, 0x3c, 0x56, 0x35, 0x50, 0x19, 0xb2, 0x26, 0xe9, 0x87, 0x27, 0xaf, 0xb8, 0x9d, 0xbf, 0x38, + 0xdf, 0xcc, 0x54, 0x8d, 0xa7, 0x74, 0x82, 0x33, 0x26, 0x79, 0x4a, 0x27, 0xfc, 0xf6, 0x35, 0x89, + 0x38, 0x2f, 0xc2, 0x4c, 0x51, 0xde, 0xbe, 0x55, 0x83, 0x1f, 0x06, 0x9c, 0x35, 0x09, 0xff, 0x45, + 0xef, 0x43, 0x51, 0x81, 0xfa, 0x87, 0x24, 0x38, 0x94, 0x5c, 0x75, 0x7b, 0xf5, 0xe2, 0x7c, 0x13, + 0x24, 0xf2, 0x09, 0x09, 0x0e, 0x31, 0x48, 0x34, 0xff, 0x8f, 0xea, 0x50, 0xf8, 0xd2, 0xb3, 0xdd, + 0x3e, 0x13, 0x93, 0x50, 0x95, 0xf4, 0xc2, 0xf3, 0x33, 0x9d, 0xaa, 0x2a, 0xef, 0xe1, 0xcb, 0x48, + 0xa2, 0xff, 0x4b, 0x02, 0x0a, 0xdc, 0xa6, 0x7d, 0x60, 0x9b, 0xfc, 0xb6, 0xfc, 0xee, 0x99, 0xfe, + 0x36, 0xa4, 0xcc, 0xc0, 0x57, 0x73, 0x13, 0xa9, 0xae, 0xda, 0xc1, 0x98, 0xcb, 0xd0, 0x67, 0x90, + 0x95, 0xc5, 0x85, 0x4a, 0xf2, 0xfa, 0xb7, 0xdf, 0xeb, 0xca, 0x45, 0xa5, 0x27, 0xf6, 0x72, 0xea, + 0x9d, 0x98, 0x65, 0x11, 0xc7, 0x45, 0xe8, 0x26, 0x24, 0x4d, 0x57, 0x04, 0x85, 0xfa, 0x96, 0x56, + 0x6d, 0xe2, 0xa4, 0xe9, 0xea, 0xff, 0x94, 0x80, 0x95, 0xba, 0x6b, 0xfa, 0x13, 0x91, 0x24, 0xf9, + 0x46, 0xdc, 0x81, 0x7c, 0x30, 0xde, 0x0f, 0x26, 0x01, 0xa3, 0xc3, 0xf0, 0xa9, 0x3e, 0x12, 0xa0, + 0x06, 0xe4, 0x89, 0x33, 0xf0, 0x7c, 0x9b, 0x1d, 0x0e, 0x15, 0x37, 0x5e, 0x9c, 0x98, 0xe3, 0x36, + 0x2b, 0x46, 0xa8, 0x82, 0xa7, 0xda, 0x61, 0x2a, 0x4e, 0x09, 0x67, 0x45, 0x2a, 0x7e, 0x0b, 0x8a, + 0x0e, 0x19, 0x72, 0x2a, 0xdc, 0xe7, 0x25, 0x97, 0x98, 0x47, 0x1a, 0x17, 0x94, 0x8c, 0x97, 0x91, + 0xba, 0x0e, 0xf9, 0xc8, 0x18, 0x5a, 0x83, 0x82, 0x51, 0xef, 0xf4, 0x3f, 0xd8, 0x7a, 0xd8, 0x7f, + 0x5c, 0xdd, 0xd3, 0x96, 0x14, 0x13, 0xf8, 0x87, 0x04, 0xac, 0xec, 0xc9, 0x18, 0x54, 0xc4, 0xe9, + 0x2e, 0x2c, 0xfb, 0xe4, 0x80, 0x85, 0xd4, 0x2e, 0x2d, 0x83, 0x8b, 0x27, 0x01, 0x4e, 0xed, 0x78, + 0xd7, 0x62, 0x6a, 0x17, 0xfb, 0x50, 0x94, 0xba, 0xf4, 0x43, 0x51, 0xfa, 0x7b, 0xf9, 0x50, 0xa4, + 0xff, 0x7d, 0x02, 0xd6, 0xd4, 0x45, 0x1d, 0x7e, 0x1c, 0x59, 0x48, 0xd7, 0x6f, 0xc1, 0x32, 0xbf, + 0xa7, 0xfb, 0xaa, 0x88, 0xcf, 0xe3, 0x2c, 0x6f, 0x36, 0x2c, 0xf4, 0x89, 0x7a, 0x17, 0x4d, 0xbd, + 0x9e, 0x20, 0xce, 0xd9, 0xaf, 0x4c, 0x1f, 0x4b, 0x63, 0x05, 0x6c, 0x3a, 0x5e, 0xc0, 0xea, 0xb7, + 0x21, 0xcd, 0x51, 0xbc, 0x88, 0xda, 0x69, 0xec, 0xd6, 0xb5, 0x25, 0xb4, 0x0c, 0xa9, 0x7a, 0xf3, + 0x99, 0x96, 0xe0, 0x75, 0x05, 0x48, 0x8b, 0x35, 0x4e, 0x1c, 0xee, 0x4e, 0x1d, 0x8b, 0x71, 0x68, + 0xde, 0xc5, 0x17, 0x5a, 0x39, 0x19, 0x32, 0x8e, 0x64, 0x8c, 0x71, 0xdc, 0x84, 0xac, 0x65, 0x0f, + 0x68, 0x10, 0x7d, 0xac, 0x91, 0x2d, 0xf4, 0x09, 0x80, 0xe9, 0x53, 0xa2, 0x1e, 0x75, 0xd2, 0x57, + 0x7a, 0x64, 0x50, 0x0a, 0x06, 0x7b, 0xf0, 0xeb, 0x14, 0xe4, 0xa3, 0x47, 0x04, 0x7e, 0x04, 0x39, + 0x73, 0x5d, 0x92, 0x4f, 0x89, 0x91, 0xbc, 0x29, 0x38, 0x6b, 0xde, 0xd8, 0xdd, 0x6d, 0x55, 0x8d, + 0x6e, 0xbd, 0xa6, 0x7d, 0x26, 0xa9, 0x6d, 0x04, 0x30, 0x1c, 0xc7, 0xe3, 0x87, 0xc8, 0x42, 0xfa, + 0x94, 0xda, 0xbe, 0x54, 0x0f, 0x96, 0x11, 0x2a, 0xe4, 0xb5, 0x6f, 0x43, 0xce, 0xe8, 0x74, 0x1a, + 0x8f, 0x9b, 0xf5, 0x9a, 0xf6, 0x55, 0xa2, 0xf4, 0x83, 0xd3, 0xb3, 0xf2, 0xb5, 0xa9, 0xa9, 0x20, + 0xb0, 0x07, 0x2e, 0xb5, 0x04, 0xaa, 0x5a, 0xad, 0xb7, 0xf9, 0x78, 0x2f, 0x93, 0xf3, 0x28, 0x41, + 0xe8, 0xc4, 0xc7, 0x87, 0x7c, 0x1b, 0xd7, 0xdb, 0x06, 0xe6, 0x23, 0x7e, 0x95, 0x9c, 0xf3, 0xab, + 0xed, 0xd3, 0x11, 0xf1, 0xf9, 0x98, 0x1b, 0xe1, 0x47, 0xb8, 0x97, 0x29, 0xf9, 0x40, 0x3d, 0x7d, + 0x39, 0xa1, 0xc4, 0x9a, 0xf0, 0xd1, 0xc4, 0x8b, 0x93, 0x30, 0x93, 0x9a, 0x1b, 0xad, 0xc3, 0x88, + 0xcf, 0xb8, 0x15, 0x1d, 0x96, 0x71, 0xaf, 0xd9, 0x14, 0xb3, 0x4b, 0xcf, 0xcd, 0x0e, 0x8f, 0x5d, + 0x97, 0x63, 0xee, 0x41, 0x2e, 0x7c, 0x90, 0xd2, 0xbe, 0x4a, 0xcf, 0x39, 0x54, 0x0d, 0x5f, 0xd3, + 0xc4, 0x80, 0x4f, 0x7a, 0x5d, 0xf1, 0x8d, 0xf0, 0x65, 0x66, 0x7e, 0xc0, 0xc3, 0x31, 0xb3, 0x78, + 0x31, 0x51, 0x8e, 0xd8, 0xfd, 0x57, 0x19, 0x49, 0xaa, 0x22, 0x8c, 0xa4, 0xf6, 0xdc, 0x0e, 0xae, + 0x7f, 0x2e, 0x3f, 0x27, 0xbe, 0xcc, 0xce, 0xd9, 0xc1, 0xf4, 0x4b, 0x6a, 0x32, 0x6a, 0x4d, 0xdf, + 0xdf, 0xa3, 0xae, 0x07, 0xbf, 0x07, 0xb9, 0x30, 0x01, 0xa3, 0x0d, 0xc8, 0x3e, 0x6f, 0xe1, 0xa7, + 0x75, 0xac, 0x2d, 0xc9, 0xd5, 0x09, 0x7b, 0x9e, 0xcb, 0x1b, 0xac, 0x0c, 0xcb, 0x7b, 0x46, 0xd3, + 0x78, 0x5c, 0xc7, 0xe1, 0xfb, 0x7f, 0x08, 0x50, 0x59, 0xa4, 0xa4, 0xa9, 0x01, 0x22, 0x9b, 0x0f, + 0x3e, 0x0f, 0xc3, 0x5e, 0x7c, 0x5d, 0xd0, 0x21, 0x5f, 0x6d, 0x35, 0xbb, 0x46, 0xa3, 0x29, 0x06, + 0x91, 0xfc, 0x30, 0x7a, 0x57, 0x92, 0x3c, 0x7b, 0x1d, 0xd2, 0xcd, 0x56, 0xad, 0xae, 0x25, 0x4a, + 0xab, 0xa7, 0x67, 0x65, 0xf9, 0xe1, 0x56, 0xf4, 0x6c, 0xdf, 0xf9, 0xfa, 0x9b, 0x8d, 0xa5, 0x5f, + 0x7e, 0xb3, 0xb1, 0xf4, 0xab, 0x6f, 0x36, 0x12, 0x2f, 0x2f, 0x36, 0x12, 0x5f, 0x5f, 0x6c, 0x24, + 0x7e, 0x71, 0xb1, 0x91, 0xf8, 0x8f, 0x8b, 0x8d, 0xc4, 0x7e, 0x56, 0xb0, 0xe5, 0x0f, 0xff, 0x2f, + 0x00, 0x00, 0xff, 0xff, 0xdb, 0xf0, 0xbe, 0x04, 0x5c, 0x23, 0x00, 0x00, } diff --git a/api/types.proto b/api/types.proto index 9ade595cca..086a5695f5 100644 --- a/api/types.proto +++ b/api/types.proto @@ -759,15 +759,36 @@ message SecretReference { // Name is the name of the secret that this reference. string name = 1; + // DataID represents the specific Secret version that we're referencing to. + // This identifier exists so that SecretReferences don't leak any information + // about the secret contents. + string data_id= 2; + // Mode specifies how this secret should be exposed inside the task. enum Mode { FILE = 0; ENV = 1; } - // Mode is one or more ways the secret should be presented. - repeated Mode mode = 2; + // Mode is the way the secret should be presented. + Mode mode = 3; // Target is the name by which the image accesses the secret. - string target = 3; + string target = 4; +} + +// SecretData is represents a specific version of a secret, and is immutable +message SecretData { + // DataID is an opaque, randomly generated identifier to link a SecretReference + // to a specific SecretData. + string data_id = 1 [(gogoproto.customname) = "DataID"]; + + // Data contains the secret bytes. + bytes data = 2; + + // Digest is a digest of the data bytes. + string digest = 3; + + // CreatedAt is the time at which this secret data was created. + Timestamp created_at = 4; } From 95d5fb46524eb0848404bb1ae656ee65b1e1323e Mon Sep 17 00:00:00 2001 From: Diogo Monica Date: Tue, 30 Aug 2016 18:28:45 -0700 Subject: [PATCH 3/9] Restructured Secret Protos Signed-off-by: Diogo Monica --- api/objects.pb.go | 481 +++++++++++++++++++++++----- api/objects.proto | 19 +- api/specs.pb.go | 240 +++++++------- api/specs.proto | 2 +- api/types.pb.go | 789 ++++++++++++++-------------------------------- api/types.proto | 19 +- 6 files changed, 768 insertions(+), 782 deletions(-) diff --git a/api/objects.pb.go b/api/objects.pb.go index 7b25f45c7f..cf09b0d64f 100644 --- a/api/objects.pb.go +++ b/api/objects.pb.go @@ -235,17 +235,30 @@ func (*Cluster) Descriptor() ([]byte, []int) { return fileDescriptorObjects, []i // Secret type Secret struct { - ID string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Meta Meta `protobuf:"bytes,2,opt,name=meta" json:"meta"` - Spec SecretSpec `protobuf:"bytes,3,opt,name=spec" json:"spec"` - // Version is a hash of the secret. - Version string `protobuf:"bytes,4,opt,name=version,proto3" json:"version,omitempty"` + ID string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Meta Meta `protobuf:"bytes,2,opt,name=meta" json:"meta"` + SecretData []*SecretData `protobuf:"bytes,3,rep,name=secret_data,json=secretData" json:"secret_data,omitempty"` + // Name of the secret + Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` } func (m *Secret) Reset() { *m = Secret{} } func (*Secret) ProtoMessage() {} func (*Secret) Descriptor() ([]byte, []int) { return fileDescriptorObjects, []int{8} } +// SecretData is represents a specific version of a secret, and is immutable +type SecretData struct { + ID string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Meta Meta `protobuf:"bytes,2,opt,name=meta" json:"meta"` + Spec SecretSpec `protobuf:"bytes,3,opt,name=spec" json:"spec"` + // Digest represents the cryptographic digest of the secret data + Digest string `protobuf:"bytes,4,opt,name=digest,proto3" json:"digest,omitempty"` +} + +func (m *SecretData) Reset() { *m = SecretData{} } +func (*SecretData) ProtoMessage() {} +func (*SecretData) Descriptor() ([]byte, []int) { return fileDescriptorObjects, []int{9} } + func init() { proto.RegisterType((*Meta)(nil), "docker.swarmkit.v1.Meta") proto.RegisterType((*Node)(nil), "docker.swarmkit.v1.Node") @@ -257,6 +270,7 @@ func init() { proto.RegisterType((*Network)(nil), "docker.swarmkit.v1.Network") proto.RegisterType((*Cluster)(nil), "docker.swarmkit.v1.Cluster") proto.RegisterType((*Secret)(nil), "docker.swarmkit.v1.Secret") + proto.RegisterType((*SecretData)(nil), "docker.swarmkit.v1.SecretData") } func (m *Meta) Copy() *Meta { @@ -449,10 +463,31 @@ func (m *Secret) Copy() *Secret { } o := &Secret{ - ID: m.ID, - Meta: *m.Meta.Copy(), - Spec: *m.Spec.Copy(), - Version: m.Version, + ID: m.ID, + Meta: *m.Meta.Copy(), + Name: m.Name, + } + + if m.SecretData != nil { + o.SecretData = make([]*SecretData, 0, len(m.SecretData)) + for _, v := range m.SecretData { + o.SecretData = append(o.SecretData, v.Copy()) + } + } + + return o +} + +func (m *SecretData) Copy() *SecretData { + if m == nil { + return nil + } + + o := &SecretData{ + ID: m.ID, + Meta: *m.Meta.Copy(), + Spec: *m.Spec.Copy(), + Digest: m.Digest, } return o @@ -632,8 +667,23 @@ func (this *Secret) GoString() string { s = append(s, "&api.Secret{") s = append(s, "ID: "+fmt.Sprintf("%#v", this.ID)+",\n") s = append(s, "Meta: "+strings.Replace(this.Meta.GoString(), `&`, ``, 1)+",\n") + if this.SecretData != nil { + s = append(s, "SecretData: "+fmt.Sprintf("%#v", this.SecretData)+",\n") + } + s = append(s, "Name: "+fmt.Sprintf("%#v", this.Name)+",\n") + s = append(s, "}") + return strings.Join(s, "") +} +func (this *SecretData) GoString() string { + if this == nil { + return "nil" + } + s := make([]string, 0, 8) + s = append(s, "&api.SecretData{") + s = append(s, "ID: "+fmt.Sprintf("%#v", this.ID)+",\n") + s = append(s, "Meta: "+strings.Replace(this.Meta.GoString(), `&`, ``, 1)+",\n") s = append(s, "Spec: "+strings.Replace(this.Spec.GoString(), `&`, ``, 1)+",\n") - s = append(s, "Version: "+fmt.Sprintf("%#v", this.Version)+",\n") + s = append(s, "Digest: "+fmt.Sprintf("%#v", this.Digest)+",\n") s = append(s, "}") return strings.Join(s, "") } @@ -1277,19 +1327,69 @@ func (m *Secret) MarshalTo(data []byte) (int, error) { return 0, err } i += n32 + if len(m.SecretData) > 0 { + for _, msg := range m.SecretData { + data[i] = 0x1a + i++ + i = encodeVarintObjects(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if len(m.Name) > 0 { + data[i] = 0x22 + i++ + i = encodeVarintObjects(data, i, uint64(len(m.Name))) + i += copy(data[i:], m.Name) + } + return i, nil +} + +func (m *SecretData) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *SecretData) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.ID) > 0 { + data[i] = 0xa + i++ + i = encodeVarintObjects(data, i, uint64(len(m.ID))) + i += copy(data[i:], m.ID) + } + data[i] = 0x12 + i++ + i = encodeVarintObjects(data, i, uint64(m.Meta.Size())) + n33, err := m.Meta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n33 data[i] = 0x1a i++ i = encodeVarintObjects(data, i, uint64(m.Spec.Size())) - n33, err := m.Spec.MarshalTo(data[i:]) + n34, err := m.Spec.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n33 - if len(m.Version) > 0 { + i += n34 + if len(m.Digest) > 0 { data[i] = 0x22 i++ - i = encodeVarintObjects(data, i, uint64(len(m.Version))) - i += copy(data[i:], m.Version) + i = encodeVarintObjects(data, i, uint64(len(m.Digest))) + i += copy(data[i:], m.Digest) } return i, nil } @@ -1548,6 +1648,28 @@ func (m *Cluster) Size() (n int) { } func (m *Secret) Size() (n int) { + var l int + _ = l + l = len(m.ID) + if l > 0 { + n += 1 + l + sovObjects(uint64(l)) + } + l = m.Meta.Size() + n += 1 + l + sovObjects(uint64(l)) + if len(m.SecretData) > 0 { + for _, e := range m.SecretData { + l = e.Size() + n += 1 + l + sovObjects(uint64(l)) + } + } + l = len(m.Name) + if l > 0 { + n += 1 + l + sovObjects(uint64(l)) + } + return n +} + +func (m *SecretData) Size() (n int) { var l int _ = l l = len(m.ID) @@ -1558,7 +1680,7 @@ func (m *Secret) Size() (n int) { n += 1 + l + sovObjects(uint64(l)) l = m.Spec.Size() n += 1 + l + sovObjects(uint64(l)) - l = len(m.Version) + l = len(m.Digest) if l > 0 { n += 1 + l + sovObjects(uint64(l)) } @@ -1713,10 +1835,23 @@ func (this *Secret) String() string { return "nil" } s := strings.Join([]string{`&Secret{`, + `ID:` + fmt.Sprintf("%v", this.ID) + `,`, + `Meta:` + strings.Replace(strings.Replace(this.Meta.String(), "Meta", "Meta", 1), `&`, ``, 1) + `,`, + `SecretData:` + strings.Replace(fmt.Sprintf("%v", this.SecretData), "SecretData", "SecretData", 1) + `,`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `}`, + }, "") + return s +} +func (this *SecretData) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SecretData{`, `ID:` + fmt.Sprintf("%v", this.ID) + `,`, `Meta:` + strings.Replace(strings.Replace(this.Meta.String(), "Meta", "Meta", 1), `&`, ``, 1) + `,`, `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "SecretSpec", "SecretSpec", 1), `&`, ``, 1) + `,`, - `Version:` + fmt.Sprintf("%v", this.Version) + `,`, + `Digest:` + fmt.Sprintf("%v", this.Digest) + `,`, `}`, }, "") return s @@ -3680,6 +3815,175 @@ func (m *Secret) Unmarshal(data []byte) error { return fmt.Errorf("proto: Secret: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowObjects + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthObjects + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ID = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Meta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowObjects + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthObjects + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Meta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SecretData", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowObjects + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthObjects + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SecretData = append(m.SecretData, &SecretData{}) + if err := m.SecretData[len(m.SecretData)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowObjects + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthObjects + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipObjects(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthObjects + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SecretData) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowObjects + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SecretData: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SecretData: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { case 1: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field ID", wireType) @@ -3771,7 +4075,7 @@ func (m *Secret) Unmarshal(data []byte) error { iNdEx = postIndex case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Digest", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -3796,7 +4100,7 @@ func (m *Secret) Unmarshal(data []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Version = string(data[iNdEx:postIndex]) + m.Digest = string(data[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -3927,72 +4231,75 @@ var ( func init() { proto.RegisterFile("objects.proto", fileDescriptorObjects) } var fileDescriptorObjects = []byte{ - // 1064 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xbc, 0x56, 0x4f, 0x6f, 0x1b, 0xc5, - 0x1b, 0xce, 0xda, 0x1b, 0xdb, 0xfb, 0x3a, 0x8e, 0xf4, 0x9b, 0x5f, 0x55, 0x6d, 0x43, 0xb0, 0x83, - 0x2b, 0x50, 0x0f, 0x95, 0x2b, 0x4a, 0x41, 0xad, 0x68, 0x85, 0xfc, 0x27, 0x02, 0xab, 0x04, 0xa2, - 0x49, 0x49, 0x8f, 0xab, 0xc9, 0xee, 0xd4, 0x2c, 0xb6, 0x77, 0x56, 0x33, 0x63, 0x57, 0xbe, 0x21, - 0x3e, 0x00, 0x1f, 0x81, 0x33, 0xdf, 0x82, 0x6b, 0x0e, 0x1c, 0xb8, 0xc1, 0xc9, 0x22, 0xbe, 0x71, - 0x82, 0x8f, 0x80, 0x66, 0x76, 0xd6, 0xde, 0xc8, 0xeb, 0x90, 0x4a, 0x55, 0x6e, 0x33, 0x3b, 0xcf, - 0xf3, 0xbc, 0x7f, 0xe7, 0xdd, 0x81, 0x1a, 0x3b, 0xfb, 0x8e, 0xfa, 0x52, 0xb4, 0x62, 0xce, 0x24, - 0x43, 0x28, 0x60, 0xfe, 0x90, 0xf2, 0x96, 0x78, 0x4d, 0xf8, 0x78, 0x18, 0xca, 0xd6, 0xf4, 0xc3, - 0xbd, 0xaa, 0x9c, 0xc5, 0xd4, 0x00, 0xf6, 0xaa, 0x22, 0xa6, 0x7e, 0xba, 0xb9, 0x23, 0xc3, 0x31, - 0x15, 0x92, 0x8c, 0xe3, 0x07, 0xcb, 0x95, 0x39, 0xba, 0x35, 0x60, 0x03, 0xa6, 0x97, 0x0f, 0xd4, - 0x2a, 0xf9, 0xda, 0xfc, 0xc5, 0x02, 0xfb, 0x88, 0x4a, 0x82, 0x3e, 0x85, 0xf2, 0x94, 0x72, 0x11, - 0xb2, 0xc8, 0xb5, 0x0e, 0xac, 0x7b, 0xd5, 0x87, 0xef, 0xb4, 0xd6, 0x2d, 0xb7, 0x4e, 0x13, 0x48, - 0xc7, 0x3e, 0x9f, 0x37, 0xb6, 0x70, 0xca, 0x40, 0x4f, 0x01, 0x7c, 0x4e, 0x89, 0xa4, 0x81, 0x47, - 0xa4, 0x5b, 0xd0, 0xfc, 0x77, 0xf3, 0xf8, 0x2f, 0x52, 0xa7, 0xb0, 0x63, 0x08, 0x6d, 0xa9, 0xd8, - 0x93, 0x38, 0x48, 0xd9, 0xc5, 0x6b, 0xb1, 0x0d, 0xa1, 0x2d, 0x9b, 0x7f, 0x15, 0xc1, 0xfe, 0x8a, - 0x05, 0x14, 0xdd, 0x86, 0x42, 0x18, 0x68, 0xe7, 0x9d, 0x4e, 0x69, 0x31, 0x6f, 0x14, 0xfa, 0x3d, - 0x5c, 0x08, 0x03, 0xf4, 0x10, 0xec, 0x31, 0x95, 0xc4, 0xb8, 0xe5, 0xe6, 0x09, 0xab, 0x0c, 0x98, - 0x98, 0x34, 0x16, 0x7d, 0x02, 0xb6, 0x4a, 0xab, 0x71, 0x66, 0x3f, 0x8f, 0xa3, 0x6c, 0x9e, 0xc4, - 0xd4, 0x4f, 0x79, 0x0a, 0x8f, 0x0e, 0xa1, 0x1a, 0x50, 0xe1, 0xf3, 0x30, 0x96, 0x2a, 0x93, 0xb6, - 0xa6, 0xdf, 0xdd, 0x44, 0xef, 0xad, 0xa0, 0x38, 0xcb, 0x43, 0x4f, 0xa1, 0x24, 0x24, 0x91, 0x13, - 0xe1, 0x6e, 0x6b, 0x85, 0xfa, 0x46, 0x07, 0x34, 0xca, 0xb8, 0x60, 0x38, 0xe8, 0x0b, 0xd8, 0x1d, - 0x93, 0x88, 0x0c, 0x28, 0xf7, 0x8c, 0x4a, 0x49, 0xab, 0xbc, 0x97, 0x1b, 0x7a, 0x82, 0x4c, 0x84, - 0x70, 0x6d, 0x9c, 0xdd, 0xa2, 0x43, 0x00, 0x22, 0x25, 0xf1, 0xbf, 0x1d, 0xd3, 0x48, 0xba, 0x65, - 0xad, 0xf2, 0x7e, 0xae, 0x2f, 0x54, 0xbe, 0x66, 0x7c, 0xd8, 0x5e, 0x82, 0x71, 0x86, 0x88, 0x3e, - 0x87, 0xaa, 0x4f, 0xb9, 0x0c, 0x5f, 0x85, 0x3e, 0x91, 0xd4, 0xad, 0x68, 0x9d, 0x46, 0x9e, 0x4e, - 0x77, 0x05, 0x33, 0x41, 0x65, 0x99, 0xcd, 0xdf, 0x0b, 0x50, 0x3e, 0xa1, 0x7c, 0x1a, 0xfa, 0x6f, - 0xb7, 0xdc, 0x4f, 0x2e, 0x95, 0x3b, 0xd7, 0x33, 0x63, 0x76, 0xad, 0xe2, 0x8f, 0xa1, 0x42, 0xa3, - 0x20, 0x66, 0x61, 0x24, 0x4d, 0xb9, 0x73, 0xbb, 0xe5, 0xd0, 0x60, 0xf0, 0x12, 0x8d, 0x0e, 0xa1, - 0x96, 0x74, 0xb1, 0x77, 0xa9, 0xd6, 0x07, 0x79, 0xf4, 0x6f, 0x34, 0xd0, 0x14, 0x69, 0x67, 0x92, - 0xd9, 0xa1, 0x1e, 0xd4, 0x62, 0x4e, 0xa7, 0x21, 0x9b, 0x08, 0x4f, 0x07, 0x51, 0xba, 0x56, 0x10, - 0x78, 0x27, 0x65, 0xa9, 0x5d, 0xf3, 0xa7, 0x02, 0x54, 0x52, 0x1f, 0xd1, 0x23, 0x93, 0x0e, 0x6b, - 0xb3, 0x43, 0x29, 0x56, 0x4b, 0x25, 0x99, 0x78, 0x04, 0xdb, 0x31, 0xe3, 0x52, 0xb8, 0x85, 0x83, - 0xe2, 0xa6, 0x9e, 0x3d, 0x66, 0x5c, 0x76, 0x59, 0xf4, 0x2a, 0x1c, 0xe0, 0x04, 0x8c, 0x5e, 0x42, - 0x75, 0x1a, 0x72, 0x39, 0x21, 0x23, 0x2f, 0x8c, 0x85, 0x5b, 0xd4, 0xdc, 0x0f, 0xae, 0x32, 0xd9, - 0x3a, 0x4d, 0xf0, 0xfd, 0xe3, 0xce, 0xee, 0x62, 0xde, 0x80, 0xe5, 0x56, 0x60, 0x30, 0x52, 0xfd, - 0x58, 0xec, 0x1d, 0x81, 0xb3, 0x3c, 0x41, 0xf7, 0x01, 0xa2, 0xa4, 0x45, 0xbd, 0x65, 0xd3, 0xd4, - 0x16, 0xf3, 0x86, 0x63, 0x1a, 0xb7, 0xdf, 0xc3, 0x8e, 0x01, 0xf4, 0x03, 0x84, 0xc0, 0x26, 0x41, - 0xc0, 0x75, 0x0b, 0x39, 0x58, 0xaf, 0x9b, 0xbf, 0x6e, 0x83, 0xfd, 0x82, 0x88, 0xe1, 0x4d, 0x8f, - 0x19, 0x65, 0x73, 0xad, 0xe9, 0xee, 0x03, 0x88, 0xa4, 0x94, 0x2a, 0x1c, 0x7b, 0x15, 0x8e, 0x29, - 0xb0, 0x0a, 0xc7, 0x00, 0x92, 0x70, 0xc4, 0x88, 0x49, 0xdd, 0x5f, 0x36, 0xd6, 0x6b, 0x74, 0x17, - 0xca, 0x11, 0x0b, 0x34, 0xbd, 0xa4, 0xe9, 0xb0, 0x98, 0x37, 0x4a, 0x6a, 0xa4, 0xf4, 0x7b, 0xb8, - 0xa4, 0x8e, 0xfa, 0x81, 0xba, 0xb7, 0x24, 0x8a, 0x98, 0x24, 0x6a, 0x28, 0x09, 0x73, 0xff, 0x73, - 0x1b, 0xab, 0xbd, 0x82, 0xa5, 0xf7, 0x36, 0xc3, 0x44, 0xa7, 0xf0, 0xff, 0xd4, 0xdf, 0xac, 0x60, - 0xe5, 0x4d, 0x04, 0x91, 0x51, 0xc8, 0x9c, 0x64, 0xe6, 0xa4, 0xb3, 0x79, 0x4e, 0xea, 0x0c, 0xe6, - 0xcd, 0xc9, 0x0e, 0xd4, 0x02, 0x2a, 0x42, 0x4e, 0x03, 0x7d, 0x03, 0xa9, 0x0b, 0x07, 0xd6, 0xbd, - 0xdd, 0x0d, 0xbf, 0x1e, 0x23, 0x42, 0xf1, 0x8e, 0xe1, 0xe8, 0x1d, 0x6a, 0x43, 0xc5, 0xf4, 0x8d, - 0x70, 0xab, 0xba, 0x77, 0xaf, 0x39, 0x1f, 0x97, 0xb4, 0x4b, 0x13, 0x64, 0xe7, 0x8d, 0x26, 0xc8, - 0x13, 0x80, 0x11, 0x1b, 0x78, 0x01, 0x0f, 0xa7, 0x94, 0xbb, 0x35, 0xcd, 0xdd, 0xcb, 0xe3, 0xf6, - 0x34, 0x02, 0x3b, 0x23, 0x36, 0x48, 0x96, 0xcd, 0x1f, 0x2c, 0xf8, 0xdf, 0x9a, 0x53, 0xe8, 0x63, - 0x28, 0x1b, 0xb7, 0xae, 0x7a, 0x04, 0x18, 0x1e, 0x4e, 0xb1, 0x68, 0x1f, 0x1c, 0x75, 0x47, 0xa8, - 0x10, 0x34, 0xb9, 0xfd, 0x0e, 0x5e, 0x7d, 0x40, 0x2e, 0x94, 0xc9, 0x28, 0x24, 0xea, 0xac, 0xa8, - 0xcf, 0xd2, 0x6d, 0xf3, 0xc7, 0x02, 0x94, 0x8d, 0xd8, 0x4d, 0x8f, 0x73, 0x63, 0x76, 0xed, 0x66, - 0x3d, 0x83, 0x9d, 0x24, 0x9d, 0xa6, 0x25, 0xec, 0xff, 0x4c, 0x6a, 0x35, 0xc1, 0x27, 0xed, 0xf0, - 0x0c, 0xec, 0x30, 0x26, 0x63, 0x33, 0xca, 0x73, 0x2d, 0xf7, 0x8f, 0xdb, 0x47, 0x5f, 0xc7, 0x49, - 0x67, 0x57, 0x16, 0xf3, 0x86, 0xad, 0x3e, 0x60, 0x4d, 0x6b, 0xfe, 0x5d, 0x80, 0x72, 0x77, 0x34, - 0x11, 0x92, 0xf2, 0x9b, 0x4e, 0x88, 0x31, 0xbb, 0x96, 0x90, 0x2e, 0x94, 0x39, 0x63, 0xd2, 0xf3, - 0xc9, 0x55, 0xb9, 0xc0, 0x8c, 0xc9, 0x6e, 0xbb, 0xb3, 0xab, 0x88, 0x6a, 0x90, 0x24, 0x7b, 0x5c, - 0x52, 0xd4, 0x2e, 0x41, 0x2f, 0xe1, 0x76, 0x3a, 0x7e, 0xcf, 0x18, 0x93, 0x42, 0x72, 0x12, 0x7b, - 0x43, 0x3a, 0x53, 0xff, 0xbc, 0xe2, 0xa6, 0x97, 0xc9, 0x61, 0xe4, 0xf3, 0x99, 0x4e, 0xd4, 0x73, - 0x3a, 0xc3, 0xb7, 0x8c, 0x40, 0x27, 0xe5, 0x3f, 0xa7, 0x33, 0x81, 0x3e, 0x83, 0x7d, 0xba, 0x84, - 0x29, 0x45, 0x6f, 0x44, 0xc6, 0xea, 0xc7, 0xe2, 0xf9, 0x23, 0xe6, 0x0f, 0xf5, 0x6c, 0xb3, 0xf1, - 0x1d, 0x9a, 0x95, 0xfa, 0x32, 0x41, 0x74, 0x15, 0xa0, 0xf9, 0xb3, 0x05, 0xa5, 0x13, 0xea, 0x73, - 0x2a, 0xdf, 0x6a, 0xc2, 0x1f, 0x5f, 0x4a, 0x78, 0x3d, 0xff, 0x5f, 0xac, 0xac, 0xae, 0xe5, 0xdb, - 0x5d, 0xbd, 0xc3, 0xf5, 0x5c, 0x5f, 0x3e, 0xb2, 0x3b, 0xfb, 0xe7, 0x17, 0xf5, 0xad, 0x3f, 0x2e, - 0xea, 0x5b, 0xff, 0x5c, 0xd4, 0xad, 0xef, 0x17, 0x75, 0xeb, 0x7c, 0x51, 0xb7, 0x7e, 0x5b, 0xd4, - 0xad, 0x3f, 0x17, 0x75, 0xeb, 0xac, 0xa4, 0xdf, 0xf3, 0x1f, 0xfd, 0x1b, 0x00, 0x00, 0xff, 0xff, - 0xc3, 0x47, 0xf4, 0x5b, 0x3f, 0x0c, 0x00, 0x00, + // 1106 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xbc, 0x57, 0x4f, 0x6f, 0x1b, 0xc5, + 0x1b, 0xee, 0xda, 0x9b, 0xb5, 0xf7, 0x75, 0x1c, 0xe9, 0x37, 0xbf, 0x2a, 0xda, 0x86, 0x60, 0x07, + 0x57, 0xa0, 0x1e, 0x2a, 0x57, 0x94, 0x82, 0x5a, 0xd1, 0xaa, 0xf2, 0x9f, 0x08, 0xac, 0x12, 0x88, + 0x26, 0x25, 0x3d, 0xae, 0x26, 0xbb, 0x53, 0xb3, 0xd8, 0xde, 0x59, 0xcd, 0x8c, 0x5d, 0xe5, 0x86, + 0xf8, 0x00, 0x7c, 0x04, 0xee, 0xf0, 0x25, 0xb8, 0xe6, 0xc0, 0x81, 0x1b, 0x9c, 0x2c, 0xe2, 0x1b, + 0x27, 0xf8, 0x08, 0x68, 0x66, 0x67, 0x6d, 0x47, 0x5e, 0x87, 0x54, 0x8a, 0x72, 0x9b, 0xd9, 0x79, + 0x9e, 0x67, 0xde, 0xf7, 0x9d, 0x67, 0xde, 0xb1, 0xa1, 0xca, 0x4e, 0xbe, 0xa5, 0x81, 0x14, 0xcd, + 0x84, 0x33, 0xc9, 0x10, 0x0a, 0x59, 0x30, 0xa0, 0xbc, 0x29, 0xde, 0x10, 0x3e, 0x1a, 0x44, 0xb2, + 0x39, 0xf9, 0x70, 0xa7, 0x22, 0x4f, 0x13, 0x6a, 0x00, 0x3b, 0x15, 0x91, 0xd0, 0x20, 0x9b, 0xdc, + 0x91, 0xd1, 0x88, 0x0a, 0x49, 0x46, 0xc9, 0x83, 0xf9, 0xc8, 0x2c, 0xdd, 0xee, 0xb3, 0x3e, 0xd3, + 0xc3, 0x07, 0x6a, 0x94, 0x7e, 0x6d, 0xfc, 0x62, 0x81, 0x7d, 0x40, 0x25, 0x41, 0x9f, 0x42, 0x69, + 0x42, 0xb9, 0x88, 0x58, 0xec, 0x59, 0x7b, 0xd6, 0xbd, 0xca, 0xc3, 0x77, 0x9a, 0xab, 0x3b, 0x37, + 0x8f, 0x53, 0x48, 0xdb, 0x3e, 0x9b, 0xd6, 0x6f, 0xe1, 0x8c, 0x81, 0x9e, 0x02, 0x04, 0x9c, 0x12, + 0x49, 0x43, 0x9f, 0x48, 0xaf, 0xa0, 0xf9, 0xef, 0xe6, 0xf1, 0x5f, 0x66, 0x41, 0x61, 0xd7, 0x10, + 0x5a, 0x52, 0xb1, 0xc7, 0x49, 0x98, 0xb1, 0x8b, 0x57, 0x62, 0x1b, 0x42, 0x4b, 0x36, 0xfe, 0x2a, + 0x82, 0xfd, 0x25, 0x0b, 0x29, 0xda, 0x86, 0x42, 0x14, 0xea, 0xe0, 0xdd, 0xb6, 0x33, 0x9b, 0xd6, + 0x0b, 0xbd, 0x2e, 0x2e, 0x44, 0x21, 0x7a, 0x08, 0xf6, 0x88, 0x4a, 0x62, 0xc2, 0xf2, 0xf2, 0x84, + 0x55, 0x05, 0x4c, 0x4e, 0x1a, 0x8b, 0x3e, 0x01, 0x5b, 0x95, 0xd5, 0x04, 0xb3, 0x9b, 0xc7, 0x51, + 0x7b, 0x1e, 0x25, 0x34, 0xc8, 0x78, 0x0a, 0x8f, 0xf6, 0xa1, 0x12, 0x52, 0x11, 0xf0, 0x28, 0x91, + 0xaa, 0x92, 0xb6, 0xa6, 0xdf, 0x5d, 0x47, 0xef, 0x2e, 0xa0, 0x78, 0x99, 0x87, 0x9e, 0x82, 0x23, + 0x24, 0x91, 0x63, 0xe1, 0x6d, 0x68, 0x85, 0xda, 0xda, 0x00, 0x34, 0xca, 0x84, 0x60, 0x38, 0xe8, + 0x73, 0xd8, 0x1a, 0x91, 0x98, 0xf4, 0x29, 0xf7, 0x8d, 0x8a, 0xa3, 0x55, 0xde, 0xcb, 0x4d, 0x3d, + 0x45, 0xa6, 0x42, 0xb8, 0x3a, 0x5a, 0x9e, 0xa2, 0x7d, 0x00, 0x22, 0x25, 0x09, 0xbe, 0x19, 0xd1, + 0x58, 0x7a, 0x25, 0xad, 0xf2, 0x7e, 0x6e, 0x2c, 0x54, 0xbe, 0x61, 0x7c, 0xd0, 0x9a, 0x83, 0xf1, + 0x12, 0x11, 0x7d, 0x06, 0x95, 0x80, 0x72, 0x19, 0xbd, 0x8e, 0x02, 0x22, 0xa9, 0x57, 0xd6, 0x3a, + 0xf5, 0x3c, 0x9d, 0xce, 0x02, 0x66, 0x92, 0x5a, 0x66, 0x36, 0x7e, 0x2f, 0x40, 0xe9, 0x88, 0xf2, + 0x49, 0x14, 0x5c, 0xef, 0x71, 0x3f, 0xb9, 0x70, 0xdc, 0xb9, 0x91, 0x99, 0x6d, 0x57, 0x4e, 0xfc, + 0x31, 0x94, 0x69, 0x1c, 0x26, 0x2c, 0x8a, 0xa5, 0x39, 0xee, 0x5c, 0xb7, 0xec, 0x1b, 0x0c, 0x9e, + 0xa3, 0xd1, 0x3e, 0x54, 0x53, 0x17, 0xfb, 0x17, 0xce, 0x7a, 0x2f, 0x8f, 0xfe, 0xb5, 0x06, 0x9a, + 0x43, 0xda, 0x1c, 0x2f, 0xcd, 0x50, 0x17, 0xaa, 0x09, 0xa7, 0x93, 0x88, 0x8d, 0x85, 0xaf, 0x93, + 0x70, 0xae, 0x94, 0x04, 0xde, 0xcc, 0x58, 0x6a, 0xd6, 0xf8, 0xb1, 0x00, 0xe5, 0x2c, 0x46, 0xf4, + 0xc8, 0x94, 0xc3, 0x5a, 0x1f, 0x50, 0x86, 0xd5, 0x52, 0x69, 0x25, 0x1e, 0xc1, 0x46, 0xc2, 0xb8, + 0x14, 0x5e, 0x61, 0xaf, 0xb8, 0xce, 0xb3, 0x87, 0x8c, 0xcb, 0x0e, 0x8b, 0x5f, 0x47, 0x7d, 0x9c, + 0x82, 0xd1, 0x2b, 0xa8, 0x4c, 0x22, 0x2e, 0xc7, 0x64, 0xe8, 0x47, 0x89, 0xf0, 0x8a, 0x9a, 0xfb, + 0xc1, 0x65, 0x5b, 0x36, 0x8f, 0x53, 0x7c, 0xef, 0xb0, 0xbd, 0x35, 0x9b, 0xd6, 0x61, 0x3e, 0x15, + 0x18, 0x8c, 0x54, 0x2f, 0x11, 0x3b, 0x07, 0xe0, 0xce, 0x57, 0xd0, 0x7d, 0x80, 0x38, 0xb5, 0xa8, + 0x3f, 0x37, 0x4d, 0x75, 0x36, 0xad, 0xbb, 0xc6, 0xb8, 0xbd, 0x2e, 0x76, 0x0d, 0xa0, 0x17, 0x22, + 0x04, 0x36, 0x09, 0x43, 0xae, 0x2d, 0xe4, 0x62, 0x3d, 0x6e, 0xfc, 0xba, 0x01, 0xf6, 0x4b, 0x22, + 0x06, 0x37, 0xdd, 0x66, 0xd4, 0x9e, 0x2b, 0xa6, 0xbb, 0x0f, 0x20, 0xd2, 0xa3, 0x54, 0xe9, 0xd8, + 0x8b, 0x74, 0xcc, 0x01, 0xab, 0x74, 0x0c, 0x20, 0x4d, 0x47, 0x0c, 0x99, 0xd4, 0xfe, 0xb2, 0xb1, + 0x1e, 0xa3, 0xbb, 0x50, 0x8a, 0x59, 0xa8, 0xe9, 0x8e, 0xa6, 0xc3, 0x6c, 0x5a, 0x77, 0x54, 0x4b, + 0xe9, 0x75, 0xb1, 0xa3, 0x96, 0x7a, 0xa1, 0xba, 0xb7, 0x24, 0x8e, 0x99, 0x24, 0xaa, 0x29, 0x09, + 0x73, 0xff, 0x73, 0x8d, 0xd5, 0x5a, 0xc0, 0xb2, 0x7b, 0xbb, 0xc4, 0x44, 0xc7, 0xf0, 0xff, 0x2c, + 0xde, 0x65, 0xc1, 0xf2, 0xdb, 0x08, 0x22, 0xa3, 0xb0, 0xb4, 0xb2, 0xd4, 0x27, 0xdd, 0xf5, 0x7d, + 0x52, 0x57, 0x30, 0xaf, 0x4f, 0xb6, 0xa1, 0x1a, 0x52, 0x11, 0x71, 0x1a, 0xea, 0x1b, 0x48, 0x3d, + 0xd8, 0xb3, 0xee, 0x6d, 0xad, 0x79, 0x7a, 0x8c, 0x08, 0xc5, 0x9b, 0x86, 0xa3, 0x67, 0xa8, 0x05, + 0x65, 0xe3, 0x1b, 0xe1, 0x55, 0xb4, 0x77, 0xaf, 0xd8, 0x1f, 0xe7, 0xb4, 0x0b, 0x1d, 0x64, 0xf3, + 0xad, 0x3a, 0xc8, 0x13, 0x80, 0x21, 0xeb, 0xfb, 0x21, 0x8f, 0x26, 0x94, 0x7b, 0x55, 0xcd, 0xdd, + 0xc9, 0xe3, 0x76, 0x35, 0x02, 0xbb, 0x43, 0xd6, 0x4f, 0x87, 0x8d, 0xef, 0x2d, 0xf8, 0xdf, 0x4a, + 0x50, 0xe8, 0x63, 0x28, 0x99, 0xb0, 0x2e, 0xfb, 0x11, 0x60, 0x78, 0x38, 0xc3, 0xa2, 0x5d, 0x70, + 0xd5, 0x1d, 0xa1, 0x42, 0xd0, 0xf4, 0xf6, 0xbb, 0x78, 0xf1, 0x01, 0x79, 0x50, 0x22, 0xc3, 0x88, + 0xa8, 0xb5, 0xa2, 0x5e, 0xcb, 0xa6, 0x8d, 0x1f, 0x0a, 0x50, 0x32, 0x62, 0x37, 0xdd, 0xce, 0xcd, + 0xb6, 0x2b, 0x37, 0xeb, 0x19, 0x6c, 0xa6, 0xe5, 0x34, 0x96, 0xb0, 0xff, 0xb3, 0xa8, 0x95, 0x14, + 0x9f, 0xda, 0xe1, 0x19, 0xd8, 0x51, 0x42, 0x46, 0xa6, 0x95, 0xe7, 0xee, 0xdc, 0x3b, 0x6c, 0x1d, + 0x7c, 0x95, 0xa4, 0xce, 0x2e, 0xcf, 0xa6, 0x75, 0x5b, 0x7d, 0xc0, 0x9a, 0xd6, 0xf8, 0xbb, 0x00, + 0xa5, 0xce, 0x70, 0x2c, 0x24, 0xe5, 0x37, 0x5d, 0x10, 0xb3, 0xed, 0x4a, 0x41, 0x3a, 0x50, 0xe2, + 0x8c, 0x49, 0x3f, 0x20, 0x97, 0xd5, 0x02, 0x33, 0x26, 0x3b, 0xad, 0xf6, 0x96, 0x22, 0xaa, 0x46, + 0x92, 0xce, 0xb1, 0xa3, 0xa8, 0x1d, 0x82, 0x5e, 0xc1, 0x76, 0xd6, 0x7e, 0x4f, 0x18, 0x93, 0x42, + 0x72, 0x92, 0xf8, 0x03, 0x7a, 0xaa, 0xde, 0xbc, 0xe2, 0xba, 0x5f, 0x26, 0xfb, 0x71, 0xc0, 0x4f, + 0x75, 0xa1, 0x5e, 0xd0, 0x53, 0x7c, 0xdb, 0x08, 0xb4, 0x33, 0xfe, 0x0b, 0x7a, 0x2a, 0xd0, 0x73, + 0xd8, 0xa5, 0x73, 0x98, 0x52, 0xf4, 0x87, 0x64, 0xa4, 0x1e, 0x16, 0x3f, 0x18, 0xb2, 0x60, 0xa0, + 0x7b, 0x9b, 0x8d, 0xef, 0xd0, 0x65, 0xa9, 0x2f, 0x52, 0x44, 0x47, 0x01, 0x1a, 0x3f, 0x59, 0xe0, + 0x1c, 0xd1, 0x80, 0x53, 0x79, 0xad, 0x05, 0x7f, 0x0e, 0x15, 0xa1, 0x55, 0xfd, 0x90, 0x48, 0x62, + 0x5e, 0xb5, 0x5a, 0xfe, 0x93, 0xac, 0x60, 0x5d, 0x22, 0x09, 0x06, 0x31, 0x1f, 0xab, 0x9e, 0x1d, + 0x93, 0x51, 0xea, 0x3f, 0x17, 0xeb, 0x71, 0xe3, 0x67, 0x0b, 0x60, 0x01, 0xbf, 0xd6, 0x78, 0x1f, + 0x5f, 0x30, 0xc8, 0x25, 0x81, 0xae, 0xf8, 0x63, 0x1b, 0x9c, 0x30, 0xea, 0x53, 0x21, 0x4d, 0xa8, + 0x66, 0xd6, 0xde, 0x3d, 0x3b, 0xaf, 0xdd, 0xfa, 0xe3, 0xbc, 0x76, 0xeb, 0x9f, 0xf3, 0x9a, 0xf5, + 0xdd, 0xac, 0x66, 0x9d, 0xcd, 0x6a, 0xd6, 0x6f, 0xb3, 0x9a, 0xf5, 0xe7, 0xac, 0x66, 0x9d, 0x38, + 0xfa, 0xdf, 0xc7, 0x47, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0xca, 0xbe, 0x67, 0x2b, 0xed, 0x0c, + 0x00, 0x00, } diff --git a/api/objects.proto b/api/objects.proto index e948493e46..ce18182201 100644 --- a/api/objects.proto +++ b/api/objects.proto @@ -233,8 +233,21 @@ message Secret { Meta meta = 2 [(gogoproto.nullable) = false]; - SecretSpec spec = 3 [(gogoproto.nullable) = false]; + repeated SecretData secret_data = 3; - // Version is a hash of the secret. - string version = 4; + // Name of the secret + string name = 4; } + +// SecretData is represents a specific version of a secret, and is immutable +message SecretData { + string id = 1 [(gogoproto.customname) = "ID"]; + + Meta meta = 2 [(gogoproto.nullable) = false]; + + SecretSpec spec = 3 [(gogoproto.nullable) = false]; + + // Digest represents the cryptographic digest of the secret data + string digest = 4; +} + diff --git a/api/specs.pb.go b/api/specs.pb.go index bc2353fe80..d22eae66f0 100644 --- a/api/specs.pb.go +++ b/api/specs.pb.go @@ -564,7 +564,7 @@ type SecretSpec struct { // Type distinguishes the different kinds of secrets in the system. Type SecretType `protobuf:"varint,2,opt,name=type,proto3,enum=docker.swarmkit.v1.SecretType" json:"type,omitempty"` // Secret payload. - Data []*SecretData `protobuf:"bytes,4,rep,name=data" json:"data,omitempty"` + Data []byte `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` } func (m *SecretSpec) Reset() { *m = SecretSpec{} } @@ -851,13 +851,7 @@ func (m *SecretSpec) Copy() *SecretSpec { o := &SecretSpec{ Annotations: *m.Annotations.Copy(), Type: m.Type, - } - - if m.Data != nil { - o.Data = make([]*SecretData, 0, len(m.Data)) - for _, v := range m.Data { - o.Data = append(o.Data, v.Copy()) - } + Data: m.Data, } return o @@ -1094,9 +1088,7 @@ func (this *SecretSpec) GoString() string { s = append(s, "&api.SecretSpec{") s = append(s, "Annotations: "+strings.Replace(this.Annotations.GoString(), `&`, ``, 1)+",\n") s = append(s, "Type: "+fmt.Sprintf("%#v", this.Type)+",\n") - if this.Data != nil { - s = append(s, "Data: "+fmt.Sprintf("%#v", this.Data)+",\n") - } + s = append(s, "Data: "+fmt.Sprintf("%#v", this.Data)+",\n") s = append(s, "}") return strings.Join(s, "") } @@ -1835,16 +1827,10 @@ func (m *SecretSpec) MarshalTo(data []byte) (int, error) { i = encodeVarintSpecs(data, i, uint64(m.Type)) } if len(m.Data) > 0 { - for _, msg := range m.Data { - data[i] = 0x22 - i++ - i = encodeVarintSpecs(data, i, uint64(msg.Size())) - n, err := msg.MarshalTo(data[i:]) - if err != nil { - return 0, err - } - i += n - } + data[i] = 0x1a + i++ + i = encodeVarintSpecs(data, i, uint64(len(m.Data))) + i += copy(data[i:], m.Data) } return i, nil } @@ -2161,11 +2147,9 @@ func (m *SecretSpec) Size() (n int) { if m.Type != 0 { n += 1 + sovSpecs(uint64(m.Type)) } - if len(m.Data) > 0 { - for _, e := range m.Data { - l = e.Size() - n += 1 + l + sovSpecs(uint64(l)) - } + l = len(m.Data) + if l > 0 { + n += 1 + l + sovSpecs(uint64(l)) } return n } @@ -2385,7 +2369,7 @@ func (this *SecretSpec) String() string { s := strings.Join([]string{`&SecretSpec{`, `Annotations:` + strings.Replace(strings.Replace(this.Annotations.String(), "Annotations", "Annotations", 1), `&`, ``, 1) + `,`, `Type:` + fmt.Sprintf("%v", this.Type) + `,`, - `Data:` + strings.Replace(fmt.Sprintf("%v", this.Data), "SecretData", "SecretData", 1) + `,`, + `Data:` + fmt.Sprintf("%v", this.Data) + `,`, `}`, }, "") return s @@ -4501,11 +4485,11 @@ func (m *SecretSpec) Unmarshal(data []byte) error { break } } - case 4: + case 3: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType) } - var msglen int + var byteLen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowSpecs @@ -4515,21 +4499,21 @@ func (m *SecretSpec) Unmarshal(data []byte) error { } b := data[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + byteLen |= (int(b) & 0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + if byteLen < 0 { return ErrInvalidLengthSpecs } - postIndex := iNdEx + msglen + postIndex := iNdEx + byteLen if postIndex > l { return io.ErrUnexpectedEOF } - m.Data = append(m.Data, &SecretData{}) - if err := m.Data[len(m.Data)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { - return err + m.Data = append(m.Data[:0], data[iNdEx:postIndex]...) + if m.Data == nil { + m.Data = []byte{} } iNdEx = postIndex default: @@ -4661,97 +4645,97 @@ var ( func init() { proto.RegisterFile("specs.proto", fileDescriptorSpecs) } var fileDescriptorSpecs = []byte{ - // 1463 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x57, 0x4f, 0x6f, 0x1b, 0x45, - 0x14, 0xf7, 0x26, 0x1b, 0xc7, 0x7e, 0xeb, 0xb4, 0xee, 0xa8, 0x7f, 0xb6, 0x6e, 0x71, 0x5c, 0xb7, - 0x94, 0x14, 0x44, 0x02, 0x06, 0x95, 0x96, 0x52, 0x81, 0xff, 0x91, 0x9a, 0x90, 0xd4, 0x9a, 0xa4, - 0x95, 0x38, 0x59, 0x93, 0xdd, 0x89, 0xb3, 0xca, 0x7a, 0x77, 0x99, 0x9d, 0x75, 0x95, 0x1b, 0xc7, - 0x2a, 0x07, 0xbe, 0x41, 0x4e, 0x48, 0x7c, 0x03, 0x8e, 0xdc, 0x7b, 0xe4, 0xc8, 0x29, 0x22, 0xb9, - 0x22, 0x24, 0x24, 0xbe, 0x00, 0x9a, 0xd9, 0xb1, 0xbd, 0xa6, 0x9b, 0xb4, 0x12, 0xb9, 0xcd, 0xbc, - 0xfd, 0xfd, 0xde, 0xbc, 0x7d, 0xef, 0xb7, 0xef, 0xcd, 0x82, 0x11, 0x06, 0xd4, 0x0a, 0x97, 0x03, - 0xe6, 0x73, 0x1f, 0x21, 0xdb, 0xb7, 0xf6, 0x28, 0x5b, 0x0e, 0x5f, 0x10, 0x36, 0xd8, 0x73, 0xf8, - 0xf2, 0xf0, 0xe3, 0x92, 0xc1, 0xf7, 0x03, 0xaa, 0x00, 0xa5, 0xcb, 0x7d, 0xbf, 0xef, 0xcb, 0xe5, - 0x8a, 0x58, 0x29, 0xeb, 0x35, 0x3b, 0x62, 0x84, 0x3b, 0xbe, 0xb7, 0x32, 0x5a, 0xc4, 0x0f, 0xaa, - 0x3f, 0xea, 0x90, 0xdb, 0xf0, 0x6d, 0xba, 0x19, 0x50, 0x0b, 0xad, 0x82, 0x41, 0x3c, 0xcf, 0xe7, - 0x12, 0x10, 0x9a, 0x5a, 0x45, 0x5b, 0x32, 0x6a, 0x8b, 0xcb, 0xaf, 0x1f, 0xb9, 0x5c, 0x9f, 0xc0, - 0x1a, 0xfa, 0xab, 0xa3, 0xc5, 0x0c, 0x4e, 0x32, 0xd1, 0x47, 0xa0, 0x33, 0xdf, 0xa5, 0xe6, 0x4c, - 0x45, 0x5b, 0xba, 0x50, 0xbb, 0x99, 0xe6, 0x41, 0x1c, 0x8a, 0x7d, 0x97, 0x62, 0x89, 0x44, 0xab, - 0x00, 0x03, 0x3a, 0xd8, 0xa6, 0x2c, 0xdc, 0x75, 0x02, 0x73, 0x56, 0xf2, 0xde, 0x3b, 0x8d, 0x27, - 0x82, 0x5d, 0x5e, 0x1f, 0xc3, 0x71, 0x82, 0x8a, 0xd6, 0xa1, 0x40, 0x86, 0xc4, 0x71, 0xc9, 0xb6, - 0xe3, 0x3a, 0x7c, 0xdf, 0xd4, 0xa5, 0xab, 0x7b, 0x67, 0xba, 0xaa, 0x27, 0x08, 0x78, 0x8a, 0x5e, - 0xb5, 0x01, 0x26, 0x07, 0xa1, 0xbb, 0x30, 0xdf, 0x6d, 0x6f, 0xb4, 0x3a, 0x1b, 0xab, 0xc5, 0x4c, - 0xe9, 0xfa, 0xc1, 0x61, 0xe5, 0x8a, 0xf0, 0x31, 0x01, 0x74, 0xa9, 0x67, 0x3b, 0x5e, 0x1f, 0x2d, - 0x41, 0xae, 0xde, 0x6c, 0xb6, 0xbb, 0x5b, 0xed, 0x56, 0x51, 0x2b, 0x95, 0x0e, 0x0e, 0x2b, 0x57, - 0xa7, 0x81, 0x75, 0xcb, 0xa2, 0x01, 0xa7, 0x76, 0x49, 0x7f, 0xf9, 0x53, 0x39, 0x53, 0x7d, 0xa9, - 0x41, 0x21, 0x19, 0x04, 0xba, 0x0b, 0xd9, 0x7a, 0x73, 0xab, 0xf3, 0xbc, 0x5d, 0xcc, 0x4c, 0xe8, - 0x49, 0x44, 0xdd, 0xe2, 0xce, 0x90, 0xa2, 0x3b, 0x30, 0xd7, 0xad, 0x3f, 0xdb, 0x6c, 0x17, 0xb5, - 0x49, 0x38, 0x49, 0x58, 0x97, 0x44, 0xa1, 0x44, 0xb5, 0x70, 0xbd, 0xb3, 0x51, 0x9c, 0x49, 0x47, - 0xb5, 0x18, 0x71, 0x3c, 0x15, 0xca, 0xf1, 0x2c, 0x18, 0x9b, 0x94, 0x0d, 0x1d, 0xeb, 0x9c, 0x35, - 0x71, 0x1f, 0x74, 0x4e, 0xc2, 0x3d, 0xa9, 0x09, 0x23, 0x5d, 0x13, 0x5b, 0x24, 0xdc, 0x13, 0x87, - 0x2a, 0xba, 0xc4, 0x0b, 0x65, 0x30, 0x1a, 0xb8, 0x8e, 0x45, 0x38, 0xb5, 0xa5, 0x32, 0x8c, 0xda, - 0xbb, 0x69, 0x6c, 0x3c, 0x46, 0xa9, 0xf8, 0x9f, 0x64, 0x70, 0x82, 0x8a, 0x1e, 0x41, 0xb6, 0xef, - 0xfa, 0xdb, 0xc4, 0x95, 0x9a, 0x30, 0x6a, 0xb7, 0xd2, 0x9c, 0xac, 0x4a, 0xc4, 0xc4, 0x81, 0xa2, - 0xa0, 0x07, 0x90, 0x8d, 0x02, 0x9b, 0x70, 0x6a, 0x66, 0x25, 0xb9, 0x92, 0x46, 0x7e, 0x26, 0x11, - 0x4d, 0xdf, 0xdb, 0x71, 0xfa, 0x58, 0xe1, 0xd1, 0x1a, 0xe4, 0x3c, 0xca, 0x5f, 0xf8, 0x6c, 0x2f, - 0x34, 0xe7, 0x2b, 0xb3, 0x4b, 0x46, 0xed, 0x83, 0x54, 0x31, 0xc6, 0x98, 0x3a, 0xe7, 0xc4, 0xda, - 0x1d, 0x50, 0x8f, 0xc7, 0x6e, 0x1a, 0x33, 0xa6, 0x86, 0xc7, 0x0e, 0xd0, 0x17, 0x90, 0xa3, 0x9e, - 0x1d, 0xf8, 0x8e, 0xc7, 0xcd, 0xdc, 0xe9, 0x81, 0xb4, 0x15, 0x46, 0x24, 0x13, 0x8f, 0x19, 0x8d, - 0x2c, 0xe8, 0x03, 0xdf, 0xa6, 0xd5, 0x15, 0xb8, 0xf4, 0x5a, 0xb2, 0x50, 0x09, 0x72, 0x2a, 0x59, - 0x71, 0x95, 0x75, 0x3c, 0xde, 0x57, 0x2f, 0xc2, 0xc2, 0x54, 0x62, 0xaa, 0x7f, 0xce, 0x42, 0x6e, - 0x54, 0x2d, 0x54, 0x87, 0xbc, 0xe5, 0x7b, 0x9c, 0x38, 0x1e, 0x65, 0x4a, 0x20, 0xa9, 0xb9, 0x6d, - 0x8e, 0x40, 0x82, 0xf5, 0x24, 0x83, 0x27, 0x2c, 0xf4, 0x35, 0xe4, 0x19, 0x0d, 0xfd, 0x88, 0x59, - 0x34, 0x54, 0x0a, 0x59, 0x4a, 0xaf, 0x71, 0x0c, 0xc2, 0xf4, 0xfb, 0xc8, 0x61, 0x54, 0xe4, 0x29, - 0xc4, 0x13, 0x2a, 0x7a, 0x04, 0xf3, 0x8c, 0x86, 0x9c, 0x30, 0x7e, 0x56, 0x91, 0x71, 0x0c, 0xe9, - 0xfa, 0xae, 0x63, 0xed, 0xe3, 0x11, 0x03, 0x3d, 0x82, 0x7c, 0xe0, 0x12, 0x4b, 0x7a, 0x35, 0xe7, - 0x24, 0xfd, 0x9d, 0x34, 0x7a, 0x77, 0x04, 0xc2, 0x13, 0x3c, 0x7a, 0x08, 0xe0, 0xfa, 0xfd, 0x9e, - 0xcd, 0x9c, 0x21, 0x65, 0x4a, 0x24, 0xa5, 0x34, 0x76, 0x4b, 0x22, 0x70, 0xde, 0xf5, 0xfb, 0xf1, - 0x12, 0xad, 0xfe, 0x2f, 0x85, 0x24, 0xd4, 0xb1, 0x06, 0x40, 0xc6, 0x4f, 0x95, 0x3e, 0xee, 0xbd, - 0x95, 0x2b, 0x55, 0x91, 0x04, 0xbd, 0x91, 0x87, 0x79, 0x16, 0x79, 0xdc, 0x19, 0xd0, 0xea, 0x1a, - 0x5c, 0x49, 0x65, 0xa0, 0x1a, 0x14, 0xc6, 0x35, 0xec, 0x39, 0xb6, 0x2c, 0x7e, 0xbe, 0x71, 0xf1, - 0xe4, 0x68, 0xd1, 0x18, 0x17, 0xbb, 0xd3, 0xc2, 0xc6, 0x18, 0xd4, 0xb1, 0xab, 0x7f, 0xe9, 0xb0, - 0x30, 0xa5, 0x04, 0x74, 0x19, 0xe6, 0x9c, 0x01, 0xe9, 0xd3, 0x98, 0x8e, 0xe3, 0x0d, 0x6a, 0x43, - 0xd6, 0x25, 0xdb, 0xd4, 0x15, 0x7a, 0x10, 0x39, 0xf9, 0xf0, 0x8d, 0x92, 0x5a, 0xfe, 0x56, 0xe2, - 0xdb, 0x1e, 0x67, 0xfb, 0x58, 0x91, 0x91, 0x09, 0xf3, 0x96, 0x3f, 0x18, 0x10, 0x4f, 0xf4, 0x8e, - 0xd9, 0xa5, 0x3c, 0x1e, 0x6d, 0x11, 0x02, 0x9d, 0xb0, 0x7e, 0x68, 0xea, 0xd2, 0x2c, 0xd7, 0xa8, - 0x08, 0xb3, 0xd4, 0x1b, 0x9a, 0x73, 0xd2, 0x24, 0x96, 0xc2, 0x62, 0x3b, 0x71, 0x41, 0xf3, 0x58, - 0x2c, 0x05, 0x2f, 0x0a, 0x29, 0x33, 0xe7, 0xa5, 0x49, 0xae, 0xd1, 0x67, 0x90, 0x1d, 0xf8, 0x91, - 0xc7, 0x43, 0x33, 0x27, 0x83, 0xbd, 0x9e, 0x16, 0xec, 0xba, 0x40, 0xa8, 0xde, 0xa6, 0xe0, 0xe8, - 0x09, 0x5c, 0x0a, 0xb9, 0x1f, 0xf4, 0xfa, 0x8c, 0x58, 0xb4, 0x17, 0x50, 0xe6, 0xf8, 0xb6, 0x99, - 0x3f, 0xbd, 0x45, 0xb6, 0xd4, 0xf8, 0xc6, 0x17, 0x05, 0x6d, 0x55, 0xb0, 0xba, 0x92, 0x84, 0xba, - 0x50, 0x08, 0x22, 0xd7, 0xed, 0xf9, 0x41, 0xdc, 0xa9, 0x41, 0x3a, 0x79, 0x8b, 0xac, 0x75, 0x23, - 0xd7, 0x7d, 0x1a, 0x93, 0xb0, 0x11, 0x4c, 0x36, 0xe8, 0x2a, 0x64, 0xfb, 0xcc, 0x8f, 0x82, 0xd0, - 0x34, 0x64, 0x3e, 0xd4, 0x0e, 0x3d, 0x86, 0xf9, 0x90, 0x5a, 0x8c, 0xf2, 0xd0, 0x2c, 0xc8, 0xb7, - 0xbd, 0x9d, 0x76, 0xc8, 0xa6, 0x84, 0x60, 0xba, 0x43, 0x19, 0xf5, 0x2c, 0x8a, 0x47, 0x9c, 0xd2, - 0x43, 0x30, 0x12, 0x85, 0x12, 0x09, 0xde, 0xa3, 0xfb, 0xaa, 0xf6, 0x62, 0x29, 0xf4, 0x30, 0x24, - 0x6e, 0x14, 0x5f, 0x1f, 0xf2, 0x38, 0xde, 0x7c, 0x3e, 0xf3, 0x40, 0x2b, 0xd5, 0xc0, 0x48, 0x44, - 0x8b, 0x6e, 0xc3, 0x02, 0xa3, 0x7d, 0x27, 0xe4, 0x6c, 0xbf, 0x47, 0x22, 0xbe, 0x6b, 0x7e, 0x25, - 0x09, 0x85, 0x91, 0xb1, 0x1e, 0xf1, 0xdd, 0xea, 0x3f, 0x1a, 0x14, 0x92, 0xfd, 0x10, 0x35, 0xe3, - 0x2e, 0x28, 0x4f, 0xbc, 0x50, 0x5b, 0x79, 0x53, 0xff, 0x94, 0x3d, 0xc7, 0x8d, 0xc4, 0x89, 0xeb, - 0xe2, 0xce, 0x22, 0xc9, 0xe8, 0x53, 0x98, 0x0b, 0x7c, 0xc6, 0x47, 0xe2, 0x2c, 0xa7, 0xf6, 0x09, - 0x9f, 0x8d, 0xbe, 0xd1, 0x18, 0x5c, 0xdd, 0x85, 0x0b, 0xd3, 0xde, 0xd0, 0x1d, 0x98, 0x7d, 0xde, - 0xe9, 0x16, 0x33, 0xa5, 0x1b, 0x07, 0x87, 0x95, 0x6b, 0xd3, 0x0f, 0x9f, 0x3b, 0x8c, 0x47, 0xc4, - 0xed, 0x74, 0xd1, 0xfb, 0x30, 0xd7, 0xda, 0xd8, 0xc4, 0xb8, 0xa8, 0x95, 0x16, 0x0f, 0x0e, 0x2b, - 0x37, 0xa6, 0x71, 0xe2, 0x91, 0x1f, 0x79, 0x36, 0xf6, 0xb7, 0xc7, 0x63, 0xfc, 0x97, 0x19, 0x30, - 0xd4, 0x37, 0x7b, 0xbe, 0x63, 0xfc, 0x4b, 0x58, 0x88, 0x7b, 0x5c, 0xcf, 0x92, 0xaf, 0xa6, 0xba, - 0xf5, 0x59, 0xad, 0xae, 0x10, 0x13, 0xe2, 0x54, 0xa0, 0x5b, 0x50, 0x70, 0x82, 0xe1, 0xfd, 0x1e, - 0xf5, 0xc8, 0xb6, 0xab, 0x26, 0x7a, 0x0e, 0x1b, 0xc2, 0xd6, 0x8e, 0x4d, 0x62, 0x14, 0x39, 0x1e, - 0xa7, 0xcc, 0x53, 0xb3, 0x3a, 0x87, 0xc7, 0x7b, 0xf4, 0x18, 0x74, 0x27, 0x20, 0x03, 0xd5, 0x9f, - 0x53, 0xdf, 0xa0, 0xd3, 0xad, 0xaf, 0x2b, 0x89, 0x34, 0x72, 0x27, 0x47, 0x8b, 0xba, 0x30, 0x60, - 0x49, 0x43, 0xe5, 0x51, 0x8b, 0x14, 0x27, 0xc9, 0xaf, 0x3a, 0x87, 0x13, 0x96, 0xea, 0xcf, 0x3a, - 0x18, 0x4d, 0x37, 0x0a, 0xb9, 0xea, 0x4d, 0xe7, 0x96, 0xb7, 0xef, 0xe0, 0x12, 0x91, 0x97, 0x3e, - 0xe2, 0x89, 0x0f, 0x5d, 0x8e, 0x1e, 0x95, 0xbb, 0x3b, 0xa9, 0xee, 0xc6, 0xe0, 0x78, 0x4c, 0x35, - 0xb2, 0xc2, 0xa7, 0xa9, 0xe1, 0x22, 0xf9, 0xcf, 0x13, 0xb4, 0x09, 0x0b, 0x3e, 0xb3, 0x76, 0x69, - 0xc8, 0xe3, 0xde, 0xa0, 0x2e, 0x49, 0xa9, 0xd7, 0xe7, 0xa7, 0x49, 0xa0, 0xba, 0x62, 0xc4, 0xd1, - 0x4e, 0xfb, 0x40, 0x0f, 0x40, 0x67, 0x64, 0x67, 0x34, 0x46, 0x53, 0xf5, 0x8d, 0xc9, 0x0e, 0x9f, - 0x72, 0x21, 0x19, 0xe8, 0x1b, 0x00, 0xdb, 0x09, 0x03, 0xc2, 0xad, 0x5d, 0xca, 0x54, 0x9d, 0x52, - 0x5f, 0xb1, 0x35, 0x46, 0x4d, 0x79, 0x49, 0xb0, 0xd1, 0x1a, 0xe4, 0x2d, 0x32, 0x52, 0x5a, 0xf6, - 0xf4, 0xb6, 0xd8, 0xac, 0x2b, 0x17, 0x45, 0xe1, 0xe2, 0xe4, 0x68, 0x31, 0x37, 0xb2, 0xe0, 0x9c, - 0x45, 0x94, 0xf2, 0xd6, 0x60, 0x41, 0xdc, 0x28, 0x7b, 0x36, 0xdd, 0x21, 0x91, 0xcb, 0x43, 0xd9, - 0xc1, 0x4f, 0xb9, 0x41, 0x89, 0xcb, 0x4d, 0x4b, 0xe1, 0x54, 0x5c, 0x05, 0x9e, 0xb0, 0x55, 0x7f, - 0xd5, 0x00, 0xe2, 0x16, 0x77, 0xbe, 0x3a, 0xa9, 0x81, 0x2e, 0x7e, 0xe7, 0xd4, 0xaf, 0x53, 0xf9, - 0xf4, 0xce, 0xba, 0xb5, 0x1f, 0x50, 0x2c, 0xb1, 0x82, 0x63, 0x13, 0x4e, 0xe4, 0x24, 0x33, 0xce, - 0xe2, 0xb4, 0x08, 0x27, 0x58, 0x62, 0x1b, 0x37, 0x5f, 0x1d, 0x97, 0x33, 0xbf, 0x1f, 0x97, 0x33, - 0x7f, 0x1f, 0x97, 0xb5, 0x1f, 0x4e, 0xca, 0xda, 0xab, 0x93, 0xb2, 0xf6, 0xdb, 0x49, 0x59, 0xfb, - 0xe3, 0xa4, 0xac, 0x6d, 0x67, 0xe5, 0xdf, 0xe1, 0x27, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0x31, - 0x9c, 0x79, 0xf4, 0x7c, 0x0e, 0x00, 0x00, + // 1461 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x57, 0x4f, 0x6f, 0xdb, 0xc8, + 0x15, 0x17, 0x6d, 0x5a, 0x96, 0x1e, 0xe5, 0x44, 0x19, 0xe4, 0x0f, 0xa3, 0xa4, 0xb2, 0xa2, 0xa4, + 0xa9, 0xd3, 0xa2, 0x76, 0xab, 0x16, 0x69, 0xd2, 0x34, 0x68, 0xf5, 0xaf, 0x8e, 0xea, 0xda, 0x11, + 0xc6, 0x4e, 0x80, 0x9e, 0x84, 0x31, 0x39, 0x96, 0x09, 0x53, 0x1c, 0x76, 0x38, 0x54, 0xe0, 0x5b, + 0x8f, 0x81, 0x0f, 0xfd, 0x06, 0x3e, 0x15, 0xe8, 0x37, 0xe8, 0x77, 0xc8, 0xb1, 0xc7, 0x3d, 0x19, + 0x6b, 0x5f, 0x17, 0x0b, 0x2c, 0xb0, 0x5f, 0x60, 0x31, 0xc3, 0x91, 0x44, 0x6d, 0xe8, 0x24, 0xc0, + 0xfa, 0x36, 0xf3, 0xf8, 0xfb, 0xbd, 0x79, 0x7c, 0xef, 0xc7, 0xf7, 0x86, 0x60, 0x45, 0x21, 0x75, + 0xa2, 0xf5, 0x90, 0x33, 0xc1, 0x10, 0x72, 0x99, 0x73, 0x44, 0xf9, 0x7a, 0xf4, 0x8e, 0xf0, 0xd1, + 0x91, 0x27, 0xd6, 0xc7, 0xbf, 0xad, 0x58, 0xe2, 0x38, 0xa4, 0x1a, 0x50, 0xb9, 0x39, 0x64, 0x43, + 0xa6, 0x96, 0x1b, 0x72, 0xa5, 0xad, 0x77, 0xdc, 0x98, 0x13, 0xe1, 0xb1, 0x60, 0x63, 0xb2, 0x48, + 0x1e, 0xd4, 0xff, 0x6d, 0x42, 0x61, 0x87, 0xb9, 0x74, 0x37, 0xa4, 0x0e, 0xda, 0x04, 0x8b, 0x04, + 0x01, 0x13, 0x0a, 0x10, 0xd9, 0x46, 0xcd, 0x58, 0xb3, 0x1a, 0xab, 0xeb, 0x1f, 0x1f, 0xb9, 0xde, + 0x9c, 0xc1, 0x5a, 0xe6, 0x87, 0xb3, 0xd5, 0x1c, 0x4e, 0x33, 0xd1, 0x6f, 0xc0, 0xe4, 0xcc, 0xa7, + 0xf6, 0x42, 0xcd, 0x58, 0xbb, 0xd6, 0xb8, 0x9f, 0xe5, 0x41, 0x1e, 0x8a, 0x99, 0x4f, 0xb1, 0x42, + 0xa2, 0x4d, 0x80, 0x11, 0x1d, 0xed, 0x53, 0x1e, 0x1d, 0x7a, 0xa1, 0xbd, 0xa8, 0x78, 0xbf, 0xb8, + 0x8c, 0x27, 0x83, 0x5d, 0xdf, 0x9e, 0xc2, 0x71, 0x8a, 0x8a, 0xb6, 0xa1, 0x44, 0xc6, 0xc4, 0xf3, + 0xc9, 0xbe, 0xe7, 0x7b, 0xe2, 0xd8, 0x36, 0x95, 0xab, 0x27, 0x9f, 0x74, 0xd5, 0x4c, 0x11, 0xf0, + 0x1c, 0xbd, 0xee, 0x02, 0xcc, 0x0e, 0x42, 0x8f, 0x61, 0xb9, 0xdf, 0xdd, 0xe9, 0xf4, 0x76, 0x36, + 0xcb, 0xb9, 0xca, 0xdd, 0x93, 0xd3, 0xda, 0x2d, 0xe9, 0x63, 0x06, 0xe8, 0xd3, 0xc0, 0xf5, 0x82, + 0x21, 0x5a, 0x83, 0x42, 0xb3, 0xdd, 0xee, 0xf6, 0xf7, 0xba, 0x9d, 0xb2, 0x51, 0xa9, 0x9c, 0x9c, + 0xd6, 0x6e, 0xcf, 0x03, 0x9b, 0x8e, 0x43, 0x43, 0x41, 0xdd, 0x8a, 0xf9, 0xfe, 0x3f, 0xd5, 0x5c, + 0xfd, 0xbd, 0x01, 0xa5, 0x74, 0x10, 0xe8, 0x31, 0xe4, 0x9b, 0xed, 0xbd, 0xde, 0xdb, 0x6e, 0x39, + 0x37, 0xa3, 0xa7, 0x11, 0x4d, 0x47, 0x78, 0x63, 0x8a, 0x1e, 0xc1, 0x52, 0xbf, 0xf9, 0x66, 0xb7, + 0x5b, 0x36, 0x66, 0xe1, 0xa4, 0x61, 0x7d, 0x12, 0x47, 0x0a, 0xd5, 0xc1, 0xcd, 0xde, 0x4e, 0x79, + 0x21, 0x1b, 0xd5, 0xe1, 0xc4, 0x0b, 0x74, 0x28, 0xe7, 0x8b, 0x60, 0xed, 0x52, 0x3e, 0xf6, 0x9c, + 0x2b, 0xd6, 0xc4, 0x53, 0x30, 0x05, 0x89, 0x8e, 0x94, 0x26, 0xac, 0x6c, 0x4d, 0xec, 0x91, 0xe8, + 0x48, 0x1e, 0xaa, 0xe9, 0x0a, 0x2f, 0x95, 0xc1, 0x69, 0xe8, 0x7b, 0x0e, 0x11, 0xd4, 0x55, 0xca, + 0xb0, 0x1a, 0x3f, 0xcf, 0x62, 0xe3, 0x29, 0x4a, 0xc7, 0xff, 0x2a, 0x87, 0x53, 0x54, 0xf4, 0x02, + 0xf2, 0x43, 0x9f, 0xed, 0x13, 0x5f, 0x69, 0xc2, 0x6a, 0x3c, 0xc8, 0x72, 0xb2, 0xa9, 0x10, 0x33, + 0x07, 0x9a, 0x82, 0x9e, 0x41, 0x3e, 0x0e, 0x5d, 0x22, 0xa8, 0x9d, 0x57, 0xe4, 0x5a, 0x16, 0xf9, + 0x8d, 0x42, 0xb4, 0x59, 0x70, 0xe0, 0x0d, 0xb1, 0xc6, 0xa3, 0x2d, 0x28, 0x04, 0x54, 0xbc, 0x63, + 0xfc, 0x28, 0xb2, 0x97, 0x6b, 0x8b, 0x6b, 0x56, 0xe3, 0x57, 0x99, 0x62, 0x4c, 0x30, 0x4d, 0x21, + 0x88, 0x73, 0x38, 0xa2, 0x81, 0x48, 0xdc, 0xb4, 0x16, 0x6c, 0x03, 0x4f, 0x1d, 0xa0, 0x3f, 0x41, + 0x81, 0x06, 0x6e, 0xc8, 0xbc, 0x40, 0xd8, 0x85, 0xcb, 0x03, 0xe9, 0x6a, 0x8c, 0x4c, 0x26, 0x9e, + 0x32, 0x5a, 0x79, 0x30, 0x47, 0xcc, 0xa5, 0xf5, 0x0d, 0xb8, 0xf1, 0x51, 0xb2, 0x50, 0x05, 0x0a, + 0x3a, 0x59, 0x49, 0x95, 0x4d, 0x3c, 0xdd, 0xd7, 0xaf, 0xc3, 0xca, 0x5c, 0x62, 0xea, 0xdf, 0x2c, + 0x42, 0x61, 0x52, 0x2d, 0xd4, 0x84, 0xa2, 0xc3, 0x02, 0x41, 0xbc, 0x80, 0x72, 0x2d, 0x90, 0xcc, + 0xdc, 0xb6, 0x27, 0x20, 0xc9, 0x7a, 0x95, 0xc3, 0x33, 0x16, 0xfa, 0x2b, 0x14, 0x39, 0x8d, 0x58, + 0xcc, 0x1d, 0x1a, 0x69, 0x85, 0xac, 0x65, 0xd7, 0x38, 0x01, 0x61, 0xfa, 0xcf, 0xd8, 0xe3, 0x54, + 0xe6, 0x29, 0xc2, 0x33, 0x2a, 0x7a, 0x01, 0xcb, 0x9c, 0x46, 0x82, 0x70, 0xf1, 0xa9, 0x22, 0xe3, + 0x04, 0xd2, 0x67, 0xbe, 0xe7, 0x1c, 0xe3, 0x09, 0x03, 0xbd, 0x80, 0x62, 0xe8, 0x13, 0x47, 0x79, + 0xb5, 0x97, 0x14, 0xfd, 0x67, 0x59, 0xf4, 0xfe, 0x04, 0x84, 0x67, 0x78, 0xf4, 0x1c, 0xc0, 0x67, + 0xc3, 0x81, 0xcb, 0xbd, 0x31, 0xe5, 0x5a, 0x24, 0x95, 0x2c, 0x76, 0x47, 0x21, 0x70, 0xd1, 0x67, + 0xc3, 0x64, 0x89, 0x36, 0x7f, 0x92, 0x42, 0x52, 0xea, 0xd8, 0x02, 0x20, 0xd3, 0xa7, 0x5a, 0x1f, + 0x4f, 0xbe, 0xc8, 0x95, 0xae, 0x48, 0x8a, 0xde, 0x2a, 0xc2, 0x32, 0x8f, 0x03, 0xe1, 0x8d, 0x68, + 0x7d, 0x0b, 0x6e, 0x65, 0x32, 0x50, 0x03, 0x4a, 0xd3, 0x1a, 0x0e, 0x3c, 0x57, 0x15, 0xbf, 0xd8, + 0xba, 0x7e, 0x71, 0xb6, 0x6a, 0x4d, 0x8b, 0xdd, 0xeb, 0x60, 0x6b, 0x0a, 0xea, 0xb9, 0xf5, 0x6f, + 0x4d, 0x58, 0x99, 0x53, 0x02, 0xba, 0x09, 0x4b, 0xde, 0x88, 0x0c, 0x69, 0x42, 0xc7, 0xc9, 0x06, + 0x75, 0x21, 0xef, 0x93, 0x7d, 0xea, 0x4b, 0x3d, 0xc8, 0x9c, 0xfc, 0xfa, 0xb3, 0x92, 0x5a, 0xff, + 0xbb, 0xc2, 0x77, 0x03, 0xc1, 0x8f, 0xb1, 0x26, 0x23, 0x1b, 0x96, 0x1d, 0x36, 0x1a, 0x91, 0x40, + 0xf6, 0x8e, 0xc5, 0xb5, 0x22, 0x9e, 0x6c, 0x11, 0x02, 0x93, 0xf0, 0x61, 0x64, 0x9b, 0xca, 0xac, + 0xd6, 0xa8, 0x0c, 0x8b, 0x34, 0x18, 0xdb, 0x4b, 0xca, 0x24, 0x97, 0xd2, 0xe2, 0x7a, 0x49, 0x41, + 0x8b, 0x58, 0x2e, 0x25, 0x2f, 0x8e, 0x28, 0xb7, 0x97, 0x95, 0x49, 0xad, 0xd1, 0x1f, 0x20, 0x3f, + 0x62, 0x71, 0x20, 0x22, 0xbb, 0xa0, 0x82, 0xbd, 0x9b, 0x15, 0xec, 0xb6, 0x44, 0xe8, 0xde, 0xa6, + 0xe1, 0xe8, 0x15, 0xdc, 0x88, 0x04, 0x0b, 0x07, 0x43, 0x4e, 0x1c, 0x3a, 0x08, 0x29, 0xf7, 0x98, + 0x6b, 0x17, 0x2f, 0x6f, 0x91, 0x1d, 0x3d, 0xbe, 0xf1, 0x75, 0x49, 0xdb, 0x94, 0xac, 0xbe, 0x22, + 0xa1, 0x3e, 0x94, 0xc2, 0xd8, 0xf7, 0x07, 0x2c, 0x4c, 0x3a, 0x35, 0x28, 0x27, 0x5f, 0x90, 0xb5, + 0x7e, 0xec, 0xfb, 0xaf, 0x13, 0x12, 0xb6, 0xc2, 0xd9, 0x06, 0xdd, 0x86, 0xfc, 0x90, 0xb3, 0x38, + 0x8c, 0x6c, 0x4b, 0xe5, 0x43, 0xef, 0xd0, 0x4b, 0x58, 0x8e, 0xa8, 0xc3, 0xa9, 0x88, 0xec, 0x92, + 0x7a, 0xdb, 0x87, 0x59, 0x87, 0xec, 0x2a, 0x08, 0xa6, 0x07, 0x94, 0xd3, 0xc0, 0xa1, 0x78, 0xc2, + 0xa9, 0x3c, 0x07, 0x2b, 0x55, 0x28, 0x99, 0xe0, 0x23, 0x7a, 0xac, 0x6b, 0x2f, 0x97, 0x52, 0x0f, + 0x63, 0xe2, 0xc7, 0xc9, 0xf5, 0xa1, 0x88, 0x93, 0xcd, 0x1f, 0x17, 0x9e, 0x19, 0x95, 0x06, 0x58, + 0xa9, 0x68, 0xd1, 0x43, 0x58, 0xe1, 0x74, 0xe8, 0x45, 0x82, 0x1f, 0x0f, 0x48, 0x2c, 0x0e, 0xed, + 0xbf, 0x28, 0x42, 0x69, 0x62, 0x6c, 0xc6, 0xe2, 0xb0, 0xfe, 0xbd, 0x01, 0xa5, 0x74, 0x3f, 0x44, + 0xed, 0xa4, 0x0b, 0xaa, 0x13, 0xaf, 0x35, 0x36, 0x3e, 0xd7, 0x3f, 0x55, 0xcf, 0xf1, 0x63, 0x79, + 0xe2, 0xb6, 0xbc, 0xb3, 0x28, 0x32, 0xfa, 0x3d, 0x2c, 0x85, 0x8c, 0x8b, 0x89, 0x38, 0xab, 0x99, + 0x7d, 0x82, 0xf1, 0xc9, 0x37, 0x9a, 0x80, 0xeb, 0x87, 0x70, 0x6d, 0xde, 0x1b, 0x7a, 0x04, 0x8b, + 0x6f, 0x7b, 0xfd, 0x72, 0xae, 0x72, 0xef, 0xe4, 0xb4, 0x76, 0x67, 0xfe, 0xe1, 0x5b, 0x8f, 0x8b, + 0x98, 0xf8, 0xbd, 0x3e, 0xfa, 0x25, 0x2c, 0x75, 0x76, 0x76, 0x31, 0x2e, 0x1b, 0x95, 0xd5, 0x93, + 0xd3, 0xda, 0xbd, 0x79, 0x9c, 0x7c, 0xc4, 0xe2, 0xc0, 0xc5, 0x6c, 0x7f, 0x3a, 0xc6, 0xff, 0xb7, + 0x00, 0x96, 0xfe, 0x66, 0xaf, 0x76, 0x8c, 0xff, 0x19, 0x56, 0x92, 0x1e, 0x37, 0x70, 0xd4, 0xab, + 0xe9, 0x6e, 0xfd, 0xa9, 0x56, 0x57, 0x4a, 0x08, 0x49, 0x2a, 0xd0, 0x03, 0x28, 0x79, 0xe1, 0xf8, + 0xe9, 0x80, 0x06, 0x64, 0xdf, 0xd7, 0x13, 0xbd, 0x80, 0x2d, 0x69, 0xeb, 0x26, 0x26, 0x39, 0x8a, + 0xbc, 0x40, 0x50, 0x1e, 0xe8, 0x59, 0x5d, 0xc0, 0xd3, 0x3d, 0x7a, 0x09, 0xa6, 0x17, 0x92, 0x91, + 0xee, 0xcf, 0x99, 0x6f, 0xd0, 0xeb, 0x37, 0xb7, 0xb5, 0x44, 0x5a, 0x85, 0x8b, 0xb3, 0x55, 0x53, + 0x1a, 0xb0, 0xa2, 0xa1, 0xea, 0xa4, 0x45, 0xca, 0x93, 0xd4, 0x57, 0x5d, 0xc0, 0x29, 0x4b, 0xfd, + 0xbf, 0x26, 0x58, 0x6d, 0x3f, 0x8e, 0x84, 0xee, 0x4d, 0x57, 0x96, 0xb7, 0x7f, 0xc0, 0x0d, 0xa2, + 0x2e, 0x7d, 0x24, 0x90, 0x1f, 0xba, 0x1a, 0x3d, 0x3a, 0x77, 0x8f, 0x32, 0xdd, 0x4d, 0xc1, 0xc9, + 0x98, 0x6a, 0xe5, 0xa5, 0x4f, 0xdb, 0xc0, 0x65, 0xf2, 0xa3, 0x27, 0x68, 0x17, 0x56, 0x18, 0x77, + 0x0e, 0x69, 0x24, 0x92, 0xde, 0xa0, 0x2f, 0x49, 0x99, 0xd7, 0xe7, 0xd7, 0x69, 0xa0, 0xbe, 0x62, + 0x24, 0xd1, 0xce, 0xfb, 0x40, 0xcf, 0xc0, 0xe4, 0xe4, 0x60, 0x32, 0x46, 0x33, 0xf5, 0x8d, 0xc9, + 0x81, 0x98, 0x73, 0xa1, 0x18, 0xe8, 0x6f, 0x00, 0xae, 0x17, 0x85, 0x44, 0x38, 0x87, 0x94, 0xeb, + 0x3a, 0x65, 0xbe, 0x62, 0x67, 0x8a, 0x9a, 0xf3, 0x92, 0x62, 0xa3, 0x2d, 0x28, 0x3a, 0x64, 0xa2, + 0xb4, 0xfc, 0xe5, 0x6d, 0xb1, 0xdd, 0xd4, 0x2e, 0xca, 0xd2, 0xc5, 0xc5, 0xd9, 0x6a, 0x61, 0x62, + 0xc1, 0x05, 0x87, 0x68, 0xe5, 0x6d, 0xc1, 0x8a, 0xbc, 0x51, 0x0e, 0x5c, 0x7a, 0x40, 0x62, 0x5f, + 0x44, 0xaa, 0x83, 0x5f, 0x72, 0x83, 0x92, 0x97, 0x9b, 0x8e, 0xc6, 0xe9, 0xb8, 0x4a, 0x22, 0x65, + 0xab, 0x9f, 0x1a, 0x00, 0x49, 0x8b, 0xbb, 0x5a, 0x9d, 0x34, 0xc0, 0x94, 0xbf, 0x73, 0xfa, 0xd7, + 0xa9, 0x7a, 0x79, 0x67, 0xdd, 0x3b, 0x0e, 0x29, 0x56, 0x58, 0x39, 0x91, 0x5c, 0x22, 0x88, 0xaa, + 0x7b, 0x09, 0xab, 0x75, 0xeb, 0xfe, 0x87, 0xf3, 0x6a, 0xee, 0xab, 0xf3, 0x6a, 0xee, 0xbb, 0xf3, + 0xaa, 0xf1, 0xaf, 0x8b, 0xaa, 0xf1, 0xe1, 0xa2, 0x6a, 0xfc, 0xff, 0xa2, 0x6a, 0x7c, 0x7d, 0x51, + 0x35, 0xf6, 0xf3, 0xea, 0xef, 0xef, 0x77, 0x3f, 0x04, 0x00, 0x00, 0xff, 0xff, 0xf5, 0x1b, 0xa1, + 0x1a, 0x5c, 0x0e, 0x00, 0x00, } diff --git a/api/specs.proto b/api/specs.proto index a20cabbd06..92c865f4c6 100644 --- a/api/specs.proto +++ b/api/specs.proto @@ -284,5 +284,5 @@ message SecretSpec { SecretType type = 2; // Secret payload. - repeated SecretData data = 4; + bytes data = 3; } diff --git a/api/types.pb.go b/api/types.pb.go index 3831f1324d..671c3ec5ed 100644 --- a/api/types.pb.go +++ b/api/types.pb.go @@ -57,7 +57,6 @@ EncryptionKey ManagerStatus SecretReference - SecretData NodeSpec ServiceSpec ReplicatedService @@ -78,6 +77,7 @@ Network Cluster Secret + SecretData GetNodeRequest GetNodeResponse ListNodesRequest @@ -1387,10 +1387,10 @@ func (*ManagerStatus) Descriptor() ([]byte, []int) { return fileDescriptorTypes, type SecretReference struct { // Name is the name of the secret that this reference. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // DataID represents the specific Secret version that we're referencing to. + // SecretDataID represents the specific Secret version that we're referencing to. // This identifier exists so that SecretReferences don't leak any information // about the secret contents. - DataId string `protobuf:"bytes,2,opt,name=data_id,json=dataId,proto3" json:"data_id,omitempty"` + SecretDataID string `protobuf:"bytes,2,opt,name=secret_data_id,json=secretDataId,proto3" json:"secret_data_id,omitempty"` // Mode is the way the secret should be presented. Mode SecretReference_Mode `protobuf:"varint,3,opt,name=mode,proto3,enum=docker.swarmkit.v1.SecretReference_Mode" json:"mode,omitempty"` // Target is the name by which the image accesses the secret. @@ -1401,23 +1401,6 @@ func (m *SecretReference) Reset() { *m = SecretReference{} } func (*SecretReference) ProtoMessage() {} func (*SecretReference) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{38} } -// SecretData is represents a specific version of a secret, and is immutable -type SecretData struct { - // DataID is an opaque, randomly generated identifier to link a SecretReference - // to a specific SecretData. - DataID string `protobuf:"bytes,1,opt,name=data_id,json=dataId,proto3" json:"data_id,omitempty"` - // Data contains the secret bytes. - Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` - // Digest is a digest of the data bytes. - Digest string `protobuf:"bytes,3,opt,name=digest,proto3" json:"digest,omitempty"` - // CreatedAt is the time at which this secret data was created. - CreatedAt *docker_swarmkit_v1.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt" json:"created_at,omitempty"` -} - -func (m *SecretData) Reset() { *m = SecretData{} } -func (*SecretData) ProtoMessage() {} -func (*SecretData) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{39} } - func init() { proto.RegisterType((*Version)(nil), "docker.swarmkit.v1.Version") proto.RegisterType((*Annotations)(nil), "docker.swarmkit.v1.Annotations") @@ -1463,7 +1446,6 @@ func init() { proto.RegisterType((*EncryptionKey)(nil), "docker.swarmkit.v1.EncryptionKey") proto.RegisterType((*ManagerStatus)(nil), "docker.swarmkit.v1.ManagerStatus") proto.RegisterType((*SecretReference)(nil), "docker.swarmkit.v1.SecretReference") - proto.RegisterType((*SecretData)(nil), "docker.swarmkit.v1.SecretData") proto.RegisterEnum("docker.swarmkit.v1.TaskState", TaskState_name, TaskState_value) proto.RegisterEnum("docker.swarmkit.v1.NodeRole", NodeRole_name, NodeRole_value) proto.RegisterEnum("docker.swarmkit.v1.SecretType", SecretType_name, SecretType_value) @@ -2164,25 +2146,10 @@ func (m *SecretReference) Copy() *SecretReference { } o := &SecretReference{ - Name: m.Name, - DataId: m.DataId, - Mode: m.Mode, - Target: m.Target, - } - - return o -} - -func (m *SecretData) Copy() *SecretData { - if m == nil { - return nil - } - - o := &SecretData{ - DataID: m.DataID, - Data: m.Data, - Digest: m.Digest, - CreatedAt: m.CreatedAt.Copy(), + Name: m.Name, + SecretDataID: m.SecretDataID, + Mode: m.Mode, + Target: m.Target, } return o @@ -2833,27 +2800,12 @@ func (this *SecretReference) GoString() string { s := make([]string, 0, 8) s = append(s, "&api.SecretReference{") s = append(s, "Name: "+fmt.Sprintf("%#v", this.Name)+",\n") - s = append(s, "DataId: "+fmt.Sprintf("%#v", this.DataId)+",\n") + s = append(s, "SecretDataID: "+fmt.Sprintf("%#v", this.SecretDataID)+",\n") s = append(s, "Mode: "+fmt.Sprintf("%#v", this.Mode)+",\n") s = append(s, "Target: "+fmt.Sprintf("%#v", this.Target)+",\n") s = append(s, "}") return strings.Join(s, "") } -func (this *SecretData) GoString() string { - if this == nil { - return "nil" - } - s := make([]string, 0, 8) - s = append(s, "&api.SecretData{") - s = append(s, "DataID: "+fmt.Sprintf("%#v", this.DataID)+",\n") - s = append(s, "Data: "+fmt.Sprintf("%#v", this.Data)+",\n") - s = append(s, "Digest: "+fmt.Sprintf("%#v", this.Digest)+",\n") - if this.CreatedAt != nil { - s = append(s, "CreatedAt: "+fmt.Sprintf("%#v", this.CreatedAt)+",\n") - } - s = append(s, "}") - return strings.Join(s, "") -} func valueToGoStringTypes(v interface{}, typ string) string { rv := reflect.ValueOf(v) if rv.IsNil() { @@ -4594,11 +4546,11 @@ func (m *SecretReference) MarshalTo(data []byte) (int, error) { i = encodeVarintTypes(data, i, uint64(len(m.Name))) i += copy(data[i:], m.Name) } - if len(m.DataId) > 0 { + if len(m.SecretDataID) > 0 { data[i] = 0x12 i++ - i = encodeVarintTypes(data, i, uint64(len(m.DataId))) - i += copy(data[i:], m.DataId) + i = encodeVarintTypes(data, i, uint64(len(m.SecretDataID))) + i += copy(data[i:], m.SecretDataID) } if m.Mode != 0 { data[i] = 0x18 @@ -4614,52 +4566,6 @@ func (m *SecretReference) MarshalTo(data []byte) (int, error) { return i, nil } -func (m *SecretData) Marshal() (data []byte, err error) { - size := m.Size() - data = make([]byte, size) - n, err := m.MarshalTo(data) - if err != nil { - return nil, err - } - return data[:n], nil -} - -func (m *SecretData) MarshalTo(data []byte) (int, error) { - var i int - _ = i - var l int - _ = l - if len(m.DataID) > 0 { - data[i] = 0xa - i++ - i = encodeVarintTypes(data, i, uint64(len(m.DataID))) - i += copy(data[i:], m.DataID) - } - if len(m.Data) > 0 { - data[i] = 0x12 - i++ - i = encodeVarintTypes(data, i, uint64(len(m.Data))) - i += copy(data[i:], m.Data) - } - if len(m.Digest) > 0 { - data[i] = 0x1a - i++ - i = encodeVarintTypes(data, i, uint64(len(m.Digest))) - i += copy(data[i:], m.Digest) - } - if m.CreatedAt != nil { - data[i] = 0x22 - i++ - i = encodeVarintTypes(data, i, uint64(m.CreatedAt.Size())) - n27, err := m.CreatedAt.MarshalTo(data[i:]) - if err != nil { - return 0, err - } - i += n27 - } - return i, nil -} - func encodeFixed64Types(data []byte, offset int, v uint64) int { data[offset] = uint8(v) data[offset+1] = uint8(v >> 8) @@ -5427,7 +5333,7 @@ func (m *SecretReference) Size() (n int) { if l > 0 { n += 1 + l + sovTypes(uint64(l)) } - l = len(m.DataId) + l = len(m.SecretDataID) if l > 0 { n += 1 + l + sovTypes(uint64(l)) } @@ -5441,28 +5347,6 @@ func (m *SecretReference) Size() (n int) { return n } -func (m *SecretData) Size() (n int) { - var l int - _ = l - l = len(m.DataID) - if l > 0 { - n += 1 + l + sovTypes(uint64(l)) - } - l = len(m.Data) - if l > 0 { - n += 1 + l + sovTypes(uint64(l)) - } - l = len(m.Digest) - if l > 0 { - n += 1 + l + sovTypes(uint64(l)) - } - if m.CreatedAt != nil { - l = m.CreatedAt.Size() - n += 1 + l + sovTypes(uint64(l)) - } - return n -} - func sovTypes(x uint64) (n int) { for { n++ @@ -6058,26 +5942,13 @@ func (this *SecretReference) String() string { } s := strings.Join([]string{`&SecretReference{`, `Name:` + fmt.Sprintf("%v", this.Name) + `,`, - `DataId:` + fmt.Sprintf("%v", this.DataId) + `,`, + `SecretDataID:` + fmt.Sprintf("%v", this.SecretDataID) + `,`, `Mode:` + fmt.Sprintf("%v", this.Mode) + `,`, `Target:` + fmt.Sprintf("%v", this.Target) + `,`, `}`, }, "") return s } -func (this *SecretData) String() string { - if this == nil { - return "nil" - } - s := strings.Join([]string{`&SecretData{`, - `DataID:` + fmt.Sprintf("%v", this.DataID) + `,`, - `Data:` + fmt.Sprintf("%v", this.Data) + `,`, - `Digest:` + fmt.Sprintf("%v", this.Digest) + `,`, - `CreatedAt:` + strings.Replace(fmt.Sprintf("%v", this.CreatedAt), "Timestamp", "docker_swarmkit_v1.Timestamp", 1) + `,`, - `}`, - }, "") - return s -} func valueToStringTypes(v interface{}) string { rv := reflect.ValueOf(v) if rv.IsNil() { @@ -11959,7 +11830,7 @@ func (m *SecretReference) Unmarshal(data []byte) error { iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DataId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SecretDataID", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -11984,7 +11855,7 @@ func (m *SecretReference) Unmarshal(data []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.DataId = string(data[iNdEx:postIndex]) + m.SecretDataID = string(data[iNdEx:postIndex]) iNdEx = postIndex case 3: if wireType != 0 { @@ -12055,178 +11926,6 @@ func (m *SecretReference) Unmarshal(data []byte) error { } return nil } -func (m *SecretData) Unmarshal(data []byte) error { - l := len(data) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: SecretData: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: SecretData: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DataID", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTypes - } - postIndex := iNdEx + intStringLen - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.DataID = string(data[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - byteLen |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthTypes - } - postIndex := iNdEx + byteLen - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Data = append(m.Data[:0], data[iNdEx:postIndex]...) - if m.Data == nil { - m.Data = []byte{} - } - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Digest", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTypes - } - postIndex := iNdEx + intStringLen - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Digest = string(data[iNdEx:postIndex]) - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field CreatedAt", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - msglen |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthTypes - } - postIndex := iNdEx + msglen - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.CreatedAt == nil { - m.CreatedAt = &docker_swarmkit_v1.Timestamp{} - } - if err := m.CreatedAt.Unmarshal(data[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTypes(data[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthTypes - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} func skipTypes(data []byte) (n int, err error) { l := len(data) iNdEx := 0 @@ -12335,235 +12034,233 @@ var ( func init() { proto.RegisterFile("types.proto", fileDescriptorTypes) } var fileDescriptorTypes = []byte{ - // 3676 bytes of a gzipped FileDescriptorProto + // 3641 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x59, 0xcd, 0x6f, 0x23, 0x47, - 0x76, 0x17, 0x3f, 0x45, 0x3e, 0x52, 0x52, 0x4f, 0xcd, 0xec, 0x8c, 0x86, 0x1e, 0x4b, 0x74, 0x8f, - 0x67, 0x3d, 0x3b, 0xeb, 0xd0, 0xb6, 0xbc, 0x31, 0x66, 0x3d, 0xce, 0xda, 0x2d, 0x92, 0x9a, 0xa1, - 0x47, 0x22, 0x89, 0x22, 0x39, 0x03, 0x23, 0x40, 0x88, 0x52, 0x77, 0x89, 0x6a, 0xab, 0xd9, 0xcd, - 0x74, 0x17, 0xa5, 0x61, 0x82, 0x00, 0x93, 0x1c, 0x92, 0x40, 0xa7, 0xdc, 0x03, 0x61, 0x11, 0x24, - 0xc8, 0x2d, 0xc8, 0x31, 0x40, 0x4e, 0x3e, 0xfa, 0xb8, 0x41, 0x80, 0x60, 0x91, 0x20, 0x42, 0xac, - 0xfc, 0x03, 0x0b, 0x04, 0xc1, 0x1e, 0x92, 0x43, 0x50, 0x1f, 0xdd, 0x6c, 0x72, 0x38, 0xb2, 0x9c, - 0xf5, 0x89, 0xac, 0x57, 0xbf, 0xf7, 0xea, 0x55, 0xd5, 0xab, 0x57, 0xbf, 0x57, 0x0d, 0x05, 0x36, - 0x19, 0xd1, 0xa0, 0x32, 0xf2, 0x3d, 0xe6, 0x21, 0x64, 0x79, 0xe6, 0x11, 0xf5, 0x2b, 0xc1, 0x09, - 0xf1, 0x87, 0x47, 0x36, 0xab, 0x1c, 0x7f, 0x50, 0xba, 0xcd, 0xec, 0x21, 0x0d, 0x18, 0x19, 0x8e, - 0xde, 0x8b, 0xfe, 0x49, 0x78, 0xe9, 0x96, 0x35, 0xf6, 0x09, 0xb3, 0x3d, 0xf7, 0xbd, 0xf0, 0x8f, - 0xea, 0xb8, 0x31, 0xf0, 0x06, 0x9e, 0xf8, 0xfb, 0x1e, 0xff, 0x27, 0xa5, 0xfa, 0x26, 0x2c, 0x3f, - 0xa3, 0x7e, 0x60, 0x7b, 0x2e, 0xba, 0x01, 0x19, 0xdb, 0xb5, 0xe8, 0x8b, 0xf5, 0x44, 0x39, 0x71, - 0x3f, 0x8d, 0x65, 0x43, 0xff, 0xab, 0x04, 0x14, 0x0c, 0xd7, 0xf5, 0x98, 0xb0, 0x15, 0x20, 0x04, - 0x69, 0x97, 0x0c, 0xa9, 0x00, 0xe5, 0xb1, 0xf8, 0x8f, 0xaa, 0x90, 0x75, 0xc8, 0x3e, 0x75, 0x82, - 0xf5, 0x64, 0x39, 0x75, 0xbf, 0xb0, 0xf5, 0xe3, 0xca, 0xab, 0x3e, 0x57, 0x62, 0x46, 0x2a, 0xbb, - 0x02, 0x5d, 0x77, 0x99, 0x3f, 0xc1, 0x4a, 0xb5, 0xf4, 0x53, 0x28, 0xc4, 0xc4, 0x48, 0x83, 0xd4, - 0x11, 0x9d, 0xa8, 0x61, 0xf8, 0x5f, 0xee, 0xdf, 0x31, 0x71, 0xc6, 0x74, 0x3d, 0x29, 0x64, 0xb2, - 0xf1, 0x71, 0xf2, 0x61, 0x42, 0xff, 0x02, 0xf2, 0x98, 0x06, 0xde, 0xd8, 0x37, 0x69, 0x80, 0x7e, - 0x04, 0x79, 0x97, 0xb8, 0x5e, 0xdf, 0x1c, 0x8d, 0x03, 0xa1, 0x9e, 0xda, 0x2e, 0x5e, 0x9c, 0x6f, - 0xe6, 0x9a, 0xc4, 0xf5, 0xaa, 0xed, 0x5e, 0x80, 0x73, 0xbc, 0xbb, 0x3a, 0x1a, 0x07, 0xe8, 0x2d, - 0x28, 0x0e, 0xe9, 0xd0, 0xf3, 0x27, 0xfd, 0xfd, 0x09, 0xa3, 0x81, 0x30, 0x9c, 0xc2, 0x05, 0x29, - 0xdb, 0xe6, 0x22, 0xfd, 0x2f, 0x12, 0x70, 0x23, 0xb4, 0x8d, 0xe9, 0xef, 0x8f, 0x6d, 0x9f, 0x0e, - 0xa9, 0xcb, 0x02, 0xf4, 0xdb, 0x90, 0x75, 0xec, 0xa1, 0xcd, 0xe4, 0x18, 0x85, 0xad, 0x37, 0x17, - 0xcd, 0x39, 0xf2, 0x0a, 0x2b, 0x30, 0x32, 0xa0, 0xe8, 0xd3, 0x80, 0xfa, 0xc7, 0x72, 0x25, 0xc4, - 0x90, 0xdf, 0xaa, 0x3c, 0xa3, 0xa2, 0xef, 0x40, 0xae, 0xed, 0x10, 0x76, 0xe0, 0xf9, 0x43, 0xa4, - 0x43, 0x91, 0xf8, 0xe6, 0xa1, 0xcd, 0xa8, 0xc9, 0xc6, 0x7e, 0xb8, 0x2b, 0x33, 0x32, 0x74, 0x13, - 0x92, 0x9e, 0x1c, 0x28, 0xbf, 0x9d, 0xbd, 0x38, 0xdf, 0x4c, 0xb6, 0x3a, 0x38, 0xe9, 0x05, 0xfa, - 0x23, 0xb8, 0xd6, 0x76, 0xc6, 0x03, 0xdb, 0xad, 0xd1, 0xc0, 0xf4, 0xed, 0x11, 0xb7, 0xce, 0xb7, - 0x97, 0x07, 0x5f, 0xb8, 0xbd, 0xfc, 0x7f, 0xb4, 0xe5, 0xc9, 0xe9, 0x96, 0xeb, 0x7f, 0x96, 0x84, - 0x6b, 0x75, 0x77, 0x60, 0xbb, 0x34, 0xae, 0x7d, 0x0f, 0x56, 0xa9, 0x10, 0xf6, 0x8f, 0x65, 0x50, - 0x29, 0x3b, 0x2b, 0x52, 0x1a, 0x46, 0x5a, 0x63, 0x2e, 0x5e, 0x3e, 0x58, 0x34, 0xfd, 0x57, 0xac, - 0x2f, 0x8a, 0x1a, 0x54, 0x87, 0xe5, 0x91, 0x98, 0x44, 0xb0, 0x9e, 0x12, 0xb6, 0xee, 0x2d, 0xb2, - 0xf5, 0xca, 0x3c, 0xb7, 0xd3, 0x5f, 0x9f, 0x6f, 0x2e, 0xe1, 0x50, 0xf7, 0x37, 0x09, 0xbe, 0xff, - 0x4c, 0xc0, 0x5a, 0xd3, 0xb3, 0x66, 0xd6, 0xa1, 0x04, 0xb9, 0x43, 0x2f, 0x60, 0xb1, 0x83, 0x12, - 0xb5, 0xd1, 0x43, 0xc8, 0x8d, 0xd4, 0xf6, 0xa9, 0xdd, 0xbf, 0xb3, 0xd8, 0x65, 0x89, 0xc1, 0x11, - 0x1a, 0x3d, 0x82, 0xbc, 0x1f, 0xc6, 0xc4, 0x7a, 0xea, 0x2a, 0x81, 0x33, 0xc5, 0xa3, 0xdf, 0x81, - 0xac, 0xdc, 0x84, 0xf5, 0xb4, 0xd0, 0xbc, 0x77, 0xa5, 0x35, 0xc7, 0x4a, 0x49, 0xff, 0x65, 0x02, - 0x34, 0x4c, 0x0e, 0xd8, 0x1e, 0x1d, 0xee, 0x53, 0xbf, 0xc3, 0x08, 0x1b, 0x07, 0xe8, 0x26, 0x64, - 0x1d, 0x4a, 0x2c, 0xea, 0x8b, 0x49, 0xe6, 0xb0, 0x6a, 0xa1, 0x1e, 0x0f, 0x72, 0x62, 0x1e, 0x92, - 0x7d, 0xdb, 0xb1, 0xd9, 0x44, 0x4c, 0x73, 0x75, 0xf1, 0x2e, 0xcf, 0xdb, 0xac, 0xe0, 0x98, 0x22, - 0x9e, 0x31, 0x83, 0xd6, 0x61, 0x79, 0x48, 0x83, 0x80, 0x0c, 0xa8, 0x98, 0x7d, 0x1e, 0x87, 0x4d, - 0xfd, 0x11, 0x14, 0xe3, 0x7a, 0xa8, 0x00, 0xcb, 0xbd, 0xe6, 0xd3, 0x66, 0xeb, 0x79, 0x53, 0x5b, - 0x42, 0x6b, 0x50, 0xe8, 0x35, 0x71, 0xdd, 0xa8, 0x3e, 0x31, 0xb6, 0x77, 0xeb, 0x5a, 0x02, 0xad, - 0x40, 0x7e, 0xda, 0x4c, 0xea, 0x3f, 0x4f, 0x00, 0xf0, 0x0d, 0x54, 0x93, 0xfa, 0x18, 0x32, 0x01, - 0x23, 0x4c, 0x6e, 0xdc, 0xea, 0xd6, 0xdb, 0x8b, 0xbc, 0x9e, 0xc2, 0x2b, 0xfc, 0x87, 0x62, 0xa9, - 0x12, 0xf7, 0x30, 0x39, 0xef, 0x61, 0x46, 0x20, 0x67, 0x5d, 0xcb, 0x41, 0xba, 0xc6, 0xff, 0x25, - 0x50, 0x1e, 0x32, 0xb8, 0x6e, 0xd4, 0xbe, 0xd0, 0x92, 0x48, 0x83, 0x62, 0xad, 0xd1, 0xa9, 0xb6, - 0x9a, 0xcd, 0x7a, 0xb5, 0x5b, 0xaf, 0x69, 0x29, 0xfd, 0x1e, 0x64, 0x1a, 0x43, 0x32, 0xa0, 0xe8, - 0x0e, 0x8f, 0x80, 0x03, 0xea, 0x53, 0xd7, 0x0c, 0x03, 0x6b, 0x2a, 0xd0, 0x7f, 0x91, 0x87, 0xcc, - 0x9e, 0x37, 0x76, 0x19, 0xda, 0x8a, 0x9d, 0xe2, 0xd5, 0xad, 0x8d, 0x45, 0x53, 0x10, 0xc0, 0x4a, - 0x77, 0x32, 0xa2, 0xea, 0x94, 0xdf, 0x84, 0xac, 0x8c, 0x15, 0xe5, 0xba, 0x6a, 0x71, 0x39, 0x23, - 0xfe, 0x80, 0x32, 0xb5, 0xe8, 0xaa, 0x85, 0xee, 0x43, 0xce, 0xa7, 0xc4, 0xf2, 0x5c, 0x67, 0x22, - 0x42, 0x2a, 0x27, 0xd3, 0x2c, 0xa6, 0xc4, 0x6a, 0xb9, 0xce, 0x04, 0x47, 0xbd, 0xe8, 0x09, 0x14, - 0xf7, 0x6d, 0xd7, 0xea, 0x7b, 0x23, 0x99, 0xf3, 0x32, 0xaf, 0x0f, 0x40, 0xe9, 0xd5, 0xb6, 0xed, - 0x5a, 0x2d, 0x09, 0xc6, 0x85, 0xfd, 0x69, 0x03, 0x35, 0x61, 0xf5, 0xd8, 0x73, 0xc6, 0x43, 0x1a, - 0xd9, 0xca, 0x0a, 0x5b, 0xef, 0xbc, 0xde, 0xd6, 0x33, 0x81, 0x0f, 0xad, 0xad, 0x1c, 0xc7, 0x9b, - 0xe8, 0x29, 0xac, 0xb0, 0xe1, 0xe8, 0x20, 0x88, 0xcc, 0x2d, 0x0b, 0x73, 0x3f, 0xbc, 0x64, 0xc1, - 0x38, 0x3c, 0xb4, 0x56, 0x64, 0xb1, 0x56, 0xe9, 0x4f, 0x52, 0x50, 0x88, 0x79, 0x8e, 0x3a, 0x50, - 0x18, 0xf9, 0xde, 0x88, 0x0c, 0x44, 0xde, 0x56, 0x7b, 0xf1, 0xc1, 0x95, 0x66, 0x5d, 0x69, 0x4f, - 0x15, 0x71, 0xdc, 0x8a, 0x7e, 0x96, 0x84, 0x42, 0xac, 0x13, 0x3d, 0x80, 0x1c, 0x6e, 0xe3, 0xc6, - 0x33, 0xa3, 0x5b, 0xd7, 0x96, 0x4a, 0x77, 0x4e, 0xcf, 0xca, 0xeb, 0xc2, 0x5a, 0xdc, 0x40, 0xdb, - 0xb7, 0x8f, 0x79, 0xe8, 0xdd, 0x87, 0xe5, 0x10, 0x9a, 0x28, 0xbd, 0x71, 0x7a, 0x56, 0xbe, 0x35, - 0x0f, 0x8d, 0x21, 0x71, 0xe7, 0x89, 0x81, 0xeb, 0x35, 0x2d, 0xb9, 0x18, 0x89, 0x3b, 0x87, 0xc4, - 0xa7, 0x16, 0xfa, 0x21, 0x64, 0x15, 0x30, 0x55, 0x2a, 0x9d, 0x9e, 0x95, 0x6f, 0xce, 0x03, 0xa7, - 0x38, 0xdc, 0xd9, 0x35, 0x9e, 0xd5, 0xb5, 0xf4, 0x62, 0x1c, 0xee, 0x38, 0xe4, 0x98, 0xa2, 0xb7, - 0x21, 0x23, 0x61, 0x99, 0xd2, 0xed, 0xd3, 0xb3, 0xf2, 0x0f, 0x5e, 0x31, 0xc7, 0x51, 0xa5, 0xf5, - 0x3f, 0xff, 0xeb, 0x8d, 0xa5, 0x7f, 0xfc, 0x9b, 0x0d, 0x6d, 0xbe, 0xbb, 0xf4, 0xbf, 0x09, 0x58, - 0x99, 0xd9, 0x72, 0xa4, 0x43, 0xd6, 0xf5, 0x4c, 0x6f, 0x24, 0xd3, 0x79, 0x6e, 0x1b, 0x2e, 0xce, - 0x37, 0xb3, 0x4d, 0xaf, 0xea, 0x8d, 0x26, 0x58, 0xf5, 0xa0, 0xa7, 0x73, 0x17, 0xd2, 0x87, 0x57, - 0x8c, 0xa7, 0x85, 0x57, 0xd2, 0xa7, 0xb0, 0x62, 0xf9, 0xf6, 0x31, 0xf5, 0xfb, 0xa6, 0xe7, 0x1e, - 0xd8, 0x03, 0x95, 0xaa, 0x4b, 0x8b, 0x6c, 0xd6, 0x04, 0x10, 0x17, 0xa5, 0x42, 0x55, 0xe0, 0x7f, - 0x83, 0xcb, 0xa8, 0xf4, 0x0c, 0x8a, 0xf1, 0x08, 0x45, 0x6f, 0x02, 0x04, 0xf6, 0x1f, 0x50, 0xc5, - 0x6f, 0x04, 0x1b, 0xc2, 0x79, 0x2e, 0x11, 0xec, 0x06, 0xbd, 0x03, 0xe9, 0xa1, 0x67, 0x49, 0x3b, - 0x99, 0xed, 0xeb, 0xfc, 0x4e, 0xfc, 0xd7, 0xf3, 0xcd, 0x82, 0x17, 0x54, 0x76, 0x6c, 0x87, 0xee, - 0x79, 0x16, 0xc5, 0x02, 0xa0, 0x1f, 0x43, 0x9a, 0xa7, 0x0a, 0xf4, 0x06, 0xa4, 0xb7, 0x1b, 0xcd, - 0x9a, 0xb6, 0x54, 0xba, 0x76, 0x7a, 0x56, 0x5e, 0x11, 0x4b, 0xc2, 0x3b, 0x78, 0xec, 0xa2, 0x4d, - 0xc8, 0x3e, 0x6b, 0xed, 0xf6, 0xf6, 0x78, 0x78, 0x5d, 0x3f, 0x3d, 0x2b, 0xaf, 0x45, 0xdd, 0x72, - 0xd1, 0xd0, 0x9b, 0x90, 0xe9, 0xee, 0xb5, 0x77, 0x3a, 0x5a, 0xb2, 0x84, 0x4e, 0xcf, 0xca, 0xab, - 0x51, 0xbf, 0xf0, 0xb9, 0x74, 0x4d, 0xed, 0x6a, 0x3e, 0x92, 0xeb, 0xff, 0x93, 0x84, 0x15, 0xcc, - 0xf9, 0xad, 0xcf, 0xda, 0x9e, 0x63, 0x9b, 0x13, 0xd4, 0x86, 0xbc, 0xe9, 0xb9, 0x96, 0x1d, 0x3b, - 0x53, 0x5b, 0xaf, 0xb9, 0x04, 0xa7, 0x5a, 0x61, 0xab, 0x1a, 0x6a, 0xe2, 0xa9, 0x11, 0xb4, 0x05, - 0x19, 0x8b, 0x3a, 0x64, 0x72, 0xd9, 0x6d, 0x5c, 0x53, 0x5c, 0x1a, 0x4b, 0xa8, 0x60, 0x8e, 0xe4, - 0x45, 0x9f, 0x30, 0x46, 0x87, 0x23, 0x26, 0x6f, 0xe3, 0x34, 0x2e, 0x0c, 0xc9, 0x0b, 0x43, 0x89, - 0xd0, 0x4f, 0x20, 0x7b, 0x62, 0xbb, 0x96, 0x77, 0xa2, 0x2e, 0xdc, 0xcb, 0xed, 0x2a, 0xac, 0x7e, - 0xca, 0xef, 0xd9, 0x39, 0x67, 0xf9, 0xaa, 0x37, 0x5b, 0xcd, 0x7a, 0xb8, 0xea, 0xaa, 0xbf, 0xe5, - 0x36, 0x3d, 0x97, 0x9f, 0x18, 0x68, 0x35, 0xfb, 0x3b, 0x46, 0x63, 0xb7, 0x87, 0xf9, 0xca, 0xdf, - 0x38, 0x3d, 0x2b, 0x6b, 0x11, 0x64, 0x87, 0xd8, 0x0e, 0x27, 0x81, 0xb7, 0x21, 0x65, 0x34, 0xbf, - 0xd0, 0x92, 0x25, 0xed, 0xf4, 0xac, 0x5c, 0x8c, 0xba, 0x0d, 0x77, 0x32, 0x3d, 0x4c, 0xf3, 0xe3, - 0xea, 0xff, 0x9e, 0x84, 0x62, 0x6f, 0x64, 0x11, 0x46, 0x65, 0x64, 0xa2, 0x32, 0x14, 0x46, 0xc4, - 0x27, 0x8e, 0x43, 0x1d, 0x3b, 0x18, 0xaa, 0x42, 0x21, 0x2e, 0x42, 0x0f, 0xbf, 0xc3, 0x62, 0x2a, - 0x12, 0xa6, 0x96, 0xb4, 0x07, 0xab, 0x07, 0xd2, 0xd9, 0x3e, 0x31, 0xc5, 0xee, 0xa6, 0xc4, 0xee, - 0x56, 0x16, 0x99, 0x88, 0x7b, 0x55, 0x51, 0x73, 0x34, 0x84, 0x16, 0x5e, 0x39, 0x88, 0x37, 0xd1, - 0x47, 0xb0, 0x3c, 0xf4, 0x5c, 0x9b, 0x79, 0xfe, 0x95, 0xf6, 0x21, 0x04, 0xa3, 0x07, 0x70, 0x8d, - 0xef, 0x70, 0xe8, 0x92, 0xe8, 0x16, 0x37, 0x57, 0x12, 0xaf, 0x0d, 0xc9, 0x0b, 0x35, 0x26, 0xe6, - 0x62, 0xfd, 0x23, 0x58, 0x99, 0xf1, 0x81, 0xdf, 0xe6, 0x6d, 0xa3, 0xd7, 0xa9, 0x6b, 0x4b, 0xa8, - 0x08, 0xb9, 0x6a, 0xab, 0xd9, 0x6d, 0x34, 0x7b, 0x9c, 0x7a, 0x14, 0x21, 0x87, 0x5b, 0xbb, 0xbb, - 0xdb, 0x46, 0xf5, 0xa9, 0x96, 0xd4, 0xff, 0x3b, 0x5a, 0x5f, 0xc5, 0x3d, 0xb6, 0x67, 0xb9, 0xc7, - 0xbb, 0xaf, 0x9f, 0xba, 0x62, 0x1f, 0xd3, 0x46, 0xc4, 0x41, 0x3e, 0x01, 0x10, 0xdb, 0x48, 0xad, - 0x3e, 0x61, 0x97, 0xd5, 0x17, 0xdd, 0xb0, 0x72, 0xc4, 0x79, 0xa5, 0x60, 0x30, 0xf4, 0x19, 0x14, - 0x4d, 0x6f, 0x38, 0x72, 0xa8, 0xd2, 0x4f, 0x5d, 0x45, 0xbf, 0x10, 0xa9, 0x18, 0x2c, 0xce, 0x81, - 0xd2, 0xb3, 0x1c, 0xe8, 0x4f, 0x13, 0x50, 0x88, 0x39, 0x3c, 0x4b, 0x85, 0x8a, 0x90, 0xeb, 0xb5, - 0x6b, 0x46, 0xb7, 0xd1, 0x7c, 0xac, 0x25, 0x10, 0x40, 0x56, 0x2c, 0x60, 0x4d, 0x4b, 0x72, 0xba, - 0x56, 0x6d, 0xed, 0xb5, 0x77, 0xeb, 0x82, 0x0c, 0xa1, 0x1b, 0xa0, 0x85, 0x4b, 0xd8, 0xef, 0x74, - 0x0d, 0xcc, 0xa5, 0x69, 0x74, 0x1d, 0xd6, 0x22, 0xa9, 0xd2, 0xcc, 0xa0, 0x9b, 0x80, 0x22, 0xe1, - 0xd4, 0x44, 0x56, 0xff, 0x23, 0x58, 0xab, 0x7a, 0x2e, 0x23, 0xb6, 0x1b, 0x51, 0xd9, 0x2d, 0x3e, - 0x6f, 0x25, 0xea, 0xdb, 0x96, 0xcc, 0xb6, 0xdb, 0x6b, 0x17, 0xe7, 0x9b, 0x85, 0x08, 0xda, 0xa8, - 0xf1, 0x99, 0x86, 0x0d, 0x8b, 0x9f, 0xa9, 0x91, 0x6d, 0xa9, 0xe4, 0xb9, 0x7c, 0x71, 0xbe, 0x99, - 0x6a, 0x37, 0x6a, 0x98, 0xcb, 0xd0, 0x1b, 0x90, 0xa7, 0x2f, 0x6c, 0xd6, 0x37, 0x79, 0x76, 0xe5, - 0x6b, 0x98, 0xc1, 0x39, 0x2e, 0xa8, 0xf2, 0x64, 0xfa, 0xc7, 0x49, 0x80, 0x2e, 0x09, 0x8e, 0xd4, - 0xd0, 0x8f, 0x20, 0x1f, 0x15, 0xf1, 0x97, 0x15, 0x93, 0xb1, 0xfd, 0x8a, 0xf0, 0xe8, 0xc3, 0x30, - 0x62, 0x24, 0xc7, 0x5e, 0xac, 0xa8, 0xc6, 0x5a, 0x44, 0x53, 0x67, 0x89, 0x34, 0xbf, 0x6b, 0xa8, - 0xef, 0xab, 0x8d, 0xe3, 0x7f, 0x51, 0x55, 0xe4, 0x5b, 0x39, 0x67, 0xc5, 0xdc, 0xee, 0x2e, 0x1a, - 0x64, 0x6e, 0x41, 0x9f, 0x2c, 0xe1, 0xa9, 0xde, 0xb6, 0x06, 0xab, 0xfe, 0xd8, 0xe5, 0x5e, 0xf7, - 0x03, 0xd1, 0xad, 0xdb, 0x70, 0xab, 0x49, 0xd9, 0x89, 0xe7, 0x1f, 0x19, 0x8c, 0x11, 0xf3, 0x90, - 0x17, 0xd5, 0x2a, 0xc9, 0x4c, 0x09, 0x67, 0x62, 0x86, 0x70, 0xae, 0xc3, 0x32, 0x71, 0x6c, 0x12, - 0x50, 0x79, 0x4b, 0xe7, 0x71, 0xd8, 0xe4, 0xb4, 0x98, 0x58, 0x96, 0x4f, 0x83, 0x80, 0xca, 0x32, - 0x30, 0x8f, 0xa7, 0x02, 0xfd, 0x9f, 0x93, 0x00, 0x8d, 0xb6, 0xb1, 0xa7, 0xcc, 0xd7, 0x20, 0x7b, - 0x40, 0x86, 0xb6, 0x33, 0xb9, 0xec, 0x90, 0x4d, 0xf1, 0x15, 0x43, 0x1a, 0xda, 0x11, 0x3a, 0x58, - 0xe9, 0x0a, 0xb6, 0x3c, 0xde, 0x77, 0x29, 0x8b, 0xd8, 0xb2, 0x68, 0xf1, 0xab, 0xd9, 0x27, 0x6e, - 0xb4, 0xb0, 0xb2, 0xc1, 0x5d, 0x1f, 0x10, 0x46, 0x4f, 0xc8, 0x24, 0x3c, 0x13, 0xaa, 0x89, 0x9e, - 0x70, 0x16, 0xcd, 0x8b, 0x7b, 0x6a, 0xad, 0x67, 0x04, 0xf7, 0xf8, 0x36, 0x7f, 0xb0, 0x82, 0x4b, - 0xd2, 0x11, 0x69, 0x97, 0x1e, 0x89, 0x9b, 0x72, 0xda, 0xf5, 0x9d, 0x8a, 0xd8, 0xf7, 0x61, 0x65, - 0x66, 0x9e, 0xaf, 0x94, 0x29, 0x8d, 0xf6, 0xb3, 0x9f, 0x68, 0x69, 0xf5, 0xef, 0x23, 0x2d, 0xab, - 0xff, 0x57, 0x02, 0xa0, 0xed, 0xf9, 0xe1, 0xa6, 0x2d, 0x7e, 0x16, 0xca, 0x89, 0x47, 0x26, 0xd3, - 0x73, 0x54, 0x78, 0x2e, 0xe4, 0xe9, 0x53, 0x2b, 0x9c, 0xf6, 0x0a, 0x38, 0x8e, 0x14, 0xd1, 0x26, - 0x14, 0xe4, 0xfe, 0xf7, 0x47, 0x9e, 0x2f, 0xf3, 0xd1, 0x0a, 0x06, 0x29, 0xe2, 0x9a, 0xe8, 0x1e, - 0xac, 0x8e, 0xc6, 0xfb, 0x8e, 0x1d, 0x1c, 0x52, 0x4b, 0x62, 0xd2, 0x02, 0xb3, 0x12, 0x49, 0x39, - 0x4c, 0xaf, 0x41, 0x2e, 0xb4, 0x8e, 0xd6, 0x21, 0xd5, 0xad, 0xb6, 0xb5, 0xa5, 0xd2, 0xda, 0xe9, - 0x59, 0xb9, 0x10, 0x8a, 0xbb, 0xd5, 0x36, 0xef, 0xe9, 0xd5, 0xda, 0x5a, 0x62, 0xb6, 0xa7, 0x57, - 0x6b, 0x97, 0xd2, 0xfc, 0x96, 0xd4, 0xff, 0x32, 0x01, 0x59, 0xc9, 0xd9, 0x16, 0xce, 0xd8, 0x80, - 0xe5, 0xb0, 0x92, 0x90, 0x44, 0xf2, 0x9d, 0xd7, 0x93, 0xbe, 0x8a, 0xe2, 0x68, 0x72, 0x1f, 0x43, - 0xbd, 0xd2, 0xc7, 0x50, 0x8c, 0x77, 0x7c, 0xa7, 0x5d, 0xfc, 0x43, 0x28, 0xf0, 0x40, 0x09, 0xc9, - 0xdf, 0x16, 0x64, 0x25, 0xaf, 0x54, 0x59, 0xe5, 0x32, 0x06, 0xaa, 0x90, 0xe8, 0x21, 0x2c, 0x4b, - 0xd6, 0x1a, 0xbe, 0xa7, 0x6c, 0x5c, 0x1e, 0x8e, 0x38, 0x84, 0xeb, 0x9f, 0x42, 0xba, 0x4d, 0xa9, - 0x8f, 0xee, 0xc2, 0xb2, 0xeb, 0x59, 0x74, 0x9a, 0x44, 0x15, 0xe1, 0xb6, 0x68, 0xa3, 0xc6, 0x09, - 0xb7, 0x45, 0x1b, 0x16, 0x5f, 0x3c, 0x7e, 0x40, 0xc3, 0x27, 0x25, 0xfe, 0x5f, 0xef, 0x42, 0xf1, - 0x39, 0xb5, 0x07, 0x87, 0x8c, 0x5a, 0xc2, 0xd0, 0xbb, 0x90, 0x1e, 0xd1, 0xc8, 0xf9, 0xf5, 0x85, - 0xa1, 0x43, 0xa9, 0x8f, 0x05, 0x8a, 0x1f, 0xc8, 0x13, 0xa1, 0xad, 0x5e, 0xf1, 0x54, 0x4b, 0xff, - 0xbb, 0x24, 0xac, 0x36, 0x82, 0x60, 0x4c, 0x5c, 0x33, 0xbc, 0x65, 0x7f, 0x36, 0x7b, 0xcb, 0xde, - 0x5f, 0x38, 0xc3, 0x19, 0x95, 0xd9, 0x2a, 0x5f, 0x25, 0xc9, 0x64, 0x94, 0x24, 0xf5, 0xaf, 0x13, - 0x61, 0x79, 0x7f, 0x2f, 0x76, 0x6e, 0x4a, 0xeb, 0xa7, 0x67, 0xe5, 0x1b, 0x71, 0x4b, 0xb4, 0xe7, - 0x1e, 0xb9, 0xde, 0x89, 0x8b, 0xde, 0xe2, 0xe5, 0x7e, 0xb3, 0xfe, 0x5c, 0x4b, 0x94, 0x6e, 0x9e, - 0x9e, 0x95, 0xd1, 0x0c, 0x08, 0x53, 0x97, 0x9e, 0x70, 0x4b, 0xed, 0x7a, 0xb3, 0xc6, 0xef, 0xc3, - 0xe4, 0x02, 0x4b, 0x6d, 0xea, 0x5a, 0xb6, 0x3b, 0x40, 0x77, 0x21, 0xdb, 0xe8, 0x74, 0x7a, 0xa2, - 0x00, 0xbb, 0x75, 0x7a, 0x56, 0xbe, 0x3e, 0x83, 0xe2, 0x0d, 0x6a, 0x71, 0x10, 0x27, 0x88, 0xfc, - 0xa6, 0x5c, 0x00, 0xe2, 0xdc, 0x85, 0x5a, 0x2a, 0xc2, 0xff, 0x2d, 0x09, 0x9a, 0x61, 0x9a, 0x74, - 0xc4, 0x78, 0xbf, 0x22, 0xdd, 0x5d, 0xc8, 0x8d, 0xf8, 0x3f, 0x5b, 0x14, 0x11, 0x3c, 0x2c, 0x1e, - 0x2e, 0x7c, 0xe2, 0x9d, 0xd3, 0xab, 0x60, 0xcf, 0xa1, 0x86, 0x35, 0xb4, 0x83, 0x80, 0x17, 0x97, - 0x42, 0x86, 0x23, 0x4b, 0xa5, 0x5f, 0x25, 0xe0, 0xfa, 0x02, 0x04, 0x7a, 0x1f, 0xd2, 0xbe, 0xe7, - 0x84, 0xdb, 0x73, 0xe7, 0x75, 0x0f, 0x30, 0x5c, 0x15, 0x0b, 0x24, 0xda, 0x00, 0x20, 0x63, 0xe6, - 0x11, 0x31, 0xbe, 0xd8, 0x98, 0x1c, 0x8e, 0x49, 0xd0, 0x73, 0xc8, 0x06, 0xd4, 0xf4, 0x69, 0xc8, - 0x67, 0x3e, 0xfd, 0xff, 0x7a, 0x5f, 0xe9, 0x08, 0x33, 0x58, 0x99, 0x2b, 0x55, 0x20, 0x2b, 0x25, - 0x3c, 0xa2, 0x2d, 0xc2, 0x88, 0x70, 0xba, 0x88, 0xc5, 0x7f, 0x1e, 0x28, 0xc4, 0x19, 0x84, 0x81, - 0x42, 0x9c, 0x81, 0xfe, 0xf3, 0x24, 0x40, 0xfd, 0x05, 0xa3, 0xbe, 0x4b, 0x9c, 0xaa, 0x81, 0xea, - 0xb1, 0x0c, 0x29, 0x67, 0xfb, 0xa3, 0x85, 0xcf, 0x72, 0x91, 0x46, 0xa5, 0x6a, 0x2c, 0xc8, 0x91, - 0xb7, 0x21, 0x35, 0xf6, 0x1d, 0xf5, 0xc4, 0x2b, 0x88, 0x48, 0x0f, 0xef, 0x62, 0x2e, 0x43, 0xf5, - 0x69, 0x46, 0x4a, 0xbd, 0xfe, 0x6d, 0x3e, 0x36, 0xc0, 0xf7, 0x9f, 0x95, 0xde, 0x05, 0x98, 0x7a, - 0x8d, 0x36, 0x20, 0x53, 0xdd, 0xe9, 0x74, 0x76, 0xb5, 0x25, 0x59, 0x23, 0x4e, 0xbb, 0x84, 0x58, - 0xff, 0xdb, 0x04, 0xe4, 0xaa, 0x86, 0xba, 0x55, 0x76, 0x40, 0x13, 0xb9, 0xc4, 0xa4, 0x3e, 0xeb, - 0xd3, 0x17, 0x23, 0xdb, 0x9f, 0xa8, 0x74, 0x70, 0x39, 0x8b, 0x5f, 0xe5, 0x5a, 0x55, 0xea, 0xb3, - 0xba, 0xd0, 0x41, 0x18, 0x8a, 0x54, 0x4d, 0xb1, 0x6f, 0x92, 0x30, 0x39, 0x6f, 0x5c, 0xbe, 0x14, - 0x92, 0xfd, 0x4d, 0xdb, 0x01, 0x2e, 0x84, 0x46, 0xaa, 0x24, 0xd0, 0x9f, 0xc1, 0xf5, 0x96, 0x6f, - 0x1e, 0xd2, 0x80, 0xc9, 0x41, 0x95, 0xcb, 0x9f, 0xc2, 0x1d, 0x46, 0x82, 0xa3, 0xfe, 0xa1, 0x1d, - 0x30, 0xcf, 0x9f, 0xf4, 0x7d, 0xca, 0xa8, 0xcb, 0xfb, 0xfb, 0xe2, 0x0b, 0x80, 0xaa, 0xc1, 0x6f, - 0x73, 0xcc, 0x13, 0x09, 0xc1, 0x21, 0x62, 0x97, 0x03, 0xf4, 0x06, 0x14, 0x39, 0x61, 0xab, 0xd1, - 0x03, 0x32, 0x76, 0x58, 0x80, 0x7e, 0x0a, 0xe0, 0x78, 0x83, 0xfe, 0x95, 0x33, 0x79, 0xde, 0xf1, - 0x06, 0xf2, 0xaf, 0xfe, 0xbb, 0xa0, 0xd5, 0xec, 0x60, 0x44, 0x98, 0x79, 0x18, 0x3e, 0x2e, 0xa0, - 0xc7, 0xa0, 0x1d, 0x52, 0xe2, 0xb3, 0x7d, 0x4a, 0x58, 0x7f, 0x44, 0x7d, 0xdb, 0xb3, 0xae, 0xb4, - 0xa4, 0x6b, 0x91, 0x56, 0x5b, 0x28, 0xe9, 0xbf, 0x4e, 0x00, 0x60, 0x72, 0x10, 0x12, 0x80, 0x1f, - 0xc3, 0xb5, 0xc0, 0x25, 0xa3, 0xe0, 0xd0, 0x63, 0x7d, 0xdb, 0x65, 0xd4, 0x3f, 0x26, 0x8e, 0x2a, - 0x10, 0xb5, 0xb0, 0xa3, 0xa1, 0xe4, 0xe8, 0x5d, 0x40, 0x47, 0x94, 0x8e, 0xfa, 0x9e, 0x63, 0xf5, - 0xc3, 0x4e, 0xf9, 0x89, 0x22, 0x8d, 0x35, 0xde, 0xd3, 0x72, 0xac, 0x4e, 0x28, 0x47, 0xdb, 0xb0, - 0xc1, 0x57, 0x80, 0xba, 0xcc, 0xb7, 0x69, 0xd0, 0x3f, 0xf0, 0xfc, 0x7e, 0xe0, 0x78, 0x27, 0xfd, - 0x03, 0xcf, 0x71, 0xbc, 0x13, 0xea, 0x87, 0xe5, 0x77, 0xc9, 0xf1, 0x06, 0x75, 0x09, 0xda, 0xf1, - 0xfc, 0x8e, 0xe3, 0x9d, 0xec, 0x84, 0x08, 0xce, 0x12, 0xa6, 0xd3, 0x66, 0xb6, 0x79, 0x14, 0xb2, - 0x84, 0x48, 0xda, 0xb5, 0xcd, 0x23, 0x74, 0x17, 0x56, 0xa8, 0x43, 0x45, 0x11, 0x27, 0x51, 0x19, - 0x81, 0x2a, 0x86, 0x42, 0x0e, 0xd2, 0x7f, 0x0b, 0xf2, 0x6d, 0x87, 0x98, 0xe2, 0x43, 0x10, 0x2f, - 0x89, 0x4d, 0xcf, 0xe5, 0x41, 0x60, 0xbb, 0x4c, 0x66, 0xc7, 0x3c, 0x8e, 0x8b, 0xf4, 0x9f, 0x01, - 0x7c, 0xee, 0xd9, 0x6e, 0xd7, 0x3b, 0xa2, 0xae, 0x78, 0x33, 0xe7, 0xac, 0x57, 0x6d, 0x65, 0x1e, - 0xab, 0x96, 0xe0, 0xe4, 0xc4, 0x25, 0x03, 0xea, 0x47, 0x4f, 0xc7, 0xb2, 0xc9, 0x2f, 0x97, 0x2c, - 0xf6, 0x3c, 0x56, 0x35, 0x50, 0x19, 0xb2, 0x26, 0xe9, 0x87, 0x27, 0xaf, 0xb8, 0x9d, 0xbf, 0x38, - 0xdf, 0xcc, 0x54, 0x8d, 0xa7, 0x74, 0x82, 0x33, 0x26, 0x79, 0x4a, 0x27, 0xfc, 0xf6, 0x35, 0x89, - 0x38, 0x2f, 0xc2, 0x4c, 0x51, 0xde, 0xbe, 0x55, 0x83, 0x1f, 0x06, 0x9c, 0x35, 0x09, 0xff, 0x45, - 0xef, 0x43, 0x51, 0x81, 0xfa, 0x87, 0x24, 0x38, 0x94, 0x5c, 0x75, 0x7b, 0xf5, 0xe2, 0x7c, 0x13, - 0x24, 0xf2, 0x09, 0x09, 0x0e, 0x31, 0x48, 0x34, 0xff, 0x8f, 0xea, 0x50, 0xf8, 0xd2, 0xb3, 0xdd, - 0x3e, 0x13, 0x93, 0x50, 0x95, 0xf4, 0xc2, 0xf3, 0x33, 0x9d, 0xaa, 0x2a, 0xef, 0xe1, 0xcb, 0x48, - 0xa2, 0xff, 0x4b, 0x02, 0x0a, 0xdc, 0xa6, 0x7d, 0x60, 0x9b, 0xfc, 0xb6, 0xfc, 0xee, 0x99, 0xfe, - 0x36, 0xa4, 0xcc, 0xc0, 0x57, 0x73, 0x13, 0xa9, 0xae, 0xda, 0xc1, 0x98, 0xcb, 0xd0, 0x67, 0x90, - 0x95, 0xc5, 0x85, 0x4a, 0xf2, 0xfa, 0xb7, 0xdf, 0xeb, 0xca, 0x45, 0xa5, 0x27, 0xf6, 0x72, 0xea, - 0x9d, 0x98, 0x65, 0x11, 0xc7, 0x45, 0xe8, 0x26, 0x24, 0x4d, 0x57, 0x04, 0x85, 0xfa, 0x96, 0x56, - 0x6d, 0xe2, 0xa4, 0xe9, 0xea, 0xff, 0x94, 0x80, 0x95, 0xba, 0x6b, 0xfa, 0x13, 0x91, 0x24, 0xf9, - 0x46, 0xdc, 0x81, 0x7c, 0x30, 0xde, 0x0f, 0x26, 0x01, 0xa3, 0xc3, 0xf0, 0xa9, 0x3e, 0x12, 0xa0, - 0x06, 0xe4, 0x89, 0x33, 0xf0, 0x7c, 0x9b, 0x1d, 0x0e, 0x15, 0x37, 0x5e, 0x9c, 0x98, 0xe3, 0x36, - 0x2b, 0x46, 0xa8, 0x82, 0xa7, 0xda, 0x61, 0x2a, 0x4e, 0x09, 0x67, 0x45, 0x2a, 0x7e, 0x0b, 0x8a, - 0x0e, 0x19, 0x72, 0x2a, 0xdc, 0xe7, 0x25, 0x97, 0x98, 0x47, 0x1a, 0x17, 0x94, 0x8c, 0x97, 0x91, - 0xba, 0x0e, 0xf9, 0xc8, 0x18, 0x5a, 0x83, 0x82, 0x51, 0xef, 0xf4, 0x3f, 0xd8, 0x7a, 0xd8, 0x7f, - 0x5c, 0xdd, 0xd3, 0x96, 0x14, 0x13, 0xf8, 0x87, 0x04, 0xac, 0xec, 0xc9, 0x18, 0x54, 0xc4, 0xe9, - 0x2e, 0x2c, 0xfb, 0xe4, 0x80, 0x85, 0xd4, 0x2e, 0x2d, 0x83, 0x8b, 0x27, 0x01, 0x4e, 0xed, 0x78, - 0xd7, 0x62, 0x6a, 0x17, 0xfb, 0x50, 0x94, 0xba, 0xf4, 0x43, 0x51, 0xfa, 0x7b, 0xf9, 0x50, 0xa4, - 0xff, 0x7d, 0x02, 0xd6, 0xd4, 0x45, 0x1d, 0x7e, 0x1c, 0x59, 0x48, 0xd7, 0x6f, 0xc1, 0x32, 0xbf, - 0xa7, 0xfb, 0xaa, 0x88, 0xcf, 0xe3, 0x2c, 0x6f, 0x36, 0x2c, 0xf4, 0x89, 0x7a, 0x17, 0x4d, 0xbd, - 0x9e, 0x20, 0xce, 0xd9, 0xaf, 0x4c, 0x1f, 0x4b, 0x63, 0x05, 0x6c, 0x3a, 0x5e, 0xc0, 0xea, 0xb7, - 0x21, 0xcd, 0x51, 0xbc, 0x88, 0xda, 0x69, 0xec, 0xd6, 0xb5, 0x25, 0xb4, 0x0c, 0xa9, 0x7a, 0xf3, - 0x99, 0x96, 0xe0, 0x75, 0x05, 0x48, 0x8b, 0x35, 0x4e, 0x1c, 0xee, 0x4e, 0x1d, 0x8b, 0x71, 0x68, - 0xde, 0xc5, 0x17, 0x5a, 0x39, 0x19, 0x32, 0x8e, 0x64, 0x8c, 0x71, 0xdc, 0x84, 0xac, 0x65, 0x0f, - 0x68, 0x10, 0x7d, 0xac, 0x91, 0x2d, 0xf4, 0x09, 0x80, 0xe9, 0x53, 0xa2, 0x1e, 0x75, 0xd2, 0x57, - 0x7a, 0x64, 0x50, 0x0a, 0x06, 0x7b, 0xf0, 0xeb, 0x14, 0xe4, 0xa3, 0x47, 0x04, 0x7e, 0x04, 0x39, - 0x73, 0x5d, 0x92, 0x4f, 0x89, 0x91, 0xbc, 0x29, 0x38, 0x6b, 0xde, 0xd8, 0xdd, 0x6d, 0x55, 0x8d, - 0x6e, 0xbd, 0xa6, 0x7d, 0x26, 0xa9, 0x6d, 0x04, 0x30, 0x1c, 0xc7, 0xe3, 0x87, 0xc8, 0x42, 0xfa, - 0x94, 0xda, 0xbe, 0x54, 0x0f, 0x96, 0x11, 0x2a, 0xe4, 0xb5, 0x6f, 0x43, 0xce, 0xe8, 0x74, 0x1a, - 0x8f, 0x9b, 0xf5, 0x9a, 0xf6, 0x55, 0xa2, 0xf4, 0x83, 0xd3, 0xb3, 0xf2, 0xb5, 0xa9, 0xa9, 0x20, - 0xb0, 0x07, 0x2e, 0xb5, 0x04, 0xaa, 0x5a, 0xad, 0xb7, 0xf9, 0x78, 0x2f, 0x93, 0xf3, 0x28, 0x41, - 0xe8, 0xc4, 0xc7, 0x87, 0x7c, 0x1b, 0xd7, 0xdb, 0x06, 0xe6, 0x23, 0x7e, 0x95, 0x9c, 0xf3, 0xab, - 0xed, 0xd3, 0x11, 0xf1, 0xf9, 0x98, 0x1b, 0xe1, 0x47, 0xb8, 0x97, 0x29, 0xf9, 0x40, 0x3d, 0x7d, - 0x39, 0xa1, 0xc4, 0x9a, 0xf0, 0xd1, 0xc4, 0x8b, 0x93, 0x30, 0x93, 0x9a, 0x1b, 0xad, 0xc3, 0x88, - 0xcf, 0xb8, 0x15, 0x1d, 0x96, 0x71, 0xaf, 0xd9, 0x14, 0xb3, 0x4b, 0xcf, 0xcd, 0x0e, 0x8f, 0x5d, - 0x97, 0x63, 0xee, 0x41, 0x2e, 0x7c, 0x90, 0xd2, 0xbe, 0x4a, 0xcf, 0x39, 0x54, 0x0d, 0x5f, 0xd3, - 0xc4, 0x80, 0x4f, 0x7a, 0x5d, 0xf1, 0x8d, 0xf0, 0x65, 0x66, 0x7e, 0xc0, 0xc3, 0x31, 0xb3, 0x78, - 0x31, 0x51, 0x8e, 0xd8, 0xfd, 0x57, 0x19, 0x49, 0xaa, 0x22, 0x8c, 0xa4, 0xf6, 0xdc, 0x0e, 0xae, - 0x7f, 0x2e, 0x3f, 0x27, 0xbe, 0xcc, 0xce, 0xd9, 0xc1, 0xf4, 0x4b, 0x6a, 0x32, 0x6a, 0x4d, 0xdf, - 0xdf, 0xa3, 0xae, 0x07, 0xbf, 0x07, 0xb9, 0x30, 0x01, 0xa3, 0x0d, 0xc8, 0x3e, 0x6f, 0xe1, 0xa7, - 0x75, 0xac, 0x2d, 0xc9, 0xd5, 0x09, 0x7b, 0x9e, 0xcb, 0x1b, 0xac, 0x0c, 0xcb, 0x7b, 0x46, 0xd3, - 0x78, 0x5c, 0xc7, 0xe1, 0xfb, 0x7f, 0x08, 0x50, 0x59, 0xa4, 0xa4, 0xa9, 0x01, 0x22, 0x9b, 0x0f, - 0x3e, 0x0f, 0xc3, 0x5e, 0x7c, 0x5d, 0xd0, 0x21, 0x5f, 0x6d, 0x35, 0xbb, 0x46, 0xa3, 0x29, 0x06, - 0x91, 0xfc, 0x30, 0x7a, 0x57, 0x92, 0x3c, 0x7b, 0x1d, 0xd2, 0xcd, 0x56, 0xad, 0xae, 0x25, 0x4a, - 0xab, 0xa7, 0x67, 0x65, 0xf9, 0xe1, 0x56, 0xf4, 0x6c, 0xdf, 0xf9, 0xfa, 0x9b, 0x8d, 0xa5, 0x5f, - 0x7e, 0xb3, 0xb1, 0xf4, 0xab, 0x6f, 0x36, 0x12, 0x2f, 0x2f, 0x36, 0x12, 0x5f, 0x5f, 0x6c, 0x24, - 0x7e, 0x71, 0xb1, 0x91, 0xf8, 0x8f, 0x8b, 0x8d, 0xc4, 0x7e, 0x56, 0xb0, 0xe5, 0x0f, 0xff, 0x2f, - 0x00, 0x00, 0xff, 0xff, 0xdb, 0xf0, 0xbe, 0x04, 0x5c, 0x23, 0x00, 0x00, + 0x76, 0x17, 0x3f, 0x45, 0x3e, 0x52, 0x52, 0x4f, 0xcd, 0xec, 0x58, 0x43, 0x8f, 0x25, 0xba, 0xc7, + 0xb3, 0x9e, 0x9d, 0x75, 0x68, 0x5b, 0xde, 0x18, 0xb3, 0x9e, 0xcd, 0xda, 0xcd, 0x0f, 0xcd, 0xd0, + 0x23, 0x91, 0x44, 0x91, 0x9c, 0x81, 0x11, 0x20, 0x44, 0xa9, 0xbb, 0x44, 0xb5, 0xd5, 0xec, 0x66, + 0xba, 0x8b, 0xd2, 0x30, 0x41, 0x80, 0x49, 0x0e, 0x49, 0xa0, 0x53, 0xee, 0x81, 0xb0, 0x08, 0x12, + 0xe4, 0x96, 0x73, 0x80, 0x9c, 0x7c, 0xf4, 0x29, 0xd8, 0x20, 0x40, 0xb0, 0x48, 0x10, 0x21, 0x56, + 0xfe, 0x81, 0x05, 0x82, 0x60, 0x0f, 0xc9, 0x21, 0xa8, 0x8f, 0x6e, 0x36, 0x39, 0x1c, 0x79, 0x9c, + 0xdd, 0x13, 0xbb, 0x5e, 0xfd, 0xde, 0xab, 0x57, 0x55, 0xaf, 0x5e, 0xfd, 0x5e, 0x11, 0x0a, 0x6c, + 0x3a, 0xa6, 0x41, 0x65, 0xec, 0x7b, 0xcc, 0x43, 0xc8, 0xf2, 0xcc, 0x63, 0xea, 0x57, 0x82, 0x53, + 0xe2, 0x8f, 0x8e, 0x6d, 0x56, 0x39, 0xf9, 0xb0, 0x74, 0x8b, 0xd9, 0x23, 0x1a, 0x30, 0x32, 0x1a, + 0xbf, 0x1f, 0x7d, 0x49, 0x78, 0xe9, 0x0d, 0x6b, 0xe2, 0x13, 0x66, 0x7b, 0xee, 0xfb, 0xe1, 0x87, + 0xea, 0xb8, 0x31, 0xf4, 0x86, 0x9e, 0xf8, 0x7c, 0x9f, 0x7f, 0x49, 0xa9, 0xbe, 0x0d, 0xab, 0x4f, + 0xa9, 0x1f, 0xd8, 0x9e, 0x8b, 0x6e, 0x40, 0xc6, 0x76, 0x2d, 0xfa, 0x7c, 0x33, 0x51, 0x4e, 0xdc, + 0x4b, 0x63, 0xd9, 0xd0, 0xff, 0x2a, 0x01, 0x05, 0xc3, 0x75, 0x3d, 0x26, 0x6c, 0x05, 0x08, 0x41, + 0xda, 0x25, 0x23, 0x2a, 0x40, 0x79, 0x2c, 0xbe, 0x51, 0x0d, 0xb2, 0x0e, 0x39, 0xa0, 0x4e, 0xb0, + 0x99, 0x2c, 0xa7, 0xee, 0x15, 0x76, 0x7e, 0x58, 0x79, 0xd9, 0xe7, 0x4a, 0xcc, 0x48, 0x65, 0x4f, + 0xa0, 0x1b, 0x2e, 0xf3, 0xa7, 0x58, 0xa9, 0x96, 0x7e, 0x0c, 0x85, 0x98, 0x18, 0x69, 0x90, 0x3a, + 0xa6, 0x53, 0x35, 0x0c, 0xff, 0xe4, 0xfe, 0x9d, 0x10, 0x67, 0x42, 0x37, 0x93, 0x42, 0x26, 0x1b, + 0x9f, 0x24, 0x1f, 0x24, 0xf4, 0x2f, 0x20, 0x8f, 0x69, 0xe0, 0x4d, 0x7c, 0x93, 0x06, 0xe8, 0x07, + 0x90, 0x77, 0x89, 0xeb, 0x0d, 0xcc, 0xf1, 0x24, 0x10, 0xea, 0xa9, 0x6a, 0xf1, 0xf2, 0x62, 0x3b, + 0xd7, 0x22, 0xae, 0x57, 0xeb, 0xf4, 0x03, 0x9c, 0xe3, 0xdd, 0xb5, 0xf1, 0x24, 0x40, 0x6f, 0x43, + 0x71, 0x44, 0x47, 0x9e, 0x3f, 0x1d, 0x1c, 0x4c, 0x19, 0x0d, 0x84, 0xe1, 0x14, 0x2e, 0x48, 0x59, + 0x95, 0x8b, 0xf4, 0xbf, 0x48, 0xc0, 0x8d, 0xd0, 0x36, 0xa6, 0xbf, 0x3f, 0xb1, 0x7d, 0x3a, 0xa2, + 0x2e, 0x0b, 0xd0, 0x6f, 0x43, 0xd6, 0xb1, 0x47, 0x36, 0x93, 0x63, 0x14, 0x76, 0xde, 0x5a, 0x36, + 0xe7, 0xc8, 0x2b, 0xac, 0xc0, 0xc8, 0x80, 0xa2, 0x4f, 0x03, 0xea, 0x9f, 0xc8, 0x95, 0x10, 0x43, + 0x7e, 0xab, 0xf2, 0x9c, 0x8a, 0xbe, 0x0b, 0xb9, 0x8e, 0x43, 0xd8, 0xa1, 0xe7, 0x8f, 0x90, 0x0e, + 0x45, 0xe2, 0x9b, 0x47, 0x36, 0xa3, 0x26, 0x9b, 0xf8, 0xe1, 0xae, 0xcc, 0xc9, 0xd0, 0x4d, 0x48, + 0x7a, 0x72, 0xa0, 0x7c, 0x35, 0x7b, 0x79, 0xb1, 0x9d, 0x6c, 0x77, 0x71, 0xd2, 0x0b, 0xf4, 0x87, + 0x70, 0xad, 0xe3, 0x4c, 0x86, 0xb6, 0x5b, 0xa7, 0x81, 0xe9, 0xdb, 0x63, 0x6e, 0x9d, 0x6f, 0x2f, + 0x0f, 0xbe, 0x70, 0x7b, 0xf9, 0x77, 0xb4, 0xe5, 0xc9, 0xd9, 0x96, 0xeb, 0x7f, 0x96, 0x84, 0x6b, + 0x0d, 0x77, 0x68, 0xbb, 0x34, 0xae, 0x7d, 0x17, 0xd6, 0xa9, 0x10, 0x0e, 0x4e, 0x64, 0x50, 0x29, + 0x3b, 0x6b, 0x52, 0x1a, 0x46, 0x5a, 0x73, 0x21, 0x5e, 0x3e, 0x5c, 0x36, 0xfd, 0x97, 0xac, 0x2f, + 0x8b, 0x1a, 0xd4, 0x80, 0xd5, 0xb1, 0x98, 0x44, 0xb0, 0x99, 0x12, 0xb6, 0xee, 0x2e, 0xb3, 0xf5, + 0xd2, 0x3c, 0xab, 0xe9, 0xaf, 0x2f, 0xb6, 0x57, 0x70, 0xa8, 0xfb, 0xeb, 0x04, 0xdf, 0x7f, 0x26, + 0x60, 0xa3, 0xe5, 0x59, 0x73, 0xeb, 0x50, 0x82, 0xdc, 0x91, 0x17, 0xb0, 0xd8, 0x41, 0x89, 0xda, + 0xe8, 0x01, 0xe4, 0xc6, 0x6a, 0xfb, 0xd4, 0xee, 0xdf, 0x5e, 0xee, 0xb2, 0xc4, 0xe0, 0x08, 0x8d, + 0x1e, 0x42, 0xde, 0x0f, 0x63, 0x62, 0x33, 0xf5, 0x3a, 0x81, 0x33, 0xc3, 0xa3, 0xdf, 0x81, 0xac, + 0xdc, 0x84, 0xcd, 0xb4, 0xd0, 0xbc, 0xfb, 0x5a, 0x6b, 0x8e, 0x95, 0x92, 0xfe, 0x8b, 0x04, 0x68, + 0x98, 0x1c, 0xb2, 0x7d, 0x3a, 0x3a, 0xa0, 0x7e, 0x97, 0x11, 0x36, 0x09, 0xd0, 0x4d, 0xc8, 0x3a, + 0x94, 0x58, 0xd4, 0x17, 0x93, 0xcc, 0x61, 0xd5, 0x42, 0x7d, 0x1e, 0xe4, 0xc4, 0x3c, 0x22, 0x07, + 0xb6, 0x63, 0xb3, 0xa9, 0x98, 0xe6, 0xfa, 0xf2, 0x5d, 0x5e, 0xb4, 0x59, 0xc1, 0x31, 0x45, 0x3c, + 0x67, 0x06, 0x6d, 0xc2, 0xea, 0x88, 0x06, 0x01, 0x19, 0x52, 0x31, 0xfb, 0x3c, 0x0e, 0x9b, 0xfa, + 0x43, 0x28, 0xc6, 0xf5, 0x50, 0x01, 0x56, 0xfb, 0xad, 0x27, 0xad, 0xf6, 0xb3, 0x96, 0xb6, 0x82, + 0x36, 0xa0, 0xd0, 0x6f, 0xe1, 0x86, 0x51, 0x7b, 0x6c, 0x54, 0xf7, 0x1a, 0x5a, 0x02, 0xad, 0x41, + 0x7e, 0xd6, 0x4c, 0xea, 0x3f, 0x4b, 0x00, 0xf0, 0x0d, 0x54, 0x93, 0xfa, 0x04, 0x32, 0x01, 0x23, + 0x4c, 0x6e, 0xdc, 0xfa, 0xce, 0x3b, 0xcb, 0xbc, 0x9e, 0xc1, 0x2b, 0xfc, 0x87, 0x62, 0xa9, 0x12, + 0xf7, 0x30, 0xb9, 0xe8, 0x61, 0x46, 0x20, 0xe7, 0x5d, 0xcb, 0x41, 0xba, 0xce, 0xbf, 0x12, 0x28, + 0x0f, 0x19, 0xdc, 0x30, 0xea, 0x5f, 0x68, 0x49, 0xa4, 0x41, 0xb1, 0xde, 0xec, 0xd6, 0xda, 0xad, + 0x56, 0xa3, 0xd6, 0x6b, 0xd4, 0xb5, 0x94, 0x7e, 0x17, 0x32, 0xcd, 0x11, 0x19, 0x52, 0x74, 0x9b, + 0x47, 0xc0, 0x21, 0xf5, 0xa9, 0x6b, 0x86, 0x81, 0x35, 0x13, 0xe8, 0x3f, 0xcf, 0x43, 0x66, 0xdf, + 0x9b, 0xb8, 0x0c, 0xed, 0xc4, 0x4e, 0xf1, 0xfa, 0xce, 0xd6, 0xb2, 0x29, 0x08, 0x60, 0xa5, 0x37, + 0x1d, 0x53, 0x75, 0xca, 0x6f, 0x42, 0x56, 0xc6, 0x8a, 0x72, 0x5d, 0xb5, 0xb8, 0x9c, 0x11, 0x7f, + 0x48, 0x99, 0x5a, 0x74, 0xd5, 0x42, 0xf7, 0x20, 0xe7, 0x53, 0x62, 0x79, 0xae, 0x33, 0x15, 0x21, + 0x95, 0x93, 0x69, 0x16, 0x53, 0x62, 0xb5, 0x5d, 0x67, 0x8a, 0xa3, 0x5e, 0xf4, 0x18, 0x8a, 0x07, + 0xb6, 0x6b, 0x0d, 0xbc, 0xb1, 0xcc, 0x79, 0x99, 0x57, 0x07, 0xa0, 0xf4, 0xaa, 0x6a, 0xbb, 0x56, + 0x5b, 0x82, 0x71, 0xe1, 0x60, 0xd6, 0x40, 0x2d, 0x58, 0x3f, 0xf1, 0x9c, 0xc9, 0x88, 0x46, 0xb6, + 0xb2, 0xc2, 0xd6, 0xbb, 0xaf, 0xb6, 0xf5, 0x54, 0xe0, 0x43, 0x6b, 0x6b, 0x27, 0xf1, 0x26, 0x7a, + 0x02, 0x6b, 0x6c, 0x34, 0x3e, 0x0c, 0x22, 0x73, 0xab, 0xc2, 0xdc, 0xf7, 0xaf, 0x58, 0x30, 0x0e, + 0x0f, 0xad, 0x15, 0x59, 0xac, 0x55, 0xfa, 0x93, 0x14, 0x14, 0x62, 0x9e, 0xa3, 0x2e, 0x14, 0xc6, + 0xbe, 0x37, 0x26, 0x43, 0x91, 0xb7, 0xd5, 0x5e, 0x7c, 0xf8, 0x5a, 0xb3, 0xae, 0x74, 0x66, 0x8a, + 0x38, 0x6e, 0x45, 0x3f, 0x4f, 0x42, 0x21, 0xd6, 0x89, 0xee, 0x43, 0x0e, 0x77, 0x70, 0xf3, 0xa9, + 0xd1, 0x6b, 0x68, 0x2b, 0xa5, 0xdb, 0x67, 0xe7, 0xe5, 0x4d, 0x61, 0x2d, 0x6e, 0xa0, 0xe3, 0xdb, + 0x27, 0x3c, 0xf4, 0xee, 0xc1, 0x6a, 0x08, 0x4d, 0x94, 0xde, 0x3c, 0x3b, 0x2f, 0xbf, 0xb1, 0x08, + 0x8d, 0x21, 0x71, 0xf7, 0xb1, 0x81, 0x1b, 0x75, 0x2d, 0xb9, 0x1c, 0x89, 0xbb, 0x47, 0xc4, 0xa7, + 0x16, 0xfa, 0x3e, 0x64, 0x15, 0x30, 0x55, 0x2a, 0x9d, 0x9d, 0x97, 0x6f, 0x2e, 0x02, 0x67, 0x38, + 0xdc, 0xdd, 0x33, 0x9e, 0x36, 0xb4, 0xf4, 0x72, 0x1c, 0xee, 0x3a, 0xe4, 0x84, 0xa2, 0x77, 0x20, + 0x23, 0x61, 0x99, 0xd2, 0xad, 0xb3, 0xf3, 0xf2, 0xf7, 0x5e, 0x32, 0xc7, 0x51, 0xa5, 0xcd, 0x3f, + 0xff, 0xeb, 0xad, 0x95, 0x7f, 0xf8, 0x9b, 0x2d, 0x6d, 0xb1, 0xbb, 0xf4, 0xbf, 0x09, 0x58, 0x9b, + 0xdb, 0x72, 0xa4, 0x43, 0xd6, 0xf5, 0x4c, 0x6f, 0x2c, 0xd3, 0x79, 0xae, 0x0a, 0x97, 0x17, 0xdb, + 0xd9, 0x96, 0x57, 0xf3, 0xc6, 0x53, 0xac, 0x7a, 0xd0, 0x93, 0x85, 0x0b, 0xe9, 0xa3, 0xd7, 0x8c, + 0xa7, 0xa5, 0x57, 0xd2, 0xa7, 0xb0, 0x66, 0xf9, 0xf6, 0x09, 0xf5, 0x07, 0xa6, 0xe7, 0x1e, 0xda, + 0x43, 0x95, 0xaa, 0x4b, 0xcb, 0x6c, 0xd6, 0x05, 0x10, 0x17, 0xa5, 0x42, 0x4d, 0xe0, 0x7f, 0x8d, + 0xcb, 0xa8, 0xf4, 0x14, 0x8a, 0xf1, 0x08, 0x45, 0x6f, 0x01, 0x04, 0xf6, 0x1f, 0x50, 0xc5, 0x6f, + 0x04, 0x1b, 0xc2, 0x79, 0x2e, 0x11, 0xec, 0x06, 0xbd, 0x0b, 0xe9, 0x91, 0x67, 0x49, 0x3b, 0x99, + 0xea, 0x75, 0x7e, 0x27, 0xfe, 0xeb, 0xc5, 0x76, 0xc1, 0x0b, 0x2a, 0xbb, 0xb6, 0x43, 0xf7, 0x3d, + 0x8b, 0x62, 0x01, 0xd0, 0x4f, 0x20, 0xcd, 0x53, 0x05, 0x7a, 0x13, 0xd2, 0xd5, 0x66, 0xab, 0xae, + 0xad, 0x94, 0xae, 0x9d, 0x9d, 0x97, 0xd7, 0xc4, 0x92, 0xf0, 0x0e, 0x1e, 0xbb, 0x68, 0x1b, 0xb2, + 0x4f, 0xdb, 0x7b, 0xfd, 0x7d, 0x1e, 0x5e, 0xd7, 0xcf, 0xce, 0xcb, 0x1b, 0x51, 0xb7, 0x5c, 0x34, + 0xf4, 0x16, 0x64, 0x7a, 0xfb, 0x9d, 0xdd, 0xae, 0x96, 0x2c, 0xa1, 0xb3, 0xf3, 0xf2, 0x7a, 0xd4, + 0x2f, 0x7c, 0x2e, 0x5d, 0x53, 0xbb, 0x9a, 0x8f, 0xe4, 0xfa, 0xff, 0x24, 0x61, 0x0d, 0x73, 0x7e, + 0xeb, 0xb3, 0x8e, 0xe7, 0xd8, 0xe6, 0x14, 0x75, 0x20, 0x6f, 0x7a, 0xae, 0x65, 0xc7, 0xce, 0xd4, + 0xce, 0x2b, 0x2e, 0xc1, 0x99, 0x56, 0xd8, 0xaa, 0x85, 0x9a, 0x78, 0x66, 0x04, 0xed, 0x40, 0xc6, + 0xa2, 0x0e, 0x99, 0x5e, 0x75, 0x1b, 0xd7, 0x15, 0x97, 0xc6, 0x12, 0x2a, 0x98, 0x23, 0x79, 0x3e, + 0x20, 0x8c, 0xd1, 0xd1, 0x98, 0xc9, 0xdb, 0x38, 0x8d, 0x0b, 0x23, 0xf2, 0xdc, 0x50, 0x22, 0xf4, + 0x23, 0xc8, 0x9e, 0xda, 0xae, 0xe5, 0x9d, 0xaa, 0x0b, 0xf7, 0x6a, 0xbb, 0x0a, 0xab, 0x9f, 0xf1, + 0x7b, 0x76, 0xc1, 0x59, 0xbe, 0xea, 0xad, 0x76, 0xab, 0x11, 0xae, 0xba, 0xea, 0x6f, 0xbb, 0x2d, + 0xcf, 0xe5, 0x27, 0x06, 0xda, 0xad, 0xc1, 0xae, 0xd1, 0xdc, 0xeb, 0x63, 0xbe, 0xf2, 0x37, 0xce, + 0xce, 0xcb, 0x5a, 0x04, 0xd9, 0x25, 0xb6, 0xc3, 0x49, 0xe0, 0x2d, 0x48, 0x19, 0xad, 0x2f, 0xb4, + 0x64, 0x49, 0x3b, 0x3b, 0x2f, 0x17, 0xa3, 0x6e, 0xc3, 0x9d, 0xce, 0x0e, 0xd3, 0xe2, 0xb8, 0xfa, + 0xbf, 0x27, 0xa1, 0xd8, 0x1f, 0x5b, 0x84, 0x51, 0x19, 0x99, 0xa8, 0x0c, 0x85, 0x31, 0xf1, 0x89, + 0xe3, 0x50, 0xc7, 0x0e, 0x46, 0xaa, 0x50, 0x88, 0x8b, 0xd0, 0x83, 0xef, 0xb0, 0x98, 0x8a, 0x84, + 0xa9, 0x25, 0xed, 0xc3, 0xfa, 0xa1, 0x74, 0x76, 0x40, 0x4c, 0xb1, 0xbb, 0x29, 0xb1, 0xbb, 0x95, + 0x65, 0x26, 0xe2, 0x5e, 0x55, 0xd4, 0x1c, 0x0d, 0xa1, 0x85, 0xd7, 0x0e, 0xe3, 0x4d, 0xf4, 0x31, + 0xac, 0x8e, 0x3c, 0xd7, 0x66, 0x9e, 0xff, 0x5a, 0xfb, 0x10, 0x82, 0xd1, 0x7d, 0xb8, 0xc6, 0x77, + 0x38, 0x74, 0x49, 0x74, 0x8b, 0x9b, 0x2b, 0x89, 0x37, 0x46, 0xe4, 0xb9, 0x1a, 0x13, 0x73, 0xb1, + 0xfe, 0x31, 0xac, 0xcd, 0xf9, 0xc0, 0x6f, 0xf3, 0x8e, 0xd1, 0xef, 0x36, 0xb4, 0x15, 0x54, 0x84, + 0x5c, 0xad, 0xdd, 0xea, 0x35, 0x5b, 0x7d, 0x4e, 0x3d, 0x8a, 0x90, 0xc3, 0xed, 0xbd, 0xbd, 0xaa, + 0x51, 0x7b, 0xa2, 0x25, 0xf5, 0xff, 0x8e, 0xd6, 0x57, 0x71, 0x8f, 0xea, 0x3c, 0xf7, 0x78, 0xef, + 0xd5, 0x53, 0x57, 0xec, 0x63, 0xd6, 0x88, 0x38, 0xc8, 0x4f, 0x00, 0xc4, 0x36, 0x52, 0x6b, 0x40, + 0xd8, 0x55, 0xf5, 0x45, 0x2f, 0xac, 0x1c, 0x71, 0x5e, 0x29, 0x18, 0x0c, 0x7d, 0x06, 0x45, 0xd3, + 0x1b, 0x8d, 0x1d, 0xaa, 0xf4, 0x53, 0xaf, 0xa3, 0x5f, 0x88, 0x54, 0x0c, 0x16, 0xe7, 0x40, 0xe9, + 0x79, 0x0e, 0xf4, 0xa7, 0x09, 0x28, 0xc4, 0x1c, 0x9e, 0xa7, 0x42, 0x45, 0xc8, 0xf5, 0x3b, 0x75, + 0xa3, 0xd7, 0x6c, 0x3d, 0xd2, 0x12, 0x08, 0x20, 0x2b, 0x16, 0xb0, 0xae, 0x25, 0x39, 0x5d, 0xab, + 0xb5, 0xf7, 0x3b, 0x7b, 0x0d, 0x41, 0x86, 0xd0, 0x0d, 0xd0, 0xc2, 0x25, 0x1c, 0x74, 0x7b, 0x06, + 0xe6, 0xd2, 0x34, 0xba, 0x0e, 0x1b, 0x91, 0x54, 0x69, 0x66, 0xd0, 0x4d, 0x40, 0x91, 0x70, 0x66, + 0x22, 0xab, 0xff, 0x11, 0x6c, 0xd4, 0x3c, 0x97, 0x11, 0xdb, 0x8d, 0xa8, 0xec, 0x0e, 0x9f, 0xb7, + 0x12, 0x0d, 0x6c, 0x4b, 0x66, 0xdb, 0xea, 0xc6, 0xe5, 0xc5, 0x76, 0x21, 0x82, 0x36, 0xeb, 0x7c, + 0xa6, 0x61, 0xc3, 0xe2, 0x67, 0x6a, 0x6c, 0x5b, 0x2a, 0x79, 0xae, 0x5e, 0x5e, 0x6c, 0xa7, 0x3a, + 0xcd, 0x3a, 0xe6, 0x32, 0xf4, 0x26, 0xe4, 0xe9, 0x73, 0x9b, 0x0d, 0x4c, 0x9e, 0x5d, 0xf9, 0x1a, + 0x66, 0x70, 0x8e, 0x0b, 0x6a, 0x3c, 0x99, 0xfe, 0x71, 0x12, 0xa0, 0x47, 0x82, 0x63, 0x35, 0xf4, + 0x43, 0xc8, 0x47, 0x45, 0xfc, 0x55, 0xc5, 0x64, 0x6c, 0xbf, 0x22, 0x3c, 0xfa, 0x28, 0x8c, 0x18, + 0xc9, 0xb1, 0x97, 0x2b, 0xaa, 0xb1, 0x96, 0xd1, 0xd4, 0x79, 0x22, 0xcd, 0xef, 0x1a, 0xea, 0xfb, + 0x6a, 0xe3, 0xf8, 0x27, 0xaa, 0x89, 0x7c, 0x2b, 0xe7, 0xac, 0x98, 0xdb, 0x9d, 0x65, 0x83, 0x2c, + 0x2c, 0xe8, 0xe3, 0x15, 0x3c, 0xd3, 0xab, 0x6a, 0xb0, 0xee, 0x4f, 0x5c, 0xee, 0xf5, 0x20, 0x10, + 0xdd, 0xba, 0x0d, 0x6f, 0xb4, 0x28, 0x3b, 0xf5, 0xfc, 0x63, 0x83, 0x31, 0x62, 0x1e, 0xf1, 0xa2, + 0x5a, 0x25, 0x99, 0x19, 0xe1, 0x4c, 0xcc, 0x11, 0xce, 0x4d, 0x58, 0x25, 0x8e, 0x4d, 0x02, 0x2a, + 0x6f, 0xe9, 0x3c, 0x0e, 0x9b, 0x9c, 0x16, 0x13, 0xcb, 0xf2, 0x69, 0x10, 0x50, 0x59, 0x06, 0xe6, + 0xf1, 0x4c, 0xa0, 0xff, 0x73, 0x12, 0xa0, 0xd9, 0x31, 0xf6, 0x95, 0xf9, 0x3a, 0x64, 0x0f, 0xc9, + 0xc8, 0x76, 0xa6, 0x57, 0x1d, 0xb2, 0x19, 0xbe, 0x62, 0x48, 0x43, 0xbb, 0x42, 0x07, 0x2b, 0x5d, + 0xc1, 0x96, 0x27, 0x07, 0x2e, 0x65, 0x11, 0x5b, 0x16, 0x2d, 0x7e, 0x35, 0xfb, 0xc4, 0x8d, 0x16, + 0x56, 0x36, 0xb8, 0xeb, 0x43, 0xc2, 0xe8, 0x29, 0x99, 0x86, 0x67, 0x42, 0x35, 0xd1, 0x63, 0xce, + 0xa2, 0x79, 0x71, 0x4f, 0xad, 0xcd, 0x8c, 0xe0, 0x1e, 0xdf, 0xe6, 0x0f, 0x56, 0x70, 0x49, 0x3a, + 0x22, 0xed, 0xd2, 0x43, 0x71, 0x53, 0xce, 0xba, 0xbe, 0x53, 0x11, 0xfb, 0x01, 0xac, 0xcd, 0xcd, + 0xf3, 0xa5, 0x32, 0xa5, 0xd9, 0x79, 0xfa, 0x23, 0x2d, 0xad, 0xbe, 0x3e, 0xd6, 0xb2, 0xfa, 0x7f, + 0x25, 0x00, 0x3a, 0x9e, 0x1f, 0x6e, 0xda, 0xf2, 0x67, 0xa1, 0x9c, 0x78, 0x64, 0x32, 0x3d, 0x47, + 0x85, 0xe7, 0x52, 0x9e, 0x3e, 0xb3, 0xc2, 0x69, 0xaf, 0x80, 0xe3, 0x48, 0x11, 0x6d, 0x43, 0x41, + 0xee, 0xff, 0x60, 0xec, 0xf9, 0x32, 0x1f, 0xad, 0x61, 0x90, 0x22, 0xae, 0x89, 0xee, 0xc2, 0xfa, + 0x78, 0x72, 0xe0, 0xd8, 0xc1, 0x11, 0xb5, 0x24, 0x26, 0x2d, 0x30, 0x6b, 0x91, 0x94, 0xc3, 0xf4, + 0x3a, 0xe4, 0x42, 0xeb, 0x68, 0x13, 0x52, 0xbd, 0x5a, 0x47, 0x5b, 0x29, 0x6d, 0x9c, 0x9d, 0x97, + 0x0b, 0xa1, 0xb8, 0x57, 0xeb, 0xf0, 0x9e, 0x7e, 0xbd, 0xa3, 0x25, 0xe6, 0x7b, 0xfa, 0xf5, 0x4e, + 0x29, 0xcd, 0x6f, 0x49, 0xfd, 0x2f, 0x13, 0x90, 0x95, 0x9c, 0x6d, 0xe9, 0x8c, 0x0d, 0x58, 0x0d, + 0x2b, 0x09, 0x49, 0x24, 0xdf, 0x7d, 0x35, 0xe9, 0xab, 0x28, 0x8e, 0x26, 0xf7, 0x31, 0xd4, 0x2b, + 0x7d, 0x02, 0xc5, 0x78, 0xc7, 0x77, 0xda, 0xc5, 0x3f, 0x84, 0x02, 0x0f, 0x94, 0x90, 0xfc, 0xed, + 0x40, 0x56, 0xf2, 0x4a, 0x95, 0x55, 0xae, 0x62, 0xa0, 0x0a, 0x89, 0x1e, 0xc0, 0xaa, 0x64, 0xad, + 0xe1, 0x7b, 0xca, 0xd6, 0xd5, 0xe1, 0x88, 0x43, 0xb8, 0xfe, 0x29, 0xa4, 0x3b, 0x94, 0xfa, 0xe8, + 0x0e, 0xac, 0xba, 0x9e, 0x45, 0x67, 0x49, 0x54, 0x11, 0x6e, 0x8b, 0x36, 0xeb, 0x9c, 0x70, 0x5b, + 0xb4, 0x69, 0xf1, 0xc5, 0xe3, 0x07, 0x34, 0x7c, 0x52, 0xe2, 0xdf, 0x7a, 0x0f, 0x8a, 0xcf, 0xa8, + 0x3d, 0x3c, 0x62, 0xd4, 0x12, 0x86, 0xde, 0x83, 0xf4, 0x98, 0x46, 0xce, 0x6f, 0x2e, 0x0d, 0x1d, + 0x4a, 0x7d, 0x2c, 0x50, 0xfc, 0x40, 0x9e, 0x0a, 0x6d, 0xf5, 0x8a, 0xa7, 0x5a, 0xfa, 0xdf, 0x25, + 0x61, 0xbd, 0x19, 0x04, 0x13, 0xe2, 0x9a, 0xe1, 0x2d, 0xfb, 0xd3, 0xf9, 0x5b, 0xf6, 0xde, 0xd2, + 0x19, 0xce, 0xa9, 0xcc, 0x57, 0xf9, 0x2a, 0x49, 0x26, 0xa3, 0x24, 0xa9, 0x7f, 0x9d, 0x08, 0xcb, + 0xfb, 0xbb, 0xb1, 0x73, 0x53, 0xda, 0x3c, 0x3b, 0x2f, 0xdf, 0x88, 0x5b, 0xa2, 0x7d, 0xf7, 0xd8, + 0xf5, 0x4e, 0x5d, 0xf4, 0x36, 0x2f, 0xf7, 0x5b, 0x8d, 0x67, 0x5a, 0xa2, 0x74, 0xf3, 0xec, 0xbc, + 0x8c, 0xe6, 0x40, 0x98, 0xba, 0xf4, 0x94, 0x5b, 0xea, 0x34, 0x5a, 0x75, 0x7e, 0x1f, 0x26, 0x97, + 0x58, 0xea, 0x50, 0xd7, 0xb2, 0xdd, 0x21, 0xba, 0x03, 0xd9, 0x66, 0xb7, 0xdb, 0x17, 0x05, 0xd8, + 0x1b, 0x67, 0xe7, 0xe5, 0xeb, 0x73, 0x28, 0xde, 0xa0, 0x16, 0x07, 0x71, 0x82, 0xc8, 0x6f, 0xca, + 0x25, 0x20, 0xce, 0x5d, 0xa8, 0xa5, 0x22, 0xfc, 0xdf, 0x92, 0xa0, 0x19, 0xa6, 0x49, 0xc7, 0x8c, + 0xf7, 0x2b, 0xd2, 0xdd, 0x83, 0xdc, 0x98, 0x7f, 0xd9, 0xa2, 0x88, 0xe0, 0x61, 0xf1, 0x60, 0xe9, + 0x13, 0xef, 0x82, 0x5e, 0x05, 0x7b, 0x0e, 0x35, 0xac, 0x91, 0x1d, 0x04, 0xbc, 0xb8, 0x14, 0x32, + 0x1c, 0x59, 0x2a, 0xfd, 0x32, 0x01, 0xd7, 0x97, 0x20, 0xd0, 0x07, 0x90, 0xf6, 0x3d, 0x27, 0xdc, + 0x9e, 0xdb, 0xaf, 0x7a, 0x80, 0xe1, 0xaa, 0x58, 0x20, 0xd1, 0x16, 0x00, 0x99, 0x30, 0x8f, 0x88, + 0xf1, 0xc5, 0xc6, 0xe4, 0x70, 0x4c, 0x82, 0x9e, 0x41, 0x36, 0xa0, 0xa6, 0x4f, 0x43, 0x3e, 0xf3, + 0xe9, 0xff, 0xd7, 0xfb, 0x4a, 0x57, 0x98, 0xc1, 0xca, 0x5c, 0xa9, 0x02, 0x59, 0x29, 0xe1, 0x11, + 0x6d, 0x11, 0x46, 0x84, 0xd3, 0x45, 0x2c, 0xbe, 0x79, 0xa0, 0x10, 0x67, 0x18, 0x06, 0x0a, 0x71, + 0x86, 0xfa, 0xcf, 0x92, 0x00, 0x8d, 0xe7, 0x8c, 0xfa, 0x2e, 0x71, 0x6a, 0x06, 0x6a, 0xc4, 0x32, + 0xa4, 0x9c, 0xed, 0x0f, 0x96, 0x3e, 0xcb, 0x45, 0x1a, 0x95, 0x9a, 0xb1, 0x24, 0x47, 0xde, 0x82, + 0xd4, 0xc4, 0x77, 0xd4, 0x13, 0xaf, 0x20, 0x22, 0x7d, 0xbc, 0x87, 0xb9, 0x0c, 0x35, 0x66, 0x19, + 0x29, 0xf5, 0xea, 0xb7, 0xf9, 0xd8, 0x00, 0xbf, 0xf9, 0xac, 0xf4, 0x1e, 0xc0, 0xcc, 0x6b, 0xb4, + 0x05, 0x99, 0xda, 0x6e, 0xb7, 0xbb, 0xa7, 0xad, 0xc8, 0x1a, 0x71, 0xd6, 0x25, 0xc4, 0xfa, 0xdf, + 0x26, 0x20, 0x57, 0x33, 0xd4, 0xad, 0xb2, 0x0b, 0x9a, 0xc8, 0x25, 0x26, 0xf5, 0xd9, 0x80, 0x3e, + 0x1f, 0xdb, 0xfe, 0x54, 0xa5, 0x83, 0xab, 0x59, 0xfc, 0x3a, 0xd7, 0xaa, 0x51, 0x9f, 0x35, 0x84, + 0x0e, 0xc2, 0x50, 0xa4, 0x6a, 0x8a, 0x03, 0x93, 0x84, 0xc9, 0x79, 0xeb, 0xea, 0xa5, 0x90, 0xec, + 0x6f, 0xd6, 0x0e, 0x70, 0x21, 0x34, 0x52, 0x23, 0x81, 0xfe, 0x14, 0xae, 0xb7, 0x7d, 0xf3, 0x88, + 0x06, 0x4c, 0x0e, 0xaa, 0x5c, 0xfe, 0x14, 0x6e, 0x33, 0x12, 0x1c, 0x0f, 0x8e, 0xec, 0x80, 0x79, + 0xfe, 0x74, 0xe0, 0x53, 0x46, 0x5d, 0xde, 0x3f, 0x10, 0xff, 0x00, 0xa8, 0x1a, 0xfc, 0x16, 0xc7, + 0x3c, 0x96, 0x10, 0x1c, 0x22, 0xf6, 0x38, 0x40, 0x6f, 0x42, 0x91, 0x13, 0xb6, 0x3a, 0x3d, 0x24, + 0x13, 0x87, 0x05, 0xe8, 0xc7, 0x00, 0x8e, 0x37, 0x1c, 0xbc, 0x76, 0x26, 0xcf, 0x3b, 0xde, 0x50, + 0x7e, 0xea, 0xbf, 0x0b, 0x5a, 0xdd, 0x0e, 0xc6, 0x84, 0x99, 0x47, 0xe1, 0xe3, 0x02, 0x7a, 0x04, + 0xda, 0x11, 0x25, 0x3e, 0x3b, 0xa0, 0x84, 0x0d, 0xc6, 0xd4, 0xb7, 0x3d, 0xeb, 0xb5, 0x96, 0x74, + 0x23, 0xd2, 0xea, 0x08, 0x25, 0xfd, 0x57, 0x09, 0x00, 0x4c, 0x0e, 0x43, 0x02, 0xf0, 0x43, 0xb8, + 0x16, 0xb8, 0x64, 0x1c, 0x1c, 0x79, 0x6c, 0x60, 0xbb, 0x8c, 0xfa, 0x27, 0xc4, 0x51, 0x05, 0xa2, + 0x16, 0x76, 0x34, 0x95, 0x1c, 0xbd, 0x07, 0xe8, 0x98, 0xd2, 0xf1, 0xc0, 0x73, 0xac, 0x41, 0xd8, + 0x29, 0xff, 0xa2, 0x48, 0x63, 0x8d, 0xf7, 0xb4, 0x1d, 0xab, 0x1b, 0xca, 0x51, 0x15, 0xb6, 0xf8, + 0x0a, 0x50, 0x97, 0xf9, 0x36, 0x0d, 0x06, 0x87, 0x9e, 0x3f, 0x08, 0x1c, 0xef, 0x74, 0x70, 0xe8, + 0x39, 0x8e, 0x77, 0x4a, 0xfd, 0xb0, 0xfc, 0x2e, 0x39, 0xde, 0xb0, 0x21, 0x41, 0xbb, 0x9e, 0xdf, + 0x75, 0xbc, 0xd3, 0xdd, 0x10, 0xc1, 0x59, 0xc2, 0x6c, 0xda, 0xcc, 0x36, 0x8f, 0x43, 0x96, 0x10, + 0x49, 0x7b, 0xb6, 0x79, 0x8c, 0xee, 0xc0, 0x1a, 0x75, 0xa8, 0x28, 0xe2, 0x24, 0x2a, 0x23, 0x50, + 0xc5, 0x50, 0xc8, 0x41, 0xfa, 0x6f, 0x41, 0xbe, 0xe3, 0x10, 0x53, 0xfc, 0x11, 0xc4, 0x4b, 0x62, + 0xd3, 0x73, 0x79, 0x10, 0xd8, 0x2e, 0x93, 0xd9, 0x31, 0x8f, 0xe3, 0x22, 0xfd, 0xa7, 0x00, 0x9f, + 0x7b, 0xb6, 0xdb, 0xf3, 0x8e, 0xa9, 0x2b, 0xde, 0xcc, 0x39, 0xeb, 0x55, 0x5b, 0x99, 0xc7, 0xaa, + 0x25, 0x38, 0x39, 0x71, 0xc9, 0x90, 0xfa, 0xd1, 0xd3, 0xb1, 0x6c, 0xf2, 0xcb, 0x25, 0x8b, 0x3d, + 0x8f, 0xd5, 0x0c, 0x54, 0x86, 0xac, 0x49, 0x06, 0xe1, 0xc9, 0x2b, 0x56, 0xf3, 0x97, 0x17, 0xdb, + 0x99, 0x9a, 0xf1, 0x84, 0x4e, 0x71, 0xc6, 0x24, 0x4f, 0xe8, 0x94, 0xdf, 0xbe, 0x26, 0x11, 0xe7, + 0x45, 0x98, 0x29, 0xca, 0xdb, 0xb7, 0x66, 0xf0, 0xc3, 0x80, 0xb3, 0x26, 0xe1, 0xbf, 0xe8, 0x03, + 0x28, 0x2a, 0xd0, 0xe0, 0x88, 0x04, 0x47, 0x92, 0xab, 0x56, 0xd7, 0x2f, 0x2f, 0xb6, 0x41, 0x22, + 0x1f, 0x93, 0xe0, 0x08, 0x83, 0x44, 0xf3, 0x6f, 0xd4, 0x80, 0xc2, 0x97, 0x9e, 0xed, 0x0e, 0x98, + 0x98, 0x84, 0xaa, 0xa4, 0x97, 0x9e, 0x9f, 0xd9, 0x54, 0x55, 0x79, 0x0f, 0x5f, 0x46, 0x12, 0xfd, + 0x5f, 0x12, 0x50, 0xe0, 0x36, 0xed, 0x43, 0xdb, 0xe4, 0xb7, 0xe5, 0x77, 0xcf, 0xf4, 0xb7, 0x20, + 0x65, 0x06, 0xbe, 0x9a, 0x9b, 0x48, 0x75, 0xb5, 0x2e, 0xc6, 0x5c, 0x86, 0x3e, 0x83, 0xac, 0x2c, + 0x2e, 0x54, 0x92, 0xd7, 0xbf, 0xfd, 0x5e, 0x57, 0x2e, 0x2a, 0x3d, 0xb1, 0x97, 0x33, 0xef, 0xc4, + 0x2c, 0x8b, 0x38, 0x2e, 0x42, 0x37, 0x21, 0x69, 0xba, 0x22, 0x28, 0xd4, 0x7f, 0x69, 0xb5, 0x16, + 0x4e, 0x9a, 0xae, 0xfe, 0x4f, 0x09, 0x58, 0x6b, 0xb8, 0xa6, 0x3f, 0x15, 0x49, 0x92, 0x6f, 0xc4, + 0x6d, 0xc8, 0x07, 0x93, 0x83, 0x60, 0x1a, 0x30, 0x3a, 0x0a, 0x9f, 0xea, 0x23, 0x01, 0x6a, 0x42, + 0x9e, 0x38, 0x43, 0xcf, 0xb7, 0xd9, 0xd1, 0x48, 0x71, 0xe3, 0xe5, 0x89, 0x39, 0x6e, 0xb3, 0x62, + 0x84, 0x2a, 0x78, 0xa6, 0x1d, 0xa6, 0xe2, 0x94, 0x70, 0x56, 0xa4, 0xe2, 0xb7, 0xa1, 0xe8, 0x90, + 0x11, 0xa7, 0xc2, 0x03, 0x5e, 0x72, 0x89, 0x79, 0xa4, 0x71, 0x41, 0xc9, 0x78, 0x19, 0xa9, 0xeb, + 0x90, 0x8f, 0x8c, 0xa1, 0x0d, 0x28, 0x18, 0x8d, 0xee, 0xe0, 0xc3, 0x9d, 0x07, 0x83, 0x47, 0xb5, + 0x7d, 0x6d, 0x45, 0x31, 0x81, 0xbf, 0x4f, 0xc0, 0xda, 0xbe, 0x8c, 0x41, 0x45, 0x9c, 0xee, 0xc0, + 0xaa, 0x4f, 0x0e, 0x59, 0x48, 0xed, 0xd2, 0x32, 0xb8, 0x78, 0x12, 0xe0, 0xd4, 0x8e, 0x77, 0x2d, + 0xa7, 0x76, 0xb1, 0x3f, 0x8a, 0x52, 0x57, 0xfe, 0x51, 0x94, 0xfe, 0x8d, 0xfc, 0x51, 0xa4, 0xff, + 0x63, 0x02, 0x36, 0xd4, 0x45, 0x1d, 0xfe, 0x39, 0xb2, 0x94, 0xae, 0x7f, 0x0c, 0xeb, 0xf2, 0x1e, + 0x1f, 0xf0, 0xeb, 0x7a, 0xa0, 0x6a, 0xf9, 0x7c, 0x55, 0xbb, 0xbc, 0xd8, 0x2e, 0x4a, 0x03, 0x75, + 0xc2, 0x48, 0xb3, 0x8e, 0x8b, 0xc1, 0xac, 0x65, 0xa1, 0x9f, 0xa8, 0x67, 0xd3, 0xd4, 0xab, 0xf9, + 0xe3, 0xc2, 0xf0, 0x95, 0xd9, 0x5b, 0x6a, 0xac, 0xbe, 0x4d, 0xc7, 0xeb, 0x5b, 0xfd, 0x16, 0xa4, + 0x39, 0x8a, 0xd7, 0x58, 0xbb, 0xcd, 0xbd, 0x86, 0xb6, 0x82, 0x56, 0x21, 0xd5, 0x68, 0x3d, 0xd5, + 0x12, 0xf7, 0x7f, 0x95, 0x82, 0x7c, 0x54, 0xc5, 0xf3, 0x33, 0xc0, 0xa9, 0xe3, 0x8a, 0x7c, 0xcb, + 0x8b, 0xe4, 0x2d, 0x41, 0x1a, 0xf3, 0xc6, 0xde, 0x5e, 0xbb, 0x66, 0xf4, 0x1a, 0x75, 0xed, 0x33, + 0xc9, 0x2d, 0x23, 0x80, 0xe1, 0x38, 0x1e, 0x8f, 0x62, 0x0b, 0xe9, 0x33, 0x6e, 0xf9, 0x42, 0xbd, + 0x18, 0x46, 0xa8, 0x90, 0x58, 0xbe, 0x03, 0x39, 0xa3, 0xdb, 0x6d, 0x3e, 0x6a, 0x35, 0xea, 0xda, + 0x57, 0x89, 0xd2, 0xf7, 0xce, 0xce, 0xcb, 0xd7, 0x66, 0xa6, 0x82, 0xc0, 0x1e, 0xba, 0xd4, 0x12, + 0xa8, 0x5a, 0xad, 0xd1, 0xe1, 0xe3, 0xbd, 0x48, 0x2e, 0xa2, 0x04, 0xa3, 0x12, 0xaf, 0xff, 0xf9, + 0x0e, 0x6e, 0x74, 0x0c, 0xcc, 0x47, 0xfc, 0x2a, 0xb9, 0xe0, 0x57, 0xc7, 0xa7, 0x63, 0xe2, 0xf3, + 0x31, 0xb7, 0xc2, 0x7f, 0xc1, 0x5e, 0xa4, 0xe4, 0x0b, 0xf1, 0xec, 0xe9, 0x82, 0x12, 0x6b, 0xca, + 0x47, 0x13, 0x4f, 0x3e, 0xc2, 0x4c, 0x6a, 0x61, 0xb4, 0x2e, 0x23, 0x3e, 0xe3, 0x56, 0x74, 0x58, + 0xc5, 0xfd, 0x56, 0x4b, 0xcc, 0x2e, 0xbd, 0x30, 0x3b, 0x3c, 0x71, 0x5d, 0x8e, 0xb9, 0x0b, 0xb9, + 0xf0, 0x45, 0x48, 0xfb, 0x2a, 0xbd, 0xe0, 0x50, 0x2d, 0x7c, 0xce, 0x12, 0x03, 0x3e, 0xee, 0xf7, + 0xc4, 0x9f, 0x74, 0x2f, 0x32, 0x8b, 0x03, 0x1e, 0x4d, 0x98, 0xc5, 0xd9, 0x7c, 0x39, 0xa2, 0xd7, + 0x5f, 0x65, 0x24, 0xab, 0x89, 0x30, 0x92, 0x5b, 0x73, 0x3b, 0xb8, 0xf1, 0xb9, 0xfc, 0x3f, 0xef, + 0x45, 0x76, 0xc1, 0x0e, 0xa6, 0x5f, 0x52, 0x93, 0x51, 0x6b, 0xf6, 0x00, 0x1e, 0x75, 0xdd, 0xff, + 0x3d, 0xc8, 0x85, 0x19, 0x10, 0x6d, 0x41, 0xf6, 0x59, 0x1b, 0x3f, 0x69, 0x60, 0x6d, 0x45, 0xae, + 0x4e, 0xd8, 0xf3, 0x4c, 0x5e, 0x21, 0x65, 0x58, 0xdd, 0x37, 0x5a, 0xc6, 0xa3, 0x06, 0x0e, 0x1f, + 0xe0, 0x43, 0x80, 0x3a, 0xc6, 0x25, 0x4d, 0x0d, 0x10, 0xd9, 0xbc, 0xff, 0x39, 0x80, 0x0c, 0x55, + 0xf1, 0xbc, 0xaf, 0x43, 0xbe, 0xd6, 0x6e, 0xf5, 0x8c, 0x66, 0x4b, 0x0c, 0x22, 0x09, 0x5a, 0xf4, + 0xb0, 0x23, 0x89, 0xee, 0x26, 0xa4, 0x5b, 0xed, 0x7a, 0x43, 0x4b, 0x94, 0xd6, 0xcf, 0xce, 0xcb, + 0xf2, 0x9f, 0x53, 0xd1, 0x53, 0xbd, 0xfd, 0xf5, 0x37, 0x5b, 0x2b, 0xbf, 0xf8, 0x66, 0x6b, 0xe5, + 0x97, 0xdf, 0x6c, 0x25, 0x5e, 0x5c, 0x6e, 0x25, 0xbe, 0xbe, 0xdc, 0x4a, 0xfc, 0xfc, 0x72, 0x2b, + 0xf1, 0x1f, 0x97, 0x5b, 0x89, 0x83, 0xac, 0xa0, 0xab, 0x1f, 0xfd, 0x5f, 0x00, 0x00, 0x00, 0xff, + 0xff, 0x94, 0xbd, 0x04, 0x3e, 0xdd, 0x22, 0x00, 0x00, } diff --git a/api/types.proto b/api/types.proto index 086a5695f5..d8c34f260a 100644 --- a/api/types.proto +++ b/api/types.proto @@ -759,10 +759,10 @@ message SecretReference { // Name is the name of the secret that this reference. string name = 1; - // DataID represents the specific Secret version that we're referencing to. + // SecretDataID represents the specific Secret version that we're referencing to. // This identifier exists so that SecretReferences don't leak any information // about the secret contents. - string data_id= 2; + string secret_data_id = 2 [(gogoproto.customname) = "SecretDataID"]; // Mode specifies how this secret should be exposed inside the task. enum Mode { @@ -777,18 +777,3 @@ message SecretReference { string target = 4; } -// SecretData is represents a specific version of a secret, and is immutable -message SecretData { - // DataID is an opaque, randomly generated identifier to link a SecretReference - // to a specific SecretData. - string data_id = 1 [(gogoproto.customname) = "DataID"]; - - // Data contains the secret bytes. - bytes data = 2; - - // Digest is a digest of the data bytes. - string digest = 3; - - // CreatedAt is the time at which this secret data was created. - Timestamp created_at = 4; -} From 78be1af42a63a7aa57936ca9eaede0f589acdd7c Mon Sep 17 00:00:00 2001 From: cyli Date: Wed, 31 Aug 2016 13:26:46 -0700 Subject: [PATCH 4/9] Add a secrets proto file that contains messages and rpc calls for manipulating secrets. Also update some of the object protos to make things easier to look up. Signed-off-by: cyli --- api/gen.go | 2 +- api/objects.pb.go | 425 ++++++-- api/objects.proto | 12 +- api/secrets.pb.go | 2587 +++++++++++++++++++++++++++++++++++++++++++++ api/secrets.proto | 77 ++ api/specs.pb.go | 245 +++-- api/specs.proto | 4 + api/types.pb.go | 11 + 8 files changed, 3160 insertions(+), 203 deletions(-) create mode 100644 api/secrets.pb.go create mode 100644 api/secrets.proto diff --git a/api/gen.go b/api/gen.go index d0fb1ede1d..0c2b8e142c 100644 --- a/api/gen.go +++ b/api/gen.go @@ -1,3 +1,3 @@ package api -//go:generate protoc -I.:../protobuf:../vendor:../vendor/github.com/gogo/protobuf --gogoswarm_out=plugins=grpc+deepcopy+raftproxy+authenticatedwrapper,import_path=github.com/docker/swarmkit/api,Mgogoproto/gogo.proto=github.com/gogo/protobuf/gogoproto,Mtimestamp/timestamp.proto=github.com/docker/swarmkit/api/timestamp,Mduration/duration.proto=github.com/docker/swarmkit/api/duration,Mgoogle/protobuf/descriptor.proto=github.com/gogo/protobuf/protoc-gen-gogo/descriptor,Mplugin/plugin.proto=github.com/docker/swarmkit/protobuf/plugin:. types.proto specs.proto objects.proto control.proto dispatcher.proto ca.proto snapshot.proto raft.proto health.proto resource.proto +//go:generate protoc -I.:../protobuf:../vendor:../vendor/github.com/gogo/protobuf --gogoswarm_out=plugins=grpc+deepcopy+raftproxy+authenticatedwrapper,import_path=github.com/docker/swarmkit/api,Mgogoproto/gogo.proto=github.com/gogo/protobuf/gogoproto,Mtimestamp/timestamp.proto=github.com/docker/swarmkit/api/timestamp,Mduration/duration.proto=github.com/docker/swarmkit/api/duration,Mgoogle/protobuf/descriptor.proto=github.com/gogo/protobuf/protoc-gen-gogo/descriptor,Mplugin/plugin.proto=github.com/docker/swarmkit/protobuf/plugin:. types.proto specs.proto objects.proto control.proto dispatcher.proto ca.proto snapshot.proto raft.proto health.proto resource.proto secrets.proto diff --git a/api/objects.pb.go b/api/objects.pb.go index cf09b0d64f..52b8fc1885 100644 --- a/api/objects.pb.go +++ b/api/objects.pb.go @@ -15,6 +15,7 @@ import github_com_gogo_protobuf_proto "github.com/gogo/protobuf/proto" import sort "sort" import strconv "strconv" import reflect "reflect" +import github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" import io "io" @@ -235,11 +236,13 @@ func (*Cluster) Descriptor() ([]byte, []int) { return fileDescriptorObjects, []i // Secret type Secret struct { - ID string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Meta Meta `protobuf:"bytes,2,opt,name=meta" json:"meta"` - SecretData []*SecretData `protobuf:"bytes,3,rep,name=secret_data,json=secretData" json:"secret_data,omitempty"` - // Name of the secret + ID string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Meta Meta `protobuf:"bytes,2,opt,name=meta" json:"meta"` + SecretData map[string]*SecretData `protobuf:"bytes,3,rep,name=secret_data,json=secretData" json:"secret_data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value"` + // Name of the secret, so that we can use it easily for lookups Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` + // ID of the latest version, so that we can easily use it for lookups + LatestVersion string `protobuf:"bytes,5,opt,name=latest,proto3" json:"latest,omitempty"` } func (m *Secret) Reset() { *m = Secret{} } @@ -253,6 +256,8 @@ type SecretData struct { Spec SecretSpec `protobuf:"bytes,3,opt,name=spec" json:"spec"` // Digest represents the cryptographic digest of the secret data Digest string `protobuf:"bytes,4,opt,name=digest,proto3" json:"digest,omitempty"` + // Size represents the size of the secret + SecretSize int32 `protobuf:"varint,5,opt,name=size,proto3" json:"size,omitempty"` } func (m *SecretData) Reset() { *m = SecretData{} } @@ -463,15 +468,16 @@ func (m *Secret) Copy() *Secret { } o := &Secret{ - ID: m.ID, - Meta: *m.Meta.Copy(), - Name: m.Name, + ID: m.ID, + Meta: *m.Meta.Copy(), + Name: m.Name, + LatestVersion: m.LatestVersion, } if m.SecretData != nil { - o.SecretData = make([]*SecretData, 0, len(m.SecretData)) - for _, v := range m.SecretData { - o.SecretData = append(o.SecretData, v.Copy()) + o.SecretData = make(map[string]*SecretData) + for k, v := range m.SecretData { + o.SecretData[k] = v.Copy() } } @@ -484,10 +490,11 @@ func (m *SecretData) Copy() *SecretData { } o := &SecretData{ - ID: m.ID, - Meta: *m.Meta.Copy(), - Spec: *m.Spec.Copy(), - Digest: m.Digest, + ID: m.ID, + Meta: *m.Meta.Copy(), + Spec: *m.Spec.Copy(), + Digest: m.Digest, + SecretSize: m.SecretSize, } return o @@ -663,14 +670,25 @@ func (this *Secret) GoString() string { if this == nil { return "nil" } - s := make([]string, 0, 8) + s := make([]string, 0, 9) s = append(s, "&api.Secret{") s = append(s, "ID: "+fmt.Sprintf("%#v", this.ID)+",\n") s = append(s, "Meta: "+strings.Replace(this.Meta.GoString(), `&`, ``, 1)+",\n") + keysForSecretData := make([]string, 0, len(this.SecretData)) + for k, _ := range this.SecretData { + keysForSecretData = append(keysForSecretData, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForSecretData) + mapStringForSecretData := "map[string]*SecretData{" + for _, k := range keysForSecretData { + mapStringForSecretData += fmt.Sprintf("%#v: %#v,", k, this.SecretData[k]) + } + mapStringForSecretData += "}" if this.SecretData != nil { - s = append(s, "SecretData: "+fmt.Sprintf("%#v", this.SecretData)+",\n") + s = append(s, "SecretData: "+mapStringForSecretData+",\n") } s = append(s, "Name: "+fmt.Sprintf("%#v", this.Name)+",\n") + s = append(s, "LatestVersion: "+fmt.Sprintf("%#v", this.LatestVersion)+",\n") s = append(s, "}") return strings.Join(s, "") } @@ -678,12 +696,13 @@ func (this *SecretData) GoString() string { if this == nil { return "nil" } - s := make([]string, 0, 8) + s := make([]string, 0, 9) s = append(s, "&api.SecretData{") s = append(s, "ID: "+fmt.Sprintf("%#v", this.ID)+",\n") s = append(s, "Meta: "+strings.Replace(this.Meta.GoString(), `&`, ``, 1)+",\n") s = append(s, "Spec: "+strings.Replace(this.Spec.GoString(), `&`, ``, 1)+",\n") s = append(s, "Digest: "+fmt.Sprintf("%#v", this.Digest)+",\n") + s = append(s, "SecretSize: "+fmt.Sprintf("%#v", this.SecretSize)+",\n") s = append(s, "}") return strings.Join(s, "") } @@ -1328,15 +1347,31 @@ func (m *Secret) MarshalTo(data []byte) (int, error) { } i += n32 if len(m.SecretData) > 0 { - for _, msg := range m.SecretData { + for k, _ := range m.SecretData { data[i] = 0x1a i++ - i = encodeVarintObjects(data, i, uint64(msg.Size())) - n, err := msg.MarshalTo(data[i:]) - if err != nil { - return 0, err + v := m.SecretData[k] + msgSize := 0 + if v != nil { + msgSize = v.Size() + msgSize += 1 + sovObjects(uint64(msgSize)) + } + mapSize := 1 + len(k) + sovObjects(uint64(len(k))) + msgSize + i = encodeVarintObjects(data, i, uint64(mapSize)) + data[i] = 0xa + i++ + i = encodeVarintObjects(data, i, uint64(len(k))) + i += copy(data[i:], k) + if v != nil { + data[i] = 0x12 + i++ + i = encodeVarintObjects(data, i, uint64(v.Size())) + n33, err := v.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n33 } - i += n } } if len(m.Name) > 0 { @@ -1345,6 +1380,12 @@ func (m *Secret) MarshalTo(data []byte) (int, error) { i = encodeVarintObjects(data, i, uint64(len(m.Name))) i += copy(data[i:], m.Name) } + if len(m.LatestVersion) > 0 { + data[i] = 0x2a + i++ + i = encodeVarintObjects(data, i, uint64(len(m.LatestVersion))) + i += copy(data[i:], m.LatestVersion) + } return i, nil } @@ -1372,25 +1413,30 @@ func (m *SecretData) MarshalTo(data []byte) (int, error) { data[i] = 0x12 i++ i = encodeVarintObjects(data, i, uint64(m.Meta.Size())) - n33, err := m.Meta.MarshalTo(data[i:]) + n34, err := m.Meta.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n33 + i += n34 data[i] = 0x1a i++ i = encodeVarintObjects(data, i, uint64(m.Spec.Size())) - n34, err := m.Spec.MarshalTo(data[i:]) + n35, err := m.Spec.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n34 + i += n35 if len(m.Digest) > 0 { data[i] = 0x22 i++ i = encodeVarintObjects(data, i, uint64(len(m.Digest))) i += copy(data[i:], m.Digest) } + if m.SecretSize != 0 { + data[i] = 0x28 + i++ + i = encodeVarintObjects(data, i, uint64(m.SecretSize)) + } return i, nil } @@ -1657,15 +1703,26 @@ func (m *Secret) Size() (n int) { l = m.Meta.Size() n += 1 + l + sovObjects(uint64(l)) if len(m.SecretData) > 0 { - for _, e := range m.SecretData { - l = e.Size() - n += 1 + l + sovObjects(uint64(l)) + for k, v := range m.SecretData { + _ = k + _ = v + l = 0 + if v != nil { + l = v.Size() + l += 1 + sovObjects(uint64(l)) + } + mapEntrySize := 1 + len(k) + sovObjects(uint64(len(k))) + l + n += mapEntrySize + 1 + sovObjects(uint64(mapEntrySize)) } } l = len(m.Name) if l > 0 { n += 1 + l + sovObjects(uint64(l)) } + l = len(m.LatestVersion) + if l > 0 { + n += 1 + l + sovObjects(uint64(l)) + } return n } @@ -1684,6 +1741,9 @@ func (m *SecretData) Size() (n int) { if l > 0 { n += 1 + l + sovObjects(uint64(l)) } + if m.SecretSize != 0 { + n += 1 + sovObjects(uint64(m.SecretSize)) + } return n } @@ -1834,11 +1894,22 @@ func (this *Secret) String() string { if this == nil { return "nil" } + keysForSecretData := make([]string, 0, len(this.SecretData)) + for k, _ := range this.SecretData { + keysForSecretData = append(keysForSecretData, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForSecretData) + mapStringForSecretData := "map[string]*SecretData{" + for _, k := range keysForSecretData { + mapStringForSecretData += fmt.Sprintf("%v: %v,", k, this.SecretData[k]) + } + mapStringForSecretData += "}" s := strings.Join([]string{`&Secret{`, `ID:` + fmt.Sprintf("%v", this.ID) + `,`, `Meta:` + strings.Replace(strings.Replace(this.Meta.String(), "Meta", "Meta", 1), `&`, ``, 1) + `,`, - `SecretData:` + strings.Replace(fmt.Sprintf("%v", this.SecretData), "SecretData", "SecretData", 1) + `,`, + `SecretData:` + mapStringForSecretData + `,`, `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `LatestVersion:` + fmt.Sprintf("%v", this.LatestVersion) + `,`, `}`, }, "") return s @@ -1852,6 +1923,7 @@ func (this *SecretData) String() string { `Meta:` + strings.Replace(strings.Replace(this.Meta.String(), "Meta", "Meta", 1), `&`, ``, 1) + `,`, `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "SecretSpec", "SecretSpec", 1), `&`, ``, 1) + `,`, `Digest:` + fmt.Sprintf("%v", this.Digest) + `,`, + `SecretSize:` + fmt.Sprintf("%v", this.SecretSize) + `,`, `}`, }, "") return s @@ -3900,9 +3972,99 @@ func (m *Secret) Unmarshal(data []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.SecretData = append(m.SecretData, &SecretData{}) - if err := m.SecretData[len(m.SecretData)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { - return err + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowObjects + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowObjects + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthObjects + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := string(data[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + if m.SecretData == nil { + m.SecretData = make(map[string]*SecretData) + } + if iNdEx < postIndex { + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowObjects + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var mapmsglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowObjects + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + mapmsglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if mapmsglen < 0 { + return ErrInvalidLengthObjects + } + postmsgIndex := iNdEx + mapmsglen + if mapmsglen < 0 { + return ErrInvalidLengthObjects + } + if postmsgIndex > l { + return io.ErrUnexpectedEOF + } + mapvalue := &SecretData{} + if err := mapvalue.Unmarshal(data[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + m.SecretData[mapkey] = mapvalue + } else { + var mapvalue *SecretData + m.SecretData[mapkey] = mapvalue } iNdEx = postIndex case 4: @@ -3934,6 +4096,35 @@ func (m *Secret) Unmarshal(data []byte) error { } m.Name = string(data[iNdEx:postIndex]) iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LatestVersion", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowObjects + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthObjects + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.LatestVersion = string(data[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipObjects(data[iNdEx:]) @@ -4102,6 +4293,25 @@ func (m *SecretData) Unmarshal(data []byte) error { } m.Digest = string(data[iNdEx:postIndex]) iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field SecretSize", wireType) + } + m.SecretSize = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowObjects + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.SecretSize |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipObjects(data[iNdEx:]) @@ -4231,75 +4441,80 @@ var ( func init() { proto.RegisterFile("objects.proto", fileDescriptorObjects) } var fileDescriptorObjects = []byte{ - // 1106 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xbc, 0x57, 0x4f, 0x6f, 0x1b, 0xc5, - 0x1b, 0xee, 0xda, 0x9b, 0xb5, 0xf7, 0x75, 0x1c, 0xe9, 0x37, 0xbf, 0x2a, 0xda, 0x86, 0x60, 0x07, - 0x57, 0xa0, 0x1e, 0x2a, 0x57, 0x94, 0x82, 0x5a, 0xd1, 0xaa, 0xf2, 0x9f, 0x08, 0xac, 0x12, 0x88, - 0x26, 0x25, 0x3d, 0xae, 0x26, 0xbb, 0x53, 0xb3, 0xd8, 0xde, 0x59, 0xcd, 0x8c, 0x5d, 0xe5, 0x86, - 0xf8, 0x00, 0x7c, 0x04, 0xee, 0xf0, 0x25, 0xb8, 0xe6, 0xc0, 0x81, 0x1b, 0x9c, 0x2c, 0xe2, 0x1b, - 0x27, 0xf8, 0x08, 0x68, 0x66, 0x67, 0x6d, 0x47, 0x5e, 0x87, 0x54, 0x8a, 0x72, 0x9b, 0xd9, 0x79, - 0x9e, 0x67, 0xde, 0xf7, 0x9d, 0x67, 0xde, 0xb1, 0xa1, 0xca, 0x4e, 0xbe, 0xa5, 0x81, 0x14, 0xcd, - 0x84, 0x33, 0xc9, 0x10, 0x0a, 0x59, 0x30, 0xa0, 0xbc, 0x29, 0xde, 0x10, 0x3e, 0x1a, 0x44, 0xb2, - 0x39, 0xf9, 0x70, 0xa7, 0x22, 0x4f, 0x13, 0x6a, 0x00, 0x3b, 0x15, 0x91, 0xd0, 0x20, 0x9b, 0xdc, - 0x91, 0xd1, 0x88, 0x0a, 0x49, 0x46, 0xc9, 0x83, 0xf9, 0xc8, 0x2c, 0xdd, 0xee, 0xb3, 0x3e, 0xd3, - 0xc3, 0x07, 0x6a, 0x94, 0x7e, 0x6d, 0xfc, 0x62, 0x81, 0x7d, 0x40, 0x25, 0x41, 0x9f, 0x42, 0x69, - 0x42, 0xb9, 0x88, 0x58, 0xec, 0x59, 0x7b, 0xd6, 0xbd, 0xca, 0xc3, 0x77, 0x9a, 0xab, 0x3b, 0x37, - 0x8f, 0x53, 0x48, 0xdb, 0x3e, 0x9b, 0xd6, 0x6f, 0xe1, 0x8c, 0x81, 0x9e, 0x02, 0x04, 0x9c, 0x12, - 0x49, 0x43, 0x9f, 0x48, 0xaf, 0xa0, 0xf9, 0xef, 0xe6, 0xf1, 0x5f, 0x66, 0x41, 0x61, 0xd7, 0x10, - 0x5a, 0x52, 0xb1, 0xc7, 0x49, 0x98, 0xb1, 0x8b, 0x57, 0x62, 0x1b, 0x42, 0x4b, 0x36, 0xfe, 0x2a, - 0x82, 0xfd, 0x25, 0x0b, 0x29, 0xda, 0x86, 0x42, 0x14, 0xea, 0xe0, 0xdd, 0xb6, 0x33, 0x9b, 0xd6, - 0x0b, 0xbd, 0x2e, 0x2e, 0x44, 0x21, 0x7a, 0x08, 0xf6, 0x88, 0x4a, 0x62, 0xc2, 0xf2, 0xf2, 0x84, - 0x55, 0x05, 0x4c, 0x4e, 0x1a, 0x8b, 0x3e, 0x01, 0x5b, 0x95, 0xd5, 0x04, 0xb3, 0x9b, 0xc7, 0x51, - 0x7b, 0x1e, 0x25, 0x34, 0xc8, 0x78, 0x0a, 0x8f, 0xf6, 0xa1, 0x12, 0x52, 0x11, 0xf0, 0x28, 0x91, - 0xaa, 0x92, 0xb6, 0xa6, 0xdf, 0x5d, 0x47, 0xef, 0x2e, 0xa0, 0x78, 0x99, 0x87, 0x9e, 0x82, 0x23, - 0x24, 0x91, 0x63, 0xe1, 0x6d, 0x68, 0x85, 0xda, 0xda, 0x00, 0x34, 0xca, 0x84, 0x60, 0x38, 0xe8, - 0x73, 0xd8, 0x1a, 0x91, 0x98, 0xf4, 0x29, 0xf7, 0x8d, 0x8a, 0xa3, 0x55, 0xde, 0xcb, 0x4d, 0x3d, - 0x45, 0xa6, 0x42, 0xb8, 0x3a, 0x5a, 0x9e, 0xa2, 0x7d, 0x00, 0x22, 0x25, 0x09, 0xbe, 0x19, 0xd1, - 0x58, 0x7a, 0x25, 0xad, 0xf2, 0x7e, 0x6e, 0x2c, 0x54, 0xbe, 0x61, 0x7c, 0xd0, 0x9a, 0x83, 0xf1, - 0x12, 0x11, 0x7d, 0x06, 0x95, 0x80, 0x72, 0x19, 0xbd, 0x8e, 0x02, 0x22, 0xa9, 0x57, 0xd6, 0x3a, - 0xf5, 0x3c, 0x9d, 0xce, 0x02, 0x66, 0x92, 0x5a, 0x66, 0x36, 0x7e, 0x2f, 0x40, 0xe9, 0x88, 0xf2, - 0x49, 0x14, 0x5c, 0xef, 0x71, 0x3f, 0xb9, 0x70, 0xdc, 0xb9, 0x91, 0x99, 0x6d, 0x57, 0x4e, 0xfc, - 0x31, 0x94, 0x69, 0x1c, 0x26, 0x2c, 0x8a, 0xa5, 0x39, 0xee, 0x5c, 0xb7, 0xec, 0x1b, 0x0c, 0x9e, - 0xa3, 0xd1, 0x3e, 0x54, 0x53, 0x17, 0xfb, 0x17, 0xce, 0x7a, 0x2f, 0x8f, 0xfe, 0xb5, 0x06, 0x9a, - 0x43, 0xda, 0x1c, 0x2f, 0xcd, 0x50, 0x17, 0xaa, 0x09, 0xa7, 0x93, 0x88, 0x8d, 0x85, 0xaf, 0x93, - 0x70, 0xae, 0x94, 0x04, 0xde, 0xcc, 0x58, 0x6a, 0xd6, 0xf8, 0xb1, 0x00, 0xe5, 0x2c, 0x46, 0xf4, - 0xc8, 0x94, 0xc3, 0x5a, 0x1f, 0x50, 0x86, 0xd5, 0x52, 0x69, 0x25, 0x1e, 0xc1, 0x46, 0xc2, 0xb8, - 0x14, 0x5e, 0x61, 0xaf, 0xb8, 0xce, 0xb3, 0x87, 0x8c, 0xcb, 0x0e, 0x8b, 0x5f, 0x47, 0x7d, 0x9c, - 0x82, 0xd1, 0x2b, 0xa8, 0x4c, 0x22, 0x2e, 0xc7, 0x64, 0xe8, 0x47, 0x89, 0xf0, 0x8a, 0x9a, 0xfb, - 0xc1, 0x65, 0x5b, 0x36, 0x8f, 0x53, 0x7c, 0xef, 0xb0, 0xbd, 0x35, 0x9b, 0xd6, 0x61, 0x3e, 0x15, - 0x18, 0x8c, 0x54, 0x2f, 0x11, 0x3b, 0x07, 0xe0, 0xce, 0x57, 0xd0, 0x7d, 0x80, 0x38, 0xb5, 0xa8, - 0x3f, 0x37, 0x4d, 0x75, 0x36, 0xad, 0xbb, 0xc6, 0xb8, 0xbd, 0x2e, 0x76, 0x0d, 0xa0, 0x17, 0x22, - 0x04, 0x36, 0x09, 0x43, 0xae, 0x2d, 0xe4, 0x62, 0x3d, 0x6e, 0xfc, 0xba, 0x01, 0xf6, 0x4b, 0x22, - 0x06, 0x37, 0xdd, 0x66, 0xd4, 0x9e, 0x2b, 0xa6, 0xbb, 0x0f, 0x20, 0xd2, 0xa3, 0x54, 0xe9, 0xd8, - 0x8b, 0x74, 0xcc, 0x01, 0xab, 0x74, 0x0c, 0x20, 0x4d, 0x47, 0x0c, 0x99, 0xd4, 0xfe, 0xb2, 0xb1, - 0x1e, 0xa3, 0xbb, 0x50, 0x8a, 0x59, 0xa8, 0xe9, 0x8e, 0xa6, 0xc3, 0x6c, 0x5a, 0x77, 0x54, 0x4b, - 0xe9, 0x75, 0xb1, 0xa3, 0x96, 0x7a, 0xa1, 0xba, 0xb7, 0x24, 0x8e, 0x99, 0x24, 0xaa, 0x29, 0x09, - 0x73, 0xff, 0x73, 0x8d, 0xd5, 0x5a, 0xc0, 0xb2, 0x7b, 0xbb, 0xc4, 0x44, 0xc7, 0xf0, 0xff, 0x2c, - 0xde, 0x65, 0xc1, 0xf2, 0xdb, 0x08, 0x22, 0xa3, 0xb0, 0xb4, 0xb2, 0xd4, 0x27, 0xdd, 0xf5, 0x7d, - 0x52, 0x57, 0x30, 0xaf, 0x4f, 0xb6, 0xa1, 0x1a, 0x52, 0x11, 0x71, 0x1a, 0xea, 0x1b, 0x48, 0x3d, - 0xd8, 0xb3, 0xee, 0x6d, 0xad, 0x79, 0x7a, 0x8c, 0x08, 0xc5, 0x9b, 0x86, 0xa3, 0x67, 0xa8, 0x05, - 0x65, 0xe3, 0x1b, 0xe1, 0x55, 0xb4, 0x77, 0xaf, 0xd8, 0x1f, 0xe7, 0xb4, 0x0b, 0x1d, 0x64, 0xf3, - 0xad, 0x3a, 0xc8, 0x13, 0x80, 0x21, 0xeb, 0xfb, 0x21, 0x8f, 0x26, 0x94, 0x7b, 0x55, 0xcd, 0xdd, - 0xc9, 0xe3, 0x76, 0x35, 0x02, 0xbb, 0x43, 0xd6, 0x4f, 0x87, 0x8d, 0xef, 0x2d, 0xf8, 0xdf, 0x4a, - 0x50, 0xe8, 0x63, 0x28, 0x99, 0xb0, 0x2e, 0xfb, 0x11, 0x60, 0x78, 0x38, 0xc3, 0xa2, 0x5d, 0x70, - 0xd5, 0x1d, 0xa1, 0x42, 0xd0, 0xf4, 0xf6, 0xbb, 0x78, 0xf1, 0x01, 0x79, 0x50, 0x22, 0xc3, 0x88, - 0xa8, 0xb5, 0xa2, 0x5e, 0xcb, 0xa6, 0x8d, 0x1f, 0x0a, 0x50, 0x32, 0x62, 0x37, 0xdd, 0xce, 0xcd, - 0xb6, 0x2b, 0x37, 0xeb, 0x19, 0x6c, 0xa6, 0xe5, 0x34, 0x96, 0xb0, 0xff, 0xb3, 0xa8, 0x95, 0x14, - 0x9f, 0xda, 0xe1, 0x19, 0xd8, 0x51, 0x42, 0x46, 0xa6, 0x95, 0xe7, 0xee, 0xdc, 0x3b, 0x6c, 0x1d, - 0x7c, 0x95, 0xa4, 0xce, 0x2e, 0xcf, 0xa6, 0x75, 0x5b, 0x7d, 0xc0, 0x9a, 0xd6, 0xf8, 0xbb, 0x00, - 0xa5, 0xce, 0x70, 0x2c, 0x24, 0xe5, 0x37, 0x5d, 0x10, 0xb3, 0xed, 0x4a, 0x41, 0x3a, 0x50, 0xe2, - 0x8c, 0x49, 0x3f, 0x20, 0x97, 0xd5, 0x02, 0x33, 0x26, 0x3b, 0xad, 0xf6, 0x96, 0x22, 0xaa, 0x46, - 0x92, 0xce, 0xb1, 0xa3, 0xa8, 0x1d, 0x82, 0x5e, 0xc1, 0x76, 0xd6, 0x7e, 0x4f, 0x18, 0x93, 0x42, - 0x72, 0x92, 0xf8, 0x03, 0x7a, 0xaa, 0xde, 0xbc, 0xe2, 0xba, 0x5f, 0x26, 0xfb, 0x71, 0xc0, 0x4f, - 0x75, 0xa1, 0x5e, 0xd0, 0x53, 0x7c, 0xdb, 0x08, 0xb4, 0x33, 0xfe, 0x0b, 0x7a, 0x2a, 0xd0, 0x73, - 0xd8, 0xa5, 0x73, 0x98, 0x52, 0xf4, 0x87, 0x64, 0xa4, 0x1e, 0x16, 0x3f, 0x18, 0xb2, 0x60, 0xa0, - 0x7b, 0x9b, 0x8d, 0xef, 0xd0, 0x65, 0xa9, 0x2f, 0x52, 0x44, 0x47, 0x01, 0x1a, 0x3f, 0x59, 0xe0, - 0x1c, 0xd1, 0x80, 0x53, 0x79, 0xad, 0x05, 0x7f, 0x0e, 0x15, 0xa1, 0x55, 0xfd, 0x90, 0x48, 0x62, - 0x5e, 0xb5, 0x5a, 0xfe, 0x93, 0xac, 0x60, 0x5d, 0x22, 0x09, 0x06, 0x31, 0x1f, 0xab, 0x9e, 0x1d, - 0x93, 0x51, 0xea, 0x3f, 0x17, 0xeb, 0x71, 0xe3, 0x67, 0x0b, 0x60, 0x01, 0xbf, 0xd6, 0x78, 0x1f, - 0x5f, 0x30, 0xc8, 0x25, 0x81, 0xae, 0xf8, 0x63, 0x1b, 0x9c, 0x30, 0xea, 0x53, 0x21, 0x4d, 0xa8, - 0x66, 0xd6, 0xde, 0x3d, 0x3b, 0xaf, 0xdd, 0xfa, 0xe3, 0xbc, 0x76, 0xeb, 0x9f, 0xf3, 0x9a, 0xf5, - 0xdd, 0xac, 0x66, 0x9d, 0xcd, 0x6a, 0xd6, 0x6f, 0xb3, 0x9a, 0xf5, 0xe7, 0xac, 0x66, 0x9d, 0x38, - 0xfa, 0xdf, 0xc7, 0x47, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0xca, 0xbe, 0x67, 0x2b, 0xed, 0x0c, - 0x00, 0x00, + // 1190 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xbc, 0x57, 0xdf, 0x8e, 0x1b, 0xb5, + 0x17, 0xee, 0x24, 0xb3, 0x93, 0x9d, 0x93, 0xcd, 0xfe, 0x7e, 0x35, 0x55, 0x35, 0x5d, 0x96, 0x64, + 0x49, 0x05, 0x2a, 0xa8, 0xda, 0x8a, 0x52, 0x50, 0x0b, 0xad, 0x50, 0xfe, 0xac, 0x20, 0x6a, 0x0b, + 0x95, 0x5b, 0xda, 0x2b, 0x34, 0x72, 0x67, 0xdc, 0x30, 0x24, 0x19, 0x8f, 0x6c, 0x27, 0x55, 0x7a, + 0x85, 0x78, 0x00, 0x1e, 0x81, 0x57, 0xe9, 0x6d, 0x2f, 0x10, 0xe2, 0x0e, 0xae, 0x22, 0x9a, 0x3b, + 0xae, 0xe0, 0x11, 0x90, 0xff, 0x4c, 0x92, 0x25, 0x93, 0xa5, 0x95, 0xaa, 0x5e, 0xc5, 0xc7, 0xfe, + 0xbe, 0xcf, 0xe7, 0x1c, 0x1f, 0x1f, 0x4f, 0xa0, 0xc6, 0x1e, 0x7e, 0x47, 0x23, 0x29, 0x0e, 0x33, + 0xce, 0x24, 0x43, 0x28, 0x66, 0xd1, 0x80, 0xf2, 0x43, 0xf1, 0x98, 0xf0, 0xd1, 0x20, 0x91, 0x87, + 0x93, 0x0f, 0xf6, 0xaa, 0x72, 0x9a, 0x51, 0x0b, 0xd8, 0xab, 0x8a, 0x8c, 0x46, 0xb9, 0x71, 0x4e, + 0x26, 0x23, 0x2a, 0x24, 0x19, 0x65, 0x97, 0x16, 0x23, 0xbb, 0x74, 0xa6, 0xcf, 0xfa, 0x4c, 0x0f, + 0x2f, 0xa9, 0x91, 0x99, 0x6d, 0x3e, 0x75, 0xc0, 0xbd, 0x4d, 0x25, 0x41, 0x9f, 0x42, 0x65, 0x42, + 0xb9, 0x48, 0x58, 0x1a, 0x38, 0x07, 0xce, 0x85, 0xea, 0xe5, 0x37, 0x0f, 0xd7, 0x77, 0x3e, 0xbc, + 0x6f, 0x20, 0x6d, 0xf7, 0xd9, 0xac, 0x71, 0x0a, 0xe7, 0x0c, 0x74, 0x1d, 0x20, 0xe2, 0x94, 0x48, + 0x1a, 0x87, 0x44, 0x06, 0x25, 0xcd, 0x7f, 0xab, 0x88, 0x7f, 0x2f, 0x77, 0x0a, 0xfb, 0x96, 0xd0, + 0x92, 0x8a, 0x3d, 0xce, 0xe2, 0x9c, 0x5d, 0x7e, 0x21, 0xb6, 0x25, 0xb4, 0x64, 0xf3, 0xcf, 0x32, + 0xb8, 0x5f, 0xb2, 0x98, 0xa2, 0xb3, 0x50, 0x4a, 0x62, 0xed, 0xbc, 0xdf, 0xf6, 0xe6, 0xb3, 0x46, + 0xa9, 0xd7, 0xc5, 0xa5, 0x24, 0x46, 0x97, 0xc1, 0x1d, 0x51, 0x49, 0xac, 0x5b, 0x41, 0x91, 0xb0, + 0xca, 0x80, 0x8d, 0x49, 0x63, 0xd1, 0xc7, 0xe0, 0xaa, 0xb4, 0x5a, 0x67, 0xf6, 0x8b, 0x38, 0x6a, + 0xcf, 0xbb, 0x19, 0x8d, 0x72, 0x9e, 0xc2, 0xa3, 0x23, 0xa8, 0xc6, 0x54, 0x44, 0x3c, 0xc9, 0xa4, + 0xca, 0xa4, 0xab, 0xe9, 0xe7, 0x37, 0xd1, 0xbb, 0x4b, 0x28, 0x5e, 0xe5, 0xa1, 0xeb, 0xe0, 0x09, + 0x49, 0xe4, 0x58, 0x04, 0x5b, 0x5a, 0xa1, 0xbe, 0xd1, 0x01, 0x8d, 0xb2, 0x2e, 0x58, 0x0e, 0xfa, + 0x02, 0x76, 0x47, 0x24, 0x25, 0x7d, 0xca, 0x43, 0xab, 0xe2, 0x69, 0x95, 0xb7, 0x0b, 0x43, 0x37, + 0x48, 0x23, 0x84, 0x6b, 0xa3, 0x55, 0x13, 0x1d, 0x01, 0x10, 0x29, 0x49, 0xf4, 0xed, 0x88, 0xa6, + 0x32, 0xa8, 0x68, 0x95, 0x77, 0x0a, 0x7d, 0xa1, 0xf2, 0x31, 0xe3, 0x83, 0xd6, 0x02, 0x8c, 0x57, + 0x88, 0xe8, 0x73, 0xa8, 0x46, 0x94, 0xcb, 0xe4, 0x51, 0x12, 0x11, 0x49, 0x83, 0x6d, 0xad, 0xd3, + 0x28, 0xd2, 0xe9, 0x2c, 0x61, 0x36, 0xa8, 0x55, 0x66, 0xf3, 0xb7, 0x12, 0x54, 0xee, 0x52, 0x3e, + 0x49, 0xa2, 0x57, 0x7b, 0xdc, 0xd7, 0x8e, 0x1d, 0x77, 0xa1, 0x67, 0x76, 0xdb, 0xb5, 0x13, 0xbf, + 0x0a, 0xdb, 0x34, 0x8d, 0x33, 0x96, 0xa4, 0xd2, 0x1e, 0x77, 0x61, 0xb5, 0x1c, 0x59, 0x0c, 0x5e, + 0xa0, 0xd1, 0x11, 0xd4, 0x4c, 0x15, 0x87, 0xc7, 0xce, 0xfa, 0xa0, 0x88, 0xfe, 0xb5, 0x06, 0xda, + 0x43, 0xda, 0x19, 0xaf, 0x58, 0xa8, 0x0b, 0xb5, 0x8c, 0xd3, 0x49, 0xc2, 0xc6, 0x22, 0xd4, 0x41, + 0x78, 0x2f, 0x14, 0x04, 0xde, 0xc9, 0x59, 0xca, 0x6a, 0xfe, 0x54, 0x82, 0xed, 0xdc, 0x47, 0x74, + 0xc5, 0xa6, 0xc3, 0xd9, 0xec, 0x50, 0x8e, 0xd5, 0x52, 0x26, 0x13, 0x57, 0x60, 0x2b, 0x63, 0x5c, + 0x8a, 0xa0, 0x74, 0x50, 0xde, 0x54, 0xb3, 0x77, 0x18, 0x97, 0x1d, 0x96, 0x3e, 0x4a, 0xfa, 0xd8, + 0x80, 0xd1, 0x03, 0xa8, 0x4e, 0x12, 0x2e, 0xc7, 0x64, 0x18, 0x26, 0x99, 0x08, 0xca, 0x9a, 0xfb, + 0xee, 0x49, 0x5b, 0x1e, 0xde, 0x37, 0xf8, 0xde, 0x9d, 0xf6, 0xee, 0x7c, 0xd6, 0x80, 0x85, 0x29, + 0x30, 0x58, 0xa9, 0x5e, 0x26, 0xf6, 0x6e, 0x83, 0xbf, 0x58, 0x41, 0x17, 0x01, 0x52, 0x53, 0xa2, + 0xe1, 0xa2, 0x68, 0x6a, 0xf3, 0x59, 0xc3, 0xb7, 0x85, 0xdb, 0xeb, 0x62, 0xdf, 0x02, 0x7a, 0x31, + 0x42, 0xe0, 0x92, 0x38, 0xe6, 0xba, 0x84, 0x7c, 0xac, 0xc7, 0xcd, 0x9f, 0xb7, 0xc0, 0xbd, 0x47, + 0xc4, 0xe0, 0x75, 0xb7, 0x19, 0xb5, 0xe7, 0x5a, 0xd1, 0x5d, 0x04, 0x10, 0xe6, 0x28, 0x55, 0x38, + 0xee, 0x32, 0x1c, 0x7b, 0xc0, 0x2a, 0x1c, 0x0b, 0x30, 0xe1, 0x88, 0x21, 0x93, 0xba, 0xbe, 0x5c, + 0xac, 0xc7, 0xe8, 0x3c, 0x54, 0x52, 0x16, 0x6b, 0xba, 0xa7, 0xe9, 0x30, 0x9f, 0x35, 0x3c, 0xd5, + 0x52, 0x7a, 0x5d, 0xec, 0xa9, 0xa5, 0x5e, 0xac, 0xee, 0x2d, 0x49, 0x53, 0x26, 0x89, 0x6a, 0x4a, + 0xc2, 0xde, 0xff, 0xc2, 0xc2, 0x6a, 0x2d, 0x61, 0xf9, 0xbd, 0x5d, 0x61, 0xa2, 0xfb, 0xf0, 0x46, + 0xee, 0xef, 0xaa, 0xe0, 0xf6, 0xcb, 0x08, 0x22, 0xab, 0xb0, 0xb2, 0xb2, 0xd2, 0x27, 0xfd, 0xcd, + 0x7d, 0x52, 0x67, 0xb0, 0xa8, 0x4f, 0xb6, 0xa1, 0x16, 0x53, 0x91, 0x70, 0x1a, 0xeb, 0x1b, 0x48, + 0x03, 0x38, 0x70, 0x2e, 0xec, 0x6e, 0x78, 0x7a, 0xac, 0x08, 0xc5, 0x3b, 0x96, 0xa3, 0x2d, 0xd4, + 0x82, 0x6d, 0x5b, 0x37, 0x22, 0xa8, 0xea, 0xda, 0x7d, 0xc1, 0xfe, 0xb8, 0xa0, 0x1d, 0xeb, 0x20, + 0x3b, 0x2f, 0xd5, 0x41, 0xae, 0x01, 0x0c, 0x59, 0x3f, 0x8c, 0x79, 0x32, 0xa1, 0x3c, 0xa8, 0x69, + 0xee, 0x5e, 0x11, 0xb7, 0xab, 0x11, 0xd8, 0x1f, 0xb2, 0xbe, 0x19, 0x36, 0x7f, 0x70, 0xe0, 0xf4, + 0x9a, 0x53, 0xe8, 0x23, 0xa8, 0x58, 0xb7, 0x4e, 0xfa, 0x08, 0xb0, 0x3c, 0x9c, 0x63, 0xd1, 0x3e, + 0xf8, 0xea, 0x8e, 0x50, 0x21, 0xa8, 0xb9, 0xfd, 0x3e, 0x5e, 0x4e, 0xa0, 0x00, 0x2a, 0x64, 0x98, + 0x10, 0xb5, 0x56, 0xd6, 0x6b, 0xb9, 0xd9, 0xfc, 0xb1, 0x04, 0x15, 0x2b, 0xf6, 0xba, 0xdb, 0xb9, + 0xdd, 0x76, 0xed, 0x66, 0xdd, 0x80, 0x1d, 0x93, 0x4e, 0x5b, 0x12, 0xee, 0x7f, 0x26, 0xb5, 0x6a, + 0xf0, 0xa6, 0x1c, 0x6e, 0x80, 0x9b, 0x64, 0x64, 0x64, 0x5b, 0x79, 0xe1, 0xce, 0xbd, 0x3b, 0xad, + 0xdb, 0x5f, 0x65, 0xa6, 0xb2, 0xb7, 0xe7, 0xb3, 0x86, 0xab, 0x26, 0xb0, 0xa6, 0x35, 0xff, 0x2a, + 0x41, 0xa5, 0x33, 0x1c, 0x0b, 0x49, 0xf9, 0xeb, 0x4e, 0x88, 0xdd, 0x76, 0x2d, 0x21, 0x1d, 0xa8, + 0x70, 0xc6, 0x64, 0x18, 0x91, 0x93, 0x72, 0x81, 0x19, 0x93, 0x9d, 0x56, 0x7b, 0x57, 0x11, 0x55, + 0x23, 0x31, 0x36, 0xf6, 0x14, 0xb5, 0x43, 0xd0, 0x03, 0x38, 0x9b, 0xb7, 0xdf, 0x87, 0x8c, 0x49, + 0x21, 0x39, 0xc9, 0xc2, 0x01, 0x9d, 0xaa, 0x37, 0xaf, 0xbc, 0xe9, 0xcb, 0xe4, 0x28, 0x8d, 0xf8, + 0x54, 0x27, 0xea, 0x26, 0x9d, 0xe2, 0x33, 0x56, 0xa0, 0x9d, 0xf3, 0x6f, 0xd2, 0xa9, 0x40, 0x9f, + 0xc1, 0x3e, 0x5d, 0xc0, 0x94, 0x62, 0x38, 0x24, 0x23, 0xf5, 0xb0, 0x84, 0xd1, 0x90, 0x45, 0x03, + 0xdd, 0xdb, 0x5c, 0x7c, 0x8e, 0xae, 0x4a, 0xdd, 0x32, 0x88, 0x8e, 0x02, 0x34, 0x9f, 0x96, 0xc0, + 0xbb, 0x4b, 0x23, 0x4e, 0xe5, 0x2b, 0x4d, 0xf8, 0x4d, 0xa8, 0x0a, 0xad, 0x1a, 0xc6, 0x44, 0x12, + 0xfb, 0xaa, 0xbd, 0x5f, 0xfc, 0x24, 0x2b, 0x98, 0xfd, 0xe9, 0x12, 0x49, 0x8e, 0x52, 0xc9, 0xa7, + 0x18, 0xc4, 0x62, 0x42, 0xf5, 0xef, 0x94, 0x8c, 0x4c, 0x2d, 0xfa, 0x58, 0x8f, 0xd1, 0x7b, 0xe0, + 0x0d, 0x89, 0xa4, 0xc2, 0x74, 0x75, 0xbf, 0x7d, 0x7a, 0x3e, 0x6b, 0xd4, 0x6e, 0xe9, 0x19, 0xfb, + 0x8d, 0x8e, 0x2d, 0x60, 0xef, 0x1b, 0xf8, 0xdf, 0xbf, 0xd4, 0xd1, 0xff, 0xa1, 0x3c, 0xa0, 0x53, + 0x13, 0x2b, 0x56, 0x43, 0xf5, 0x78, 0x4f, 0xc8, 0x70, 0x4c, 0x6d, 0x94, 0xf5, 0xcd, 0xae, 0x2a, + 0x15, 0x6c, 0xc0, 0x9f, 0x94, 0xae, 0x3a, 0xcd, 0x5f, 0x1c, 0x80, 0xe5, 0xca, 0x2b, 0xcd, 0xe2, + 0xd5, 0x63, 0x65, 0x7b, 0x82, 0x4f, 0x6b, 0x55, 0x7b, 0x16, 0xbc, 0x38, 0xe9, 0xab, 0xf4, 0x98, + 0xa4, 0x59, 0x0b, 0x35, 0xc1, 0x15, 0xc9, 0x13, 0xaa, 0x93, 0xb6, 0x65, 0x3e, 0x1f, 0xac, 0x42, + 0xf2, 0x84, 0x62, 0xbd, 0xd6, 0xde, 0x7f, 0xf6, 0xbc, 0x7e, 0xea, 0xf7, 0xe7, 0xf5, 0x53, 0x7f, + 0x3f, 0xaf, 0x3b, 0xdf, 0xcf, 0xeb, 0xce, 0xb3, 0x79, 0xdd, 0xf9, 0x75, 0x5e, 0x77, 0xfe, 0x98, + 0xd7, 0x9d, 0x87, 0x9e, 0xfe, 0xdf, 0xf4, 0xe1, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x38, 0x42, + 0x54, 0x90, 0xa7, 0x0d, 0x00, 0x00, } diff --git a/api/objects.proto b/api/objects.proto index ce18182201..d8308c7c68 100644 --- a/api/objects.proto +++ b/api/objects.proto @@ -233,10 +233,13 @@ message Secret { Meta meta = 2 [(gogoproto.nullable) = false]; - repeated SecretData secret_data = 3; + map secret_data = 3; - // Name of the secret + // Name of the secret, so that we can use it easily for lookups string name = 4; + + // ID of the latest version, so that we can easily use it for lookups + string latest = 5 [(gogoproto.customname) = "LatestVersion"]; } // SecretData is represents a specific version of a secret, and is immutable @@ -245,9 +248,12 @@ message SecretData { Meta meta = 2 [(gogoproto.nullable) = false]; - SecretSpec spec = 3 [(gogoproto.nullable) = false]; + SecretSpec spec = 3 [(gogoproto.nullable) = false]; // Digest represents the cryptographic digest of the secret data string digest = 4; + + // Size represents the size of the secret + int32 size = 5 [(gogoproto.customname) = "SecretSize"]; } diff --git a/api/secrets.pb.go b/api/secrets.pb.go new file mode 100644 index 0000000000..f1b39a6ffc --- /dev/null +++ b/api/secrets.pb.go @@ -0,0 +1,2587 @@ +// Code generated by protoc-gen-gogo. +// source: secrets.proto +// DO NOT EDIT! + +package api + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" +import _ "github.com/docker/swarmkit/protobuf/plugin" + +import strings "strings" +import github_com_gogo_protobuf_proto "github.com/gogo/protobuf/proto" +import sort "sort" +import strconv "strconv" +import reflect "reflect" + +import ( + context "golang.org/x/net/context" + grpc "google.golang.org/grpc" +) + +import raftselector "github.com/docker/swarmkit/manager/raftselector" +import codes "google.golang.org/grpc/codes" +import metadata "google.golang.org/grpc/metadata" +import transport "google.golang.org/grpc/transport" +import time "time" + +import io "io" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +type GetSecretRequest struct { + // Name is name of the secret to get info for. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (m *GetSecretRequest) Reset() { *m = GetSecretRequest{} } +func (*GetSecretRequest) ProtoMessage() {} +func (*GetSecretRequest) Descriptor() ([]byte, []int) { return fileDescriptorSecrets, []int{0} } + +type GetSecretResponse struct { + // Secret is the secret corresponding to that ID, but each version in `secret.spec.data` should have its `.data` field be nil + Secret *Secret `protobuf:"bytes,1,opt,name=secret" json:"secret,omitempty"` +} + +func (m *GetSecretResponse) Reset() { *m = GetSecretResponse{} } +func (*GetSecretResponse) ProtoMessage() {} +func (*GetSecretResponse) Descriptor() ([]byte, []int) { return fileDescriptorSecrets, []int{1} } + +type ListSecretsRequest struct { + Filters *ListSecretsRequest_Filters `protobuf:"bytes,1,opt,name=filters" json:"filters,omitempty"` +} + +func (m *ListSecretsRequest) Reset() { *m = ListSecretsRequest{} } +func (*ListSecretsRequest) ProtoMessage() {} +func (*ListSecretsRequest) Descriptor() ([]byte, []int) { return fileDescriptorSecrets, []int{2} } + +type ListSecretsRequest_Filters struct { + Names []string `protobuf:"bytes,1,rep,name=names" json:"names,omitempty"` + NamePrefixes []string `protobuf:"bytes,2,rep,name=name_prefixes,json=namePrefixes" json:"name_prefixes,omitempty"` +} + +func (m *ListSecretsRequest_Filters) Reset() { *m = ListSecretsRequest_Filters{} } +func (*ListSecretsRequest_Filters) ProtoMessage() {} +func (*ListSecretsRequest_Filters) Descriptor() ([]byte, []int) { + return fileDescriptorSecrets, []int{2, 0} +} + +type ListSecretsResponse struct { + // Each Secret is the secret corresponding to that ID, but each version in `secret.spec.data` should have its `.data` field be nil + Secrets []*Secret `protobuf:"bytes,1,rep,name=secrets" json:"secrets,omitempty"` +} + +func (m *ListSecretsResponse) Reset() { *m = ListSecretsResponse{} } +func (*ListSecretsResponse) ProtoMessage() {} +func (*ListSecretsResponse) Descriptor() ([]byte, []int) { return fileDescriptorSecrets, []int{3} } + +// Note CreateSecretRequest does not contain a SecretSpec, since that can contain multiple SecretData objects, which have digests +// which should be generated by the +type CreateSecretRequest struct { + Spec *SecretSpec `protobuf:"bytes,1,opt,name=spec" json:"spec,omitempty"` +} + +func (m *CreateSecretRequest) Reset() { *m = CreateSecretRequest{} } +func (*CreateSecretRequest) ProtoMessage() {} +func (*CreateSecretRequest) Descriptor() ([]byte, []int) { return fileDescriptorSecrets, []int{4} } + +type CreateSecretResponse struct { + Secret *Secret `protobuf:"bytes,1,opt,name=secret" json:"secret,omitempty"` +} + +func (m *CreateSecretResponse) Reset() { *m = CreateSecretResponse{} } +func (*CreateSecretResponse) ProtoMessage() {} +func (*CreateSecretResponse) Descriptor() ([]byte, []int) { return fileDescriptorSecrets, []int{5} } + +type UpdateSecretRequest struct { + Spec *SecretSpec `protobuf:"bytes,1,opt,name=spec" json:"spec,omitempty"` +} + +func (m *UpdateSecretRequest) Reset() { *m = UpdateSecretRequest{} } +func (*UpdateSecretRequest) ProtoMessage() {} +func (*UpdateSecretRequest) Descriptor() ([]byte, []int) { return fileDescriptorSecrets, []int{6} } + +type UpdateSecretResponse struct { + Secret *Secret `protobuf:"bytes,1,opt,name=secret" json:"secret,omitempty"` +} + +func (m *UpdateSecretResponse) Reset() { *m = UpdateSecretResponse{} } +func (*UpdateSecretResponse) ProtoMessage() {} +func (*UpdateSecretResponse) Descriptor() ([]byte, []int) { return fileDescriptorSecrets, []int{7} } + +type RemoveSecretRequest struct { + // Name is name of the secret to remove. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Version is the version to remove + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` +} + +func (m *RemoveSecretRequest) Reset() { *m = RemoveSecretRequest{} } +func (*RemoveSecretRequest) ProtoMessage() {} +func (*RemoveSecretRequest) Descriptor() ([]byte, []int) { return fileDescriptorSecrets, []int{8} } + +type RemoveSecretResponse struct { +} + +func (m *RemoveSecretResponse) Reset() { *m = RemoveSecretResponse{} } +func (*RemoveSecretResponse) ProtoMessage() {} +func (*RemoveSecretResponse) Descriptor() ([]byte, []int) { return fileDescriptorSecrets, []int{9} } + +func init() { + proto.RegisterType((*GetSecretRequest)(nil), "docker.swarmkit.v1.GetSecretRequest") + proto.RegisterType((*GetSecretResponse)(nil), "docker.swarmkit.v1.GetSecretResponse") + proto.RegisterType((*ListSecretsRequest)(nil), "docker.swarmkit.v1.ListSecretsRequest") + proto.RegisterType((*ListSecretsRequest_Filters)(nil), "docker.swarmkit.v1.ListSecretsRequest.Filters") + proto.RegisterType((*ListSecretsResponse)(nil), "docker.swarmkit.v1.ListSecretsResponse") + proto.RegisterType((*CreateSecretRequest)(nil), "docker.swarmkit.v1.CreateSecretRequest") + proto.RegisterType((*CreateSecretResponse)(nil), "docker.swarmkit.v1.CreateSecretResponse") + proto.RegisterType((*UpdateSecretRequest)(nil), "docker.swarmkit.v1.UpdateSecretRequest") + proto.RegisterType((*UpdateSecretResponse)(nil), "docker.swarmkit.v1.UpdateSecretResponse") + proto.RegisterType((*RemoveSecretRequest)(nil), "docker.swarmkit.v1.RemoveSecretRequest") + proto.RegisterType((*RemoveSecretResponse)(nil), "docker.swarmkit.v1.RemoveSecretResponse") +} + +type authenticatedWrapperSecretsServer struct { + local SecretsServer + authorize func(context.Context, []string) error +} + +func NewAuthenticatedWrapperSecretsServer(local SecretsServer, authorize func(context.Context, []string) error) SecretsServer { + return &authenticatedWrapperSecretsServer{ + local: local, + authorize: authorize, + } +} + +func (p *authenticatedWrapperSecretsServer) GetSecret(ctx context.Context, r *GetSecretRequest) (*GetSecretResponse, error) { + + if err := p.authorize(ctx, []string{"swarm-manager"}); err != nil { + return nil, err + } + return p.local.GetSecret(ctx, r) +} + +func (p *authenticatedWrapperSecretsServer) ListSecrets(ctx context.Context, r *ListSecretsRequest) (*ListSecretsResponse, error) { + + if err := p.authorize(ctx, []string{"swarm-manager"}); err != nil { + return nil, err + } + return p.local.ListSecrets(ctx, r) +} + +func (p *authenticatedWrapperSecretsServer) CreateSecret(ctx context.Context, r *CreateSecretRequest) (*CreateSecretResponse, error) { + + if err := p.authorize(ctx, []string{"swarm-manager"}); err != nil { + return nil, err + } + return p.local.CreateSecret(ctx, r) +} + +func (p *authenticatedWrapperSecretsServer) UpdateSecret(ctx context.Context, r *UpdateSecretRequest) (*UpdateSecretResponse, error) { + + if err := p.authorize(ctx, []string{"swarm-manager"}); err != nil { + return nil, err + } + return p.local.UpdateSecret(ctx, r) +} + +func (p *authenticatedWrapperSecretsServer) RemoveSecret(ctx context.Context, r *RemoveSecretRequest) (*RemoveSecretResponse, error) { + + if err := p.authorize(ctx, []string{"swarm-manager"}); err != nil { + return nil, err + } + return p.local.RemoveSecret(ctx, r) +} + +func (m *GetSecretRequest) Copy() *GetSecretRequest { + if m == nil { + return nil + } + + o := &GetSecretRequest{ + Name: m.Name, + } + + return o +} + +func (m *GetSecretResponse) Copy() *GetSecretResponse { + if m == nil { + return nil + } + + o := &GetSecretResponse{ + Secret: m.Secret.Copy(), + } + + return o +} + +func (m *ListSecretsRequest) Copy() *ListSecretsRequest { + if m == nil { + return nil + } + + o := &ListSecretsRequest{ + Filters: m.Filters.Copy(), + } + + return o +} + +func (m *ListSecretsRequest_Filters) Copy() *ListSecretsRequest_Filters { + if m == nil { + return nil + } + + o := &ListSecretsRequest_Filters{} + + if m.Names != nil { + o.Names = make([]string, 0, len(m.Names)) + for _, v := range m.Names { + o.Names = append(o.Names, v) + } + } + + if m.NamePrefixes != nil { + o.NamePrefixes = make([]string, 0, len(m.NamePrefixes)) + for _, v := range m.NamePrefixes { + o.NamePrefixes = append(o.NamePrefixes, v) + } + } + + return o +} + +func (m *ListSecretsResponse) Copy() *ListSecretsResponse { + if m == nil { + return nil + } + + o := &ListSecretsResponse{} + + if m.Secrets != nil { + o.Secrets = make([]*Secret, 0, len(m.Secrets)) + for _, v := range m.Secrets { + o.Secrets = append(o.Secrets, v.Copy()) + } + } + + return o +} + +func (m *CreateSecretRequest) Copy() *CreateSecretRequest { + if m == nil { + return nil + } + + o := &CreateSecretRequest{ + Spec: m.Spec.Copy(), + } + + return o +} + +func (m *CreateSecretResponse) Copy() *CreateSecretResponse { + if m == nil { + return nil + } + + o := &CreateSecretResponse{ + Secret: m.Secret.Copy(), + } + + return o +} + +func (m *UpdateSecretRequest) Copy() *UpdateSecretRequest { + if m == nil { + return nil + } + + o := &UpdateSecretRequest{ + Spec: m.Spec.Copy(), + } + + return o +} + +func (m *UpdateSecretResponse) Copy() *UpdateSecretResponse { + if m == nil { + return nil + } + + o := &UpdateSecretResponse{ + Secret: m.Secret.Copy(), + } + + return o +} + +func (m *RemoveSecretRequest) Copy() *RemoveSecretRequest { + if m == nil { + return nil + } + + o := &RemoveSecretRequest{ + Name: m.Name, + Version: m.Version, + } + + return o +} + +func (m *RemoveSecretResponse) Copy() *RemoveSecretResponse { + if m == nil { + return nil + } + + o := &RemoveSecretResponse{} + + return o +} + +func (this *GetSecretRequest) GoString() string { + if this == nil { + return "nil" + } + s := make([]string, 0, 5) + s = append(s, "&api.GetSecretRequest{") + s = append(s, "Name: "+fmt.Sprintf("%#v", this.Name)+",\n") + s = append(s, "}") + return strings.Join(s, "") +} +func (this *GetSecretResponse) GoString() string { + if this == nil { + return "nil" + } + s := make([]string, 0, 5) + s = append(s, "&api.GetSecretResponse{") + if this.Secret != nil { + s = append(s, "Secret: "+fmt.Sprintf("%#v", this.Secret)+",\n") + } + s = append(s, "}") + return strings.Join(s, "") +} +func (this *ListSecretsRequest) GoString() string { + if this == nil { + return "nil" + } + s := make([]string, 0, 5) + s = append(s, "&api.ListSecretsRequest{") + if this.Filters != nil { + s = append(s, "Filters: "+fmt.Sprintf("%#v", this.Filters)+",\n") + } + s = append(s, "}") + return strings.Join(s, "") +} +func (this *ListSecretsRequest_Filters) GoString() string { + if this == nil { + return "nil" + } + s := make([]string, 0, 6) + s = append(s, "&api.ListSecretsRequest_Filters{") + s = append(s, "Names: "+fmt.Sprintf("%#v", this.Names)+",\n") + s = append(s, "NamePrefixes: "+fmt.Sprintf("%#v", this.NamePrefixes)+",\n") + s = append(s, "}") + return strings.Join(s, "") +} +func (this *ListSecretsResponse) GoString() string { + if this == nil { + return "nil" + } + s := make([]string, 0, 5) + s = append(s, "&api.ListSecretsResponse{") + if this.Secrets != nil { + s = append(s, "Secrets: "+fmt.Sprintf("%#v", this.Secrets)+",\n") + } + s = append(s, "}") + return strings.Join(s, "") +} +func (this *CreateSecretRequest) GoString() string { + if this == nil { + return "nil" + } + s := make([]string, 0, 5) + s = append(s, "&api.CreateSecretRequest{") + if this.Spec != nil { + s = append(s, "Spec: "+fmt.Sprintf("%#v", this.Spec)+",\n") + } + s = append(s, "}") + return strings.Join(s, "") +} +func (this *CreateSecretResponse) GoString() string { + if this == nil { + return "nil" + } + s := make([]string, 0, 5) + s = append(s, "&api.CreateSecretResponse{") + if this.Secret != nil { + s = append(s, "Secret: "+fmt.Sprintf("%#v", this.Secret)+",\n") + } + s = append(s, "}") + return strings.Join(s, "") +} +func (this *UpdateSecretRequest) GoString() string { + if this == nil { + return "nil" + } + s := make([]string, 0, 5) + s = append(s, "&api.UpdateSecretRequest{") + if this.Spec != nil { + s = append(s, "Spec: "+fmt.Sprintf("%#v", this.Spec)+",\n") + } + s = append(s, "}") + return strings.Join(s, "") +} +func (this *UpdateSecretResponse) GoString() string { + if this == nil { + return "nil" + } + s := make([]string, 0, 5) + s = append(s, "&api.UpdateSecretResponse{") + if this.Secret != nil { + s = append(s, "Secret: "+fmt.Sprintf("%#v", this.Secret)+",\n") + } + s = append(s, "}") + return strings.Join(s, "") +} +func (this *RemoveSecretRequest) GoString() string { + if this == nil { + return "nil" + } + s := make([]string, 0, 6) + s = append(s, "&api.RemoveSecretRequest{") + s = append(s, "Name: "+fmt.Sprintf("%#v", this.Name)+",\n") + s = append(s, "Version: "+fmt.Sprintf("%#v", this.Version)+",\n") + s = append(s, "}") + return strings.Join(s, "") +} +func (this *RemoveSecretResponse) GoString() string { + if this == nil { + return "nil" + } + s := make([]string, 0, 4) + s = append(s, "&api.RemoveSecretResponse{") + s = append(s, "}") + return strings.Join(s, "") +} +func valueToGoStringSecrets(v interface{}, typ string) string { + rv := reflect.ValueOf(v) + if rv.IsNil() { + return "nil" + } + pv := reflect.Indirect(rv).Interface() + return fmt.Sprintf("func(v %v) *%v { return &v } ( %#v )", typ, typ, pv) +} +func extensionToGoStringSecrets(m github_com_gogo_protobuf_proto.Message) string { + e := github_com_gogo_protobuf_proto.GetUnsafeExtensionsMap(m) + if e == nil { + return "nil" + } + s := "proto.NewUnsafeXXX_InternalExtensions(map[int32]proto.Extension{" + keys := make([]int, 0, len(e)) + for k := range e { + keys = append(keys, int(k)) + } + sort.Ints(keys) + ss := []string{} + for _, k := range keys { + ss = append(ss, strconv.Itoa(k)+": "+e[int32(k)].GoString()) + } + s += strings.Join(ss, ",") + "})" + return s +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConn + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion3 + +// Client API for Secrets service + +type SecretsClient interface { + GetSecret(ctx context.Context, in *GetSecretRequest, opts ...grpc.CallOption) (*GetSecretResponse, error) + ListSecrets(ctx context.Context, in *ListSecretsRequest, opts ...grpc.CallOption) (*ListSecretsResponse, error) + CreateSecret(ctx context.Context, in *CreateSecretRequest, opts ...grpc.CallOption) (*CreateSecretResponse, error) + UpdateSecret(ctx context.Context, in *UpdateSecretRequest, opts ...grpc.CallOption) (*UpdateSecretResponse, error) + RemoveSecret(ctx context.Context, in *RemoveSecretRequest, opts ...grpc.CallOption) (*RemoveSecretResponse, error) +} + +type secretsClient struct { + cc *grpc.ClientConn +} + +func NewSecretsClient(cc *grpc.ClientConn) SecretsClient { + return &secretsClient{cc} +} + +func (c *secretsClient) GetSecret(ctx context.Context, in *GetSecretRequest, opts ...grpc.CallOption) (*GetSecretResponse, error) { + out := new(GetSecretResponse) + err := grpc.Invoke(ctx, "/docker.swarmkit.v1.Secrets/GetSecret", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *secretsClient) ListSecrets(ctx context.Context, in *ListSecretsRequest, opts ...grpc.CallOption) (*ListSecretsResponse, error) { + out := new(ListSecretsResponse) + err := grpc.Invoke(ctx, "/docker.swarmkit.v1.Secrets/ListSecrets", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *secretsClient) CreateSecret(ctx context.Context, in *CreateSecretRequest, opts ...grpc.CallOption) (*CreateSecretResponse, error) { + out := new(CreateSecretResponse) + err := grpc.Invoke(ctx, "/docker.swarmkit.v1.Secrets/CreateSecret", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *secretsClient) UpdateSecret(ctx context.Context, in *UpdateSecretRequest, opts ...grpc.CallOption) (*UpdateSecretResponse, error) { + out := new(UpdateSecretResponse) + err := grpc.Invoke(ctx, "/docker.swarmkit.v1.Secrets/UpdateSecret", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *secretsClient) RemoveSecret(ctx context.Context, in *RemoveSecretRequest, opts ...grpc.CallOption) (*RemoveSecretResponse, error) { + out := new(RemoveSecretResponse) + err := grpc.Invoke(ctx, "/docker.swarmkit.v1.Secrets/RemoveSecret", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// Server API for Secrets service + +type SecretsServer interface { + GetSecret(context.Context, *GetSecretRequest) (*GetSecretResponse, error) + ListSecrets(context.Context, *ListSecretsRequest) (*ListSecretsResponse, error) + CreateSecret(context.Context, *CreateSecretRequest) (*CreateSecretResponse, error) + UpdateSecret(context.Context, *UpdateSecretRequest) (*UpdateSecretResponse, error) + RemoveSecret(context.Context, *RemoveSecretRequest) (*RemoveSecretResponse, error) +} + +func RegisterSecretsServer(s *grpc.Server, srv SecretsServer) { + s.RegisterService(&_Secrets_serviceDesc, srv) +} + +func _Secrets_GetSecret_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetSecretRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(SecretsServer).GetSecret(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/docker.swarmkit.v1.Secrets/GetSecret", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(SecretsServer).GetSecret(ctx, req.(*GetSecretRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Secrets_ListSecrets_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListSecretsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(SecretsServer).ListSecrets(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/docker.swarmkit.v1.Secrets/ListSecrets", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(SecretsServer).ListSecrets(ctx, req.(*ListSecretsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Secrets_CreateSecret_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateSecretRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(SecretsServer).CreateSecret(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/docker.swarmkit.v1.Secrets/CreateSecret", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(SecretsServer).CreateSecret(ctx, req.(*CreateSecretRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Secrets_UpdateSecret_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateSecretRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(SecretsServer).UpdateSecret(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/docker.swarmkit.v1.Secrets/UpdateSecret", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(SecretsServer).UpdateSecret(ctx, req.(*UpdateSecretRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Secrets_RemoveSecret_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(RemoveSecretRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(SecretsServer).RemoveSecret(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/docker.swarmkit.v1.Secrets/RemoveSecret", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(SecretsServer).RemoveSecret(ctx, req.(*RemoveSecretRequest)) + } + return interceptor(ctx, in, info, handler) +} + +var _Secrets_serviceDesc = grpc.ServiceDesc{ + ServiceName: "docker.swarmkit.v1.Secrets", + HandlerType: (*SecretsServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "GetSecret", + Handler: _Secrets_GetSecret_Handler, + }, + { + MethodName: "ListSecrets", + Handler: _Secrets_ListSecrets_Handler, + }, + { + MethodName: "CreateSecret", + Handler: _Secrets_CreateSecret_Handler, + }, + { + MethodName: "UpdateSecret", + Handler: _Secrets_UpdateSecret_Handler, + }, + { + MethodName: "RemoveSecret", + Handler: _Secrets_RemoveSecret_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: fileDescriptorSecrets, +} + +func (m *GetSecretRequest) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *GetSecretRequest) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Name) > 0 { + data[i] = 0xa + i++ + i = encodeVarintSecrets(data, i, uint64(len(m.Name))) + i += copy(data[i:], m.Name) + } + return i, nil +} + +func (m *GetSecretResponse) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *GetSecretResponse) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Secret != nil { + data[i] = 0xa + i++ + i = encodeVarintSecrets(data, i, uint64(m.Secret.Size())) + n1, err := m.Secret.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n1 + } + return i, nil +} + +func (m *ListSecretsRequest) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ListSecretsRequest) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Filters != nil { + data[i] = 0xa + i++ + i = encodeVarintSecrets(data, i, uint64(m.Filters.Size())) + n2, err := m.Filters.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n2 + } + return i, nil +} + +func (m *ListSecretsRequest_Filters) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ListSecretsRequest_Filters) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Names) > 0 { + for _, s := range m.Names { + data[i] = 0xa + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + data[i] = uint8(l) + i++ + i += copy(data[i:], s) + } + } + if len(m.NamePrefixes) > 0 { + for _, s := range m.NamePrefixes { + data[i] = 0x12 + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + data[i] = uint8(l) + i++ + i += copy(data[i:], s) + } + } + return i, nil +} + +func (m *ListSecretsResponse) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ListSecretsResponse) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Secrets) > 0 { + for _, msg := range m.Secrets { + data[i] = 0xa + i++ + i = encodeVarintSecrets(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *CreateSecretRequest) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *CreateSecretRequest) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Spec != nil { + data[i] = 0xa + i++ + i = encodeVarintSecrets(data, i, uint64(m.Spec.Size())) + n3, err := m.Spec.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n3 + } + return i, nil +} + +func (m *CreateSecretResponse) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *CreateSecretResponse) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Secret != nil { + data[i] = 0xa + i++ + i = encodeVarintSecrets(data, i, uint64(m.Secret.Size())) + n4, err := m.Secret.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n4 + } + return i, nil +} + +func (m *UpdateSecretRequest) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *UpdateSecretRequest) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Spec != nil { + data[i] = 0xa + i++ + i = encodeVarintSecrets(data, i, uint64(m.Spec.Size())) + n5, err := m.Spec.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n5 + } + return i, nil +} + +func (m *UpdateSecretResponse) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *UpdateSecretResponse) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Secret != nil { + data[i] = 0xa + i++ + i = encodeVarintSecrets(data, i, uint64(m.Secret.Size())) + n6, err := m.Secret.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n6 + } + return i, nil +} + +func (m *RemoveSecretRequest) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *RemoveSecretRequest) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Name) > 0 { + data[i] = 0xa + i++ + i = encodeVarintSecrets(data, i, uint64(len(m.Name))) + i += copy(data[i:], m.Name) + } + if len(m.Version) > 0 { + data[i] = 0x12 + i++ + i = encodeVarintSecrets(data, i, uint64(len(m.Version))) + i += copy(data[i:], m.Version) + } + return i, nil +} + +func (m *RemoveSecretResponse) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *RemoveSecretResponse) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + return i, nil +} + +func encodeFixed64Secrets(data []byte, offset int, v uint64) int { + data[offset] = uint8(v) + data[offset+1] = uint8(v >> 8) + data[offset+2] = uint8(v >> 16) + data[offset+3] = uint8(v >> 24) + data[offset+4] = uint8(v >> 32) + data[offset+5] = uint8(v >> 40) + data[offset+6] = uint8(v >> 48) + data[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32Secrets(data []byte, offset int, v uint32) int { + data[offset] = uint8(v) + data[offset+1] = uint8(v >> 8) + data[offset+2] = uint8(v >> 16) + data[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintSecrets(data []byte, offset int, v uint64) int { + for v >= 1<<7 { + data[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + data[offset] = uint8(v) + return offset + 1 +} + +type raftProxySecretsServer struct { + local SecretsServer + connSelector raftselector.ConnProvider + ctxMods []func(context.Context) (context.Context, error) +} + +func NewRaftProxySecretsServer(local SecretsServer, connSelector raftselector.ConnProvider, ctxMod func(context.Context) (context.Context, error)) SecretsServer { + redirectChecker := func(ctx context.Context) (context.Context, error) { + s, ok := transport.StreamFromContext(ctx) + if !ok { + return ctx, grpc.Errorf(codes.InvalidArgument, "remote addr is not found in context") + } + addr := s.ServerTransport().RemoteAddr().String() + md, ok := metadata.FromContext(ctx) + if ok && len(md["redirect"]) != 0 { + return ctx, grpc.Errorf(codes.ResourceExhausted, "more than one redirect to leader from: %s", md["redirect"]) + } + if !ok { + md = metadata.New(map[string]string{}) + } + md["redirect"] = append(md["redirect"], addr) + return metadata.NewContext(ctx, md), nil + } + mods := []func(context.Context) (context.Context, error){redirectChecker} + mods = append(mods, ctxMod) + + return &raftProxySecretsServer{ + local: local, + connSelector: connSelector, + ctxMods: mods, + } +} +func (p *raftProxySecretsServer) runCtxMods(ctx context.Context) (context.Context, error) { + var err error + for _, mod := range p.ctxMods { + ctx, err = mod(ctx) + if err != nil { + return ctx, err + } + } + return ctx, nil +} +func (p *raftProxySecretsServer) pollNewLeaderConn(ctx context.Context) (*grpc.ClientConn, error) { + ticker := time.NewTicker(500 * time.Millisecond) + defer ticker.Stop() + for { + select { + case <-ticker.C: + conn, err := p.connSelector.LeaderConn(ctx) + if err != nil { + return nil, err + } + + client := NewHealthClient(conn) + + resp, err := client.Check(ctx, &HealthCheckRequest{Service: "Raft"}) + if err != nil || resp.Status != HealthCheckResponse_SERVING { + continue + } + return conn, nil + case <-ctx.Done(): + return nil, ctx.Err() + } + } +} + +func (p *raftProxySecretsServer) GetSecret(ctx context.Context, r *GetSecretRequest) (*GetSecretResponse, error) { + + conn, err := p.connSelector.LeaderConn(ctx) + if err != nil { + if err == raftselector.ErrIsLeader { + return p.local.GetSecret(ctx, r) + } + return nil, err + } + modCtx, err := p.runCtxMods(ctx) + if err != nil { + return nil, err + } + + resp, err := NewSecretsClient(conn).GetSecret(modCtx, r) + if err != nil { + if !strings.Contains(err.Error(), "is closing") && !strings.Contains(err.Error(), "the connection is unavailable") && !strings.Contains(err.Error(), "connection error") { + return resp, err + } + conn, err := p.pollNewLeaderConn(ctx) + if err != nil { + if err == raftselector.ErrIsLeader { + return p.local.GetSecret(ctx, r) + } + return nil, err + } + return NewSecretsClient(conn).GetSecret(modCtx, r) + } + return resp, err +} + +func (p *raftProxySecretsServer) ListSecrets(ctx context.Context, r *ListSecretsRequest) (*ListSecretsResponse, error) { + + conn, err := p.connSelector.LeaderConn(ctx) + if err != nil { + if err == raftselector.ErrIsLeader { + return p.local.ListSecrets(ctx, r) + } + return nil, err + } + modCtx, err := p.runCtxMods(ctx) + if err != nil { + return nil, err + } + + resp, err := NewSecretsClient(conn).ListSecrets(modCtx, r) + if err != nil { + if !strings.Contains(err.Error(), "is closing") && !strings.Contains(err.Error(), "the connection is unavailable") && !strings.Contains(err.Error(), "connection error") { + return resp, err + } + conn, err := p.pollNewLeaderConn(ctx) + if err != nil { + if err == raftselector.ErrIsLeader { + return p.local.ListSecrets(ctx, r) + } + return nil, err + } + return NewSecretsClient(conn).ListSecrets(modCtx, r) + } + return resp, err +} + +func (p *raftProxySecretsServer) CreateSecret(ctx context.Context, r *CreateSecretRequest) (*CreateSecretResponse, error) { + + conn, err := p.connSelector.LeaderConn(ctx) + if err != nil { + if err == raftselector.ErrIsLeader { + return p.local.CreateSecret(ctx, r) + } + return nil, err + } + modCtx, err := p.runCtxMods(ctx) + if err != nil { + return nil, err + } + + resp, err := NewSecretsClient(conn).CreateSecret(modCtx, r) + if err != nil { + if !strings.Contains(err.Error(), "is closing") && !strings.Contains(err.Error(), "the connection is unavailable") && !strings.Contains(err.Error(), "connection error") { + return resp, err + } + conn, err := p.pollNewLeaderConn(ctx) + if err != nil { + if err == raftselector.ErrIsLeader { + return p.local.CreateSecret(ctx, r) + } + return nil, err + } + return NewSecretsClient(conn).CreateSecret(modCtx, r) + } + return resp, err +} + +func (p *raftProxySecretsServer) UpdateSecret(ctx context.Context, r *UpdateSecretRequest) (*UpdateSecretResponse, error) { + + conn, err := p.connSelector.LeaderConn(ctx) + if err != nil { + if err == raftselector.ErrIsLeader { + return p.local.UpdateSecret(ctx, r) + } + return nil, err + } + modCtx, err := p.runCtxMods(ctx) + if err != nil { + return nil, err + } + + resp, err := NewSecretsClient(conn).UpdateSecret(modCtx, r) + if err != nil { + if !strings.Contains(err.Error(), "is closing") && !strings.Contains(err.Error(), "the connection is unavailable") && !strings.Contains(err.Error(), "connection error") { + return resp, err + } + conn, err := p.pollNewLeaderConn(ctx) + if err != nil { + if err == raftselector.ErrIsLeader { + return p.local.UpdateSecret(ctx, r) + } + return nil, err + } + return NewSecretsClient(conn).UpdateSecret(modCtx, r) + } + return resp, err +} + +func (p *raftProxySecretsServer) RemoveSecret(ctx context.Context, r *RemoveSecretRequest) (*RemoveSecretResponse, error) { + + conn, err := p.connSelector.LeaderConn(ctx) + if err != nil { + if err == raftselector.ErrIsLeader { + return p.local.RemoveSecret(ctx, r) + } + return nil, err + } + modCtx, err := p.runCtxMods(ctx) + if err != nil { + return nil, err + } + + resp, err := NewSecretsClient(conn).RemoveSecret(modCtx, r) + if err != nil { + if !strings.Contains(err.Error(), "is closing") && !strings.Contains(err.Error(), "the connection is unavailable") && !strings.Contains(err.Error(), "connection error") { + return resp, err + } + conn, err := p.pollNewLeaderConn(ctx) + if err != nil { + if err == raftselector.ErrIsLeader { + return p.local.RemoveSecret(ctx, r) + } + return nil, err + } + return NewSecretsClient(conn).RemoveSecret(modCtx, r) + } + return resp, err +} + +func (m *GetSecretRequest) Size() (n int) { + var l int + _ = l + l = len(m.Name) + if l > 0 { + n += 1 + l + sovSecrets(uint64(l)) + } + return n +} + +func (m *GetSecretResponse) Size() (n int) { + var l int + _ = l + if m.Secret != nil { + l = m.Secret.Size() + n += 1 + l + sovSecrets(uint64(l)) + } + return n +} + +func (m *ListSecretsRequest) Size() (n int) { + var l int + _ = l + if m.Filters != nil { + l = m.Filters.Size() + n += 1 + l + sovSecrets(uint64(l)) + } + return n +} + +func (m *ListSecretsRequest_Filters) Size() (n int) { + var l int + _ = l + if len(m.Names) > 0 { + for _, s := range m.Names { + l = len(s) + n += 1 + l + sovSecrets(uint64(l)) + } + } + if len(m.NamePrefixes) > 0 { + for _, s := range m.NamePrefixes { + l = len(s) + n += 1 + l + sovSecrets(uint64(l)) + } + } + return n +} + +func (m *ListSecretsResponse) Size() (n int) { + var l int + _ = l + if len(m.Secrets) > 0 { + for _, e := range m.Secrets { + l = e.Size() + n += 1 + l + sovSecrets(uint64(l)) + } + } + return n +} + +func (m *CreateSecretRequest) Size() (n int) { + var l int + _ = l + if m.Spec != nil { + l = m.Spec.Size() + n += 1 + l + sovSecrets(uint64(l)) + } + return n +} + +func (m *CreateSecretResponse) Size() (n int) { + var l int + _ = l + if m.Secret != nil { + l = m.Secret.Size() + n += 1 + l + sovSecrets(uint64(l)) + } + return n +} + +func (m *UpdateSecretRequest) Size() (n int) { + var l int + _ = l + if m.Spec != nil { + l = m.Spec.Size() + n += 1 + l + sovSecrets(uint64(l)) + } + return n +} + +func (m *UpdateSecretResponse) Size() (n int) { + var l int + _ = l + if m.Secret != nil { + l = m.Secret.Size() + n += 1 + l + sovSecrets(uint64(l)) + } + return n +} + +func (m *RemoveSecretRequest) Size() (n int) { + var l int + _ = l + l = len(m.Name) + if l > 0 { + n += 1 + l + sovSecrets(uint64(l)) + } + l = len(m.Version) + if l > 0 { + n += 1 + l + sovSecrets(uint64(l)) + } + return n +} + +func (m *RemoveSecretResponse) Size() (n int) { + var l int + _ = l + return n +} + +func sovSecrets(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozSecrets(x uint64) (n int) { + return sovSecrets(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (this *GetSecretRequest) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&GetSecretRequest{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `}`, + }, "") + return s +} +func (this *GetSecretResponse) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&GetSecretResponse{`, + `Secret:` + strings.Replace(fmt.Sprintf("%v", this.Secret), "Secret", "Secret", 1) + `,`, + `}`, + }, "") + return s +} +func (this *ListSecretsRequest) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ListSecretsRequest{`, + `Filters:` + strings.Replace(fmt.Sprintf("%v", this.Filters), "ListSecretsRequest_Filters", "ListSecretsRequest_Filters", 1) + `,`, + `}`, + }, "") + return s +} +func (this *ListSecretsRequest_Filters) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ListSecretsRequest_Filters{`, + `Names:` + fmt.Sprintf("%v", this.Names) + `,`, + `NamePrefixes:` + fmt.Sprintf("%v", this.NamePrefixes) + `,`, + `}`, + }, "") + return s +} +func (this *ListSecretsResponse) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ListSecretsResponse{`, + `Secrets:` + strings.Replace(fmt.Sprintf("%v", this.Secrets), "Secret", "Secret", 1) + `,`, + `}`, + }, "") + return s +} +func (this *CreateSecretRequest) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CreateSecretRequest{`, + `Spec:` + strings.Replace(fmt.Sprintf("%v", this.Spec), "SecretSpec", "SecretSpec", 1) + `,`, + `}`, + }, "") + return s +} +func (this *CreateSecretResponse) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CreateSecretResponse{`, + `Secret:` + strings.Replace(fmt.Sprintf("%v", this.Secret), "Secret", "Secret", 1) + `,`, + `}`, + }, "") + return s +} +func (this *UpdateSecretRequest) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&UpdateSecretRequest{`, + `Spec:` + strings.Replace(fmt.Sprintf("%v", this.Spec), "SecretSpec", "SecretSpec", 1) + `,`, + `}`, + }, "") + return s +} +func (this *UpdateSecretResponse) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&UpdateSecretResponse{`, + `Secret:` + strings.Replace(fmt.Sprintf("%v", this.Secret), "Secret", "Secret", 1) + `,`, + `}`, + }, "") + return s +} +func (this *RemoveSecretRequest) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&RemoveSecretRequest{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `Version:` + fmt.Sprintf("%v", this.Version) + `,`, + `}`, + }, "") + return s +} +func (this *RemoveSecretResponse) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&RemoveSecretResponse{`, + `}`, + }, "") + return s +} +func valueToStringSecrets(v interface{}) string { + rv := reflect.ValueOf(v) + if rv.IsNil() { + return "nil" + } + pv := reflect.Indirect(rv).Interface() + return fmt.Sprintf("*%v", pv) +} +func (m *GetSecretRequest) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSecrets + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GetSecretRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GetSecretRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSecrets + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthSecrets + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipSecrets(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthSecrets + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GetSecretResponse) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSecrets + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GetSecretResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GetSecretResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Secret", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSecrets + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthSecrets + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Secret == nil { + m.Secret = &Secret{} + } + if err := m.Secret.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipSecrets(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthSecrets + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ListSecretsRequest) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSecrets + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ListSecretsRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ListSecretsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Filters", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSecrets + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthSecrets + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Filters == nil { + m.Filters = &ListSecretsRequest_Filters{} + } + if err := m.Filters.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipSecrets(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthSecrets + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ListSecretsRequest_Filters) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSecrets + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Filters: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Filters: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Names", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSecrets + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthSecrets + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Names = append(m.Names, string(data[iNdEx:postIndex])) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NamePrefixes", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSecrets + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthSecrets + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.NamePrefixes = append(m.NamePrefixes, string(data[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipSecrets(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthSecrets + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ListSecretsResponse) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSecrets + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ListSecretsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ListSecretsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Secrets", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSecrets + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthSecrets + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Secrets = append(m.Secrets, &Secret{}) + if err := m.Secrets[len(m.Secrets)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipSecrets(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthSecrets + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CreateSecretRequest) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSecrets + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CreateSecretRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CreateSecretRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSecrets + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthSecrets + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Spec == nil { + m.Spec = &SecretSpec{} + } + if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipSecrets(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthSecrets + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CreateSecretResponse) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSecrets + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CreateSecretResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CreateSecretResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Secret", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSecrets + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthSecrets + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Secret == nil { + m.Secret = &Secret{} + } + if err := m.Secret.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipSecrets(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthSecrets + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *UpdateSecretRequest) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSecrets + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: UpdateSecretRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: UpdateSecretRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSecrets + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthSecrets + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Spec == nil { + m.Spec = &SecretSpec{} + } + if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipSecrets(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthSecrets + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *UpdateSecretResponse) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSecrets + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: UpdateSecretResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: UpdateSecretResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Secret", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSecrets + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthSecrets + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Secret == nil { + m.Secret = &Secret{} + } + if err := m.Secret.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipSecrets(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthSecrets + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RemoveSecretRequest) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSecrets + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: RemoveSecretRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RemoveSecretRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSecrets + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthSecrets + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSecrets + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthSecrets + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Version = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipSecrets(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthSecrets + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RemoveSecretResponse) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSecrets + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: RemoveSecretResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RemoveSecretResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipSecrets(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthSecrets + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipSecrets(data []byte) (n int, err error) { + l := len(data) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowSecrets + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowSecrets + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if data[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowSecrets + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthSecrets + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowSecrets + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipSecrets(data[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthSecrets = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowSecrets = fmt.Errorf("proto: integer overflow") +) + +func init() { proto.RegisterFile("secrets.proto", fileDescriptorSecrets) } + +var fileDescriptorSecrets = []byte{ + // 484 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x54, 0x41, 0x6e, 0xd3, 0x40, + 0x14, 0xad, 0x43, 0xa8, 0x95, 0x9f, 0x46, 0xc0, 0x38, 0xa0, 0x68, 0x84, 0x46, 0x68, 0x80, 0x92, + 0x0d, 0x46, 0x04, 0x4e, 0x40, 0x11, 0xa5, 0xc0, 0x02, 0xb9, 0x62, 0x8d, 0x5c, 0xf7, 0xb7, 0x32, + 0x6d, 0x3c, 0x66, 0xc6, 0x09, 0x5d, 0x72, 0x0c, 0x0e, 0xc0, 0x9a, 0x73, 0x54, 0xac, 0x58, 0xb2, + 0x83, 0xf8, 0x00, 0x88, 0x23, 0x20, 0x8f, 0xc7, 0xc8, 0xa6, 0xd3, 0x18, 0x29, 0x5d, 0x65, 0xe6, + 0xe7, 0xfd, 0xf7, 0xde, 0xf7, 0x7f, 0x36, 0x0c, 0x14, 0x46, 0x12, 0x33, 0xe5, 0xa7, 0x52, 0x64, + 0x82, 0x90, 0x7d, 0x11, 0x1d, 0xa1, 0xf4, 0xd5, 0x87, 0x50, 0x4e, 0x8f, 0xe2, 0xcc, 0x9f, 0x3f, + 0xa4, 0x7d, 0x95, 0x62, 0x64, 0x00, 0x74, 0x20, 0xf6, 0xde, 0x61, 0x54, 0xe1, 0xa9, 0x97, 0x1e, + 0xcf, 0x0e, 0xe3, 0xe4, 0x41, 0xf9, 0x53, 0x16, 0xf9, 0x26, 0x5c, 0xdd, 0xc6, 0x6c, 0x57, 0x13, + 0x07, 0xf8, 0x7e, 0x86, 0x2a, 0x23, 0x04, 0xba, 0x49, 0x38, 0xc5, 0x91, 0x73, 0xcb, 0x19, 0xf7, + 0x02, 0x7d, 0xe6, 0xdb, 0x70, 0xad, 0x86, 0x53, 0xa9, 0x48, 0x14, 0x92, 0x09, 0xac, 0x97, 0x96, + 0x34, 0xb4, 0x3f, 0xa1, 0xfe, 0x59, 0x4b, 0xbe, 0xe9, 0x31, 0x48, 0xfe, 0xd9, 0x01, 0xf2, 0x2a, + 0x56, 0x86, 0x4a, 0x55, 0x9a, 0xcf, 0xc1, 0x3d, 0x88, 0x8f, 0x33, 0x94, 0xca, 0x70, 0xf9, 0x36, + 0xae, 0xb3, 0x8d, 0xfe, 0xb3, 0xb2, 0x2b, 0xa8, 0xda, 0xe9, 0x53, 0x70, 0x4d, 0x8d, 0x0c, 0xe1, + 0x72, 0x61, 0xbe, 0xa0, 0xbc, 0x34, 0xee, 0x05, 0xe5, 0x85, 0xdc, 0x86, 0x41, 0x71, 0x78, 0x9b, + 0x4a, 0x3c, 0x88, 0x4f, 0x50, 0x8d, 0x3a, 0xfa, 0xdf, 0x8d, 0xa2, 0xf8, 0xda, 0xd4, 0xf8, 0x4b, + 0xf0, 0x1a, 0x62, 0x66, 0xe2, 0xc7, 0xe0, 0x9a, 0x25, 0x68, 0xce, 0xe5, 0x23, 0x57, 0x50, 0xbe, + 0x03, 0xde, 0x96, 0xc4, 0x30, 0xc3, 0xe6, 0x73, 0x9e, 0x40, 0xb7, 0x58, 0x97, 0x19, 0x98, 0x9d, + 0xcf, 0xb4, 0x9b, 0x62, 0x14, 0x68, 0x2c, 0x7f, 0x01, 0xc3, 0x26, 0xd5, 0x0a, 0xab, 0xd8, 0x01, + 0xef, 0x4d, 0xba, 0x7f, 0x51, 0xb6, 0x9a, 0x54, 0x2b, 0xd8, 0xda, 0x02, 0x2f, 0xc0, 0xa9, 0x98, + 0x63, 0x6b, 0x2a, 0xc9, 0x08, 0xdc, 0x39, 0x4a, 0x15, 0x8b, 0x64, 0xd4, 0xd1, 0xe5, 0xea, 0xca, + 0x6f, 0xc0, 0xb0, 0x49, 0x52, 0x1a, 0x9a, 0xfc, 0xe8, 0x82, 0x6b, 0x96, 0x4a, 0x04, 0xf4, 0xfe, + 0x66, 0x9a, 0xdc, 0xb1, 0x39, 0xfb, 0xf7, 0xd5, 0xa0, 0x77, 0x5b, 0x50, 0xa5, 0x0a, 0xbf, 0xfe, + 0xf5, 0xcb, 0xaf, 0x4f, 0x9d, 0x2b, 0x30, 0xd0, 0xb0, 0xfb, 0xd3, 0x30, 0x09, 0x0f, 0x51, 0x92, + 0x19, 0xf4, 0x6b, 0xa1, 0x22, 0x9b, 0xff, 0x17, 0x71, 0x7a, 0xaf, 0x15, 0xb7, 0x5c, 0xf6, 0x04, + 0x36, 0xea, 0x99, 0x21, 0x56, 0x3e, 0x4b, 0x40, 0xe9, 0xb8, 0x1d, 0xd8, 0xaa, 0x5c, 0x8f, 0x85, + 0x5d, 0xd9, 0x92, 0x41, 0xbb, 0xb2, 0x2d, 0x61, 0x4b, 0x94, 0xeb, 0xfb, 0xb7, 0x2b, 0x5b, 0x62, + 0x66, 0x57, 0xb6, 0x45, 0xe9, 0x1c, 0xe5, 0x27, 0x37, 0x4f, 0x17, 0x6c, 0xed, 0xfb, 0x82, 0xad, + 0xfd, 0x5e, 0x30, 0xe7, 0x63, 0xce, 0x9c, 0xd3, 0x9c, 0x39, 0xdf, 0x72, 0xe6, 0xfc, 0xcc, 0x99, + 0xb3, 0xb7, 0xae, 0x3f, 0xbb, 0x8f, 0xfe, 0x04, 0x00, 0x00, 0xff, 0xff, 0x0f, 0xdc, 0x27, 0x76, + 0xcc, 0x05, 0x00, 0x00, +} diff --git a/api/secrets.proto b/api/secrets.proto new file mode 100644 index 0000000000..33b2f1ddd7 --- /dev/null +++ b/api/secrets.proto @@ -0,0 +1,77 @@ +syntax = "proto3"; + +package docker.swarmkit.v1; + +import "specs.proto"; +import "objects.proto"; +import "plugin/plugin.proto"; + +// Secrets defines the RPC methods for controlling secrets in a cluster. +service Secrets { + rpc GetSecret(GetSecretRequest) returns (GetSecretResponse) { + option (docker.protobuf.plugin.tls_authorization) = { roles: "swarm-manager" }; + } + rpc ListSecrets(ListSecretsRequest) returns (ListSecretsResponse) { + option (docker.protobuf.plugin.tls_authorization) = { roles: "swarm-manager" }; + } + rpc CreateSecret(CreateSecretRequest) returns (CreateSecretResponse) { + option (docker.protobuf.plugin.tls_authorization) = { roles: "swarm-manager" }; + } + rpc UpdateSecret(UpdateSecretRequest) returns (UpdateSecretResponse) { + option (docker.protobuf.plugin.tls_authorization) = { roles: "swarm-manager" }; + } + rpc RemoveSecret(RemoveSecretRequest) returns (RemoveSecretResponse) { + option (docker.protobuf.plugin.tls_authorization) = { roles: "swarm-manager" }; + } +} + +message GetSecretRequest { + // Name is name of the secret to get info for. + string name = 1; +} + +message GetSecretResponse { + // Secret is the secret corresponding to that ID, but each version in `secret.spec.data` should have its `.data` field be nil + Secret secret = 1; +} + +message ListSecretsRequest { + message Filters { + repeated string names = 1; + repeated string name_prefixes = 2; + } + + Filters filters = 1; +} + +message ListSecretsResponse { + // Each Secret is the secret corresponding to that ID, but each version in `secret.spec.data` should have its `.data` field be nil + repeated Secret secrets = 1; +} + +// Note CreateSecretRequest does not contain a SecretSpec, since that can contain multiple SecretData objects, which have digests +// which should be generated by the +message CreateSecretRequest { + SecretSpec spec = 1; +} + +message CreateSecretResponse { + Secret secret = 1; +} + +message UpdateSecretRequest { + SecretSpec spec = 1; +} + +message UpdateSecretResponse { + Secret secret = 1; +} + +message RemoveSecretRequest { + // Name is name of the secret to remove. + string name = 1; + // Version is the version to remove + string version = 2; +} + +message RemoveSecretResponse {} diff --git a/api/specs.pb.go b/api/specs.pb.go index d22eae66f0..d83e0c2819 100644 --- a/api/specs.pb.go +++ b/api/specs.pb.go @@ -9,6 +9,7 @@ import fmt "fmt" import math "math" import _ "github.com/gogo/protobuf/gogoproto" import docker_swarmkit_v11 "github.com/docker/swarmkit/api/duration" +import docker_swarmkit_v1 "github.com/docker/swarmkit/api/timestamp" import strings "strings" import github_com_gogo_protobuf_proto "github.com/gogo/protobuf/proto" @@ -565,6 +566,8 @@ type SecretSpec struct { Type SecretType `protobuf:"varint,2,opt,name=type,proto3,enum=docker.swarmkit.v1.SecretType" json:"type,omitempty"` // Secret payload. Data []byte `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` + // When this secret-spec should expire and no longer be available + Expiry *docker_swarmkit_v1.Timestamp `protobuf:"bytes,4,opt,name=expiry" json:"expiry,omitempty"` } func (m *SecretSpec) Reset() { *m = SecretSpec{} } @@ -852,6 +855,7 @@ func (m *SecretSpec) Copy() *SecretSpec { Annotations: *m.Annotations.Copy(), Type: m.Type, Data: m.Data, + Expiry: m.Expiry.Copy(), } return o @@ -1084,11 +1088,14 @@ func (this *SecretSpec) GoString() string { if this == nil { return "nil" } - s := make([]string, 0, 7) + s := make([]string, 0, 8) s = append(s, "&api.SecretSpec{") s = append(s, "Annotations: "+strings.Replace(this.Annotations.GoString(), `&`, ``, 1)+",\n") s = append(s, "Type: "+fmt.Sprintf("%#v", this.Type)+",\n") s = append(s, "Data: "+fmt.Sprintf("%#v", this.Data)+",\n") + if this.Expiry != nil { + s = append(s, "Expiry: "+fmt.Sprintf("%#v", this.Expiry)+",\n") + } s = append(s, "}") return strings.Join(s, "") } @@ -1832,6 +1839,16 @@ func (m *SecretSpec) MarshalTo(data []byte) (int, error) { i = encodeVarintSpecs(data, i, uint64(len(m.Data))) i += copy(data[i:], m.Data) } + if m.Expiry != nil { + data[i] = 0x22 + i++ + i = encodeVarintSpecs(data, i, uint64(m.Expiry.Size())) + n29, err := m.Expiry.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n29 + } return i, nil } @@ -2151,6 +2168,10 @@ func (m *SecretSpec) Size() (n int) { if l > 0 { n += 1 + l + sovSpecs(uint64(l)) } + if m.Expiry != nil { + l = m.Expiry.Size() + n += 1 + l + sovSpecs(uint64(l)) + } return n } @@ -2370,6 +2391,7 @@ func (this *SecretSpec) String() string { `Annotations:` + strings.Replace(strings.Replace(this.Annotations.String(), "Annotations", "Annotations", 1), `&`, ``, 1) + `,`, `Type:` + fmt.Sprintf("%v", this.Type) + `,`, `Data:` + fmt.Sprintf("%v", this.Data) + `,`, + `Expiry:` + strings.Replace(fmt.Sprintf("%v", this.Expiry), "Timestamp", "docker_swarmkit_v1.Timestamp", 1) + `,`, `}`, }, "") return s @@ -4516,6 +4538,39 @@ func (m *SecretSpec) Unmarshal(data []byte) error { m.Data = []byte{} } iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Expiry", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSpecs + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthSpecs + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Expiry == nil { + m.Expiry = &docker_swarmkit_v1.Timestamp{} + } + if err := m.Expiry.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipSpecs(data[iNdEx:]) @@ -4645,97 +4700,99 @@ var ( func init() { proto.RegisterFile("specs.proto", fileDescriptorSpecs) } var fileDescriptorSpecs = []byte{ - // 1461 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x57, 0x4f, 0x6f, 0xdb, 0xc8, - 0x15, 0x17, 0x6d, 0x5a, 0x96, 0x1e, 0xe5, 0x44, 0x19, 0xe4, 0x0f, 0xa3, 0xa4, 0xb2, 0xa2, 0xa4, - 0xa9, 0xd3, 0xa2, 0x76, 0xab, 0x16, 0x69, 0xd2, 0x34, 0x68, 0xf5, 0xaf, 0x8e, 0xea, 0xda, 0x11, - 0xc6, 0x4e, 0x80, 0x9e, 0x84, 0x31, 0x39, 0x96, 0x09, 0x53, 0x1c, 0x76, 0x38, 0x54, 0xe0, 0x5b, - 0x8f, 0x81, 0x0f, 0xfd, 0x06, 0x3e, 0x15, 0xe8, 0x37, 0xe8, 0x77, 0xc8, 0xb1, 0xc7, 0x3d, 0x19, - 0x6b, 0x5f, 0x17, 0x0b, 0x2c, 0xb0, 0x5f, 0x60, 0x31, 0xc3, 0x91, 0x44, 0x6d, 0xe8, 0x24, 0xc0, - 0xfa, 0x36, 0xf3, 0xf8, 0xfb, 0xbd, 0x79, 0x7c, 0xef, 0xc7, 0xf7, 0x86, 0x60, 0x45, 0x21, 0x75, - 0xa2, 0xf5, 0x90, 0x33, 0xc1, 0x10, 0x72, 0x99, 0x73, 0x44, 0xf9, 0x7a, 0xf4, 0x8e, 0xf0, 0xd1, - 0x91, 0x27, 0xd6, 0xc7, 0xbf, 0xad, 0x58, 0xe2, 0x38, 0xa4, 0x1a, 0x50, 0xb9, 0x39, 0x64, 0x43, - 0xa6, 0x96, 0x1b, 0x72, 0xa5, 0xad, 0x77, 0xdc, 0x98, 0x13, 0xe1, 0xb1, 0x60, 0x63, 0xb2, 0x48, - 0x1e, 0xd4, 0xff, 0x6d, 0x42, 0x61, 0x87, 0xb9, 0x74, 0x37, 0xa4, 0x0e, 0xda, 0x04, 0x8b, 0x04, - 0x01, 0x13, 0x0a, 0x10, 0xd9, 0x46, 0xcd, 0x58, 0xb3, 0x1a, 0xab, 0xeb, 0x1f, 0x1f, 0xb9, 0xde, - 0x9c, 0xc1, 0x5a, 0xe6, 0x87, 0xb3, 0xd5, 0x1c, 0x4e, 0x33, 0xd1, 0x6f, 0xc0, 0xe4, 0xcc, 0xa7, - 0xf6, 0x42, 0xcd, 0x58, 0xbb, 0xd6, 0xb8, 0x9f, 0xe5, 0x41, 0x1e, 0x8a, 0x99, 0x4f, 0xb1, 0x42, - 0xa2, 0x4d, 0x80, 0x11, 0x1d, 0xed, 0x53, 0x1e, 0x1d, 0x7a, 0xa1, 0xbd, 0xa8, 0x78, 0xbf, 0xb8, - 0x8c, 0x27, 0x83, 0x5d, 0xdf, 0x9e, 0xc2, 0x71, 0x8a, 0x8a, 0xb6, 0xa1, 0x44, 0xc6, 0xc4, 0xf3, - 0xc9, 0xbe, 0xe7, 0x7b, 0xe2, 0xd8, 0x36, 0x95, 0xab, 0x27, 0x9f, 0x74, 0xd5, 0x4c, 0x11, 0xf0, - 0x1c, 0xbd, 0xee, 0x02, 0xcc, 0x0e, 0x42, 0x8f, 0x61, 0xb9, 0xdf, 0xdd, 0xe9, 0xf4, 0x76, 0x36, - 0xcb, 0xb9, 0xca, 0xdd, 0x93, 0xd3, 0xda, 0x2d, 0xe9, 0x63, 0x06, 0xe8, 0xd3, 0xc0, 0xf5, 0x82, - 0x21, 0x5a, 0x83, 0x42, 0xb3, 0xdd, 0xee, 0xf6, 0xf7, 0xba, 0x9d, 0xb2, 0x51, 0xa9, 0x9c, 0x9c, - 0xd6, 0x6e, 0xcf, 0x03, 0x9b, 0x8e, 0x43, 0x43, 0x41, 0xdd, 0x8a, 0xf9, 0xfe, 0x3f, 0xd5, 0x5c, - 0xfd, 0xbd, 0x01, 0xa5, 0x74, 0x10, 0xe8, 0x31, 0xe4, 0x9b, 0xed, 0xbd, 0xde, 0xdb, 0x6e, 0x39, - 0x37, 0xa3, 0xa7, 0x11, 0x4d, 0x47, 0x78, 0x63, 0x8a, 0x1e, 0xc1, 0x52, 0xbf, 0xf9, 0x66, 0xb7, - 0x5b, 0x36, 0x66, 0xe1, 0xa4, 0x61, 0x7d, 0x12, 0x47, 0x0a, 0xd5, 0xc1, 0xcd, 0xde, 0x4e, 0x79, - 0x21, 0x1b, 0xd5, 0xe1, 0xc4, 0x0b, 0x74, 0x28, 0xe7, 0x8b, 0x60, 0xed, 0x52, 0x3e, 0xf6, 0x9c, - 0x2b, 0xd6, 0xc4, 0x53, 0x30, 0x05, 0x89, 0x8e, 0x94, 0x26, 0xac, 0x6c, 0x4d, 0xec, 0x91, 0xe8, - 0x48, 0x1e, 0xaa, 0xe9, 0x0a, 0x2f, 0x95, 0xc1, 0x69, 0xe8, 0x7b, 0x0e, 0x11, 0xd4, 0x55, 0xca, - 0xb0, 0x1a, 0x3f, 0xcf, 0x62, 0xe3, 0x29, 0x4a, 0xc7, 0xff, 0x2a, 0x87, 0x53, 0x54, 0xf4, 0x02, - 0xf2, 0x43, 0x9f, 0xed, 0x13, 0x5f, 0x69, 0xc2, 0x6a, 0x3c, 0xc8, 0x72, 0xb2, 0xa9, 0x10, 0x33, - 0x07, 0x9a, 0x82, 0x9e, 0x41, 0x3e, 0x0e, 0x5d, 0x22, 0xa8, 0x9d, 0x57, 0xe4, 0x5a, 0x16, 0xf9, - 0x8d, 0x42, 0xb4, 0x59, 0x70, 0xe0, 0x0d, 0xb1, 0xc6, 0xa3, 0x2d, 0x28, 0x04, 0x54, 0xbc, 0x63, - 0xfc, 0x28, 0xb2, 0x97, 0x6b, 0x8b, 0x6b, 0x56, 0xe3, 0x57, 0x99, 0x62, 0x4c, 0x30, 0x4d, 0x21, - 0x88, 0x73, 0x38, 0xa2, 0x81, 0x48, 0xdc, 0xb4, 0x16, 0x6c, 0x03, 0x4f, 0x1d, 0xa0, 0x3f, 0x41, - 0x81, 0x06, 0x6e, 0xc8, 0xbc, 0x40, 0xd8, 0x85, 0xcb, 0x03, 0xe9, 0x6a, 0x8c, 0x4c, 0x26, 0x9e, - 0x32, 0x5a, 0x79, 0x30, 0x47, 0xcc, 0xa5, 0xf5, 0x0d, 0xb8, 0xf1, 0x51, 0xb2, 0x50, 0x05, 0x0a, - 0x3a, 0x59, 0x49, 0x95, 0x4d, 0x3c, 0xdd, 0xd7, 0xaf, 0xc3, 0xca, 0x5c, 0x62, 0xea, 0xdf, 0x2c, - 0x42, 0x61, 0x52, 0x2d, 0xd4, 0x84, 0xa2, 0xc3, 0x02, 0x41, 0xbc, 0x80, 0x72, 0x2d, 0x90, 0xcc, - 0xdc, 0xb6, 0x27, 0x20, 0xc9, 0x7a, 0x95, 0xc3, 0x33, 0x16, 0xfa, 0x2b, 0x14, 0x39, 0x8d, 0x58, - 0xcc, 0x1d, 0x1a, 0x69, 0x85, 0xac, 0x65, 0xd7, 0x38, 0x01, 0x61, 0xfa, 0xcf, 0xd8, 0xe3, 0x54, - 0xe6, 0x29, 0xc2, 0x33, 0x2a, 0x7a, 0x01, 0xcb, 0x9c, 0x46, 0x82, 0x70, 0xf1, 0xa9, 0x22, 0xe3, - 0x04, 0xd2, 0x67, 0xbe, 0xe7, 0x1c, 0xe3, 0x09, 0x03, 0xbd, 0x80, 0x62, 0xe8, 0x13, 0x47, 0x79, - 0xb5, 0x97, 0x14, 0xfd, 0x67, 0x59, 0xf4, 0xfe, 0x04, 0x84, 0x67, 0x78, 0xf4, 0x1c, 0xc0, 0x67, - 0xc3, 0x81, 0xcb, 0xbd, 0x31, 0xe5, 0x5a, 0x24, 0x95, 0x2c, 0x76, 0x47, 0x21, 0x70, 0xd1, 0x67, - 0xc3, 0x64, 0x89, 0x36, 0x7f, 0x92, 0x42, 0x52, 0xea, 0xd8, 0x02, 0x20, 0xd3, 0xa7, 0x5a, 0x1f, - 0x4f, 0xbe, 0xc8, 0x95, 0xae, 0x48, 0x8a, 0xde, 0x2a, 0xc2, 0x32, 0x8f, 0x03, 0xe1, 0x8d, 0x68, - 0x7d, 0x0b, 0x6e, 0x65, 0x32, 0x50, 0x03, 0x4a, 0xd3, 0x1a, 0x0e, 0x3c, 0x57, 0x15, 0xbf, 0xd8, - 0xba, 0x7e, 0x71, 0xb6, 0x6a, 0x4d, 0x8b, 0xdd, 0xeb, 0x60, 0x6b, 0x0a, 0xea, 0xb9, 0xf5, 0x6f, - 0x4d, 0x58, 0x99, 0x53, 0x02, 0xba, 0x09, 0x4b, 0xde, 0x88, 0x0c, 0x69, 0x42, 0xc7, 0xc9, 0x06, - 0x75, 0x21, 0xef, 0x93, 0x7d, 0xea, 0x4b, 0x3d, 0xc8, 0x9c, 0xfc, 0xfa, 0xb3, 0x92, 0x5a, 0xff, - 0xbb, 0xc2, 0x77, 0x03, 0xc1, 0x8f, 0xb1, 0x26, 0x23, 0x1b, 0x96, 0x1d, 0x36, 0x1a, 0x91, 0x40, - 0xf6, 0x8e, 0xc5, 0xb5, 0x22, 0x9e, 0x6c, 0x11, 0x02, 0x93, 0xf0, 0x61, 0x64, 0x9b, 0xca, 0xac, - 0xd6, 0xa8, 0x0c, 0x8b, 0x34, 0x18, 0xdb, 0x4b, 0xca, 0x24, 0x97, 0xd2, 0xe2, 0x7a, 0x49, 0x41, - 0x8b, 0x58, 0x2e, 0x25, 0x2f, 0x8e, 0x28, 0xb7, 0x97, 0x95, 0x49, 0xad, 0xd1, 0x1f, 0x20, 0x3f, - 0x62, 0x71, 0x20, 0x22, 0xbb, 0xa0, 0x82, 0xbd, 0x9b, 0x15, 0xec, 0xb6, 0x44, 0xe8, 0xde, 0xa6, - 0xe1, 0xe8, 0x15, 0xdc, 0x88, 0x04, 0x0b, 0x07, 0x43, 0x4e, 0x1c, 0x3a, 0x08, 0x29, 0xf7, 0x98, - 0x6b, 0x17, 0x2f, 0x6f, 0x91, 0x1d, 0x3d, 0xbe, 0xf1, 0x75, 0x49, 0xdb, 0x94, 0xac, 0xbe, 0x22, - 0xa1, 0x3e, 0x94, 0xc2, 0xd8, 0xf7, 0x07, 0x2c, 0x4c, 0x3a, 0x35, 0x28, 0x27, 0x5f, 0x90, 0xb5, - 0x7e, 0xec, 0xfb, 0xaf, 0x13, 0x12, 0xb6, 0xc2, 0xd9, 0x06, 0xdd, 0x86, 0xfc, 0x90, 0xb3, 0x38, - 0x8c, 0x6c, 0x4b, 0xe5, 0x43, 0xef, 0xd0, 0x4b, 0x58, 0x8e, 0xa8, 0xc3, 0xa9, 0x88, 0xec, 0x92, - 0x7a, 0xdb, 0x87, 0x59, 0x87, 0xec, 0x2a, 0x08, 0xa6, 0x07, 0x94, 0xd3, 0xc0, 0xa1, 0x78, 0xc2, - 0xa9, 0x3c, 0x07, 0x2b, 0x55, 0x28, 0x99, 0xe0, 0x23, 0x7a, 0xac, 0x6b, 0x2f, 0x97, 0x52, 0x0f, - 0x63, 0xe2, 0xc7, 0xc9, 0xf5, 0xa1, 0x88, 0x93, 0xcd, 0x1f, 0x17, 0x9e, 0x19, 0x95, 0x06, 0x58, - 0xa9, 0x68, 0xd1, 0x43, 0x58, 0xe1, 0x74, 0xe8, 0x45, 0x82, 0x1f, 0x0f, 0x48, 0x2c, 0x0e, 0xed, - 0xbf, 0x28, 0x42, 0x69, 0x62, 0x6c, 0xc6, 0xe2, 0xb0, 0xfe, 0xbd, 0x01, 0xa5, 0x74, 0x3f, 0x44, - 0xed, 0xa4, 0x0b, 0xaa, 0x13, 0xaf, 0x35, 0x36, 0x3e, 0xd7, 0x3f, 0x55, 0xcf, 0xf1, 0x63, 0x79, - 0xe2, 0xb6, 0xbc, 0xb3, 0x28, 0x32, 0xfa, 0x3d, 0x2c, 0x85, 0x8c, 0x8b, 0x89, 0x38, 0xab, 0x99, - 0x7d, 0x82, 0xf1, 0xc9, 0x37, 0x9a, 0x80, 0xeb, 0x87, 0x70, 0x6d, 0xde, 0x1b, 0x7a, 0x04, 0x8b, - 0x6f, 0x7b, 0xfd, 0x72, 0xae, 0x72, 0xef, 0xe4, 0xb4, 0x76, 0x67, 0xfe, 0xe1, 0x5b, 0x8f, 0x8b, - 0x98, 0xf8, 0xbd, 0x3e, 0xfa, 0x25, 0x2c, 0x75, 0x76, 0x76, 0x31, 0x2e, 0x1b, 0x95, 0xd5, 0x93, - 0xd3, 0xda, 0xbd, 0x79, 0x9c, 0x7c, 0xc4, 0xe2, 0xc0, 0xc5, 0x6c, 0x7f, 0x3a, 0xc6, 0xff, 0xb7, - 0x00, 0x96, 0xfe, 0x66, 0xaf, 0x76, 0x8c, 0xff, 0x19, 0x56, 0x92, 0x1e, 0x37, 0x70, 0xd4, 0xab, - 0xe9, 0x6e, 0xfd, 0xa9, 0x56, 0x57, 0x4a, 0x08, 0x49, 0x2a, 0xd0, 0x03, 0x28, 0x79, 0xe1, 0xf8, - 0xe9, 0x80, 0x06, 0x64, 0xdf, 0xd7, 0x13, 0xbd, 0x80, 0x2d, 0x69, 0xeb, 0x26, 0x26, 0x39, 0x8a, - 0xbc, 0x40, 0x50, 0x1e, 0xe8, 0x59, 0x5d, 0xc0, 0xd3, 0x3d, 0x7a, 0x09, 0xa6, 0x17, 0x92, 0x91, - 0xee, 0xcf, 0x99, 0x6f, 0xd0, 0xeb, 0x37, 0xb7, 0xb5, 0x44, 0x5a, 0x85, 0x8b, 0xb3, 0x55, 0x53, - 0x1a, 0xb0, 0xa2, 0xa1, 0xea, 0xa4, 0x45, 0xca, 0x93, 0xd4, 0x57, 0x5d, 0xc0, 0x29, 0x4b, 0xfd, - 0xbf, 0x26, 0x58, 0x6d, 0x3f, 0x8e, 0x84, 0xee, 0x4d, 0x57, 0x96, 0xb7, 0x7f, 0xc0, 0x0d, 0xa2, - 0x2e, 0x7d, 0x24, 0x90, 0x1f, 0xba, 0x1a, 0x3d, 0x3a, 0x77, 0x8f, 0x32, 0xdd, 0x4d, 0xc1, 0xc9, - 0x98, 0x6a, 0xe5, 0xa5, 0x4f, 0xdb, 0xc0, 0x65, 0xf2, 0xa3, 0x27, 0x68, 0x17, 0x56, 0x18, 0x77, - 0x0e, 0x69, 0x24, 0x92, 0xde, 0xa0, 0x2f, 0x49, 0x99, 0xd7, 0xe7, 0xd7, 0x69, 0xa0, 0xbe, 0x62, - 0x24, 0xd1, 0xce, 0xfb, 0x40, 0xcf, 0xc0, 0xe4, 0xe4, 0x60, 0x32, 0x46, 0x33, 0xf5, 0x8d, 0xc9, - 0x81, 0x98, 0x73, 0xa1, 0x18, 0xe8, 0x6f, 0x00, 0xae, 0x17, 0x85, 0x44, 0x38, 0x87, 0x94, 0xeb, - 0x3a, 0x65, 0xbe, 0x62, 0x67, 0x8a, 0x9a, 0xf3, 0x92, 0x62, 0xa3, 0x2d, 0x28, 0x3a, 0x64, 0xa2, - 0xb4, 0xfc, 0xe5, 0x6d, 0xb1, 0xdd, 0xd4, 0x2e, 0xca, 0xd2, 0xc5, 0xc5, 0xd9, 0x6a, 0x61, 0x62, - 0xc1, 0x05, 0x87, 0x68, 0xe5, 0x6d, 0xc1, 0x8a, 0xbc, 0x51, 0x0e, 0x5c, 0x7a, 0x40, 0x62, 0x5f, - 0x44, 0xaa, 0x83, 0x5f, 0x72, 0x83, 0x92, 0x97, 0x9b, 0x8e, 0xc6, 0xe9, 0xb8, 0x4a, 0x22, 0x65, - 0xab, 0x9f, 0x1a, 0x00, 0x49, 0x8b, 0xbb, 0x5a, 0x9d, 0x34, 0xc0, 0x94, 0xbf, 0x73, 0xfa, 0xd7, - 0xa9, 0x7a, 0x79, 0x67, 0xdd, 0x3b, 0x0e, 0x29, 0x56, 0x58, 0x39, 0x91, 0x5c, 0x22, 0x88, 0xaa, - 0x7b, 0x09, 0xab, 0x75, 0xeb, 0xfe, 0x87, 0xf3, 0x6a, 0xee, 0xab, 0xf3, 0x6a, 0xee, 0xbb, 0xf3, - 0xaa, 0xf1, 0xaf, 0x8b, 0xaa, 0xf1, 0xe1, 0xa2, 0x6a, 0xfc, 0xff, 0xa2, 0x6a, 0x7c, 0x7d, 0x51, - 0x35, 0xf6, 0xf3, 0xea, 0xef, 0xef, 0x77, 0x3f, 0x04, 0x00, 0x00, 0xff, 0xff, 0xf5, 0x1b, 0xa1, - 0x1a, 0x5c, 0x0e, 0x00, 0x00, + // 1493 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x57, 0xcd, 0x6e, 0xdb, 0xc6, + 0x16, 0x16, 0x6d, 0x5a, 0x96, 0x0e, 0xe5, 0x44, 0x19, 0xe4, 0x87, 0x51, 0x72, 0x65, 0x45, 0xc9, + 0xcd, 0x75, 0xee, 0xc5, 0xb5, 0xef, 0x55, 0xdb, 0x34, 0x69, 0x1a, 0xb4, 0xfa, 0xab, 0xa3, 0xba, + 0x76, 0x84, 0xb1, 0x13, 0xa0, 0x2b, 0x61, 0x4c, 0x8e, 0x65, 0xc2, 0x14, 0xc9, 0x0e, 0x87, 0x4a, + 0xb5, 0xeb, 0x32, 0xf0, 0xa2, 0x6f, 0xe0, 0x55, 0x81, 0xbe, 0x41, 0xdf, 0x21, 0xcb, 0x2e, 0xba, + 0xe8, 0xca, 0xa8, 0xbd, 0x2d, 0x0a, 0x14, 0xe8, 0x0b, 0x14, 0x33, 0x1c, 0x49, 0x54, 0x43, 0x27, + 0x01, 0xea, 0xdd, 0xcc, 0xe1, 0xf7, 0x9d, 0x39, 0x3c, 0xe7, 0xe3, 0x39, 0x43, 0x30, 0xc2, 0x80, + 0x5a, 0xe1, 0x6a, 0xc0, 0x7c, 0xee, 0x23, 0x64, 0xfb, 0xd6, 0x01, 0x65, 0xab, 0xe1, 0x0b, 0xc2, + 0x06, 0x07, 0x0e, 0x5f, 0x1d, 0xfe, 0xbf, 0x64, 0xf0, 0x51, 0x40, 0x15, 0xa0, 0x74, 0xb9, 0xef, + 0xf7, 0x7d, 0xb9, 0x5c, 0x13, 0x2b, 0x65, 0xbd, 0x66, 0x47, 0x8c, 0x70, 0xc7, 0xf7, 0xd6, 0xc6, + 0x0b, 0xf5, 0xe0, 0x3a, 0x77, 0x06, 0x34, 0xe4, 0x64, 0x10, 0xac, 0x4d, 0x56, 0xf1, 0xa3, 0xea, + 0xb7, 0x3a, 0xe4, 0xb6, 0x7c, 0x9b, 0x6e, 0x07, 0xd4, 0x42, 0xeb, 0x60, 0x10, 0xcf, 0xf3, 0xb9, + 0xe4, 0x86, 0xa6, 0x56, 0xd1, 0x56, 0x8c, 0xda, 0xf2, 0xea, 0xeb, 0xd1, 0xac, 0xd6, 0xa7, 0xb0, + 0x86, 0xfe, 0xea, 0x78, 0x39, 0x83, 0x93, 0x4c, 0xf4, 0x3f, 0xd0, 0x99, 0xef, 0x52, 0x73, 0xae, + 0xa2, 0xad, 0x5c, 0xa8, 0xdd, 0x4c, 0xf3, 0x20, 0x0e, 0xc5, 0xbe, 0x4b, 0xb1, 0x44, 0xa2, 0x75, + 0x80, 0x01, 0x1d, 0xec, 0x52, 0x16, 0xee, 0x3b, 0x81, 0x39, 0x2f, 0x79, 0xff, 0x3a, 0x8b, 0x27, + 0x82, 0x5d, 0xdd, 0x9c, 0xc0, 0x71, 0x82, 0x8a, 0x36, 0xa1, 0x40, 0x86, 0xc4, 0x71, 0xc9, 0xae, + 0xe3, 0x3a, 0x7c, 0x64, 0xea, 0xd2, 0xd5, 0xbd, 0x37, 0xba, 0xaa, 0x27, 0x08, 0x78, 0x86, 0x5e, + 0xb5, 0x01, 0xa6, 0x07, 0xa1, 0xbb, 0xb0, 0xd8, 0x6d, 0x6f, 0xb5, 0x3a, 0x5b, 0xeb, 0xc5, 0x4c, + 0xe9, 0xfa, 0xe1, 0x51, 0xe5, 0x8a, 0xf0, 0x31, 0x05, 0x74, 0xa9, 0x67, 0x3b, 0x5e, 0x1f, 0xad, + 0x40, 0xae, 0xde, 0x6c, 0xb6, 0xbb, 0x3b, 0xed, 0x56, 0x51, 0x2b, 0x95, 0x0e, 0x8f, 0x2a, 0x57, + 0x67, 0x81, 0x75, 0xcb, 0xa2, 0x01, 0xa7, 0x76, 0x49, 0x7f, 0xf9, 0x5d, 0x39, 0x53, 0x7d, 0xa9, + 0x41, 0x21, 0x19, 0x04, 0xba, 0x0b, 0xd9, 0x7a, 0x73, 0xa7, 0xf3, 0xbc, 0x5d, 0xcc, 0x4c, 0xe9, + 0x49, 0x44, 0xdd, 0xe2, 0xce, 0x90, 0xa2, 0x3b, 0xb0, 0xd0, 0xad, 0x3f, 0xdb, 0x6e, 0x17, 0xb5, + 0x69, 0x38, 0x49, 0x58, 0x97, 0x44, 0xa1, 0x44, 0xb5, 0x70, 0xbd, 0xb3, 0x55, 0x9c, 0x4b, 0x47, + 0xb5, 0x18, 0x71, 0x3c, 0x15, 0xca, 0xc9, 0x3c, 0x18, 0xdb, 0x94, 0x0d, 0x1d, 0xeb, 0x9c, 0x35, + 0x71, 0x1f, 0x74, 0x4e, 0xc2, 0x03, 0xa9, 0x09, 0x23, 0x5d, 0x13, 0x3b, 0x24, 0x3c, 0x10, 0x87, + 0x2a, 0xba, 0xc4, 0x0b, 0x65, 0x30, 0x1a, 0xb8, 0x8e, 0x45, 0x38, 0xb5, 0xa5, 0x32, 0x8c, 0xda, + 0x3f, 0xd3, 0xd8, 0x78, 0x82, 0x52, 0xf1, 0x3f, 0xc9, 0xe0, 0x04, 0x15, 0x3d, 0x82, 0x6c, 0xdf, + 0xf5, 0x77, 0x89, 0x2b, 0x35, 0x61, 0xd4, 0x6e, 0xa5, 0x39, 0x59, 0x97, 0x88, 0xa9, 0x03, 0x45, + 0x41, 0x0f, 0x20, 0x1b, 0x05, 0x36, 0xe1, 0xd4, 0xcc, 0x4a, 0x72, 0x25, 0x8d, 0xfc, 0x4c, 0x22, + 0x9a, 0xbe, 0xb7, 0xe7, 0xf4, 0xb1, 0xc2, 0xa3, 0x0d, 0xc8, 0x79, 0x94, 0xbf, 0xf0, 0xd9, 0x41, + 0x68, 0x2e, 0x56, 0xe6, 0x57, 0x8c, 0xda, 0x7f, 0x52, 0xc5, 0x18, 0x63, 0xea, 0x9c, 0x13, 0x6b, + 0x7f, 0x40, 0x3d, 0x1e, 0xbb, 0x69, 0xcc, 0x99, 0x1a, 0x9e, 0x38, 0x40, 0x1f, 0x43, 0x8e, 0x7a, + 0x76, 0xe0, 0x3b, 0x1e, 0x37, 0x73, 0x67, 0x07, 0xd2, 0x56, 0x18, 0x91, 0x4c, 0x3c, 0x61, 0x34, + 0xb2, 0xa0, 0x0f, 0x7c, 0x9b, 0x56, 0xd7, 0xe0, 0xd2, 0x6b, 0xc9, 0x42, 0x25, 0xc8, 0xa9, 0x64, + 0xc5, 0x55, 0xd6, 0xf1, 0x64, 0x5f, 0xbd, 0x08, 0x4b, 0x33, 0x89, 0xa9, 0xfe, 0x3a, 0x0f, 0xb9, + 0x71, 0xb5, 0x50, 0x1d, 0xf2, 0x96, 0xef, 0x71, 0xe2, 0x78, 0x94, 0x29, 0x81, 0xa4, 0xe6, 0xb6, + 0x39, 0x06, 0x09, 0xd6, 0x93, 0x0c, 0x9e, 0xb2, 0xd0, 0x67, 0x90, 0x67, 0x34, 0xf4, 0x23, 0x66, + 0xd1, 0x50, 0x29, 0x64, 0x25, 0xbd, 0xc6, 0x31, 0x08, 0xd3, 0xaf, 0x22, 0x87, 0x51, 0x91, 0xa7, + 0x10, 0x4f, 0xa9, 0xe8, 0x11, 0x2c, 0x32, 0xd1, 0xdf, 0x18, 0x7f, 0x53, 0x91, 0x71, 0x0c, 0xe9, + 0xfa, 0xae, 0x63, 0x8d, 0xf0, 0x98, 0x81, 0x1e, 0x41, 0x3e, 0x70, 0x89, 0x25, 0xbd, 0x9a, 0x0b, + 0x92, 0xfe, 0x8f, 0x34, 0x7a, 0x77, 0x0c, 0xc2, 0x53, 0x3c, 0x7a, 0x08, 0xe0, 0xfa, 0xfd, 0x9e, + 0xcd, 0x9c, 0x21, 0x65, 0x4a, 0x24, 0xa5, 0x34, 0x76, 0x4b, 0x22, 0x70, 0xde, 0xf5, 0xfb, 0xf1, + 0x12, 0xad, 0xff, 0x2d, 0x85, 0x24, 0xd4, 0xb1, 0x01, 0x40, 0x26, 0x4f, 0x95, 0x3e, 0xee, 0xbd, + 0x93, 0x2b, 0x55, 0x91, 0x04, 0xbd, 0x91, 0x87, 0x45, 0x16, 0x79, 0x62, 0x5e, 0x54, 0x37, 0xe0, + 0x4a, 0x2a, 0x03, 0xd5, 0xa0, 0x30, 0xa9, 0x61, 0xcf, 0xb1, 0x65, 0xf1, 0xf3, 0x8d, 0x8b, 0xa7, + 0xc7, 0xcb, 0xc6, 0xa4, 0xd8, 0x9d, 0x16, 0x36, 0x26, 0xa0, 0x8e, 0x5d, 0xfd, 0x4d, 0x87, 0xa5, + 0x19, 0x25, 0xa0, 0xcb, 0xb0, 0xe0, 0x0c, 0x48, 0x9f, 0xc6, 0x74, 0x1c, 0x6f, 0x50, 0x1b, 0xb2, + 0x2e, 0xd9, 0xa5, 0xae, 0xd0, 0x83, 0xc8, 0xc9, 0x7f, 0xdf, 0x2a, 0xa9, 0xd5, 0x2f, 0x24, 0xbe, + 0xed, 0x71, 0x36, 0xc2, 0x8a, 0x8c, 0x4c, 0x58, 0xb4, 0xfc, 0xc1, 0x80, 0x78, 0xa2, 0x77, 0xcc, + 0xaf, 0xe4, 0xf1, 0x78, 0x8b, 0x10, 0xe8, 0x84, 0xf5, 0x43, 0x53, 0x97, 0x66, 0xb9, 0x46, 0x45, + 0x98, 0xa7, 0xde, 0xd0, 0x5c, 0x90, 0x26, 0xb1, 0x14, 0x16, 0xdb, 0x89, 0x0b, 0x9a, 0xc7, 0x62, + 0x29, 0x78, 0x51, 0x48, 0x99, 0xb9, 0x28, 0x4d, 0x72, 0x8d, 0x3e, 0x84, 0xec, 0xc0, 0x8f, 0x3c, + 0x1e, 0x9a, 0x39, 0x19, 0xec, 0xf5, 0xb4, 0x60, 0x37, 0x05, 0x42, 0xf5, 0x36, 0x05, 0x47, 0x4f, + 0xe0, 0x52, 0xc8, 0xfd, 0xa0, 0xd7, 0x67, 0xc4, 0xa2, 0xbd, 0x80, 0x32, 0xc7, 0xb7, 0xcd, 0xfc, + 0xd9, 0x2d, 0xb2, 0xa5, 0x26, 0x3b, 0xbe, 0x28, 0x68, 0xeb, 0x82, 0xd5, 0x95, 0x24, 0xd4, 0x85, + 0x42, 0x10, 0xb9, 0x6e, 0xcf, 0x0f, 0xe2, 0x4e, 0x0d, 0xd2, 0xc9, 0x3b, 0x64, 0xad, 0x1b, 0xb9, + 0xee, 0xd3, 0x98, 0x84, 0x8d, 0x60, 0xba, 0x41, 0x57, 0x21, 0xdb, 0x67, 0x7e, 0x14, 0x84, 0xa6, + 0x21, 0xf3, 0xa1, 0x76, 0xe8, 0x31, 0x2c, 0x86, 0xd4, 0x62, 0x94, 0x87, 0x66, 0x41, 0xbe, 0xed, + 0xed, 0xb4, 0x43, 0xb6, 0x25, 0x04, 0xd3, 0x3d, 0xca, 0xa8, 0x67, 0x51, 0x3c, 0xe6, 0x94, 0x1e, + 0x82, 0x91, 0x28, 0x94, 0x48, 0xf0, 0x01, 0x1d, 0xa9, 0xda, 0x8b, 0xa5, 0xd0, 0xc3, 0x90, 0xb8, + 0x51, 0x7c, 0x7d, 0xc8, 0xe3, 0x78, 0xf3, 0xd1, 0xdc, 0x03, 0xad, 0x54, 0x03, 0x23, 0x11, 0x2d, + 0xba, 0x0d, 0x4b, 0x8c, 0xf6, 0x9d, 0x90, 0xb3, 0x51, 0x8f, 0x44, 0x7c, 0xdf, 0xfc, 0x54, 0x12, + 0x0a, 0x63, 0x63, 0x3d, 0xe2, 0xfb, 0xd5, 0x3f, 0x34, 0x28, 0x24, 0xfb, 0x21, 0x6a, 0xc6, 0x5d, + 0x50, 0x9e, 0x78, 0xa1, 0xb6, 0xf6, 0xb6, 0xfe, 0x29, 0x7b, 0x8e, 0x1b, 0x89, 0x13, 0x37, 0xc5, + 0x9d, 0x45, 0x92, 0xd1, 0xfb, 0xb0, 0x10, 0xf8, 0x8c, 0x8f, 0xc5, 0x59, 0x4e, 0xed, 0x13, 0x3e, + 0x1b, 0x7f, 0xa3, 0x31, 0xb8, 0xba, 0x0f, 0x17, 0x66, 0xbd, 0xa1, 0x3b, 0x30, 0xff, 0xbc, 0xd3, + 0x2d, 0x66, 0x4a, 0x37, 0x0e, 0x8f, 0x2a, 0xd7, 0x66, 0x1f, 0x3e, 0x77, 0x18, 0x8f, 0x88, 0xdb, + 0xe9, 0xa2, 0x7f, 0xc3, 0x42, 0x6b, 0x6b, 0x1b, 0xe3, 0xa2, 0x56, 0x5a, 0x3e, 0x3c, 0xaa, 0xdc, + 0x98, 0xc5, 0x89, 0x47, 0x7e, 0xe4, 0xd9, 0xd8, 0xdf, 0x9d, 0x8c, 0xf1, 0x1f, 0xe6, 0xc0, 0x50, + 0xdf, 0xec, 0xf9, 0x8e, 0xf1, 0x4f, 0x60, 0x29, 0xee, 0x71, 0x3d, 0x4b, 0xbe, 0x9a, 0xea, 0xd6, + 0x6f, 0x6a, 0x75, 0x85, 0x98, 0x10, 0xa7, 0x02, 0xdd, 0x82, 0x82, 0x13, 0x0c, 0xef, 0xf7, 0xa8, + 0x47, 0x76, 0x5d, 0x35, 0xd1, 0x73, 0xd8, 0x10, 0xb6, 0x76, 0x6c, 0x12, 0xa3, 0xc8, 0xf1, 0x38, + 0x65, 0x9e, 0x9a, 0xd5, 0x39, 0x3c, 0xd9, 0xa3, 0xc7, 0xa0, 0x3b, 0x01, 0x19, 0xa8, 0xfe, 0x9c, + 0xfa, 0x06, 0x9d, 0x6e, 0x7d, 0x53, 0x49, 0xa4, 0x91, 0x3b, 0x3d, 0x5e, 0xd6, 0x85, 0x01, 0x4b, + 0x1a, 0x2a, 0x8f, 0x5b, 0xa4, 0x38, 0x49, 0x7e, 0xd5, 0x39, 0x9c, 0xb0, 0x54, 0xbf, 0xd7, 0xc1, + 0x68, 0xba, 0x51, 0xc8, 0x55, 0x6f, 0x3a, 0xb7, 0xbc, 0x7d, 0x09, 0x97, 0x88, 0xbc, 0xf4, 0x11, + 0x4f, 0x7c, 0xe8, 0x72, 0xf4, 0xa8, 0xdc, 0xdd, 0x49, 0x75, 0x37, 0x01, 0xc7, 0x63, 0xaa, 0x91, + 0x15, 0x3e, 0x4d, 0x0d, 0x17, 0xc9, 0x5f, 0x9e, 0xa0, 0x6d, 0x58, 0xf2, 0x99, 0xb5, 0x4f, 0x43, + 0x1e, 0xf7, 0x06, 0x75, 0x49, 0x4a, 0xbd, 0x3e, 0x3f, 0x4d, 0x02, 0xd5, 0x15, 0x23, 0x8e, 0x76, + 0xd6, 0x07, 0x7a, 0x00, 0x3a, 0x23, 0x7b, 0xe3, 0x31, 0x9a, 0xaa, 0x6f, 0x4c, 0xf6, 0xf8, 0x8c, + 0x0b, 0xc9, 0x40, 0x9f, 0x03, 0xd8, 0x4e, 0x18, 0x10, 0x6e, 0xed, 0x53, 0xa6, 0xea, 0x94, 0xfa, + 0x8a, 0xad, 0x09, 0x6a, 0xc6, 0x4b, 0x82, 0x8d, 0x36, 0x20, 0x6f, 0x91, 0xb1, 0xd2, 0xb2, 0x67, + 0xb7, 0xc5, 0x66, 0x5d, 0xb9, 0x28, 0x0a, 0x17, 0xa7, 0xc7, 0xcb, 0xb9, 0xb1, 0x05, 0xe7, 0x2c, + 0xa2, 0x94, 0xb7, 0x01, 0x4b, 0xe2, 0x46, 0xd9, 0xb3, 0xe9, 0x1e, 0x89, 0x5c, 0x1e, 0xca, 0x0e, + 0x7e, 0xc6, 0x0d, 0x4a, 0x5c, 0x6e, 0x5a, 0x0a, 0xa7, 0xe2, 0x2a, 0xf0, 0x84, 0xad, 0xfa, 0x93, + 0x06, 0x10, 0xb7, 0xb8, 0xf3, 0xd5, 0x49, 0x0d, 0x74, 0xf1, 0xa7, 0xa7, 0x7e, 0x9d, 0xca, 0x67, + 0x77, 0xd6, 0x9d, 0x51, 0x40, 0xb1, 0xc4, 0x8a, 0x89, 0x64, 0x13, 0x4e, 0x64, 0xdd, 0x0b, 0x58, + 0xae, 0xd1, 0x07, 0x90, 0xa5, 0x5f, 0x07, 0x0e, 0x1b, 0xa9, 0x0a, 0xa6, 0xde, 0x64, 0x76, 0xc6, + 0x7f, 0x83, 0x58, 0x81, 0x1b, 0x37, 0x5f, 0x9d, 0x94, 0x33, 0x3f, 0x9f, 0x94, 0x33, 0xbf, 0x9f, + 0x94, 0xb5, 0x6f, 0x4e, 0xcb, 0xda, 0xab, 0xd3, 0xb2, 0xf6, 0xe3, 0x69, 0x59, 0xfb, 0xe5, 0xb4, + 0xac, 0xed, 0x66, 0xe5, 0x4f, 0xe3, 0x7b, 0x7f, 0x06, 0x00, 0x00, 0xff, 0xff, 0x5b, 0x76, 0x48, + 0xc7, 0xae, 0x0e, 0x00, 0x00, } diff --git a/api/specs.proto b/api/specs.proto index 92c865f4c6..062d2347ab 100644 --- a/api/specs.proto +++ b/api/specs.proto @@ -5,6 +5,7 @@ package docker.swarmkit.v1; import "types.proto"; import "gogoproto/gogo.proto"; import "duration/duration.proto"; // TODO(stevvooe): use our own until we fix gogoproto/deepcopy +import "timestamp/timestamp.proto"; // TODO(stevvooe): use our own until we fix gogoproto/deepcopy // Specs are container objects for user provided input. All creations and // updates are done through spec types. As a convention, user input from a spec @@ -285,4 +286,7 @@ message SecretSpec { // Secret payload. bytes data = 3; + + // When this secret-spec should expire and no longer be available + Timestamp expiry = 4; } diff --git a/api/types.pb.go b/api/types.pb.go index 671c3ec5ed..a490f4c2c5 100644 --- a/api/types.pb.go +++ b/api/types.pb.go @@ -16,6 +16,7 @@ raft.proto health.proto resource.proto + secrets.proto It has these top-level messages: Version @@ -153,6 +154,16 @@ AttachNetworkResponse DetachNetworkRequest DetachNetworkResponse + GetSecretRequest + GetSecretResponse + ListSecretsRequest + ListSecretsResponse + CreateSecretRequest + CreateSecretResponse + UpdateSecretRequest + UpdateSecretResponse + RemoveSecretRequest + RemoveSecretResponse */ package api From 9f42341d3975ce903acbb7e5fc90f61884dd69c3 Mon Sep 17 00:00:00 2001 From: cyli Date: Wed, 7 Sep 2016 18:17:47 -0700 Subject: [PATCH 5/9] Address code review comments, and document the secret protos. Signed-off-by: cyli --- api/objects.pb.go | 479 +++++++++++++++----------------------------- api/objects.proto | 39 ++-- api/secrets.pb.go | 405 ++++++++++++++++++++++++++++++------- api/secrets.proto | 92 +++++++-- api/specs.pb.go | 226 ++++++++++----------- api/specs.proto | 8 +- api/types.pb.go | 498 +++++++++++++++++++++++----------------------- api/types.proto | 13 +- 8 files changed, 965 insertions(+), 795 deletions(-) diff --git a/api/objects.pb.go b/api/objects.pb.go index 52b8fc1885..93268dc5a9 100644 --- a/api/objects.pb.go +++ b/api/objects.pb.go @@ -15,7 +15,6 @@ import github_com_gogo_protobuf_proto "github.com/gogo/protobuf/proto" import sort "sort" import strconv "strconv" import reflect "reflect" -import github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" import io "io" @@ -234,35 +233,49 @@ func (m *Cluster) Reset() { *m = Cluster{} } func (*Cluster) ProtoMessage() {} func (*Cluster) Descriptor() ([]byte, []int) { return fileDescriptorObjects, []int{7} } -// Secret +// Secret represents a conceptual secret that should be passed to either a +// container a node. It can contain many versions of secret data, since +// conceptually secret credentials can be rotated. type Secret struct { - ID string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Meta Meta `protobuf:"bytes,2,opt,name=meta" json:"meta"` - SecretData map[string]*SecretData `protobuf:"bytes,3,rep,name=secret_data,json=secretData" json:"secret_data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value"` - // Name of the secret, so that we can use it easily for lookups + ID string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Meta Meta `protobuf:"bytes,2,opt,name=meta" json:"meta"` + // A secret has multiple versions, and each version is represented by a + // `SecretValue` object and referenced by the `SecretValue`'s ID. This + // list is kept sorted by version creation date. + SecretValues []*SecretValue `protobuf:"bytes,3,rep,name=secret_values,json=secretValues" json:"secret_values,omitempty"` + // Name of the secret, so that we can use it easily for lookups. This is + // just a copy of the data in `SecretValue.Spec.Annotations.Name`. Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` - // ID of the latest version, so that we can easily use it for lookups - LatestVersion string `protobuf:"bytes,5,opt,name=latest,proto3" json:"latest,omitempty"` } func (m *Secret) Reset() { *m = Secret{} } func (*Secret) ProtoMessage() {} func (*Secret) Descriptor() ([]byte, []int) { return fileDescriptorObjects, []int{8} } -// SecretData is represents a specific version of a secret, and is immutable -type SecretData struct { - ID string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Meta Meta `protobuf:"bytes,2,opt,name=meta" json:"meta"` - Spec SecretSpec `protobuf:"bytes,3,opt,name=spec" json:"spec"` - // Digest represents the cryptographic digest of the secret data +// SecretValue is represents a specific version of a secret, and is immutable; +// it wraps the `spec` provided by the user with useful information that is +// generated from the secret data in the `spec`, such as the digest and size +// of the secret data. +type SecretValue struct { + ID string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + CreatedAt docker_swarmkit_v1.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt" json:"created_at"` + // Spec contains the actual secret data, as well as any context around the + // secret data that the user provides. The name on the annotation of the + // spec must match the name of the `Secret` object this `SecretValue` belongs + // to. + Spec SecretValueSpec `protobuf:"bytes,3,opt,name=spec" json:"spec"` + // Digest represents the cryptographic digest of the secret data, and follows + // the form ":": for example "sha256:DEADBEEF...". It + // is calculated from the data contained in `SecretValue.Spec.data`. Digest string `protobuf:"bytes,4,opt,name=digest,proto3" json:"digest,omitempty"` - // Size represents the size of the secret - SecretSize int32 `protobuf:"varint,5,opt,name=size,proto3" json:"size,omitempty"` + // Size represents the size (number of bytes) of the secret data, and is + // calculated from the data contained in `SecretValue.Spec.data`.. + SecretSize uint32 `protobuf:"varint,5,opt,name=size,proto3" json:"size,omitempty"` } -func (m *SecretData) Reset() { *m = SecretData{} } -func (*SecretData) ProtoMessage() {} -func (*SecretData) Descriptor() ([]byte, []int) { return fileDescriptorObjects, []int{9} } +func (m *SecretValue) Reset() { *m = SecretValue{} } +func (*SecretValue) ProtoMessage() {} +func (*SecretValue) Descriptor() ([]byte, []int) { return fileDescriptorObjects, []int{9} } func init() { proto.RegisterType((*Meta)(nil), "docker.swarmkit.v1.Meta") @@ -275,7 +288,7 @@ func init() { proto.RegisterType((*Network)(nil), "docker.swarmkit.v1.Network") proto.RegisterType((*Cluster)(nil), "docker.swarmkit.v1.Cluster") proto.RegisterType((*Secret)(nil), "docker.swarmkit.v1.Secret") - proto.RegisterType((*SecretData)(nil), "docker.swarmkit.v1.SecretData") + proto.RegisterType((*SecretValue)(nil), "docker.swarmkit.v1.SecretValue") } func (m *Meta) Copy() *Meta { @@ -468,30 +481,29 @@ func (m *Secret) Copy() *Secret { } o := &Secret{ - ID: m.ID, - Meta: *m.Meta.Copy(), - Name: m.Name, - LatestVersion: m.LatestVersion, + ID: m.ID, + Meta: *m.Meta.Copy(), + Name: m.Name, } - if m.SecretData != nil { - o.SecretData = make(map[string]*SecretData) - for k, v := range m.SecretData { - o.SecretData[k] = v.Copy() + if m.SecretValues != nil { + o.SecretValues = make([]*SecretValue, 0, len(m.SecretValues)) + for _, v := range m.SecretValues { + o.SecretValues = append(o.SecretValues, v.Copy()) } } return o } -func (m *SecretData) Copy() *SecretData { +func (m *SecretValue) Copy() *SecretValue { if m == nil { return nil } - o := &SecretData{ + o := &SecretValue{ ID: m.ID, - Meta: *m.Meta.Copy(), + CreatedAt: *m.CreatedAt.Copy(), Spec: *m.Spec.Copy(), Digest: m.Digest, SecretSize: m.SecretSize, @@ -670,36 +682,25 @@ func (this *Secret) GoString() string { if this == nil { return "nil" } - s := make([]string, 0, 9) + s := make([]string, 0, 8) s = append(s, "&api.Secret{") s = append(s, "ID: "+fmt.Sprintf("%#v", this.ID)+",\n") s = append(s, "Meta: "+strings.Replace(this.Meta.GoString(), `&`, ``, 1)+",\n") - keysForSecretData := make([]string, 0, len(this.SecretData)) - for k, _ := range this.SecretData { - keysForSecretData = append(keysForSecretData, k) - } - github_com_gogo_protobuf_sortkeys.Strings(keysForSecretData) - mapStringForSecretData := "map[string]*SecretData{" - for _, k := range keysForSecretData { - mapStringForSecretData += fmt.Sprintf("%#v: %#v,", k, this.SecretData[k]) - } - mapStringForSecretData += "}" - if this.SecretData != nil { - s = append(s, "SecretData: "+mapStringForSecretData+",\n") + if this.SecretValues != nil { + s = append(s, "SecretValues: "+fmt.Sprintf("%#v", this.SecretValues)+",\n") } s = append(s, "Name: "+fmt.Sprintf("%#v", this.Name)+",\n") - s = append(s, "LatestVersion: "+fmt.Sprintf("%#v", this.LatestVersion)+",\n") s = append(s, "}") return strings.Join(s, "") } -func (this *SecretData) GoString() string { +func (this *SecretValue) GoString() string { if this == nil { return "nil" } s := make([]string, 0, 9) - s = append(s, "&api.SecretData{") + s = append(s, "&api.SecretValue{") s = append(s, "ID: "+fmt.Sprintf("%#v", this.ID)+",\n") - s = append(s, "Meta: "+strings.Replace(this.Meta.GoString(), `&`, ``, 1)+",\n") + s = append(s, "CreatedAt: "+strings.Replace(this.CreatedAt.GoString(), `&`, ``, 1)+",\n") s = append(s, "Spec: "+strings.Replace(this.Spec.GoString(), `&`, ``, 1)+",\n") s = append(s, "Digest: "+fmt.Sprintf("%#v", this.Digest)+",\n") s = append(s, "SecretSize: "+fmt.Sprintf("%#v", this.SecretSize)+",\n") @@ -1346,32 +1347,16 @@ func (m *Secret) MarshalTo(data []byte) (int, error) { return 0, err } i += n32 - if len(m.SecretData) > 0 { - for k, _ := range m.SecretData { + if len(m.SecretValues) > 0 { + for _, msg := range m.SecretValues { data[i] = 0x1a i++ - v := m.SecretData[k] - msgSize := 0 - if v != nil { - msgSize = v.Size() - msgSize += 1 + sovObjects(uint64(msgSize)) - } - mapSize := 1 + len(k) + sovObjects(uint64(len(k))) + msgSize - i = encodeVarintObjects(data, i, uint64(mapSize)) - data[i] = 0xa - i++ - i = encodeVarintObjects(data, i, uint64(len(k))) - i += copy(data[i:], k) - if v != nil { - data[i] = 0x12 - i++ - i = encodeVarintObjects(data, i, uint64(v.Size())) - n33, err := v.MarshalTo(data[i:]) - if err != nil { - return 0, err - } - i += n33 + i = encodeVarintObjects(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err } + i += n } } if len(m.Name) > 0 { @@ -1380,16 +1365,10 @@ func (m *Secret) MarshalTo(data []byte) (int, error) { i = encodeVarintObjects(data, i, uint64(len(m.Name))) i += copy(data[i:], m.Name) } - if len(m.LatestVersion) > 0 { - data[i] = 0x2a - i++ - i = encodeVarintObjects(data, i, uint64(len(m.LatestVersion))) - i += copy(data[i:], m.LatestVersion) - } return i, nil } -func (m *SecretData) Marshal() (data []byte, err error) { +func (m *SecretValue) Marshal() (data []byte, err error) { size := m.Size() data = make([]byte, size) n, err := m.MarshalTo(data) @@ -1399,7 +1378,7 @@ func (m *SecretData) Marshal() (data []byte, err error) { return data[:n], nil } -func (m *SecretData) MarshalTo(data []byte) (int, error) { +func (m *SecretValue) MarshalTo(data []byte) (int, error) { var i int _ = i var l int @@ -1412,20 +1391,20 @@ func (m *SecretData) MarshalTo(data []byte) (int, error) { } data[i] = 0x12 i++ - i = encodeVarintObjects(data, i, uint64(m.Meta.Size())) - n34, err := m.Meta.MarshalTo(data[i:]) + i = encodeVarintObjects(data, i, uint64(m.CreatedAt.Size())) + n33, err := m.CreatedAt.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n34 + i += n33 data[i] = 0x1a i++ i = encodeVarintObjects(data, i, uint64(m.Spec.Size())) - n35, err := m.Spec.MarshalTo(data[i:]) + n34, err := m.Spec.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n35 + i += n34 if len(m.Digest) > 0 { data[i] = 0x22 i++ @@ -1702,38 +1681,27 @@ func (m *Secret) Size() (n int) { } l = m.Meta.Size() n += 1 + l + sovObjects(uint64(l)) - if len(m.SecretData) > 0 { - for k, v := range m.SecretData { - _ = k - _ = v - l = 0 - if v != nil { - l = v.Size() - l += 1 + sovObjects(uint64(l)) - } - mapEntrySize := 1 + len(k) + sovObjects(uint64(len(k))) + l - n += mapEntrySize + 1 + sovObjects(uint64(mapEntrySize)) + if len(m.SecretValues) > 0 { + for _, e := range m.SecretValues { + l = e.Size() + n += 1 + l + sovObjects(uint64(l)) } } l = len(m.Name) if l > 0 { n += 1 + l + sovObjects(uint64(l)) } - l = len(m.LatestVersion) - if l > 0 { - n += 1 + l + sovObjects(uint64(l)) - } return n } -func (m *SecretData) Size() (n int) { +func (m *SecretValue) Size() (n int) { var l int _ = l l = len(m.ID) if l > 0 { n += 1 + l + sovObjects(uint64(l)) } - l = m.Meta.Size() + l = m.CreatedAt.Size() n += 1 + l + sovObjects(uint64(l)) l = m.Spec.Size() n += 1 + l + sovObjects(uint64(l)) @@ -1894,34 +1862,23 @@ func (this *Secret) String() string { if this == nil { return "nil" } - keysForSecretData := make([]string, 0, len(this.SecretData)) - for k, _ := range this.SecretData { - keysForSecretData = append(keysForSecretData, k) - } - github_com_gogo_protobuf_sortkeys.Strings(keysForSecretData) - mapStringForSecretData := "map[string]*SecretData{" - for _, k := range keysForSecretData { - mapStringForSecretData += fmt.Sprintf("%v: %v,", k, this.SecretData[k]) - } - mapStringForSecretData += "}" s := strings.Join([]string{`&Secret{`, `ID:` + fmt.Sprintf("%v", this.ID) + `,`, `Meta:` + strings.Replace(strings.Replace(this.Meta.String(), "Meta", "Meta", 1), `&`, ``, 1) + `,`, - `SecretData:` + mapStringForSecretData + `,`, + `SecretValues:` + strings.Replace(fmt.Sprintf("%v", this.SecretValues), "SecretValue", "SecretValue", 1) + `,`, `Name:` + fmt.Sprintf("%v", this.Name) + `,`, - `LatestVersion:` + fmt.Sprintf("%v", this.LatestVersion) + `,`, `}`, }, "") return s } -func (this *SecretData) String() string { +func (this *SecretValue) String() string { if this == nil { return "nil" } - s := strings.Join([]string{`&SecretData{`, + s := strings.Join([]string{`&SecretValue{`, `ID:` + fmt.Sprintf("%v", this.ID) + `,`, - `Meta:` + strings.Replace(strings.Replace(this.Meta.String(), "Meta", "Meta", 1), `&`, ``, 1) + `,`, - `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "SecretSpec", "SecretSpec", 1), `&`, ``, 1) + `,`, + `CreatedAt:` + strings.Replace(strings.Replace(this.CreatedAt.String(), "Timestamp", "docker_swarmkit_v1.Timestamp", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "SecretValueSpec", "SecretValueSpec", 1), `&`, ``, 1) + `,`, `Digest:` + fmt.Sprintf("%v", this.Digest) + `,`, `SecretSize:` + fmt.Sprintf("%v", this.SecretSize) + `,`, `}`, @@ -3948,7 +3905,7 @@ func (m *Secret) Unmarshal(data []byte) error { iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SecretData", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SecretValues", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -3972,99 +3929,9 @@ func (m *Secret) Unmarshal(data []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - var keykey uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowObjects - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - keykey |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - var stringLenmapkey uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowObjects - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - stringLenmapkey |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - intStringLenmapkey := int(stringLenmapkey) - if intStringLenmapkey < 0 { - return ErrInvalidLengthObjects - } - postStringIndexmapkey := iNdEx + intStringLenmapkey - if postStringIndexmapkey > l { - return io.ErrUnexpectedEOF - } - mapkey := string(data[iNdEx:postStringIndexmapkey]) - iNdEx = postStringIndexmapkey - if m.SecretData == nil { - m.SecretData = make(map[string]*SecretData) - } - if iNdEx < postIndex { - var valuekey uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowObjects - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - valuekey |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - var mapmsglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowObjects - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - mapmsglen |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if mapmsglen < 0 { - return ErrInvalidLengthObjects - } - postmsgIndex := iNdEx + mapmsglen - if mapmsglen < 0 { - return ErrInvalidLengthObjects - } - if postmsgIndex > l { - return io.ErrUnexpectedEOF - } - mapvalue := &SecretData{} - if err := mapvalue.Unmarshal(data[iNdEx:postmsgIndex]); err != nil { - return err - } - iNdEx = postmsgIndex - m.SecretData[mapkey] = mapvalue - } else { - var mapvalue *SecretData - m.SecretData[mapkey] = mapvalue + m.SecretValues = append(m.SecretValues, &SecretValue{}) + if err := m.SecretValues[len(m.SecretValues)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err } iNdEx = postIndex case 4: @@ -4096,35 +3963,6 @@ func (m *Secret) Unmarshal(data []byte) error { } m.Name = string(data[iNdEx:postIndex]) iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LatestVersion", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowObjects - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthObjects - } - postIndex := iNdEx + intStringLen - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.LatestVersion = string(data[iNdEx:postIndex]) - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipObjects(data[iNdEx:]) @@ -4146,7 +3984,7 @@ func (m *Secret) Unmarshal(data []byte) error { } return nil } -func (m *SecretData) Unmarshal(data []byte) error { +func (m *SecretValue) Unmarshal(data []byte) error { l := len(data) iNdEx := 0 for iNdEx < l { @@ -4169,10 +4007,10 @@ func (m *SecretData) Unmarshal(data []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: SecretData: wiretype end group for non-group") + return fmt.Errorf("proto: SecretValue: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: SecretData: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: SecretValue: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -4206,7 +4044,7 @@ func (m *SecretData) Unmarshal(data []byte) error { iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Meta", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field CreatedAt", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -4230,7 +4068,7 @@ func (m *SecretData) Unmarshal(data []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Meta.Unmarshal(data[iNdEx:postIndex]); err != nil { + if err := m.CreatedAt.Unmarshal(data[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -4307,7 +4145,7 @@ func (m *SecretData) Unmarshal(data []byte) error { } b := data[iNdEx] iNdEx++ - m.SecretSize |= (int32(b) & 0x7F) << shift + m.SecretSize |= (uint32(b) & 0x7F) << shift if b < 0x80 { break } @@ -4441,80 +4279,77 @@ var ( func init() { proto.RegisterFile("objects.proto", fileDescriptorObjects) } var fileDescriptorObjects = []byte{ - // 1190 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xbc, 0x57, 0xdf, 0x8e, 0x1b, 0xb5, - 0x17, 0xee, 0x24, 0xb3, 0x93, 0x9d, 0x93, 0xcd, 0xfe, 0x7e, 0x35, 0x55, 0x35, 0x5d, 0x96, 0x64, - 0x49, 0x05, 0x2a, 0xa8, 0xda, 0x8a, 0x52, 0x50, 0x0b, 0xad, 0x50, 0xfe, 0xac, 0x20, 0x6a, 0x0b, - 0x95, 0x5b, 0xda, 0x2b, 0x34, 0x72, 0x67, 0xdc, 0x30, 0x24, 0x19, 0x8f, 0x6c, 0x27, 0x55, 0x7a, - 0x85, 0x78, 0x00, 0x1e, 0x81, 0x57, 0xe9, 0x6d, 0x2f, 0x10, 0xe2, 0x0e, 0xae, 0x22, 0x9a, 0x3b, - 0xae, 0xe0, 0x11, 0x90, 0xff, 0x4c, 0x92, 0x25, 0x93, 0xa5, 0x95, 0xaa, 0x5e, 0xc5, 0xc7, 0xfe, - 0xbe, 0xcf, 0xe7, 0x1c, 0x1f, 0x1f, 0x4f, 0xa0, 0xc6, 0x1e, 0x7e, 0x47, 0x23, 0x29, 0x0e, 0x33, - 0xce, 0x24, 0x43, 0x28, 0x66, 0xd1, 0x80, 0xf2, 0x43, 0xf1, 0x98, 0xf0, 0xd1, 0x20, 0x91, 0x87, - 0x93, 0x0f, 0xf6, 0xaa, 0x72, 0x9a, 0x51, 0x0b, 0xd8, 0xab, 0x8a, 0x8c, 0x46, 0xb9, 0x71, 0x4e, - 0x26, 0x23, 0x2a, 0x24, 0x19, 0x65, 0x97, 0x16, 0x23, 0xbb, 0x74, 0xa6, 0xcf, 0xfa, 0x4c, 0x0f, - 0x2f, 0xa9, 0x91, 0x99, 0x6d, 0x3e, 0x75, 0xc0, 0xbd, 0x4d, 0x25, 0x41, 0x9f, 0x42, 0x65, 0x42, - 0xb9, 0x48, 0x58, 0x1a, 0x38, 0x07, 0xce, 0x85, 0xea, 0xe5, 0x37, 0x0f, 0xd7, 0x77, 0x3e, 0xbc, - 0x6f, 0x20, 0x6d, 0xf7, 0xd9, 0xac, 0x71, 0x0a, 0xe7, 0x0c, 0x74, 0x1d, 0x20, 0xe2, 0x94, 0x48, - 0x1a, 0x87, 0x44, 0x06, 0x25, 0xcd, 0x7f, 0xab, 0x88, 0x7f, 0x2f, 0x77, 0x0a, 0xfb, 0x96, 0xd0, - 0x92, 0x8a, 0x3d, 0xce, 0xe2, 0x9c, 0x5d, 0x7e, 0x21, 0xb6, 0x25, 0xb4, 0x64, 0xf3, 0xcf, 0x32, - 0xb8, 0x5f, 0xb2, 0x98, 0xa2, 0xb3, 0x50, 0x4a, 0x62, 0xed, 0xbc, 0xdf, 0xf6, 0xe6, 0xb3, 0x46, - 0xa9, 0xd7, 0xc5, 0xa5, 0x24, 0x46, 0x97, 0xc1, 0x1d, 0x51, 0x49, 0xac, 0x5b, 0x41, 0x91, 0xb0, - 0xca, 0x80, 0x8d, 0x49, 0x63, 0xd1, 0xc7, 0xe0, 0xaa, 0xb4, 0x5a, 0x67, 0xf6, 0x8b, 0x38, 0x6a, - 0xcf, 0xbb, 0x19, 0x8d, 0x72, 0x9e, 0xc2, 0xa3, 0x23, 0xa8, 0xc6, 0x54, 0x44, 0x3c, 0xc9, 0xa4, - 0xca, 0xa4, 0xab, 0xe9, 0xe7, 0x37, 0xd1, 0xbb, 0x4b, 0x28, 0x5e, 0xe5, 0xa1, 0xeb, 0xe0, 0x09, - 0x49, 0xe4, 0x58, 0x04, 0x5b, 0x5a, 0xa1, 0xbe, 0xd1, 0x01, 0x8d, 0xb2, 0x2e, 0x58, 0x0e, 0xfa, - 0x02, 0x76, 0x47, 0x24, 0x25, 0x7d, 0xca, 0x43, 0xab, 0xe2, 0x69, 0x95, 0xb7, 0x0b, 0x43, 0x37, - 0x48, 0x23, 0x84, 0x6b, 0xa3, 0x55, 0x13, 0x1d, 0x01, 0x10, 0x29, 0x49, 0xf4, 0xed, 0x88, 0xa6, - 0x32, 0xa8, 0x68, 0x95, 0x77, 0x0a, 0x7d, 0xa1, 0xf2, 0x31, 0xe3, 0x83, 0xd6, 0x02, 0x8c, 0x57, - 0x88, 0xe8, 0x73, 0xa8, 0x46, 0x94, 0xcb, 0xe4, 0x51, 0x12, 0x11, 0x49, 0x83, 0x6d, 0xad, 0xd3, - 0x28, 0xd2, 0xe9, 0x2c, 0x61, 0x36, 0xa8, 0x55, 0x66, 0xf3, 0xb7, 0x12, 0x54, 0xee, 0x52, 0x3e, - 0x49, 0xa2, 0x57, 0x7b, 0xdc, 0xd7, 0x8e, 0x1d, 0x77, 0xa1, 0x67, 0x76, 0xdb, 0xb5, 0x13, 0xbf, - 0x0a, 0xdb, 0x34, 0x8d, 0x33, 0x96, 0xa4, 0xd2, 0x1e, 0x77, 0x61, 0xb5, 0x1c, 0x59, 0x0c, 0x5e, - 0xa0, 0xd1, 0x11, 0xd4, 0x4c, 0x15, 0x87, 0xc7, 0xce, 0xfa, 0xa0, 0x88, 0xfe, 0xb5, 0x06, 0xda, - 0x43, 0xda, 0x19, 0xaf, 0x58, 0xa8, 0x0b, 0xb5, 0x8c, 0xd3, 0x49, 0xc2, 0xc6, 0x22, 0xd4, 0x41, - 0x78, 0x2f, 0x14, 0x04, 0xde, 0xc9, 0x59, 0xca, 0x6a, 0xfe, 0x54, 0x82, 0xed, 0xdc, 0x47, 0x74, - 0xc5, 0xa6, 0xc3, 0xd9, 0xec, 0x50, 0x8e, 0xd5, 0x52, 0x26, 0x13, 0x57, 0x60, 0x2b, 0x63, 0x5c, - 0x8a, 0xa0, 0x74, 0x50, 0xde, 0x54, 0xb3, 0x77, 0x18, 0x97, 0x1d, 0x96, 0x3e, 0x4a, 0xfa, 0xd8, - 0x80, 0xd1, 0x03, 0xa8, 0x4e, 0x12, 0x2e, 0xc7, 0x64, 0x18, 0x26, 0x99, 0x08, 0xca, 0x9a, 0xfb, - 0xee, 0x49, 0x5b, 0x1e, 0xde, 0x37, 0xf8, 0xde, 0x9d, 0xf6, 0xee, 0x7c, 0xd6, 0x80, 0x85, 0x29, - 0x30, 0x58, 0xa9, 0x5e, 0x26, 0xf6, 0x6e, 0x83, 0xbf, 0x58, 0x41, 0x17, 0x01, 0x52, 0x53, 0xa2, - 0xe1, 0xa2, 0x68, 0x6a, 0xf3, 0x59, 0xc3, 0xb7, 0x85, 0xdb, 0xeb, 0x62, 0xdf, 0x02, 0x7a, 0x31, - 0x42, 0xe0, 0x92, 0x38, 0xe6, 0xba, 0x84, 0x7c, 0xac, 0xc7, 0xcd, 0x9f, 0xb7, 0xc0, 0xbd, 0x47, - 0xc4, 0xe0, 0x75, 0xb7, 0x19, 0xb5, 0xe7, 0x5a, 0xd1, 0x5d, 0x04, 0x10, 0xe6, 0x28, 0x55, 0x38, - 0xee, 0x32, 0x1c, 0x7b, 0xc0, 0x2a, 0x1c, 0x0b, 0x30, 0xe1, 0x88, 0x21, 0x93, 0xba, 0xbe, 0x5c, - 0xac, 0xc7, 0xe8, 0x3c, 0x54, 0x52, 0x16, 0x6b, 0xba, 0xa7, 0xe9, 0x30, 0x9f, 0x35, 0x3c, 0xd5, - 0x52, 0x7a, 0x5d, 0xec, 0xa9, 0xa5, 0x5e, 0xac, 0xee, 0x2d, 0x49, 0x53, 0x26, 0x89, 0x6a, 0x4a, - 0xc2, 0xde, 0xff, 0xc2, 0xc2, 0x6a, 0x2d, 0x61, 0xf9, 0xbd, 0x5d, 0x61, 0xa2, 0xfb, 0xf0, 0x46, - 0xee, 0xef, 0xaa, 0xe0, 0xf6, 0xcb, 0x08, 0x22, 0xab, 0xb0, 0xb2, 0xb2, 0xd2, 0x27, 0xfd, 0xcd, - 0x7d, 0x52, 0x67, 0xb0, 0xa8, 0x4f, 0xb6, 0xa1, 0x16, 0x53, 0x91, 0x70, 0x1a, 0xeb, 0x1b, 0x48, - 0x03, 0x38, 0x70, 0x2e, 0xec, 0x6e, 0x78, 0x7a, 0xac, 0x08, 0xc5, 0x3b, 0x96, 0xa3, 0x2d, 0xd4, - 0x82, 0x6d, 0x5b, 0x37, 0x22, 0xa8, 0xea, 0xda, 0x7d, 0xc1, 0xfe, 0xb8, 0xa0, 0x1d, 0xeb, 0x20, - 0x3b, 0x2f, 0xd5, 0x41, 0xae, 0x01, 0x0c, 0x59, 0x3f, 0x8c, 0x79, 0x32, 0xa1, 0x3c, 0xa8, 0x69, - 0xee, 0x5e, 0x11, 0xb7, 0xab, 0x11, 0xd8, 0x1f, 0xb2, 0xbe, 0x19, 0x36, 0x7f, 0x70, 0xe0, 0xf4, - 0x9a, 0x53, 0xe8, 0x23, 0xa8, 0x58, 0xb7, 0x4e, 0xfa, 0x08, 0xb0, 0x3c, 0x9c, 0x63, 0xd1, 0x3e, - 0xf8, 0xea, 0x8e, 0x50, 0x21, 0xa8, 0xb9, 0xfd, 0x3e, 0x5e, 0x4e, 0xa0, 0x00, 0x2a, 0x64, 0x98, - 0x10, 0xb5, 0x56, 0xd6, 0x6b, 0xb9, 0xd9, 0xfc, 0xb1, 0x04, 0x15, 0x2b, 0xf6, 0xba, 0xdb, 0xb9, - 0xdd, 0x76, 0xed, 0x66, 0xdd, 0x80, 0x1d, 0x93, 0x4e, 0x5b, 0x12, 0xee, 0x7f, 0x26, 0xb5, 0x6a, - 0xf0, 0xa6, 0x1c, 0x6e, 0x80, 0x9b, 0x64, 0x64, 0x64, 0x5b, 0x79, 0xe1, 0xce, 0xbd, 0x3b, 0xad, - 0xdb, 0x5f, 0x65, 0xa6, 0xb2, 0xb7, 0xe7, 0xb3, 0x86, 0xab, 0x26, 0xb0, 0xa6, 0x35, 0xff, 0x2a, - 0x41, 0xa5, 0x33, 0x1c, 0x0b, 0x49, 0xf9, 0xeb, 0x4e, 0x88, 0xdd, 0x76, 0x2d, 0x21, 0x1d, 0xa8, - 0x70, 0xc6, 0x64, 0x18, 0x91, 0x93, 0x72, 0x81, 0x19, 0x93, 0x9d, 0x56, 0x7b, 0x57, 0x11, 0x55, - 0x23, 0x31, 0x36, 0xf6, 0x14, 0xb5, 0x43, 0xd0, 0x03, 0x38, 0x9b, 0xb7, 0xdf, 0x87, 0x8c, 0x49, - 0x21, 0x39, 0xc9, 0xc2, 0x01, 0x9d, 0xaa, 0x37, 0xaf, 0xbc, 0xe9, 0xcb, 0xe4, 0x28, 0x8d, 0xf8, - 0x54, 0x27, 0xea, 0x26, 0x9d, 0xe2, 0x33, 0x56, 0xa0, 0x9d, 0xf3, 0x6f, 0xd2, 0xa9, 0x40, 0x9f, - 0xc1, 0x3e, 0x5d, 0xc0, 0x94, 0x62, 0x38, 0x24, 0x23, 0xf5, 0xb0, 0x84, 0xd1, 0x90, 0x45, 0x03, - 0xdd, 0xdb, 0x5c, 0x7c, 0x8e, 0xae, 0x4a, 0xdd, 0x32, 0x88, 0x8e, 0x02, 0x34, 0x9f, 0x96, 0xc0, - 0xbb, 0x4b, 0x23, 0x4e, 0xe5, 0x2b, 0x4d, 0xf8, 0x4d, 0xa8, 0x0a, 0xad, 0x1a, 0xc6, 0x44, 0x12, - 0xfb, 0xaa, 0xbd, 0x5f, 0xfc, 0x24, 0x2b, 0x98, 0xfd, 0xe9, 0x12, 0x49, 0x8e, 0x52, 0xc9, 0xa7, - 0x18, 0xc4, 0x62, 0x42, 0xf5, 0xef, 0x94, 0x8c, 0x4c, 0x2d, 0xfa, 0x58, 0x8f, 0xd1, 0x7b, 0xe0, - 0x0d, 0x89, 0xa4, 0xc2, 0x74, 0x75, 0xbf, 0x7d, 0x7a, 0x3e, 0x6b, 0xd4, 0x6e, 0xe9, 0x19, 0xfb, - 0x8d, 0x8e, 0x2d, 0x60, 0xef, 0x1b, 0xf8, 0xdf, 0xbf, 0xd4, 0xd1, 0xff, 0xa1, 0x3c, 0xa0, 0x53, - 0x13, 0x2b, 0x56, 0x43, 0xf5, 0x78, 0x4f, 0xc8, 0x70, 0x4c, 0x6d, 0x94, 0xf5, 0xcd, 0xae, 0x2a, - 0x15, 0x6c, 0xc0, 0x9f, 0x94, 0xae, 0x3a, 0xcd, 0x5f, 0x1c, 0x80, 0xe5, 0xca, 0x2b, 0xcd, 0xe2, - 0xd5, 0x63, 0x65, 0x7b, 0x82, 0x4f, 0x6b, 0x55, 0x7b, 0x16, 0xbc, 0x38, 0xe9, 0xab, 0xf4, 0x98, - 0xa4, 0x59, 0x0b, 0x35, 0xc1, 0x15, 0xc9, 0x13, 0xaa, 0x93, 0xb6, 0x65, 0x3e, 0x1f, 0xac, 0x42, - 0xf2, 0x84, 0x62, 0xbd, 0xd6, 0xde, 0x7f, 0xf6, 0xbc, 0x7e, 0xea, 0xf7, 0xe7, 0xf5, 0x53, 0x7f, - 0x3f, 0xaf, 0x3b, 0xdf, 0xcf, 0xeb, 0xce, 0xb3, 0x79, 0xdd, 0xf9, 0x75, 0x5e, 0x77, 0xfe, 0x98, - 0xd7, 0x9d, 0x87, 0x9e, 0xfe, 0xdf, 0xf4, 0xe1, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x38, 0x42, - 0x54, 0x90, 0xa7, 0x0d, 0x00, 0x00, + // 1137 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xbc, 0x57, 0x4d, 0x6f, 0x1b, 0x45, + 0x18, 0xee, 0xda, 0x5b, 0x7f, 0xbc, 0xb6, 0x23, 0x31, 0x54, 0xd1, 0x36, 0x04, 0x3b, 0x38, 0x02, + 0xf5, 0x50, 0xb9, 0xa2, 0x14, 0x44, 0x45, 0x23, 0xe4, 0x8f, 0x08, 0xac, 0x12, 0x88, 0x26, 0x25, + 0x3d, 0xae, 0x26, 0xbb, 0x53, 0xb3, 0xd8, 0xde, 0x59, 0xcd, 0x8c, 0x5d, 0xa5, 0x27, 0xc4, 0x0f, + 0xe0, 0x27, 0xf0, 0x13, 0xf8, 0x0b, 0x5c, 0x73, 0xe0, 0xc0, 0x0d, 0x4e, 0x16, 0xb1, 0xb8, 0x70, + 0x82, 0x9f, 0x80, 0x66, 0x76, 0xd6, 0xde, 0xc8, 0xeb, 0x34, 0x91, 0xaa, 0xdc, 0x66, 0x3c, 0xcf, + 0xf3, 0xcc, 0xfb, 0xbe, 0xf3, 0xcc, 0x3b, 0x6b, 0xa8, 0xb1, 0x93, 0xef, 0xa9, 0x27, 0x45, 0x2b, + 0xe2, 0x4c, 0x32, 0x84, 0x7c, 0xe6, 0x0d, 0x29, 0x6f, 0x89, 0x97, 0x84, 0x8f, 0x87, 0x81, 0x6c, + 0x4d, 0x3f, 0xdc, 0xaa, 0xc8, 0xd3, 0x88, 0x1a, 0xc0, 0x56, 0x45, 0x44, 0xd4, 0x4b, 0x26, 0x77, + 0x65, 0x30, 0xa6, 0x42, 0x92, 0x71, 0xf4, 0x60, 0x31, 0x32, 0x4b, 0x77, 0x06, 0x6c, 0xc0, 0xf4, + 0xf0, 0x81, 0x1a, 0xc5, 0xbf, 0x36, 0x7f, 0xb5, 0xc0, 0x3e, 0xa0, 0x92, 0xa0, 0xcf, 0xa0, 0x38, + 0xa5, 0x5c, 0x04, 0x2c, 0x74, 0xac, 0x1d, 0xeb, 0x5e, 0xe5, 0xe1, 0x3b, 0xad, 0xd5, 0x9d, 0x5b, + 0xc7, 0x31, 0xa4, 0x63, 0x9f, 0xcd, 0x1a, 0xb7, 0x70, 0xc2, 0x40, 0x4f, 0x00, 0x3c, 0x4e, 0x89, + 0xa4, 0xbe, 0x4b, 0xa4, 0x93, 0xd3, 0xfc, 0x77, 0xb3, 0xf8, 0xcf, 0x92, 0xa0, 0x70, 0xd9, 0x10, + 0xda, 0x52, 0xb1, 0x27, 0x91, 0x9f, 0xb0, 0xf3, 0x57, 0x62, 0x1b, 0x42, 0x5b, 0x36, 0xff, 0xc9, + 0x83, 0xfd, 0x35, 0xf3, 0x29, 0xda, 0x84, 0x5c, 0xe0, 0xeb, 0xe0, 0xcb, 0x9d, 0xc2, 0x7c, 0xd6, + 0xc8, 0xf5, 0x7b, 0x38, 0x17, 0xf8, 0xe8, 0x21, 0xd8, 0x63, 0x2a, 0x89, 0x09, 0xcb, 0xc9, 0x12, + 0x56, 0x15, 0x30, 0x39, 0x69, 0x2c, 0xfa, 0x04, 0x6c, 0x55, 0x56, 0x13, 0xcc, 0x76, 0x16, 0x47, + 0xed, 0x79, 0x14, 0x51, 0x2f, 0xe1, 0x29, 0x3c, 0xda, 0x87, 0x8a, 0x4f, 0x85, 0xc7, 0x83, 0x48, + 0xaa, 0x4a, 0xda, 0x9a, 0xbe, 0xbb, 0x8e, 0xde, 0x5b, 0x42, 0x71, 0x9a, 0x87, 0x9e, 0x40, 0x41, + 0x48, 0x22, 0x27, 0xc2, 0xb9, 0xad, 0x15, 0xea, 0x6b, 0x03, 0xd0, 0x28, 0x13, 0x82, 0xe1, 0xa0, + 0x2f, 0x61, 0x63, 0x4c, 0x42, 0x32, 0xa0, 0xdc, 0x35, 0x2a, 0x05, 0xad, 0xf2, 0x5e, 0x66, 0xea, + 0x31, 0x32, 0x16, 0xc2, 0xb5, 0x71, 0x7a, 0x8a, 0xf6, 0x01, 0x88, 0x94, 0xc4, 0xfb, 0x6e, 0x4c, + 0x43, 0xe9, 0x14, 0xb5, 0xca, 0xfb, 0x99, 0xb1, 0x50, 0xf9, 0x92, 0xf1, 0x61, 0x7b, 0x01, 0xc6, + 0x29, 0x22, 0xfa, 0x02, 0x2a, 0x1e, 0xe5, 0x32, 0x78, 0x11, 0x78, 0x44, 0x52, 0xa7, 0xa4, 0x75, + 0x1a, 0x59, 0x3a, 0xdd, 0x25, 0xcc, 0x24, 0x95, 0x66, 0x36, 0xff, 0xc8, 0x41, 0xf1, 0x88, 0xf2, + 0x69, 0xe0, 0xbd, 0xd9, 0xe3, 0x7e, 0x7c, 0xe1, 0xb8, 0x33, 0x23, 0x33, 0xdb, 0xae, 0x9c, 0xf8, + 0xa7, 0x50, 0xa2, 0xa1, 0x1f, 0xb1, 0x20, 0x94, 0xe6, 0xb8, 0x33, 0xdd, 0xb2, 0x6f, 0x30, 0x78, + 0x81, 0x46, 0xfb, 0x50, 0x8b, 0x5d, 0xec, 0x5e, 0x38, 0xeb, 0x9d, 0x2c, 0xfa, 0xb7, 0x1a, 0x68, + 0x0e, 0xa9, 0x3a, 0x49, 0xcd, 0x50, 0x0f, 0x6a, 0x11, 0xa7, 0xd3, 0x80, 0x4d, 0x84, 0xab, 0x93, + 0x28, 0x5c, 0x29, 0x09, 0x5c, 0x4d, 0x58, 0x6a, 0xd6, 0xfc, 0x39, 0x07, 0xa5, 0x24, 0x46, 0xf4, + 0xc8, 0x94, 0xc3, 0x5a, 0x1f, 0x50, 0x82, 0xd5, 0x52, 0x71, 0x25, 0x1e, 0xc1, 0xed, 0x88, 0x71, + 0x29, 0x9c, 0xdc, 0x4e, 0x7e, 0x9d, 0x67, 0x0f, 0x19, 0x97, 0x5d, 0x16, 0xbe, 0x08, 0x06, 0x38, + 0x06, 0xa3, 0xe7, 0x50, 0x99, 0x06, 0x5c, 0x4e, 0xc8, 0xc8, 0x0d, 0x22, 0xe1, 0xe4, 0x35, 0xf7, + 0x83, 0xcb, 0xb6, 0x6c, 0x1d, 0xc7, 0xf8, 0xfe, 0x61, 0x67, 0x63, 0x3e, 0x6b, 0xc0, 0x62, 0x2a, + 0x30, 0x18, 0xa9, 0x7e, 0x24, 0xb6, 0x0e, 0xa0, 0xbc, 0x58, 0x41, 0xf7, 0x01, 0xc2, 0xd8, 0xa2, + 0xee, 0xc2, 0x34, 0xb5, 0xf9, 0xac, 0x51, 0x36, 0xc6, 0xed, 0xf7, 0x70, 0xd9, 0x00, 0xfa, 0x3e, + 0x42, 0x60, 0x13, 0xdf, 0xe7, 0xda, 0x42, 0x65, 0xac, 0xc7, 0xcd, 0xdf, 0x6e, 0x83, 0xfd, 0x8c, + 0x88, 0xe1, 0x4d, 0xb7, 0x19, 0xb5, 0xe7, 0x8a, 0xe9, 0xee, 0x03, 0x88, 0xf8, 0x28, 0x55, 0x3a, + 0xf6, 0x32, 0x1d, 0x73, 0xc0, 0x2a, 0x1d, 0x03, 0x88, 0xd3, 0x11, 0x23, 0x26, 0xb5, 0xbf, 0x6c, + 0xac, 0xc7, 0x68, 0x17, 0x8a, 0x21, 0xf3, 0x35, 0xbd, 0xa0, 0xe9, 0x30, 0x9f, 0x35, 0x0a, 0xaa, + 0xa5, 0xf4, 0x7b, 0xb8, 0xa0, 0x96, 0xfa, 0xbe, 0xba, 0xb7, 0x24, 0x0c, 0x99, 0x24, 0xaa, 0x29, + 0x09, 0x73, 0xff, 0x33, 0x8d, 0xd5, 0x5e, 0xc2, 0x92, 0x7b, 0x9b, 0x62, 0xa2, 0x63, 0x78, 0x3b, + 0x89, 0x37, 0x2d, 0x58, 0xba, 0x8e, 0x20, 0x32, 0x0a, 0xa9, 0x95, 0x54, 0x9f, 0x2c, 0xaf, 0xef, + 0x93, 0xba, 0x82, 0x59, 0x7d, 0xb2, 0x03, 0x35, 0x9f, 0x8a, 0x80, 0x53, 0x5f, 0xdf, 0x40, 0xea, + 0xc0, 0x8e, 0x75, 0x6f, 0x63, 0xcd, 0xd3, 0x63, 0x44, 0x28, 0xae, 0x1a, 0x8e, 0x9e, 0xa1, 0x36, + 0x94, 0x8c, 0x6f, 0x84, 0x53, 0xd1, 0xde, 0xbd, 0x62, 0x7f, 0x5c, 0xd0, 0x2e, 0x74, 0x90, 0xea, + 0xb5, 0x3a, 0xc8, 0x63, 0x80, 0x11, 0x1b, 0xb8, 0x3e, 0x0f, 0xa6, 0x94, 0x3b, 0x35, 0xcd, 0xdd, + 0xca, 0xe2, 0xf6, 0x34, 0x02, 0x97, 0x47, 0x6c, 0x10, 0x0f, 0x9b, 0x3f, 0x5a, 0xf0, 0xd6, 0x4a, + 0x50, 0xe8, 0x63, 0x28, 0x9a, 0xb0, 0x2e, 0xfb, 0x08, 0x30, 0x3c, 0x9c, 0x60, 0xd1, 0x36, 0x94, + 0xd5, 0x1d, 0xa1, 0x42, 0xd0, 0xf8, 0xf6, 0x97, 0xf1, 0xf2, 0x07, 0xe4, 0x40, 0x91, 0x8c, 0x02, + 0xa2, 0xd6, 0xf2, 0x7a, 0x2d, 0x99, 0x36, 0x7f, 0xca, 0x41, 0xd1, 0x88, 0xdd, 0x74, 0x3b, 0x37, + 0xdb, 0xae, 0xdc, 0xac, 0x3d, 0xa8, 0xc6, 0xe5, 0x34, 0x96, 0xb0, 0x5f, 0x5b, 0xd4, 0x4a, 0x8c, + 0x8f, 0xed, 0xb0, 0x07, 0x76, 0x10, 0x91, 0xb1, 0x69, 0xe5, 0x99, 0x3b, 0xf7, 0x0f, 0xdb, 0x07, + 0xdf, 0x44, 0xb1, 0xb3, 0x4b, 0xf3, 0x59, 0xc3, 0x56, 0x3f, 0x60, 0x4d, 0x6b, 0xfe, 0x9b, 0x83, + 0x62, 0x77, 0x34, 0x11, 0x92, 0xf2, 0x9b, 0x2e, 0x88, 0xd9, 0x76, 0xa5, 0x20, 0x5d, 0x28, 0x72, + 0xc6, 0xa4, 0xeb, 0x91, 0xcb, 0x6a, 0x81, 0x19, 0x93, 0xdd, 0x76, 0x67, 0x43, 0x11, 0x55, 0x23, + 0x89, 0xe7, 0xb8, 0xa0, 0xa8, 0x5d, 0x82, 0x9e, 0xc3, 0x66, 0xd2, 0x7e, 0x4f, 0x18, 0x93, 0x42, + 0x72, 0x12, 0xb9, 0x43, 0x7a, 0xaa, 0xde, 0xbc, 0xfc, 0xba, 0x2f, 0x93, 0xfd, 0xd0, 0xe3, 0xa7, + 0xba, 0x50, 0x4f, 0xe9, 0x29, 0xbe, 0x63, 0x04, 0x3a, 0x09, 0xff, 0x29, 0x3d, 0x15, 0xe8, 0x73, + 0xd8, 0xa6, 0x0b, 0x98, 0x52, 0x74, 0x47, 0x64, 0xac, 0x1e, 0x16, 0xd7, 0x1b, 0x31, 0x6f, 0xa8, + 0x7b, 0x9b, 0x8d, 0xef, 0xd2, 0xb4, 0xd4, 0x57, 0x31, 0xa2, 0xab, 0x00, 0xcd, 0x5f, 0x2c, 0x28, + 0x1c, 0x51, 0x8f, 0x53, 0xf9, 0x46, 0x0b, 0xde, 0x83, 0x9a, 0xd0, 0xaa, 0xee, 0x94, 0x8c, 0x26, + 0x34, 0x79, 0xd7, 0xd6, 0x3c, 0xca, 0x0a, 0x78, 0xac, 0x70, 0xb8, 0x2a, 0x96, 0x13, 0xa1, 0x1a, + 0x77, 0x48, 0xc6, 0xb1, 0x09, 0xcb, 0x58, 0x8f, 0x9b, 0x7f, 0x5b, 0x50, 0x49, 0x31, 0xd6, 0x46, + 0xdd, 0xb9, 0xf6, 0x27, 0xb9, 0x49, 0x20, 0xf5, 0x61, 0xbe, 0x77, 0xc1, 0x36, 0xbb, 0xaf, 0x09, + 0x7e, 0xc5, 0x3a, 0x9b, 0x50, 0xf0, 0x83, 0x01, 0x15, 0xd2, 0x24, 0x60, 0x66, 0xa8, 0x09, 0xb6, + 0x08, 0x5e, 0x51, 0x7d, 0x49, 0x6a, 0xf1, 0x1b, 0x1e, 0xcb, 0x1c, 0x05, 0xaf, 0x28, 0xd6, 0x6b, + 0x9d, 0xed, 0xb3, 0xf3, 0xfa, 0xad, 0x3f, 0xcf, 0xeb, 0xb7, 0xfe, 0x3b, 0xaf, 0x5b, 0x3f, 0xcc, + 0xeb, 0xd6, 0xd9, 0xbc, 0x6e, 0xfd, 0x3e, 0xaf, 0x5b, 0x7f, 0xcd, 0xeb, 0xd6, 0x49, 0x41, 0xff, + 0x79, 0xf9, 0xe8, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xcb, 0xaa, 0x47, 0xa6, 0x2c, 0x0d, 0x00, + 0x00, } diff --git a/api/objects.proto b/api/objects.proto index d8308c7c68..cb19d07251 100644 --- a/api/objects.proto +++ b/api/objects.proto @@ -227,33 +227,46 @@ message Cluster { uint64 encryption_key_lamport_clock = 6; } -// Secret +// Secret represents a conceptual secret that should be passed to either a +// container a node. It can contain many versions of secret data, since +// conceptually secret credentials can be rotated. message Secret { string id = 1 [(gogoproto.customname) = "ID"]; Meta meta = 2 [(gogoproto.nullable) = false]; - map secret_data = 3; + // A secret has multiple versions, and each version is represented by a + // `SecretValue` object and referenced by the `SecretValue`'s ID. This + // list is kept sorted by version creation date. + repeated SecretValue secret_values = 3; - // Name of the secret, so that we can use it easily for lookups + // Name of the secret, so that we can use it easily for lookups. This is + // just a copy of the data in `SecretValue.Spec.Annotations.Name`. string name = 4; - - // ID of the latest version, so that we can easily use it for lookups - string latest = 5 [(gogoproto.customname) = "LatestVersion"]; } -// SecretData is represents a specific version of a secret, and is immutable -message SecretData { +// SecretValue is represents a specific version of a secret, and is immutable; +// it wraps the `spec` provided by the user with useful information that is +// generated from the secret data in the `spec`, such as the digest and size +// of the secret data. +message SecretValue { string id = 1 [(gogoproto.customname) = "ID"]; - Meta meta = 2 [(gogoproto.nullable) = false]; + Timestamp created_at = 2 [(gogoproto.nullable) = false]; - SecretSpec spec = 3 [(gogoproto.nullable) = false]; + // Spec contains the actual secret data, as well as any context around the + // secret data that the user provides. The name on the annotation of the + // spec must match the name of the `Secret` object this `SecretValue` belongs + // to. + SecretValueSpec spec = 3 [(gogoproto.nullable) = false]; - // Digest represents the cryptographic digest of the secret data + // Digest represents the cryptographic digest of the secret data, and follows + // the form ":": for example "sha256:DEADBEEF...". It + // is calculated from the data contained in `SecretValue.Spec.data`. string digest = 4; - // Size represents the size of the secret - int32 size = 5 [(gogoproto.customname) = "SecretSize"]; + // Size represents the size (number of bytes) of the secret data, and is + // calculated from the data contained in `SecretValue.Spec.data`.. + uint32 size = 5 [(gogoproto.customname) = "SecretSize"]; } diff --git a/api/secrets.pb.go b/api/secrets.pb.go index f1b39a6ffc..30ad59e413 100644 --- a/api/secrets.pb.go +++ b/api/secrets.pb.go @@ -8,6 +8,7 @@ import proto "github.com/gogo/protobuf/proto" import fmt "fmt" import math "math" import _ "github.com/docker/swarmkit/protobuf/plugin" +import _ "github.com/gogo/protobuf/gogoproto" import strings "strings" import github_com_gogo_protobuf_proto "github.com/gogo/protobuf/proto" @@ -33,17 +34,20 @@ var _ = proto.Marshal var _ = fmt.Errorf var _ = math.Inf +// GetSecretRequest is the request to get a `Secret` object given a secret id. type GetSecretRequest struct { - // Name is name of the secret to get info for. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + SecretID string `protobuf:"bytes,1,opt,name=secret_id,json=secretId,proto3" json:"secret_id,omitempty"` } func (m *GetSecretRequest) Reset() { *m = GetSecretRequest{} } func (*GetSecretRequest) ProtoMessage() {} func (*GetSecretRequest) Descriptor() ([]byte, []int) { return fileDescriptorSecrets, []int{0} } +// GetSecretResponse contains the Secret corresponding to the id in +// `GetSecretRequest`, but the `SecretValue.Spec.Data` field in each `SecretValue` +// object in the `Secret` should be nil instead of actually containing +// the secret bytes. type GetSecretResponse struct { - // Secret is the secret corresponding to that ID, but each version in `secret.spec.data` should have its `.data` field be nil Secret *Secret `protobuf:"bytes,1,opt,name=secret" json:"secret,omitempty"` } @@ -51,6 +55,8 @@ func (m *GetSecretResponse) Reset() { *m = GetSecretResponse{ func (*GetSecretResponse) ProtoMessage() {} func (*GetSecretResponse) Descriptor() ([]byte, []int) { return fileDescriptorSecrets, []int{1} } +// ListSecretRequest is the request to list all secrets in the secret store, +// or all secrets filtered by (id or id prefix or name or name prefix) and types. type ListSecretsRequest struct { Filters *ListSecretsRequest_Filters `protobuf:"bytes,1,opt,name=filters" json:"filters,omitempty"` } @@ -60,8 +66,11 @@ func (*ListSecretsRequest) ProtoMessage() {} func (*ListSecretsRequest) Descriptor() ([]byte, []int) { return fileDescriptorSecrets, []int{2} } type ListSecretsRequest_Filters struct { - Names []string `protobuf:"bytes,1,rep,name=names" json:"names,omitempty"` - NamePrefixes []string `protobuf:"bytes,2,rep,name=name_prefixes,json=namePrefixes" json:"name_prefixes,omitempty"` + SecretIDs []string `protobuf:"bytes,1,rep,name=secret_ids,json=secretIds" json:"secret_ids,omitempty"` + IDPrefixes []string `protobuf:"bytes,2,rep,name=id_prefixes,json=idPrefixes" json:"id_prefixes,omitempty"` + Names []string `protobuf:"bytes,3,rep,name=names" json:"names,omitempty"` + NamePrefixes []string `protobuf:"bytes,4,rep,name=name_prefixes,json=namePrefixes" json:"name_prefixes,omitempty"` + Types []SecretType `protobuf:"varint,5,rep,name=types,enum=docker.swarmkit.v1.SecretType" json:"types,omitempty"` } func (m *ListSecretsRequest_Filters) Reset() { *m = ListSecretsRequest_Filters{} } @@ -70,8 +79,11 @@ func (*ListSecretsRequest_Filters) Descriptor() ([]byte, []int) { return fileDescriptorSecrets, []int{2, 0} } +// ListSecretResponse contains a list of all the secrets that match the name or +// name prefix filters provided in `ListSecretRequest`. The `SecretValue.Spec.Data` +// field in each `SecretValue` object in each `Secret` should be nil instead of +// actually containing the secret bytes. type ListSecretsResponse struct { - // Each Secret is the secret corresponding to that ID, but each version in `secret.spec.data` should have its `.data` field be nil Secrets []*Secret `protobuf:"bytes,1,rep,name=secrets" json:"secrets,omitempty"` } @@ -79,16 +91,21 @@ func (m *ListSecretsResponse) Reset() { *m = ListSecretsRespo func (*ListSecretsResponse) ProtoMessage() {} func (*ListSecretsResponse) Descriptor() ([]byte, []int) { return fileDescriptorSecrets, []int{3} } -// Note CreateSecretRequest does not contain a SecretSpec, since that can contain multiple SecretData objects, which have digests -// which should be generated by the +// CreateSecretRequest specifies a new secret (it will not update an existing +// secret) to create. type CreateSecretRequest struct { - Spec *SecretSpec `protobuf:"bytes,1,opt,name=spec" json:"spec,omitempty"` + Spec *SecretValueSpec `protobuf:"bytes,1,opt,name=spec" json:"spec,omitempty"` } func (m *CreateSecretRequest) Reset() { *m = CreateSecretRequest{} } func (*CreateSecretRequest) ProtoMessage() {} func (*CreateSecretRequest) Descriptor() ([]byte, []int) { return fileDescriptorSecrets, []int{4} } +// CreateSecretResponse contains the newly created `Secret`` corresponding to the +// name in `CreateSecretRequest`. Since it's a new secret, there should just be +// the one version, and hence only one `SecretValue` object in the `Secret`. +// The `SecretValue.Spec.Data` field should be nil instead of actually +// containing the secret bytes. type CreateSecretResponse struct { Secret *Secret `protobuf:"bytes,1,opt,name=secret" json:"secret,omitempty"` } @@ -97,14 +114,21 @@ func (m *CreateSecretResponse) Reset() { *m = CreateSecretRes func (*CreateSecretResponse) ProtoMessage() {} func (*CreateSecretResponse) Descriptor() ([]byte, []int) { return fileDescriptorSecrets, []int{5} } +// UpdateSecretRequest specifies a new secret version to add to an existing secret +// of the same name. type UpdateSecretRequest struct { - Spec *SecretSpec `protobuf:"bytes,1,opt,name=spec" json:"spec,omitempty"` + Spec *SecretValueSpec `protobuf:"bytes,1,opt,name=spec" json:"spec,omitempty"` } func (m *UpdateSecretRequest) Reset() { *m = UpdateSecretRequest{} } func (*UpdateSecretRequest) ProtoMessage() {} func (*UpdateSecretRequest) Descriptor() ([]byte, []int) { return fileDescriptorSecrets, []int{6} } +// UpdateSecretResponse contains the Secret corresponding to the name and type of +// the spec provided in `UpdateSecretRequest`, and it should be updated with an +// additional `SecretValue` object containing said spec. The +// `SecretValue.Spec.Data` field in each `SecretValue` object in the `Secret` +// object should be nil instead of actually containing the secret bytes. type UpdateSecretResponse struct { Secret *Secret `protobuf:"bytes,1,opt,name=secret" json:"secret,omitempty"` } @@ -113,17 +137,20 @@ func (m *UpdateSecretResponse) Reset() { *m = UpdateSecretRes func (*UpdateSecretResponse) ProtoMessage() {} func (*UpdateSecretResponse) Descriptor() ([]byte, []int) { return fileDescriptorSecrets, []int{7} } +// RemoveSecretRequest contains the ID and version (optional) of the secret +// that should be removed. If no version is provided, the intention is that +// all versions should be removed. type RemoveSecretRequest struct { - // Name is name of the secret to remove. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Version is the version to remove - Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` + SecretID string `protobuf:"bytes,1,opt,name=secret_id,json=secretId,proto3" json:"secret_id,omitempty"` + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` } func (m *RemoveSecretRequest) Reset() { *m = RemoveSecretRequest{} } func (*RemoveSecretRequest) ProtoMessage() {} func (*RemoveSecretRequest) Descriptor() ([]byte, []int) { return fileDescriptorSecrets, []int{8} } +// RemoveSecretResponse is an empty object indicating the successful removal of +// a secret. type RemoveSecretResponse struct { } @@ -203,7 +230,7 @@ func (m *GetSecretRequest) Copy() *GetSecretRequest { } o := &GetSecretRequest{ - Name: m.Name, + SecretID: m.SecretID, } return o @@ -240,6 +267,20 @@ func (m *ListSecretsRequest_Filters) Copy() *ListSecretsRequest_Filters { o := &ListSecretsRequest_Filters{} + if m.SecretIDs != nil { + o.SecretIDs = make([]string, 0, len(m.SecretIDs)) + for _, v := range m.SecretIDs { + o.SecretIDs = append(o.SecretIDs, v) + } + } + + if m.IDPrefixes != nil { + o.IDPrefixes = make([]string, 0, len(m.IDPrefixes)) + for _, v := range m.IDPrefixes { + o.IDPrefixes = append(o.IDPrefixes, v) + } + } + if m.Names != nil { o.Names = make([]string, 0, len(m.Names)) for _, v := range m.Names { @@ -254,6 +295,13 @@ func (m *ListSecretsRequest_Filters) Copy() *ListSecretsRequest_Filters { } } + if m.Types != nil { + o.Types = make([]SecretType, 0, len(m.Types)) + for _, v := range m.Types { + o.Types = append(o.Types, v) + } + } + return o } @@ -328,8 +376,8 @@ func (m *RemoveSecretRequest) Copy() *RemoveSecretRequest { } o := &RemoveSecretRequest{ - Name: m.Name, - Version: m.Version, + SecretID: m.SecretID, + Version: m.Version, } return o @@ -351,7 +399,7 @@ func (this *GetSecretRequest) GoString() string { } s := make([]string, 0, 5) s = append(s, "&api.GetSecretRequest{") - s = append(s, "Name: "+fmt.Sprintf("%#v", this.Name)+",\n") + s = append(s, "SecretID: "+fmt.Sprintf("%#v", this.SecretID)+",\n") s = append(s, "}") return strings.Join(s, "") } @@ -383,10 +431,13 @@ func (this *ListSecretsRequest_Filters) GoString() string { if this == nil { return "nil" } - s := make([]string, 0, 6) + s := make([]string, 0, 9) s = append(s, "&api.ListSecretsRequest_Filters{") + s = append(s, "SecretIDs: "+fmt.Sprintf("%#v", this.SecretIDs)+",\n") + s = append(s, "IDPrefixes: "+fmt.Sprintf("%#v", this.IDPrefixes)+",\n") s = append(s, "Names: "+fmt.Sprintf("%#v", this.Names)+",\n") s = append(s, "NamePrefixes: "+fmt.Sprintf("%#v", this.NamePrefixes)+",\n") + s = append(s, "Types: "+fmt.Sprintf("%#v", this.Types)+",\n") s = append(s, "}") return strings.Join(s, "") } @@ -456,7 +507,7 @@ func (this *RemoveSecretRequest) GoString() string { } s := make([]string, 0, 6) s = append(s, "&api.RemoveSecretRequest{") - s = append(s, "Name: "+fmt.Sprintf("%#v", this.Name)+",\n") + s = append(s, "SecretID: "+fmt.Sprintf("%#v", this.SecretID)+",\n") s = append(s, "Version: "+fmt.Sprintf("%#v", this.Version)+",\n") s = append(s, "}") return strings.Join(s, "") @@ -508,10 +559,43 @@ const _ = grpc.SupportPackageIsVersion3 // Client API for Secrets service type SecretsClient interface { + // GetSecret returns a `GetSecretResponse` with a `Secret` with the same + // id as `GetSecretRequest.SecretID` + // - Returns `NotFound` if the Secret with the given id is not found. + // - Returns `InvalidArgument` if the `GetSecretRequest.SecretID` is empty. + // - Returns an error if getting fails. GetSecret(ctx context.Context, in *GetSecretRequest, opts ...grpc.CallOption) (*GetSecretResponse, error) + // ListSecrets returns a `ListSecretResponse` with a list all `Secret`s being + // managed, or all secrets matching any name in `ListSecretsRequest.Names`, any + // name prefix in `ListSecretsRequest.NamePrefixes`, any id in + // `ListSecretsRequest.SecretIDs`, or any id prefix in `ListSecretsRequest.IDPrefixes`, + // filtering by type provided in `ListSecretsRequest.Type`. + // - Returns an error if listing fails. ListSecrets(ctx context.Context, in *ListSecretsRequest, opts ...grpc.CallOption) (*ListSecretsResponse, error) + // CreateSecret creates and return a `CreateSecretResponse` with a `Secret` based + // on the provided `CreateSecretRequest.SecretValueSpec`. + // - Returns `InvalidArgument` if the `CreateSecretRequest.SecretValueSpec` is malformed, + // or if the secret data is too long or contains invalid characters. + // - Returns `AlreadyExists` if the `CreateSecretRequest.SecretValueSpec.Annotation.Name` + // conflicts with an existing secret's name. + // - Returns an error if the creation fails. CreateSecret(ctx context.Context, in *CreateSecretRequest, opts ...grpc.CallOption) (*CreateSecretResponse, error) + // UpdateSecret adds the `UpdateSecretRequest.SecretValueSpec` to a `Secret`` + // as the latest version, and returns the updated `Secret` in the `UpdateSecretResponse`. + // - Returns `NotFound` if no secret with name + // `UpdateSecretRequest.SecretValueSpec.Annotations.Name` is found. + // - Returns `InvalidArgument` if the `UpdateSecretRequest.SecretValueSpec` is malformed, + // or if the secret data is too long or contains invalid characters. + // - Returns an error if the update fails. UpdateSecret(ctx context.Context, in *UpdateSecretRequest, opts ...grpc.CallOption) (*UpdateSecretResponse, error) + // RemoveSecret removes a referenced by `RemoveSecretRequest.ID`. If + // `RemoveSecretRequest.Version` is not provided, the entire secret and all its + // versions are removed. Otherwise, only the version of the secret referenced + // by `RemoveSecretRequest.Version` is removed from the secret. + // - Returns `InvalidArgument` if `RemoveSecretRequest.ID` is empty. + // - Returns `NotFound` if the a secret named `RemoveSecretRequest.ID` is not + // found or if it is found but has no version `RemoveSecretRequest.Version`. + // - Returns an error if the deletion fails. RemoveSecret(ctx context.Context, in *RemoveSecretRequest, opts ...grpc.CallOption) (*RemoveSecretResponse, error) } @@ -571,10 +655,43 @@ func (c *secretsClient) RemoveSecret(ctx context.Context, in *RemoveSecretReques // Server API for Secrets service type SecretsServer interface { + // GetSecret returns a `GetSecretResponse` with a `Secret` with the same + // id as `GetSecretRequest.SecretID` + // - Returns `NotFound` if the Secret with the given id is not found. + // - Returns `InvalidArgument` if the `GetSecretRequest.SecretID` is empty. + // - Returns an error if getting fails. GetSecret(context.Context, *GetSecretRequest) (*GetSecretResponse, error) + // ListSecrets returns a `ListSecretResponse` with a list all `Secret`s being + // managed, or all secrets matching any name in `ListSecretsRequest.Names`, any + // name prefix in `ListSecretsRequest.NamePrefixes`, any id in + // `ListSecretsRequest.SecretIDs`, or any id prefix in `ListSecretsRequest.IDPrefixes`, + // filtering by type provided in `ListSecretsRequest.Type`. + // - Returns an error if listing fails. ListSecrets(context.Context, *ListSecretsRequest) (*ListSecretsResponse, error) + // CreateSecret creates and return a `CreateSecretResponse` with a `Secret` based + // on the provided `CreateSecretRequest.SecretValueSpec`. + // - Returns `InvalidArgument` if the `CreateSecretRequest.SecretValueSpec` is malformed, + // or if the secret data is too long or contains invalid characters. + // - Returns `AlreadyExists` if the `CreateSecretRequest.SecretValueSpec.Annotation.Name` + // conflicts with an existing secret's name. + // - Returns an error if the creation fails. CreateSecret(context.Context, *CreateSecretRequest) (*CreateSecretResponse, error) + // UpdateSecret adds the `UpdateSecretRequest.SecretValueSpec` to a `Secret`` + // as the latest version, and returns the updated `Secret` in the `UpdateSecretResponse`. + // - Returns `NotFound` if no secret with name + // `UpdateSecretRequest.SecretValueSpec.Annotations.Name` is found. + // - Returns `InvalidArgument` if the `UpdateSecretRequest.SecretValueSpec` is malformed, + // or if the secret data is too long or contains invalid characters. + // - Returns an error if the update fails. UpdateSecret(context.Context, *UpdateSecretRequest) (*UpdateSecretResponse, error) + // RemoveSecret removes a referenced by `RemoveSecretRequest.ID`. If + // `RemoveSecretRequest.Version` is not provided, the entire secret and all its + // versions are removed. Otherwise, only the version of the secret referenced + // by `RemoveSecretRequest.Version` is removed from the secret. + // - Returns `InvalidArgument` if `RemoveSecretRequest.ID` is empty. + // - Returns `NotFound` if the a secret named `RemoveSecretRequest.ID` is not + // found or if it is found but has no version `RemoveSecretRequest.Version`. + // - Returns an error if the deletion fails. RemoveSecret(context.Context, *RemoveSecretRequest) (*RemoveSecretResponse, error) } @@ -716,11 +833,11 @@ func (m *GetSecretRequest) MarshalTo(data []byte) (int, error) { _ = i var l int _ = l - if len(m.Name) > 0 { + if len(m.SecretID) > 0 { data[i] = 0xa i++ - i = encodeVarintSecrets(data, i, uint64(len(m.Name))) - i += copy(data[i:], m.Name) + i = encodeVarintSecrets(data, i, uint64(len(m.SecretID))) + i += copy(data[i:], m.SecretID) } return i, nil } @@ -796,9 +913,39 @@ func (m *ListSecretsRequest_Filters) MarshalTo(data []byte) (int, error) { _ = i var l int _ = l + if len(m.SecretIDs) > 0 { + for _, s := range m.SecretIDs { + data[i] = 0xa + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + data[i] = uint8(l) + i++ + i += copy(data[i:], s) + } + } + if len(m.IDPrefixes) > 0 { + for _, s := range m.IDPrefixes { + data[i] = 0x12 + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + data[i] = uint8(l) + i++ + i += copy(data[i:], s) + } + } if len(m.Names) > 0 { for _, s := range m.Names { - data[i] = 0xa + data[i] = 0x1a i++ l = len(s) for l >= 1<<7 { @@ -813,7 +960,7 @@ func (m *ListSecretsRequest_Filters) MarshalTo(data []byte) (int, error) { } if len(m.NamePrefixes) > 0 { for _, s := range m.NamePrefixes { - data[i] = 0x12 + data[i] = 0x22 i++ l = len(s) for l >= 1<<7 { @@ -826,6 +973,13 @@ func (m *ListSecretsRequest_Filters) MarshalTo(data []byte) (int, error) { i += copy(data[i:], s) } } + if len(m.Types) > 0 { + for _, num := range m.Types { + data[i] = 0x28 + i++ + i = encodeVarintSecrets(data, i, uint64(num)) + } + } return i, nil } @@ -986,11 +1140,11 @@ func (m *RemoveSecretRequest) MarshalTo(data []byte) (int, error) { _ = i var l int _ = l - if len(m.Name) > 0 { + if len(m.SecretID) > 0 { data[i] = 0xa i++ - i = encodeVarintSecrets(data, i, uint64(len(m.Name))) - i += copy(data[i:], m.Name) + i = encodeVarintSecrets(data, i, uint64(len(m.SecretID))) + i += copy(data[i:], m.SecretID) } if len(m.Version) > 0 { data[i] = 0x12 @@ -1271,7 +1425,7 @@ func (p *raftProxySecretsServer) RemoveSecret(ctx context.Context, r *RemoveSecr func (m *GetSecretRequest) Size() (n int) { var l int _ = l - l = len(m.Name) + l = len(m.SecretID) if l > 0 { n += 1 + l + sovSecrets(uint64(l)) } @@ -1301,6 +1455,18 @@ func (m *ListSecretsRequest) Size() (n int) { func (m *ListSecretsRequest_Filters) Size() (n int) { var l int _ = l + if len(m.SecretIDs) > 0 { + for _, s := range m.SecretIDs { + l = len(s) + n += 1 + l + sovSecrets(uint64(l)) + } + } + if len(m.IDPrefixes) > 0 { + for _, s := range m.IDPrefixes { + l = len(s) + n += 1 + l + sovSecrets(uint64(l)) + } + } if len(m.Names) > 0 { for _, s := range m.Names { l = len(s) @@ -1313,6 +1479,11 @@ func (m *ListSecretsRequest_Filters) Size() (n int) { n += 1 + l + sovSecrets(uint64(l)) } } + if len(m.Types) > 0 { + for _, e := range m.Types { + n += 1 + sovSecrets(uint64(e)) + } + } return n } @@ -1371,7 +1542,7 @@ func (m *UpdateSecretResponse) Size() (n int) { func (m *RemoveSecretRequest) Size() (n int) { var l int _ = l - l = len(m.Name) + l = len(m.SecretID) if l > 0 { n += 1 + l + sovSecrets(uint64(l)) } @@ -1406,7 +1577,7 @@ func (this *GetSecretRequest) String() string { return "nil" } s := strings.Join([]string{`&GetSecretRequest{`, - `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `SecretID:` + fmt.Sprintf("%v", this.SecretID) + `,`, `}`, }, "") return s @@ -1436,8 +1607,11 @@ func (this *ListSecretsRequest_Filters) String() string { return "nil" } s := strings.Join([]string{`&ListSecretsRequest_Filters{`, + `SecretIDs:` + fmt.Sprintf("%v", this.SecretIDs) + `,`, + `IDPrefixes:` + fmt.Sprintf("%v", this.IDPrefixes) + `,`, `Names:` + fmt.Sprintf("%v", this.Names) + `,`, `NamePrefixes:` + fmt.Sprintf("%v", this.NamePrefixes) + `,`, + `Types:` + fmt.Sprintf("%v", this.Types) + `,`, `}`, }, "") return s @@ -1457,7 +1631,7 @@ func (this *CreateSecretRequest) String() string { return "nil" } s := strings.Join([]string{`&CreateSecretRequest{`, - `Spec:` + strings.Replace(fmt.Sprintf("%v", this.Spec), "SecretSpec", "SecretSpec", 1) + `,`, + `Spec:` + strings.Replace(fmt.Sprintf("%v", this.Spec), "SecretValueSpec", "SecretValueSpec", 1) + `,`, `}`, }, "") return s @@ -1477,7 +1651,7 @@ func (this *UpdateSecretRequest) String() string { return "nil" } s := strings.Join([]string{`&UpdateSecretRequest{`, - `Spec:` + strings.Replace(fmt.Sprintf("%v", this.Spec), "SecretSpec", "SecretSpec", 1) + `,`, + `Spec:` + strings.Replace(fmt.Sprintf("%v", this.Spec), "SecretValueSpec", "SecretValueSpec", 1) + `,`, `}`, }, "") return s @@ -1497,7 +1671,7 @@ func (this *RemoveSecretRequest) String() string { return "nil" } s := strings.Join([]string{`&RemoveSecretRequest{`, - `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `SecretID:` + fmt.Sprintf("%v", this.SecretID) + `,`, `Version:` + fmt.Sprintf("%v", this.Version) + `,`, `}`, }, "") @@ -1551,7 +1725,7 @@ func (m *GetSecretRequest) Unmarshal(data []byte) error { switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SecretID", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -1576,7 +1750,7 @@ func (m *GetSecretRequest) Unmarshal(data []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Name = string(data[iNdEx:postIndex]) + m.SecretID = string(data[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -1795,6 +1969,64 @@ func (m *ListSecretsRequest_Filters) Unmarshal(data []byte) error { } switch fieldNum { case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SecretIDs", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSecrets + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthSecrets + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SecretIDs = append(m.SecretIDs, string(data[iNdEx:postIndex])) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field IDPrefixes", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSecrets + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthSecrets + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.IDPrefixes = append(m.IDPrefixes, string(data[iNdEx:postIndex])) + iNdEx = postIndex + case 3: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Names", wireType) } @@ -1823,7 +2055,7 @@ func (m *ListSecretsRequest_Filters) Unmarshal(data []byte) error { } m.Names = append(m.Names, string(data[iNdEx:postIndex])) iNdEx = postIndex - case 2: + case 4: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field NamePrefixes", wireType) } @@ -1852,6 +2084,26 @@ func (m *ListSecretsRequest_Filters) Unmarshal(data []byte) error { } m.NamePrefixes = append(m.NamePrefixes, string(data[iNdEx:postIndex])) iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Types", wireType) + } + var v SecretType + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSecrets + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (SecretType(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Types = append(m.Types, v) default: iNdEx = preIndex skippy, err := skipSecrets(data[iNdEx:]) @@ -2010,7 +2262,7 @@ func (m *CreateSecretRequest) Unmarshal(data []byte) error { return io.ErrUnexpectedEOF } if m.Spec == nil { - m.Spec = &SecretSpec{} + m.Spec = &SecretValueSpec{} } if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { return err @@ -2176,7 +2428,7 @@ func (m *UpdateSecretRequest) Unmarshal(data []byte) error { return io.ErrUnexpectedEOF } if m.Spec == nil { - m.Spec = &SecretSpec{} + m.Spec = &SecretValueSpec{} } if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { return err @@ -2317,7 +2569,7 @@ func (m *RemoveSecretRequest) Unmarshal(data []byte) error { switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SecretID", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -2342,7 +2594,7 @@ func (m *RemoveSecretRequest) Unmarshal(data []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Name = string(data[iNdEx:postIndex]) + m.SecretID = string(data[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { @@ -2552,36 +2804,43 @@ var ( func init() { proto.RegisterFile("secrets.proto", fileDescriptorSecrets) } var fileDescriptorSecrets = []byte{ - // 484 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x54, 0x41, 0x6e, 0xd3, 0x40, - 0x14, 0xad, 0x43, 0xa8, 0x95, 0x9f, 0x46, 0xc0, 0x38, 0xa0, 0x68, 0x84, 0x46, 0x68, 0x80, 0x92, - 0x0d, 0x46, 0x04, 0x4e, 0x40, 0x11, 0xa5, 0xc0, 0x02, 0xb9, 0x62, 0x8d, 0x5c, 0xf7, 0xb7, 0x32, - 0x6d, 0x3c, 0x66, 0xc6, 0x09, 0x5d, 0x72, 0x0c, 0x0e, 0xc0, 0x9a, 0x73, 0x54, 0xac, 0x58, 0xb2, - 0x83, 0xf8, 0x00, 0x88, 0x23, 0x20, 0x8f, 0xc7, 0xc8, 0xa6, 0xd3, 0x18, 0x29, 0x5d, 0x65, 0xe6, - 0xe7, 0xfd, 0xf7, 0xde, 0xf7, 0x7f, 0x36, 0x0c, 0x14, 0x46, 0x12, 0x33, 0xe5, 0xa7, 0x52, 0x64, - 0x82, 0x90, 0x7d, 0x11, 0x1d, 0xa1, 0xf4, 0xd5, 0x87, 0x50, 0x4e, 0x8f, 0xe2, 0xcc, 0x9f, 0x3f, - 0xa4, 0x7d, 0x95, 0x62, 0x64, 0x00, 0x74, 0x20, 0xf6, 0xde, 0x61, 0x54, 0xe1, 0xa9, 0x97, 0x1e, - 0xcf, 0x0e, 0xe3, 0xe4, 0x41, 0xf9, 0x53, 0x16, 0xf9, 0x26, 0x5c, 0xdd, 0xc6, 0x6c, 0x57, 0x13, - 0x07, 0xf8, 0x7e, 0x86, 0x2a, 0x23, 0x04, 0xba, 0x49, 0x38, 0xc5, 0x91, 0x73, 0xcb, 0x19, 0xf7, - 0x02, 0x7d, 0xe6, 0xdb, 0x70, 0xad, 0x86, 0x53, 0xa9, 0x48, 0x14, 0x92, 0x09, 0xac, 0x97, 0x96, - 0x34, 0xb4, 0x3f, 0xa1, 0xfe, 0x59, 0x4b, 0xbe, 0xe9, 0x31, 0x48, 0xfe, 0xd9, 0x01, 0xf2, 0x2a, - 0x56, 0x86, 0x4a, 0x55, 0x9a, 0xcf, 0xc1, 0x3d, 0x88, 0x8f, 0x33, 0x94, 0xca, 0x70, 0xf9, 0x36, - 0xae, 0xb3, 0x8d, 0xfe, 0xb3, 0xb2, 0x2b, 0xa8, 0xda, 0xe9, 0x53, 0x70, 0x4d, 0x8d, 0x0c, 0xe1, - 0x72, 0x61, 0xbe, 0xa0, 0xbc, 0x34, 0xee, 0x05, 0xe5, 0x85, 0xdc, 0x86, 0x41, 0x71, 0x78, 0x9b, - 0x4a, 0x3c, 0x88, 0x4f, 0x50, 0x8d, 0x3a, 0xfa, 0xdf, 0x8d, 0xa2, 0xf8, 0xda, 0xd4, 0xf8, 0x4b, - 0xf0, 0x1a, 0x62, 0x66, 0xe2, 0xc7, 0xe0, 0x9a, 0x25, 0x68, 0xce, 0xe5, 0x23, 0x57, 0x50, 0xbe, - 0x03, 0xde, 0x96, 0xc4, 0x30, 0xc3, 0xe6, 0x73, 0x9e, 0x40, 0xb7, 0x58, 0x97, 0x19, 0x98, 0x9d, - 0xcf, 0xb4, 0x9b, 0x62, 0x14, 0x68, 0x2c, 0x7f, 0x01, 0xc3, 0x26, 0xd5, 0x0a, 0xab, 0xd8, 0x01, - 0xef, 0x4d, 0xba, 0x7f, 0x51, 0xb6, 0x9a, 0x54, 0x2b, 0xd8, 0xda, 0x02, 0x2f, 0xc0, 0xa9, 0x98, - 0x63, 0x6b, 0x2a, 0xc9, 0x08, 0xdc, 0x39, 0x4a, 0x15, 0x8b, 0x64, 0xd4, 0xd1, 0xe5, 0xea, 0xca, - 0x6f, 0xc0, 0xb0, 0x49, 0x52, 0x1a, 0x9a, 0xfc, 0xe8, 0x82, 0x6b, 0x96, 0x4a, 0x04, 0xf4, 0xfe, - 0x66, 0x9a, 0xdc, 0xb1, 0x39, 0xfb, 0xf7, 0xd5, 0xa0, 0x77, 0x5b, 0x50, 0xa5, 0x0a, 0xbf, 0xfe, - 0xf5, 0xcb, 0xaf, 0x4f, 0x9d, 0x2b, 0x30, 0xd0, 0xb0, 0xfb, 0xd3, 0x30, 0x09, 0x0f, 0x51, 0x92, - 0x19, 0xf4, 0x6b, 0xa1, 0x22, 0x9b, 0xff, 0x17, 0x71, 0x7a, 0xaf, 0x15, 0xb7, 0x5c, 0xf6, 0x04, - 0x36, 0xea, 0x99, 0x21, 0x56, 0x3e, 0x4b, 0x40, 0xe9, 0xb8, 0x1d, 0xd8, 0xaa, 0x5c, 0x8f, 0x85, - 0x5d, 0xd9, 0x92, 0x41, 0xbb, 0xb2, 0x2d, 0x61, 0x4b, 0x94, 0xeb, 0xfb, 0xb7, 0x2b, 0x5b, 0x62, - 0x66, 0x57, 0xb6, 0x45, 0xe9, 0x1c, 0xe5, 0x27, 0x37, 0x4f, 0x17, 0x6c, 0xed, 0xfb, 0x82, 0xad, - 0xfd, 0x5e, 0x30, 0xe7, 0x63, 0xce, 0x9c, 0xd3, 0x9c, 0x39, 0xdf, 0x72, 0xe6, 0xfc, 0xcc, 0x99, - 0xb3, 0xb7, 0xae, 0x3f, 0xbb, 0x8f, 0xfe, 0x04, 0x00, 0x00, 0xff, 0xff, 0x0f, 0xdc, 0x27, 0x76, - 0xcc, 0x05, 0x00, 0x00, + // 596 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x55, 0xcb, 0x6e, 0xd3, 0x4c, + 0x14, 0xae, 0x73, 0x69, 0xea, 0x93, 0xa4, 0xff, 0xcf, 0x24, 0x20, 0xcb, 0x42, 0x4e, 0xe5, 0x72, + 0x09, 0x12, 0x38, 0x22, 0x54, 0x62, 0xc5, 0x26, 0x54, 0x94, 0x00, 0xaa, 0x90, 0x0b, 0x2c, 0xd8, + 0x54, 0x6e, 0x7c, 0x1a, 0x99, 0x26, 0xb1, 0xf1, 0x38, 0xa1, 0xdd, 0xf1, 0x18, 0x3c, 0x05, 0x0f, + 0xc0, 0x13, 0x54, 0xac, 0x58, 0xc2, 0x26, 0x10, 0x3f, 0x00, 0xe2, 0x11, 0x90, 0x3d, 0xe3, 0x10, + 0xd3, 0x49, 0x82, 0x28, 0xab, 0x8c, 0x8f, 0xbf, 0xcb, 0x39, 0x3e, 0xdf, 0x28, 0x50, 0xa6, 0xd8, + 0xf1, 0x31, 0xa0, 0x86, 0xe7, 0xbb, 0x81, 0x4b, 0x88, 0xed, 0x76, 0x8e, 0xd0, 0x37, 0xe8, 0x1b, + 0xcb, 0xef, 0x1f, 0x39, 0x81, 0x31, 0xba, 0xad, 0x16, 0x83, 0x13, 0x0f, 0x39, 0x40, 0x2d, 0x52, + 0x0f, 0x3b, 0xc9, 0x43, 0xd9, 0x3d, 0x78, 0x85, 0x9d, 0x84, 0xac, 0x56, 0xbc, 0xde, 0xb0, 0xeb, + 0x0c, 0x1a, 0xec, 0x87, 0x17, 0xab, 0x5d, 0xb7, 0xeb, 0xc6, 0xc7, 0x46, 0x74, 0x62, 0x55, 0xfd, + 0x1e, 0xfc, 0xbf, 0x83, 0xc1, 0x5e, 0xec, 0x6d, 0xe2, 0xeb, 0x21, 0xd2, 0x80, 0xdc, 0x00, 0x99, + 0x35, 0xb3, 0xef, 0xd8, 0x8a, 0xb4, 0x21, 0xd5, 0xe5, 0x56, 0x29, 0x1c, 0xd7, 0xd6, 0x18, 0xaa, + 0xbd, 0x6d, 0xae, 0xb1, 0xd7, 0x6d, 0x5b, 0xdf, 0x81, 0x0b, 0x33, 0x74, 0xea, 0xb9, 0x03, 0x8a, + 0xa4, 0x09, 0xab, 0x0c, 0x10, 0x93, 0x8b, 0x4d, 0xd5, 0x38, 0x3b, 0x8c, 0xc1, 0x39, 0x1c, 0xa9, + 0x7f, 0xc8, 0x00, 0x79, 0xe2, 0x50, 0x2e, 0x45, 0x93, 0x56, 0x1e, 0x42, 0xe1, 0xd0, 0xe9, 0x05, + 0xe8, 0x53, 0xae, 0x65, 0x88, 0xb4, 0xce, 0x12, 0x8d, 0x07, 0x8c, 0x65, 0x26, 0x74, 0xf5, 0x8b, + 0x04, 0x05, 0x5e, 0x24, 0x37, 0x01, 0xa6, 0x03, 0x46, 0xc2, 0xd9, 0xba, 0xdc, 0x2a, 0x87, 0xe3, + 0x9a, 0x9c, 0x4c, 0x48, 0x4d, 0x39, 0x19, 0x91, 0x92, 0x06, 0x14, 0x1d, 0x7b, 0xdf, 0xf3, 0xf1, + 0xd0, 0x39, 0x46, 0xaa, 0x64, 0x62, 0xf8, 0x7a, 0x38, 0xae, 0x41, 0x7b, 0xfb, 0x29, 0xaf, 0x9a, + 0xe0, 0xd8, 0xc9, 0x99, 0x54, 0x21, 0x3f, 0xb0, 0xfa, 0x48, 0x95, 0x6c, 0x04, 0x35, 0xd9, 0x03, + 0xd9, 0x84, 0x72, 0x74, 0xf8, 0x25, 0x94, 0x8b, 0xdf, 0x96, 0xa2, 0xe2, 0x94, 0xba, 0x05, 0xf9, + 0x78, 0xc9, 0x4a, 0x7e, 0x23, 0x5b, 0x5f, 0x6f, 0x6a, 0xf3, 0xbf, 0xdc, 0xb3, 0x13, 0x0f, 0x4d, + 0x06, 0xd6, 0x1f, 0x43, 0x25, 0xf5, 0x09, 0xf8, 0x1e, 0xb6, 0xa0, 0xc0, 0x43, 0x15, 0xcf, 0xb8, + 0x78, 0x11, 0x09, 0x54, 0xdf, 0x85, 0xca, 0x7d, 0x1f, 0xad, 0x00, 0xd3, 0xa1, 0xb8, 0x0b, 0xb9, + 0x28, 0x71, 0x7c, 0x0d, 0x9b, 0xf3, 0x95, 0x5e, 0x58, 0xbd, 0x21, 0xee, 0x79, 0xd8, 0x31, 0x63, + 0x82, 0xfe, 0x08, 0xaa, 0x69, 0xbd, 0x73, 0xa4, 0x64, 0x17, 0x2a, 0xcf, 0x3d, 0xfb, 0x9f, 0xf6, + 0x96, 0xd6, 0x3b, 0x47, 0x6f, 0x2f, 0xa1, 0x62, 0x62, 0xdf, 0x1d, 0xe1, 0xdf, 0x5e, 0x26, 0xa2, + 0x40, 0x61, 0x84, 0x3e, 0x75, 0xdc, 0x81, 0x92, 0x89, 0x80, 0x66, 0xf2, 0xa8, 0x5f, 0x82, 0x6a, + 0x5a, 0x9b, 0xf5, 0xd9, 0xfc, 0x9a, 0x83, 0x02, 0xdf, 0x3a, 0x71, 0x41, 0x9e, 0x5e, 0x45, 0x72, + 0x45, 0xd4, 0xf0, 0xef, 0x17, 0x5d, 0xbd, 0xba, 0x04, 0xc5, 0x5c, 0xf4, 0x8b, 0x1f, 0xdf, 0x7f, + 0x7f, 0x97, 0xf9, 0x0f, 0xca, 0x31, 0xec, 0x56, 0xdf, 0x1a, 0x58, 0x5d, 0xf4, 0xc9, 0x10, 0x8a, + 0x33, 0xa9, 0x23, 0xd7, 0xfe, 0xec, 0x66, 0xaa, 0xd7, 0x97, 0xe2, 0x16, 0xdb, 0x1e, 0x43, 0x69, + 0x36, 0x4f, 0x44, 0xa8, 0x27, 0x48, 0xb0, 0x5a, 0x5f, 0x0e, 0x5c, 0xea, 0x3c, 0x9b, 0x16, 0xb1, + 0xb3, 0x20, 0x9f, 0x62, 0x67, 0x51, 0xf0, 0x16, 0x38, 0xcf, 0xee, 0x5f, 0xec, 0x2c, 0x48, 0x9f, + 0xd8, 0x59, 0x14, 0xa5, 0x39, 0xce, 0xad, 0xcb, 0xa7, 0x13, 0x6d, 0xe5, 0xf3, 0x44, 0x5b, 0xf9, + 0x31, 0xd1, 0xa4, 0xb7, 0xa1, 0x26, 0x9d, 0x86, 0x9a, 0xf4, 0x29, 0xd4, 0xa4, 0x6f, 0xa1, 0x26, + 0x1d, 0xac, 0xc6, 0x7f, 0x22, 0x77, 0x7e, 0x06, 0x00, 0x00, 0xff, 0xff, 0xb4, 0xf6, 0x3a, 0xfd, + 0xbd, 0x06, 0x00, 0x00, } diff --git a/api/secrets.proto b/api/secrets.proto index 33b2f1ddd7..a94efa7a76 100644 --- a/api/secrets.proto +++ b/api/secrets.proto @@ -2,76 +2,140 @@ syntax = "proto3"; package docker.swarmkit.v1; +import "types.proto"; import "specs.proto"; import "objects.proto"; import "plugin/plugin.proto"; +import "gogoproto/gogo.proto"; -// Secrets defines the RPC methods for controlling secrets in a cluster. +// Secrets defines the RPC methods for managing/controlling secrets in a cluster. service Secrets { + // GetSecret returns a `GetSecretResponse` with a `Secret` with the same + // id as `GetSecretRequest.SecretID` + // - Returns `NotFound` if the Secret with the given id is not found. + // - Returns `InvalidArgument` if the `GetSecretRequest.SecretID` is empty. + // - Returns an error if getting fails. rpc GetSecret(GetSecretRequest) returns (GetSecretResponse) { option (docker.protobuf.plugin.tls_authorization) = { roles: "swarm-manager" }; } + + // ListSecrets returns a `ListSecretResponse` with a list all `Secret`s being + // managed, or all secrets matching any name in `ListSecretsRequest.Names`, any + // name prefix in `ListSecretsRequest.NamePrefixes`, any id in + // `ListSecretsRequest.SecretIDs`, or any id prefix in `ListSecretsRequest.IDPrefixes`, + // filtering by type provided in `ListSecretsRequest.Type`. + // - Returns an error if listing fails. rpc ListSecrets(ListSecretsRequest) returns (ListSecretsResponse) { option (docker.protobuf.plugin.tls_authorization) = { roles: "swarm-manager" }; } + // CreateSecret creates and return a `CreateSecretResponse` with a `Secret` based + // on the provided `CreateSecretRequest.SecretValueSpec`. + // - Returns `InvalidArgument` if the `CreateSecretRequest.SecretValueSpec` is malformed, + // or if the secret data is too long or contains invalid characters. + // - Returns `AlreadyExists` if the `CreateSecretRequest.SecretValueSpec.Annotation.Name` + // conflicts with an existing secret's name. + // - Returns an error if the creation fails. rpc CreateSecret(CreateSecretRequest) returns (CreateSecretResponse) { option (docker.protobuf.plugin.tls_authorization) = { roles: "swarm-manager" }; } + + // UpdateSecret adds the `UpdateSecretRequest.SecretValueSpec` to a `Secret`` + // as the latest version, and returns the updated `Secret` in the `UpdateSecretResponse`. + // - Returns `NotFound` if no secret with name + // `UpdateSecretRequest.SecretValueSpec.Annotations.Name` is found. + // - Returns `InvalidArgument` if the `UpdateSecretRequest.SecretValueSpec` is malformed, + // or if the secret data is too long or contains invalid characters. + // - Returns an error if the update fails. rpc UpdateSecret(UpdateSecretRequest) returns (UpdateSecretResponse) { option (docker.protobuf.plugin.tls_authorization) = { roles: "swarm-manager" }; } + + // RemoveSecret removes a referenced by `RemoveSecretRequest.ID`. If + // `RemoveSecretRequest.Version` is not provided, the entire secret and all its + // versions are removed. Otherwise, only the version of the secret referenced + // by `RemoveSecretRequest.Version` is removed from the secret. + // - Returns `InvalidArgument` if `RemoveSecretRequest.ID` is empty. + // - Returns `NotFound` if the a secret named `RemoveSecretRequest.ID` is not + // found or if it is found but has no version `RemoveSecretRequest.Version`. + // - Returns an error if the deletion fails. rpc RemoveSecret(RemoveSecretRequest) returns (RemoveSecretResponse) { option (docker.protobuf.plugin.tls_authorization) = { roles: "swarm-manager" }; } } +// GetSecretRequest is the request to get a `Secret` object given a secret id. message GetSecretRequest { - // Name is name of the secret to get info for. - string name = 1; + string secret_id = 1 [(gogoproto.customname) = "SecretID"]; } +// GetSecretResponse contains the Secret corresponding to the id in +// `GetSecretRequest`, but the `SecretValue.Spec.Data` field in each `SecretValue` +// object in the `Secret` should be nil instead of actually containing +// the secret bytes. message GetSecretResponse { - // Secret is the secret corresponding to that ID, but each version in `secret.spec.data` should have its `.data` field be nil Secret secret = 1; } +// ListSecretRequest is the request to list all secrets in the secret store, +// or all secrets filtered by (id or id prefix or name or name prefix) and types. message ListSecretsRequest { message Filters { - repeated string names = 1; - repeated string name_prefixes = 2; + repeated string secret_ids = 1 [(gogoproto.customname) = "SecretIDs"]; + repeated string id_prefixes = 2 [(gogoproto.customname) = "IDPrefixes"]; + repeated string names = 3; + repeated string name_prefixes = 4; + repeated SecretType types = 5; } Filters filters = 1; } +// ListSecretResponse contains a list of all the secrets that match the name or +// name prefix filters provided in `ListSecretRequest`. The `SecretValue.Spec.Data` +// field in each `SecretValue` object in each `Secret` should be nil instead of +// actually containing the secret bytes. message ListSecretsResponse { - // Each Secret is the secret corresponding to that ID, but each version in `secret.spec.data` should have its `.data` field be nil repeated Secret secrets = 1; } -// Note CreateSecretRequest does not contain a SecretSpec, since that can contain multiple SecretData objects, which have digests -// which should be generated by the +// CreateSecretRequest specifies a new secret (it will not update an existing +// secret) to create. message CreateSecretRequest { - SecretSpec spec = 1; + SecretValueSpec spec = 1; } +// CreateSecretResponse contains the newly created `Secret`` corresponding to the +// name in `CreateSecretRequest`. Since it's a new secret, there should just be +// the one version, and hence only one `SecretValue` object in the `Secret`. +// The `SecretValue.Spec.Data` field should be nil instead of actually +// containing the secret bytes. message CreateSecretResponse { Secret secret = 1; } +// UpdateSecretRequest specifies a new secret version to add to an existing secret +// of the same name. message UpdateSecretRequest { - SecretSpec spec = 1; + SecretValueSpec spec = 1; } +// UpdateSecretResponse contains the Secret corresponding to the name and type of +// the spec provided in `UpdateSecretRequest`, and it should be updated with an +// additional `SecretValue` object containing said spec. The +// `SecretValue.Spec.Data` field in each `SecretValue` object in the `Secret` +// object should be nil instead of actually containing the secret bytes. message UpdateSecretResponse { Secret secret = 1; } +// RemoveSecretRequest contains the ID and version (optional) of the secret +// that should be removed. If no version is provided, the intention is that +// all versions should be removed. message RemoveSecretRequest { - // Name is name of the secret to remove. - string name = 1; - // Version is the version to remove + string secret_id = 1 [(gogoproto.customname) = "SecretID"]; string version = 2; } +// RemoveSecretResponse is an empty object indicating the successful removal of +// a secret. message RemoveSecretResponse {} diff --git a/api/specs.pb.go b/api/specs.pb.go index d83e0c2819..cd6865bf1a 100644 --- a/api/specs.pb.go +++ b/api/specs.pb.go @@ -474,7 +474,7 @@ type ContainerSpec struct { StopGracePeriod *docker_swarmkit_v11.Duration `protobuf:"bytes,9,opt,name=stop_grace_period,json=stopGracePeriod" json:"stop_grace_period,omitempty"` // PullOptions parameterize the behavior of image pulls. PullOptions *ContainerSpec_PullOptions `protobuf:"bytes,10,opt,name=pull_options,json=pullOptions" json:"pull_options,omitempty"` - // SecretReference contains references to zero or more secrets that + // Secrets contains references to zero or more secrets that // will be exposed to the container. Secrets []*SecretReference `protobuf:"bytes,12,rep,name=secrets" json:"secrets,omitempty"` } @@ -559,10 +559,10 @@ func (m *ClusterSpec) Reset() { *m = ClusterSpec{} } func (*ClusterSpec) ProtoMessage() {} func (*ClusterSpec) Descriptor() ([]byte, []int) { return fileDescriptorSpecs, []int{9} } -// SecretSpec specifies a user-provided secret. -type SecretSpec struct { +// SecretValueSpec specifies a user-provided secret. +type SecretValueSpec struct { Annotations Annotations `protobuf:"bytes,1,opt,name=annotations" json:"annotations"` - // Type distinguishes the different kinds of secrets in the system. + // Type distinguishes the different kinds of secrets in the system (such as container vs node vs swarm-specific) Type SecretType `protobuf:"varint,2,opt,name=type,proto3,enum=docker.swarmkit.v1.SecretType" json:"type,omitempty"` // Secret payload. Data []byte `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` @@ -570,9 +570,9 @@ type SecretSpec struct { Expiry *docker_swarmkit_v1.Timestamp `protobuf:"bytes,4,opt,name=expiry" json:"expiry,omitempty"` } -func (m *SecretSpec) Reset() { *m = SecretSpec{} } -func (*SecretSpec) ProtoMessage() {} -func (*SecretSpec) Descriptor() ([]byte, []int) { return fileDescriptorSpecs, []int{10} } +func (m *SecretValueSpec) Reset() { *m = SecretValueSpec{} } +func (*SecretValueSpec) ProtoMessage() {} +func (*SecretValueSpec) Descriptor() ([]byte, []int) { return fileDescriptorSpecs, []int{10} } func init() { proto.RegisterType((*NodeSpec)(nil), "docker.swarmkit.v1.NodeSpec") @@ -586,7 +586,7 @@ func init() { proto.RegisterType((*EndpointSpec)(nil), "docker.swarmkit.v1.EndpointSpec") proto.RegisterType((*NetworkSpec)(nil), "docker.swarmkit.v1.NetworkSpec") proto.RegisterType((*ClusterSpec)(nil), "docker.swarmkit.v1.ClusterSpec") - proto.RegisterType((*SecretSpec)(nil), "docker.swarmkit.v1.SecretSpec") + proto.RegisterType((*SecretValueSpec)(nil), "docker.swarmkit.v1.SecretValueSpec") proto.RegisterEnum("docker.swarmkit.v1.NodeSpec_Membership", NodeSpec_Membership_name, NodeSpec_Membership_value) proto.RegisterEnum("docker.swarmkit.v1.NodeSpec_Availability", NodeSpec_Availability_name, NodeSpec_Availability_value) proto.RegisterEnum("docker.swarmkit.v1.EndpointSpec_ResolutionMode", EndpointSpec_ResolutionMode_name, EndpointSpec_ResolutionMode_value) @@ -846,12 +846,12 @@ func (m *ClusterSpec) Copy() *ClusterSpec { return o } -func (m *SecretSpec) Copy() *SecretSpec { +func (m *SecretValueSpec) Copy() *SecretValueSpec { if m == nil { return nil } - o := &SecretSpec{ + o := &SecretValueSpec{ Annotations: *m.Annotations.Copy(), Type: m.Type, Data: m.Data, @@ -1084,12 +1084,12 @@ func (this *ClusterSpec) GoString() string { s = append(s, "}") return strings.Join(s, "") } -func (this *SecretSpec) GoString() string { +func (this *SecretValueSpec) GoString() string { if this == nil { return "nil" } s := make([]string, 0, 8) - s = append(s, "&api.SecretSpec{") + s = append(s, "&api.SecretValueSpec{") s = append(s, "Annotations: "+strings.Replace(this.Annotations.GoString(), `&`, ``, 1)+",\n") s = append(s, "Type: "+fmt.Sprintf("%#v", this.Type)+",\n") s = append(s, "Data: "+fmt.Sprintf("%#v", this.Data)+",\n") @@ -1805,7 +1805,7 @@ func (m *ClusterSpec) MarshalTo(data []byte) (int, error) { return i, nil } -func (m *SecretSpec) Marshal() (data []byte, err error) { +func (m *SecretValueSpec) Marshal() (data []byte, err error) { size := m.Size() data = make([]byte, size) n, err := m.MarshalTo(data) @@ -1815,7 +1815,7 @@ func (m *SecretSpec) Marshal() (data []byte, err error) { return data[:n], nil } -func (m *SecretSpec) MarshalTo(data []byte) (int, error) { +func (m *SecretValueSpec) MarshalTo(data []byte) (int, error) { var i int _ = i var l int @@ -2156,7 +2156,7 @@ func (m *ClusterSpec) Size() (n int) { return n } -func (m *SecretSpec) Size() (n int) { +func (m *SecretValueSpec) Size() (n int) { var l int _ = l l = m.Annotations.Size() @@ -2383,11 +2383,11 @@ func (this *ClusterSpec) String() string { }, "") return s } -func (this *SecretSpec) String() string { +func (this *SecretValueSpec) String() string { if this == nil { return "nil" } - s := strings.Join([]string{`&SecretSpec{`, + s := strings.Join([]string{`&SecretValueSpec{`, `Annotations:` + strings.Replace(strings.Replace(this.Annotations.String(), "Annotations", "Annotations", 1), `&`, ``, 1) + `,`, `Type:` + fmt.Sprintf("%v", this.Type) + `,`, `Data:` + fmt.Sprintf("%v", this.Data) + `,`, @@ -4429,7 +4429,7 @@ func (m *ClusterSpec) Unmarshal(data []byte) error { } return nil } -func (m *SecretSpec) Unmarshal(data []byte) error { +func (m *SecretValueSpec) Unmarshal(data []byte) error { l := len(data) iNdEx := 0 for iNdEx < l { @@ -4452,10 +4452,10 @@ func (m *SecretSpec) Unmarshal(data []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: SecretSpec: wiretype end group for non-group") + return fmt.Errorf("proto: SecretValueSpec: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: SecretSpec: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: SecretValueSpec: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -4700,99 +4700,99 @@ var ( func init() { proto.RegisterFile("specs.proto", fileDescriptorSpecs) } var fileDescriptorSpecs = []byte{ - // 1493 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x57, 0xcd, 0x6e, 0xdb, 0xc6, - 0x16, 0x16, 0x6d, 0x5a, 0x96, 0x0e, 0xe5, 0x44, 0x19, 0xe4, 0x87, 0x51, 0x72, 0x65, 0x45, 0xc9, - 0xcd, 0x75, 0xee, 0xc5, 0xb5, 0xef, 0x55, 0xdb, 0x34, 0x69, 0x1a, 0xb4, 0xfa, 0xab, 0xa3, 0xba, - 0x76, 0x84, 0xb1, 0x13, 0xa0, 0x2b, 0x61, 0x4c, 0x8e, 0x65, 0xc2, 0x14, 0xc9, 0x0e, 0x87, 0x4a, - 0xb5, 0xeb, 0x32, 0xf0, 0xa2, 0x6f, 0xe0, 0x55, 0x81, 0xbe, 0x41, 0xdf, 0x21, 0xcb, 0x2e, 0xba, - 0xe8, 0xca, 0xa8, 0xbd, 0x2d, 0x0a, 0x14, 0xe8, 0x0b, 0x14, 0x33, 0x1c, 0x49, 0x54, 0x43, 0x27, - 0x01, 0xea, 0xdd, 0xcc, 0xe1, 0xf7, 0x9d, 0x39, 0x3c, 0xe7, 0xe3, 0x39, 0x43, 0x30, 0xc2, 0x80, - 0x5a, 0xe1, 0x6a, 0xc0, 0x7c, 0xee, 0x23, 0x64, 0xfb, 0xd6, 0x01, 0x65, 0xab, 0xe1, 0x0b, 0xc2, - 0x06, 0x07, 0x0e, 0x5f, 0x1d, 0xfe, 0xbf, 0x64, 0xf0, 0x51, 0x40, 0x15, 0xa0, 0x74, 0xb9, 0xef, - 0xf7, 0x7d, 0xb9, 0x5c, 0x13, 0x2b, 0x65, 0xbd, 0x66, 0x47, 0x8c, 0x70, 0xc7, 0xf7, 0xd6, 0xc6, - 0x0b, 0xf5, 0xe0, 0x3a, 0x77, 0x06, 0x34, 0xe4, 0x64, 0x10, 0xac, 0x4d, 0x56, 0xf1, 0xa3, 0xea, - 0xb7, 0x3a, 0xe4, 0xb6, 0x7c, 0x9b, 0x6e, 0x07, 0xd4, 0x42, 0xeb, 0x60, 0x10, 0xcf, 0xf3, 0xb9, - 0xe4, 0x86, 0xa6, 0x56, 0xd1, 0x56, 0x8c, 0xda, 0xf2, 0xea, 0xeb, 0xd1, 0xac, 0xd6, 0xa7, 0xb0, - 0x86, 0xfe, 0xea, 0x78, 0x39, 0x83, 0x93, 0x4c, 0xf4, 0x3f, 0xd0, 0x99, 0xef, 0x52, 0x73, 0xae, - 0xa2, 0xad, 0x5c, 0xa8, 0xdd, 0x4c, 0xf3, 0x20, 0x0e, 0xc5, 0xbe, 0x4b, 0xb1, 0x44, 0xa2, 0x75, - 0x80, 0x01, 0x1d, 0xec, 0x52, 0x16, 0xee, 0x3b, 0x81, 0x39, 0x2f, 0x79, 0xff, 0x3a, 0x8b, 0x27, - 0x82, 0x5d, 0xdd, 0x9c, 0xc0, 0x71, 0x82, 0x8a, 0x36, 0xa1, 0x40, 0x86, 0xc4, 0x71, 0xc9, 0xae, - 0xe3, 0x3a, 0x7c, 0x64, 0xea, 0xd2, 0xd5, 0xbd, 0x37, 0xba, 0xaa, 0x27, 0x08, 0x78, 0x86, 0x5e, - 0xb5, 0x01, 0xa6, 0x07, 0xa1, 0xbb, 0xb0, 0xd8, 0x6d, 0x6f, 0xb5, 0x3a, 0x5b, 0xeb, 0xc5, 0x4c, - 0xe9, 0xfa, 0xe1, 0x51, 0xe5, 0x8a, 0xf0, 0x31, 0x05, 0x74, 0xa9, 0x67, 0x3b, 0x5e, 0x1f, 0xad, - 0x40, 0xae, 0xde, 0x6c, 0xb6, 0xbb, 0x3b, 0xed, 0x56, 0x51, 0x2b, 0x95, 0x0e, 0x8f, 0x2a, 0x57, - 0x67, 0x81, 0x75, 0xcb, 0xa2, 0x01, 0xa7, 0x76, 0x49, 0x7f, 0xf9, 0x5d, 0x39, 0x53, 0x7d, 0xa9, - 0x41, 0x21, 0x19, 0x04, 0xba, 0x0b, 0xd9, 0x7a, 0x73, 0xa7, 0xf3, 0xbc, 0x5d, 0xcc, 0x4c, 0xe9, - 0x49, 0x44, 0xdd, 0xe2, 0xce, 0x90, 0xa2, 0x3b, 0xb0, 0xd0, 0xad, 0x3f, 0xdb, 0x6e, 0x17, 0xb5, - 0x69, 0x38, 0x49, 0x58, 0x97, 0x44, 0xa1, 0x44, 0xb5, 0x70, 0xbd, 0xb3, 0x55, 0x9c, 0x4b, 0x47, - 0xb5, 0x18, 0x71, 0x3c, 0x15, 0xca, 0xc9, 0x3c, 0x18, 0xdb, 0x94, 0x0d, 0x1d, 0xeb, 0x9c, 0x35, - 0x71, 0x1f, 0x74, 0x4e, 0xc2, 0x03, 0xa9, 0x09, 0x23, 0x5d, 0x13, 0x3b, 0x24, 0x3c, 0x10, 0x87, - 0x2a, 0xba, 0xc4, 0x0b, 0x65, 0x30, 0x1a, 0xb8, 0x8e, 0x45, 0x38, 0xb5, 0xa5, 0x32, 0x8c, 0xda, - 0x3f, 0xd3, 0xd8, 0x78, 0x82, 0x52, 0xf1, 0x3f, 0xc9, 0xe0, 0x04, 0x15, 0x3d, 0x82, 0x6c, 0xdf, - 0xf5, 0x77, 0x89, 0x2b, 0x35, 0x61, 0xd4, 0x6e, 0xa5, 0x39, 0x59, 0x97, 0x88, 0xa9, 0x03, 0x45, - 0x41, 0x0f, 0x20, 0x1b, 0x05, 0x36, 0xe1, 0xd4, 0xcc, 0x4a, 0x72, 0x25, 0x8d, 0xfc, 0x4c, 0x22, - 0x9a, 0xbe, 0xb7, 0xe7, 0xf4, 0xb1, 0xc2, 0xa3, 0x0d, 0xc8, 0x79, 0x94, 0xbf, 0xf0, 0xd9, 0x41, - 0x68, 0x2e, 0x56, 0xe6, 0x57, 0x8c, 0xda, 0x7f, 0x52, 0xc5, 0x18, 0x63, 0xea, 0x9c, 0x13, 0x6b, - 0x7f, 0x40, 0x3d, 0x1e, 0xbb, 0x69, 0xcc, 0x99, 0x1a, 0x9e, 0x38, 0x40, 0x1f, 0x43, 0x8e, 0x7a, - 0x76, 0xe0, 0x3b, 0x1e, 0x37, 0x73, 0x67, 0x07, 0xd2, 0x56, 0x18, 0x91, 0x4c, 0x3c, 0x61, 0x34, - 0xb2, 0xa0, 0x0f, 0x7c, 0x9b, 0x56, 0xd7, 0xe0, 0xd2, 0x6b, 0xc9, 0x42, 0x25, 0xc8, 0xa9, 0x64, - 0xc5, 0x55, 0xd6, 0xf1, 0x64, 0x5f, 0xbd, 0x08, 0x4b, 0x33, 0x89, 0xa9, 0xfe, 0x3a, 0x0f, 0xb9, - 0x71, 0xb5, 0x50, 0x1d, 0xf2, 0x96, 0xef, 0x71, 0xe2, 0x78, 0x94, 0x29, 0x81, 0xa4, 0xe6, 0xb6, - 0x39, 0x06, 0x09, 0xd6, 0x93, 0x0c, 0x9e, 0xb2, 0xd0, 0x67, 0x90, 0x67, 0x34, 0xf4, 0x23, 0x66, - 0xd1, 0x50, 0x29, 0x64, 0x25, 0xbd, 0xc6, 0x31, 0x08, 0xd3, 0xaf, 0x22, 0x87, 0x51, 0x91, 0xa7, - 0x10, 0x4f, 0xa9, 0xe8, 0x11, 0x2c, 0x32, 0xd1, 0xdf, 0x18, 0x7f, 0x53, 0x91, 0x71, 0x0c, 0xe9, - 0xfa, 0xae, 0x63, 0x8d, 0xf0, 0x98, 0x81, 0x1e, 0x41, 0x3e, 0x70, 0x89, 0x25, 0xbd, 0x9a, 0x0b, - 0x92, 0xfe, 0x8f, 0x34, 0x7a, 0x77, 0x0c, 0xc2, 0x53, 0x3c, 0x7a, 0x08, 0xe0, 0xfa, 0xfd, 0x9e, - 0xcd, 0x9c, 0x21, 0x65, 0x4a, 0x24, 0xa5, 0x34, 0x76, 0x4b, 0x22, 0x70, 0xde, 0xf5, 0xfb, 0xf1, - 0x12, 0xad, 0xff, 0x2d, 0x85, 0x24, 0xd4, 0xb1, 0x01, 0x40, 0x26, 0x4f, 0x95, 0x3e, 0xee, 0xbd, - 0x93, 0x2b, 0x55, 0x91, 0x04, 0xbd, 0x91, 0x87, 0x45, 0x16, 0x79, 0x62, 0x5e, 0x54, 0x37, 0xe0, - 0x4a, 0x2a, 0x03, 0xd5, 0xa0, 0x30, 0xa9, 0x61, 0xcf, 0xb1, 0x65, 0xf1, 0xf3, 0x8d, 0x8b, 0xa7, - 0xc7, 0xcb, 0xc6, 0xa4, 0xd8, 0x9d, 0x16, 0x36, 0x26, 0xa0, 0x8e, 0x5d, 0xfd, 0x4d, 0x87, 0xa5, - 0x19, 0x25, 0xa0, 0xcb, 0xb0, 0xe0, 0x0c, 0x48, 0x9f, 0xc6, 0x74, 0x1c, 0x6f, 0x50, 0x1b, 0xb2, - 0x2e, 0xd9, 0xa5, 0xae, 0xd0, 0x83, 0xc8, 0xc9, 0x7f, 0xdf, 0x2a, 0xa9, 0xd5, 0x2f, 0x24, 0xbe, + // 1497 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x57, 0x4f, 0x6f, 0xdb, 0x46, + 0x16, 0x17, 0x6d, 0x5a, 0x96, 0x1e, 0xe5, 0x58, 0x19, 0xe4, 0x0f, 0xa3, 0x64, 0x65, 0x45, 0xc9, + 0x66, 0x9d, 0x5d, 0xac, 0xbd, 0xab, 0xdd, 0xcd, 0x26, 0x9b, 0x0d, 0x76, 0xf5, 0xaf, 0x8e, 0xea, + 0xda, 0x11, 0xc6, 0x8e, 0x81, 0x9e, 0x84, 0x31, 0x39, 0x96, 0x09, 0x53, 0x24, 0x3b, 0x1c, 0x2a, + 0xd5, 0xad, 0xc7, 0xc0, 0x87, 0x7e, 0x03, 0x9f, 0x0a, 0xf4, 0x1b, 0xf4, 0x3b, 0xe4, 0xd8, 0x63, + 0x7b, 0x31, 0x6a, 0x5f, 0x8b, 0x02, 0x05, 0xfa, 0x05, 0x8a, 0x19, 0x8e, 0x24, 0xaa, 0xa1, 0x93, + 0x00, 0xf5, 0x6d, 0xe6, 0xf1, 0xf7, 0x7b, 0xf3, 0xf8, 0xde, 0x8f, 0xef, 0x0d, 0xc1, 0x08, 0x03, + 0x6a, 0x85, 0x6b, 0x01, 0xf3, 0xb9, 0x8f, 0x90, 0xed, 0x5b, 0x47, 0x94, 0xad, 0x85, 0xaf, 0x08, + 0x1b, 0x1c, 0x39, 0x7c, 0x6d, 0xf8, 0xf7, 0x92, 0xc1, 0x47, 0x01, 0x55, 0x80, 0xd2, 0xb5, 0xbe, + 0xdf, 0xf7, 0xe5, 0x72, 0x5d, 0xac, 0x94, 0xf5, 0xa6, 0x1d, 0x31, 0xc2, 0x1d, 0xdf, 0x5b, 0x1f, + 0x2f, 0xd4, 0x83, 0x5b, 0xdc, 0x19, 0xd0, 0x90, 0x93, 0x41, 0xb0, 0x3e, 0x59, 0xc5, 0x8f, 0xaa, + 0x5f, 0xea, 0x90, 0xdb, 0xf6, 0x6d, 0xba, 0x13, 0x50, 0x0b, 0x6d, 0x80, 0x41, 0x3c, 0xcf, 0xe7, + 0x92, 0x1b, 0x9a, 0x5a, 0x45, 0x5b, 0x35, 0x6a, 0x2b, 0x6b, 0x6f, 0x47, 0xb3, 0x56, 0x9f, 0xc2, + 0x1a, 0xfa, 0x9b, 0xd3, 0x95, 0x0c, 0x4e, 0x32, 0xd1, 0xdf, 0x40, 0x67, 0xbe, 0x4b, 0xcd, 0xb9, + 0x8a, 0xb6, 0x7a, 0xa5, 0x76, 0x27, 0xcd, 0x83, 0x38, 0x14, 0xfb, 0x2e, 0xc5, 0x12, 0x89, 0x36, + 0x00, 0x06, 0x74, 0xb0, 0x4f, 0x59, 0x78, 0xe8, 0x04, 0xe6, 0xbc, 0xe4, 0xfd, 0xe9, 0x22, 0x9e, + 0x08, 0x76, 0x6d, 0x6b, 0x02, 0xc7, 0x09, 0x2a, 0xda, 0x82, 0x02, 0x19, 0x12, 0xc7, 0x25, 0xfb, + 0x8e, 0xeb, 0xf0, 0x91, 0xa9, 0x4b, 0x57, 0x0f, 0xdf, 0xe9, 0xaa, 0x9e, 0x20, 0xe0, 0x19, 0x7a, + 0xd5, 0x06, 0x98, 0x1e, 0x84, 0x1e, 0xc0, 0x62, 0xb7, 0xbd, 0xdd, 0xea, 0x6c, 0x6f, 0x14, 0x33, + 0xa5, 0x5b, 0xc7, 0x27, 0x95, 0xeb, 0xc2, 0xc7, 0x14, 0xd0, 0xa5, 0x9e, 0xed, 0x78, 0x7d, 0xb4, + 0x0a, 0xb9, 0x7a, 0xb3, 0xd9, 0xee, 0xee, 0xb6, 0x5b, 0x45, 0xad, 0x54, 0x3a, 0x3e, 0xa9, 0xdc, + 0x98, 0x05, 0xd6, 0x2d, 0x8b, 0x06, 0x9c, 0xda, 0x25, 0xfd, 0xf5, 0x57, 0xe5, 0x4c, 0xf5, 0xb5, + 0x06, 0x85, 0x64, 0x10, 0xe8, 0x01, 0x64, 0xeb, 0xcd, 0xdd, 0xce, 0x5e, 0xbb, 0x98, 0x99, 0xd2, + 0x93, 0x88, 0xba, 0xc5, 0x9d, 0x21, 0x45, 0xf7, 0x61, 0xa1, 0x5b, 0x7f, 0xb9, 0xd3, 0x2e, 0x6a, + 0xd3, 0x70, 0x92, 0xb0, 0x2e, 0x89, 0x42, 0x89, 0x6a, 0xe1, 0x7a, 0x67, 0xbb, 0x38, 0x97, 0x8e, + 0x6a, 0x31, 0xe2, 0x78, 0x2a, 0x94, 0xb3, 0x79, 0x30, 0x76, 0x28, 0x1b, 0x3a, 0xd6, 0x25, 0x6b, + 0xe2, 0x11, 0xe8, 0x9c, 0x84, 0x47, 0x52, 0x13, 0x46, 0xba, 0x26, 0x76, 0x49, 0x78, 0x24, 0x0e, + 0x55, 0x74, 0x89, 0x17, 0xca, 0x60, 0x34, 0x70, 0x1d, 0x8b, 0x70, 0x6a, 0x4b, 0x65, 0x18, 0xb5, + 0x3f, 0xa6, 0xb1, 0xf1, 0x04, 0xa5, 0xe2, 0x7f, 0x9e, 0xc1, 0x09, 0x2a, 0x7a, 0x0a, 0xd9, 0xbe, + 0xeb, 0xef, 0x13, 0x57, 0x6a, 0xc2, 0xa8, 0xdd, 0x4d, 0x73, 0xb2, 0x21, 0x11, 0x53, 0x07, 0x8a, + 0x82, 0x1e, 0x43, 0x36, 0x0a, 0x6c, 0xc2, 0xa9, 0x99, 0x95, 0xe4, 0x4a, 0x1a, 0xf9, 0xa5, 0x44, + 0x34, 0x7d, 0xef, 0xc0, 0xe9, 0x63, 0x85, 0x47, 0x9b, 0x90, 0xf3, 0x28, 0x7f, 0xe5, 0xb3, 0xa3, + 0xd0, 0x5c, 0xac, 0xcc, 0xaf, 0x1a, 0xb5, 0xbf, 0xa4, 0x8a, 0x31, 0xc6, 0xd4, 0x39, 0x27, 0xd6, + 0xe1, 0x80, 0x7a, 0x3c, 0x76, 0xd3, 0x98, 0x33, 0x35, 0x3c, 0x71, 0x80, 0xfe, 0x0b, 0x39, 0xea, + 0xd9, 0x81, 0xef, 0x78, 0xdc, 0xcc, 0x5d, 0x1c, 0x48, 0x5b, 0x61, 0x44, 0x32, 0xf1, 0x84, 0xd1, + 0xc8, 0x82, 0x3e, 0xf0, 0x6d, 0x5a, 0x5d, 0x87, 0xab, 0x6f, 0x25, 0x0b, 0x95, 0x20, 0xa7, 0x92, + 0x15, 0x57, 0x59, 0xc7, 0x93, 0x7d, 0x75, 0x19, 0x96, 0x66, 0x12, 0x53, 0xfd, 0x71, 0x1e, 0x72, + 0xe3, 0x6a, 0xa1, 0x3a, 0xe4, 0x2d, 0xdf, 0xe3, 0xc4, 0xf1, 0x28, 0x53, 0x02, 0x49, 0xcd, 0x6d, + 0x73, 0x0c, 0x12, 0xac, 0xe7, 0x19, 0x3c, 0x65, 0xa1, 0x8f, 0x20, 0xcf, 0x68, 0xe8, 0x47, 0xcc, + 0xa2, 0xa1, 0x52, 0xc8, 0x6a, 0x7a, 0x8d, 0x63, 0x10, 0xa6, 0x9f, 0x45, 0x0e, 0xa3, 0x22, 0x4f, + 0x21, 0x9e, 0x52, 0xd1, 0x53, 0x58, 0x64, 0xa2, 0xbf, 0x31, 0xfe, 0xae, 0x22, 0xe3, 0x18, 0xd2, + 0xf5, 0x5d, 0xc7, 0x1a, 0xe1, 0x31, 0x03, 0x3d, 0x85, 0x7c, 0xe0, 0x12, 0x4b, 0x7a, 0x35, 0x17, + 0x24, 0xfd, 0x0f, 0x69, 0xf4, 0xee, 0x18, 0x84, 0xa7, 0x78, 0xf4, 0x04, 0xc0, 0xf5, 0xfb, 0x3d, + 0x9b, 0x39, 0x43, 0xca, 0x94, 0x48, 0x4a, 0x69, 0xec, 0x96, 0x44, 0xe0, 0xbc, 0xeb, 0xf7, 0xe3, + 0x25, 0xda, 0xf8, 0x5d, 0x0a, 0x49, 0xa8, 0x63, 0x13, 0x80, 0x4c, 0x9e, 0x2a, 0x7d, 0x3c, 0xfc, + 0x20, 0x57, 0xaa, 0x22, 0x09, 0x7a, 0x23, 0x0f, 0x8b, 0x2c, 0xf2, 0xc4, 0xbc, 0xa8, 0x6e, 0xc2, + 0xf5, 0x54, 0x06, 0xaa, 0x41, 0x61, 0x52, 0xc3, 0x9e, 0x63, 0xcb, 0xe2, 0xe7, 0x1b, 0xcb, 0xe7, + 0xa7, 0x2b, 0xc6, 0xa4, 0xd8, 0x9d, 0x16, 0x36, 0x26, 0xa0, 0x8e, 0x5d, 0xfd, 0x49, 0x87, 0xa5, + 0x19, 0x25, 0xa0, 0x6b, 0xb0, 0xe0, 0x0c, 0x48, 0x9f, 0xc6, 0x74, 0x1c, 0x6f, 0x50, 0x1b, 0xb2, + 0x2e, 0xd9, 0xa7, 0xae, 0xd0, 0x83, 0xc8, 0xc9, 0x5f, 0xdf, 0x2b, 0xa9, 0xb5, 0x4f, 0x24, 0xbe, 0xed, 0x71, 0x36, 0xc2, 0x8a, 0x8c, 0x4c, 0x58, 0xb4, 0xfc, 0xc1, 0x80, 0x78, 0xa2, 0x77, 0xcc, - 0xaf, 0xe4, 0xf1, 0x78, 0x8b, 0x10, 0xe8, 0x84, 0xf5, 0x43, 0x53, 0x97, 0x66, 0xb9, 0x46, 0x45, + 0xaf, 0xe6, 0xf1, 0x78, 0x8b, 0x10, 0xe8, 0x84, 0xf5, 0x43, 0x53, 0x97, 0x66, 0xb9, 0x46, 0x45, 0x98, 0xa7, 0xde, 0xd0, 0x5c, 0x90, 0x26, 0xb1, 0x14, 0x16, 0xdb, 0x89, 0x0b, 0x9a, 0xc7, 0x62, - 0x29, 0x78, 0x51, 0x48, 0x99, 0xb9, 0x28, 0x4d, 0x72, 0x8d, 0x3e, 0x84, 0xec, 0xc0, 0x8f, 0x3c, - 0x1e, 0x9a, 0x39, 0x19, 0xec, 0xf5, 0xb4, 0x60, 0x37, 0x05, 0x42, 0xf5, 0x36, 0x05, 0x47, 0x4f, - 0xe0, 0x52, 0xc8, 0xfd, 0xa0, 0xd7, 0x67, 0xc4, 0xa2, 0xbd, 0x80, 0x32, 0xc7, 0xb7, 0xcd, 0xfc, - 0xd9, 0x2d, 0xb2, 0xa5, 0x26, 0x3b, 0xbe, 0x28, 0x68, 0xeb, 0x82, 0xd5, 0x95, 0x24, 0xd4, 0x85, - 0x42, 0x10, 0xb9, 0x6e, 0xcf, 0x0f, 0xe2, 0x4e, 0x0d, 0xd2, 0xc9, 0x3b, 0x64, 0xad, 0x1b, 0xb9, - 0xee, 0xd3, 0x98, 0x84, 0x8d, 0x60, 0xba, 0x41, 0x57, 0x21, 0xdb, 0x67, 0x7e, 0x14, 0x84, 0xa6, - 0x21, 0xf3, 0xa1, 0x76, 0xe8, 0x31, 0x2c, 0x86, 0xd4, 0x62, 0x94, 0x87, 0x66, 0x41, 0xbe, 0xed, - 0xed, 0xb4, 0x43, 0xb6, 0x25, 0x04, 0xd3, 0x3d, 0xca, 0xa8, 0x67, 0x51, 0x3c, 0xe6, 0x94, 0x1e, - 0x82, 0x91, 0x28, 0x94, 0x48, 0xf0, 0x01, 0x1d, 0xa9, 0xda, 0x8b, 0xa5, 0xd0, 0xc3, 0x90, 0xb8, - 0x51, 0x7c, 0x7d, 0xc8, 0xe3, 0x78, 0xf3, 0xd1, 0xdc, 0x03, 0xad, 0x54, 0x03, 0x23, 0x11, 0x2d, - 0xba, 0x0d, 0x4b, 0x8c, 0xf6, 0x9d, 0x90, 0xb3, 0x51, 0x8f, 0x44, 0x7c, 0xdf, 0xfc, 0x54, 0x12, - 0x0a, 0x63, 0x63, 0x3d, 0xe2, 0xfb, 0xd5, 0x3f, 0x34, 0x28, 0x24, 0xfb, 0x21, 0x6a, 0xc6, 0x5d, - 0x50, 0x9e, 0x78, 0xa1, 0xb6, 0xf6, 0xb6, 0xfe, 0x29, 0x7b, 0x8e, 0x1b, 0x89, 0x13, 0x37, 0xc5, - 0x9d, 0x45, 0x92, 0xd1, 0xfb, 0xb0, 0x10, 0xf8, 0x8c, 0x8f, 0xc5, 0x59, 0x4e, 0xed, 0x13, 0x3e, - 0x1b, 0x7f, 0xa3, 0x31, 0xb8, 0xba, 0x0f, 0x17, 0x66, 0xbd, 0xa1, 0x3b, 0x30, 0xff, 0xbc, 0xd3, - 0x2d, 0x66, 0x4a, 0x37, 0x0e, 0x8f, 0x2a, 0xd7, 0x66, 0x1f, 0x3e, 0x77, 0x18, 0x8f, 0x88, 0xdb, - 0xe9, 0xa2, 0x7f, 0xc3, 0x42, 0x6b, 0x6b, 0x1b, 0xe3, 0xa2, 0x56, 0x5a, 0x3e, 0x3c, 0xaa, 0xdc, - 0x98, 0xc5, 0x89, 0x47, 0x7e, 0xe4, 0xd9, 0xd8, 0xdf, 0x9d, 0x8c, 0xf1, 0x1f, 0xe6, 0xc0, 0x50, - 0xdf, 0xec, 0xf9, 0x8e, 0xf1, 0x4f, 0x60, 0x29, 0xee, 0x71, 0x3d, 0x4b, 0xbe, 0x9a, 0xea, 0xd6, - 0x6f, 0x6a, 0x75, 0x85, 0x98, 0x10, 0xa7, 0x02, 0xdd, 0x82, 0x82, 0x13, 0x0c, 0xef, 0xf7, 0xa8, - 0x47, 0x76, 0x5d, 0x35, 0xd1, 0x73, 0xd8, 0x10, 0xb6, 0x76, 0x6c, 0x12, 0xa3, 0xc8, 0xf1, 0x38, - 0x65, 0x9e, 0x9a, 0xd5, 0x39, 0x3c, 0xd9, 0xa3, 0xc7, 0xa0, 0x3b, 0x01, 0x19, 0xa8, 0xfe, 0x9c, - 0xfa, 0x06, 0x9d, 0x6e, 0x7d, 0x53, 0x49, 0xa4, 0x91, 0x3b, 0x3d, 0x5e, 0xd6, 0x85, 0x01, 0x4b, - 0x1a, 0x2a, 0x8f, 0x5b, 0xa4, 0x38, 0x49, 0x7e, 0xd5, 0x39, 0x9c, 0xb0, 0x54, 0xbf, 0xd7, 0xc1, - 0x68, 0xba, 0x51, 0xc8, 0x55, 0x6f, 0x3a, 0xb7, 0xbc, 0x7d, 0x09, 0x97, 0x88, 0xbc, 0xf4, 0x11, - 0x4f, 0x7c, 0xe8, 0x72, 0xf4, 0xa8, 0xdc, 0xdd, 0x49, 0x75, 0x37, 0x01, 0xc7, 0x63, 0xaa, 0x91, - 0x15, 0x3e, 0x4d, 0x0d, 0x17, 0xc9, 0x5f, 0x9e, 0xa0, 0x6d, 0x58, 0xf2, 0x99, 0xb5, 0x4f, 0x43, - 0x1e, 0xf7, 0x06, 0x75, 0x49, 0x4a, 0xbd, 0x3e, 0x3f, 0x4d, 0x02, 0xd5, 0x15, 0x23, 0x8e, 0x76, - 0xd6, 0x07, 0x7a, 0x00, 0x3a, 0x23, 0x7b, 0xe3, 0x31, 0x9a, 0xaa, 0x6f, 0x4c, 0xf6, 0xf8, 0x8c, - 0x0b, 0xc9, 0x40, 0x9f, 0x03, 0xd8, 0x4e, 0x18, 0x10, 0x6e, 0xed, 0x53, 0xa6, 0xea, 0x94, 0xfa, - 0x8a, 0xad, 0x09, 0x6a, 0xc6, 0x4b, 0x82, 0x8d, 0x36, 0x20, 0x6f, 0x91, 0xb1, 0xd2, 0xb2, 0x67, - 0xb7, 0xc5, 0x66, 0x5d, 0xb9, 0x28, 0x0a, 0x17, 0xa7, 0xc7, 0xcb, 0xb9, 0xb1, 0x05, 0xe7, 0x2c, - 0xa2, 0x94, 0xb7, 0x01, 0x4b, 0xe2, 0x46, 0xd9, 0xb3, 0xe9, 0x1e, 0x89, 0x5c, 0x1e, 0xca, 0x0e, - 0x7e, 0xc6, 0x0d, 0x4a, 0x5c, 0x6e, 0x5a, 0x0a, 0xa7, 0xe2, 0x2a, 0xf0, 0x84, 0xad, 0xfa, 0x93, - 0x06, 0x10, 0xb7, 0xb8, 0xf3, 0xd5, 0x49, 0x0d, 0x74, 0xf1, 0xa7, 0xa7, 0x7e, 0x9d, 0xca, 0x67, - 0x77, 0xd6, 0x9d, 0x51, 0x40, 0xb1, 0xc4, 0x8a, 0x89, 0x64, 0x13, 0x4e, 0x64, 0xdd, 0x0b, 0x58, - 0xae, 0xd1, 0x07, 0x90, 0xa5, 0x5f, 0x07, 0x0e, 0x1b, 0xa9, 0x0a, 0xa6, 0xde, 0x64, 0x76, 0xc6, - 0x7f, 0x83, 0x58, 0x81, 0x1b, 0x37, 0x5f, 0x9d, 0x94, 0x33, 0x3f, 0x9f, 0x94, 0x33, 0xbf, 0x9f, - 0x94, 0xb5, 0x6f, 0x4e, 0xcb, 0xda, 0xab, 0xd3, 0xb2, 0xf6, 0xe3, 0x69, 0x59, 0xfb, 0xe5, 0xb4, - 0xac, 0xed, 0x66, 0xe5, 0x4f, 0xe3, 0x7b, 0x7f, 0x06, 0x00, 0x00, 0xff, 0xff, 0x5b, 0x76, 0x48, - 0xc7, 0xae, 0x0e, 0x00, 0x00, + 0x29, 0x78, 0x51, 0x48, 0x99, 0xb9, 0x28, 0x4d, 0x72, 0x8d, 0xfe, 0x0d, 0xd9, 0x81, 0x1f, 0x79, + 0x3c, 0x34, 0x73, 0x32, 0xd8, 0x5b, 0x69, 0xc1, 0x6e, 0x09, 0x84, 0xea, 0x6d, 0x0a, 0x8e, 0x9e, + 0xc3, 0xd5, 0x90, 0xfb, 0x41, 0xaf, 0xcf, 0x88, 0x45, 0x7b, 0x01, 0x65, 0x8e, 0x6f, 0x9b, 0xf9, + 0x8b, 0x5b, 0x64, 0x4b, 0x4d, 0x76, 0xbc, 0x2c, 0x68, 0x1b, 0x82, 0xd5, 0x95, 0x24, 0xd4, 0x85, + 0x42, 0x10, 0xb9, 0x6e, 0xcf, 0x0f, 0xe2, 0x4e, 0x0d, 0xd2, 0xc9, 0x07, 0x64, 0xad, 0x1b, 0xb9, + 0xee, 0x8b, 0x98, 0x84, 0x8d, 0x60, 0xba, 0x41, 0x37, 0x20, 0xdb, 0x67, 0x7e, 0x14, 0x84, 0xa6, + 0x21, 0xf3, 0xa1, 0x76, 0xe8, 0x19, 0x2c, 0x86, 0xd4, 0x62, 0x94, 0x87, 0x66, 0x41, 0xbe, 0xed, + 0xbd, 0xb4, 0x43, 0x76, 0x24, 0x04, 0xd3, 0x03, 0xca, 0xa8, 0x67, 0x51, 0x3c, 0xe6, 0x94, 0x9e, + 0x80, 0x91, 0x28, 0x94, 0x48, 0xf0, 0x11, 0x1d, 0xa9, 0xda, 0x8b, 0xa5, 0xd0, 0xc3, 0x90, 0xb8, + 0x51, 0x7c, 0x7d, 0xc8, 0xe3, 0x78, 0xf3, 0x9f, 0xb9, 0xc7, 0x5a, 0xa9, 0x06, 0x46, 0x22, 0x5a, + 0x74, 0x0f, 0x96, 0x18, 0xed, 0x3b, 0x21, 0x67, 0xa3, 0x1e, 0x89, 0xf8, 0xa1, 0xf9, 0x7f, 0x49, + 0x28, 0x8c, 0x8d, 0xf5, 0x88, 0x1f, 0x56, 0x7f, 0xd1, 0xa0, 0x90, 0xec, 0x87, 0xa8, 0x19, 0x77, + 0x41, 0x79, 0xe2, 0x95, 0xda, 0xfa, 0xfb, 0xfa, 0xa7, 0xec, 0x39, 0x6e, 0x24, 0x4e, 0xdc, 0x12, + 0x77, 0x16, 0x49, 0x46, 0xff, 0x84, 0x85, 0xc0, 0x67, 0x7c, 0x2c, 0xce, 0x72, 0x6a, 0x9f, 0xf0, + 0xd9, 0xf8, 0x1b, 0x8d, 0xc1, 0xd5, 0x43, 0xb8, 0x32, 0xeb, 0x0d, 0xdd, 0x87, 0xf9, 0xbd, 0x4e, + 0xb7, 0x98, 0x29, 0xdd, 0x3e, 0x3e, 0xa9, 0xdc, 0x9c, 0x7d, 0xb8, 0xe7, 0x30, 0x1e, 0x11, 0xb7, + 0xd3, 0x45, 0x7f, 0x86, 0x85, 0xd6, 0xf6, 0x0e, 0xc6, 0x45, 0xad, 0xb4, 0x72, 0x7c, 0x52, 0xb9, + 0x3d, 0x8b, 0x13, 0x8f, 0xfc, 0xc8, 0xb3, 0xb1, 0xbf, 0x3f, 0x19, 0xe3, 0xdf, 0xcc, 0x81, 0xa1, + 0xbe, 0xd9, 0xcb, 0x1d, 0xe3, 0xff, 0x83, 0xa5, 0xb8, 0xc7, 0xf5, 0x2c, 0xf9, 0x6a, 0xaa, 0x5b, + 0xbf, 0xab, 0xd5, 0x15, 0x62, 0x42, 0x9c, 0x0a, 0x74, 0x17, 0x0a, 0x4e, 0x30, 0x7c, 0xd4, 0xa3, + 0x1e, 0xd9, 0x77, 0xd5, 0x44, 0xcf, 0x61, 0x43, 0xd8, 0xda, 0xb1, 0x49, 0x8c, 0x22, 0xc7, 0xe3, + 0x94, 0x79, 0x6a, 0x56, 0xe7, 0xf0, 0x64, 0x8f, 0x9e, 0x81, 0xee, 0x04, 0x64, 0xa0, 0xfa, 0x73, + 0xea, 0x1b, 0x74, 0xba, 0xf5, 0x2d, 0x25, 0x91, 0x46, 0xee, 0xfc, 0x74, 0x45, 0x17, 0x06, 0x2c, + 0x69, 0xa8, 0x3c, 0x6e, 0x91, 0xe2, 0x24, 0xf9, 0x55, 0xe7, 0x70, 0xc2, 0x52, 0xfd, 0x5a, 0x07, + 0xa3, 0xe9, 0x46, 0x21, 0x57, 0xbd, 0xe9, 0xd2, 0xf2, 0xf6, 0x29, 0x5c, 0x25, 0xf2, 0xd2, 0x47, + 0x3c, 0xf1, 0xa1, 0xcb, 0xd1, 0xa3, 0x72, 0x77, 0x3f, 0xd5, 0xdd, 0x04, 0x1c, 0x8f, 0xa9, 0x46, + 0x56, 0xf8, 0x34, 0x35, 0x5c, 0x24, 0xbf, 0x79, 0x82, 0x76, 0x60, 0xc9, 0x67, 0xd6, 0x21, 0x0d, + 0x79, 0xdc, 0x1b, 0xd4, 0x25, 0x29, 0xf5, 0xfa, 0xfc, 0x22, 0x09, 0x54, 0x57, 0x8c, 0x38, 0xda, + 0x59, 0x1f, 0xe8, 0x31, 0xe8, 0x8c, 0x1c, 0x8c, 0xc7, 0x68, 0xaa, 0xbe, 0x31, 0x39, 0xe0, 0x33, + 0x2e, 0x24, 0x03, 0x7d, 0x0c, 0x60, 0x3b, 0x61, 0x40, 0xb8, 0x75, 0x48, 0x99, 0xaa, 0x53, 0xea, + 0x2b, 0xb6, 0x26, 0xa8, 0x19, 0x2f, 0x09, 0x36, 0xda, 0x84, 0xbc, 0x45, 0xc6, 0x4a, 0xcb, 0x5e, + 0xdc, 0x16, 0x9b, 0x75, 0xe5, 0xa2, 0x28, 0x5c, 0x9c, 0x9f, 0xae, 0xe4, 0xc6, 0x16, 0x9c, 0xb3, + 0x88, 0x52, 0xde, 0x26, 0x2c, 0x89, 0x1b, 0x65, 0xcf, 0xa6, 0x07, 0x24, 0x72, 0x79, 0x28, 0x3b, + 0xf8, 0x05, 0x37, 0x28, 0x71, 0xb9, 0x69, 0x29, 0x9c, 0x8a, 0xab, 0xc0, 0x13, 0xb6, 0xea, 0xf7, + 0x1a, 0x2c, 0xc7, 0x2d, 0x6e, 0x4f, 0xb4, 0xa7, 0xcb, 0x15, 0x4b, 0x0d, 0x74, 0xf1, 0xbb, 0xa7, + 0xfe, 0x9f, 0xca, 0x17, 0xb7, 0xd7, 0xdd, 0x51, 0x40, 0xb1, 0xc4, 0x8a, 0xb1, 0x64, 0x13, 0x4e, + 0x64, 0xf1, 0x0b, 0x58, 0xae, 0xd1, 0xbf, 0x20, 0x4b, 0x3f, 0x0f, 0x1c, 0x36, 0x52, 0x65, 0x4c, + 0xbd, 0xce, 0xec, 0x8e, 0x7f, 0x09, 0xb1, 0x02, 0x37, 0xee, 0xbc, 0x39, 0x2b, 0x67, 0xbe, 0x3b, + 0x2b, 0x67, 0x7e, 0x3e, 0x2b, 0x6b, 0x5f, 0x9c, 0x97, 0xb5, 0x37, 0xe7, 0x65, 0xed, 0xdb, 0xf3, + 0xb2, 0xf6, 0xc3, 0x79, 0x59, 0xdb, 0xcf, 0xca, 0x3f, 0xc7, 0x7f, 0xfc, 0x1a, 0x00, 0x00, 0xff, + 0xff, 0x75, 0xde, 0x2e, 0x11, 0xb3, 0x0e, 0x00, 0x00, } diff --git a/api/specs.proto b/api/specs.proto index 062d2347ab..8cf6328ee7 100644 --- a/api/specs.proto +++ b/api/specs.proto @@ -190,7 +190,7 @@ message ContainerSpec { // PullOptions parameterize the behavior of image pulls. PullOptions pull_options = 10; - // SecretReference contains references to zero or more secrets that + // Secrets contains references to zero or more secrets that // will be exposed to the container. repeated SecretReference secrets = 12; } @@ -277,11 +277,11 @@ message ClusterSpec { TaskDefaults task_defaults = 7 [(gogoproto.nullable) = false]; } -// SecretSpec specifies a user-provided secret. -message SecretSpec { +// SecretValueSpec specifies a user-provided secret. +message SecretValueSpec { Annotations annotations = 1 [(gogoproto.nullable) = false]; - // Type distinguishes the different kinds of secrets in the system. + // Type distinguishes the different kinds of secrets in the system (such as container vs node vs swarm-specific) SecretType type = 2; // Secret payload. diff --git a/api/types.pb.go b/api/types.pb.go index a490f4c2c5..7b2ea3112a 100644 --- a/api/types.pb.go +++ b/api/types.pb.go @@ -68,7 +68,7 @@ EndpointSpec NetworkSpec ClusterSpec - SecretSpec + SecretValueSpec Meta Node Service @@ -78,7 +78,7 @@ Network Cluster Secret - SecretData + SecretValue GetNodeRequest GetNodeResponse ListNodesRequest @@ -278,17 +278,16 @@ func (NodeRole) EnumDescriptor() ([]byte, []int) { return fileDescriptorTypes, [ type SecretType int32 const ( + // CONTAINER secrets are user-specified secrets that should be injected + // into the container as an environment variable or file. SecretType_ContainerSecret SecretType = 0 - SecretType_NodeSecret SecretType = 1 ) var SecretType_name = map[int32]string{ 0: "CONTAINER", - 1: "NODE", } var SecretType_value = map[string]int32{ "CONTAINER": 0, - "NODE": 1, } func (x SecretType) String() string { @@ -1396,12 +1395,12 @@ func (*ManagerStatus) Descriptor() ([]byte, []int) { return fileDescriptorTypes, // SecretReference is the linkage between a service and a secret that it uses. type SecretReference struct { - // Name is the name of the secret that this reference. + // Name is the name of the secret that this references. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // SecretDataID represents the specific Secret version that we're referencing to. - // This identifier exists so that SecretReferences don't leak any information - // about the secret contents. - SecretDataID string `protobuf:"bytes,2,opt,name=secret_data_id,json=secretDataId,proto3" json:"secret_data_id,omitempty"` + // SecretValueID represents the ID of the specific Secret version that we're + // referencing. This identifier exists so that SecretReferences don't leak + // any information about the secret contents. + SecretValueID string `protobuf:"bytes,2,opt,name=secret_value_id,json=secretValueId,proto3" json:"secret_value_id,omitempty"` // Mode is the way the secret should be presented. Mode SecretReference_Mode `protobuf:"varint,3,opt,name=mode,proto3,enum=docker.swarmkit.v1.SecretReference_Mode" json:"mode,omitempty"` // Target is the name by which the image accesses the secret. @@ -2157,10 +2156,10 @@ func (m *SecretReference) Copy() *SecretReference { } o := &SecretReference{ - Name: m.Name, - SecretDataID: m.SecretDataID, - Mode: m.Mode, - Target: m.Target, + Name: m.Name, + SecretValueID: m.SecretValueID, + Mode: m.Mode, + Target: m.Target, } return o @@ -2811,7 +2810,7 @@ func (this *SecretReference) GoString() string { s := make([]string, 0, 8) s = append(s, "&api.SecretReference{") s = append(s, "Name: "+fmt.Sprintf("%#v", this.Name)+",\n") - s = append(s, "SecretDataID: "+fmt.Sprintf("%#v", this.SecretDataID)+",\n") + s = append(s, "SecretValueID: "+fmt.Sprintf("%#v", this.SecretValueID)+",\n") s = append(s, "Mode: "+fmt.Sprintf("%#v", this.Mode)+",\n") s = append(s, "Target: "+fmt.Sprintf("%#v", this.Target)+",\n") s = append(s, "}") @@ -4557,11 +4556,11 @@ func (m *SecretReference) MarshalTo(data []byte) (int, error) { i = encodeVarintTypes(data, i, uint64(len(m.Name))) i += copy(data[i:], m.Name) } - if len(m.SecretDataID) > 0 { + if len(m.SecretValueID) > 0 { data[i] = 0x12 i++ - i = encodeVarintTypes(data, i, uint64(len(m.SecretDataID))) - i += copy(data[i:], m.SecretDataID) + i = encodeVarintTypes(data, i, uint64(len(m.SecretValueID))) + i += copy(data[i:], m.SecretValueID) } if m.Mode != 0 { data[i] = 0x18 @@ -5344,7 +5343,7 @@ func (m *SecretReference) Size() (n int) { if l > 0 { n += 1 + l + sovTypes(uint64(l)) } - l = len(m.SecretDataID) + l = len(m.SecretValueID) if l > 0 { n += 1 + l + sovTypes(uint64(l)) } @@ -5953,7 +5952,7 @@ func (this *SecretReference) String() string { } s := strings.Join([]string{`&SecretReference{`, `Name:` + fmt.Sprintf("%v", this.Name) + `,`, - `SecretDataID:` + fmt.Sprintf("%v", this.SecretDataID) + `,`, + `SecretValueID:` + fmt.Sprintf("%v", this.SecretValueID) + `,`, `Mode:` + fmt.Sprintf("%v", this.Mode) + `,`, `Target:` + fmt.Sprintf("%v", this.Target) + `,`, `}`, @@ -11841,7 +11840,7 @@ func (m *SecretReference) Unmarshal(data []byte) error { iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SecretDataID", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SecretValueID", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -11866,7 +11865,7 @@ func (m *SecretReference) Unmarshal(data []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.SecretDataID = string(data[iNdEx:postIndex]) + m.SecretValueID = string(data[iNdEx:postIndex]) iNdEx = postIndex case 3: if wireType != 0 { @@ -12045,233 +12044,232 @@ var ( func init() { proto.RegisterFile("types.proto", fileDescriptorTypes) } var fileDescriptorTypes = []byte{ - // 3641 bytes of a gzipped FileDescriptorProto + // 3621 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x59, 0xcd, 0x6f, 0x23, 0x47, - 0x76, 0x17, 0x3f, 0x45, 0x3e, 0x52, 0x52, 0x4f, 0xcd, 0xec, 0x58, 0x43, 0x8f, 0x25, 0xba, 0xc7, - 0xb3, 0x9e, 0x9d, 0x75, 0x68, 0x5b, 0xde, 0x18, 0xb3, 0x9e, 0xcd, 0xda, 0xcd, 0x0f, 0xcd, 0xd0, - 0x23, 0x91, 0x44, 0x91, 0x9c, 0x81, 0x11, 0x20, 0x44, 0xa9, 0xbb, 0x44, 0xb5, 0xd5, 0xec, 0x66, - 0xba, 0x8b, 0xd2, 0x30, 0x41, 0x80, 0x49, 0x0e, 0x49, 0xa0, 0x53, 0xee, 0x81, 0xb0, 0x08, 0x12, - 0xe4, 0x96, 0x73, 0x80, 0x9c, 0x7c, 0xf4, 0x29, 0xd8, 0x20, 0x40, 0xb0, 0x48, 0x10, 0x21, 0x56, - 0xfe, 0x81, 0x05, 0x82, 0x60, 0x0f, 0xc9, 0x21, 0xa8, 0x8f, 0x6e, 0x36, 0x39, 0x1c, 0x79, 0x9c, - 0xdd, 0x13, 0xbb, 0x5e, 0xfd, 0xde, 0xab, 0x57, 0x55, 0xaf, 0x5e, 0xfd, 0x5e, 0x11, 0x0a, 0x6c, - 0x3a, 0xa6, 0x41, 0x65, 0xec, 0x7b, 0xcc, 0x43, 0xc8, 0xf2, 0xcc, 0x63, 0xea, 0x57, 0x82, 0x53, - 0xe2, 0x8f, 0x8e, 0x6d, 0x56, 0x39, 0xf9, 0xb0, 0x74, 0x8b, 0xd9, 0x23, 0x1a, 0x30, 0x32, 0x1a, - 0xbf, 0x1f, 0x7d, 0x49, 0x78, 0xe9, 0x0d, 0x6b, 0xe2, 0x13, 0x66, 0x7b, 0xee, 0xfb, 0xe1, 0x87, - 0xea, 0xb8, 0x31, 0xf4, 0x86, 0x9e, 0xf8, 0x7c, 0x9f, 0x7f, 0x49, 0xa9, 0xbe, 0x0d, 0xab, 0x4f, - 0xa9, 0x1f, 0xd8, 0x9e, 0x8b, 0x6e, 0x40, 0xc6, 0x76, 0x2d, 0xfa, 0x7c, 0x33, 0x51, 0x4e, 0xdc, - 0x4b, 0x63, 0xd9, 0xd0, 0xff, 0x2a, 0x01, 0x05, 0xc3, 0x75, 0x3d, 0x26, 0x6c, 0x05, 0x08, 0x41, - 0xda, 0x25, 0x23, 0x2a, 0x40, 0x79, 0x2c, 0xbe, 0x51, 0x0d, 0xb2, 0x0e, 0x39, 0xa0, 0x4e, 0xb0, - 0x99, 0x2c, 0xa7, 0xee, 0x15, 0x76, 0x7e, 0x58, 0x79, 0xd9, 0xe7, 0x4a, 0xcc, 0x48, 0x65, 0x4f, - 0xa0, 0x1b, 0x2e, 0xf3, 0xa7, 0x58, 0xa9, 0x96, 0x7e, 0x0c, 0x85, 0x98, 0x18, 0x69, 0x90, 0x3a, - 0xa6, 0x53, 0x35, 0x0c, 0xff, 0xe4, 0xfe, 0x9d, 0x10, 0x67, 0x42, 0x37, 0x93, 0x42, 0x26, 0x1b, - 0x9f, 0x24, 0x1f, 0x24, 0xf4, 0x2f, 0x20, 0x8f, 0x69, 0xe0, 0x4d, 0x7c, 0x93, 0x06, 0xe8, 0x07, - 0x90, 0x77, 0x89, 0xeb, 0x0d, 0xcc, 0xf1, 0x24, 0x10, 0xea, 0xa9, 0x6a, 0xf1, 0xf2, 0x62, 0x3b, - 0xd7, 0x22, 0xae, 0x57, 0xeb, 0xf4, 0x03, 0x9c, 0xe3, 0xdd, 0xb5, 0xf1, 0x24, 0x40, 0x6f, 0x43, - 0x71, 0x44, 0x47, 0x9e, 0x3f, 0x1d, 0x1c, 0x4c, 0x19, 0x0d, 0x84, 0xe1, 0x14, 0x2e, 0x48, 0x59, - 0x95, 0x8b, 0xf4, 0xbf, 0x48, 0xc0, 0x8d, 0xd0, 0x36, 0xa6, 0xbf, 0x3f, 0xb1, 0x7d, 0x3a, 0xa2, - 0x2e, 0x0b, 0xd0, 0x6f, 0x43, 0xd6, 0xb1, 0x47, 0x36, 0x93, 0x63, 0x14, 0x76, 0xde, 0x5a, 0x36, - 0xe7, 0xc8, 0x2b, 0xac, 0xc0, 0xc8, 0x80, 0xa2, 0x4f, 0x03, 0xea, 0x9f, 0xc8, 0x95, 0x10, 0x43, - 0x7e, 0xab, 0xf2, 0x9c, 0x8a, 0xbe, 0x0b, 0xb9, 0x8e, 0x43, 0xd8, 0xa1, 0xe7, 0x8f, 0x90, 0x0e, - 0x45, 0xe2, 0x9b, 0x47, 0x36, 0xa3, 0x26, 0x9b, 0xf8, 0xe1, 0xae, 0xcc, 0xc9, 0xd0, 0x4d, 0x48, - 0x7a, 0x72, 0xa0, 0x7c, 0x35, 0x7b, 0x79, 0xb1, 0x9d, 0x6c, 0x77, 0x71, 0xd2, 0x0b, 0xf4, 0x87, - 0x70, 0xad, 0xe3, 0x4c, 0x86, 0xb6, 0x5b, 0xa7, 0x81, 0xe9, 0xdb, 0x63, 0x6e, 0x9d, 0x6f, 0x2f, - 0x0f, 0xbe, 0x70, 0x7b, 0xf9, 0x77, 0xb4, 0xe5, 0xc9, 0xd9, 0x96, 0xeb, 0x7f, 0x96, 0x84, 0x6b, - 0x0d, 0x77, 0x68, 0xbb, 0x34, 0xae, 0x7d, 0x17, 0xd6, 0xa9, 0x10, 0x0e, 0x4e, 0x64, 0x50, 0x29, - 0x3b, 0x6b, 0x52, 0x1a, 0x46, 0x5a, 0x73, 0x21, 0x5e, 0x3e, 0x5c, 0x36, 0xfd, 0x97, 0xac, 0x2f, - 0x8b, 0x1a, 0xd4, 0x80, 0xd5, 0xb1, 0x98, 0x44, 0xb0, 0x99, 0x12, 0xb6, 0xee, 0x2e, 0xb3, 0xf5, - 0xd2, 0x3c, 0xab, 0xe9, 0xaf, 0x2f, 0xb6, 0x57, 0x70, 0xa8, 0xfb, 0xeb, 0x04, 0xdf, 0x7f, 0x26, - 0x60, 0xa3, 0xe5, 0x59, 0x73, 0xeb, 0x50, 0x82, 0xdc, 0x91, 0x17, 0xb0, 0xd8, 0x41, 0x89, 0xda, - 0xe8, 0x01, 0xe4, 0xc6, 0x6a, 0xfb, 0xd4, 0xee, 0xdf, 0x5e, 0xee, 0xb2, 0xc4, 0xe0, 0x08, 0x8d, - 0x1e, 0x42, 0xde, 0x0f, 0x63, 0x62, 0x33, 0xf5, 0x3a, 0x81, 0x33, 0xc3, 0xa3, 0xdf, 0x81, 0xac, - 0xdc, 0x84, 0xcd, 0xb4, 0xd0, 0xbc, 0xfb, 0x5a, 0x6b, 0x8e, 0x95, 0x92, 0xfe, 0x8b, 0x04, 0x68, - 0x98, 0x1c, 0xb2, 0x7d, 0x3a, 0x3a, 0xa0, 0x7e, 0x97, 0x11, 0x36, 0x09, 0xd0, 0x4d, 0xc8, 0x3a, - 0x94, 0x58, 0xd4, 0x17, 0x93, 0xcc, 0x61, 0xd5, 0x42, 0x7d, 0x1e, 0xe4, 0xc4, 0x3c, 0x22, 0x07, - 0xb6, 0x63, 0xb3, 0xa9, 0x98, 0xe6, 0xfa, 0xf2, 0x5d, 0x5e, 0xb4, 0x59, 0xc1, 0x31, 0x45, 0x3c, - 0x67, 0x06, 0x6d, 0xc2, 0xea, 0x88, 0x06, 0x01, 0x19, 0x52, 0x31, 0xfb, 0x3c, 0x0e, 0x9b, 0xfa, - 0x43, 0x28, 0xc6, 0xf5, 0x50, 0x01, 0x56, 0xfb, 0xad, 0x27, 0xad, 0xf6, 0xb3, 0x96, 0xb6, 0x82, - 0x36, 0xa0, 0xd0, 0x6f, 0xe1, 0x86, 0x51, 0x7b, 0x6c, 0x54, 0xf7, 0x1a, 0x5a, 0x02, 0xad, 0x41, - 0x7e, 0xd6, 0x4c, 0xea, 0x3f, 0x4b, 0x00, 0xf0, 0x0d, 0x54, 0x93, 0xfa, 0x04, 0x32, 0x01, 0x23, - 0x4c, 0x6e, 0xdc, 0xfa, 0xce, 0x3b, 0xcb, 0xbc, 0x9e, 0xc1, 0x2b, 0xfc, 0x87, 0x62, 0xa9, 0x12, - 0xf7, 0x30, 0xb9, 0xe8, 0x61, 0x46, 0x20, 0xe7, 0x5d, 0xcb, 0x41, 0xba, 0xce, 0xbf, 0x12, 0x28, - 0x0f, 0x19, 0xdc, 0x30, 0xea, 0x5f, 0x68, 0x49, 0xa4, 0x41, 0xb1, 0xde, 0xec, 0xd6, 0xda, 0xad, - 0x56, 0xa3, 0xd6, 0x6b, 0xd4, 0xb5, 0x94, 0x7e, 0x17, 0x32, 0xcd, 0x11, 0x19, 0x52, 0x74, 0x9b, - 0x47, 0xc0, 0x21, 0xf5, 0xa9, 0x6b, 0x86, 0x81, 0x35, 0x13, 0xe8, 0x3f, 0xcf, 0x43, 0x66, 0xdf, - 0x9b, 0xb8, 0x0c, 0xed, 0xc4, 0x4e, 0xf1, 0xfa, 0xce, 0xd6, 0xb2, 0x29, 0x08, 0x60, 0xa5, 0x37, - 0x1d, 0x53, 0x75, 0xca, 0x6f, 0x42, 0x56, 0xc6, 0x8a, 0x72, 0x5d, 0xb5, 0xb8, 0x9c, 0x11, 0x7f, - 0x48, 0x99, 0x5a, 0x74, 0xd5, 0x42, 0xf7, 0x20, 0xe7, 0x53, 0x62, 0x79, 0xae, 0x33, 0x15, 0x21, - 0x95, 0x93, 0x69, 0x16, 0x53, 0x62, 0xb5, 0x5d, 0x67, 0x8a, 0xa3, 0x5e, 0xf4, 0x18, 0x8a, 0x07, - 0xb6, 0x6b, 0x0d, 0xbc, 0xb1, 0xcc, 0x79, 0x99, 0x57, 0x07, 0xa0, 0xf4, 0xaa, 0x6a, 0xbb, 0x56, - 0x5b, 0x82, 0x71, 0xe1, 0x60, 0xd6, 0x40, 0x2d, 0x58, 0x3f, 0xf1, 0x9c, 0xc9, 0x88, 0x46, 0xb6, - 0xb2, 0xc2, 0xd6, 0xbb, 0xaf, 0xb6, 0xf5, 0x54, 0xe0, 0x43, 0x6b, 0x6b, 0x27, 0xf1, 0x26, 0x7a, - 0x02, 0x6b, 0x6c, 0x34, 0x3e, 0x0c, 0x22, 0x73, 0xab, 0xc2, 0xdc, 0xf7, 0xaf, 0x58, 0x30, 0x0e, - 0x0f, 0xad, 0x15, 0x59, 0xac, 0x55, 0xfa, 0x93, 0x14, 0x14, 0x62, 0x9e, 0xa3, 0x2e, 0x14, 0xc6, - 0xbe, 0x37, 0x26, 0x43, 0x91, 0xb7, 0xd5, 0x5e, 0x7c, 0xf8, 0x5a, 0xb3, 0xae, 0x74, 0x66, 0x8a, - 0x38, 0x6e, 0x45, 0x3f, 0x4f, 0x42, 0x21, 0xd6, 0x89, 0xee, 0x43, 0x0e, 0x77, 0x70, 0xf3, 0xa9, - 0xd1, 0x6b, 0x68, 0x2b, 0xa5, 0xdb, 0x67, 0xe7, 0xe5, 0x4d, 0x61, 0x2d, 0x6e, 0xa0, 0xe3, 0xdb, - 0x27, 0x3c, 0xf4, 0xee, 0xc1, 0x6a, 0x08, 0x4d, 0x94, 0xde, 0x3c, 0x3b, 0x2f, 0xbf, 0xb1, 0x08, - 0x8d, 0x21, 0x71, 0xf7, 0xb1, 0x81, 0x1b, 0x75, 0x2d, 0xb9, 0x1c, 0x89, 0xbb, 0x47, 0xc4, 0xa7, - 0x16, 0xfa, 0x3e, 0x64, 0x15, 0x30, 0x55, 0x2a, 0x9d, 0x9d, 0x97, 0x6f, 0x2e, 0x02, 0x67, 0x38, - 0xdc, 0xdd, 0x33, 0x9e, 0x36, 0xb4, 0xf4, 0x72, 0x1c, 0xee, 0x3a, 0xe4, 0x84, 0xa2, 0x77, 0x20, - 0x23, 0x61, 0x99, 0xd2, 0xad, 0xb3, 0xf3, 0xf2, 0xf7, 0x5e, 0x32, 0xc7, 0x51, 0xa5, 0xcd, 0x3f, - 0xff, 0xeb, 0xad, 0x95, 0x7f, 0xf8, 0x9b, 0x2d, 0x6d, 0xb1, 0xbb, 0xf4, 0xbf, 0x09, 0x58, 0x9b, - 0xdb, 0x72, 0xa4, 0x43, 0xd6, 0xf5, 0x4c, 0x6f, 0x2c, 0xd3, 0x79, 0xae, 0x0a, 0x97, 0x17, 0xdb, - 0xd9, 0x96, 0x57, 0xf3, 0xc6, 0x53, 0xac, 0x7a, 0xd0, 0x93, 0x85, 0x0b, 0xe9, 0xa3, 0xd7, 0x8c, - 0xa7, 0xa5, 0x57, 0xd2, 0xa7, 0xb0, 0x66, 0xf9, 0xf6, 0x09, 0xf5, 0x07, 0xa6, 0xe7, 0x1e, 0xda, - 0x43, 0x95, 0xaa, 0x4b, 0xcb, 0x6c, 0xd6, 0x05, 0x10, 0x17, 0xa5, 0x42, 0x4d, 0xe0, 0x7f, 0x8d, - 0xcb, 0xa8, 0xf4, 0x14, 0x8a, 0xf1, 0x08, 0x45, 0x6f, 0x01, 0x04, 0xf6, 0x1f, 0x50, 0xc5, 0x6f, - 0x04, 0x1b, 0xc2, 0x79, 0x2e, 0x11, 0xec, 0x06, 0xbd, 0x0b, 0xe9, 0x91, 0x67, 0x49, 0x3b, 0x99, - 0xea, 0x75, 0x7e, 0x27, 0xfe, 0xeb, 0xc5, 0x76, 0xc1, 0x0b, 0x2a, 0xbb, 0xb6, 0x43, 0xf7, 0x3d, - 0x8b, 0x62, 0x01, 0xd0, 0x4f, 0x20, 0xcd, 0x53, 0x05, 0x7a, 0x13, 0xd2, 0xd5, 0x66, 0xab, 0xae, - 0xad, 0x94, 0xae, 0x9d, 0x9d, 0x97, 0xd7, 0xc4, 0x92, 0xf0, 0x0e, 0x1e, 0xbb, 0x68, 0x1b, 0xb2, - 0x4f, 0xdb, 0x7b, 0xfd, 0x7d, 0x1e, 0x5e, 0xd7, 0xcf, 0xce, 0xcb, 0x1b, 0x51, 0xb7, 0x5c, 0x34, - 0xf4, 0x16, 0x64, 0x7a, 0xfb, 0x9d, 0xdd, 0xae, 0x96, 0x2c, 0xa1, 0xb3, 0xf3, 0xf2, 0x7a, 0xd4, - 0x2f, 0x7c, 0x2e, 0x5d, 0x53, 0xbb, 0x9a, 0x8f, 0xe4, 0xfa, 0xff, 0x24, 0x61, 0x0d, 0x73, 0x7e, - 0xeb, 0xb3, 0x8e, 0xe7, 0xd8, 0xe6, 0x14, 0x75, 0x20, 0x6f, 0x7a, 0xae, 0x65, 0xc7, 0xce, 0xd4, - 0xce, 0x2b, 0x2e, 0xc1, 0x99, 0x56, 0xd8, 0xaa, 0x85, 0x9a, 0x78, 0x66, 0x04, 0xed, 0x40, 0xc6, - 0xa2, 0x0e, 0x99, 0x5e, 0x75, 0x1b, 0xd7, 0x15, 0x97, 0xc6, 0x12, 0x2a, 0x98, 0x23, 0x79, 0x3e, - 0x20, 0x8c, 0xd1, 0xd1, 0x98, 0xc9, 0xdb, 0x38, 0x8d, 0x0b, 0x23, 0xf2, 0xdc, 0x50, 0x22, 0xf4, - 0x23, 0xc8, 0x9e, 0xda, 0xae, 0xe5, 0x9d, 0xaa, 0x0b, 0xf7, 0x6a, 0xbb, 0x0a, 0xab, 0x9f, 0xf1, - 0x7b, 0x76, 0xc1, 0x59, 0xbe, 0xea, 0xad, 0x76, 0xab, 0x11, 0xae, 0xba, 0xea, 0x6f, 0xbb, 0x2d, - 0xcf, 0xe5, 0x27, 0x06, 0xda, 0xad, 0xc1, 0xae, 0xd1, 0xdc, 0xeb, 0x63, 0xbe, 0xf2, 0x37, 0xce, - 0xce, 0xcb, 0x5a, 0x04, 0xd9, 0x25, 0xb6, 0xc3, 0x49, 0xe0, 0x2d, 0x48, 0x19, 0xad, 0x2f, 0xb4, - 0x64, 0x49, 0x3b, 0x3b, 0x2f, 0x17, 0xa3, 0x6e, 0xc3, 0x9d, 0xce, 0x0e, 0xd3, 0xe2, 0xb8, 0xfa, - 0xbf, 0x27, 0xa1, 0xd8, 0x1f, 0x5b, 0x84, 0x51, 0x19, 0x99, 0xa8, 0x0c, 0x85, 0x31, 0xf1, 0x89, - 0xe3, 0x50, 0xc7, 0x0e, 0x46, 0xaa, 0x50, 0x88, 0x8b, 0xd0, 0x83, 0xef, 0xb0, 0x98, 0x8a, 0x84, - 0xa9, 0x25, 0xed, 0xc3, 0xfa, 0xa1, 0x74, 0x76, 0x40, 0x4c, 0xb1, 0xbb, 0x29, 0xb1, 0xbb, 0x95, - 0x65, 0x26, 0xe2, 0x5e, 0x55, 0xd4, 0x1c, 0x0d, 0xa1, 0x85, 0xd7, 0x0e, 0xe3, 0x4d, 0xf4, 0x31, - 0xac, 0x8e, 0x3c, 0xd7, 0x66, 0x9e, 0xff, 0x5a, 0xfb, 0x10, 0x82, 0xd1, 0x7d, 0xb8, 0xc6, 0x77, - 0x38, 0x74, 0x49, 0x74, 0x8b, 0x9b, 0x2b, 0x89, 0x37, 0x46, 0xe4, 0xb9, 0x1a, 0x13, 0x73, 0xb1, - 0xfe, 0x31, 0xac, 0xcd, 0xf9, 0xc0, 0x6f, 0xf3, 0x8e, 0xd1, 0xef, 0x36, 0xb4, 0x15, 0x54, 0x84, - 0x5c, 0xad, 0xdd, 0xea, 0x35, 0x5b, 0x7d, 0x4e, 0x3d, 0x8a, 0x90, 0xc3, 0xed, 0xbd, 0xbd, 0xaa, - 0x51, 0x7b, 0xa2, 0x25, 0xf5, 0xff, 0x8e, 0xd6, 0x57, 0x71, 0x8f, 0xea, 0x3c, 0xf7, 0x78, 0xef, - 0xd5, 0x53, 0x57, 0xec, 0x63, 0xd6, 0x88, 0x38, 0xc8, 0x4f, 0x00, 0xc4, 0x36, 0x52, 0x6b, 0x40, - 0xd8, 0x55, 0xf5, 0x45, 0x2f, 0xac, 0x1c, 0x71, 0x5e, 0x29, 0x18, 0x0c, 0x7d, 0x06, 0x45, 0xd3, - 0x1b, 0x8d, 0x1d, 0xaa, 0xf4, 0x53, 0xaf, 0xa3, 0x5f, 0x88, 0x54, 0x0c, 0x16, 0xe7, 0x40, 0xe9, - 0x79, 0x0e, 0xf4, 0xa7, 0x09, 0x28, 0xc4, 0x1c, 0x9e, 0xa7, 0x42, 0x45, 0xc8, 0xf5, 0x3b, 0x75, - 0xa3, 0xd7, 0x6c, 0x3d, 0xd2, 0x12, 0x08, 0x20, 0x2b, 0x16, 0xb0, 0xae, 0x25, 0x39, 0x5d, 0xab, - 0xb5, 0xf7, 0x3b, 0x7b, 0x0d, 0x41, 0x86, 0xd0, 0x0d, 0xd0, 0xc2, 0x25, 0x1c, 0x74, 0x7b, 0x06, - 0xe6, 0xd2, 0x34, 0xba, 0x0e, 0x1b, 0x91, 0x54, 0x69, 0x66, 0xd0, 0x4d, 0x40, 0x91, 0x70, 0x66, - 0x22, 0xab, 0xff, 0x11, 0x6c, 0xd4, 0x3c, 0x97, 0x11, 0xdb, 0x8d, 0xa8, 0xec, 0x0e, 0x9f, 0xb7, - 0x12, 0x0d, 0x6c, 0x4b, 0x66, 0xdb, 0xea, 0xc6, 0xe5, 0xc5, 0x76, 0x21, 0x82, 0x36, 0xeb, 0x7c, - 0xa6, 0x61, 0xc3, 0xe2, 0x67, 0x6a, 0x6c, 0x5b, 0x2a, 0x79, 0xae, 0x5e, 0x5e, 0x6c, 0xa7, 0x3a, - 0xcd, 0x3a, 0xe6, 0x32, 0xf4, 0x26, 0xe4, 0xe9, 0x73, 0x9b, 0x0d, 0x4c, 0x9e, 0x5d, 0xf9, 0x1a, - 0x66, 0x70, 0x8e, 0x0b, 0x6a, 0x3c, 0x99, 0xfe, 0x71, 0x12, 0xa0, 0x47, 0x82, 0x63, 0x35, 0xf4, - 0x43, 0xc8, 0x47, 0x45, 0xfc, 0x55, 0xc5, 0x64, 0x6c, 0xbf, 0x22, 0x3c, 0xfa, 0x28, 0x8c, 0x18, - 0xc9, 0xb1, 0x97, 0x2b, 0xaa, 0xb1, 0x96, 0xd1, 0xd4, 0x79, 0x22, 0xcd, 0xef, 0x1a, 0xea, 0xfb, - 0x6a, 0xe3, 0xf8, 0x27, 0xaa, 0x89, 0x7c, 0x2b, 0xe7, 0xac, 0x98, 0xdb, 0x9d, 0x65, 0x83, 0x2c, - 0x2c, 0xe8, 0xe3, 0x15, 0x3c, 0xd3, 0xab, 0x6a, 0xb0, 0xee, 0x4f, 0x5c, 0xee, 0xf5, 0x20, 0x10, - 0xdd, 0xba, 0x0d, 0x6f, 0xb4, 0x28, 0x3b, 0xf5, 0xfc, 0x63, 0x83, 0x31, 0x62, 0x1e, 0xf1, 0xa2, - 0x5a, 0x25, 0x99, 0x19, 0xe1, 0x4c, 0xcc, 0x11, 0xce, 0x4d, 0x58, 0x25, 0x8e, 0x4d, 0x02, 0x2a, - 0x6f, 0xe9, 0x3c, 0x0e, 0x9b, 0x9c, 0x16, 0x13, 0xcb, 0xf2, 0x69, 0x10, 0x50, 0x59, 0x06, 0xe6, - 0xf1, 0x4c, 0xa0, 0xff, 0x73, 0x12, 0xa0, 0xd9, 0x31, 0xf6, 0x95, 0xf9, 0x3a, 0x64, 0x0f, 0xc9, - 0xc8, 0x76, 0xa6, 0x57, 0x1d, 0xb2, 0x19, 0xbe, 0x62, 0x48, 0x43, 0xbb, 0x42, 0x07, 0x2b, 0x5d, - 0xc1, 0x96, 0x27, 0x07, 0x2e, 0x65, 0x11, 0x5b, 0x16, 0x2d, 0x7e, 0x35, 0xfb, 0xc4, 0x8d, 0x16, - 0x56, 0x36, 0xb8, 0xeb, 0x43, 0xc2, 0xe8, 0x29, 0x99, 0x86, 0x67, 0x42, 0x35, 0xd1, 0x63, 0xce, - 0xa2, 0x79, 0x71, 0x4f, 0xad, 0xcd, 0x8c, 0xe0, 0x1e, 0xdf, 0xe6, 0x0f, 0x56, 0x70, 0x49, 0x3a, - 0x22, 0xed, 0xd2, 0x43, 0x71, 0x53, 0xce, 0xba, 0xbe, 0x53, 0x11, 0xfb, 0x01, 0xac, 0xcd, 0xcd, - 0xf3, 0xa5, 0x32, 0xa5, 0xd9, 0x79, 0xfa, 0x23, 0x2d, 0xad, 0xbe, 0x3e, 0xd6, 0xb2, 0xfa, 0x7f, - 0x25, 0x00, 0x3a, 0x9e, 0x1f, 0x6e, 0xda, 0xf2, 0x67, 0xa1, 0x9c, 0x78, 0x64, 0x32, 0x3d, 0x47, - 0x85, 0xe7, 0x52, 0x9e, 0x3e, 0xb3, 0xc2, 0x69, 0xaf, 0x80, 0xe3, 0x48, 0x11, 0x6d, 0x43, 0x41, - 0xee, 0xff, 0x60, 0xec, 0xf9, 0x32, 0x1f, 0xad, 0x61, 0x90, 0x22, 0xae, 0x89, 0xee, 0xc2, 0xfa, - 0x78, 0x72, 0xe0, 0xd8, 0xc1, 0x11, 0xb5, 0x24, 0x26, 0x2d, 0x30, 0x6b, 0x91, 0x94, 0xc3, 0xf4, - 0x3a, 0xe4, 0x42, 0xeb, 0x68, 0x13, 0x52, 0xbd, 0x5a, 0x47, 0x5b, 0x29, 0x6d, 0x9c, 0x9d, 0x97, - 0x0b, 0xa1, 0xb8, 0x57, 0xeb, 0xf0, 0x9e, 0x7e, 0xbd, 0xa3, 0x25, 0xe6, 0x7b, 0xfa, 0xf5, 0x4e, - 0x29, 0xcd, 0x6f, 0x49, 0xfd, 0x2f, 0x13, 0x90, 0x95, 0x9c, 0x6d, 0xe9, 0x8c, 0x0d, 0x58, 0x0d, - 0x2b, 0x09, 0x49, 0x24, 0xdf, 0x7d, 0x35, 0xe9, 0xab, 0x28, 0x8e, 0x26, 0xf7, 0x31, 0xd4, 0x2b, - 0x7d, 0x02, 0xc5, 0x78, 0xc7, 0x77, 0xda, 0xc5, 0x3f, 0x84, 0x02, 0x0f, 0x94, 0x90, 0xfc, 0xed, - 0x40, 0x56, 0xf2, 0x4a, 0x95, 0x55, 0xae, 0x62, 0xa0, 0x0a, 0x89, 0x1e, 0xc0, 0xaa, 0x64, 0xad, - 0xe1, 0x7b, 0xca, 0xd6, 0xd5, 0xe1, 0x88, 0x43, 0xb8, 0xfe, 0x29, 0xa4, 0x3b, 0x94, 0xfa, 0xe8, - 0x0e, 0xac, 0xba, 0x9e, 0x45, 0x67, 0x49, 0x54, 0x11, 0x6e, 0x8b, 0x36, 0xeb, 0x9c, 0x70, 0x5b, - 0xb4, 0x69, 0xf1, 0xc5, 0xe3, 0x07, 0x34, 0x7c, 0x52, 0xe2, 0xdf, 0x7a, 0x0f, 0x8a, 0xcf, 0xa8, - 0x3d, 0x3c, 0x62, 0xd4, 0x12, 0x86, 0xde, 0x83, 0xf4, 0x98, 0x46, 0xce, 0x6f, 0x2e, 0x0d, 0x1d, - 0x4a, 0x7d, 0x2c, 0x50, 0xfc, 0x40, 0x9e, 0x0a, 0x6d, 0xf5, 0x8a, 0xa7, 0x5a, 0xfa, 0xdf, 0x25, - 0x61, 0xbd, 0x19, 0x04, 0x13, 0xe2, 0x9a, 0xe1, 0x2d, 0xfb, 0xd3, 0xf9, 0x5b, 0xf6, 0xde, 0xd2, - 0x19, 0xce, 0xa9, 0xcc, 0x57, 0xf9, 0x2a, 0x49, 0x26, 0xa3, 0x24, 0xa9, 0x7f, 0x9d, 0x08, 0xcb, - 0xfb, 0xbb, 0xb1, 0x73, 0x53, 0xda, 0x3c, 0x3b, 0x2f, 0xdf, 0x88, 0x5b, 0xa2, 0x7d, 0xf7, 0xd8, - 0xf5, 0x4e, 0x5d, 0xf4, 0x36, 0x2f, 0xf7, 0x5b, 0x8d, 0x67, 0x5a, 0xa2, 0x74, 0xf3, 0xec, 0xbc, - 0x8c, 0xe6, 0x40, 0x98, 0xba, 0xf4, 0x94, 0x5b, 0xea, 0x34, 0x5a, 0x75, 0x7e, 0x1f, 0x26, 0x97, - 0x58, 0xea, 0x50, 0xd7, 0xb2, 0xdd, 0x21, 0xba, 0x03, 0xd9, 0x66, 0xb7, 0xdb, 0x17, 0x05, 0xd8, - 0x1b, 0x67, 0xe7, 0xe5, 0xeb, 0x73, 0x28, 0xde, 0xa0, 0x16, 0x07, 0x71, 0x82, 0xc8, 0x6f, 0xca, - 0x25, 0x20, 0xce, 0x5d, 0xa8, 0xa5, 0x22, 0xfc, 0xdf, 0x92, 0xa0, 0x19, 0xa6, 0x49, 0xc7, 0x8c, - 0xf7, 0x2b, 0xd2, 0xdd, 0x83, 0xdc, 0x98, 0x7f, 0xd9, 0xa2, 0x88, 0xe0, 0x61, 0xf1, 0x60, 0xe9, - 0x13, 0xef, 0x82, 0x5e, 0x05, 0x7b, 0x0e, 0x35, 0xac, 0x91, 0x1d, 0x04, 0xbc, 0xb8, 0x14, 0x32, - 0x1c, 0x59, 0x2a, 0xfd, 0x32, 0x01, 0xd7, 0x97, 0x20, 0xd0, 0x07, 0x90, 0xf6, 0x3d, 0x27, 0xdc, - 0x9e, 0xdb, 0xaf, 0x7a, 0x80, 0xe1, 0xaa, 0x58, 0x20, 0xd1, 0x16, 0x00, 0x99, 0x30, 0x8f, 0x88, - 0xf1, 0xc5, 0xc6, 0xe4, 0x70, 0x4c, 0x82, 0x9e, 0x41, 0x36, 0xa0, 0xa6, 0x4f, 0x43, 0x3e, 0xf3, - 0xe9, 0xff, 0xd7, 0xfb, 0x4a, 0x57, 0x98, 0xc1, 0xca, 0x5c, 0xa9, 0x02, 0x59, 0x29, 0xe1, 0x11, - 0x6d, 0x11, 0x46, 0x84, 0xd3, 0x45, 0x2c, 0xbe, 0x79, 0xa0, 0x10, 0x67, 0x18, 0x06, 0x0a, 0x71, - 0x86, 0xfa, 0xcf, 0x92, 0x00, 0x8d, 0xe7, 0x8c, 0xfa, 0x2e, 0x71, 0x6a, 0x06, 0x6a, 0xc4, 0x32, - 0xa4, 0x9c, 0xed, 0x0f, 0x96, 0x3e, 0xcb, 0x45, 0x1a, 0x95, 0x9a, 0xb1, 0x24, 0x47, 0xde, 0x82, - 0xd4, 0xc4, 0x77, 0xd4, 0x13, 0xaf, 0x20, 0x22, 0x7d, 0xbc, 0x87, 0xb9, 0x0c, 0x35, 0x66, 0x19, - 0x29, 0xf5, 0xea, 0xb7, 0xf9, 0xd8, 0x00, 0xbf, 0xf9, 0xac, 0xf4, 0x1e, 0xc0, 0xcc, 0x6b, 0xb4, - 0x05, 0x99, 0xda, 0x6e, 0xb7, 0xbb, 0xa7, 0xad, 0xc8, 0x1a, 0x71, 0xd6, 0x25, 0xc4, 0xfa, 0xdf, - 0x26, 0x20, 0x57, 0x33, 0xd4, 0xad, 0xb2, 0x0b, 0x9a, 0xc8, 0x25, 0x26, 0xf5, 0xd9, 0x80, 0x3e, - 0x1f, 0xdb, 0xfe, 0x54, 0xa5, 0x83, 0xab, 0x59, 0xfc, 0x3a, 0xd7, 0xaa, 0x51, 0x9f, 0x35, 0x84, - 0x0e, 0xc2, 0x50, 0xa4, 0x6a, 0x8a, 0x03, 0x93, 0x84, 0xc9, 0x79, 0xeb, 0xea, 0xa5, 0x90, 0xec, - 0x6f, 0xd6, 0x0e, 0x70, 0x21, 0x34, 0x52, 0x23, 0x81, 0xfe, 0x14, 0xae, 0xb7, 0x7d, 0xf3, 0x88, - 0x06, 0x4c, 0x0e, 0xaa, 0x5c, 0xfe, 0x14, 0x6e, 0x33, 0x12, 0x1c, 0x0f, 0x8e, 0xec, 0x80, 0x79, - 0xfe, 0x74, 0xe0, 0x53, 0x46, 0x5d, 0xde, 0x3f, 0x10, 0xff, 0x00, 0xa8, 0x1a, 0xfc, 0x16, 0xc7, - 0x3c, 0x96, 0x10, 0x1c, 0x22, 0xf6, 0x38, 0x40, 0x6f, 0x42, 0x91, 0x13, 0xb6, 0x3a, 0x3d, 0x24, - 0x13, 0x87, 0x05, 0xe8, 0xc7, 0x00, 0x8e, 0x37, 0x1c, 0xbc, 0x76, 0x26, 0xcf, 0x3b, 0xde, 0x50, - 0x7e, 0xea, 0xbf, 0x0b, 0x5a, 0xdd, 0x0e, 0xc6, 0x84, 0x99, 0x47, 0xe1, 0xe3, 0x02, 0x7a, 0x04, - 0xda, 0x11, 0x25, 0x3e, 0x3b, 0xa0, 0x84, 0x0d, 0xc6, 0xd4, 0xb7, 0x3d, 0xeb, 0xb5, 0x96, 0x74, - 0x23, 0xd2, 0xea, 0x08, 0x25, 0xfd, 0x57, 0x09, 0x00, 0x4c, 0x0e, 0x43, 0x02, 0xf0, 0x43, 0xb8, - 0x16, 0xb8, 0x64, 0x1c, 0x1c, 0x79, 0x6c, 0x60, 0xbb, 0x8c, 0xfa, 0x27, 0xc4, 0x51, 0x05, 0xa2, - 0x16, 0x76, 0x34, 0x95, 0x1c, 0xbd, 0x07, 0xe8, 0x98, 0xd2, 0xf1, 0xc0, 0x73, 0xac, 0x41, 0xd8, - 0x29, 0xff, 0xa2, 0x48, 0x63, 0x8d, 0xf7, 0xb4, 0x1d, 0xab, 0x1b, 0xca, 0x51, 0x15, 0xb6, 0xf8, - 0x0a, 0x50, 0x97, 0xf9, 0x36, 0x0d, 0x06, 0x87, 0x9e, 0x3f, 0x08, 0x1c, 0xef, 0x74, 0x70, 0xe8, - 0x39, 0x8e, 0x77, 0x4a, 0xfd, 0xb0, 0xfc, 0x2e, 0x39, 0xde, 0xb0, 0x21, 0x41, 0xbb, 0x9e, 0xdf, - 0x75, 0xbc, 0xd3, 0xdd, 0x10, 0xc1, 0x59, 0xc2, 0x6c, 0xda, 0xcc, 0x36, 0x8f, 0x43, 0x96, 0x10, - 0x49, 0x7b, 0xb6, 0x79, 0x8c, 0xee, 0xc0, 0x1a, 0x75, 0xa8, 0x28, 0xe2, 0x24, 0x2a, 0x23, 0x50, - 0xc5, 0x50, 0xc8, 0x41, 0xfa, 0x6f, 0x41, 0xbe, 0xe3, 0x10, 0x53, 0xfc, 0x11, 0xc4, 0x4b, 0x62, - 0xd3, 0x73, 0x79, 0x10, 0xd8, 0x2e, 0x93, 0xd9, 0x31, 0x8f, 0xe3, 0x22, 0xfd, 0xa7, 0x00, 0x9f, - 0x7b, 0xb6, 0xdb, 0xf3, 0x8e, 0xa9, 0x2b, 0xde, 0xcc, 0x39, 0xeb, 0x55, 0x5b, 0x99, 0xc7, 0xaa, - 0x25, 0x38, 0x39, 0x71, 0xc9, 0x90, 0xfa, 0xd1, 0xd3, 0xb1, 0x6c, 0xf2, 0xcb, 0x25, 0x8b, 0x3d, - 0x8f, 0xd5, 0x0c, 0x54, 0x86, 0xac, 0x49, 0x06, 0xe1, 0xc9, 0x2b, 0x56, 0xf3, 0x97, 0x17, 0xdb, - 0x99, 0x9a, 0xf1, 0x84, 0x4e, 0x71, 0xc6, 0x24, 0x4f, 0xe8, 0x94, 0xdf, 0xbe, 0x26, 0x11, 0xe7, - 0x45, 0x98, 0x29, 0xca, 0xdb, 0xb7, 0x66, 0xf0, 0xc3, 0x80, 0xb3, 0x26, 0xe1, 0xbf, 0xe8, 0x03, - 0x28, 0x2a, 0xd0, 0xe0, 0x88, 0x04, 0x47, 0x92, 0xab, 0x56, 0xd7, 0x2f, 0x2f, 0xb6, 0x41, 0x22, - 0x1f, 0x93, 0xe0, 0x08, 0x83, 0x44, 0xf3, 0x6f, 0xd4, 0x80, 0xc2, 0x97, 0x9e, 0xed, 0x0e, 0x98, - 0x98, 0x84, 0xaa, 0xa4, 0x97, 0x9e, 0x9f, 0xd9, 0x54, 0x55, 0x79, 0x0f, 0x5f, 0x46, 0x12, 0xfd, - 0x5f, 0x12, 0x50, 0xe0, 0x36, 0xed, 0x43, 0xdb, 0xe4, 0xb7, 0xe5, 0x77, 0xcf, 0xf4, 0xb7, 0x20, - 0x65, 0x06, 0xbe, 0x9a, 0x9b, 0x48, 0x75, 0xb5, 0x2e, 0xc6, 0x5c, 0x86, 0x3e, 0x83, 0xac, 0x2c, - 0x2e, 0x54, 0x92, 0xd7, 0xbf, 0xfd, 0x5e, 0x57, 0x2e, 0x2a, 0x3d, 0xb1, 0x97, 0x33, 0xef, 0xc4, - 0x2c, 0x8b, 0x38, 0x2e, 0x42, 0x37, 0x21, 0x69, 0xba, 0x22, 0x28, 0xd4, 0x7f, 0x69, 0xb5, 0x16, - 0x4e, 0x9a, 0xae, 0xfe, 0x4f, 0x09, 0x58, 0x6b, 0xb8, 0xa6, 0x3f, 0x15, 0x49, 0x92, 0x6f, 0xc4, - 0x6d, 0xc8, 0x07, 0x93, 0x83, 0x60, 0x1a, 0x30, 0x3a, 0x0a, 0x9f, 0xea, 0x23, 0x01, 0x6a, 0x42, - 0x9e, 0x38, 0x43, 0xcf, 0xb7, 0xd9, 0xd1, 0x48, 0x71, 0xe3, 0xe5, 0x89, 0x39, 0x6e, 0xb3, 0x62, - 0x84, 0x2a, 0x78, 0xa6, 0x1d, 0xa6, 0xe2, 0x94, 0x70, 0x56, 0xa4, 0xe2, 0xb7, 0xa1, 0xe8, 0x90, - 0x11, 0xa7, 0xc2, 0x03, 0x5e, 0x72, 0x89, 0x79, 0xa4, 0x71, 0x41, 0xc9, 0x78, 0x19, 0xa9, 0xeb, - 0x90, 0x8f, 0x8c, 0xa1, 0x0d, 0x28, 0x18, 0x8d, 0xee, 0xe0, 0xc3, 0x9d, 0x07, 0x83, 0x47, 0xb5, - 0x7d, 0x6d, 0x45, 0x31, 0x81, 0xbf, 0x4f, 0xc0, 0xda, 0xbe, 0x8c, 0x41, 0x45, 0x9c, 0xee, 0xc0, - 0xaa, 0x4f, 0x0e, 0x59, 0x48, 0xed, 0xd2, 0x32, 0xb8, 0x78, 0x12, 0xe0, 0xd4, 0x8e, 0x77, 0x2d, - 0xa7, 0x76, 0xb1, 0x3f, 0x8a, 0x52, 0x57, 0xfe, 0x51, 0x94, 0xfe, 0x8d, 0xfc, 0x51, 0xa4, 0xff, - 0x63, 0x02, 0x36, 0xd4, 0x45, 0x1d, 0xfe, 0x39, 0xb2, 0x94, 0xae, 0x7f, 0x0c, 0xeb, 0xf2, 0x1e, - 0x1f, 0xf0, 0xeb, 0x7a, 0xa0, 0x6a, 0xf9, 0x7c, 0x55, 0xbb, 0xbc, 0xd8, 0x2e, 0x4a, 0x03, 0x75, - 0xc2, 0x48, 0xb3, 0x8e, 0x8b, 0xc1, 0xac, 0x65, 0xa1, 0x9f, 0xa8, 0x67, 0xd3, 0xd4, 0xab, 0xf9, - 0xe3, 0xc2, 0xf0, 0x95, 0xd9, 0x5b, 0x6a, 0xac, 0xbe, 0x4d, 0xc7, 0xeb, 0x5b, 0xfd, 0x16, 0xa4, - 0x39, 0x8a, 0xd7, 0x58, 0xbb, 0xcd, 0xbd, 0x86, 0xb6, 0x82, 0x56, 0x21, 0xd5, 0x68, 0x3d, 0xd5, - 0x12, 0xf7, 0x7f, 0x95, 0x82, 0x7c, 0x54, 0xc5, 0xf3, 0x33, 0xc0, 0xa9, 0xe3, 0x8a, 0x7c, 0xcb, - 0x8b, 0xe4, 0x2d, 0x41, 0x1a, 0xf3, 0xc6, 0xde, 0x5e, 0xbb, 0x66, 0xf4, 0x1a, 0x75, 0xed, 0x33, - 0xc9, 0x2d, 0x23, 0x80, 0xe1, 0x38, 0x1e, 0x8f, 0x62, 0x0b, 0xe9, 0x33, 0x6e, 0xf9, 0x42, 0xbd, - 0x18, 0x46, 0xa8, 0x90, 0x58, 0xbe, 0x03, 0x39, 0xa3, 0xdb, 0x6d, 0x3e, 0x6a, 0x35, 0xea, 0xda, - 0x57, 0x89, 0xd2, 0xf7, 0xce, 0xce, 0xcb, 0xd7, 0x66, 0xa6, 0x82, 0xc0, 0x1e, 0xba, 0xd4, 0x12, - 0xa8, 0x5a, 0xad, 0xd1, 0xe1, 0xe3, 0xbd, 0x48, 0x2e, 0xa2, 0x04, 0xa3, 0x12, 0xaf, 0xff, 0xf9, - 0x0e, 0x6e, 0x74, 0x0c, 0xcc, 0x47, 0xfc, 0x2a, 0xb9, 0xe0, 0x57, 0xc7, 0xa7, 0x63, 0xe2, 0xf3, - 0x31, 0xb7, 0xc2, 0x7f, 0xc1, 0x5e, 0xa4, 0xe4, 0x0b, 0xf1, 0xec, 0xe9, 0x82, 0x12, 0x6b, 0xca, - 0x47, 0x13, 0x4f, 0x3e, 0xc2, 0x4c, 0x6a, 0x61, 0xb4, 0x2e, 0x23, 0x3e, 0xe3, 0x56, 0x74, 0x58, - 0xc5, 0xfd, 0x56, 0x4b, 0xcc, 0x2e, 0xbd, 0x30, 0x3b, 0x3c, 0x71, 0x5d, 0x8e, 0xb9, 0x0b, 0xb9, - 0xf0, 0x45, 0x48, 0xfb, 0x2a, 0xbd, 0xe0, 0x50, 0x2d, 0x7c, 0xce, 0x12, 0x03, 0x3e, 0xee, 0xf7, - 0xc4, 0x9f, 0x74, 0x2f, 0x32, 0x8b, 0x03, 0x1e, 0x4d, 0x98, 0xc5, 0xd9, 0x7c, 0x39, 0xa2, 0xd7, - 0x5f, 0x65, 0x24, 0xab, 0x89, 0x30, 0x92, 0x5b, 0x73, 0x3b, 0xb8, 0xf1, 0xb9, 0xfc, 0x3f, 0xef, - 0x45, 0x76, 0xc1, 0x0e, 0xa6, 0x5f, 0x52, 0x93, 0x51, 0x6b, 0xf6, 0x00, 0x1e, 0x75, 0xdd, 0xff, - 0x3d, 0xc8, 0x85, 0x19, 0x10, 0x6d, 0x41, 0xf6, 0x59, 0x1b, 0x3f, 0x69, 0x60, 0x6d, 0x45, 0xae, - 0x4e, 0xd8, 0xf3, 0x4c, 0x5e, 0x21, 0x65, 0x58, 0xdd, 0x37, 0x5a, 0xc6, 0xa3, 0x06, 0x0e, 0x1f, - 0xe0, 0x43, 0x80, 0x3a, 0xc6, 0x25, 0x4d, 0x0d, 0x10, 0xd9, 0xbc, 0xff, 0x39, 0x80, 0x0c, 0x55, - 0xf1, 0xbc, 0xaf, 0x43, 0xbe, 0xd6, 0x6e, 0xf5, 0x8c, 0x66, 0x4b, 0x0c, 0x22, 0x09, 0x5a, 0xf4, - 0xb0, 0x23, 0x89, 0xee, 0x26, 0xa4, 0x5b, 0xed, 0x7a, 0x43, 0x4b, 0x94, 0xd6, 0xcf, 0xce, 0xcb, - 0xf2, 0x9f, 0x53, 0xd1, 0x53, 0xbd, 0xfd, 0xf5, 0x37, 0x5b, 0x2b, 0xbf, 0xf8, 0x66, 0x6b, 0xe5, - 0x97, 0xdf, 0x6c, 0x25, 0x5e, 0x5c, 0x6e, 0x25, 0xbe, 0xbe, 0xdc, 0x4a, 0xfc, 0xfc, 0x72, 0x2b, - 0xf1, 0x1f, 0x97, 0x5b, 0x89, 0x83, 0xac, 0xa0, 0xab, 0x1f, 0xfd, 0x5f, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x94, 0xbd, 0x04, 0x3e, 0xdd, 0x22, 0x00, 0x00, + 0x76, 0x17, 0x3f, 0x45, 0x3e, 0x92, 0x52, 0x4f, 0xcd, 0xec, 0x58, 0x43, 0x8f, 0x25, 0xba, 0xed, + 0x59, 0x7b, 0x67, 0x1d, 0xda, 0x96, 0x37, 0xc6, 0xd8, 0xb3, 0x59, 0xbb, 0xf9, 0xa1, 0x19, 0xee, + 0x48, 0x14, 0x51, 0x24, 0x35, 0x30, 0x02, 0x84, 0x28, 0x75, 0x97, 0xa8, 0xb6, 0x9a, 0xdd, 0x4c, + 0x77, 0x51, 0x1a, 0x26, 0x08, 0x30, 0xc9, 0x21, 0x09, 0x74, 0xca, 0x3d, 0x10, 0x16, 0x41, 0x82, + 0xdc, 0x72, 0x0e, 0x90, 0x93, 0x8f, 0x3e, 0x6e, 0x10, 0x20, 0x58, 0x24, 0x88, 0x10, 0x2b, 0xff, + 0xc0, 0x02, 0x41, 0xb0, 0x87, 0xe4, 0x10, 0xd4, 0x47, 0x37, 0x9b, 0x1c, 0x8e, 0x3c, 0xde, 0xdd, + 0x13, 0xbb, 0x5e, 0xfd, 0xde, 0xab, 0x57, 0x55, 0xaf, 0x5e, 0xfd, 0x5e, 0x11, 0x0a, 0x6c, 0x3a, + 0xa6, 0x41, 0x75, 0xec, 0x7b, 0xcc, 0x43, 0xc8, 0xf2, 0xcc, 0x13, 0xea, 0x57, 0x83, 0x33, 0xe2, + 0x8f, 0x4e, 0x6c, 0x56, 0x3d, 0xfd, 0xb0, 0x7c, 0x87, 0xd9, 0x23, 0x1a, 0x30, 0x32, 0x1a, 0xbf, + 0x1f, 0x7d, 0x49, 0x78, 0xf9, 0x35, 0x6b, 0xe2, 0x13, 0x66, 0x7b, 0xee, 0xfb, 0xe1, 0x87, 0xea, + 0xb8, 0x35, 0xf4, 0x86, 0x9e, 0xf8, 0x7c, 0x9f, 0x7f, 0x49, 0xa9, 0xbe, 0x05, 0xab, 0x07, 0xd4, + 0x0f, 0x6c, 0xcf, 0x45, 0xb7, 0x20, 0x63, 0xbb, 0x16, 0x7d, 0xb6, 0x91, 0xa8, 0x24, 0xde, 0x4d, + 0x63, 0xd9, 0xd0, 0xff, 0x26, 0x01, 0x05, 0xc3, 0x75, 0x3d, 0x26, 0x6c, 0x05, 0x08, 0x41, 0xda, + 0x25, 0x23, 0x2a, 0x40, 0x79, 0x2c, 0xbe, 0x51, 0x1d, 0xb2, 0x0e, 0x39, 0xa4, 0x4e, 0xb0, 0x91, + 0xac, 0xa4, 0xde, 0x2d, 0x6c, 0xff, 0xb0, 0xfa, 0xa2, 0xcf, 0xd5, 0x98, 0x91, 0xea, 0xae, 0x40, + 0x37, 0x5d, 0xe6, 0x4f, 0xb1, 0x52, 0x2d, 0x7f, 0x02, 0x85, 0x98, 0x18, 0x69, 0x90, 0x3a, 0xa1, + 0x53, 0x35, 0x0c, 0xff, 0xe4, 0xfe, 0x9d, 0x12, 0x67, 0x42, 0x37, 0x92, 0x42, 0x26, 0x1b, 0x9f, + 0x26, 0x1f, 0x24, 0xf4, 0x2f, 0x20, 0x8f, 0x69, 0xe0, 0x4d, 0x7c, 0x93, 0x06, 0xe8, 0x07, 0x90, + 0x77, 0x89, 0xeb, 0x0d, 0xcc, 0xf1, 0x24, 0x10, 0xea, 0xa9, 0x5a, 0xf1, 0xea, 0x72, 0x2b, 0xd7, + 0x26, 0xae, 0x57, 0xef, 0xf4, 0x03, 0x9c, 0xe3, 0xdd, 0xf5, 0xf1, 0x24, 0x40, 0x6f, 0x42, 0x71, + 0x44, 0x47, 0x9e, 0x3f, 0x1d, 0x1c, 0x4e, 0x19, 0x0d, 0x84, 0xe1, 0x14, 0x2e, 0x48, 0x59, 0x8d, + 0x8b, 0xf4, 0xbf, 0x4a, 0xc0, 0xad, 0xd0, 0x36, 0xa6, 0x7f, 0x38, 0xb1, 0x7d, 0x3a, 0xa2, 0x2e, + 0x0b, 0xd0, 0xef, 0x42, 0xd6, 0xb1, 0x47, 0x36, 0x93, 0x63, 0x14, 0xb6, 0xdf, 0x58, 0x36, 0xe7, + 0xc8, 0x2b, 0xac, 0xc0, 0xc8, 0x80, 0xa2, 0x4f, 0x03, 0xea, 0x9f, 0xca, 0x95, 0x10, 0x43, 0x7e, + 0xab, 0xf2, 0x9c, 0x8a, 0xbe, 0x03, 0xb9, 0x8e, 0x43, 0xd8, 0x91, 0xe7, 0x8f, 0x90, 0x0e, 0x45, + 0xe2, 0x9b, 0xc7, 0x36, 0xa3, 0x26, 0x9b, 0xf8, 0xe1, 0xae, 0xcc, 0xc9, 0xd0, 0x6d, 0x48, 0x7a, + 0x72, 0xa0, 0x7c, 0x2d, 0x7b, 0x75, 0xb9, 0x95, 0xdc, 0xef, 0xe2, 0xa4, 0x17, 0xe8, 0x0f, 0xe1, + 0x46, 0xc7, 0x99, 0x0c, 0x6d, 0xb7, 0x41, 0x03, 0xd3, 0xb7, 0xc7, 0xdc, 0x3a, 0xdf, 0x5e, 0x1e, + 0x7c, 0xe1, 0xf6, 0xf2, 0xef, 0x68, 0xcb, 0x93, 0xb3, 0x2d, 0xd7, 0xff, 0x22, 0x09, 0x37, 0x9a, + 0xee, 0xd0, 0x76, 0x69, 0x5c, 0xfb, 0x1e, 0xac, 0x51, 0x21, 0x1c, 0x9c, 0xca, 0xa0, 0x52, 0x76, + 0x4a, 0x52, 0x1a, 0x46, 0x5a, 0x6b, 0x21, 0x5e, 0x3e, 0x5c, 0x36, 0xfd, 0x17, 0xac, 0x2f, 0x8b, + 0x1a, 0xd4, 0x84, 0xd5, 0xb1, 0x98, 0x44, 0xb0, 0x91, 0x12, 0xb6, 0xee, 0x2d, 0xb3, 0xf5, 0xc2, + 0x3c, 0x6b, 0xe9, 0xaf, 0x2f, 0xb7, 0x56, 0x70, 0xa8, 0xfb, 0x9b, 0x04, 0xdf, 0x7f, 0x25, 0x60, + 0xbd, 0xed, 0x59, 0x73, 0xeb, 0x50, 0x86, 0xdc, 0xb1, 0x17, 0xb0, 0xd8, 0x41, 0x89, 0xda, 0xe8, + 0x01, 0xe4, 0xc6, 0x6a, 0xfb, 0xd4, 0xee, 0xdf, 0x5d, 0xee, 0xb2, 0xc4, 0xe0, 0x08, 0x8d, 0x1e, + 0x42, 0xde, 0x0f, 0x63, 0x62, 0x23, 0xf5, 0x2a, 0x81, 0x33, 0xc3, 0xa3, 0xdf, 0x83, 0xac, 0xdc, + 0x84, 0x8d, 0xb4, 0xd0, 0xbc, 0xf7, 0x4a, 0x6b, 0x8e, 0x95, 0x92, 0xfe, 0x8b, 0x04, 0x68, 0x98, + 0x1c, 0xb1, 0x3d, 0x3a, 0x3a, 0xa4, 0x7e, 0x97, 0x11, 0x36, 0x09, 0xd0, 0x6d, 0xc8, 0x3a, 0x94, + 0x58, 0xd4, 0x17, 0x93, 0xcc, 0x61, 0xd5, 0x42, 0x7d, 0x1e, 0xe4, 0xc4, 0x3c, 0x26, 0x87, 0xb6, + 0x63, 0xb3, 0xa9, 0x98, 0xe6, 0xda, 0xf2, 0x5d, 0x5e, 0xb4, 0x59, 0xc5, 0x31, 0x45, 0x3c, 0x67, + 0x06, 0x6d, 0xc0, 0xea, 0x88, 0x06, 0x01, 0x19, 0x52, 0x31, 0xfb, 0x3c, 0x0e, 0x9b, 0xfa, 0x43, + 0x28, 0xc6, 0xf5, 0x50, 0x01, 0x56, 0xfb, 0xed, 0x27, 0xed, 0xfd, 0xa7, 0x6d, 0x6d, 0x05, 0xad, + 0x43, 0xa1, 0xdf, 0xc6, 0x4d, 0xa3, 0xfe, 0xd8, 0xa8, 0xed, 0x36, 0xb5, 0x04, 0x2a, 0x41, 0x7e, + 0xd6, 0x4c, 0xea, 0x3f, 0x4b, 0x00, 0xf0, 0x0d, 0x54, 0x93, 0xfa, 0x14, 0x32, 0x01, 0x23, 0x4c, + 0x6e, 0xdc, 0xda, 0xf6, 0xdb, 0xcb, 0xbc, 0x9e, 0xc1, 0xab, 0xfc, 0x87, 0x62, 0xa9, 0x12, 0xf7, + 0x30, 0xb9, 0xe8, 0x61, 0x46, 0x20, 0xe7, 0x5d, 0xcb, 0x41, 0xba, 0xc1, 0xbf, 0x12, 0x28, 0x0f, + 0x19, 0xdc, 0x34, 0x1a, 0x5f, 0x68, 0x49, 0xa4, 0x41, 0xb1, 0xd1, 0xea, 0xd6, 0xf7, 0xdb, 0xed, + 0x66, 0xbd, 0xd7, 0x6c, 0x68, 0x29, 0xfd, 0x1e, 0x64, 0x5a, 0x23, 0x32, 0xa4, 0xe8, 0x2e, 0x8f, + 0x80, 0x23, 0xea, 0x53, 0xd7, 0x0c, 0x03, 0x6b, 0x26, 0xd0, 0x7f, 0x9e, 0x87, 0xcc, 0x9e, 0x37, + 0x71, 0x19, 0xda, 0x8e, 0x9d, 0xe2, 0xb5, 0xed, 0xcd, 0x65, 0x53, 0x10, 0xc0, 0x6a, 0x6f, 0x3a, + 0xa6, 0xea, 0x94, 0xdf, 0x86, 0xac, 0x8c, 0x15, 0xe5, 0xba, 0x6a, 0x71, 0x39, 0x23, 0xfe, 0x90, + 0x32, 0xb5, 0xe8, 0xaa, 0x85, 0xde, 0x85, 0x9c, 0x4f, 0x89, 0xe5, 0xb9, 0xce, 0x54, 0x84, 0x54, + 0x4e, 0xa6, 0x59, 0x4c, 0x89, 0xb5, 0xef, 0x3a, 0x53, 0x1c, 0xf5, 0xa2, 0xc7, 0x50, 0x3c, 0xb4, + 0x5d, 0x6b, 0xe0, 0x8d, 0x65, 0xce, 0xcb, 0xbc, 0x3c, 0x00, 0xa5, 0x57, 0x35, 0xdb, 0xb5, 0xf6, + 0x25, 0x18, 0x17, 0x0e, 0x67, 0x0d, 0xd4, 0x86, 0xb5, 0x53, 0xcf, 0x99, 0x8c, 0x68, 0x64, 0x2b, + 0x2b, 0x6c, 0xbd, 0xf3, 0x72, 0x5b, 0x07, 0x02, 0x1f, 0x5a, 0x2b, 0x9d, 0xc6, 0x9b, 0xe8, 0x09, + 0x94, 0xd8, 0x68, 0x7c, 0x14, 0x44, 0xe6, 0x56, 0x85, 0xb9, 0xef, 0x5f, 0xb3, 0x60, 0x1c, 0x1e, + 0x5a, 0x2b, 0xb2, 0x58, 0xab, 0xfc, 0x67, 0x29, 0x28, 0xc4, 0x3c, 0x47, 0x5d, 0x28, 0x8c, 0x7d, + 0x6f, 0x4c, 0x86, 0x22, 0x6f, 0xab, 0xbd, 0xf8, 0xf0, 0x95, 0x66, 0x5d, 0xed, 0xcc, 0x14, 0x71, + 0xdc, 0x8a, 0x7e, 0x91, 0x84, 0x42, 0xac, 0x13, 0xdd, 0x87, 0x1c, 0xee, 0xe0, 0xd6, 0x81, 0xd1, + 0x6b, 0x6a, 0x2b, 0xe5, 0xbb, 0xe7, 0x17, 0x95, 0x0d, 0x61, 0x2d, 0x6e, 0xa0, 0xe3, 0xdb, 0xa7, + 0x3c, 0xf4, 0xde, 0x85, 0xd5, 0x10, 0x9a, 0x28, 0xbf, 0x7e, 0x7e, 0x51, 0x79, 0x6d, 0x11, 0x1a, + 0x43, 0xe2, 0xee, 0x63, 0x03, 0x37, 0x1b, 0x5a, 0x72, 0x39, 0x12, 0x77, 0x8f, 0x89, 0x4f, 0x2d, + 0xf4, 0x7d, 0xc8, 0x2a, 0x60, 0xaa, 0x5c, 0x3e, 0xbf, 0xa8, 0xdc, 0x5e, 0x04, 0xce, 0x70, 0xb8, + 0xbb, 0x6b, 0x1c, 0x34, 0xb5, 0xf4, 0x72, 0x1c, 0xee, 0x3a, 0xe4, 0x94, 0xa2, 0xb7, 0x21, 0x23, + 0x61, 0x99, 0xf2, 0x9d, 0xf3, 0x8b, 0xca, 0xf7, 0x5e, 0x30, 0xc7, 0x51, 0xe5, 0x8d, 0xbf, 0xfc, + 0xdb, 0xcd, 0x95, 0x7f, 0xfa, 0xbb, 0x4d, 0x6d, 0xb1, 0xbb, 0xfc, 0x7f, 0x09, 0x28, 0xcd, 0x6d, + 0x39, 0xd2, 0x21, 0xeb, 0x7a, 0xa6, 0x37, 0x96, 0xe9, 0x3c, 0x57, 0x83, 0xab, 0xcb, 0xad, 0x6c, + 0xdb, 0xab, 0x7b, 0xe3, 0x29, 0x56, 0x3d, 0xe8, 0xc9, 0xc2, 0x85, 0xf4, 0xd1, 0x2b, 0xc6, 0xd3, + 0xd2, 0x2b, 0xe9, 0x33, 0x28, 0x59, 0xbe, 0x7d, 0x4a, 0xfd, 0x81, 0xe9, 0xb9, 0x47, 0xf6, 0x50, + 0xa5, 0xea, 0xf2, 0x32, 0x9b, 0x0d, 0x01, 0xc4, 0x45, 0xa9, 0x50, 0x17, 0xf8, 0xdf, 0xe0, 0x32, + 0x2a, 0x1f, 0x40, 0x31, 0x1e, 0xa1, 0xe8, 0x0d, 0x80, 0xc0, 0xfe, 0x23, 0xaa, 0xf8, 0x8d, 0x60, + 0x43, 0x38, 0xcf, 0x25, 0x82, 0xdd, 0xa0, 0x77, 0x20, 0x3d, 0xf2, 0x2c, 0x69, 0x27, 0x53, 0xbb, + 0xc9, 0xef, 0xc4, 0x7f, 0xbb, 0xdc, 0x2a, 0x78, 0x41, 0x75, 0xc7, 0x76, 0xe8, 0x9e, 0x67, 0x51, + 0x2c, 0x00, 0xfa, 0x29, 0xa4, 0x79, 0xaa, 0x40, 0xaf, 0x43, 0xba, 0xd6, 0x6a, 0x37, 0xb4, 0x95, + 0xf2, 0x8d, 0xf3, 0x8b, 0x4a, 0x49, 0x2c, 0x09, 0xef, 0xe0, 0xb1, 0x8b, 0xb6, 0x20, 0x7b, 0xb0, + 0xbf, 0xdb, 0xdf, 0xe3, 0xe1, 0x75, 0xf3, 0xfc, 0xa2, 0xb2, 0x1e, 0x75, 0xcb, 0x45, 0x43, 0x6f, + 0x40, 0xa6, 0xb7, 0xd7, 0xd9, 0xe9, 0x6a, 0xc9, 0x32, 0x3a, 0xbf, 0xa8, 0xac, 0x45, 0xfd, 0xc2, + 0xe7, 0xf2, 0x0d, 0xb5, 0xab, 0xf9, 0x48, 0xae, 0xff, 0x6f, 0x12, 0x4a, 0x98, 0xf3, 0x5b, 0x9f, + 0x75, 0x3c, 0xc7, 0x36, 0xa7, 0xa8, 0x03, 0x79, 0xd3, 0x73, 0x2d, 0x3b, 0x76, 0xa6, 0xb6, 0x5f, + 0x72, 0x09, 0xce, 0xb4, 0xc2, 0x56, 0x3d, 0xd4, 0xc4, 0x33, 0x23, 0x68, 0x1b, 0x32, 0x16, 0x75, + 0xc8, 0xf4, 0xba, 0xdb, 0xb8, 0xa1, 0xb8, 0x34, 0x96, 0x50, 0xc1, 0x1c, 0xc9, 0xb3, 0x01, 0x61, + 0x8c, 0x8e, 0xc6, 0x4c, 0xde, 0xc6, 0x69, 0x5c, 0x18, 0x91, 0x67, 0x86, 0x12, 0xa1, 0x1f, 0x41, + 0xf6, 0xcc, 0x76, 0x2d, 0xef, 0x4c, 0x5d, 0xb8, 0xd7, 0xdb, 0x55, 0x58, 0xfd, 0x9c, 0xdf, 0xb3, + 0x0b, 0xce, 0xf2, 0x55, 0x6f, 0xef, 0xb7, 0x9b, 0xe1, 0xaa, 0xab, 0xfe, 0x7d, 0xb7, 0xed, 0xb9, + 0xfc, 0xc4, 0xc0, 0x7e, 0x7b, 0xb0, 0x63, 0xb4, 0x76, 0xfb, 0x98, 0xaf, 0xfc, 0xad, 0xf3, 0x8b, + 0x8a, 0x16, 0x41, 0x76, 0x88, 0xed, 0x70, 0x12, 0x78, 0x07, 0x52, 0x46, 0xfb, 0x0b, 0x2d, 0x59, + 0xd6, 0xce, 0x2f, 0x2a, 0xc5, 0xa8, 0xdb, 0x70, 0xa7, 0xb3, 0xc3, 0xb4, 0x38, 0xae, 0xfe, 0x1f, + 0x49, 0x28, 0xf6, 0xc7, 0x16, 0x61, 0x54, 0x46, 0x26, 0xaa, 0x40, 0x61, 0x4c, 0x7c, 0xe2, 0x38, + 0xd4, 0xb1, 0x83, 0x91, 0x2a, 0x14, 0xe2, 0x22, 0xf4, 0xe0, 0x3b, 0x2c, 0xa6, 0x22, 0x61, 0x6a, + 0x49, 0xfb, 0xb0, 0x76, 0x24, 0x9d, 0x1d, 0x10, 0x53, 0xec, 0x6e, 0x4a, 0xec, 0x6e, 0x75, 0x99, + 0x89, 0xb8, 0x57, 0x55, 0x35, 0x47, 0x43, 0x68, 0xe1, 0xd2, 0x51, 0xbc, 0x89, 0x3e, 0x86, 0xd5, + 0x91, 0xe7, 0xda, 0xcc, 0xf3, 0x5f, 0x69, 0x1f, 0x42, 0x30, 0xba, 0x0f, 0x37, 0xf8, 0x0e, 0x87, + 0x2e, 0x89, 0x6e, 0x71, 0x73, 0x25, 0xf1, 0xfa, 0x88, 0x3c, 0x53, 0x63, 0x62, 0x2e, 0xd6, 0x3f, + 0x86, 0xd2, 0x9c, 0x0f, 0xfc, 0x36, 0xef, 0x18, 0xfd, 0x6e, 0x53, 0x5b, 0x41, 0x45, 0xc8, 0xd5, + 0xf7, 0xdb, 0xbd, 0x56, 0xbb, 0xcf, 0xa9, 0x47, 0x11, 0x72, 0x78, 0x7f, 0x77, 0xb7, 0x66, 0xd4, + 0x9f, 0x68, 0x49, 0xfd, 0x7f, 0xa2, 0xf5, 0x55, 0xdc, 0xa3, 0x36, 0xcf, 0x3d, 0xde, 0x7b, 0xf9, + 0xd4, 0x15, 0xfb, 0x98, 0x35, 0x22, 0x0e, 0xf2, 0x63, 0x00, 0xb1, 0x8d, 0xd4, 0x1a, 0x10, 0x76, + 0x5d, 0x7d, 0xd1, 0x0b, 0x2b, 0x47, 0x9c, 0x57, 0x0a, 0x06, 0x43, 0x9f, 0x43, 0xd1, 0xf4, 0x46, + 0x63, 0x87, 0x2a, 0xfd, 0xd4, 0xab, 0xe8, 0x17, 0x22, 0x15, 0x83, 0xc5, 0x39, 0x50, 0x7a, 0x9e, + 0x03, 0xfd, 0x79, 0x02, 0x0a, 0x31, 0x87, 0xe7, 0xa9, 0x50, 0x11, 0x72, 0xfd, 0x4e, 0xc3, 0xe8, + 0xb5, 0xda, 0x8f, 0xb4, 0x04, 0x02, 0xc8, 0x8a, 0x05, 0x6c, 0x68, 0x49, 0x4e, 0xd7, 0xea, 0xfb, + 0x7b, 0x9d, 0xdd, 0xa6, 0x20, 0x43, 0xe8, 0x16, 0x68, 0xe1, 0x12, 0x0e, 0xba, 0x3d, 0x03, 0x73, + 0x69, 0x1a, 0xdd, 0x84, 0xf5, 0x48, 0xaa, 0x34, 0x33, 0xe8, 0x36, 0xa0, 0x48, 0x38, 0x33, 0x91, + 0xd5, 0xff, 0x04, 0xd6, 0xeb, 0x9e, 0xcb, 0x88, 0xed, 0x46, 0x54, 0x76, 0x9b, 0xcf, 0x5b, 0x89, + 0x06, 0xb6, 0x25, 0xb3, 0x6d, 0x6d, 0xfd, 0xea, 0x72, 0xab, 0x10, 0x41, 0x5b, 0x0d, 0x3e, 0xd3, + 0xb0, 0x61, 0xf1, 0x33, 0x35, 0xb6, 0x2d, 0x95, 0x3c, 0x57, 0xaf, 0x2e, 0xb7, 0x52, 0x9d, 0x56, + 0x03, 0x73, 0x19, 0x7a, 0x1d, 0xf2, 0xf4, 0x99, 0xcd, 0x06, 0x26, 0xcf, 0xae, 0x7c, 0x0d, 0x33, + 0x38, 0xc7, 0x05, 0x75, 0x9e, 0x4c, 0xff, 0x34, 0x09, 0xd0, 0x23, 0xc1, 0x89, 0x1a, 0xfa, 0x21, + 0xe4, 0xa3, 0x22, 0xfe, 0xba, 0x62, 0x32, 0xb6, 0x5f, 0x11, 0x1e, 0x7d, 0x14, 0x46, 0x8c, 0xe4, + 0xd8, 0xcb, 0x15, 0xd5, 0x58, 0xcb, 0x68, 0xea, 0x3c, 0x91, 0xe6, 0x77, 0x0d, 0xf5, 0x7d, 0xb5, + 0x71, 0xfc, 0x13, 0xd5, 0x45, 0xbe, 0x95, 0x73, 0x56, 0xcc, 0xed, 0xad, 0x65, 0x83, 0x2c, 0x2c, + 0xe8, 0xe3, 0x15, 0x3c, 0xd3, 0xab, 0x69, 0xb0, 0xe6, 0x4f, 0x5c, 0xee, 0xf5, 0x20, 0x10, 0xdd, + 0xba, 0x0d, 0xaf, 0xb5, 0x29, 0x3b, 0xf3, 0xfc, 0x13, 0x83, 0x31, 0x62, 0x1e, 0xf3, 0xa2, 0x5a, + 0x25, 0x99, 0x19, 0xe1, 0x4c, 0xcc, 0x11, 0xce, 0x0d, 0x58, 0x25, 0x8e, 0x4d, 0x02, 0x2a, 0x6f, + 0xe9, 0x3c, 0x0e, 0x9b, 0x9c, 0x16, 0x13, 0xcb, 0xf2, 0x69, 0x10, 0x50, 0x59, 0x06, 0xe6, 0xf1, + 0x4c, 0xa0, 0xff, 0x4b, 0x12, 0xa0, 0xd5, 0x31, 0xf6, 0x94, 0xf9, 0x06, 0x64, 0x8f, 0xc8, 0xc8, + 0x76, 0xa6, 0xd7, 0x1d, 0xb2, 0x19, 0xbe, 0x6a, 0x48, 0x43, 0x3b, 0x42, 0x07, 0x2b, 0x5d, 0xc1, + 0x96, 0x27, 0x87, 0x2e, 0x65, 0x11, 0x5b, 0x16, 0x2d, 0x7e, 0x35, 0xfb, 0xc4, 0x8d, 0x16, 0x56, + 0x36, 0xb8, 0xeb, 0x43, 0xc2, 0xe8, 0x19, 0x99, 0x86, 0x67, 0x42, 0x35, 0xd1, 0x63, 0xce, 0xa2, + 0x79, 0x71, 0x4f, 0xad, 0x8d, 0x8c, 0xe0, 0x1e, 0xdf, 0xe6, 0x0f, 0x56, 0x70, 0x49, 0x3a, 0x22, + 0xed, 0xf2, 0x43, 0x71, 0x53, 0xce, 0xba, 0xbe, 0x53, 0x11, 0xfb, 0x01, 0x94, 0xe6, 0xe6, 0xf9, + 0x42, 0x99, 0xd2, 0xea, 0x1c, 0xfc, 0x48, 0x4b, 0xab, 0xaf, 0x8f, 0xb5, 0xac, 0xfe, 0xdf, 0x09, + 0x80, 0x8e, 0xe7, 0x87, 0x9b, 0xb6, 0xfc, 0x59, 0x28, 0x27, 0x1e, 0x99, 0x4c, 0xcf, 0x51, 0xe1, + 0xb9, 0x94, 0xa7, 0xcf, 0xac, 0x70, 0xda, 0x2b, 0xe0, 0x38, 0x52, 0x44, 0x5b, 0x50, 0x90, 0xfb, + 0x3f, 0x18, 0x7b, 0xbe, 0xcc, 0x47, 0x25, 0x0c, 0x52, 0xc4, 0x35, 0xd1, 0x3d, 0x58, 0x1b, 0x4f, + 0x0e, 0x1d, 0x3b, 0x38, 0xa6, 0x96, 0xc4, 0xa4, 0x05, 0xa6, 0x14, 0x49, 0x39, 0x4c, 0x6f, 0x40, + 0x2e, 0xb4, 0x8e, 0x36, 0x20, 0xd5, 0xab, 0x77, 0xb4, 0x95, 0xf2, 0xfa, 0xf9, 0x45, 0xa5, 0x10, + 0x8a, 0x7b, 0xf5, 0x0e, 0xef, 0xe9, 0x37, 0x3a, 0x5a, 0x62, 0xbe, 0xa7, 0xdf, 0xe8, 0x94, 0xd3, + 0xfc, 0x96, 0xd4, 0xff, 0x3a, 0x01, 0x59, 0xc9, 0xd9, 0x96, 0xce, 0xd8, 0x80, 0xd5, 0xb0, 0x92, + 0x90, 0x44, 0xf2, 0x9d, 0x97, 0x93, 0xbe, 0xaa, 0xe2, 0x68, 0x72, 0x1f, 0x43, 0xbd, 0xf2, 0xa7, + 0x50, 0x8c, 0x77, 0x7c, 0xa7, 0x5d, 0xfc, 0x63, 0x28, 0xf0, 0x40, 0x09, 0xc9, 0xdf, 0x36, 0x64, + 0x25, 0xaf, 0x54, 0x59, 0xe5, 0x3a, 0x06, 0xaa, 0x90, 0xe8, 0x01, 0xac, 0x4a, 0xd6, 0x1a, 0xbe, + 0xa7, 0x6c, 0x5e, 0x1f, 0x8e, 0x38, 0x84, 0xeb, 0x9f, 0x41, 0xba, 0x43, 0xa9, 0x8f, 0xde, 0x82, + 0x55, 0xd7, 0xb3, 0xe8, 0x2c, 0x89, 0x2a, 0xc2, 0x6d, 0xd1, 0x56, 0x83, 0x13, 0x6e, 0x8b, 0xb6, + 0x2c, 0xbe, 0x78, 0xfc, 0x80, 0x86, 0x4f, 0x4a, 0xfc, 0x5b, 0xef, 0x41, 0xf1, 0x29, 0xb5, 0x87, + 0xc7, 0x8c, 0x5a, 0xc2, 0xd0, 0x7b, 0x90, 0x1e, 0xd3, 0xc8, 0xf9, 0x8d, 0xa5, 0xa1, 0x43, 0xa9, + 0x8f, 0x05, 0x8a, 0x1f, 0xc8, 0x33, 0xa1, 0xad, 0x5e, 0xf1, 0x54, 0x4b, 0xff, 0x87, 0x24, 0xac, + 0xb5, 0x82, 0x60, 0x42, 0x5c, 0x33, 0xbc, 0x65, 0x7f, 0x32, 0x7f, 0xcb, 0xbe, 0xbb, 0x74, 0x86, + 0x73, 0x2a, 0xf3, 0x55, 0xbe, 0x4a, 0x92, 0xc9, 0x28, 0x49, 0xea, 0x5f, 0x27, 0xc2, 0xf2, 0xfe, + 0x5e, 0xec, 0xdc, 0x94, 0x37, 0xce, 0x2f, 0x2a, 0xb7, 0xe2, 0x96, 0x68, 0xdf, 0x3d, 0x71, 0xbd, + 0x33, 0x17, 0xbd, 0xc9, 0xcb, 0xfd, 0x76, 0xf3, 0xa9, 0x96, 0x28, 0xdf, 0x3e, 0xbf, 0xa8, 0xa0, + 0x39, 0x10, 0xa6, 0x2e, 0x3d, 0xe3, 0x96, 0x3a, 0xcd, 0x76, 0x83, 0xdf, 0x87, 0xc9, 0x25, 0x96, + 0x3a, 0xd4, 0xb5, 0x6c, 0x77, 0x88, 0xde, 0x82, 0x6c, 0xab, 0xdb, 0xed, 0x8b, 0x02, 0xec, 0xb5, + 0xf3, 0x8b, 0xca, 0xcd, 0x39, 0x14, 0x6f, 0x50, 0x8b, 0x83, 0x38, 0x41, 0xe4, 0x37, 0xe5, 0x12, + 0x10, 0xe7, 0x2e, 0xd4, 0x52, 0x11, 0xfe, 0xef, 0x49, 0xd0, 0x0c, 0xd3, 0xa4, 0x63, 0xc6, 0xfb, + 0x15, 0xe9, 0xee, 0x41, 0x6e, 0xcc, 0xbf, 0x6c, 0x51, 0x44, 0xf0, 0xb0, 0x78, 0xb0, 0xf4, 0x89, + 0x77, 0x41, 0xaf, 0x8a, 0x3d, 0x87, 0x1a, 0xd6, 0xc8, 0x0e, 0x02, 0x5e, 0x5c, 0x0a, 0x19, 0x8e, + 0x2c, 0x95, 0x7f, 0x99, 0x80, 0x9b, 0x4b, 0x10, 0xe8, 0x03, 0x48, 0xfb, 0x9e, 0x13, 0x6e, 0xcf, + 0xdd, 0x97, 0x3d, 0xc0, 0x70, 0x55, 0x2c, 0x90, 0x68, 0x13, 0x80, 0x4c, 0x98, 0x47, 0xc4, 0xf8, + 0x62, 0x63, 0x72, 0x38, 0x26, 0x41, 0x4f, 0x21, 0x1b, 0x50, 0xd3, 0xa7, 0x21, 0x9f, 0xf9, 0xec, + 0xd7, 0xf5, 0xbe, 0xda, 0x15, 0x66, 0xb0, 0x32, 0x57, 0xae, 0x42, 0x56, 0x4a, 0x78, 0x44, 0x5b, + 0x84, 0x11, 0xe1, 0x74, 0x11, 0x8b, 0x6f, 0x1e, 0x28, 0xc4, 0x19, 0x86, 0x81, 0x42, 0x9c, 0xa1, + 0xfe, 0xb3, 0x24, 0x40, 0xf3, 0x19, 0xa3, 0xbe, 0x4b, 0x9c, 0xba, 0x81, 0x9a, 0xb1, 0x0c, 0x29, + 0x67, 0xfb, 0x83, 0xa5, 0xcf, 0x72, 0x91, 0x46, 0xb5, 0x6e, 0x2c, 0xc9, 0x91, 0x77, 0x20, 0x35, + 0xf1, 0x1d, 0xf5, 0xc4, 0x2b, 0x88, 0x48, 0x1f, 0xef, 0x62, 0x2e, 0x43, 0xcd, 0x59, 0x46, 0x4a, + 0xbd, 0xfc, 0x6d, 0x3e, 0x36, 0xc0, 0x6f, 0x3f, 0x2b, 0xbd, 0x07, 0x30, 0xf3, 0x1a, 0x6d, 0x42, + 0xa6, 0xbe, 0xd3, 0xed, 0xee, 0x6a, 0x2b, 0xb2, 0x46, 0x9c, 0x75, 0x09, 0xb1, 0xfe, 0xf7, 0x09, + 0xc8, 0xd5, 0x0d, 0x75, 0xab, 0xec, 0x80, 0x26, 0x72, 0x89, 0x49, 0x7d, 0x36, 0xa0, 0xcf, 0xc6, + 0xb6, 0x3f, 0x55, 0xe9, 0xe0, 0x7a, 0x16, 0xbf, 0xc6, 0xb5, 0xea, 0xd4, 0x67, 0x4d, 0xa1, 0x83, + 0x30, 0x14, 0xa9, 0x9a, 0xe2, 0xc0, 0x24, 0x61, 0x72, 0xde, 0xbc, 0x7e, 0x29, 0x24, 0xfb, 0x9b, + 0xb5, 0x03, 0x5c, 0x08, 0x8d, 0xd4, 0x49, 0xa0, 0x1f, 0xc0, 0xcd, 0x7d, 0xdf, 0x3c, 0xa6, 0x01, + 0x93, 0x83, 0x2a, 0x97, 0x3f, 0x83, 0xbb, 0x8c, 0x04, 0x27, 0x83, 0x63, 0x3b, 0x60, 0x9e, 0x3f, + 0x1d, 0xf8, 0x94, 0x51, 0x97, 0xf7, 0x0f, 0xc4, 0x3f, 0x00, 0xaa, 0x06, 0xbf, 0xc3, 0x31, 0x8f, + 0x25, 0x04, 0x87, 0x88, 0x5d, 0x0e, 0xd0, 0x5b, 0x50, 0xe4, 0x84, 0xad, 0x41, 0x8f, 0xc8, 0xc4, + 0x61, 0x01, 0xfa, 0x04, 0xc0, 0xf1, 0x86, 0x83, 0x57, 0xce, 0xe4, 0x79, 0xc7, 0x1b, 0xca, 0x4f, + 0xfd, 0xf7, 0x41, 0x6b, 0xd8, 0xc1, 0x98, 0x30, 0xf3, 0x38, 0x7c, 0x5c, 0x40, 0x8f, 0x40, 0x3b, + 0xa6, 0xc4, 0x67, 0x87, 0x94, 0xb0, 0xc1, 0x98, 0xfa, 0xb6, 0x67, 0xbd, 0xd2, 0x92, 0xae, 0x47, + 0x5a, 0x1d, 0xa1, 0xa4, 0xff, 0x2a, 0x01, 0x80, 0xc9, 0x51, 0x48, 0x00, 0x7e, 0x08, 0x37, 0x02, + 0x97, 0x8c, 0x83, 0x63, 0x8f, 0x0d, 0x6c, 0x97, 0x51, 0xff, 0x94, 0x38, 0xaa, 0x40, 0xd4, 0xc2, + 0x8e, 0x96, 0x92, 0xa3, 0xf7, 0x00, 0x9d, 0x50, 0x3a, 0x1e, 0x78, 0x8e, 0x35, 0x08, 0x3b, 0xe5, + 0x5f, 0x14, 0x69, 0xac, 0xf1, 0x9e, 0x7d, 0xc7, 0xea, 0x86, 0x72, 0x54, 0x83, 0x4d, 0xbe, 0x02, + 0xd4, 0x65, 0xbe, 0x4d, 0x83, 0xc1, 0x91, 0xe7, 0x0f, 0x02, 0xc7, 0x3b, 0x1b, 0x1c, 0x79, 0x8e, + 0xe3, 0x9d, 0x51, 0x3f, 0x2c, 0xbf, 0xcb, 0x8e, 0x37, 0x6c, 0x4a, 0xd0, 0x8e, 0xe7, 0x77, 0x1d, + 0xef, 0x6c, 0x27, 0x44, 0x70, 0x96, 0x30, 0x9b, 0x36, 0xb3, 0xcd, 0x93, 0x90, 0x25, 0x44, 0xd2, + 0x9e, 0x6d, 0x9e, 0xa0, 0xb7, 0xa0, 0x44, 0x1d, 0x2a, 0x8a, 0x38, 0x89, 0xca, 0x08, 0x54, 0x31, + 0x14, 0x72, 0x90, 0xfe, 0x3b, 0x90, 0xef, 0x38, 0xc4, 0x14, 0x7f, 0x04, 0xf1, 0x92, 0xd8, 0xf4, + 0x5c, 0x1e, 0x04, 0xb6, 0xcb, 0x64, 0x76, 0xcc, 0xe3, 0xb8, 0x48, 0xff, 0x09, 0xc0, 0x4f, 0x3d, + 0xdb, 0xed, 0x79, 0x27, 0xd4, 0x15, 0x6f, 0xe6, 0x9c, 0xf5, 0xaa, 0xad, 0xcc, 0x63, 0xd5, 0x12, + 0x9c, 0x9c, 0xb8, 0x64, 0x48, 0xfd, 0xe8, 0xe9, 0x58, 0x36, 0xf9, 0xe5, 0x92, 0xc5, 0x9e, 0xc7, + 0xea, 0x06, 0xaa, 0x40, 0xd6, 0x24, 0x83, 0xf0, 0xe4, 0x15, 0x6b, 0xf9, 0xab, 0xcb, 0xad, 0x4c, + 0xdd, 0x78, 0x42, 0xa7, 0x38, 0x63, 0x92, 0x27, 0x74, 0xca, 0x6f, 0x5f, 0x93, 0x88, 0xf3, 0x22, + 0xcc, 0x14, 0xe5, 0xed, 0x5b, 0x37, 0xf8, 0x61, 0xc0, 0x59, 0x93, 0xf0, 0x5f, 0xf4, 0x01, 0x14, + 0x15, 0x68, 0x70, 0x4c, 0x82, 0x63, 0xc9, 0x55, 0x6b, 0x6b, 0x57, 0x97, 0x5b, 0x20, 0x91, 0x8f, + 0x49, 0x70, 0x8c, 0x41, 0xa2, 0xf9, 0x37, 0x6a, 0x42, 0xe1, 0x4b, 0xcf, 0x76, 0x07, 0x4c, 0x4c, + 0x42, 0x55, 0xd2, 0x4b, 0xcf, 0xcf, 0x6c, 0xaa, 0xaa, 0xbc, 0x87, 0x2f, 0x23, 0x89, 0xfe, 0xaf, + 0x09, 0x28, 0x70, 0x9b, 0xf6, 0x91, 0x6d, 0xf2, 0xdb, 0xf2, 0xbb, 0x67, 0xfa, 0x3b, 0x90, 0x32, + 0x03, 0x5f, 0xcd, 0x4d, 0xa4, 0xba, 0x7a, 0x17, 0x63, 0x2e, 0x43, 0x9f, 0x43, 0x56, 0x16, 0x17, + 0x2a, 0xc9, 0xeb, 0xdf, 0x7e, 0xaf, 0x2b, 0x17, 0x95, 0x9e, 0xd8, 0xcb, 0x99, 0x77, 0x62, 0x96, + 0x45, 0x1c, 0x17, 0xa1, 0xdb, 0x90, 0x34, 0x5d, 0x11, 0x14, 0xea, 0xbf, 0xb4, 0x7a, 0x1b, 0x27, + 0x4d, 0x57, 0xff, 0xe7, 0x04, 0x94, 0x9a, 0xae, 0xe9, 0x4f, 0x45, 0x92, 0xe4, 0x1b, 0x71, 0x17, + 0xf2, 0xc1, 0xe4, 0x30, 0x98, 0x06, 0x8c, 0x8e, 0xc2, 0xa7, 0xfa, 0x48, 0x80, 0x5a, 0x90, 0x27, + 0xce, 0xd0, 0xf3, 0x6d, 0x76, 0x3c, 0x52, 0xdc, 0x78, 0x79, 0x62, 0x8e, 0xdb, 0xac, 0x1a, 0xa1, + 0x0a, 0x9e, 0x69, 0x87, 0xa9, 0x38, 0x25, 0x9c, 0x15, 0xa9, 0xf8, 0x4d, 0x28, 0x3a, 0x64, 0xc4, + 0xa9, 0xf0, 0x80, 0x97, 0x5c, 0x62, 0x1e, 0x69, 0x5c, 0x50, 0x32, 0x5e, 0x46, 0xea, 0x3a, 0xe4, + 0x23, 0x63, 0x68, 0x1d, 0x0a, 0x46, 0xb3, 0x3b, 0xf8, 0x70, 0xfb, 0xc1, 0xe0, 0x51, 0x7d, 0x4f, + 0x5b, 0x51, 0x4c, 0xe0, 0x1f, 0x13, 0x50, 0xda, 0x93, 0x31, 0xa8, 0x88, 0xd3, 0x5b, 0xb0, 0xea, + 0x93, 0x23, 0x16, 0x52, 0xbb, 0xb4, 0x0c, 0x2e, 0x9e, 0x04, 0x38, 0xb5, 0xe3, 0x5d, 0xcb, 0xa9, + 0x5d, 0xec, 0x8f, 0xa2, 0xd4, 0xb5, 0x7f, 0x14, 0xa5, 0x7f, 0x2b, 0x7f, 0x14, 0xf1, 0xdd, 0x58, + 0x57, 0x17, 0x75, 0xf8, 0xe7, 0xc8, 0x52, 0xba, 0xfe, 0x09, 0xac, 0xcb, 0x7b, 0x7c, 0x20, 0x6e, + 0xab, 0x81, 0x2a, 0xe6, 0xf3, 0xb5, 0x1b, 0x57, 0x97, 0x5b, 0x25, 0x69, 0xe1, 0x80, 0xf7, 0xb4, + 0x1a, 0xb8, 0x14, 0xc4, 0x9a, 0x16, 0xfa, 0xb1, 0x7a, 0x39, 0x4d, 0xbd, 0x9c, 0x42, 0x2e, 0x78, + 0x50, 0x9d, 0x3d, 0xa7, 0xc6, 0x4a, 0xdc, 0x74, 0xbc, 0xc4, 0xd5, 0xef, 0x40, 0x9a, 0xa3, 0x78, + 0x99, 0xb5, 0xd3, 0xda, 0x6d, 0x6a, 0x2b, 0x68, 0x15, 0x52, 0xcd, 0xf6, 0x81, 0x96, 0xb8, 0xff, + 0xab, 0x14, 0xe4, 0xa3, 0x42, 0x9e, 0x1f, 0x03, 0xce, 0x1e, 0x57, 0xe4, 0x73, 0x5e, 0x24, 0x6f, + 0x0b, 0xde, 0x98, 0x37, 0x76, 0x77, 0xf7, 0xeb, 0x46, 0xaf, 0xd9, 0xd0, 0x3e, 0x97, 0xf4, 0x32, + 0x02, 0x18, 0x8e, 0xe3, 0xf1, 0x40, 0xb6, 0x90, 0x3e, 0xa3, 0x97, 0xcf, 0xd5, 0xa3, 0x61, 0x84, + 0x0a, 0xb9, 0xe5, 0xdb, 0x90, 0x33, 0xba, 0xdd, 0xd6, 0xa3, 0x76, 0xb3, 0xa1, 0x7d, 0x95, 0x28, + 0x7f, 0xef, 0xfc, 0xa2, 0x72, 0x63, 0x66, 0x2a, 0x08, 0xec, 0xa1, 0x4b, 0x2d, 0x81, 0xaa, 0xd7, + 0x9b, 0x1d, 0x3e, 0xde, 0xf3, 0xe4, 0x22, 0x4a, 0x90, 0x2a, 0xf1, 0x07, 0x40, 0xbe, 0x83, 0x9b, + 0x1d, 0x03, 0xf3, 0x11, 0xbf, 0x4a, 0x2e, 0xf8, 0xd5, 0xf1, 0xe9, 0x98, 0xf8, 0x7c, 0xcc, 0xcd, + 0xf0, 0x8f, 0xb0, 0xe7, 0x29, 0xf9, 0x48, 0x3c, 0x7b, 0xbd, 0xa0, 0xc4, 0x9a, 0xf2, 0xd1, 0xc4, + 0xab, 0x8f, 0x30, 0x93, 0x5a, 0x18, 0xad, 0xcb, 0x88, 0xcf, 0xb8, 0x15, 0x1d, 0x56, 0x71, 0xbf, + 0xdd, 0x16, 0xb3, 0x4b, 0x2f, 0xcc, 0x0e, 0x4f, 0x5c, 0x97, 0x63, 0xee, 0x41, 0x2e, 0x7c, 0x14, + 0xd2, 0xbe, 0x4a, 0x2f, 0x38, 0x54, 0x0f, 0x5f, 0xb4, 0xc4, 0x80, 0x8f, 0xfb, 0x3d, 0xf1, 0x3f, + 0xdd, 0xf3, 0xcc, 0xe2, 0x80, 0xc7, 0x13, 0x66, 0x71, 0x42, 0x5f, 0x89, 0x18, 0xf6, 0x57, 0x19, + 0x49, 0x6c, 0x22, 0x8c, 0xa4, 0xd7, 0xdc, 0x0e, 0x6e, 0xfe, 0x54, 0xfe, 0xa5, 0xf7, 0x3c, 0xbb, + 0x60, 0x07, 0xd3, 0x2f, 0xa9, 0xc9, 0xa8, 0x35, 0x7b, 0x03, 0x8f, 0xba, 0xee, 0xff, 0x01, 0xe4, + 0xc2, 0x24, 0x88, 0x36, 0x21, 0xfb, 0x74, 0x1f, 0x3f, 0x69, 0x62, 0x6d, 0x45, 0xae, 0x4e, 0xd8, + 0xf3, 0x54, 0xde, 0x22, 0x15, 0x58, 0xdd, 0x33, 0xda, 0xc6, 0xa3, 0x26, 0x0e, 0xdf, 0xe0, 0x43, + 0x80, 0x3a, 0xc9, 0x65, 0x4d, 0x0d, 0x10, 0xd9, 0xbc, 0xff, 0x01, 0x80, 0x0c, 0x55, 0xf1, 0xc2, + 0xaf, 0x43, 0xbe, 0xbe, 0xdf, 0xee, 0x19, 0xad, 0xb6, 0x18, 0x44, 0x72, 0xb4, 0xe8, 0x6d, 0x47, + 0xe0, 0x6a, 0x77, 0xbf, 0xfe, 0x66, 0x73, 0xe5, 0x17, 0xdf, 0x6c, 0xae, 0xfc, 0xf2, 0x9b, 0xcd, + 0xc4, 0xf3, 0xab, 0xcd, 0xc4, 0xd7, 0x57, 0x9b, 0x89, 0x9f, 0x5f, 0x6d, 0x26, 0xfe, 0xf3, 0x6a, + 0x33, 0x71, 0x98, 0x15, 0xbc, 0xf4, 0xa3, 0xff, 0x0f, 0x00, 0x00, 0xff, 0xff, 0x33, 0xfa, 0xcd, + 0x10, 0xc6, 0x22, 0x00, 0x00, } diff --git a/api/types.proto b/api/types.proto index d8c34f260a..79ad07e83f 100644 --- a/api/types.proto +++ b/api/types.proto @@ -750,19 +750,20 @@ message ManagerStatus { // SecretType provides information about what kind of secret this is enum SecretType { + // CONTAINER secrets are user-specified secrets that should be injected + // into the container as an environment variable or file. CONTAINER = 0 [(gogoproto.enumvalue_customname) = "ContainerSecret"]; - NODE = 1 [(gogoproto.enumvalue_customname) = "NodeSecret"]; } // SecretReference is the linkage between a service and a secret that it uses. message SecretReference { - // Name is the name of the secret that this reference. + // Name is the name of the secret that this references. string name = 1; - // SecretDataID represents the specific Secret version that we're referencing to. - // This identifier exists so that SecretReferences don't leak any information - // about the secret contents. - string secret_data_id = 2 [(gogoproto.customname) = "SecretDataID"]; + // SecretValueID represents the ID of the specific Secret version that we're + // referencing. This identifier exists so that SecretReferences don't leak + // any information about the secret contents. + string secret_value_id = 2 [(gogoproto.customname) = "SecretValueID"]; // Mode specifies how this secret should be exposed inside the task. enum Mode { From df431a100b286c031450c75ac48fd5d7065d0b03 Mon Sep 17 00:00:00 2001 From: cyli Date: Fri, 9 Sep 2016 17:52:52 -0700 Subject: [PATCH 6/9] Add a secrets config to the cluster specifying the max number of secrets and max number of secret versions. Also add dispatcher protos for secrets. Signed-off-by: cyli --- api/dispatcher.pb.go | 237 +++++++++++---- api/dispatcher.proto | 10 + api/objects.pb.go | 184 +++++++----- api/objects.proto | 4 +- api/secrets.pb.go | 221 ++++---------- api/secrets.proto | 31 +- api/specs.pb.go | 290 +++++++++--------- api/specs.proto | 11 +- api/types.pb.go | 695 +++++++++++++++++++++++++++---------------- api/types.proto | 33 +- 10 files changed, 996 insertions(+), 720 deletions(-) diff --git a/api/dispatcher.pb.go b/api/dispatcher.pb.go index d3b96b534b..e0bf2655fa 100644 --- a/api/dispatcher.pb.go +++ b/api/dispatcher.pb.go @@ -235,6 +235,14 @@ type AssignmentsMessage struct { // assignment set. It is not used in the first assignments message of // a stream. RemoveTasks []string `protobuf:"bytes,5,rep,name=remove_tasks,json=removeTasks" json:"remove_tasks,omitempty"` + // UpdateSecrets is a set of new or updated secrets for this node. + // In the first assignments message, it contains all of the secrets + // the node needs for itself and its assigned tasks. + UpdateSecrets []*Secret `protobuf:"bytes,6,rep,name=update_secrets,json=updateSecrets" json:"update_secrets,omitempty"` + // RemoveSecrets is a set of previously-assigned secret names to remove + // from memory. It is not used in the first assignments message of + // a stream. + RemoveSecrets []string `protobuf:"bytes,7,rep,name=remove_secrets,json=removeSecrets" json:"remove_secrets,omitempty"` } func (m *AssignmentsMessage) Reset() { *m = AssignmentsMessage{} } @@ -480,6 +488,20 @@ func (m *AssignmentsMessage) Copy() *AssignmentsMessage { } } + if m.UpdateSecrets != nil { + o.UpdateSecrets = make([]*Secret, 0, len(m.UpdateSecrets)) + for _, v := range m.UpdateSecrets { + o.UpdateSecrets = append(o.UpdateSecrets, v.Copy()) + } + } + + if m.RemoveSecrets != nil { + o.RemoveSecrets = make([]string, 0, len(m.RemoveSecrets)) + for _, v := range m.RemoveSecrets { + o.RemoveSecrets = append(o.RemoveSecrets, v) + } + } + return o } @@ -606,7 +628,7 @@ func (this *AssignmentsMessage) GoString() string { if this == nil { return "nil" } - s := make([]string, 0, 9) + s := make([]string, 0, 11) s = append(s, "&api.AssignmentsMessage{") s = append(s, "Type: "+fmt.Sprintf("%#v", this.Type)+",\n") s = append(s, "AppliesTo: "+fmt.Sprintf("%#v", this.AppliesTo)+",\n") @@ -615,6 +637,10 @@ func (this *AssignmentsMessage) GoString() string { s = append(s, "UpdateTasks: "+fmt.Sprintf("%#v", this.UpdateTasks)+",\n") } s = append(s, "RemoveTasks: "+fmt.Sprintf("%#v", this.RemoveTasks)+",\n") + if this.UpdateSecrets != nil { + s = append(s, "UpdateSecrets: "+fmt.Sprintf("%#v", this.UpdateSecrets)+",\n") + } + s = append(s, "RemoveSecrets: "+fmt.Sprintf("%#v", this.RemoveSecrets)+",\n") s = append(s, "}") return strings.Join(s, "") } @@ -1346,6 +1372,33 @@ func (m *AssignmentsMessage) MarshalTo(data []byte) (int, error) { i += copy(data[i:], s) } } + if len(m.UpdateSecrets) > 0 { + for _, msg := range m.UpdateSecrets { + data[i] = 0x32 + i++ + i = encodeVarintDispatcher(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if len(m.RemoveSecrets) > 0 { + for _, s := range m.RemoveSecrets { + data[i] = 0x3a + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + data[i] = uint8(l) + i++ + i += copy(data[i:], s) + } + } return i, nil } @@ -1762,6 +1815,18 @@ func (m *AssignmentsMessage) Size() (n int) { n += 1 + l + sovDispatcher(uint64(l)) } } + if len(m.UpdateSecrets) > 0 { + for _, e := range m.UpdateSecrets { + l = e.Size() + n += 1 + l + sovDispatcher(uint64(l)) + } + } + if len(m.RemoveSecrets) > 0 { + for _, s := range m.RemoveSecrets { + l = len(s) + n += 1 + l + sovDispatcher(uint64(l)) + } + } return n } @@ -1893,6 +1958,8 @@ func (this *AssignmentsMessage) String() string { `ResultsIn:` + fmt.Sprintf("%v", this.ResultsIn) + `,`, `UpdateTasks:` + strings.Replace(fmt.Sprintf("%v", this.UpdateTasks), "Task", "Task", 1) + `,`, `RemoveTasks:` + fmt.Sprintf("%v", this.RemoveTasks) + `,`, + `UpdateSecrets:` + strings.Replace(fmt.Sprintf("%v", this.UpdateSecrets), "Secret", "Secret", 1) + `,`, + `RemoveSecrets:` + fmt.Sprintf("%v", this.RemoveSecrets) + `,`, `}`, }, "") return s @@ -3027,6 +3094,66 @@ func (m *AssignmentsMessage) Unmarshal(data []byte) error { } m.RemoveTasks = append(m.RemoveTasks, string(data[iNdEx:postIndex])) iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdateSecrets", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDispatcher + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthDispatcher + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.UpdateSecrets = append(m.UpdateSecrets, &Secret{}) + if err := m.UpdateSecrets[len(m.UpdateSecrets)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RemoveSecrets", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDispatcher + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthDispatcher + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.RemoveSecrets = append(m.RemoveSecrets, string(data[iNdEx:postIndex])) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipDispatcher(data[iNdEx:]) @@ -3156,57 +3283,59 @@ var ( func init() { proto.RegisterFile("dispatcher.proto", fileDescriptorDispatcher) } var fileDescriptorDispatcher = []byte{ - // 820 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x9c, 0x55, 0x4d, 0x6f, 0x1b, 0x45, - 0x18, 0xce, 0x38, 0x8e, 0x53, 0xbf, 0xeb, 0x14, 0x33, 0x54, 0x74, 0x65, 0xb5, 0x1b, 0x77, 0x43, - 0x23, 0x4b, 0x0d, 0x9b, 0x62, 0x24, 0x0e, 0x10, 0x01, 0x75, 0x6d, 0x09, 0xab, 0x4d, 0x5a, 0x6d, - 0x0d, 0x3d, 0x5a, 0x6b, 0xef, 0x2b, 0x77, 0x71, 0xbc, 0xb3, 0xcc, 0xcc, 0xb6, 0xf8, 0x80, 0x84, - 0x04, 0x48, 0x1c, 0x11, 0xa7, 0x8a, 0x1f, 0xc1, 0xef, 0x88, 0x38, 0x71, 0xe4, 0x14, 0x11, 0xff, - 0x00, 0xc4, 0x4f, 0xa8, 0x76, 0x77, 0xd6, 0x71, 0x9d, 0x75, 0xe2, 0xe4, 0xe4, 0xd9, 0x77, 0x9e, - 0xe7, 0x99, 0x47, 0xef, 0x97, 0xa1, 0xec, 0x7a, 0x22, 0x70, 0x64, 0xff, 0x05, 0x72, 0x2b, 0xe0, - 0x4c, 0x32, 0x4a, 0x5d, 0xd6, 0x1f, 0x22, 0xb7, 0xc4, 0x2b, 0x87, 0x8f, 0x86, 0x9e, 0xb4, 0x5e, - 0x7e, 0x54, 0xd1, 0xe4, 0x38, 0x40, 0x91, 0x00, 0x2a, 0x1b, 0xac, 0xf7, 0x2d, 0xf6, 0x65, 0xfa, - 0x79, 0x63, 0xc0, 0x06, 0x2c, 0x3e, 0xee, 0x46, 0x27, 0x15, 0x7d, 0x2f, 0x38, 0x0c, 0x07, 0x9e, - 0xbf, 0x9b, 0xfc, 0xa8, 0xe0, 0x4d, 0x37, 0xe4, 0x8e, 0xf4, 0x98, 0xbf, 0x9b, 0x1e, 0x92, 0x0b, - 0xf3, 0x17, 0x02, 0xd7, 0x9f, 0xa1, 0x10, 0x1e, 0xf3, 0x6d, 0xfc, 0x2e, 0x44, 0x21, 0x69, 0x0b, - 0x34, 0x17, 0x45, 0x9f, 0x7b, 0x41, 0x84, 0xd3, 0x49, 0x95, 0xd4, 0xb4, 0xfa, 0x96, 0x75, 0xd6, - 0x9c, 0x75, 0xc0, 0x5c, 0x6c, 0x9e, 0x42, 0xed, 0x59, 0x1e, 0xdd, 0x01, 0x10, 0x89, 0x70, 0xd7, - 0x73, 0xf5, 0x5c, 0x95, 0xd4, 0x8a, 0x8d, 0x8d, 0xc9, 0xf1, 0x66, 0x51, 0x3d, 0xd7, 0x6e, 0xda, - 0x45, 0x05, 0x68, 0xbb, 0xe6, 0x4f, 0xb9, 0xa9, 0x8f, 0x7d, 0x14, 0xc2, 0x19, 0xe0, 0x9c, 0x00, - 0x39, 0x5f, 0x80, 0xee, 0x40, 0xde, 0x67, 0x2e, 0xc6, 0x0f, 0x69, 0x75, 0x7d, 0x91, 0x5d, 0x3b, - 0x46, 0xd1, 0x3d, 0xb8, 0x36, 0x72, 0x7c, 0x67, 0x80, 0x5c, 0xe8, 0xab, 0xd5, 0xd5, 0x9a, 0x56, - 0xaf, 0x66, 0x31, 0x9e, 0xa3, 0x37, 0x78, 0x21, 0xd1, 0x7d, 0x8a, 0xc8, 0xed, 0x29, 0x83, 0x3e, - 0x87, 0xf7, 0x7d, 0x94, 0xaf, 0x18, 0x1f, 0x76, 0x7b, 0x8c, 0x49, 0x21, 0xb9, 0x13, 0x74, 0x87, - 0x38, 0x16, 0x7a, 0x3e, 0xd6, 0xba, 0x93, 0xa5, 0xd5, 0xf2, 0xfb, 0x7c, 0x1c, 0xa7, 0xe6, 0x11, - 0x8e, 0xed, 0x1b, 0x4a, 0xa0, 0x91, 0xf2, 0x1f, 0xe1, 0x58, 0x98, 0x5f, 0x42, 0xf9, 0x2b, 0x74, - 0xb8, 0xec, 0xa1, 0x23, 0xd3, 0x72, 0x5c, 0x2a, 0x0d, 0xe6, 0x13, 0x78, 0x77, 0x46, 0x41, 0x04, - 0xcc, 0x17, 0x48, 0x3f, 0x85, 0x42, 0x80, 0xdc, 0x63, 0xae, 0x2a, 0xe6, 0xad, 0x2c, 0x7f, 0x4d, - 0xd5, 0x18, 0x8d, 0xfc, 0xd1, 0xf1, 0xe6, 0x8a, 0xad, 0x18, 0xe6, 0x6f, 0x39, 0xb8, 0xf9, 0x75, - 0xe0, 0x3a, 0x12, 0x3b, 0x8e, 0x18, 0x3e, 0x93, 0x8e, 0x0c, 0xc5, 0x95, 0xac, 0xd1, 0x6f, 0x60, - 0x3d, 0x8c, 0x85, 0xd2, 0x94, 0xef, 0x65, 0xd9, 0x58, 0xf0, 0x96, 0x75, 0x1a, 0x49, 0x10, 0x76, - 0x2a, 0x56, 0x61, 0x50, 0x9e, 0xbf, 0xa4, 0x5b, 0xb0, 0x2e, 0x1d, 0x31, 0x3c, 0xb5, 0x05, 0x93, - 0xe3, 0xcd, 0x42, 0x04, 0x6b, 0x37, 0xed, 0x42, 0x74, 0xd5, 0x76, 0xe9, 0x27, 0x50, 0x10, 0x31, - 0x49, 0x35, 0x8d, 0x91, 0xe5, 0x67, 0xc6, 0x89, 0x42, 0x9b, 0x15, 0xd0, 0xcf, 0xba, 0x4c, 0x52, - 0x6d, 0xee, 0x41, 0x29, 0x8a, 0x5e, 0x2d, 0x45, 0xe6, 0xe7, 0x8a, 0x9d, 0x8e, 0x80, 0x05, 0x6b, - 0x91, 0x57, 0xa1, 0x93, 0x38, 0x61, 0xfa, 0x22, 0x83, 0x76, 0x02, 0x33, 0x1b, 0x40, 0x1f, 0x08, - 0xe1, 0x0d, 0xfc, 0x11, 0xfa, 0xf2, 0x8a, 0x1e, 0xfe, 0xc8, 0xbd, 0x25, 0x92, 0x5a, 0xf9, 0x02, - 0xf2, 0xd1, 0x2a, 0x8a, 0xe9, 0xd7, 0xeb, 0xf7, 0xb2, 0x9c, 0x9c, 0x65, 0x59, 0x9d, 0x71, 0x80, - 0x76, 0x4c, 0xa4, 0xb7, 0x01, 0x9c, 0x20, 0x38, 0xf4, 0x50, 0x74, 0x25, 0x4b, 0xf6, 0x81, 0x5d, - 0x54, 0x91, 0x0e, 0x8b, 0xae, 0x39, 0x8a, 0xf0, 0x50, 0x8a, 0xae, 0xe7, 0xeb, 0xab, 0xc9, 0xb5, - 0x8a, 0xb4, 0x7d, 0xfa, 0x19, 0x94, 0x92, 0x7a, 0x77, 0x93, 0x84, 0xe4, 0x2f, 0x48, 0x88, 0x16, - 0x4e, 0x2b, 0x24, 0xe8, 0x1d, 0x28, 0x71, 0x1c, 0xb1, 0x97, 0x29, 0x79, 0xad, 0xba, 0x5a, 0x2b, - 0xda, 0x5a, 0x12, 0x8b, 0x21, 0xe6, 0x5d, 0xc8, 0x47, 0x5e, 0x69, 0x09, 0xae, 0x3d, 0x7c, 0xb2, - 0xff, 0xf4, 0x71, 0xab, 0xd3, 0x2a, 0xaf, 0xd0, 0x77, 0x40, 0x6b, 0x1f, 0x3c, 0xb4, 0x5b, 0xfb, - 0xad, 0x83, 0xce, 0x83, 0xc7, 0x65, 0x52, 0x7f, 0xbd, 0x06, 0xd0, 0x9c, 0xee, 0x6d, 0xfa, 0x3d, - 0xac, 0xab, 0x1c, 0x52, 0x33, 0xcb, 0xca, 0xdb, 0x9b, 0xb5, 0x72, 0x1e, 0x46, 0x65, 0xcc, 0xdc, - 0xfa, 0xeb, 0xcf, 0xff, 0x5e, 0xe7, 0x6e, 0x43, 0x29, 0xc6, 0x7c, 0x18, 0xed, 0x08, 0xe4, 0xb0, - 0x91, 0x7c, 0xa9, 0x0d, 0x74, 0x9f, 0xd0, 0x1f, 0xa0, 0x38, 0x9d, 0x73, 0xfa, 0x41, 0x96, 0xee, - 0xfc, 0x22, 0xa9, 0xdc, 0xbd, 0x00, 0xa5, 0x3a, 0x78, 0x19, 0x03, 0xf4, 0x77, 0x02, 0xe5, 0xf9, - 0x19, 0xa0, 0xf7, 0x2e, 0x31, 0xcf, 0x95, 0x9d, 0xe5, 0xc0, 0x97, 0x31, 0x15, 0xc2, 0x5a, 0x52, - 0xef, 0xea, 0xa2, 0xb6, 0x98, 0xbe, 0xbe, 0x18, 0x91, 0xd6, 0x61, 0x7b, 0x89, 0x17, 0x7f, 0xcd, - 0x91, 0xfb, 0x84, 0xfe, 0x4c, 0x40, 0x9b, 0x69, 0x7d, 0xba, 0x7d, 0xc1, 0x6c, 0xa4, 0x1e, 0xb6, - 0x97, 0x9b, 0xa1, 0x25, 0x3b, 0xa2, 0x71, 0xeb, 0xe8, 0xc4, 0x58, 0xf9, 0xe7, 0xc4, 0x58, 0xf9, - 0xff, 0xc4, 0x20, 0x3f, 0x4e, 0x0c, 0x72, 0x34, 0x31, 0xc8, 0xdf, 0x13, 0x83, 0xfc, 0x3b, 0x31, - 0x48, 0xaf, 0x10, 0xff, 0xdd, 0x7f, 0xfc, 0x26, 0x00, 0x00, 0xff, 0xff, 0xf9, 0xb7, 0x47, 0x6b, - 0x76, 0x08, 0x00, 0x00, + // 858 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x9c, 0x56, 0x41, 0x6f, 0x1b, 0x45, + 0x14, 0xce, 0xd8, 0x8e, 0x53, 0xbf, 0xb5, 0x83, 0x19, 0x2a, 0xba, 0xb2, 0x5a, 0xc7, 0xdd, 0x90, + 0x28, 0x52, 0x83, 0x53, 0x8c, 0xc4, 0x01, 0x22, 0x20, 0xae, 0x2d, 0x61, 0xb5, 0x49, 0xab, 0x8d, + 0xa1, 0x47, 0x6b, 0xe3, 0x7d, 0x72, 0x17, 0x27, 0x3b, 0xcb, 0xcc, 0x6c, 0x8b, 0x0f, 0x48, 0x48, + 0x14, 0x89, 0x23, 0xe2, 0xd4, 0x5f, 0xc1, 0xef, 0x88, 0x38, 0x71, 0xe4, 0x14, 0x11, 0xff, 0x00, + 0xc4, 0x4f, 0x40, 0xbb, 0x33, 0xeb, 0x18, 0x67, 0xdd, 0x38, 0x39, 0x65, 0xe7, 0xcd, 0xf7, 0x7d, + 0xef, 0xd3, 0x7b, 0xf3, 0x5e, 0x0c, 0x65, 0xd7, 0x13, 0x81, 0x23, 0xfb, 0x2f, 0x90, 0xd7, 0x03, + 0xce, 0x24, 0xa3, 0xd4, 0x65, 0xfd, 0x21, 0xf2, 0xba, 0x78, 0xe5, 0xf0, 0x93, 0xa1, 0x27, 0xeb, + 0x2f, 0x3f, 0xaa, 0x18, 0x72, 0x14, 0xa0, 0x50, 0x80, 0x4a, 0x89, 0x1d, 0x7d, 0x8b, 0x7d, 0x99, + 0x1c, 0x6f, 0x0f, 0xd8, 0x80, 0xc5, 0x9f, 0x3b, 0xd1, 0x97, 0x8e, 0xbe, 0x17, 0x1c, 0x87, 0x03, + 0xcf, 0xdf, 0x51, 0x7f, 0x74, 0xf0, 0x8e, 0x1b, 0x72, 0x47, 0x7a, 0xcc, 0xdf, 0x49, 0x3e, 0xd4, + 0x85, 0xf5, 0x33, 0x81, 0xd5, 0x43, 0x14, 0xc2, 0x63, 0xbe, 0x8d, 0xdf, 0x85, 0x28, 0x24, 0x6d, + 0x83, 0xe1, 0xa2, 0xe8, 0x73, 0x2f, 0x88, 0x70, 0x26, 0xa9, 0x91, 0x2d, 0xa3, 0xb1, 0x5e, 0xbf, + 0x6c, 0xae, 0x7e, 0xc0, 0x5c, 0x6c, 0x5d, 0x40, 0xed, 0x69, 0x1e, 0xdd, 0x06, 0x10, 0x4a, 0xb8, + 0xe7, 0xb9, 0x66, 0xa6, 0x46, 0xb6, 0x0a, 0xcd, 0xd2, 0xf8, 0x6c, 0xad, 0xa0, 0xd3, 0x75, 0x5a, + 0x76, 0x41, 0x03, 0x3a, 0xae, 0xf5, 0x53, 0x66, 0xe2, 0x63, 0x1f, 0x85, 0x70, 0x06, 0x38, 0x23, + 0x40, 0xde, 0x2e, 0x40, 0xb7, 0x21, 0xe7, 0x33, 0x17, 0xe3, 0x44, 0x46, 0xc3, 0x9c, 0x67, 0xd7, + 0x8e, 0x51, 0x74, 0x17, 0x6e, 0x9d, 0x38, 0xbe, 0x33, 0x40, 0x2e, 0xcc, 0x6c, 0x2d, 0xbb, 0x65, + 0x34, 0x6a, 0x69, 0x8c, 0xe7, 0xe8, 0x0d, 0x5e, 0x48, 0x74, 0x9f, 0x21, 0x72, 0x7b, 0xc2, 0xa0, + 0xcf, 0xe1, 0x7d, 0x1f, 0xe5, 0x2b, 0xc6, 0x87, 0xbd, 0x23, 0xc6, 0xa4, 0x90, 0xdc, 0x09, 0x7a, + 0x43, 0x1c, 0x09, 0x33, 0x17, 0x6b, 0xdd, 0x4f, 0xd3, 0x6a, 0xfb, 0x7d, 0x3e, 0x8a, 0x4b, 0xf3, + 0x18, 0x47, 0xf6, 0x6d, 0x2d, 0xd0, 0x4c, 0xf8, 0x8f, 0x71, 0x24, 0xac, 0x2f, 0xa1, 0xfc, 0x15, + 0x3a, 0x5c, 0x1e, 0xa1, 0x23, 0x93, 0x76, 0x5c, 0xab, 0x0c, 0xd6, 0x53, 0x78, 0x77, 0x4a, 0x41, + 0x04, 0xcc, 0x17, 0x48, 0x3f, 0x85, 0x7c, 0x80, 0xdc, 0x63, 0xae, 0x6e, 0xe6, 0xdd, 0x34, 0x7f, + 0x2d, 0xfd, 0x30, 0x9a, 0xb9, 0xd3, 0xb3, 0xb5, 0x25, 0x5b, 0x33, 0xac, 0x5f, 0x33, 0x70, 0xe7, + 0xeb, 0xc0, 0x75, 0x24, 0x76, 0x1d, 0x31, 0x3c, 0x94, 0x8e, 0x0c, 0xc5, 0x8d, 0xac, 0xd1, 0x6f, + 0x60, 0x25, 0x8c, 0x85, 0x92, 0x92, 0xef, 0xa6, 0xd9, 0x98, 0x93, 0xab, 0x7e, 0x11, 0x51, 0x08, + 0x3b, 0x11, 0xab, 0x30, 0x28, 0xcf, 0x5e, 0xd2, 0x75, 0x58, 0x91, 0x8e, 0x18, 0x5e, 0xd8, 0x82, + 0xf1, 0xd9, 0x5a, 0x3e, 0x82, 0x75, 0x5a, 0x76, 0x3e, 0xba, 0xea, 0xb8, 0xf4, 0x13, 0xc8, 0x8b, + 0x98, 0xa4, 0x1f, 0x4d, 0x35, 0xcd, 0xcf, 0x94, 0x13, 0x8d, 0xb6, 0x2a, 0x60, 0x5e, 0x76, 0xa9, + 0x4a, 0x6d, 0xed, 0x42, 0x31, 0x8a, 0xde, 0xac, 0x44, 0xd6, 0xe7, 0x9a, 0x9d, 0x8c, 0x40, 0x1d, + 0x96, 0x23, 0xaf, 0xc2, 0x24, 0x71, 0xc1, 0xcc, 0x79, 0x06, 0x6d, 0x05, 0xb3, 0x9a, 0x40, 0xf7, + 0x84, 0xf0, 0x06, 0xfe, 0x09, 0xfa, 0xf2, 0x86, 0x1e, 0x5e, 0x67, 0xff, 0x27, 0x92, 0x58, 0xf9, + 0x02, 0x72, 0xd1, 0x2a, 0x8a, 0xe9, 0xab, 0x8d, 0x07, 0x69, 0x4e, 0x2e, 0xb3, 0xea, 0xdd, 0x51, + 0x80, 0x76, 0x4c, 0xa4, 0xf7, 0x00, 0x9c, 0x20, 0x38, 0xf6, 0x50, 0xf4, 0x24, 0x53, 0xfb, 0xc0, + 0x2e, 0xe8, 0x48, 0x97, 0x45, 0xd7, 0x1c, 0x45, 0x78, 0x2c, 0x45, 0xcf, 0xf3, 0xcd, 0xac, 0xba, + 0xd6, 0x91, 0x8e, 0x4f, 0x3f, 0x83, 0xa2, 0xea, 0x77, 0x4f, 0x15, 0x24, 0x77, 0x45, 0x41, 0x8c, + 0x70, 0xd2, 0x21, 0x41, 0xef, 0x43, 0x91, 0xe3, 0x09, 0x7b, 0x99, 0x90, 0x97, 0x6b, 0xd9, 0xad, + 0x82, 0x6d, 0xa8, 0x98, 0x82, 0xec, 0xc1, 0xaa, 0xd6, 0x17, 0xd8, 0xe7, 0x28, 0x85, 0x99, 0x8f, + 0x33, 0x54, 0xd2, 0x32, 0x1c, 0xc6, 0x10, 0xbb, 0xa4, 0x18, 0xea, 0x24, 0xe8, 0x06, 0xac, 0xea, + 0x2c, 0x89, 0xc4, 0x4a, 0x9c, 0xa7, 0xa4, 0xa2, 0x1a, 0x66, 0x6d, 0x40, 0x2e, 0xaa, 0x0a, 0x2d, + 0xc2, 0xad, 0x47, 0x4f, 0xf7, 0x9f, 0x3d, 0x69, 0x77, 0xdb, 0xe5, 0x25, 0xfa, 0x0e, 0x18, 0x9d, + 0x83, 0x47, 0x76, 0x7b, 0xbf, 0x7d, 0xd0, 0xdd, 0x7b, 0x52, 0x26, 0x8d, 0x37, 0xcb, 0x00, 0xad, + 0xc9, 0x7f, 0x08, 0xfa, 0x3d, 0xac, 0xe8, 0x6e, 0x51, 0x2b, 0xdd, 0xd2, 0xf4, 0x0e, 0xaf, 0xbc, + 0x0d, 0xa3, 0x7b, 0x63, 0xad, 0xff, 0xf1, 0xfb, 0x3f, 0x6f, 0x32, 0xf7, 0xa0, 0x18, 0x63, 0x3e, + 0x8c, 0xb6, 0x11, 0x72, 0x28, 0xa9, 0x93, 0xde, 0x75, 0x0f, 0x09, 0xfd, 0x01, 0x0a, 0x93, 0x8d, + 0x42, 0x3f, 0x48, 0xd3, 0x9d, 0x5d, 0x59, 0x95, 0x8d, 0x2b, 0x50, 0x7a, 0x56, 0x16, 0x31, 0x40, + 0x7f, 0x23, 0x50, 0x9e, 0x9d, 0x36, 0xfa, 0xe0, 0x1a, 0x9b, 0xa3, 0xb2, 0xbd, 0x18, 0xf8, 0x3a, + 0xa6, 0x42, 0x58, 0x56, 0xcf, 0xa6, 0x36, 0xef, 0x01, 0x4e, 0xb2, 0xcf, 0x47, 0x24, 0x7d, 0xd8, + 0x5c, 0x20, 0xe3, 0x2f, 0x19, 0xf2, 0x90, 0xd0, 0xd7, 0x04, 0x8c, 0xa9, 0x21, 0xa3, 0x9b, 0x57, + 0x4c, 0x61, 0xe2, 0x61, 0x73, 0xb1, 0x69, 0x5d, 0xf0, 0x45, 0x34, 0xef, 0x9e, 0x9e, 0x57, 0x97, + 0xfe, 0x3a, 0xaf, 0x2e, 0xfd, 0x7b, 0x5e, 0x25, 0x3f, 0x8e, 0xab, 0xe4, 0x74, 0x5c, 0x25, 0x7f, + 0x8e, 0xab, 0xe4, 0xef, 0x71, 0x95, 0x1c, 0xe5, 0xe3, 0x1f, 0x16, 0x1f, 0xff, 0x17, 0x00, 0x00, + 0xff, 0xff, 0xf5, 0xa0, 0x46, 0x49, 0xe0, 0x08, 0x00, 0x00, } diff --git a/api/dispatcher.proto b/api/dispatcher.proto index 40c1e33804..317234a5df 100644 --- a/api/dispatcher.proto +++ b/api/dispatcher.proto @@ -202,4 +202,14 @@ message AssignmentsMessage { // assignment set. It is not used in the first assignments message of // a stream. repeated string remove_tasks = 5; + + // UpdateSecrets is a set of new or updated secrets for this node. + // In the first assignments message, it contains all of the secrets + // the node needs for itself and its assigned tasks. + repeated Secret update_secrets = 6; + + // RemoveSecrets is a set of previously-assigned secret names to remove + // from memory. It is not used in the first assignments message of + // a stream. + repeated string remove_secrets = 7; } diff --git a/api/objects.pb.go b/api/objects.pb.go index 93268dc5a9..7380aff508 100644 --- a/api/objects.pb.go +++ b/api/objects.pb.go @@ -246,6 +246,8 @@ type Secret struct { // Name of the secret, so that we can use it easily for lookups. This is // just a copy of the data in `SecretValue.Spec.Annotations.Name`. Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` + // Whether the secret is an internal secret (not set by a user) or not. + Internal bool `protobuf:"varint,5,opt,name=internal,proto3" json:"internal,omitempty"` } func (m *Secret) Reset() { *m = Secret{} } @@ -481,9 +483,10 @@ func (m *Secret) Copy() *Secret { } o := &Secret{ - ID: m.ID, - Meta: *m.Meta.Copy(), - Name: m.Name, + ID: m.ID, + Meta: *m.Meta.Copy(), + Name: m.Name, + Internal: m.Internal, } if m.SecretValues != nil { @@ -682,7 +685,7 @@ func (this *Secret) GoString() string { if this == nil { return "nil" } - s := make([]string, 0, 8) + s := make([]string, 0, 9) s = append(s, "&api.Secret{") s = append(s, "ID: "+fmt.Sprintf("%#v", this.ID)+",\n") s = append(s, "Meta: "+strings.Replace(this.Meta.GoString(), `&`, ``, 1)+",\n") @@ -690,6 +693,7 @@ func (this *Secret) GoString() string { s = append(s, "SecretValues: "+fmt.Sprintf("%#v", this.SecretValues)+",\n") } s = append(s, "Name: "+fmt.Sprintf("%#v", this.Name)+",\n") + s = append(s, "Internal: "+fmt.Sprintf("%#v", this.Internal)+",\n") s = append(s, "}") return strings.Join(s, "") } @@ -1365,6 +1369,16 @@ func (m *Secret) MarshalTo(data []byte) (int, error) { i = encodeVarintObjects(data, i, uint64(len(m.Name))) i += copy(data[i:], m.Name) } + if m.Internal { + data[i] = 0x28 + i++ + if m.Internal { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + } return i, nil } @@ -1691,6 +1705,9 @@ func (m *Secret) Size() (n int) { if l > 0 { n += 1 + l + sovObjects(uint64(l)) } + if m.Internal { + n += 2 + } return n } @@ -1867,6 +1884,7 @@ func (this *Secret) String() string { `Meta:` + strings.Replace(strings.Replace(this.Meta.String(), "Meta", "Meta", 1), `&`, ``, 1) + `,`, `SecretValues:` + strings.Replace(fmt.Sprintf("%v", this.SecretValues), "SecretValue", "SecretValue", 1) + `,`, `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `Internal:` + fmt.Sprintf("%v", this.Internal) + `,`, `}`, }, "") return s @@ -3963,6 +3981,26 @@ func (m *Secret) Unmarshal(data []byte) error { } m.Name = string(data[iNdEx:postIndex]) iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Internal", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowObjects + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Internal = bool(v != 0) default: iNdEx = preIndex skippy, err := skipObjects(data[iNdEx:]) @@ -4279,77 +4317,77 @@ var ( func init() { proto.RegisterFile("objects.proto", fileDescriptorObjects) } var fileDescriptorObjects = []byte{ - // 1137 bytes of a gzipped FileDescriptorProto + // 1149 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xbc, 0x57, 0x4d, 0x6f, 0x1b, 0x45, 0x18, 0xee, 0xda, 0x5b, 0x7f, 0xbc, 0xb6, 0x23, 0x31, 0x54, 0xd1, 0x36, 0x04, 0x3b, 0x38, 0x02, 0xf5, 0x50, 0xb9, 0xa2, 0x14, 0x44, 0x45, 0x23, 0xe4, 0x8f, 0x08, 0xac, 0x12, 0x88, 0x26, 0x25, 0x3d, 0xae, 0x26, 0xbb, 0x53, 0xb3, 0xd8, 0xde, 0x59, 0xcd, 0x8c, 0x5d, 0xa5, 0x27, 0xc4, 0x0f, - 0xe0, 0x27, 0xf0, 0x13, 0xf8, 0x0b, 0x5c, 0x73, 0xe0, 0xc0, 0x0d, 0x4e, 0x16, 0xb1, 0xb8, 0x70, - 0x82, 0x9f, 0x80, 0x66, 0x76, 0xd6, 0xde, 0xc8, 0xeb, 0x34, 0x91, 0xaa, 0xdc, 0x66, 0x3c, 0xcf, - 0xf3, 0xcc, 0xfb, 0xbe, 0xf3, 0xcc, 0x3b, 0x6b, 0xa8, 0xb1, 0x93, 0xef, 0xa9, 0x27, 0x45, 0x2b, - 0xe2, 0x4c, 0x32, 0x84, 0x7c, 0xe6, 0x0d, 0x29, 0x6f, 0x89, 0x97, 0x84, 0x8f, 0x87, 0x81, 0x6c, - 0x4d, 0x3f, 0xdc, 0xaa, 0xc8, 0xd3, 0x88, 0x1a, 0xc0, 0x56, 0x45, 0x44, 0xd4, 0x4b, 0x26, 0x77, - 0x65, 0x30, 0xa6, 0x42, 0x92, 0x71, 0xf4, 0x60, 0x31, 0x32, 0x4b, 0x77, 0x06, 0x6c, 0xc0, 0xf4, - 0xf0, 0x81, 0x1a, 0xc5, 0xbf, 0x36, 0x7f, 0xb5, 0xc0, 0x3e, 0xa0, 0x92, 0xa0, 0xcf, 0xa0, 0x38, - 0xa5, 0x5c, 0x04, 0x2c, 0x74, 0xac, 0x1d, 0xeb, 0x5e, 0xe5, 0xe1, 0x3b, 0xad, 0xd5, 0x9d, 0x5b, - 0xc7, 0x31, 0xa4, 0x63, 0x9f, 0xcd, 0x1a, 0xb7, 0x70, 0xc2, 0x40, 0x4f, 0x00, 0x3c, 0x4e, 0x89, - 0xa4, 0xbe, 0x4b, 0xa4, 0x93, 0xd3, 0xfc, 0x77, 0xb3, 0xf8, 0xcf, 0x92, 0xa0, 0x70, 0xd9, 0x10, - 0xda, 0x52, 0xb1, 0x27, 0x91, 0x9f, 0xb0, 0xf3, 0x57, 0x62, 0x1b, 0x42, 0x5b, 0x36, 0xff, 0xc9, - 0x83, 0xfd, 0x35, 0xf3, 0x29, 0xda, 0x84, 0x5c, 0xe0, 0xeb, 0xe0, 0xcb, 0x9d, 0xc2, 0x7c, 0xd6, - 0xc8, 0xf5, 0x7b, 0x38, 0x17, 0xf8, 0xe8, 0x21, 0xd8, 0x63, 0x2a, 0x89, 0x09, 0xcb, 0xc9, 0x12, - 0x56, 0x15, 0x30, 0x39, 0x69, 0x2c, 0xfa, 0x04, 0x6c, 0x55, 0x56, 0x13, 0xcc, 0x76, 0x16, 0x47, - 0xed, 0x79, 0x14, 0x51, 0x2f, 0xe1, 0x29, 0x3c, 0xda, 0x87, 0x8a, 0x4f, 0x85, 0xc7, 0x83, 0x48, - 0xaa, 0x4a, 0xda, 0x9a, 0xbe, 0xbb, 0x8e, 0xde, 0x5b, 0x42, 0x71, 0x9a, 0x87, 0x9e, 0x40, 0x41, - 0x48, 0x22, 0x27, 0xc2, 0xb9, 0xad, 0x15, 0xea, 0x6b, 0x03, 0xd0, 0x28, 0x13, 0x82, 0xe1, 0xa0, - 0x2f, 0x61, 0x63, 0x4c, 0x42, 0x32, 0xa0, 0xdc, 0x35, 0x2a, 0x05, 0xad, 0xf2, 0x5e, 0x66, 0xea, - 0x31, 0x32, 0x16, 0xc2, 0xb5, 0x71, 0x7a, 0x8a, 0xf6, 0x01, 0x88, 0x94, 0xc4, 0xfb, 0x6e, 0x4c, - 0x43, 0xe9, 0x14, 0xb5, 0xca, 0xfb, 0x99, 0xb1, 0x50, 0xf9, 0x92, 0xf1, 0x61, 0x7b, 0x01, 0xc6, - 0x29, 0x22, 0xfa, 0x02, 0x2a, 0x1e, 0xe5, 0x32, 0x78, 0x11, 0x78, 0x44, 0x52, 0xa7, 0xa4, 0x75, - 0x1a, 0x59, 0x3a, 0xdd, 0x25, 0xcc, 0x24, 0x95, 0x66, 0x36, 0xff, 0xc8, 0x41, 0xf1, 0x88, 0xf2, - 0x69, 0xe0, 0xbd, 0xd9, 0xe3, 0x7e, 0x7c, 0xe1, 0xb8, 0x33, 0x23, 0x33, 0xdb, 0xae, 0x9c, 0xf8, - 0xa7, 0x50, 0xa2, 0xa1, 0x1f, 0xb1, 0x20, 0x94, 0xe6, 0xb8, 0x33, 0xdd, 0xb2, 0x6f, 0x30, 0x78, - 0x81, 0x46, 0xfb, 0x50, 0x8b, 0x5d, 0xec, 0x5e, 0x38, 0xeb, 0x9d, 0x2c, 0xfa, 0xb7, 0x1a, 0x68, - 0x0e, 0xa9, 0x3a, 0x49, 0xcd, 0x50, 0x0f, 0x6a, 0x11, 0xa7, 0xd3, 0x80, 0x4d, 0x84, 0xab, 0x93, - 0x28, 0x5c, 0x29, 0x09, 0x5c, 0x4d, 0x58, 0x6a, 0xd6, 0xfc, 0x39, 0x07, 0xa5, 0x24, 0x46, 0xf4, - 0xc8, 0x94, 0xc3, 0x5a, 0x1f, 0x50, 0x82, 0xd5, 0x52, 0x71, 0x25, 0x1e, 0xc1, 0xed, 0x88, 0x71, - 0x29, 0x9c, 0xdc, 0x4e, 0x7e, 0x9d, 0x67, 0x0f, 0x19, 0x97, 0x5d, 0x16, 0xbe, 0x08, 0x06, 0x38, - 0x06, 0xa3, 0xe7, 0x50, 0x99, 0x06, 0x5c, 0x4e, 0xc8, 0xc8, 0x0d, 0x22, 0xe1, 0xe4, 0x35, 0xf7, - 0x83, 0xcb, 0xb6, 0x6c, 0x1d, 0xc7, 0xf8, 0xfe, 0x61, 0x67, 0x63, 0x3e, 0x6b, 0xc0, 0x62, 0x2a, - 0x30, 0x18, 0xa9, 0x7e, 0x24, 0xb6, 0x0e, 0xa0, 0xbc, 0x58, 0x41, 0xf7, 0x01, 0xc2, 0xd8, 0xa2, - 0xee, 0xc2, 0x34, 0xb5, 0xf9, 0xac, 0x51, 0x36, 0xc6, 0xed, 0xf7, 0x70, 0xd9, 0x00, 0xfa, 0x3e, - 0x42, 0x60, 0x13, 0xdf, 0xe7, 0xda, 0x42, 0x65, 0xac, 0xc7, 0xcd, 0xdf, 0x6e, 0x83, 0xfd, 0x8c, - 0x88, 0xe1, 0x4d, 0xb7, 0x19, 0xb5, 0xe7, 0x8a, 0xe9, 0xee, 0x03, 0x88, 0xf8, 0x28, 0x55, 0x3a, - 0xf6, 0x32, 0x1d, 0x73, 0xc0, 0x2a, 0x1d, 0x03, 0x88, 0xd3, 0x11, 0x23, 0x26, 0xb5, 0xbf, 0x6c, - 0xac, 0xc7, 0x68, 0x17, 0x8a, 0x21, 0xf3, 0x35, 0xbd, 0xa0, 0xe9, 0x30, 0x9f, 0x35, 0x0a, 0xaa, - 0xa5, 0xf4, 0x7b, 0xb8, 0xa0, 0x96, 0xfa, 0xbe, 0xba, 0xb7, 0x24, 0x0c, 0x99, 0x24, 0xaa, 0x29, - 0x09, 0x73, 0xff, 0x33, 0x8d, 0xd5, 0x5e, 0xc2, 0x92, 0x7b, 0x9b, 0x62, 0xa2, 0x63, 0x78, 0x3b, - 0x89, 0x37, 0x2d, 0x58, 0xba, 0x8e, 0x20, 0x32, 0x0a, 0xa9, 0x95, 0x54, 0x9f, 0x2c, 0xaf, 0xef, - 0x93, 0xba, 0x82, 0x59, 0x7d, 0xb2, 0x03, 0x35, 0x9f, 0x8a, 0x80, 0x53, 0x5f, 0xdf, 0x40, 0xea, - 0xc0, 0x8e, 0x75, 0x6f, 0x63, 0xcd, 0xd3, 0x63, 0x44, 0x28, 0xae, 0x1a, 0x8e, 0x9e, 0xa1, 0x36, - 0x94, 0x8c, 0x6f, 0x84, 0x53, 0xd1, 0xde, 0xbd, 0x62, 0x7f, 0x5c, 0xd0, 0x2e, 0x74, 0x90, 0xea, - 0xb5, 0x3a, 0xc8, 0x63, 0x80, 0x11, 0x1b, 0xb8, 0x3e, 0x0f, 0xa6, 0x94, 0x3b, 0x35, 0xcd, 0xdd, - 0xca, 0xe2, 0xf6, 0x34, 0x02, 0x97, 0x47, 0x6c, 0x10, 0x0f, 0x9b, 0x3f, 0x5a, 0xf0, 0xd6, 0x4a, - 0x50, 0xe8, 0x63, 0x28, 0x9a, 0xb0, 0x2e, 0xfb, 0x08, 0x30, 0x3c, 0x9c, 0x60, 0xd1, 0x36, 0x94, - 0xd5, 0x1d, 0xa1, 0x42, 0xd0, 0xf8, 0xf6, 0x97, 0xf1, 0xf2, 0x07, 0xe4, 0x40, 0x91, 0x8c, 0x02, - 0xa2, 0xd6, 0xf2, 0x7a, 0x2d, 0x99, 0x36, 0x7f, 0xca, 0x41, 0xd1, 0x88, 0xdd, 0x74, 0x3b, 0x37, - 0xdb, 0xae, 0xdc, 0xac, 0x3d, 0xa8, 0xc6, 0xe5, 0x34, 0x96, 0xb0, 0x5f, 0x5b, 0xd4, 0x4a, 0x8c, - 0x8f, 0xed, 0xb0, 0x07, 0x76, 0x10, 0x91, 0xb1, 0x69, 0xe5, 0x99, 0x3b, 0xf7, 0x0f, 0xdb, 0x07, - 0xdf, 0x44, 0xb1, 0xb3, 0x4b, 0xf3, 0x59, 0xc3, 0x56, 0x3f, 0x60, 0x4d, 0x6b, 0xfe, 0x9b, 0x83, - 0x62, 0x77, 0x34, 0x11, 0x92, 0xf2, 0x9b, 0x2e, 0x88, 0xd9, 0x76, 0xa5, 0x20, 0x5d, 0x28, 0x72, - 0xc6, 0xa4, 0xeb, 0x91, 0xcb, 0x6a, 0x81, 0x19, 0x93, 0xdd, 0x76, 0x67, 0x43, 0x11, 0x55, 0x23, - 0x89, 0xe7, 0xb8, 0xa0, 0xa8, 0x5d, 0x82, 0x9e, 0xc3, 0x66, 0xd2, 0x7e, 0x4f, 0x18, 0x93, 0x42, - 0x72, 0x12, 0xb9, 0x43, 0x7a, 0xaa, 0xde, 0xbc, 0xfc, 0xba, 0x2f, 0x93, 0xfd, 0xd0, 0xe3, 0xa7, - 0xba, 0x50, 0x4f, 0xe9, 0x29, 0xbe, 0x63, 0x04, 0x3a, 0x09, 0xff, 0x29, 0x3d, 0x15, 0xe8, 0x73, - 0xd8, 0xa6, 0x0b, 0x98, 0x52, 0x74, 0x47, 0x64, 0xac, 0x1e, 0x16, 0xd7, 0x1b, 0x31, 0x6f, 0xa8, - 0x7b, 0x9b, 0x8d, 0xef, 0xd2, 0xb4, 0xd4, 0x57, 0x31, 0xa2, 0xab, 0x00, 0xcd, 0x5f, 0x2c, 0x28, - 0x1c, 0x51, 0x8f, 0x53, 0xf9, 0x46, 0x0b, 0xde, 0x83, 0x9a, 0xd0, 0xaa, 0xee, 0x94, 0x8c, 0x26, - 0x34, 0x79, 0xd7, 0xd6, 0x3c, 0xca, 0x0a, 0x78, 0xac, 0x70, 0xb8, 0x2a, 0x96, 0x13, 0xa1, 0x1a, - 0x77, 0x48, 0xc6, 0xb1, 0x09, 0xcb, 0x58, 0x8f, 0x9b, 0x7f, 0x5b, 0x50, 0x49, 0x31, 0xd6, 0x46, - 0xdd, 0xb9, 0xf6, 0x27, 0xb9, 0x49, 0x20, 0xf5, 0x61, 0xbe, 0x77, 0xc1, 0x36, 0xbb, 0xaf, 0x09, - 0x7e, 0xc5, 0x3a, 0x9b, 0x50, 0xf0, 0x83, 0x01, 0x15, 0xd2, 0x24, 0x60, 0x66, 0xa8, 0x09, 0xb6, - 0x08, 0x5e, 0x51, 0x7d, 0x49, 0x6a, 0xf1, 0x1b, 0x1e, 0xcb, 0x1c, 0x05, 0xaf, 0x28, 0xd6, 0x6b, - 0x9d, 0xed, 0xb3, 0xf3, 0xfa, 0xad, 0x3f, 0xcf, 0xeb, 0xb7, 0xfe, 0x3b, 0xaf, 0x5b, 0x3f, 0xcc, - 0xeb, 0xd6, 0xd9, 0xbc, 0x6e, 0xfd, 0x3e, 0xaf, 0x5b, 0x7f, 0xcd, 0xeb, 0xd6, 0x49, 0x41, 0xff, - 0x79, 0xf9, 0xe8, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xcb, 0xaa, 0x47, 0xa6, 0x2c, 0x0d, 0x00, - 0x00, + 0xe0, 0x27, 0xf0, 0x57, 0xb8, 0x46, 0x88, 0x03, 0x37, 0x38, 0x59, 0xc4, 0xe2, 0xc2, 0x09, 0x7e, + 0x02, 0x9a, 0xd9, 0x59, 0x7b, 0x23, 0xaf, 0xd3, 0x44, 0xaa, 0x72, 0x9b, 0xf1, 0x3c, 0xcf, 0x33, + 0xef, 0xfb, 0xce, 0x33, 0xef, 0xac, 0xa1, 0xc6, 0x4e, 0xbe, 0xa7, 0x9e, 0x14, 0xad, 0x88, 0x33, + 0xc9, 0x10, 0xf2, 0x99, 0x37, 0xa4, 0xbc, 0x25, 0x5e, 0x12, 0x3e, 0x1e, 0x06, 0xb2, 0x35, 0xfd, + 0x70, 0xab, 0x22, 0x4f, 0x23, 0x6a, 0x00, 0x5b, 0x15, 0x11, 0x51, 0x2f, 0x99, 0xdc, 0x95, 0xc1, + 0x98, 0x0a, 0x49, 0xc6, 0xd1, 0x83, 0xc5, 0xc8, 0x2c, 0xdd, 0x19, 0xb0, 0x01, 0xd3, 0xc3, 0x07, + 0x6a, 0x14, 0xff, 0xda, 0xfc, 0xc5, 0x02, 0xfb, 0x80, 0x4a, 0x82, 0x3e, 0x83, 0xe2, 0x94, 0x72, + 0x11, 0xb0, 0xd0, 0xb1, 0x76, 0xac, 0x7b, 0x95, 0x87, 0xef, 0xb4, 0x56, 0x77, 0x6e, 0x1d, 0xc7, + 0x90, 0x8e, 0x7d, 0x36, 0x6b, 0xdc, 0xc2, 0x09, 0x03, 0x3d, 0x01, 0xf0, 0x38, 0x25, 0x92, 0xfa, + 0x2e, 0x91, 0x4e, 0x4e, 0xf3, 0xdf, 0xcd, 0xe2, 0x3f, 0x4b, 0x82, 0xc2, 0x65, 0x43, 0x68, 0x4b, + 0xc5, 0x9e, 0x44, 0x7e, 0xc2, 0xce, 0x5f, 0x89, 0x6d, 0x08, 0x6d, 0xd9, 0xfc, 0x27, 0x0f, 0xf6, + 0xd7, 0xcc, 0xa7, 0x68, 0x13, 0x72, 0x81, 0xaf, 0x83, 0x2f, 0x77, 0x0a, 0xf3, 0x59, 0x23, 0xd7, + 0xef, 0xe1, 0x5c, 0xe0, 0xa3, 0x87, 0x60, 0x8f, 0xa9, 0x24, 0x26, 0x2c, 0x27, 0x4b, 0x58, 0x55, + 0xc0, 0xe4, 0xa4, 0xb1, 0xe8, 0x13, 0xb0, 0x55, 0x59, 0x4d, 0x30, 0xdb, 0x59, 0x1c, 0xb5, 0xe7, + 0x51, 0x44, 0xbd, 0x84, 0xa7, 0xf0, 0x68, 0x1f, 0x2a, 0x3e, 0x15, 0x1e, 0x0f, 0x22, 0xa9, 0x2a, + 0x69, 0x6b, 0xfa, 0xee, 0x3a, 0x7a, 0x6f, 0x09, 0xc5, 0x69, 0x1e, 0x7a, 0x02, 0x05, 0x21, 0x89, + 0x9c, 0x08, 0xe7, 0xb6, 0x56, 0xa8, 0xaf, 0x0d, 0x40, 0xa3, 0x4c, 0x08, 0x86, 0x83, 0xbe, 0x84, + 0x8d, 0x31, 0x09, 0xc9, 0x80, 0x72, 0xd7, 0xa8, 0x14, 0xb4, 0xca, 0x7b, 0x99, 0xa9, 0xc7, 0xc8, + 0x58, 0x08, 0xd7, 0xc6, 0xe9, 0x29, 0xda, 0x07, 0x20, 0x52, 0x12, 0xef, 0xbb, 0x31, 0x0d, 0xa5, + 0x53, 0xd4, 0x2a, 0xef, 0x67, 0xc6, 0x42, 0xe5, 0x4b, 0xc6, 0x87, 0xed, 0x05, 0x18, 0xa7, 0x88, + 0xe8, 0x0b, 0xa8, 0x78, 0x94, 0xcb, 0xe0, 0x45, 0xe0, 0x11, 0x49, 0x9d, 0x92, 0xd6, 0x69, 0x64, + 0xe9, 0x74, 0x97, 0x30, 0x93, 0x54, 0x9a, 0xd9, 0xfc, 0x23, 0x07, 0xc5, 0x23, 0xca, 0xa7, 0x81, + 0xf7, 0x66, 0x8f, 0xfb, 0xf1, 0x85, 0xe3, 0xce, 0x8c, 0xcc, 0x6c, 0xbb, 0x72, 0xe2, 0x9f, 0x42, + 0x89, 0x86, 0x7e, 0xc4, 0x82, 0x50, 0x9a, 0xe3, 0xce, 0x74, 0xcb, 0xbe, 0xc1, 0xe0, 0x05, 0x1a, + 0xed, 0x43, 0x2d, 0x76, 0xb1, 0x7b, 0xe1, 0xac, 0x77, 0xb2, 0xe8, 0xdf, 0x6a, 0xa0, 0x39, 0xa4, + 0xea, 0x24, 0x35, 0x43, 0x3d, 0xa8, 0x45, 0x9c, 0x4e, 0x03, 0x36, 0x11, 0xae, 0x4e, 0xa2, 0x70, + 0xa5, 0x24, 0x70, 0x35, 0x61, 0xa9, 0x59, 0xf3, 0xe7, 0x1c, 0x94, 0x92, 0x18, 0xd1, 0x23, 0x53, + 0x0e, 0x6b, 0x7d, 0x40, 0x09, 0x56, 0x4b, 0xc5, 0x95, 0x78, 0x04, 0xb7, 0x23, 0xc6, 0xa5, 0x70, + 0x72, 0x3b, 0xf9, 0x75, 0x9e, 0x3d, 0x64, 0x5c, 0x76, 0x59, 0xf8, 0x22, 0x18, 0xe0, 0x18, 0x8c, + 0x9e, 0x43, 0x65, 0x1a, 0x70, 0x39, 0x21, 0x23, 0x37, 0x88, 0x84, 0x93, 0xd7, 0xdc, 0x0f, 0x2e, + 0xdb, 0xb2, 0x75, 0x1c, 0xe3, 0xfb, 0x87, 0x9d, 0x8d, 0xf9, 0xac, 0x01, 0x8b, 0xa9, 0xc0, 0x60, + 0xa4, 0xfa, 0x91, 0xd8, 0x3a, 0x80, 0xf2, 0x62, 0x05, 0xdd, 0x07, 0x08, 0x63, 0x8b, 0xba, 0x0b, + 0xd3, 0xd4, 0xe6, 0xb3, 0x46, 0xd9, 0x18, 0xb7, 0xdf, 0xc3, 0x65, 0x03, 0xe8, 0xfb, 0x08, 0x81, + 0x4d, 0x7c, 0x9f, 0x6b, 0x0b, 0x95, 0xb1, 0x1e, 0x37, 0x7f, 0xbb, 0x0d, 0xf6, 0x33, 0x22, 0x86, + 0x37, 0xdd, 0x66, 0xd4, 0x9e, 0x2b, 0xa6, 0xbb, 0x0f, 0x20, 0xe2, 0xa3, 0x54, 0xe9, 0xd8, 0xcb, + 0x74, 0xcc, 0x01, 0xab, 0x74, 0x0c, 0x20, 0x4e, 0x47, 0x8c, 0x98, 0xd4, 0xfe, 0xb2, 0xb1, 0x1e, + 0xa3, 0x5d, 0x28, 0x86, 0xcc, 0xd7, 0xf4, 0x82, 0xa6, 0xc3, 0x7c, 0xd6, 0x28, 0xa8, 0x96, 0xd2, + 0xef, 0xe1, 0x82, 0x5a, 0xea, 0xfb, 0xea, 0xde, 0x92, 0x30, 0x64, 0x92, 0xa8, 0xa6, 0x24, 0xcc, + 0xfd, 0xcf, 0x34, 0x56, 0x7b, 0x09, 0x4b, 0xee, 0x6d, 0x8a, 0x89, 0x8e, 0xe1, 0xed, 0x24, 0xde, + 0xb4, 0x60, 0xe9, 0x3a, 0x82, 0xc8, 0x28, 0xa4, 0x56, 0x52, 0x7d, 0xb2, 0xbc, 0xbe, 0x4f, 0xea, + 0x0a, 0x66, 0xf5, 0xc9, 0x0e, 0xd4, 0x7c, 0x2a, 0x02, 0x4e, 0x7d, 0x7d, 0x03, 0xa9, 0x03, 0x3b, + 0xd6, 0xbd, 0x8d, 0x35, 0x4f, 0x8f, 0x11, 0xa1, 0xb8, 0x6a, 0x38, 0x7a, 0x86, 0xda, 0x50, 0x32, + 0xbe, 0x11, 0x4e, 0x45, 0x7b, 0xf7, 0x8a, 0xfd, 0x71, 0x41, 0xbb, 0xd0, 0x41, 0xaa, 0xd7, 0xea, + 0x20, 0x8f, 0x01, 0x46, 0x6c, 0xe0, 0xfa, 0x3c, 0x98, 0x52, 0xee, 0xd4, 0x34, 0x77, 0x2b, 0x8b, + 0xdb, 0xd3, 0x08, 0x5c, 0x1e, 0xb1, 0x41, 0x3c, 0x6c, 0xfe, 0x68, 0xc1, 0x5b, 0x2b, 0x41, 0xa1, + 0x8f, 0xa1, 0x68, 0xc2, 0xba, 0xec, 0x23, 0xc0, 0xf0, 0x70, 0x82, 0x45, 0xdb, 0x50, 0x56, 0x77, + 0x84, 0x0a, 0x41, 0xe3, 0xdb, 0x5f, 0xc6, 0xcb, 0x1f, 0x90, 0x03, 0x45, 0x32, 0x0a, 0x88, 0x5a, + 0xcb, 0xeb, 0xb5, 0x64, 0xda, 0xfc, 0x29, 0x07, 0x45, 0x23, 0x76, 0xd3, 0xed, 0xdc, 0x6c, 0xbb, + 0x72, 0xb3, 0xf6, 0xa0, 0x1a, 0x97, 0xd3, 0x58, 0xc2, 0x7e, 0x6d, 0x51, 0x2b, 0x31, 0x3e, 0xb6, + 0xc3, 0x1e, 0xd8, 0x41, 0x44, 0xc6, 0xa6, 0x95, 0x67, 0xee, 0xdc, 0x3f, 0x6c, 0x1f, 0x7c, 0x13, + 0xc5, 0xce, 0x2e, 0xcd, 0x67, 0x0d, 0x5b, 0xfd, 0x80, 0x35, 0xad, 0xf9, 0x6f, 0x0e, 0x8a, 0xdd, + 0xd1, 0x44, 0x48, 0xca, 0x6f, 0xba, 0x20, 0x66, 0xdb, 0x95, 0x82, 0x74, 0xa1, 0xc8, 0x19, 0x93, + 0xae, 0x47, 0x2e, 0xab, 0x05, 0x66, 0x4c, 0x76, 0xdb, 0x9d, 0x0d, 0x45, 0x54, 0x8d, 0x24, 0x9e, + 0xe3, 0x82, 0xa2, 0x76, 0x09, 0x7a, 0x0e, 0x9b, 0x49, 0xfb, 0x3d, 0x61, 0x4c, 0x0a, 0xc9, 0x49, + 0xe4, 0x0e, 0xe9, 0xa9, 0x7a, 0xf3, 0xf2, 0xeb, 0xbe, 0x4c, 0xf6, 0x43, 0x8f, 0x9f, 0xea, 0x42, + 0x3d, 0xa5, 0xa7, 0xf8, 0x8e, 0x11, 0xe8, 0x24, 0xfc, 0xa7, 0xf4, 0x54, 0xa0, 0xcf, 0x61, 0x9b, + 0x2e, 0x60, 0x4a, 0xd1, 0x1d, 0x91, 0xb1, 0x7a, 0x58, 0x5c, 0x6f, 0xc4, 0xbc, 0xa1, 0xee, 0x6d, + 0x36, 0xbe, 0x4b, 0xd3, 0x52, 0x5f, 0xc5, 0x88, 0xae, 0x02, 0x34, 0x7f, 0xb5, 0xa0, 0x70, 0x44, + 0x3d, 0x4e, 0xe5, 0x1b, 0x2d, 0x78, 0x0f, 0x6a, 0x42, 0xab, 0xba, 0x53, 0x32, 0x9a, 0xd0, 0xe4, + 0x5d, 0x5b, 0xf3, 0x28, 0x2b, 0xe0, 0xb1, 0xc2, 0xe1, 0xaa, 0x58, 0x4e, 0x84, 0x6a, 0xdc, 0x21, + 0x19, 0xc7, 0x26, 0x2c, 0x63, 0x3d, 0x46, 0x5b, 0x50, 0x0a, 0x42, 0x49, 0x79, 0x48, 0x46, 0xda, + 0x65, 0x25, 0xbc, 0x98, 0x37, 0xff, 0xb6, 0xa0, 0x92, 0x52, 0x5b, 0x9b, 0x51, 0xe7, 0xda, 0x9f, + 0xeb, 0x26, 0xb9, 0xd4, 0x47, 0xfb, 0xde, 0x05, 0x4b, 0xed, 0xbe, 0x26, 0xb1, 0x15, 0x5b, 0x6d, + 0x42, 0xc1, 0x0f, 0x06, 0x54, 0x48, 0x93, 0x9c, 0x99, 0xa1, 0x26, 0xd8, 0x22, 0x78, 0x45, 0x75, + 0x6a, 0xb5, 0xf8, 0x7d, 0x8f, 0x65, 0x8e, 0x82, 0x57, 0x14, 0xeb, 0xb5, 0xce, 0xf6, 0xd9, 0x79, + 0xfd, 0xd6, 0x9f, 0xe7, 0xf5, 0x5b, 0xff, 0x9d, 0xd7, 0xad, 0x1f, 0xe6, 0x75, 0xeb, 0x6c, 0x5e, + 0xb7, 0x7e, 0x9f, 0xd7, 0xad, 0xbf, 0xe6, 0x75, 0xeb, 0xa4, 0xa0, 0xff, 0xd8, 0x7c, 0xf4, 0x7f, + 0x00, 0x00, 0x00, 0xff, 0xff, 0xc6, 0xa9, 0x68, 0xcf, 0x48, 0x0d, 0x00, 0x00, } diff --git a/api/objects.proto b/api/objects.proto index cb19d07251..f243ea9036 100644 --- a/api/objects.proto +++ b/api/objects.proto @@ -243,6 +243,9 @@ message Secret { // Name of the secret, so that we can use it easily for lookups. This is // just a copy of the data in `SecretValue.Spec.Annotations.Name`. string name = 4; + + // Whether the secret is an internal secret (not set by a user) or not. + bool internal = 5; } // SecretValue is represents a specific version of a secret, and is immutable; @@ -269,4 +272,3 @@ message SecretValue { // calculated from the data contained in `SecretValue.Spec.data`.. uint32 size = 5 [(gogoproto.customname) = "SecretSize"]; } - diff --git a/api/secrets.pb.go b/api/secrets.pb.go index 30ad59e413..ece680fdb1 100644 --- a/api/secrets.pb.go +++ b/api/secrets.pb.go @@ -56,7 +56,7 @@ func (*GetSecretResponse) ProtoMessage() {} func (*GetSecretResponse) Descriptor() ([]byte, []int) { return fileDescriptorSecrets, []int{1} } // ListSecretRequest is the request to list all secrets in the secret store, -// or all secrets filtered by (id or id prefix or name or name prefix) and types. +// or all secrets filtered by (id or id prefix or name or name prefix). type ListSecretsRequest struct { Filters *ListSecretsRequest_Filters `protobuf:"bytes,1,opt,name=filters" json:"filters,omitempty"` } @@ -66,11 +66,10 @@ func (*ListSecretsRequest) ProtoMessage() {} func (*ListSecretsRequest) Descriptor() ([]byte, []int) { return fileDescriptorSecrets, []int{2} } type ListSecretsRequest_Filters struct { - SecretIDs []string `protobuf:"bytes,1,rep,name=secret_ids,json=secretIds" json:"secret_ids,omitempty"` - IDPrefixes []string `protobuf:"bytes,2,rep,name=id_prefixes,json=idPrefixes" json:"id_prefixes,omitempty"` - Names []string `protobuf:"bytes,3,rep,name=names" json:"names,omitempty"` - NamePrefixes []string `protobuf:"bytes,4,rep,name=name_prefixes,json=namePrefixes" json:"name_prefixes,omitempty"` - Types []SecretType `protobuf:"varint,5,rep,name=types,enum=docker.swarmkit.v1.SecretType" json:"types,omitempty"` + SecretIDs []string `protobuf:"bytes,1,rep,name=secret_ids,json=secretIds" json:"secret_ids,omitempty"` + IDPrefixes []string `protobuf:"bytes,2,rep,name=id_prefixes,json=idPrefixes" json:"id_prefixes,omitempty"` + Names []string `protobuf:"bytes,3,rep,name=names" json:"names,omitempty"` + NamePrefixes []string `protobuf:"bytes,4,rep,name=name_prefixes,json=namePrefixes" json:"name_prefixes,omitempty"` } func (m *ListSecretsRequest_Filters) Reset() { *m = ListSecretsRequest_Filters{} } @@ -137,12 +136,10 @@ func (m *UpdateSecretResponse) Reset() { *m = UpdateSecretRes func (*UpdateSecretResponse) ProtoMessage() {} func (*UpdateSecretResponse) Descriptor() ([]byte, []int) { return fileDescriptorSecrets, []int{7} } -// RemoveSecretRequest contains the ID and version (optional) of the secret -// that should be removed. If no version is provided, the intention is that -// all versions should be removed. +// RemoveSecretRequest contains the ID of the secret that should be removed. This +// removes all versions of the secret. type RemoveSecretRequest struct { SecretID string `protobuf:"bytes,1,opt,name=secret_id,json=secretId,proto3" json:"secret_id,omitempty"` - Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` } func (m *RemoveSecretRequest) Reset() { *m = RemoveSecretRequest{} } @@ -295,13 +292,6 @@ func (m *ListSecretsRequest_Filters) Copy() *ListSecretsRequest_Filters { } } - if m.Types != nil { - o.Types = make([]SecretType, 0, len(m.Types)) - for _, v := range m.Types { - o.Types = append(o.Types, v) - } - } - return o } @@ -377,7 +367,6 @@ func (m *RemoveSecretRequest) Copy() *RemoveSecretRequest { o := &RemoveSecretRequest{ SecretID: m.SecretID, - Version: m.Version, } return o @@ -431,13 +420,12 @@ func (this *ListSecretsRequest_Filters) GoString() string { if this == nil { return "nil" } - s := make([]string, 0, 9) + s := make([]string, 0, 8) s = append(s, "&api.ListSecretsRequest_Filters{") s = append(s, "SecretIDs: "+fmt.Sprintf("%#v", this.SecretIDs)+",\n") s = append(s, "IDPrefixes: "+fmt.Sprintf("%#v", this.IDPrefixes)+",\n") s = append(s, "Names: "+fmt.Sprintf("%#v", this.Names)+",\n") s = append(s, "NamePrefixes: "+fmt.Sprintf("%#v", this.NamePrefixes)+",\n") - s = append(s, "Types: "+fmt.Sprintf("%#v", this.Types)+",\n") s = append(s, "}") return strings.Join(s, "") } @@ -505,10 +493,9 @@ func (this *RemoveSecretRequest) GoString() string { if this == nil { return "nil" } - s := make([]string, 0, 6) + s := make([]string, 0, 5) s = append(s, "&api.RemoveSecretRequest{") s = append(s, "SecretID: "+fmt.Sprintf("%#v", this.SecretID)+",\n") - s = append(s, "Version: "+fmt.Sprintf("%#v", this.Version)+",\n") s = append(s, "}") return strings.Join(s, "") } @@ -565,11 +552,10 @@ type SecretsClient interface { // - Returns `InvalidArgument` if the `GetSecretRequest.SecretID` is empty. // - Returns an error if getting fails. GetSecret(ctx context.Context, in *GetSecretRequest, opts ...grpc.CallOption) (*GetSecretResponse, error) - // ListSecrets returns a `ListSecretResponse` with a list all `Secret`s being + // ListSecrets returns a `ListSecretResponse` with a list all non-internal `Secret`s being // managed, or all secrets matching any name in `ListSecretsRequest.Names`, any // name prefix in `ListSecretsRequest.NamePrefixes`, any id in - // `ListSecretsRequest.SecretIDs`, or any id prefix in `ListSecretsRequest.IDPrefixes`, - // filtering by type provided in `ListSecretsRequest.Type`. + // `ListSecretsRequest.SecretIDs`, or any id prefix in `ListSecretsRequest.IDPrefixes`. // - Returns an error if listing fails. ListSecrets(ctx context.Context, in *ListSecretsRequest, opts ...grpc.CallOption) (*ListSecretsResponse, error) // CreateSecret creates and return a `CreateSecretResponse` with a `Secret` based @@ -578,23 +564,23 @@ type SecretsClient interface { // or if the secret data is too long or contains invalid characters. // - Returns `AlreadyExists` if the `CreateSecretRequest.SecretValueSpec.Annotation.Name` // conflicts with an existing secret's name. + // - Returns `ResourceExhausted` if there are already the maximum number of allowed + // secrets in the system. // - Returns an error if the creation fails. CreateSecret(ctx context.Context, in *CreateSecretRequest, opts ...grpc.CallOption) (*CreateSecretResponse, error) - // UpdateSecret adds the `UpdateSecretRequest.SecretValueSpec` to a `Secret`` + // UpdateSecret adds the `UpdateSecretRequest.SecretValueSpec` to a `Secret` // as the latest version, and returns the updated `Secret` in the `UpdateSecretResponse`. + // If there are already the maximum number of allowed secret versions in the `Secret` + // already, `UpdateSecret` will add the latest version but also remove the oldest version. // - Returns `NotFound` if no secret with name // `UpdateSecretRequest.SecretValueSpec.Annotations.Name` is found. // - Returns `InvalidArgument` if the `UpdateSecretRequest.SecretValueSpec` is malformed, - // or if the secret data is too long or contains invalid characters. + // if the secret data is too long or contains invalid characters. // - Returns an error if the update fails. UpdateSecret(ctx context.Context, in *UpdateSecretRequest, opts ...grpc.CallOption) (*UpdateSecretResponse, error) - // RemoveSecret removes a referenced by `RemoveSecretRequest.ID`. If - // `RemoveSecretRequest.Version` is not provided, the entire secret and all its - // versions are removed. Otherwise, only the version of the secret referenced - // by `RemoveSecretRequest.Version` is removed from the secret. + // RemoveSecret removes all versions referenced by `RemoveSecretRequest.ID`. // - Returns `InvalidArgument` if `RemoveSecretRequest.ID` is empty. - // - Returns `NotFound` if the a secret named `RemoveSecretRequest.ID` is not - // found or if it is found but has no version `RemoveSecretRequest.Version`. + // - Returns `NotFound` if the a secret named `RemoveSecretRequest.ID` is not found. // - Returns an error if the deletion fails. RemoveSecret(ctx context.Context, in *RemoveSecretRequest, opts ...grpc.CallOption) (*RemoveSecretResponse, error) } @@ -661,11 +647,10 @@ type SecretsServer interface { // - Returns `InvalidArgument` if the `GetSecretRequest.SecretID` is empty. // - Returns an error if getting fails. GetSecret(context.Context, *GetSecretRequest) (*GetSecretResponse, error) - // ListSecrets returns a `ListSecretResponse` with a list all `Secret`s being + // ListSecrets returns a `ListSecretResponse` with a list all non-internal `Secret`s being // managed, or all secrets matching any name in `ListSecretsRequest.Names`, any // name prefix in `ListSecretsRequest.NamePrefixes`, any id in - // `ListSecretsRequest.SecretIDs`, or any id prefix in `ListSecretsRequest.IDPrefixes`, - // filtering by type provided in `ListSecretsRequest.Type`. + // `ListSecretsRequest.SecretIDs`, or any id prefix in `ListSecretsRequest.IDPrefixes`. // - Returns an error if listing fails. ListSecrets(context.Context, *ListSecretsRequest) (*ListSecretsResponse, error) // CreateSecret creates and return a `CreateSecretResponse` with a `Secret` based @@ -674,23 +659,23 @@ type SecretsServer interface { // or if the secret data is too long or contains invalid characters. // - Returns `AlreadyExists` if the `CreateSecretRequest.SecretValueSpec.Annotation.Name` // conflicts with an existing secret's name. + // - Returns `ResourceExhausted` if there are already the maximum number of allowed + // secrets in the system. // - Returns an error if the creation fails. CreateSecret(context.Context, *CreateSecretRequest) (*CreateSecretResponse, error) - // UpdateSecret adds the `UpdateSecretRequest.SecretValueSpec` to a `Secret`` + // UpdateSecret adds the `UpdateSecretRequest.SecretValueSpec` to a `Secret` // as the latest version, and returns the updated `Secret` in the `UpdateSecretResponse`. + // If there are already the maximum number of allowed secret versions in the `Secret` + // already, `UpdateSecret` will add the latest version but also remove the oldest version. // - Returns `NotFound` if no secret with name // `UpdateSecretRequest.SecretValueSpec.Annotations.Name` is found. // - Returns `InvalidArgument` if the `UpdateSecretRequest.SecretValueSpec` is malformed, - // or if the secret data is too long or contains invalid characters. + // if the secret data is too long or contains invalid characters. // - Returns an error if the update fails. UpdateSecret(context.Context, *UpdateSecretRequest) (*UpdateSecretResponse, error) - // RemoveSecret removes a referenced by `RemoveSecretRequest.ID`. If - // `RemoveSecretRequest.Version` is not provided, the entire secret and all its - // versions are removed. Otherwise, only the version of the secret referenced - // by `RemoveSecretRequest.Version` is removed from the secret. + // RemoveSecret removes all versions referenced by `RemoveSecretRequest.ID`. // - Returns `InvalidArgument` if `RemoveSecretRequest.ID` is empty. - // - Returns `NotFound` if the a secret named `RemoveSecretRequest.ID` is not - // found or if it is found but has no version `RemoveSecretRequest.Version`. + // - Returns `NotFound` if the a secret named `RemoveSecretRequest.ID` is not found. // - Returns an error if the deletion fails. RemoveSecret(context.Context, *RemoveSecretRequest) (*RemoveSecretResponse, error) } @@ -973,13 +958,6 @@ func (m *ListSecretsRequest_Filters) MarshalTo(data []byte) (int, error) { i += copy(data[i:], s) } } - if len(m.Types) > 0 { - for _, num := range m.Types { - data[i] = 0x28 - i++ - i = encodeVarintSecrets(data, i, uint64(num)) - } - } return i, nil } @@ -1146,12 +1124,6 @@ func (m *RemoveSecretRequest) MarshalTo(data []byte) (int, error) { i = encodeVarintSecrets(data, i, uint64(len(m.SecretID))) i += copy(data[i:], m.SecretID) } - if len(m.Version) > 0 { - data[i] = 0x12 - i++ - i = encodeVarintSecrets(data, i, uint64(len(m.Version))) - i += copy(data[i:], m.Version) - } return i, nil } @@ -1479,11 +1451,6 @@ func (m *ListSecretsRequest_Filters) Size() (n int) { n += 1 + l + sovSecrets(uint64(l)) } } - if len(m.Types) > 0 { - for _, e := range m.Types { - n += 1 + sovSecrets(uint64(e)) - } - } return n } @@ -1546,10 +1513,6 @@ func (m *RemoveSecretRequest) Size() (n int) { if l > 0 { n += 1 + l + sovSecrets(uint64(l)) } - l = len(m.Version) - if l > 0 { - n += 1 + l + sovSecrets(uint64(l)) - } return n } @@ -1611,7 +1574,6 @@ func (this *ListSecretsRequest_Filters) String() string { `IDPrefixes:` + fmt.Sprintf("%v", this.IDPrefixes) + `,`, `Names:` + fmt.Sprintf("%v", this.Names) + `,`, `NamePrefixes:` + fmt.Sprintf("%v", this.NamePrefixes) + `,`, - `Types:` + fmt.Sprintf("%v", this.Types) + `,`, `}`, }, "") return s @@ -1672,7 +1634,6 @@ func (this *RemoveSecretRequest) String() string { } s := strings.Join([]string{`&RemoveSecretRequest{`, `SecretID:` + fmt.Sprintf("%v", this.SecretID) + `,`, - `Version:` + fmt.Sprintf("%v", this.Version) + `,`, `}`, }, "") return s @@ -2084,26 +2045,6 @@ func (m *ListSecretsRequest_Filters) Unmarshal(data []byte) error { } m.NamePrefixes = append(m.NamePrefixes, string(data[iNdEx:postIndex])) iNdEx = postIndex - case 5: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Types", wireType) - } - var v SecretType - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSecrets - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - v |= (SecretType(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - m.Types = append(m.Types, v) default: iNdEx = preIndex skippy, err := skipSecrets(data[iNdEx:]) @@ -2596,35 +2537,6 @@ func (m *RemoveSecretRequest) Unmarshal(data []byte) error { } m.SecretID = string(data[iNdEx:postIndex]) iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSecrets - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthSecrets - } - postIndex := iNdEx + intStringLen - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Version = string(data[iNdEx:postIndex]) - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipSecrets(data[iNdEx:]) @@ -2804,43 +2716,40 @@ var ( func init() { proto.RegisterFile("secrets.proto", fileDescriptorSecrets) } var fileDescriptorSecrets = []byte{ - // 596 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x55, 0xcb, 0x6e, 0xd3, 0x4c, - 0x14, 0xae, 0x73, 0x69, 0xea, 0x93, 0xa4, 0xff, 0xcf, 0x24, 0x20, 0xcb, 0x42, 0x4e, 0xe5, 0x72, - 0x09, 0x12, 0x38, 0x22, 0x54, 0x62, 0xc5, 0x26, 0x54, 0x94, 0x00, 0xaa, 0x90, 0x0b, 0x2c, 0xd8, - 0x54, 0x6e, 0x7c, 0x1a, 0x99, 0x26, 0xb1, 0xf1, 0x38, 0xa1, 0xdd, 0xf1, 0x18, 0x3c, 0x05, 0x0f, - 0xc0, 0x13, 0x54, 0xac, 0x58, 0xc2, 0x26, 0x10, 0x3f, 0x00, 0xe2, 0x11, 0x90, 0x3d, 0xe3, 0x10, - 0xd3, 0x49, 0x82, 0x28, 0xab, 0x8c, 0x8f, 0xbf, 0xcb, 0x39, 0x3e, 0xdf, 0x28, 0x50, 0xa6, 0xd8, - 0xf1, 0x31, 0xa0, 0x86, 0xe7, 0xbb, 0x81, 0x4b, 0x88, 0xed, 0x76, 0x8e, 0xd0, 0x37, 0xe8, 0x1b, - 0xcb, 0xef, 0x1f, 0x39, 0x81, 0x31, 0xba, 0xad, 0x16, 0x83, 0x13, 0x0f, 0x39, 0x40, 0x2d, 0x52, - 0x0f, 0x3b, 0xc9, 0x43, 0xd9, 0x3d, 0x78, 0x85, 0x9d, 0x84, 0xac, 0x56, 0xbc, 0xde, 0xb0, 0xeb, - 0x0c, 0x1a, 0xec, 0x87, 0x17, 0xab, 0x5d, 0xb7, 0xeb, 0xc6, 0xc7, 0x46, 0x74, 0x62, 0x55, 0xfd, - 0x1e, 0xfc, 0xbf, 0x83, 0xc1, 0x5e, 0xec, 0x6d, 0xe2, 0xeb, 0x21, 0xd2, 0x80, 0xdc, 0x00, 0x99, - 0x35, 0xb3, 0xef, 0xd8, 0x8a, 0xb4, 0x21, 0xd5, 0xe5, 0x56, 0x29, 0x1c, 0xd7, 0xd6, 0x18, 0xaa, - 0xbd, 0x6d, 0xae, 0xb1, 0xd7, 0x6d, 0x5b, 0xdf, 0x81, 0x0b, 0x33, 0x74, 0xea, 0xb9, 0x03, 0x8a, - 0xa4, 0x09, 0xab, 0x0c, 0x10, 0x93, 0x8b, 0x4d, 0xd5, 0x38, 0x3b, 0x8c, 0xc1, 0x39, 0x1c, 0xa9, - 0x7f, 0xc8, 0x00, 0x79, 0xe2, 0x50, 0x2e, 0x45, 0x93, 0x56, 0x1e, 0x42, 0xe1, 0xd0, 0xe9, 0x05, - 0xe8, 0x53, 0xae, 0x65, 0x88, 0xb4, 0xce, 0x12, 0x8d, 0x07, 0x8c, 0x65, 0x26, 0x74, 0xf5, 0x8b, - 0x04, 0x05, 0x5e, 0x24, 0x37, 0x01, 0xa6, 0x03, 0x46, 0xc2, 0xd9, 0xba, 0xdc, 0x2a, 0x87, 0xe3, - 0x9a, 0x9c, 0x4c, 0x48, 0x4d, 0x39, 0x19, 0x91, 0x92, 0x06, 0x14, 0x1d, 0x7b, 0xdf, 0xf3, 0xf1, - 0xd0, 0x39, 0x46, 0xaa, 0x64, 0x62, 0xf8, 0x7a, 0x38, 0xae, 0x41, 0x7b, 0xfb, 0x29, 0xaf, 0x9a, - 0xe0, 0xd8, 0xc9, 0x99, 0x54, 0x21, 0x3f, 0xb0, 0xfa, 0x48, 0x95, 0x6c, 0x04, 0x35, 0xd9, 0x03, - 0xd9, 0x84, 0x72, 0x74, 0xf8, 0x25, 0x94, 0x8b, 0xdf, 0x96, 0xa2, 0xe2, 0x94, 0xba, 0x05, 0xf9, - 0x78, 0xc9, 0x4a, 0x7e, 0x23, 0x5b, 0x5f, 0x6f, 0x6a, 0xf3, 0xbf, 0xdc, 0xb3, 0x13, 0x0f, 0x4d, - 0x06, 0xd6, 0x1f, 0x43, 0x25, 0xf5, 0x09, 0xf8, 0x1e, 0xb6, 0xa0, 0xc0, 0x43, 0x15, 0xcf, 0xb8, - 0x78, 0x11, 0x09, 0x54, 0xdf, 0x85, 0xca, 0x7d, 0x1f, 0xad, 0x00, 0xd3, 0xa1, 0xb8, 0x0b, 0xb9, - 0x28, 0x71, 0x7c, 0x0d, 0x9b, 0xf3, 0x95, 0x5e, 0x58, 0xbd, 0x21, 0xee, 0x79, 0xd8, 0x31, 0x63, - 0x82, 0xfe, 0x08, 0xaa, 0x69, 0xbd, 0x73, 0xa4, 0x64, 0x17, 0x2a, 0xcf, 0x3d, 0xfb, 0x9f, 0xf6, - 0x96, 0xd6, 0x3b, 0x47, 0x6f, 0x2f, 0xa1, 0x62, 0x62, 0xdf, 0x1d, 0xe1, 0xdf, 0x5e, 0x26, 0xa2, - 0x40, 0x61, 0x84, 0x3e, 0x75, 0xdc, 0x81, 0x92, 0x89, 0x80, 0x66, 0xf2, 0xa8, 0x5f, 0x82, 0x6a, - 0x5a, 0x9b, 0xf5, 0xd9, 0xfc, 0x9a, 0x83, 0x02, 0xdf, 0x3a, 0x71, 0x41, 0x9e, 0x5e, 0x45, 0x72, - 0x45, 0xd4, 0xf0, 0xef, 0x17, 0x5d, 0xbd, 0xba, 0x04, 0xc5, 0x5c, 0xf4, 0x8b, 0x1f, 0xdf, 0x7f, - 0x7f, 0x97, 0xf9, 0x0f, 0xca, 0x31, 0xec, 0x56, 0xdf, 0x1a, 0x58, 0x5d, 0xf4, 0xc9, 0x10, 0x8a, - 0x33, 0xa9, 0x23, 0xd7, 0xfe, 0xec, 0x66, 0xaa, 0xd7, 0x97, 0xe2, 0x16, 0xdb, 0x1e, 0x43, 0x69, - 0x36, 0x4f, 0x44, 0xa8, 0x27, 0x48, 0xb0, 0x5a, 0x5f, 0x0e, 0x5c, 0xea, 0x3c, 0x9b, 0x16, 0xb1, - 0xb3, 0x20, 0x9f, 0x62, 0x67, 0x51, 0xf0, 0x16, 0x38, 0xcf, 0xee, 0x5f, 0xec, 0x2c, 0x48, 0x9f, - 0xd8, 0x59, 0x14, 0xa5, 0x39, 0xce, 0xad, 0xcb, 0xa7, 0x13, 0x6d, 0xe5, 0xf3, 0x44, 0x5b, 0xf9, - 0x31, 0xd1, 0xa4, 0xb7, 0xa1, 0x26, 0x9d, 0x86, 0x9a, 0xf4, 0x29, 0xd4, 0xa4, 0x6f, 0xa1, 0x26, - 0x1d, 0xac, 0xc6, 0x7f, 0x22, 0x77, 0x7e, 0x06, 0x00, 0x00, 0xff, 0xff, 0xb4, 0xf6, 0x3a, 0xfd, - 0xbd, 0x06, 0x00, 0x00, + // 552 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x54, 0xcd, 0x6e, 0xd3, 0x40, + 0x10, 0xae, 0xd3, 0xd0, 0xd4, 0x93, 0x84, 0x9f, 0x75, 0x40, 0x91, 0x85, 0x1c, 0xe4, 0xf2, 0x13, + 0x24, 0x70, 0x44, 0x40, 0xe2, 0x84, 0x84, 0x42, 0x45, 0x09, 0xa0, 0x0a, 0xb9, 0x82, 0x6b, 0xe5, + 0xda, 0xd3, 0xc8, 0x34, 0x89, 0x8d, 0xd7, 0x29, 0x3d, 0x72, 0xe0, 0x21, 0xb8, 0x73, 0xe7, 0x39, + 0x2a, 0x4e, 0x1c, 0x39, 0x05, 0xe2, 0x07, 0x40, 0x3c, 0x02, 0xf2, 0xee, 0xba, 0xd8, 0x74, 0x9b, + 0x20, 0xca, 0x29, 0x9b, 0xd9, 0xef, 0x67, 0x76, 0xf7, 0x1b, 0x43, 0x9d, 0xa2, 0x1b, 0x61, 0x4c, + 0xad, 0x30, 0x0a, 0xe2, 0x80, 0x10, 0x2f, 0x70, 0xf7, 0x30, 0xb2, 0xe8, 0x5b, 0x27, 0x1a, 0xed, + 0xf9, 0xb1, 0xb5, 0x7f, 0x47, 0xaf, 0xd2, 0x10, 0x5d, 0x01, 0xd0, 0xeb, 0xc1, 0xce, 0x6b, 0x74, + 0x33, 0xbc, 0xae, 0x85, 0xc3, 0xc9, 0xc0, 0x1f, 0x77, 0xf8, 0x8f, 0x28, 0x36, 0x06, 0xc1, 0x20, + 0x60, 0xcb, 0x4e, 0xba, 0xe2, 0x55, 0xf3, 0x01, 0x9c, 0xdf, 0xc0, 0x78, 0x8b, 0xd9, 0xd9, 0xf8, + 0x66, 0x82, 0x34, 0x26, 0x37, 0x41, 0xe5, 0xfe, 0xdb, 0xbe, 0xd7, 0x54, 0xae, 0x28, 0x6d, 0xb5, + 0x57, 0x4b, 0xa6, 0xad, 0x55, 0x8e, 0xea, 0xaf, 0xdb, 0xab, 0x7c, 0xbb, 0xef, 0x99, 0x1b, 0x70, + 0x21, 0x47, 0xa7, 0x61, 0x30, 0xa6, 0x48, 0xba, 0xb0, 0xc2, 0x01, 0x8c, 0x5c, 0xed, 0xea, 0xd6, + 0xf1, 0xfe, 0x2d, 0xc1, 0x11, 0x48, 0xf3, 0x7d, 0x09, 0xc8, 0x73, 0x9f, 0x0a, 0x29, 0x9a, 0xb5, + 0xf2, 0x04, 0x2a, 0xbb, 0xfe, 0x30, 0xc6, 0x88, 0x0a, 0x2d, 0x4b, 0xa6, 0x75, 0x9c, 0x68, 0x3d, + 0xe6, 0x2c, 0x3b, 0xa3, 0xeb, 0x1f, 0x15, 0xa8, 0x88, 0x22, 0xb9, 0x05, 0x70, 0x74, 0xc0, 0x54, + 0x78, 0xb9, 0xad, 0xf6, 0xea, 0xc9, 0xb4, 0xa5, 0x66, 0x27, 0xa4, 0xb6, 0x9a, 0x1d, 0x91, 0x92, + 0x0e, 0x54, 0x7d, 0x6f, 0x3b, 0x8c, 0x70, 0xd7, 0x3f, 0x40, 0xda, 0x2c, 0x31, 0xf8, 0xd9, 0x64, + 0xda, 0x82, 0xfe, 0xfa, 0x0b, 0x51, 0xb5, 0xc1, 0xf7, 0xb2, 0x35, 0x69, 0xc0, 0x99, 0xb1, 0x33, + 0x42, 0xda, 0x5c, 0x4e, 0xa1, 0x36, 0xff, 0x43, 0xd6, 0xa0, 0x9e, 0x2e, 0x7e, 0x0b, 0x95, 0xd9, + 0x6e, 0x2d, 0x2d, 0x66, 0x54, 0xf3, 0x19, 0x68, 0x85, 0xc3, 0x88, 0x1b, 0xbd, 0x07, 0x15, 0x91, + 0x08, 0xd6, 0xed, 0xfc, 0x2b, 0xcd, 0xa0, 0xe6, 0x26, 0x68, 0x8f, 0x22, 0x74, 0x62, 0x2c, 0x3e, + 0xef, 0x7d, 0x28, 0xa7, 0xd9, 0x11, 0x17, 0xba, 0x76, 0xb2, 0xd2, 0x2b, 0x67, 0x38, 0xc1, 0xad, + 0x10, 0x5d, 0x9b, 0x11, 0xcc, 0xa7, 0xd0, 0x28, 0xea, 0x9d, 0xe2, 0xbd, 0x37, 0x41, 0x7b, 0x19, + 0x7a, 0xff, 0xb5, 0xb7, 0xa2, 0xde, 0x29, 0x7a, 0x7b, 0x08, 0x9a, 0x8d, 0xa3, 0x60, 0x1f, 0xff, + 0x79, 0x2c, 0x2e, 0x41, 0xa3, 0xa8, 0xc0, 0xbb, 0xe9, 0x7e, 0x2b, 0x43, 0x45, 0xbc, 0x2d, 0x09, + 0x40, 0x3d, 0x1a, 0x1d, 0x72, 0x55, 0xd6, 0xd6, 0x9f, 0x83, 0xa9, 0x5f, 0x5b, 0x80, 0xe2, 0x2e, + 0xe6, 0xc5, 0xcf, 0x9f, 0x7e, 0x7c, 0x28, 0x9d, 0x83, 0x3a, 0x83, 0xdd, 0x1e, 0x39, 0x63, 0x67, + 0x80, 0x11, 0x99, 0x40, 0x35, 0x97, 0x2d, 0x72, 0xfd, 0xef, 0x26, 0x49, 0xbf, 0xb1, 0x10, 0x37, + 0xdf, 0xf6, 0x00, 0x6a, 0xf9, 0xd4, 0x10, 0xa9, 0x9e, 0x24, 0xa7, 0x7a, 0x7b, 0x31, 0x70, 0xa1, + 0x73, 0x3e, 0x13, 0x72, 0x67, 0x49, 0x0a, 0xe5, 0xce, 0xb2, 0x78, 0xcd, 0x71, 0xce, 0xbf, 0xbf, + 0xdc, 0x59, 0x92, 0x31, 0xb9, 0xb3, 0x2c, 0x4a, 0x27, 0x38, 0xf7, 0x2e, 0x1f, 0xce, 0x8c, 0xa5, + 0xaf, 0x33, 0x63, 0xe9, 0xe7, 0xcc, 0x50, 0xde, 0x25, 0x86, 0x72, 0x98, 0x18, 0xca, 0x97, 0xc4, + 0x50, 0xbe, 0x27, 0x86, 0xb2, 0xb3, 0xc2, 0x3e, 0xfa, 0x77, 0x7f, 0x05, 0x00, 0x00, 0xff, 0xff, + 0x41, 0x45, 0x54, 0xea, 0x60, 0x06, 0x00, 0x00, } diff --git a/api/secrets.proto b/api/secrets.proto index a94efa7a76..f59619105b 100644 --- a/api/secrets.proto +++ b/api/secrets.proto @@ -2,7 +2,6 @@ syntax = "proto3"; package docker.swarmkit.v1; -import "types.proto"; import "specs.proto"; import "objects.proto"; import "plugin/plugin.proto"; @@ -19,11 +18,10 @@ service Secrets { option (docker.protobuf.plugin.tls_authorization) = { roles: "swarm-manager" }; } - // ListSecrets returns a `ListSecretResponse` with a list all `Secret`s being + // ListSecrets returns a `ListSecretResponse` with a list all non-internal `Secret`s being // managed, or all secrets matching any name in `ListSecretsRequest.Names`, any // name prefix in `ListSecretsRequest.NamePrefixes`, any id in - // `ListSecretsRequest.SecretIDs`, or any id prefix in `ListSecretsRequest.IDPrefixes`, - // filtering by type provided in `ListSecretsRequest.Type`. + // `ListSecretsRequest.SecretIDs`, or any id prefix in `ListSecretsRequest.IDPrefixes`. // - Returns an error if listing fails. rpc ListSecrets(ListSecretsRequest) returns (ListSecretsResponse) { option (docker.protobuf.plugin.tls_authorization) = { roles: "swarm-manager" }; @@ -34,29 +32,29 @@ service Secrets { // or if the secret data is too long or contains invalid characters. // - Returns `AlreadyExists` if the `CreateSecretRequest.SecretValueSpec.Annotation.Name` // conflicts with an existing secret's name. + // - Returns `ResourceExhausted` if there are already the maximum number of allowed + // secrets in the system. // - Returns an error if the creation fails. rpc CreateSecret(CreateSecretRequest) returns (CreateSecretResponse) { option (docker.protobuf.plugin.tls_authorization) = { roles: "swarm-manager" }; } - // UpdateSecret adds the `UpdateSecretRequest.SecretValueSpec` to a `Secret`` + // UpdateSecret adds the `UpdateSecretRequest.SecretValueSpec` to a `Secret` // as the latest version, and returns the updated `Secret` in the `UpdateSecretResponse`. + // If there are already the maximum number of allowed secret versions in the `Secret` + // already, `UpdateSecret` will add the latest version but also remove the oldest version. // - Returns `NotFound` if no secret with name // `UpdateSecretRequest.SecretValueSpec.Annotations.Name` is found. // - Returns `InvalidArgument` if the `UpdateSecretRequest.SecretValueSpec` is malformed, - // or if the secret data is too long or contains invalid characters. + // if the secret data is too long or contains invalid characters. // - Returns an error if the update fails. rpc UpdateSecret(UpdateSecretRequest) returns (UpdateSecretResponse) { option (docker.protobuf.plugin.tls_authorization) = { roles: "swarm-manager" }; } - // RemoveSecret removes a referenced by `RemoveSecretRequest.ID`. If - // `RemoveSecretRequest.Version` is not provided, the entire secret and all its - // versions are removed. Otherwise, only the version of the secret referenced - // by `RemoveSecretRequest.Version` is removed from the secret. + // RemoveSecret removes all versions referenced by `RemoveSecretRequest.ID`. // - Returns `InvalidArgument` if `RemoveSecretRequest.ID` is empty. - // - Returns `NotFound` if the a secret named `RemoveSecretRequest.ID` is not - // found or if it is found but has no version `RemoveSecretRequest.Version`. + // - Returns `NotFound` if the a secret named `RemoveSecretRequest.ID` is not found. // - Returns an error if the deletion fails. rpc RemoveSecret(RemoveSecretRequest) returns (RemoveSecretResponse) { option (docker.protobuf.plugin.tls_authorization) = { roles: "swarm-manager" }; @@ -77,14 +75,13 @@ message GetSecretResponse { } // ListSecretRequest is the request to list all secrets in the secret store, -// or all secrets filtered by (id or id prefix or name or name prefix) and types. +// or all secrets filtered by (id or id prefix or name or name prefix). message ListSecretsRequest { message Filters { repeated string secret_ids = 1 [(gogoproto.customname) = "SecretIDs"]; repeated string id_prefixes = 2 [(gogoproto.customname) = "IDPrefixes"]; repeated string names = 3; repeated string name_prefixes = 4; - repeated SecretType types = 5; } Filters filters = 1; @@ -128,12 +125,10 @@ message UpdateSecretResponse { Secret secret = 1; } -// RemoveSecretRequest contains the ID and version (optional) of the secret -// that should be removed. If no version is provided, the intention is that -// all versions should be removed. +// RemoveSecretRequest contains the ID of the secret that should be removed. This +// removes all versions of the secret. message RemoveSecretRequest { string secret_id = 1 [(gogoproto.customname) = "SecretID"]; - string version = 2; } // RemoveSecretResponse is an empty object indicating the successful removal of diff --git a/api/specs.pb.go b/api/specs.pb.go index cd6865bf1a..44a71234ce 100644 --- a/api/specs.pb.go +++ b/api/specs.pb.go @@ -553,6 +553,9 @@ type ClusterSpec struct { CAConfig CAConfig `protobuf:"bytes,6,opt,name=ca_config,json=caConfig" json:"ca_config"` // TaskDefaults specifies the default values to use for task creation. TaskDefaults TaskDefaults `protobuf:"bytes,7,opt,name=task_defaults,json=taskDefaults" json:"task_defaults"` + // SecretConfig specifies cluster-level secret configuration settings, such as + // maximum number of secrets. + Secrets SecretsConfig `protobuf:"bytes,8,opt,name=secrets" json:"secrets"` } func (m *ClusterSpec) Reset() { *m = ClusterSpec{} } @@ -562,12 +565,10 @@ func (*ClusterSpec) Descriptor() ([]byte, []int) { return fileDescriptorSpecs, [ // SecretValueSpec specifies a user-provided secret. type SecretValueSpec struct { Annotations Annotations `protobuf:"bytes,1,opt,name=annotations" json:"annotations"` - // Type distinguishes the different kinds of secrets in the system (such as container vs node vs swarm-specific) - Type SecretType `protobuf:"varint,2,opt,name=type,proto3,enum=docker.swarmkit.v1.SecretType" json:"type,omitempty"` // Secret payload. - Data []byte `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` + Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` // When this secret-spec should expire and no longer be available - Expiry *docker_swarmkit_v1.Timestamp `protobuf:"bytes,4,opt,name=expiry" json:"expiry,omitempty"` + Expiry *docker_swarmkit_v1.Timestamp `protobuf:"bytes,3,opt,name=expiry" json:"expiry,omitempty"` } func (m *SecretValueSpec) Reset() { *m = SecretValueSpec{} } @@ -841,6 +842,7 @@ func (m *ClusterSpec) Copy() *ClusterSpec { Dispatcher: *m.Dispatcher.Copy(), CAConfig: *m.CAConfig.Copy(), TaskDefaults: *m.TaskDefaults.Copy(), + Secrets: *m.Secrets.Copy(), } return o @@ -853,7 +855,6 @@ func (m *SecretValueSpec) Copy() *SecretValueSpec { o := &SecretValueSpec{ Annotations: *m.Annotations.Copy(), - Type: m.Type, Data: m.Data, Expiry: m.Expiry.Copy(), } @@ -1072,7 +1073,7 @@ func (this *ClusterSpec) GoString() string { if this == nil { return "nil" } - s := make([]string, 0, 11) + s := make([]string, 0, 12) s = append(s, "&api.ClusterSpec{") s = append(s, "Annotations: "+strings.Replace(this.Annotations.GoString(), `&`, ``, 1)+",\n") s = append(s, "AcceptancePolicy: "+strings.Replace(this.AcceptancePolicy.GoString(), `&`, ``, 1)+",\n") @@ -1081,6 +1082,7 @@ func (this *ClusterSpec) GoString() string { s = append(s, "Dispatcher: "+strings.Replace(this.Dispatcher.GoString(), `&`, ``, 1)+",\n") s = append(s, "CAConfig: "+strings.Replace(this.CAConfig.GoString(), `&`, ``, 1)+",\n") s = append(s, "TaskDefaults: "+strings.Replace(this.TaskDefaults.GoString(), `&`, ``, 1)+",\n") + s = append(s, "Secrets: "+strings.Replace(this.Secrets.GoString(), `&`, ``, 1)+",\n") s = append(s, "}") return strings.Join(s, "") } @@ -1088,10 +1090,9 @@ func (this *SecretValueSpec) GoString() string { if this == nil { return "nil" } - s := make([]string, 0, 8) + s := make([]string, 0, 7) s = append(s, "&api.SecretValueSpec{") s = append(s, "Annotations: "+strings.Replace(this.Annotations.GoString(), `&`, ``, 1)+",\n") - s = append(s, "Type: "+fmt.Sprintf("%#v", this.Type)+",\n") s = append(s, "Data: "+fmt.Sprintf("%#v", this.Data)+",\n") if this.Expiry != nil { s = append(s, "Expiry: "+fmt.Sprintf("%#v", this.Expiry)+",\n") @@ -1802,6 +1803,14 @@ func (m *ClusterSpec) MarshalTo(data []byte) (int, error) { return 0, err } i += n27 + data[i] = 0x42 + i++ + i = encodeVarintSpecs(data, i, uint64(m.Secrets.Size())) + n28, err := m.Secrets.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n28 return i, nil } @@ -1823,31 +1832,26 @@ func (m *SecretValueSpec) MarshalTo(data []byte) (int, error) { data[i] = 0xa i++ i = encodeVarintSpecs(data, i, uint64(m.Annotations.Size())) - n28, err := m.Annotations.MarshalTo(data[i:]) + n29, err := m.Annotations.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n28 - if m.Type != 0 { - data[i] = 0x10 - i++ - i = encodeVarintSpecs(data, i, uint64(m.Type)) - } + i += n29 if len(m.Data) > 0 { - data[i] = 0x1a + data[i] = 0x12 i++ i = encodeVarintSpecs(data, i, uint64(len(m.Data))) i += copy(data[i:], m.Data) } if m.Expiry != nil { - data[i] = 0x22 + data[i] = 0x1a i++ i = encodeVarintSpecs(data, i, uint64(m.Expiry.Size())) - n29, err := m.Expiry.MarshalTo(data[i:]) + n30, err := m.Expiry.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n29 + i += n30 } return i, nil } @@ -2153,6 +2157,8 @@ func (m *ClusterSpec) Size() (n int) { n += 1 + l + sovSpecs(uint64(l)) l = m.TaskDefaults.Size() n += 1 + l + sovSpecs(uint64(l)) + l = m.Secrets.Size() + n += 1 + l + sovSpecs(uint64(l)) return n } @@ -2161,9 +2167,6 @@ func (m *SecretValueSpec) Size() (n int) { _ = l l = m.Annotations.Size() n += 1 + l + sovSpecs(uint64(l)) - if m.Type != 0 { - n += 1 + sovSpecs(uint64(m.Type)) - } l = len(m.Data) if l > 0 { n += 1 + l + sovSpecs(uint64(l)) @@ -2379,6 +2382,7 @@ func (this *ClusterSpec) String() string { `Dispatcher:` + strings.Replace(strings.Replace(this.Dispatcher.String(), "DispatcherConfig", "DispatcherConfig", 1), `&`, ``, 1) + `,`, `CAConfig:` + strings.Replace(strings.Replace(this.CAConfig.String(), "CAConfig", "CAConfig", 1), `&`, ``, 1) + `,`, `TaskDefaults:` + strings.Replace(strings.Replace(this.TaskDefaults.String(), "TaskDefaults", "TaskDefaults", 1), `&`, ``, 1) + `,`, + `Secrets:` + strings.Replace(strings.Replace(this.Secrets.String(), "SecretsConfig", "SecretsConfig", 1), `&`, ``, 1) + `,`, `}`, }, "") return s @@ -2389,7 +2393,6 @@ func (this *SecretValueSpec) String() string { } s := strings.Join([]string{`&SecretValueSpec{`, `Annotations:` + strings.Replace(strings.Replace(this.Annotations.String(), "Annotations", "Annotations", 1), `&`, ``, 1) + `,`, - `Type:` + fmt.Sprintf("%v", this.Type) + `,`, `Data:` + fmt.Sprintf("%v", this.Data) + `,`, `Expiry:` + strings.Replace(fmt.Sprintf("%v", this.Expiry), "Timestamp", "docker_swarmkit_v1.Timestamp", 1) + `,`, `}`, @@ -4408,6 +4411,36 @@ func (m *ClusterSpec) Unmarshal(data []byte) error { return err } iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Secrets", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSpecs + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthSpecs + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Secrets.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipSpecs(data[iNdEx:]) @@ -4489,25 +4522,6 @@ func (m *SecretValueSpec) Unmarshal(data []byte) error { } iNdEx = postIndex case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) - } - m.Type = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSpecs - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - m.Type |= (SecretType(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - case 3: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType) } @@ -4538,7 +4552,7 @@ func (m *SecretValueSpec) Unmarshal(data []byte) error { m.Data = []byte{} } iNdEx = postIndex - case 4: + case 3: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Expiry", wireType) } @@ -4700,99 +4714,99 @@ var ( func init() { proto.RegisterFile("specs.proto", fileDescriptorSpecs) } var fileDescriptorSpecs = []byte{ - // 1497 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x57, 0x4f, 0x6f, 0xdb, 0x46, - 0x16, 0x17, 0x6d, 0x5a, 0x96, 0x1e, 0xe5, 0x58, 0x19, 0xe4, 0x0f, 0xa3, 0x64, 0x65, 0x45, 0xc9, - 0x66, 0x9d, 0x5d, 0xac, 0xbd, 0xab, 0xdd, 0xcd, 0x26, 0x9b, 0x0d, 0x76, 0xf5, 0xaf, 0x8e, 0xea, - 0xda, 0x11, 0xc6, 0x8e, 0x81, 0x9e, 0x84, 0x31, 0x39, 0x96, 0x09, 0x53, 0x24, 0x3b, 0x1c, 0x2a, - 0xd5, 0xad, 0xc7, 0xc0, 0x87, 0x7e, 0x03, 0x9f, 0x0a, 0xf4, 0x1b, 0xf4, 0x3b, 0xe4, 0xd8, 0x63, - 0x7b, 0x31, 0x6a, 0x5f, 0x8b, 0x02, 0x05, 0xfa, 0x05, 0x8a, 0x19, 0x8e, 0x24, 0xaa, 0xa1, 0x93, - 0x00, 0xf5, 0x6d, 0xe6, 0xf1, 0xf7, 0x7b, 0xf3, 0xf8, 0xde, 0x8f, 0xef, 0x0d, 0xc1, 0x08, 0x03, - 0x6a, 0x85, 0x6b, 0x01, 0xf3, 0xb9, 0x8f, 0x90, 0xed, 0x5b, 0x47, 0x94, 0xad, 0x85, 0xaf, 0x08, - 0x1b, 0x1c, 0x39, 0x7c, 0x6d, 0xf8, 0xf7, 0x92, 0xc1, 0x47, 0x01, 0x55, 0x80, 0xd2, 0xb5, 0xbe, - 0xdf, 0xf7, 0xe5, 0x72, 0x5d, 0xac, 0x94, 0xf5, 0xa6, 0x1d, 0x31, 0xc2, 0x1d, 0xdf, 0x5b, 0x1f, - 0x2f, 0xd4, 0x83, 0x5b, 0xdc, 0x19, 0xd0, 0x90, 0x93, 0x41, 0xb0, 0x3e, 0x59, 0xc5, 0x8f, 0xaa, - 0x5f, 0xea, 0x90, 0xdb, 0xf6, 0x6d, 0xba, 0x13, 0x50, 0x0b, 0x6d, 0x80, 0x41, 0x3c, 0xcf, 0xe7, - 0x92, 0x1b, 0x9a, 0x5a, 0x45, 0x5b, 0x35, 0x6a, 0x2b, 0x6b, 0x6f, 0x47, 0xb3, 0x56, 0x9f, 0xc2, - 0x1a, 0xfa, 0x9b, 0xd3, 0x95, 0x0c, 0x4e, 0x32, 0xd1, 0xdf, 0x40, 0x67, 0xbe, 0x4b, 0xcd, 0xb9, - 0x8a, 0xb6, 0x7a, 0xa5, 0x76, 0x27, 0xcd, 0x83, 0x38, 0x14, 0xfb, 0x2e, 0xc5, 0x12, 0x89, 0x36, - 0x00, 0x06, 0x74, 0xb0, 0x4f, 0x59, 0x78, 0xe8, 0x04, 0xe6, 0xbc, 0xe4, 0xfd, 0xe9, 0x22, 0x9e, - 0x08, 0x76, 0x6d, 0x6b, 0x02, 0xc7, 0x09, 0x2a, 0xda, 0x82, 0x02, 0x19, 0x12, 0xc7, 0x25, 0xfb, - 0x8e, 0xeb, 0xf0, 0x91, 0xa9, 0x4b, 0x57, 0x0f, 0xdf, 0xe9, 0xaa, 0x9e, 0x20, 0xe0, 0x19, 0x7a, - 0xd5, 0x06, 0x98, 0x1e, 0x84, 0x1e, 0xc0, 0x62, 0xb7, 0xbd, 0xdd, 0xea, 0x6c, 0x6f, 0x14, 0x33, - 0xa5, 0x5b, 0xc7, 0x27, 0x95, 0xeb, 0xc2, 0xc7, 0x14, 0xd0, 0xa5, 0x9e, 0xed, 0x78, 0x7d, 0xb4, - 0x0a, 0xb9, 0x7a, 0xb3, 0xd9, 0xee, 0xee, 0xb6, 0x5b, 0x45, 0xad, 0x54, 0x3a, 0x3e, 0xa9, 0xdc, - 0x98, 0x05, 0xd6, 0x2d, 0x8b, 0x06, 0x9c, 0xda, 0x25, 0xfd, 0xf5, 0x57, 0xe5, 0x4c, 0xf5, 0xb5, - 0x06, 0x85, 0x64, 0x10, 0xe8, 0x01, 0x64, 0xeb, 0xcd, 0xdd, 0xce, 0x5e, 0xbb, 0x98, 0x99, 0xd2, - 0x93, 0x88, 0xba, 0xc5, 0x9d, 0x21, 0x45, 0xf7, 0x61, 0xa1, 0x5b, 0x7f, 0xb9, 0xd3, 0x2e, 0x6a, - 0xd3, 0x70, 0x92, 0xb0, 0x2e, 0x89, 0x42, 0x89, 0x6a, 0xe1, 0x7a, 0x67, 0xbb, 0x38, 0x97, 0x8e, - 0x6a, 0x31, 0xe2, 0x78, 0x2a, 0x94, 0xb3, 0x79, 0x30, 0x76, 0x28, 0x1b, 0x3a, 0xd6, 0x25, 0x6b, - 0xe2, 0x11, 0xe8, 0x9c, 0x84, 0x47, 0x52, 0x13, 0x46, 0xba, 0x26, 0x76, 0x49, 0x78, 0x24, 0x0e, - 0x55, 0x74, 0x89, 0x17, 0xca, 0x60, 0x34, 0x70, 0x1d, 0x8b, 0x70, 0x6a, 0x4b, 0x65, 0x18, 0xb5, - 0x3f, 0xa6, 0xb1, 0xf1, 0x04, 0xa5, 0xe2, 0x7f, 0x9e, 0xc1, 0x09, 0x2a, 0x7a, 0x0a, 0xd9, 0xbe, - 0xeb, 0xef, 0x13, 0x57, 0x6a, 0xc2, 0xa8, 0xdd, 0x4d, 0x73, 0xb2, 0x21, 0x11, 0x53, 0x07, 0x8a, - 0x82, 0x1e, 0x43, 0x36, 0x0a, 0x6c, 0xc2, 0xa9, 0x99, 0x95, 0xe4, 0x4a, 0x1a, 0xf9, 0xa5, 0x44, - 0x34, 0x7d, 0xef, 0xc0, 0xe9, 0x63, 0x85, 0x47, 0x9b, 0x90, 0xf3, 0x28, 0x7f, 0xe5, 0xb3, 0xa3, - 0xd0, 0x5c, 0xac, 0xcc, 0xaf, 0x1a, 0xb5, 0xbf, 0xa4, 0x8a, 0x31, 0xc6, 0xd4, 0x39, 0x27, 0xd6, - 0xe1, 0x80, 0x7a, 0x3c, 0x76, 0xd3, 0x98, 0x33, 0x35, 0x3c, 0x71, 0x80, 0xfe, 0x0b, 0x39, 0xea, - 0xd9, 0x81, 0xef, 0x78, 0xdc, 0xcc, 0x5d, 0x1c, 0x48, 0x5b, 0x61, 0x44, 0x32, 0xf1, 0x84, 0xd1, - 0xc8, 0x82, 0x3e, 0xf0, 0x6d, 0x5a, 0x5d, 0x87, 0xab, 0x6f, 0x25, 0x0b, 0x95, 0x20, 0xa7, 0x92, - 0x15, 0x57, 0x59, 0xc7, 0x93, 0x7d, 0x75, 0x19, 0x96, 0x66, 0x12, 0x53, 0xfd, 0x71, 0x1e, 0x72, - 0xe3, 0x6a, 0xa1, 0x3a, 0xe4, 0x2d, 0xdf, 0xe3, 0xc4, 0xf1, 0x28, 0x53, 0x02, 0x49, 0xcd, 0x6d, - 0x73, 0x0c, 0x12, 0xac, 0xe7, 0x19, 0x3c, 0x65, 0xa1, 0x8f, 0x20, 0xcf, 0x68, 0xe8, 0x47, 0xcc, - 0xa2, 0xa1, 0x52, 0xc8, 0x6a, 0x7a, 0x8d, 0x63, 0x10, 0xa6, 0x9f, 0x45, 0x0e, 0xa3, 0x22, 0x4f, - 0x21, 0x9e, 0x52, 0xd1, 0x53, 0x58, 0x64, 0xa2, 0xbf, 0x31, 0xfe, 0xae, 0x22, 0xe3, 0x18, 0xd2, - 0xf5, 0x5d, 0xc7, 0x1a, 0xe1, 0x31, 0x03, 0x3d, 0x85, 0x7c, 0xe0, 0x12, 0x4b, 0x7a, 0x35, 0x17, - 0x24, 0xfd, 0x0f, 0x69, 0xf4, 0xee, 0x18, 0x84, 0xa7, 0x78, 0xf4, 0x04, 0xc0, 0xf5, 0xfb, 0x3d, - 0x9b, 0x39, 0x43, 0xca, 0x94, 0x48, 0x4a, 0x69, 0xec, 0x96, 0x44, 0xe0, 0xbc, 0xeb, 0xf7, 0xe3, - 0x25, 0xda, 0xf8, 0x5d, 0x0a, 0x49, 0xa8, 0x63, 0x13, 0x80, 0x4c, 0x9e, 0x2a, 0x7d, 0x3c, 0xfc, - 0x20, 0x57, 0xaa, 0x22, 0x09, 0x7a, 0x23, 0x0f, 0x8b, 0x2c, 0xf2, 0xc4, 0xbc, 0xa8, 0x6e, 0xc2, - 0xf5, 0x54, 0x06, 0xaa, 0x41, 0x61, 0x52, 0xc3, 0x9e, 0x63, 0xcb, 0xe2, 0xe7, 0x1b, 0xcb, 0xe7, - 0xa7, 0x2b, 0xc6, 0xa4, 0xd8, 0x9d, 0x16, 0x36, 0x26, 0xa0, 0x8e, 0x5d, 0xfd, 0x49, 0x87, 0xa5, - 0x19, 0x25, 0xa0, 0x6b, 0xb0, 0xe0, 0x0c, 0x48, 0x9f, 0xc6, 0x74, 0x1c, 0x6f, 0x50, 0x1b, 0xb2, - 0x2e, 0xd9, 0xa7, 0xae, 0xd0, 0x83, 0xc8, 0xc9, 0x5f, 0xdf, 0x2b, 0xa9, 0xb5, 0x4f, 0x24, 0xbe, - 0xed, 0x71, 0x36, 0xc2, 0x8a, 0x8c, 0x4c, 0x58, 0xb4, 0xfc, 0xc1, 0x80, 0x78, 0xa2, 0x77, 0xcc, - 0xaf, 0xe6, 0xf1, 0x78, 0x8b, 0x10, 0xe8, 0x84, 0xf5, 0x43, 0x53, 0x97, 0x66, 0xb9, 0x46, 0x45, - 0x98, 0xa7, 0xde, 0xd0, 0x5c, 0x90, 0x26, 0xb1, 0x14, 0x16, 0xdb, 0x89, 0x0b, 0x9a, 0xc7, 0x62, - 0x29, 0x78, 0x51, 0x48, 0x99, 0xb9, 0x28, 0x4d, 0x72, 0x8d, 0xfe, 0x0d, 0xd9, 0x81, 0x1f, 0x79, - 0x3c, 0x34, 0x73, 0x32, 0xd8, 0x5b, 0x69, 0xc1, 0x6e, 0x09, 0x84, 0xea, 0x6d, 0x0a, 0x8e, 0x9e, - 0xc3, 0xd5, 0x90, 0xfb, 0x41, 0xaf, 0xcf, 0x88, 0x45, 0x7b, 0x01, 0x65, 0x8e, 0x6f, 0x9b, 0xf9, - 0x8b, 0x5b, 0x64, 0x4b, 0x4d, 0x76, 0xbc, 0x2c, 0x68, 0x1b, 0x82, 0xd5, 0x95, 0x24, 0xd4, 0x85, - 0x42, 0x10, 0xb9, 0x6e, 0xcf, 0x0f, 0xe2, 0x4e, 0x0d, 0xd2, 0xc9, 0x07, 0x64, 0xad, 0x1b, 0xb9, - 0xee, 0x8b, 0x98, 0x84, 0x8d, 0x60, 0xba, 0x41, 0x37, 0x20, 0xdb, 0x67, 0x7e, 0x14, 0x84, 0xa6, - 0x21, 0xf3, 0xa1, 0x76, 0xe8, 0x19, 0x2c, 0x86, 0xd4, 0x62, 0x94, 0x87, 0x66, 0x41, 0xbe, 0xed, - 0xbd, 0xb4, 0x43, 0x76, 0x24, 0x04, 0xd3, 0x03, 0xca, 0xa8, 0x67, 0x51, 0x3c, 0xe6, 0x94, 0x9e, - 0x80, 0x91, 0x28, 0x94, 0x48, 0xf0, 0x11, 0x1d, 0xa9, 0xda, 0x8b, 0xa5, 0xd0, 0xc3, 0x90, 0xb8, - 0x51, 0x7c, 0x7d, 0xc8, 0xe3, 0x78, 0xf3, 0x9f, 0xb9, 0xc7, 0x5a, 0xa9, 0x06, 0x46, 0x22, 0x5a, - 0x74, 0x0f, 0x96, 0x18, 0xed, 0x3b, 0x21, 0x67, 0xa3, 0x1e, 0x89, 0xf8, 0xa1, 0xf9, 0x7f, 0x49, - 0x28, 0x8c, 0x8d, 0xf5, 0x88, 0x1f, 0x56, 0x7f, 0xd1, 0xa0, 0x90, 0xec, 0x87, 0xa8, 0x19, 0x77, - 0x41, 0x79, 0xe2, 0x95, 0xda, 0xfa, 0xfb, 0xfa, 0xa7, 0xec, 0x39, 0x6e, 0x24, 0x4e, 0xdc, 0x12, - 0x77, 0x16, 0x49, 0x46, 0xff, 0x84, 0x85, 0xc0, 0x67, 0x7c, 0x2c, 0xce, 0x72, 0x6a, 0x9f, 0xf0, - 0xd9, 0xf8, 0x1b, 0x8d, 0xc1, 0xd5, 0x43, 0xb8, 0x32, 0xeb, 0x0d, 0xdd, 0x87, 0xf9, 0xbd, 0x4e, - 0xb7, 0x98, 0x29, 0xdd, 0x3e, 0x3e, 0xa9, 0xdc, 0x9c, 0x7d, 0xb8, 0xe7, 0x30, 0x1e, 0x11, 0xb7, - 0xd3, 0x45, 0x7f, 0x86, 0x85, 0xd6, 0xf6, 0x0e, 0xc6, 0x45, 0xad, 0xb4, 0x72, 0x7c, 0x52, 0xb9, - 0x3d, 0x8b, 0x13, 0x8f, 0xfc, 0xc8, 0xb3, 0xb1, 0xbf, 0x3f, 0x19, 0xe3, 0xdf, 0xcc, 0x81, 0xa1, - 0xbe, 0xd9, 0xcb, 0x1d, 0xe3, 0xff, 0x83, 0xa5, 0xb8, 0xc7, 0xf5, 0x2c, 0xf9, 0x6a, 0xaa, 0x5b, - 0xbf, 0xab, 0xd5, 0x15, 0x62, 0x42, 0x9c, 0x0a, 0x74, 0x17, 0x0a, 0x4e, 0x30, 0x7c, 0xd4, 0xa3, - 0x1e, 0xd9, 0x77, 0xd5, 0x44, 0xcf, 0x61, 0x43, 0xd8, 0xda, 0xb1, 0x49, 0x8c, 0x22, 0xc7, 0xe3, - 0x94, 0x79, 0x6a, 0x56, 0xe7, 0xf0, 0x64, 0x8f, 0x9e, 0x81, 0xee, 0x04, 0x64, 0xa0, 0xfa, 0x73, - 0xea, 0x1b, 0x74, 0xba, 0xf5, 0x2d, 0x25, 0x91, 0x46, 0xee, 0xfc, 0x74, 0x45, 0x17, 0x06, 0x2c, - 0x69, 0xa8, 0x3c, 0x6e, 0x91, 0xe2, 0x24, 0xf9, 0x55, 0xe7, 0x70, 0xc2, 0x52, 0xfd, 0x5a, 0x07, - 0xa3, 0xe9, 0x46, 0x21, 0x57, 0xbd, 0xe9, 0xd2, 0xf2, 0xf6, 0x29, 0x5c, 0x25, 0xf2, 0xd2, 0x47, - 0x3c, 0xf1, 0xa1, 0xcb, 0xd1, 0xa3, 0x72, 0x77, 0x3f, 0xd5, 0xdd, 0x04, 0x1c, 0x8f, 0xa9, 0x46, - 0x56, 0xf8, 0x34, 0x35, 0x5c, 0x24, 0xbf, 0x79, 0x82, 0x76, 0x60, 0xc9, 0x67, 0xd6, 0x21, 0x0d, - 0x79, 0xdc, 0x1b, 0xd4, 0x25, 0x29, 0xf5, 0xfa, 0xfc, 0x22, 0x09, 0x54, 0x57, 0x8c, 0x38, 0xda, - 0x59, 0x1f, 0xe8, 0x31, 0xe8, 0x8c, 0x1c, 0x8c, 0xc7, 0x68, 0xaa, 0xbe, 0x31, 0x39, 0xe0, 0x33, - 0x2e, 0x24, 0x03, 0x7d, 0x0c, 0x60, 0x3b, 0x61, 0x40, 0xb8, 0x75, 0x48, 0x99, 0xaa, 0x53, 0xea, - 0x2b, 0xb6, 0x26, 0xa8, 0x19, 0x2f, 0x09, 0x36, 0xda, 0x84, 0xbc, 0x45, 0xc6, 0x4a, 0xcb, 0x5e, - 0xdc, 0x16, 0x9b, 0x75, 0xe5, 0xa2, 0x28, 0x5c, 0x9c, 0x9f, 0xae, 0xe4, 0xc6, 0x16, 0x9c, 0xb3, - 0x88, 0x52, 0xde, 0x26, 0x2c, 0x89, 0x1b, 0x65, 0xcf, 0xa6, 0x07, 0x24, 0x72, 0x79, 0x28, 0x3b, - 0xf8, 0x05, 0x37, 0x28, 0x71, 0xb9, 0x69, 0x29, 0x9c, 0x8a, 0xab, 0xc0, 0x13, 0xb6, 0xea, 0xf7, - 0x1a, 0x2c, 0xc7, 0x2d, 0x6e, 0x4f, 0xb4, 0xa7, 0xcb, 0x15, 0x4b, 0x0d, 0x74, 0xf1, 0xbb, 0xa7, - 0xfe, 0x9f, 0xca, 0x17, 0xb7, 0xd7, 0xdd, 0x51, 0x40, 0xb1, 0xc4, 0x8a, 0xb1, 0x64, 0x13, 0x4e, - 0x64, 0xf1, 0x0b, 0x58, 0xae, 0xd1, 0xbf, 0x20, 0x4b, 0x3f, 0x0f, 0x1c, 0x36, 0x52, 0x65, 0x4c, - 0xbd, 0xce, 0xec, 0x8e, 0x7f, 0x09, 0xb1, 0x02, 0x37, 0xee, 0xbc, 0x39, 0x2b, 0x67, 0xbe, 0x3b, - 0x2b, 0x67, 0x7e, 0x3e, 0x2b, 0x6b, 0x5f, 0x9c, 0x97, 0xb5, 0x37, 0xe7, 0x65, 0xed, 0xdb, 0xf3, - 0xb2, 0xf6, 0xc3, 0x79, 0x59, 0xdb, 0xcf, 0xca, 0x3f, 0xc7, 0x7f, 0xfc, 0x1a, 0x00, 0x00, 0xff, - 0xff, 0x75, 0xde, 0x2e, 0x11, 0xb3, 0x0e, 0x00, 0x00, + // 1495 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x57, 0x4f, 0x6f, 0xdb, 0xc8, + 0x15, 0x17, 0x6d, 0x5a, 0x96, 0x1e, 0xe5, 0x58, 0x19, 0xe4, 0x0f, 0xa3, 0xa4, 0xb2, 0xa2, 0xa4, + 0xa9, 0xd3, 0xa2, 0x76, 0xab, 0xb6, 0x69, 0xd2, 0x34, 0x68, 0xf5, 0xaf, 0x8e, 0xea, 0xda, 0x11, + 0xc6, 0x8e, 0x81, 0x9e, 0x84, 0x31, 0x39, 0x96, 0x09, 0x53, 0x24, 0x3b, 0x1c, 0x2a, 0xf5, 0xad, + 0xc7, 0xc0, 0x87, 0x7e, 0x03, 0x9f, 0x16, 0xfb, 0x11, 0xf6, 0x3b, 0xe4, 0xb8, 0xc7, 0x3d, 0x19, + 0x6b, 0xdf, 0x16, 0x8b, 0x05, 0x16, 0xd8, 0x2f, 0xb0, 0x98, 0xe1, 0x50, 0xa2, 0x36, 0x74, 0x12, + 0x60, 0x7d, 0x9b, 0x79, 0xf3, 0xfb, 0xbd, 0x79, 0x7c, 0xef, 0xa7, 0x37, 0x4f, 0x60, 0x84, 0x01, + 0xb5, 0xc2, 0xb5, 0x80, 0xf9, 0xdc, 0x47, 0xc8, 0xf6, 0xad, 0x23, 0xca, 0xd6, 0xc2, 0x37, 0x84, + 0x8d, 0x8e, 0x1c, 0xbe, 0x36, 0xfe, 0x7d, 0xc5, 0xe0, 0xc7, 0x01, 0x55, 0x80, 0xca, 0x8d, 0xa1, + 0x3f, 0xf4, 0xe5, 0x72, 0x5d, 0xac, 0x94, 0xf5, 0xb6, 0x1d, 0x31, 0xc2, 0x1d, 0xdf, 0x5b, 0x4f, + 0x16, 0xea, 0xe0, 0x0e, 0x77, 0x46, 0x34, 0xe4, 0x64, 0x14, 0xac, 0x4f, 0x56, 0xf1, 0x51, 0xfd, + 0xff, 0x3a, 0x14, 0xb6, 0x7d, 0x9b, 0xee, 0x04, 0xd4, 0x42, 0x1b, 0x60, 0x10, 0xcf, 0xf3, 0xb9, + 0xe4, 0x86, 0xa6, 0x56, 0xd3, 0x56, 0x8d, 0xc6, 0xca, 0xda, 0xfb, 0xd1, 0xac, 0x35, 0xa7, 0xb0, + 0x96, 0xfe, 0xee, 0x6c, 0x25, 0x87, 0xd3, 0x4c, 0xf4, 0x3b, 0xd0, 0x99, 0xef, 0x52, 0x73, 0xae, + 0xa6, 0xad, 0x5e, 0x6b, 0xdc, 0xcb, 0xf2, 0x20, 0x2e, 0xc5, 0xbe, 0x4b, 0xb1, 0x44, 0xa2, 0x0d, + 0x80, 0x11, 0x1d, 0xed, 0x53, 0x16, 0x1e, 0x3a, 0x81, 0x39, 0x2f, 0x79, 0xbf, 0xba, 0x8c, 0x27, + 0x82, 0x5d, 0xdb, 0x9a, 0xc0, 0x71, 0x8a, 0x8a, 0xb6, 0xa0, 0x44, 0xc6, 0xc4, 0x71, 0xc9, 0xbe, + 0xe3, 0x3a, 0xfc, 0xd8, 0xd4, 0xa5, 0xab, 0xc7, 0x1f, 0x74, 0xd5, 0x4c, 0x11, 0xf0, 0x0c, 0xbd, + 0x6e, 0x03, 0x4c, 0x2f, 0x42, 0x8f, 0x60, 0xb1, 0xdf, 0xdd, 0xee, 0xf4, 0xb6, 0x37, 0xca, 0xb9, + 0xca, 0x9d, 0x93, 0xd3, 0xda, 0x4d, 0xe1, 0x63, 0x0a, 0xe8, 0x53, 0xcf, 0x76, 0xbc, 0x21, 0x5a, + 0x85, 0x42, 0xb3, 0xdd, 0xee, 0xf6, 0x77, 0xbb, 0x9d, 0xb2, 0x56, 0xa9, 0x9c, 0x9c, 0xd6, 0x6e, + 0xcd, 0x02, 0x9b, 0x96, 0x45, 0x03, 0x4e, 0xed, 0x8a, 0xfe, 0xf6, 0xb3, 0x6a, 0xae, 0xfe, 0x56, + 0x83, 0x52, 0x3a, 0x08, 0xf4, 0x08, 0xf2, 0xcd, 0xf6, 0x6e, 0x6f, 0xaf, 0x5b, 0xce, 0x4d, 0xe9, + 0x69, 0x44, 0xd3, 0xe2, 0xce, 0x98, 0xa2, 0x87, 0xb0, 0xd0, 0x6f, 0xbe, 0xde, 0xe9, 0x96, 0xb5, + 0x69, 0x38, 0x69, 0x58, 0x9f, 0x44, 0xa1, 0x44, 0x75, 0x70, 0xb3, 0xb7, 0x5d, 0x9e, 0xcb, 0x46, + 0x75, 0x18, 0x71, 0x3c, 0x15, 0xca, 0xf9, 0x3c, 0x18, 0x3b, 0x94, 0x8d, 0x1d, 0xeb, 0x8a, 0x35, + 0xf1, 0x04, 0x74, 0x4e, 0xc2, 0x23, 0xa9, 0x09, 0x23, 0x5b, 0x13, 0xbb, 0x24, 0x3c, 0x12, 0x97, + 0x2a, 0xba, 0xc4, 0x0b, 0x65, 0x30, 0x1a, 0xb8, 0x8e, 0x45, 0x38, 0xb5, 0xa5, 0x32, 0x8c, 0xc6, + 0x2f, 0xb3, 0xd8, 0x78, 0x82, 0x52, 0xf1, 0xbf, 0xcc, 0xe1, 0x14, 0x15, 0x3d, 0x87, 0xfc, 0xd0, + 0xf5, 0xf7, 0x89, 0x2b, 0x35, 0x61, 0x34, 0xee, 0x67, 0x39, 0xd9, 0x90, 0x88, 0xa9, 0x03, 0x45, + 0x41, 0x4f, 0x21, 0x1f, 0x05, 0x36, 0xe1, 0xd4, 0xcc, 0x4b, 0x72, 0x2d, 0x8b, 0xfc, 0x5a, 0x22, + 0xda, 0xbe, 0x77, 0xe0, 0x0c, 0xb1, 0xc2, 0xa3, 0x4d, 0x28, 0x78, 0x94, 0xbf, 0xf1, 0xd9, 0x51, + 0x68, 0x2e, 0xd6, 0xe6, 0x57, 0x8d, 0xc6, 0x6f, 0x32, 0xc5, 0x18, 0x63, 0x9a, 0x9c, 0x13, 0xeb, + 0x70, 0x44, 0x3d, 0x1e, 0xbb, 0x69, 0xcd, 0x99, 0x1a, 0x9e, 0x38, 0x40, 0x7f, 0x85, 0x02, 0xf5, + 0xec, 0xc0, 0x77, 0x3c, 0x6e, 0x16, 0x2e, 0x0f, 0xa4, 0xab, 0x30, 0x22, 0x99, 0x78, 0xc2, 0x68, + 0xe5, 0x41, 0x1f, 0xf9, 0x36, 0xad, 0xaf, 0xc3, 0xf5, 0xf7, 0x92, 0x85, 0x2a, 0x50, 0x50, 0xc9, + 0x8a, 0xab, 0xac, 0xe3, 0xc9, 0xbe, 0xbe, 0x0c, 0x4b, 0x33, 0x89, 0xa9, 0x7f, 0x3b, 0x0f, 0x85, + 0xa4, 0x5a, 0xa8, 0x09, 0x45, 0xcb, 0xf7, 0x38, 0x71, 0x3c, 0xca, 0x94, 0x40, 0x32, 0x73, 0xdb, + 0x4e, 0x40, 0x82, 0xf5, 0x32, 0x87, 0xa7, 0x2c, 0xf4, 0x0f, 0x28, 0x32, 0x1a, 0xfa, 0x11, 0xb3, + 0x68, 0xa8, 0x14, 0xb2, 0x9a, 0x5d, 0xe3, 0x18, 0x84, 0xe9, 0x7f, 0x22, 0x87, 0x51, 0x91, 0xa7, + 0x10, 0x4f, 0xa9, 0xe8, 0x39, 0x2c, 0x32, 0xd1, 0xdf, 0x18, 0xff, 0x50, 0x91, 0x71, 0x0c, 0xe9, + 0xfb, 0xae, 0x63, 0x1d, 0xe3, 0x84, 0x81, 0x9e, 0x43, 0x31, 0x70, 0x89, 0x25, 0xbd, 0x9a, 0x0b, + 0x92, 0xfe, 0x8b, 0x2c, 0x7a, 0x3f, 0x01, 0xe1, 0x29, 0x1e, 0x3d, 0x03, 0x70, 0xfd, 0xe1, 0xc0, + 0x66, 0xce, 0x98, 0x32, 0x25, 0x92, 0x4a, 0x16, 0xbb, 0x23, 0x11, 0xb8, 0xe8, 0xfa, 0xc3, 0x78, + 0x89, 0x36, 0x7e, 0x96, 0x42, 0x52, 0xea, 0xd8, 0x04, 0x20, 0x93, 0x53, 0xa5, 0x8f, 0xc7, 0x9f, + 0xe4, 0x4a, 0x55, 0x24, 0x45, 0x6f, 0x15, 0x61, 0x91, 0x45, 0x9e, 0x78, 0x2f, 0xea, 0x9b, 0x70, + 0x33, 0x93, 0x81, 0x1a, 0x50, 0x9a, 0xd4, 0x70, 0xe0, 0xd8, 0xb2, 0xf8, 0xc5, 0xd6, 0xf2, 0xc5, + 0xd9, 0x8a, 0x31, 0x29, 0x76, 0xaf, 0x83, 0x8d, 0x09, 0xa8, 0x67, 0xd7, 0xbf, 0xd3, 0x61, 0x69, + 0x46, 0x09, 0xe8, 0x06, 0x2c, 0x38, 0x23, 0x32, 0xa4, 0x31, 0x1d, 0xc7, 0x1b, 0xd4, 0x85, 0xbc, + 0x4b, 0xf6, 0xa9, 0x2b, 0xf4, 0x20, 0x72, 0xf2, 0xdb, 0x8f, 0x4a, 0x6a, 0xed, 0x5f, 0x12, 0xdf, + 0xf5, 0x38, 0x3b, 0xc6, 0x8a, 0x8c, 0x4c, 0x58, 0xb4, 0xfc, 0xd1, 0x88, 0x78, 0xa2, 0x77, 0xcc, + 0xaf, 0x16, 0x71, 0xb2, 0x45, 0x08, 0x74, 0xc2, 0x86, 0xa1, 0xa9, 0x4b, 0xb3, 0x5c, 0xa3, 0x32, + 0xcc, 0x53, 0x6f, 0x6c, 0x2e, 0x48, 0x93, 0x58, 0x0a, 0x8b, 0xed, 0xc4, 0x05, 0x2d, 0x62, 0xb1, + 0x14, 0xbc, 0x28, 0xa4, 0xcc, 0x5c, 0x94, 0x26, 0xb9, 0x46, 0x7f, 0x86, 0xfc, 0xc8, 0x8f, 0x3c, + 0x1e, 0x9a, 0x05, 0x19, 0xec, 0x9d, 0xac, 0x60, 0xb7, 0x04, 0x42, 0xf5, 0x36, 0x05, 0x47, 0x2f, + 0xe1, 0x7a, 0xc8, 0xfd, 0x60, 0x30, 0x64, 0xc4, 0xa2, 0x83, 0x80, 0x32, 0xc7, 0xb7, 0xcd, 0xe2, + 0xe5, 0x2d, 0xb2, 0xa3, 0x5e, 0x76, 0xbc, 0x2c, 0x68, 0x1b, 0x82, 0xd5, 0x97, 0x24, 0xd4, 0x87, + 0x52, 0x10, 0xb9, 0xee, 0xc0, 0x0f, 0xe2, 0x4e, 0x0d, 0xd2, 0xc9, 0x27, 0x64, 0xad, 0x1f, 0xb9, + 0xee, 0xab, 0x98, 0x84, 0x8d, 0x60, 0xba, 0x41, 0xb7, 0x20, 0x3f, 0x64, 0x7e, 0x14, 0x84, 0xa6, + 0x21, 0xf3, 0xa1, 0x76, 0xe8, 0x05, 0x2c, 0x86, 0xd4, 0x62, 0x94, 0x87, 0x66, 0x49, 0x7e, 0xed, + 0x83, 0xac, 0x4b, 0x76, 0x24, 0x04, 0xd3, 0x03, 0xca, 0xa8, 0x67, 0x51, 0x9c, 0x70, 0x2a, 0xcf, + 0xc0, 0x48, 0x15, 0x4a, 0x24, 0xf8, 0x88, 0x1e, 0xab, 0xda, 0x8b, 0xa5, 0xd0, 0xc3, 0x98, 0xb8, + 0x51, 0x3c, 0x3e, 0x14, 0x71, 0xbc, 0xf9, 0xcb, 0xdc, 0x53, 0xad, 0xd2, 0x00, 0x23, 0x15, 0x2d, + 0x7a, 0x00, 0x4b, 0x8c, 0x0e, 0x9d, 0x90, 0xb3, 0xe3, 0x01, 0x89, 0xf8, 0xa1, 0xf9, 0x77, 0x49, + 0x28, 0x25, 0xc6, 0x66, 0xc4, 0x0f, 0xeb, 0x3f, 0x68, 0x50, 0x4a, 0xf7, 0x43, 0xd4, 0x8e, 0xbb, + 0xa0, 0xbc, 0xf1, 0x5a, 0x63, 0xfd, 0x63, 0xfd, 0x53, 0xf6, 0x1c, 0x37, 0x12, 0x37, 0x6e, 0x89, + 0x99, 0x45, 0x92, 0xd1, 0x1f, 0x61, 0x21, 0xf0, 0x19, 0x4f, 0xc4, 0x59, 0xcd, 0xec, 0x13, 0x3e, + 0x4b, 0x7e, 0xa3, 0x31, 0xb8, 0x7e, 0x08, 0xd7, 0x66, 0xbd, 0xa1, 0x87, 0x30, 0xbf, 0xd7, 0xeb, + 0x97, 0x73, 0x95, 0xbb, 0x27, 0xa7, 0xb5, 0xdb, 0xb3, 0x87, 0x7b, 0x0e, 0xe3, 0x11, 0x71, 0x7b, + 0x7d, 0xf4, 0x6b, 0x58, 0xe8, 0x6c, 0xef, 0x60, 0x5c, 0xd6, 0x2a, 0x2b, 0x27, 0xa7, 0xb5, 0xbb, + 0xb3, 0x38, 0x71, 0xe4, 0x47, 0x9e, 0x8d, 0xfd, 0xfd, 0xc9, 0x33, 0xfe, 0xc5, 0x1c, 0x18, 0xea, + 0x37, 0x7b, 0xb5, 0xcf, 0xf8, 0xdf, 0x60, 0x29, 0xee, 0x71, 0x03, 0x4b, 0x7e, 0x9a, 0xea, 0xd6, + 0x1f, 0x6a, 0x75, 0xa5, 0x98, 0x10, 0xa7, 0x02, 0xdd, 0x87, 0x92, 0x13, 0x8c, 0x9f, 0x0c, 0xa8, + 0x47, 0xf6, 0x5d, 0xf5, 0xa2, 0x17, 0xb0, 0x21, 0x6c, 0xdd, 0xd8, 0x24, 0x9e, 0x22, 0xc7, 0xe3, + 0x94, 0x79, 0xea, 0xad, 0x2e, 0xe0, 0xc9, 0x1e, 0xbd, 0x00, 0xdd, 0x09, 0xc8, 0x48, 0xf5, 0xe7, + 0xcc, 0x2f, 0xe8, 0xf5, 0x9b, 0x5b, 0x4a, 0x22, 0xad, 0xc2, 0xc5, 0xd9, 0x8a, 0x2e, 0x0c, 0x58, + 0xd2, 0x50, 0x35, 0x69, 0x91, 0xe2, 0x26, 0xf9, 0xab, 0x2e, 0xe0, 0x94, 0xa5, 0xfe, 0x8d, 0x0e, + 0x46, 0xdb, 0x8d, 0x42, 0xae, 0x7a, 0xd3, 0x95, 0xe5, 0xed, 0xdf, 0x70, 0x9d, 0xc8, 0xa1, 0x8f, + 0x78, 0xe2, 0x87, 0x2e, 0x9f, 0x1e, 0x95, 0xbb, 0x87, 0x99, 0xee, 0x26, 0xe0, 0xf8, 0x99, 0x6a, + 0xe5, 0x85, 0x4f, 0x53, 0xc3, 0x65, 0xf2, 0x93, 0x13, 0xb4, 0x03, 0x4b, 0x3e, 0xb3, 0x0e, 0x69, + 0xc8, 0xe3, 0xde, 0xa0, 0x86, 0xa4, 0xcc, 0xf1, 0xf9, 0x55, 0x1a, 0xa8, 0x46, 0x8c, 0x38, 0xda, + 0x59, 0x1f, 0xe8, 0x29, 0xe8, 0x8c, 0x1c, 0x24, 0xcf, 0x68, 0xa6, 0xbe, 0x31, 0x39, 0xe0, 0x33, + 0x2e, 0x24, 0x03, 0xfd, 0x13, 0xc0, 0x76, 0xc2, 0x80, 0x70, 0xeb, 0x90, 0x32, 0x55, 0xa7, 0xcc, + 0x4f, 0xec, 0x4c, 0x50, 0x33, 0x5e, 0x52, 0x6c, 0xb4, 0x09, 0x45, 0x8b, 0x24, 0x4a, 0xcb, 0x5f, + 0xde, 0x16, 0xdb, 0x4d, 0xe5, 0xa2, 0x2c, 0x5c, 0x5c, 0x9c, 0xad, 0x14, 0x12, 0x0b, 0x2e, 0x58, + 0x44, 0x29, 0x6f, 0x13, 0x96, 0xc4, 0x44, 0x39, 0xb0, 0xe9, 0x01, 0x89, 0x5c, 0x1e, 0xca, 0x0e, + 0x7e, 0xc9, 0x04, 0x25, 0x86, 0x9b, 0x8e, 0xc2, 0xa9, 0xb8, 0x4a, 0x3c, 0x65, 0x43, 0xcd, 0x69, + 0x13, 0x2c, 0x5c, 0x3e, 0x69, 0xc4, 0x4d, 0x30, 0x9c, 0xf9, 0xbe, 0x84, 0x57, 0xff, 0x5c, 0x83, + 0xe5, 0x18, 0xb0, 0x27, 0x3a, 0xdc, 0xd5, 0xea, 0x0d, 0x81, 0x6e, 0x13, 0x4e, 0xa4, 0xc4, 0x4a, + 0x58, 0xae, 0xd1, 0x9f, 0x20, 0x4f, 0xff, 0x1b, 0x38, 0xec, 0x58, 0x29, 0x24, 0x73, 0xba, 0xd9, + 0x4d, 0xfe, 0x21, 0x62, 0x05, 0x6e, 0xdd, 0x7b, 0x77, 0x5e, 0xcd, 0x7d, 0x75, 0x5e, 0xcd, 0x7d, + 0x7f, 0x5e, 0xd5, 0xfe, 0x77, 0x51, 0xd5, 0xde, 0x5d, 0x54, 0xb5, 0x2f, 0x2f, 0xaa, 0xda, 0xd7, + 0x17, 0x55, 0x6d, 0x3f, 0x2f, 0xff, 0x48, 0xfe, 0xe1, 0xc7, 0x00, 0x00, 0x00, 0xff, 0xff, 0xe8, + 0xec, 0x21, 0xe5, 0xc2, 0x0e, 0x00, 0x00, } diff --git a/api/specs.proto b/api/specs.proto index 8cf6328ee7..9ed88675b5 100644 --- a/api/specs.proto +++ b/api/specs.proto @@ -275,18 +275,19 @@ message ClusterSpec { // TaskDefaults specifies the default values to use for task creation. TaskDefaults task_defaults = 7 [(gogoproto.nullable) = false]; + + // SecretConfig specifies cluster-level secret configuration settings, such as + // maximum number of secrets. + SecretsConfig secrets = 8 [(gogoproto.nullable) = false]; } // SecretValueSpec specifies a user-provided secret. message SecretValueSpec { Annotations annotations = 1 [(gogoproto.nullable) = false]; - // Type distinguishes the different kinds of secrets in the system (such as container vs node vs swarm-specific) - SecretType type = 2; - // Secret payload. - bytes data = 3; + bytes data = 2; // When this secret-spec should expire and no longer be available - Timestamp expiry = 4; + Timestamp expiry = 3; } diff --git a/api/types.pb.go b/api/types.pb.go index 7b2ea3112a..402260d330 100644 --- a/api/types.pb.go +++ b/api/types.pb.go @@ -51,6 +51,7 @@ TaskDefaults DispatcherConfig RaftConfig + SecretsConfig Placement JoinTokens RootCA @@ -274,27 +275,6 @@ func (x NodeRole) String() string { } func (NodeRole) EnumDescriptor() ([]byte, []int) { return fileDescriptorTypes, []int{1} } -// SecretType provides information about what kind of secret this is -type SecretType int32 - -const ( - // CONTAINER secrets are user-specified secrets that should be injected - // into the container as an environment variable or file. - SecretType_ContainerSecret SecretType = 0 -) - -var SecretType_name = map[int32]string{ - 0: "CONTAINER", -} -var SecretType_value = map[string]int32{ - "CONTAINER": 0, -} - -func (x SecretType) String() string { - return proto.EnumName(SecretType_name, int32(x)) -} -func (SecretType) EnumDescriptor() ([]byte, []int) { return fileDescriptorTypes, []int{2} } - type RaftMemberStatus_Reachability int32 const ( @@ -630,30 +610,37 @@ func (x EncryptionKey_Algorithm) String() string { return proto.EnumName(EncryptionKey_Algorithm_name, int32(x)) } func (EncryptionKey_Algorithm) EnumDescriptor() ([]byte, []int) { - return fileDescriptorTypes, []int{36, 0} + return fileDescriptorTypes, []int{37, 0} } -// Mode specifies how this secret should be exposed inside the task. +// Mode specifies how this secret should be exposed to the task. type SecretReference_Mode int32 const ( - SecretReference_FILE SecretReference_Mode = 0 - SecretReference_ENV SecretReference_Mode = 1 + // SYSTEM means that it is not exposed inside to a task at all, but + // only available via direct access, usually at the agent-level + SecretReference_SYSTEM SecretReference_Mode = 0 + // FILE means that it will be exposed to the task as a file + SecretReference_FILE SecretReference_Mode = 1 + // ENV means that it will be exposed to the task as an environment variable + SecretReference_ENV SecretReference_Mode = 2 ) var SecretReference_Mode_name = map[int32]string{ - 0: "FILE", - 1: "ENV", + 0: "SYSTEM", + 1: "FILE", + 2: "ENV", } var SecretReference_Mode_value = map[string]int32{ - "FILE": 0, - "ENV": 1, + "SYSTEM": 0, + "FILE": 1, + "ENV": 2, } func (x SecretReference_Mode) String() string { return proto.EnumName(SecretReference_Mode_name, int32(x)) } -func (SecretReference_Mode) EnumDescriptor() ([]byte, []int) { return fileDescriptorTypes, []int{38, 0} } +func (SecretReference_Mode) EnumDescriptor() ([]byte, []int) { return fileDescriptorTypes, []int{39, 0} } // Version tracks the last time an object in the store was updated. type Version struct { @@ -1310,6 +1297,22 @@ func (m *RaftConfig) Reset() { *m = RaftConfig{} } func (*RaftConfig) ProtoMessage() {} func (*RaftConfig) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{31} } +// SecretsConfig specifies cluster-level secrets settings. +type SecretsConfig struct { + // MaxSecrets specifies how many user-specified secrets there can be. A value + // of 0 will be interpreted as the default maximum value. + MaxSecrets uint32 `protobuf:"varint,1,opt,name=max_secrets,json=maxSecrets,proto3" json:"max_secrets,omitempty"` + // MaxSecretRevisions specifies how many revisions of a secret there can be. A + // value of 0 will be interpreted as the default maximum value. + // If this value is decreased, there will be no change to existing secrets + // until the next update, after which extra revisions will be culled. + MaxSecretRevisions uint32 `protobuf:"varint,2,opt,name=max_secret_revisions,json=maxSecretRevisions,proto3" json:"max_secret_revisions,omitempty"` +} + +func (m *SecretsConfig) Reset() { *m = SecretsConfig{} } +func (*SecretsConfig) ProtoMessage() {} +func (*SecretsConfig) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{32} } + // Placement specifies task distribution constraints. type Placement struct { // constraints specifies a set of requirements a node should meet for a task. @@ -1318,7 +1321,7 @@ type Placement struct { func (m *Placement) Reset() { *m = Placement{} } func (*Placement) ProtoMessage() {} -func (*Placement) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{32} } +func (*Placement) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{33} } // JoinToken contains the join tokens for workers and managers. type JoinTokens struct { @@ -1330,7 +1333,7 @@ type JoinTokens struct { func (m *JoinTokens) Reset() { *m = JoinTokens{} } func (*JoinTokens) ProtoMessage() {} -func (*JoinTokens) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{33} } +func (*JoinTokens) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{34} } type RootCA struct { // CAKey is the root CA private key. @@ -1345,7 +1348,7 @@ type RootCA struct { func (m *RootCA) Reset() { *m = RootCA{} } func (*RootCA) ProtoMessage() {} -func (*RootCA) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{34} } +func (*RootCA) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{35} } type Certificate struct { Role NodeRole `protobuf:"varint,1,opt,name=role,proto3,enum=docker.swarmkit.v1.NodeRole" json:"role,omitempty"` @@ -1358,7 +1361,7 @@ type Certificate struct { func (m *Certificate) Reset() { *m = Certificate{} } func (*Certificate) ProtoMessage() {} -func (*Certificate) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{35} } +func (*Certificate) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{36} } // Symmetric keys to encrypt inter-agent communication. type EncryptionKey struct { @@ -1374,7 +1377,7 @@ type EncryptionKey struct { func (m *EncryptionKey) Reset() { *m = EncryptionKey{} } func (*EncryptionKey) ProtoMessage() {} -func (*EncryptionKey) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{36} } +func (*EncryptionKey) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{37} } // ManagerStatus provides informations about the state of a manager in the cluster. type ManagerStatus struct { @@ -1391,7 +1394,7 @@ type ManagerStatus struct { func (m *ManagerStatus) Reset() { *m = ManagerStatus{} } func (*ManagerStatus) ProtoMessage() {} -func (*ManagerStatus) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{37} } +func (*ManagerStatus) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{38} } // SecretReference is the linkage between a service and a secret that it uses. type SecretReference struct { @@ -1409,7 +1412,7 @@ type SecretReference struct { func (m *SecretReference) Reset() { *m = SecretReference{} } func (*SecretReference) ProtoMessage() {} -func (*SecretReference) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{38} } +func (*SecretReference) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{39} } func init() { proto.RegisterType((*Version)(nil), "docker.swarmkit.v1.Version") @@ -1449,6 +1452,7 @@ func init() { proto.RegisterType((*TaskDefaults)(nil), "docker.swarmkit.v1.TaskDefaults") proto.RegisterType((*DispatcherConfig)(nil), "docker.swarmkit.v1.DispatcherConfig") proto.RegisterType((*RaftConfig)(nil), "docker.swarmkit.v1.RaftConfig") + proto.RegisterType((*SecretsConfig)(nil), "docker.swarmkit.v1.SecretsConfig") proto.RegisterType((*Placement)(nil), "docker.swarmkit.v1.Placement") proto.RegisterType((*JoinTokens)(nil), "docker.swarmkit.v1.JoinTokens") proto.RegisterType((*RootCA)(nil), "docker.swarmkit.v1.RootCA") @@ -1458,7 +1462,6 @@ func init() { proto.RegisterType((*SecretReference)(nil), "docker.swarmkit.v1.SecretReference") proto.RegisterEnum("docker.swarmkit.v1.TaskState", TaskState_name, TaskState_value) proto.RegisterEnum("docker.swarmkit.v1.NodeRole", NodeRole_name, NodeRole_value) - proto.RegisterEnum("docker.swarmkit.v1.SecretType", SecretType_name, SecretType_value) proto.RegisterEnum("docker.swarmkit.v1.RaftMemberStatus_Reachability", RaftMemberStatus_Reachability_name, RaftMemberStatus_Reachability_value) proto.RegisterEnum("docker.swarmkit.v1.NodeStatus_State", NodeStatus_State_name, NodeStatus_State_value) proto.RegisterEnum("docker.swarmkit.v1.Mount_MountType", Mount_MountType_name, Mount_MountType_value) @@ -2059,6 +2062,19 @@ func (m *RaftConfig) Copy() *RaftConfig { return o } +func (m *SecretsConfig) Copy() *SecretsConfig { + if m == nil { + return nil + } + + o := &SecretsConfig{ + MaxSecrets: m.MaxSecrets, + MaxSecretRevisions: m.MaxSecretRevisions, + } + + return o +} + func (m *Placement) Copy() *Placement { if m == nil { return nil @@ -2729,6 +2745,17 @@ func (this *RaftConfig) GoString() string { s = append(s, "}") return strings.Join(s, "") } +func (this *SecretsConfig) GoString() string { + if this == nil { + return "nil" + } + s := make([]string, 0, 6) + s = append(s, "&api.SecretsConfig{") + s = append(s, "MaxSecrets: "+fmt.Sprintf("%#v", this.MaxSecrets)+",\n") + s = append(s, "MaxSecretRevisions: "+fmt.Sprintf("%#v", this.MaxSecretRevisions)+",\n") + s = append(s, "}") + return strings.Join(s, "") +} func (this *Placement) GoString() string { if this == nil { return "nil" @@ -4295,6 +4322,34 @@ func (m *RaftConfig) MarshalTo(data []byte) (int, error) { return i, nil } +func (m *SecretsConfig) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *SecretsConfig) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.MaxSecrets != 0 { + data[i] = 0x8 + i++ + i = encodeVarintTypes(data, i, uint64(m.MaxSecrets)) + } + if m.MaxSecretRevisions != 0 { + data[i] = 0x10 + i++ + i = encodeVarintTypes(data, i, uint64(m.MaxSecretRevisions)) + } + return i, nil +} + func (m *Placement) Marshal() (data []byte, err error) { size := m.Size() data = make([]byte, size) @@ -5228,6 +5283,18 @@ func (m *RaftConfig) Size() (n int) { return n } +func (m *SecretsConfig) Size() (n int) { + var l int + _ = l + if m.MaxSecrets != 0 { + n += 1 + sovTypes(uint64(m.MaxSecrets)) + } + if m.MaxSecretRevisions != 0 { + n += 1 + sovTypes(uint64(m.MaxSecretRevisions)) + } + return n +} + func (m *Placement) Size() (n int) { var l int _ = l @@ -5872,6 +5939,17 @@ func (this *RaftConfig) String() string { }, "") return s } +func (this *SecretsConfig) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SecretsConfig{`, + `MaxSecrets:` + fmt.Sprintf("%v", this.MaxSecrets) + `,`, + `MaxSecretRevisions:` + fmt.Sprintf("%v", this.MaxSecretRevisions) + `,`, + `}`, + }, "") + return s +} func (this *Placement) String() string { if this == nil { return "nil" @@ -10947,6 +11025,94 @@ func (m *RaftConfig) Unmarshal(data []byte) error { } return nil } +func (m *SecretsConfig) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SecretsConfig: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SecretsConfig: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MaxSecrets", wireType) + } + m.MaxSecrets = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.MaxSecrets |= (uint32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MaxSecretRevisions", wireType) + } + m.MaxSecretRevisions = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.MaxSecretRevisions |= (uint32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipTypes(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthTypes + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *Placement) Unmarshal(data []byte) error { l := len(data) iNdEx := 0 @@ -12044,232 +12210,233 @@ var ( func init() { proto.RegisterFile("types.proto", fileDescriptorTypes) } var fileDescriptorTypes = []byte{ - // 3621 bytes of a gzipped FileDescriptorProto + // 3648 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x59, 0xcd, 0x6f, 0x23, 0x47, 0x76, 0x17, 0x3f, 0x45, 0x3e, 0x92, 0x52, 0x4f, 0xcd, 0xec, 0x58, 0x43, 0x8f, 0x25, 0xba, 0xed, - 0x59, 0x7b, 0x67, 0x1d, 0xda, 0x96, 0x37, 0xc6, 0xd8, 0xb3, 0x59, 0xbb, 0xf9, 0xa1, 0x19, 0xee, - 0x48, 0x14, 0x51, 0x24, 0x35, 0x30, 0x02, 0x84, 0x28, 0x75, 0x97, 0xa8, 0xb6, 0x9a, 0xdd, 0x4c, - 0x77, 0x51, 0x1a, 0x26, 0x08, 0x30, 0xc9, 0x21, 0x09, 0x74, 0xca, 0x3d, 0x10, 0x16, 0x41, 0x82, - 0xdc, 0x72, 0x0e, 0x90, 0x93, 0x8f, 0x3e, 0x6e, 0x10, 0x20, 0x58, 0x24, 0x88, 0x10, 0x2b, 0xff, - 0xc0, 0x02, 0x41, 0xb0, 0x87, 0xe4, 0x10, 0xd4, 0x47, 0x37, 0x9b, 0x1c, 0x8e, 0x3c, 0xde, 0xdd, - 0x13, 0xbb, 0x5e, 0xfd, 0xde, 0xab, 0x57, 0x55, 0xaf, 0x5e, 0xfd, 0x5e, 0x11, 0x0a, 0x6c, 0x3a, - 0xa6, 0x41, 0x75, 0xec, 0x7b, 0xcc, 0x43, 0xc8, 0xf2, 0xcc, 0x13, 0xea, 0x57, 0x83, 0x33, 0xe2, - 0x8f, 0x4e, 0x6c, 0x56, 0x3d, 0xfd, 0xb0, 0x7c, 0x87, 0xd9, 0x23, 0x1a, 0x30, 0x32, 0x1a, 0xbf, - 0x1f, 0x7d, 0x49, 0x78, 0xf9, 0x35, 0x6b, 0xe2, 0x13, 0x66, 0x7b, 0xee, 0xfb, 0xe1, 0x87, 0xea, - 0xb8, 0x35, 0xf4, 0x86, 0x9e, 0xf8, 0x7c, 0x9f, 0x7f, 0x49, 0xa9, 0xbe, 0x05, 0xab, 0x07, 0xd4, - 0x0f, 0x6c, 0xcf, 0x45, 0xb7, 0x20, 0x63, 0xbb, 0x16, 0x7d, 0xb6, 0x91, 0xa8, 0x24, 0xde, 0x4d, - 0x63, 0xd9, 0xd0, 0xff, 0x26, 0x01, 0x05, 0xc3, 0x75, 0x3d, 0x26, 0x6c, 0x05, 0x08, 0x41, 0xda, - 0x25, 0x23, 0x2a, 0x40, 0x79, 0x2c, 0xbe, 0x51, 0x1d, 0xb2, 0x0e, 0x39, 0xa4, 0x4e, 0xb0, 0x91, - 0xac, 0xa4, 0xde, 0x2d, 0x6c, 0xff, 0xb0, 0xfa, 0xa2, 0xcf, 0xd5, 0x98, 0x91, 0xea, 0xae, 0x40, - 0x37, 0x5d, 0xe6, 0x4f, 0xb1, 0x52, 0x2d, 0x7f, 0x02, 0x85, 0x98, 0x18, 0x69, 0x90, 0x3a, 0xa1, - 0x53, 0x35, 0x0c, 0xff, 0xe4, 0xfe, 0x9d, 0x12, 0x67, 0x42, 0x37, 0x92, 0x42, 0x26, 0x1b, 0x9f, - 0x26, 0x1f, 0x24, 0xf4, 0x2f, 0x20, 0x8f, 0x69, 0xe0, 0x4d, 0x7c, 0x93, 0x06, 0xe8, 0x07, 0x90, - 0x77, 0x89, 0xeb, 0x0d, 0xcc, 0xf1, 0x24, 0x10, 0xea, 0xa9, 0x5a, 0xf1, 0xea, 0x72, 0x2b, 0xd7, - 0x26, 0xae, 0x57, 0xef, 0xf4, 0x03, 0x9c, 0xe3, 0xdd, 0xf5, 0xf1, 0x24, 0x40, 0x6f, 0x42, 0x71, - 0x44, 0x47, 0x9e, 0x3f, 0x1d, 0x1c, 0x4e, 0x19, 0x0d, 0x84, 0xe1, 0x14, 0x2e, 0x48, 0x59, 0x8d, - 0x8b, 0xf4, 0xbf, 0x4a, 0xc0, 0xad, 0xd0, 0x36, 0xa6, 0x7f, 0x38, 0xb1, 0x7d, 0x3a, 0xa2, 0x2e, - 0x0b, 0xd0, 0xef, 0x42, 0xd6, 0xb1, 0x47, 0x36, 0x93, 0x63, 0x14, 0xb6, 0xdf, 0x58, 0x36, 0xe7, - 0xc8, 0x2b, 0xac, 0xc0, 0xc8, 0x80, 0xa2, 0x4f, 0x03, 0xea, 0x9f, 0xca, 0x95, 0x10, 0x43, 0x7e, - 0xab, 0xf2, 0x9c, 0x8a, 0xbe, 0x03, 0xb9, 0x8e, 0x43, 0xd8, 0x91, 0xe7, 0x8f, 0x90, 0x0e, 0x45, - 0xe2, 0x9b, 0xc7, 0x36, 0xa3, 0x26, 0x9b, 0xf8, 0xe1, 0xae, 0xcc, 0xc9, 0xd0, 0x6d, 0x48, 0x7a, - 0x72, 0xa0, 0x7c, 0x2d, 0x7b, 0x75, 0xb9, 0x95, 0xdc, 0xef, 0xe2, 0xa4, 0x17, 0xe8, 0x0f, 0xe1, - 0x46, 0xc7, 0x99, 0x0c, 0x6d, 0xb7, 0x41, 0x03, 0xd3, 0xb7, 0xc7, 0xdc, 0x3a, 0xdf, 0x5e, 0x1e, - 0x7c, 0xe1, 0xf6, 0xf2, 0xef, 0x68, 0xcb, 0x93, 0xb3, 0x2d, 0xd7, 0xff, 0x22, 0x09, 0x37, 0x9a, - 0xee, 0xd0, 0x76, 0x69, 0x5c, 0xfb, 0x1e, 0xac, 0x51, 0x21, 0x1c, 0x9c, 0xca, 0xa0, 0x52, 0x76, - 0x4a, 0x52, 0x1a, 0x46, 0x5a, 0x6b, 0x21, 0x5e, 0x3e, 0x5c, 0x36, 0xfd, 0x17, 0xac, 0x2f, 0x8b, - 0x1a, 0xd4, 0x84, 0xd5, 0xb1, 0x98, 0x44, 0xb0, 0x91, 0x12, 0xb6, 0xee, 0x2d, 0xb3, 0xf5, 0xc2, - 0x3c, 0x6b, 0xe9, 0xaf, 0x2f, 0xb7, 0x56, 0x70, 0xa8, 0xfb, 0x9b, 0x04, 0xdf, 0x7f, 0x25, 0x60, - 0xbd, 0xed, 0x59, 0x73, 0xeb, 0x50, 0x86, 0xdc, 0xb1, 0x17, 0xb0, 0xd8, 0x41, 0x89, 0xda, 0xe8, - 0x01, 0xe4, 0xc6, 0x6a, 0xfb, 0xd4, 0xee, 0xdf, 0x5d, 0xee, 0xb2, 0xc4, 0xe0, 0x08, 0x8d, 0x1e, - 0x42, 0xde, 0x0f, 0x63, 0x62, 0x23, 0xf5, 0x2a, 0x81, 0x33, 0xc3, 0xa3, 0xdf, 0x83, 0xac, 0xdc, - 0x84, 0x8d, 0xb4, 0xd0, 0xbc, 0xf7, 0x4a, 0x6b, 0x8e, 0x95, 0x92, 0xfe, 0x8b, 0x04, 0x68, 0x98, - 0x1c, 0xb1, 0x3d, 0x3a, 0x3a, 0xa4, 0x7e, 0x97, 0x11, 0x36, 0x09, 0xd0, 0x6d, 0xc8, 0x3a, 0x94, - 0x58, 0xd4, 0x17, 0x93, 0xcc, 0x61, 0xd5, 0x42, 0x7d, 0x1e, 0xe4, 0xc4, 0x3c, 0x26, 0x87, 0xb6, - 0x63, 0xb3, 0xa9, 0x98, 0xe6, 0xda, 0xf2, 0x5d, 0x5e, 0xb4, 0x59, 0xc5, 0x31, 0x45, 0x3c, 0x67, - 0x06, 0x6d, 0xc0, 0xea, 0x88, 0x06, 0x01, 0x19, 0x52, 0x31, 0xfb, 0x3c, 0x0e, 0x9b, 0xfa, 0x43, - 0x28, 0xc6, 0xf5, 0x50, 0x01, 0x56, 0xfb, 0xed, 0x27, 0xed, 0xfd, 0xa7, 0x6d, 0x6d, 0x05, 0xad, - 0x43, 0xa1, 0xdf, 0xc6, 0x4d, 0xa3, 0xfe, 0xd8, 0xa8, 0xed, 0x36, 0xb5, 0x04, 0x2a, 0x41, 0x7e, - 0xd6, 0x4c, 0xea, 0x3f, 0x4b, 0x00, 0xf0, 0x0d, 0x54, 0x93, 0xfa, 0x14, 0x32, 0x01, 0x23, 0x4c, - 0x6e, 0xdc, 0xda, 0xf6, 0xdb, 0xcb, 0xbc, 0x9e, 0xc1, 0xab, 0xfc, 0x87, 0x62, 0xa9, 0x12, 0xf7, - 0x30, 0xb9, 0xe8, 0x61, 0x46, 0x20, 0xe7, 0x5d, 0xcb, 0x41, 0xba, 0xc1, 0xbf, 0x12, 0x28, 0x0f, - 0x19, 0xdc, 0x34, 0x1a, 0x5f, 0x68, 0x49, 0xa4, 0x41, 0xb1, 0xd1, 0xea, 0xd6, 0xf7, 0xdb, 0xed, - 0x66, 0xbd, 0xd7, 0x6c, 0x68, 0x29, 0xfd, 0x1e, 0x64, 0x5a, 0x23, 0x32, 0xa4, 0xe8, 0x2e, 0x8f, - 0x80, 0x23, 0xea, 0x53, 0xd7, 0x0c, 0x03, 0x6b, 0x26, 0xd0, 0x7f, 0x9e, 0x87, 0xcc, 0x9e, 0x37, - 0x71, 0x19, 0xda, 0x8e, 0x9d, 0xe2, 0xb5, 0xed, 0xcd, 0x65, 0x53, 0x10, 0xc0, 0x6a, 0x6f, 0x3a, - 0xa6, 0xea, 0x94, 0xdf, 0x86, 0xac, 0x8c, 0x15, 0xe5, 0xba, 0x6a, 0x71, 0x39, 0x23, 0xfe, 0x90, - 0x32, 0xb5, 0xe8, 0xaa, 0x85, 0xde, 0x85, 0x9c, 0x4f, 0x89, 0xe5, 0xb9, 0xce, 0x54, 0x84, 0x54, - 0x4e, 0xa6, 0x59, 0x4c, 0x89, 0xb5, 0xef, 0x3a, 0x53, 0x1c, 0xf5, 0xa2, 0xc7, 0x50, 0x3c, 0xb4, - 0x5d, 0x6b, 0xe0, 0x8d, 0x65, 0xce, 0xcb, 0xbc, 0x3c, 0x00, 0xa5, 0x57, 0x35, 0xdb, 0xb5, 0xf6, - 0x25, 0x18, 0x17, 0x0e, 0x67, 0x0d, 0xd4, 0x86, 0xb5, 0x53, 0xcf, 0x99, 0x8c, 0x68, 0x64, 0x2b, - 0x2b, 0x6c, 0xbd, 0xf3, 0x72, 0x5b, 0x07, 0x02, 0x1f, 0x5a, 0x2b, 0x9d, 0xc6, 0x9b, 0xe8, 0x09, - 0x94, 0xd8, 0x68, 0x7c, 0x14, 0x44, 0xe6, 0x56, 0x85, 0xb9, 0xef, 0x5f, 0xb3, 0x60, 0x1c, 0x1e, - 0x5a, 0x2b, 0xb2, 0x58, 0xab, 0xfc, 0x67, 0x29, 0x28, 0xc4, 0x3c, 0x47, 0x5d, 0x28, 0x8c, 0x7d, - 0x6f, 0x4c, 0x86, 0x22, 0x6f, 0xab, 0xbd, 0xf8, 0xf0, 0x95, 0x66, 0x5d, 0xed, 0xcc, 0x14, 0x71, - 0xdc, 0x8a, 0x7e, 0x91, 0x84, 0x42, 0xac, 0x13, 0xdd, 0x87, 0x1c, 0xee, 0xe0, 0xd6, 0x81, 0xd1, - 0x6b, 0x6a, 0x2b, 0xe5, 0xbb, 0xe7, 0x17, 0x95, 0x0d, 0x61, 0x2d, 0x6e, 0xa0, 0xe3, 0xdb, 0xa7, - 0x3c, 0xf4, 0xde, 0x85, 0xd5, 0x10, 0x9a, 0x28, 0xbf, 0x7e, 0x7e, 0x51, 0x79, 0x6d, 0x11, 0x1a, - 0x43, 0xe2, 0xee, 0x63, 0x03, 0x37, 0x1b, 0x5a, 0x72, 0x39, 0x12, 0x77, 0x8f, 0x89, 0x4f, 0x2d, - 0xf4, 0x7d, 0xc8, 0x2a, 0x60, 0xaa, 0x5c, 0x3e, 0xbf, 0xa8, 0xdc, 0x5e, 0x04, 0xce, 0x70, 0xb8, - 0xbb, 0x6b, 0x1c, 0x34, 0xb5, 0xf4, 0x72, 0x1c, 0xee, 0x3a, 0xe4, 0x94, 0xa2, 0xb7, 0x21, 0x23, - 0x61, 0x99, 0xf2, 0x9d, 0xf3, 0x8b, 0xca, 0xf7, 0x5e, 0x30, 0xc7, 0x51, 0xe5, 0x8d, 0xbf, 0xfc, - 0xdb, 0xcd, 0x95, 0x7f, 0xfa, 0xbb, 0x4d, 0x6d, 0xb1, 0xbb, 0xfc, 0x7f, 0x09, 0x28, 0xcd, 0x6d, - 0x39, 0xd2, 0x21, 0xeb, 0x7a, 0xa6, 0x37, 0x96, 0xe9, 0x3c, 0x57, 0x83, 0xab, 0xcb, 0xad, 0x6c, - 0xdb, 0xab, 0x7b, 0xe3, 0x29, 0x56, 0x3d, 0xe8, 0xc9, 0xc2, 0x85, 0xf4, 0xd1, 0x2b, 0xc6, 0xd3, - 0xd2, 0x2b, 0xe9, 0x33, 0x28, 0x59, 0xbe, 0x7d, 0x4a, 0xfd, 0x81, 0xe9, 0xb9, 0x47, 0xf6, 0x50, - 0xa5, 0xea, 0xf2, 0x32, 0x9b, 0x0d, 0x01, 0xc4, 0x45, 0xa9, 0x50, 0x17, 0xf8, 0xdf, 0xe0, 0x32, - 0x2a, 0x1f, 0x40, 0x31, 0x1e, 0xa1, 0xe8, 0x0d, 0x80, 0xc0, 0xfe, 0x23, 0xaa, 0xf8, 0x8d, 0x60, - 0x43, 0x38, 0xcf, 0x25, 0x82, 0xdd, 0xa0, 0x77, 0x20, 0x3d, 0xf2, 0x2c, 0x69, 0x27, 0x53, 0xbb, - 0xc9, 0xef, 0xc4, 0x7f, 0xbb, 0xdc, 0x2a, 0x78, 0x41, 0x75, 0xc7, 0x76, 0xe8, 0x9e, 0x67, 0x51, - 0x2c, 0x00, 0xfa, 0x29, 0xa4, 0x79, 0xaa, 0x40, 0xaf, 0x43, 0xba, 0xd6, 0x6a, 0x37, 0xb4, 0x95, - 0xf2, 0x8d, 0xf3, 0x8b, 0x4a, 0x49, 0x2c, 0x09, 0xef, 0xe0, 0xb1, 0x8b, 0xb6, 0x20, 0x7b, 0xb0, - 0xbf, 0xdb, 0xdf, 0xe3, 0xe1, 0x75, 0xf3, 0xfc, 0xa2, 0xb2, 0x1e, 0x75, 0xcb, 0x45, 0x43, 0x6f, - 0x40, 0xa6, 0xb7, 0xd7, 0xd9, 0xe9, 0x6a, 0xc9, 0x32, 0x3a, 0xbf, 0xa8, 0xac, 0x45, 0xfd, 0xc2, - 0xe7, 0xf2, 0x0d, 0xb5, 0xab, 0xf9, 0x48, 0xae, 0xff, 0x6f, 0x12, 0x4a, 0x98, 0xf3, 0x5b, 0x9f, - 0x75, 0x3c, 0xc7, 0x36, 0xa7, 0xa8, 0x03, 0x79, 0xd3, 0x73, 0x2d, 0x3b, 0x76, 0xa6, 0xb6, 0x5f, - 0x72, 0x09, 0xce, 0xb4, 0xc2, 0x56, 0x3d, 0xd4, 0xc4, 0x33, 0x23, 0x68, 0x1b, 0x32, 0x16, 0x75, - 0xc8, 0xf4, 0xba, 0xdb, 0xb8, 0xa1, 0xb8, 0x34, 0x96, 0x50, 0xc1, 0x1c, 0xc9, 0xb3, 0x01, 0x61, - 0x8c, 0x8e, 0xc6, 0x4c, 0xde, 0xc6, 0x69, 0x5c, 0x18, 0x91, 0x67, 0x86, 0x12, 0xa1, 0x1f, 0x41, - 0xf6, 0xcc, 0x76, 0x2d, 0xef, 0x4c, 0x5d, 0xb8, 0xd7, 0xdb, 0x55, 0x58, 0xfd, 0x9c, 0xdf, 0xb3, - 0x0b, 0xce, 0xf2, 0x55, 0x6f, 0xef, 0xb7, 0x9b, 0xe1, 0xaa, 0xab, 0xfe, 0x7d, 0xb7, 0xed, 0xb9, - 0xfc, 0xc4, 0xc0, 0x7e, 0x7b, 0xb0, 0x63, 0xb4, 0x76, 0xfb, 0x98, 0xaf, 0xfc, 0xad, 0xf3, 0x8b, - 0x8a, 0x16, 0x41, 0x76, 0x88, 0xed, 0x70, 0x12, 0x78, 0x07, 0x52, 0x46, 0xfb, 0x0b, 0x2d, 0x59, - 0xd6, 0xce, 0x2f, 0x2a, 0xc5, 0xa8, 0xdb, 0x70, 0xa7, 0xb3, 0xc3, 0xb4, 0x38, 0xae, 0xfe, 0x1f, - 0x49, 0x28, 0xf6, 0xc7, 0x16, 0x61, 0x54, 0x46, 0x26, 0xaa, 0x40, 0x61, 0x4c, 0x7c, 0xe2, 0x38, - 0xd4, 0xb1, 0x83, 0x91, 0x2a, 0x14, 0xe2, 0x22, 0xf4, 0xe0, 0x3b, 0x2c, 0xa6, 0x22, 0x61, 0x6a, - 0x49, 0xfb, 0xb0, 0x76, 0x24, 0x9d, 0x1d, 0x10, 0x53, 0xec, 0x6e, 0x4a, 0xec, 0x6e, 0x75, 0x99, - 0x89, 0xb8, 0x57, 0x55, 0x35, 0x47, 0x43, 0x68, 0xe1, 0xd2, 0x51, 0xbc, 0x89, 0x3e, 0x86, 0xd5, - 0x91, 0xe7, 0xda, 0xcc, 0xf3, 0x5f, 0x69, 0x1f, 0x42, 0x30, 0xba, 0x0f, 0x37, 0xf8, 0x0e, 0x87, - 0x2e, 0x89, 0x6e, 0x71, 0x73, 0x25, 0xf1, 0xfa, 0x88, 0x3c, 0x53, 0x63, 0x62, 0x2e, 0xd6, 0x3f, - 0x86, 0xd2, 0x9c, 0x0f, 0xfc, 0x36, 0xef, 0x18, 0xfd, 0x6e, 0x53, 0x5b, 0x41, 0x45, 0xc8, 0xd5, - 0xf7, 0xdb, 0xbd, 0x56, 0xbb, 0xcf, 0xa9, 0x47, 0x11, 0x72, 0x78, 0x7f, 0x77, 0xb7, 0x66, 0xd4, - 0x9f, 0x68, 0x49, 0xfd, 0x7f, 0xa2, 0xf5, 0x55, 0xdc, 0xa3, 0x36, 0xcf, 0x3d, 0xde, 0x7b, 0xf9, - 0xd4, 0x15, 0xfb, 0x98, 0x35, 0x22, 0x0e, 0xf2, 0x63, 0x00, 0xb1, 0x8d, 0xd4, 0x1a, 0x10, 0x76, - 0x5d, 0x7d, 0xd1, 0x0b, 0x2b, 0x47, 0x9c, 0x57, 0x0a, 0x06, 0x43, 0x9f, 0x43, 0xd1, 0xf4, 0x46, - 0x63, 0x87, 0x2a, 0xfd, 0xd4, 0xab, 0xe8, 0x17, 0x22, 0x15, 0x83, 0xc5, 0x39, 0x50, 0x7a, 0x9e, - 0x03, 0xfd, 0x79, 0x02, 0x0a, 0x31, 0x87, 0xe7, 0xa9, 0x50, 0x11, 0x72, 0xfd, 0x4e, 0xc3, 0xe8, - 0xb5, 0xda, 0x8f, 0xb4, 0x04, 0x02, 0xc8, 0x8a, 0x05, 0x6c, 0x68, 0x49, 0x4e, 0xd7, 0xea, 0xfb, - 0x7b, 0x9d, 0xdd, 0xa6, 0x20, 0x43, 0xe8, 0x16, 0x68, 0xe1, 0x12, 0x0e, 0xba, 0x3d, 0x03, 0x73, - 0x69, 0x1a, 0xdd, 0x84, 0xf5, 0x48, 0xaa, 0x34, 0x33, 0xe8, 0x36, 0xa0, 0x48, 0x38, 0x33, 0x91, - 0xd5, 0xff, 0x04, 0xd6, 0xeb, 0x9e, 0xcb, 0x88, 0xed, 0x46, 0x54, 0x76, 0x9b, 0xcf, 0x5b, 0x89, - 0x06, 0xb6, 0x25, 0xb3, 0x6d, 0x6d, 0xfd, 0xea, 0x72, 0xab, 0x10, 0x41, 0x5b, 0x0d, 0x3e, 0xd3, - 0xb0, 0x61, 0xf1, 0x33, 0x35, 0xb6, 0x2d, 0x95, 0x3c, 0x57, 0xaf, 0x2e, 0xb7, 0x52, 0x9d, 0x56, - 0x03, 0x73, 0x19, 0x7a, 0x1d, 0xf2, 0xf4, 0x99, 0xcd, 0x06, 0x26, 0xcf, 0xae, 0x7c, 0x0d, 0x33, - 0x38, 0xc7, 0x05, 0x75, 0x9e, 0x4c, 0xff, 0x34, 0x09, 0xd0, 0x23, 0xc1, 0x89, 0x1a, 0xfa, 0x21, - 0xe4, 0xa3, 0x22, 0xfe, 0xba, 0x62, 0x32, 0xb6, 0x5f, 0x11, 0x1e, 0x7d, 0x14, 0x46, 0x8c, 0xe4, - 0xd8, 0xcb, 0x15, 0xd5, 0x58, 0xcb, 0x68, 0xea, 0x3c, 0x91, 0xe6, 0x77, 0x0d, 0xf5, 0x7d, 0xb5, - 0x71, 0xfc, 0x13, 0xd5, 0x45, 0xbe, 0x95, 0x73, 0x56, 0xcc, 0xed, 0xad, 0x65, 0x83, 0x2c, 0x2c, - 0xe8, 0xe3, 0x15, 0x3c, 0xd3, 0xab, 0x69, 0xb0, 0xe6, 0x4f, 0x5c, 0xee, 0xf5, 0x20, 0x10, 0xdd, - 0xba, 0x0d, 0xaf, 0xb5, 0x29, 0x3b, 0xf3, 0xfc, 0x13, 0x83, 0x31, 0x62, 0x1e, 0xf3, 0xa2, 0x5a, - 0x25, 0x99, 0x19, 0xe1, 0x4c, 0xcc, 0x11, 0xce, 0x0d, 0x58, 0x25, 0x8e, 0x4d, 0x02, 0x2a, 0x6f, - 0xe9, 0x3c, 0x0e, 0x9b, 0x9c, 0x16, 0x13, 0xcb, 0xf2, 0x69, 0x10, 0x50, 0x59, 0x06, 0xe6, 0xf1, - 0x4c, 0xa0, 0xff, 0x4b, 0x12, 0xa0, 0xd5, 0x31, 0xf6, 0x94, 0xf9, 0x06, 0x64, 0x8f, 0xc8, 0xc8, - 0x76, 0xa6, 0xd7, 0x1d, 0xb2, 0x19, 0xbe, 0x6a, 0x48, 0x43, 0x3b, 0x42, 0x07, 0x2b, 0x5d, 0xc1, - 0x96, 0x27, 0x87, 0x2e, 0x65, 0x11, 0x5b, 0x16, 0x2d, 0x7e, 0x35, 0xfb, 0xc4, 0x8d, 0x16, 0x56, - 0x36, 0xb8, 0xeb, 0x43, 0xc2, 0xe8, 0x19, 0x99, 0x86, 0x67, 0x42, 0x35, 0xd1, 0x63, 0xce, 0xa2, - 0x79, 0x71, 0x4f, 0xad, 0x8d, 0x8c, 0xe0, 0x1e, 0xdf, 0xe6, 0x0f, 0x56, 0x70, 0x49, 0x3a, 0x22, - 0xed, 0xf2, 0x43, 0x71, 0x53, 0xce, 0xba, 0xbe, 0x53, 0x11, 0xfb, 0x01, 0x94, 0xe6, 0xe6, 0xf9, - 0x42, 0x99, 0xd2, 0xea, 0x1c, 0xfc, 0x48, 0x4b, 0xab, 0xaf, 0x8f, 0xb5, 0xac, 0xfe, 0xdf, 0x09, - 0x80, 0x8e, 0xe7, 0x87, 0x9b, 0xb6, 0xfc, 0x59, 0x28, 0x27, 0x1e, 0x99, 0x4c, 0xcf, 0x51, 0xe1, - 0xb9, 0x94, 0xa7, 0xcf, 0xac, 0x70, 0xda, 0x2b, 0xe0, 0x38, 0x52, 0x44, 0x5b, 0x50, 0x90, 0xfb, - 0x3f, 0x18, 0x7b, 0xbe, 0xcc, 0x47, 0x25, 0x0c, 0x52, 0xc4, 0x35, 0xd1, 0x3d, 0x58, 0x1b, 0x4f, - 0x0e, 0x1d, 0x3b, 0x38, 0xa6, 0x96, 0xc4, 0xa4, 0x05, 0xa6, 0x14, 0x49, 0x39, 0x4c, 0x6f, 0x40, - 0x2e, 0xb4, 0x8e, 0x36, 0x20, 0xd5, 0xab, 0x77, 0xb4, 0x95, 0xf2, 0xfa, 0xf9, 0x45, 0xa5, 0x10, - 0x8a, 0x7b, 0xf5, 0x0e, 0xef, 0xe9, 0x37, 0x3a, 0x5a, 0x62, 0xbe, 0xa7, 0xdf, 0xe8, 0x94, 0xd3, - 0xfc, 0x96, 0xd4, 0xff, 0x3a, 0x01, 0x59, 0xc9, 0xd9, 0x96, 0xce, 0xd8, 0x80, 0xd5, 0xb0, 0x92, - 0x90, 0x44, 0xf2, 0x9d, 0x97, 0x93, 0xbe, 0xaa, 0xe2, 0x68, 0x72, 0x1f, 0x43, 0xbd, 0xf2, 0xa7, - 0x50, 0x8c, 0x77, 0x7c, 0xa7, 0x5d, 0xfc, 0x63, 0x28, 0xf0, 0x40, 0x09, 0xc9, 0xdf, 0x36, 0x64, - 0x25, 0xaf, 0x54, 0x59, 0xe5, 0x3a, 0x06, 0xaa, 0x90, 0xe8, 0x01, 0xac, 0x4a, 0xd6, 0x1a, 0xbe, - 0xa7, 0x6c, 0x5e, 0x1f, 0x8e, 0x38, 0x84, 0xeb, 0x9f, 0x41, 0xba, 0x43, 0xa9, 0x8f, 0xde, 0x82, - 0x55, 0xd7, 0xb3, 0xe8, 0x2c, 0x89, 0x2a, 0xc2, 0x6d, 0xd1, 0x56, 0x83, 0x13, 0x6e, 0x8b, 0xb6, - 0x2c, 0xbe, 0x78, 0xfc, 0x80, 0x86, 0x4f, 0x4a, 0xfc, 0x5b, 0xef, 0x41, 0xf1, 0x29, 0xb5, 0x87, - 0xc7, 0x8c, 0x5a, 0xc2, 0xd0, 0x7b, 0x90, 0x1e, 0xd3, 0xc8, 0xf9, 0x8d, 0xa5, 0xa1, 0x43, 0xa9, - 0x8f, 0x05, 0x8a, 0x1f, 0xc8, 0x33, 0xa1, 0xad, 0x5e, 0xf1, 0x54, 0x4b, 0xff, 0x87, 0x24, 0xac, - 0xb5, 0x82, 0x60, 0x42, 0x5c, 0x33, 0xbc, 0x65, 0x7f, 0x32, 0x7f, 0xcb, 0xbe, 0xbb, 0x74, 0x86, - 0x73, 0x2a, 0xf3, 0x55, 0xbe, 0x4a, 0x92, 0xc9, 0x28, 0x49, 0xea, 0x5f, 0x27, 0xc2, 0xf2, 0xfe, - 0x5e, 0xec, 0xdc, 0x94, 0x37, 0xce, 0x2f, 0x2a, 0xb7, 0xe2, 0x96, 0x68, 0xdf, 0x3d, 0x71, 0xbd, - 0x33, 0x17, 0xbd, 0xc9, 0xcb, 0xfd, 0x76, 0xf3, 0xa9, 0x96, 0x28, 0xdf, 0x3e, 0xbf, 0xa8, 0xa0, - 0x39, 0x10, 0xa6, 0x2e, 0x3d, 0xe3, 0x96, 0x3a, 0xcd, 0x76, 0x83, 0xdf, 0x87, 0xc9, 0x25, 0x96, - 0x3a, 0xd4, 0xb5, 0x6c, 0x77, 0x88, 0xde, 0x82, 0x6c, 0xab, 0xdb, 0xed, 0x8b, 0x02, 0xec, 0xb5, - 0xf3, 0x8b, 0xca, 0xcd, 0x39, 0x14, 0x6f, 0x50, 0x8b, 0x83, 0x38, 0x41, 0xe4, 0x37, 0xe5, 0x12, - 0x10, 0xe7, 0x2e, 0xd4, 0x52, 0x11, 0xfe, 0xef, 0x49, 0xd0, 0x0c, 0xd3, 0xa4, 0x63, 0xc6, 0xfb, - 0x15, 0xe9, 0xee, 0x41, 0x6e, 0xcc, 0xbf, 0x6c, 0x51, 0x44, 0xf0, 0xb0, 0x78, 0xb0, 0xf4, 0x89, - 0x77, 0x41, 0xaf, 0x8a, 0x3d, 0x87, 0x1a, 0xd6, 0xc8, 0x0e, 0x02, 0x5e, 0x5c, 0x0a, 0x19, 0x8e, - 0x2c, 0x95, 0x7f, 0x99, 0x80, 0x9b, 0x4b, 0x10, 0xe8, 0x03, 0x48, 0xfb, 0x9e, 0x13, 0x6e, 0xcf, - 0xdd, 0x97, 0x3d, 0xc0, 0x70, 0x55, 0x2c, 0x90, 0x68, 0x13, 0x80, 0x4c, 0x98, 0x47, 0xc4, 0xf8, - 0x62, 0x63, 0x72, 0x38, 0x26, 0x41, 0x4f, 0x21, 0x1b, 0x50, 0xd3, 0xa7, 0x21, 0x9f, 0xf9, 0xec, - 0xd7, 0xf5, 0xbe, 0xda, 0x15, 0x66, 0xb0, 0x32, 0x57, 0xae, 0x42, 0x56, 0x4a, 0x78, 0x44, 0x5b, - 0x84, 0x11, 0xe1, 0x74, 0x11, 0x8b, 0x6f, 0x1e, 0x28, 0xc4, 0x19, 0x86, 0x81, 0x42, 0x9c, 0xa1, - 0xfe, 0xb3, 0x24, 0x40, 0xf3, 0x19, 0xa3, 0xbe, 0x4b, 0x9c, 0xba, 0x81, 0x9a, 0xb1, 0x0c, 0x29, - 0x67, 0xfb, 0x83, 0xa5, 0xcf, 0x72, 0x91, 0x46, 0xb5, 0x6e, 0x2c, 0xc9, 0x91, 0x77, 0x20, 0x35, - 0xf1, 0x1d, 0xf5, 0xc4, 0x2b, 0x88, 0x48, 0x1f, 0xef, 0x62, 0x2e, 0x43, 0xcd, 0x59, 0x46, 0x4a, - 0xbd, 0xfc, 0x6d, 0x3e, 0x36, 0xc0, 0x6f, 0x3f, 0x2b, 0xbd, 0x07, 0x30, 0xf3, 0x1a, 0x6d, 0x42, - 0xa6, 0xbe, 0xd3, 0xed, 0xee, 0x6a, 0x2b, 0xb2, 0x46, 0x9c, 0x75, 0x09, 0xb1, 0xfe, 0xf7, 0x09, - 0xc8, 0xd5, 0x0d, 0x75, 0xab, 0xec, 0x80, 0x26, 0x72, 0x89, 0x49, 0x7d, 0x36, 0xa0, 0xcf, 0xc6, - 0xb6, 0x3f, 0x55, 0xe9, 0xe0, 0x7a, 0x16, 0xbf, 0xc6, 0xb5, 0xea, 0xd4, 0x67, 0x4d, 0xa1, 0x83, - 0x30, 0x14, 0xa9, 0x9a, 0xe2, 0xc0, 0x24, 0x61, 0x72, 0xde, 0xbc, 0x7e, 0x29, 0x24, 0xfb, 0x9b, - 0xb5, 0x03, 0x5c, 0x08, 0x8d, 0xd4, 0x49, 0xa0, 0x1f, 0xc0, 0xcd, 0x7d, 0xdf, 0x3c, 0xa6, 0x01, - 0x93, 0x83, 0x2a, 0x97, 0x3f, 0x83, 0xbb, 0x8c, 0x04, 0x27, 0x83, 0x63, 0x3b, 0x60, 0x9e, 0x3f, - 0x1d, 0xf8, 0x94, 0x51, 0x97, 0xf7, 0x0f, 0xc4, 0x3f, 0x00, 0xaa, 0x06, 0xbf, 0xc3, 0x31, 0x8f, - 0x25, 0x04, 0x87, 0x88, 0x5d, 0x0e, 0xd0, 0x5b, 0x50, 0xe4, 0x84, 0xad, 0x41, 0x8f, 0xc8, 0xc4, - 0x61, 0x01, 0xfa, 0x04, 0xc0, 0xf1, 0x86, 0x83, 0x57, 0xce, 0xe4, 0x79, 0xc7, 0x1b, 0xca, 0x4f, - 0xfd, 0xf7, 0x41, 0x6b, 0xd8, 0xc1, 0x98, 0x30, 0xf3, 0x38, 0x7c, 0x5c, 0x40, 0x8f, 0x40, 0x3b, - 0xa6, 0xc4, 0x67, 0x87, 0x94, 0xb0, 0xc1, 0x98, 0xfa, 0xb6, 0x67, 0xbd, 0xd2, 0x92, 0xae, 0x47, - 0x5a, 0x1d, 0xa1, 0xa4, 0xff, 0x2a, 0x01, 0x80, 0xc9, 0x51, 0x48, 0x00, 0x7e, 0x08, 0x37, 0x02, - 0x97, 0x8c, 0x83, 0x63, 0x8f, 0x0d, 0x6c, 0x97, 0x51, 0xff, 0x94, 0x38, 0xaa, 0x40, 0xd4, 0xc2, - 0x8e, 0x96, 0x92, 0xa3, 0xf7, 0x00, 0x9d, 0x50, 0x3a, 0x1e, 0x78, 0x8e, 0x35, 0x08, 0x3b, 0xe5, - 0x5f, 0x14, 0x69, 0xac, 0xf1, 0x9e, 0x7d, 0xc7, 0xea, 0x86, 0x72, 0x54, 0x83, 0x4d, 0xbe, 0x02, - 0xd4, 0x65, 0xbe, 0x4d, 0x83, 0xc1, 0x91, 0xe7, 0x0f, 0x02, 0xc7, 0x3b, 0x1b, 0x1c, 0x79, 0x8e, - 0xe3, 0x9d, 0x51, 0x3f, 0x2c, 0xbf, 0xcb, 0x8e, 0x37, 0x6c, 0x4a, 0xd0, 0x8e, 0xe7, 0x77, 0x1d, - 0xef, 0x6c, 0x27, 0x44, 0x70, 0x96, 0x30, 0x9b, 0x36, 0xb3, 0xcd, 0x93, 0x90, 0x25, 0x44, 0xd2, - 0x9e, 0x6d, 0x9e, 0xa0, 0xb7, 0xa0, 0x44, 0x1d, 0x2a, 0x8a, 0x38, 0x89, 0xca, 0x08, 0x54, 0x31, - 0x14, 0x72, 0x90, 0xfe, 0x3b, 0x90, 0xef, 0x38, 0xc4, 0x14, 0x7f, 0x04, 0xf1, 0x92, 0xd8, 0xf4, - 0x5c, 0x1e, 0x04, 0xb6, 0xcb, 0x64, 0x76, 0xcc, 0xe3, 0xb8, 0x48, 0xff, 0x09, 0xc0, 0x4f, 0x3d, - 0xdb, 0xed, 0x79, 0x27, 0xd4, 0x15, 0x6f, 0xe6, 0x9c, 0xf5, 0xaa, 0xad, 0xcc, 0x63, 0xd5, 0x12, - 0x9c, 0x9c, 0xb8, 0x64, 0x48, 0xfd, 0xe8, 0xe9, 0x58, 0x36, 0xf9, 0xe5, 0x92, 0xc5, 0x9e, 0xc7, - 0xea, 0x06, 0xaa, 0x40, 0xd6, 0x24, 0x83, 0xf0, 0xe4, 0x15, 0x6b, 0xf9, 0xab, 0xcb, 0xad, 0x4c, - 0xdd, 0x78, 0x42, 0xa7, 0x38, 0x63, 0x92, 0x27, 0x74, 0xca, 0x6f, 0x5f, 0x93, 0x88, 0xf3, 0x22, - 0xcc, 0x14, 0xe5, 0xed, 0x5b, 0x37, 0xf8, 0x61, 0xc0, 0x59, 0x93, 0xf0, 0x5f, 0xf4, 0x01, 0x14, - 0x15, 0x68, 0x70, 0x4c, 0x82, 0x63, 0xc9, 0x55, 0x6b, 0x6b, 0x57, 0x97, 0x5b, 0x20, 0x91, 0x8f, - 0x49, 0x70, 0x8c, 0x41, 0xa2, 0xf9, 0x37, 0x6a, 0x42, 0xe1, 0x4b, 0xcf, 0x76, 0x07, 0x4c, 0x4c, - 0x42, 0x55, 0xd2, 0x4b, 0xcf, 0xcf, 0x6c, 0xaa, 0xaa, 0xbc, 0x87, 0x2f, 0x23, 0x89, 0xfe, 0xaf, - 0x09, 0x28, 0x70, 0x9b, 0xf6, 0x91, 0x6d, 0xf2, 0xdb, 0xf2, 0xbb, 0x67, 0xfa, 0x3b, 0x90, 0x32, - 0x03, 0x5f, 0xcd, 0x4d, 0xa4, 0xba, 0x7a, 0x17, 0x63, 0x2e, 0x43, 0x9f, 0x43, 0x56, 0x16, 0x17, - 0x2a, 0xc9, 0xeb, 0xdf, 0x7e, 0xaf, 0x2b, 0x17, 0x95, 0x9e, 0xd8, 0xcb, 0x99, 0x77, 0x62, 0x96, - 0x45, 0x1c, 0x17, 0xa1, 0xdb, 0x90, 0x34, 0x5d, 0x11, 0x14, 0xea, 0xbf, 0xb4, 0x7a, 0x1b, 0x27, - 0x4d, 0x57, 0xff, 0xe7, 0x04, 0x94, 0x9a, 0xae, 0xe9, 0x4f, 0x45, 0x92, 0xe4, 0x1b, 0x71, 0x17, - 0xf2, 0xc1, 0xe4, 0x30, 0x98, 0x06, 0x8c, 0x8e, 0xc2, 0xa7, 0xfa, 0x48, 0x80, 0x5a, 0x90, 0x27, - 0xce, 0xd0, 0xf3, 0x6d, 0x76, 0x3c, 0x52, 0xdc, 0x78, 0x79, 0x62, 0x8e, 0xdb, 0xac, 0x1a, 0xa1, - 0x0a, 0x9e, 0x69, 0x87, 0xa9, 0x38, 0x25, 0x9c, 0x15, 0xa9, 0xf8, 0x4d, 0x28, 0x3a, 0x64, 0xc4, - 0xa9, 0xf0, 0x80, 0x97, 0x5c, 0x62, 0x1e, 0x69, 0x5c, 0x50, 0x32, 0x5e, 0x46, 0xea, 0x3a, 0xe4, - 0x23, 0x63, 0x68, 0x1d, 0x0a, 0x46, 0xb3, 0x3b, 0xf8, 0x70, 0xfb, 0xc1, 0xe0, 0x51, 0x7d, 0x4f, - 0x5b, 0x51, 0x4c, 0xe0, 0x1f, 0x13, 0x50, 0xda, 0x93, 0x31, 0xa8, 0x88, 0xd3, 0x5b, 0xb0, 0xea, - 0x93, 0x23, 0x16, 0x52, 0xbb, 0xb4, 0x0c, 0x2e, 0x9e, 0x04, 0x38, 0xb5, 0xe3, 0x5d, 0xcb, 0xa9, - 0x5d, 0xec, 0x8f, 0xa2, 0xd4, 0xb5, 0x7f, 0x14, 0xa5, 0x7f, 0x2b, 0x7f, 0x14, 0xf1, 0xdd, 0x58, - 0x57, 0x17, 0x75, 0xf8, 0xe7, 0xc8, 0x52, 0xba, 0xfe, 0x09, 0xac, 0xcb, 0x7b, 0x7c, 0x20, 0x6e, - 0xab, 0x81, 0x2a, 0xe6, 0xf3, 0xb5, 0x1b, 0x57, 0x97, 0x5b, 0x25, 0x69, 0xe1, 0x80, 0xf7, 0xb4, - 0x1a, 0xb8, 0x14, 0xc4, 0x9a, 0x16, 0xfa, 0xb1, 0x7a, 0x39, 0x4d, 0xbd, 0x9c, 0x42, 0x2e, 0x78, - 0x50, 0x9d, 0x3d, 0xa7, 0xc6, 0x4a, 0xdc, 0x74, 0xbc, 0xc4, 0xd5, 0xef, 0x40, 0x9a, 0xa3, 0x78, - 0x99, 0xb5, 0xd3, 0xda, 0x6d, 0x6a, 0x2b, 0x68, 0x15, 0x52, 0xcd, 0xf6, 0x81, 0x96, 0xb8, 0xff, - 0xab, 0x14, 0xe4, 0xa3, 0x42, 0x9e, 0x1f, 0x03, 0xce, 0x1e, 0x57, 0xe4, 0x73, 0x5e, 0x24, 0x6f, - 0x0b, 0xde, 0x98, 0x37, 0x76, 0x77, 0xf7, 0xeb, 0x46, 0xaf, 0xd9, 0xd0, 0x3e, 0x97, 0xf4, 0x32, - 0x02, 0x18, 0x8e, 0xe3, 0xf1, 0x40, 0xb6, 0x90, 0x3e, 0xa3, 0x97, 0xcf, 0xd5, 0xa3, 0x61, 0x84, - 0x0a, 0xb9, 0xe5, 0xdb, 0x90, 0x33, 0xba, 0xdd, 0xd6, 0xa3, 0x76, 0xb3, 0xa1, 0x7d, 0x95, 0x28, - 0x7f, 0xef, 0xfc, 0xa2, 0x72, 0x63, 0x66, 0x2a, 0x08, 0xec, 0xa1, 0x4b, 0x2d, 0x81, 0xaa, 0xd7, - 0x9b, 0x1d, 0x3e, 0xde, 0xf3, 0xe4, 0x22, 0x4a, 0x90, 0x2a, 0xf1, 0x07, 0x40, 0xbe, 0x83, 0x9b, - 0x1d, 0x03, 0xf3, 0x11, 0xbf, 0x4a, 0x2e, 0xf8, 0xd5, 0xf1, 0xe9, 0x98, 0xf8, 0x7c, 0xcc, 0xcd, - 0xf0, 0x8f, 0xb0, 0xe7, 0x29, 0xf9, 0x48, 0x3c, 0x7b, 0xbd, 0xa0, 0xc4, 0x9a, 0xf2, 0xd1, 0xc4, - 0xab, 0x8f, 0x30, 0x93, 0x5a, 0x18, 0xad, 0xcb, 0x88, 0xcf, 0xb8, 0x15, 0x1d, 0x56, 0x71, 0xbf, - 0xdd, 0x16, 0xb3, 0x4b, 0x2f, 0xcc, 0x0e, 0x4f, 0x5c, 0x97, 0x63, 0xee, 0x41, 0x2e, 0x7c, 0x14, - 0xd2, 0xbe, 0x4a, 0x2f, 0x38, 0x54, 0x0f, 0x5f, 0xb4, 0xc4, 0x80, 0x8f, 0xfb, 0x3d, 0xf1, 0x3f, - 0xdd, 0xf3, 0xcc, 0xe2, 0x80, 0xc7, 0x13, 0x66, 0x71, 0x42, 0x5f, 0x89, 0x18, 0xf6, 0x57, 0x19, - 0x49, 0x6c, 0x22, 0x8c, 0xa4, 0xd7, 0xdc, 0x0e, 0x6e, 0xfe, 0x54, 0xfe, 0xa5, 0xf7, 0x3c, 0xbb, - 0x60, 0x07, 0xd3, 0x2f, 0xa9, 0xc9, 0xa8, 0x35, 0x7b, 0x03, 0x8f, 0xba, 0xee, 0xff, 0x01, 0xe4, - 0xc2, 0x24, 0x88, 0x36, 0x21, 0xfb, 0x74, 0x1f, 0x3f, 0x69, 0x62, 0x6d, 0x45, 0xae, 0x4e, 0xd8, - 0xf3, 0x54, 0xde, 0x22, 0x15, 0x58, 0xdd, 0x33, 0xda, 0xc6, 0xa3, 0x26, 0x0e, 0xdf, 0xe0, 0x43, - 0x80, 0x3a, 0xc9, 0x65, 0x4d, 0x0d, 0x10, 0xd9, 0xbc, 0xff, 0x01, 0x80, 0x0c, 0x55, 0xf1, 0xc2, - 0xaf, 0x43, 0xbe, 0xbe, 0xdf, 0xee, 0x19, 0xad, 0xb6, 0x18, 0x44, 0x72, 0xb4, 0xe8, 0x6d, 0x47, - 0xe0, 0x6a, 0x77, 0xbf, 0xfe, 0x66, 0x73, 0xe5, 0x17, 0xdf, 0x6c, 0xae, 0xfc, 0xf2, 0x9b, 0xcd, - 0xc4, 0xf3, 0xab, 0xcd, 0xc4, 0xd7, 0x57, 0x9b, 0x89, 0x9f, 0x5f, 0x6d, 0x26, 0xfe, 0xf3, 0x6a, - 0x33, 0x71, 0x98, 0x15, 0xbc, 0xf4, 0xa3, 0xff, 0x0f, 0x00, 0x00, 0xff, 0xff, 0x33, 0xfa, 0xcd, - 0x10, 0xc6, 0x22, 0x00, 0x00, + 0x59, 0xcf, 0x7a, 0x1d, 0xda, 0x96, 0x37, 0xc6, 0xd8, 0xb3, 0x59, 0xbb, 0x45, 0x52, 0x33, 0xdc, + 0x91, 0x28, 0xa2, 0x28, 0x6a, 0x60, 0x04, 0x48, 0xa3, 0xd4, 0x5d, 0xa2, 0xda, 0x6a, 0x76, 0x33, + 0xdd, 0x45, 0x69, 0x98, 0x20, 0xc0, 0x24, 0x87, 0x24, 0xd0, 0x29, 0xf7, 0x40, 0x58, 0x04, 0x09, + 0x72, 0xcb, 0x39, 0x40, 0x4e, 0x3e, 0xfa, 0xb8, 0x41, 0x80, 0x60, 0x91, 0x60, 0x85, 0x58, 0xf9, + 0x07, 0x16, 0x08, 0x82, 0x3d, 0x24, 0x87, 0xa0, 0x3e, 0xba, 0xd9, 0xe4, 0x70, 0xe4, 0x71, 0x76, + 0x4f, 0x64, 0xbd, 0xfa, 0xbd, 0x57, 0xaf, 0xaa, 0x5e, 0xbd, 0xfa, 0xbd, 0x6a, 0x28, 0xb1, 0xc9, + 0x88, 0x86, 0xf5, 0x51, 0xe0, 0x33, 0x1f, 0x21, 0xdb, 0xb7, 0x4e, 0x68, 0x50, 0x0f, 0xcf, 0x48, + 0x30, 0x3c, 0x71, 0x58, 0xfd, 0xf4, 0xc3, 0xea, 0x1d, 0xe6, 0x0c, 0x69, 0xc8, 0xc8, 0x70, 0xf4, + 0x7e, 0xfc, 0x4f, 0xc2, 0xab, 0xaf, 0xd9, 0xe3, 0x80, 0x30, 0xc7, 0xf7, 0xde, 0x8f, 0xfe, 0xa8, + 0x8e, 0x5b, 0x03, 0x7f, 0xe0, 0x8b, 0xbf, 0xef, 0xf3, 0x7f, 0x52, 0xaa, 0x6f, 0xc0, 0xf2, 0x01, + 0x0d, 0x42, 0xc7, 0xf7, 0xd0, 0x2d, 0xc8, 0x39, 0x9e, 0x4d, 0x9f, 0xad, 0xa5, 0x6a, 0xa9, 0xfb, + 0x59, 0x2c, 0x1b, 0xfa, 0xdf, 0xa4, 0xa0, 0x64, 0x78, 0x9e, 0xcf, 0x84, 0xad, 0x10, 0x21, 0xc8, + 0x7a, 0x64, 0x48, 0x05, 0xa8, 0x88, 0xc5, 0x7f, 0xd4, 0x80, 0xbc, 0x4b, 0x0e, 0xa9, 0x1b, 0xae, + 0xa5, 0x6b, 0x99, 0xfb, 0xa5, 0xcd, 0x1f, 0xd6, 0x5f, 0xf4, 0xb9, 0x9e, 0x30, 0x52, 0xdf, 0x11, + 0xe8, 0x96, 0xc7, 0x82, 0x09, 0x56, 0xaa, 0xd5, 0x4f, 0xa0, 0x94, 0x10, 0x23, 0x0d, 0x32, 0x27, + 0x74, 0xa2, 0x86, 0xe1, 0x7f, 0xb9, 0x7f, 0xa7, 0xc4, 0x1d, 0xd3, 0xb5, 0xb4, 0x90, 0xc9, 0xc6, + 0xa7, 0xe9, 0x07, 0x29, 0xfd, 0x0b, 0x28, 0x62, 0x1a, 0xfa, 0xe3, 0xc0, 0xa2, 0x21, 0xfa, 0x01, + 0x14, 0x3d, 0xe2, 0xf9, 0xa6, 0x35, 0x1a, 0x87, 0x42, 0x3d, 0xb3, 0x55, 0xbe, 0xba, 0xdc, 0x28, + 0x74, 0x88, 0xe7, 0x37, 0xba, 0xfd, 0x10, 0x17, 0x78, 0x77, 0x63, 0x34, 0x0e, 0xd1, 0x9b, 0x50, + 0x1e, 0xd2, 0xa1, 0x1f, 0x4c, 0xcc, 0xc3, 0x09, 0xa3, 0xa1, 0x30, 0x9c, 0xc1, 0x25, 0x29, 0xdb, + 0xe2, 0x22, 0xfd, 0xaf, 0x52, 0x70, 0x2b, 0xb2, 0x8d, 0xe9, 0x1f, 0x8e, 0x9d, 0x80, 0x0e, 0xa9, + 0xc7, 0x42, 0xf4, 0xbb, 0x90, 0x77, 0x9d, 0xa1, 0xc3, 0xe4, 0x18, 0xa5, 0xcd, 0x37, 0x16, 0xcd, + 0x39, 0xf6, 0x0a, 0x2b, 0x30, 0x32, 0xa0, 0x1c, 0xd0, 0x90, 0x06, 0xa7, 0x72, 0x25, 0xc4, 0x90, + 0xdf, 0xaa, 0x3c, 0xa3, 0xa2, 0x6f, 0x43, 0xa1, 0xeb, 0x12, 0x76, 0xe4, 0x07, 0x43, 0xa4, 0x43, + 0x99, 0x04, 0xd6, 0xb1, 0xc3, 0xa8, 0xc5, 0xc6, 0x41, 0xb4, 0x2b, 0x33, 0x32, 0x74, 0x1b, 0xd2, + 0xbe, 0x1c, 0xa8, 0xb8, 0x95, 0xbf, 0xba, 0xdc, 0x48, 0xef, 0xf5, 0x70, 0xda, 0x0f, 0xf5, 0x87, + 0x70, 0xa3, 0xeb, 0x8e, 0x07, 0x8e, 0xd7, 0xa4, 0xa1, 0x15, 0x38, 0x23, 0x6e, 0x9d, 0x6f, 0x2f, + 0x0f, 0xbe, 0x68, 0x7b, 0xf9, 0xff, 0x78, 0xcb, 0xd3, 0xd3, 0x2d, 0xd7, 0xff, 0x22, 0x0d, 0x37, + 0x5a, 0xde, 0xc0, 0xf1, 0x68, 0x52, 0xfb, 0x1e, 0xac, 0x50, 0x21, 0x34, 0x4f, 0x65, 0x50, 0x29, + 0x3b, 0x15, 0x29, 0x8d, 0x22, 0xad, 0x3d, 0x17, 0x2f, 0x1f, 0x2e, 0x9a, 0xfe, 0x0b, 0xd6, 0x17, + 0x45, 0x0d, 0x6a, 0xc1, 0xf2, 0x48, 0x4c, 0x22, 0x5c, 0xcb, 0x08, 0x5b, 0xf7, 0x16, 0xd9, 0x7a, + 0x61, 0x9e, 0x5b, 0xd9, 0xaf, 0x2f, 0x37, 0x96, 0x70, 0xa4, 0xfb, 0x9b, 0x04, 0xdf, 0x7f, 0xa6, + 0x60, 0xb5, 0xe3, 0xdb, 0x33, 0xeb, 0x50, 0x85, 0xc2, 0xb1, 0x1f, 0xb2, 0xc4, 0x41, 0x89, 0xdb, + 0xe8, 0x01, 0x14, 0x46, 0x6a, 0xfb, 0xd4, 0xee, 0xdf, 0x5d, 0xec, 0xb2, 0xc4, 0xe0, 0x18, 0x8d, + 0x1e, 0x42, 0x31, 0x88, 0x62, 0x62, 0x2d, 0xf3, 0x2a, 0x81, 0x33, 0xc5, 0xa3, 0xdf, 0x83, 0xbc, + 0xdc, 0x84, 0xb5, 0xac, 0xd0, 0xbc, 0xf7, 0x4a, 0x6b, 0x8e, 0x95, 0x92, 0xfe, 0x8b, 0x14, 0x68, + 0x98, 0x1c, 0xb1, 0x5d, 0x3a, 0x3c, 0xa4, 0x41, 0x8f, 0x11, 0x36, 0x0e, 0xd1, 0x6d, 0xc8, 0xbb, + 0x94, 0xd8, 0x34, 0x10, 0x93, 0x2c, 0x60, 0xd5, 0x42, 0x7d, 0x1e, 0xe4, 0xc4, 0x3a, 0x26, 0x87, + 0x8e, 0xeb, 0xb0, 0x89, 0x98, 0xe6, 0xca, 0xe2, 0x5d, 0x9e, 0xb7, 0x59, 0xc7, 0x09, 0x45, 0x3c, + 0x63, 0x06, 0xad, 0xc1, 0xf2, 0x90, 0x86, 0x21, 0x19, 0x50, 0x31, 0xfb, 0x22, 0x8e, 0x9a, 0xfa, + 0x43, 0x28, 0x27, 0xf5, 0x50, 0x09, 0x96, 0xfb, 0x9d, 0x27, 0x9d, 0xbd, 0xa7, 0x1d, 0x6d, 0x09, + 0xad, 0x42, 0xa9, 0xdf, 0xc1, 0x2d, 0xa3, 0xf1, 0xd8, 0xd8, 0xda, 0x69, 0x69, 0x29, 0x54, 0x81, + 0xe2, 0xb4, 0x99, 0xd6, 0x7f, 0x96, 0x02, 0xe0, 0x1b, 0xa8, 0x26, 0xf5, 0x29, 0xe4, 0x42, 0x46, + 0x98, 0xdc, 0xb8, 0x95, 0xcd, 0xb7, 0x17, 0x79, 0x3d, 0x85, 0xd7, 0xf9, 0x0f, 0xc5, 0x52, 0x25, + 0xe9, 0x61, 0x7a, 0xde, 0xc3, 0x9c, 0x40, 0xce, 0xba, 0x56, 0x80, 0x6c, 0x93, 0xff, 0x4b, 0xa1, + 0x22, 0xe4, 0x70, 0xcb, 0x68, 0x7e, 0xa1, 0xa5, 0x91, 0x06, 0xe5, 0x66, 0xbb, 0xd7, 0xd8, 0xeb, + 0x74, 0x5a, 0x8d, 0xfd, 0x56, 0x53, 0xcb, 0xe8, 0xf7, 0x20, 0xd7, 0x1e, 0x92, 0x01, 0x45, 0x77, + 0x79, 0x04, 0x1c, 0xd1, 0x80, 0x7a, 0x56, 0x14, 0x58, 0x53, 0x81, 0xfe, 0xf3, 0x22, 0xe4, 0x76, + 0xfd, 0xb1, 0xc7, 0xd0, 0x66, 0xe2, 0x14, 0xaf, 0x6c, 0xae, 0x2f, 0x9a, 0x82, 0x00, 0xd6, 0xf7, + 0x27, 0x23, 0xaa, 0x4e, 0xf9, 0x6d, 0xc8, 0xcb, 0x58, 0x51, 0xae, 0xab, 0x16, 0x97, 0x33, 0x12, + 0x0c, 0x28, 0x53, 0x8b, 0xae, 0x5a, 0xe8, 0x3e, 0x14, 0x02, 0x4a, 0x6c, 0xdf, 0x73, 0x27, 0x22, + 0xa4, 0x0a, 0x32, 0xcd, 0x62, 0x4a, 0xec, 0x3d, 0xcf, 0x9d, 0xe0, 0xb8, 0x17, 0x3d, 0x86, 0xf2, + 0xa1, 0xe3, 0xd9, 0xa6, 0x3f, 0x92, 0x39, 0x2f, 0xf7, 0xf2, 0x00, 0x94, 0x5e, 0x6d, 0x39, 0x9e, + 0xbd, 0x27, 0xc1, 0xb8, 0x74, 0x38, 0x6d, 0xa0, 0x0e, 0xac, 0x9c, 0xfa, 0xee, 0x78, 0x48, 0x63, + 0x5b, 0x79, 0x61, 0xeb, 0x9d, 0x97, 0xdb, 0x3a, 0x10, 0xf8, 0xc8, 0x5a, 0xe5, 0x34, 0xd9, 0x44, + 0x4f, 0xa0, 0xc2, 0x86, 0xa3, 0xa3, 0x30, 0x36, 0xb7, 0x2c, 0xcc, 0x7d, 0xff, 0x9a, 0x05, 0xe3, + 0xf0, 0xc8, 0x5a, 0x99, 0x25, 0x5a, 0xd5, 0x3f, 0xcb, 0x40, 0x29, 0xe1, 0x39, 0xea, 0x41, 0x69, + 0x14, 0xf8, 0x23, 0x32, 0x10, 0x79, 0x5b, 0xed, 0xc5, 0x87, 0xaf, 0x34, 0xeb, 0x7a, 0x77, 0xaa, + 0x88, 0x93, 0x56, 0xf4, 0x8b, 0x34, 0x94, 0x12, 0x9d, 0xe8, 0x5d, 0x28, 0xe0, 0x2e, 0x6e, 0x1f, + 0x18, 0xfb, 0x2d, 0x6d, 0xa9, 0x7a, 0xf7, 0xfc, 0xa2, 0xb6, 0x26, 0xac, 0x25, 0x0d, 0x74, 0x03, + 0xe7, 0x94, 0x87, 0xde, 0x7d, 0x58, 0x8e, 0xa0, 0xa9, 0xea, 0xeb, 0xe7, 0x17, 0xb5, 0xd7, 0xe6, + 0xa1, 0x09, 0x24, 0xee, 0x3d, 0x36, 0x70, 0xab, 0xa9, 0xa5, 0x17, 0x23, 0x71, 0xef, 0x98, 0x04, + 0xd4, 0x46, 0xdf, 0x87, 0xbc, 0x02, 0x66, 0xaa, 0xd5, 0xf3, 0x8b, 0xda, 0xed, 0x79, 0xe0, 0x14, + 0x87, 0x7b, 0x3b, 0xc6, 0x41, 0x4b, 0xcb, 0x2e, 0xc6, 0xe1, 0x9e, 0x4b, 0x4e, 0x29, 0x7a, 0x1b, + 0x72, 0x12, 0x96, 0xab, 0xde, 0x39, 0xbf, 0xa8, 0x7d, 0xef, 0x05, 0x73, 0x1c, 0x55, 0x5d, 0xfb, + 0xcb, 0xbf, 0x5d, 0x5f, 0xfa, 0xa7, 0xbf, 0x5b, 0xd7, 0xe6, 0xbb, 0xab, 0xff, 0x9b, 0x82, 0xca, + 0xcc, 0x96, 0x23, 0x1d, 0xf2, 0x9e, 0x6f, 0xf9, 0x23, 0x99, 0xce, 0x0b, 0x5b, 0x70, 0x75, 0xb9, + 0x91, 0xef, 0xf8, 0x0d, 0x7f, 0x34, 0xc1, 0xaa, 0x07, 0x3d, 0x99, 0xbb, 0x90, 0x3e, 0x7a, 0xc5, + 0x78, 0x5a, 0x78, 0x25, 0x7d, 0x06, 0x15, 0x3b, 0x70, 0x4e, 0x69, 0x60, 0x5a, 0xbe, 0x77, 0xe4, + 0x0c, 0x54, 0xaa, 0xae, 0x2e, 0xb2, 0xd9, 0x14, 0x40, 0x5c, 0x96, 0x0a, 0x0d, 0x81, 0xff, 0x0d, + 0x2e, 0xa3, 0xea, 0x01, 0x94, 0x93, 0x11, 0x8a, 0xde, 0x00, 0x08, 0x9d, 0x3f, 0xa2, 0x8a, 0xdf, + 0x08, 0x36, 0x84, 0x8b, 0x5c, 0x22, 0xd8, 0x0d, 0x7a, 0x07, 0xb2, 0x43, 0xdf, 0x96, 0x76, 0x72, + 0x5b, 0x37, 0xf9, 0x9d, 0xf8, 0x6f, 0x97, 0x1b, 0x25, 0x3f, 0xac, 0x6f, 0x3b, 0x2e, 0xdd, 0xf5, + 0x6d, 0x8a, 0x05, 0x40, 0x3f, 0x85, 0x2c, 0x4f, 0x15, 0xe8, 0x75, 0xc8, 0x6e, 0xb5, 0x3b, 0x4d, + 0x6d, 0xa9, 0x7a, 0xe3, 0xfc, 0xa2, 0x56, 0x11, 0x4b, 0xc2, 0x3b, 0x78, 0xec, 0xa2, 0x0d, 0xc8, + 0x1f, 0xec, 0xed, 0xf4, 0x77, 0x79, 0x78, 0xdd, 0x3c, 0xbf, 0xa8, 0xad, 0xc6, 0xdd, 0x72, 0xd1, + 0xd0, 0x1b, 0x90, 0xdb, 0xdf, 0xed, 0x6e, 0xf7, 0xb4, 0x74, 0x15, 0x9d, 0x5f, 0xd4, 0x56, 0xe2, + 0x7e, 0xe1, 0x73, 0xf5, 0x86, 0xda, 0xd5, 0x62, 0x2c, 0xd7, 0xff, 0x27, 0x0d, 0x15, 0xcc, 0xf9, + 0x6d, 0xc0, 0xba, 0xbe, 0xeb, 0x58, 0x13, 0xd4, 0x85, 0xa2, 0xe5, 0x7b, 0xb6, 0x93, 0x38, 0x53, + 0x9b, 0x2f, 0xb9, 0x04, 0xa7, 0x5a, 0x51, 0xab, 0x11, 0x69, 0xe2, 0xa9, 0x11, 0xb4, 0x09, 0x39, + 0x9b, 0xba, 0x64, 0x72, 0xdd, 0x6d, 0xdc, 0x54, 0x5c, 0x1a, 0x4b, 0xa8, 0x60, 0x8e, 0xe4, 0x99, + 0x49, 0x18, 0xa3, 0xc3, 0x11, 0x93, 0xb7, 0x71, 0x16, 0x97, 0x86, 0xe4, 0x99, 0xa1, 0x44, 0xe8, + 0x47, 0x90, 0x3f, 0x73, 0x3c, 0xdb, 0x3f, 0x53, 0x17, 0xee, 0xf5, 0x76, 0x15, 0x56, 0x3f, 0xe7, + 0xf7, 0xec, 0x9c, 0xb3, 0x7c, 0xd5, 0x3b, 0x7b, 0x9d, 0x56, 0xb4, 0xea, 0xaa, 0x7f, 0xcf, 0xeb, + 0xf8, 0x1e, 0x3f, 0x31, 0xb0, 0xd7, 0x31, 0xb7, 0x8d, 0xf6, 0x4e, 0x1f, 0xf3, 0x95, 0xbf, 0x75, + 0x7e, 0x51, 0xd3, 0x62, 0xc8, 0x36, 0x71, 0x5c, 0x4e, 0x02, 0xef, 0x40, 0xc6, 0xe8, 0x7c, 0xa1, + 0xa5, 0xab, 0xda, 0xf9, 0x45, 0xad, 0x1c, 0x77, 0x1b, 0xde, 0x64, 0x7a, 0x98, 0xe6, 0xc7, 0xd5, + 0x7f, 0x99, 0x86, 0x72, 0x7f, 0x64, 0x13, 0x46, 0x65, 0x64, 0xa2, 0x1a, 0x94, 0x46, 0x24, 0x20, + 0xae, 0x4b, 0x5d, 0x27, 0x1c, 0xaa, 0x42, 0x21, 0x29, 0x42, 0x0f, 0xbe, 0xc3, 0x62, 0x2a, 0x12, + 0xa6, 0x96, 0xb4, 0x0f, 0x2b, 0x47, 0xd2, 0x59, 0x93, 0x58, 0x62, 0x77, 0x33, 0x62, 0x77, 0xeb, + 0x8b, 0x4c, 0x24, 0xbd, 0xaa, 0xab, 0x39, 0x1a, 0x42, 0x0b, 0x57, 0x8e, 0x92, 0x4d, 0xf4, 0x31, + 0x2c, 0x0f, 0x7d, 0xcf, 0x61, 0x7e, 0xf0, 0x4a, 0xfb, 0x10, 0x81, 0xd1, 0xbb, 0x70, 0x83, 0xef, + 0x70, 0xe4, 0x92, 0xe8, 0x16, 0x37, 0x57, 0x1a, 0xaf, 0x0e, 0xc9, 0x33, 0x35, 0x26, 0xe6, 0x62, + 0xfd, 0x63, 0xa8, 0xcc, 0xf8, 0xc0, 0x6f, 0xf3, 0xae, 0xd1, 0xef, 0xb5, 0xb4, 0x25, 0x54, 0x86, + 0x42, 0x63, 0xaf, 0xb3, 0xdf, 0xee, 0xf4, 0x39, 0xf5, 0x28, 0x43, 0x01, 0xef, 0xed, 0xec, 0x6c, + 0x19, 0x8d, 0x27, 0x5a, 0x5a, 0xff, 0xef, 0x78, 0x7d, 0x15, 0xf7, 0xd8, 0x9a, 0xe5, 0x1e, 0xef, + 0xbd, 0x7c, 0xea, 0x8a, 0x7d, 0x4c, 0x1b, 0x31, 0x07, 0xf9, 0x31, 0x80, 0xd8, 0x46, 0x6a, 0x9b, + 0x84, 0x5d, 0x57, 0x5f, 0xec, 0x47, 0x95, 0x23, 0x2e, 0x2a, 0x05, 0x83, 0xa1, 0xcf, 0xa1, 0x6c, + 0xf9, 0xc3, 0x91, 0x4b, 0x95, 0x7e, 0xe6, 0x55, 0xf4, 0x4b, 0xb1, 0x8a, 0xc1, 0x92, 0x1c, 0x28, + 0x3b, 0xcb, 0x81, 0xfe, 0x3c, 0x05, 0xa5, 0x84, 0xc3, 0xb3, 0x54, 0xa8, 0x0c, 0x85, 0x7e, 0xb7, + 0x69, 0xec, 0xb7, 0x3b, 0x8f, 0xb4, 0x14, 0x02, 0xc8, 0x8b, 0x05, 0x6c, 0x6a, 0x69, 0x4e, 0xd7, + 0x1a, 0x7b, 0xbb, 0xdd, 0x9d, 0x96, 0x20, 0x43, 0xe8, 0x16, 0x68, 0xd1, 0x12, 0x9a, 0xbd, 0x7d, + 0x03, 0x73, 0x69, 0x16, 0xdd, 0x84, 0xd5, 0x58, 0xaa, 0x34, 0x73, 0xe8, 0x36, 0xa0, 0x58, 0x38, + 0x35, 0x91, 0xd7, 0xff, 0x04, 0x56, 0x1b, 0xbe, 0xc7, 0x88, 0xe3, 0xc5, 0x54, 0x76, 0x93, 0xcf, + 0x5b, 0x89, 0x4c, 0xc7, 0x96, 0xd9, 0x76, 0x6b, 0xf5, 0xea, 0x72, 0xa3, 0x14, 0x43, 0xdb, 0x4d, + 0x3e, 0xd3, 0xa8, 0x61, 0xf3, 0x33, 0x35, 0x72, 0x6c, 0x95, 0x3c, 0x97, 0xaf, 0x2e, 0x37, 0x32, + 0xdd, 0x76, 0x13, 0x73, 0x19, 0x7a, 0x1d, 0x8a, 0xf4, 0x99, 0xc3, 0x4c, 0x8b, 0x67, 0x57, 0xbe, + 0x86, 0x39, 0x5c, 0xe0, 0x82, 0x06, 0x4f, 0xa6, 0x7f, 0x9a, 0x06, 0xd8, 0x27, 0xe1, 0x89, 0x1a, + 0xfa, 0x21, 0x14, 0xe3, 0x22, 0xfe, 0xba, 0x62, 0x32, 0xb1, 0x5f, 0x31, 0x1e, 0x7d, 0x14, 0x45, + 0x8c, 0xe4, 0xd8, 0x8b, 0x15, 0xd5, 0x58, 0x8b, 0x68, 0xea, 0x2c, 0x91, 0xe6, 0x77, 0x0d, 0x0d, + 0x02, 0xb5, 0x71, 0xfc, 0x2f, 0x6a, 0x88, 0x7c, 0x2b, 0xe7, 0xac, 0x98, 0xdb, 0x5b, 0x8b, 0x06, + 0x99, 0x5b, 0xd0, 0xc7, 0x4b, 0x78, 0xaa, 0xb7, 0xa5, 0xc1, 0x4a, 0x30, 0xf6, 0xb8, 0xd7, 0x66, + 0x28, 0xba, 0x75, 0x07, 0x5e, 0xeb, 0x50, 0x76, 0xe6, 0x07, 0x27, 0x06, 0x63, 0xc4, 0x3a, 0xe6, + 0x45, 0xb5, 0x4a, 0x32, 0x53, 0xc2, 0x99, 0x9a, 0x21, 0x9c, 0x6b, 0xb0, 0x4c, 0x5c, 0x87, 0x84, + 0x54, 0xde, 0xd2, 0x45, 0x1c, 0x35, 0x39, 0x2d, 0x26, 0xb6, 0x1d, 0xd0, 0x30, 0xa4, 0xb2, 0x0c, + 0x2c, 0xe2, 0xa9, 0x40, 0xff, 0x97, 0x34, 0x40, 0xbb, 0x6b, 0xec, 0x2a, 0xf3, 0x4d, 0xc8, 0x1f, + 0x91, 0xa1, 0xe3, 0x4e, 0xae, 0x3b, 0x64, 0x53, 0x7c, 0xdd, 0x90, 0x86, 0xb6, 0x85, 0x0e, 0x56, + 0xba, 0x82, 0x2d, 0x8f, 0x0f, 0x3d, 0xca, 0x62, 0xb6, 0x2c, 0x5a, 0xfc, 0x6a, 0x0e, 0x88, 0x17, + 0x2f, 0xac, 0x6c, 0x70, 0xd7, 0x07, 0x84, 0xd1, 0x33, 0x32, 0x89, 0xce, 0x84, 0x6a, 0xa2, 0xc7, + 0x9c, 0x45, 0xf3, 0xe2, 0x9e, 0xda, 0x6b, 0x39, 0xc1, 0x3d, 0xbe, 0xcd, 0x1f, 0xac, 0xe0, 0x92, + 0x74, 0xc4, 0xda, 0xd5, 0x87, 0xe2, 0xa6, 0x9c, 0x76, 0x7d, 0xa7, 0x22, 0xf6, 0x03, 0xa8, 0xcc, + 0xcc, 0xf3, 0x85, 0x32, 0xa5, 0xdd, 0x3d, 0xf8, 0x91, 0x96, 0x55, 0xff, 0x3e, 0xd6, 0xf2, 0xfa, + 0x7f, 0xa5, 0x00, 0xba, 0x7e, 0x10, 0x6d, 0xda, 0xe2, 0x67, 0xa1, 0x82, 0x78, 0x64, 0xb2, 0x7c, + 0x57, 0x85, 0xe7, 0x42, 0x9e, 0x3e, 0xb5, 0xc2, 0x69, 0xaf, 0x80, 0xe3, 0x58, 0x11, 0x6d, 0x40, + 0x49, 0xee, 0xbf, 0x39, 0xf2, 0x03, 0x99, 0x8f, 0x2a, 0x18, 0xa4, 0x88, 0x6b, 0xa2, 0x7b, 0xb0, + 0x32, 0x1a, 0x1f, 0xba, 0x4e, 0x78, 0x4c, 0x6d, 0x89, 0xc9, 0x0a, 0x4c, 0x25, 0x96, 0x72, 0x98, + 0xde, 0x84, 0x42, 0x64, 0x1d, 0xad, 0x41, 0x66, 0xbf, 0xd1, 0xd5, 0x96, 0xaa, 0xab, 0xe7, 0x17, + 0xb5, 0x52, 0x24, 0xde, 0x6f, 0x74, 0x79, 0x4f, 0xbf, 0xd9, 0xd5, 0x52, 0xb3, 0x3d, 0xfd, 0x66, + 0xb7, 0x9a, 0xe5, 0xb7, 0xa4, 0xfe, 0xd7, 0x29, 0xc8, 0x4b, 0xce, 0xb6, 0x70, 0xc6, 0x06, 0x2c, + 0x47, 0x95, 0x84, 0x24, 0x92, 0xef, 0xbc, 0x9c, 0xf4, 0xd5, 0x15, 0x47, 0x93, 0xfb, 0x18, 0xe9, + 0x55, 0x3f, 0x85, 0x72, 0xb2, 0xe3, 0x3b, 0xed, 0xe2, 0x1f, 0x43, 0x89, 0x07, 0x4a, 0x44, 0xfe, + 0x36, 0x21, 0x2f, 0x79, 0xa5, 0xca, 0x2a, 0xd7, 0x31, 0x50, 0x85, 0x44, 0x0f, 0x60, 0x59, 0xb2, + 0xd6, 0xe8, 0x3d, 0x65, 0xfd, 0xfa, 0x70, 0xc4, 0x11, 0x5c, 0xff, 0x0c, 0xb2, 0x5d, 0x4a, 0x03, + 0xf4, 0x16, 0x2c, 0x7b, 0xbe, 0x4d, 0xa7, 0x49, 0x54, 0x11, 0x6e, 0x9b, 0xb6, 0x9b, 0x9c, 0x70, + 0xdb, 0xb4, 0x6d, 0xf3, 0xc5, 0xe3, 0x07, 0x34, 0x7a, 0x52, 0xe2, 0xff, 0xf5, 0x7d, 0x28, 0x3f, + 0xa5, 0xce, 0xe0, 0x98, 0x51, 0x5b, 0x18, 0x7a, 0x0f, 0xb2, 0x23, 0x1a, 0x3b, 0xbf, 0xb6, 0x30, + 0x74, 0x28, 0x0d, 0xb0, 0x40, 0xf1, 0x03, 0x79, 0x26, 0xb4, 0xd5, 0x2b, 0x9e, 0x6a, 0xe9, 0xff, + 0x90, 0x86, 0x95, 0x76, 0x18, 0x8e, 0x89, 0x67, 0x45, 0xb7, 0xec, 0x4f, 0x66, 0x6f, 0xd9, 0xfb, + 0x0b, 0x67, 0x38, 0xa3, 0x32, 0x5b, 0xe5, 0xab, 0x24, 0x99, 0x8e, 0x93, 0xa4, 0xfe, 0x75, 0x2a, + 0x2a, 0xef, 0xef, 0x25, 0xce, 0x4d, 0x75, 0xed, 0xfc, 0xa2, 0x76, 0x2b, 0x69, 0x89, 0xf6, 0xbd, + 0x13, 0xcf, 0x3f, 0xf3, 0xd0, 0x9b, 0xbc, 0xdc, 0xef, 0xb4, 0x9e, 0x6a, 0xa9, 0xea, 0xed, 0xf3, + 0x8b, 0x1a, 0x9a, 0x01, 0x61, 0xea, 0xd1, 0x33, 0x6e, 0xa9, 0xdb, 0xea, 0x34, 0xf9, 0x7d, 0x98, + 0x5e, 0x60, 0xa9, 0x4b, 0x3d, 0xdb, 0xf1, 0x06, 0xe8, 0x2d, 0xc8, 0xb7, 0x7b, 0xbd, 0xbe, 0x28, + 0xc0, 0x5e, 0x3b, 0xbf, 0xa8, 0xdd, 0x9c, 0x41, 0xf1, 0x06, 0xb5, 0x39, 0x88, 0x13, 0x44, 0x7e, + 0x53, 0x2e, 0x00, 0x71, 0xee, 0x42, 0x6d, 0x15, 0xe1, 0xff, 0x9e, 0x06, 0xcd, 0xb0, 0x2c, 0x3a, + 0x62, 0xbc, 0x5f, 0x91, 0xee, 0x7d, 0x28, 0x8c, 0xf8, 0x3f, 0x47, 0x14, 0x11, 0x3c, 0x2c, 0x1e, + 0x2c, 0x7c, 0xe2, 0x9d, 0xd3, 0xab, 0x63, 0xdf, 0xa5, 0x86, 0x3d, 0x74, 0xc2, 0x90, 0x17, 0x97, + 0x42, 0x86, 0x63, 0x4b, 0xd5, 0x5f, 0xa5, 0xe0, 0xe6, 0x02, 0x04, 0xfa, 0x00, 0xb2, 0x81, 0xef, + 0x46, 0xdb, 0x73, 0xf7, 0x65, 0x0f, 0x30, 0x5c, 0x15, 0x0b, 0x24, 0x5a, 0x07, 0x20, 0x63, 0xe6, + 0x13, 0x31, 0xbe, 0xd8, 0x98, 0x02, 0x4e, 0x48, 0xd0, 0x53, 0xc8, 0x87, 0xd4, 0x0a, 0x68, 0xc4, + 0x67, 0x3e, 0xfb, 0xff, 0x7a, 0x5f, 0xef, 0x09, 0x33, 0x58, 0x99, 0xab, 0xd6, 0x21, 0x2f, 0x25, + 0x3c, 0xa2, 0x6d, 0xc2, 0x88, 0x70, 0xba, 0x8c, 0xc5, 0x7f, 0x1e, 0x28, 0xc4, 0x1d, 0x44, 0x81, + 0x42, 0xdc, 0x81, 0xfe, 0xb3, 0x34, 0x40, 0xeb, 0x19, 0xa3, 0x81, 0x47, 0xdc, 0x86, 0x81, 0x5a, + 0x89, 0x0c, 0x29, 0x67, 0xfb, 0x83, 0x85, 0xcf, 0x72, 0xb1, 0x46, 0xbd, 0x61, 0x2c, 0xc8, 0x91, + 0x77, 0x20, 0x33, 0x0e, 0x5c, 0xf5, 0xc4, 0x2b, 0x88, 0x48, 0x1f, 0xef, 0x60, 0x2e, 0x43, 0xad, + 0x69, 0x46, 0xca, 0xbc, 0xfc, 0x6d, 0x3e, 0x31, 0xc0, 0x6f, 0x3f, 0x2b, 0xbd, 0x07, 0x30, 0xf5, + 0x1a, 0xad, 0x43, 0xae, 0xb1, 0xdd, 0xeb, 0xed, 0x68, 0x4b, 0xb2, 0x46, 0x9c, 0x76, 0x09, 0xb1, + 0xfe, 0xf7, 0x29, 0x28, 0x34, 0x0c, 0x75, 0xab, 0x6c, 0x83, 0x26, 0x72, 0x89, 0x45, 0x03, 0x66, + 0xd2, 0x67, 0x23, 0x27, 0x98, 0xa8, 0x74, 0x70, 0x3d, 0x8b, 0x5f, 0xe1, 0x5a, 0x0d, 0x1a, 0xb0, + 0x96, 0xd0, 0x41, 0x18, 0xca, 0x54, 0x4d, 0xd1, 0xb4, 0x48, 0x94, 0x9c, 0xd7, 0xaf, 0x5f, 0x0a, + 0xc9, 0xfe, 0xa6, 0xed, 0x10, 0x97, 0x22, 0x23, 0x0d, 0x12, 0xea, 0x07, 0x70, 0x73, 0x2f, 0xb0, + 0x8e, 0x69, 0xc8, 0xe4, 0xa0, 0xca, 0xe5, 0xcf, 0xe0, 0x2e, 0x23, 0xe1, 0x89, 0x79, 0xec, 0x84, + 0xcc, 0x0f, 0x26, 0x66, 0x40, 0x19, 0xf5, 0x78, 0xbf, 0x29, 0xbe, 0x00, 0xa8, 0x1a, 0xfc, 0x0e, + 0xc7, 0x3c, 0x96, 0x10, 0x1c, 0x21, 0x76, 0x38, 0x40, 0x6f, 0x43, 0x99, 0x13, 0xb6, 0x26, 0x3d, + 0x22, 0x63, 0x97, 0x85, 0xe8, 0x13, 0x00, 0xd7, 0x1f, 0x98, 0xaf, 0x9c, 0xc9, 0x8b, 0xae, 0x3f, + 0x90, 0x7f, 0xf5, 0xdf, 0x07, 0xad, 0xe9, 0x84, 0x23, 0xc2, 0xac, 0xe3, 0xe8, 0x71, 0x01, 0x3d, + 0x02, 0xed, 0x98, 0x92, 0x80, 0x1d, 0x52, 0xc2, 0xcc, 0x11, 0x0d, 0x1c, 0xdf, 0x7e, 0xa5, 0x25, + 0x5d, 0x8d, 0xb5, 0xba, 0x42, 0x49, 0xff, 0x75, 0x0a, 0x00, 0x93, 0xa3, 0x88, 0x00, 0xfc, 0x10, + 0x6e, 0x84, 0x1e, 0x19, 0x85, 0xc7, 0x3e, 0x33, 0x1d, 0x8f, 0xd1, 0xe0, 0x94, 0xb8, 0xaa, 0x40, + 0xd4, 0xa2, 0x8e, 0xb6, 0x92, 0xa3, 0xf7, 0x00, 0x9d, 0x50, 0x3a, 0x32, 0x7d, 0xd7, 0x36, 0xa3, + 0x4e, 0xf9, 0x89, 0x22, 0x8b, 0x35, 0xde, 0xb3, 0xe7, 0xda, 0xbd, 0x48, 0x8e, 0xb6, 0x60, 0x9d, + 0xaf, 0x00, 0xf5, 0x58, 0xe0, 0xd0, 0xd0, 0x3c, 0xf2, 0x03, 0x33, 0x74, 0xfd, 0x33, 0xf3, 0xc8, + 0x77, 0x5d, 0xff, 0x8c, 0x06, 0x51, 0xf9, 0x5d, 0x75, 0xfd, 0x41, 0x4b, 0x82, 0xb6, 0xfd, 0xa0, + 0xe7, 0xfa, 0x67, 0xdb, 0x11, 0x82, 0xb3, 0x84, 0xe9, 0xb4, 0x99, 0x63, 0x9d, 0x44, 0x2c, 0x21, + 0x96, 0xee, 0x3b, 0xd6, 0x09, 0x7a, 0x0b, 0x2a, 0xd4, 0xa5, 0xa2, 0x88, 0x93, 0xa8, 0x9c, 0x40, + 0x95, 0x23, 0x21, 0x07, 0xe9, 0x87, 0x50, 0x91, 0x87, 0x3e, 0x54, 0x73, 0xdf, 0x00, 0x5e, 0xf9, + 0x9b, 0x32, 0x27, 0xc8, 0x67, 0x96, 0x0a, 0x86, 0x21, 0x79, 0xa6, 0x60, 0xe8, 0x03, 0xb8, 0x35, + 0x05, 0x98, 0x01, 0x3d, 0x75, 0xc2, 0xf8, 0xeb, 0x4f, 0x05, 0xa3, 0x18, 0x89, 0xa3, 0x1e, 0xfd, + 0x77, 0xa0, 0xd8, 0x75, 0x89, 0x25, 0x3e, 0x36, 0xf1, 0xb2, 0xdb, 0xf2, 0x3d, 0x1e, 0x68, 0x8e, + 0xc7, 0x64, 0x06, 0x2e, 0xe2, 0xa4, 0x48, 0xff, 0x09, 0xc0, 0x4f, 0x7d, 0xc7, 0xdb, 0xf7, 0x4f, + 0xa8, 0x27, 0xde, 0xe5, 0x39, 0xb3, 0x56, 0xe1, 0x52, 0xc4, 0xaa, 0x25, 0x78, 0x3f, 0xf1, 0xc8, + 0x80, 0x06, 0xf1, 0xf3, 0xb4, 0x6c, 0xf2, 0x0b, 0x2c, 0x8f, 0x7d, 0x9f, 0x35, 0x0c, 0x54, 0x83, + 0xbc, 0x45, 0xcc, 0xe8, 0x74, 0x97, 0xb7, 0x8a, 0x57, 0x97, 0x1b, 0xb9, 0x86, 0xf1, 0x84, 0x4e, + 0x70, 0xce, 0x22, 0x4f, 0xe8, 0x84, 0xdf, 0xf0, 0x16, 0x11, 0x67, 0x52, 0x98, 0x29, 0xcb, 0x1b, + 0xbe, 0x61, 0xf0, 0x03, 0x87, 0xf3, 0x16, 0xe1, 0xbf, 0xe8, 0x03, 0x28, 0x2b, 0x90, 0x79, 0x4c, + 0xc2, 0x63, 0xc9, 0x87, 0xb7, 0x56, 0xae, 0x2e, 0x37, 0x40, 0x22, 0x1f, 0x93, 0xf0, 0x18, 0x83, + 0x44, 0xf3, 0xff, 0xa8, 0x05, 0xa5, 0x2f, 0x7d, 0xc7, 0x33, 0x99, 0x98, 0x84, 0xaa, 0xd6, 0x17, + 0x9e, 0xd1, 0xe9, 0x54, 0xd5, 0x13, 0x02, 0x7c, 0x19, 0x4b, 0xf4, 0x7f, 0x4d, 0x41, 0x89, 0xdb, + 0x74, 0x8e, 0x1c, 0x8b, 0xdf, 0xc8, 0xdf, 0xfd, 0x36, 0xb9, 0x03, 0x19, 0x2b, 0x0c, 0xd4, 0xdc, + 0x44, 0x3a, 0x6d, 0xf4, 0x30, 0xe6, 0x32, 0xf4, 0x39, 0xe4, 0x65, 0x01, 0xa3, 0x2e, 0x12, 0xfd, + 0xdb, 0xb9, 0x83, 0x72, 0x51, 0xe9, 0x89, 0xbd, 0x9c, 0x7a, 0x27, 0x66, 0x59, 0xc6, 0x49, 0x11, + 0xba, 0x0d, 0x69, 0xcb, 0x13, 0x81, 0xa7, 0xbe, 0xd7, 0x35, 0x3a, 0x38, 0x6d, 0x79, 0xfa, 0x3f, + 0xa7, 0xa0, 0xd2, 0xf2, 0xac, 0x60, 0x22, 0x12, 0x31, 0xdf, 0x88, 0xbb, 0x50, 0x0c, 0xc7, 0x87, + 0xe1, 0x24, 0x64, 0x74, 0x18, 0x7d, 0x0e, 0x88, 0x05, 0xa8, 0x0d, 0x45, 0xe2, 0x0e, 0xfc, 0xc0, + 0x61, 0xc7, 0x43, 0xc5, 0xbf, 0x17, 0x27, 0xff, 0xa4, 0xcd, 0xba, 0x11, 0xa9, 0xe0, 0xa9, 0x76, + 0x94, 0xee, 0x33, 0xc2, 0x59, 0x91, 0xee, 0xdf, 0x84, 0xb2, 0x4b, 0x86, 0x9c, 0x6e, 0x9b, 0xbc, + 0xac, 0x13, 0xf3, 0xc8, 0xe2, 0x92, 0x92, 0xf1, 0x52, 0x55, 0xd7, 0xa1, 0x18, 0x1b, 0x43, 0xab, + 0x50, 0x32, 0x5a, 0x3d, 0xf3, 0xc3, 0xcd, 0x07, 0xe6, 0xa3, 0xc6, 0xae, 0xb6, 0xa4, 0xd8, 0xc6, + 0x3f, 0xa6, 0xa0, 0xb2, 0x2b, 0x63, 0x50, 0x91, 0xb3, 0xb7, 0x60, 0x39, 0x20, 0x47, 0x2c, 0xa2, + 0x8f, 0x59, 0x19, 0x5c, 0x3c, 0xd1, 0x70, 0xfa, 0xc8, 0xbb, 0x16, 0xd3, 0xc7, 0xc4, 0xc7, 0xa8, + 0xcc, 0xb5, 0x1f, 0xa3, 0xb2, 0xbf, 0x95, 0x8f, 0x51, 0xfa, 0x2f, 0x53, 0xb0, 0x1a, 0x1d, 0x5a, + 0xf5, 0x01, 0x66, 0x61, 0x49, 0xf0, 0x09, 0xac, 0xaa, 0x63, 0x2f, 0x6e, 0x44, 0x53, 0x3d, 0x18, + 0x14, 0xb7, 0x6e, 0x5c, 0x5d, 0x6e, 0xa8, 0x3c, 0x72, 0xc0, 0x7b, 0xda, 0x4d, 0x5c, 0x09, 0x13, + 0x4d, 0x1b, 0xfd, 0x58, 0xbd, 0xce, 0x66, 0x5e, 0x4e, 0x53, 0xe7, 0x3c, 0xa8, 0x4f, 0x9f, 0x6c, + 0x13, 0x65, 0x74, 0x36, 0x59, 0x46, 0xeb, 0xf7, 0x20, 0xcb, 0x51, 0x08, 0x20, 0xdf, 0xfb, 0xa2, + 0xb7, 0xdf, 0xda, 0x95, 0x05, 0xde, 0x76, 0x5b, 0x7c, 0x1b, 0x5b, 0x86, 0x4c, 0xab, 0x73, 0xa0, + 0xa5, 0xdf, 0xfd, 0x75, 0x06, 0x8a, 0xf1, 0xc3, 0x01, 0x3f, 0x12, 0x9c, 0xad, 0x2e, 0xc9, 0xe7, + 0xc3, 0x58, 0xde, 0x11, 0x3c, 0xb5, 0x68, 0xec, 0xec, 0xec, 0x35, 0x8c, 0xfd, 0x56, 0x53, 0xfb, + 0x5c, 0xd2, 0xd9, 0x18, 0x60, 0xb8, 0xae, 0xcf, 0x83, 0xda, 0x46, 0xfa, 0x94, 0xce, 0x3e, 0x57, + 0x8f, 0x94, 0x31, 0x2a, 0xe2, 0xb2, 0x6f, 0x43, 0xc1, 0xe8, 0xf5, 0xda, 0x8f, 0x3a, 0xad, 0xa6, + 0xf6, 0x55, 0xaa, 0xfa, 0xbd, 0xf3, 0x8b, 0xda, 0x8d, 0xa9, 0xa9, 0x30, 0x74, 0x06, 0x1e, 0xb5, + 0x05, 0xaa, 0xd1, 0x68, 0x75, 0xf9, 0x78, 0xcf, 0xd3, 0xf3, 0x28, 0x41, 0xe2, 0xc4, 0x07, 0x87, + 0x62, 0x17, 0xb7, 0xba, 0x06, 0xe6, 0x23, 0x7e, 0x95, 0x9e, 0xf3, 0xab, 0x1b, 0xd0, 0x11, 0x09, + 0xf8, 0x98, 0xeb, 0xd1, 0x87, 0xb7, 0xe7, 0x19, 0xf9, 0x28, 0x3d, 0x7d, 0x2d, 0xa1, 0xc4, 0x9e, + 0xf0, 0xd1, 0xc4, 0x2b, 0x93, 0x30, 0x93, 0x99, 0x1b, 0xad, 0xc7, 0x48, 0xc0, 0xb8, 0x15, 0x1d, + 0x96, 0x71, 0xbf, 0xd3, 0x11, 0xb3, 0xcb, 0xce, 0xcd, 0x0e, 0x8f, 0x3d, 0x8f, 0x63, 0xee, 0x41, + 0x21, 0x7a, 0x84, 0xd2, 0xbe, 0xca, 0xce, 0x39, 0xd4, 0x88, 0x5e, 0xd0, 0xc4, 0x80, 0x8f, 0xfb, + 0xfb, 0xe2, 0xbb, 0xe0, 0xf3, 0xdc, 0xfc, 0x80, 0xc7, 0x63, 0x66, 0xf3, 0x02, 0xa2, 0x16, 0x33, + 0xfa, 0xaf, 0x72, 0x92, 0x48, 0xc5, 0x18, 0x49, 0xe7, 0xb9, 0x1d, 0xdc, 0xfa, 0xa9, 0xfc, 0x84, + 0xf8, 0x3c, 0x3f, 0x67, 0x07, 0xd3, 0x2f, 0xa9, 0xc5, 0xa8, 0x3d, 0x7d, 0x73, 0x8f, 0xbb, 0xde, + 0xfd, 0x03, 0x28, 0x44, 0x09, 0x11, 0xad, 0x43, 0xfe, 0xe9, 0x1e, 0x7e, 0xd2, 0xc2, 0xda, 0x92, + 0x5c, 0x9d, 0xa8, 0xe7, 0xa9, 0xbc, 0x51, 0x6a, 0xb0, 0xbc, 0x6b, 0x74, 0x8c, 0x47, 0x2d, 0x1c, + 0xbd, 0xf9, 0x47, 0x00, 0x75, 0xaa, 0xab, 0x9a, 0x1a, 0x20, 0xb6, 0xb9, 0x75, 0xf7, 0xeb, 0x6f, + 0xd6, 0x97, 0x7e, 0xf1, 0xcd, 0xfa, 0xd2, 0xaf, 0xbe, 0x59, 0x4f, 0x3d, 0xbf, 0x5a, 0x4f, 0x7d, + 0x7d, 0xb5, 0x9e, 0xfa, 0xf9, 0xd5, 0x7a, 0xea, 0x3f, 0xae, 0xd6, 0x53, 0x87, 0x79, 0xc1, 0x6a, + 0x3f, 0xfa, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xbc, 0x27, 0xa7, 0x82, 0x04, 0x23, 0x00, 0x00, } diff --git a/api/types.proto b/api/types.proto index 79ad07e83f..af54c4fb36 100644 --- a/api/types.proto +++ b/api/types.proto @@ -658,6 +658,20 @@ message RaftConfig { uint32 election_tick = 5; } + +// SecretsConfig specifies cluster-level secrets settings. +message SecretsConfig { + // MaxSecrets specifies how many user-specified secrets there can be. A value + // of 0 will be interpreted as the default maximum value. + uint32 max_secrets = 1; + + // MaxSecretRevisions specifies how many revisions of a secret there can be. A + // value of 0 will be interpreted as the default maximum value. + // If this value is decreased, there will be no change to existing secrets + // until the next update, after which extra revisions will be culled. + uint32 max_secret_revisions = 2; +} + // Placement specifies task distribution constraints. message Placement { // constraints specifies a set of requirements a node should meet for a task. @@ -748,13 +762,6 @@ message ManagerStatus { RaftMemberStatus.Reachability reachability = 4; } -// SecretType provides information about what kind of secret this is -enum SecretType { - // CONTAINER secrets are user-specified secrets that should be injected - // into the container as an environment variable or file. - CONTAINER = 0 [(gogoproto.enumvalue_customname) = "ContainerSecret"]; -} - // SecretReference is the linkage between a service and a secret that it uses. message SecretReference { // Name is the name of the secret that this references. @@ -765,10 +772,15 @@ message SecretReference { // any information about the secret contents. string secret_value_id = 2 [(gogoproto.customname) = "SecretValueID"]; - // Mode specifies how this secret should be exposed inside the task. + // Mode specifies how this secret should be exposed to the task. enum Mode { - FILE = 0; - ENV = 1; + // SYSTEM means that it is not exposed inside to a task at all, but + // only available via direct access, usually at the agent-level + SYSTEM = 0; + // FILE means that it will be exposed to the task as a file + FILE = 1; + // ENV means that it will be exposed to the task as an environment variable + ENV = 2; } // Mode is the way the secret should be presented. @@ -777,4 +789,3 @@ message SecretReference { // Target is the name by which the image accesses the secret. string target = 4; } - From d40a338022f69146b1e68bb0d5658313ae799299 Mon Sep 17 00:00:00 2001 From: cyli Date: Wed, 14 Sep 2016 17:43:50 -0700 Subject: [PATCH 7/9] Unify Secret and SecretValue, and remove UpdateSecret as an API Signed-off-by: cyli --- api/objects.pb.go | 591 ++++++++++++++-------------------------------- api/objects.proto | 44 ++-- api/secrets.pb.go | 548 +++++------------------------------------- api/secrets.proto | 42 +--- api/specs.pb.go | 226 +++++++++--------- api/specs.proto | 4 +- api/types.pb.go | 523 +++++++++++++++++++--------------------- api/types.proto | 10 +- 8 files changed, 613 insertions(+), 1375 deletions(-) diff --git a/api/objects.pb.go b/api/objects.pb.go index 7380aff508..0da2240f3b 100644 --- a/api/objects.pb.go +++ b/api/objects.pb.go @@ -227,45 +227,28 @@ type Cluster struct { // and agents to unambiguously identify the older key to be deleted when // a new key is allocated on key rotation. EncryptionKeyLamportClock uint64 `protobuf:"varint,6,opt,name=encryption_key_lamport_clock,json=encryptionKeyLamportClock,proto3" json:"encryption_key_lamport_clock,omitempty"` + // Logical clock used to timestamp every secret. It allows other managers + // and agents to unambiguously identify the newest secret to be used when + // requesting the latest version of a secret. + SecretLamportClock uint64 `protobuf:"varint,7,opt,name=secret_lamport_clock,json=secretLamportClock,proto3" json:"secret_lamport_clock,omitempty"` } func (m *Cluster) Reset() { *m = Cluster{} } func (*Cluster) ProtoMessage() {} func (*Cluster) Descriptor() ([]byte, []int) { return fileDescriptorObjects, []int{7} } -// Secret represents a conceptual secret that should be passed to either a -// container a node. It can contain many versions of secret data, since -// conceptually secret credentials can be rotated. +// Secret represents a secret that should be passed to a container or a node, +// and is immutable. It wraps the `spec` provided by the user with useful +// information that is generated from the secret data in the `spec`, such as +// the digest and size of the secret data. type Secret struct { ID string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Meta Meta `protobuf:"bytes,2,opt,name=meta" json:"meta"` - // A secret has multiple versions, and each version is represented by a - // `SecretValue` object and referenced by the `SecretValue`'s ID. This - // list is kept sorted by version creation date. - SecretValues []*SecretValue `protobuf:"bytes,3,rep,name=secret_values,json=secretValues" json:"secret_values,omitempty"` - // Name of the secret, so that we can use it easily for lookups. This is - // just a copy of the data in `SecretValue.Spec.Annotations.Name`. - Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` - // Whether the secret is an internal secret (not set by a user) or not. - Internal bool `protobuf:"varint,5,opt,name=internal,proto3" json:"internal,omitempty"` -} - -func (m *Secret) Reset() { *m = Secret{} } -func (*Secret) ProtoMessage() {} -func (*Secret) Descriptor() ([]byte, []int) { return fileDescriptorObjects, []int{8} } - -// SecretValue is represents a specific version of a secret, and is immutable; -// it wraps the `spec` provided by the user with useful information that is -// generated from the secret data in the `spec`, such as the digest and size -// of the secret data. -type SecretValue struct { - ID string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - CreatedAt docker_swarmkit_v1.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt" json:"created_at"` // Spec contains the actual secret data, as well as any context around the // secret data that the user provides. The name on the annotation of the - // spec must match the name of the `Secret` object this `SecretValue` belongs + // spec must match the name of the `Secret` object this `SecretSpec` belongs // to. - Spec SecretValueSpec `protobuf:"bytes,3,opt,name=spec" json:"spec"` + Spec SecretSpec `protobuf:"bytes,3,opt,name=spec" json:"spec"` // Digest represents the cryptographic digest of the secret data, and follows // the form ":": for example "sha256:DEADBEEF...". It // is calculated from the data contained in `SecretValue.Spec.data`. @@ -273,11 +256,15 @@ type SecretValue struct { // Size represents the size (number of bytes) of the secret data, and is // calculated from the data contained in `SecretValue.Spec.data`.. SecretSize uint32 `protobuf:"varint,5,opt,name=size,proto3" json:"size,omitempty"` + // Whether the secret is an internal secret (not set by a user) or not. + Internal bool `protobuf:"varint,6,opt,name=internal,proto3" json:"internal,omitempty"` + // Timestamp from the lamport clock to identify the relative age of the secret. + LamportTime uint64 `protobuf:"varint,7,opt,name=lamport_time,json=lamportTime,proto3" json:"lamport_time,omitempty"` } -func (m *SecretValue) Reset() { *m = SecretValue{} } -func (*SecretValue) ProtoMessage() {} -func (*SecretValue) Descriptor() ([]byte, []int) { return fileDescriptorObjects, []int{9} } +func (m *Secret) Reset() { *m = Secret{} } +func (*Secret) ProtoMessage() {} +func (*Secret) Descriptor() ([]byte, []int) { return fileDescriptorObjects, []int{8} } func init() { proto.RegisterType((*Meta)(nil), "docker.swarmkit.v1.Meta") @@ -290,7 +277,6 @@ func init() { proto.RegisterType((*Network)(nil), "docker.swarmkit.v1.Network") proto.RegisterType((*Cluster)(nil), "docker.swarmkit.v1.Cluster") proto.RegisterType((*Secret)(nil), "docker.swarmkit.v1.Secret") - proto.RegisterType((*SecretValue)(nil), "docker.swarmkit.v1.SecretValue") } func (m *Meta) Copy() *Meta { @@ -465,6 +451,7 @@ func (m *Cluster) Copy() *Cluster { Spec: *m.Spec.Copy(), RootCA: *m.RootCA.Copy(), EncryptionKeyLamportClock: m.EncryptionKeyLamportClock, + SecretLamportClock: m.SecretLamportClock, } if m.NetworkBootstrapKeys != nil { @@ -483,33 +470,13 @@ func (m *Secret) Copy() *Secret { } o := &Secret{ - ID: m.ID, - Meta: *m.Meta.Copy(), - Name: m.Name, - Internal: m.Internal, - } - - if m.SecretValues != nil { - o.SecretValues = make([]*SecretValue, 0, len(m.SecretValues)) - for _, v := range m.SecretValues { - o.SecretValues = append(o.SecretValues, v.Copy()) - } - } - - return o -} - -func (m *SecretValue) Copy() *SecretValue { - if m == nil { - return nil - } - - o := &SecretValue{ - ID: m.ID, - CreatedAt: *m.CreatedAt.Copy(), - Spec: *m.Spec.Copy(), - Digest: m.Digest, - SecretSize: m.SecretSize, + ID: m.ID, + Meta: *m.Meta.Copy(), + Spec: *m.Spec.Copy(), + Digest: m.Digest, + SecretSize: m.SecretSize, + Internal: m.Internal, + LamportTime: m.LamportTime, } return o @@ -668,7 +635,7 @@ func (this *Cluster) GoString() string { if this == nil { return "nil" } - s := make([]string, 0, 10) + s := make([]string, 0, 11) s = append(s, "&api.Cluster{") s = append(s, "ID: "+fmt.Sprintf("%#v", this.ID)+",\n") s = append(s, "Meta: "+strings.Replace(this.Meta.GoString(), `&`, ``, 1)+",\n") @@ -678,6 +645,7 @@ func (this *Cluster) GoString() string { s = append(s, "NetworkBootstrapKeys: "+fmt.Sprintf("%#v", this.NetworkBootstrapKeys)+",\n") } s = append(s, "EncryptionKeyLamportClock: "+fmt.Sprintf("%#v", this.EncryptionKeyLamportClock)+",\n") + s = append(s, "SecretLamportClock: "+fmt.Sprintf("%#v", this.SecretLamportClock)+",\n") s = append(s, "}") return strings.Join(s, "") } @@ -685,29 +653,15 @@ func (this *Secret) GoString() string { if this == nil { return "nil" } - s := make([]string, 0, 9) + s := make([]string, 0, 11) s = append(s, "&api.Secret{") s = append(s, "ID: "+fmt.Sprintf("%#v", this.ID)+",\n") s = append(s, "Meta: "+strings.Replace(this.Meta.GoString(), `&`, ``, 1)+",\n") - if this.SecretValues != nil { - s = append(s, "SecretValues: "+fmt.Sprintf("%#v", this.SecretValues)+",\n") - } - s = append(s, "Name: "+fmt.Sprintf("%#v", this.Name)+",\n") - s = append(s, "Internal: "+fmt.Sprintf("%#v", this.Internal)+",\n") - s = append(s, "}") - return strings.Join(s, "") -} -func (this *SecretValue) GoString() string { - if this == nil { - return "nil" - } - s := make([]string, 0, 9) - s = append(s, "&api.SecretValue{") - s = append(s, "ID: "+fmt.Sprintf("%#v", this.ID)+",\n") - s = append(s, "CreatedAt: "+strings.Replace(this.CreatedAt.GoString(), `&`, ``, 1)+",\n") s = append(s, "Spec: "+strings.Replace(this.Spec.GoString(), `&`, ``, 1)+",\n") s = append(s, "Digest: "+fmt.Sprintf("%#v", this.Digest)+",\n") s = append(s, "SecretSize: "+fmt.Sprintf("%#v", this.SecretSize)+",\n") + s = append(s, "Internal: "+fmt.Sprintf("%#v", this.Internal)+",\n") + s = append(s, "LamportTime: "+fmt.Sprintf("%#v", this.LamportTime)+",\n") s = append(s, "}") return strings.Join(s, "") } @@ -1319,6 +1273,11 @@ func (m *Cluster) MarshalTo(data []byte) (int, error) { i++ i = encodeVarintObjects(data, i, uint64(m.EncryptionKeyLamportClock)) } + if m.SecretLamportClock != 0 { + data[i] = 0x38 + i++ + i = encodeVarintObjects(data, i, uint64(m.SecretLamportClock)) + } return i, nil } @@ -1351,74 +1310,14 @@ func (m *Secret) MarshalTo(data []byte) (int, error) { return 0, err } i += n32 - if len(m.SecretValues) > 0 { - for _, msg := range m.SecretValues { - data[i] = 0x1a - i++ - i = encodeVarintObjects(data, i, uint64(msg.Size())) - n, err := msg.MarshalTo(data[i:]) - if err != nil { - return 0, err - } - i += n - } - } - if len(m.Name) > 0 { - data[i] = 0x22 - i++ - i = encodeVarintObjects(data, i, uint64(len(m.Name))) - i += copy(data[i:], m.Name) - } - if m.Internal { - data[i] = 0x28 - i++ - if m.Internal { - data[i] = 1 - } else { - data[i] = 0 - } - i++ - } - return i, nil -} - -func (m *SecretValue) Marshal() (data []byte, err error) { - size := m.Size() - data = make([]byte, size) - n, err := m.MarshalTo(data) - if err != nil { - return nil, err - } - return data[:n], nil -} - -func (m *SecretValue) MarshalTo(data []byte) (int, error) { - var i int - _ = i - var l int - _ = l - if len(m.ID) > 0 { - data[i] = 0xa - i++ - i = encodeVarintObjects(data, i, uint64(len(m.ID))) - i += copy(data[i:], m.ID) - } - data[i] = 0x12 - i++ - i = encodeVarintObjects(data, i, uint64(m.CreatedAt.Size())) - n33, err := m.CreatedAt.MarshalTo(data[i:]) - if err != nil { - return 0, err - } - i += n33 data[i] = 0x1a i++ i = encodeVarintObjects(data, i, uint64(m.Spec.Size())) - n34, err := m.Spec.MarshalTo(data[i:]) + n33, err := m.Spec.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n34 + i += n33 if len(m.Digest) > 0 { data[i] = 0x22 i++ @@ -1430,6 +1329,21 @@ func (m *SecretValue) MarshalTo(data []byte) (int, error) { i++ i = encodeVarintObjects(data, i, uint64(m.SecretSize)) } + if m.Internal { + data[i] = 0x30 + i++ + if m.Internal { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + } + if m.LamportTime != 0 { + data[i] = 0x38 + i++ + i = encodeVarintObjects(data, i, uint64(m.LamportTime)) + } return i, nil } @@ -1683,6 +1597,9 @@ func (m *Cluster) Size() (n int) { if m.EncryptionKeyLamportClock != 0 { n += 1 + sovObjects(uint64(m.EncryptionKeyLamportClock)) } + if m.SecretLamportClock != 0 { + n += 1 + sovObjects(uint64(m.SecretLamportClock)) + } return n } @@ -1695,31 +1612,6 @@ func (m *Secret) Size() (n int) { } l = m.Meta.Size() n += 1 + l + sovObjects(uint64(l)) - if len(m.SecretValues) > 0 { - for _, e := range m.SecretValues { - l = e.Size() - n += 1 + l + sovObjects(uint64(l)) - } - } - l = len(m.Name) - if l > 0 { - n += 1 + l + sovObjects(uint64(l)) - } - if m.Internal { - n += 2 - } - return n -} - -func (m *SecretValue) Size() (n int) { - var l int - _ = l - l = len(m.ID) - if l > 0 { - n += 1 + l + sovObjects(uint64(l)) - } - l = m.CreatedAt.Size() - n += 1 + l + sovObjects(uint64(l)) l = m.Spec.Size() n += 1 + l + sovObjects(uint64(l)) l = len(m.Digest) @@ -1729,6 +1621,12 @@ func (m *SecretValue) Size() (n int) { if m.SecretSize != 0 { n += 1 + sovObjects(uint64(m.SecretSize)) } + if m.Internal { + n += 2 + } + if m.LamportTime != 0 { + n += 1 + sovObjects(uint64(m.LamportTime)) + } return n } @@ -1871,6 +1769,7 @@ func (this *Cluster) String() string { `RootCA:` + strings.Replace(strings.Replace(this.RootCA.String(), "RootCA", "RootCA", 1), `&`, ``, 1) + `,`, `NetworkBootstrapKeys:` + strings.Replace(fmt.Sprintf("%v", this.NetworkBootstrapKeys), "EncryptionKey", "EncryptionKey", 1) + `,`, `EncryptionKeyLamportClock:` + fmt.Sprintf("%v", this.EncryptionKeyLamportClock) + `,`, + `SecretLamportClock:` + fmt.Sprintf("%v", this.SecretLamportClock) + `,`, `}`, }, "") return s @@ -1882,23 +1781,11 @@ func (this *Secret) String() string { s := strings.Join([]string{`&Secret{`, `ID:` + fmt.Sprintf("%v", this.ID) + `,`, `Meta:` + strings.Replace(strings.Replace(this.Meta.String(), "Meta", "Meta", 1), `&`, ``, 1) + `,`, - `SecretValues:` + strings.Replace(fmt.Sprintf("%v", this.SecretValues), "SecretValue", "SecretValue", 1) + `,`, - `Name:` + fmt.Sprintf("%v", this.Name) + `,`, - `Internal:` + fmt.Sprintf("%v", this.Internal) + `,`, - `}`, - }, "") - return s -} -func (this *SecretValue) String() string { - if this == nil { - return "nil" - } - s := strings.Join([]string{`&SecretValue{`, - `ID:` + fmt.Sprintf("%v", this.ID) + `,`, - `CreatedAt:` + strings.Replace(strings.Replace(this.CreatedAt.String(), "Timestamp", "docker_swarmkit_v1.Timestamp", 1), `&`, ``, 1) + `,`, - `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "SecretValueSpec", "SecretValueSpec", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "SecretSpec", "SecretSpec", 1), `&`, ``, 1) + `,`, `Digest:` + fmt.Sprintf("%v", this.Digest) + `,`, `SecretSize:` + fmt.Sprintf("%v", this.SecretSize) + `,`, + `Internal:` + fmt.Sprintf("%v", this.Internal) + `,`, + `LamportTime:` + fmt.Sprintf("%v", this.LamportTime) + `,`, `}`, }, "") return s @@ -3812,6 +3699,25 @@ func (m *Cluster) Unmarshal(data []byte) error { break } } + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field SecretLamportClock", wireType) + } + m.SecretLamportClock = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowObjects + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.SecretLamportClock |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipObjects(data[iNdEx:]) @@ -3923,7 +3829,7 @@ func (m *Secret) Unmarshal(data []byte) error { iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SecretValues", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -3947,14 +3853,13 @@ func (m *Secret) Unmarshal(data []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.SecretValues = append(m.SecretValues, &SecretValue{}) - if err := m.SecretValues[len(m.SecretValues)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Digest", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -3979,142 +3884,13 @@ func (m *Secret) Unmarshal(data []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Name = string(data[iNdEx:postIndex]) + m.Digest = string(data[iNdEx:postIndex]) iNdEx = postIndex case 5: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Internal", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowObjects - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - v |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - m.Internal = bool(v != 0) - default: - iNdEx = preIndex - skippy, err := skipObjects(data[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthObjects - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *SecretValue) Unmarshal(data []byte) error { - l := len(data) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowObjects - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: SecretValue: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: SecretValue: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ID", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowObjects - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthObjects - } - postIndex := iNdEx + intStringLen - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.ID = string(data[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field CreatedAt", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowObjects - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - msglen |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthObjects - } - postIndex := iNdEx + msglen - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.CreatedAt.Unmarshal(data[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SecretSize", wireType) } - var msglen int + m.SecretSize = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowObjects @@ -4124,27 +3900,16 @@ func (m *SecretValue) Unmarshal(data []byte) error { } b := data[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + m.SecretSize |= (uint32(b) & 0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { - return ErrInvalidLengthObjects - } - postIndex := iNdEx + msglen - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Digest", wireType) + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Internal", wireType) } - var stringLen uint64 + var v int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowObjects @@ -4154,26 +3919,17 @@ func (m *SecretValue) Unmarshal(data []byte) error { } b := data[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + v |= (int(b) & 0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthObjects - } - postIndex := iNdEx + intStringLen - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Digest = string(data[iNdEx:postIndex]) - iNdEx = postIndex - case 5: + m.Internal = bool(v != 0) + case 7: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field SecretSize", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LamportTime", wireType) } - m.SecretSize = 0 + m.LamportTime = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowObjects @@ -4183,7 +3939,7 @@ func (m *SecretValue) Unmarshal(data []byte) error { } b := data[iNdEx] iNdEx++ - m.SecretSize |= (uint32(b) & 0x7F) << shift + m.LamportTime |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } @@ -4317,77 +4073,76 @@ var ( func init() { proto.RegisterFile("objects.proto", fileDescriptorObjects) } var fileDescriptorObjects = []byte{ - // 1149 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xbc, 0x57, 0x4d, 0x6f, 0x1b, 0x45, - 0x18, 0xee, 0xda, 0x5b, 0x7f, 0xbc, 0xb6, 0x23, 0x31, 0x54, 0xd1, 0x36, 0x04, 0x3b, 0x38, 0x02, - 0xf5, 0x50, 0xb9, 0xa2, 0x14, 0x44, 0x45, 0x23, 0xe4, 0x8f, 0x08, 0xac, 0x12, 0x88, 0x26, 0x25, - 0x3d, 0xae, 0x26, 0xbb, 0x53, 0xb3, 0xd8, 0xde, 0x59, 0xcd, 0x8c, 0x5d, 0xa5, 0x27, 0xc4, 0x0f, - 0xe0, 0x27, 0xf0, 0x57, 0xb8, 0x46, 0x88, 0x03, 0x37, 0x38, 0x59, 0xc4, 0xe2, 0xc2, 0x09, 0x7e, - 0x02, 0x9a, 0xd9, 0x59, 0x7b, 0x23, 0xaf, 0xd3, 0x44, 0xaa, 0x72, 0x9b, 0xf1, 0x3c, 0xcf, 0x33, - 0xef, 0xfb, 0xce, 0x33, 0xef, 0xac, 0xa1, 0xc6, 0x4e, 0xbe, 0xa7, 0x9e, 0x14, 0xad, 0x88, 0x33, - 0xc9, 0x10, 0xf2, 0x99, 0x37, 0xa4, 0xbc, 0x25, 0x5e, 0x12, 0x3e, 0x1e, 0x06, 0xb2, 0x35, 0xfd, - 0x70, 0xab, 0x22, 0x4f, 0x23, 0x6a, 0x00, 0x5b, 0x15, 0x11, 0x51, 0x2f, 0x99, 0xdc, 0x95, 0xc1, - 0x98, 0x0a, 0x49, 0xc6, 0xd1, 0x83, 0xc5, 0xc8, 0x2c, 0xdd, 0x19, 0xb0, 0x01, 0xd3, 0xc3, 0x07, - 0x6a, 0x14, 0xff, 0xda, 0xfc, 0xc5, 0x02, 0xfb, 0x80, 0x4a, 0x82, 0x3e, 0x83, 0xe2, 0x94, 0x72, - 0x11, 0xb0, 0xd0, 0xb1, 0x76, 0xac, 0x7b, 0x95, 0x87, 0xef, 0xb4, 0x56, 0x77, 0x6e, 0x1d, 0xc7, - 0x90, 0x8e, 0x7d, 0x36, 0x6b, 0xdc, 0xc2, 0x09, 0x03, 0x3d, 0x01, 0xf0, 0x38, 0x25, 0x92, 0xfa, - 0x2e, 0x91, 0x4e, 0x4e, 0xf3, 0xdf, 0xcd, 0xe2, 0x3f, 0x4b, 0x82, 0xc2, 0x65, 0x43, 0x68, 0x4b, - 0xc5, 0x9e, 0x44, 0x7e, 0xc2, 0xce, 0x5f, 0x89, 0x6d, 0x08, 0x6d, 0xd9, 0xfc, 0x27, 0x0f, 0xf6, - 0xd7, 0xcc, 0xa7, 0x68, 0x13, 0x72, 0x81, 0xaf, 0x83, 0x2f, 0x77, 0x0a, 0xf3, 0x59, 0x23, 0xd7, - 0xef, 0xe1, 0x5c, 0xe0, 0xa3, 0x87, 0x60, 0x8f, 0xa9, 0x24, 0x26, 0x2c, 0x27, 0x4b, 0x58, 0x55, - 0xc0, 0xe4, 0xa4, 0xb1, 0xe8, 0x13, 0xb0, 0x55, 0x59, 0x4d, 0x30, 0xdb, 0x59, 0x1c, 0xb5, 0xe7, - 0x51, 0x44, 0xbd, 0x84, 0xa7, 0xf0, 0x68, 0x1f, 0x2a, 0x3e, 0x15, 0x1e, 0x0f, 0x22, 0xa9, 0x2a, - 0x69, 0x6b, 0xfa, 0xee, 0x3a, 0x7a, 0x6f, 0x09, 0xc5, 0x69, 0x1e, 0x7a, 0x02, 0x05, 0x21, 0x89, - 0x9c, 0x08, 0xe7, 0xb6, 0x56, 0xa8, 0xaf, 0x0d, 0x40, 0xa3, 0x4c, 0x08, 0x86, 0x83, 0xbe, 0x84, - 0x8d, 0x31, 0x09, 0xc9, 0x80, 0x72, 0xd7, 0xa8, 0x14, 0xb4, 0xca, 0x7b, 0x99, 0xa9, 0xc7, 0xc8, - 0x58, 0x08, 0xd7, 0xc6, 0xe9, 0x29, 0xda, 0x07, 0x20, 0x52, 0x12, 0xef, 0xbb, 0x31, 0x0d, 0xa5, - 0x53, 0xd4, 0x2a, 0xef, 0x67, 0xc6, 0x42, 0xe5, 0x4b, 0xc6, 0x87, 0xed, 0x05, 0x18, 0xa7, 0x88, - 0xe8, 0x0b, 0xa8, 0x78, 0x94, 0xcb, 0xe0, 0x45, 0xe0, 0x11, 0x49, 0x9d, 0x92, 0xd6, 0x69, 0x64, - 0xe9, 0x74, 0x97, 0x30, 0x93, 0x54, 0x9a, 0xd9, 0xfc, 0x23, 0x07, 0xc5, 0x23, 0xca, 0xa7, 0x81, - 0xf7, 0x66, 0x8f, 0xfb, 0xf1, 0x85, 0xe3, 0xce, 0x8c, 0xcc, 0x6c, 0xbb, 0x72, 0xe2, 0x9f, 0x42, - 0x89, 0x86, 0x7e, 0xc4, 0x82, 0x50, 0x9a, 0xe3, 0xce, 0x74, 0xcb, 0xbe, 0xc1, 0xe0, 0x05, 0x1a, - 0xed, 0x43, 0x2d, 0x76, 0xb1, 0x7b, 0xe1, 0xac, 0x77, 0xb2, 0xe8, 0xdf, 0x6a, 0xa0, 0x39, 0xa4, - 0xea, 0x24, 0x35, 0x43, 0x3d, 0xa8, 0x45, 0x9c, 0x4e, 0x03, 0x36, 0x11, 0xae, 0x4e, 0xa2, 0x70, - 0xa5, 0x24, 0x70, 0x35, 0x61, 0xa9, 0x59, 0xf3, 0xe7, 0x1c, 0x94, 0x92, 0x18, 0xd1, 0x23, 0x53, - 0x0e, 0x6b, 0x7d, 0x40, 0x09, 0x56, 0x4b, 0xc5, 0x95, 0x78, 0x04, 0xb7, 0x23, 0xc6, 0xa5, 0x70, - 0x72, 0x3b, 0xf9, 0x75, 0x9e, 0x3d, 0x64, 0x5c, 0x76, 0x59, 0xf8, 0x22, 0x18, 0xe0, 0x18, 0x8c, - 0x9e, 0x43, 0x65, 0x1a, 0x70, 0x39, 0x21, 0x23, 0x37, 0x88, 0x84, 0x93, 0xd7, 0xdc, 0x0f, 0x2e, - 0xdb, 0xb2, 0x75, 0x1c, 0xe3, 0xfb, 0x87, 0x9d, 0x8d, 0xf9, 0xac, 0x01, 0x8b, 0xa9, 0xc0, 0x60, - 0xa4, 0xfa, 0x91, 0xd8, 0x3a, 0x80, 0xf2, 0x62, 0x05, 0xdd, 0x07, 0x08, 0x63, 0x8b, 0xba, 0x0b, - 0xd3, 0xd4, 0xe6, 0xb3, 0x46, 0xd9, 0x18, 0xb7, 0xdf, 0xc3, 0x65, 0x03, 0xe8, 0xfb, 0x08, 0x81, - 0x4d, 0x7c, 0x9f, 0x6b, 0x0b, 0x95, 0xb1, 0x1e, 0x37, 0x7f, 0xbb, 0x0d, 0xf6, 0x33, 0x22, 0x86, - 0x37, 0xdd, 0x66, 0xd4, 0x9e, 0x2b, 0xa6, 0xbb, 0x0f, 0x20, 0xe2, 0xa3, 0x54, 0xe9, 0xd8, 0xcb, - 0x74, 0xcc, 0x01, 0xab, 0x74, 0x0c, 0x20, 0x4e, 0x47, 0x8c, 0x98, 0xd4, 0xfe, 0xb2, 0xb1, 0x1e, - 0xa3, 0x5d, 0x28, 0x86, 0xcc, 0xd7, 0xf4, 0x82, 0xa6, 0xc3, 0x7c, 0xd6, 0x28, 0xa8, 0x96, 0xd2, - 0xef, 0xe1, 0x82, 0x5a, 0xea, 0xfb, 0xea, 0xde, 0x92, 0x30, 0x64, 0x92, 0xa8, 0xa6, 0x24, 0xcc, - 0xfd, 0xcf, 0x34, 0x56, 0x7b, 0x09, 0x4b, 0xee, 0x6d, 0x8a, 0x89, 0x8e, 0xe1, 0xed, 0x24, 0xde, - 0xb4, 0x60, 0xe9, 0x3a, 0x82, 0xc8, 0x28, 0xa4, 0x56, 0x52, 0x7d, 0xb2, 0xbc, 0xbe, 0x4f, 0xea, - 0x0a, 0x66, 0xf5, 0xc9, 0x0e, 0xd4, 0x7c, 0x2a, 0x02, 0x4e, 0x7d, 0x7d, 0x03, 0xa9, 0x03, 0x3b, - 0xd6, 0xbd, 0x8d, 0x35, 0x4f, 0x8f, 0x11, 0xa1, 0xb8, 0x6a, 0x38, 0x7a, 0x86, 0xda, 0x50, 0x32, - 0xbe, 0x11, 0x4e, 0x45, 0x7b, 0xf7, 0x8a, 0xfd, 0x71, 0x41, 0xbb, 0xd0, 0x41, 0xaa, 0xd7, 0xea, - 0x20, 0x8f, 0x01, 0x46, 0x6c, 0xe0, 0xfa, 0x3c, 0x98, 0x52, 0xee, 0xd4, 0x34, 0x77, 0x2b, 0x8b, - 0xdb, 0xd3, 0x08, 0x5c, 0x1e, 0xb1, 0x41, 0x3c, 0x6c, 0xfe, 0x68, 0xc1, 0x5b, 0x2b, 0x41, 0xa1, - 0x8f, 0xa1, 0x68, 0xc2, 0xba, 0xec, 0x23, 0xc0, 0xf0, 0x70, 0x82, 0x45, 0xdb, 0x50, 0x56, 0x77, - 0x84, 0x0a, 0x41, 0xe3, 0xdb, 0x5f, 0xc6, 0xcb, 0x1f, 0x90, 0x03, 0x45, 0x32, 0x0a, 0x88, 0x5a, - 0xcb, 0xeb, 0xb5, 0x64, 0xda, 0xfc, 0x29, 0x07, 0x45, 0x23, 0x76, 0xd3, 0xed, 0xdc, 0x6c, 0xbb, - 0x72, 0xb3, 0xf6, 0xa0, 0x1a, 0x97, 0xd3, 0x58, 0xc2, 0x7e, 0x6d, 0x51, 0x2b, 0x31, 0x3e, 0xb6, - 0xc3, 0x1e, 0xd8, 0x41, 0x44, 0xc6, 0xa6, 0x95, 0x67, 0xee, 0xdc, 0x3f, 0x6c, 0x1f, 0x7c, 0x13, - 0xc5, 0xce, 0x2e, 0xcd, 0x67, 0x0d, 0x5b, 0xfd, 0x80, 0x35, 0xad, 0xf9, 0x6f, 0x0e, 0x8a, 0xdd, - 0xd1, 0x44, 0x48, 0xca, 0x6f, 0xba, 0x20, 0x66, 0xdb, 0x95, 0x82, 0x74, 0xa1, 0xc8, 0x19, 0x93, - 0xae, 0x47, 0x2e, 0xab, 0x05, 0x66, 0x4c, 0x76, 0xdb, 0x9d, 0x0d, 0x45, 0x54, 0x8d, 0x24, 0x9e, - 0xe3, 0x82, 0xa2, 0x76, 0x09, 0x7a, 0x0e, 0x9b, 0x49, 0xfb, 0x3d, 0x61, 0x4c, 0x0a, 0xc9, 0x49, - 0xe4, 0x0e, 0xe9, 0xa9, 0x7a, 0xf3, 0xf2, 0xeb, 0xbe, 0x4c, 0xf6, 0x43, 0x8f, 0x9f, 0xea, 0x42, - 0x3d, 0xa5, 0xa7, 0xf8, 0x8e, 0x11, 0xe8, 0x24, 0xfc, 0xa7, 0xf4, 0x54, 0xa0, 0xcf, 0x61, 0x9b, - 0x2e, 0x60, 0x4a, 0xd1, 0x1d, 0x91, 0xb1, 0x7a, 0x58, 0x5c, 0x6f, 0xc4, 0xbc, 0xa1, 0xee, 0x6d, - 0x36, 0xbe, 0x4b, 0xd3, 0x52, 0x5f, 0xc5, 0x88, 0xae, 0x02, 0x34, 0x7f, 0xb5, 0xa0, 0x70, 0x44, - 0x3d, 0x4e, 0xe5, 0x1b, 0x2d, 0x78, 0x0f, 0x6a, 0x42, 0xab, 0xba, 0x53, 0x32, 0x9a, 0xd0, 0xe4, - 0x5d, 0x5b, 0xf3, 0x28, 0x2b, 0xe0, 0xb1, 0xc2, 0xe1, 0xaa, 0x58, 0x4e, 0x84, 0x6a, 0xdc, 0x21, - 0x19, 0xc7, 0x26, 0x2c, 0x63, 0x3d, 0x46, 0x5b, 0x50, 0x0a, 0x42, 0x49, 0x79, 0x48, 0x46, 0xda, - 0x65, 0x25, 0xbc, 0x98, 0x37, 0xff, 0xb6, 0xa0, 0x92, 0x52, 0x5b, 0x9b, 0x51, 0xe7, 0xda, 0x9f, - 0xeb, 0x26, 0xb9, 0xd4, 0x47, 0xfb, 0xde, 0x05, 0x4b, 0xed, 0xbe, 0x26, 0xb1, 0x15, 0x5b, 0x6d, - 0x42, 0xc1, 0x0f, 0x06, 0x54, 0x48, 0x93, 0x9c, 0x99, 0xa1, 0x26, 0xd8, 0x22, 0x78, 0x45, 0x75, - 0x6a, 0xb5, 0xf8, 0x7d, 0x8f, 0x65, 0x8e, 0x82, 0x57, 0x14, 0xeb, 0xb5, 0xce, 0xf6, 0xd9, 0x79, - 0xfd, 0xd6, 0x9f, 0xe7, 0xf5, 0x5b, 0xff, 0x9d, 0xd7, 0xad, 0x1f, 0xe6, 0x75, 0xeb, 0x6c, 0x5e, - 0xb7, 0x7e, 0x9f, 0xd7, 0xad, 0xbf, 0xe6, 0x75, 0xeb, 0xa4, 0xa0, 0xff, 0xd8, 0x7c, 0xf4, 0x7f, - 0x00, 0x00, 0x00, 0xff, 0xff, 0xc6, 0xa9, 0x68, 0xcf, 0x48, 0x0d, 0x00, 0x00, + // 1130 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xbc, 0x57, 0x4f, 0x6f, 0x1b, 0x45, + 0x14, 0xaf, 0xed, 0xad, 0xff, 0x3c, 0xdb, 0x91, 0x18, 0xaa, 0x68, 0x1b, 0x82, 0x9d, 0xba, 0x02, + 0xf5, 0x50, 0xb9, 0x50, 0x0a, 0x6a, 0x45, 0x2b, 0xe4, 0x3f, 0x11, 0x58, 0x25, 0x10, 0x4d, 0x4a, + 0x7a, 0xb4, 0x26, 0xbb, 0x53, 0x33, 0xd8, 0xde, 0x59, 0xcd, 0x8c, 0x5d, 0xa5, 0x27, 0xc4, 0x8d, + 0x0b, 0x1f, 0x01, 0x89, 0x4f, 0xc2, 0x35, 0x07, 0x0e, 0xdc, 0xe0, 0x64, 0x11, 0xdf, 0xb8, 0xf1, + 0x11, 0xd0, 0xfc, 0x59, 0xc7, 0xc1, 0xeb, 0x90, 0x4a, 0x55, 0x6e, 0xf3, 0x66, 0x7e, 0xbf, 0xdf, + 0xbc, 0x79, 0xef, 0xcd, 0x9b, 0x5d, 0xa8, 0xf2, 0xa3, 0xef, 0x68, 0xa0, 0x64, 0x33, 0x16, 0x5c, + 0x71, 0x84, 0x42, 0x1e, 0x0c, 0xa9, 0x68, 0xca, 0x97, 0x44, 0x8c, 0x87, 0x4c, 0x35, 0xa7, 0x1f, + 0x6e, 0x95, 0xd5, 0x71, 0x4c, 0x1d, 0x60, 0xab, 0x2c, 0x63, 0x1a, 0x24, 0xc6, 0x4d, 0xc5, 0xc6, + 0x54, 0x2a, 0x32, 0x8e, 0xef, 0x2d, 0x46, 0x6e, 0xe9, 0xc6, 0x80, 0x0f, 0xb8, 0x19, 0xde, 0xd3, + 0x23, 0x3b, 0xdb, 0xf8, 0x35, 0x03, 0xde, 0x1e, 0x55, 0x04, 0x7d, 0x0a, 0x85, 0x29, 0x15, 0x92, + 0xf1, 0xc8, 0xcf, 0xec, 0x64, 0xee, 0x94, 0xef, 0xbf, 0xd3, 0x5c, 0xdd, 0xb9, 0x79, 0x68, 0x21, + 0x6d, 0xef, 0x64, 0x56, 0xbf, 0x86, 0x13, 0x06, 0x7a, 0x0c, 0x10, 0x08, 0x4a, 0x14, 0x0d, 0xfb, + 0x44, 0xf9, 0x59, 0xc3, 0x7f, 0x37, 0x8d, 0xff, 0x2c, 0x71, 0x0a, 0x97, 0x1c, 0xa1, 0xa5, 0x34, + 0x7b, 0x12, 0x87, 0x09, 0x3b, 0x77, 0x29, 0xb6, 0x23, 0xb4, 0x54, 0xe3, 0xef, 0x1c, 0x78, 0x5f, + 0xf1, 0x90, 0xa2, 0x4d, 0xc8, 0xb2, 0xd0, 0x38, 0x5f, 0x6a, 0xe7, 0xe7, 0xb3, 0x7a, 0xb6, 0xd7, + 0xc5, 0x59, 0x16, 0xa2, 0xfb, 0xe0, 0x8d, 0xa9, 0x22, 0xce, 0x2d, 0x3f, 0x4d, 0x58, 0x47, 0xc0, + 0x9d, 0xc9, 0x60, 0xd1, 0x27, 0xe0, 0xe9, 0xb0, 0x3a, 0x67, 0xb6, 0xd3, 0x38, 0x7a, 0xcf, 0x83, + 0x98, 0x06, 0x09, 0x4f, 0xe3, 0xd1, 0x2e, 0x94, 0x43, 0x2a, 0x03, 0xc1, 0x62, 0xa5, 0x23, 0xe9, + 0x19, 0xfa, 0xed, 0x75, 0xf4, 0xee, 0x19, 0x14, 0x2f, 0xf3, 0xd0, 0x63, 0xc8, 0x4b, 0x45, 0xd4, + 0x44, 0xfa, 0xd7, 0x8d, 0x42, 0x6d, 0xad, 0x03, 0x06, 0xe5, 0x5c, 0x70, 0x1c, 0xf4, 0x05, 0x6c, + 0x8c, 0x49, 0x44, 0x06, 0x54, 0xf4, 0x9d, 0x4a, 0xde, 0xa8, 0xdc, 0x4a, 0x3d, 0xba, 0x45, 0x5a, + 0x21, 0x5c, 0x1d, 0x2f, 0x9b, 0x68, 0x17, 0x80, 0x28, 0x45, 0x82, 0x6f, 0xc7, 0x34, 0x52, 0x7e, + 0xc1, 0xa8, 0xbc, 0x97, 0xea, 0x0b, 0x55, 0x2f, 0xb9, 0x18, 0xb6, 0x16, 0x60, 0xbc, 0x44, 0x44, + 0x9f, 0x43, 0x39, 0xa0, 0x42, 0xb1, 0x17, 0x2c, 0x20, 0x8a, 0xfa, 0x45, 0xa3, 0x53, 0x4f, 0xd3, + 0xe9, 0x9c, 0xc1, 0xdc, 0xa1, 0x96, 0x99, 0x8d, 0x3f, 0xb2, 0x50, 0x38, 0xa0, 0x62, 0xca, 0x82, + 0x37, 0x9b, 0xee, 0x47, 0xe7, 0xd2, 0x9d, 0xea, 0x99, 0xdb, 0x76, 0x25, 0xe3, 0x0f, 0xa1, 0x48, + 0xa3, 0x30, 0xe6, 0x2c, 0x52, 0x2e, 0xdd, 0xa9, 0xd5, 0xb2, 0xeb, 0x30, 0x78, 0x81, 0x46, 0xbb, + 0x50, 0xb5, 0x55, 0xdc, 0x3f, 0x97, 0xeb, 0x9d, 0x34, 0xfa, 0x37, 0x06, 0xe8, 0x92, 0x54, 0x99, + 0x2c, 0x59, 0xa8, 0x0b, 0xd5, 0x58, 0xd0, 0x29, 0xe3, 0x13, 0xd9, 0x37, 0x87, 0xc8, 0x5f, 0xea, + 0x10, 0xb8, 0x92, 0xb0, 0xb4, 0xd5, 0xf8, 0x39, 0x0b, 0xc5, 0xc4, 0x47, 0xf4, 0xc0, 0x85, 0x23, + 0xb3, 0xde, 0xa1, 0x04, 0x6b, 0xa4, 0x6c, 0x24, 0x1e, 0xc0, 0xf5, 0x98, 0x0b, 0x25, 0xfd, 0xec, + 0x4e, 0x6e, 0x5d, 0xcd, 0xee, 0x73, 0xa1, 0x3a, 0x3c, 0x7a, 0xc1, 0x06, 0xd8, 0x82, 0xd1, 0x73, + 0x28, 0x4f, 0x99, 0x50, 0x13, 0x32, 0xea, 0xb3, 0x58, 0xfa, 0x39, 0xc3, 0x7d, 0xff, 0xa2, 0x2d, + 0x9b, 0x87, 0x16, 0xdf, 0xdb, 0x6f, 0x6f, 0xcc, 0x67, 0x75, 0x58, 0x98, 0x12, 0x83, 0x93, 0xea, + 0xc5, 0x72, 0x6b, 0x0f, 0x4a, 0x8b, 0x15, 0x74, 0x17, 0x20, 0xb2, 0x25, 0xda, 0x5f, 0x14, 0x4d, + 0x75, 0x3e, 0xab, 0x97, 0x5c, 0xe1, 0xf6, 0xba, 0xb8, 0xe4, 0x00, 0xbd, 0x10, 0x21, 0xf0, 0x48, + 0x18, 0x0a, 0x53, 0x42, 0x25, 0x6c, 0xc6, 0x8d, 0xdf, 0xae, 0x83, 0xf7, 0x8c, 0xc8, 0xe1, 0x55, + 0xb7, 0x19, 0xbd, 0xe7, 0x4a, 0xd1, 0xdd, 0x05, 0x90, 0x36, 0x95, 0xfa, 0x38, 0xde, 0xd9, 0x71, + 0x5c, 0x82, 0xf5, 0x71, 0x1c, 0xc0, 0x1e, 0x47, 0x8e, 0xb8, 0x32, 0xf5, 0xe5, 0x61, 0x33, 0x46, + 0xb7, 0xa1, 0x10, 0xf1, 0xd0, 0xd0, 0xf3, 0x86, 0x0e, 0xf3, 0x59, 0x3d, 0xaf, 0x5b, 0x4a, 0xaf, + 0x8b, 0xf3, 0x7a, 0xa9, 0x17, 0xea, 0x7b, 0x4b, 0xa2, 0x88, 0x2b, 0xa2, 0x9b, 0x92, 0x74, 0xf7, + 0x3f, 0xb5, 0xb0, 0x5a, 0x67, 0xb0, 0xe4, 0xde, 0x2e, 0x31, 0xd1, 0x21, 0xbc, 0x9d, 0xf8, 0xbb, + 0x2c, 0x58, 0x7c, 0x1d, 0x41, 0xe4, 0x14, 0x96, 0x56, 0x96, 0xfa, 0x64, 0x69, 0x7d, 0x9f, 0x34, + 0x11, 0x4c, 0xeb, 0x93, 0x6d, 0xa8, 0x86, 0x54, 0x32, 0x41, 0x43, 0x73, 0x03, 0xa9, 0x0f, 0x3b, + 0x99, 0x3b, 0x1b, 0x6b, 0x9e, 0x1e, 0x27, 0x42, 0x71, 0xc5, 0x71, 0x8c, 0x85, 0x5a, 0x50, 0x74, + 0x75, 0x23, 0xfd, 0xb2, 0xa9, 0xdd, 0x4b, 0xf6, 0xc7, 0x05, 0xed, 0x5c, 0x07, 0xa9, 0xbc, 0x56, + 0x07, 0x79, 0x04, 0x30, 0xe2, 0x83, 0x7e, 0x28, 0xd8, 0x94, 0x0a, 0xbf, 0x6a, 0xb8, 0x5b, 0x69, + 0xdc, 0xae, 0x41, 0xe0, 0xd2, 0x88, 0x0f, 0xec, 0xb0, 0xf1, 0x43, 0x06, 0xde, 0x5a, 0x71, 0x0a, + 0x7d, 0x0c, 0x05, 0xe7, 0xd6, 0x45, 0x1f, 0x01, 0x8e, 0x87, 0x13, 0x2c, 0xda, 0x86, 0x92, 0xbe, + 0x23, 0x54, 0x4a, 0x6a, 0x6f, 0x7f, 0x09, 0x9f, 0x4d, 0x20, 0x1f, 0x0a, 0x64, 0xc4, 0x88, 0x5e, + 0xcb, 0x99, 0xb5, 0xc4, 0x6c, 0xfc, 0x94, 0x85, 0x82, 0x13, 0xbb, 0xea, 0x76, 0xee, 0xb6, 0x5d, + 0xb9, 0x59, 0x4f, 0xa0, 0x62, 0xc3, 0xe9, 0x4a, 0xc2, 0xfb, 0xdf, 0xa0, 0x96, 0x2d, 0xde, 0x96, + 0xc3, 0x13, 0xf0, 0x58, 0x4c, 0xc6, 0xae, 0x95, 0xa7, 0xee, 0xdc, 0xdb, 0x6f, 0xed, 0x7d, 0x1d, + 0xdb, 0xca, 0x2e, 0xce, 0x67, 0x75, 0x4f, 0x4f, 0x60, 0x43, 0x6b, 0xfc, 0x92, 0x83, 0x42, 0x67, + 0x34, 0x91, 0x8a, 0x8a, 0xab, 0x0e, 0x88, 0xdb, 0x76, 0x25, 0x20, 0x1d, 0x28, 0x08, 0xce, 0x55, + 0x3f, 0x20, 0x17, 0xc5, 0x02, 0x73, 0xae, 0x3a, 0xad, 0xf6, 0x86, 0x26, 0xea, 0x46, 0x62, 0x6d, + 0x9c, 0xd7, 0xd4, 0x0e, 0x41, 0xcf, 0x61, 0x33, 0x69, 0xbf, 0x47, 0x9c, 0x2b, 0xa9, 0x04, 0x89, + 0xfb, 0x43, 0x7a, 0xac, 0xdf, 0xbc, 0xdc, 0xba, 0x2f, 0x93, 0xdd, 0x28, 0x10, 0xc7, 0x26, 0x50, + 0x4f, 0xe9, 0x31, 0xbe, 0xe1, 0x04, 0xda, 0x09, 0xff, 0x29, 0x3d, 0x96, 0xe8, 0x33, 0xd8, 0xa6, + 0x0b, 0x98, 0x56, 0xec, 0x8f, 0xc8, 0x58, 0x3f, 0x2c, 0xfd, 0x60, 0xc4, 0x83, 0xa1, 0xe9, 0x6d, + 0x1e, 0xbe, 0x49, 0x97, 0xa5, 0xbe, 0xb4, 0x88, 0x8e, 0x06, 0xa0, 0x0f, 0xe0, 0x86, 0xa4, 0x81, + 0xa0, 0xea, 0x3f, 0xc4, 0x82, 0x21, 0x22, 0xbb, 0xb6, 0xcc, 0x68, 0xfc, 0x98, 0x85, 0xfc, 0x81, + 0x99, 0x7e, 0xa3, 0x29, 0x7a, 0x78, 0x2e, 0x45, 0xb5, 0xf4, 0xd7, 0x5b, 0xef, 0xba, 0x92, 0xa1, + 0x4d, 0xc8, 0x87, 0x6c, 0x40, 0xa5, 0xfd, 0xfe, 0x28, 0x61, 0x67, 0xa1, 0x06, 0x78, 0x92, 0xbd, + 0xa2, 0xa6, 0x16, 0xab, 0xf6, 0xa9, 0x74, 0x0a, 0xec, 0x15, 0xc5, 0x66, 0x0d, 0x6d, 0x41, 0x91, + 0x45, 0x8a, 0x8a, 0x88, 0x8c, 0x4c, 0xac, 0x8a, 0x78, 0x61, 0xa3, 0x5b, 0x50, 0x49, 0x62, 0xa2, + 0xff, 0x25, 0x5c, 0x48, 0xca, 0x6e, 0x4e, 0x7f, 0x8b, 0xb7, 0xb7, 0x4f, 0x4e, 0x6b, 0xd7, 0xfe, + 0x3c, 0xad, 0x5d, 0xfb, 0xe7, 0xb4, 0x96, 0xf9, 0x7e, 0x5e, 0xcb, 0x9c, 0xcc, 0x6b, 0x99, 0xdf, + 0xe7, 0xb5, 0xcc, 0x5f, 0xf3, 0x5a, 0xe6, 0x28, 0x6f, 0x7e, 0x31, 0x3e, 0xfa, 0x37, 0x00, 0x00, + 0xff, 0xff, 0x8c, 0xe4, 0xe3, 0xe8, 0xd2, 0x0c, 0x00, 0x00, } diff --git a/api/objects.proto b/api/objects.proto index f243ea9036..3d5ac0f25a 100644 --- a/api/objects.proto +++ b/api/objects.proto @@ -225,43 +225,27 @@ message Cluster { // and agents to unambiguously identify the older key to be deleted when // a new key is allocated on key rotation. uint64 encryption_key_lamport_clock = 6; + + // Logical clock used to timestamp every secret. It allows other managers + // and agents to unambiguously identify the newest secret to be used when + // requesting the latest version of a secret. + uint64 secret_lamport_clock = 7; } -// Secret represents a conceptual secret that should be passed to either a -// container a node. It can contain many versions of secret data, since -// conceptually secret credentials can be rotated. +// Secret represents a secret that should be passed to a container or a node, +// and is immutable. It wraps the `spec` provided by the user with useful +// information that is generated from the secret data in the `spec`, such as +// the digest and size of the secret data. message Secret { string id = 1 [(gogoproto.customname) = "ID"]; Meta meta = 2 [(gogoproto.nullable) = false]; - // A secret has multiple versions, and each version is represented by a - // `SecretValue` object and referenced by the `SecretValue`'s ID. This - // list is kept sorted by version creation date. - repeated SecretValue secret_values = 3; - - // Name of the secret, so that we can use it easily for lookups. This is - // just a copy of the data in `SecretValue.Spec.Annotations.Name`. - string name = 4; - - // Whether the secret is an internal secret (not set by a user) or not. - bool internal = 5; -} - -// SecretValue is represents a specific version of a secret, and is immutable; -// it wraps the `spec` provided by the user with useful information that is -// generated from the secret data in the `spec`, such as the digest and size -// of the secret data. -message SecretValue { - string id = 1 [(gogoproto.customname) = "ID"]; - - Timestamp created_at = 2 [(gogoproto.nullable) = false]; - // Spec contains the actual secret data, as well as any context around the // secret data that the user provides. The name on the annotation of the - // spec must match the name of the `Secret` object this `SecretValue` belongs + // spec must match the name of the `Secret` object this `SecretSpec` belongs // to. - SecretValueSpec spec = 3 [(gogoproto.nullable) = false]; + SecretSpec spec = 3 [(gogoproto.nullable) = false]; // Digest represents the cryptographic digest of the secret data, and follows // the form ":": for example "sha256:DEADBEEF...". It @@ -271,4 +255,10 @@ message SecretValue { // Size represents the size (number of bytes) of the secret data, and is // calculated from the data contained in `SecretValue.Spec.data`.. uint32 size = 5 [(gogoproto.customname) = "SecretSize"]; + + // Whether the secret is an internal secret (not set by a user) or not. + bool internal = 6; + + // Timestamp from the lamport clock to identify the relative age of the secret. + uint64 lamport_time = 7; } diff --git a/api/secrets.pb.go b/api/secrets.pb.go index ece680fdb1..805da51278 100644 --- a/api/secrets.pb.go +++ b/api/secrets.pb.go @@ -55,7 +55,7 @@ func (m *GetSecretResponse) Reset() { *m = GetSecretResponse{ func (*GetSecretResponse) ProtoMessage() {} func (*GetSecretResponse) Descriptor() ([]byte, []int) { return fileDescriptorSecrets, []int{1} } -// ListSecretRequest is the request to list all secrets in the secret store, +// ListSecretRequest is the request to list all non-internal secrets in the secret store, // or all secrets filtered by (id or id prefix or name or name prefix). type ListSecretsRequest struct { Filters *ListSecretsRequest_Filters `protobuf:"bytes,1,opt,name=filters" json:"filters,omitempty"` @@ -66,7 +66,7 @@ func (*ListSecretsRequest) ProtoMessage() {} func (*ListSecretsRequest) Descriptor() ([]byte, []int) { return fileDescriptorSecrets, []int{2} } type ListSecretsRequest_Filters struct { - SecretIDs []string `protobuf:"bytes,1,rep,name=secret_ids,json=secretIds" json:"secret_ids,omitempty"` + Ids []string `protobuf:"bytes,1,rep,name=ids" json:"ids,omitempty"` IDPrefixes []string `protobuf:"bytes,2,rep,name=id_prefixes,json=idPrefixes" json:"id_prefixes,omitempty"` Names []string `protobuf:"bytes,3,rep,name=names" json:"names,omitempty"` NamePrefixes []string `protobuf:"bytes,4,rep,name=name_prefixes,json=namePrefixes" json:"name_prefixes,omitempty"` @@ -93,7 +93,7 @@ func (*ListSecretsResponse) Descriptor() ([]byte, []int) { return fileDescriptor // CreateSecretRequest specifies a new secret (it will not update an existing // secret) to create. type CreateSecretRequest struct { - Spec *SecretValueSpec `protobuf:"bytes,1,opt,name=spec" json:"spec,omitempty"` + Spec *SecretSpec `protobuf:"bytes,1,opt,name=spec" json:"spec,omitempty"` } func (m *CreateSecretRequest) Reset() { *m = CreateSecretRequest{} } @@ -113,29 +113,6 @@ func (m *CreateSecretResponse) Reset() { *m = CreateSecretRes func (*CreateSecretResponse) ProtoMessage() {} func (*CreateSecretResponse) Descriptor() ([]byte, []int) { return fileDescriptorSecrets, []int{5} } -// UpdateSecretRequest specifies a new secret version to add to an existing secret -// of the same name. -type UpdateSecretRequest struct { - Spec *SecretValueSpec `protobuf:"bytes,1,opt,name=spec" json:"spec,omitempty"` -} - -func (m *UpdateSecretRequest) Reset() { *m = UpdateSecretRequest{} } -func (*UpdateSecretRequest) ProtoMessage() {} -func (*UpdateSecretRequest) Descriptor() ([]byte, []int) { return fileDescriptorSecrets, []int{6} } - -// UpdateSecretResponse contains the Secret corresponding to the name and type of -// the spec provided in `UpdateSecretRequest`, and it should be updated with an -// additional `SecretValue` object containing said spec. The -// `SecretValue.Spec.Data` field in each `SecretValue` object in the `Secret` -// object should be nil instead of actually containing the secret bytes. -type UpdateSecretResponse struct { - Secret *Secret `protobuf:"bytes,1,opt,name=secret" json:"secret,omitempty"` -} - -func (m *UpdateSecretResponse) Reset() { *m = UpdateSecretResponse{} } -func (*UpdateSecretResponse) ProtoMessage() {} -func (*UpdateSecretResponse) Descriptor() ([]byte, []int) { return fileDescriptorSecrets, []int{7} } - // RemoveSecretRequest contains the ID of the secret that should be removed. This // removes all versions of the secret. type RemoveSecretRequest struct { @@ -144,7 +121,7 @@ type RemoveSecretRequest struct { func (m *RemoveSecretRequest) Reset() { *m = RemoveSecretRequest{} } func (*RemoveSecretRequest) ProtoMessage() {} -func (*RemoveSecretRequest) Descriptor() ([]byte, []int) { return fileDescriptorSecrets, []int{8} } +func (*RemoveSecretRequest) Descriptor() ([]byte, []int) { return fileDescriptorSecrets, []int{6} } // RemoveSecretResponse is an empty object indicating the successful removal of // a secret. @@ -153,7 +130,7 @@ type RemoveSecretResponse struct { func (m *RemoveSecretResponse) Reset() { *m = RemoveSecretResponse{} } func (*RemoveSecretResponse) ProtoMessage() {} -func (*RemoveSecretResponse) Descriptor() ([]byte, []int) { return fileDescriptorSecrets, []int{9} } +func (*RemoveSecretResponse) Descriptor() ([]byte, []int) { return fileDescriptorSecrets, []int{7} } func init() { proto.RegisterType((*GetSecretRequest)(nil), "docker.swarmkit.v1.GetSecretRequest") @@ -163,8 +140,6 @@ func init() { proto.RegisterType((*ListSecretsResponse)(nil), "docker.swarmkit.v1.ListSecretsResponse") proto.RegisterType((*CreateSecretRequest)(nil), "docker.swarmkit.v1.CreateSecretRequest") proto.RegisterType((*CreateSecretResponse)(nil), "docker.swarmkit.v1.CreateSecretResponse") - proto.RegisterType((*UpdateSecretRequest)(nil), "docker.swarmkit.v1.UpdateSecretRequest") - proto.RegisterType((*UpdateSecretResponse)(nil), "docker.swarmkit.v1.UpdateSecretResponse") proto.RegisterType((*RemoveSecretRequest)(nil), "docker.swarmkit.v1.RemoveSecretRequest") proto.RegisterType((*RemoveSecretResponse)(nil), "docker.swarmkit.v1.RemoveSecretResponse") } @@ -205,14 +180,6 @@ func (p *authenticatedWrapperSecretsServer) CreateSecret(ctx context.Context, r return p.local.CreateSecret(ctx, r) } -func (p *authenticatedWrapperSecretsServer) UpdateSecret(ctx context.Context, r *UpdateSecretRequest) (*UpdateSecretResponse, error) { - - if err := p.authorize(ctx, []string{"swarm-manager"}); err != nil { - return nil, err - } - return p.local.UpdateSecret(ctx, r) -} - func (p *authenticatedWrapperSecretsServer) RemoveSecret(ctx context.Context, r *RemoveSecretRequest) (*RemoveSecretResponse, error) { if err := p.authorize(ctx, []string{"swarm-manager"}); err != nil { @@ -264,10 +231,10 @@ func (m *ListSecretsRequest_Filters) Copy() *ListSecretsRequest_Filters { o := &ListSecretsRequest_Filters{} - if m.SecretIDs != nil { - o.SecretIDs = make([]string, 0, len(m.SecretIDs)) - for _, v := range m.SecretIDs { - o.SecretIDs = append(o.SecretIDs, v) + if m.Ids != nil { + o.Ids = make([]string, 0, len(m.Ids)) + for _, v := range m.Ids { + o.Ids = append(o.Ids, v) } } @@ -336,30 +303,6 @@ func (m *CreateSecretResponse) Copy() *CreateSecretResponse { return o } -func (m *UpdateSecretRequest) Copy() *UpdateSecretRequest { - if m == nil { - return nil - } - - o := &UpdateSecretRequest{ - Spec: m.Spec.Copy(), - } - - return o -} - -func (m *UpdateSecretResponse) Copy() *UpdateSecretResponse { - if m == nil { - return nil - } - - o := &UpdateSecretResponse{ - Secret: m.Secret.Copy(), - } - - return o -} - func (m *RemoveSecretRequest) Copy() *RemoveSecretRequest { if m == nil { return nil @@ -422,7 +365,7 @@ func (this *ListSecretsRequest_Filters) GoString() string { } s := make([]string, 0, 8) s = append(s, "&api.ListSecretsRequest_Filters{") - s = append(s, "SecretIDs: "+fmt.Sprintf("%#v", this.SecretIDs)+",\n") + s = append(s, "Ids: "+fmt.Sprintf("%#v", this.Ids)+",\n") s = append(s, "IDPrefixes: "+fmt.Sprintf("%#v", this.IDPrefixes)+",\n") s = append(s, "Names: "+fmt.Sprintf("%#v", this.Names)+",\n") s = append(s, "NamePrefixes: "+fmt.Sprintf("%#v", this.NamePrefixes)+",\n") @@ -465,30 +408,6 @@ func (this *CreateSecretResponse) GoString() string { s = append(s, "}") return strings.Join(s, "") } -func (this *UpdateSecretRequest) GoString() string { - if this == nil { - return "nil" - } - s := make([]string, 0, 5) - s = append(s, "&api.UpdateSecretRequest{") - if this.Spec != nil { - s = append(s, "Spec: "+fmt.Sprintf("%#v", this.Spec)+",\n") - } - s = append(s, "}") - return strings.Join(s, "") -} -func (this *UpdateSecretResponse) GoString() string { - if this == nil { - return "nil" - } - s := make([]string, 0, 5) - s = append(s, "&api.UpdateSecretResponse{") - if this.Secret != nil { - s = append(s, "Secret: "+fmt.Sprintf("%#v", this.Secret)+",\n") - } - s = append(s, "}") - return strings.Join(s, "") -} func (this *RemoveSecretRequest) GoString() string { if this == nil { return "nil" @@ -559,26 +478,14 @@ type SecretsClient interface { // - Returns an error if listing fails. ListSecrets(ctx context.Context, in *ListSecretsRequest, opts ...grpc.CallOption) (*ListSecretsResponse, error) // CreateSecret creates and return a `CreateSecretResponse` with a `Secret` based - // on the provided `CreateSecretRequest.SecretValueSpec`. - // - Returns `InvalidArgument` if the `CreateSecretRequest.SecretValueSpec` is malformed, + // on the provided `CreateSecretRequest.SecretSpec`. + // - Returns `InvalidArgument` if the `CreateSecretRequest.SecretSpec` is malformed, // or if the secret data is too long or contains invalid characters. - // - Returns `AlreadyExists` if the `CreateSecretRequest.SecretValueSpec.Annotation.Name` - // conflicts with an existing secret's name. // - Returns `ResourceExhausted` if there are already the maximum number of allowed // secrets in the system. // - Returns an error if the creation fails. CreateSecret(ctx context.Context, in *CreateSecretRequest, opts ...grpc.CallOption) (*CreateSecretResponse, error) - // UpdateSecret adds the `UpdateSecretRequest.SecretValueSpec` to a `Secret` - // as the latest version, and returns the updated `Secret` in the `UpdateSecretResponse`. - // If there are already the maximum number of allowed secret versions in the `Secret` - // already, `UpdateSecret` will add the latest version but also remove the oldest version. - // - Returns `NotFound` if no secret with name - // `UpdateSecretRequest.SecretValueSpec.Annotations.Name` is found. - // - Returns `InvalidArgument` if the `UpdateSecretRequest.SecretValueSpec` is malformed, - // if the secret data is too long or contains invalid characters. - // - Returns an error if the update fails. - UpdateSecret(ctx context.Context, in *UpdateSecretRequest, opts ...grpc.CallOption) (*UpdateSecretResponse, error) - // RemoveSecret removes all versions referenced by `RemoveSecretRequest.ID`. + // RemoveSecret remove the secret referenced by `RemoveSecretRequest.ID`. // - Returns `InvalidArgument` if `RemoveSecretRequest.ID` is empty. // - Returns `NotFound` if the a secret named `RemoveSecretRequest.ID` is not found. // - Returns an error if the deletion fails. @@ -620,15 +527,6 @@ func (c *secretsClient) CreateSecret(ctx context.Context, in *CreateSecretReques return out, nil } -func (c *secretsClient) UpdateSecret(ctx context.Context, in *UpdateSecretRequest, opts ...grpc.CallOption) (*UpdateSecretResponse, error) { - out := new(UpdateSecretResponse) - err := grpc.Invoke(ctx, "/docker.swarmkit.v1.Secrets/UpdateSecret", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - func (c *secretsClient) RemoveSecret(ctx context.Context, in *RemoveSecretRequest, opts ...grpc.CallOption) (*RemoveSecretResponse, error) { out := new(RemoveSecretResponse) err := grpc.Invoke(ctx, "/docker.swarmkit.v1.Secrets/RemoveSecret", in, out, c.cc, opts...) @@ -654,26 +552,14 @@ type SecretsServer interface { // - Returns an error if listing fails. ListSecrets(context.Context, *ListSecretsRequest) (*ListSecretsResponse, error) // CreateSecret creates and return a `CreateSecretResponse` with a `Secret` based - // on the provided `CreateSecretRequest.SecretValueSpec`. - // - Returns `InvalidArgument` if the `CreateSecretRequest.SecretValueSpec` is malformed, + // on the provided `CreateSecretRequest.SecretSpec`. + // - Returns `InvalidArgument` if the `CreateSecretRequest.SecretSpec` is malformed, // or if the secret data is too long or contains invalid characters. - // - Returns `AlreadyExists` if the `CreateSecretRequest.SecretValueSpec.Annotation.Name` - // conflicts with an existing secret's name. // - Returns `ResourceExhausted` if there are already the maximum number of allowed // secrets in the system. // - Returns an error if the creation fails. CreateSecret(context.Context, *CreateSecretRequest) (*CreateSecretResponse, error) - // UpdateSecret adds the `UpdateSecretRequest.SecretValueSpec` to a `Secret` - // as the latest version, and returns the updated `Secret` in the `UpdateSecretResponse`. - // If there are already the maximum number of allowed secret versions in the `Secret` - // already, `UpdateSecret` will add the latest version but also remove the oldest version. - // - Returns `NotFound` if no secret with name - // `UpdateSecretRequest.SecretValueSpec.Annotations.Name` is found. - // - Returns `InvalidArgument` if the `UpdateSecretRequest.SecretValueSpec` is malformed, - // if the secret data is too long or contains invalid characters. - // - Returns an error if the update fails. - UpdateSecret(context.Context, *UpdateSecretRequest) (*UpdateSecretResponse, error) - // RemoveSecret removes all versions referenced by `RemoveSecretRequest.ID`. + // RemoveSecret remove the secret referenced by `RemoveSecretRequest.ID`. // - Returns `InvalidArgument` if `RemoveSecretRequest.ID` is empty. // - Returns `NotFound` if the a secret named `RemoveSecretRequest.ID` is not found. // - Returns an error if the deletion fails. @@ -738,24 +624,6 @@ func _Secrets_CreateSecret_Handler(srv interface{}, ctx context.Context, dec fun return interceptor(ctx, in, info, handler) } -func _Secrets_UpdateSecret_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateSecretRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SecretsServer).UpdateSecret(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/docker.swarmkit.v1.Secrets/UpdateSecret", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SecretsServer).UpdateSecret(ctx, req.(*UpdateSecretRequest)) - } - return interceptor(ctx, in, info, handler) -} - func _Secrets_RemoveSecret_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(RemoveSecretRequest) if err := dec(in); err != nil { @@ -790,10 +658,6 @@ var _Secrets_serviceDesc = grpc.ServiceDesc{ MethodName: "CreateSecret", Handler: _Secrets_CreateSecret_Handler, }, - { - MethodName: "UpdateSecret", - Handler: _Secrets_UpdateSecret_Handler, - }, { MethodName: "RemoveSecret", Handler: _Secrets_RemoveSecret_Handler, @@ -898,8 +762,8 @@ func (m *ListSecretsRequest_Filters) MarshalTo(data []byte) (int, error) { _ = i var l int _ = l - if len(m.SecretIDs) > 0 { - for _, s := range m.SecretIDs { + if len(m.Ids) > 0 { + for _, s := range m.Ids { data[i] = 0xa i++ l = len(s) @@ -1047,62 +911,6 @@ func (m *CreateSecretResponse) MarshalTo(data []byte) (int, error) { return i, nil } -func (m *UpdateSecretRequest) Marshal() (data []byte, err error) { - size := m.Size() - data = make([]byte, size) - n, err := m.MarshalTo(data) - if err != nil { - return nil, err - } - return data[:n], nil -} - -func (m *UpdateSecretRequest) MarshalTo(data []byte) (int, error) { - var i int - _ = i - var l int - _ = l - if m.Spec != nil { - data[i] = 0xa - i++ - i = encodeVarintSecrets(data, i, uint64(m.Spec.Size())) - n5, err := m.Spec.MarshalTo(data[i:]) - if err != nil { - return 0, err - } - i += n5 - } - return i, nil -} - -func (m *UpdateSecretResponse) Marshal() (data []byte, err error) { - size := m.Size() - data = make([]byte, size) - n, err := m.MarshalTo(data) - if err != nil { - return nil, err - } - return data[:n], nil -} - -func (m *UpdateSecretResponse) MarshalTo(data []byte) (int, error) { - var i int - _ = i - var l int - _ = l - if m.Secret != nil { - data[i] = 0xa - i++ - i = encodeVarintSecrets(data, i, uint64(m.Secret.Size())) - n6, err := m.Secret.MarshalTo(data[i:]) - if err != nil { - return 0, err - } - i += n6 - } - return i, nil -} - func (m *RemoveSecretRequest) Marshal() (data []byte, err error) { size := m.Size() data = make([]byte, size) @@ -1332,37 +1140,6 @@ func (p *raftProxySecretsServer) CreateSecret(ctx context.Context, r *CreateSecr return resp, err } -func (p *raftProxySecretsServer) UpdateSecret(ctx context.Context, r *UpdateSecretRequest) (*UpdateSecretResponse, error) { - - conn, err := p.connSelector.LeaderConn(ctx) - if err != nil { - if err == raftselector.ErrIsLeader { - return p.local.UpdateSecret(ctx, r) - } - return nil, err - } - modCtx, err := p.runCtxMods(ctx) - if err != nil { - return nil, err - } - - resp, err := NewSecretsClient(conn).UpdateSecret(modCtx, r) - if err != nil { - if !strings.Contains(err.Error(), "is closing") && !strings.Contains(err.Error(), "the connection is unavailable") && !strings.Contains(err.Error(), "connection error") { - return resp, err - } - conn, err := p.pollNewLeaderConn(ctx) - if err != nil { - if err == raftselector.ErrIsLeader { - return p.local.UpdateSecret(ctx, r) - } - return nil, err - } - return NewSecretsClient(conn).UpdateSecret(modCtx, r) - } - return resp, err -} - func (p *raftProxySecretsServer) RemoveSecret(ctx context.Context, r *RemoveSecretRequest) (*RemoveSecretResponse, error) { conn, err := p.connSelector.LeaderConn(ctx) @@ -1427,8 +1204,8 @@ func (m *ListSecretsRequest) Size() (n int) { func (m *ListSecretsRequest_Filters) Size() (n int) { var l int _ = l - if len(m.SecretIDs) > 0 { - for _, s := range m.SecretIDs { + if len(m.Ids) > 0 { + for _, s := range m.Ids { l = len(s) n += 1 + l + sovSecrets(uint64(l)) } @@ -1486,26 +1263,6 @@ func (m *CreateSecretResponse) Size() (n int) { return n } -func (m *UpdateSecretRequest) Size() (n int) { - var l int - _ = l - if m.Spec != nil { - l = m.Spec.Size() - n += 1 + l + sovSecrets(uint64(l)) - } - return n -} - -func (m *UpdateSecretResponse) Size() (n int) { - var l int - _ = l - if m.Secret != nil { - l = m.Secret.Size() - n += 1 + l + sovSecrets(uint64(l)) - } - return n -} - func (m *RemoveSecretRequest) Size() (n int) { var l int _ = l @@ -1570,7 +1327,7 @@ func (this *ListSecretsRequest_Filters) String() string { return "nil" } s := strings.Join([]string{`&ListSecretsRequest_Filters{`, - `SecretIDs:` + fmt.Sprintf("%v", this.SecretIDs) + `,`, + `Ids:` + fmt.Sprintf("%v", this.Ids) + `,`, `IDPrefixes:` + fmt.Sprintf("%v", this.IDPrefixes) + `,`, `Names:` + fmt.Sprintf("%v", this.Names) + `,`, `NamePrefixes:` + fmt.Sprintf("%v", this.NamePrefixes) + `,`, @@ -1593,7 +1350,7 @@ func (this *CreateSecretRequest) String() string { return "nil" } s := strings.Join([]string{`&CreateSecretRequest{`, - `Spec:` + strings.Replace(fmt.Sprintf("%v", this.Spec), "SecretValueSpec", "SecretValueSpec", 1) + `,`, + `Spec:` + strings.Replace(fmt.Sprintf("%v", this.Spec), "SecretSpec", "SecretSpec", 1) + `,`, `}`, }, "") return s @@ -1608,26 +1365,6 @@ func (this *CreateSecretResponse) String() string { }, "") return s } -func (this *UpdateSecretRequest) String() string { - if this == nil { - return "nil" - } - s := strings.Join([]string{`&UpdateSecretRequest{`, - `Spec:` + strings.Replace(fmt.Sprintf("%v", this.Spec), "SecretValueSpec", "SecretValueSpec", 1) + `,`, - `}`, - }, "") - return s -} -func (this *UpdateSecretResponse) String() string { - if this == nil { - return "nil" - } - s := strings.Join([]string{`&UpdateSecretResponse{`, - `Secret:` + strings.Replace(fmt.Sprintf("%v", this.Secret), "Secret", "Secret", 1) + `,`, - `}`, - }, "") - return s -} func (this *RemoveSecretRequest) String() string { if this == nil { return "nil" @@ -1931,7 +1668,7 @@ func (m *ListSecretsRequest_Filters) Unmarshal(data []byte) error { switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SecretIDs", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Ids", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -1956,7 +1693,7 @@ func (m *ListSecretsRequest_Filters) Unmarshal(data []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.SecretIDs = append(m.SecretIDs, string(data[iNdEx:postIndex])) + m.Ids = append(m.Ids, string(data[iNdEx:postIndex])) iNdEx = postIndex case 2: if wireType != 2 { @@ -2203,7 +1940,7 @@ func (m *CreateSecretRequest) Unmarshal(data []byte) error { return io.ErrUnexpectedEOF } if m.Spec == nil { - m.Spec = &SecretValueSpec{} + m.Spec = &SecretSpec{} } if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { return err @@ -2313,172 +2050,6 @@ func (m *CreateSecretResponse) Unmarshal(data []byte) error { } return nil } -func (m *UpdateSecretRequest) Unmarshal(data []byte) error { - l := len(data) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSecrets - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: UpdateSecretRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: UpdateSecretRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSecrets - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - msglen |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthSecrets - } - postIndex := iNdEx + msglen - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Spec == nil { - m.Spec = &SecretValueSpec{} - } - if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipSecrets(data[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthSecrets - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *UpdateSecretResponse) Unmarshal(data []byte) error { - l := len(data) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSecrets - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: UpdateSecretResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: UpdateSecretResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Secret", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSecrets - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - msglen |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthSecrets - } - postIndex := iNdEx + msglen - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Secret == nil { - m.Secret = &Secret{} - } - if err := m.Secret.Unmarshal(data[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipSecrets(data[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthSecrets - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} func (m *RemoveSecretRequest) Unmarshal(data []byte) error { l := len(data) iNdEx := 0 @@ -2716,40 +2287,37 @@ var ( func init() { proto.RegisterFile("secrets.proto", fileDescriptorSecrets) } var fileDescriptorSecrets = []byte{ - // 552 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x54, 0xcd, 0x6e, 0xd3, 0x40, - 0x10, 0xae, 0xd3, 0xd0, 0xd4, 0x93, 0x84, 0x9f, 0x75, 0x40, 0x91, 0x85, 0x1c, 0xe4, 0xf2, 0x13, - 0x24, 0x70, 0x44, 0x40, 0xe2, 0x84, 0x84, 0x42, 0x45, 0x09, 0xa0, 0x0a, 0xb9, 0x82, 0x6b, 0xe5, - 0xda, 0xd3, 0xc8, 0x34, 0x89, 0x8d, 0xd7, 0x29, 0x3d, 0x72, 0xe0, 0x21, 0xb8, 0x73, 0xe7, 0x39, - 0x2a, 0x4e, 0x1c, 0x39, 0x05, 0xe2, 0x07, 0x40, 0x3c, 0x02, 0xf2, 0xee, 0xba, 0xd8, 0x74, 0x9b, - 0x20, 0xca, 0x29, 0x9b, 0xd9, 0xef, 0x67, 0x76, 0xf7, 0x1b, 0x43, 0x9d, 0xa2, 0x1b, 0x61, 0x4c, - 0xad, 0x30, 0x0a, 0xe2, 0x80, 0x10, 0x2f, 0x70, 0xf7, 0x30, 0xb2, 0xe8, 0x5b, 0x27, 0x1a, 0xed, - 0xf9, 0xb1, 0xb5, 0x7f, 0x47, 0xaf, 0xd2, 0x10, 0x5d, 0x01, 0xd0, 0xeb, 0xc1, 0xce, 0x6b, 0x74, - 0x33, 0xbc, 0xae, 0x85, 0xc3, 0xc9, 0xc0, 0x1f, 0x77, 0xf8, 0x8f, 0x28, 0x36, 0x06, 0xc1, 0x20, - 0x60, 0xcb, 0x4e, 0xba, 0xe2, 0x55, 0xf3, 0x01, 0x9c, 0xdf, 0xc0, 0x78, 0x8b, 0xd9, 0xd9, 0xf8, - 0x66, 0x82, 0x34, 0x26, 0x37, 0x41, 0xe5, 0xfe, 0xdb, 0xbe, 0xd7, 0x54, 0xae, 0x28, 0x6d, 0xb5, - 0x57, 0x4b, 0xa6, 0xad, 0x55, 0x8e, 0xea, 0xaf, 0xdb, 0xab, 0x7c, 0xbb, 0xef, 0x99, 0x1b, 0x70, - 0x21, 0x47, 0xa7, 0x61, 0x30, 0xa6, 0x48, 0xba, 0xb0, 0xc2, 0x01, 0x8c, 0x5c, 0xed, 0xea, 0xd6, - 0xf1, 0xfe, 0x2d, 0xc1, 0x11, 0x48, 0xf3, 0x7d, 0x09, 0xc8, 0x73, 0x9f, 0x0a, 0x29, 0x9a, 0xb5, - 0xf2, 0x04, 0x2a, 0xbb, 0xfe, 0x30, 0xc6, 0x88, 0x0a, 0x2d, 0x4b, 0xa6, 0x75, 0x9c, 0x68, 0x3d, - 0xe6, 0x2c, 0x3b, 0xa3, 0xeb, 0x1f, 0x15, 0xa8, 0x88, 0x22, 0xb9, 0x05, 0x70, 0x74, 0xc0, 0x54, - 0x78, 0xb9, 0xad, 0xf6, 0xea, 0xc9, 0xb4, 0xa5, 0x66, 0x27, 0xa4, 0xb6, 0x9a, 0x1d, 0x91, 0x92, - 0x0e, 0x54, 0x7d, 0x6f, 0x3b, 0x8c, 0x70, 0xd7, 0x3f, 0x40, 0xda, 0x2c, 0x31, 0xf8, 0xd9, 0x64, - 0xda, 0x82, 0xfe, 0xfa, 0x0b, 0x51, 0xb5, 0xc1, 0xf7, 0xb2, 0x35, 0x69, 0xc0, 0x99, 0xb1, 0x33, - 0x42, 0xda, 0x5c, 0x4e, 0xa1, 0x36, 0xff, 0x43, 0xd6, 0xa0, 0x9e, 0x2e, 0x7e, 0x0b, 0x95, 0xd9, - 0x6e, 0x2d, 0x2d, 0x66, 0x54, 0xf3, 0x19, 0x68, 0x85, 0xc3, 0x88, 0x1b, 0xbd, 0x07, 0x15, 0x91, - 0x08, 0xd6, 0xed, 0xfc, 0x2b, 0xcd, 0xa0, 0xe6, 0x26, 0x68, 0x8f, 0x22, 0x74, 0x62, 0x2c, 0x3e, - 0xef, 0x7d, 0x28, 0xa7, 0xd9, 0x11, 0x17, 0xba, 0x76, 0xb2, 0xd2, 0x2b, 0x67, 0x38, 0xc1, 0xad, - 0x10, 0x5d, 0x9b, 0x11, 0xcc, 0xa7, 0xd0, 0x28, 0xea, 0x9d, 0xe2, 0xbd, 0x37, 0x41, 0x7b, 0x19, - 0x7a, 0xff, 0xb5, 0xb7, 0xa2, 0xde, 0x29, 0x7a, 0x7b, 0x08, 0x9a, 0x8d, 0xa3, 0x60, 0x1f, 0xff, - 0x79, 0x2c, 0x2e, 0x41, 0xa3, 0xa8, 0xc0, 0xbb, 0xe9, 0x7e, 0x2b, 0x43, 0x45, 0xbc, 0x2d, 0x09, - 0x40, 0x3d, 0x1a, 0x1d, 0x72, 0x55, 0xd6, 0xd6, 0x9f, 0x83, 0xa9, 0x5f, 0x5b, 0x80, 0xe2, 0x2e, - 0xe6, 0xc5, 0xcf, 0x9f, 0x7e, 0x7c, 0x28, 0x9d, 0x83, 0x3a, 0x83, 0xdd, 0x1e, 0x39, 0x63, 0x67, - 0x80, 0x11, 0x99, 0x40, 0x35, 0x97, 0x2d, 0x72, 0xfd, 0xef, 0x26, 0x49, 0xbf, 0xb1, 0x10, 0x37, - 0xdf, 0xf6, 0x00, 0x6a, 0xf9, 0xd4, 0x10, 0xa9, 0x9e, 0x24, 0xa7, 0x7a, 0x7b, 0x31, 0x70, 0xa1, - 0x73, 0x3e, 0x13, 0x72, 0x67, 0x49, 0x0a, 0xe5, 0xce, 0xb2, 0x78, 0xcd, 0x71, 0xce, 0xbf, 0xbf, - 0xdc, 0x59, 0x92, 0x31, 0xb9, 0xb3, 0x2c, 0x4a, 0x27, 0x38, 0xf7, 0x2e, 0x1f, 0xce, 0x8c, 0xa5, - 0xaf, 0x33, 0x63, 0xe9, 0xe7, 0xcc, 0x50, 0xde, 0x25, 0x86, 0x72, 0x98, 0x18, 0xca, 0x97, 0xc4, - 0x50, 0xbe, 0x27, 0x86, 0xb2, 0xb3, 0xc2, 0x3e, 0xfa, 0x77, 0x7f, 0x05, 0x00, 0x00, 0xff, 0xff, - 0x41, 0x45, 0x54, 0xea, 0x60, 0x06, 0x00, 0x00, + // 508 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xa4, 0x54, 0xcd, 0x6e, 0xd3, 0x40, + 0x10, 0xee, 0x36, 0xa5, 0x69, 0x26, 0x09, 0x94, 0x4d, 0x40, 0x91, 0x85, 0x5c, 0x64, 0xfe, 0xc2, + 0x01, 0x47, 0x04, 0xae, 0x48, 0x28, 0x54, 0x94, 0x00, 0x07, 0xe4, 0x3e, 0x40, 0xe5, 0xda, 0xd3, + 0x68, 0x69, 0x93, 0x35, 0xbb, 0x4e, 0xe9, 0x91, 0x1b, 0xaf, 0xc0, 0x53, 0xf0, 0x1c, 0x15, 0x27, + 0x8e, 0x9c, 0x2a, 0x62, 0x09, 0x89, 0x13, 0xe2, 0x11, 0x90, 0x77, 0xd7, 0x90, 0xd0, 0x6d, 0x82, + 0xe8, 0x29, 0x93, 0xd9, 0xef, 0x67, 0x34, 0xdf, 0xc8, 0x50, 0x97, 0x18, 0x09, 0x4c, 0xa5, 0x9f, + 0x08, 0x9e, 0x72, 0x4a, 0x63, 0x1e, 0xed, 0xa3, 0xf0, 0xe5, 0xdb, 0x50, 0x0c, 0xf7, 0x59, 0xea, + 0x1f, 0xde, 0x77, 0xaa, 0x32, 0xc1, 0xc8, 0x00, 0x9c, 0x3a, 0xdf, 0x7d, 0x8d, 0x51, 0x81, 0x77, + 0x1a, 0xc9, 0xc1, 0x78, 0xc0, 0x46, 0x1d, 0xfd, 0x63, 0x9a, 0xcd, 0x01, 0x1f, 0x70, 0x55, 0x76, + 0xf2, 0x4a, 0x77, 0xbd, 0x47, 0xb0, 0xbe, 0x85, 0xe9, 0xb6, 0xb2, 0x0b, 0xf0, 0xcd, 0x18, 0x65, + 0x4a, 0xef, 0x42, 0x45, 0xfb, 0xef, 0xb0, 0xb8, 0x45, 0xae, 0x93, 0x76, 0xa5, 0x57, 0xcb, 0x4e, + 0x36, 0xd6, 0x34, 0xaa, 0xbf, 0x19, 0xac, 0xe9, 0xe7, 0x7e, 0xec, 0x6d, 0xc1, 0xe5, 0x29, 0xba, + 0x4c, 0xf8, 0x48, 0x22, 0xed, 0xc2, 0xaa, 0x06, 0x28, 0x72, 0xb5, 0xeb, 0xf8, 0xa7, 0xe7, 0xf7, + 0x0d, 0xc7, 0x20, 0xbd, 0xef, 0x04, 0xe8, 0x4b, 0x26, 0x8d, 0x94, 0x2c, 0x46, 0x79, 0x06, 0xe5, + 0x3d, 0x76, 0x90, 0xa2, 0x90, 0x46, 0xcb, 0xb7, 0x69, 0x9d, 0x26, 0xfa, 0x4f, 0x35, 0x2b, 0x28, + 0xe8, 0xce, 0x7b, 0x02, 0x65, 0xd3, 0xa4, 0xeb, 0x50, 0x62, 0x71, 0xae, 0x58, 0x6a, 0x57, 0x82, + 0xbc, 0xa4, 0x1d, 0xa8, 0xb2, 0x78, 0x27, 0x11, 0xb8, 0xc7, 0x8e, 0x50, 0xb6, 0x96, 0xf3, 0x97, + 0xde, 0xc5, 0xec, 0x64, 0x03, 0xfa, 0x9b, 0xaf, 0x4c, 0x37, 0x00, 0x16, 0x17, 0x35, 0x6d, 0xc2, + 0x85, 0x51, 0x38, 0x44, 0xd9, 0x2a, 0x29, 0x11, 0xfd, 0x87, 0xde, 0x80, 0x7a, 0x5e, 0xfc, 0x11, + 0x5a, 0x51, 0xaf, 0xb5, 0xbc, 0x59, 0x50, 0xbd, 0x17, 0xd0, 0x98, 0x19, 0xd8, 0x6c, 0xed, 0x21, + 0x94, 0x4d, 0xea, 0x6a, 0xb0, 0xf9, 0x6b, 0x2b, 0xa0, 0x5e, 0x1f, 0x1a, 0x4f, 0x04, 0x86, 0x29, + 0xce, 0x46, 0xd8, 0x85, 0x95, 0xfc, 0x3e, 0xcc, 0xd2, 0xdc, 0xb3, 0x95, 0xb6, 0x13, 0x8c, 0x02, + 0x85, 0xf5, 0x9e, 0x43, 0x73, 0x56, 0xea, 0x1c, 0x71, 0x3e, 0x86, 0x46, 0x80, 0x43, 0x7e, 0x88, + 0xff, 0x7d, 0x59, 0x57, 0xa1, 0x39, 0xab, 0xa0, 0xa7, 0xe9, 0x7e, 0x2b, 0x41, 0xd9, 0xac, 0x8e, + 0x72, 0xa8, 0xfc, 0xbe, 0x3e, 0x7a, 0xd3, 0x36, 0xd6, 0xdf, 0xb7, 0xed, 0xdc, 0x5a, 0x80, 0xd2, + 0x2e, 0xde, 0x95, 0x4f, 0x1f, 0x7f, 0x7c, 0x58, 0xbe, 0x04, 0x75, 0x05, 0xbb, 0x37, 0x0c, 0x47, + 0xe1, 0x00, 0x05, 0x1d, 0x43, 0x75, 0x2a, 0x3a, 0x7a, 0xfb, 0xdf, 0x8e, 0xd1, 0xb9, 0xb3, 0x10, + 0x37, 0xdf, 0xf6, 0x08, 0x6a, 0xd3, 0xc9, 0x50, 0xab, 0x9e, 0xe5, 0x0c, 0x9c, 0xf6, 0x62, 0xe0, + 0x42, 0xe7, 0xe9, 0x14, 0xec, 0xce, 0x96, 0xa4, 0xed, 0xce, 0xb6, 0x40, 0xcf, 0x70, 0xee, 0x5d, + 0x3b, 0x9e, 0xb8, 0x4b, 0x5f, 0x26, 0xee, 0xd2, 0xcf, 0x89, 0x4b, 0xde, 0x65, 0x2e, 0x39, 0xce, + 0x5c, 0xf2, 0x39, 0x73, 0xc9, 0xd7, 0xcc, 0x25, 0xbb, 0xab, 0xea, 0xeb, 0xf5, 0xe0, 0x57, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xc1, 0x67, 0x9d, 0x75, 0x29, 0x05, 0x00, 0x00, } diff --git a/api/secrets.proto b/api/secrets.proto index f59619105b..79bd6251cf 100644 --- a/api/secrets.proto +++ b/api/secrets.proto @@ -27,11 +27,9 @@ service Secrets { option (docker.protobuf.plugin.tls_authorization) = { roles: "swarm-manager" }; } // CreateSecret creates and return a `CreateSecretResponse` with a `Secret` based - // on the provided `CreateSecretRequest.SecretValueSpec`. - // - Returns `InvalidArgument` if the `CreateSecretRequest.SecretValueSpec` is malformed, + // on the provided `CreateSecretRequest.SecretSpec`. + // - Returns `InvalidArgument` if the `CreateSecretRequest.SecretSpec` is malformed, // or if the secret data is too long or contains invalid characters. - // - Returns `AlreadyExists` if the `CreateSecretRequest.SecretValueSpec.Annotation.Name` - // conflicts with an existing secret's name. // - Returns `ResourceExhausted` if there are already the maximum number of allowed // secrets in the system. // - Returns an error if the creation fails. @@ -39,20 +37,7 @@ service Secrets { option (docker.protobuf.plugin.tls_authorization) = { roles: "swarm-manager" }; } - // UpdateSecret adds the `UpdateSecretRequest.SecretValueSpec` to a `Secret` - // as the latest version, and returns the updated `Secret` in the `UpdateSecretResponse`. - // If there are already the maximum number of allowed secret versions in the `Secret` - // already, `UpdateSecret` will add the latest version but also remove the oldest version. - // - Returns `NotFound` if no secret with name - // `UpdateSecretRequest.SecretValueSpec.Annotations.Name` is found. - // - Returns `InvalidArgument` if the `UpdateSecretRequest.SecretValueSpec` is malformed, - // if the secret data is too long or contains invalid characters. - // - Returns an error if the update fails. - rpc UpdateSecret(UpdateSecretRequest) returns (UpdateSecretResponse) { - option (docker.protobuf.plugin.tls_authorization) = { roles: "swarm-manager" }; - } - - // RemoveSecret removes all versions referenced by `RemoveSecretRequest.ID`. + // RemoveSecret remove the secret referenced by `RemoveSecretRequest.ID`. // - Returns `InvalidArgument` if `RemoveSecretRequest.ID` is empty. // - Returns `NotFound` if the a secret named `RemoveSecretRequest.ID` is not found. // - Returns an error if the deletion fails. @@ -74,11 +59,11 @@ message GetSecretResponse { Secret secret = 1; } -// ListSecretRequest is the request to list all secrets in the secret store, +// ListSecretRequest is the request to list all non-internal secrets in the secret store, // or all secrets filtered by (id or id prefix or name or name prefix). message ListSecretsRequest { message Filters { - repeated string secret_ids = 1 [(gogoproto.customname) = "SecretIDs"]; + repeated string ids = 1; repeated string id_prefixes = 2 [(gogoproto.customname) = "IDPrefixes"]; repeated string names = 3; repeated string name_prefixes = 4; @@ -98,7 +83,7 @@ message ListSecretsResponse { // CreateSecretRequest specifies a new secret (it will not update an existing // secret) to create. message CreateSecretRequest { - SecretValueSpec spec = 1; + SecretSpec spec = 1; } // CreateSecretResponse contains the newly created `Secret`` corresponding to the @@ -110,21 +95,6 @@ message CreateSecretResponse { Secret secret = 1; } -// UpdateSecretRequest specifies a new secret version to add to an existing secret -// of the same name. -message UpdateSecretRequest { - SecretValueSpec spec = 1; -} - -// UpdateSecretResponse contains the Secret corresponding to the name and type of -// the spec provided in `UpdateSecretRequest`, and it should be updated with an -// additional `SecretValue` object containing said spec. The -// `SecretValue.Spec.Data` field in each `SecretValue` object in the `Secret` -// object should be nil instead of actually containing the secret bytes. -message UpdateSecretResponse { - Secret secret = 1; -} - // RemoveSecretRequest contains the ID of the secret that should be removed. This // removes all versions of the secret. message RemoveSecretRequest { diff --git a/api/specs.pb.go b/api/specs.pb.go index 44a71234ce..dbcfeec6a0 100644 --- a/api/specs.pb.go +++ b/api/specs.pb.go @@ -562,8 +562,8 @@ func (m *ClusterSpec) Reset() { *m = ClusterSpec{} } func (*ClusterSpec) ProtoMessage() {} func (*ClusterSpec) Descriptor() ([]byte, []int) { return fileDescriptorSpecs, []int{9} } -// SecretValueSpec specifies a user-provided secret. -type SecretValueSpec struct { +// SecretSpec specifies a user-provided secret. +type SecretSpec struct { Annotations Annotations `protobuf:"bytes,1,opt,name=annotations" json:"annotations"` // Secret payload. Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` @@ -571,9 +571,9 @@ type SecretValueSpec struct { Expiry *docker_swarmkit_v1.Timestamp `protobuf:"bytes,3,opt,name=expiry" json:"expiry,omitempty"` } -func (m *SecretValueSpec) Reset() { *m = SecretValueSpec{} } -func (*SecretValueSpec) ProtoMessage() {} -func (*SecretValueSpec) Descriptor() ([]byte, []int) { return fileDescriptorSpecs, []int{10} } +func (m *SecretSpec) Reset() { *m = SecretSpec{} } +func (*SecretSpec) ProtoMessage() {} +func (*SecretSpec) Descriptor() ([]byte, []int) { return fileDescriptorSpecs, []int{10} } func init() { proto.RegisterType((*NodeSpec)(nil), "docker.swarmkit.v1.NodeSpec") @@ -587,7 +587,7 @@ func init() { proto.RegisterType((*EndpointSpec)(nil), "docker.swarmkit.v1.EndpointSpec") proto.RegisterType((*NetworkSpec)(nil), "docker.swarmkit.v1.NetworkSpec") proto.RegisterType((*ClusterSpec)(nil), "docker.swarmkit.v1.ClusterSpec") - proto.RegisterType((*SecretValueSpec)(nil), "docker.swarmkit.v1.SecretValueSpec") + proto.RegisterType((*SecretSpec)(nil), "docker.swarmkit.v1.SecretSpec") proto.RegisterEnum("docker.swarmkit.v1.NodeSpec_Membership", NodeSpec_Membership_name, NodeSpec_Membership_value) proto.RegisterEnum("docker.swarmkit.v1.NodeSpec_Availability", NodeSpec_Availability_name, NodeSpec_Availability_value) proto.RegisterEnum("docker.swarmkit.v1.EndpointSpec_ResolutionMode", EndpointSpec_ResolutionMode_name, EndpointSpec_ResolutionMode_value) @@ -848,12 +848,12 @@ func (m *ClusterSpec) Copy() *ClusterSpec { return o } -func (m *SecretValueSpec) Copy() *SecretValueSpec { +func (m *SecretSpec) Copy() *SecretSpec { if m == nil { return nil } - o := &SecretValueSpec{ + o := &SecretSpec{ Annotations: *m.Annotations.Copy(), Data: m.Data, Expiry: m.Expiry.Copy(), @@ -1086,12 +1086,12 @@ func (this *ClusterSpec) GoString() string { s = append(s, "}") return strings.Join(s, "") } -func (this *SecretValueSpec) GoString() string { +func (this *SecretSpec) GoString() string { if this == nil { return "nil" } s := make([]string, 0, 7) - s = append(s, "&api.SecretValueSpec{") + s = append(s, "&api.SecretSpec{") s = append(s, "Annotations: "+strings.Replace(this.Annotations.GoString(), `&`, ``, 1)+",\n") s = append(s, "Data: "+fmt.Sprintf("%#v", this.Data)+",\n") if this.Expiry != nil { @@ -1814,7 +1814,7 @@ func (m *ClusterSpec) MarshalTo(data []byte) (int, error) { return i, nil } -func (m *SecretValueSpec) Marshal() (data []byte, err error) { +func (m *SecretSpec) Marshal() (data []byte, err error) { size := m.Size() data = make([]byte, size) n, err := m.MarshalTo(data) @@ -1824,7 +1824,7 @@ func (m *SecretValueSpec) Marshal() (data []byte, err error) { return data[:n], nil } -func (m *SecretValueSpec) MarshalTo(data []byte) (int, error) { +func (m *SecretSpec) MarshalTo(data []byte) (int, error) { var i int _ = i var l int @@ -2162,7 +2162,7 @@ func (m *ClusterSpec) Size() (n int) { return n } -func (m *SecretValueSpec) Size() (n int) { +func (m *SecretSpec) Size() (n int) { var l int _ = l l = m.Annotations.Size() @@ -2387,11 +2387,11 @@ func (this *ClusterSpec) String() string { }, "") return s } -func (this *SecretValueSpec) String() string { +func (this *SecretSpec) String() string { if this == nil { return "nil" } - s := strings.Join([]string{`&SecretValueSpec{`, + s := strings.Join([]string{`&SecretSpec{`, `Annotations:` + strings.Replace(strings.Replace(this.Annotations.String(), "Annotations", "Annotations", 1), `&`, ``, 1) + `,`, `Data:` + fmt.Sprintf("%v", this.Data) + `,`, `Expiry:` + strings.Replace(fmt.Sprintf("%v", this.Expiry), "Timestamp", "docker_swarmkit_v1.Timestamp", 1) + `,`, @@ -4462,7 +4462,7 @@ func (m *ClusterSpec) Unmarshal(data []byte) error { } return nil } -func (m *SecretValueSpec) Unmarshal(data []byte) error { +func (m *SecretSpec) Unmarshal(data []byte) error { l := len(data) iNdEx := 0 for iNdEx < l { @@ -4485,10 +4485,10 @@ func (m *SecretValueSpec) Unmarshal(data []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: SecretValueSpec: wiretype end group for non-group") + return fmt.Errorf("proto: SecretSpec: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: SecretValueSpec: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: SecretSpec: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -4714,99 +4714,99 @@ var ( func init() { proto.RegisterFile("specs.proto", fileDescriptorSpecs) } var fileDescriptorSpecs = []byte{ - // 1495 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x57, 0x4f, 0x6f, 0xdb, 0xc8, - 0x15, 0x17, 0x6d, 0x5a, 0x96, 0x1e, 0xe5, 0x58, 0x19, 0xe4, 0x0f, 0xa3, 0xa4, 0xb2, 0xa2, 0xa4, - 0xa9, 0xd3, 0xa2, 0x76, 0xab, 0xb6, 0x69, 0xd2, 0x34, 0x68, 0xf5, 0xaf, 0x8e, 0xea, 0xda, 0x11, - 0xc6, 0x8e, 0x81, 0x9e, 0x84, 0x31, 0x39, 0x96, 0x09, 0x53, 0x24, 0x3b, 0x1c, 0x2a, 0xf5, 0xad, - 0xc7, 0xc0, 0x87, 0x7e, 0x03, 0x9f, 0x16, 0xfb, 0x11, 0xf6, 0x3b, 0xe4, 0xb8, 0xc7, 0x3d, 0x19, - 0x6b, 0xdf, 0x16, 0x8b, 0x05, 0x16, 0xd8, 0x2f, 0xb0, 0x98, 0xe1, 0x50, 0xa2, 0x36, 0x74, 0x12, - 0x60, 0x7d, 0x9b, 0x79, 0xf3, 0xfb, 0xbd, 0x79, 0x7c, 0xef, 0xa7, 0x37, 0x4f, 0x60, 0x84, 0x01, - 0xb5, 0xc2, 0xb5, 0x80, 0xf9, 0xdc, 0x47, 0xc8, 0xf6, 0xad, 0x23, 0xca, 0xd6, 0xc2, 0x37, 0x84, - 0x8d, 0x8e, 0x1c, 0xbe, 0x36, 0xfe, 0x7d, 0xc5, 0xe0, 0xc7, 0x01, 0x55, 0x80, 0xca, 0x8d, 0xa1, - 0x3f, 0xf4, 0xe5, 0x72, 0x5d, 0xac, 0x94, 0xf5, 0xb6, 0x1d, 0x31, 0xc2, 0x1d, 0xdf, 0x5b, 0x4f, - 0x16, 0xea, 0xe0, 0x0e, 0x77, 0x46, 0x34, 0xe4, 0x64, 0x14, 0xac, 0x4f, 0x56, 0xf1, 0x51, 0xfd, - 0xff, 0x3a, 0x14, 0xb6, 0x7d, 0x9b, 0xee, 0x04, 0xd4, 0x42, 0x1b, 0x60, 0x10, 0xcf, 0xf3, 0xb9, - 0xe4, 0x86, 0xa6, 0x56, 0xd3, 0x56, 0x8d, 0xc6, 0xca, 0xda, 0xfb, 0xd1, 0xac, 0x35, 0xa7, 0xb0, - 0x96, 0xfe, 0xee, 0x6c, 0x25, 0x87, 0xd3, 0x4c, 0xf4, 0x3b, 0xd0, 0x99, 0xef, 0x52, 0x73, 0xae, - 0xa6, 0xad, 0x5e, 0x6b, 0xdc, 0xcb, 0xf2, 0x20, 0x2e, 0xc5, 0xbe, 0x4b, 0xb1, 0x44, 0xa2, 0x0d, - 0x80, 0x11, 0x1d, 0xed, 0x53, 0x16, 0x1e, 0x3a, 0x81, 0x39, 0x2f, 0x79, 0xbf, 0xba, 0x8c, 0x27, - 0x82, 0x5d, 0xdb, 0x9a, 0xc0, 0x71, 0x8a, 0x8a, 0xb6, 0xa0, 0x44, 0xc6, 0xc4, 0x71, 0xc9, 0xbe, - 0xe3, 0x3a, 0xfc, 0xd8, 0xd4, 0xa5, 0xab, 0xc7, 0x1f, 0x74, 0xd5, 0x4c, 0x11, 0xf0, 0x0c, 0xbd, - 0x6e, 0x03, 0x4c, 0x2f, 0x42, 0x8f, 0x60, 0xb1, 0xdf, 0xdd, 0xee, 0xf4, 0xb6, 0x37, 0xca, 0xb9, - 0xca, 0x9d, 0x93, 0xd3, 0xda, 0x4d, 0xe1, 0x63, 0x0a, 0xe8, 0x53, 0xcf, 0x76, 0xbc, 0x21, 0x5a, - 0x85, 0x42, 0xb3, 0xdd, 0xee, 0xf6, 0x77, 0xbb, 0x9d, 0xb2, 0x56, 0xa9, 0x9c, 0x9c, 0xd6, 0x6e, - 0xcd, 0x02, 0x9b, 0x96, 0x45, 0x03, 0x4e, 0xed, 0x8a, 0xfe, 0xf6, 0xb3, 0x6a, 0xae, 0xfe, 0x56, - 0x83, 0x52, 0x3a, 0x08, 0xf4, 0x08, 0xf2, 0xcd, 0xf6, 0x6e, 0x6f, 0xaf, 0x5b, 0xce, 0x4d, 0xe9, - 0x69, 0x44, 0xd3, 0xe2, 0xce, 0x98, 0xa2, 0x87, 0xb0, 0xd0, 0x6f, 0xbe, 0xde, 0xe9, 0x96, 0xb5, - 0x69, 0x38, 0x69, 0x58, 0x9f, 0x44, 0xa1, 0x44, 0x75, 0x70, 0xb3, 0xb7, 0x5d, 0x9e, 0xcb, 0x46, - 0x75, 0x18, 0x71, 0x3c, 0x15, 0xca, 0xf9, 0x3c, 0x18, 0x3b, 0x94, 0x8d, 0x1d, 0xeb, 0x8a, 0x35, - 0xf1, 0x04, 0x74, 0x4e, 0xc2, 0x23, 0xa9, 0x09, 0x23, 0x5b, 0x13, 0xbb, 0x24, 0x3c, 0x12, 0x97, - 0x2a, 0xba, 0xc4, 0x0b, 0x65, 0x30, 0x1a, 0xb8, 0x8e, 0x45, 0x38, 0xb5, 0xa5, 0x32, 0x8c, 0xc6, - 0x2f, 0xb3, 0xd8, 0x78, 0x82, 0x52, 0xf1, 0xbf, 0xcc, 0xe1, 0x14, 0x15, 0x3d, 0x87, 0xfc, 0xd0, - 0xf5, 0xf7, 0x89, 0x2b, 0x35, 0x61, 0x34, 0xee, 0x67, 0x39, 0xd9, 0x90, 0x88, 0xa9, 0x03, 0x45, - 0x41, 0x4f, 0x21, 0x1f, 0x05, 0x36, 0xe1, 0xd4, 0xcc, 0x4b, 0x72, 0x2d, 0x8b, 0xfc, 0x5a, 0x22, - 0xda, 0xbe, 0x77, 0xe0, 0x0c, 0xb1, 0xc2, 0xa3, 0x4d, 0x28, 0x78, 0x94, 0xbf, 0xf1, 0xd9, 0x51, - 0x68, 0x2e, 0xd6, 0xe6, 0x57, 0x8d, 0xc6, 0x6f, 0x32, 0xc5, 0x18, 0x63, 0x9a, 0x9c, 0x13, 0xeb, - 0x70, 0x44, 0x3d, 0x1e, 0xbb, 0x69, 0xcd, 0x99, 0x1a, 0x9e, 0x38, 0x40, 0x7f, 0x85, 0x02, 0xf5, - 0xec, 0xc0, 0x77, 0x3c, 0x6e, 0x16, 0x2e, 0x0f, 0xa4, 0xab, 0x30, 0x22, 0x99, 0x78, 0xc2, 0x68, - 0xe5, 0x41, 0x1f, 0xf9, 0x36, 0xad, 0xaf, 0xc3, 0xf5, 0xf7, 0x92, 0x85, 0x2a, 0x50, 0x50, 0xc9, - 0x8a, 0xab, 0xac, 0xe3, 0xc9, 0xbe, 0xbe, 0x0c, 0x4b, 0x33, 0x89, 0xa9, 0x7f, 0x3b, 0x0f, 0x85, - 0xa4, 0x5a, 0xa8, 0x09, 0x45, 0xcb, 0xf7, 0x38, 0x71, 0x3c, 0xca, 0x94, 0x40, 0x32, 0x73, 0xdb, - 0x4e, 0x40, 0x82, 0xf5, 0x32, 0x87, 0xa7, 0x2c, 0xf4, 0x0f, 0x28, 0x32, 0x1a, 0xfa, 0x11, 0xb3, - 0x68, 0xa8, 0x14, 0xb2, 0x9a, 0x5d, 0xe3, 0x18, 0x84, 0xe9, 0x7f, 0x22, 0x87, 0x51, 0x91, 0xa7, - 0x10, 0x4f, 0xa9, 0xe8, 0x39, 0x2c, 0x32, 0xd1, 0xdf, 0x18, 0xff, 0x50, 0x91, 0x71, 0x0c, 0xe9, - 0xfb, 0xae, 0x63, 0x1d, 0xe3, 0x84, 0x81, 0x9e, 0x43, 0x31, 0x70, 0x89, 0x25, 0xbd, 0x9a, 0x0b, - 0x92, 0xfe, 0x8b, 0x2c, 0x7a, 0x3f, 0x01, 0xe1, 0x29, 0x1e, 0x3d, 0x03, 0x70, 0xfd, 0xe1, 0xc0, - 0x66, 0xce, 0x98, 0x32, 0x25, 0x92, 0x4a, 0x16, 0xbb, 0x23, 0x11, 0xb8, 0xe8, 0xfa, 0xc3, 0x78, - 0x89, 0x36, 0x7e, 0x96, 0x42, 0x52, 0xea, 0xd8, 0x04, 0x20, 0x93, 0x53, 0xa5, 0x8f, 0xc7, 0x9f, - 0xe4, 0x4a, 0x55, 0x24, 0x45, 0x6f, 0x15, 0x61, 0x91, 0x45, 0x9e, 0x78, 0x2f, 0xea, 0x9b, 0x70, - 0x33, 0x93, 0x81, 0x1a, 0x50, 0x9a, 0xd4, 0x70, 0xe0, 0xd8, 0xb2, 0xf8, 0xc5, 0xd6, 0xf2, 0xc5, - 0xd9, 0x8a, 0x31, 0x29, 0x76, 0xaf, 0x83, 0x8d, 0x09, 0xa8, 0x67, 0xd7, 0xbf, 0xd3, 0x61, 0x69, - 0x46, 0x09, 0xe8, 0x06, 0x2c, 0x38, 0x23, 0x32, 0xa4, 0x31, 0x1d, 0xc7, 0x1b, 0xd4, 0x85, 0xbc, - 0x4b, 0xf6, 0xa9, 0x2b, 0xf4, 0x20, 0x72, 0xf2, 0xdb, 0x8f, 0x4a, 0x6a, 0xed, 0x5f, 0x12, 0xdf, - 0xf5, 0x38, 0x3b, 0xc6, 0x8a, 0x8c, 0x4c, 0x58, 0xb4, 0xfc, 0xd1, 0x88, 0x78, 0xa2, 0x77, 0xcc, - 0xaf, 0x16, 0x71, 0xb2, 0x45, 0x08, 0x74, 0xc2, 0x86, 0xa1, 0xa9, 0x4b, 0xb3, 0x5c, 0xa3, 0x32, - 0xcc, 0x53, 0x6f, 0x6c, 0x2e, 0x48, 0x93, 0x58, 0x0a, 0x8b, 0xed, 0xc4, 0x05, 0x2d, 0x62, 0xb1, - 0x14, 0xbc, 0x28, 0xa4, 0xcc, 0x5c, 0x94, 0x26, 0xb9, 0x46, 0x7f, 0x86, 0xfc, 0xc8, 0x8f, 0x3c, - 0x1e, 0x9a, 0x05, 0x19, 0xec, 0x9d, 0xac, 0x60, 0xb7, 0x04, 0x42, 0xf5, 0x36, 0x05, 0x47, 0x2f, - 0xe1, 0x7a, 0xc8, 0xfd, 0x60, 0x30, 0x64, 0xc4, 0xa2, 0x83, 0x80, 0x32, 0xc7, 0xb7, 0xcd, 0xe2, - 0xe5, 0x2d, 0xb2, 0xa3, 0x5e, 0x76, 0xbc, 0x2c, 0x68, 0x1b, 0x82, 0xd5, 0x97, 0x24, 0xd4, 0x87, - 0x52, 0x10, 0xb9, 0xee, 0xc0, 0x0f, 0xe2, 0x4e, 0x0d, 0xd2, 0xc9, 0x27, 0x64, 0xad, 0x1f, 0xb9, - 0xee, 0xab, 0x98, 0x84, 0x8d, 0x60, 0xba, 0x41, 0xb7, 0x20, 0x3f, 0x64, 0x7e, 0x14, 0x84, 0xa6, - 0x21, 0xf3, 0xa1, 0x76, 0xe8, 0x05, 0x2c, 0x86, 0xd4, 0x62, 0x94, 0x87, 0x66, 0x49, 0x7e, 0xed, - 0x83, 0xac, 0x4b, 0x76, 0x24, 0x04, 0xd3, 0x03, 0xca, 0xa8, 0x67, 0x51, 0x9c, 0x70, 0x2a, 0xcf, - 0xc0, 0x48, 0x15, 0x4a, 0x24, 0xf8, 0x88, 0x1e, 0xab, 0xda, 0x8b, 0xa5, 0xd0, 0xc3, 0x98, 0xb8, - 0x51, 0x3c, 0x3e, 0x14, 0x71, 0xbc, 0xf9, 0xcb, 0xdc, 0x53, 0xad, 0xd2, 0x00, 0x23, 0x15, 0x2d, - 0x7a, 0x00, 0x4b, 0x8c, 0x0e, 0x9d, 0x90, 0xb3, 0xe3, 0x01, 0x89, 0xf8, 0xa1, 0xf9, 0x77, 0x49, - 0x28, 0x25, 0xc6, 0x66, 0xc4, 0x0f, 0xeb, 0x3f, 0x68, 0x50, 0x4a, 0xf7, 0x43, 0xd4, 0x8e, 0xbb, - 0xa0, 0xbc, 0xf1, 0x5a, 0x63, 0xfd, 0x63, 0xfd, 0x53, 0xf6, 0x1c, 0x37, 0x12, 0x37, 0x6e, 0x89, - 0x99, 0x45, 0x92, 0xd1, 0x1f, 0x61, 0x21, 0xf0, 0x19, 0x4f, 0xc4, 0x59, 0xcd, 0xec, 0x13, 0x3e, - 0x4b, 0x7e, 0xa3, 0x31, 0xb8, 0x7e, 0x08, 0xd7, 0x66, 0xbd, 0xa1, 0x87, 0x30, 0xbf, 0xd7, 0xeb, - 0x97, 0x73, 0x95, 0xbb, 0x27, 0xa7, 0xb5, 0xdb, 0xb3, 0x87, 0x7b, 0x0e, 0xe3, 0x11, 0x71, 0x7b, - 0x7d, 0xf4, 0x6b, 0x58, 0xe8, 0x6c, 0xef, 0x60, 0x5c, 0xd6, 0x2a, 0x2b, 0x27, 0xa7, 0xb5, 0xbb, - 0xb3, 0x38, 0x71, 0xe4, 0x47, 0x9e, 0x8d, 0xfd, 0xfd, 0xc9, 0x33, 0xfe, 0xc5, 0x1c, 0x18, 0xea, - 0x37, 0x7b, 0xb5, 0xcf, 0xf8, 0xdf, 0x60, 0x29, 0xee, 0x71, 0x03, 0x4b, 0x7e, 0x9a, 0xea, 0xd6, - 0x1f, 0x6a, 0x75, 0xa5, 0x98, 0x10, 0xa7, 0x02, 0xdd, 0x87, 0x92, 0x13, 0x8c, 0x9f, 0x0c, 0xa8, - 0x47, 0xf6, 0x5d, 0xf5, 0xa2, 0x17, 0xb0, 0x21, 0x6c, 0xdd, 0xd8, 0x24, 0x9e, 0x22, 0xc7, 0xe3, - 0x94, 0x79, 0xea, 0xad, 0x2e, 0xe0, 0xc9, 0x1e, 0xbd, 0x00, 0xdd, 0x09, 0xc8, 0x48, 0xf5, 0xe7, - 0xcc, 0x2f, 0xe8, 0xf5, 0x9b, 0x5b, 0x4a, 0x22, 0xad, 0xc2, 0xc5, 0xd9, 0x8a, 0x2e, 0x0c, 0x58, - 0xd2, 0x50, 0x35, 0x69, 0x91, 0xe2, 0x26, 0xf9, 0xab, 0x2e, 0xe0, 0x94, 0xa5, 0xfe, 0x8d, 0x0e, - 0x46, 0xdb, 0x8d, 0x42, 0xae, 0x7a, 0xd3, 0x95, 0xe5, 0xed, 0xdf, 0x70, 0x9d, 0xc8, 0xa1, 0x8f, - 0x78, 0xe2, 0x87, 0x2e, 0x9f, 0x1e, 0x95, 0xbb, 0x87, 0x99, 0xee, 0x26, 0xe0, 0xf8, 0x99, 0x6a, - 0xe5, 0x85, 0x4f, 0x53, 0xc3, 0x65, 0xf2, 0x93, 0x13, 0xb4, 0x03, 0x4b, 0x3e, 0xb3, 0x0e, 0x69, - 0xc8, 0xe3, 0xde, 0xa0, 0x86, 0xa4, 0xcc, 0xf1, 0xf9, 0x55, 0x1a, 0xa8, 0x46, 0x8c, 0x38, 0xda, - 0x59, 0x1f, 0xe8, 0x29, 0xe8, 0x8c, 0x1c, 0x24, 0xcf, 0x68, 0xa6, 0xbe, 0x31, 0x39, 0xe0, 0x33, - 0x2e, 0x24, 0x03, 0xfd, 0x13, 0xc0, 0x76, 0xc2, 0x80, 0x70, 0xeb, 0x90, 0x32, 0x55, 0xa7, 0xcc, - 0x4f, 0xec, 0x4c, 0x50, 0x33, 0x5e, 0x52, 0x6c, 0xb4, 0x09, 0x45, 0x8b, 0x24, 0x4a, 0xcb, 0x5f, - 0xde, 0x16, 0xdb, 0x4d, 0xe5, 0xa2, 0x2c, 0x5c, 0x5c, 0x9c, 0xad, 0x14, 0x12, 0x0b, 0x2e, 0x58, - 0x44, 0x29, 0x6f, 0x13, 0x96, 0xc4, 0x44, 0x39, 0xb0, 0xe9, 0x01, 0x89, 0x5c, 0x1e, 0xca, 0x0e, - 0x7e, 0xc9, 0x04, 0x25, 0x86, 0x9b, 0x8e, 0xc2, 0xa9, 0xb8, 0x4a, 0x3c, 0x65, 0x43, 0xcd, 0x69, - 0x13, 0x2c, 0x5c, 0x3e, 0x69, 0xc4, 0x4d, 0x30, 0x9c, 0xf9, 0xbe, 0x84, 0x57, 0xff, 0x5c, 0x83, - 0xe5, 0x18, 0xb0, 0x27, 0x3a, 0xdc, 0xd5, 0xea, 0x0d, 0x81, 0x6e, 0x13, 0x4e, 0xa4, 0xc4, 0x4a, - 0x58, 0xae, 0xd1, 0x9f, 0x20, 0x4f, 0xff, 0x1b, 0x38, 0xec, 0x58, 0x29, 0x24, 0x73, 0xba, 0xd9, - 0x4d, 0xfe, 0x21, 0x62, 0x05, 0x6e, 0xdd, 0x7b, 0x77, 0x5e, 0xcd, 0x7d, 0x75, 0x5e, 0xcd, 0x7d, - 0x7f, 0x5e, 0xd5, 0xfe, 0x77, 0x51, 0xd5, 0xde, 0x5d, 0x54, 0xb5, 0x2f, 0x2f, 0xaa, 0xda, 0xd7, - 0x17, 0x55, 0x6d, 0x3f, 0x2f, 0xff, 0x48, 0xfe, 0xe1, 0xc7, 0x00, 0x00, 0x00, 0xff, 0xff, 0xe8, - 0xec, 0x21, 0xe5, 0xc2, 0x0e, 0x00, 0x00, + // 1491 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x57, 0x4f, 0x6f, 0xdb, 0x46, + 0x16, 0x17, 0x6d, 0x5a, 0x96, 0x1e, 0xe5, 0x44, 0x19, 0xe4, 0x0f, 0xa3, 0x64, 0x65, 0x45, 0xc9, + 0x66, 0x9d, 0x5d, 0xac, 0xbd, 0xab, 0xdd, 0xcd, 0x26, 0x9b, 0x0d, 0x76, 0xf5, 0xaf, 0x8e, 0xea, + 0xda, 0x11, 0xc6, 0x4e, 0x80, 0x9e, 0x84, 0x31, 0x39, 0x96, 0x09, 0x53, 0x24, 0x3b, 0x1c, 0x2a, + 0xf5, 0xad, 0xc7, 0xc0, 0x87, 0x7e, 0x03, 0x03, 0x05, 0xfa, 0x19, 0xfa, 0x1d, 0x72, 0xec, 0xb1, + 0x27, 0xa3, 0xf6, 0xad, 0x28, 0x0a, 0x14, 0xe8, 0x17, 0x28, 0x66, 0x38, 0x94, 0xa8, 0x86, 0x4e, + 0x02, 0xd4, 0xb7, 0x99, 0x37, 0xbf, 0xdf, 0x9b, 0xc7, 0xf7, 0x7e, 0x7a, 0xf3, 0x04, 0x46, 0x18, + 0x50, 0x2b, 0x5c, 0x0d, 0x98, 0xcf, 0x7d, 0x84, 0x6c, 0xdf, 0x3a, 0xa0, 0x6c, 0x35, 0x7c, 0x45, + 0xd8, 0xe8, 0xc0, 0xe1, 0xab, 0xe3, 0xbf, 0x57, 0x0c, 0x7e, 0x18, 0x50, 0x05, 0xa8, 0x5c, 0x1d, + 0xfa, 0x43, 0x5f, 0x2e, 0xd7, 0xc4, 0x4a, 0x59, 0x6f, 0xd8, 0x11, 0x23, 0xdc, 0xf1, 0xbd, 0xb5, + 0x64, 0xa1, 0x0e, 0x6e, 0x72, 0x67, 0x44, 0x43, 0x4e, 0x46, 0xc1, 0xda, 0x64, 0x15, 0x1f, 0xd5, + 0xbf, 0xd4, 0xa1, 0xb0, 0xe5, 0xdb, 0x74, 0x3b, 0xa0, 0x16, 0x5a, 0x07, 0x83, 0x78, 0x9e, 0xcf, + 0x25, 0x37, 0x34, 0xb5, 0x9a, 0xb6, 0x62, 0x34, 0x96, 0x57, 0xdf, 0x8e, 0x66, 0xb5, 0x39, 0x85, + 0xb5, 0xf4, 0x37, 0x27, 0xcb, 0x39, 0x9c, 0x66, 0xa2, 0xbf, 0x81, 0xce, 0x7c, 0x97, 0x9a, 0x73, + 0x35, 0x6d, 0xe5, 0x52, 0xe3, 0x76, 0x96, 0x07, 0x71, 0x29, 0xf6, 0x5d, 0x8a, 0x25, 0x12, 0xad, + 0x03, 0x8c, 0xe8, 0x68, 0x97, 0xb2, 0x70, 0xdf, 0x09, 0xcc, 0x79, 0xc9, 0xfb, 0xd3, 0x79, 0x3c, + 0x11, 0xec, 0xea, 0xe6, 0x04, 0x8e, 0x53, 0x54, 0xb4, 0x09, 0x25, 0x32, 0x26, 0x8e, 0x4b, 0x76, + 0x1d, 0xd7, 0xe1, 0x87, 0xa6, 0x2e, 0x5d, 0x3d, 0x78, 0xa7, 0xab, 0x66, 0x8a, 0x80, 0x67, 0xe8, + 0x75, 0x1b, 0x60, 0x7a, 0x11, 0xba, 0x0f, 0x8b, 0xfd, 0xee, 0x56, 0xa7, 0xb7, 0xb5, 0x5e, 0xce, + 0x55, 0x6e, 0x1e, 0x1d, 0xd7, 0xae, 0x09, 0x1f, 0x53, 0x40, 0x9f, 0x7a, 0xb6, 0xe3, 0x0d, 0xd1, + 0x0a, 0x14, 0x9a, 0xed, 0x76, 0xb7, 0xbf, 0xd3, 0xed, 0x94, 0xb5, 0x4a, 0xe5, 0xe8, 0xb8, 0x76, + 0x7d, 0x16, 0xd8, 0xb4, 0x2c, 0x1a, 0x70, 0x6a, 0x57, 0xf4, 0xd7, 0x5f, 0x57, 0x73, 0xf5, 0xd7, + 0x1a, 0x94, 0xd2, 0x41, 0xa0, 0xfb, 0x90, 0x6f, 0xb6, 0x77, 0x7a, 0x2f, 0xbb, 0xe5, 0xdc, 0x94, + 0x9e, 0x46, 0x34, 0x2d, 0xee, 0x8c, 0x29, 0xba, 0x07, 0x0b, 0xfd, 0xe6, 0x8b, 0xed, 0x6e, 0x59, + 0x9b, 0x86, 0x93, 0x86, 0xf5, 0x49, 0x14, 0x4a, 0x54, 0x07, 0x37, 0x7b, 0x5b, 0xe5, 0xb9, 0x6c, + 0x54, 0x87, 0x11, 0xc7, 0x53, 0xa1, 0x9c, 0xce, 0x83, 0xb1, 0x4d, 0xd9, 0xd8, 0xb1, 0x2e, 0x58, + 0x13, 0x0f, 0x41, 0xe7, 0x24, 0x3c, 0x90, 0x9a, 0x30, 0xb2, 0x35, 0xb1, 0x43, 0xc2, 0x03, 0x71, + 0xa9, 0xa2, 0x4b, 0xbc, 0x50, 0x06, 0xa3, 0x81, 0xeb, 0x58, 0x84, 0x53, 0x5b, 0x2a, 0xc3, 0x68, + 0xfc, 0x31, 0x8b, 0x8d, 0x27, 0x28, 0x15, 0xff, 0xb3, 0x1c, 0x4e, 0x51, 0xd1, 0x13, 0xc8, 0x0f, + 0x5d, 0x7f, 0x97, 0xb8, 0x52, 0x13, 0x46, 0xe3, 0x4e, 0x96, 0x93, 0x75, 0x89, 0x98, 0x3a, 0x50, + 0x14, 0xf4, 0x08, 0xf2, 0x51, 0x60, 0x13, 0x4e, 0xcd, 0xbc, 0x24, 0xd7, 0xb2, 0xc8, 0x2f, 0x24, + 0xa2, 0xed, 0x7b, 0x7b, 0xce, 0x10, 0x2b, 0x3c, 0xda, 0x80, 0x82, 0x47, 0xf9, 0x2b, 0x9f, 0x1d, + 0x84, 0xe6, 0x62, 0x6d, 0x7e, 0xc5, 0x68, 0xfc, 0x25, 0x53, 0x8c, 0x31, 0xa6, 0xc9, 0x39, 0xb1, + 0xf6, 0x47, 0xd4, 0xe3, 0xb1, 0x9b, 0xd6, 0x9c, 0xa9, 0xe1, 0x89, 0x03, 0xf4, 0x5f, 0x28, 0x50, + 0xcf, 0x0e, 0x7c, 0xc7, 0xe3, 0x66, 0xe1, 0xfc, 0x40, 0xba, 0x0a, 0x23, 0x92, 0x89, 0x27, 0x8c, + 0x56, 0x1e, 0xf4, 0x91, 0x6f, 0xd3, 0xfa, 0x1a, 0x5c, 0x79, 0x2b, 0x59, 0xa8, 0x02, 0x05, 0x95, + 0xac, 0xb8, 0xca, 0x3a, 0x9e, 0xec, 0xeb, 0x97, 0x61, 0x69, 0x26, 0x31, 0xf5, 0x1f, 0xe7, 0xa1, + 0x90, 0x54, 0x0b, 0x35, 0xa1, 0x68, 0xf9, 0x1e, 0x27, 0x8e, 0x47, 0x99, 0x12, 0x48, 0x66, 0x6e, + 0xdb, 0x09, 0x48, 0xb0, 0x9e, 0xe5, 0xf0, 0x94, 0x85, 0x3e, 0x82, 0x22, 0xa3, 0xa1, 0x1f, 0x31, + 0x8b, 0x86, 0x4a, 0x21, 0x2b, 0xd9, 0x35, 0x8e, 0x41, 0x98, 0x7e, 0x16, 0x39, 0x8c, 0x8a, 0x3c, + 0x85, 0x78, 0x4a, 0x45, 0x4f, 0x60, 0x91, 0x89, 0xfe, 0xc6, 0xf8, 0xbb, 0x8a, 0x8c, 0x63, 0x48, + 0xdf, 0x77, 0x1d, 0xeb, 0x10, 0x27, 0x0c, 0xf4, 0x04, 0x8a, 0x81, 0x4b, 0x2c, 0xe9, 0xd5, 0x5c, + 0x90, 0xf4, 0x3f, 0x64, 0xd1, 0xfb, 0x09, 0x08, 0x4f, 0xf1, 0xe8, 0x31, 0x80, 0xeb, 0x0f, 0x07, + 0x36, 0x73, 0xc6, 0x94, 0x29, 0x91, 0x54, 0xb2, 0xd8, 0x1d, 0x89, 0xc0, 0x45, 0xd7, 0x1f, 0xc6, + 0x4b, 0xb4, 0xfe, 0xbb, 0x14, 0x92, 0x52, 0xc7, 0x06, 0x00, 0x99, 0x9c, 0x2a, 0x7d, 0x3c, 0xf8, + 0x20, 0x57, 0xaa, 0x22, 0x29, 0x7a, 0xab, 0x08, 0x8b, 0x2c, 0xf2, 0xc4, 0x7b, 0x51, 0xdf, 0x80, + 0x6b, 0x99, 0x0c, 0xd4, 0x80, 0xd2, 0xa4, 0x86, 0x03, 0xc7, 0x96, 0xc5, 0x2f, 0xb6, 0x2e, 0x9f, + 0x9d, 0x2c, 0x1b, 0x93, 0x62, 0xf7, 0x3a, 0xd8, 0x98, 0x80, 0x7a, 0x76, 0xfd, 0x27, 0x1d, 0x96, + 0x66, 0x94, 0x80, 0xae, 0xc2, 0x82, 0x33, 0x22, 0x43, 0x1a, 0xd3, 0x71, 0xbc, 0x41, 0x5d, 0xc8, + 0xbb, 0x64, 0x97, 0xba, 0x42, 0x0f, 0x22, 0x27, 0x7f, 0x7d, 0xaf, 0xa4, 0x56, 0x3f, 0x91, 0xf8, + 0xae, 0xc7, 0xd9, 0x21, 0x56, 0x64, 0x64, 0xc2, 0xa2, 0xe5, 0x8f, 0x46, 0xc4, 0x13, 0xbd, 0x63, + 0x7e, 0xa5, 0x88, 0x93, 0x2d, 0x42, 0xa0, 0x13, 0x36, 0x0c, 0x4d, 0x5d, 0x9a, 0xe5, 0x1a, 0x95, + 0x61, 0x9e, 0x7a, 0x63, 0x73, 0x41, 0x9a, 0xc4, 0x52, 0x58, 0x6c, 0x27, 0x2e, 0x68, 0x11, 0x8b, + 0xa5, 0xe0, 0x45, 0x21, 0x65, 0xe6, 0xa2, 0x34, 0xc9, 0x35, 0xfa, 0x37, 0xe4, 0x47, 0x7e, 0xe4, + 0xf1, 0xd0, 0x2c, 0xc8, 0x60, 0x6f, 0x66, 0x05, 0xbb, 0x29, 0x10, 0xaa, 0xb7, 0x29, 0x38, 0x7a, + 0x06, 0x57, 0x42, 0xee, 0x07, 0x83, 0x21, 0x23, 0x16, 0x1d, 0x04, 0x94, 0x39, 0xbe, 0x6d, 0x16, + 0xcf, 0x6f, 0x91, 0x1d, 0xf5, 0xb2, 0xe3, 0xcb, 0x82, 0xb6, 0x2e, 0x58, 0x7d, 0x49, 0x42, 0x7d, + 0x28, 0x05, 0x91, 0xeb, 0x0e, 0xfc, 0x20, 0xee, 0xd4, 0x20, 0x9d, 0x7c, 0x40, 0xd6, 0xfa, 0x91, + 0xeb, 0x3e, 0x8f, 0x49, 0xd8, 0x08, 0xa6, 0x1b, 0x74, 0x1d, 0xf2, 0x43, 0xe6, 0x47, 0x41, 0x68, + 0x1a, 0x32, 0x1f, 0x6a, 0x87, 0x9e, 0xc2, 0x62, 0x48, 0x2d, 0x46, 0x79, 0x68, 0x96, 0xe4, 0xd7, + 0xde, 0xcd, 0xba, 0x64, 0x5b, 0x42, 0x30, 0xdd, 0xa3, 0x8c, 0x7a, 0x16, 0xc5, 0x09, 0xa7, 0xf2, + 0x18, 0x8c, 0x54, 0xa1, 0x44, 0x82, 0x0f, 0xe8, 0xa1, 0xaa, 0xbd, 0x58, 0x0a, 0x3d, 0x8c, 0x89, + 0x1b, 0xc5, 0xe3, 0x43, 0x11, 0xc7, 0x9b, 0xff, 0xcc, 0x3d, 0xd2, 0x2a, 0x0d, 0x30, 0x52, 0xd1, + 0xa2, 0xbb, 0xb0, 0xc4, 0xe8, 0xd0, 0x09, 0x39, 0x3b, 0x1c, 0x90, 0x88, 0xef, 0x9b, 0xff, 0x97, + 0x84, 0x52, 0x62, 0x6c, 0x46, 0x7c, 0xbf, 0xfe, 0x8b, 0x06, 0xa5, 0x74, 0x3f, 0x44, 0xed, 0xb8, + 0x0b, 0xca, 0x1b, 0x2f, 0x35, 0xd6, 0xde, 0xd7, 0x3f, 0x65, 0xcf, 0x71, 0x23, 0x71, 0xe3, 0xa6, + 0x98, 0x59, 0x24, 0x19, 0xfd, 0x13, 0x16, 0x02, 0x9f, 0xf1, 0x44, 0x9c, 0xd5, 0xcc, 0x3e, 0xe1, + 0xb3, 0xe4, 0x37, 0x1a, 0x83, 0xeb, 0xfb, 0x70, 0x69, 0xd6, 0x1b, 0xba, 0x07, 0xf3, 0x2f, 0x7b, + 0xfd, 0x72, 0xae, 0x72, 0xeb, 0xe8, 0xb8, 0x76, 0x63, 0xf6, 0xf0, 0xa5, 0xc3, 0x78, 0x44, 0xdc, + 0x5e, 0x1f, 0xfd, 0x19, 0x16, 0x3a, 0x5b, 0xdb, 0x18, 0x97, 0xb5, 0xca, 0xf2, 0xd1, 0x71, 0xed, + 0xd6, 0x2c, 0x4e, 0x1c, 0xf9, 0x91, 0x67, 0x63, 0x7f, 0x77, 0xf2, 0x8c, 0x7f, 0x33, 0x07, 0x86, + 0xfa, 0xcd, 0x5e, 0xec, 0x33, 0xfe, 0x3f, 0x58, 0x8a, 0x7b, 0xdc, 0xc0, 0x92, 0x9f, 0xa6, 0xba, + 0xf5, 0xbb, 0x5a, 0x5d, 0x29, 0x26, 0xc4, 0xa9, 0x40, 0x77, 0xa0, 0xe4, 0x04, 0xe3, 0x87, 0x03, + 0xea, 0x91, 0x5d, 0x57, 0xbd, 0xe8, 0x05, 0x6c, 0x08, 0x5b, 0x37, 0x36, 0x89, 0xa7, 0xc8, 0xf1, + 0x38, 0x65, 0x9e, 0x7a, 0xab, 0x0b, 0x78, 0xb2, 0x47, 0x4f, 0x41, 0x77, 0x02, 0x32, 0x52, 0xfd, + 0x39, 0xf3, 0x0b, 0x7a, 0xfd, 0xe6, 0xa6, 0x92, 0x48, 0xab, 0x70, 0x76, 0xb2, 0xac, 0x0b, 0x03, + 0x96, 0x34, 0x54, 0x4d, 0x5a, 0xa4, 0xb8, 0x49, 0xfe, 0xaa, 0x0b, 0x38, 0x65, 0xa9, 0xff, 0xa0, + 0x83, 0xd1, 0x76, 0xa3, 0x90, 0xab, 0xde, 0x74, 0x61, 0x79, 0xfb, 0x14, 0xae, 0x10, 0x39, 0xf4, + 0x11, 0x4f, 0xfc, 0xd0, 0xe5, 0xd3, 0xa3, 0x72, 0x77, 0x2f, 0xd3, 0xdd, 0x04, 0x1c, 0x3f, 0x53, + 0xad, 0xbc, 0xf0, 0x69, 0x6a, 0xb8, 0x4c, 0x7e, 0x73, 0x82, 0xb6, 0x61, 0xc9, 0x67, 0xd6, 0x3e, + 0x0d, 0x79, 0xdc, 0x1b, 0xd4, 0x90, 0x94, 0x39, 0x3e, 0x3f, 0x4f, 0x03, 0xd5, 0x88, 0x11, 0x47, + 0x3b, 0xeb, 0x03, 0x3d, 0x02, 0x9d, 0x91, 0xbd, 0xe4, 0x19, 0xcd, 0xd4, 0x37, 0x26, 0x7b, 0x7c, + 0xc6, 0x85, 0x64, 0xa0, 0x8f, 0x01, 0x6c, 0x27, 0x0c, 0x08, 0xb7, 0xf6, 0x29, 0x53, 0x75, 0xca, + 0xfc, 0xc4, 0xce, 0x04, 0x35, 0xe3, 0x25, 0xc5, 0x46, 0x1b, 0x50, 0xb4, 0x48, 0xa2, 0xb4, 0xfc, + 0xf9, 0x6d, 0xb1, 0xdd, 0x54, 0x2e, 0xca, 0xc2, 0xc5, 0xd9, 0xc9, 0x72, 0x21, 0xb1, 0xe0, 0x82, + 0x45, 0x94, 0xf2, 0x36, 0x60, 0x49, 0x4c, 0x94, 0x03, 0x9b, 0xee, 0x91, 0xc8, 0xe5, 0xa1, 0xec, + 0xe0, 0xe7, 0x4c, 0x50, 0x62, 0xb8, 0xe9, 0x28, 0x9c, 0x8a, 0xab, 0xc4, 0x53, 0x36, 0xd4, 0x9c, + 0x36, 0xc1, 0xc2, 0xf9, 0x93, 0x46, 0xdc, 0x04, 0xc3, 0x99, 0xef, 0x4b, 0x78, 0xf5, 0xaf, 0x34, + 0x80, 0x18, 0x70, 0xb1, 0x52, 0x43, 0xa0, 0xdb, 0x84, 0x13, 0xa9, 0xae, 0x12, 0x96, 0x6b, 0xf4, + 0x2f, 0xc8, 0xd3, 0xcf, 0x03, 0x87, 0x1d, 0x2a, 0x71, 0x64, 0x0e, 0x36, 0x3b, 0xc9, 0x9f, 0x43, + 0xac, 0xc0, 0xad, 0xdb, 0x6f, 0x4e, 0xab, 0xb9, 0xef, 0x4e, 0xab, 0xb9, 0x9f, 0x4f, 0xab, 0xda, + 0x17, 0x67, 0x55, 0xed, 0xcd, 0x59, 0x55, 0xfb, 0xf6, 0xac, 0xaa, 0x7d, 0x7f, 0x56, 0xd5, 0x76, + 0xf3, 0xf2, 0x3f, 0xe4, 0x3f, 0x7e, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x3d, 0x00, 0xf9, 0x75, 0xbd, + 0x0e, 0x00, 0x00, } diff --git a/api/specs.proto b/api/specs.proto index 9ed88675b5..8b5cfac5ae 100644 --- a/api/specs.proto +++ b/api/specs.proto @@ -281,8 +281,8 @@ message ClusterSpec { SecretsConfig secrets = 8 [(gogoproto.nullable) = false]; } -// SecretValueSpec specifies a user-provided secret. -message SecretValueSpec { +// SecretSpec specifies a user-provided secret. +message SecretSpec { Annotations annotations = 1 [(gogoproto.nullable) = false]; // Secret payload. diff --git a/api/types.pb.go b/api/types.pb.go index 402260d330..36cc241e3e 100644 --- a/api/types.pb.go +++ b/api/types.pb.go @@ -69,7 +69,7 @@ EndpointSpec NetworkSpec ClusterSpec - SecretValueSpec + SecretSpec Meta Node Service @@ -79,7 +79,6 @@ Network Cluster Secret - SecretValue GetNodeRequest GetNodeResponse ListNodesRequest @@ -161,8 +160,6 @@ ListSecretsResponse CreateSecretRequest CreateSecretResponse - UpdateSecretRequest - UpdateSecretResponse RemoveSecretRequest RemoveSecretResponse */ @@ -1302,11 +1299,6 @@ type SecretsConfig struct { // MaxSecrets specifies how many user-specified secrets there can be. A value // of 0 will be interpreted as the default maximum value. MaxSecrets uint32 `protobuf:"varint,1,opt,name=max_secrets,json=maxSecrets,proto3" json:"max_secrets,omitempty"` - // MaxSecretRevisions specifies how many revisions of a secret there can be. A - // value of 0 will be interpreted as the default maximum value. - // If this value is decreased, there will be no change to existing secrets - // until the next update, after which extra revisions will be culled. - MaxSecretRevisions uint32 `protobuf:"varint,2,opt,name=max_secret_revisions,json=maxSecretRevisions,proto3" json:"max_secret_revisions,omitempty"` } func (m *SecretsConfig) Reset() { *m = SecretsConfig{} } @@ -1400,10 +1392,10 @@ func (*ManagerStatus) Descriptor() ([]byte, []int) { return fileDescriptorTypes, type SecretReference struct { // Name is the name of the secret that this references. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // SecretValueID represents the ID of the specific Secret version that we're + // SecretID represents the ID of the specific Secret that we're // referencing. This identifier exists so that SecretReferences don't leak // any information about the secret contents. - SecretValueID string `protobuf:"bytes,2,opt,name=secret_value_id,json=secretValueId,proto3" json:"secret_value_id,omitempty"` + SecretID string `protobuf:"bytes,2,opt,name=secret_id,json=secretId,proto3" json:"secret_id,omitempty"` // Mode is the way the secret should be presented. Mode SecretReference_Mode `protobuf:"varint,3,opt,name=mode,proto3,enum=docker.swarmkit.v1.SecretReference_Mode" json:"mode,omitempty"` // Target is the name by which the image accesses the secret. @@ -2068,8 +2060,7 @@ func (m *SecretsConfig) Copy() *SecretsConfig { } o := &SecretsConfig{ - MaxSecrets: m.MaxSecrets, - MaxSecretRevisions: m.MaxSecretRevisions, + MaxSecrets: m.MaxSecrets, } return o @@ -2172,10 +2163,10 @@ func (m *SecretReference) Copy() *SecretReference { } o := &SecretReference{ - Name: m.Name, - SecretValueID: m.SecretValueID, - Mode: m.Mode, - Target: m.Target, + Name: m.Name, + SecretID: m.SecretID, + Mode: m.Mode, + Target: m.Target, } return o @@ -2749,10 +2740,9 @@ func (this *SecretsConfig) GoString() string { if this == nil { return "nil" } - s := make([]string, 0, 6) + s := make([]string, 0, 5) s = append(s, "&api.SecretsConfig{") s = append(s, "MaxSecrets: "+fmt.Sprintf("%#v", this.MaxSecrets)+",\n") - s = append(s, "MaxSecretRevisions: "+fmt.Sprintf("%#v", this.MaxSecretRevisions)+",\n") s = append(s, "}") return strings.Join(s, "") } @@ -2837,7 +2827,7 @@ func (this *SecretReference) GoString() string { s := make([]string, 0, 8) s = append(s, "&api.SecretReference{") s = append(s, "Name: "+fmt.Sprintf("%#v", this.Name)+",\n") - s = append(s, "SecretValueID: "+fmt.Sprintf("%#v", this.SecretValueID)+",\n") + s = append(s, "SecretID: "+fmt.Sprintf("%#v", this.SecretID)+",\n") s = append(s, "Mode: "+fmt.Sprintf("%#v", this.Mode)+",\n") s = append(s, "Target: "+fmt.Sprintf("%#v", this.Target)+",\n") s = append(s, "}") @@ -4342,11 +4332,6 @@ func (m *SecretsConfig) MarshalTo(data []byte) (int, error) { i++ i = encodeVarintTypes(data, i, uint64(m.MaxSecrets)) } - if m.MaxSecretRevisions != 0 { - data[i] = 0x10 - i++ - i = encodeVarintTypes(data, i, uint64(m.MaxSecretRevisions)) - } return i, nil } @@ -4611,11 +4596,11 @@ func (m *SecretReference) MarshalTo(data []byte) (int, error) { i = encodeVarintTypes(data, i, uint64(len(m.Name))) i += copy(data[i:], m.Name) } - if len(m.SecretValueID) > 0 { + if len(m.SecretID) > 0 { data[i] = 0x12 i++ - i = encodeVarintTypes(data, i, uint64(len(m.SecretValueID))) - i += copy(data[i:], m.SecretValueID) + i = encodeVarintTypes(data, i, uint64(len(m.SecretID))) + i += copy(data[i:], m.SecretID) } if m.Mode != 0 { data[i] = 0x18 @@ -5289,9 +5274,6 @@ func (m *SecretsConfig) Size() (n int) { if m.MaxSecrets != 0 { n += 1 + sovTypes(uint64(m.MaxSecrets)) } - if m.MaxSecretRevisions != 0 { - n += 1 + sovTypes(uint64(m.MaxSecretRevisions)) - } return n } @@ -5410,7 +5392,7 @@ func (m *SecretReference) Size() (n int) { if l > 0 { n += 1 + l + sovTypes(uint64(l)) } - l = len(m.SecretValueID) + l = len(m.SecretID) if l > 0 { n += 1 + l + sovTypes(uint64(l)) } @@ -5945,7 +5927,6 @@ func (this *SecretsConfig) String() string { } s := strings.Join([]string{`&SecretsConfig{`, `MaxSecrets:` + fmt.Sprintf("%v", this.MaxSecrets) + `,`, - `MaxSecretRevisions:` + fmt.Sprintf("%v", this.MaxSecretRevisions) + `,`, `}`, }, "") return s @@ -6030,7 +6011,7 @@ func (this *SecretReference) String() string { } s := strings.Join([]string{`&SecretReference{`, `Name:` + fmt.Sprintf("%v", this.Name) + `,`, - `SecretValueID:` + fmt.Sprintf("%v", this.SecretValueID) + `,`, + `SecretID:` + fmt.Sprintf("%v", this.SecretID) + `,`, `Mode:` + fmt.Sprintf("%v", this.Mode) + `,`, `Target:` + fmt.Sprintf("%v", this.Target) + `,`, `}`, @@ -11073,25 +11054,6 @@ func (m *SecretsConfig) Unmarshal(data []byte) error { break } } - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field MaxSecretRevisions", wireType) - } - m.MaxSecretRevisions = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - m.MaxSecretRevisions |= (uint32(b) & 0x7F) << shift - if b < 0x80 { - break - } - } default: iNdEx = preIndex skippy, err := skipTypes(data[iNdEx:]) @@ -12006,7 +11968,7 @@ func (m *SecretReference) Unmarshal(data []byte) error { iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SecretValueID", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SecretID", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -12031,7 +11993,7 @@ func (m *SecretReference) Unmarshal(data []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.SecretValueID = string(data[iNdEx:postIndex]) + m.SecretID = string(data[iNdEx:postIndex]) iNdEx = postIndex case 3: if wireType != 0 { @@ -12210,233 +12172,232 @@ var ( func init() { proto.RegisterFile("types.proto", fileDescriptorTypes) } var fileDescriptorTypes = []byte{ - // 3648 bytes of a gzipped FileDescriptorProto + // 3620 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x59, 0xcd, 0x6f, 0x23, 0x47, - 0x76, 0x17, 0x3f, 0x45, 0x3e, 0x92, 0x52, 0x4f, 0xcd, 0xec, 0x58, 0x43, 0x8f, 0x25, 0xba, 0xed, - 0x59, 0xcf, 0x7a, 0x1d, 0xda, 0x96, 0x37, 0xc6, 0xd8, 0xb3, 0x59, 0xbb, 0x45, 0x52, 0x33, 0xdc, - 0x91, 0x28, 0xa2, 0x28, 0x6a, 0x60, 0x04, 0x48, 0xa3, 0xd4, 0x5d, 0xa2, 0xda, 0x6a, 0x76, 0x33, + 0x76, 0x17, 0x3f, 0x45, 0x3e, 0x52, 0x52, 0x4f, 0xcd, 0xec, 0x58, 0x43, 0x8f, 0x25, 0xba, 0xed, + 0x59, 0x8f, 0xbd, 0x0e, 0x6d, 0xcb, 0x1b, 0x63, 0xd6, 0xb3, 0x59, 0xbb, 0x45, 0x52, 0x33, 0xdc, + 0x91, 0x28, 0xa2, 0x48, 0x6a, 0x60, 0x04, 0x48, 0xa3, 0xd4, 0x5d, 0xa2, 0xda, 0x6a, 0x76, 0x33, 0xdd, 0x45, 0x69, 0x98, 0x20, 0xc0, 0x24, 0x87, 0x24, 0xd0, 0x29, 0xf7, 0x40, 0x58, 0x04, 0x09, - 0x72, 0xcb, 0x39, 0x40, 0x4e, 0x3e, 0xfa, 0xb8, 0x41, 0x80, 0x60, 0x91, 0x60, 0x85, 0x58, 0xf9, - 0x07, 0x16, 0x08, 0x82, 0x3d, 0x24, 0x87, 0xa0, 0x3e, 0xba, 0xd9, 0xe4, 0x70, 0xe4, 0x71, 0x76, - 0x4f, 0x64, 0xbd, 0xfa, 0xbd, 0x57, 0xaf, 0xaa, 0x5e, 0xbd, 0xfa, 0xbd, 0x6a, 0x28, 0xb1, 0xc9, - 0x88, 0x86, 0xf5, 0x51, 0xe0, 0x33, 0x1f, 0x21, 0xdb, 0xb7, 0x4e, 0x68, 0x50, 0x0f, 0xcf, 0x48, - 0x30, 0x3c, 0x71, 0x58, 0xfd, 0xf4, 0xc3, 0xea, 0x1d, 0xe6, 0x0c, 0x69, 0xc8, 0xc8, 0x70, 0xf4, - 0x7e, 0xfc, 0x4f, 0xc2, 0xab, 0xaf, 0xd9, 0xe3, 0x80, 0x30, 0xc7, 0xf7, 0xde, 0x8f, 0xfe, 0xa8, - 0x8e, 0x5b, 0x03, 0x7f, 0xe0, 0x8b, 0xbf, 0xef, 0xf3, 0x7f, 0x52, 0xaa, 0x6f, 0xc0, 0xf2, 0x01, - 0x0d, 0x42, 0xc7, 0xf7, 0xd0, 0x2d, 0xc8, 0x39, 0x9e, 0x4d, 0x9f, 0xad, 0xa5, 0x6a, 0xa9, 0xfb, - 0x59, 0x2c, 0x1b, 0xfa, 0xdf, 0xa4, 0xa0, 0x64, 0x78, 0x9e, 0xcf, 0x84, 0xad, 0x10, 0x21, 0xc8, - 0x7a, 0x64, 0x48, 0x05, 0xa8, 0x88, 0xc5, 0x7f, 0xd4, 0x80, 0xbc, 0x4b, 0x0e, 0xa9, 0x1b, 0xae, - 0xa5, 0x6b, 0x99, 0xfb, 0xa5, 0xcd, 0x1f, 0xd6, 0x5f, 0xf4, 0xb9, 0x9e, 0x30, 0x52, 0xdf, 0x11, - 0xe8, 0x96, 0xc7, 0x82, 0x09, 0x56, 0xaa, 0xd5, 0x4f, 0xa0, 0x94, 0x10, 0x23, 0x0d, 0x32, 0x27, - 0x74, 0xa2, 0x86, 0xe1, 0x7f, 0xb9, 0x7f, 0xa7, 0xc4, 0x1d, 0xd3, 0xb5, 0xb4, 0x90, 0xc9, 0xc6, - 0xa7, 0xe9, 0x07, 0x29, 0xfd, 0x0b, 0x28, 0x62, 0x1a, 0xfa, 0xe3, 0xc0, 0xa2, 0x21, 0xfa, 0x01, - 0x14, 0x3d, 0xe2, 0xf9, 0xa6, 0x35, 0x1a, 0x87, 0x42, 0x3d, 0xb3, 0x55, 0xbe, 0xba, 0xdc, 0x28, - 0x74, 0x88, 0xe7, 0x37, 0xba, 0xfd, 0x10, 0x17, 0x78, 0x77, 0x63, 0x34, 0x0e, 0xd1, 0x9b, 0x50, - 0x1e, 0xd2, 0xa1, 0x1f, 0x4c, 0xcc, 0xc3, 0x09, 0xa3, 0xa1, 0x30, 0x9c, 0xc1, 0x25, 0x29, 0xdb, - 0xe2, 0x22, 0xfd, 0xaf, 0x52, 0x70, 0x2b, 0xb2, 0x8d, 0xe9, 0x1f, 0x8e, 0x9d, 0x80, 0x0e, 0xa9, - 0xc7, 0x42, 0xf4, 0xbb, 0x90, 0x77, 0x9d, 0xa1, 0xc3, 0xe4, 0x18, 0xa5, 0xcd, 0x37, 0x16, 0xcd, - 0x39, 0xf6, 0x0a, 0x2b, 0x30, 0x32, 0xa0, 0x1c, 0xd0, 0x90, 0x06, 0xa7, 0x72, 0x25, 0xc4, 0x90, - 0xdf, 0xaa, 0x3c, 0xa3, 0xa2, 0x6f, 0x43, 0xa1, 0xeb, 0x12, 0x76, 0xe4, 0x07, 0x43, 0xa4, 0x43, - 0x99, 0x04, 0xd6, 0xb1, 0xc3, 0xa8, 0xc5, 0xc6, 0x41, 0xb4, 0x2b, 0x33, 0x32, 0x74, 0x1b, 0xd2, - 0xbe, 0x1c, 0xa8, 0xb8, 0x95, 0xbf, 0xba, 0xdc, 0x48, 0xef, 0xf5, 0x70, 0xda, 0x0f, 0xf5, 0x87, - 0x70, 0xa3, 0xeb, 0x8e, 0x07, 0x8e, 0xd7, 0xa4, 0xa1, 0x15, 0x38, 0x23, 0x6e, 0x9d, 0x6f, 0x2f, - 0x0f, 0xbe, 0x68, 0x7b, 0xf9, 0xff, 0x78, 0xcb, 0xd3, 0xd3, 0x2d, 0xd7, 0xff, 0x22, 0x0d, 0x37, - 0x5a, 0xde, 0xc0, 0xf1, 0x68, 0x52, 0xfb, 0x1e, 0xac, 0x50, 0x21, 0x34, 0x4f, 0x65, 0x50, 0x29, - 0x3b, 0x15, 0x29, 0x8d, 0x22, 0xad, 0x3d, 0x17, 0x2f, 0x1f, 0x2e, 0x9a, 0xfe, 0x0b, 0xd6, 0x17, - 0x45, 0x0d, 0x6a, 0xc1, 0xf2, 0x48, 0x4c, 0x22, 0x5c, 0xcb, 0x08, 0x5b, 0xf7, 0x16, 0xd9, 0x7a, - 0x61, 0x9e, 0x5b, 0xd9, 0xaf, 0x2f, 0x37, 0x96, 0x70, 0xa4, 0xfb, 0x9b, 0x04, 0xdf, 0x7f, 0xa6, - 0x60, 0xb5, 0xe3, 0xdb, 0x33, 0xeb, 0x50, 0x85, 0xc2, 0xb1, 0x1f, 0xb2, 0xc4, 0x41, 0x89, 0xdb, - 0xe8, 0x01, 0x14, 0x46, 0x6a, 0xfb, 0xd4, 0xee, 0xdf, 0x5d, 0xec, 0xb2, 0xc4, 0xe0, 0x18, 0x8d, - 0x1e, 0x42, 0x31, 0x88, 0x62, 0x62, 0x2d, 0xf3, 0x2a, 0x81, 0x33, 0xc5, 0xa3, 0xdf, 0x83, 0xbc, - 0xdc, 0x84, 0xb5, 0xac, 0xd0, 0xbc, 0xf7, 0x4a, 0x6b, 0x8e, 0x95, 0x92, 0xfe, 0x8b, 0x14, 0x68, - 0x98, 0x1c, 0xb1, 0x5d, 0x3a, 0x3c, 0xa4, 0x41, 0x8f, 0x11, 0x36, 0x0e, 0xd1, 0x6d, 0xc8, 0xbb, - 0x94, 0xd8, 0x34, 0x10, 0x93, 0x2c, 0x60, 0xd5, 0x42, 0x7d, 0x1e, 0xe4, 0xc4, 0x3a, 0x26, 0x87, - 0x8e, 0xeb, 0xb0, 0x89, 0x98, 0xe6, 0xca, 0xe2, 0x5d, 0x9e, 0xb7, 0x59, 0xc7, 0x09, 0x45, 0x3c, - 0x63, 0x06, 0xad, 0xc1, 0xf2, 0x90, 0x86, 0x21, 0x19, 0x50, 0x31, 0xfb, 0x22, 0x8e, 0x9a, 0xfa, - 0x43, 0x28, 0x27, 0xf5, 0x50, 0x09, 0x96, 0xfb, 0x9d, 0x27, 0x9d, 0xbd, 0xa7, 0x1d, 0x6d, 0x09, - 0xad, 0x42, 0xa9, 0xdf, 0xc1, 0x2d, 0xa3, 0xf1, 0xd8, 0xd8, 0xda, 0x69, 0x69, 0x29, 0x54, 0x81, - 0xe2, 0xb4, 0x99, 0xd6, 0x7f, 0x96, 0x02, 0xe0, 0x1b, 0xa8, 0x26, 0xf5, 0x29, 0xe4, 0x42, 0x46, - 0x98, 0xdc, 0xb8, 0x95, 0xcd, 0xb7, 0x17, 0x79, 0x3d, 0x85, 0xd7, 0xf9, 0x0f, 0xc5, 0x52, 0x25, - 0xe9, 0x61, 0x7a, 0xde, 0xc3, 0x9c, 0x40, 0xce, 0xba, 0x56, 0x80, 0x6c, 0x93, 0xff, 0x4b, 0xa1, - 0x22, 0xe4, 0x70, 0xcb, 0x68, 0x7e, 0xa1, 0xa5, 0x91, 0x06, 0xe5, 0x66, 0xbb, 0xd7, 0xd8, 0xeb, - 0x74, 0x5a, 0x8d, 0xfd, 0x56, 0x53, 0xcb, 0xe8, 0xf7, 0x20, 0xd7, 0x1e, 0x92, 0x01, 0x45, 0x77, - 0x79, 0x04, 0x1c, 0xd1, 0x80, 0x7a, 0x56, 0x14, 0x58, 0x53, 0x81, 0xfe, 0xf3, 0x22, 0xe4, 0x76, - 0xfd, 0xb1, 0xc7, 0xd0, 0x66, 0xe2, 0x14, 0xaf, 0x6c, 0xae, 0x2f, 0x9a, 0x82, 0x00, 0xd6, 0xf7, - 0x27, 0x23, 0xaa, 0x4e, 0xf9, 0x6d, 0xc8, 0xcb, 0x58, 0x51, 0xae, 0xab, 0x16, 0x97, 0x33, 0x12, + 0x72, 0xcb, 0x39, 0x40, 0x4e, 0x3e, 0xfa, 0x12, 0x60, 0x83, 0x00, 0xc1, 0x22, 0x41, 0x84, 0x58, + 0xf9, 0x07, 0x16, 0x08, 0x82, 0x3d, 0x24, 0x87, 0xa0, 0x3e, 0xba, 0xd9, 0xe4, 0x70, 0xe4, 0x71, + 0x76, 0x4f, 0xec, 0x7a, 0xf5, 0x7b, 0xaf, 0x5e, 0x55, 0xbd, 0x7a, 0xf5, 0x7b, 0x45, 0x28, 0xb1, + 0xc9, 0x88, 0x86, 0xb5, 0x51, 0xe0, 0x33, 0x1f, 0x21, 0xdb, 0xb7, 0x4e, 0x68, 0x50, 0x0b, 0xcf, + 0x48, 0x30, 0x3c, 0x71, 0x58, 0xed, 0xf4, 0xa3, 0xca, 0x1d, 0xe6, 0x0c, 0x69, 0xc8, 0xc8, 0x70, + 0xf4, 0x41, 0xfc, 0x25, 0xe1, 0x95, 0xd7, 0xec, 0x71, 0x40, 0x98, 0xe3, 0x7b, 0x1f, 0x44, 0x1f, + 0xaa, 0xe3, 0xd6, 0xc0, 0x1f, 0xf8, 0xe2, 0xf3, 0x03, 0xfe, 0x25, 0xa5, 0xfa, 0x26, 0x2c, 0x1f, + 0xd0, 0x20, 0x74, 0x7c, 0x0f, 0xdd, 0x82, 0x9c, 0xe3, 0xd9, 0xf4, 0xd9, 0x7a, 0xaa, 0x9a, 0xba, + 0x9f, 0xc5, 0xb2, 0xa1, 0xff, 0x55, 0x0a, 0x4a, 0x86, 0xe7, 0xf9, 0x4c, 0xd8, 0x0a, 0x11, 0x82, + 0xac, 0x47, 0x86, 0x54, 0x80, 0x8a, 0x58, 0x7c, 0xa3, 0x3a, 0xe4, 0x5d, 0x72, 0x48, 0xdd, 0x70, + 0x3d, 0x5d, 0xcd, 0xdc, 0x2f, 0x6d, 0xfd, 0xa0, 0xf6, 0xa2, 0xcf, 0xb5, 0x84, 0x91, 0xda, 0xae, + 0x40, 0x37, 0x3d, 0x16, 0x4c, 0xb0, 0x52, 0xad, 0xfc, 0x08, 0x4a, 0x09, 0x31, 0xd2, 0x20, 0x73, + 0x42, 0x27, 0x6a, 0x18, 0xfe, 0xc9, 0xfd, 0x3b, 0x25, 0xee, 0x98, 0xae, 0xa7, 0x85, 0x4c, 0x36, + 0x3e, 0x4d, 0x3f, 0x48, 0xe9, 0x5f, 0x40, 0x11, 0xd3, 0xd0, 0x1f, 0x07, 0x16, 0x0d, 0xd1, 0xbb, + 0x50, 0xf4, 0x88, 0xe7, 0x9b, 0xd6, 0x68, 0x1c, 0x0a, 0xf5, 0xcc, 0x76, 0xf9, 0xea, 0x72, 0xb3, + 0xd0, 0x26, 0x9e, 0x5f, 0xef, 0xf4, 0x43, 0x5c, 0xe0, 0xdd, 0xf5, 0xd1, 0x38, 0x44, 0x6f, 0x42, + 0x79, 0x48, 0x87, 0x7e, 0x30, 0x31, 0x0f, 0x27, 0x8c, 0x86, 0xc2, 0x70, 0x06, 0x97, 0xa4, 0x6c, + 0x9b, 0x8b, 0xf4, 0xbf, 0x48, 0xc1, 0xad, 0xc8, 0x36, 0xa6, 0xbf, 0x3f, 0x76, 0x02, 0x3a, 0xa4, + 0x1e, 0x0b, 0xd1, 0x6f, 0x43, 0xde, 0x75, 0x86, 0x0e, 0x93, 0x63, 0x94, 0xb6, 0xde, 0x58, 0x34, + 0xe7, 0xd8, 0x2b, 0xac, 0xc0, 0xc8, 0x80, 0x72, 0x40, 0x43, 0x1a, 0x9c, 0xca, 0x95, 0x10, 0x43, + 0x7e, 0xab, 0xf2, 0x8c, 0x8a, 0xbe, 0x03, 0x85, 0x8e, 0x4b, 0xd8, 0x91, 0x1f, 0x0c, 0x91, 0x0e, + 0x65, 0x12, 0x58, 0xc7, 0x0e, 0xa3, 0x16, 0x1b, 0x07, 0xd1, 0xae, 0xcc, 0xc8, 0xd0, 0x6d, 0x48, + 0xfb, 0x72, 0xa0, 0xe2, 0x76, 0xfe, 0xea, 0x72, 0x33, 0xbd, 0xdf, 0xc5, 0x69, 0x3f, 0xd4, 0x1f, + 0xc2, 0x8d, 0x8e, 0x3b, 0x1e, 0x38, 0x5e, 0x83, 0x86, 0x56, 0xe0, 0x8c, 0xb8, 0x75, 0xbe, 0xbd, + 0x3c, 0xf8, 0xa2, 0xed, 0xe5, 0xdf, 0xf1, 0x96, 0xa7, 0xa7, 0x5b, 0xae, 0xff, 0x59, 0x1a, 0x6e, + 0x34, 0xbd, 0x81, 0xe3, 0xd1, 0xa4, 0xf6, 0x3d, 0x58, 0xa5, 0x42, 0x68, 0x9e, 0xca, 0xa0, 0x52, + 0x76, 0x56, 0xa4, 0x34, 0x8a, 0xb4, 0xd6, 0x5c, 0xbc, 0x7c, 0xb4, 0x68, 0xfa, 0x2f, 0x58, 0x5f, + 0x14, 0x35, 0xa8, 0x09, 0xcb, 0x23, 0x31, 0x89, 0x70, 0x3d, 0x23, 0x6c, 0xdd, 0x5b, 0x64, 0xeb, + 0x85, 0x79, 0x6e, 0x67, 0xbf, 0xbe, 0xdc, 0x5c, 0xc2, 0x91, 0xee, 0xaf, 0x13, 0x7c, 0xff, 0x99, + 0x82, 0xb5, 0xb6, 0x6f, 0xcf, 0xac, 0x43, 0x05, 0x0a, 0xc7, 0x7e, 0xc8, 0x12, 0x07, 0x25, 0x6e, + 0xa3, 0x07, 0x50, 0x18, 0xa9, 0xed, 0x53, 0xbb, 0x7f, 0x77, 0xb1, 0xcb, 0x12, 0x83, 0x63, 0x34, + 0x7a, 0x08, 0xc5, 0x20, 0x8a, 0x89, 0xf5, 0xcc, 0xab, 0x04, 0xce, 0x14, 0x8f, 0x7e, 0x07, 0xf2, + 0x72, 0x13, 0xd6, 0xb3, 0x42, 0xf3, 0xde, 0x2b, 0xad, 0x39, 0x56, 0x4a, 0xfa, 0x2f, 0x52, 0xa0, + 0x61, 0x72, 0xc4, 0xf6, 0xe8, 0xf0, 0x90, 0x06, 0x5d, 0x46, 0xd8, 0x38, 0x44, 0xb7, 0x21, 0xef, + 0x52, 0x62, 0xd3, 0x40, 0x4c, 0xb2, 0x80, 0x55, 0x0b, 0xf5, 0x79, 0x90, 0x13, 0xeb, 0x98, 0x1c, + 0x3a, 0xae, 0xc3, 0x26, 0x62, 0x9a, 0xab, 0x8b, 0x77, 0x79, 0xde, 0x66, 0x0d, 0x27, 0x14, 0xf1, + 0x8c, 0x19, 0xb4, 0x0e, 0xcb, 0x43, 0x1a, 0x86, 0x64, 0x40, 0xc5, 0xec, 0x8b, 0x38, 0x6a, 0xea, + 0x0f, 0xa1, 0x9c, 0xd4, 0x43, 0x25, 0x58, 0xee, 0xb7, 0x9f, 0xb4, 0xf7, 0x9f, 0xb6, 0xb5, 0x25, + 0xb4, 0x06, 0xa5, 0x7e, 0x1b, 0x37, 0x8d, 0xfa, 0x63, 0x63, 0x7b, 0xb7, 0xa9, 0xa5, 0xd0, 0x0a, + 0x14, 0xa7, 0xcd, 0xb4, 0xfe, 0xb3, 0x14, 0x00, 0xdf, 0x40, 0x35, 0xa9, 0x4f, 0x21, 0x17, 0x32, + 0xc2, 0xe4, 0xc6, 0xad, 0x6e, 0xbd, 0xbd, 0xc8, 0xeb, 0x29, 0xbc, 0xc6, 0x7f, 0x28, 0x96, 0x2a, + 0x49, 0x0f, 0xd3, 0xf3, 0x1e, 0xe6, 0x04, 0x72, 0xd6, 0xb5, 0x02, 0x64, 0x1b, 0xfc, 0x2b, 0x85, + 0x8a, 0x90, 0xc3, 0x4d, 0xa3, 0xf1, 0x85, 0x96, 0x46, 0x1a, 0x94, 0x1b, 0xad, 0x6e, 0x7d, 0xbf, + 0xdd, 0x6e, 0xd6, 0x7b, 0xcd, 0x86, 0x96, 0xd1, 0xef, 0x41, 0xae, 0x35, 0x24, 0x03, 0x8a, 0xee, + 0xf2, 0x08, 0x38, 0xa2, 0x01, 0xf5, 0xac, 0x28, 0xb0, 0xa6, 0x02, 0xfd, 0xe7, 0x45, 0xc8, 0xed, + 0xf9, 0x63, 0x8f, 0xa1, 0xad, 0xc4, 0x29, 0x5e, 0xdd, 0xda, 0x58, 0x34, 0x05, 0x01, 0xac, 0xf5, + 0x26, 0x23, 0xaa, 0x4e, 0xf9, 0x6d, 0xc8, 0xcb, 0x58, 0x51, 0xae, 0xab, 0x16, 0x97, 0x33, 0x12, 0x0c, 0x28, 0x53, 0x8b, 0xae, 0x5a, 0xe8, 0x3e, 0x14, 0x02, 0x4a, 0x6c, 0xdf, 0x73, 0x27, 0x22, - 0xa4, 0x0a, 0x32, 0xcd, 0x62, 0x4a, 0xec, 0x3d, 0xcf, 0x9d, 0xe0, 0xb8, 0x17, 0x3d, 0x86, 0xf2, - 0xa1, 0xe3, 0xd9, 0xa6, 0x3f, 0x92, 0x39, 0x2f, 0xf7, 0xf2, 0x00, 0x94, 0x5e, 0x6d, 0x39, 0x9e, - 0xbd, 0x27, 0xc1, 0xb8, 0x74, 0x38, 0x6d, 0xa0, 0x0e, 0xac, 0x9c, 0xfa, 0xee, 0x78, 0x48, 0x63, - 0x5b, 0x79, 0x61, 0xeb, 0x9d, 0x97, 0xdb, 0x3a, 0x10, 0xf8, 0xc8, 0x5a, 0xe5, 0x34, 0xd9, 0x44, - 0x4f, 0xa0, 0xc2, 0x86, 0xa3, 0xa3, 0x30, 0x36, 0xb7, 0x2c, 0xcc, 0x7d, 0xff, 0x9a, 0x05, 0xe3, - 0xf0, 0xc8, 0x5a, 0x99, 0x25, 0x5a, 0xd5, 0x3f, 0xcb, 0x40, 0x29, 0xe1, 0x39, 0xea, 0x41, 0x69, - 0x14, 0xf8, 0x23, 0x32, 0x10, 0x79, 0x5b, 0xed, 0xc5, 0x87, 0xaf, 0x34, 0xeb, 0x7a, 0x77, 0xaa, - 0x88, 0x93, 0x56, 0xf4, 0x8b, 0x34, 0x94, 0x12, 0x9d, 0xe8, 0x5d, 0x28, 0xe0, 0x2e, 0x6e, 0x1f, - 0x18, 0xfb, 0x2d, 0x6d, 0xa9, 0x7a, 0xf7, 0xfc, 0xa2, 0xb6, 0x26, 0xac, 0x25, 0x0d, 0x74, 0x03, - 0xe7, 0x94, 0x87, 0xde, 0x7d, 0x58, 0x8e, 0xa0, 0xa9, 0xea, 0xeb, 0xe7, 0x17, 0xb5, 0xd7, 0xe6, - 0xa1, 0x09, 0x24, 0xee, 0x3d, 0x36, 0x70, 0xab, 0xa9, 0xa5, 0x17, 0x23, 0x71, 0xef, 0x98, 0x04, - 0xd4, 0x46, 0xdf, 0x87, 0xbc, 0x02, 0x66, 0xaa, 0xd5, 0xf3, 0x8b, 0xda, 0xed, 0x79, 0xe0, 0x14, - 0x87, 0x7b, 0x3b, 0xc6, 0x41, 0x4b, 0xcb, 0x2e, 0xc6, 0xe1, 0x9e, 0x4b, 0x4e, 0x29, 0x7a, 0x1b, - 0x72, 0x12, 0x96, 0xab, 0xde, 0x39, 0xbf, 0xa8, 0x7d, 0xef, 0x05, 0x73, 0x1c, 0x55, 0x5d, 0xfb, - 0xcb, 0xbf, 0x5d, 0x5f, 0xfa, 0xa7, 0xbf, 0x5b, 0xd7, 0xe6, 0xbb, 0xab, 0xff, 0x9b, 0x82, 0xca, - 0xcc, 0x96, 0x23, 0x1d, 0xf2, 0x9e, 0x6f, 0xf9, 0x23, 0x99, 0xce, 0x0b, 0x5b, 0x70, 0x75, 0xb9, - 0x91, 0xef, 0xf8, 0x0d, 0x7f, 0x34, 0xc1, 0xaa, 0x07, 0x3d, 0x99, 0xbb, 0x90, 0x3e, 0x7a, 0xc5, - 0x78, 0x5a, 0x78, 0x25, 0x7d, 0x06, 0x15, 0x3b, 0x70, 0x4e, 0x69, 0x60, 0x5a, 0xbe, 0x77, 0xe4, - 0x0c, 0x54, 0xaa, 0xae, 0x2e, 0xb2, 0xd9, 0x14, 0x40, 0x5c, 0x96, 0x0a, 0x0d, 0x81, 0xff, 0x0d, - 0x2e, 0xa3, 0xea, 0x01, 0x94, 0x93, 0x11, 0x8a, 0xde, 0x00, 0x08, 0x9d, 0x3f, 0xa2, 0x8a, 0xdf, - 0x08, 0x36, 0x84, 0x8b, 0x5c, 0x22, 0xd8, 0x0d, 0x7a, 0x07, 0xb2, 0x43, 0xdf, 0x96, 0x76, 0x72, - 0x5b, 0x37, 0xf9, 0x9d, 0xf8, 0x6f, 0x97, 0x1b, 0x25, 0x3f, 0xac, 0x6f, 0x3b, 0x2e, 0xdd, 0xf5, - 0x6d, 0x8a, 0x05, 0x40, 0x3f, 0x85, 0x2c, 0x4f, 0x15, 0xe8, 0x75, 0xc8, 0x6e, 0xb5, 0x3b, 0x4d, - 0x6d, 0xa9, 0x7a, 0xe3, 0xfc, 0xa2, 0x56, 0x11, 0x4b, 0xc2, 0x3b, 0x78, 0xec, 0xa2, 0x0d, 0xc8, - 0x1f, 0xec, 0xed, 0xf4, 0x77, 0x79, 0x78, 0xdd, 0x3c, 0xbf, 0xa8, 0xad, 0xc6, 0xdd, 0x72, 0xd1, - 0xd0, 0x1b, 0x90, 0xdb, 0xdf, 0xed, 0x6e, 0xf7, 0xb4, 0x74, 0x15, 0x9d, 0x5f, 0xd4, 0x56, 0xe2, - 0x7e, 0xe1, 0x73, 0xf5, 0x86, 0xda, 0xd5, 0x62, 0x2c, 0xd7, 0xff, 0x27, 0x0d, 0x15, 0xcc, 0xf9, - 0x6d, 0xc0, 0xba, 0xbe, 0xeb, 0x58, 0x13, 0xd4, 0x85, 0xa2, 0xe5, 0x7b, 0xb6, 0x93, 0x38, 0x53, - 0x9b, 0x2f, 0xb9, 0x04, 0xa7, 0x5a, 0x51, 0xab, 0x11, 0x69, 0xe2, 0xa9, 0x11, 0xb4, 0x09, 0x39, - 0x9b, 0xba, 0x64, 0x72, 0xdd, 0x6d, 0xdc, 0x54, 0x5c, 0x1a, 0x4b, 0xa8, 0x60, 0x8e, 0xe4, 0x99, - 0x49, 0x18, 0xa3, 0xc3, 0x11, 0x93, 0xb7, 0x71, 0x16, 0x97, 0x86, 0xe4, 0x99, 0xa1, 0x44, 0xe8, - 0x47, 0x90, 0x3f, 0x73, 0x3c, 0xdb, 0x3f, 0x53, 0x17, 0xee, 0xf5, 0x76, 0x15, 0x56, 0x3f, 0xe7, - 0xf7, 0xec, 0x9c, 0xb3, 0x7c, 0xd5, 0x3b, 0x7b, 0x9d, 0x56, 0xb4, 0xea, 0xaa, 0x7f, 0xcf, 0xeb, - 0xf8, 0x1e, 0x3f, 0x31, 0xb0, 0xd7, 0x31, 0xb7, 0x8d, 0xf6, 0x4e, 0x1f, 0xf3, 0x95, 0xbf, 0x75, - 0x7e, 0x51, 0xd3, 0x62, 0xc8, 0x36, 0x71, 0x5c, 0x4e, 0x02, 0xef, 0x40, 0xc6, 0xe8, 0x7c, 0xa1, - 0xa5, 0xab, 0xda, 0xf9, 0x45, 0xad, 0x1c, 0x77, 0x1b, 0xde, 0x64, 0x7a, 0x98, 0xe6, 0xc7, 0xd5, - 0x7f, 0x99, 0x86, 0x72, 0x7f, 0x64, 0x13, 0x46, 0x65, 0x64, 0xa2, 0x1a, 0x94, 0x46, 0x24, 0x20, - 0xae, 0x4b, 0x5d, 0x27, 0x1c, 0xaa, 0x42, 0x21, 0x29, 0x42, 0x0f, 0xbe, 0xc3, 0x62, 0x2a, 0x12, - 0xa6, 0x96, 0xb4, 0x0f, 0x2b, 0x47, 0xd2, 0x59, 0x93, 0x58, 0x62, 0x77, 0x33, 0x62, 0x77, 0xeb, - 0x8b, 0x4c, 0x24, 0xbd, 0xaa, 0xab, 0x39, 0x1a, 0x42, 0x0b, 0x57, 0x8e, 0x92, 0x4d, 0xf4, 0x31, - 0x2c, 0x0f, 0x7d, 0xcf, 0x61, 0x7e, 0xf0, 0x4a, 0xfb, 0x10, 0x81, 0xd1, 0xbb, 0x70, 0x83, 0xef, - 0x70, 0xe4, 0x92, 0xe8, 0x16, 0x37, 0x57, 0x1a, 0xaf, 0x0e, 0xc9, 0x33, 0x35, 0x26, 0xe6, 0x62, - 0xfd, 0x63, 0xa8, 0xcc, 0xf8, 0xc0, 0x6f, 0xf3, 0xae, 0xd1, 0xef, 0xb5, 0xb4, 0x25, 0x54, 0x86, - 0x42, 0x63, 0xaf, 0xb3, 0xdf, 0xee, 0xf4, 0x39, 0xf5, 0x28, 0x43, 0x01, 0xef, 0xed, 0xec, 0x6c, - 0x19, 0x8d, 0x27, 0x5a, 0x5a, 0xff, 0xef, 0x78, 0x7d, 0x15, 0xf7, 0xd8, 0x9a, 0xe5, 0x1e, 0xef, - 0xbd, 0x7c, 0xea, 0x8a, 0x7d, 0x4c, 0x1b, 0x31, 0x07, 0xf9, 0x31, 0x80, 0xd8, 0x46, 0x6a, 0x9b, - 0x84, 0x5d, 0x57, 0x5f, 0xec, 0x47, 0x95, 0x23, 0x2e, 0x2a, 0x05, 0x83, 0xa1, 0xcf, 0xa1, 0x6c, - 0xf9, 0xc3, 0x91, 0x4b, 0x95, 0x7e, 0xe6, 0x55, 0xf4, 0x4b, 0xb1, 0x8a, 0xc1, 0x92, 0x1c, 0x28, - 0x3b, 0xcb, 0x81, 0xfe, 0x3c, 0x05, 0xa5, 0x84, 0xc3, 0xb3, 0x54, 0xa8, 0x0c, 0x85, 0x7e, 0xb7, - 0x69, 0xec, 0xb7, 0x3b, 0x8f, 0xb4, 0x14, 0x02, 0xc8, 0x8b, 0x05, 0x6c, 0x6a, 0x69, 0x4e, 0xd7, - 0x1a, 0x7b, 0xbb, 0xdd, 0x9d, 0x96, 0x20, 0x43, 0xe8, 0x16, 0x68, 0xd1, 0x12, 0x9a, 0xbd, 0x7d, - 0x03, 0x73, 0x69, 0x16, 0xdd, 0x84, 0xd5, 0x58, 0xaa, 0x34, 0x73, 0xe8, 0x36, 0xa0, 0x58, 0x38, - 0x35, 0x91, 0xd7, 0xff, 0x04, 0x56, 0x1b, 0xbe, 0xc7, 0x88, 0xe3, 0xc5, 0x54, 0x76, 0x93, 0xcf, - 0x5b, 0x89, 0x4c, 0xc7, 0x96, 0xd9, 0x76, 0x6b, 0xf5, 0xea, 0x72, 0xa3, 0x14, 0x43, 0xdb, 0x4d, - 0x3e, 0xd3, 0xa8, 0x61, 0xf3, 0x33, 0x35, 0x72, 0x6c, 0x95, 0x3c, 0x97, 0xaf, 0x2e, 0x37, 0x32, - 0xdd, 0x76, 0x13, 0x73, 0x19, 0x7a, 0x1d, 0x8a, 0xf4, 0x99, 0xc3, 0x4c, 0x8b, 0x67, 0x57, 0xbe, - 0x86, 0x39, 0x5c, 0xe0, 0x82, 0x06, 0x4f, 0xa6, 0x7f, 0x9a, 0x06, 0xd8, 0x27, 0xe1, 0x89, 0x1a, - 0xfa, 0x21, 0x14, 0xe3, 0x22, 0xfe, 0xba, 0x62, 0x32, 0xb1, 0x5f, 0x31, 0x1e, 0x7d, 0x14, 0x45, - 0x8c, 0xe4, 0xd8, 0x8b, 0x15, 0xd5, 0x58, 0x8b, 0x68, 0xea, 0x2c, 0x91, 0xe6, 0x77, 0x0d, 0x0d, - 0x02, 0xb5, 0x71, 0xfc, 0x2f, 0x6a, 0x88, 0x7c, 0x2b, 0xe7, 0xac, 0x98, 0xdb, 0x5b, 0x8b, 0x06, - 0x99, 0x5b, 0xd0, 0xc7, 0x4b, 0x78, 0xaa, 0xb7, 0xa5, 0xc1, 0x4a, 0x30, 0xf6, 0xb8, 0xd7, 0x66, - 0x28, 0xba, 0x75, 0x07, 0x5e, 0xeb, 0x50, 0x76, 0xe6, 0x07, 0x27, 0x06, 0x63, 0xc4, 0x3a, 0xe6, - 0x45, 0xb5, 0x4a, 0x32, 0x53, 0xc2, 0x99, 0x9a, 0x21, 0x9c, 0x6b, 0xb0, 0x4c, 0x5c, 0x87, 0x84, - 0x54, 0xde, 0xd2, 0x45, 0x1c, 0x35, 0x39, 0x2d, 0x26, 0xb6, 0x1d, 0xd0, 0x30, 0xa4, 0xb2, 0x0c, - 0x2c, 0xe2, 0xa9, 0x40, 0xff, 0x97, 0x34, 0x40, 0xbb, 0x6b, 0xec, 0x2a, 0xf3, 0x4d, 0xc8, 0x1f, - 0x91, 0xa1, 0xe3, 0x4e, 0xae, 0x3b, 0x64, 0x53, 0x7c, 0xdd, 0x90, 0x86, 0xb6, 0x85, 0x0e, 0x56, - 0xba, 0x82, 0x2d, 0x8f, 0x0f, 0x3d, 0xca, 0x62, 0xb6, 0x2c, 0x5a, 0xfc, 0x6a, 0x0e, 0x88, 0x17, - 0x2f, 0xac, 0x6c, 0x70, 0xd7, 0x07, 0x84, 0xd1, 0x33, 0x32, 0x89, 0xce, 0x84, 0x6a, 0xa2, 0xc7, - 0x9c, 0x45, 0xf3, 0xe2, 0x9e, 0xda, 0x6b, 0x39, 0xc1, 0x3d, 0xbe, 0xcd, 0x1f, 0xac, 0xe0, 0x92, - 0x74, 0xc4, 0xda, 0xd5, 0x87, 0xe2, 0xa6, 0x9c, 0x76, 0x7d, 0xa7, 0x22, 0xf6, 0x03, 0xa8, 0xcc, - 0xcc, 0xf3, 0x85, 0x32, 0xa5, 0xdd, 0x3d, 0xf8, 0x91, 0x96, 0x55, 0xff, 0x3e, 0xd6, 0xf2, 0xfa, - 0x7f, 0xa5, 0x00, 0xba, 0x7e, 0x10, 0x6d, 0xda, 0xe2, 0x67, 0xa1, 0x82, 0x78, 0x64, 0xb2, 0x7c, - 0x57, 0x85, 0xe7, 0x42, 0x9e, 0x3e, 0xb5, 0xc2, 0x69, 0xaf, 0x80, 0xe3, 0x58, 0x11, 0x6d, 0x40, - 0x49, 0xee, 0xbf, 0x39, 0xf2, 0x03, 0x99, 0x8f, 0x2a, 0x18, 0xa4, 0x88, 0x6b, 0xa2, 0x7b, 0xb0, - 0x32, 0x1a, 0x1f, 0xba, 0x4e, 0x78, 0x4c, 0x6d, 0x89, 0xc9, 0x0a, 0x4c, 0x25, 0x96, 0x72, 0x98, - 0xde, 0x84, 0x42, 0x64, 0x1d, 0xad, 0x41, 0x66, 0xbf, 0xd1, 0xd5, 0x96, 0xaa, 0xab, 0xe7, 0x17, - 0xb5, 0x52, 0x24, 0xde, 0x6f, 0x74, 0x79, 0x4f, 0xbf, 0xd9, 0xd5, 0x52, 0xb3, 0x3d, 0xfd, 0x66, - 0xb7, 0x9a, 0xe5, 0xb7, 0xa4, 0xfe, 0xd7, 0x29, 0xc8, 0x4b, 0xce, 0xb6, 0x70, 0xc6, 0x06, 0x2c, - 0x47, 0x95, 0x84, 0x24, 0x92, 0xef, 0xbc, 0x9c, 0xf4, 0xd5, 0x15, 0x47, 0x93, 0xfb, 0x18, 0xe9, - 0x55, 0x3f, 0x85, 0x72, 0xb2, 0xe3, 0x3b, 0xed, 0xe2, 0x1f, 0x43, 0x89, 0x07, 0x4a, 0x44, 0xfe, - 0x36, 0x21, 0x2f, 0x79, 0xa5, 0xca, 0x2a, 0xd7, 0x31, 0x50, 0x85, 0x44, 0x0f, 0x60, 0x59, 0xb2, - 0xd6, 0xe8, 0x3d, 0x65, 0xfd, 0xfa, 0x70, 0xc4, 0x11, 0x5c, 0xff, 0x0c, 0xb2, 0x5d, 0x4a, 0x03, - 0xf4, 0x16, 0x2c, 0x7b, 0xbe, 0x4d, 0xa7, 0x49, 0x54, 0x11, 0x6e, 0x9b, 0xb6, 0x9b, 0x9c, 0x70, - 0xdb, 0xb4, 0x6d, 0xf3, 0xc5, 0xe3, 0x07, 0x34, 0x7a, 0x52, 0xe2, 0xff, 0xf5, 0x7d, 0x28, 0x3f, - 0xa5, 0xce, 0xe0, 0x98, 0x51, 0x5b, 0x18, 0x7a, 0x0f, 0xb2, 0x23, 0x1a, 0x3b, 0xbf, 0xb6, 0x30, - 0x74, 0x28, 0x0d, 0xb0, 0x40, 0xf1, 0x03, 0x79, 0x26, 0xb4, 0xd5, 0x2b, 0x9e, 0x6a, 0xe9, 0xff, - 0x90, 0x86, 0x95, 0x76, 0x18, 0x8e, 0x89, 0x67, 0x45, 0xb7, 0xec, 0x4f, 0x66, 0x6f, 0xd9, 0xfb, - 0x0b, 0x67, 0x38, 0xa3, 0x32, 0x5b, 0xe5, 0xab, 0x24, 0x99, 0x8e, 0x93, 0xa4, 0xfe, 0x75, 0x2a, - 0x2a, 0xef, 0xef, 0x25, 0xce, 0x4d, 0x75, 0xed, 0xfc, 0xa2, 0x76, 0x2b, 0x69, 0x89, 0xf6, 0xbd, - 0x13, 0xcf, 0x3f, 0xf3, 0xd0, 0x9b, 0xbc, 0xdc, 0xef, 0xb4, 0x9e, 0x6a, 0xa9, 0xea, 0xed, 0xf3, - 0x8b, 0x1a, 0x9a, 0x01, 0x61, 0xea, 0xd1, 0x33, 0x6e, 0xa9, 0xdb, 0xea, 0x34, 0xf9, 0x7d, 0x98, - 0x5e, 0x60, 0xa9, 0x4b, 0x3d, 0xdb, 0xf1, 0x06, 0xe8, 0x2d, 0xc8, 0xb7, 0x7b, 0xbd, 0xbe, 0x28, - 0xc0, 0x5e, 0x3b, 0xbf, 0xa8, 0xdd, 0x9c, 0x41, 0xf1, 0x06, 0xb5, 0x39, 0x88, 0x13, 0x44, 0x7e, - 0x53, 0x2e, 0x00, 0x71, 0xee, 0x42, 0x6d, 0x15, 0xe1, 0xff, 0x9e, 0x06, 0xcd, 0xb0, 0x2c, 0x3a, - 0x62, 0xbc, 0x5f, 0x91, 0xee, 0x7d, 0x28, 0x8c, 0xf8, 0x3f, 0x47, 0x14, 0x11, 0x3c, 0x2c, 0x1e, - 0x2c, 0x7c, 0xe2, 0x9d, 0xd3, 0xab, 0x63, 0xdf, 0xa5, 0x86, 0x3d, 0x74, 0xc2, 0x90, 0x17, 0x97, - 0x42, 0x86, 0x63, 0x4b, 0xd5, 0x5f, 0xa5, 0xe0, 0xe6, 0x02, 0x04, 0xfa, 0x00, 0xb2, 0x81, 0xef, - 0x46, 0xdb, 0x73, 0xf7, 0x65, 0x0f, 0x30, 0x5c, 0x15, 0x0b, 0x24, 0x5a, 0x07, 0x20, 0x63, 0xe6, - 0x13, 0x31, 0xbe, 0xd8, 0x98, 0x02, 0x4e, 0x48, 0xd0, 0x53, 0xc8, 0x87, 0xd4, 0x0a, 0x68, 0xc4, - 0x67, 0x3e, 0xfb, 0xff, 0x7a, 0x5f, 0xef, 0x09, 0x33, 0x58, 0x99, 0xab, 0xd6, 0x21, 0x2f, 0x25, - 0x3c, 0xa2, 0x6d, 0xc2, 0x88, 0x70, 0xba, 0x8c, 0xc5, 0x7f, 0x1e, 0x28, 0xc4, 0x1d, 0x44, 0x81, - 0x42, 0xdc, 0x81, 0xfe, 0xb3, 0x34, 0x40, 0xeb, 0x19, 0xa3, 0x81, 0x47, 0xdc, 0x86, 0x81, 0x5a, - 0x89, 0x0c, 0x29, 0x67, 0xfb, 0x83, 0x85, 0xcf, 0x72, 0xb1, 0x46, 0xbd, 0x61, 0x2c, 0xc8, 0x91, - 0x77, 0x20, 0x33, 0x0e, 0x5c, 0xf5, 0xc4, 0x2b, 0x88, 0x48, 0x1f, 0xef, 0x60, 0x2e, 0x43, 0xad, - 0x69, 0x46, 0xca, 0xbc, 0xfc, 0x6d, 0x3e, 0x31, 0xc0, 0x6f, 0x3f, 0x2b, 0xbd, 0x07, 0x30, 0xf5, - 0x1a, 0xad, 0x43, 0xae, 0xb1, 0xdd, 0xeb, 0xed, 0x68, 0x4b, 0xb2, 0x46, 0x9c, 0x76, 0x09, 0xb1, - 0xfe, 0xf7, 0x29, 0x28, 0x34, 0x0c, 0x75, 0xab, 0x6c, 0x83, 0x26, 0x72, 0x89, 0x45, 0x03, 0x66, - 0xd2, 0x67, 0x23, 0x27, 0x98, 0xa8, 0x74, 0x70, 0x3d, 0x8b, 0x5f, 0xe1, 0x5a, 0x0d, 0x1a, 0xb0, - 0x96, 0xd0, 0x41, 0x18, 0xca, 0x54, 0x4d, 0xd1, 0xb4, 0x48, 0x94, 0x9c, 0xd7, 0xaf, 0x5f, 0x0a, - 0xc9, 0xfe, 0xa6, 0xed, 0x10, 0x97, 0x22, 0x23, 0x0d, 0x12, 0xea, 0x07, 0x70, 0x73, 0x2f, 0xb0, - 0x8e, 0x69, 0xc8, 0xe4, 0xa0, 0xca, 0xe5, 0xcf, 0xe0, 0x2e, 0x23, 0xe1, 0x89, 0x79, 0xec, 0x84, - 0xcc, 0x0f, 0x26, 0x66, 0x40, 0x19, 0xf5, 0x78, 0xbf, 0x29, 0xbe, 0x00, 0xa8, 0x1a, 0xfc, 0x0e, - 0xc7, 0x3c, 0x96, 0x10, 0x1c, 0x21, 0x76, 0x38, 0x40, 0x6f, 0x43, 0x99, 0x13, 0xb6, 0x26, 0x3d, - 0x22, 0x63, 0x97, 0x85, 0xe8, 0x13, 0x00, 0xd7, 0x1f, 0x98, 0xaf, 0x9c, 0xc9, 0x8b, 0xae, 0x3f, - 0x90, 0x7f, 0xf5, 0xdf, 0x07, 0xad, 0xe9, 0x84, 0x23, 0xc2, 0xac, 0xe3, 0xe8, 0x71, 0x01, 0x3d, - 0x02, 0xed, 0x98, 0x92, 0x80, 0x1d, 0x52, 0xc2, 0xcc, 0x11, 0x0d, 0x1c, 0xdf, 0x7e, 0xa5, 0x25, - 0x5d, 0x8d, 0xb5, 0xba, 0x42, 0x49, 0xff, 0x75, 0x0a, 0x00, 0x93, 0xa3, 0x88, 0x00, 0xfc, 0x10, - 0x6e, 0x84, 0x1e, 0x19, 0x85, 0xc7, 0x3e, 0x33, 0x1d, 0x8f, 0xd1, 0xe0, 0x94, 0xb8, 0xaa, 0x40, - 0xd4, 0xa2, 0x8e, 0xb6, 0x92, 0xa3, 0xf7, 0x00, 0x9d, 0x50, 0x3a, 0x32, 0x7d, 0xd7, 0x36, 0xa3, - 0x4e, 0xf9, 0x89, 0x22, 0x8b, 0x35, 0xde, 0xb3, 0xe7, 0xda, 0xbd, 0x48, 0x8e, 0xb6, 0x60, 0x9d, - 0xaf, 0x00, 0xf5, 0x58, 0xe0, 0xd0, 0xd0, 0x3c, 0xf2, 0x03, 0x33, 0x74, 0xfd, 0x33, 0xf3, 0xc8, - 0x77, 0x5d, 0xff, 0x8c, 0x06, 0x51, 0xf9, 0x5d, 0x75, 0xfd, 0x41, 0x4b, 0x82, 0xb6, 0xfd, 0xa0, - 0xe7, 0xfa, 0x67, 0xdb, 0x11, 0x82, 0xb3, 0x84, 0xe9, 0xb4, 0x99, 0x63, 0x9d, 0x44, 0x2c, 0x21, - 0x96, 0xee, 0x3b, 0xd6, 0x09, 0x7a, 0x0b, 0x2a, 0xd4, 0xa5, 0xa2, 0x88, 0x93, 0xa8, 0x9c, 0x40, - 0x95, 0x23, 0x21, 0x07, 0xe9, 0x87, 0x50, 0x91, 0x87, 0x3e, 0x54, 0x73, 0xdf, 0x00, 0x5e, 0xf9, - 0x9b, 0x32, 0x27, 0xc8, 0x67, 0x96, 0x0a, 0x86, 0x21, 0x79, 0xa6, 0x60, 0xe8, 0x03, 0xb8, 0x35, - 0x05, 0x98, 0x01, 0x3d, 0x75, 0xc2, 0xf8, 0xeb, 0x4f, 0x05, 0xa3, 0x18, 0x89, 0xa3, 0x1e, 0xfd, - 0x77, 0xa0, 0xd8, 0x75, 0x89, 0x25, 0x3e, 0x36, 0xf1, 0xb2, 0xdb, 0xf2, 0x3d, 0x1e, 0x68, 0x8e, - 0xc7, 0x64, 0x06, 0x2e, 0xe2, 0xa4, 0x48, 0xff, 0x09, 0xc0, 0x4f, 0x7d, 0xc7, 0xdb, 0xf7, 0x4f, - 0xa8, 0x27, 0xde, 0xe5, 0x39, 0xb3, 0x56, 0xe1, 0x52, 0xc4, 0xaa, 0x25, 0x78, 0x3f, 0xf1, 0xc8, - 0x80, 0x06, 0xf1, 0xf3, 0xb4, 0x6c, 0xf2, 0x0b, 0x2c, 0x8f, 0x7d, 0x9f, 0x35, 0x0c, 0x54, 0x83, - 0xbc, 0x45, 0xcc, 0xe8, 0x74, 0x97, 0xb7, 0x8a, 0x57, 0x97, 0x1b, 0xb9, 0x86, 0xf1, 0x84, 0x4e, - 0x70, 0xce, 0x22, 0x4f, 0xe8, 0x84, 0xdf, 0xf0, 0x16, 0x11, 0x67, 0x52, 0x98, 0x29, 0xcb, 0x1b, - 0xbe, 0x61, 0xf0, 0x03, 0x87, 0xf3, 0x16, 0xe1, 0xbf, 0xe8, 0x03, 0x28, 0x2b, 0x90, 0x79, 0x4c, - 0xc2, 0x63, 0xc9, 0x87, 0xb7, 0x56, 0xae, 0x2e, 0x37, 0x40, 0x22, 0x1f, 0x93, 0xf0, 0x18, 0x83, - 0x44, 0xf3, 0xff, 0xa8, 0x05, 0xa5, 0x2f, 0x7d, 0xc7, 0x33, 0x99, 0x98, 0x84, 0xaa, 0xd6, 0x17, - 0x9e, 0xd1, 0xe9, 0x54, 0xd5, 0x13, 0x02, 0x7c, 0x19, 0x4b, 0xf4, 0x7f, 0x4d, 0x41, 0x89, 0xdb, - 0x74, 0x8e, 0x1c, 0x8b, 0xdf, 0xc8, 0xdf, 0xfd, 0x36, 0xb9, 0x03, 0x19, 0x2b, 0x0c, 0xd4, 0xdc, - 0x44, 0x3a, 0x6d, 0xf4, 0x30, 0xe6, 0x32, 0xf4, 0x39, 0xe4, 0x65, 0x01, 0xa3, 0x2e, 0x12, 0xfd, - 0xdb, 0xb9, 0x83, 0x72, 0x51, 0xe9, 0x89, 0xbd, 0x9c, 0x7a, 0x27, 0x66, 0x59, 0xc6, 0x49, 0x11, - 0xba, 0x0d, 0x69, 0xcb, 0x13, 0x81, 0xa7, 0xbe, 0xd7, 0x35, 0x3a, 0x38, 0x6d, 0x79, 0xfa, 0x3f, - 0xa7, 0xa0, 0xd2, 0xf2, 0xac, 0x60, 0x22, 0x12, 0x31, 0xdf, 0x88, 0xbb, 0x50, 0x0c, 0xc7, 0x87, - 0xe1, 0x24, 0x64, 0x74, 0x18, 0x7d, 0x0e, 0x88, 0x05, 0xa8, 0x0d, 0x45, 0xe2, 0x0e, 0xfc, 0xc0, - 0x61, 0xc7, 0x43, 0xc5, 0xbf, 0x17, 0x27, 0xff, 0xa4, 0xcd, 0xba, 0x11, 0xa9, 0xe0, 0xa9, 0x76, - 0x94, 0xee, 0x33, 0xc2, 0x59, 0x91, 0xee, 0xdf, 0x84, 0xb2, 0x4b, 0x86, 0x9c, 0x6e, 0x9b, 0xbc, - 0xac, 0x13, 0xf3, 0xc8, 0xe2, 0x92, 0x92, 0xf1, 0x52, 0x55, 0xd7, 0xa1, 0x18, 0x1b, 0x43, 0xab, - 0x50, 0x32, 0x5a, 0x3d, 0xf3, 0xc3, 0xcd, 0x07, 0xe6, 0xa3, 0xc6, 0xae, 0xb6, 0xa4, 0xd8, 0xc6, - 0x3f, 0xa6, 0xa0, 0xb2, 0x2b, 0x63, 0x50, 0x91, 0xb3, 0xb7, 0x60, 0x39, 0x20, 0x47, 0x2c, 0xa2, - 0x8f, 0x59, 0x19, 0x5c, 0x3c, 0xd1, 0x70, 0xfa, 0xc8, 0xbb, 0x16, 0xd3, 0xc7, 0xc4, 0xc7, 0xa8, - 0xcc, 0xb5, 0x1f, 0xa3, 0xb2, 0xbf, 0x95, 0x8f, 0x51, 0xfa, 0x2f, 0x53, 0xb0, 0x1a, 0x1d, 0x5a, - 0xf5, 0x01, 0x66, 0x61, 0x49, 0xf0, 0x09, 0xac, 0xaa, 0x63, 0x2f, 0x6e, 0x44, 0x53, 0x3d, 0x18, - 0x14, 0xb7, 0x6e, 0x5c, 0x5d, 0x6e, 0xa8, 0x3c, 0x72, 0xc0, 0x7b, 0xda, 0x4d, 0x5c, 0x09, 0x13, - 0x4d, 0x1b, 0xfd, 0x58, 0xbd, 0xce, 0x66, 0x5e, 0x4e, 0x53, 0xe7, 0x3c, 0xa8, 0x4f, 0x9f, 0x6c, - 0x13, 0x65, 0x74, 0x36, 0x59, 0x46, 0xeb, 0xf7, 0x20, 0xcb, 0x51, 0x08, 0x20, 0xdf, 0xfb, 0xa2, - 0xb7, 0xdf, 0xda, 0x95, 0x05, 0xde, 0x76, 0x5b, 0x7c, 0x1b, 0x5b, 0x86, 0x4c, 0xab, 0x73, 0xa0, - 0xa5, 0xdf, 0xfd, 0x75, 0x06, 0x8a, 0xf1, 0xc3, 0x01, 0x3f, 0x12, 0x9c, 0xad, 0x2e, 0xc9, 0xe7, - 0xc3, 0x58, 0xde, 0x11, 0x3c, 0xb5, 0x68, 0xec, 0xec, 0xec, 0x35, 0x8c, 0xfd, 0x56, 0x53, 0xfb, - 0x5c, 0xd2, 0xd9, 0x18, 0x60, 0xb8, 0xae, 0xcf, 0x83, 0xda, 0x46, 0xfa, 0x94, 0xce, 0x3e, 0x57, - 0x8f, 0x94, 0x31, 0x2a, 0xe2, 0xb2, 0x6f, 0x43, 0xc1, 0xe8, 0xf5, 0xda, 0x8f, 0x3a, 0xad, 0xa6, - 0xf6, 0x55, 0xaa, 0xfa, 0xbd, 0xf3, 0x8b, 0xda, 0x8d, 0xa9, 0xa9, 0x30, 0x74, 0x06, 0x1e, 0xb5, - 0x05, 0xaa, 0xd1, 0x68, 0x75, 0xf9, 0x78, 0xcf, 0xd3, 0xf3, 0x28, 0x41, 0xe2, 0xc4, 0x07, 0x87, - 0x62, 0x17, 0xb7, 0xba, 0x06, 0xe6, 0x23, 0x7e, 0x95, 0x9e, 0xf3, 0xab, 0x1b, 0xd0, 0x11, 0x09, - 0xf8, 0x98, 0xeb, 0xd1, 0x87, 0xb7, 0xe7, 0x19, 0xf9, 0x28, 0x3d, 0x7d, 0x2d, 0xa1, 0xc4, 0x9e, - 0xf0, 0xd1, 0xc4, 0x2b, 0x93, 0x30, 0x93, 0x99, 0x1b, 0xad, 0xc7, 0x48, 0xc0, 0xb8, 0x15, 0x1d, - 0x96, 0x71, 0xbf, 0xd3, 0x11, 0xb3, 0xcb, 0xce, 0xcd, 0x0e, 0x8f, 0x3d, 0x8f, 0x63, 0xee, 0x41, - 0x21, 0x7a, 0x84, 0xd2, 0xbe, 0xca, 0xce, 0x39, 0xd4, 0x88, 0x5e, 0xd0, 0xc4, 0x80, 0x8f, 0xfb, - 0xfb, 0xe2, 0xbb, 0xe0, 0xf3, 0xdc, 0xfc, 0x80, 0xc7, 0x63, 0x66, 0xf3, 0x02, 0xa2, 0x16, 0x33, - 0xfa, 0xaf, 0x72, 0x92, 0x48, 0xc5, 0x18, 0x49, 0xe7, 0xb9, 0x1d, 0xdc, 0xfa, 0xa9, 0xfc, 0x84, - 0xf8, 0x3c, 0x3f, 0x67, 0x07, 0xd3, 0x2f, 0xa9, 0xc5, 0xa8, 0x3d, 0x7d, 0x73, 0x8f, 0xbb, 0xde, - 0xfd, 0x03, 0x28, 0x44, 0x09, 0x11, 0xad, 0x43, 0xfe, 0xe9, 0x1e, 0x7e, 0xd2, 0xc2, 0xda, 0x92, - 0x5c, 0x9d, 0xa8, 0xe7, 0xa9, 0xbc, 0x51, 0x6a, 0xb0, 0xbc, 0x6b, 0x74, 0x8c, 0x47, 0x2d, 0x1c, - 0xbd, 0xf9, 0x47, 0x00, 0x75, 0xaa, 0xab, 0x9a, 0x1a, 0x20, 0xb6, 0xb9, 0x75, 0xf7, 0xeb, 0x6f, - 0xd6, 0x97, 0x7e, 0xf1, 0xcd, 0xfa, 0xd2, 0xaf, 0xbe, 0x59, 0x4f, 0x3d, 0xbf, 0x5a, 0x4f, 0x7d, - 0x7d, 0xb5, 0x9e, 0xfa, 0xf9, 0xd5, 0x7a, 0xea, 0x3f, 0xae, 0xd6, 0x53, 0x87, 0x79, 0xc1, 0x6a, - 0x3f, 0xfa, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xbc, 0x27, 0xa7, 0x82, 0x04, 0x23, 0x00, 0x00, + 0xa4, 0x0a, 0x32, 0xcd, 0x62, 0x4a, 0xec, 0x7d, 0xcf, 0x9d, 0xe0, 0xb8, 0x17, 0x3d, 0x86, 0xf2, + 0xa1, 0xe3, 0xd9, 0xa6, 0x3f, 0x92, 0x39, 0x2f, 0xf7, 0xf2, 0x00, 0x94, 0x5e, 0x6d, 0x3b, 0x9e, + 0xbd, 0x2f, 0xc1, 0xb8, 0x74, 0x38, 0x6d, 0xa0, 0x36, 0xac, 0x9e, 0xfa, 0xee, 0x78, 0x48, 0x63, + 0x5b, 0x79, 0x61, 0xeb, 0x9d, 0x97, 0xdb, 0x3a, 0x10, 0xf8, 0xc8, 0xda, 0xca, 0x69, 0xb2, 0x89, + 0x9e, 0xc0, 0x0a, 0x1b, 0x8e, 0x8e, 0xc2, 0xd8, 0xdc, 0xb2, 0x30, 0xf7, 0xfd, 0x6b, 0x16, 0x8c, + 0xc3, 0x23, 0x6b, 0x65, 0x96, 0x68, 0x55, 0xfe, 0x24, 0x03, 0xa5, 0x84, 0xe7, 0xa8, 0x0b, 0xa5, + 0x51, 0xe0, 0x8f, 0xc8, 0x40, 0xe4, 0x6d, 0xb5, 0x17, 0x1f, 0xbd, 0xd2, 0xac, 0x6b, 0x9d, 0xa9, + 0x22, 0x4e, 0x5a, 0xd1, 0x2f, 0xd2, 0x50, 0x4a, 0x74, 0xa2, 0xf7, 0xa0, 0x80, 0x3b, 0xb8, 0x75, + 0x60, 0xf4, 0x9a, 0xda, 0x52, 0xe5, 0xee, 0xf9, 0x45, 0x75, 0x5d, 0x58, 0x4b, 0x1a, 0xe8, 0x04, + 0xce, 0x29, 0x0f, 0xbd, 0xfb, 0xb0, 0x1c, 0x41, 0x53, 0x95, 0xd7, 0xcf, 0x2f, 0xaa, 0xaf, 0xcd, + 0x43, 0x13, 0x48, 0xdc, 0x7d, 0x6c, 0xe0, 0x66, 0x43, 0x4b, 0x2f, 0x46, 0xe2, 0xee, 0x31, 0x09, + 0xa8, 0x8d, 0xbe, 0x0f, 0x79, 0x05, 0xcc, 0x54, 0x2a, 0xe7, 0x17, 0xd5, 0xdb, 0xf3, 0xc0, 0x29, + 0x0e, 0x77, 0x77, 0x8d, 0x83, 0xa6, 0x96, 0x5d, 0x8c, 0xc3, 0x5d, 0x97, 0x9c, 0x52, 0xf4, 0x36, + 0xe4, 0x24, 0x2c, 0x57, 0xb9, 0x73, 0x7e, 0x51, 0xfd, 0xde, 0x0b, 0xe6, 0x38, 0xaa, 0xb2, 0xfe, + 0xe7, 0x7f, 0xbd, 0xb1, 0xf4, 0x0f, 0x7f, 0xb3, 0xa1, 0xcd, 0x77, 0x57, 0xfe, 0x37, 0x05, 0x2b, + 0x33, 0x5b, 0x8e, 0x74, 0xc8, 0x7b, 0xbe, 0xe5, 0x8f, 0x64, 0x3a, 0x2f, 0x6c, 0xc3, 0xd5, 0xe5, + 0x66, 0xbe, 0xed, 0xd7, 0xfd, 0xd1, 0x04, 0xab, 0x1e, 0xf4, 0x64, 0xee, 0x42, 0xfa, 0xf8, 0x15, + 0xe3, 0x69, 0xe1, 0x95, 0xf4, 0x19, 0xac, 0xd8, 0x81, 0x73, 0x4a, 0x03, 0xd3, 0xf2, 0xbd, 0x23, + 0x67, 0xa0, 0x52, 0x75, 0x65, 0x91, 0xcd, 0x86, 0x00, 0xe2, 0xb2, 0x54, 0xa8, 0x0b, 0xfc, 0xaf, + 0x71, 0x19, 0x55, 0x0e, 0xa0, 0x9c, 0x8c, 0x50, 0xf4, 0x06, 0x40, 0xe8, 0xfc, 0x01, 0x55, 0xfc, + 0x46, 0xb0, 0x21, 0x5c, 0xe4, 0x12, 0xc1, 0x6e, 0xd0, 0x3b, 0x90, 0x1d, 0xfa, 0xb6, 0xb4, 0x93, + 0xdb, 0xbe, 0xc9, 0xef, 0xc4, 0x7f, 0xbd, 0xdc, 0x2c, 0xf9, 0x61, 0x6d, 0xc7, 0x71, 0xe9, 0x9e, + 0x6f, 0x53, 0x2c, 0x00, 0xfa, 0x29, 0x64, 0x79, 0xaa, 0x40, 0xaf, 0x43, 0x76, 0xbb, 0xd5, 0x6e, + 0x68, 0x4b, 0x95, 0x1b, 0xe7, 0x17, 0xd5, 0x15, 0xb1, 0x24, 0xbc, 0x83, 0xc7, 0x2e, 0xda, 0x84, + 0xfc, 0xc1, 0xfe, 0x6e, 0x7f, 0x8f, 0x87, 0xd7, 0xcd, 0xf3, 0x8b, 0xea, 0x5a, 0xdc, 0x2d, 0x17, + 0x0d, 0xbd, 0x01, 0xb9, 0xde, 0x5e, 0x67, 0xa7, 0xab, 0xa5, 0x2b, 0xe8, 0xfc, 0xa2, 0xba, 0x1a, + 0xf7, 0x0b, 0x9f, 0x2b, 0x37, 0xd4, 0xae, 0x16, 0x63, 0xb9, 0xfe, 0x3f, 0x69, 0x58, 0xc1, 0x9c, + 0xdf, 0x06, 0xac, 0xe3, 0xbb, 0x8e, 0x35, 0x41, 0x1d, 0x28, 0x5a, 0xbe, 0x67, 0x3b, 0x89, 0x33, + 0xb5, 0xf5, 0x92, 0x4b, 0x70, 0xaa, 0x15, 0xb5, 0xea, 0x91, 0x26, 0x9e, 0x1a, 0x41, 0x5b, 0x90, + 0xb3, 0xa9, 0x4b, 0x26, 0xd7, 0xdd, 0xc6, 0x0d, 0xc5, 0xa5, 0xb1, 0x84, 0x0a, 0xe6, 0x48, 0x9e, + 0x99, 0x84, 0x31, 0x3a, 0x1c, 0x31, 0x79, 0x1b, 0x67, 0x71, 0x69, 0x48, 0x9e, 0x19, 0x4a, 0x84, + 0x7e, 0x08, 0xf9, 0x33, 0xc7, 0xb3, 0xfd, 0x33, 0x75, 0xe1, 0x5e, 0x6f, 0x57, 0x61, 0xf5, 0x73, + 0x7e, 0xcf, 0xce, 0x39, 0xcb, 0x57, 0xbd, 0xbd, 0xdf, 0x6e, 0x46, 0xab, 0xae, 0xfa, 0xf7, 0xbd, + 0xb6, 0xef, 0xf1, 0x13, 0x03, 0xfb, 0x6d, 0x73, 0xc7, 0x68, 0xed, 0xf6, 0x31, 0x5f, 0xf9, 0x5b, + 0xe7, 0x17, 0x55, 0x2d, 0x86, 0xec, 0x10, 0xc7, 0xe5, 0x24, 0xf0, 0x0e, 0x64, 0x8c, 0xf6, 0x17, + 0x5a, 0xba, 0xa2, 0x9d, 0x5f, 0x54, 0xcb, 0x71, 0xb7, 0xe1, 0x4d, 0xa6, 0x87, 0x69, 0x7e, 0x5c, + 0xfd, 0xdf, 0xd3, 0x50, 0xee, 0x8f, 0x6c, 0xc2, 0xa8, 0x8c, 0x4c, 0x54, 0x85, 0xd2, 0x88, 0x04, + 0xc4, 0x75, 0xa9, 0xeb, 0x84, 0x43, 0x55, 0x28, 0x24, 0x45, 0xe8, 0xc1, 0x77, 0x58, 0x4c, 0x45, + 0xc2, 0xd4, 0x92, 0xf6, 0x61, 0xf5, 0x48, 0x3a, 0x6b, 0x12, 0x4b, 0xec, 0x6e, 0x46, 0xec, 0x6e, + 0x6d, 0x91, 0x89, 0xa4, 0x57, 0x35, 0x35, 0x47, 0x43, 0x68, 0xe1, 0x95, 0xa3, 0x64, 0x13, 0x7d, + 0x02, 0xcb, 0x43, 0xdf, 0x73, 0x98, 0x1f, 0xbc, 0xd2, 0x3e, 0x44, 0x60, 0xf4, 0x1e, 0xdc, 0xe0, + 0x3b, 0x1c, 0xb9, 0x24, 0xba, 0xc5, 0xcd, 0x95, 0xc6, 0x6b, 0x43, 0xf2, 0x4c, 0x8d, 0x89, 0xb9, + 0x58, 0xff, 0x04, 0x56, 0x66, 0x7c, 0xe0, 0xb7, 0x79, 0xc7, 0xe8, 0x77, 0x9b, 0xda, 0x12, 0x2a, + 0x43, 0xa1, 0xbe, 0xdf, 0xee, 0xb5, 0xda, 0x7d, 0x4e, 0x3d, 0xca, 0x50, 0xc0, 0xfb, 0xbb, 0xbb, + 0xdb, 0x46, 0xfd, 0x89, 0x96, 0xd6, 0xff, 0x3b, 0x5e, 0x5f, 0xc5, 0x3d, 0xb6, 0x67, 0xb9, 0xc7, + 0xfb, 0x2f, 0x9f, 0xba, 0x62, 0x1f, 0xd3, 0x46, 0xcc, 0x41, 0x7e, 0x0c, 0x20, 0xb6, 0x91, 0xda, + 0x26, 0x61, 0xd7, 0xd5, 0x17, 0xbd, 0xa8, 0x72, 0xc4, 0x45, 0xa5, 0x60, 0x30, 0xf4, 0x39, 0x94, + 0x2d, 0x7f, 0x38, 0x72, 0xa9, 0xd2, 0xcf, 0xbc, 0x8a, 0x7e, 0x29, 0x56, 0x31, 0x58, 0x92, 0x03, + 0x65, 0x67, 0x39, 0xd0, 0x9f, 0xa6, 0xa0, 0x94, 0x70, 0x78, 0x96, 0x0a, 0x95, 0xa1, 0xd0, 0xef, + 0x34, 0x8c, 0x5e, 0xab, 0xfd, 0x48, 0x4b, 0x21, 0x80, 0xbc, 0x58, 0xc0, 0x86, 0x96, 0xe6, 0x74, + 0xad, 0xbe, 0xbf, 0xd7, 0xd9, 0x6d, 0x0a, 0x32, 0x84, 0x6e, 0x81, 0x16, 0x2d, 0xa1, 0xd9, 0xed, + 0x19, 0x98, 0x4b, 0xb3, 0xe8, 0x26, 0xac, 0xc5, 0x52, 0xa5, 0x99, 0x43, 0xb7, 0x01, 0xc5, 0xc2, + 0xa9, 0x89, 0xbc, 0xfe, 0x47, 0xb0, 0x56, 0xf7, 0x3d, 0x46, 0x1c, 0x2f, 0xa6, 0xb2, 0x5b, 0x7c, + 0xde, 0x4a, 0x64, 0x3a, 0xb6, 0xcc, 0xb6, 0xdb, 0x6b, 0x57, 0x97, 0x9b, 0xa5, 0x18, 0xda, 0x6a, + 0xf0, 0x99, 0x46, 0x0d, 0x9b, 0x9f, 0xa9, 0x91, 0x63, 0xab, 0xe4, 0xb9, 0x7c, 0x75, 0xb9, 0x99, + 0xe9, 0xb4, 0x1a, 0x98, 0xcb, 0xd0, 0xeb, 0x50, 0xa4, 0xcf, 0x1c, 0x66, 0x5a, 0x3c, 0xbb, 0xf2, + 0x35, 0xcc, 0xe1, 0x02, 0x17, 0xd4, 0x79, 0x32, 0xfd, 0xe3, 0x34, 0x40, 0x8f, 0x84, 0x27, 0x6a, + 0xe8, 0x87, 0x50, 0x8c, 0x8b, 0xf8, 0xeb, 0x8a, 0xc9, 0xc4, 0x7e, 0xc5, 0x78, 0xf4, 0x71, 0x14, + 0x31, 0x92, 0x63, 0x2f, 0x56, 0x54, 0x63, 0x2d, 0xa2, 0xa9, 0xb3, 0x44, 0x9a, 0xdf, 0x35, 0x34, + 0x08, 0xd4, 0xc6, 0xf1, 0x4f, 0x54, 0x17, 0xf9, 0x56, 0xce, 0x59, 0x31, 0xb7, 0xb7, 0x16, 0x0d, + 0x32, 0xb7, 0xa0, 0x8f, 0x97, 0xf0, 0x54, 0x6f, 0x5b, 0x83, 0xd5, 0x60, 0xec, 0x71, 0xaf, 0xcd, + 0x50, 0x74, 0xeb, 0x0e, 0xbc, 0xd6, 0xa6, 0xec, 0xcc, 0x0f, 0x4e, 0x0c, 0xc6, 0x88, 0x75, 0xcc, + 0x8b, 0x6a, 0x95, 0x64, 0xa6, 0x84, 0x33, 0x35, 0x43, 0x38, 0xd7, 0x61, 0x99, 0xb8, 0x0e, 0x09, + 0xa9, 0xbc, 0xa5, 0x8b, 0x38, 0x6a, 0x72, 0x5a, 0x4c, 0x6c, 0x3b, 0xa0, 0x61, 0x48, 0x65, 0x19, + 0x58, 0xc4, 0x53, 0x81, 0xfe, 0xcf, 0x69, 0x80, 0x56, 0xc7, 0xd8, 0x53, 0xe6, 0x1b, 0x90, 0x3f, + 0x22, 0x43, 0xc7, 0x9d, 0x5c, 0x77, 0xc8, 0xa6, 0xf8, 0x9a, 0x21, 0x0d, 0xed, 0x08, 0x1d, 0xac, + 0x74, 0x05, 0x5b, 0x1e, 0x1f, 0x7a, 0x94, 0xc5, 0x6c, 0x59, 0xb4, 0xf8, 0xd5, 0x1c, 0x10, 0x2f, + 0x5e, 0x58, 0xd9, 0xe0, 0xae, 0x0f, 0x08, 0xa3, 0x67, 0x64, 0x12, 0x9d, 0x09, 0xd5, 0x44, 0x8f, + 0x39, 0x8b, 0xe6, 0xc5, 0x3d, 0xb5, 0xd7, 0x73, 0x82, 0x7b, 0x7c, 0x9b, 0x3f, 0x58, 0xc1, 0x25, + 0xe9, 0x88, 0xb5, 0x2b, 0x0f, 0xc5, 0x4d, 0x39, 0xed, 0xfa, 0x4e, 0x45, 0xec, 0x87, 0xb0, 0x32, + 0x33, 0xcf, 0x17, 0xca, 0x94, 0x56, 0xe7, 0xe0, 0x87, 0x5a, 0x56, 0x7d, 0x7d, 0xa2, 0xe5, 0xf5, + 0xff, 0x4a, 0x01, 0x74, 0xfc, 0x20, 0xda, 0xb4, 0xc5, 0xcf, 0x42, 0x05, 0xf1, 0xc8, 0x64, 0xf9, + 0xae, 0x0a, 0xcf, 0x85, 0x3c, 0x7d, 0x6a, 0x85, 0xd3, 0x5e, 0x01, 0xc7, 0xb1, 0x22, 0xda, 0x84, + 0x92, 0xdc, 0x7f, 0x73, 0xe4, 0x07, 0x32, 0x1f, 0xad, 0x60, 0x90, 0x22, 0xae, 0x89, 0xee, 0xc1, + 0xea, 0x68, 0x7c, 0xe8, 0x3a, 0xe1, 0x31, 0xb5, 0x25, 0x26, 0x2b, 0x30, 0x2b, 0xb1, 0x94, 0xc3, + 0xf4, 0x06, 0x14, 0x22, 0xeb, 0x68, 0x1d, 0x32, 0xbd, 0x7a, 0x47, 0x5b, 0xaa, 0xac, 0x9d, 0x5f, + 0x54, 0x4b, 0x91, 0xb8, 0x57, 0xef, 0xf0, 0x9e, 0x7e, 0xa3, 0xa3, 0xa5, 0x66, 0x7b, 0xfa, 0x8d, + 0x4e, 0x25, 0xcb, 0x6f, 0x49, 0xfd, 0x2f, 0x53, 0x90, 0x97, 0x9c, 0x6d, 0xe1, 0x8c, 0x0d, 0x58, + 0x8e, 0x2a, 0x09, 0x49, 0x24, 0xdf, 0x79, 0x39, 0xe9, 0xab, 0x29, 0x8e, 0x26, 0xf7, 0x31, 0xd2, + 0xab, 0x7c, 0x0a, 0xe5, 0x64, 0xc7, 0x77, 0xda, 0xc5, 0x3f, 0x84, 0x12, 0x0f, 0x94, 0x88, 0xfc, + 0x6d, 0x41, 0x5e, 0xf2, 0x4a, 0x95, 0x55, 0xae, 0x63, 0xa0, 0x0a, 0x89, 0x1e, 0xc0, 0xb2, 0x64, + 0xad, 0xd1, 0x7b, 0xca, 0xc6, 0xf5, 0xe1, 0x88, 0x23, 0xb8, 0xfe, 0x19, 0x64, 0x3b, 0x94, 0x06, + 0xe8, 0x2d, 0x58, 0xf6, 0x7c, 0x9b, 0x4e, 0x93, 0xa8, 0x22, 0xdc, 0x36, 0x6d, 0x35, 0x38, 0xe1, + 0xb6, 0x69, 0xcb, 0xe6, 0x8b, 0xc7, 0x0f, 0x68, 0xf4, 0xa4, 0xc4, 0xbf, 0xf5, 0x1e, 0x94, 0x9f, + 0x52, 0x67, 0x70, 0xcc, 0xa8, 0x2d, 0x0c, 0xbd, 0x0f, 0xd9, 0x11, 0x8d, 0x9d, 0x5f, 0x5f, 0x18, + 0x3a, 0x94, 0x06, 0x58, 0xa0, 0xf8, 0x81, 0x3c, 0x13, 0xda, 0xea, 0x15, 0x4f, 0xb5, 0xf4, 0xbf, + 0x4b, 0xc3, 0x6a, 0x2b, 0x0c, 0xc7, 0xc4, 0xb3, 0xa2, 0x5b, 0xf6, 0x27, 0xb3, 0xb7, 0xec, 0xfd, + 0x85, 0x33, 0x9c, 0x51, 0x99, 0xad, 0xf2, 0x55, 0x92, 0x4c, 0xc7, 0x49, 0x52, 0xff, 0x3a, 0x15, + 0x95, 0xf7, 0xf7, 0x12, 0xe7, 0xa6, 0xb2, 0x7e, 0x7e, 0x51, 0xbd, 0x95, 0xb4, 0x44, 0xfb, 0xde, + 0x89, 0xe7, 0x9f, 0x79, 0xe8, 0x4d, 0x5e, 0xee, 0xb7, 0x9b, 0x4f, 0xb5, 0x54, 0xe5, 0xf6, 0xf9, + 0x45, 0x15, 0xcd, 0x80, 0x30, 0xf5, 0xe8, 0x19, 0xb7, 0xd4, 0x69, 0xb6, 0x1b, 0xfc, 0x3e, 0x4c, + 0x2f, 0xb0, 0xd4, 0xa1, 0x9e, 0xed, 0x78, 0x03, 0xf4, 0x16, 0xe4, 0x5b, 0xdd, 0x6e, 0x5f, 0x14, + 0x60, 0xaf, 0x9d, 0x5f, 0x54, 0x6f, 0xce, 0xa0, 0x78, 0x83, 0xda, 0x1c, 0xc4, 0x09, 0x22, 0xbf, + 0x29, 0x17, 0x80, 0x38, 0x77, 0xa1, 0xb6, 0x8a, 0xf0, 0x7f, 0x4b, 0x83, 0x66, 0x58, 0x16, 0x1d, + 0x31, 0xde, 0xaf, 0x48, 0x77, 0x0f, 0x0a, 0x23, 0xfe, 0xe5, 0x88, 0x22, 0x82, 0x87, 0xc5, 0x83, + 0x85, 0x4f, 0xbc, 0x73, 0x7a, 0x35, 0xec, 0xbb, 0xd4, 0xb0, 0x87, 0x4e, 0x18, 0xf2, 0xe2, 0x52, + 0xc8, 0x70, 0x6c, 0xa9, 0xf2, 0xcb, 0x14, 0xdc, 0x5c, 0x80, 0x40, 0x1f, 0x42, 0x36, 0xf0, 0xdd, + 0x68, 0x7b, 0xee, 0xbe, 0xec, 0x01, 0x86, 0xab, 0x62, 0x81, 0x44, 0x1b, 0x00, 0x64, 0xcc, 0x7c, + 0x22, 0xc6, 0x17, 0x1b, 0x53, 0xc0, 0x09, 0x09, 0x7a, 0x0a, 0xf9, 0x90, 0x5a, 0x01, 0x8d, 0xf8, + 0xcc, 0x67, 0xff, 0x5f, 0xef, 0x6b, 0x5d, 0x61, 0x06, 0x2b, 0x73, 0x95, 0x1a, 0xe4, 0xa5, 0x84, + 0x47, 0xb4, 0x4d, 0x18, 0x11, 0x4e, 0x97, 0xb1, 0xf8, 0xe6, 0x81, 0x42, 0xdc, 0x41, 0x14, 0x28, + 0xc4, 0x1d, 0xe8, 0x3f, 0x4b, 0x03, 0x34, 0x9f, 0x31, 0x1a, 0x78, 0xc4, 0xad, 0x1b, 0xa8, 0x99, + 0xc8, 0x90, 0x72, 0xb6, 0xef, 0x2e, 0x7c, 0x96, 0x8b, 0x35, 0x6a, 0x75, 0x63, 0x41, 0x8e, 0xbc, + 0x03, 0x99, 0x71, 0xe0, 0xaa, 0x27, 0x5e, 0x41, 0x44, 0xfa, 0x78, 0x17, 0x73, 0x19, 0x6a, 0x4e, + 0x33, 0x52, 0xe6, 0xe5, 0x6f, 0xf3, 0x89, 0x01, 0x7e, 0xf3, 0x59, 0xe9, 0x7d, 0x80, 0xa9, 0xd7, + 0x68, 0x03, 0x72, 0xf5, 0x9d, 0x6e, 0x77, 0x57, 0x5b, 0x92, 0x35, 0xe2, 0xb4, 0x4b, 0x88, 0xf5, + 0xbf, 0x4d, 0x41, 0xa1, 0x6e, 0xa8, 0x5b, 0x65, 0x07, 0x34, 0x91, 0x4b, 0x2c, 0x1a, 0x30, 0x93, + 0x3e, 0x1b, 0x39, 0xc1, 0x44, 0xa5, 0x83, 0xeb, 0x59, 0xfc, 0x2a, 0xd7, 0xaa, 0xd3, 0x80, 0x35, + 0x85, 0x0e, 0xc2, 0x50, 0xa6, 0x6a, 0x8a, 0xa6, 0x45, 0xa2, 0xe4, 0xbc, 0x71, 0xfd, 0x52, 0x48, + 0xf6, 0x37, 0x6d, 0x87, 0xb8, 0x14, 0x19, 0xa9, 0x93, 0x50, 0x3f, 0x80, 0x9b, 0xfb, 0x81, 0x75, + 0x4c, 0x43, 0x26, 0x07, 0x55, 0x2e, 0x7f, 0x06, 0x77, 0x19, 0x09, 0x4f, 0xcc, 0x63, 0x27, 0x64, + 0x7e, 0x30, 0x31, 0x03, 0xca, 0xa8, 0xc7, 0xfb, 0x4d, 0xf1, 0x0f, 0x80, 0xaa, 0xc1, 0xef, 0x70, + 0xcc, 0x63, 0x09, 0xc1, 0x11, 0x62, 0x97, 0x03, 0xf4, 0x16, 0x94, 0x39, 0x61, 0x6b, 0xd0, 0x23, + 0x32, 0x76, 0x59, 0x88, 0x7e, 0x04, 0xe0, 0xfa, 0x03, 0xf3, 0x95, 0x33, 0x79, 0xd1, 0xf5, 0x07, + 0xf2, 0x53, 0xff, 0x5d, 0xd0, 0x1a, 0x4e, 0x38, 0x22, 0xcc, 0x3a, 0x8e, 0x1e, 0x17, 0xd0, 0x23, + 0xd0, 0x8e, 0x29, 0x09, 0xd8, 0x21, 0x25, 0xcc, 0x1c, 0xd1, 0xc0, 0xf1, 0xed, 0x57, 0x5a, 0xd2, + 0xb5, 0x58, 0xab, 0x23, 0x94, 0xf4, 0x5f, 0xa5, 0x00, 0x30, 0x39, 0x8a, 0x08, 0xc0, 0x0f, 0xe0, + 0x46, 0xe8, 0x91, 0x51, 0x78, 0xec, 0x33, 0xd3, 0xf1, 0x18, 0x0d, 0x4e, 0x89, 0xab, 0x0a, 0x44, + 0x2d, 0xea, 0x68, 0x29, 0x39, 0x7a, 0x1f, 0xd0, 0x09, 0xa5, 0x23, 0xd3, 0x77, 0x6d, 0x33, 0xea, + 0x94, 0x7f, 0x51, 0x64, 0xb1, 0xc6, 0x7b, 0xf6, 0x5d, 0xbb, 0x1b, 0xc9, 0xd1, 0x36, 0x6c, 0xf0, + 0x15, 0xa0, 0x1e, 0x0b, 0x1c, 0x1a, 0x9a, 0x47, 0x7e, 0x60, 0x86, 0xae, 0x7f, 0x66, 0x1e, 0xf9, + 0xae, 0xeb, 0x9f, 0xd1, 0x20, 0x2a, 0xbf, 0x2b, 0xae, 0x3f, 0x68, 0x4a, 0xd0, 0x8e, 0x1f, 0x74, + 0x5d, 0xff, 0x6c, 0x27, 0x42, 0x70, 0x96, 0x30, 0x9d, 0x36, 0x73, 0xac, 0x93, 0x88, 0x25, 0xc4, + 0xd2, 0x9e, 0x63, 0x9d, 0xa0, 0xb7, 0x60, 0x85, 0xba, 0x54, 0x14, 0x71, 0x12, 0x95, 0x13, 0xa8, + 0x72, 0x24, 0xe4, 0x20, 0x4e, 0x96, 0xe4, 0xa1, 0x0f, 0xd5, 0xdc, 0x37, 0x81, 0x57, 0xfe, 0xa6, + 0xcc, 0x09, 0xf2, 0x99, 0x65, 0x05, 0xc3, 0x90, 0x3c, 0x53, 0x30, 0xfd, 0xb7, 0xa0, 0xd8, 0x71, + 0x89, 0x25, 0xfe, 0x3a, 0xe2, 0x45, 0xb4, 0xe5, 0x7b, 0x3c, 0x6c, 0x1c, 0x8f, 0xc9, 0x7c, 0x5a, + 0xc4, 0x49, 0x91, 0xfe, 0x13, 0x80, 0x9f, 0xfa, 0x8e, 0xd7, 0xf3, 0x4f, 0xa8, 0x27, 0x5e, 0xd9, + 0x39, 0x4f, 0x56, 0x9b, 0x5f, 0xc4, 0xaa, 0x25, 0x58, 0x3c, 0xf1, 0xc8, 0x80, 0x06, 0xf1, 0x63, + 0xb3, 0x6c, 0xf2, 0xeb, 0x28, 0x8f, 0x7d, 0x9f, 0xd5, 0x0d, 0x54, 0x85, 0xbc, 0x45, 0xcc, 0xe8, + 0xac, 0x96, 0xb7, 0x8b, 0x57, 0x97, 0x9b, 0xb9, 0xba, 0xf1, 0x84, 0x4e, 0x70, 0xce, 0x22, 0x4f, + 0xe8, 0x84, 0xdf, 0xd7, 0x16, 0x11, 0x27, 0x4c, 0x98, 0x29, 0xcb, 0xfb, 0xba, 0x6e, 0xf0, 0xe3, + 0x83, 0xf3, 0x16, 0xe1, 0xbf, 0xe8, 0x43, 0x28, 0x2b, 0x90, 0x79, 0x4c, 0xc2, 0x63, 0xc9, 0x6e, + 0xb7, 0x57, 0xaf, 0x2e, 0x37, 0x41, 0x22, 0x1f, 0x93, 0xf0, 0x18, 0x83, 0x44, 0xf3, 0x6f, 0xd4, + 0x84, 0xd2, 0x97, 0xbe, 0xe3, 0x99, 0x4c, 0x4c, 0x42, 0xd5, 0xde, 0x0b, 0x4f, 0xdc, 0x74, 0xaa, + 0xea, 0x41, 0x00, 0xbe, 0x8c, 0x25, 0xfa, 0xbf, 0xa4, 0xa0, 0xc4, 0x6d, 0x3a, 0x47, 0x8e, 0xc5, + 0xef, 0xd7, 0xef, 0x7e, 0x37, 0xdc, 0x81, 0x8c, 0x15, 0x06, 0x6a, 0x6e, 0x22, 0x39, 0xd6, 0xbb, + 0x18, 0x73, 0x19, 0xfa, 0x1c, 0xf2, 0xb2, 0x1c, 0x51, 0xd7, 0x82, 0xfe, 0xed, 0x4c, 0x40, 0xb9, + 0xa8, 0xf4, 0xc4, 0x5e, 0x4e, 0xbd, 0x13, 0xb3, 0x2c, 0xe3, 0xa4, 0x08, 0xdd, 0x86, 0xb4, 0xe5, + 0x89, 0x30, 0x52, 0xff, 0xbe, 0xd5, 0xdb, 0x38, 0x6d, 0x79, 0xfa, 0x3f, 0xa5, 0x60, 0xa5, 0xe9, + 0x59, 0xc1, 0x44, 0xa4, 0x55, 0xbe, 0x11, 0x77, 0xa1, 0x18, 0x8e, 0x0f, 0xc3, 0x49, 0xc8, 0xe8, + 0x30, 0x7a, 0xdc, 0x8f, 0x05, 0xa8, 0x05, 0x45, 0xe2, 0x0e, 0xfc, 0xc0, 0x61, 0xc7, 0x43, 0xc5, + 0xa6, 0x17, 0xa7, 0xf2, 0xa4, 0xcd, 0x9a, 0x11, 0xa9, 0xe0, 0xa9, 0x76, 0x94, 0xbc, 0x33, 0xc2, + 0x59, 0x91, 0xbc, 0xdf, 0x84, 0xb2, 0x4b, 0x86, 0x9c, 0x3c, 0x9b, 0xbc, 0x48, 0x13, 0xf3, 0xc8, + 0xe2, 0x92, 0x92, 0xf1, 0xc2, 0x53, 0xd7, 0xa1, 0x18, 0x1b, 0x43, 0x6b, 0x50, 0x32, 0x9a, 0x5d, + 0xf3, 0xa3, 0xad, 0x07, 0xe6, 0xa3, 0xfa, 0x9e, 0xb6, 0xa4, 0xb8, 0xc3, 0xdf, 0xa7, 0x60, 0x65, + 0x4f, 0xc6, 0xa0, 0xa2, 0x5a, 0x6f, 0xc1, 0x72, 0x40, 0x8e, 0x58, 0x44, 0x06, 0xb3, 0x32, 0xb8, + 0x78, 0xda, 0xe0, 0x64, 0x90, 0x77, 0x2d, 0x26, 0x83, 0x89, 0xbf, 0x96, 0x32, 0xd7, 0xfe, 0xb5, + 0x94, 0xfd, 0x8d, 0xfc, 0xb5, 0xa4, 0xff, 0x63, 0x0a, 0xd6, 0xd4, 0xd5, 0x1e, 0xfd, 0x9d, 0xb2, + 0x90, 0xe0, 0xbf, 0x0b, 0x45, 0x79, 0xca, 0x4d, 0x55, 0xf8, 0x17, 0xe5, 0xbf, 0x1e, 0x52, 0xb7, + 0xd5, 0xc0, 0x05, 0xd9, 0xdd, 0xb2, 0xd1, 0x8f, 0xd5, 0xdb, 0x6a, 0xe6, 0xe5, 0x24, 0x73, 0x6e, + 0xc4, 0xda, 0xf4, 0xc1, 0x35, 0x51, 0x04, 0x67, 0x93, 0x45, 0xb0, 0x7e, 0x0f, 0xb2, 0x1c, 0x85, + 0x00, 0xf2, 0xdd, 0x2f, 0xba, 0xbd, 0xe6, 0x9e, 0x2c, 0xcf, 0x76, 0x5a, 0xe2, 0x9f, 0xad, 0x65, + 0xc8, 0x34, 0xdb, 0x07, 0x5a, 0xfa, 0xbd, 0x5f, 0x65, 0xa0, 0x18, 0x97, 0xfd, 0xfc, 0x08, 0x70, + 0xae, 0xb9, 0x24, 0x1f, 0xff, 0x62, 0x79, 0x5b, 0xb0, 0xcc, 0xa2, 0xb1, 0xbb, 0xbb, 0x5f, 0x37, + 0x7a, 0xcd, 0x86, 0xf6, 0xb9, 0x24, 0xa3, 0x31, 0xc0, 0x70, 0x5d, 0x9f, 0x07, 0xb1, 0x8d, 0xf4, + 0x29, 0x19, 0x7d, 0xae, 0x9e, 0x18, 0x63, 0x54, 0xc4, 0x44, 0xdf, 0x86, 0x82, 0xd1, 0xed, 0xb6, + 0x1e, 0xb5, 0x9b, 0x0d, 0xed, 0xab, 0x54, 0xe5, 0x7b, 0xe7, 0x17, 0xd5, 0x1b, 0x53, 0x53, 0x61, + 0xe8, 0x0c, 0x3c, 0x6a, 0x0b, 0x54, 0xbd, 0xde, 0xec, 0xf0, 0xf1, 0x9e, 0xa7, 0xe7, 0x51, 0x82, + 0x82, 0x89, 0xbf, 0x0b, 0x8a, 0x1d, 0xdc, 0xec, 0x18, 0x98, 0x8f, 0xf8, 0x55, 0x7a, 0xce, 0xaf, + 0x4e, 0x40, 0x47, 0x24, 0xe0, 0x63, 0x6e, 0x44, 0x7f, 0x9b, 0x3d, 0xcf, 0xc8, 0x27, 0xe5, 0xe9, + 0x5b, 0x07, 0x25, 0xf6, 0x84, 0x8f, 0x26, 0xde, 0x88, 0x84, 0x99, 0xcc, 0xdc, 0x68, 0x5d, 0x46, + 0x02, 0xc6, 0xad, 0xe8, 0xb0, 0x8c, 0xfb, 0xed, 0xb6, 0x98, 0x5d, 0x76, 0x6e, 0x76, 0x78, 0xec, + 0x79, 0x1c, 0x73, 0x0f, 0x0a, 0xd1, 0x13, 0x92, 0xf6, 0x55, 0x76, 0xce, 0xa1, 0x7a, 0xf4, 0xfe, + 0x25, 0x06, 0x7c, 0xdc, 0xef, 0x89, 0x7f, 0xf5, 0x9e, 0xe7, 0xe6, 0x07, 0x3c, 0x1e, 0x33, 0x9b, + 0xd3, 0xff, 0x6a, 0xcc, 0xc7, 0xbf, 0xca, 0x49, 0x1a, 0x14, 0x63, 0x24, 0x19, 0xe7, 0x76, 0x70, + 0xf3, 0xa7, 0xf2, 0x0f, 0xc0, 0xe7, 0xf9, 0x39, 0x3b, 0x98, 0x7e, 0x49, 0x2d, 0x46, 0xed, 0xe9, + 0x8b, 0x79, 0xdc, 0xf5, 0xde, 0xef, 0x41, 0x21, 0x4a, 0x80, 0x68, 0x03, 0xf2, 0x4f, 0xf7, 0xf1, + 0x93, 0x26, 0xd6, 0x96, 0xe4, 0xea, 0x44, 0x3d, 0x4f, 0xe5, 0x0d, 0x52, 0x85, 0xe5, 0x3d, 0xa3, + 0x6d, 0x3c, 0x6a, 0xe2, 0xe8, 0xc5, 0x3e, 0x02, 0xa8, 0x53, 0x5c, 0xd1, 0xd4, 0x00, 0xb1, 0xcd, + 0xed, 0xbb, 0x5f, 0x7f, 0xb3, 0xb1, 0xf4, 0x8b, 0x6f, 0x36, 0x96, 0x7e, 0xf9, 0xcd, 0x46, 0xea, + 0xf9, 0xd5, 0x46, 0xea, 0xeb, 0xab, 0x8d, 0xd4, 0xcf, 0xaf, 0x36, 0x52, 0xff, 0x71, 0xb5, 0x91, + 0x3a, 0xcc, 0x0b, 0x4e, 0xfa, 0xf1, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0xfd, 0x76, 0xe5, 0x63, + 0xc2, 0x22, 0x00, 0x00, } diff --git a/api/types.proto b/api/types.proto index af54c4fb36..cde1e878f7 100644 --- a/api/types.proto +++ b/api/types.proto @@ -664,12 +664,6 @@ message SecretsConfig { // MaxSecrets specifies how many user-specified secrets there can be. A value // of 0 will be interpreted as the default maximum value. uint32 max_secrets = 1; - - // MaxSecretRevisions specifies how many revisions of a secret there can be. A - // value of 0 will be interpreted as the default maximum value. - // If this value is decreased, there will be no change to existing secrets - // until the next update, after which extra revisions will be culled. - uint32 max_secret_revisions = 2; } // Placement specifies task distribution constraints. @@ -767,10 +761,10 @@ message SecretReference { // Name is the name of the secret that this references. string name = 1; - // SecretValueID represents the ID of the specific Secret version that we're + // SecretID represents the ID of the specific Secret that we're // referencing. This identifier exists so that SecretReferences don't leak // any information about the secret contents. - string secret_value_id = 2 [(gogoproto.customname) = "SecretValueID"]; + string secret_id = 2 [(gogoproto.customname) = "SecretID"]; // Mode specifies how this secret should be exposed to the task. enum Mode { From f0da64c14c9a8c5c5f414111ae36026a6fb86fd4 Mon Sep 17 00:00:00 2001 From: cyli Date: Fri, 23 Sep 2016 10:03:29 -0700 Subject: [PATCH 8/9] Move secret proto inside the control API Signed-off-by: cyli --- api/control.pb.go | 5360 +++++++++++++++++++++++++++++++-------------- api/control.proto | 94 + api/gen.go | 2 +- api/objects.pb.go | 232 +- api/objects.proto | 16 +- api/secrets.pb.go | 2323 -------------------- api/secrets.proto | 106 - api/specs.pb.go | 245 +-- api/specs.proto | 4 - api/types.pb.go | 554 ++--- api/types.proto | 13 +- 11 files changed, 4273 insertions(+), 4676 deletions(-) delete mode 100644 api/secrets.pb.go delete mode 100644 api/secrets.proto diff --git a/api/control.pb.go b/api/control.pb.go index 9994ff6e32..bc5e449744 100644 --- a/api/control.pb.go +++ b/api/control.pb.go @@ -439,6 +439,101 @@ func (m *UpdateClusterResponse) Reset() { *m = UpdateClusterR func (*UpdateClusterResponse) ProtoMessage() {} func (*UpdateClusterResponse) Descriptor() ([]byte, []int) { return fileDescriptorControl, []int{38} } +// GetSecretRequest is the request to get a `Secret` object given a secret id. +type GetSecretRequest struct { + SecretID string `protobuf:"bytes,1,opt,name=secret_id,json=secretId,proto3" json:"secret_id,omitempty"` +} + +func (m *GetSecretRequest) Reset() { *m = GetSecretRequest{} } +func (*GetSecretRequest) ProtoMessage() {} +func (*GetSecretRequest) Descriptor() ([]byte, []int) { return fileDescriptorControl, []int{39} } + +// GetSecretResponse contains the Secret corresponding to the id in +// `GetSecretRequest`, but the `Secret.Spec.Data` field in each `Secret` +// object should be nil instead of actually containing the secret bytes. +type GetSecretResponse struct { + Secret *Secret `protobuf:"bytes,1,opt,name=secret" json:"secret,omitempty"` +} + +func (m *GetSecretResponse) Reset() { *m = GetSecretResponse{} } +func (*GetSecretResponse) ProtoMessage() {} +func (*GetSecretResponse) Descriptor() ([]byte, []int) { return fileDescriptorControl, []int{40} } + +// ListSecretRequest is the request to list all non-internal secrets in the secret store, +// or all secrets filtered by (name or name prefix or id prefix) and labels. +type ListSecretsRequest struct { + Filters *ListSecretsRequest_Filters `protobuf:"bytes,1,opt,name=filters" json:"filters,omitempty"` +} + +func (m *ListSecretsRequest) Reset() { *m = ListSecretsRequest{} } +func (*ListSecretsRequest) ProtoMessage() {} +func (*ListSecretsRequest) Descriptor() ([]byte, []int) { return fileDescriptorControl, []int{41} } + +type ListSecretsRequest_Filters struct { + Names []string `protobuf:"bytes,1,rep,name=names" json:"names,omitempty"` + IDPrefixes []string `protobuf:"bytes,2,rep,name=id_prefixes,json=idPrefixes" json:"id_prefixes,omitempty"` + Labels map[string]string `protobuf:"bytes,3,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + NamePrefixes []string `protobuf:"bytes,4,rep,name=name_prefixes,json=namePrefixes" json:"name_prefixes,omitempty"` +} + +func (m *ListSecretsRequest_Filters) Reset() { *m = ListSecretsRequest_Filters{} } +func (*ListSecretsRequest_Filters) ProtoMessage() {} +func (*ListSecretsRequest_Filters) Descriptor() ([]byte, []int) { + return fileDescriptorControl, []int{41, 0} +} + +// ListSecretResponse contains a list of all the secrets that match the name or +// name prefix filters provided in `ListSecretRequest`. The `Secret.Spec.Data` +// field in each `Secret` object should be nil instead of actually containing +// the secret bytes. +type ListSecretsResponse struct { + Secrets []*Secret `protobuf:"bytes,1,rep,name=secrets" json:"secrets,omitempty"` +} + +func (m *ListSecretsResponse) Reset() { *m = ListSecretsResponse{} } +func (*ListSecretsResponse) ProtoMessage() {} +func (*ListSecretsResponse) Descriptor() ([]byte, []int) { return fileDescriptorControl, []int{42} } + +// CreateSecretRequest specifies a new secret (it will not update an existing +// secret) to create. +type CreateSecretRequest struct { + Spec *SecretSpec `protobuf:"bytes,1,opt,name=spec" json:"spec,omitempty"` +} + +func (m *CreateSecretRequest) Reset() { *m = CreateSecretRequest{} } +func (*CreateSecretRequest) ProtoMessage() {} +func (*CreateSecretRequest) Descriptor() ([]byte, []int) { return fileDescriptorControl, []int{43} } + +// CreateSecretResponse contains the newly created `Secret`` corresponding to the +// name in `CreateSecretRequest`. The `Secret.Spec.Data` field should be nil instead +// of actually containing the secret bytes. +type CreateSecretResponse struct { + Secret *Secret `protobuf:"bytes,1,opt,name=secret" json:"secret,omitempty"` +} + +func (m *CreateSecretResponse) Reset() { *m = CreateSecretResponse{} } +func (*CreateSecretResponse) ProtoMessage() {} +func (*CreateSecretResponse) Descriptor() ([]byte, []int) { return fileDescriptorControl, []int{44} } + +// RemoveSecretRequest contains the ID of the secret that should be removed. This +// removes all versions of the secret. +type RemoveSecretRequest struct { + SecretID string `protobuf:"bytes,1,opt,name=secret_id,json=secretId,proto3" json:"secret_id,omitempty"` +} + +func (m *RemoveSecretRequest) Reset() { *m = RemoveSecretRequest{} } +func (*RemoveSecretRequest) ProtoMessage() {} +func (*RemoveSecretRequest) Descriptor() ([]byte, []int) { return fileDescriptorControl, []int{45} } + +// RemoveSecretResponse is an empty object indicating the successful removal of +// a secret. +type RemoveSecretResponse struct { +} + +func (m *RemoveSecretResponse) Reset() { *m = RemoveSecretResponse{} } +func (*RemoveSecretResponse) ProtoMessage() {} +func (*RemoveSecretResponse) Descriptor() ([]byte, []int) { return fileDescriptorControl, []int{46} } + func init() { proto.RegisterType((*GetNodeRequest)(nil), "docker.swarmkit.v1.GetNodeRequest") proto.RegisterType((*GetNodeResponse)(nil), "docker.swarmkit.v1.GetNodeResponse") @@ -484,6 +579,15 @@ func init() { proto.RegisterType((*JoinTokenRotation)(nil), "docker.swarmkit.v1.JoinTokenRotation") proto.RegisterType((*UpdateClusterRequest)(nil), "docker.swarmkit.v1.UpdateClusterRequest") proto.RegisterType((*UpdateClusterResponse)(nil), "docker.swarmkit.v1.UpdateClusterResponse") + proto.RegisterType((*GetSecretRequest)(nil), "docker.swarmkit.v1.GetSecretRequest") + proto.RegisterType((*GetSecretResponse)(nil), "docker.swarmkit.v1.GetSecretResponse") + proto.RegisterType((*ListSecretsRequest)(nil), "docker.swarmkit.v1.ListSecretsRequest") + proto.RegisterType((*ListSecretsRequest_Filters)(nil), "docker.swarmkit.v1.ListSecretsRequest.Filters") + proto.RegisterType((*ListSecretsResponse)(nil), "docker.swarmkit.v1.ListSecretsResponse") + proto.RegisterType((*CreateSecretRequest)(nil), "docker.swarmkit.v1.CreateSecretRequest") + proto.RegisterType((*CreateSecretResponse)(nil), "docker.swarmkit.v1.CreateSecretResponse") + proto.RegisterType((*RemoveSecretRequest)(nil), "docker.swarmkit.v1.RemoveSecretRequest") + proto.RegisterType((*RemoveSecretResponse)(nil), "docker.swarmkit.v1.RemoveSecretResponse") } type authenticatedWrapperControlServer struct { @@ -650,6 +754,38 @@ func (p *authenticatedWrapperControlServer) UpdateCluster(ctx context.Context, r return p.local.UpdateCluster(ctx, r) } +func (p *authenticatedWrapperControlServer) GetSecret(ctx context.Context, r *GetSecretRequest) (*GetSecretResponse, error) { + + if err := p.authorize(ctx, []string{"swarm-manager"}); err != nil { + return nil, err + } + return p.local.GetSecret(ctx, r) +} + +func (p *authenticatedWrapperControlServer) ListSecrets(ctx context.Context, r *ListSecretsRequest) (*ListSecretsResponse, error) { + + if err := p.authorize(ctx, []string{"swarm-manager"}); err != nil { + return nil, err + } + return p.local.ListSecrets(ctx, r) +} + +func (p *authenticatedWrapperControlServer) CreateSecret(ctx context.Context, r *CreateSecretRequest) (*CreateSecretResponse, error) { + + if err := p.authorize(ctx, []string{"swarm-manager"}); err != nil { + return nil, err + } + return p.local.CreateSecret(ctx, r) +} + +func (p *authenticatedWrapperControlServer) RemoveSecret(ctx context.Context, r *RemoveSecretRequest) (*RemoveSecretResponse, error) { + + if err := p.authorize(ctx, []string{"swarm-manager"}); err != nil { + return nil, err + } + return p.local.RemoveSecret(ctx, r) +} + func (m *GetNodeRequest) Copy() *GetNodeRequest { if m == nil { return nil @@ -1371,6 +1507,143 @@ func (m *UpdateClusterResponse) Copy() *UpdateClusterResponse { return o } +func (m *GetSecretRequest) Copy() *GetSecretRequest { + if m == nil { + return nil + } + + o := &GetSecretRequest{ + SecretID: m.SecretID, + } + + return o +} + +func (m *GetSecretResponse) Copy() *GetSecretResponse { + if m == nil { + return nil + } + + o := &GetSecretResponse{ + Secret: m.Secret.Copy(), + } + + return o +} + +func (m *ListSecretsRequest) Copy() *ListSecretsRequest { + if m == nil { + return nil + } + + o := &ListSecretsRequest{ + Filters: m.Filters.Copy(), + } + + return o +} + +func (m *ListSecretsRequest_Filters) Copy() *ListSecretsRequest_Filters { + if m == nil { + return nil + } + + o := &ListSecretsRequest_Filters{} + + if m.Names != nil { + o.Names = make([]string, 0, len(m.Names)) + for _, v := range m.Names { + o.Names = append(o.Names, v) + } + } + + if m.IDPrefixes != nil { + o.IDPrefixes = make([]string, 0, len(m.IDPrefixes)) + for _, v := range m.IDPrefixes { + o.IDPrefixes = append(o.IDPrefixes, v) + } + } + + if m.Labels != nil { + o.Labels = make(map[string]string) + for k, v := range m.Labels { + o.Labels[k] = v + } + } + + if m.NamePrefixes != nil { + o.NamePrefixes = make([]string, 0, len(m.NamePrefixes)) + for _, v := range m.NamePrefixes { + o.NamePrefixes = append(o.NamePrefixes, v) + } + } + + return o +} + +func (m *ListSecretsResponse) Copy() *ListSecretsResponse { + if m == nil { + return nil + } + + o := &ListSecretsResponse{} + + if m.Secrets != nil { + o.Secrets = make([]*Secret, 0, len(m.Secrets)) + for _, v := range m.Secrets { + o.Secrets = append(o.Secrets, v.Copy()) + } + } + + return o +} + +func (m *CreateSecretRequest) Copy() *CreateSecretRequest { + if m == nil { + return nil + } + + o := &CreateSecretRequest{ + Spec: m.Spec.Copy(), + } + + return o +} + +func (m *CreateSecretResponse) Copy() *CreateSecretResponse { + if m == nil { + return nil + } + + o := &CreateSecretResponse{ + Secret: m.Secret.Copy(), + } + + return o +} + +func (m *RemoveSecretRequest) Copy() *RemoveSecretRequest { + if m == nil { + return nil + } + + o := &RemoveSecretRequest{ + SecretID: m.SecretID, + } + + return o +} + +func (m *RemoveSecretResponse) Copy() *RemoveSecretResponse { + if m == nil { + return nil + } + + o := &RemoveSecretResponse{} + + return o +} + func (this *GetNodeRequest) GoString() string { if this == nil { return "nil" @@ -1954,6 +2227,120 @@ func (this *UpdateClusterResponse) GoString() string { s = append(s, "}") return strings.Join(s, "") } +func (this *GetSecretRequest) GoString() string { + if this == nil { + return "nil" + } + s := make([]string, 0, 5) + s = append(s, "&api.GetSecretRequest{") + s = append(s, "SecretID: "+fmt.Sprintf("%#v", this.SecretID)+",\n") + s = append(s, "}") + return strings.Join(s, "") +} +func (this *GetSecretResponse) GoString() string { + if this == nil { + return "nil" + } + s := make([]string, 0, 5) + s = append(s, "&api.GetSecretResponse{") + if this.Secret != nil { + s = append(s, "Secret: "+fmt.Sprintf("%#v", this.Secret)+",\n") + } + s = append(s, "}") + return strings.Join(s, "") +} +func (this *ListSecretsRequest) GoString() string { + if this == nil { + return "nil" + } + s := make([]string, 0, 5) + s = append(s, "&api.ListSecretsRequest{") + if this.Filters != nil { + s = append(s, "Filters: "+fmt.Sprintf("%#v", this.Filters)+",\n") + } + s = append(s, "}") + return strings.Join(s, "") +} +func (this *ListSecretsRequest_Filters) GoString() string { + if this == nil { + return "nil" + } + s := make([]string, 0, 8) + s = append(s, "&api.ListSecretsRequest_Filters{") + s = append(s, "Names: "+fmt.Sprintf("%#v", this.Names)+",\n") + s = append(s, "IDPrefixes: "+fmt.Sprintf("%#v", this.IDPrefixes)+",\n") + keysForLabels := make([]string, 0, len(this.Labels)) + for k, _ := range this.Labels { + keysForLabels = append(keysForLabels, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForLabels) + mapStringForLabels := "map[string]string{" + for _, k := range keysForLabels { + mapStringForLabels += fmt.Sprintf("%#v: %#v,", k, this.Labels[k]) + } + mapStringForLabels += "}" + if this.Labels != nil { + s = append(s, "Labels: "+mapStringForLabels+",\n") + } + s = append(s, "NamePrefixes: "+fmt.Sprintf("%#v", this.NamePrefixes)+",\n") + s = append(s, "}") + return strings.Join(s, "") +} +func (this *ListSecretsResponse) GoString() string { + if this == nil { + return "nil" + } + s := make([]string, 0, 5) + s = append(s, "&api.ListSecretsResponse{") + if this.Secrets != nil { + s = append(s, "Secrets: "+fmt.Sprintf("%#v", this.Secrets)+",\n") + } + s = append(s, "}") + return strings.Join(s, "") +} +func (this *CreateSecretRequest) GoString() string { + if this == nil { + return "nil" + } + s := make([]string, 0, 5) + s = append(s, "&api.CreateSecretRequest{") + if this.Spec != nil { + s = append(s, "Spec: "+fmt.Sprintf("%#v", this.Spec)+",\n") + } + s = append(s, "}") + return strings.Join(s, "") +} +func (this *CreateSecretResponse) GoString() string { + if this == nil { + return "nil" + } + s := make([]string, 0, 5) + s = append(s, "&api.CreateSecretResponse{") + if this.Secret != nil { + s = append(s, "Secret: "+fmt.Sprintf("%#v", this.Secret)+",\n") + } + s = append(s, "}") + return strings.Join(s, "") +} +func (this *RemoveSecretRequest) GoString() string { + if this == nil { + return "nil" + } + s := make([]string, 0, 5) + s = append(s, "&api.RemoveSecretRequest{") + s = append(s, "SecretID: "+fmt.Sprintf("%#v", this.SecretID)+",\n") + s = append(s, "}") + return strings.Join(s, "") +} +func (this *RemoveSecretResponse) GoString() string { + if this == nil { + return "nil" + } + s := make([]string, 0, 4) + s = append(s, "&api.RemoveSecretResponse{") + s = append(s, "}") + return strings.Join(s, "") +} func valueToGoStringControl(v interface{}, typ string) string { rv := reflect.ValueOf(v) if rv.IsNil() { @@ -2011,6 +2398,31 @@ type ControlClient interface { GetCluster(ctx context.Context, in *GetClusterRequest, opts ...grpc.CallOption) (*GetClusterResponse, error) ListClusters(ctx context.Context, in *ListClustersRequest, opts ...grpc.CallOption) (*ListClustersResponse, error) UpdateCluster(ctx context.Context, in *UpdateClusterRequest, opts ...grpc.CallOption) (*UpdateClusterResponse, error) + // GetSecret returns a `GetSecretResponse` with a `Secret` with the same + // id as `GetSecretRequest.SecretID` + // - Returns `NotFound` if the Secret with the given id is not found. + // - Returns `InvalidArgument` if the `GetSecretRequest.SecretID` is empty. + // - Returns an error if getting fails. + GetSecret(ctx context.Context, in *GetSecretRequest, opts ...grpc.CallOption) (*GetSecretResponse, error) + // ListSecrets returns a `ListSecretResponse` with a list all non-internal `Secret`s being + // managed, or all secrets matching any name in `ListSecretsRequest.Names`, any + // name prefix in `ListSecretsRequest.NamePrefixes`, any id in + // `ListSecretsRequest.SecretIDs`, or any id prefix in `ListSecretsRequest.IDPrefixes`. + // - Returns an error if listing fails. + ListSecrets(ctx context.Context, in *ListSecretsRequest, opts ...grpc.CallOption) (*ListSecretsResponse, error) + // CreateSecret creates and return a `CreateSecretResponse` with a `Secret` based + // on the provided `CreateSecretRequest.SecretSpec`. + // - Returns `InvalidArgument` if the `CreateSecretRequest.SecretSpec` is malformed, + // or if the secret data is too long or contains invalid characters. + // - Returns `ResourceExhausted` if there are already the maximum number of allowed + // secrets in the system. + // - Returns an error if the creation fails. + CreateSecret(ctx context.Context, in *CreateSecretRequest, opts ...grpc.CallOption) (*CreateSecretResponse, error) + // RemoveSecret removes the secret referenced by `RemoveSecretRequest.ID`. + // - Returns `InvalidArgument` if `RemoveSecretRequest.ID` is empty. + // - Returns `NotFound` if the a secret named `RemoveSecretRequest.ID` is not found. + // - Returns an error if the deletion fails. + RemoveSecret(ctx context.Context, in *RemoveSecretRequest, opts ...grpc.CallOption) (*RemoveSecretResponse, error) } type controlClient struct { @@ -2192,11 +2604,47 @@ func (c *controlClient) UpdateCluster(ctx context.Context, in *UpdateClusterRequ return out, nil } -// Server API for Control service - -type ControlServer interface { - GetNode(context.Context, *GetNodeRequest) (*GetNodeResponse, error) - ListNodes(context.Context, *ListNodesRequest) (*ListNodesResponse, error) +func (c *controlClient) GetSecret(ctx context.Context, in *GetSecretRequest, opts ...grpc.CallOption) (*GetSecretResponse, error) { + out := new(GetSecretResponse) + err := grpc.Invoke(ctx, "/docker.swarmkit.v1.Control/GetSecret", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *controlClient) ListSecrets(ctx context.Context, in *ListSecretsRequest, opts ...grpc.CallOption) (*ListSecretsResponse, error) { + out := new(ListSecretsResponse) + err := grpc.Invoke(ctx, "/docker.swarmkit.v1.Control/ListSecrets", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *controlClient) CreateSecret(ctx context.Context, in *CreateSecretRequest, opts ...grpc.CallOption) (*CreateSecretResponse, error) { + out := new(CreateSecretResponse) + err := grpc.Invoke(ctx, "/docker.swarmkit.v1.Control/CreateSecret", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *controlClient) RemoveSecret(ctx context.Context, in *RemoveSecretRequest, opts ...grpc.CallOption) (*RemoveSecretResponse, error) { + out := new(RemoveSecretResponse) + err := grpc.Invoke(ctx, "/docker.swarmkit.v1.Control/RemoveSecret", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// Server API for Control service + +type ControlServer interface { + GetNode(context.Context, *GetNodeRequest) (*GetNodeResponse, error) + ListNodes(context.Context, *ListNodesRequest) (*ListNodesResponse, error) UpdateNode(context.Context, *UpdateNodeRequest) (*UpdateNodeResponse, error) RemoveNode(context.Context, *RemoveNodeRequest) (*RemoveNodeResponse, error) GetTask(context.Context, *GetTaskRequest) (*GetTaskResponse, error) @@ -2214,6 +2662,31 @@ type ControlServer interface { GetCluster(context.Context, *GetClusterRequest) (*GetClusterResponse, error) ListClusters(context.Context, *ListClustersRequest) (*ListClustersResponse, error) UpdateCluster(context.Context, *UpdateClusterRequest) (*UpdateClusterResponse, error) + // GetSecret returns a `GetSecretResponse` with a `Secret` with the same + // id as `GetSecretRequest.SecretID` + // - Returns `NotFound` if the Secret with the given id is not found. + // - Returns `InvalidArgument` if the `GetSecretRequest.SecretID` is empty. + // - Returns an error if getting fails. + GetSecret(context.Context, *GetSecretRequest) (*GetSecretResponse, error) + // ListSecrets returns a `ListSecretResponse` with a list all non-internal `Secret`s being + // managed, or all secrets matching any name in `ListSecretsRequest.Names`, any + // name prefix in `ListSecretsRequest.NamePrefixes`, any id in + // `ListSecretsRequest.SecretIDs`, or any id prefix in `ListSecretsRequest.IDPrefixes`. + // - Returns an error if listing fails. + ListSecrets(context.Context, *ListSecretsRequest) (*ListSecretsResponse, error) + // CreateSecret creates and return a `CreateSecretResponse` with a `Secret` based + // on the provided `CreateSecretRequest.SecretSpec`. + // - Returns `InvalidArgument` if the `CreateSecretRequest.SecretSpec` is malformed, + // or if the secret data is too long or contains invalid characters. + // - Returns `ResourceExhausted` if there are already the maximum number of allowed + // secrets in the system. + // - Returns an error if the creation fails. + CreateSecret(context.Context, *CreateSecretRequest) (*CreateSecretResponse, error) + // RemoveSecret removes the secret referenced by `RemoveSecretRequest.ID`. + // - Returns `InvalidArgument` if `RemoveSecretRequest.ID` is empty. + // - Returns `NotFound` if the a secret named `RemoveSecretRequest.ID` is not found. + // - Returns an error if the deletion fails. + RemoveSecret(context.Context, *RemoveSecretRequest) (*RemoveSecretResponse, error) } func RegisterControlServer(s *grpc.Server, srv ControlServer) { @@ -2562,6 +3035,78 @@ func _Control_UpdateCluster_Handler(srv interface{}, ctx context.Context, dec fu return interceptor(ctx, in, info, handler) } +func _Control_GetSecret_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetSecretRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ControlServer).GetSecret(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/docker.swarmkit.v1.Control/GetSecret", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ControlServer).GetSecret(ctx, req.(*GetSecretRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Control_ListSecrets_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListSecretsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ControlServer).ListSecrets(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/docker.swarmkit.v1.Control/ListSecrets", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ControlServer).ListSecrets(ctx, req.(*ListSecretsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Control_CreateSecret_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateSecretRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ControlServer).CreateSecret(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/docker.swarmkit.v1.Control/CreateSecret", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ControlServer).CreateSecret(ctx, req.(*CreateSecretRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Control_RemoveSecret_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(RemoveSecretRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ControlServer).RemoveSecret(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/docker.swarmkit.v1.Control/RemoveSecret", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ControlServer).RemoveSecret(ctx, req.(*RemoveSecretRequest)) + } + return interceptor(ctx, in, info, handler) +} + var _Control_serviceDesc = grpc.ServiceDesc{ ServiceName: "docker.swarmkit.v1.Control", HandlerType: (*ControlServer)(nil), @@ -2642,6 +3187,22 @@ var _Control_serviceDesc = grpc.ServiceDesc{ MethodName: "UpdateCluster", Handler: _Control_UpdateCluster_Handler, }, + { + MethodName: "GetSecret", + Handler: _Control_GetSecret_Handler, + }, + { + MethodName: "ListSecrets", + Handler: _Control_ListSecrets_Handler, + }, + { + MethodName: "CreateSecret", + Handler: _Control_CreateSecret_Handler, + }, + { + MethodName: "RemoveSecret", + Handler: _Control_RemoveSecret_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: fileDescriptorControl, @@ -4212,354 +4773,425 @@ func (m *UpdateClusterResponse) MarshalTo(data []byte) (int, error) { return i, nil } -func encodeFixed64Control(data []byte, offset int, v uint64) int { - data[offset] = uint8(v) - data[offset+1] = uint8(v >> 8) - data[offset+2] = uint8(v >> 16) - data[offset+3] = uint8(v >> 24) - data[offset+4] = uint8(v >> 32) - data[offset+5] = uint8(v >> 40) - data[offset+6] = uint8(v >> 48) - data[offset+7] = uint8(v >> 56) - return offset + 8 -} -func encodeFixed32Control(data []byte, offset int, v uint32) int { - data[offset] = uint8(v) - data[offset+1] = uint8(v >> 8) - data[offset+2] = uint8(v >> 16) - data[offset+3] = uint8(v >> 24) - return offset + 4 -} -func encodeVarintControl(data []byte, offset int, v uint64) int { - for v >= 1<<7 { - data[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ +func (m *GetSecretRequest) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err } - data[offset] = uint8(v) - return offset + 1 -} - -type raftProxyControlServer struct { - local ControlServer - connSelector raftselector.ConnProvider - ctxMods []func(context.Context) (context.Context, error) + return data[:n], nil } -func NewRaftProxyControlServer(local ControlServer, connSelector raftselector.ConnProvider, ctxMod func(context.Context) (context.Context, error)) ControlServer { - redirectChecker := func(ctx context.Context) (context.Context, error) { - s, ok := transport.StreamFromContext(ctx) - if !ok { - return ctx, grpc.Errorf(codes.InvalidArgument, "remote addr is not found in context") - } - addr := s.ServerTransport().RemoteAddr().String() - md, ok := metadata.FromContext(ctx) - if ok && len(md["redirect"]) != 0 { - return ctx, grpc.Errorf(codes.ResourceExhausted, "more than one redirect to leader from: %s", md["redirect"]) - } - if !ok { - md = metadata.New(map[string]string{}) - } - md["redirect"] = append(md["redirect"], addr) - return metadata.NewContext(ctx, md), nil - } - mods := []func(context.Context) (context.Context, error){redirectChecker} - mods = append(mods, ctxMod) - - return &raftProxyControlServer{ - local: local, - connSelector: connSelector, - ctxMods: mods, +func (m *GetSecretRequest) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.SecretID) > 0 { + data[i] = 0xa + i++ + i = encodeVarintControl(data, i, uint64(len(m.SecretID))) + i += copy(data[i:], m.SecretID) } + return i, nil } -func (p *raftProxyControlServer) runCtxMods(ctx context.Context) (context.Context, error) { - var err error - for _, mod := range p.ctxMods { - ctx, err = mod(ctx) - if err != nil { - return ctx, err - } + +func (m *GetSecretResponse) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err } - return ctx, nil + return data[:n], nil } -func (p *raftProxyControlServer) pollNewLeaderConn(ctx context.Context) (*grpc.ClientConn, error) { - ticker := time.NewTicker(500 * time.Millisecond) - defer ticker.Stop() - for { - select { - case <-ticker.C: - conn, err := p.connSelector.LeaderConn(ctx) - if err != nil { - return nil, err - } - - client := NewHealthClient(conn) - resp, err := client.Check(ctx, &HealthCheckRequest{Service: "Raft"}) - if err != nil || resp.Status != HealthCheckResponse_SERVING { - continue - } - return conn, nil - case <-ctx.Done(): - return nil, ctx.Err() +func (m *GetSecretResponse) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Secret != nil { + data[i] = 0xa + i++ + i = encodeVarintControl(data, i, uint64(m.Secret.Size())) + n25, err := m.Secret.MarshalTo(data[i:]) + if err != nil { + return 0, err } + i += n25 } + return i, nil } -func (p *raftProxyControlServer) GetNode(ctx context.Context, r *GetNodeRequest) (*GetNodeResponse, error) { - - conn, err := p.connSelector.LeaderConn(ctx) - if err != nil { - if err == raftselector.ErrIsLeader { - return p.local.GetNode(ctx, r) - } - return nil, err - } - modCtx, err := p.runCtxMods(ctx) +func (m *ListSecretsRequest) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) if err != nil { return nil, err } + return data[:n], nil +} - resp, err := NewControlClient(conn).GetNode(modCtx, r) - if err != nil { - if !strings.Contains(err.Error(), "is closing") && !strings.Contains(err.Error(), "the connection is unavailable") && !strings.Contains(err.Error(), "connection error") { - return resp, err - } - conn, err := p.pollNewLeaderConn(ctx) +func (m *ListSecretsRequest) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Filters != nil { + data[i] = 0xa + i++ + i = encodeVarintControl(data, i, uint64(m.Filters.Size())) + n26, err := m.Filters.MarshalTo(data[i:]) if err != nil { - if err == raftselector.ErrIsLeader { - return p.local.GetNode(ctx, r) - } - return nil, err + return 0, err } - return NewControlClient(conn).GetNode(modCtx, r) + i += n26 } - return resp, err + return i, nil } -func (p *raftProxyControlServer) ListNodes(ctx context.Context, r *ListNodesRequest) (*ListNodesResponse, error) { - - conn, err := p.connSelector.LeaderConn(ctx) - if err != nil { - if err == raftselector.ErrIsLeader { - return p.local.ListNodes(ctx, r) - } - return nil, err - } - modCtx, err := p.runCtxMods(ctx) +func (m *ListSecretsRequest_Filters) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) if err != nil { return nil, err } + return data[:n], nil +} - resp, err := NewControlClient(conn).ListNodes(modCtx, r) - if err != nil { - if !strings.Contains(err.Error(), "is closing") && !strings.Contains(err.Error(), "the connection is unavailable") && !strings.Contains(err.Error(), "connection error") { - return resp, err - } - conn, err := p.pollNewLeaderConn(ctx) - if err != nil { - if err == raftselector.ErrIsLeader { - return p.local.ListNodes(ctx, r) +func (m *ListSecretsRequest_Filters) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Names) > 0 { + for _, s := range m.Names { + data[i] = 0xa + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ } - return nil, err + data[i] = uint8(l) + i++ + i += copy(data[i:], s) } - return NewControlClient(conn).ListNodes(modCtx, r) } - return resp, err -} - -func (p *raftProxyControlServer) UpdateNode(ctx context.Context, r *UpdateNodeRequest) (*UpdateNodeResponse, error) { - - conn, err := p.connSelector.LeaderConn(ctx) - if err != nil { - if err == raftselector.ErrIsLeader { - return p.local.UpdateNode(ctx, r) + if len(m.IDPrefixes) > 0 { + for _, s := range m.IDPrefixes { + data[i] = 0x12 + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + data[i] = uint8(l) + i++ + i += copy(data[i:], s) } - return nil, err - } - modCtx, err := p.runCtxMods(ctx) - if err != nil { - return nil, err } - - resp, err := NewControlClient(conn).UpdateNode(modCtx, r) - if err != nil { - if !strings.Contains(err.Error(), "is closing") && !strings.Contains(err.Error(), "the connection is unavailable") && !strings.Contains(err.Error(), "connection error") { - return resp, err + if len(m.Labels) > 0 { + for k, _ := range m.Labels { + data[i] = 0x1a + i++ + v := m.Labels[k] + mapSize := 1 + len(k) + sovControl(uint64(len(k))) + 1 + len(v) + sovControl(uint64(len(v))) + i = encodeVarintControl(data, i, uint64(mapSize)) + data[i] = 0xa + i++ + i = encodeVarintControl(data, i, uint64(len(k))) + i += copy(data[i:], k) + data[i] = 0x12 + i++ + i = encodeVarintControl(data, i, uint64(len(v))) + i += copy(data[i:], v) } - conn, err := p.pollNewLeaderConn(ctx) - if err != nil { - if err == raftselector.ErrIsLeader { - return p.local.UpdateNode(ctx, r) + } + if len(m.NamePrefixes) > 0 { + for _, s := range m.NamePrefixes { + data[i] = 0x22 + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ } - return nil, err + data[i] = uint8(l) + i++ + i += copy(data[i:], s) } - return NewControlClient(conn).UpdateNode(modCtx, r) } - return resp, err + return i, nil } -func (p *raftProxyControlServer) RemoveNode(ctx context.Context, r *RemoveNodeRequest) (*RemoveNodeResponse, error) { - - conn, err := p.connSelector.LeaderConn(ctx) - if err != nil { - if err == raftselector.ErrIsLeader { - return p.local.RemoveNode(ctx, r) - } - return nil, err - } - modCtx, err := p.runCtxMods(ctx) +func (m *ListSecretsResponse) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) if err != nil { return nil, err } + return data[:n], nil +} - resp, err := NewControlClient(conn).RemoveNode(modCtx, r) - if err != nil { - if !strings.Contains(err.Error(), "is closing") && !strings.Contains(err.Error(), "the connection is unavailable") && !strings.Contains(err.Error(), "connection error") { - return resp, err - } - conn, err := p.pollNewLeaderConn(ctx) - if err != nil { - if err == raftselector.ErrIsLeader { - return p.local.RemoveNode(ctx, r) +func (m *ListSecretsResponse) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Secrets) > 0 { + for _, msg := range m.Secrets { + data[i] = 0xa + i++ + i = encodeVarintControl(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err } - return nil, err + i += n } - return NewControlClient(conn).RemoveNode(modCtx, r) } - return resp, err + return i, nil } -func (p *raftProxyControlServer) GetTask(ctx context.Context, r *GetTaskRequest) (*GetTaskResponse, error) { - - conn, err := p.connSelector.LeaderConn(ctx) - if err != nil { - if err == raftselector.ErrIsLeader { - return p.local.GetTask(ctx, r) - } - return nil, err - } - modCtx, err := p.runCtxMods(ctx) +func (m *CreateSecretRequest) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) if err != nil { return nil, err } + return data[:n], nil +} - resp, err := NewControlClient(conn).GetTask(modCtx, r) - if err != nil { - if !strings.Contains(err.Error(), "is closing") && !strings.Contains(err.Error(), "the connection is unavailable") && !strings.Contains(err.Error(), "connection error") { - return resp, err - } - conn, err := p.pollNewLeaderConn(ctx) +func (m *CreateSecretRequest) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Spec != nil { + data[i] = 0xa + i++ + i = encodeVarintControl(data, i, uint64(m.Spec.Size())) + n27, err := m.Spec.MarshalTo(data[i:]) if err != nil { - if err == raftselector.ErrIsLeader { - return p.local.GetTask(ctx, r) - } - return nil, err + return 0, err } - return NewControlClient(conn).GetTask(modCtx, r) + i += n27 } - return resp, err + return i, nil } -func (p *raftProxyControlServer) ListTasks(ctx context.Context, r *ListTasksRequest) (*ListTasksResponse, error) { - - conn, err := p.connSelector.LeaderConn(ctx) - if err != nil { - if err == raftselector.ErrIsLeader { - return p.local.ListTasks(ctx, r) - } - return nil, err - } - modCtx, err := p.runCtxMods(ctx) +func (m *CreateSecretResponse) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) if err != nil { return nil, err } + return data[:n], nil +} - resp, err := NewControlClient(conn).ListTasks(modCtx, r) - if err != nil { - if !strings.Contains(err.Error(), "is closing") && !strings.Contains(err.Error(), "the connection is unavailable") && !strings.Contains(err.Error(), "connection error") { - return resp, err - } - conn, err := p.pollNewLeaderConn(ctx) +func (m *CreateSecretResponse) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Secret != nil { + data[i] = 0xa + i++ + i = encodeVarintControl(data, i, uint64(m.Secret.Size())) + n28, err := m.Secret.MarshalTo(data[i:]) if err != nil { - if err == raftselector.ErrIsLeader { - return p.local.ListTasks(ctx, r) - } - return nil, err + return 0, err } - return NewControlClient(conn).ListTasks(modCtx, r) + i += n28 } - return resp, err + return i, nil } -func (p *raftProxyControlServer) RemoveTask(ctx context.Context, r *RemoveTaskRequest) (*RemoveTaskResponse, error) { - - conn, err := p.connSelector.LeaderConn(ctx) - if err != nil { - if err == raftselector.ErrIsLeader { - return p.local.RemoveTask(ctx, r) - } - return nil, err - } - modCtx, err := p.runCtxMods(ctx) +func (m *RemoveSecretRequest) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) if err != nil { return nil, err } + return data[:n], nil +} - resp, err := NewControlClient(conn).RemoveTask(modCtx, r) - if err != nil { - if !strings.Contains(err.Error(), "is closing") && !strings.Contains(err.Error(), "the connection is unavailable") && !strings.Contains(err.Error(), "connection error") { - return resp, err - } - conn, err := p.pollNewLeaderConn(ctx) - if err != nil { - if err == raftselector.ErrIsLeader { - return p.local.RemoveTask(ctx, r) - } - return nil, err - } - return NewControlClient(conn).RemoveTask(modCtx, r) +func (m *RemoveSecretRequest) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.SecretID) > 0 { + data[i] = 0xa + i++ + i = encodeVarintControl(data, i, uint64(len(m.SecretID))) + i += copy(data[i:], m.SecretID) } - return resp, err + return i, nil } -func (p *raftProxyControlServer) GetService(ctx context.Context, r *GetServiceRequest) (*GetServiceResponse, error) { - - conn, err := p.connSelector.LeaderConn(ctx) - if err != nil { - if err == raftselector.ErrIsLeader { - return p.local.GetService(ctx, r) - } - return nil, err - } - modCtx, err := p.runCtxMods(ctx) +func (m *RemoveSecretResponse) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) if err != nil { return nil, err } + return data[:n], nil +} - resp, err := NewControlClient(conn).GetService(modCtx, r) - if err != nil { - if !strings.Contains(err.Error(), "is closing") && !strings.Contains(err.Error(), "the connection is unavailable") && !strings.Contains(err.Error(), "connection error") { +func (m *RemoveSecretResponse) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + return i, nil +} + +func encodeFixed64Control(data []byte, offset int, v uint64) int { + data[offset] = uint8(v) + data[offset+1] = uint8(v >> 8) + data[offset+2] = uint8(v >> 16) + data[offset+3] = uint8(v >> 24) + data[offset+4] = uint8(v >> 32) + data[offset+5] = uint8(v >> 40) + data[offset+6] = uint8(v >> 48) + data[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32Control(data []byte, offset int, v uint32) int { + data[offset] = uint8(v) + data[offset+1] = uint8(v >> 8) + data[offset+2] = uint8(v >> 16) + data[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintControl(data []byte, offset int, v uint64) int { + for v >= 1<<7 { + data[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + data[offset] = uint8(v) + return offset + 1 +} + +type raftProxyControlServer struct { + local ControlServer + connSelector raftselector.ConnProvider + ctxMods []func(context.Context) (context.Context, error) +} + +func NewRaftProxyControlServer(local ControlServer, connSelector raftselector.ConnProvider, ctxMod func(context.Context) (context.Context, error)) ControlServer { + redirectChecker := func(ctx context.Context) (context.Context, error) { + s, ok := transport.StreamFromContext(ctx) + if !ok { + return ctx, grpc.Errorf(codes.InvalidArgument, "remote addr is not found in context") + } + addr := s.ServerTransport().RemoteAddr().String() + md, ok := metadata.FromContext(ctx) + if ok && len(md["redirect"]) != 0 { + return ctx, grpc.Errorf(codes.ResourceExhausted, "more than one redirect to leader from: %s", md["redirect"]) + } + if !ok { + md = metadata.New(map[string]string{}) + } + md["redirect"] = append(md["redirect"], addr) + return metadata.NewContext(ctx, md), nil + } + mods := []func(context.Context) (context.Context, error){redirectChecker} + mods = append(mods, ctxMod) + + return &raftProxyControlServer{ + local: local, + connSelector: connSelector, + ctxMods: mods, + } +} +func (p *raftProxyControlServer) runCtxMods(ctx context.Context) (context.Context, error) { + var err error + for _, mod := range p.ctxMods { + ctx, err = mod(ctx) + if err != nil { + return ctx, err + } + } + return ctx, nil +} +func (p *raftProxyControlServer) pollNewLeaderConn(ctx context.Context) (*grpc.ClientConn, error) { + ticker := time.NewTicker(500 * time.Millisecond) + defer ticker.Stop() + for { + select { + case <-ticker.C: + conn, err := p.connSelector.LeaderConn(ctx) + if err != nil { + return nil, err + } + + client := NewHealthClient(conn) + + resp, err := client.Check(ctx, &HealthCheckRequest{Service: "Raft"}) + if err != nil || resp.Status != HealthCheckResponse_SERVING { + continue + } + return conn, nil + case <-ctx.Done(): + return nil, ctx.Err() + } + } +} + +func (p *raftProxyControlServer) GetNode(ctx context.Context, r *GetNodeRequest) (*GetNodeResponse, error) { + + conn, err := p.connSelector.LeaderConn(ctx) + if err != nil { + if err == raftselector.ErrIsLeader { + return p.local.GetNode(ctx, r) + } + return nil, err + } + modCtx, err := p.runCtxMods(ctx) + if err != nil { + return nil, err + } + + resp, err := NewControlClient(conn).GetNode(modCtx, r) + if err != nil { + if !strings.Contains(err.Error(), "is closing") && !strings.Contains(err.Error(), "the connection is unavailable") && !strings.Contains(err.Error(), "connection error") { return resp, err } conn, err := p.pollNewLeaderConn(ctx) if err != nil { if err == raftselector.ErrIsLeader { - return p.local.GetService(ctx, r) + return p.local.GetNode(ctx, r) } return nil, err } - return NewControlClient(conn).GetService(modCtx, r) + return NewControlClient(conn).GetNode(modCtx, r) } return resp, err } -func (p *raftProxyControlServer) ListServices(ctx context.Context, r *ListServicesRequest) (*ListServicesResponse, error) { +func (p *raftProxyControlServer) ListNodes(ctx context.Context, r *ListNodesRequest) (*ListNodesResponse, error) { conn, err := p.connSelector.LeaderConn(ctx) if err != nil { if err == raftselector.ErrIsLeader { - return p.local.ListServices(ctx, r) + return p.local.ListNodes(ctx, r) } return nil, err } @@ -4568,7 +5200,7 @@ func (p *raftProxyControlServer) ListServices(ctx context.Context, r *ListServic return nil, err } - resp, err := NewControlClient(conn).ListServices(modCtx, r) + resp, err := NewControlClient(conn).ListNodes(modCtx, r) if err != nil { if !strings.Contains(err.Error(), "is closing") && !strings.Contains(err.Error(), "the connection is unavailable") && !strings.Contains(err.Error(), "connection error") { return resp, err @@ -4576,21 +5208,21 @@ func (p *raftProxyControlServer) ListServices(ctx context.Context, r *ListServic conn, err := p.pollNewLeaderConn(ctx) if err != nil { if err == raftselector.ErrIsLeader { - return p.local.ListServices(ctx, r) + return p.local.ListNodes(ctx, r) } return nil, err } - return NewControlClient(conn).ListServices(modCtx, r) + return NewControlClient(conn).ListNodes(modCtx, r) } return resp, err } -func (p *raftProxyControlServer) CreateService(ctx context.Context, r *CreateServiceRequest) (*CreateServiceResponse, error) { +func (p *raftProxyControlServer) UpdateNode(ctx context.Context, r *UpdateNodeRequest) (*UpdateNodeResponse, error) { conn, err := p.connSelector.LeaderConn(ctx) if err != nil { if err == raftselector.ErrIsLeader { - return p.local.CreateService(ctx, r) + return p.local.UpdateNode(ctx, r) } return nil, err } @@ -4599,7 +5231,7 @@ func (p *raftProxyControlServer) CreateService(ctx context.Context, r *CreateSer return nil, err } - resp, err := NewControlClient(conn).CreateService(modCtx, r) + resp, err := NewControlClient(conn).UpdateNode(modCtx, r) if err != nil { if !strings.Contains(err.Error(), "is closing") && !strings.Contains(err.Error(), "the connection is unavailable") && !strings.Contains(err.Error(), "connection error") { return resp, err @@ -4607,21 +5239,21 @@ func (p *raftProxyControlServer) CreateService(ctx context.Context, r *CreateSer conn, err := p.pollNewLeaderConn(ctx) if err != nil { if err == raftselector.ErrIsLeader { - return p.local.CreateService(ctx, r) + return p.local.UpdateNode(ctx, r) } return nil, err } - return NewControlClient(conn).CreateService(modCtx, r) + return NewControlClient(conn).UpdateNode(modCtx, r) } return resp, err } -func (p *raftProxyControlServer) UpdateService(ctx context.Context, r *UpdateServiceRequest) (*UpdateServiceResponse, error) { +func (p *raftProxyControlServer) RemoveNode(ctx context.Context, r *RemoveNodeRequest) (*RemoveNodeResponse, error) { conn, err := p.connSelector.LeaderConn(ctx) if err != nil { if err == raftselector.ErrIsLeader { - return p.local.UpdateService(ctx, r) + return p.local.RemoveNode(ctx, r) } return nil, err } @@ -4630,7 +5262,7 @@ func (p *raftProxyControlServer) UpdateService(ctx context.Context, r *UpdateSer return nil, err } - resp, err := NewControlClient(conn).UpdateService(modCtx, r) + resp, err := NewControlClient(conn).RemoveNode(modCtx, r) if err != nil { if !strings.Contains(err.Error(), "is closing") && !strings.Contains(err.Error(), "the connection is unavailable") && !strings.Contains(err.Error(), "connection error") { return resp, err @@ -4638,21 +5270,21 @@ func (p *raftProxyControlServer) UpdateService(ctx context.Context, r *UpdateSer conn, err := p.pollNewLeaderConn(ctx) if err != nil { if err == raftselector.ErrIsLeader { - return p.local.UpdateService(ctx, r) + return p.local.RemoveNode(ctx, r) } return nil, err } - return NewControlClient(conn).UpdateService(modCtx, r) + return NewControlClient(conn).RemoveNode(modCtx, r) } return resp, err } -func (p *raftProxyControlServer) RemoveService(ctx context.Context, r *RemoveServiceRequest) (*RemoveServiceResponse, error) { +func (p *raftProxyControlServer) GetTask(ctx context.Context, r *GetTaskRequest) (*GetTaskResponse, error) { conn, err := p.connSelector.LeaderConn(ctx) if err != nil { if err == raftselector.ErrIsLeader { - return p.local.RemoveService(ctx, r) + return p.local.GetTask(ctx, r) } return nil, err } @@ -4661,7 +5293,7 @@ func (p *raftProxyControlServer) RemoveService(ctx context.Context, r *RemoveSer return nil, err } - resp, err := NewControlClient(conn).RemoveService(modCtx, r) + resp, err := NewControlClient(conn).GetTask(modCtx, r) if err != nil { if !strings.Contains(err.Error(), "is closing") && !strings.Contains(err.Error(), "the connection is unavailable") && !strings.Contains(err.Error(), "connection error") { return resp, err @@ -4669,21 +5301,21 @@ func (p *raftProxyControlServer) RemoveService(ctx context.Context, r *RemoveSer conn, err := p.pollNewLeaderConn(ctx) if err != nil { if err == raftselector.ErrIsLeader { - return p.local.RemoveService(ctx, r) + return p.local.GetTask(ctx, r) } return nil, err } - return NewControlClient(conn).RemoveService(modCtx, r) + return NewControlClient(conn).GetTask(modCtx, r) } return resp, err } -func (p *raftProxyControlServer) GetNetwork(ctx context.Context, r *GetNetworkRequest) (*GetNetworkResponse, error) { +func (p *raftProxyControlServer) ListTasks(ctx context.Context, r *ListTasksRequest) (*ListTasksResponse, error) { conn, err := p.connSelector.LeaderConn(ctx) if err != nil { if err == raftselector.ErrIsLeader { - return p.local.GetNetwork(ctx, r) + return p.local.ListTasks(ctx, r) } return nil, err } @@ -4692,7 +5324,7 @@ func (p *raftProxyControlServer) GetNetwork(ctx context.Context, r *GetNetworkRe return nil, err } - resp, err := NewControlClient(conn).GetNetwork(modCtx, r) + resp, err := NewControlClient(conn).ListTasks(modCtx, r) if err != nil { if !strings.Contains(err.Error(), "is closing") && !strings.Contains(err.Error(), "the connection is unavailable") && !strings.Contains(err.Error(), "connection error") { return resp, err @@ -4700,21 +5332,21 @@ func (p *raftProxyControlServer) GetNetwork(ctx context.Context, r *GetNetworkRe conn, err := p.pollNewLeaderConn(ctx) if err != nil { if err == raftselector.ErrIsLeader { - return p.local.GetNetwork(ctx, r) + return p.local.ListTasks(ctx, r) } return nil, err } - return NewControlClient(conn).GetNetwork(modCtx, r) + return NewControlClient(conn).ListTasks(modCtx, r) } return resp, err } -func (p *raftProxyControlServer) ListNetworks(ctx context.Context, r *ListNetworksRequest) (*ListNetworksResponse, error) { +func (p *raftProxyControlServer) RemoveTask(ctx context.Context, r *RemoveTaskRequest) (*RemoveTaskResponse, error) { conn, err := p.connSelector.LeaderConn(ctx) if err != nil { if err == raftselector.ErrIsLeader { - return p.local.ListNetworks(ctx, r) + return p.local.RemoveTask(ctx, r) } return nil, err } @@ -4723,7 +5355,7 @@ func (p *raftProxyControlServer) ListNetworks(ctx context.Context, r *ListNetwor return nil, err } - resp, err := NewControlClient(conn).ListNetworks(modCtx, r) + resp, err := NewControlClient(conn).RemoveTask(modCtx, r) if err != nil { if !strings.Contains(err.Error(), "is closing") && !strings.Contains(err.Error(), "the connection is unavailable") && !strings.Contains(err.Error(), "connection error") { return resp, err @@ -4731,21 +5363,21 @@ func (p *raftProxyControlServer) ListNetworks(ctx context.Context, r *ListNetwor conn, err := p.pollNewLeaderConn(ctx) if err != nil { if err == raftselector.ErrIsLeader { - return p.local.ListNetworks(ctx, r) + return p.local.RemoveTask(ctx, r) } return nil, err } - return NewControlClient(conn).ListNetworks(modCtx, r) + return NewControlClient(conn).RemoveTask(modCtx, r) } return resp, err } -func (p *raftProxyControlServer) CreateNetwork(ctx context.Context, r *CreateNetworkRequest) (*CreateNetworkResponse, error) { +func (p *raftProxyControlServer) GetService(ctx context.Context, r *GetServiceRequest) (*GetServiceResponse, error) { conn, err := p.connSelector.LeaderConn(ctx) if err != nil { if err == raftselector.ErrIsLeader { - return p.local.CreateNetwork(ctx, r) + return p.local.GetService(ctx, r) } return nil, err } @@ -4754,7 +5386,7 @@ func (p *raftProxyControlServer) CreateNetwork(ctx context.Context, r *CreateNet return nil, err } - resp, err := NewControlClient(conn).CreateNetwork(modCtx, r) + resp, err := NewControlClient(conn).GetService(modCtx, r) if err != nil { if !strings.Contains(err.Error(), "is closing") && !strings.Contains(err.Error(), "the connection is unavailable") && !strings.Contains(err.Error(), "connection error") { return resp, err @@ -4762,21 +5394,21 @@ func (p *raftProxyControlServer) CreateNetwork(ctx context.Context, r *CreateNet conn, err := p.pollNewLeaderConn(ctx) if err != nil { if err == raftselector.ErrIsLeader { - return p.local.CreateNetwork(ctx, r) + return p.local.GetService(ctx, r) } return nil, err } - return NewControlClient(conn).CreateNetwork(modCtx, r) + return NewControlClient(conn).GetService(modCtx, r) } return resp, err } -func (p *raftProxyControlServer) RemoveNetwork(ctx context.Context, r *RemoveNetworkRequest) (*RemoveNetworkResponse, error) { +func (p *raftProxyControlServer) ListServices(ctx context.Context, r *ListServicesRequest) (*ListServicesResponse, error) { conn, err := p.connSelector.LeaderConn(ctx) if err != nil { if err == raftselector.ErrIsLeader { - return p.local.RemoveNetwork(ctx, r) + return p.local.ListServices(ctx, r) } return nil, err } @@ -4785,7 +5417,7 @@ func (p *raftProxyControlServer) RemoveNetwork(ctx context.Context, r *RemoveNet return nil, err } - resp, err := NewControlClient(conn).RemoveNetwork(modCtx, r) + resp, err := NewControlClient(conn).ListServices(modCtx, r) if err != nil { if !strings.Contains(err.Error(), "is closing") && !strings.Contains(err.Error(), "the connection is unavailable") && !strings.Contains(err.Error(), "connection error") { return resp, err @@ -4793,21 +5425,21 @@ func (p *raftProxyControlServer) RemoveNetwork(ctx context.Context, r *RemoveNet conn, err := p.pollNewLeaderConn(ctx) if err != nil { if err == raftselector.ErrIsLeader { - return p.local.RemoveNetwork(ctx, r) + return p.local.ListServices(ctx, r) } return nil, err } - return NewControlClient(conn).RemoveNetwork(modCtx, r) + return NewControlClient(conn).ListServices(modCtx, r) } return resp, err } -func (p *raftProxyControlServer) GetCluster(ctx context.Context, r *GetClusterRequest) (*GetClusterResponse, error) { +func (p *raftProxyControlServer) CreateService(ctx context.Context, r *CreateServiceRequest) (*CreateServiceResponse, error) { conn, err := p.connSelector.LeaderConn(ctx) if err != nil { if err == raftselector.ErrIsLeader { - return p.local.GetCluster(ctx, r) + return p.local.CreateService(ctx, r) } return nil, err } @@ -4816,7 +5448,7 @@ func (p *raftProxyControlServer) GetCluster(ctx context.Context, r *GetClusterRe return nil, err } - resp, err := NewControlClient(conn).GetCluster(modCtx, r) + resp, err := NewControlClient(conn).CreateService(modCtx, r) if err != nil { if !strings.Contains(err.Error(), "is closing") && !strings.Contains(err.Error(), "the connection is unavailable") && !strings.Contains(err.Error(), "connection error") { return resp, err @@ -4824,21 +5456,21 @@ func (p *raftProxyControlServer) GetCluster(ctx context.Context, r *GetClusterRe conn, err := p.pollNewLeaderConn(ctx) if err != nil { if err == raftselector.ErrIsLeader { - return p.local.GetCluster(ctx, r) + return p.local.CreateService(ctx, r) } return nil, err } - return NewControlClient(conn).GetCluster(modCtx, r) + return NewControlClient(conn).CreateService(modCtx, r) } return resp, err } -func (p *raftProxyControlServer) ListClusters(ctx context.Context, r *ListClustersRequest) (*ListClustersResponse, error) { +func (p *raftProxyControlServer) UpdateService(ctx context.Context, r *UpdateServiceRequest) (*UpdateServiceResponse, error) { conn, err := p.connSelector.LeaderConn(ctx) if err != nil { if err == raftselector.ErrIsLeader { - return p.local.ListClusters(ctx, r) + return p.local.UpdateService(ctx, r) } return nil, err } @@ -4847,7 +5479,7 @@ func (p *raftProxyControlServer) ListClusters(ctx context.Context, r *ListCluste return nil, err } - resp, err := NewControlClient(conn).ListClusters(modCtx, r) + resp, err := NewControlClient(conn).UpdateService(modCtx, r) if err != nil { if !strings.Contains(err.Error(), "is closing") && !strings.Contains(err.Error(), "the connection is unavailable") && !strings.Contains(err.Error(), "connection error") { return resp, err @@ -4855,21 +5487,21 @@ func (p *raftProxyControlServer) ListClusters(ctx context.Context, r *ListCluste conn, err := p.pollNewLeaderConn(ctx) if err != nil { if err == raftselector.ErrIsLeader { - return p.local.ListClusters(ctx, r) + return p.local.UpdateService(ctx, r) } return nil, err } - return NewControlClient(conn).ListClusters(modCtx, r) + return NewControlClient(conn).UpdateService(modCtx, r) } return resp, err } -func (p *raftProxyControlServer) UpdateCluster(ctx context.Context, r *UpdateClusterRequest) (*UpdateClusterResponse, error) { +func (p *raftProxyControlServer) RemoveService(ctx context.Context, r *RemoveServiceRequest) (*RemoveServiceResponse, error) { conn, err := p.connSelector.LeaderConn(ctx) if err != nil { if err == raftselector.ErrIsLeader { - return p.local.UpdateCluster(ctx, r) + return p.local.RemoveService(ctx, r) } return nil, err } @@ -4878,7 +5510,7 @@ func (p *raftProxyControlServer) UpdateCluster(ctx context.Context, r *UpdateClu return nil, err } - resp, err := NewControlClient(conn).UpdateCluster(modCtx, r) + resp, err := NewControlClient(conn).RemoveService(modCtx, r) if err != nil { if !strings.Contains(err.Error(), "is closing") && !strings.Contains(err.Error(), "the connection is unavailable") && !strings.Contains(err.Error(), "connection error") { return resp, err @@ -4886,183 +5518,377 @@ func (p *raftProxyControlServer) UpdateCluster(ctx context.Context, r *UpdateClu conn, err := p.pollNewLeaderConn(ctx) if err != nil { if err == raftselector.ErrIsLeader { - return p.local.UpdateCluster(ctx, r) + return p.local.RemoveService(ctx, r) } return nil, err } - return NewControlClient(conn).UpdateCluster(modCtx, r) + return NewControlClient(conn).RemoveService(modCtx, r) } return resp, err } -func (m *GetNodeRequest) Size() (n int) { - var l int - _ = l - l = len(m.NodeID) - if l > 0 { - n += 1 + l + sovControl(uint64(l)) - } - return n -} +func (p *raftProxyControlServer) GetNetwork(ctx context.Context, r *GetNetworkRequest) (*GetNetworkResponse, error) { -func (m *GetNodeResponse) Size() (n int) { - var l int - _ = l - if m.Node != nil { - l = m.Node.Size() - n += 1 + l + sovControl(uint64(l)) + conn, err := p.connSelector.LeaderConn(ctx) + if err != nil { + if err == raftselector.ErrIsLeader { + return p.local.GetNetwork(ctx, r) + } + return nil, err + } + modCtx, err := p.runCtxMods(ctx) + if err != nil { + return nil, err } - return n -} -func (m *ListNodesRequest) Size() (n int) { - var l int - _ = l - if m.Filters != nil { - l = m.Filters.Size() - n += 1 + l + sovControl(uint64(l)) + resp, err := NewControlClient(conn).GetNetwork(modCtx, r) + if err != nil { + if !strings.Contains(err.Error(), "is closing") && !strings.Contains(err.Error(), "the connection is unavailable") && !strings.Contains(err.Error(), "connection error") { + return resp, err + } + conn, err := p.pollNewLeaderConn(ctx) + if err != nil { + if err == raftselector.ErrIsLeader { + return p.local.GetNetwork(ctx, r) + } + return nil, err + } + return NewControlClient(conn).GetNetwork(modCtx, r) } - return n + return resp, err } -func (m *ListNodesRequest_Filters) Size() (n int) { - var l int - _ = l - if len(m.Names) > 0 { - for _, s := range m.Names { - l = len(s) - n += 1 + l + sovControl(uint64(l)) +func (p *raftProxyControlServer) ListNetworks(ctx context.Context, r *ListNetworksRequest) (*ListNetworksResponse, error) { + + conn, err := p.connSelector.LeaderConn(ctx) + if err != nil { + if err == raftselector.ErrIsLeader { + return p.local.ListNetworks(ctx, r) } + return nil, err } - if len(m.IDPrefixes) > 0 { - for _, s := range m.IDPrefixes { - l = len(s) - n += 1 + l + sovControl(uint64(l)) - } + modCtx, err := p.runCtxMods(ctx) + if err != nil { + return nil, err } - if len(m.Labels) > 0 { - for k, v := range m.Labels { - _ = k - _ = v - mapEntrySize := 1 + len(k) + sovControl(uint64(len(k))) + 1 + len(v) + sovControl(uint64(len(v))) - n += mapEntrySize + 1 + sovControl(uint64(mapEntrySize)) + + resp, err := NewControlClient(conn).ListNetworks(modCtx, r) + if err != nil { + if !strings.Contains(err.Error(), "is closing") && !strings.Contains(err.Error(), "the connection is unavailable") && !strings.Contains(err.Error(), "connection error") { + return resp, err } - } - if len(m.Memberships) > 0 { - for _, e := range m.Memberships { - n += 1 + sovControl(uint64(e)) + conn, err := p.pollNewLeaderConn(ctx) + if err != nil { + if err == raftselector.ErrIsLeader { + return p.local.ListNetworks(ctx, r) + } + return nil, err } + return NewControlClient(conn).ListNetworks(modCtx, r) } - if len(m.Roles) > 0 { - for _, e := range m.Roles { - n += 1 + sovControl(uint64(e)) + return resp, err +} + +func (p *raftProxyControlServer) CreateNetwork(ctx context.Context, r *CreateNetworkRequest) (*CreateNetworkResponse, error) { + + conn, err := p.connSelector.LeaderConn(ctx) + if err != nil { + if err == raftselector.ErrIsLeader { + return p.local.CreateNetwork(ctx, r) } + return nil, err } - if len(m.NamePrefixes) > 0 { - for _, s := range m.NamePrefixes { - l = len(s) - n += 1 + l + sovControl(uint64(l)) - } + modCtx, err := p.runCtxMods(ctx) + if err != nil { + return nil, err } - return n -} -func (m *ListNodesResponse) Size() (n int) { - var l int - _ = l - if len(m.Nodes) > 0 { - for _, e := range m.Nodes { - l = e.Size() - n += 1 + l + sovControl(uint64(l)) + resp, err := NewControlClient(conn).CreateNetwork(modCtx, r) + if err != nil { + if !strings.Contains(err.Error(), "is closing") && !strings.Contains(err.Error(), "the connection is unavailable") && !strings.Contains(err.Error(), "connection error") { + return resp, err + } + conn, err := p.pollNewLeaderConn(ctx) + if err != nil { + if err == raftselector.ErrIsLeader { + return p.local.CreateNetwork(ctx, r) + } + return nil, err } + return NewControlClient(conn).CreateNetwork(modCtx, r) } - return n + return resp, err } -func (m *UpdateNodeRequest) Size() (n int) { - var l int - _ = l - l = len(m.NodeID) - if l > 0 { - n += 1 + l + sovControl(uint64(l)) - } - if m.NodeVersion != nil { - l = m.NodeVersion.Size() - n += 1 + l + sovControl(uint64(l)) +func (p *raftProxyControlServer) RemoveNetwork(ctx context.Context, r *RemoveNetworkRequest) (*RemoveNetworkResponse, error) { + + conn, err := p.connSelector.LeaderConn(ctx) + if err != nil { + if err == raftselector.ErrIsLeader { + return p.local.RemoveNetwork(ctx, r) + } + return nil, err } - if m.Spec != nil { - l = m.Spec.Size() - n += 1 + l + sovControl(uint64(l)) + modCtx, err := p.runCtxMods(ctx) + if err != nil { + return nil, err } - return n -} -func (m *UpdateNodeResponse) Size() (n int) { - var l int - _ = l - if m.Node != nil { - l = m.Node.Size() - n += 1 + l + sovControl(uint64(l)) + resp, err := NewControlClient(conn).RemoveNetwork(modCtx, r) + if err != nil { + if !strings.Contains(err.Error(), "is closing") && !strings.Contains(err.Error(), "the connection is unavailable") && !strings.Contains(err.Error(), "connection error") { + return resp, err + } + conn, err := p.pollNewLeaderConn(ctx) + if err != nil { + if err == raftselector.ErrIsLeader { + return p.local.RemoveNetwork(ctx, r) + } + return nil, err + } + return NewControlClient(conn).RemoveNetwork(modCtx, r) } - return n + return resp, err } -func (m *RemoveNodeRequest) Size() (n int) { - var l int - _ = l - l = len(m.NodeID) - if l > 0 { - n += 1 + l + sovControl(uint64(l)) +func (p *raftProxyControlServer) GetCluster(ctx context.Context, r *GetClusterRequest) (*GetClusterResponse, error) { + + conn, err := p.connSelector.LeaderConn(ctx) + if err != nil { + if err == raftselector.ErrIsLeader { + return p.local.GetCluster(ctx, r) + } + return nil, err } - if m.Force { - n += 2 + modCtx, err := p.runCtxMods(ctx) + if err != nil { + return nil, err } - return n -} - -func (m *RemoveNodeResponse) Size() (n int) { - var l int - _ = l - return n -} -func (m *GetTaskRequest) Size() (n int) { - var l int - _ = l - l = len(m.TaskID) - if l > 0 { - n += 1 + l + sovControl(uint64(l)) + resp, err := NewControlClient(conn).GetCluster(modCtx, r) + if err != nil { + if !strings.Contains(err.Error(), "is closing") && !strings.Contains(err.Error(), "the connection is unavailable") && !strings.Contains(err.Error(), "connection error") { + return resp, err + } + conn, err := p.pollNewLeaderConn(ctx) + if err != nil { + if err == raftselector.ErrIsLeader { + return p.local.GetCluster(ctx, r) + } + return nil, err + } + return NewControlClient(conn).GetCluster(modCtx, r) } - return n + return resp, err } -func (m *GetTaskResponse) Size() (n int) { - var l int - _ = l - if m.Task != nil { - l = m.Task.Size() - n += 1 + l + sovControl(uint64(l)) +func (p *raftProxyControlServer) ListClusters(ctx context.Context, r *ListClustersRequest) (*ListClustersResponse, error) { + + conn, err := p.connSelector.LeaderConn(ctx) + if err != nil { + if err == raftselector.ErrIsLeader { + return p.local.ListClusters(ctx, r) + } + return nil, err + } + modCtx, err := p.runCtxMods(ctx) + if err != nil { + return nil, err } - return n -} -func (m *RemoveTaskRequest) Size() (n int) { - var l int - _ = l - l = len(m.TaskID) - if l > 0 { - n += 1 + l + sovControl(uint64(l)) + resp, err := NewControlClient(conn).ListClusters(modCtx, r) + if err != nil { + if !strings.Contains(err.Error(), "is closing") && !strings.Contains(err.Error(), "the connection is unavailable") && !strings.Contains(err.Error(), "connection error") { + return resp, err + } + conn, err := p.pollNewLeaderConn(ctx) + if err != nil { + if err == raftselector.ErrIsLeader { + return p.local.ListClusters(ctx, r) + } + return nil, err + } + return NewControlClient(conn).ListClusters(modCtx, r) } - return n + return resp, err } -func (m *RemoveTaskResponse) Size() (n int) { - var l int - _ = l - return n -} +func (p *raftProxyControlServer) UpdateCluster(ctx context.Context, r *UpdateClusterRequest) (*UpdateClusterResponse, error) { -func (m *ListTasksRequest) Size() (n int) { + conn, err := p.connSelector.LeaderConn(ctx) + if err != nil { + if err == raftselector.ErrIsLeader { + return p.local.UpdateCluster(ctx, r) + } + return nil, err + } + modCtx, err := p.runCtxMods(ctx) + if err != nil { + return nil, err + } + + resp, err := NewControlClient(conn).UpdateCluster(modCtx, r) + if err != nil { + if !strings.Contains(err.Error(), "is closing") && !strings.Contains(err.Error(), "the connection is unavailable") && !strings.Contains(err.Error(), "connection error") { + return resp, err + } + conn, err := p.pollNewLeaderConn(ctx) + if err != nil { + if err == raftselector.ErrIsLeader { + return p.local.UpdateCluster(ctx, r) + } + return nil, err + } + return NewControlClient(conn).UpdateCluster(modCtx, r) + } + return resp, err +} + +func (p *raftProxyControlServer) GetSecret(ctx context.Context, r *GetSecretRequest) (*GetSecretResponse, error) { + + conn, err := p.connSelector.LeaderConn(ctx) + if err != nil { + if err == raftselector.ErrIsLeader { + return p.local.GetSecret(ctx, r) + } + return nil, err + } + modCtx, err := p.runCtxMods(ctx) + if err != nil { + return nil, err + } + + resp, err := NewControlClient(conn).GetSecret(modCtx, r) + if err != nil { + if !strings.Contains(err.Error(), "is closing") && !strings.Contains(err.Error(), "the connection is unavailable") && !strings.Contains(err.Error(), "connection error") { + return resp, err + } + conn, err := p.pollNewLeaderConn(ctx) + if err != nil { + if err == raftselector.ErrIsLeader { + return p.local.GetSecret(ctx, r) + } + return nil, err + } + return NewControlClient(conn).GetSecret(modCtx, r) + } + return resp, err +} + +func (p *raftProxyControlServer) ListSecrets(ctx context.Context, r *ListSecretsRequest) (*ListSecretsResponse, error) { + + conn, err := p.connSelector.LeaderConn(ctx) + if err != nil { + if err == raftselector.ErrIsLeader { + return p.local.ListSecrets(ctx, r) + } + return nil, err + } + modCtx, err := p.runCtxMods(ctx) + if err != nil { + return nil, err + } + + resp, err := NewControlClient(conn).ListSecrets(modCtx, r) + if err != nil { + if !strings.Contains(err.Error(), "is closing") && !strings.Contains(err.Error(), "the connection is unavailable") && !strings.Contains(err.Error(), "connection error") { + return resp, err + } + conn, err := p.pollNewLeaderConn(ctx) + if err != nil { + if err == raftselector.ErrIsLeader { + return p.local.ListSecrets(ctx, r) + } + return nil, err + } + return NewControlClient(conn).ListSecrets(modCtx, r) + } + return resp, err +} + +func (p *raftProxyControlServer) CreateSecret(ctx context.Context, r *CreateSecretRequest) (*CreateSecretResponse, error) { + + conn, err := p.connSelector.LeaderConn(ctx) + if err != nil { + if err == raftselector.ErrIsLeader { + return p.local.CreateSecret(ctx, r) + } + return nil, err + } + modCtx, err := p.runCtxMods(ctx) + if err != nil { + return nil, err + } + + resp, err := NewControlClient(conn).CreateSecret(modCtx, r) + if err != nil { + if !strings.Contains(err.Error(), "is closing") && !strings.Contains(err.Error(), "the connection is unavailable") && !strings.Contains(err.Error(), "connection error") { + return resp, err + } + conn, err := p.pollNewLeaderConn(ctx) + if err != nil { + if err == raftselector.ErrIsLeader { + return p.local.CreateSecret(ctx, r) + } + return nil, err + } + return NewControlClient(conn).CreateSecret(modCtx, r) + } + return resp, err +} + +func (p *raftProxyControlServer) RemoveSecret(ctx context.Context, r *RemoveSecretRequest) (*RemoveSecretResponse, error) { + + conn, err := p.connSelector.LeaderConn(ctx) + if err != nil { + if err == raftselector.ErrIsLeader { + return p.local.RemoveSecret(ctx, r) + } + return nil, err + } + modCtx, err := p.runCtxMods(ctx) + if err != nil { + return nil, err + } + + resp, err := NewControlClient(conn).RemoveSecret(modCtx, r) + if err != nil { + if !strings.Contains(err.Error(), "is closing") && !strings.Contains(err.Error(), "the connection is unavailable") && !strings.Contains(err.Error(), "connection error") { + return resp, err + } + conn, err := p.pollNewLeaderConn(ctx) + if err != nil { + if err == raftselector.ErrIsLeader { + return p.local.RemoveSecret(ctx, r) + } + return nil, err + } + return NewControlClient(conn).RemoveSecret(modCtx, r) + } + return resp, err +} + +func (m *GetNodeRequest) Size() (n int) { + var l int + _ = l + l = len(m.NodeID) + if l > 0 { + n += 1 + l + sovControl(uint64(l)) + } + return n +} + +func (m *GetNodeResponse) Size() (n int) { + var l int + _ = l + if m.Node != nil { + l = m.Node.Size() + n += 1 + l + sovControl(uint64(l)) + } + return n +} + +func (m *ListNodesRequest) Size() (n int) { var l int _ = l if m.Filters != nil { @@ -5072,7 +5898,7 @@ func (m *ListTasksRequest) Size() (n int) { return n } -func (m *ListTasksRequest_Filters) Size() (n int) { +func (m *ListNodesRequest_Filters) Size() (n int) { var l int _ = l if len(m.Names) > 0 { @@ -5095,20 +5921,13 @@ func (m *ListTasksRequest_Filters) Size() (n int) { n += mapEntrySize + 1 + sovControl(uint64(mapEntrySize)) } } - if len(m.ServiceIDs) > 0 { - for _, s := range m.ServiceIDs { - l = len(s) - n += 1 + l + sovControl(uint64(l)) - } - } - if len(m.NodeIDs) > 0 { - for _, s := range m.NodeIDs { - l = len(s) - n += 1 + l + sovControl(uint64(l)) + if len(m.Memberships) > 0 { + for _, e := range m.Memberships { + n += 1 + sovControl(uint64(e)) } } - if len(m.DesiredStates) > 0 { - for _, e := range m.DesiredStates { + if len(m.Roles) > 0 { + for _, e := range m.Roles { n += 1 + sovControl(uint64(e)) } } @@ -5121,11 +5940,11 @@ func (m *ListTasksRequest_Filters) Size() (n int) { return n } -func (m *ListTasksResponse) Size() (n int) { +func (m *ListNodesResponse) Size() (n int) { var l int _ = l - if len(m.Tasks) > 0 { - for _, e := range m.Tasks { + if len(m.Nodes) > 0 { + for _, e := range m.Nodes { l = e.Size() n += 1 + l + sovControl(uint64(l)) } @@ -5133,9 +5952,17 @@ func (m *ListTasksResponse) Size() (n int) { return n } -func (m *CreateServiceRequest) Size() (n int) { +func (m *UpdateNodeRequest) Size() (n int) { var l int _ = l + l = len(m.NodeID) + if l > 0 { + n += 1 + l + sovControl(uint64(l)) + } + if m.NodeVersion != nil { + l = m.NodeVersion.Size() + n += 1 + l + sovControl(uint64(l)) + } if m.Spec != nil { l = m.Spec.Size() n += 1 + l + sovControl(uint64(l)) @@ -5143,81 +5970,72 @@ func (m *CreateServiceRequest) Size() (n int) { return n } -func (m *CreateServiceResponse) Size() (n int) { +func (m *UpdateNodeResponse) Size() (n int) { var l int _ = l - if m.Service != nil { - l = m.Service.Size() + if m.Node != nil { + l = m.Node.Size() n += 1 + l + sovControl(uint64(l)) } return n } -func (m *GetServiceRequest) Size() (n int) { +func (m *RemoveNodeRequest) Size() (n int) { var l int _ = l - l = len(m.ServiceID) + l = len(m.NodeID) if l > 0 { n += 1 + l + sovControl(uint64(l)) } + if m.Force { + n += 2 + } return n } -func (m *GetServiceResponse) Size() (n int) { +func (m *RemoveNodeResponse) Size() (n int) { var l int _ = l - if m.Service != nil { - l = m.Service.Size() - n += 1 + l + sovControl(uint64(l)) - } return n } -func (m *UpdateServiceRequest) Size() (n int) { +func (m *GetTaskRequest) Size() (n int) { var l int _ = l - l = len(m.ServiceID) + l = len(m.TaskID) if l > 0 { n += 1 + l + sovControl(uint64(l)) } - if m.ServiceVersion != nil { - l = m.ServiceVersion.Size() - n += 1 + l + sovControl(uint64(l)) - } - if m.Spec != nil { - l = m.Spec.Size() - n += 1 + l + sovControl(uint64(l)) - } return n } -func (m *UpdateServiceResponse) Size() (n int) { +func (m *GetTaskResponse) Size() (n int) { var l int _ = l - if m.Service != nil { - l = m.Service.Size() + if m.Task != nil { + l = m.Task.Size() n += 1 + l + sovControl(uint64(l)) } return n } -func (m *RemoveServiceRequest) Size() (n int) { +func (m *RemoveTaskRequest) Size() (n int) { var l int _ = l - l = len(m.ServiceID) + l = len(m.TaskID) if l > 0 { n += 1 + l + sovControl(uint64(l)) } return n } -func (m *RemoveServiceResponse) Size() (n int) { +func (m *RemoveTaskResponse) Size() (n int) { var l int _ = l return n } -func (m *ListServicesRequest) Size() (n int) { +func (m *ListTasksRequest) Size() (n int) { var l int _ = l if m.Filters != nil { @@ -5227,7 +6045,7 @@ func (m *ListServicesRequest) Size() (n int) { return n } -func (m *ListServicesRequest_Filters) Size() (n int) { +func (m *ListTasksRequest_Filters) Size() (n int) { var l int _ = l if len(m.Names) > 0 { @@ -5250,6 +6068,23 @@ func (m *ListServicesRequest_Filters) Size() (n int) { n += mapEntrySize + 1 + sovControl(uint64(mapEntrySize)) } } + if len(m.ServiceIDs) > 0 { + for _, s := range m.ServiceIDs { + l = len(s) + n += 1 + l + sovControl(uint64(l)) + } + } + if len(m.NodeIDs) > 0 { + for _, s := range m.NodeIDs { + l = len(s) + n += 1 + l + sovControl(uint64(l)) + } + } + if len(m.DesiredStates) > 0 { + for _, e := range m.DesiredStates { + n += 1 + sovControl(uint64(e)) + } + } if len(m.NamePrefixes) > 0 { for _, s := range m.NamePrefixes { l = len(s) @@ -5259,10 +6094,148 @@ func (m *ListServicesRequest_Filters) Size() (n int) { return n } -func (m *ListServicesResponse) Size() (n int) { +func (m *ListTasksResponse) Size() (n int) { var l int _ = l - if len(m.Services) > 0 { + if len(m.Tasks) > 0 { + for _, e := range m.Tasks { + l = e.Size() + n += 1 + l + sovControl(uint64(l)) + } + } + return n +} + +func (m *CreateServiceRequest) Size() (n int) { + var l int + _ = l + if m.Spec != nil { + l = m.Spec.Size() + n += 1 + l + sovControl(uint64(l)) + } + return n +} + +func (m *CreateServiceResponse) Size() (n int) { + var l int + _ = l + if m.Service != nil { + l = m.Service.Size() + n += 1 + l + sovControl(uint64(l)) + } + return n +} + +func (m *GetServiceRequest) Size() (n int) { + var l int + _ = l + l = len(m.ServiceID) + if l > 0 { + n += 1 + l + sovControl(uint64(l)) + } + return n +} + +func (m *GetServiceResponse) Size() (n int) { + var l int + _ = l + if m.Service != nil { + l = m.Service.Size() + n += 1 + l + sovControl(uint64(l)) + } + return n +} + +func (m *UpdateServiceRequest) Size() (n int) { + var l int + _ = l + l = len(m.ServiceID) + if l > 0 { + n += 1 + l + sovControl(uint64(l)) + } + if m.ServiceVersion != nil { + l = m.ServiceVersion.Size() + n += 1 + l + sovControl(uint64(l)) + } + if m.Spec != nil { + l = m.Spec.Size() + n += 1 + l + sovControl(uint64(l)) + } + return n +} + +func (m *UpdateServiceResponse) Size() (n int) { + var l int + _ = l + if m.Service != nil { + l = m.Service.Size() + n += 1 + l + sovControl(uint64(l)) + } + return n +} + +func (m *RemoveServiceRequest) Size() (n int) { + var l int + _ = l + l = len(m.ServiceID) + if l > 0 { + n += 1 + l + sovControl(uint64(l)) + } + return n +} + +func (m *RemoveServiceResponse) Size() (n int) { + var l int + _ = l + return n +} + +func (m *ListServicesRequest) Size() (n int) { + var l int + _ = l + if m.Filters != nil { + l = m.Filters.Size() + n += 1 + l + sovControl(uint64(l)) + } + return n +} + +func (m *ListServicesRequest_Filters) Size() (n int) { + var l int + _ = l + if len(m.Names) > 0 { + for _, s := range m.Names { + l = len(s) + n += 1 + l + sovControl(uint64(l)) + } + } + if len(m.IDPrefixes) > 0 { + for _, s := range m.IDPrefixes { + l = len(s) + n += 1 + l + sovControl(uint64(l)) + } + } + if len(m.Labels) > 0 { + for k, v := range m.Labels { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovControl(uint64(len(k))) + 1 + len(v) + sovControl(uint64(len(v))) + n += mapEntrySize + 1 + sovControl(uint64(mapEntrySize)) + } + } + if len(m.NamePrefixes) > 0 { + for _, s := range m.NamePrefixes { + l = len(s) + n += 1 + l + sovControl(uint64(l)) + } + } + return n +} + +func (m *ListServicesResponse) Size() (n int) { + var l int + _ = l + if len(m.Services) > 0 { for _, e := range m.Services { l = e.Size() n += 1 + l + sovControl(uint64(l)) @@ -5505,6 +6478,116 @@ func (m *UpdateClusterResponse) Size() (n int) { return n } +func (m *GetSecretRequest) Size() (n int) { + var l int + _ = l + l = len(m.SecretID) + if l > 0 { + n += 1 + l + sovControl(uint64(l)) + } + return n +} + +func (m *GetSecretResponse) Size() (n int) { + var l int + _ = l + if m.Secret != nil { + l = m.Secret.Size() + n += 1 + l + sovControl(uint64(l)) + } + return n +} + +func (m *ListSecretsRequest) Size() (n int) { + var l int + _ = l + if m.Filters != nil { + l = m.Filters.Size() + n += 1 + l + sovControl(uint64(l)) + } + return n +} + +func (m *ListSecretsRequest_Filters) Size() (n int) { + var l int + _ = l + if len(m.Names) > 0 { + for _, s := range m.Names { + l = len(s) + n += 1 + l + sovControl(uint64(l)) + } + } + if len(m.IDPrefixes) > 0 { + for _, s := range m.IDPrefixes { + l = len(s) + n += 1 + l + sovControl(uint64(l)) + } + } + if len(m.Labels) > 0 { + for k, v := range m.Labels { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovControl(uint64(len(k))) + 1 + len(v) + sovControl(uint64(len(v))) + n += mapEntrySize + 1 + sovControl(uint64(mapEntrySize)) + } + } + if len(m.NamePrefixes) > 0 { + for _, s := range m.NamePrefixes { + l = len(s) + n += 1 + l + sovControl(uint64(l)) + } + } + return n +} + +func (m *ListSecretsResponse) Size() (n int) { + var l int + _ = l + if len(m.Secrets) > 0 { + for _, e := range m.Secrets { + l = e.Size() + n += 1 + l + sovControl(uint64(l)) + } + } + return n +} + +func (m *CreateSecretRequest) Size() (n int) { + var l int + _ = l + if m.Spec != nil { + l = m.Spec.Size() + n += 1 + l + sovControl(uint64(l)) + } + return n +} + +func (m *CreateSecretResponse) Size() (n int) { + var l int + _ = l + if m.Secret != nil { + l = m.Secret.Size() + n += 1 + l + sovControl(uint64(l)) + } + return n +} + +func (m *RemoveSecretRequest) Size() (n int) { + var l int + _ = l + l = len(m.SecretID) + if l > 0 { + n += 1 + l + sovControl(uint64(l)) + } + return n +} + +func (m *RemoveSecretResponse) Size() (n int) { + var l int + _ = l + return n +} + func sovControl(x uint64) (n int) { for { n++ @@ -6029,21 +7112,1281 @@ func (this *UpdateClusterResponse) String() string { if this == nil { return "nil" } - s := strings.Join([]string{`&UpdateClusterResponse{`, - `Cluster:` + strings.Replace(fmt.Sprintf("%v", this.Cluster), "Cluster", "Cluster", 1) + `,`, - `}`, - }, "") - return s -} -func valueToStringControl(v interface{}) string { - rv := reflect.ValueOf(v) - if rv.IsNil() { - return "nil" + s := strings.Join([]string{`&UpdateClusterResponse{`, + `Cluster:` + strings.Replace(fmt.Sprintf("%v", this.Cluster), "Cluster", "Cluster", 1) + `,`, + `}`, + }, "") + return s +} +func (this *GetSecretRequest) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&GetSecretRequest{`, + `SecretID:` + fmt.Sprintf("%v", this.SecretID) + `,`, + `}`, + }, "") + return s +} +func (this *GetSecretResponse) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&GetSecretResponse{`, + `Secret:` + strings.Replace(fmt.Sprintf("%v", this.Secret), "Secret", "Secret", 1) + `,`, + `}`, + }, "") + return s +} +func (this *ListSecretsRequest) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ListSecretsRequest{`, + `Filters:` + strings.Replace(fmt.Sprintf("%v", this.Filters), "ListSecretsRequest_Filters", "ListSecretsRequest_Filters", 1) + `,`, + `}`, + }, "") + return s +} +func (this *ListSecretsRequest_Filters) String() string { + if this == nil { + return "nil" + } + keysForLabels := make([]string, 0, len(this.Labels)) + for k, _ := range this.Labels { + keysForLabels = append(keysForLabels, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForLabels) + mapStringForLabels := "map[string]string{" + for _, k := range keysForLabels { + mapStringForLabels += fmt.Sprintf("%v: %v,", k, this.Labels[k]) + } + mapStringForLabels += "}" + s := strings.Join([]string{`&ListSecretsRequest_Filters{`, + `Names:` + fmt.Sprintf("%v", this.Names) + `,`, + `IDPrefixes:` + fmt.Sprintf("%v", this.IDPrefixes) + `,`, + `Labels:` + mapStringForLabels + `,`, + `NamePrefixes:` + fmt.Sprintf("%v", this.NamePrefixes) + `,`, + `}`, + }, "") + return s +} +func (this *ListSecretsResponse) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ListSecretsResponse{`, + `Secrets:` + strings.Replace(fmt.Sprintf("%v", this.Secrets), "Secret", "Secret", 1) + `,`, + `}`, + }, "") + return s +} +func (this *CreateSecretRequest) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CreateSecretRequest{`, + `Spec:` + strings.Replace(fmt.Sprintf("%v", this.Spec), "SecretSpec", "SecretSpec", 1) + `,`, + `}`, + }, "") + return s +} +func (this *CreateSecretResponse) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CreateSecretResponse{`, + `Secret:` + strings.Replace(fmt.Sprintf("%v", this.Secret), "Secret", "Secret", 1) + `,`, + `}`, + }, "") + return s +} +func (this *RemoveSecretRequest) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&RemoveSecretRequest{`, + `SecretID:` + fmt.Sprintf("%v", this.SecretID) + `,`, + `}`, + }, "") + return s +} +func (this *RemoveSecretResponse) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&RemoveSecretResponse{`, + `}`, + }, "") + return s +} +func valueToStringControl(v interface{}) string { + rv := reflect.ValueOf(v) + if rv.IsNil() { + return "nil" + } + pv := reflect.Indirect(rv).Interface() + return fmt.Sprintf("*%v", pv) +} +func (m *GetNodeRequest) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GetNodeRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GetNodeRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NodeID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthControl + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.NodeID = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipControl(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthControl + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GetNodeResponse) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GetNodeResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GetNodeResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Node", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthControl + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Node == nil { + m.Node = &Node{} + } + if err := m.Node.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipControl(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthControl + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ListNodesRequest) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ListNodesRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ListNodesRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Filters", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthControl + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Filters == nil { + m.Filters = &ListNodesRequest_Filters{} + } + if err := m.Filters.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipControl(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthControl + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ListNodesRequest_Filters) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Filters: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Filters: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Names", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthControl + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Names = append(m.Names, string(data[iNdEx:postIndex])) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field IDPrefixes", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthControl + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.IDPrefixes = append(m.IDPrefixes, string(data[iNdEx:postIndex])) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Labels", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthControl + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthControl + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := string(data[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + if m.Labels == nil { + m.Labels = make(map[string]string) + } + if iNdEx < postIndex { + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapvalue |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthControl + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue := string(data[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + m.Labels[mapkey] = mapvalue + } else { + var mapvalue string + m.Labels[mapkey] = mapvalue + } + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Memberships", wireType) + } + var v NodeSpec_Membership + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (NodeSpec_Membership(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Memberships = append(m.Memberships, v) + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Roles", wireType) + } + var v NodeRole + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (NodeRole(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Roles = append(m.Roles, v) + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NamePrefixes", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthControl + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.NamePrefixes = append(m.NamePrefixes, string(data[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipControl(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthControl + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ListNodesResponse) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ListNodesResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ListNodesResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Nodes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthControl + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Nodes = append(m.Nodes, &Node{}) + if err := m.Nodes[len(m.Nodes)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipControl(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthControl + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *UpdateNodeRequest) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: UpdateNodeRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: UpdateNodeRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NodeID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthControl + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.NodeID = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NodeVersion", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthControl + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.NodeVersion == nil { + m.NodeVersion = &Version{} + } + if err := m.NodeVersion.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthControl + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Spec == nil { + m.Spec = &NodeSpec{} + } + if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipControl(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthControl + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *UpdateNodeResponse) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: UpdateNodeResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: UpdateNodeResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Node", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthControl + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Node == nil { + m.Node = &Node{} + } + if err := m.Node.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipControl(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthControl + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RemoveNodeRequest) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: RemoveNodeRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RemoveNodeRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NodeID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthControl + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.NodeID = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Force", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Force = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipControl(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthControl + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RemoveNodeResponse) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: RemoveNodeResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RemoveNodeResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipControl(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthControl + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GetTaskRequest) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GetTaskRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GetTaskRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TaskID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthControl + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TaskID = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipControl(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthControl + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GetTaskResponse) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GetTaskResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GetTaskResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Task", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthControl + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Task == nil { + m.Task = &Task{} + } + if err := m.Task.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipControl(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthControl + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF } - pv := reflect.Indirect(rv).Interface() - return fmt.Sprintf("*%v", pv) + return nil } -func (m *GetNodeRequest) Unmarshal(data []byte) error { +func (m *RemoveTaskRequest) Unmarshal(data []byte) error { l := len(data) iNdEx := 0 for iNdEx < l { @@ -6066,15 +8409,15 @@ func (m *GetNodeRequest) Unmarshal(data []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: GetNodeRequest: wiretype end group for non-group") + return fmt.Errorf("proto: RemoveTaskRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: GetNodeRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: RemoveTaskRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field NodeID", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field TaskID", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -6099,7 +8442,7 @@ func (m *GetNodeRequest) Unmarshal(data []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.NodeID = string(data[iNdEx:postIndex]) + m.TaskID = string(data[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -6122,7 +8465,7 @@ func (m *GetNodeRequest) Unmarshal(data []byte) error { } return nil } -func (m *GetNodeResponse) Unmarshal(data []byte) error { +func (m *RemoveTaskResponse) Unmarshal(data []byte) error { l := len(data) iNdEx := 0 for iNdEx < l { @@ -6145,45 +8488,12 @@ func (m *GetNodeResponse) Unmarshal(data []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: GetNodeResponse: wiretype end group for non-group") + return fmt.Errorf("proto: RemoveTaskResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: GetNodeResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: RemoveTaskResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Node", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowControl - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - msglen |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthControl - } - postIndex := iNdEx + msglen - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Node == nil { - m.Node = &Node{} - } - if err := m.Node.Unmarshal(data[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipControl(data[iNdEx:]) @@ -6205,7 +8515,7 @@ func (m *GetNodeResponse) Unmarshal(data []byte) error { } return nil } -func (m *ListNodesRequest) Unmarshal(data []byte) error { +func (m *ListTasksRequest) Unmarshal(data []byte) error { l := len(data) iNdEx := 0 for iNdEx < l { @@ -6228,10 +8538,10 @@ func (m *ListNodesRequest) Unmarshal(data []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ListNodesRequest: wiretype end group for non-group") + return fmt.Errorf("proto: ListTasksRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ListNodesRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ListTasksRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -6261,7 +8571,7 @@ func (m *ListNodesRequest) Unmarshal(data []byte) error { return io.ErrUnexpectedEOF } if m.Filters == nil { - m.Filters = &ListNodesRequest_Filters{} + m.Filters = &ListTasksRequest_Filters{} } if err := m.Filters.Unmarshal(data[iNdEx:postIndex]); err != nil { return err @@ -6288,7 +8598,7 @@ func (m *ListNodesRequest) Unmarshal(data []byte) error { } return nil } -func (m *ListNodesRequest_Filters) Unmarshal(data []byte) error { +func (m *ListTasksRequest_Filters) Unmarshal(data []byte) error { l := len(data) iNdEx := 0 for iNdEx < l { @@ -6492,10 +8802,10 @@ func (m *ListNodesRequest_Filters) Unmarshal(data []byte) error { } iNdEx = postIndex case 4: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Memberships", wireType) + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ServiceIDs", wireType) } - var v NodeSpec_Membership + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowControl @@ -6505,35 +8815,24 @@ func (m *ListNodesRequest_Filters) Unmarshal(data []byte) error { } b := data[iNdEx] iNdEx++ - v |= (NodeSpec_Membership(b) & 0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } } - m.Memberships = append(m.Memberships, v) - case 5: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Roles", wireType) + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthControl } - var v NodeRole - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowControl - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - v |= (NodeRole(b) & 0x7F) << shift - if b < 0x80 { - break - } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF } - m.Roles = append(m.Roles, v) - case 6: + m.ServiceIDs = append(m.ServiceIDs, string(data[iNdEx:postIndex])) + iNdEx = postIndex + case 5: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field NamePrefixes", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field NodeIDs", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -6558,63 +8857,33 @@ func (m *ListNodesRequest_Filters) Unmarshal(data []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.NamePrefixes = append(m.NamePrefixes, string(data[iNdEx:postIndex])) + m.NodeIDs = append(m.NodeIDs, string(data[iNdEx:postIndex])) iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipControl(data[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthControl - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *ListNodesResponse) Unmarshal(data []byte) error { - l := len(data) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowControl - } - if iNdEx >= l { - return io.ErrUnexpectedEOF + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field DesiredStates", wireType) } - b := data[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break + var v TaskState + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (TaskState(b) & 0x7F) << shift + if b < 0x80 { + break + } } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: ListNodesResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ListNodesResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: + m.DesiredStates = append(m.DesiredStates, v) + case 7: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Nodes", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field NamePrefixes", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowControl @@ -6624,22 +8893,20 @@ func (m *ListNodesResponse) Unmarshal(data []byte) error { } b := data[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthControl } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex > l { return io.ErrUnexpectedEOF } - m.Nodes = append(m.Nodes, &Node{}) - if err := m.Nodes[len(m.Nodes)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { - return err - } + m.NamePrefixes = append(m.NamePrefixes, string(data[iNdEx:postIndex])) iNdEx = postIndex default: iNdEx = preIndex @@ -6662,7 +8929,7 @@ func (m *ListNodesResponse) Unmarshal(data []byte) error { } return nil } -func (m *UpdateNodeRequest) Unmarshal(data []byte) error { +func (m *ListTasksResponse) Unmarshal(data []byte) error { l := len(data) iNdEx := 0 for iNdEx < l { @@ -6685,44 +8952,15 @@ func (m *UpdateNodeRequest) Unmarshal(data []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: UpdateNodeRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: UpdateNodeRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field NodeID", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowControl - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthControl - } - postIndex := iNdEx + intStringLen - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.NodeID = string(data[iNdEx:postIndex]) - iNdEx = postIndex - case 2: + return fmt.Errorf("proto: ListTasksResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ListTasksResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field NodeVersion", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Tasks", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -6746,14 +8984,62 @@ func (m *UpdateNodeRequest) Unmarshal(data []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.NodeVersion == nil { - m.NodeVersion = &Version{} - } - if err := m.NodeVersion.Unmarshal(data[iNdEx:postIndex]); err != nil { + m.Tasks = append(m.Tasks, &Task{}) + if err := m.Tasks[len(m.Tasks)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 3: + default: + iNdEx = preIndex + skippy, err := skipControl(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthControl + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CreateServiceRequest) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CreateServiceRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CreateServiceRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) } @@ -6780,7 +9066,7 @@ func (m *UpdateNodeRequest) Unmarshal(data []byte) error { return io.ErrUnexpectedEOF } if m.Spec == nil { - m.Spec = &NodeSpec{} + m.Spec = &ServiceSpec{} } if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { return err @@ -6807,7 +9093,7 @@ func (m *UpdateNodeRequest) Unmarshal(data []byte) error { } return nil } -func (m *UpdateNodeResponse) Unmarshal(data []byte) error { +func (m *CreateServiceResponse) Unmarshal(data []byte) error { l := len(data) iNdEx := 0 for iNdEx < l { @@ -6830,15 +9116,15 @@ func (m *UpdateNodeResponse) Unmarshal(data []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: UpdateNodeResponse: wiretype end group for non-group") + return fmt.Errorf("proto: CreateServiceResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: UpdateNodeResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: CreateServiceResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Node", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Service", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -6862,10 +9148,10 @@ func (m *UpdateNodeResponse) Unmarshal(data []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Node == nil { - m.Node = &Node{} + if m.Service == nil { + m.Service = &Service{} } - if err := m.Node.Unmarshal(data[iNdEx:postIndex]); err != nil { + if err := m.Service.Unmarshal(data[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -6890,7 +9176,7 @@ func (m *UpdateNodeResponse) Unmarshal(data []byte) error { } return nil } -func (m *RemoveNodeRequest) Unmarshal(data []byte) error { +func (m *GetServiceRequest) Unmarshal(data []byte) error { l := len(data) iNdEx := 0 for iNdEx < l { @@ -6913,15 +9199,15 @@ func (m *RemoveNodeRequest) Unmarshal(data []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: RemoveNodeRequest: wiretype end group for non-group") + return fmt.Errorf("proto: GetServiceRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: RemoveNodeRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: GetServiceRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field NodeID", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ServiceID", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -6946,28 +9232,8 @@ func (m *RemoveNodeRequest) Unmarshal(data []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.NodeID = string(data[iNdEx:postIndex]) + m.ServiceID = string(data[iNdEx:postIndex]) iNdEx = postIndex - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Force", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowControl - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - v |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - m.Force = bool(v != 0) default: iNdEx = preIndex skippy, err := skipControl(data[iNdEx:]) @@ -6989,7 +9255,7 @@ func (m *RemoveNodeRequest) Unmarshal(data []byte) error { } return nil } -func (m *RemoveNodeResponse) Unmarshal(data []byte) error { +func (m *GetServiceResponse) Unmarshal(data []byte) error { l := len(data) iNdEx := 0 for iNdEx < l { @@ -7012,12 +9278,45 @@ func (m *RemoveNodeResponse) Unmarshal(data []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: RemoveNodeResponse: wiretype end group for non-group") + return fmt.Errorf("proto: GetServiceResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: RemoveNodeResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: GetServiceResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Service", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthControl + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Service == nil { + m.Service = &Service{} + } + if err := m.Service.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipControl(data[iNdEx:]) @@ -7039,7 +9338,7 @@ func (m *RemoveNodeResponse) Unmarshal(data []byte) error { } return nil } -func (m *GetTaskRequest) Unmarshal(data []byte) error { +func (m *UpdateServiceRequest) Unmarshal(data []byte) error { l := len(data) iNdEx := 0 for iNdEx < l { @@ -7062,15 +9361,15 @@ func (m *GetTaskRequest) Unmarshal(data []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: GetTaskRequest: wiretype end group for non-group") + return fmt.Errorf("proto: UpdateServiceRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: GetTaskRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: UpdateServiceRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field TaskID", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ServiceID", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -7095,7 +9394,73 @@ func (m *GetTaskRequest) Unmarshal(data []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.TaskID = string(data[iNdEx:postIndex]) + m.ServiceID = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ServiceVersion", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthControl + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ServiceVersion == nil { + m.ServiceVersion = &Version{} + } + if err := m.ServiceVersion.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthControl + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Spec == nil { + m.Spec = &ServiceSpec{} + } + if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex default: iNdEx = preIndex @@ -7118,7 +9483,7 @@ func (m *GetTaskRequest) Unmarshal(data []byte) error { } return nil } -func (m *GetTaskResponse) Unmarshal(data []byte) error { +func (m *UpdateServiceResponse) Unmarshal(data []byte) error { l := len(data) iNdEx := 0 for iNdEx < l { @@ -7141,15 +9506,15 @@ func (m *GetTaskResponse) Unmarshal(data []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: GetTaskResponse: wiretype end group for non-group") + return fmt.Errorf("proto: UpdateServiceResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: GetTaskResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: UpdateServiceResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Task", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Service", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -7173,10 +9538,10 @@ func (m *GetTaskResponse) Unmarshal(data []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Task == nil { - m.Task = &Task{} + if m.Service == nil { + m.Service = &Service{} } - if err := m.Task.Unmarshal(data[iNdEx:postIndex]); err != nil { + if err := m.Service.Unmarshal(data[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -7201,7 +9566,7 @@ func (m *GetTaskResponse) Unmarshal(data []byte) error { } return nil } -func (m *RemoveTaskRequest) Unmarshal(data []byte) error { +func (m *RemoveServiceRequest) Unmarshal(data []byte) error { l := len(data) iNdEx := 0 for iNdEx < l { @@ -7224,15 +9589,15 @@ func (m *RemoveTaskRequest) Unmarshal(data []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: RemoveTaskRequest: wiretype end group for non-group") + return fmt.Errorf("proto: RemoveServiceRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: RemoveTaskRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: RemoveServiceRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field TaskID", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ServiceID", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -7257,7 +9622,7 @@ func (m *RemoveTaskRequest) Unmarshal(data []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.TaskID = string(data[iNdEx:postIndex]) + m.ServiceID = string(data[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -7280,7 +9645,7 @@ func (m *RemoveTaskRequest) Unmarshal(data []byte) error { } return nil } -func (m *RemoveTaskResponse) Unmarshal(data []byte) error { +func (m *RemoveServiceResponse) Unmarshal(data []byte) error { l := len(data) iNdEx := 0 for iNdEx < l { @@ -7303,10 +9668,10 @@ func (m *RemoveTaskResponse) Unmarshal(data []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: RemoveTaskResponse: wiretype end group for non-group") + return fmt.Errorf("proto: RemoveServiceResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: RemoveTaskResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: RemoveServiceResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { default: @@ -7330,7 +9695,7 @@ func (m *RemoveTaskResponse) Unmarshal(data []byte) error { } return nil } -func (m *ListTasksRequest) Unmarshal(data []byte) error { +func (m *ListServicesRequest) Unmarshal(data []byte) error { l := len(data) iNdEx := 0 for iNdEx < l { @@ -7353,10 +9718,10 @@ func (m *ListTasksRequest) Unmarshal(data []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ListTasksRequest: wiretype end group for non-group") + return fmt.Errorf("proto: ListServicesRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ListTasksRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ListServicesRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -7386,7 +9751,7 @@ func (m *ListTasksRequest) Unmarshal(data []byte) error { return io.ErrUnexpectedEOF } if m.Filters == nil { - m.Filters = &ListTasksRequest_Filters{} + m.Filters = &ListServicesRequest_Filters{} } if err := m.Filters.Unmarshal(data[iNdEx:postIndex]); err != nil { return err @@ -7413,7 +9778,7 @@ func (m *ListTasksRequest) Unmarshal(data []byte) error { } return nil } -func (m *ListTasksRequest_Filters) Unmarshal(data []byte) error { +func (m *ListServicesRequest_Filters) Unmarshal(data []byte) error { l := len(data) iNdEx := 0 for iNdEx < l { @@ -7617,84 +9982,6 @@ func (m *ListTasksRequest_Filters) Unmarshal(data []byte) error { } iNdEx = postIndex case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ServiceIDs", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowControl - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthControl - } - postIndex := iNdEx + intStringLen - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.ServiceIDs = append(m.ServiceIDs, string(data[iNdEx:postIndex])) - iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field NodeIDs", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowControl - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthControl - } - postIndex := iNdEx + intStringLen - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.NodeIDs = append(m.NodeIDs, string(data[iNdEx:postIndex])) - iNdEx = postIndex - case 6: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field DesiredStates", wireType) - } - var v TaskState - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowControl - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - v |= (TaskState(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - m.DesiredStates = append(m.DesiredStates, v) - case 7: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field NamePrefixes", wireType) } @@ -7717,175 +10004,11 @@ func (m *ListTasksRequest_Filters) Unmarshal(data []byte) error { if intStringLen < 0 { return ErrInvalidLengthControl } - postIndex := iNdEx + intStringLen - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.NamePrefixes = append(m.NamePrefixes, string(data[iNdEx:postIndex])) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipControl(data[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthControl - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *ListTasksResponse) Unmarshal(data []byte) error { - l := len(data) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowControl - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: ListTasksResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ListTasksResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Tasks", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowControl - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - msglen |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthControl - } - postIndex := iNdEx + msglen - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Tasks = append(m.Tasks, &Task{}) - if err := m.Tasks[len(m.Tasks)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipControl(data[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthControl - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *CreateServiceRequest) Unmarshal(data []byte) error { - l := len(data) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowControl - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: CreateServiceRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: CreateServiceRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowControl - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - msglen |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthControl - } - postIndex := iNdEx + msglen - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Spec == nil { - m.Spec = &ServiceSpec{} - } - if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { - return err + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF } + m.NamePrefixes = append(m.NamePrefixes, string(data[iNdEx:postIndex])) iNdEx = postIndex default: iNdEx = preIndex @@ -7908,7 +10031,7 @@ func (m *CreateServiceRequest) Unmarshal(data []byte) error { } return nil } -func (m *CreateServiceResponse) Unmarshal(data []byte) error { +func (m *ListServicesResponse) Unmarshal(data []byte) error { l := len(data) iNdEx := 0 for iNdEx < l { @@ -7931,15 +10054,15 @@ func (m *CreateServiceResponse) Unmarshal(data []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: CreateServiceResponse: wiretype end group for non-group") + return fmt.Errorf("proto: ListServicesResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: CreateServiceResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ListServicesResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Service", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Services", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -7963,10 +10086,8 @@ func (m *CreateServiceResponse) Unmarshal(data []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Service == nil { - m.Service = &Service{} - } - if err := m.Service.Unmarshal(data[iNdEx:postIndex]); err != nil { + m.Services = append(m.Services, &Service{}) + if err := m.Services[len(m.Services)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -7991,7 +10112,7 @@ func (m *CreateServiceResponse) Unmarshal(data []byte) error { } return nil } -func (m *GetServiceRequest) Unmarshal(data []byte) error { +func (m *CreateNetworkRequest) Unmarshal(data []byte) error { l := len(data) iNdEx := 0 for iNdEx < l { @@ -8014,17 +10135,17 @@ func (m *GetServiceRequest) Unmarshal(data []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: GetServiceRequest: wiretype end group for non-group") + return fmt.Errorf("proto: CreateNetworkRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: GetServiceRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: CreateNetworkRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ServiceID", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowControl @@ -8034,20 +10155,24 @@ func (m *GetServiceRequest) Unmarshal(data []byte) error { } b := data[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + msglen |= (int(b) & 0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthControl } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex > l { return io.ErrUnexpectedEOF } - m.ServiceID = string(data[iNdEx:postIndex]) + if m.Spec == nil { + m.Spec = &NetworkSpec{} + } + if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex default: iNdEx = preIndex @@ -8070,7 +10195,7 @@ func (m *GetServiceRequest) Unmarshal(data []byte) error { } return nil } -func (m *GetServiceResponse) Unmarshal(data []byte) error { +func (m *CreateNetworkResponse) Unmarshal(data []byte) error { l := len(data) iNdEx := 0 for iNdEx < l { @@ -8093,15 +10218,15 @@ func (m *GetServiceResponse) Unmarshal(data []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: GetServiceResponse: wiretype end group for non-group") + return fmt.Errorf("proto: CreateNetworkResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: GetServiceResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: CreateNetworkResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Service", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Network", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -8125,10 +10250,10 @@ func (m *GetServiceResponse) Unmarshal(data []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Service == nil { - m.Service = &Service{} + if m.Network == nil { + m.Network = &Network{} } - if err := m.Service.Unmarshal(data[iNdEx:postIndex]); err != nil { + if err := m.Network.Unmarshal(data[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -8153,7 +10278,7 @@ func (m *GetServiceResponse) Unmarshal(data []byte) error { } return nil } -func (m *UpdateServiceRequest) Unmarshal(data []byte) error { +func (m *GetNetworkRequest) Unmarshal(data []byte) error { l := len(data) iNdEx := 0 for iNdEx < l { @@ -8176,15 +10301,15 @@ func (m *UpdateServiceRequest) Unmarshal(data []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: UpdateServiceRequest: wiretype end group for non-group") + return fmt.Errorf("proto: GetNetworkRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: UpdateServiceRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: GetNetworkRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ServiceID", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -8209,46 +10334,13 @@ func (m *UpdateServiceRequest) Unmarshal(data []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.ServiceID = string(data[iNdEx:postIndex]) + m.Name = string(data[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ServiceVersion", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowControl - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - msglen |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthControl - } - postIndex := iNdEx + msglen - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.ServiceVersion == nil { - m.ServiceVersion = &Version{} - } - if err := m.ServiceVersion.Unmarshal(data[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field NetworkID", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowControl @@ -8258,24 +10350,20 @@ func (m *UpdateServiceRequest) Unmarshal(data []byte) error { } b := data[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthControl } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex > l { return io.ErrUnexpectedEOF } - if m.Spec == nil { - m.Spec = &ServiceSpec{} - } - if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { - return err - } + m.NetworkID = string(data[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -8298,7 +10386,7 @@ func (m *UpdateServiceRequest) Unmarshal(data []byte) error { } return nil } -func (m *UpdateServiceResponse) Unmarshal(data []byte) error { +func (m *GetNetworkResponse) Unmarshal(data []byte) error { l := len(data) iNdEx := 0 for iNdEx < l { @@ -8321,15 +10409,15 @@ func (m *UpdateServiceResponse) Unmarshal(data []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: UpdateServiceResponse: wiretype end group for non-group") + return fmt.Errorf("proto: GetNetworkResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: UpdateServiceResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: GetNetworkResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Service", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Network", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -8353,10 +10441,10 @@ func (m *UpdateServiceResponse) Unmarshal(data []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Service == nil { - m.Service = &Service{} + if m.Network == nil { + m.Network = &Network{} } - if err := m.Service.Unmarshal(data[iNdEx:postIndex]); err != nil { + if err := m.Network.Unmarshal(data[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -8381,7 +10469,7 @@ func (m *UpdateServiceResponse) Unmarshal(data []byte) error { } return nil } -func (m *RemoveServiceRequest) Unmarshal(data []byte) error { +func (m *RemoveNetworkRequest) Unmarshal(data []byte) error { l := len(data) iNdEx := 0 for iNdEx < l { @@ -8404,15 +10492,15 @@ func (m *RemoveServiceRequest) Unmarshal(data []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: RemoveServiceRequest: wiretype end group for non-group") + return fmt.Errorf("proto: RemoveNetworkRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: RemoveServiceRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: RemoveNetworkRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ServiceID", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -8437,7 +10525,36 @@ func (m *RemoveServiceRequest) Unmarshal(data []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.ServiceID = string(data[iNdEx:postIndex]) + m.Name = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NetworkID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthControl + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.NetworkID = string(data[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -8460,7 +10577,7 @@ func (m *RemoveServiceRequest) Unmarshal(data []byte) error { } return nil } -func (m *RemoveServiceResponse) Unmarshal(data []byte) error { +func (m *RemoveNetworkResponse) Unmarshal(data []byte) error { l := len(data) iNdEx := 0 for iNdEx < l { @@ -8483,10 +10600,10 @@ func (m *RemoveServiceResponse) Unmarshal(data []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: RemoveServiceResponse: wiretype end group for non-group") + return fmt.Errorf("proto: RemoveNetworkResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: RemoveServiceResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: RemoveNetworkResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { default: @@ -8510,7 +10627,7 @@ func (m *RemoveServiceResponse) Unmarshal(data []byte) error { } return nil } -func (m *ListServicesRequest) Unmarshal(data []byte) error { +func (m *ListNetworksRequest) Unmarshal(data []byte) error { l := len(data) iNdEx := 0 for iNdEx < l { @@ -8533,10 +10650,10 @@ func (m *ListServicesRequest) Unmarshal(data []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ListServicesRequest: wiretype end group for non-group") + return fmt.Errorf("proto: ListNetworksRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ListServicesRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ListNetworksRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -8566,7 +10683,7 @@ func (m *ListServicesRequest) Unmarshal(data []byte) error { return io.ErrUnexpectedEOF } if m.Filters == nil { - m.Filters = &ListServicesRequest_Filters{} + m.Filters = &ListNetworksRequest_Filters{} } if err := m.Filters.Unmarshal(data[iNdEx:postIndex]); err != nil { return err @@ -8593,7 +10710,7 @@ func (m *ListServicesRequest) Unmarshal(data []byte) error { } return nil } -func (m *ListServicesRequest_Filters) Unmarshal(data []byte) error { +func (m *ListNetworksRequest_Filters) Unmarshal(data []byte) error { l := len(data) iNdEx := 0 for iNdEx < l { @@ -8795,12 +10912,91 @@ func (m *ListServicesRequest_Filters) Unmarshal(data []byte) error { var mapvalue string m.Labels[mapkey] = mapvalue } - iNdEx = postIndex - case 4: + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NamePrefixes", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthControl + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.NamePrefixes = append(m.NamePrefixes, string(data[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipControl(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthControl + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ListNetworksResponse) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ListNetworksResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ListNetworksResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field NamePrefixes", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Networks", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowControl @@ -8810,20 +11006,22 @@ func (m *ListServicesRequest_Filters) Unmarshal(data []byte) error { } b := data[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + msglen |= (int(b) & 0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthControl } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex > l { return io.ErrUnexpectedEOF } - m.NamePrefixes = append(m.NamePrefixes, string(data[iNdEx:postIndex])) + m.Networks = append(m.Networks, &Network{}) + if err := m.Networks[len(m.Networks)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex default: iNdEx = preIndex @@ -8846,7 +11044,7 @@ func (m *ListServicesRequest_Filters) Unmarshal(data []byte) error { } return nil } -func (m *ListServicesResponse) Unmarshal(data []byte) error { +func (m *GetClusterRequest) Unmarshal(data []byte) error { l := len(data) iNdEx := 0 for iNdEx < l { @@ -8869,17 +11067,17 @@ func (m *ListServicesResponse) Unmarshal(data []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ListServicesResponse: wiretype end group for non-group") + return fmt.Errorf("proto: GetClusterRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ListServicesResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: GetClusterRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Services", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ClusterID", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowControl @@ -8889,22 +11087,20 @@ func (m *ListServicesResponse) Unmarshal(data []byte) error { } b := data[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthControl } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex > l { return io.ErrUnexpectedEOF } - m.Services = append(m.Services, &Service{}) - if err := m.Services[len(m.Services)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { - return err - } + m.ClusterID = string(data[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -8927,7 +11123,7 @@ func (m *ListServicesResponse) Unmarshal(data []byte) error { } return nil } -func (m *CreateNetworkRequest) Unmarshal(data []byte) error { +func (m *GetClusterResponse) Unmarshal(data []byte) error { l := len(data) iNdEx := 0 for iNdEx < l { @@ -8950,15 +11146,15 @@ func (m *CreateNetworkRequest) Unmarshal(data []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: CreateNetworkRequest: wiretype end group for non-group") + return fmt.Errorf("proto: GetClusterResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: CreateNetworkRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: GetClusterResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Cluster", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -8982,10 +11178,10 @@ func (m *CreateNetworkRequest) Unmarshal(data []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Spec == nil { - m.Spec = &NetworkSpec{} + if m.Cluster == nil { + m.Cluster = &Cluster{} } - if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { + if err := m.Cluster.Unmarshal(data[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -9010,7 +11206,7 @@ func (m *CreateNetworkRequest) Unmarshal(data []byte) error { } return nil } -func (m *CreateNetworkResponse) Unmarshal(data []byte) error { +func (m *ListClustersRequest) Unmarshal(data []byte) error { l := len(data) iNdEx := 0 for iNdEx < l { @@ -9033,15 +11229,15 @@ func (m *CreateNetworkResponse) Unmarshal(data []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: CreateNetworkResponse: wiretype end group for non-group") + return fmt.Errorf("proto: ListClustersRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: CreateNetworkResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ListClustersRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Network", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Filters", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -9065,10 +11261,10 @@ func (m *CreateNetworkResponse) Unmarshal(data []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Network == nil { - m.Network = &Network{} + if m.Filters == nil { + m.Filters = &ListClustersRequest_Filters{} } - if err := m.Network.Unmarshal(data[iNdEx:postIndex]); err != nil { + if err := m.Filters.Unmarshal(data[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -9093,7 +11289,7 @@ func (m *CreateNetworkResponse) Unmarshal(data []byte) error { } return nil } -func (m *GetNetworkRequest) Unmarshal(data []byte) error { +func (m *ListClustersRequest_Filters) Unmarshal(data []byte) error { l := len(data) iNdEx := 0 for iNdEx < l { @@ -9116,15 +11312,15 @@ func (m *GetNetworkRequest) Unmarshal(data []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: GetNetworkRequest: wiretype end group for non-group") + return fmt.Errorf("proto: Filters: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: GetNetworkRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: Filters: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Names", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -9149,11 +11345,11 @@ func (m *GetNetworkRequest) Unmarshal(data []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Name = string(data[iNdEx:postIndex]) + m.Names = append(m.Names, string(data[iNdEx:postIndex])) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field NetworkID", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field IDPrefixes", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -9178,61 +11374,11 @@ func (m *GetNetworkRequest) Unmarshal(data []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.NetworkID = string(data[iNdEx:postIndex]) + m.IDPrefixes = append(m.IDPrefixes, string(data[iNdEx:postIndex])) iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipControl(data[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthControl - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *GetNetworkResponse) Unmarshal(data []byte) error { - l := len(data) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowControl - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: GetNetworkResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: GetNetworkResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: + case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Network", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Labels", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -9256,95 +11402,99 @@ func (m *GetNetworkResponse) Unmarshal(data []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Network == nil { - m.Network = &Network{} - } - if err := m.Network.Unmarshal(data[iNdEx:postIndex]); err != nil { - return err + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipControl(data[iNdEx:]) - if err != nil { - return err + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } } - if skippy < 0 { + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { return ErrInvalidLengthControl } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *RemoveNetworkRequest) Unmarshal(data []byte) error { - l := len(data) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowControl - } - if iNdEx >= l { + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { return io.ErrUnexpectedEOF } - b := data[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: RemoveNetworkRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: RemoveNetworkRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + mapkey := string(data[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + if m.Labels == nil { + m.Labels = make(map[string]string) } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowControl + if iNdEx < postIndex { + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } } - if iNdEx >= l { - return io.ErrUnexpectedEOF + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapvalue |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } } - b := data[iNdEx] - iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthControl } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue := string(data[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + m.Labels[mapkey] = mapvalue + } else { + var mapvalue string + m.Labels[mapkey] = mapvalue } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthControl - } - postIndex := iNdEx + intStringLen - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Name = string(data[iNdEx:postIndex]) iNdEx = postIndex - case 2: + case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field NetworkID", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field NamePrefixes", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -9369,7 +11519,7 @@ func (m *RemoveNetworkRequest) Unmarshal(data []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.NetworkID = string(data[iNdEx:postIndex]) + m.NamePrefixes = append(m.NamePrefixes, string(data[iNdEx:postIndex])) iNdEx = postIndex default: iNdEx = preIndex @@ -9392,7 +11542,7 @@ func (m *RemoveNetworkRequest) Unmarshal(data []byte) error { } return nil } -func (m *RemoveNetworkResponse) Unmarshal(data []byte) error { +func (m *ListClustersResponse) Unmarshal(data []byte) error { l := len(data) iNdEx := 0 for iNdEx < l { @@ -9415,12 +11565,43 @@ func (m *RemoveNetworkResponse) Unmarshal(data []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: RemoveNetworkResponse: wiretype end group for non-group") + return fmt.Errorf("proto: ListClustersResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: RemoveNetworkResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ListClustersResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Clusters", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthControl + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Clusters = append(m.Clusters, &Cluster{}) + if err := m.Clusters[len(m.Clusters)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipControl(data[iNdEx:]) @@ -9442,7 +11623,7 @@ func (m *RemoveNetworkResponse) Unmarshal(data []byte) error { } return nil } -func (m *ListNetworksRequest) Unmarshal(data []byte) error { +func (m *JoinTokenRotation) Unmarshal(data []byte) error { l := len(data) iNdEx := 0 for iNdEx < l { @@ -9465,17 +11646,17 @@ func (m *ListNetworksRequest) Unmarshal(data []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ListNetworksRequest: wiretype end group for non-group") + return fmt.Errorf("proto: JoinTokenRotation: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ListNetworksRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: JoinTokenRotation: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Filters", wireType) + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RotateWorkerToken", wireType) } - var msglen int + var v int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowControl @@ -9485,25 +11666,32 @@ func (m *ListNetworksRequest) Unmarshal(data []byte) error { } b := data[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + v |= (int(b) & 0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { - return ErrInvalidLengthControl - } - postIndex := iNdEx + msglen - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Filters == nil { - m.Filters = &ListNetworksRequest_Filters{} + m.RotateWorkerToken = bool(v != 0) + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RotateManagerToken", wireType) } - if err := m.Filters.Unmarshal(data[iNdEx:postIndex]); err != nil { - return err + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } } - iNdEx = postIndex + m.RotateManagerToken = bool(v != 0) default: iNdEx = preIndex skippy, err := skipControl(data[iNdEx:]) @@ -9525,7 +11713,7 @@ func (m *ListNetworksRequest) Unmarshal(data []byte) error { } return nil } -func (m *ListNetworksRequest_Filters) Unmarshal(data []byte) error { +func (m *UpdateClusterRequest) Unmarshal(data []byte) error { l := len(data) iNdEx := 0 for iNdEx < l { @@ -9548,15 +11736,15 @@ func (m *ListNetworksRequest_Filters) Unmarshal(data []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: Filters: wiretype end group for non-group") + return fmt.Errorf("proto: UpdateClusterRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: Filters: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: UpdateClusterRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Names", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ClusterID", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -9581,13 +11769,13 @@ func (m *ListNetworksRequest_Filters) Unmarshal(data []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Names = append(m.Names, string(data[iNdEx:postIndex])) + m.ClusterID = string(data[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field IDPrefixes", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ClusterVersion", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowControl @@ -9597,24 +11785,28 @@ func (m *ListNetworksRequest_Filters) Unmarshal(data []byte) error { } b := data[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + msglen |= (int(b) & 0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthControl } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex > l { return io.ErrUnexpectedEOF } - m.IDPrefixes = append(m.IDPrefixes, string(data[iNdEx:postIndex])) + if m.ClusterVersion == nil { + m.ClusterVersion = &Version{} + } + if err := m.ClusterVersion.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Labels", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -9634,105 +11826,22 @@ func (m *ListNetworksRequest_Filters) Unmarshal(data []byte) error { if msglen < 0 { return ErrInvalidLengthControl } - postIndex := iNdEx + msglen - if postIndex > l { - return io.ErrUnexpectedEOF - } - var keykey uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowControl - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - keykey |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - var stringLenmapkey uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowControl - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - stringLenmapkey |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - intStringLenmapkey := int(stringLenmapkey) - if intStringLenmapkey < 0 { - return ErrInvalidLengthControl - } - postStringIndexmapkey := iNdEx + intStringLenmapkey - if postStringIndexmapkey > l { - return io.ErrUnexpectedEOF - } - mapkey := string(data[iNdEx:postStringIndexmapkey]) - iNdEx = postStringIndexmapkey - if m.Labels == nil { - m.Labels = make(map[string]string) - } - if iNdEx < postIndex { - var valuekey uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowControl - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - valuekey |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - var stringLenmapvalue uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowControl - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - stringLenmapvalue |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - intStringLenmapvalue := int(stringLenmapvalue) - if intStringLenmapvalue < 0 { - return ErrInvalidLengthControl - } - postStringIndexmapvalue := iNdEx + intStringLenmapvalue - if postStringIndexmapvalue > l { - return io.ErrUnexpectedEOF - } - mapvalue := string(data[iNdEx:postStringIndexmapvalue]) - iNdEx = postStringIndexmapvalue - m.Labels[mapkey] = mapvalue - } else { - var mapvalue string - m.Labels[mapkey] = mapvalue - } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Spec == nil { + m.Spec = &ClusterSpec{} + } + if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field NamePrefixes", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Rotation", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowControl @@ -9742,20 +11851,21 @@ func (m *ListNetworksRequest_Filters) Unmarshal(data []byte) error { } b := data[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + msglen |= (int(b) & 0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthControl } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex > l { return io.ErrUnexpectedEOF } - m.NamePrefixes = append(m.NamePrefixes, string(data[iNdEx:postIndex])) + if err := m.Rotation.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex default: iNdEx = preIndex @@ -9778,7 +11888,7 @@ func (m *ListNetworksRequest_Filters) Unmarshal(data []byte) error { } return nil } -func (m *ListNetworksResponse) Unmarshal(data []byte) error { +func (m *UpdateClusterResponse) Unmarshal(data []byte) error { l := len(data) iNdEx := 0 for iNdEx < l { @@ -9801,15 +11911,15 @@ func (m *ListNetworksResponse) Unmarshal(data []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ListNetworksResponse: wiretype end group for non-group") + return fmt.Errorf("proto: UpdateClusterResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ListNetworksResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: UpdateClusterResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Networks", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Cluster", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -9833,8 +11943,10 @@ func (m *ListNetworksResponse) Unmarshal(data []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Networks = append(m.Networks, &Network{}) - if err := m.Networks[len(m.Networks)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + if m.Cluster == nil { + m.Cluster = &Cluster{} + } + if err := m.Cluster.Unmarshal(data[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -9859,7 +11971,7 @@ func (m *ListNetworksResponse) Unmarshal(data []byte) error { } return nil } -func (m *GetClusterRequest) Unmarshal(data []byte) error { +func (m *GetSecretRequest) Unmarshal(data []byte) error { l := len(data) iNdEx := 0 for iNdEx < l { @@ -9882,15 +11994,15 @@ func (m *GetClusterRequest) Unmarshal(data []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: GetClusterRequest: wiretype end group for non-group") + return fmt.Errorf("proto: GetSecretRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: GetClusterRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: GetSecretRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ClusterID", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SecretID", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -9915,7 +12027,7 @@ func (m *GetClusterRequest) Unmarshal(data []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.ClusterID = string(data[iNdEx:postIndex]) + m.SecretID = string(data[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -9938,7 +12050,7 @@ func (m *GetClusterRequest) Unmarshal(data []byte) error { } return nil } -func (m *GetClusterResponse) Unmarshal(data []byte) error { +func (m *GetSecretResponse) Unmarshal(data []byte) error { l := len(data) iNdEx := 0 for iNdEx < l { @@ -9961,15 +12073,15 @@ func (m *GetClusterResponse) Unmarshal(data []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: GetClusterResponse: wiretype end group for non-group") + return fmt.Errorf("proto: GetSecretResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: GetClusterResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: GetSecretResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Cluster", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Secret", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -9993,10 +12105,10 @@ func (m *GetClusterResponse) Unmarshal(data []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Cluster == nil { - m.Cluster = &Cluster{} + if m.Secret == nil { + m.Secret = &Secret{} } - if err := m.Cluster.Unmarshal(data[iNdEx:postIndex]); err != nil { + if err := m.Secret.Unmarshal(data[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -10021,7 +12133,7 @@ func (m *GetClusterResponse) Unmarshal(data []byte) error { } return nil } -func (m *ListClustersRequest) Unmarshal(data []byte) error { +func (m *ListSecretsRequest) Unmarshal(data []byte) error { l := len(data) iNdEx := 0 for iNdEx < l { @@ -10044,10 +12156,10 @@ func (m *ListClustersRequest) Unmarshal(data []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ListClustersRequest: wiretype end group for non-group") + return fmt.Errorf("proto: ListSecretsRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ListClustersRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ListSecretsRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -10077,7 +12189,7 @@ func (m *ListClustersRequest) Unmarshal(data []byte) error { return io.ErrUnexpectedEOF } if m.Filters == nil { - m.Filters = &ListClustersRequest_Filters{} + m.Filters = &ListSecretsRequest_Filters{} } if err := m.Filters.Unmarshal(data[iNdEx:postIndex]); err != nil { return err @@ -10104,7 +12216,7 @@ func (m *ListClustersRequest) Unmarshal(data []byte) error { } return nil } -func (m *ListClustersRequest_Filters) Unmarshal(data []byte) error { +func (m *ListSecretsRequest_Filters) Unmarshal(data []byte) error { l := len(data) iNdEx := 0 for iNdEx < l { @@ -10357,7 +12469,7 @@ func (m *ListClustersRequest_Filters) Unmarshal(data []byte) error { } return nil } -func (m *ListClustersResponse) Unmarshal(data []byte) error { +func (m *ListSecretsResponse) Unmarshal(data []byte) error { l := len(data) iNdEx := 0 for iNdEx < l { @@ -10380,15 +12492,15 @@ func (m *ListClustersResponse) Unmarshal(data []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ListClustersResponse: wiretype end group for non-group") + return fmt.Errorf("proto: ListSecretsResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ListClustersResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ListSecretsResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Clusters", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Secrets", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -10412,8 +12524,8 @@ func (m *ListClustersResponse) Unmarshal(data []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Clusters = append(m.Clusters, &Cluster{}) - if err := m.Clusters[len(m.Clusters)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + m.Secrets = append(m.Secrets, &Secret{}) + if err := m.Secrets[len(m.Secrets)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -10438,7 +12550,7 @@ func (m *ListClustersResponse) Unmarshal(data []byte) error { } return nil } -func (m *JoinTokenRotation) Unmarshal(data []byte) error { +func (m *CreateSecretRequest) Unmarshal(data []byte) error { l := len(data) iNdEx := 0 for iNdEx < l { @@ -10461,17 +12573,17 @@ func (m *JoinTokenRotation) Unmarshal(data []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: JoinTokenRotation: wiretype end group for non-group") + return fmt.Errorf("proto: CreateSecretRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: JoinTokenRotation: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: CreateSecretRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field RotateWorkerToken", wireType) + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) } - var v int + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowControl @@ -10481,32 +12593,25 @@ func (m *JoinTokenRotation) Unmarshal(data []byte) error { } b := data[iNdEx] iNdEx++ - v |= (int(b) & 0x7F) << shift + msglen |= (int(b) & 0x7F) << shift if b < 0x80 { break } } - m.RotateWorkerToken = bool(v != 0) - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field RotateManagerToken", wireType) + if msglen < 0 { + return ErrInvalidLengthControl } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowControl - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - v |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF } - m.RotateManagerToken = bool(v != 0) + if m.Spec == nil { + m.Spec = &SecretSpec{} + } + if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipControl(data[iNdEx:]) @@ -10528,7 +12633,7 @@ func (m *JoinTokenRotation) Unmarshal(data []byte) error { } return nil } -func (m *UpdateClusterRequest) Unmarshal(data []byte) error { +func (m *CreateSecretResponse) Unmarshal(data []byte) error { l := len(data) iNdEx := 0 for iNdEx < l { @@ -10551,44 +12656,15 @@ func (m *UpdateClusterRequest) Unmarshal(data []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: UpdateClusterRequest: wiretype end group for non-group") + return fmt.Errorf("proto: CreateSecretResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: UpdateClusterRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: CreateSecretResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ClusterID", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowControl - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthControl - } - postIndex := iNdEx + intStringLen - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.ClusterID = string(data[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ClusterVersion", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Secret", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -10612,51 +12688,68 @@ func (m *UpdateClusterRequest) Unmarshal(data []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.ClusterVersion == nil { - m.ClusterVersion = &Version{} + if m.Secret == nil { + m.Secret = &Secret{} } - if err := m.ClusterVersion.Unmarshal(data[iNdEx:postIndex]); err != nil { + if err := m.Secret.Unmarshal(data[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowControl - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - msglen |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } + default: + iNdEx = preIndex + skippy, err := skipControl(data[iNdEx:]) + if err != nil { + return err } - if msglen < 0 { + if skippy < 0 { return ErrInvalidLengthControl } - postIndex := iNdEx + msglen - if postIndex > l { + if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } - if m.Spec == nil { - m.Spec = &ClusterSpec{} + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RemoveSecretRequest) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl } - if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { - return err + if iNdEx >= l { + return io.ErrUnexpectedEOF } - iNdEx = postIndex - case 4: + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: RemoveSecretRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RemoveSecretRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Rotation", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SecretID", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowControl @@ -10666,21 +12759,20 @@ func (m *UpdateClusterRequest) Unmarshal(data []byte) error { } b := data[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthControl } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Rotation.Unmarshal(data[iNdEx:postIndex]); err != nil { - return err - } + m.SecretID = string(data[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -10703,7 +12795,7 @@ func (m *UpdateClusterRequest) Unmarshal(data []byte) error { } return nil } -func (m *UpdateClusterResponse) Unmarshal(data []byte) error { +func (m *RemoveSecretResponse) Unmarshal(data []byte) error { l := len(data) iNdEx := 0 for iNdEx < l { @@ -10726,45 +12818,12 @@ func (m *UpdateClusterResponse) Unmarshal(data []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: UpdateClusterResponse: wiretype end group for non-group") + return fmt.Errorf("proto: RemoveSecretResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: UpdateClusterResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: RemoveSecretResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Cluster", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowControl - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - msglen |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthControl - } - postIndex := iNdEx + msglen - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Cluster == nil { - m.Cluster = &Cluster{} - } - if err := m.Cluster.Unmarshal(data[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipControl(data[iNdEx:]) @@ -10894,101 +12953,114 @@ var ( func init() { proto.RegisterFile("control.proto", fileDescriptorControl) } var fileDescriptorControl = []byte{ - // 1521 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xcc, 0x59, 0x4f, 0x6f, 0x1b, 0x45, - 0x14, 0xaf, 0xff, 0x24, 0x4e, 0x9e, 0xeb, 0xb4, 0x9e, 0xba, 0xc2, 0x72, 0x8b, 0x53, 0x6d, 0x69, - 0x9b, 0x4a, 0xc5, 0x29, 0xae, 0x2a, 0x0a, 0x48, 0x20, 0x12, 0xd3, 0xca, 0xb4, 0x0d, 0xd5, 0xa6, - 0x05, 0x6e, 0xd1, 0xc6, 0x9e, 0x86, 0xc5, 0x7f, 0xd6, 0xec, 0x6c, 0xd2, 0x56, 0x5c, 0xe0, 0x80, - 0xc4, 0x47, 0xe0, 0xca, 0x95, 0x03, 0x5f, 0x81, 0x6b, 0xc5, 0x89, 0x0b, 0x12, 0x27, 0x8b, 0xfa, - 0xc4, 0x09, 0xf1, 0x09, 0x10, 0x9a, 0x99, 0x37, 0xbb, 0xeb, 0xf5, 0xec, 0xda, 0x4e, 0x82, 0xda, - 0x53, 0x76, 0x66, 0x7e, 0x6f, 0xde, 0x9b, 0x79, 0xbf, 0xf9, 0xf9, 0xcd, 0x04, 0x0a, 0x2d, 0xa7, - 0xef, 0xb9, 0x4e, 0xb7, 0x36, 0x70, 0x1d, 0xcf, 0x21, 0xa4, 0xed, 0xb4, 0x3a, 0xd4, 0xad, 0xb1, - 0x27, 0x96, 0xdb, 0xeb, 0xd8, 0x5e, 0xed, 0xe0, 0xad, 0x4a, 0x9e, 0x0d, 0x68, 0x8b, 0x49, 0x40, - 0xa5, 0xe0, 0xec, 0x7e, 0x49, 0x5b, 0x9e, 0x6a, 0xe6, 0xbd, 0x67, 0x03, 0xaa, 0x1a, 0xa5, 0x3d, - 0x67, 0xcf, 0x11, 0x9f, 0xeb, 0xfc, 0x0b, 0x7b, 0xcf, 0x0c, 0xba, 0xfb, 0x7b, 0x76, 0x7f, 0x5d, - 0xfe, 0x91, 0x9d, 0xc6, 0x4d, 0x58, 0xb9, 0x43, 0xbd, 0x2d, 0xa7, 0x4d, 0x4d, 0xfa, 0xd5, 0x3e, - 0x65, 0x1e, 0xb9, 0x08, 0xb9, 0xbe, 0xd3, 0xa6, 0x3b, 0x76, 0xbb, 0x9c, 0xba, 0x90, 0x5a, 0x5b, - 0xde, 0x80, 0xd1, 0x70, 0x75, 0x91, 0x23, 0x9a, 0x0d, 0x73, 0x91, 0x0f, 0x35, 0xdb, 0xc6, 0x07, - 0x70, 0xca, 0x37, 0x63, 0x03, 0xa7, 0xcf, 0x28, 0xb9, 0x06, 0x59, 0x3e, 0x28, 0x8c, 0xf2, 0xf5, - 0x72, 0x6d, 0x72, 0x01, 0x35, 0x81, 0x17, 0x28, 0x63, 0x98, 0x81, 0xd3, 0xf7, 0x6c, 0x26, 0xa6, - 0x60, 0xca, 0xf5, 0x6d, 0xc8, 0x3d, 0xb6, 0xbb, 0x1e, 0x75, 0x19, 0xce, 0x72, 0x4d, 0x37, 0x4b, - 0xd4, 0xac, 0x76, 0x5b, 0xda, 0x98, 0xca, 0xb8, 0xf2, 0x6d, 0x06, 0x72, 0xd8, 0x49, 0x4a, 0xb0, - 0xd0, 0xb7, 0x7a, 0x94, 0xcf, 0x98, 0x59, 0x5b, 0x36, 0x65, 0x83, 0xac, 0x43, 0xde, 0x6e, 0xef, - 0x0c, 0x5c, 0xfa, 0xd8, 0x7e, 0x4a, 0x59, 0x39, 0xcd, 0xc7, 0x36, 0x56, 0x46, 0xc3, 0x55, 0x68, - 0x36, 0x1e, 0x60, 0xaf, 0x09, 0x76, 0x5b, 0x7d, 0x93, 0x07, 0xb0, 0xd8, 0xb5, 0x76, 0x69, 0x97, - 0x95, 0x33, 0x17, 0x32, 0x6b, 0xf9, 0xfa, 0xad, 0x79, 0x22, 0xab, 0xdd, 0x13, 0xa6, 0x1f, 0xf5, - 0x3d, 0xf7, 0x99, 0x89, 0xf3, 0x90, 0x26, 0xe4, 0x7b, 0xb4, 0xb7, 0x4b, 0x5d, 0xf6, 0x85, 0x3d, - 0x60, 0xe5, 0xec, 0x85, 0xcc, 0xda, 0x4a, 0xfd, 0x4a, 0xdc, 0xb6, 0x6d, 0x0f, 0x68, 0xab, 0x76, - 0xdf, 0xc7, 0x9b, 0x61, 0x5b, 0x52, 0x87, 0x05, 0xd7, 0xe9, 0x52, 0x56, 0x5e, 0x10, 0x93, 0x9c, - 0x8f, 0xdd, 0x7b, 0xa7, 0x4b, 0x4d, 0x09, 0x25, 0x17, 0xa1, 0xc0, 0xb7, 0x22, 0xd8, 0x83, 0x45, - 0xb1, 0x3f, 0x27, 0x79, 0xa7, 0x5a, 0x75, 0xe5, 0x1d, 0xc8, 0x87, 0x42, 0x27, 0xa7, 0x21, 0xd3, - 0xa1, 0xcf, 0x24, 0x2d, 0x4c, 0xfe, 0xc9, 0x77, 0xf7, 0xc0, 0xea, 0xee, 0xd3, 0x72, 0x5a, 0xf4, - 0xc9, 0xc6, 0xbb, 0xe9, 0x5b, 0x29, 0x63, 0x13, 0x8a, 0xa1, 0xed, 0x40, 0x8e, 0xd4, 0x60, 0x81, - 0x67, 0x5f, 0x26, 0x23, 0x89, 0x24, 0x12, 0x66, 0xfc, 0x94, 0x82, 0xe2, 0xa3, 0x41, 0xdb, 0xf2, - 0xe8, 0xbc, 0x0c, 0x25, 0xef, 0xc3, 0x49, 0x01, 0x3a, 0xa0, 0x2e, 0xb3, 0x9d, 0xbe, 0x08, 0x30, - 0x5f, 0x3f, 0xa7, 0xf3, 0xf8, 0xa9, 0x84, 0x98, 0x79, 0x6e, 0x80, 0x0d, 0x72, 0x1d, 0xb2, 0xfc, - 0xb8, 0x95, 0x33, 0xc2, 0xee, 0x7c, 0x52, 0x5e, 0x4c, 0x81, 0x34, 0x36, 0x80, 0x84, 0x63, 0x3d, - 0xd4, 0xb1, 0xd8, 0x82, 0xa2, 0x49, 0x7b, 0xce, 0xc1, 0xfc, 0xeb, 0x2d, 0xc1, 0xc2, 0x63, 0xc7, - 0x6d, 0xc9, 0x4c, 0x2c, 0x99, 0xb2, 0x61, 0x94, 0x80, 0x84, 0xe7, 0x93, 0x31, 0xe1, 0xa1, 0x7f, - 0x68, 0xb1, 0x4e, 0xc8, 0x85, 0x67, 0xb1, 0x4e, 0xc4, 0x05, 0x47, 0x70, 0x17, 0x7c, 0xc8, 0x3f, - 0xf4, 0xd2, 0x2c, 0x58, 0x1d, 0x1f, 0x4c, 0x5a, 0x9d, 0xc0, 0x0b, 0x94, 0x71, 0x4b, 0xad, 0x6e, - 0x6e, 0xd7, 0xfe, 0x3a, 0xc2, 0xde, 0x8d, 0x7f, 0x51, 0x44, 0x78, 0xe7, 0x21, 0x44, 0x24, 0x6c, - 0x36, 0x29, 0x22, 0x3f, 0xbe, 0x44, 0x11, 0xd1, 0x45, 0xa6, 0x15, 0x91, 0x75, 0xc8, 0x33, 0xea, - 0x1e, 0xd8, 0x2d, 0xce, 0x0e, 0x29, 0x22, 0x18, 0xc2, 0xb6, 0xec, 0x6e, 0x36, 0x98, 0x09, 0x08, - 0x69, 0xb6, 0x19, 0xb9, 0x0c, 0x4b, 0xc8, 0x25, 0xa9, 0x16, 0xcb, 0x1b, 0xf9, 0xd1, 0x70, 0x35, - 0x27, 0xc9, 0xc4, 0xcc, 0x9c, 0x64, 0x13, 0x23, 0x0d, 0x58, 0x69, 0x53, 0x66, 0xbb, 0xb4, 0xbd, - 0xc3, 0x3c, 0xcb, 0x43, 0x7d, 0x58, 0xa9, 0xbf, 0x1e, 0x97, 0xe2, 0x6d, 0x8e, 0x32, 0x0b, 0x68, - 0x24, 0x5a, 0x1a, 0x91, 0xc9, 0xfd, 0x2f, 0x22, 0x83, 0xdb, 0x15, 0x88, 0x0c, 0x67, 0x4d, 0xa2, - 0xc8, 0x08, 0x1a, 0x49, 0x98, 0x71, 0x17, 0x4a, 0x9b, 0x2e, 0xb5, 0x3c, 0x8a, 0x5b, 0xa6, 0x88, - 0x74, 0x03, 0x15, 0x40, 0xb2, 0x68, 0x55, 0x37, 0x0d, 0x5a, 0x84, 0x44, 0x60, 0x0b, 0xce, 0x46, - 0x26, 0xc3, 0xa8, 0x6e, 0x42, 0x0e, 0xd3, 0x80, 0x13, 0x9e, 0x4b, 0x98, 0xd0, 0x54, 0x58, 0xe3, - 0x43, 0x28, 0xde, 0xa1, 0x5e, 0x24, 0xb2, 0x6b, 0x00, 0x41, 0xd6, 0xf1, 0xd4, 0x14, 0x46, 0xc3, - 0xd5, 0x65, 0x3f, 0xe9, 0xe6, 0xb2, 0x9f, 0x73, 0xe3, 0x2e, 0x90, 0xf0, 0x14, 0x47, 0x8b, 0xe7, - 0x97, 0x14, 0x94, 0xa4, 0xca, 0x1d, 0x25, 0x26, 0xd2, 0x80, 0x53, 0x0a, 0x3d, 0x87, 0x40, 0xaf, - 0xa0, 0x8d, 0xd2, 0xe8, 0x1b, 0x63, 0x1a, 0x3d, 0x7b, 0x86, 0x22, 0x0b, 0x38, 0xda, 0x8e, 0x34, - 0xa0, 0x24, 0xa5, 0xe9, 0x48, 0x49, 0x7a, 0x0d, 0xce, 0x46, 0x66, 0x41, 0x8d, 0xfb, 0x2b, 0x0d, - 0x67, 0x38, 0xc7, 0xb1, 0xdf, 0x97, 0xb9, 0x66, 0x54, 0xe6, 0xd6, 0xe3, 0xc4, 0x24, 0x62, 0x39, - 0xa9, 0x74, 0xdf, 0xa5, 0x8f, 0x5d, 0xe9, 0xb6, 0x23, 0x4a, 0xf7, 0xde, 0x9c, 0xc1, 0x69, 0xc5, - 0x6e, 0x42, 0x4d, 0xb2, 0xc7, 0xab, 0x26, 0x9f, 0x40, 0x69, 0x3c, 0x24, 0x24, 0xc6, 0xdb, 0xb0, - 0x84, 0x89, 0x52, 0x9a, 0x92, 0xc8, 0x0c, 0x1f, 0x1c, 0x28, 0xcb, 0x16, 0xf5, 0x9e, 0x38, 0x6e, - 0x67, 0x0e, 0x65, 0x41, 0x0b, 0x9d, 0xb2, 0xf8, 0x93, 0x05, 0xbc, 0xed, 0xcb, 0xae, 0x24, 0xde, - 0x2a, 0x2b, 0x85, 0x35, 0x1e, 0x09, 0x65, 0x89, 0x44, 0x46, 0x20, 0xcb, 0x77, 0x13, 0xf7, 0x4b, - 0x7c, 0x73, 0x22, 0xa3, 0x0d, 0x27, 0x72, 0x3a, 0x20, 0x32, 0xda, 0x72, 0x22, 0x23, 0xc0, 0x57, - 0x9b, 0x63, 0x8a, 0xf1, 0x73, 0x75, 0xb6, 0x8e, 0x3d, 0x4c, 0xff, 0xbc, 0x45, 0x22, 0xf5, 0xcf, - 0x1b, 0xf6, 0x1f, 0xe2, 0xbc, 0x45, 0x2c, 0x5f, 0xad, 0xf3, 0x16, 0x13, 0xdc, 0xcb, 0x3c, 0x6f, - 0x41, 0x48, 0xc1, 0x79, 0xc3, 0x44, 0x25, 0x9e, 0x37, 0x95, 0x39, 0x1f, 0x8c, 0x3f, 0x96, 0x9b, - 0xdd, 0x7d, 0xe6, 0x51, 0x37, 0xa4, 0xc3, 0x2d, 0xd9, 0x13, 0xd1, 0x61, 0xc4, 0x71, 0x5e, 0x20, - 0xc0, 0xa7, 0xaf, 0x3f, 0x45, 0x40, 0x5f, 0x84, 0x24, 0xd1, 0x57, 0x59, 0x29, 0xac, 0xcf, 0x25, - 0x1c, 0x38, 0x04, 0x97, 0x22, 0x96, 0xaf, 0x16, 0x97, 0x62, 0x82, 0x7b, 0x99, 0x5c, 0x0a, 0x42, - 0x0a, 0xb8, 0x84, 0xd9, 0x48, 0xe4, 0x92, 0x4a, 0x9d, 0x0f, 0x36, 0xf6, 0xa1, 0xf8, 0xb1, 0x63, - 0xf7, 0x1f, 0x3a, 0x1d, 0xda, 0x37, 0x1d, 0xcf, 0xf2, 0x78, 0xc1, 0x51, 0x83, 0x33, 0x2e, 0xff, - 0xa6, 0x3b, 0x9c, 0x70, 0xd4, 0xdd, 0xf1, 0xf8, 0xb0, 0x88, 0x70, 0xc9, 0x2c, 0xca, 0xa1, 0xcf, - 0xc4, 0x88, 0xb0, 0x23, 0xd7, 0xa1, 0x84, 0xf8, 0x9e, 0xd5, 0xb7, 0xf6, 0x7c, 0x03, 0x79, 0x47, - 0x23, 0x72, 0xec, 0xbe, 0x1c, 0x12, 0x16, 0xc6, 0xf7, 0x69, 0x55, 0x5f, 0x1d, 0x85, 0xc6, 0xbc, - 0xbe, 0x52, 0xe8, 0x79, 0xea, 0x2b, 0xb4, 0x99, 0xa3, 0xbe, 0x42, 0xef, 0xc1, 0xef, 0x14, 0xb9, - 0x03, 0x4b, 0x2e, 0xee, 0x57, 0x39, 0x2b, 0x0c, 0x2f, 0xe9, 0x0c, 0x27, 0x36, 0x77, 0x23, 0xfb, - 0x7c, 0xb8, 0x7a, 0xc2, 0xf4, 0x8d, 0x83, 0x42, 0xed, 0x78, 0x4e, 0x63, 0xfd, 0xf7, 0x22, 0xe4, - 0x36, 0xe5, 0x23, 0x1b, 0xb1, 0x21, 0x87, 0xef, 0x57, 0xc4, 0xd0, 0x19, 0x8f, 0xbf, 0x89, 0x55, - 0x2e, 0x26, 0x62, 0xf0, 0x97, 0xe3, 0xec, 0xaf, 0x3f, 0xff, 0xfd, 0x43, 0xfa, 0x14, 0x14, 0x04, - 0xe8, 0x4d, 0xcc, 0x38, 0x71, 0x60, 0xd9, 0x7f, 0x08, 0x21, 0x6f, 0xcc, 0xf2, 0x6c, 0x54, 0xb9, - 0x34, 0x05, 0x95, 0xec, 0xd0, 0x05, 0x08, 0xde, 0x21, 0x88, 0x76, 0xae, 0x89, 0x37, 0x95, 0xca, - 0xe5, 0x69, 0xb0, 0xa9, 0x3e, 0x83, 0x77, 0x06, 0xbd, 0xcf, 0x89, 0x77, 0x0d, 0xbd, 0x4f, 0xcd, - 0x73, 0x45, 0x8c, 0x4f, 0x99, 0x43, 0x7e, 0x93, 0x8b, 0xcd, 0x61, 0xe8, 0x9d, 0x21, 0x36, 0x87, - 0x63, 0x2f, 0x0a, 0xc9, 0x39, 0x14, 0xf7, 0xcc, 0xf8, 0x1c, 0x86, 0x6f, 0xed, 0xf1, 0x39, 0x1c, - 0xbb, 0xac, 0x4e, 0xdd, 0x4f, 0xb1, 0xbc, 0x84, 0xfd, 0x0c, 0xaf, 0xf0, 0xf2, 0x34, 0xd8, 0x54, - 0x9f, 0xc1, 0x3d, 0x51, 0xef, 0x73, 0xe2, 0x2a, 0xaa, 0xf7, 0x39, 0x79, 0xdd, 0x8c, 0xf3, 0xf9, - 0x14, 0x4e, 0x86, 0x4b, 0x6e, 0x72, 0x65, 0xc6, 0x7b, 0x42, 0x65, 0x6d, 0x3a, 0x30, 0xd9, 0xf3, - 0xd7, 0x50, 0x18, 0xbb, 0xa8, 0x13, 0xed, 0x8c, 0xba, 0x87, 0x81, 0xca, 0xd5, 0x19, 0x90, 0x53, - 0x9d, 0x8f, 0xdd, 0x41, 0xf5, 0xce, 0x75, 0xf7, 0x6c, 0xbd, 0x73, 0xed, 0x85, 0x36, 0xc1, 0xf9, - 0xd8, 0x55, 0x53, 0xef, 0x5c, 0x77, 0xa7, 0xd5, 0x3b, 0xd7, 0xdf, 0x5b, 0x13, 0x49, 0x86, 0xa5, - 0x5b, 0x2c, 0xc9, 0xc6, 0xcb, 0xfd, 0x58, 0x92, 0x45, 0x6b, 0xf7, 0x64, 0x92, 0xa9, 0x3a, 0x33, - 0x9e, 0x64, 0x91, 0xe2, 0x38, 0x9e, 0x64, 0xd1, 0x92, 0x75, 0x2a, 0xc9, 0xd4, 0x82, 0x13, 0x48, - 0x16, 0x59, 0xf3, 0xd5, 0x19, 0x90, 0x33, 0xe6, 0x39, 0xd1, 0xb9, 0xee, 0x7e, 0x95, 0x94, 0xe7, - 0x19, 0x9d, 0xcb, 0x3c, 0xe3, 0x6f, 0x70, 0x6c, 0x9e, 0xc7, 0x6b, 0x9c, 0xd8, 0x3c, 0x47, 0x0a, - 0x80, 0x29, 0x79, 0x56, 0x35, 0x60, 0x7c, 0x9e, 0x23, 0x85, 0x6b, 0x7c, 0x9e, 0xa3, 0xe5, 0xe4, - 0xd4, 0xf3, 0xac, 0x16, 0x9c, 0x70, 0x9e, 0x23, 0x6b, 0xbe, 0x3a, 0x03, 0x32, 0xd1, 0xf9, 0xc6, - 0xf9, 0xe7, 0x2f, 0xaa, 0x27, 0xfe, 0x78, 0x51, 0x3d, 0xf1, 0xcf, 0x8b, 0x6a, 0xea, 0x9b, 0x51, - 0x35, 0xf5, 0x7c, 0x54, 0x4d, 0xfd, 0x36, 0xaa, 0xa6, 0xfe, 0x1c, 0x55, 0x53, 0xbb, 0x8b, 0xe2, - 0xff, 0x7c, 0x37, 0xfe, 0x0b, 0x00, 0x00, 0xff, 0xff, 0xbb, 0x97, 0x43, 0x36, 0x60, 0x1c, 0x00, - 0x00, + // 1731 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xcc, 0x5a, 0x5f, 0x6f, 0x1b, 0xc5, + 0x16, 0xaf, 0xed, 0x24, 0x4e, 0x8e, 0x93, 0xb4, 0x99, 0x38, 0xf7, 0x5a, 0xdb, 0x5e, 0xa7, 0xda, + 0xde, 0xa6, 0x8e, 0xd4, 0xeb, 0xf4, 0xba, 0x54, 0x94, 0x22, 0xfe, 0x25, 0xa6, 0xc1, 0xfd, 0x13, + 0xaa, 0x4d, 0x0b, 0xbc, 0x45, 0x8e, 0x3d, 0x0d, 0x8b, 0x1d, 0xaf, 0xd9, 0xdd, 0xa4, 0xad, 0x78, + 0x01, 0x09, 0x24, 0x3e, 0x02, 0xaf, 0xbc, 0xf2, 0x80, 0xc4, 0x27, 0xe0, 0xb5, 0xe2, 0x89, 0x47, + 0x9e, 0x2c, 0x6a, 0x09, 0x89, 0x27, 0xc4, 0x27, 0x40, 0x68, 0x66, 0xce, 0xec, 0xae, 0xd7, 0xb3, + 0xbb, 0x76, 0x12, 0x94, 0x3e, 0x65, 0x77, 0xf6, 0x77, 0xe6, 0x9c, 0x99, 0xf3, 0x9b, 0x9f, 0xcf, + 0x1c, 0x05, 0xe6, 0x1a, 0x56, 0xc7, 0xb5, 0xad, 0x76, 0xb9, 0x6b, 0x5b, 0xae, 0x45, 0x48, 0xd3, + 0x6a, 0xb4, 0xa8, 0x5d, 0x76, 0x9e, 0xd4, 0xed, 0xfd, 0x96, 0xe9, 0x96, 0x0f, 0xff, 0xaf, 0xe5, + 0x9c, 0x2e, 0x6d, 0x38, 0x02, 0xa0, 0xcd, 0x59, 0xbb, 0x9f, 0xd0, 0x86, 0x2b, 0x5f, 0x73, 0xee, + 0xb3, 0x2e, 0x95, 0x2f, 0xf9, 0x3d, 0x6b, 0xcf, 0xe2, 0x8f, 0x6b, 0xec, 0x09, 0x47, 0x17, 0xbb, + 0xed, 0x83, 0x3d, 0xb3, 0xb3, 0x26, 0xfe, 0x88, 0x41, 0xfd, 0x06, 0xcc, 0x6f, 0x52, 0x77, 0xcb, + 0x6a, 0x52, 0x83, 0x7e, 0x7a, 0x40, 0x1d, 0x97, 0x5c, 0x82, 0x6c, 0xc7, 0x6a, 0xd2, 0x1d, 0xb3, + 0x59, 0x48, 0x5d, 0x4c, 0x95, 0x66, 0xd6, 0xa1, 0xdf, 0x5b, 0x9e, 0x62, 0x88, 0x5a, 0xd5, 0x98, + 0x62, 0x9f, 0x6a, 0x4d, 0xfd, 0x2d, 0x38, 0xeb, 0x99, 0x39, 0x5d, 0xab, 0xe3, 0x50, 0x72, 0x15, + 0x26, 0xd8, 0x47, 0x6e, 0x94, 0xab, 0x14, 0xca, 0xc3, 0x0b, 0x28, 0x73, 0x3c, 0x47, 0xe9, 0xbd, + 0x0c, 0x9c, 0xbb, 0x67, 0x3a, 0x7c, 0x0a, 0x47, 0xba, 0xbe, 0x0d, 0xd9, 0xc7, 0x66, 0xdb, 0xa5, + 0xb6, 0x83, 0xb3, 0x5c, 0x55, 0xcd, 0x12, 0x36, 0x2b, 0xdf, 0x16, 0x36, 0x86, 0x34, 0xd6, 0xbe, + 0xc8, 0x40, 0x16, 0x07, 0x49, 0x1e, 0x26, 0x3b, 0xf5, 0x7d, 0xca, 0x66, 0xcc, 0x94, 0x66, 0x0c, + 0xf1, 0x42, 0xd6, 0x20, 0x67, 0x36, 0x77, 0xba, 0x36, 0x7d, 0x6c, 0x3e, 0xa5, 0x4e, 0x21, 0xcd, + 0xbe, 0xad, 0xcf, 0xf7, 0x7b, 0xcb, 0x50, 0xab, 0x3e, 0xc0, 0x51, 0x03, 0xcc, 0xa6, 0x7c, 0x26, + 0x0f, 0x60, 0xaa, 0x5d, 0xdf, 0xa5, 0x6d, 0xa7, 0x90, 0xb9, 0x98, 0x29, 0xe5, 0x2a, 0x37, 0xc7, + 0x89, 0xac, 0x7c, 0x8f, 0x9b, 0xbe, 0xdb, 0x71, 0xed, 0x67, 0x06, 0xce, 0x43, 0x6a, 0x90, 0xdb, + 0xa7, 0xfb, 0xbb, 0xd4, 0x76, 0x3e, 0x36, 0xbb, 0x4e, 0x61, 0xe2, 0x62, 0xa6, 0x34, 0x5f, 0xb9, + 0x12, 0xb5, 0x6d, 0xdb, 0x5d, 0xda, 0x28, 0xdf, 0xf7, 0xf0, 0x46, 0xd0, 0x96, 0x54, 0x60, 0xd2, + 0xb6, 0xda, 0xd4, 0x29, 0x4c, 0xf2, 0x49, 0x2e, 0x44, 0xee, 0xbd, 0xd5, 0xa6, 0x86, 0x80, 0x92, + 0x4b, 0x30, 0xc7, 0xb6, 0xc2, 0xdf, 0x83, 0x29, 0xbe, 0x3f, 0xb3, 0x6c, 0x50, 0xae, 0x5a, 0x7b, + 0x0d, 0x72, 0x81, 0xd0, 0xc9, 0x39, 0xc8, 0xb4, 0xe8, 0x33, 0x41, 0x0b, 0x83, 0x3d, 0xb2, 0xdd, + 0x3d, 0xac, 0xb7, 0x0f, 0x68, 0x21, 0xcd, 0xc7, 0xc4, 0xcb, 0xad, 0xf4, 0xcd, 0x94, 0xbe, 0x01, + 0x0b, 0x81, 0xed, 0x40, 0x8e, 0x94, 0x61, 0x92, 0x65, 0x5f, 0x24, 0x23, 0x8e, 0x24, 0x02, 0xa6, + 0x7f, 0x97, 0x82, 0x85, 0x47, 0xdd, 0x66, 0xdd, 0xa5, 0xe3, 0x32, 0x94, 0xbc, 0x09, 0xb3, 0x1c, + 0x74, 0x48, 0x6d, 0xc7, 0xb4, 0x3a, 0x3c, 0xc0, 0x5c, 0xe5, 0xbc, 0xca, 0xe3, 0x07, 0x02, 0x62, + 0xe4, 0x98, 0x01, 0xbe, 0x90, 0x6b, 0x30, 0xc1, 0x8e, 0x5b, 0x21, 0xc3, 0xed, 0x2e, 0xc4, 0xe5, + 0xc5, 0xe0, 0x48, 0x7d, 0x1d, 0x48, 0x30, 0xd6, 0x23, 0x1d, 0x8b, 0x2d, 0x58, 0x30, 0xe8, 0xbe, + 0x75, 0x38, 0xfe, 0x7a, 0xf3, 0x30, 0xf9, 0xd8, 0xb2, 0x1b, 0x22, 0x13, 0xd3, 0x86, 0x78, 0xd1, + 0xf3, 0x40, 0x82, 0xf3, 0x89, 0x98, 0xf0, 0xd0, 0x3f, 0xac, 0x3b, 0xad, 0x80, 0x0b, 0xb7, 0xee, + 0xb4, 0x42, 0x2e, 0x18, 0x82, 0xb9, 0x60, 0x9f, 0xbc, 0x43, 0x2f, 0xcc, 0xfc, 0xd5, 0xb1, 0x8f, + 0x71, 0xab, 0xe3, 0x78, 0x8e, 0xd2, 0x6f, 0xca, 0xd5, 0x8d, 0xed, 0xda, 0x5b, 0x47, 0xd0, 0xbb, + 0xfe, 0x17, 0x8a, 0x08, 0x1b, 0x3c, 0x82, 0x88, 0x04, 0xcd, 0x86, 0x45, 0xe4, 0xdb, 0x53, 0x14, + 0x11, 0x55, 0x64, 0x4a, 0x11, 0x59, 0x83, 0x9c, 0x43, 0xed, 0x43, 0xb3, 0xc1, 0xd8, 0x21, 0x44, + 0x04, 0x43, 0xd8, 0x16, 0xc3, 0xb5, 0xaa, 0x63, 0x00, 0x42, 0x6a, 0x4d, 0x87, 0xac, 0xc0, 0x34, + 0x72, 0x49, 0xa8, 0xc5, 0xcc, 0x7a, 0xae, 0xdf, 0x5b, 0xce, 0x0a, 0x32, 0x39, 0x46, 0x56, 0xb0, + 0xc9, 0x21, 0x55, 0x98, 0x6f, 0x52, 0xc7, 0xb4, 0x69, 0x73, 0xc7, 0x71, 0xeb, 0x2e, 0xea, 0xc3, + 0x7c, 0xe5, 0x3f, 0x51, 0x29, 0xde, 0x66, 0x28, 0x63, 0x0e, 0x8d, 0xf8, 0x9b, 0x42, 0x64, 0xb2, + 0xff, 0x88, 0xc8, 0xe0, 0x76, 0xf9, 0x22, 0xc3, 0x58, 0x13, 0x2b, 0x32, 0x9c, 0x46, 0x02, 0xa6, + 0xdf, 0x85, 0xfc, 0x86, 0x4d, 0xeb, 0x2e, 0xc5, 0x2d, 0x93, 0x44, 0xba, 0x8e, 0x0a, 0x20, 0x58, + 0xb4, 0xac, 0x9a, 0x06, 0x2d, 0x02, 0x22, 0xb0, 0x05, 0x4b, 0xa1, 0xc9, 0x30, 0xaa, 0x1b, 0x90, + 0xc5, 0x34, 0xe0, 0x84, 0xe7, 0x63, 0x26, 0x34, 0x24, 0x56, 0x7f, 0x07, 0x16, 0x36, 0xa9, 0x1b, + 0x8a, 0xec, 0x2a, 0x80, 0x9f, 0x75, 0x3c, 0x35, 0x73, 0xfd, 0xde, 0xf2, 0x8c, 0x97, 0x74, 0x63, + 0xc6, 0xcb, 0xb9, 0x7e, 0x17, 0x48, 0x70, 0x8a, 0xe3, 0xc5, 0xf3, 0x63, 0x0a, 0xf2, 0x42, 0xe5, + 0x8e, 0x13, 0x13, 0xa9, 0xc2, 0x59, 0x89, 0x1e, 0x43, 0xa0, 0xe7, 0xd1, 0x46, 0x6a, 0xf4, 0xf5, + 0x01, 0x8d, 0x1e, 0x3d, 0x43, 0xa1, 0x05, 0x1c, 0x6f, 0x47, 0xaa, 0x90, 0x17, 0xd2, 0x74, 0xac, + 0x24, 0xfd, 0x1b, 0x96, 0x42, 0xb3, 0xa0, 0xc6, 0xfd, 0x9e, 0x86, 0x45, 0xc6, 0x71, 0x1c, 0xf7, + 0x64, 0xae, 0x16, 0x96, 0xb9, 0xb5, 0x28, 0x31, 0x09, 0x59, 0x0e, 0x2b, 0xdd, 0x57, 0xe9, 0x13, + 0x57, 0xba, 0xed, 0x90, 0xd2, 0xbd, 0x3e, 0x66, 0x70, 0x4a, 0xb1, 0x1b, 0x52, 0x93, 0x89, 0x93, + 0x55, 0x93, 0xf7, 0x21, 0x3f, 0x18, 0x12, 0x12, 0xe3, 0x55, 0x98, 0xc6, 0x44, 0x49, 0x4d, 0x89, + 0x65, 0x86, 0x07, 0xf6, 0x95, 0x65, 0x8b, 0xba, 0x4f, 0x2c, 0xbb, 0x35, 0x86, 0xb2, 0xa0, 0x85, + 0x4a, 0x59, 0xbc, 0xc9, 0x7c, 0xde, 0x76, 0xc4, 0x50, 0x1c, 0x6f, 0xa5, 0x95, 0xc4, 0xea, 0x8f, + 0xb8, 0xb2, 0x84, 0x22, 0x23, 0x30, 0xc1, 0x76, 0x13, 0xf7, 0x8b, 0x3f, 0x33, 0x22, 0xa3, 0x0d, + 0x23, 0x72, 0xda, 0x27, 0x32, 0xda, 0x32, 0x22, 0x23, 0xc0, 0x53, 0x9b, 0x13, 0x8a, 0xf1, 0x23, + 0x79, 0xb6, 0x4e, 0x3c, 0x4c, 0xef, 0xbc, 0x85, 0x22, 0xf5, 0xce, 0x1b, 0x8e, 0x1f, 0xe1, 0xbc, + 0x85, 0x2c, 0x5f, 0xae, 0xf3, 0x16, 0x11, 0xdc, 0x69, 0x9e, 0x37, 0x3f, 0x24, 0xff, 0xbc, 0x61, + 0xa2, 0x62, 0xcf, 0x9b, 0xcc, 0x9c, 0x07, 0xc6, 0x1f, 0xcb, 0x8d, 0xf6, 0x81, 0xe3, 0x52, 0x3b, + 0xa0, 0xc3, 0x0d, 0x31, 0x12, 0xd2, 0x61, 0xc4, 0x31, 0x5e, 0x20, 0xc0, 0xa3, 0xaf, 0x37, 0x85, + 0x4f, 0x5f, 0x84, 0xc4, 0xd1, 0x57, 0x5a, 0x49, 0xac, 0xc7, 0x25, 0xfc, 0x70, 0x04, 0x2e, 0x85, + 0x2c, 0x5f, 0x2e, 0x2e, 0x45, 0x04, 0x77, 0x9a, 0x5c, 0xf2, 0x43, 0xf2, 0xb9, 0x84, 0xd9, 0x88, + 0xe5, 0x92, 0x4c, 0x9d, 0x07, 0xd6, 0x0f, 0x60, 0xe1, 0x8e, 0x65, 0x76, 0x1e, 0x5a, 0x2d, 0xda, + 0x31, 0x2c, 0xb7, 0xee, 0xb2, 0x82, 0xa3, 0x0c, 0x8b, 0x36, 0x7b, 0xa6, 0x3b, 0x8c, 0x70, 0xd4, + 0xde, 0x71, 0xd9, 0x67, 0x1e, 0xe1, 0xb4, 0xb1, 0x20, 0x3e, 0x7d, 0xc8, 0xbf, 0x70, 0x3b, 0x72, + 0x0d, 0xf2, 0x88, 0xdf, 0xaf, 0x77, 0xea, 0x7b, 0x9e, 0x81, 0xb8, 0xa3, 0x11, 0xf1, 0xed, 0xbe, + 0xf8, 0xc4, 0x2d, 0xf4, 0xaf, 0xd3, 0xb2, 0xbe, 0x3a, 0x0e, 0x8d, 0x59, 0x7d, 0x25, 0xd1, 0xe3, + 0xd4, 0x57, 0x68, 0x33, 0x46, 0x7d, 0x85, 0xde, 0xfd, 0xdf, 0x29, 0xb2, 0x09, 0xd3, 0x36, 0xee, + 0x57, 0x61, 0x82, 0x1b, 0x5e, 0x56, 0x19, 0x0e, 0x6d, 0xee, 0xfa, 0xc4, 0xf3, 0xde, 0xf2, 0x19, + 0xc3, 0x33, 0xf6, 0x0b, 0xb5, 0x13, 0x3a, 0x8d, 0x6f, 0xc0, 0x39, 0x5e, 0x07, 0x37, 0x6c, 0xea, + 0xca, 0x5d, 0x5d, 0x85, 0x19, 0x87, 0x0f, 0xf8, 0x9b, 0x3a, 0xdb, 0xef, 0x2d, 0x4f, 0x0b, 0x54, + 0xad, 0xca, 0x7e, 0xcc, 0xf9, 0x53, 0x53, 0xdf, 0xc4, 0x4a, 0x5c, 0x98, 0x63, 0x28, 0x15, 0x98, + 0x12, 0x00, 0x8c, 0x44, 0x53, 0x17, 0x06, 0xdc, 0x06, 0x91, 0xfa, 0x6f, 0x69, 0x20, 0xa2, 0xce, + 0x60, 0xaf, 0x9e, 0x28, 0xbc, 0x17, 0x16, 0x85, 0x72, 0x74, 0xcd, 0x14, 0x34, 0x1c, 0xd6, 0x84, + 0x2f, 0x4f, 0x5e, 0x13, 0x8c, 0x90, 0x26, 0xdc, 0x1a, 0x2f, 0xb6, 0x53, 0x91, 0x84, 0xbb, 0xb2, + 0x70, 0xc6, 0x88, 0x30, 0x65, 0xaf, 0xb0, 0x32, 0x9f, 0x0f, 0xa1, 0x20, 0xc4, 0xe5, 0x4c, 0x42, + 0xf5, 0x1a, 0x2c, 0xca, 0x7b, 0x5d, 0x90, 0x3f, 0x95, 0x81, 0x4a, 0xae, 0x18, 0x3d, 0x53, 0xa0, + 0x90, 0xbb, 0xe3, 0xdf, 0x37, 0x8f, 0xcd, 0xa5, 0xb7, 0x61, 0x51, 0x5e, 0x1b, 0x8e, 0x48, 0xeb, + 0x7f, 0xf9, 0xd7, 0x97, 0x60, 0x34, 0x95, 0x1f, 0x96, 0x20, 0xbb, 0x21, 0x5a, 0xd2, 0xc4, 0x84, + 0x2c, 0x76, 0x7b, 0x89, 0xae, 0x0a, 0x6a, 0xb0, 0x83, 0xac, 0x5d, 0x8a, 0xc5, 0x60, 0x9d, 0xb5, + 0xf4, 0xd3, 0xf7, 0x7f, 0x7c, 0x93, 0x3e, 0x0b, 0x73, 0x1c, 0xf4, 0x3f, 0xd4, 0x47, 0x62, 0xc1, + 0x8c, 0xd7, 0x36, 0x24, 0xff, 0x1d, 0xa5, 0xc9, 0xaa, 0x5d, 0x4e, 0x40, 0xc5, 0x3b, 0xb4, 0x01, + 0xfc, 0xae, 0x1d, 0x51, 0xce, 0x35, 0xd4, 0x81, 0xd4, 0x56, 0x92, 0x60, 0x89, 0x3e, 0xfd, 0xae, + 0x9c, 0xda, 0xe7, 0x50, 0x17, 0x50, 0xed, 0x53, 0xd1, 0xdc, 0x8b, 0xf0, 0x29, 0x72, 0xf8, 0xb0, + 0xee, 0xb4, 0x22, 0x73, 0x18, 0xe8, 0xca, 0x45, 0xe6, 0x70, 0xa0, 0xff, 0x16, 0x9f, 0x43, 0xde, + 0x95, 0x89, 0xce, 0x61, 0xb0, 0xc7, 0x15, 0x9d, 0xc3, 0x81, 0xd6, 0x4e, 0xe2, 0x7e, 0xf2, 0xe5, + 0xc5, 0xec, 0x67, 0x70, 0x85, 0x2b, 0x49, 0xb0, 0x44, 0x9f, 0x7e, 0x57, 0x45, 0xed, 0x73, 0xa8, + 0x71, 0xa3, 0xf6, 0x39, 0xdc, 0x9c, 0x89, 0xf2, 0xf9, 0x14, 0x66, 0x83, 0x17, 0x54, 0x72, 0x65, + 0xc4, 0x5b, 0xb5, 0x56, 0x4a, 0x06, 0xc6, 0x7b, 0xfe, 0x0c, 0xe6, 0x06, 0xda, 0x5a, 0x44, 0x39, + 0xa3, 0xaa, 0x8d, 0xa6, 0xad, 0x8e, 0x80, 0x4c, 0x74, 0x3e, 0xd0, 0xb1, 0x51, 0x3b, 0x57, 0x75, + 0xa5, 0xd4, 0xce, 0x95, 0xed, 0x9f, 0x18, 0xe7, 0x03, 0x8d, 0x19, 0xb5, 0x73, 0x55, 0x07, 0x48, + 0xed, 0x5c, 0xdd, 0xe5, 0x89, 0x25, 0x19, 0x5e, 0x74, 0x22, 0x49, 0x36, 0x78, 0x39, 0x8e, 0x24, + 0x59, 0xf8, 0xa6, 0x1b, 0x4f, 0x32, 0x79, 0x2b, 0x8b, 0x26, 0x59, 0xe8, 0x2a, 0x19, 0x4d, 0xb2, + 0xf0, 0x05, 0x2f, 0x91, 0x64, 0x72, 0xc1, 0x31, 0x24, 0x0b, 0xad, 0x79, 0x75, 0x04, 0xe4, 0x88, + 0x79, 0x8e, 0x75, 0xae, 0xea, 0x46, 0xc4, 0xe5, 0x79, 0x44, 0xe7, 0x22, 0xcf, 0x58, 0xb1, 0x46, + 0xe6, 0x79, 0xf0, 0x46, 0x10, 0x99, 0xe7, 0x50, 0xb9, 0x9c, 0x90, 0x67, 0x79, 0x63, 0x8a, 0xce, + 0x73, 0xe8, 0x9a, 0x17, 0x9d, 0xe7, 0xf0, 0xe5, 0x2b, 0xf1, 0x3c, 0xcb, 0x05, 0xc7, 0x9c, 0xe7, + 0xd0, 0x9a, 0x57, 0x47, 0x40, 0x26, 0xfe, 0x38, 0x79, 0x65, 0xbc, 0xfa, 0xc7, 0x29, 0x7c, 0x49, + 0xd0, 0x2e, 0x27, 0xa0, 0xe2, 0x1d, 0x1e, 0x40, 0x2e, 0x50, 0x86, 0x92, 0x95, 0xd1, 0x2a, 0x67, + 0xed, 0x4a, 0x22, 0x2e, 0x31, 0xbd, 0xc1, 0x2a, 0x53, 0x9d, 0x5e, 0x45, 0x49, 0xab, 0x95, 0x92, + 0x81, 0x89, 0x9e, 0x83, 0x15, 0xa5, 0xda, 0xb3, 0xa2, 0x6a, 0xd5, 0x4a, 0xc9, 0xc0, 0x58, 0xcf, + 0xeb, 0x17, 0x9e, 0xbf, 0x28, 0x9e, 0xf9, 0xe5, 0x45, 0xf1, 0xcc, 0x9f, 0x2f, 0x8a, 0xa9, 0xcf, + 0xfb, 0xc5, 0xd4, 0xf3, 0x7e, 0x31, 0xf5, 0x73, 0xbf, 0x98, 0xfa, 0xb5, 0x5f, 0x4c, 0xed, 0x4e, + 0xf1, 0xff, 0x78, 0xb8, 0xfe, 0x77, 0x00, 0x00, 0x00, 0xff, 0xff, 0xde, 0x36, 0x11, 0xa9, 0x6a, + 0x21, 0x00, 0x00, } diff --git a/api/control.proto b/api/control.proto index b968450094..630612916b 100644 --- a/api/control.proto +++ b/api/control.proto @@ -71,6 +71,44 @@ service Control { rpc UpdateCluster(UpdateClusterRequest) returns (UpdateClusterResponse) { option (docker.protobuf.plugin.tls_authorization) = { roles: "swarm-manager" }; }; + + // --- secret APIs --- + + // GetSecret returns a `GetSecretResponse` with a `Secret` with the same + // id as `GetSecretRequest.SecretID` + // - Returns `NotFound` if the Secret with the given id is not found. + // - Returns `InvalidArgument` if the `GetSecretRequest.SecretID` is empty. + // - Returns an error if getting fails. + rpc GetSecret(GetSecretRequest) returns (GetSecretResponse) { + option (docker.protobuf.plugin.tls_authorization) = { roles: "swarm-manager" }; + } + + // ListSecrets returns a `ListSecretResponse` with a list all non-internal `Secret`s being + // managed, or all secrets matching any name in `ListSecretsRequest.Names`, any + // name prefix in `ListSecretsRequest.NamePrefixes`, any id in + // `ListSecretsRequest.SecretIDs`, or any id prefix in `ListSecretsRequest.IDPrefixes`. + // - Returns an error if listing fails. + rpc ListSecrets(ListSecretsRequest) returns (ListSecretsResponse) { + option (docker.protobuf.plugin.tls_authorization) = { roles: "swarm-manager" }; + } + // CreateSecret creates and return a `CreateSecretResponse` with a `Secret` based + // on the provided `CreateSecretRequest.SecretSpec`. + // - Returns `InvalidArgument` if the `CreateSecretRequest.SecretSpec` is malformed, + // or if the secret data is too long or contains invalid characters. + // - Returns `ResourceExhausted` if there are already the maximum number of allowed + // secrets in the system. + // - Returns an error if the creation fails. + rpc CreateSecret(CreateSecretRequest) returns (CreateSecretResponse) { + option (docker.protobuf.plugin.tls_authorization) = { roles: "swarm-manager" }; + } + + // RemoveSecret removes the secret referenced by `RemoveSecretRequest.ID`. + // - Returns `InvalidArgument` if `RemoveSecretRequest.ID` is empty. + // - Returns `NotFound` if the a secret named `RemoveSecretRequest.ID` is not found. + // - Returns an error if the deletion fails. + rpc RemoveSecret(RemoveSecretRequest) returns (RemoveSecretResponse) { + option (docker.protobuf.plugin.tls_authorization) = { roles: "swarm-manager" }; + } } message GetNodeRequest { @@ -293,3 +331,59 @@ message UpdateClusterRequest { message UpdateClusterResponse { Cluster cluster = 1; } + +// GetSecretRequest is the request to get a `Secret` object given a secret id. +message GetSecretRequest { + string secret_id = 1 [(gogoproto.customname) = "SecretID"]; +} + +// GetSecretResponse contains the Secret corresponding to the id in +// `GetSecretRequest`, but the `Secret.Spec.Data` field in each `Secret` +// object should be nil instead of actually containing the secret bytes. +message GetSecretResponse { + Secret secret = 1; +} + +// ListSecretRequest is the request to list all non-internal secrets in the secret store, +// or all secrets filtered by (name or name prefix or id prefix) and labels. +message ListSecretsRequest { + message Filters { + repeated string names = 1; + repeated string id_prefixes = 2 [(gogoproto.customname) = "IDPrefixes"]; + map labels = 3; + repeated string name_prefixes = 4; + } + + Filters filters = 1; +} + +// ListSecretResponse contains a list of all the secrets that match the name or +// name prefix filters provided in `ListSecretRequest`. The `Secret.Spec.Data` +// field in each `Secret` object should be nil instead of actually containing +// the secret bytes. +message ListSecretsResponse { + repeated Secret secrets = 1; +} + +// CreateSecretRequest specifies a new secret (it will not update an existing +// secret) to create. +message CreateSecretRequest { + SecretSpec spec = 1; +} + +// CreateSecretResponse contains the newly created `Secret`` corresponding to the +// name in `CreateSecretRequest`. The `Secret.Spec.Data` field should be nil instead +// of actually containing the secret bytes. +message CreateSecretResponse { + Secret secret = 1; +} + +// RemoveSecretRequest contains the ID of the secret that should be removed. This +// removes all versions of the secret. +message RemoveSecretRequest { + string secret_id = 1 [(gogoproto.customname) = "SecretID"]; +} + +// RemoveSecretResponse is an empty object indicating the successful removal of +// a secret. +message RemoveSecretResponse {} diff --git a/api/gen.go b/api/gen.go index 0c2b8e142c..d0fb1ede1d 100644 --- a/api/gen.go +++ b/api/gen.go @@ -1,3 +1,3 @@ package api -//go:generate protoc -I.:../protobuf:../vendor:../vendor/github.com/gogo/protobuf --gogoswarm_out=plugins=grpc+deepcopy+raftproxy+authenticatedwrapper,import_path=github.com/docker/swarmkit/api,Mgogoproto/gogo.proto=github.com/gogo/protobuf/gogoproto,Mtimestamp/timestamp.proto=github.com/docker/swarmkit/api/timestamp,Mduration/duration.proto=github.com/docker/swarmkit/api/duration,Mgoogle/protobuf/descriptor.proto=github.com/gogo/protobuf/protoc-gen-gogo/descriptor,Mplugin/plugin.proto=github.com/docker/swarmkit/protobuf/plugin:. types.proto specs.proto objects.proto control.proto dispatcher.proto ca.proto snapshot.proto raft.proto health.proto resource.proto secrets.proto +//go:generate protoc -I.:../protobuf:../vendor:../vendor/github.com/gogo/protobuf --gogoswarm_out=plugins=grpc+deepcopy+raftproxy+authenticatedwrapper,import_path=github.com/docker/swarmkit/api,Mgogoproto/gogo.proto=github.com/gogo/protobuf/gogoproto,Mtimestamp/timestamp.proto=github.com/docker/swarmkit/api/timestamp,Mduration/duration.proto=github.com/docker/swarmkit/api/duration,Mgoogle/protobuf/descriptor.proto=github.com/gogo/protobuf/protoc-gen-gogo/descriptor,Mplugin/plugin.proto=github.com/docker/swarmkit/protobuf/plugin:. types.proto specs.proto objects.proto control.proto dispatcher.proto ca.proto snapshot.proto raft.proto health.proto resource.proto diff --git a/api/objects.pb.go b/api/objects.pb.go index 0da2240f3b..54c88f2254 100644 --- a/api/objects.pb.go +++ b/api/objects.pb.go @@ -227,10 +227,6 @@ type Cluster struct { // and agents to unambiguously identify the older key to be deleted when // a new key is allocated on key rotation. EncryptionKeyLamportClock uint64 `protobuf:"varint,6,opt,name=encryption_key_lamport_clock,json=encryptionKeyLamportClock,proto3" json:"encryption_key_lamport_clock,omitempty"` - // Logical clock used to timestamp every secret. It allows other managers - // and agents to unambiguously identify the newest secret to be used when - // requesting the latest version of a secret. - SecretLamportClock uint64 `protobuf:"varint,7,opt,name=secret_lamport_clock,json=secretLamportClock,proto3" json:"secret_lamport_clock,omitempty"` } func (m *Cluster) Reset() { *m = Cluster{} } @@ -245,21 +241,17 @@ type Secret struct { ID string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Meta Meta `protobuf:"bytes,2,opt,name=meta" json:"meta"` // Spec contains the actual secret data, as well as any context around the - // secret data that the user provides. The name on the annotation of the - // spec must match the name of the `Secret` object this `SecretSpec` belongs - // to. + // secret data that the user provides. Spec SecretSpec `protobuf:"bytes,3,opt,name=spec" json:"spec"` // Digest represents the cryptographic digest of the secret data, and follows // the form ":": for example "sha256:DEADBEEF...". It - // is calculated from the data contained in `SecretValue.Spec.data`. + // is calculated from the data contained in `Secret.Spec.data`. Digest string `protobuf:"bytes,4,opt,name=digest,proto3" json:"digest,omitempty"` // Size represents the size (number of bytes) of the secret data, and is - // calculated from the data contained in `SecretValue.Spec.data`.. + // calculated from the data contained in `Secret.Spec.data`.. SecretSize uint32 `protobuf:"varint,5,opt,name=size,proto3" json:"size,omitempty"` // Whether the secret is an internal secret (not set by a user) or not. Internal bool `protobuf:"varint,6,opt,name=internal,proto3" json:"internal,omitempty"` - // Timestamp from the lamport clock to identify the relative age of the secret. - LamportTime uint64 `protobuf:"varint,7,opt,name=lamport_time,json=lamportTime,proto3" json:"lamport_time,omitempty"` } func (m *Secret) Reset() { *m = Secret{} } @@ -451,7 +443,6 @@ func (m *Cluster) Copy() *Cluster { Spec: *m.Spec.Copy(), RootCA: *m.RootCA.Copy(), EncryptionKeyLamportClock: m.EncryptionKeyLamportClock, - SecretLamportClock: m.SecretLamportClock, } if m.NetworkBootstrapKeys != nil { @@ -470,13 +461,12 @@ func (m *Secret) Copy() *Secret { } o := &Secret{ - ID: m.ID, - Meta: *m.Meta.Copy(), - Spec: *m.Spec.Copy(), - Digest: m.Digest, - SecretSize: m.SecretSize, - Internal: m.Internal, - LamportTime: m.LamportTime, + ID: m.ID, + Meta: *m.Meta.Copy(), + Spec: *m.Spec.Copy(), + Digest: m.Digest, + SecretSize: m.SecretSize, + Internal: m.Internal, } return o @@ -635,7 +625,7 @@ func (this *Cluster) GoString() string { if this == nil { return "nil" } - s := make([]string, 0, 11) + s := make([]string, 0, 10) s = append(s, "&api.Cluster{") s = append(s, "ID: "+fmt.Sprintf("%#v", this.ID)+",\n") s = append(s, "Meta: "+strings.Replace(this.Meta.GoString(), `&`, ``, 1)+",\n") @@ -645,7 +635,6 @@ func (this *Cluster) GoString() string { s = append(s, "NetworkBootstrapKeys: "+fmt.Sprintf("%#v", this.NetworkBootstrapKeys)+",\n") } s = append(s, "EncryptionKeyLamportClock: "+fmt.Sprintf("%#v", this.EncryptionKeyLamportClock)+",\n") - s = append(s, "SecretLamportClock: "+fmt.Sprintf("%#v", this.SecretLamportClock)+",\n") s = append(s, "}") return strings.Join(s, "") } @@ -653,7 +642,7 @@ func (this *Secret) GoString() string { if this == nil { return "nil" } - s := make([]string, 0, 11) + s := make([]string, 0, 10) s = append(s, "&api.Secret{") s = append(s, "ID: "+fmt.Sprintf("%#v", this.ID)+",\n") s = append(s, "Meta: "+strings.Replace(this.Meta.GoString(), `&`, ``, 1)+",\n") @@ -661,7 +650,6 @@ func (this *Secret) GoString() string { s = append(s, "Digest: "+fmt.Sprintf("%#v", this.Digest)+",\n") s = append(s, "SecretSize: "+fmt.Sprintf("%#v", this.SecretSize)+",\n") s = append(s, "Internal: "+fmt.Sprintf("%#v", this.Internal)+",\n") - s = append(s, "LamportTime: "+fmt.Sprintf("%#v", this.LamportTime)+",\n") s = append(s, "}") return strings.Join(s, "") } @@ -1273,11 +1261,6 @@ func (m *Cluster) MarshalTo(data []byte) (int, error) { i++ i = encodeVarintObjects(data, i, uint64(m.EncryptionKeyLamportClock)) } - if m.SecretLamportClock != 0 { - data[i] = 0x38 - i++ - i = encodeVarintObjects(data, i, uint64(m.SecretLamportClock)) - } return i, nil } @@ -1339,11 +1322,6 @@ func (m *Secret) MarshalTo(data []byte) (int, error) { } i++ } - if m.LamportTime != 0 { - data[i] = 0x38 - i++ - i = encodeVarintObjects(data, i, uint64(m.LamportTime)) - } return i, nil } @@ -1597,9 +1575,6 @@ func (m *Cluster) Size() (n int) { if m.EncryptionKeyLamportClock != 0 { n += 1 + sovObjects(uint64(m.EncryptionKeyLamportClock)) } - if m.SecretLamportClock != 0 { - n += 1 + sovObjects(uint64(m.SecretLamportClock)) - } return n } @@ -1624,9 +1599,6 @@ func (m *Secret) Size() (n int) { if m.Internal { n += 2 } - if m.LamportTime != 0 { - n += 1 + sovObjects(uint64(m.LamportTime)) - } return n } @@ -1769,7 +1741,6 @@ func (this *Cluster) String() string { `RootCA:` + strings.Replace(strings.Replace(this.RootCA.String(), "RootCA", "RootCA", 1), `&`, ``, 1) + `,`, `NetworkBootstrapKeys:` + strings.Replace(fmt.Sprintf("%v", this.NetworkBootstrapKeys), "EncryptionKey", "EncryptionKey", 1) + `,`, `EncryptionKeyLamportClock:` + fmt.Sprintf("%v", this.EncryptionKeyLamportClock) + `,`, - `SecretLamportClock:` + fmt.Sprintf("%v", this.SecretLamportClock) + `,`, `}`, }, "") return s @@ -1785,7 +1756,6 @@ func (this *Secret) String() string { `Digest:` + fmt.Sprintf("%v", this.Digest) + `,`, `SecretSize:` + fmt.Sprintf("%v", this.SecretSize) + `,`, `Internal:` + fmt.Sprintf("%v", this.Internal) + `,`, - `LamportTime:` + fmt.Sprintf("%v", this.LamportTime) + `,`, `}`, }, "") return s @@ -3699,25 +3669,6 @@ func (m *Cluster) Unmarshal(data []byte) error { break } } - case 7: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field SecretLamportClock", wireType) - } - m.SecretLamportClock = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowObjects - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - m.SecretLamportClock |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } default: iNdEx = preIndex skippy, err := skipObjects(data[iNdEx:]) @@ -3925,25 +3876,6 @@ func (m *Secret) Unmarshal(data []byte) error { } } m.Internal = bool(v != 0) - case 7: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field LamportTime", wireType) - } - m.LamportTime = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowObjects - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - m.LamportTime |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } default: iNdEx = preIndex skippy, err := skipObjects(data[iNdEx:]) @@ -4073,76 +4005,74 @@ var ( func init() { proto.RegisterFile("objects.proto", fileDescriptorObjects) } var fileDescriptorObjects = []byte{ - // 1130 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xbc, 0x57, 0x4f, 0x6f, 0x1b, 0x45, - 0x14, 0xaf, 0xed, 0xad, 0xff, 0x3c, 0xdb, 0x91, 0x18, 0xaa, 0x68, 0x1b, 0x82, 0x9d, 0xba, 0x02, - 0xf5, 0x50, 0xb9, 0x50, 0x0a, 0x6a, 0x45, 0x2b, 0xe4, 0x3f, 0x11, 0x58, 0x25, 0x10, 0x4d, 0x4a, - 0x7a, 0xb4, 0x26, 0xbb, 0x53, 0x33, 0xd8, 0xde, 0x59, 0xcd, 0x8c, 0x5d, 0xa5, 0x27, 0xc4, 0x8d, - 0x0b, 0x1f, 0x01, 0x89, 0x4f, 0xc2, 0x35, 0x07, 0x0e, 0xdc, 0xe0, 0x64, 0x11, 0xdf, 0xb8, 0xf1, - 0x11, 0xd0, 0xfc, 0x59, 0xc7, 0xc1, 0xeb, 0x90, 0x4a, 0x55, 0x6e, 0xf3, 0x66, 0x7e, 0xbf, 0xdf, - 0xbc, 0x79, 0xef, 0xcd, 0x9b, 0x5d, 0xa8, 0xf2, 0xa3, 0xef, 0x68, 0xa0, 0x64, 0x33, 0x16, 0x5c, - 0x71, 0x84, 0x42, 0x1e, 0x0c, 0xa9, 0x68, 0xca, 0x97, 0x44, 0x8c, 0x87, 0x4c, 0x35, 0xa7, 0x1f, - 0x6e, 0x95, 0xd5, 0x71, 0x4c, 0x1d, 0x60, 0xab, 0x2c, 0x63, 0x1a, 0x24, 0xc6, 0x4d, 0xc5, 0xc6, - 0x54, 0x2a, 0x32, 0x8e, 0xef, 0x2d, 0x46, 0x6e, 0xe9, 0xc6, 0x80, 0x0f, 0xb8, 0x19, 0xde, 0xd3, - 0x23, 0x3b, 0xdb, 0xf8, 0x35, 0x03, 0xde, 0x1e, 0x55, 0x04, 0x7d, 0x0a, 0x85, 0x29, 0x15, 0x92, - 0xf1, 0xc8, 0xcf, 0xec, 0x64, 0xee, 0x94, 0xef, 0xbf, 0xd3, 0x5c, 0xdd, 0xb9, 0x79, 0x68, 0x21, - 0x6d, 0xef, 0x64, 0x56, 0xbf, 0x86, 0x13, 0x06, 0x7a, 0x0c, 0x10, 0x08, 0x4a, 0x14, 0x0d, 0xfb, - 0x44, 0xf9, 0x59, 0xc3, 0x7f, 0x37, 0x8d, 0xff, 0x2c, 0x71, 0x0a, 0x97, 0x1c, 0xa1, 0xa5, 0x34, - 0x7b, 0x12, 0x87, 0x09, 0x3b, 0x77, 0x29, 0xb6, 0x23, 0xb4, 0x54, 0xe3, 0xef, 0x1c, 0x78, 0x5f, - 0xf1, 0x90, 0xa2, 0x4d, 0xc8, 0xb2, 0xd0, 0x38, 0x5f, 0x6a, 0xe7, 0xe7, 0xb3, 0x7a, 0xb6, 0xd7, - 0xc5, 0x59, 0x16, 0xa2, 0xfb, 0xe0, 0x8d, 0xa9, 0x22, 0xce, 0x2d, 0x3f, 0x4d, 0x58, 0x47, 0xc0, - 0x9d, 0xc9, 0x60, 0xd1, 0x27, 0xe0, 0xe9, 0xb0, 0x3a, 0x67, 0xb6, 0xd3, 0x38, 0x7a, 0xcf, 0x83, - 0x98, 0x06, 0x09, 0x4f, 0xe3, 0xd1, 0x2e, 0x94, 0x43, 0x2a, 0x03, 0xc1, 0x62, 0xa5, 0x23, 0xe9, - 0x19, 0xfa, 0xed, 0x75, 0xf4, 0xee, 0x19, 0x14, 0x2f, 0xf3, 0xd0, 0x63, 0xc8, 0x4b, 0x45, 0xd4, - 0x44, 0xfa, 0xd7, 0x8d, 0x42, 0x6d, 0xad, 0x03, 0x06, 0xe5, 0x5c, 0x70, 0x1c, 0xf4, 0x05, 0x6c, - 0x8c, 0x49, 0x44, 0x06, 0x54, 0xf4, 0x9d, 0x4a, 0xde, 0xa8, 0xdc, 0x4a, 0x3d, 0xba, 0x45, 0x5a, - 0x21, 0x5c, 0x1d, 0x2f, 0x9b, 0x68, 0x17, 0x80, 0x28, 0x45, 0x82, 0x6f, 0xc7, 0x34, 0x52, 0x7e, - 0xc1, 0xa8, 0xbc, 0x97, 0xea, 0x0b, 0x55, 0x2f, 0xb9, 0x18, 0xb6, 0x16, 0x60, 0xbc, 0x44, 0x44, - 0x9f, 0x43, 0x39, 0xa0, 0x42, 0xb1, 0x17, 0x2c, 0x20, 0x8a, 0xfa, 0x45, 0xa3, 0x53, 0x4f, 0xd3, - 0xe9, 0x9c, 0xc1, 0xdc, 0xa1, 0x96, 0x99, 0x8d, 0x3f, 0xb2, 0x50, 0x38, 0xa0, 0x62, 0xca, 0x82, - 0x37, 0x9b, 0xee, 0x47, 0xe7, 0xd2, 0x9d, 0xea, 0x99, 0xdb, 0x76, 0x25, 0xe3, 0x0f, 0xa1, 0x48, - 0xa3, 0x30, 0xe6, 0x2c, 0x52, 0x2e, 0xdd, 0xa9, 0xd5, 0xb2, 0xeb, 0x30, 0x78, 0x81, 0x46, 0xbb, - 0x50, 0xb5, 0x55, 0xdc, 0x3f, 0x97, 0xeb, 0x9d, 0x34, 0xfa, 0x37, 0x06, 0xe8, 0x92, 0x54, 0x99, - 0x2c, 0x59, 0xa8, 0x0b, 0xd5, 0x58, 0xd0, 0x29, 0xe3, 0x13, 0xd9, 0x37, 0x87, 0xc8, 0x5f, 0xea, - 0x10, 0xb8, 0x92, 0xb0, 0xb4, 0xd5, 0xf8, 0x39, 0x0b, 0xc5, 0xc4, 0x47, 0xf4, 0xc0, 0x85, 0x23, - 0xb3, 0xde, 0xa1, 0x04, 0x6b, 0xa4, 0x6c, 0x24, 0x1e, 0xc0, 0xf5, 0x98, 0x0b, 0x25, 0xfd, 0xec, - 0x4e, 0x6e, 0x5d, 0xcd, 0xee, 0x73, 0xa1, 0x3a, 0x3c, 0x7a, 0xc1, 0x06, 0xd8, 0x82, 0xd1, 0x73, - 0x28, 0x4f, 0x99, 0x50, 0x13, 0x32, 0xea, 0xb3, 0x58, 0xfa, 0x39, 0xc3, 0x7d, 0xff, 0xa2, 0x2d, - 0x9b, 0x87, 0x16, 0xdf, 0xdb, 0x6f, 0x6f, 0xcc, 0x67, 0x75, 0x58, 0x98, 0x12, 0x83, 0x93, 0xea, - 0xc5, 0x72, 0x6b, 0x0f, 0x4a, 0x8b, 0x15, 0x74, 0x17, 0x20, 0xb2, 0x25, 0xda, 0x5f, 0x14, 0x4d, - 0x75, 0x3e, 0xab, 0x97, 0x5c, 0xe1, 0xf6, 0xba, 0xb8, 0xe4, 0x00, 0xbd, 0x10, 0x21, 0xf0, 0x48, - 0x18, 0x0a, 0x53, 0x42, 0x25, 0x6c, 0xc6, 0x8d, 0xdf, 0xae, 0x83, 0xf7, 0x8c, 0xc8, 0xe1, 0x55, - 0xb7, 0x19, 0xbd, 0xe7, 0x4a, 0xd1, 0xdd, 0x05, 0x90, 0x36, 0x95, 0xfa, 0x38, 0xde, 0xd9, 0x71, - 0x5c, 0x82, 0xf5, 0x71, 0x1c, 0xc0, 0x1e, 0x47, 0x8e, 0xb8, 0x32, 0xf5, 0xe5, 0x61, 0x33, 0x46, - 0xb7, 0xa1, 0x10, 0xf1, 0xd0, 0xd0, 0xf3, 0x86, 0x0e, 0xf3, 0x59, 0x3d, 0xaf, 0x5b, 0x4a, 0xaf, - 0x8b, 0xf3, 0x7a, 0xa9, 0x17, 0xea, 0x7b, 0x4b, 0xa2, 0x88, 0x2b, 0xa2, 0x9b, 0x92, 0x74, 0xf7, - 0x3f, 0xb5, 0xb0, 0x5a, 0x67, 0xb0, 0xe4, 0xde, 0x2e, 0x31, 0xd1, 0x21, 0xbc, 0x9d, 0xf8, 0xbb, - 0x2c, 0x58, 0x7c, 0x1d, 0x41, 0xe4, 0x14, 0x96, 0x56, 0x96, 0xfa, 0x64, 0x69, 0x7d, 0x9f, 0x34, - 0x11, 0x4c, 0xeb, 0x93, 0x6d, 0xa8, 0x86, 0x54, 0x32, 0x41, 0x43, 0x73, 0x03, 0xa9, 0x0f, 0x3b, - 0x99, 0x3b, 0x1b, 0x6b, 0x9e, 0x1e, 0x27, 0x42, 0x71, 0xc5, 0x71, 0x8c, 0x85, 0x5a, 0x50, 0x74, - 0x75, 0x23, 0xfd, 0xb2, 0xa9, 0xdd, 0x4b, 0xf6, 0xc7, 0x05, 0xed, 0x5c, 0x07, 0xa9, 0xbc, 0x56, - 0x07, 0x79, 0x04, 0x30, 0xe2, 0x83, 0x7e, 0x28, 0xd8, 0x94, 0x0a, 0xbf, 0x6a, 0xb8, 0x5b, 0x69, - 0xdc, 0xae, 0x41, 0xe0, 0xd2, 0x88, 0x0f, 0xec, 0xb0, 0xf1, 0x43, 0x06, 0xde, 0x5a, 0x71, 0x0a, - 0x7d, 0x0c, 0x05, 0xe7, 0xd6, 0x45, 0x1f, 0x01, 0x8e, 0x87, 0x13, 0x2c, 0xda, 0x86, 0x92, 0xbe, - 0x23, 0x54, 0x4a, 0x6a, 0x6f, 0x7f, 0x09, 0x9f, 0x4d, 0x20, 0x1f, 0x0a, 0x64, 0xc4, 0x88, 0x5e, - 0xcb, 0x99, 0xb5, 0xc4, 0x6c, 0xfc, 0x94, 0x85, 0x82, 0x13, 0xbb, 0xea, 0x76, 0xee, 0xb6, 0x5d, - 0xb9, 0x59, 0x4f, 0xa0, 0x62, 0xc3, 0xe9, 0x4a, 0xc2, 0xfb, 0xdf, 0xa0, 0x96, 0x2d, 0xde, 0x96, - 0xc3, 0x13, 0xf0, 0x58, 0x4c, 0xc6, 0xae, 0x95, 0xa7, 0xee, 0xdc, 0xdb, 0x6f, 0xed, 0x7d, 0x1d, - 0xdb, 0xca, 0x2e, 0xce, 0x67, 0x75, 0x4f, 0x4f, 0x60, 0x43, 0x6b, 0xfc, 0x92, 0x83, 0x42, 0x67, - 0x34, 0x91, 0x8a, 0x8a, 0xab, 0x0e, 0x88, 0xdb, 0x76, 0x25, 0x20, 0x1d, 0x28, 0x08, 0xce, 0x55, - 0x3f, 0x20, 0x17, 0xc5, 0x02, 0x73, 0xae, 0x3a, 0xad, 0xf6, 0x86, 0x26, 0xea, 0x46, 0x62, 0x6d, - 0x9c, 0xd7, 0xd4, 0x0e, 0x41, 0xcf, 0x61, 0x33, 0x69, 0xbf, 0x47, 0x9c, 0x2b, 0xa9, 0x04, 0x89, - 0xfb, 0x43, 0x7a, 0xac, 0xdf, 0xbc, 0xdc, 0xba, 0x2f, 0x93, 0xdd, 0x28, 0x10, 0xc7, 0x26, 0x50, - 0x4f, 0xe9, 0x31, 0xbe, 0xe1, 0x04, 0xda, 0x09, 0xff, 0x29, 0x3d, 0x96, 0xe8, 0x33, 0xd8, 0xa6, - 0x0b, 0x98, 0x56, 0xec, 0x8f, 0xc8, 0x58, 0x3f, 0x2c, 0xfd, 0x60, 0xc4, 0x83, 0xa1, 0xe9, 0x6d, - 0x1e, 0xbe, 0x49, 0x97, 0xa5, 0xbe, 0xb4, 0x88, 0x8e, 0x06, 0xa0, 0x0f, 0xe0, 0x86, 0xa4, 0x81, - 0xa0, 0xea, 0x3f, 0xc4, 0x82, 0x21, 0x22, 0xbb, 0xb6, 0xcc, 0x68, 0xfc, 0x98, 0x85, 0xfc, 0x81, - 0x99, 0x7e, 0xa3, 0x29, 0x7a, 0x78, 0x2e, 0x45, 0xb5, 0xf4, 0xd7, 0x5b, 0xef, 0xba, 0x92, 0xa1, - 0x4d, 0xc8, 0x87, 0x6c, 0x40, 0xa5, 0xfd, 0xfe, 0x28, 0x61, 0x67, 0xa1, 0x06, 0x78, 0x92, 0xbd, - 0xa2, 0xa6, 0x16, 0xab, 0xf6, 0xa9, 0x74, 0x0a, 0xec, 0x15, 0xc5, 0x66, 0x0d, 0x6d, 0x41, 0x91, - 0x45, 0x8a, 0x8a, 0x88, 0x8c, 0x4c, 0xac, 0x8a, 0x78, 0x61, 0xa3, 0x5b, 0x50, 0x49, 0x62, 0xa2, - 0xff, 0x25, 0x5c, 0x48, 0xca, 0x6e, 0x4e, 0x7f, 0x8b, 0xb7, 0xb7, 0x4f, 0x4e, 0x6b, 0xd7, 0xfe, - 0x3c, 0xad, 0x5d, 0xfb, 0xe7, 0xb4, 0x96, 0xf9, 0x7e, 0x5e, 0xcb, 0x9c, 0xcc, 0x6b, 0x99, 0xdf, - 0xe7, 0xb5, 0xcc, 0x5f, 0xf3, 0x5a, 0xe6, 0x28, 0x6f, 0x7e, 0x31, 0x3e, 0xfa, 0x37, 0x00, 0x00, - 0xff, 0xff, 0x8c, 0xe4, 0xe3, 0xe8, 0xd2, 0x0c, 0x00, 0x00, + // 1101 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xbc, 0x57, 0x4f, 0x6f, 0x1b, 0xc5, + 0x1b, 0xee, 0xda, 0x5b, 0xdb, 0xfb, 0x3a, 0x8e, 0xf4, 0x9b, 0x5f, 0x15, 0x6d, 0x43, 0xb0, 0x83, + 0x2b, 0x50, 0x0f, 0x95, 0x2b, 0x4a, 0x41, 0xad, 0x68, 0x85, 0xfc, 0x27, 0x02, 0xab, 0x04, 0xa2, + 0x49, 0x49, 0x8f, 0xab, 0xc9, 0xee, 0xd4, 0x0c, 0xb6, 0x77, 0x56, 0x33, 0x63, 0x57, 0xe9, 0x09, + 0xf1, 0x01, 0xf8, 0x08, 0x7c, 0x15, 0xae, 0x39, 0x70, 0xe0, 0x06, 0x27, 0x8b, 0xf8, 0x80, 0xc4, + 0x09, 0x3e, 0x02, 0x9a, 0xd9, 0x59, 0xc7, 0x91, 0xd7, 0x21, 0x95, 0xaa, 0xdc, 0xe6, 0xf5, 0x3c, + 0xcf, 0xf3, 0xfe, 0x99, 0x77, 0xde, 0x59, 0x43, 0x8d, 0x1f, 0x7f, 0x47, 0x43, 0x25, 0x5b, 0x89, + 0xe0, 0x8a, 0x23, 0x14, 0xf1, 0x70, 0x48, 0x45, 0x4b, 0xbe, 0x22, 0x62, 0x3c, 0x64, 0xaa, 0x35, + 0xfd, 0x70, 0xbb, 0xaa, 0x4e, 0x12, 0x6a, 0x01, 0xdb, 0x55, 0x99, 0xd0, 0x30, 0x33, 0x6e, 0x2b, + 0x36, 0xa6, 0x52, 0x91, 0x71, 0x72, 0x7f, 0xb1, 0xb2, 0x5b, 0xb7, 0x06, 0x7c, 0xc0, 0xcd, 0xf2, + 0xbe, 0x5e, 0xa5, 0xbf, 0x36, 0x7f, 0x76, 0xc0, 0xdd, 0xa7, 0x8a, 0xa0, 0x4f, 0xa1, 0x3c, 0xa5, + 0x42, 0x32, 0x1e, 0xfb, 0xce, 0xae, 0x73, 0xb7, 0xfa, 0xe0, 0x9d, 0xd6, 0xaa, 0xe7, 0xd6, 0x51, + 0x0a, 0xe9, 0xb8, 0xa7, 0xb3, 0xc6, 0x0d, 0x9c, 0x31, 0xd0, 0x13, 0x80, 0x50, 0x50, 0xa2, 0x68, + 0x14, 0x10, 0xe5, 0x17, 0x0c, 0xff, 0xdd, 0x3c, 0xfe, 0xf3, 0x2c, 0x28, 0xec, 0x59, 0x42, 0x5b, + 0x69, 0xf6, 0x24, 0x89, 0x32, 0x76, 0xf1, 0x4a, 0x6c, 0x4b, 0x68, 0xab, 0xe6, 0x5f, 0x45, 0x70, + 0xbf, 0xe2, 0x11, 0x45, 0x5b, 0x50, 0x60, 0x91, 0x09, 0xde, 0xeb, 0x94, 0xe6, 0xb3, 0x46, 0xa1, + 0xdf, 0xc3, 0x05, 0x16, 0xa1, 0x07, 0xe0, 0x8e, 0xa9, 0x22, 0x36, 0x2c, 0x3f, 0x4f, 0x58, 0x57, + 0xc0, 0xe6, 0x64, 0xb0, 0xe8, 0x13, 0x70, 0x75, 0x59, 0x6d, 0x30, 0x3b, 0x79, 0x1c, 0xed, 0xf3, + 0x30, 0xa1, 0x61, 0xc6, 0xd3, 0x78, 0xb4, 0x07, 0xd5, 0x88, 0xca, 0x50, 0xb0, 0x44, 0xe9, 0x4a, + 0xba, 0x86, 0x7e, 0x67, 0x1d, 0xbd, 0x77, 0x0e, 0xc5, 0xcb, 0x3c, 0xf4, 0x04, 0x4a, 0x52, 0x11, + 0x35, 0x91, 0xfe, 0x4d, 0xa3, 0x50, 0x5f, 0x1b, 0x80, 0x41, 0xd9, 0x10, 0x2c, 0x07, 0x7d, 0x01, + 0x9b, 0x63, 0x12, 0x93, 0x01, 0x15, 0x81, 0x55, 0x29, 0x19, 0x95, 0xf7, 0x72, 0x53, 0x4f, 0x91, + 0xa9, 0x10, 0xae, 0x8d, 0x97, 0x4d, 0xb4, 0x07, 0x40, 0x94, 0x22, 0xe1, 0xb7, 0x63, 0x1a, 0x2b, + 0xbf, 0x6c, 0x54, 0xde, 0xcf, 0x8d, 0x85, 0xaa, 0x57, 0x5c, 0x0c, 0xdb, 0x0b, 0x30, 0x5e, 0x22, + 0xa2, 0xcf, 0xa1, 0x1a, 0x52, 0xa1, 0xd8, 0x4b, 0x16, 0x12, 0x45, 0xfd, 0x8a, 0xd1, 0x69, 0xe4, + 0xe9, 0x74, 0xcf, 0x61, 0x36, 0xa9, 0x65, 0x66, 0xf3, 0xb7, 0x02, 0x94, 0x0f, 0xa9, 0x98, 0xb2, + 0xf0, 0xed, 0x1e, 0xf7, 0xe3, 0x0b, 0xc7, 0x9d, 0x1b, 0x99, 0x75, 0xbb, 0x72, 0xe2, 0x8f, 0xa0, + 0x42, 0xe3, 0x28, 0xe1, 0x2c, 0x56, 0xf6, 0xb8, 0x73, 0xbb, 0x65, 0xcf, 0x62, 0xf0, 0x02, 0x8d, + 0xf6, 0xa0, 0x96, 0x76, 0x71, 0x70, 0xe1, 0xac, 0x77, 0xf3, 0xe8, 0xdf, 0x18, 0xa0, 0x3d, 0xa4, + 0x8d, 0xc9, 0x92, 0x85, 0x7a, 0x50, 0x4b, 0x04, 0x9d, 0x32, 0x3e, 0x91, 0x81, 0x49, 0xa2, 0x74, + 0xa5, 0x24, 0xf0, 0x46, 0xc6, 0xd2, 0x56, 0xf3, 0xa7, 0x02, 0x54, 0xb2, 0x18, 0xd1, 0x43, 0x5b, + 0x0e, 0x67, 0x7d, 0x40, 0x19, 0xd6, 0x48, 0xa5, 0x95, 0x78, 0x08, 0x37, 0x13, 0x2e, 0x94, 0xf4, + 0x0b, 0xbb, 0xc5, 0x75, 0x3d, 0x7b, 0xc0, 0x85, 0xea, 0xf2, 0xf8, 0x25, 0x1b, 0xe0, 0x14, 0x8c, + 0x5e, 0x40, 0x75, 0xca, 0x84, 0x9a, 0x90, 0x51, 0xc0, 0x12, 0xe9, 0x17, 0x0d, 0xf7, 0x83, 0xcb, + 0x5c, 0xb6, 0x8e, 0x52, 0x7c, 0xff, 0xa0, 0xb3, 0x39, 0x9f, 0x35, 0x60, 0x61, 0x4a, 0x0c, 0x56, + 0xaa, 0x9f, 0xc8, 0xed, 0x7d, 0xf0, 0x16, 0x3b, 0xe8, 0x1e, 0x40, 0x9c, 0xb6, 0x68, 0xb0, 0x68, + 0x9a, 0xda, 0x7c, 0xd6, 0xf0, 0x6c, 0xe3, 0xf6, 0x7b, 0xd8, 0xb3, 0x80, 0x7e, 0x84, 0x10, 0xb8, + 0x24, 0x8a, 0x84, 0x69, 0x21, 0x0f, 0x9b, 0x75, 0xf3, 0x97, 0x9b, 0xe0, 0x3e, 0x27, 0x72, 0x78, + 0xdd, 0x63, 0x46, 0xfb, 0x5c, 0x69, 0xba, 0x7b, 0x00, 0x32, 0x3d, 0x4a, 0x9d, 0x8e, 0x7b, 0x9e, + 0x8e, 0x3d, 0x60, 0x9d, 0x8e, 0x05, 0xa4, 0xe9, 0xc8, 0x11, 0x57, 0xa6, 0xbf, 0x5c, 0x6c, 0xd6, + 0xe8, 0x0e, 0x94, 0x63, 0x1e, 0x19, 0x7a, 0xc9, 0xd0, 0x61, 0x3e, 0x6b, 0x94, 0xf4, 0x48, 0xe9, + 0xf7, 0x70, 0x49, 0x6f, 0xf5, 0x23, 0x7d, 0x6f, 0x49, 0x1c, 0x73, 0x45, 0xf4, 0x50, 0x92, 0xf6, + 0xfe, 0xe7, 0x36, 0x56, 0xfb, 0x1c, 0x96, 0xdd, 0xdb, 0x25, 0x26, 0x3a, 0x82, 0xff, 0x67, 0xf1, + 0x2e, 0x0b, 0x56, 0xde, 0x44, 0x10, 0x59, 0x85, 0xa5, 0x9d, 0xa5, 0x39, 0xe9, 0xad, 0x9f, 0x93, + 0xa6, 0x82, 0x79, 0x73, 0xb2, 0x03, 0xb5, 0x88, 0x4a, 0x26, 0x68, 0x64, 0x6e, 0x20, 0xf5, 0x61, + 0xd7, 0xb9, 0xbb, 0xb9, 0xe6, 0xe9, 0xb1, 0x22, 0x14, 0x6f, 0x58, 0x8e, 0xb1, 0x50, 0x1b, 0x2a, + 0xb6, 0x6f, 0xa4, 0x5f, 0x35, 0xbd, 0x7b, 0xc5, 0xf9, 0xb8, 0xa0, 0x5d, 0x98, 0x20, 0x1b, 0x6f, + 0x34, 0x41, 0x1e, 0x03, 0x8c, 0xf8, 0x20, 0x88, 0x04, 0x9b, 0x52, 0xe1, 0xd7, 0x0c, 0x77, 0x3b, + 0x8f, 0xdb, 0x33, 0x08, 0xec, 0x8d, 0xf8, 0x20, 0x5d, 0x36, 0x7f, 0x70, 0xe0, 0x7f, 0x2b, 0x41, + 0xa1, 0x8f, 0xa1, 0x6c, 0xc3, 0xba, 0xec, 0x23, 0xc0, 0xf2, 0x70, 0x86, 0x45, 0x3b, 0xe0, 0xe9, + 0x3b, 0x42, 0xa5, 0xa4, 0xe9, 0xed, 0xf7, 0xf0, 0xf9, 0x0f, 0xc8, 0x87, 0x32, 0x19, 0x31, 0xa2, + 0xf7, 0x8a, 0x66, 0x2f, 0x33, 0x9b, 0x3f, 0x16, 0xa0, 0x6c, 0xc5, 0xae, 0x7b, 0x9c, 0x5b, 0xb7, + 0x2b, 0x37, 0xeb, 0x29, 0x6c, 0xa4, 0xe5, 0xb4, 0x2d, 0xe1, 0xfe, 0x67, 0x51, 0xab, 0x29, 0x3e, + 0x6d, 0x87, 0xa7, 0xe0, 0xb2, 0x84, 0x8c, 0xed, 0x28, 0xcf, 0xf5, 0xdc, 0x3f, 0x68, 0xef, 0x7f, + 0x9d, 0xa4, 0x9d, 0x5d, 0x99, 0xcf, 0x1a, 0xae, 0xfe, 0x01, 0x1b, 0x5a, 0xf3, 0xef, 0x02, 0x94, + 0xbb, 0xa3, 0x89, 0x54, 0x54, 0x5c, 0x77, 0x41, 0xac, 0xdb, 0x95, 0x82, 0x74, 0xa1, 0x2c, 0x38, + 0x57, 0x41, 0x48, 0x2e, 0xab, 0x05, 0xe6, 0x5c, 0x75, 0xdb, 0x9d, 0x4d, 0x4d, 0xd4, 0x83, 0x24, + 0xb5, 0x71, 0x49, 0x53, 0xbb, 0x04, 0xbd, 0x80, 0xad, 0x6c, 0xfc, 0x1e, 0x73, 0xae, 0xa4, 0x12, + 0x24, 0x09, 0x86, 0xf4, 0x44, 0xbf, 0x79, 0xc5, 0x75, 0x5f, 0x26, 0x7b, 0x71, 0x28, 0x4e, 0x4c, + 0xa1, 0x9e, 0xd1, 0x13, 0x7c, 0xcb, 0x0a, 0x74, 0x32, 0xfe, 0x33, 0x7a, 0x22, 0xd1, 0x67, 0xb0, + 0x43, 0x17, 0x30, 0xad, 0x18, 0x8c, 0xc8, 0x58, 0x3f, 0x2c, 0x41, 0x38, 0xe2, 0xe1, 0xd0, 0xcc, + 0x36, 0x17, 0xdf, 0xa6, 0xcb, 0x52, 0x5f, 0xa6, 0x88, 0xae, 0x06, 0x34, 0xff, 0x74, 0xa0, 0x74, + 0x48, 0x43, 0x41, 0xd5, 0x5b, 0x2d, 0xf8, 0xa3, 0x0b, 0x05, 0xaf, 0xe7, 0xbf, 0xc5, 0xda, 0xeb, + 0x4a, 0xbd, 0xb7, 0xa0, 0x14, 0xb1, 0x01, 0x95, 0xe9, 0xd7, 0x84, 0x87, 0xad, 0x85, 0x9a, 0xe0, + 0x4a, 0xf6, 0x9a, 0x9a, 0xce, 0xaa, 0xa5, 0x0f, 0x9f, 0x55, 0x60, 0xaf, 0x29, 0x36, 0x7b, 0x68, + 0x1b, 0x2a, 0x2c, 0x56, 0x54, 0xc4, 0x64, 0x64, 0x32, 0xaf, 0xe0, 0x85, 0xdd, 0xd9, 0x39, 0x3d, + 0xab, 0xdf, 0xf8, 0xfd, 0xac, 0x7e, 0xe3, 0x9f, 0xb3, 0xba, 0xf3, 0xfd, 0xbc, 0xee, 0x9c, 0xce, + 0xeb, 0xce, 0xaf, 0xf3, 0xba, 0xf3, 0xc7, 0xbc, 0xee, 0x1c, 0x97, 0xcc, 0xbf, 0x81, 0x8f, 0xfe, + 0x0d, 0x00, 0x00, 0xff, 0xff, 0xfd, 0x7d, 0x96, 0x72, 0x7d, 0x0c, 0x00, 0x00, } diff --git a/api/objects.proto b/api/objects.proto index 3d5ac0f25a..7317988292 100644 --- a/api/objects.proto +++ b/api/objects.proto @@ -225,11 +225,6 @@ message Cluster { // and agents to unambiguously identify the older key to be deleted when // a new key is allocated on key rotation. uint64 encryption_key_lamport_clock = 6; - - // Logical clock used to timestamp every secret. It allows other managers - // and agents to unambiguously identify the newest secret to be used when - // requesting the latest version of a secret. - uint64 secret_lamport_clock = 7; } // Secret represents a secret that should be passed to a container or a node, @@ -242,23 +237,18 @@ message Secret { Meta meta = 2 [(gogoproto.nullable) = false]; // Spec contains the actual secret data, as well as any context around the - // secret data that the user provides. The name on the annotation of the - // spec must match the name of the `Secret` object this `SecretSpec` belongs - // to. + // secret data that the user provides. SecretSpec spec = 3 [(gogoproto.nullable) = false]; // Digest represents the cryptographic digest of the secret data, and follows // the form ":": for example "sha256:DEADBEEF...". It - // is calculated from the data contained in `SecretValue.Spec.data`. + // is calculated from the data contained in `Secret.Spec.data`. string digest = 4; // Size represents the size (number of bytes) of the secret data, and is - // calculated from the data contained in `SecretValue.Spec.data`.. + // calculated from the data contained in `Secret.Spec.data`.. uint32 size = 5 [(gogoproto.customname) = "SecretSize"]; // Whether the secret is an internal secret (not set by a user) or not. bool internal = 6; - - // Timestamp from the lamport clock to identify the relative age of the secret. - uint64 lamport_time = 7; } diff --git a/api/secrets.pb.go b/api/secrets.pb.go deleted file mode 100644 index 805da51278..0000000000 --- a/api/secrets.pb.go +++ /dev/null @@ -1,2323 +0,0 @@ -// Code generated by protoc-gen-gogo. -// source: secrets.proto -// DO NOT EDIT! - -package api - -import proto "github.com/gogo/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "github.com/docker/swarmkit/protobuf/plugin" -import _ "github.com/gogo/protobuf/gogoproto" - -import strings "strings" -import github_com_gogo_protobuf_proto "github.com/gogo/protobuf/proto" -import sort "sort" -import strconv "strconv" -import reflect "reflect" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -import raftselector "github.com/docker/swarmkit/manager/raftselector" -import codes "google.golang.org/grpc/codes" -import metadata "google.golang.org/grpc/metadata" -import transport "google.golang.org/grpc/transport" -import time "time" - -import io "io" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// GetSecretRequest is the request to get a `Secret` object given a secret id. -type GetSecretRequest struct { - SecretID string `protobuf:"bytes,1,opt,name=secret_id,json=secretId,proto3" json:"secret_id,omitempty"` -} - -func (m *GetSecretRequest) Reset() { *m = GetSecretRequest{} } -func (*GetSecretRequest) ProtoMessage() {} -func (*GetSecretRequest) Descriptor() ([]byte, []int) { return fileDescriptorSecrets, []int{0} } - -// GetSecretResponse contains the Secret corresponding to the id in -// `GetSecretRequest`, but the `SecretValue.Spec.Data` field in each `SecretValue` -// object in the `Secret` should be nil instead of actually containing -// the secret bytes. -type GetSecretResponse struct { - Secret *Secret `protobuf:"bytes,1,opt,name=secret" json:"secret,omitempty"` -} - -func (m *GetSecretResponse) Reset() { *m = GetSecretResponse{} } -func (*GetSecretResponse) ProtoMessage() {} -func (*GetSecretResponse) Descriptor() ([]byte, []int) { return fileDescriptorSecrets, []int{1} } - -// ListSecretRequest is the request to list all non-internal secrets in the secret store, -// or all secrets filtered by (id or id prefix or name or name prefix). -type ListSecretsRequest struct { - Filters *ListSecretsRequest_Filters `protobuf:"bytes,1,opt,name=filters" json:"filters,omitempty"` -} - -func (m *ListSecretsRequest) Reset() { *m = ListSecretsRequest{} } -func (*ListSecretsRequest) ProtoMessage() {} -func (*ListSecretsRequest) Descriptor() ([]byte, []int) { return fileDescriptorSecrets, []int{2} } - -type ListSecretsRequest_Filters struct { - Ids []string `protobuf:"bytes,1,rep,name=ids" json:"ids,omitempty"` - IDPrefixes []string `protobuf:"bytes,2,rep,name=id_prefixes,json=idPrefixes" json:"id_prefixes,omitempty"` - Names []string `protobuf:"bytes,3,rep,name=names" json:"names,omitempty"` - NamePrefixes []string `protobuf:"bytes,4,rep,name=name_prefixes,json=namePrefixes" json:"name_prefixes,omitempty"` -} - -func (m *ListSecretsRequest_Filters) Reset() { *m = ListSecretsRequest_Filters{} } -func (*ListSecretsRequest_Filters) ProtoMessage() {} -func (*ListSecretsRequest_Filters) Descriptor() ([]byte, []int) { - return fileDescriptorSecrets, []int{2, 0} -} - -// ListSecretResponse contains a list of all the secrets that match the name or -// name prefix filters provided in `ListSecretRequest`. The `SecretValue.Spec.Data` -// field in each `SecretValue` object in each `Secret` should be nil instead of -// actually containing the secret bytes. -type ListSecretsResponse struct { - Secrets []*Secret `protobuf:"bytes,1,rep,name=secrets" json:"secrets,omitempty"` -} - -func (m *ListSecretsResponse) Reset() { *m = ListSecretsResponse{} } -func (*ListSecretsResponse) ProtoMessage() {} -func (*ListSecretsResponse) Descriptor() ([]byte, []int) { return fileDescriptorSecrets, []int{3} } - -// CreateSecretRequest specifies a new secret (it will not update an existing -// secret) to create. -type CreateSecretRequest struct { - Spec *SecretSpec `protobuf:"bytes,1,opt,name=spec" json:"spec,omitempty"` -} - -func (m *CreateSecretRequest) Reset() { *m = CreateSecretRequest{} } -func (*CreateSecretRequest) ProtoMessage() {} -func (*CreateSecretRequest) Descriptor() ([]byte, []int) { return fileDescriptorSecrets, []int{4} } - -// CreateSecretResponse contains the newly created `Secret`` corresponding to the -// name in `CreateSecretRequest`. Since it's a new secret, there should just be -// the one version, and hence only one `SecretValue` object in the `Secret`. -// The `SecretValue.Spec.Data` field should be nil instead of actually -// containing the secret bytes. -type CreateSecretResponse struct { - Secret *Secret `protobuf:"bytes,1,opt,name=secret" json:"secret,omitempty"` -} - -func (m *CreateSecretResponse) Reset() { *m = CreateSecretResponse{} } -func (*CreateSecretResponse) ProtoMessage() {} -func (*CreateSecretResponse) Descriptor() ([]byte, []int) { return fileDescriptorSecrets, []int{5} } - -// RemoveSecretRequest contains the ID of the secret that should be removed. This -// removes all versions of the secret. -type RemoveSecretRequest struct { - SecretID string `protobuf:"bytes,1,opt,name=secret_id,json=secretId,proto3" json:"secret_id,omitempty"` -} - -func (m *RemoveSecretRequest) Reset() { *m = RemoveSecretRequest{} } -func (*RemoveSecretRequest) ProtoMessage() {} -func (*RemoveSecretRequest) Descriptor() ([]byte, []int) { return fileDescriptorSecrets, []int{6} } - -// RemoveSecretResponse is an empty object indicating the successful removal of -// a secret. -type RemoveSecretResponse struct { -} - -func (m *RemoveSecretResponse) Reset() { *m = RemoveSecretResponse{} } -func (*RemoveSecretResponse) ProtoMessage() {} -func (*RemoveSecretResponse) Descriptor() ([]byte, []int) { return fileDescriptorSecrets, []int{7} } - -func init() { - proto.RegisterType((*GetSecretRequest)(nil), "docker.swarmkit.v1.GetSecretRequest") - proto.RegisterType((*GetSecretResponse)(nil), "docker.swarmkit.v1.GetSecretResponse") - proto.RegisterType((*ListSecretsRequest)(nil), "docker.swarmkit.v1.ListSecretsRequest") - proto.RegisterType((*ListSecretsRequest_Filters)(nil), "docker.swarmkit.v1.ListSecretsRequest.Filters") - proto.RegisterType((*ListSecretsResponse)(nil), "docker.swarmkit.v1.ListSecretsResponse") - proto.RegisterType((*CreateSecretRequest)(nil), "docker.swarmkit.v1.CreateSecretRequest") - proto.RegisterType((*CreateSecretResponse)(nil), "docker.swarmkit.v1.CreateSecretResponse") - proto.RegisterType((*RemoveSecretRequest)(nil), "docker.swarmkit.v1.RemoveSecretRequest") - proto.RegisterType((*RemoveSecretResponse)(nil), "docker.swarmkit.v1.RemoveSecretResponse") -} - -type authenticatedWrapperSecretsServer struct { - local SecretsServer - authorize func(context.Context, []string) error -} - -func NewAuthenticatedWrapperSecretsServer(local SecretsServer, authorize func(context.Context, []string) error) SecretsServer { - return &authenticatedWrapperSecretsServer{ - local: local, - authorize: authorize, - } -} - -func (p *authenticatedWrapperSecretsServer) GetSecret(ctx context.Context, r *GetSecretRequest) (*GetSecretResponse, error) { - - if err := p.authorize(ctx, []string{"swarm-manager"}); err != nil { - return nil, err - } - return p.local.GetSecret(ctx, r) -} - -func (p *authenticatedWrapperSecretsServer) ListSecrets(ctx context.Context, r *ListSecretsRequest) (*ListSecretsResponse, error) { - - if err := p.authorize(ctx, []string{"swarm-manager"}); err != nil { - return nil, err - } - return p.local.ListSecrets(ctx, r) -} - -func (p *authenticatedWrapperSecretsServer) CreateSecret(ctx context.Context, r *CreateSecretRequest) (*CreateSecretResponse, error) { - - if err := p.authorize(ctx, []string{"swarm-manager"}); err != nil { - return nil, err - } - return p.local.CreateSecret(ctx, r) -} - -func (p *authenticatedWrapperSecretsServer) RemoveSecret(ctx context.Context, r *RemoveSecretRequest) (*RemoveSecretResponse, error) { - - if err := p.authorize(ctx, []string{"swarm-manager"}); err != nil { - return nil, err - } - return p.local.RemoveSecret(ctx, r) -} - -func (m *GetSecretRequest) Copy() *GetSecretRequest { - if m == nil { - return nil - } - - o := &GetSecretRequest{ - SecretID: m.SecretID, - } - - return o -} - -func (m *GetSecretResponse) Copy() *GetSecretResponse { - if m == nil { - return nil - } - - o := &GetSecretResponse{ - Secret: m.Secret.Copy(), - } - - return o -} - -func (m *ListSecretsRequest) Copy() *ListSecretsRequest { - if m == nil { - return nil - } - - o := &ListSecretsRequest{ - Filters: m.Filters.Copy(), - } - - return o -} - -func (m *ListSecretsRequest_Filters) Copy() *ListSecretsRequest_Filters { - if m == nil { - return nil - } - - o := &ListSecretsRequest_Filters{} - - if m.Ids != nil { - o.Ids = make([]string, 0, len(m.Ids)) - for _, v := range m.Ids { - o.Ids = append(o.Ids, v) - } - } - - if m.IDPrefixes != nil { - o.IDPrefixes = make([]string, 0, len(m.IDPrefixes)) - for _, v := range m.IDPrefixes { - o.IDPrefixes = append(o.IDPrefixes, v) - } - } - - if m.Names != nil { - o.Names = make([]string, 0, len(m.Names)) - for _, v := range m.Names { - o.Names = append(o.Names, v) - } - } - - if m.NamePrefixes != nil { - o.NamePrefixes = make([]string, 0, len(m.NamePrefixes)) - for _, v := range m.NamePrefixes { - o.NamePrefixes = append(o.NamePrefixes, v) - } - } - - return o -} - -func (m *ListSecretsResponse) Copy() *ListSecretsResponse { - if m == nil { - return nil - } - - o := &ListSecretsResponse{} - - if m.Secrets != nil { - o.Secrets = make([]*Secret, 0, len(m.Secrets)) - for _, v := range m.Secrets { - o.Secrets = append(o.Secrets, v.Copy()) - } - } - - return o -} - -func (m *CreateSecretRequest) Copy() *CreateSecretRequest { - if m == nil { - return nil - } - - o := &CreateSecretRequest{ - Spec: m.Spec.Copy(), - } - - return o -} - -func (m *CreateSecretResponse) Copy() *CreateSecretResponse { - if m == nil { - return nil - } - - o := &CreateSecretResponse{ - Secret: m.Secret.Copy(), - } - - return o -} - -func (m *RemoveSecretRequest) Copy() *RemoveSecretRequest { - if m == nil { - return nil - } - - o := &RemoveSecretRequest{ - SecretID: m.SecretID, - } - - return o -} - -func (m *RemoveSecretResponse) Copy() *RemoveSecretResponse { - if m == nil { - return nil - } - - o := &RemoveSecretResponse{} - - return o -} - -func (this *GetSecretRequest) GoString() string { - if this == nil { - return "nil" - } - s := make([]string, 0, 5) - s = append(s, "&api.GetSecretRequest{") - s = append(s, "SecretID: "+fmt.Sprintf("%#v", this.SecretID)+",\n") - s = append(s, "}") - return strings.Join(s, "") -} -func (this *GetSecretResponse) GoString() string { - if this == nil { - return "nil" - } - s := make([]string, 0, 5) - s = append(s, "&api.GetSecretResponse{") - if this.Secret != nil { - s = append(s, "Secret: "+fmt.Sprintf("%#v", this.Secret)+",\n") - } - s = append(s, "}") - return strings.Join(s, "") -} -func (this *ListSecretsRequest) GoString() string { - if this == nil { - return "nil" - } - s := make([]string, 0, 5) - s = append(s, "&api.ListSecretsRequest{") - if this.Filters != nil { - s = append(s, "Filters: "+fmt.Sprintf("%#v", this.Filters)+",\n") - } - s = append(s, "}") - return strings.Join(s, "") -} -func (this *ListSecretsRequest_Filters) GoString() string { - if this == nil { - return "nil" - } - s := make([]string, 0, 8) - s = append(s, "&api.ListSecretsRequest_Filters{") - s = append(s, "Ids: "+fmt.Sprintf("%#v", this.Ids)+",\n") - s = append(s, "IDPrefixes: "+fmt.Sprintf("%#v", this.IDPrefixes)+",\n") - s = append(s, "Names: "+fmt.Sprintf("%#v", this.Names)+",\n") - s = append(s, "NamePrefixes: "+fmt.Sprintf("%#v", this.NamePrefixes)+",\n") - s = append(s, "}") - return strings.Join(s, "") -} -func (this *ListSecretsResponse) GoString() string { - if this == nil { - return "nil" - } - s := make([]string, 0, 5) - s = append(s, "&api.ListSecretsResponse{") - if this.Secrets != nil { - s = append(s, "Secrets: "+fmt.Sprintf("%#v", this.Secrets)+",\n") - } - s = append(s, "}") - return strings.Join(s, "") -} -func (this *CreateSecretRequest) GoString() string { - if this == nil { - return "nil" - } - s := make([]string, 0, 5) - s = append(s, "&api.CreateSecretRequest{") - if this.Spec != nil { - s = append(s, "Spec: "+fmt.Sprintf("%#v", this.Spec)+",\n") - } - s = append(s, "}") - return strings.Join(s, "") -} -func (this *CreateSecretResponse) GoString() string { - if this == nil { - return "nil" - } - s := make([]string, 0, 5) - s = append(s, "&api.CreateSecretResponse{") - if this.Secret != nil { - s = append(s, "Secret: "+fmt.Sprintf("%#v", this.Secret)+",\n") - } - s = append(s, "}") - return strings.Join(s, "") -} -func (this *RemoveSecretRequest) GoString() string { - if this == nil { - return "nil" - } - s := make([]string, 0, 5) - s = append(s, "&api.RemoveSecretRequest{") - s = append(s, "SecretID: "+fmt.Sprintf("%#v", this.SecretID)+",\n") - s = append(s, "}") - return strings.Join(s, "") -} -func (this *RemoveSecretResponse) GoString() string { - if this == nil { - return "nil" - } - s := make([]string, 0, 4) - s = append(s, "&api.RemoveSecretResponse{") - s = append(s, "}") - return strings.Join(s, "") -} -func valueToGoStringSecrets(v interface{}, typ string) string { - rv := reflect.ValueOf(v) - if rv.IsNil() { - return "nil" - } - pv := reflect.Indirect(rv).Interface() - return fmt.Sprintf("func(v %v) *%v { return &v } ( %#v )", typ, typ, pv) -} -func extensionToGoStringSecrets(m github_com_gogo_protobuf_proto.Message) string { - e := github_com_gogo_protobuf_proto.GetUnsafeExtensionsMap(m) - if e == nil { - return "nil" - } - s := "proto.NewUnsafeXXX_InternalExtensions(map[int32]proto.Extension{" - keys := make([]int, 0, len(e)) - for k := range e { - keys = append(keys, int(k)) - } - sort.Ints(keys) - ss := []string{} - for _, k := range keys { - ss = append(ss, strconv.Itoa(k)+": "+e[int32(k)].GoString()) - } - s += strings.Join(ss, ",") + "})" - return s -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion3 - -// Client API for Secrets service - -type SecretsClient interface { - // GetSecret returns a `GetSecretResponse` with a `Secret` with the same - // id as `GetSecretRequest.SecretID` - // - Returns `NotFound` if the Secret with the given id is not found. - // - Returns `InvalidArgument` if the `GetSecretRequest.SecretID` is empty. - // - Returns an error if getting fails. - GetSecret(ctx context.Context, in *GetSecretRequest, opts ...grpc.CallOption) (*GetSecretResponse, error) - // ListSecrets returns a `ListSecretResponse` with a list all non-internal `Secret`s being - // managed, or all secrets matching any name in `ListSecretsRequest.Names`, any - // name prefix in `ListSecretsRequest.NamePrefixes`, any id in - // `ListSecretsRequest.SecretIDs`, or any id prefix in `ListSecretsRequest.IDPrefixes`. - // - Returns an error if listing fails. - ListSecrets(ctx context.Context, in *ListSecretsRequest, opts ...grpc.CallOption) (*ListSecretsResponse, error) - // CreateSecret creates and return a `CreateSecretResponse` with a `Secret` based - // on the provided `CreateSecretRequest.SecretSpec`. - // - Returns `InvalidArgument` if the `CreateSecretRequest.SecretSpec` is malformed, - // or if the secret data is too long or contains invalid characters. - // - Returns `ResourceExhausted` if there are already the maximum number of allowed - // secrets in the system. - // - Returns an error if the creation fails. - CreateSecret(ctx context.Context, in *CreateSecretRequest, opts ...grpc.CallOption) (*CreateSecretResponse, error) - // RemoveSecret remove the secret referenced by `RemoveSecretRequest.ID`. - // - Returns `InvalidArgument` if `RemoveSecretRequest.ID` is empty. - // - Returns `NotFound` if the a secret named `RemoveSecretRequest.ID` is not found. - // - Returns an error if the deletion fails. - RemoveSecret(ctx context.Context, in *RemoveSecretRequest, opts ...grpc.CallOption) (*RemoveSecretResponse, error) -} - -type secretsClient struct { - cc *grpc.ClientConn -} - -func NewSecretsClient(cc *grpc.ClientConn) SecretsClient { - return &secretsClient{cc} -} - -func (c *secretsClient) GetSecret(ctx context.Context, in *GetSecretRequest, opts ...grpc.CallOption) (*GetSecretResponse, error) { - out := new(GetSecretResponse) - err := grpc.Invoke(ctx, "/docker.swarmkit.v1.Secrets/GetSecret", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *secretsClient) ListSecrets(ctx context.Context, in *ListSecretsRequest, opts ...grpc.CallOption) (*ListSecretsResponse, error) { - out := new(ListSecretsResponse) - err := grpc.Invoke(ctx, "/docker.swarmkit.v1.Secrets/ListSecrets", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *secretsClient) CreateSecret(ctx context.Context, in *CreateSecretRequest, opts ...grpc.CallOption) (*CreateSecretResponse, error) { - out := new(CreateSecretResponse) - err := grpc.Invoke(ctx, "/docker.swarmkit.v1.Secrets/CreateSecret", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *secretsClient) RemoveSecret(ctx context.Context, in *RemoveSecretRequest, opts ...grpc.CallOption) (*RemoveSecretResponse, error) { - out := new(RemoveSecretResponse) - err := grpc.Invoke(ctx, "/docker.swarmkit.v1.Secrets/RemoveSecret", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for Secrets service - -type SecretsServer interface { - // GetSecret returns a `GetSecretResponse` with a `Secret` with the same - // id as `GetSecretRequest.SecretID` - // - Returns `NotFound` if the Secret with the given id is not found. - // - Returns `InvalidArgument` if the `GetSecretRequest.SecretID` is empty. - // - Returns an error if getting fails. - GetSecret(context.Context, *GetSecretRequest) (*GetSecretResponse, error) - // ListSecrets returns a `ListSecretResponse` with a list all non-internal `Secret`s being - // managed, or all secrets matching any name in `ListSecretsRequest.Names`, any - // name prefix in `ListSecretsRequest.NamePrefixes`, any id in - // `ListSecretsRequest.SecretIDs`, or any id prefix in `ListSecretsRequest.IDPrefixes`. - // - Returns an error if listing fails. - ListSecrets(context.Context, *ListSecretsRequest) (*ListSecretsResponse, error) - // CreateSecret creates and return a `CreateSecretResponse` with a `Secret` based - // on the provided `CreateSecretRequest.SecretSpec`. - // - Returns `InvalidArgument` if the `CreateSecretRequest.SecretSpec` is malformed, - // or if the secret data is too long or contains invalid characters. - // - Returns `ResourceExhausted` if there are already the maximum number of allowed - // secrets in the system. - // - Returns an error if the creation fails. - CreateSecret(context.Context, *CreateSecretRequest) (*CreateSecretResponse, error) - // RemoveSecret remove the secret referenced by `RemoveSecretRequest.ID`. - // - Returns `InvalidArgument` if `RemoveSecretRequest.ID` is empty. - // - Returns `NotFound` if the a secret named `RemoveSecretRequest.ID` is not found. - // - Returns an error if the deletion fails. - RemoveSecret(context.Context, *RemoveSecretRequest) (*RemoveSecretResponse, error) -} - -func RegisterSecretsServer(s *grpc.Server, srv SecretsServer) { - s.RegisterService(&_Secrets_serviceDesc, srv) -} - -func _Secrets_GetSecret_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetSecretRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SecretsServer).GetSecret(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/docker.swarmkit.v1.Secrets/GetSecret", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SecretsServer).GetSecret(ctx, req.(*GetSecretRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Secrets_ListSecrets_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListSecretsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SecretsServer).ListSecrets(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/docker.swarmkit.v1.Secrets/ListSecrets", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SecretsServer).ListSecrets(ctx, req.(*ListSecretsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Secrets_CreateSecret_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateSecretRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SecretsServer).CreateSecret(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/docker.swarmkit.v1.Secrets/CreateSecret", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SecretsServer).CreateSecret(ctx, req.(*CreateSecretRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Secrets_RemoveSecret_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(RemoveSecretRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SecretsServer).RemoveSecret(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/docker.swarmkit.v1.Secrets/RemoveSecret", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SecretsServer).RemoveSecret(ctx, req.(*RemoveSecretRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _Secrets_serviceDesc = grpc.ServiceDesc{ - ServiceName: "docker.swarmkit.v1.Secrets", - HandlerType: (*SecretsServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "GetSecret", - Handler: _Secrets_GetSecret_Handler, - }, - { - MethodName: "ListSecrets", - Handler: _Secrets_ListSecrets_Handler, - }, - { - MethodName: "CreateSecret", - Handler: _Secrets_CreateSecret_Handler, - }, - { - MethodName: "RemoveSecret", - Handler: _Secrets_RemoveSecret_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: fileDescriptorSecrets, -} - -func (m *GetSecretRequest) Marshal() (data []byte, err error) { - size := m.Size() - data = make([]byte, size) - n, err := m.MarshalTo(data) - if err != nil { - return nil, err - } - return data[:n], nil -} - -func (m *GetSecretRequest) MarshalTo(data []byte) (int, error) { - var i int - _ = i - var l int - _ = l - if len(m.SecretID) > 0 { - data[i] = 0xa - i++ - i = encodeVarintSecrets(data, i, uint64(len(m.SecretID))) - i += copy(data[i:], m.SecretID) - } - return i, nil -} - -func (m *GetSecretResponse) Marshal() (data []byte, err error) { - size := m.Size() - data = make([]byte, size) - n, err := m.MarshalTo(data) - if err != nil { - return nil, err - } - return data[:n], nil -} - -func (m *GetSecretResponse) MarshalTo(data []byte) (int, error) { - var i int - _ = i - var l int - _ = l - if m.Secret != nil { - data[i] = 0xa - i++ - i = encodeVarintSecrets(data, i, uint64(m.Secret.Size())) - n1, err := m.Secret.MarshalTo(data[i:]) - if err != nil { - return 0, err - } - i += n1 - } - return i, nil -} - -func (m *ListSecretsRequest) Marshal() (data []byte, err error) { - size := m.Size() - data = make([]byte, size) - n, err := m.MarshalTo(data) - if err != nil { - return nil, err - } - return data[:n], nil -} - -func (m *ListSecretsRequest) MarshalTo(data []byte) (int, error) { - var i int - _ = i - var l int - _ = l - if m.Filters != nil { - data[i] = 0xa - i++ - i = encodeVarintSecrets(data, i, uint64(m.Filters.Size())) - n2, err := m.Filters.MarshalTo(data[i:]) - if err != nil { - return 0, err - } - i += n2 - } - return i, nil -} - -func (m *ListSecretsRequest_Filters) Marshal() (data []byte, err error) { - size := m.Size() - data = make([]byte, size) - n, err := m.MarshalTo(data) - if err != nil { - return nil, err - } - return data[:n], nil -} - -func (m *ListSecretsRequest_Filters) MarshalTo(data []byte) (int, error) { - var i int - _ = i - var l int - _ = l - if len(m.Ids) > 0 { - for _, s := range m.Ids { - data[i] = 0xa - i++ - l = len(s) - for l >= 1<<7 { - data[i] = uint8(uint64(l)&0x7f | 0x80) - l >>= 7 - i++ - } - data[i] = uint8(l) - i++ - i += copy(data[i:], s) - } - } - if len(m.IDPrefixes) > 0 { - for _, s := range m.IDPrefixes { - data[i] = 0x12 - i++ - l = len(s) - for l >= 1<<7 { - data[i] = uint8(uint64(l)&0x7f | 0x80) - l >>= 7 - i++ - } - data[i] = uint8(l) - i++ - i += copy(data[i:], s) - } - } - if len(m.Names) > 0 { - for _, s := range m.Names { - data[i] = 0x1a - i++ - l = len(s) - for l >= 1<<7 { - data[i] = uint8(uint64(l)&0x7f | 0x80) - l >>= 7 - i++ - } - data[i] = uint8(l) - i++ - i += copy(data[i:], s) - } - } - if len(m.NamePrefixes) > 0 { - for _, s := range m.NamePrefixes { - data[i] = 0x22 - i++ - l = len(s) - for l >= 1<<7 { - data[i] = uint8(uint64(l)&0x7f | 0x80) - l >>= 7 - i++ - } - data[i] = uint8(l) - i++ - i += copy(data[i:], s) - } - } - return i, nil -} - -func (m *ListSecretsResponse) Marshal() (data []byte, err error) { - size := m.Size() - data = make([]byte, size) - n, err := m.MarshalTo(data) - if err != nil { - return nil, err - } - return data[:n], nil -} - -func (m *ListSecretsResponse) MarshalTo(data []byte) (int, error) { - var i int - _ = i - var l int - _ = l - if len(m.Secrets) > 0 { - for _, msg := range m.Secrets { - data[i] = 0xa - i++ - i = encodeVarintSecrets(data, i, uint64(msg.Size())) - n, err := msg.MarshalTo(data[i:]) - if err != nil { - return 0, err - } - i += n - } - } - return i, nil -} - -func (m *CreateSecretRequest) Marshal() (data []byte, err error) { - size := m.Size() - data = make([]byte, size) - n, err := m.MarshalTo(data) - if err != nil { - return nil, err - } - return data[:n], nil -} - -func (m *CreateSecretRequest) MarshalTo(data []byte) (int, error) { - var i int - _ = i - var l int - _ = l - if m.Spec != nil { - data[i] = 0xa - i++ - i = encodeVarintSecrets(data, i, uint64(m.Spec.Size())) - n3, err := m.Spec.MarshalTo(data[i:]) - if err != nil { - return 0, err - } - i += n3 - } - return i, nil -} - -func (m *CreateSecretResponse) Marshal() (data []byte, err error) { - size := m.Size() - data = make([]byte, size) - n, err := m.MarshalTo(data) - if err != nil { - return nil, err - } - return data[:n], nil -} - -func (m *CreateSecretResponse) MarshalTo(data []byte) (int, error) { - var i int - _ = i - var l int - _ = l - if m.Secret != nil { - data[i] = 0xa - i++ - i = encodeVarintSecrets(data, i, uint64(m.Secret.Size())) - n4, err := m.Secret.MarshalTo(data[i:]) - if err != nil { - return 0, err - } - i += n4 - } - return i, nil -} - -func (m *RemoveSecretRequest) Marshal() (data []byte, err error) { - size := m.Size() - data = make([]byte, size) - n, err := m.MarshalTo(data) - if err != nil { - return nil, err - } - return data[:n], nil -} - -func (m *RemoveSecretRequest) MarshalTo(data []byte) (int, error) { - var i int - _ = i - var l int - _ = l - if len(m.SecretID) > 0 { - data[i] = 0xa - i++ - i = encodeVarintSecrets(data, i, uint64(len(m.SecretID))) - i += copy(data[i:], m.SecretID) - } - return i, nil -} - -func (m *RemoveSecretResponse) Marshal() (data []byte, err error) { - size := m.Size() - data = make([]byte, size) - n, err := m.MarshalTo(data) - if err != nil { - return nil, err - } - return data[:n], nil -} - -func (m *RemoveSecretResponse) MarshalTo(data []byte) (int, error) { - var i int - _ = i - var l int - _ = l - return i, nil -} - -func encodeFixed64Secrets(data []byte, offset int, v uint64) int { - data[offset] = uint8(v) - data[offset+1] = uint8(v >> 8) - data[offset+2] = uint8(v >> 16) - data[offset+3] = uint8(v >> 24) - data[offset+4] = uint8(v >> 32) - data[offset+5] = uint8(v >> 40) - data[offset+6] = uint8(v >> 48) - data[offset+7] = uint8(v >> 56) - return offset + 8 -} -func encodeFixed32Secrets(data []byte, offset int, v uint32) int { - data[offset] = uint8(v) - data[offset+1] = uint8(v >> 8) - data[offset+2] = uint8(v >> 16) - data[offset+3] = uint8(v >> 24) - return offset + 4 -} -func encodeVarintSecrets(data []byte, offset int, v uint64) int { - for v >= 1<<7 { - data[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - data[offset] = uint8(v) - return offset + 1 -} - -type raftProxySecretsServer struct { - local SecretsServer - connSelector raftselector.ConnProvider - ctxMods []func(context.Context) (context.Context, error) -} - -func NewRaftProxySecretsServer(local SecretsServer, connSelector raftselector.ConnProvider, ctxMod func(context.Context) (context.Context, error)) SecretsServer { - redirectChecker := func(ctx context.Context) (context.Context, error) { - s, ok := transport.StreamFromContext(ctx) - if !ok { - return ctx, grpc.Errorf(codes.InvalidArgument, "remote addr is not found in context") - } - addr := s.ServerTransport().RemoteAddr().String() - md, ok := metadata.FromContext(ctx) - if ok && len(md["redirect"]) != 0 { - return ctx, grpc.Errorf(codes.ResourceExhausted, "more than one redirect to leader from: %s", md["redirect"]) - } - if !ok { - md = metadata.New(map[string]string{}) - } - md["redirect"] = append(md["redirect"], addr) - return metadata.NewContext(ctx, md), nil - } - mods := []func(context.Context) (context.Context, error){redirectChecker} - mods = append(mods, ctxMod) - - return &raftProxySecretsServer{ - local: local, - connSelector: connSelector, - ctxMods: mods, - } -} -func (p *raftProxySecretsServer) runCtxMods(ctx context.Context) (context.Context, error) { - var err error - for _, mod := range p.ctxMods { - ctx, err = mod(ctx) - if err != nil { - return ctx, err - } - } - return ctx, nil -} -func (p *raftProxySecretsServer) pollNewLeaderConn(ctx context.Context) (*grpc.ClientConn, error) { - ticker := time.NewTicker(500 * time.Millisecond) - defer ticker.Stop() - for { - select { - case <-ticker.C: - conn, err := p.connSelector.LeaderConn(ctx) - if err != nil { - return nil, err - } - - client := NewHealthClient(conn) - - resp, err := client.Check(ctx, &HealthCheckRequest{Service: "Raft"}) - if err != nil || resp.Status != HealthCheckResponse_SERVING { - continue - } - return conn, nil - case <-ctx.Done(): - return nil, ctx.Err() - } - } -} - -func (p *raftProxySecretsServer) GetSecret(ctx context.Context, r *GetSecretRequest) (*GetSecretResponse, error) { - - conn, err := p.connSelector.LeaderConn(ctx) - if err != nil { - if err == raftselector.ErrIsLeader { - return p.local.GetSecret(ctx, r) - } - return nil, err - } - modCtx, err := p.runCtxMods(ctx) - if err != nil { - return nil, err - } - - resp, err := NewSecretsClient(conn).GetSecret(modCtx, r) - if err != nil { - if !strings.Contains(err.Error(), "is closing") && !strings.Contains(err.Error(), "the connection is unavailable") && !strings.Contains(err.Error(), "connection error") { - return resp, err - } - conn, err := p.pollNewLeaderConn(ctx) - if err != nil { - if err == raftselector.ErrIsLeader { - return p.local.GetSecret(ctx, r) - } - return nil, err - } - return NewSecretsClient(conn).GetSecret(modCtx, r) - } - return resp, err -} - -func (p *raftProxySecretsServer) ListSecrets(ctx context.Context, r *ListSecretsRequest) (*ListSecretsResponse, error) { - - conn, err := p.connSelector.LeaderConn(ctx) - if err != nil { - if err == raftselector.ErrIsLeader { - return p.local.ListSecrets(ctx, r) - } - return nil, err - } - modCtx, err := p.runCtxMods(ctx) - if err != nil { - return nil, err - } - - resp, err := NewSecretsClient(conn).ListSecrets(modCtx, r) - if err != nil { - if !strings.Contains(err.Error(), "is closing") && !strings.Contains(err.Error(), "the connection is unavailable") && !strings.Contains(err.Error(), "connection error") { - return resp, err - } - conn, err := p.pollNewLeaderConn(ctx) - if err != nil { - if err == raftselector.ErrIsLeader { - return p.local.ListSecrets(ctx, r) - } - return nil, err - } - return NewSecretsClient(conn).ListSecrets(modCtx, r) - } - return resp, err -} - -func (p *raftProxySecretsServer) CreateSecret(ctx context.Context, r *CreateSecretRequest) (*CreateSecretResponse, error) { - - conn, err := p.connSelector.LeaderConn(ctx) - if err != nil { - if err == raftselector.ErrIsLeader { - return p.local.CreateSecret(ctx, r) - } - return nil, err - } - modCtx, err := p.runCtxMods(ctx) - if err != nil { - return nil, err - } - - resp, err := NewSecretsClient(conn).CreateSecret(modCtx, r) - if err != nil { - if !strings.Contains(err.Error(), "is closing") && !strings.Contains(err.Error(), "the connection is unavailable") && !strings.Contains(err.Error(), "connection error") { - return resp, err - } - conn, err := p.pollNewLeaderConn(ctx) - if err != nil { - if err == raftselector.ErrIsLeader { - return p.local.CreateSecret(ctx, r) - } - return nil, err - } - return NewSecretsClient(conn).CreateSecret(modCtx, r) - } - return resp, err -} - -func (p *raftProxySecretsServer) RemoveSecret(ctx context.Context, r *RemoveSecretRequest) (*RemoveSecretResponse, error) { - - conn, err := p.connSelector.LeaderConn(ctx) - if err != nil { - if err == raftselector.ErrIsLeader { - return p.local.RemoveSecret(ctx, r) - } - return nil, err - } - modCtx, err := p.runCtxMods(ctx) - if err != nil { - return nil, err - } - - resp, err := NewSecretsClient(conn).RemoveSecret(modCtx, r) - if err != nil { - if !strings.Contains(err.Error(), "is closing") && !strings.Contains(err.Error(), "the connection is unavailable") && !strings.Contains(err.Error(), "connection error") { - return resp, err - } - conn, err := p.pollNewLeaderConn(ctx) - if err != nil { - if err == raftselector.ErrIsLeader { - return p.local.RemoveSecret(ctx, r) - } - return nil, err - } - return NewSecretsClient(conn).RemoveSecret(modCtx, r) - } - return resp, err -} - -func (m *GetSecretRequest) Size() (n int) { - var l int - _ = l - l = len(m.SecretID) - if l > 0 { - n += 1 + l + sovSecrets(uint64(l)) - } - return n -} - -func (m *GetSecretResponse) Size() (n int) { - var l int - _ = l - if m.Secret != nil { - l = m.Secret.Size() - n += 1 + l + sovSecrets(uint64(l)) - } - return n -} - -func (m *ListSecretsRequest) Size() (n int) { - var l int - _ = l - if m.Filters != nil { - l = m.Filters.Size() - n += 1 + l + sovSecrets(uint64(l)) - } - return n -} - -func (m *ListSecretsRequest_Filters) Size() (n int) { - var l int - _ = l - if len(m.Ids) > 0 { - for _, s := range m.Ids { - l = len(s) - n += 1 + l + sovSecrets(uint64(l)) - } - } - if len(m.IDPrefixes) > 0 { - for _, s := range m.IDPrefixes { - l = len(s) - n += 1 + l + sovSecrets(uint64(l)) - } - } - if len(m.Names) > 0 { - for _, s := range m.Names { - l = len(s) - n += 1 + l + sovSecrets(uint64(l)) - } - } - if len(m.NamePrefixes) > 0 { - for _, s := range m.NamePrefixes { - l = len(s) - n += 1 + l + sovSecrets(uint64(l)) - } - } - return n -} - -func (m *ListSecretsResponse) Size() (n int) { - var l int - _ = l - if len(m.Secrets) > 0 { - for _, e := range m.Secrets { - l = e.Size() - n += 1 + l + sovSecrets(uint64(l)) - } - } - return n -} - -func (m *CreateSecretRequest) Size() (n int) { - var l int - _ = l - if m.Spec != nil { - l = m.Spec.Size() - n += 1 + l + sovSecrets(uint64(l)) - } - return n -} - -func (m *CreateSecretResponse) Size() (n int) { - var l int - _ = l - if m.Secret != nil { - l = m.Secret.Size() - n += 1 + l + sovSecrets(uint64(l)) - } - return n -} - -func (m *RemoveSecretRequest) Size() (n int) { - var l int - _ = l - l = len(m.SecretID) - if l > 0 { - n += 1 + l + sovSecrets(uint64(l)) - } - return n -} - -func (m *RemoveSecretResponse) Size() (n int) { - var l int - _ = l - return n -} - -func sovSecrets(x uint64) (n int) { - for { - n++ - x >>= 7 - if x == 0 { - break - } - } - return n -} -func sozSecrets(x uint64) (n int) { - return sovSecrets(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (this *GetSecretRequest) String() string { - if this == nil { - return "nil" - } - s := strings.Join([]string{`&GetSecretRequest{`, - `SecretID:` + fmt.Sprintf("%v", this.SecretID) + `,`, - `}`, - }, "") - return s -} -func (this *GetSecretResponse) String() string { - if this == nil { - return "nil" - } - s := strings.Join([]string{`&GetSecretResponse{`, - `Secret:` + strings.Replace(fmt.Sprintf("%v", this.Secret), "Secret", "Secret", 1) + `,`, - `}`, - }, "") - return s -} -func (this *ListSecretsRequest) String() string { - if this == nil { - return "nil" - } - s := strings.Join([]string{`&ListSecretsRequest{`, - `Filters:` + strings.Replace(fmt.Sprintf("%v", this.Filters), "ListSecretsRequest_Filters", "ListSecretsRequest_Filters", 1) + `,`, - `}`, - }, "") - return s -} -func (this *ListSecretsRequest_Filters) String() string { - if this == nil { - return "nil" - } - s := strings.Join([]string{`&ListSecretsRequest_Filters{`, - `Ids:` + fmt.Sprintf("%v", this.Ids) + `,`, - `IDPrefixes:` + fmt.Sprintf("%v", this.IDPrefixes) + `,`, - `Names:` + fmt.Sprintf("%v", this.Names) + `,`, - `NamePrefixes:` + fmt.Sprintf("%v", this.NamePrefixes) + `,`, - `}`, - }, "") - return s -} -func (this *ListSecretsResponse) String() string { - if this == nil { - return "nil" - } - s := strings.Join([]string{`&ListSecretsResponse{`, - `Secrets:` + strings.Replace(fmt.Sprintf("%v", this.Secrets), "Secret", "Secret", 1) + `,`, - `}`, - }, "") - return s -} -func (this *CreateSecretRequest) String() string { - if this == nil { - return "nil" - } - s := strings.Join([]string{`&CreateSecretRequest{`, - `Spec:` + strings.Replace(fmt.Sprintf("%v", this.Spec), "SecretSpec", "SecretSpec", 1) + `,`, - `}`, - }, "") - return s -} -func (this *CreateSecretResponse) String() string { - if this == nil { - return "nil" - } - s := strings.Join([]string{`&CreateSecretResponse{`, - `Secret:` + strings.Replace(fmt.Sprintf("%v", this.Secret), "Secret", "Secret", 1) + `,`, - `}`, - }, "") - return s -} -func (this *RemoveSecretRequest) String() string { - if this == nil { - return "nil" - } - s := strings.Join([]string{`&RemoveSecretRequest{`, - `SecretID:` + fmt.Sprintf("%v", this.SecretID) + `,`, - `}`, - }, "") - return s -} -func (this *RemoveSecretResponse) String() string { - if this == nil { - return "nil" - } - s := strings.Join([]string{`&RemoveSecretResponse{`, - `}`, - }, "") - return s -} -func valueToStringSecrets(v interface{}) string { - rv := reflect.ValueOf(v) - if rv.IsNil() { - return "nil" - } - pv := reflect.Indirect(rv).Interface() - return fmt.Sprintf("*%v", pv) -} -func (m *GetSecretRequest) Unmarshal(data []byte) error { - l := len(data) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSecrets - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: GetSecretRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: GetSecretRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SecretID", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSecrets - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthSecrets - } - postIndex := iNdEx + intStringLen - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.SecretID = string(data[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipSecrets(data[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthSecrets - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *GetSecretResponse) Unmarshal(data []byte) error { - l := len(data) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSecrets - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: GetSecretResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: GetSecretResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Secret", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSecrets - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - msglen |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthSecrets - } - postIndex := iNdEx + msglen - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Secret == nil { - m.Secret = &Secret{} - } - if err := m.Secret.Unmarshal(data[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipSecrets(data[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthSecrets - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *ListSecretsRequest) Unmarshal(data []byte) error { - l := len(data) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSecrets - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: ListSecretsRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ListSecretsRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Filters", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSecrets - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - msglen |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthSecrets - } - postIndex := iNdEx + msglen - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Filters == nil { - m.Filters = &ListSecretsRequest_Filters{} - } - if err := m.Filters.Unmarshal(data[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipSecrets(data[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthSecrets - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *ListSecretsRequest_Filters) Unmarshal(data []byte) error { - l := len(data) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSecrets - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Filters: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Filters: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Ids", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSecrets - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthSecrets - } - postIndex := iNdEx + intStringLen - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Ids = append(m.Ids, string(data[iNdEx:postIndex])) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field IDPrefixes", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSecrets - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthSecrets - } - postIndex := iNdEx + intStringLen - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.IDPrefixes = append(m.IDPrefixes, string(data[iNdEx:postIndex])) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Names", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSecrets - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthSecrets - } - postIndex := iNdEx + intStringLen - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Names = append(m.Names, string(data[iNdEx:postIndex])) - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field NamePrefixes", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSecrets - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthSecrets - } - postIndex := iNdEx + intStringLen - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.NamePrefixes = append(m.NamePrefixes, string(data[iNdEx:postIndex])) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipSecrets(data[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthSecrets - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *ListSecretsResponse) Unmarshal(data []byte) error { - l := len(data) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSecrets - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: ListSecretsResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ListSecretsResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Secrets", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSecrets - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - msglen |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthSecrets - } - postIndex := iNdEx + msglen - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Secrets = append(m.Secrets, &Secret{}) - if err := m.Secrets[len(m.Secrets)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipSecrets(data[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthSecrets - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *CreateSecretRequest) Unmarshal(data []byte) error { - l := len(data) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSecrets - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: CreateSecretRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: CreateSecretRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSecrets - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - msglen |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthSecrets - } - postIndex := iNdEx + msglen - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Spec == nil { - m.Spec = &SecretSpec{} - } - if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipSecrets(data[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthSecrets - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *CreateSecretResponse) Unmarshal(data []byte) error { - l := len(data) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSecrets - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: CreateSecretResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: CreateSecretResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Secret", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSecrets - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - msglen |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthSecrets - } - postIndex := iNdEx + msglen - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Secret == nil { - m.Secret = &Secret{} - } - if err := m.Secret.Unmarshal(data[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipSecrets(data[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthSecrets - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *RemoveSecretRequest) Unmarshal(data []byte) error { - l := len(data) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSecrets - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: RemoveSecretRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: RemoveSecretRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SecretID", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSecrets - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthSecrets - } - postIndex := iNdEx + intStringLen - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.SecretID = string(data[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipSecrets(data[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthSecrets - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *RemoveSecretResponse) Unmarshal(data []byte) error { - l := len(data) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSecrets - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: RemoveSecretResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: RemoveSecretResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipSecrets(data[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthSecrets - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func skipSecrets(data []byte) (n int, err error) { - l := len(data) - iNdEx := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowSecrets - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowSecrets - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if data[iNdEx-1] < 0x80 { - break - } - } - return iNdEx, nil - case 1: - iNdEx += 8 - return iNdEx, nil - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowSecrets - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - iNdEx += length - if length < 0 { - return 0, ErrInvalidLengthSecrets - } - return iNdEx, nil - case 3: - for { - var innerWire uint64 - var start int = iNdEx - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowSecrets - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - innerWire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - innerWireType := int(innerWire & 0x7) - if innerWireType == 4 { - break - } - next, err := skipSecrets(data[start:]) - if err != nil { - return 0, err - } - iNdEx = start + next - } - return iNdEx, nil - case 4: - return iNdEx, nil - case 5: - iNdEx += 4 - return iNdEx, nil - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } - } - panic("unreachable") -} - -var ( - ErrInvalidLengthSecrets = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowSecrets = fmt.Errorf("proto: integer overflow") -) - -func init() { proto.RegisterFile("secrets.proto", fileDescriptorSecrets) } - -var fileDescriptorSecrets = []byte{ - // 508 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xa4, 0x54, 0xcd, 0x6e, 0xd3, 0x40, - 0x10, 0xee, 0x36, 0xa5, 0x69, 0x26, 0x09, 0x94, 0x4d, 0x40, 0x91, 0x85, 0x5c, 0x64, 0xfe, 0xc2, - 0x01, 0x47, 0x04, 0xae, 0x48, 0x28, 0x54, 0x94, 0x00, 0x07, 0xe4, 0x3e, 0x40, 0xe5, 0xda, 0xd3, - 0x68, 0x69, 0x93, 0x35, 0xbb, 0x4e, 0xe9, 0x91, 0x1b, 0xaf, 0xc0, 0x53, 0xf0, 0x1c, 0x15, 0x27, - 0x8e, 0x9c, 0x2a, 0x62, 0x09, 0x89, 0x13, 0xe2, 0x11, 0x90, 0x77, 0xd7, 0x90, 0xd0, 0x6d, 0x82, - 0xe8, 0x29, 0x93, 0xd9, 0xef, 0x67, 0x34, 0xdf, 0xc8, 0x50, 0x97, 0x18, 0x09, 0x4c, 0xa5, 0x9f, - 0x08, 0x9e, 0x72, 0x4a, 0x63, 0x1e, 0xed, 0xa3, 0xf0, 0xe5, 0xdb, 0x50, 0x0c, 0xf7, 0x59, 0xea, - 0x1f, 0xde, 0x77, 0xaa, 0x32, 0xc1, 0xc8, 0x00, 0x9c, 0x3a, 0xdf, 0x7d, 0x8d, 0x51, 0x81, 0x77, - 0x1a, 0xc9, 0xc1, 0x78, 0xc0, 0x46, 0x1d, 0xfd, 0x63, 0x9a, 0xcd, 0x01, 0x1f, 0x70, 0x55, 0x76, - 0xf2, 0x4a, 0x77, 0xbd, 0x47, 0xb0, 0xbe, 0x85, 0xe9, 0xb6, 0xb2, 0x0b, 0xf0, 0xcd, 0x18, 0x65, - 0x4a, 0xef, 0x42, 0x45, 0xfb, 0xef, 0xb0, 0xb8, 0x45, 0xae, 0x93, 0x76, 0xa5, 0x57, 0xcb, 0x4e, - 0x36, 0xd6, 0x34, 0xaa, 0xbf, 0x19, 0xac, 0xe9, 0xe7, 0x7e, 0xec, 0x6d, 0xc1, 0xe5, 0x29, 0xba, - 0x4c, 0xf8, 0x48, 0x22, 0xed, 0xc2, 0xaa, 0x06, 0x28, 0x72, 0xb5, 0xeb, 0xf8, 0xa7, 0xe7, 0xf7, - 0x0d, 0xc7, 0x20, 0xbd, 0xef, 0x04, 0xe8, 0x4b, 0x26, 0x8d, 0x94, 0x2c, 0x46, 0x79, 0x06, 0xe5, - 0x3d, 0x76, 0x90, 0xa2, 0x90, 0x46, 0xcb, 0xb7, 0x69, 0x9d, 0x26, 0xfa, 0x4f, 0x35, 0x2b, 0x28, - 0xe8, 0xce, 0x7b, 0x02, 0x65, 0xd3, 0xa4, 0xeb, 0x50, 0x62, 0x71, 0xae, 0x58, 0x6a, 0x57, 0x82, - 0xbc, 0xa4, 0x1d, 0xa8, 0xb2, 0x78, 0x27, 0x11, 0xb8, 0xc7, 0x8e, 0x50, 0xb6, 0x96, 0xf3, 0x97, - 0xde, 0xc5, 0xec, 0x64, 0x03, 0xfa, 0x9b, 0xaf, 0x4c, 0x37, 0x00, 0x16, 0x17, 0x35, 0x6d, 0xc2, - 0x85, 0x51, 0x38, 0x44, 0xd9, 0x2a, 0x29, 0x11, 0xfd, 0x87, 0xde, 0x80, 0x7a, 0x5e, 0xfc, 0x11, - 0x5a, 0x51, 0xaf, 0xb5, 0xbc, 0x59, 0x50, 0xbd, 0x17, 0xd0, 0x98, 0x19, 0xd8, 0x6c, 0xed, 0x21, - 0x94, 0x4d, 0xea, 0x6a, 0xb0, 0xf9, 0x6b, 0x2b, 0xa0, 0x5e, 0x1f, 0x1a, 0x4f, 0x04, 0x86, 0x29, - 0xce, 0x46, 0xd8, 0x85, 0x95, 0xfc, 0x3e, 0xcc, 0xd2, 0xdc, 0xb3, 0x95, 0xb6, 0x13, 0x8c, 0x02, - 0x85, 0xf5, 0x9e, 0x43, 0x73, 0x56, 0xea, 0x1c, 0x71, 0x3e, 0x86, 0x46, 0x80, 0x43, 0x7e, 0x88, - 0xff, 0x7d, 0x59, 0x57, 0xa1, 0x39, 0xab, 0xa0, 0xa7, 0xe9, 0x7e, 0x2b, 0x41, 0xd9, 0xac, 0x8e, - 0x72, 0xa8, 0xfc, 0xbe, 0x3e, 0x7a, 0xd3, 0x36, 0xd6, 0xdf, 0xb7, 0xed, 0xdc, 0x5a, 0x80, 0xd2, - 0x2e, 0xde, 0x95, 0x4f, 0x1f, 0x7f, 0x7c, 0x58, 0xbe, 0x04, 0x75, 0x05, 0xbb, 0x37, 0x0c, 0x47, - 0xe1, 0x00, 0x05, 0x1d, 0x43, 0x75, 0x2a, 0x3a, 0x7a, 0xfb, 0xdf, 0x8e, 0xd1, 0xb9, 0xb3, 0x10, - 0x37, 0xdf, 0xf6, 0x08, 0x6a, 0xd3, 0xc9, 0x50, 0xab, 0x9e, 0xe5, 0x0c, 0x9c, 0xf6, 0x62, 0xe0, - 0x42, 0xe7, 0xe9, 0x14, 0xec, 0xce, 0x96, 0xa4, 0xed, 0xce, 0xb6, 0x40, 0xcf, 0x70, 0xee, 0x5d, - 0x3b, 0x9e, 0xb8, 0x4b, 0x5f, 0x26, 0xee, 0xd2, 0xcf, 0x89, 0x4b, 0xde, 0x65, 0x2e, 0x39, 0xce, - 0x5c, 0xf2, 0x39, 0x73, 0xc9, 0xd7, 0xcc, 0x25, 0xbb, 0xab, 0xea, 0xeb, 0xf5, 0xe0, 0x57, 0x00, - 0x00, 0x00, 0xff, 0xff, 0xc1, 0x67, 0x9d, 0x75, 0x29, 0x05, 0x00, 0x00, -} diff --git a/api/secrets.proto b/api/secrets.proto deleted file mode 100644 index 79bd6251cf..0000000000 --- a/api/secrets.proto +++ /dev/null @@ -1,106 +0,0 @@ -syntax = "proto3"; - -package docker.swarmkit.v1; - -import "specs.proto"; -import "objects.proto"; -import "plugin/plugin.proto"; -import "gogoproto/gogo.proto"; - -// Secrets defines the RPC methods for managing/controlling secrets in a cluster. -service Secrets { - // GetSecret returns a `GetSecretResponse` with a `Secret` with the same - // id as `GetSecretRequest.SecretID` - // - Returns `NotFound` if the Secret with the given id is not found. - // - Returns `InvalidArgument` if the `GetSecretRequest.SecretID` is empty. - // - Returns an error if getting fails. - rpc GetSecret(GetSecretRequest) returns (GetSecretResponse) { - option (docker.protobuf.plugin.tls_authorization) = { roles: "swarm-manager" }; - } - - // ListSecrets returns a `ListSecretResponse` with a list all non-internal `Secret`s being - // managed, or all secrets matching any name in `ListSecretsRequest.Names`, any - // name prefix in `ListSecretsRequest.NamePrefixes`, any id in - // `ListSecretsRequest.SecretIDs`, or any id prefix in `ListSecretsRequest.IDPrefixes`. - // - Returns an error if listing fails. - rpc ListSecrets(ListSecretsRequest) returns (ListSecretsResponse) { - option (docker.protobuf.plugin.tls_authorization) = { roles: "swarm-manager" }; - } - // CreateSecret creates and return a `CreateSecretResponse` with a `Secret` based - // on the provided `CreateSecretRequest.SecretSpec`. - // - Returns `InvalidArgument` if the `CreateSecretRequest.SecretSpec` is malformed, - // or if the secret data is too long or contains invalid characters. - // - Returns `ResourceExhausted` if there are already the maximum number of allowed - // secrets in the system. - // - Returns an error if the creation fails. - rpc CreateSecret(CreateSecretRequest) returns (CreateSecretResponse) { - option (docker.protobuf.plugin.tls_authorization) = { roles: "swarm-manager" }; - } - - // RemoveSecret remove the secret referenced by `RemoveSecretRequest.ID`. - // - Returns `InvalidArgument` if `RemoveSecretRequest.ID` is empty. - // - Returns `NotFound` if the a secret named `RemoveSecretRequest.ID` is not found. - // - Returns an error if the deletion fails. - rpc RemoveSecret(RemoveSecretRequest) returns (RemoveSecretResponse) { - option (docker.protobuf.plugin.tls_authorization) = { roles: "swarm-manager" }; - } -} - -// GetSecretRequest is the request to get a `Secret` object given a secret id. -message GetSecretRequest { - string secret_id = 1 [(gogoproto.customname) = "SecretID"]; -} - -// GetSecretResponse contains the Secret corresponding to the id in -// `GetSecretRequest`, but the `SecretValue.Spec.Data` field in each `SecretValue` -// object in the `Secret` should be nil instead of actually containing -// the secret bytes. -message GetSecretResponse { - Secret secret = 1; -} - -// ListSecretRequest is the request to list all non-internal secrets in the secret store, -// or all secrets filtered by (id or id prefix or name or name prefix). -message ListSecretsRequest { - message Filters { - repeated string ids = 1; - repeated string id_prefixes = 2 [(gogoproto.customname) = "IDPrefixes"]; - repeated string names = 3; - repeated string name_prefixes = 4; - } - - Filters filters = 1; -} - -// ListSecretResponse contains a list of all the secrets that match the name or -// name prefix filters provided in `ListSecretRequest`. The `SecretValue.Spec.Data` -// field in each `SecretValue` object in each `Secret` should be nil instead of -// actually containing the secret bytes. -message ListSecretsResponse { - repeated Secret secrets = 1; -} - -// CreateSecretRequest specifies a new secret (it will not update an existing -// secret) to create. -message CreateSecretRequest { - SecretSpec spec = 1; -} - -// CreateSecretResponse contains the newly created `Secret`` corresponding to the -// name in `CreateSecretRequest`. Since it's a new secret, there should just be -// the one version, and hence only one `SecretValue` object in the `Secret`. -// The `SecretValue.Spec.Data` field should be nil instead of actually -// containing the secret bytes. -message CreateSecretResponse { - Secret secret = 1; -} - -// RemoveSecretRequest contains the ID of the secret that should be removed. This -// removes all versions of the secret. -message RemoveSecretRequest { - string secret_id = 1 [(gogoproto.customname) = "SecretID"]; -} - -// RemoveSecretResponse is an empty object indicating the successful removal of -// a secret. -message RemoveSecretResponse {} diff --git a/api/specs.pb.go b/api/specs.pb.go index dbcfeec6a0..88b9d93d2d 100644 --- a/api/specs.pb.go +++ b/api/specs.pb.go @@ -9,7 +9,6 @@ import fmt "fmt" import math "math" import _ "github.com/gogo/protobuf/gogoproto" import docker_swarmkit_v11 "github.com/docker/swarmkit/api/duration" -import docker_swarmkit_v1 "github.com/docker/swarmkit/api/timestamp" import strings "strings" import github_com_gogo_protobuf_proto "github.com/gogo/protobuf/proto" @@ -567,8 +566,6 @@ type SecretSpec struct { Annotations Annotations `protobuf:"bytes,1,opt,name=annotations" json:"annotations"` // Secret payload. Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` - // When this secret-spec should expire and no longer be available - Expiry *docker_swarmkit_v1.Timestamp `protobuf:"bytes,3,opt,name=expiry" json:"expiry,omitempty"` } func (m *SecretSpec) Reset() { *m = SecretSpec{} } @@ -856,7 +853,6 @@ func (m *SecretSpec) Copy() *SecretSpec { o := &SecretSpec{ Annotations: *m.Annotations.Copy(), Data: m.Data, - Expiry: m.Expiry.Copy(), } return o @@ -1090,13 +1086,10 @@ func (this *SecretSpec) GoString() string { if this == nil { return "nil" } - s := make([]string, 0, 7) + s := make([]string, 0, 6) s = append(s, "&api.SecretSpec{") s = append(s, "Annotations: "+strings.Replace(this.Annotations.GoString(), `&`, ``, 1)+",\n") s = append(s, "Data: "+fmt.Sprintf("%#v", this.Data)+",\n") - if this.Expiry != nil { - s = append(s, "Expiry: "+fmt.Sprintf("%#v", this.Expiry)+",\n") - } s = append(s, "}") return strings.Join(s, "") } @@ -1843,16 +1836,6 @@ func (m *SecretSpec) MarshalTo(data []byte) (int, error) { i = encodeVarintSpecs(data, i, uint64(len(m.Data))) i += copy(data[i:], m.Data) } - if m.Expiry != nil { - data[i] = 0x1a - i++ - i = encodeVarintSpecs(data, i, uint64(m.Expiry.Size())) - n30, err := m.Expiry.MarshalTo(data[i:]) - if err != nil { - return 0, err - } - i += n30 - } return i, nil } @@ -2171,10 +2154,6 @@ func (m *SecretSpec) Size() (n int) { if l > 0 { n += 1 + l + sovSpecs(uint64(l)) } - if m.Expiry != nil { - l = m.Expiry.Size() - n += 1 + l + sovSpecs(uint64(l)) - } return n } @@ -2394,7 +2373,6 @@ func (this *SecretSpec) String() string { s := strings.Join([]string{`&SecretSpec{`, `Annotations:` + strings.Replace(strings.Replace(this.Annotations.String(), "Annotations", "Annotations", 1), `&`, ``, 1) + `,`, `Data:` + fmt.Sprintf("%v", this.Data) + `,`, - `Expiry:` + strings.Replace(fmt.Sprintf("%v", this.Expiry), "Timestamp", "docker_swarmkit_v1.Timestamp", 1) + `,`, `}`, }, "") return s @@ -4552,39 +4530,6 @@ func (m *SecretSpec) Unmarshal(data []byte) error { m.Data = []byte{} } iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Expiry", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSpecs - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - msglen |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthSpecs - } - postIndex := iNdEx + msglen - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Expiry == nil { - m.Expiry = &docker_swarmkit_v1.Timestamp{} - } - if err := m.Expiry.Unmarshal(data[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipSpecs(data[iNdEx:]) @@ -4714,99 +4659,97 @@ var ( func init() { proto.RegisterFile("specs.proto", fileDescriptorSpecs) } var fileDescriptorSpecs = []byte{ - // 1491 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x57, 0x4f, 0x6f, 0xdb, 0x46, - 0x16, 0x17, 0x6d, 0x5a, 0x96, 0x1e, 0xe5, 0x44, 0x19, 0xe4, 0x0f, 0xa3, 0x64, 0x65, 0x45, 0xc9, - 0x66, 0x9d, 0x5d, 0xac, 0xbd, 0xab, 0xdd, 0xcd, 0x26, 0x9b, 0x0d, 0x76, 0xf5, 0xaf, 0x8e, 0xea, - 0xda, 0x11, 0xc6, 0x4e, 0x80, 0x9e, 0x84, 0x31, 0x39, 0x96, 0x09, 0x53, 0x24, 0x3b, 0x1c, 0x2a, - 0xf5, 0xad, 0xc7, 0xc0, 0x87, 0x7e, 0x03, 0x03, 0x05, 0xfa, 0x19, 0xfa, 0x1d, 0x72, 0xec, 0xb1, - 0x27, 0xa3, 0xf6, 0xad, 0x28, 0x0a, 0x14, 0xe8, 0x17, 0x28, 0x66, 0x38, 0x94, 0xa8, 0x86, 0x4e, - 0x02, 0xd4, 0xb7, 0x99, 0x37, 0xbf, 0xdf, 0x9b, 0xc7, 0xf7, 0x7e, 0x7a, 0xf3, 0x04, 0x46, 0x18, - 0x50, 0x2b, 0x5c, 0x0d, 0x98, 0xcf, 0x7d, 0x84, 0x6c, 0xdf, 0x3a, 0xa0, 0x6c, 0x35, 0x7c, 0x45, - 0xd8, 0xe8, 0xc0, 0xe1, 0xab, 0xe3, 0xbf, 0x57, 0x0c, 0x7e, 0x18, 0x50, 0x05, 0xa8, 0x5c, 0x1d, - 0xfa, 0x43, 0x5f, 0x2e, 0xd7, 0xc4, 0x4a, 0x59, 0x6f, 0xd8, 0x11, 0x23, 0xdc, 0xf1, 0xbd, 0xb5, - 0x64, 0xa1, 0x0e, 0x6e, 0x72, 0x67, 0x44, 0x43, 0x4e, 0x46, 0xc1, 0xda, 0x64, 0x15, 0x1f, 0xd5, - 0xbf, 0xd4, 0xa1, 0xb0, 0xe5, 0xdb, 0x74, 0x3b, 0xa0, 0x16, 0x5a, 0x07, 0x83, 0x78, 0x9e, 0xcf, - 0x25, 0x37, 0x34, 0xb5, 0x9a, 0xb6, 0x62, 0x34, 0x96, 0x57, 0xdf, 0x8e, 0x66, 0xb5, 0x39, 0x85, - 0xb5, 0xf4, 0x37, 0x27, 0xcb, 0x39, 0x9c, 0x66, 0xa2, 0xbf, 0x81, 0xce, 0x7c, 0x97, 0x9a, 0x73, - 0x35, 0x6d, 0xe5, 0x52, 0xe3, 0x76, 0x96, 0x07, 0x71, 0x29, 0xf6, 0x5d, 0x8a, 0x25, 0x12, 0xad, - 0x03, 0x8c, 0xe8, 0x68, 0x97, 0xb2, 0x70, 0xdf, 0x09, 0xcc, 0x79, 0xc9, 0xfb, 0xd3, 0x79, 0x3c, - 0x11, 0xec, 0xea, 0xe6, 0x04, 0x8e, 0x53, 0x54, 0xb4, 0x09, 0x25, 0x32, 0x26, 0x8e, 0x4b, 0x76, - 0x1d, 0xd7, 0xe1, 0x87, 0xa6, 0x2e, 0x5d, 0x3d, 0x78, 0xa7, 0xab, 0x66, 0x8a, 0x80, 0x67, 0xe8, - 0x75, 0x1b, 0x60, 0x7a, 0x11, 0xba, 0x0f, 0x8b, 0xfd, 0xee, 0x56, 0xa7, 0xb7, 0xb5, 0x5e, 0xce, - 0x55, 0x6e, 0x1e, 0x1d, 0xd7, 0xae, 0x09, 0x1f, 0x53, 0x40, 0x9f, 0x7a, 0xb6, 0xe3, 0x0d, 0xd1, - 0x0a, 0x14, 0x9a, 0xed, 0x76, 0xb7, 0xbf, 0xd3, 0xed, 0x94, 0xb5, 0x4a, 0xe5, 0xe8, 0xb8, 0x76, - 0x7d, 0x16, 0xd8, 0xb4, 0x2c, 0x1a, 0x70, 0x6a, 0x57, 0xf4, 0xd7, 0x5f, 0x57, 0x73, 0xf5, 0xd7, - 0x1a, 0x94, 0xd2, 0x41, 0xa0, 0xfb, 0x90, 0x6f, 0xb6, 0x77, 0x7a, 0x2f, 0xbb, 0xe5, 0xdc, 0x94, - 0x9e, 0x46, 0x34, 0x2d, 0xee, 0x8c, 0x29, 0xba, 0x07, 0x0b, 0xfd, 0xe6, 0x8b, 0xed, 0x6e, 0x59, - 0x9b, 0x86, 0x93, 0x86, 0xf5, 0x49, 0x14, 0x4a, 0x54, 0x07, 0x37, 0x7b, 0x5b, 0xe5, 0xb9, 0x6c, - 0x54, 0x87, 0x11, 0xc7, 0x53, 0xa1, 0x9c, 0xce, 0x83, 0xb1, 0x4d, 0xd9, 0xd8, 0xb1, 0x2e, 0x58, - 0x13, 0x0f, 0x41, 0xe7, 0x24, 0x3c, 0x90, 0x9a, 0x30, 0xb2, 0x35, 0xb1, 0x43, 0xc2, 0x03, 0x71, - 0xa9, 0xa2, 0x4b, 0xbc, 0x50, 0x06, 0xa3, 0x81, 0xeb, 0x58, 0x84, 0x53, 0x5b, 0x2a, 0xc3, 0x68, - 0xfc, 0x31, 0x8b, 0x8d, 0x27, 0x28, 0x15, 0xff, 0xb3, 0x1c, 0x4e, 0x51, 0xd1, 0x13, 0xc8, 0x0f, - 0x5d, 0x7f, 0x97, 0xb8, 0x52, 0x13, 0x46, 0xe3, 0x4e, 0x96, 0x93, 0x75, 0x89, 0x98, 0x3a, 0x50, - 0x14, 0xf4, 0x08, 0xf2, 0x51, 0x60, 0x13, 0x4e, 0xcd, 0xbc, 0x24, 0xd7, 0xb2, 0xc8, 0x2f, 0x24, - 0xa2, 0xed, 0x7b, 0x7b, 0xce, 0x10, 0x2b, 0x3c, 0xda, 0x80, 0x82, 0x47, 0xf9, 0x2b, 0x9f, 0x1d, - 0x84, 0xe6, 0x62, 0x6d, 0x7e, 0xc5, 0x68, 0xfc, 0x25, 0x53, 0x8c, 0x31, 0xa6, 0xc9, 0x39, 0xb1, - 0xf6, 0x47, 0xd4, 0xe3, 0xb1, 0x9b, 0xd6, 0x9c, 0xa9, 0xe1, 0x89, 0x03, 0xf4, 0x5f, 0x28, 0x50, - 0xcf, 0x0e, 0x7c, 0xc7, 0xe3, 0x66, 0xe1, 0xfc, 0x40, 0xba, 0x0a, 0x23, 0x92, 0x89, 0x27, 0x8c, - 0x56, 0x1e, 0xf4, 0x91, 0x6f, 0xd3, 0xfa, 0x1a, 0x5c, 0x79, 0x2b, 0x59, 0xa8, 0x02, 0x05, 0x95, - 0xac, 0xb8, 0xca, 0x3a, 0x9e, 0xec, 0xeb, 0x97, 0x61, 0x69, 0x26, 0x31, 0xf5, 0x1f, 0xe7, 0xa1, - 0x90, 0x54, 0x0b, 0x35, 0xa1, 0x68, 0xf9, 0x1e, 0x27, 0x8e, 0x47, 0x99, 0x12, 0x48, 0x66, 0x6e, - 0xdb, 0x09, 0x48, 0xb0, 0x9e, 0xe5, 0xf0, 0x94, 0x85, 0x3e, 0x82, 0x22, 0xa3, 0xa1, 0x1f, 0x31, - 0x8b, 0x86, 0x4a, 0x21, 0x2b, 0xd9, 0x35, 0x8e, 0x41, 0x98, 0x7e, 0x16, 0x39, 0x8c, 0x8a, 0x3c, - 0x85, 0x78, 0x4a, 0x45, 0x4f, 0x60, 0x91, 0x89, 0xfe, 0xc6, 0xf8, 0xbb, 0x8a, 0x8c, 0x63, 0x48, - 0xdf, 0x77, 0x1d, 0xeb, 0x10, 0x27, 0x0c, 0xf4, 0x04, 0x8a, 0x81, 0x4b, 0x2c, 0xe9, 0xd5, 0x5c, - 0x90, 0xf4, 0x3f, 0x64, 0xd1, 0xfb, 0x09, 0x08, 0x4f, 0xf1, 0xe8, 0x31, 0x80, 0xeb, 0x0f, 0x07, - 0x36, 0x73, 0xc6, 0x94, 0x29, 0x91, 0x54, 0xb2, 0xd8, 0x1d, 0x89, 0xc0, 0x45, 0xd7, 0x1f, 0xc6, - 0x4b, 0xb4, 0xfe, 0xbb, 0x14, 0x92, 0x52, 0xc7, 0x06, 0x00, 0x99, 0x9c, 0x2a, 0x7d, 0x3c, 0xf8, - 0x20, 0x57, 0xaa, 0x22, 0x29, 0x7a, 0xab, 0x08, 0x8b, 0x2c, 0xf2, 0xc4, 0x7b, 0x51, 0xdf, 0x80, - 0x6b, 0x99, 0x0c, 0xd4, 0x80, 0xd2, 0xa4, 0x86, 0x03, 0xc7, 0x96, 0xc5, 0x2f, 0xb6, 0x2e, 0x9f, - 0x9d, 0x2c, 0x1b, 0x93, 0x62, 0xf7, 0x3a, 0xd8, 0x98, 0x80, 0x7a, 0x76, 0xfd, 0x27, 0x1d, 0x96, - 0x66, 0x94, 0x80, 0xae, 0xc2, 0x82, 0x33, 0x22, 0x43, 0x1a, 0xd3, 0x71, 0xbc, 0x41, 0x5d, 0xc8, - 0xbb, 0x64, 0x97, 0xba, 0x42, 0x0f, 0x22, 0x27, 0x7f, 0x7d, 0xaf, 0xa4, 0x56, 0x3f, 0x91, 0xf8, - 0xae, 0xc7, 0xd9, 0x21, 0x56, 0x64, 0x64, 0xc2, 0xa2, 0xe5, 0x8f, 0x46, 0xc4, 0x13, 0xbd, 0x63, - 0x7e, 0xa5, 0x88, 0x93, 0x2d, 0x42, 0xa0, 0x13, 0x36, 0x0c, 0x4d, 0x5d, 0x9a, 0xe5, 0x1a, 0x95, - 0x61, 0x9e, 0x7a, 0x63, 0x73, 0x41, 0x9a, 0xc4, 0x52, 0x58, 0x6c, 0x27, 0x2e, 0x68, 0x11, 0x8b, - 0xa5, 0xe0, 0x45, 0x21, 0x65, 0xe6, 0xa2, 0x34, 0xc9, 0x35, 0xfa, 0x37, 0xe4, 0x47, 0x7e, 0xe4, - 0xf1, 0xd0, 0x2c, 0xc8, 0x60, 0x6f, 0x66, 0x05, 0xbb, 0x29, 0x10, 0xaa, 0xb7, 0x29, 0x38, 0x7a, - 0x06, 0x57, 0x42, 0xee, 0x07, 0x83, 0x21, 0x23, 0x16, 0x1d, 0x04, 0x94, 0x39, 0xbe, 0x6d, 0x16, - 0xcf, 0x6f, 0x91, 0x1d, 0xf5, 0xb2, 0xe3, 0xcb, 0x82, 0xb6, 0x2e, 0x58, 0x7d, 0x49, 0x42, 0x7d, - 0x28, 0x05, 0x91, 0xeb, 0x0e, 0xfc, 0x20, 0xee, 0xd4, 0x20, 0x9d, 0x7c, 0x40, 0xd6, 0xfa, 0x91, - 0xeb, 0x3e, 0x8f, 0x49, 0xd8, 0x08, 0xa6, 0x1b, 0x74, 0x1d, 0xf2, 0x43, 0xe6, 0x47, 0x41, 0x68, - 0x1a, 0x32, 0x1f, 0x6a, 0x87, 0x9e, 0xc2, 0x62, 0x48, 0x2d, 0x46, 0x79, 0x68, 0x96, 0xe4, 0xd7, - 0xde, 0xcd, 0xba, 0x64, 0x5b, 0x42, 0x30, 0xdd, 0xa3, 0x8c, 0x7a, 0x16, 0xc5, 0x09, 0xa7, 0xf2, - 0x18, 0x8c, 0x54, 0xa1, 0x44, 0x82, 0x0f, 0xe8, 0xa1, 0xaa, 0xbd, 0x58, 0x0a, 0x3d, 0x8c, 0x89, - 0x1b, 0xc5, 0xe3, 0x43, 0x11, 0xc7, 0x9b, 0xff, 0xcc, 0x3d, 0xd2, 0x2a, 0x0d, 0x30, 0x52, 0xd1, - 0xa2, 0xbb, 0xb0, 0xc4, 0xe8, 0xd0, 0x09, 0x39, 0x3b, 0x1c, 0x90, 0x88, 0xef, 0x9b, 0xff, 0x97, - 0x84, 0x52, 0x62, 0x6c, 0x46, 0x7c, 0xbf, 0xfe, 0x8b, 0x06, 0xa5, 0x74, 0x3f, 0x44, 0xed, 0xb8, - 0x0b, 0xca, 0x1b, 0x2f, 0x35, 0xd6, 0xde, 0xd7, 0x3f, 0x65, 0xcf, 0x71, 0x23, 0x71, 0xe3, 0xa6, - 0x98, 0x59, 0x24, 0x19, 0xfd, 0x13, 0x16, 0x02, 0x9f, 0xf1, 0x44, 0x9c, 0xd5, 0xcc, 0x3e, 0xe1, - 0xb3, 0xe4, 0x37, 0x1a, 0x83, 0xeb, 0xfb, 0x70, 0x69, 0xd6, 0x1b, 0xba, 0x07, 0xf3, 0x2f, 0x7b, - 0xfd, 0x72, 0xae, 0x72, 0xeb, 0xe8, 0xb8, 0x76, 0x63, 0xf6, 0xf0, 0xa5, 0xc3, 0x78, 0x44, 0xdc, - 0x5e, 0x1f, 0xfd, 0x19, 0x16, 0x3a, 0x5b, 0xdb, 0x18, 0x97, 0xb5, 0xca, 0xf2, 0xd1, 0x71, 0xed, - 0xd6, 0x2c, 0x4e, 0x1c, 0xf9, 0x91, 0x67, 0x63, 0x7f, 0x77, 0xf2, 0x8c, 0x7f, 0x33, 0x07, 0x86, - 0xfa, 0xcd, 0x5e, 0xec, 0x33, 0xfe, 0x3f, 0x58, 0x8a, 0x7b, 0xdc, 0xc0, 0x92, 0x9f, 0xa6, 0xba, - 0xf5, 0xbb, 0x5a, 0x5d, 0x29, 0x26, 0xc4, 0xa9, 0x40, 0x77, 0xa0, 0xe4, 0x04, 0xe3, 0x87, 0x03, - 0xea, 0x91, 0x5d, 0x57, 0xbd, 0xe8, 0x05, 0x6c, 0x08, 0x5b, 0x37, 0x36, 0x89, 0xa7, 0xc8, 0xf1, - 0x38, 0x65, 0x9e, 0x7a, 0xab, 0x0b, 0x78, 0xb2, 0x47, 0x4f, 0x41, 0x77, 0x02, 0x32, 0x52, 0xfd, - 0x39, 0xf3, 0x0b, 0x7a, 0xfd, 0xe6, 0xa6, 0x92, 0x48, 0xab, 0x70, 0x76, 0xb2, 0xac, 0x0b, 0x03, - 0x96, 0x34, 0x54, 0x4d, 0x5a, 0xa4, 0xb8, 0x49, 0xfe, 0xaa, 0x0b, 0x38, 0x65, 0xa9, 0xff, 0xa0, - 0x83, 0xd1, 0x76, 0xa3, 0x90, 0xab, 0xde, 0x74, 0x61, 0x79, 0xfb, 0x14, 0xae, 0x10, 0x39, 0xf4, - 0x11, 0x4f, 0xfc, 0xd0, 0xe5, 0xd3, 0xa3, 0x72, 0x77, 0x2f, 0xd3, 0xdd, 0x04, 0x1c, 0x3f, 0x53, - 0xad, 0xbc, 0xf0, 0x69, 0x6a, 0xb8, 0x4c, 0x7e, 0x73, 0x82, 0xb6, 0x61, 0xc9, 0x67, 0xd6, 0x3e, - 0x0d, 0x79, 0xdc, 0x1b, 0xd4, 0x90, 0x94, 0x39, 0x3e, 0x3f, 0x4f, 0x03, 0xd5, 0x88, 0x11, 0x47, - 0x3b, 0xeb, 0x03, 0x3d, 0x02, 0x9d, 0x91, 0xbd, 0xe4, 0x19, 0xcd, 0xd4, 0x37, 0x26, 0x7b, 0x7c, - 0xc6, 0x85, 0x64, 0xa0, 0x8f, 0x01, 0x6c, 0x27, 0x0c, 0x08, 0xb7, 0xf6, 0x29, 0x53, 0x75, 0xca, - 0xfc, 0xc4, 0xce, 0x04, 0x35, 0xe3, 0x25, 0xc5, 0x46, 0x1b, 0x50, 0xb4, 0x48, 0xa2, 0xb4, 0xfc, - 0xf9, 0x6d, 0xb1, 0xdd, 0x54, 0x2e, 0xca, 0xc2, 0xc5, 0xd9, 0xc9, 0x72, 0x21, 0xb1, 0xe0, 0x82, - 0x45, 0x94, 0xf2, 0x36, 0x60, 0x49, 0x4c, 0x94, 0x03, 0x9b, 0xee, 0x91, 0xc8, 0xe5, 0xa1, 0xec, - 0xe0, 0xe7, 0x4c, 0x50, 0x62, 0xb8, 0xe9, 0x28, 0x9c, 0x8a, 0xab, 0xc4, 0x53, 0x36, 0xd4, 0x9c, - 0x36, 0xc1, 0xc2, 0xf9, 0x93, 0x46, 0xdc, 0x04, 0xc3, 0x99, 0xef, 0x4b, 0x78, 0xf5, 0xaf, 0x34, - 0x80, 0x18, 0x70, 0xb1, 0x52, 0x43, 0xa0, 0xdb, 0x84, 0x13, 0xa9, 0xae, 0x12, 0x96, 0x6b, 0xf4, - 0x2f, 0xc8, 0xd3, 0xcf, 0x03, 0x87, 0x1d, 0x2a, 0x71, 0x64, 0x0e, 0x36, 0x3b, 0xc9, 0x9f, 0x43, - 0xac, 0xc0, 0xad, 0xdb, 0x6f, 0x4e, 0xab, 0xb9, 0xef, 0x4e, 0xab, 0xb9, 0x9f, 0x4f, 0xab, 0xda, - 0x17, 0x67, 0x55, 0xed, 0xcd, 0x59, 0x55, 0xfb, 0xf6, 0xac, 0xaa, 0x7d, 0x7f, 0x56, 0xd5, 0x76, - 0xf3, 0xf2, 0x3f, 0xe4, 0x3f, 0x7e, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x3d, 0x00, 0xf9, 0x75, 0xbd, - 0x0e, 0x00, 0x00, + // 1458 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x57, 0xcd, 0x6e, 0x1b, 0xc9, + 0x11, 0xe6, 0x48, 0x23, 0x8a, 0xac, 0xa1, 0x6c, 0xba, 0xe1, 0x9f, 0x31, 0xed, 0x50, 0x34, 0xed, + 0x38, 0x72, 0x82, 0x48, 0x09, 0x13, 0x38, 0x76, 0x1c, 0x23, 0xe1, 0x5f, 0x64, 0x46, 0x91, 0x4c, + 0xb4, 0x6c, 0x03, 0x39, 0x11, 0xad, 0x99, 0x16, 0x35, 0xd0, 0x70, 0x7a, 0xd2, 0xd3, 0x43, 0x43, + 0xb7, 0x1c, 0x0d, 0x1d, 0xf2, 0x06, 0x3a, 0xed, 0x33, 0xec, 0x3b, 0xf8, 0xb8, 0xc7, 0x3d, 0x09, + 0x2b, 0xdd, 0x16, 0x8b, 0x05, 0x16, 0xd8, 0x17, 0x58, 0x74, 0x4f, 0x93, 0x1c, 0xae, 0x47, 0xb6, + 0x81, 0xd5, 0xad, 0xbb, 0xfa, 0xfb, 0xaa, 0x6b, 0xaa, 0x3e, 0x56, 0x17, 0xc1, 0x8a, 0x42, 0xea, + 0x44, 0xeb, 0x21, 0x67, 0x82, 0x21, 0xe4, 0x32, 0xe7, 0x90, 0xf2, 0xf5, 0xe8, 0x2d, 0xe1, 0xa3, + 0x43, 0x4f, 0xac, 0x8f, 0xff, 0x58, 0xb1, 0xc4, 0x51, 0x48, 0x35, 0xa0, 0x72, 0x7d, 0xc8, 0x86, + 0x4c, 0x2d, 0x37, 0xe4, 0x4a, 0x5b, 0x6f, 0xb9, 0x31, 0x27, 0xc2, 0x63, 0xc1, 0xc6, 0x64, 0x91, + 0x1c, 0xd4, 0xff, 0x6f, 0x42, 0x61, 0x87, 0xb9, 0x74, 0x37, 0xa4, 0x0e, 0xda, 0x04, 0x8b, 0x04, + 0x01, 0x13, 0x0a, 0x10, 0xd9, 0x46, 0xcd, 0x58, 0xb3, 0x1a, 0xab, 0xeb, 0x1f, 0x5e, 0xb9, 0xde, + 0x9c, 0xc1, 0x5a, 0xe6, 0xfb, 0xd3, 0xd5, 0x1c, 0x4e, 0x33, 0xd1, 0x1f, 0xc0, 0xe4, 0xcc, 0xa7, + 0xf6, 0x42, 0xcd, 0x58, 0xbb, 0xd2, 0xb8, 0x9b, 0xe5, 0x41, 0x5e, 0x8a, 0x99, 0x4f, 0xb1, 0x42, + 0xa2, 0x4d, 0x80, 0x11, 0x1d, 0xed, 0x51, 0x1e, 0x1d, 0x78, 0xa1, 0xbd, 0xa8, 0x78, 0xbf, 0xb9, + 0x88, 0x27, 0x83, 0x5d, 0xdf, 0x9e, 0xc2, 0x71, 0x8a, 0x8a, 0xb6, 0xa1, 0x44, 0xc6, 0xc4, 0xf3, + 0xc9, 0x9e, 0xe7, 0x7b, 0xe2, 0xc8, 0x36, 0x95, 0xab, 0x47, 0x1f, 0x75, 0xd5, 0x4c, 0x11, 0xf0, + 0x1c, 0xbd, 0xee, 0x02, 0xcc, 0x2e, 0x42, 0x0f, 0x61, 0xb9, 0xdf, 0xdd, 0xe9, 0xf4, 0x76, 0x36, + 0xcb, 0xb9, 0xca, 0xed, 0xe3, 0x93, 0xda, 0x0d, 0xe9, 0x63, 0x06, 0xe8, 0xd3, 0xc0, 0xf5, 0x82, + 0x21, 0x5a, 0x83, 0x42, 0xb3, 0xdd, 0xee, 0xf6, 0x5f, 0x75, 0x3b, 0x65, 0xa3, 0x52, 0x39, 0x3e, + 0xa9, 0xdd, 0x9c, 0x07, 0x36, 0x1d, 0x87, 0x86, 0x82, 0xba, 0x15, 0xf3, 0xdd, 0x17, 0xd5, 0x5c, + 0xfd, 0x9d, 0x01, 0xa5, 0x74, 0x10, 0xe8, 0x21, 0xe4, 0x9b, 0xed, 0x57, 0xbd, 0x37, 0xdd, 0x72, + 0x6e, 0x46, 0x4f, 0x23, 0x9a, 0x8e, 0xf0, 0xc6, 0x14, 0x3d, 0x80, 0xa5, 0x7e, 0xf3, 0xf5, 0x6e, + 0xb7, 0x6c, 0xcc, 0xc2, 0x49, 0xc3, 0xfa, 0x24, 0x8e, 0x14, 0xaa, 0x83, 0x9b, 0xbd, 0x9d, 0xf2, + 0x42, 0x36, 0xaa, 0xc3, 0x89, 0x17, 0xe8, 0x50, 0xce, 0x16, 0xc1, 0xda, 0xa5, 0x7c, 0xec, 0x39, + 0x97, 0xac, 0x89, 0xc7, 0x60, 0x0a, 0x12, 0x1d, 0x2a, 0x4d, 0x58, 0xd9, 0x9a, 0x78, 0x45, 0xa2, + 0x43, 0x79, 0xa9, 0xa6, 0x2b, 0xbc, 0x54, 0x06, 0xa7, 0xa1, 0xef, 0x39, 0x44, 0x50, 0x57, 0x29, + 0xc3, 0x6a, 0xfc, 0x3a, 0x8b, 0x8d, 0xa7, 0x28, 0x1d, 0xff, 0x8b, 0x1c, 0x4e, 0x51, 0xd1, 0x33, + 0xc8, 0x0f, 0x7d, 0xb6, 0x47, 0x7c, 0xa5, 0x09, 0xab, 0x71, 0x2f, 0xcb, 0xc9, 0xa6, 0x42, 0xcc, + 0x1c, 0x68, 0x0a, 0x7a, 0x02, 0xf9, 0x38, 0x74, 0x89, 0xa0, 0x76, 0x5e, 0x91, 0x6b, 0x59, 0xe4, + 0xd7, 0x0a, 0xd1, 0x66, 0xc1, 0xbe, 0x37, 0xc4, 0x1a, 0x8f, 0xb6, 0xa0, 0x10, 0x50, 0xf1, 0x96, + 0xf1, 0xc3, 0xc8, 0x5e, 0xae, 0x2d, 0xae, 0x59, 0x8d, 0xdf, 0x65, 0x8a, 0x31, 0xc1, 0x34, 0x85, + 0x20, 0xce, 0xc1, 0x88, 0x06, 0x22, 0x71, 0xd3, 0x5a, 0xb0, 0x0d, 0x3c, 0x75, 0x80, 0xfe, 0x06, + 0x05, 0x1a, 0xb8, 0x21, 0xf3, 0x02, 0x61, 0x17, 0x2e, 0x0e, 0xa4, 0xab, 0x31, 0x32, 0x99, 0x78, + 0xca, 0x68, 0xe5, 0xc1, 0x1c, 0x31, 0x97, 0xd6, 0x37, 0xe0, 0xda, 0x07, 0xc9, 0x42, 0x15, 0x28, + 0xe8, 0x64, 0x25, 0x55, 0x36, 0xf1, 0x74, 0x5f, 0xbf, 0x0a, 0x2b, 0x73, 0x89, 0xa9, 0x7f, 0xb7, + 0x08, 0x85, 0x49, 0xb5, 0x50, 0x13, 0x8a, 0x0e, 0x0b, 0x04, 0xf1, 0x02, 0xca, 0xb5, 0x40, 0x32, + 0x73, 0xdb, 0x9e, 0x80, 0x24, 0xeb, 0x45, 0x0e, 0xcf, 0x58, 0xe8, 0x9f, 0x50, 0xe4, 0x34, 0x62, + 0x31, 0x77, 0x68, 0xa4, 0x15, 0xb2, 0x96, 0x5d, 0xe3, 0x04, 0x84, 0xe9, 0x7f, 0x63, 0x8f, 0x53, + 0x99, 0xa7, 0x08, 0xcf, 0xa8, 0xe8, 0x19, 0x2c, 0x73, 0x1a, 0x09, 0xc2, 0xc5, 0xc7, 0x8a, 0x8c, + 0x13, 0x48, 0x9f, 0xf9, 0x9e, 0x73, 0x84, 0x27, 0x0c, 0xf4, 0x0c, 0x8a, 0xa1, 0x4f, 0x1c, 0xe5, + 0xd5, 0x5e, 0x52, 0xf4, 0x5f, 0x65, 0xd1, 0xfb, 0x13, 0x10, 0x9e, 0xe1, 0xd1, 0x53, 0x00, 0x9f, + 0x0d, 0x07, 0x2e, 0xf7, 0xc6, 0x94, 0x6b, 0x91, 0x54, 0xb2, 0xd8, 0x1d, 0x85, 0xc0, 0x45, 0x9f, + 0x0d, 0x93, 0x25, 0xda, 0xfc, 0x45, 0x0a, 0x49, 0xa9, 0x63, 0x0b, 0x80, 0x4c, 0x4f, 0xb5, 0x3e, + 0x1e, 0x7d, 0x96, 0x2b, 0x5d, 0x91, 0x14, 0xbd, 0x55, 0x84, 0x65, 0x1e, 0x07, 0xc2, 0x1b, 0xd1, + 0xfa, 0x16, 0xdc, 0xc8, 0x64, 0xa0, 0x06, 0x94, 0xa6, 0x35, 0x1c, 0x78, 0xae, 0x2a, 0x7e, 0xb1, + 0x75, 0xf5, 0xfc, 0x74, 0xd5, 0x9a, 0x16, 0xbb, 0xd7, 0xc1, 0xd6, 0x14, 0xd4, 0x73, 0xeb, 0xdf, + 0x9b, 0xb0, 0x32, 0xa7, 0x04, 0x74, 0x1d, 0x96, 0xbc, 0x11, 0x19, 0xd2, 0x84, 0x8e, 0x93, 0x0d, + 0xea, 0x42, 0xde, 0x27, 0x7b, 0xd4, 0x97, 0x7a, 0x90, 0x39, 0xf9, 0xfd, 0x27, 0x25, 0xb5, 0xfe, + 0x6f, 0x85, 0xef, 0x06, 0x82, 0x1f, 0x61, 0x4d, 0x46, 0x36, 0x2c, 0x3b, 0x6c, 0x34, 0x22, 0x81, + 0xec, 0x1d, 0x8b, 0x6b, 0x45, 0x3c, 0xd9, 0x22, 0x04, 0x26, 0xe1, 0xc3, 0xc8, 0x36, 0x95, 0x59, + 0xad, 0x51, 0x19, 0x16, 0x69, 0x30, 0xb6, 0x97, 0x94, 0x49, 0x2e, 0xa5, 0xc5, 0xf5, 0x92, 0x82, + 0x16, 0xb1, 0x5c, 0x4a, 0x5e, 0x1c, 0x51, 0x6e, 0x2f, 0x2b, 0x93, 0x5a, 0xa3, 0xbf, 0x40, 0x7e, + 0xc4, 0xe2, 0x40, 0x44, 0x76, 0x41, 0x05, 0x7b, 0x3b, 0x2b, 0xd8, 0x6d, 0x89, 0xd0, 0xbd, 0x4d, + 0xc3, 0xd1, 0x0b, 0xb8, 0x16, 0x09, 0x16, 0x0e, 0x86, 0x9c, 0x38, 0x74, 0x10, 0x52, 0xee, 0x31, + 0xd7, 0x2e, 0x5e, 0xdc, 0x22, 0x3b, 0xfa, 0xf9, 0xc6, 0x57, 0x25, 0x6d, 0x53, 0xb2, 0xfa, 0x8a, + 0x84, 0xfa, 0x50, 0x0a, 0x63, 0xdf, 0x1f, 0xb0, 0x30, 0xe9, 0xd4, 0xa0, 0x9c, 0x7c, 0x46, 0xd6, + 0xfa, 0xb1, 0xef, 0xbf, 0x4c, 0x48, 0xd8, 0x0a, 0x67, 0x1b, 0x74, 0x13, 0xf2, 0x43, 0xce, 0xe2, + 0x30, 0xb2, 0x2d, 0x95, 0x0f, 0xbd, 0x43, 0xcf, 0x61, 0x39, 0xa2, 0x0e, 0xa7, 0x22, 0xb2, 0x4b, + 0xea, 0x6b, 0xef, 0x67, 0x5d, 0xb2, 0xab, 0x20, 0x98, 0xee, 0x53, 0x4e, 0x03, 0x87, 0xe2, 0x09, + 0xa7, 0xf2, 0x14, 0xac, 0x54, 0xa1, 0x64, 0x82, 0x0f, 0xe9, 0x91, 0xae, 0xbd, 0x5c, 0x4a, 0x3d, + 0x8c, 0x89, 0x1f, 0x27, 0xe3, 0x43, 0x11, 0x27, 0x9b, 0xbf, 0x2e, 0x3c, 0x31, 0x2a, 0x0d, 0xb0, + 0x52, 0xd1, 0xa2, 0xfb, 0xb0, 0xc2, 0xe9, 0xd0, 0x8b, 0x04, 0x3f, 0x1a, 0x90, 0x58, 0x1c, 0xd8, + 0xff, 0x50, 0x84, 0xd2, 0xc4, 0xd8, 0x8c, 0xc5, 0x41, 0xfd, 0x47, 0x03, 0x4a, 0xe9, 0x7e, 0x88, + 0xda, 0x49, 0x17, 0x54, 0x37, 0x5e, 0x69, 0x6c, 0x7c, 0xaa, 0x7f, 0xaa, 0x9e, 0xe3, 0xc7, 0xf2, + 0xc6, 0x6d, 0x39, 0xb3, 0x28, 0x32, 0xfa, 0x33, 0x2c, 0x85, 0x8c, 0x8b, 0x89, 0x38, 0xab, 0x99, + 0x7d, 0x82, 0xf1, 0xc9, 0x6f, 0x34, 0x01, 0xd7, 0x0f, 0xe0, 0xca, 0xbc, 0x37, 0xf4, 0x00, 0x16, + 0xdf, 0xf4, 0xfa, 0xe5, 0x5c, 0xe5, 0xce, 0xf1, 0x49, 0xed, 0xd6, 0xfc, 0xe1, 0x1b, 0x8f, 0x8b, + 0x98, 0xf8, 0xbd, 0x3e, 0xfa, 0x2d, 0x2c, 0x75, 0x76, 0x76, 0x31, 0x2e, 0x1b, 0x95, 0xd5, 0xe3, + 0x93, 0xda, 0x9d, 0x79, 0x9c, 0x3c, 0x62, 0x71, 0xe0, 0x62, 0xb6, 0x37, 0x7d, 0xc6, 0xbf, 0x5c, + 0x00, 0x4b, 0xff, 0x66, 0x2f, 0xf7, 0x19, 0xff, 0x3b, 0xac, 0x24, 0x3d, 0x6e, 0xe0, 0xa8, 0x4f, + 0xd3, 0xdd, 0xfa, 0x63, 0xad, 0xae, 0x94, 0x10, 0x92, 0x54, 0xa0, 0x7b, 0x50, 0xf2, 0xc2, 0xf1, + 0xe3, 0x01, 0x0d, 0xc8, 0x9e, 0xaf, 0x5f, 0xf4, 0x02, 0xb6, 0xa4, 0xad, 0x9b, 0x98, 0xe4, 0x53, + 0xe4, 0x05, 0x82, 0xf2, 0x40, 0xbf, 0xd5, 0x05, 0x3c, 0xdd, 0xa3, 0xe7, 0x60, 0x7a, 0x21, 0x19, + 0xe9, 0xfe, 0x9c, 0xf9, 0x05, 0xbd, 0x7e, 0x73, 0x5b, 0x4b, 0xa4, 0x55, 0x38, 0x3f, 0x5d, 0x35, + 0xa5, 0x01, 0x2b, 0x1a, 0xaa, 0x4e, 0x5a, 0xa4, 0xbc, 0x49, 0xfd, 0xaa, 0x0b, 0x38, 0x65, 0xa9, + 0x7f, 0x6b, 0x82, 0xd5, 0xf6, 0xe3, 0x48, 0xe8, 0xde, 0x74, 0x69, 0x79, 0xfb, 0x0f, 0x5c, 0x23, + 0x6a, 0xe8, 0x23, 0x81, 0xfc, 0xa1, 0xab, 0xa7, 0x47, 0xe7, 0xee, 0x41, 0xa6, 0xbb, 0x29, 0x38, + 0x79, 0xa6, 0x5a, 0x79, 0xe9, 0xd3, 0x36, 0x70, 0x99, 0xfc, 0xec, 0x04, 0xed, 0xc2, 0x0a, 0xe3, + 0xce, 0x01, 0x8d, 0x44, 0xd2, 0x1b, 0xf4, 0x90, 0x94, 0x39, 0x3e, 0xbf, 0x4c, 0x03, 0xf5, 0x88, + 0x91, 0x44, 0x3b, 0xef, 0x03, 0x3d, 0x01, 0x93, 0x93, 0xfd, 0xc9, 0x33, 0x9a, 0xa9, 0x6f, 0x4c, + 0xf6, 0xc5, 0x9c, 0x0b, 0xc5, 0x40, 0xff, 0x02, 0x70, 0xbd, 0x28, 0x24, 0xc2, 0x39, 0xa0, 0x5c, + 0xd7, 0x29, 0xf3, 0x13, 0x3b, 0x53, 0xd4, 0x9c, 0x97, 0x14, 0x1b, 0x6d, 0x41, 0xd1, 0x21, 0x13, + 0xa5, 0xe5, 0x2f, 0x6e, 0x8b, 0xed, 0xa6, 0x76, 0x51, 0x96, 0x2e, 0xce, 0x4f, 0x57, 0x0b, 0x13, + 0x0b, 0x2e, 0x38, 0x44, 0x2b, 0x6f, 0x0b, 0x56, 0xe4, 0x44, 0x39, 0x70, 0xe9, 0x3e, 0x89, 0x7d, + 0x11, 0xa9, 0x0e, 0x7e, 0xc1, 0x04, 0x25, 0x87, 0x9b, 0x8e, 0xc6, 0xe9, 0xb8, 0x4a, 0x22, 0x65, + 0x43, 0xcd, 0x59, 0x13, 0x2c, 0x5c, 0x3c, 0x69, 0x24, 0x4d, 0x30, 0x9a, 0xfb, 0xbe, 0x09, 0xaf, + 0xee, 0x01, 0x24, 0xe7, 0x97, 0xab, 0x34, 0x04, 0xa6, 0x4b, 0x04, 0x51, 0xe2, 0x2a, 0x61, 0xb5, + 0x6e, 0xdd, 0x7d, 0x7f, 0x56, 0xcd, 0x7d, 0x7d, 0x56, 0xcd, 0xfd, 0x70, 0x56, 0x35, 0xfe, 0x77, + 0x5e, 0x35, 0xde, 0x9f, 0x57, 0x8d, 0xaf, 0xce, 0xab, 0xc6, 0x37, 0xe7, 0x55, 0x63, 0x2f, 0xaf, + 0xfe, 0x0b, 0xfe, 0xe9, 0xa7, 0x00, 0x00, 0x00, 0xff, 0xff, 0xad, 0x1a, 0xf2, 0x2e, 0x6a, 0x0e, + 0x00, 0x00, } diff --git a/api/specs.proto b/api/specs.proto index 8b5cfac5ae..26bd8050b7 100644 --- a/api/specs.proto +++ b/api/specs.proto @@ -5,7 +5,6 @@ package docker.swarmkit.v1; import "types.proto"; import "gogoproto/gogo.proto"; import "duration/duration.proto"; // TODO(stevvooe): use our own until we fix gogoproto/deepcopy -import "timestamp/timestamp.proto"; // TODO(stevvooe): use our own until we fix gogoproto/deepcopy // Specs are container objects for user provided input. All creations and // updates are done through spec types. As a convention, user input from a spec @@ -287,7 +286,4 @@ message SecretSpec { // Secret payload. bytes data = 2; - - // When this secret-spec should expire and no longer be available - Timestamp expiry = 3; } diff --git a/api/types.pb.go b/api/types.pb.go index 36cc241e3e..d1dc8970b5 100644 --- a/api/types.pb.go +++ b/api/types.pb.go @@ -16,7 +16,6 @@ raft.proto health.proto resource.proto - secrets.proto It has these top-level messages: Version @@ -118,6 +117,14 @@ JoinTokenRotation UpdateClusterRequest UpdateClusterResponse + GetSecretRequest + GetSecretResponse + ListSecretsRequest + ListSecretsResponse + CreateSecretRequest + CreateSecretResponse + RemoveSecretRequest + RemoveSecretResponse SessionRequest SessionMessage HeartbeatRequest @@ -154,14 +161,6 @@ AttachNetworkResponse DetachNetworkRequest DetachNetworkResponse - GetSecretRequest - GetSecretResponse - ListSecretsRequest - ListSecretsResponse - CreateSecretRequest - CreateSecretResponse - RemoveSecretRequest - RemoveSecretResponse */ package api @@ -1390,16 +1389,17 @@ func (*ManagerStatus) Descriptor() ([]byte, []int) { return fileDescriptorTypes, // SecretReference is the linkage between a service and a secret that it uses. type SecretReference struct { - // Name is the name of the secret that this references. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // SecretID represents the ID of the specific Secret that we're // referencing. This identifier exists so that SecretReferences don't leak // any information about the secret contents. - SecretID string `protobuf:"bytes,2,opt,name=secret_id,json=secretId,proto3" json:"secret_id,omitempty"` + SecretID string `protobuf:"bytes,1,opt,name=secret_id,json=secretId,proto3" json:"secret_id,omitempty"` // Mode is the way the secret should be presented. - Mode SecretReference_Mode `protobuf:"varint,3,opt,name=mode,proto3,enum=docker.swarmkit.v1.SecretReference_Mode" json:"mode,omitempty"` + Mode SecretReference_Mode `protobuf:"varint,2,opt,name=mode,proto3,enum=docker.swarmkit.v1.SecretReference_Mode" json:"mode,omitempty"` // Target is the name by which the image accesses the secret. - Target string `protobuf:"bytes,4,opt,name=target,proto3" json:"target,omitempty"` + Target string `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` + // Name is the name of the secret that this references, but this is just provided for + // lookup/display purposes. The secret in the reference will be identified by its ID. + Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` } func (m *SecretReference) Reset() { *m = SecretReference{} } @@ -2163,10 +2163,10 @@ func (m *SecretReference) Copy() *SecretReference { } o := &SecretReference{ - Name: m.Name, SecretID: m.SecretID, Mode: m.Mode, Target: m.Target, + Name: m.Name, } return o @@ -2826,10 +2826,10 @@ func (this *SecretReference) GoString() string { } s := make([]string, 0, 8) s = append(s, "&api.SecretReference{") - s = append(s, "Name: "+fmt.Sprintf("%#v", this.Name)+",\n") s = append(s, "SecretID: "+fmt.Sprintf("%#v", this.SecretID)+",\n") s = append(s, "Mode: "+fmt.Sprintf("%#v", this.Mode)+",\n") s = append(s, "Target: "+fmt.Sprintf("%#v", this.Target)+",\n") + s = append(s, "Name: "+fmt.Sprintf("%#v", this.Name)+",\n") s = append(s, "}") return strings.Join(s, "") } @@ -4590,29 +4590,29 @@ func (m *SecretReference) MarshalTo(data []byte) (int, error) { _ = i var l int _ = l - if len(m.Name) > 0 { - data[i] = 0xa - i++ - i = encodeVarintTypes(data, i, uint64(len(m.Name))) - i += copy(data[i:], m.Name) - } if len(m.SecretID) > 0 { - data[i] = 0x12 + data[i] = 0xa i++ i = encodeVarintTypes(data, i, uint64(len(m.SecretID))) i += copy(data[i:], m.SecretID) } if m.Mode != 0 { - data[i] = 0x18 + data[i] = 0x10 i++ i = encodeVarintTypes(data, i, uint64(m.Mode)) } if len(m.Target) > 0 { - data[i] = 0x22 + data[i] = 0x1a i++ i = encodeVarintTypes(data, i, uint64(len(m.Target))) i += copy(data[i:], m.Target) } + if len(m.Name) > 0 { + data[i] = 0x22 + i++ + i = encodeVarintTypes(data, i, uint64(len(m.Name))) + i += copy(data[i:], m.Name) + } return i, nil } @@ -5388,10 +5388,6 @@ func (m *ManagerStatus) Size() (n int) { func (m *SecretReference) Size() (n int) { var l int _ = l - l = len(m.Name) - if l > 0 { - n += 1 + l + sovTypes(uint64(l)) - } l = len(m.SecretID) if l > 0 { n += 1 + l + sovTypes(uint64(l)) @@ -5403,6 +5399,10 @@ func (m *SecretReference) Size() (n int) { if l > 0 { n += 1 + l + sovTypes(uint64(l)) } + l = len(m.Name) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } return n } @@ -6010,10 +6010,10 @@ func (this *SecretReference) String() string { return "nil" } s := strings.Join([]string{`&SecretReference{`, - `Name:` + fmt.Sprintf("%v", this.Name) + `,`, `SecretID:` + fmt.Sprintf("%v", this.SecretID) + `,`, `Mode:` + fmt.Sprintf("%v", this.Mode) + `,`, `Target:` + fmt.Sprintf("%v", this.Target) + `,`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, `}`, }, "") return s @@ -11939,7 +11939,7 @@ func (m *SecretReference) Unmarshal(data []byte) error { switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SecretID", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -11964,13 +11964,13 @@ func (m *SecretReference) Unmarshal(data []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Name = string(data[iNdEx:postIndex]) + m.SecretID = string(data[iNdEx:postIndex]) iNdEx = postIndex case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SecretID", wireType) + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Mode", wireType) } - var stringLen uint64 + m.Mode = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTypes @@ -11980,26 +11980,16 @@ func (m *SecretReference) Unmarshal(data []byte) error { } b := data[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + m.Mode |= (SecretReference_Mode(b) & 0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTypes - } - postIndex := iNdEx + intStringLen - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.SecretID = string(data[iNdEx:postIndex]) - iNdEx = postIndex case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Mode", wireType) + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Target", wireType) } - m.Mode = 0 + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTypes @@ -12009,14 +11999,24 @@ func (m *SecretReference) Unmarshal(data []byte) error { } b := data[iNdEx] iNdEx++ - m.Mode |= (SecretReference_Mode(b) & 0x7F) << shift + stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Target = string(data[iNdEx:postIndex]) + iNdEx = postIndex case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Target", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -12041,7 +12041,7 @@ func (m *SecretReference) Unmarshal(data []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Target = string(data[iNdEx:postIndex]) + m.Name = string(data[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -12172,232 +12172,232 @@ var ( func init() { proto.RegisterFile("types.proto", fileDescriptorTypes) } var fileDescriptorTypes = []byte{ - // 3620 bytes of a gzipped FileDescriptorProto + // 3618 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x59, 0xcd, 0x6f, 0x23, 0x47, - 0x76, 0x17, 0x3f, 0x45, 0x3e, 0x52, 0x52, 0x4f, 0xcd, 0xec, 0x58, 0x43, 0x8f, 0x25, 0xba, 0xed, - 0x59, 0x8f, 0xbd, 0x0e, 0x6d, 0xcb, 0x1b, 0x63, 0xd6, 0xb3, 0x59, 0xbb, 0x45, 0x52, 0x33, 0xdc, - 0x91, 0x28, 0xa2, 0x48, 0x6a, 0x60, 0x04, 0x48, 0xa3, 0xd4, 0x5d, 0xa2, 0xda, 0x6a, 0x76, 0x33, + 0x76, 0x17, 0x3f, 0x45, 0x3e, 0x52, 0x52, 0x4f, 0xcd, 0xec, 0x58, 0x43, 0x8f, 0x25, 0xba, 0xc7, + 0xb3, 0x1e, 0x7b, 0x1d, 0xda, 0x96, 0x37, 0xc6, 0xac, 0x67, 0xb3, 0x76, 0x8b, 0xa4, 0x66, 0xb8, + 0x23, 0x51, 0x44, 0x91, 0xd4, 0xc0, 0x08, 0x10, 0xa2, 0xd4, 0x5d, 0x22, 0xdb, 0x6a, 0x76, 0x33, 0xdd, 0x45, 0x69, 0x98, 0x20, 0xc0, 0x24, 0x87, 0x24, 0xd0, 0x29, 0xf7, 0x40, 0x58, 0x04, 0x09, 0x72, 0xcb, 0x39, 0x40, 0x4e, 0x3e, 0xfa, 0x12, 0x60, 0x83, 0x00, 0xc1, 0x22, 0x41, 0x84, 0x58, - 0xf9, 0x07, 0x16, 0x08, 0x82, 0x3d, 0x24, 0x87, 0xa0, 0x3e, 0xba, 0xd9, 0xe4, 0x70, 0xe4, 0x71, - 0x76, 0x4f, 0xec, 0x7a, 0xf5, 0x7b, 0xaf, 0x5e, 0x55, 0xbd, 0x7a, 0xf5, 0x7b, 0x45, 0x28, 0xb1, - 0xc9, 0x88, 0x86, 0xb5, 0x51, 0xe0, 0x33, 0x1f, 0x21, 0xdb, 0xb7, 0x4e, 0x68, 0x50, 0x0b, 0xcf, - 0x48, 0x30, 0x3c, 0x71, 0x58, 0xed, 0xf4, 0xa3, 0xca, 0x1d, 0xe6, 0x0c, 0x69, 0xc8, 0xc8, 0x70, - 0xf4, 0x41, 0xfc, 0x25, 0xe1, 0x95, 0xd7, 0xec, 0x71, 0x40, 0x98, 0xe3, 0x7b, 0x1f, 0x44, 0x1f, - 0xaa, 0xe3, 0xd6, 0xc0, 0x1f, 0xf8, 0xe2, 0xf3, 0x03, 0xfe, 0x25, 0xa5, 0xfa, 0x26, 0x2c, 0x1f, - 0xd0, 0x20, 0x74, 0x7c, 0x0f, 0xdd, 0x82, 0x9c, 0xe3, 0xd9, 0xf4, 0xd9, 0x7a, 0xaa, 0x9a, 0xba, - 0x9f, 0xc5, 0xb2, 0xa1, 0xff, 0x55, 0x0a, 0x4a, 0x86, 0xe7, 0xf9, 0x4c, 0xd8, 0x0a, 0x11, 0x82, - 0xac, 0x47, 0x86, 0x54, 0x80, 0x8a, 0x58, 0x7c, 0xa3, 0x3a, 0xe4, 0x5d, 0x72, 0x48, 0xdd, 0x70, - 0x3d, 0x5d, 0xcd, 0xdc, 0x2f, 0x6d, 0xfd, 0xa0, 0xf6, 0xa2, 0xcf, 0xb5, 0x84, 0x91, 0xda, 0xae, - 0x40, 0x37, 0x3d, 0x16, 0x4c, 0xb0, 0x52, 0xad, 0xfc, 0x08, 0x4a, 0x09, 0x31, 0xd2, 0x20, 0x73, - 0x42, 0x27, 0x6a, 0x18, 0xfe, 0xc9, 0xfd, 0x3b, 0x25, 0xee, 0x98, 0xae, 0xa7, 0x85, 0x4c, 0x36, - 0x3e, 0x4d, 0x3f, 0x48, 0xe9, 0x5f, 0x40, 0x11, 0xd3, 0xd0, 0x1f, 0x07, 0x16, 0x0d, 0xd1, 0xbb, - 0x50, 0xf4, 0x88, 0xe7, 0x9b, 0xd6, 0x68, 0x1c, 0x0a, 0xf5, 0xcc, 0x76, 0xf9, 0xea, 0x72, 0xb3, - 0xd0, 0x26, 0x9e, 0x5f, 0xef, 0xf4, 0x43, 0x5c, 0xe0, 0xdd, 0xf5, 0xd1, 0x38, 0x44, 0x6f, 0x42, - 0x79, 0x48, 0x87, 0x7e, 0x30, 0x31, 0x0f, 0x27, 0x8c, 0x86, 0xc2, 0x70, 0x06, 0x97, 0xa4, 0x6c, - 0x9b, 0x8b, 0xf4, 0xbf, 0x48, 0xc1, 0xad, 0xc8, 0x36, 0xa6, 0xbf, 0x3f, 0x76, 0x02, 0x3a, 0xa4, - 0x1e, 0x0b, 0xd1, 0x6f, 0x43, 0xde, 0x75, 0x86, 0x0e, 0x93, 0x63, 0x94, 0xb6, 0xde, 0x58, 0x34, - 0xe7, 0xd8, 0x2b, 0xac, 0xc0, 0xc8, 0x80, 0x72, 0x40, 0x43, 0x1a, 0x9c, 0xca, 0x95, 0x10, 0x43, - 0x7e, 0xab, 0xf2, 0x8c, 0x8a, 0xbe, 0x03, 0x85, 0x8e, 0x4b, 0xd8, 0x91, 0x1f, 0x0c, 0x91, 0x0e, - 0x65, 0x12, 0x58, 0xc7, 0x0e, 0xa3, 0x16, 0x1b, 0x07, 0xd1, 0xae, 0xcc, 0xc8, 0xd0, 0x6d, 0x48, - 0xfb, 0x72, 0xa0, 0xe2, 0x76, 0xfe, 0xea, 0x72, 0x33, 0xbd, 0xdf, 0xc5, 0x69, 0x3f, 0xd4, 0x1f, - 0xc2, 0x8d, 0x8e, 0x3b, 0x1e, 0x38, 0x5e, 0x83, 0x86, 0x56, 0xe0, 0x8c, 0xb8, 0x75, 0xbe, 0xbd, - 0x3c, 0xf8, 0xa2, 0xed, 0xe5, 0xdf, 0xf1, 0x96, 0xa7, 0xa7, 0x5b, 0xae, 0xff, 0x59, 0x1a, 0x6e, - 0x34, 0xbd, 0x81, 0xe3, 0xd1, 0xa4, 0xf6, 0x3d, 0x58, 0xa5, 0x42, 0x68, 0x9e, 0xca, 0xa0, 0x52, - 0x76, 0x56, 0xa4, 0x34, 0x8a, 0xb4, 0xd6, 0x5c, 0xbc, 0x7c, 0xb4, 0x68, 0xfa, 0x2f, 0x58, 0x5f, - 0x14, 0x35, 0xa8, 0x09, 0xcb, 0x23, 0x31, 0x89, 0x70, 0x3d, 0x23, 0x6c, 0xdd, 0x5b, 0x64, 0xeb, - 0x85, 0x79, 0x6e, 0x67, 0xbf, 0xbe, 0xdc, 0x5c, 0xc2, 0x91, 0xee, 0xaf, 0x13, 0x7c, 0xff, 0x99, - 0x82, 0xb5, 0xb6, 0x6f, 0xcf, 0xac, 0x43, 0x05, 0x0a, 0xc7, 0x7e, 0xc8, 0x12, 0x07, 0x25, 0x6e, - 0xa3, 0x07, 0x50, 0x18, 0xa9, 0xed, 0x53, 0xbb, 0x7f, 0x77, 0xb1, 0xcb, 0x12, 0x83, 0x63, 0x34, - 0x7a, 0x08, 0xc5, 0x20, 0x8a, 0x89, 0xf5, 0xcc, 0xab, 0x04, 0xce, 0x14, 0x8f, 0x7e, 0x07, 0xf2, - 0x72, 0x13, 0xd6, 0xb3, 0x42, 0xf3, 0xde, 0x2b, 0xad, 0x39, 0x56, 0x4a, 0xfa, 0x2f, 0x52, 0xa0, - 0x61, 0x72, 0xc4, 0xf6, 0xe8, 0xf0, 0x90, 0x06, 0x5d, 0x46, 0xd8, 0x38, 0x44, 0xb7, 0x21, 0xef, - 0x52, 0x62, 0xd3, 0x40, 0x4c, 0xb2, 0x80, 0x55, 0x0b, 0xf5, 0x79, 0x90, 0x13, 0xeb, 0x98, 0x1c, - 0x3a, 0xae, 0xc3, 0x26, 0x62, 0x9a, 0xab, 0x8b, 0x77, 0x79, 0xde, 0x66, 0x0d, 0x27, 0x14, 0xf1, - 0x8c, 0x19, 0xb4, 0x0e, 0xcb, 0x43, 0x1a, 0x86, 0x64, 0x40, 0xc5, 0xec, 0x8b, 0x38, 0x6a, 0xea, - 0x0f, 0xa1, 0x9c, 0xd4, 0x43, 0x25, 0x58, 0xee, 0xb7, 0x9f, 0xb4, 0xf7, 0x9f, 0xb6, 0xb5, 0x25, - 0xb4, 0x06, 0xa5, 0x7e, 0x1b, 0x37, 0x8d, 0xfa, 0x63, 0x63, 0x7b, 0xb7, 0xa9, 0xa5, 0xd0, 0x0a, - 0x14, 0xa7, 0xcd, 0xb4, 0xfe, 0xb3, 0x14, 0x00, 0xdf, 0x40, 0x35, 0xa9, 0x4f, 0x21, 0x17, 0x32, - 0xc2, 0xe4, 0xc6, 0xad, 0x6e, 0xbd, 0xbd, 0xc8, 0xeb, 0x29, 0xbc, 0xc6, 0x7f, 0x28, 0x96, 0x2a, - 0x49, 0x0f, 0xd3, 0xf3, 0x1e, 0xe6, 0x04, 0x72, 0xd6, 0xb5, 0x02, 0x64, 0x1b, 0xfc, 0x2b, 0x85, - 0x8a, 0x90, 0xc3, 0x4d, 0xa3, 0xf1, 0x85, 0x96, 0x46, 0x1a, 0x94, 0x1b, 0xad, 0x6e, 0x7d, 0xbf, - 0xdd, 0x6e, 0xd6, 0x7b, 0xcd, 0x86, 0x96, 0xd1, 0xef, 0x41, 0xae, 0x35, 0x24, 0x03, 0x8a, 0xee, - 0xf2, 0x08, 0x38, 0xa2, 0x01, 0xf5, 0xac, 0x28, 0xb0, 0xa6, 0x02, 0xfd, 0xe7, 0x45, 0xc8, 0xed, - 0xf9, 0x63, 0x8f, 0xa1, 0xad, 0xc4, 0x29, 0x5e, 0xdd, 0xda, 0x58, 0x34, 0x05, 0x01, 0xac, 0xf5, - 0x26, 0x23, 0xaa, 0x4e, 0xf9, 0x6d, 0xc8, 0xcb, 0x58, 0x51, 0xae, 0xab, 0x16, 0x97, 0x33, 0x12, - 0x0c, 0x28, 0x53, 0x8b, 0xae, 0x5a, 0xe8, 0x3e, 0x14, 0x02, 0x4a, 0x6c, 0xdf, 0x73, 0x27, 0x22, - 0xa4, 0x0a, 0x32, 0xcd, 0x62, 0x4a, 0xec, 0x7d, 0xcf, 0x9d, 0xe0, 0xb8, 0x17, 0x3d, 0x86, 0xf2, - 0xa1, 0xe3, 0xd9, 0xa6, 0x3f, 0x92, 0x39, 0x2f, 0xf7, 0xf2, 0x00, 0x94, 0x5e, 0x6d, 0x3b, 0x9e, - 0xbd, 0x2f, 0xc1, 0xb8, 0x74, 0x38, 0x6d, 0xa0, 0x36, 0xac, 0x9e, 0xfa, 0xee, 0x78, 0x48, 0x63, - 0x5b, 0x79, 0x61, 0xeb, 0x9d, 0x97, 0xdb, 0x3a, 0x10, 0xf8, 0xc8, 0xda, 0xca, 0x69, 0xb2, 0x89, - 0x9e, 0xc0, 0x0a, 0x1b, 0x8e, 0x8e, 0xc2, 0xd8, 0xdc, 0xb2, 0x30, 0xf7, 0xfd, 0x6b, 0x16, 0x8c, - 0xc3, 0x23, 0x6b, 0x65, 0x96, 0x68, 0x55, 0xfe, 0x24, 0x03, 0xa5, 0x84, 0xe7, 0xa8, 0x0b, 0xa5, - 0x51, 0xe0, 0x8f, 0xc8, 0x40, 0xe4, 0x6d, 0xb5, 0x17, 0x1f, 0xbd, 0xd2, 0xac, 0x6b, 0x9d, 0xa9, - 0x22, 0x4e, 0x5a, 0xd1, 0x2f, 0xd2, 0x50, 0x4a, 0x74, 0xa2, 0xf7, 0xa0, 0x80, 0x3b, 0xb8, 0x75, - 0x60, 0xf4, 0x9a, 0xda, 0x52, 0xe5, 0xee, 0xf9, 0x45, 0x75, 0x5d, 0x58, 0x4b, 0x1a, 0xe8, 0x04, - 0xce, 0x29, 0x0f, 0xbd, 0xfb, 0xb0, 0x1c, 0x41, 0x53, 0x95, 0xd7, 0xcf, 0x2f, 0xaa, 0xaf, 0xcd, - 0x43, 0x13, 0x48, 0xdc, 0x7d, 0x6c, 0xe0, 0x66, 0x43, 0x4b, 0x2f, 0x46, 0xe2, 0xee, 0x31, 0x09, - 0xa8, 0x8d, 0xbe, 0x0f, 0x79, 0x05, 0xcc, 0x54, 0x2a, 0xe7, 0x17, 0xd5, 0xdb, 0xf3, 0xc0, 0x29, - 0x0e, 0x77, 0x77, 0x8d, 0x83, 0xa6, 0x96, 0x5d, 0x8c, 0xc3, 0x5d, 0x97, 0x9c, 0x52, 0xf4, 0x36, - 0xe4, 0x24, 0x2c, 0x57, 0xb9, 0x73, 0x7e, 0x51, 0xfd, 0xde, 0x0b, 0xe6, 0x38, 0xaa, 0xb2, 0xfe, - 0xe7, 0x7f, 0xbd, 0xb1, 0xf4, 0x0f, 0x7f, 0xb3, 0xa1, 0xcd, 0x77, 0x57, 0xfe, 0x37, 0x05, 0x2b, - 0x33, 0x5b, 0x8e, 0x74, 0xc8, 0x7b, 0xbe, 0xe5, 0x8f, 0x64, 0x3a, 0x2f, 0x6c, 0xc3, 0xd5, 0xe5, - 0x66, 0xbe, 0xed, 0xd7, 0xfd, 0xd1, 0x04, 0xab, 0x1e, 0xf4, 0x64, 0xee, 0x42, 0xfa, 0xf8, 0x15, - 0xe3, 0x69, 0xe1, 0x95, 0xf4, 0x19, 0xac, 0xd8, 0x81, 0x73, 0x4a, 0x03, 0xd3, 0xf2, 0xbd, 0x23, - 0x67, 0xa0, 0x52, 0x75, 0x65, 0x91, 0xcd, 0x86, 0x00, 0xe2, 0xb2, 0x54, 0xa8, 0x0b, 0xfc, 0xaf, - 0x71, 0x19, 0x55, 0x0e, 0xa0, 0x9c, 0x8c, 0x50, 0xf4, 0x06, 0x40, 0xe8, 0xfc, 0x01, 0x55, 0xfc, - 0x46, 0xb0, 0x21, 0x5c, 0xe4, 0x12, 0xc1, 0x6e, 0xd0, 0x3b, 0x90, 0x1d, 0xfa, 0xb6, 0xb4, 0x93, - 0xdb, 0xbe, 0xc9, 0xef, 0xc4, 0x7f, 0xbd, 0xdc, 0x2c, 0xf9, 0x61, 0x6d, 0xc7, 0x71, 0xe9, 0x9e, - 0x6f, 0x53, 0x2c, 0x00, 0xfa, 0x29, 0x64, 0x79, 0xaa, 0x40, 0xaf, 0x43, 0x76, 0xbb, 0xd5, 0x6e, - 0x68, 0x4b, 0x95, 0x1b, 0xe7, 0x17, 0xd5, 0x15, 0xb1, 0x24, 0xbc, 0x83, 0xc7, 0x2e, 0xda, 0x84, - 0xfc, 0xc1, 0xfe, 0x6e, 0x7f, 0x8f, 0x87, 0xd7, 0xcd, 0xf3, 0x8b, 0xea, 0x5a, 0xdc, 0x2d, 0x17, - 0x0d, 0xbd, 0x01, 0xb9, 0xde, 0x5e, 0x67, 0xa7, 0xab, 0xa5, 0x2b, 0xe8, 0xfc, 0xa2, 0xba, 0x1a, - 0xf7, 0x0b, 0x9f, 0x2b, 0x37, 0xd4, 0xae, 0x16, 0x63, 0xb9, 0xfe, 0x3f, 0x69, 0x58, 0xc1, 0x9c, - 0xdf, 0x06, 0xac, 0xe3, 0xbb, 0x8e, 0x35, 0x41, 0x1d, 0x28, 0x5a, 0xbe, 0x67, 0x3b, 0x89, 0x33, - 0xb5, 0xf5, 0x92, 0x4b, 0x70, 0xaa, 0x15, 0xb5, 0xea, 0x91, 0x26, 0x9e, 0x1a, 0x41, 0x5b, 0x90, - 0xb3, 0xa9, 0x4b, 0x26, 0xd7, 0xdd, 0xc6, 0x0d, 0xc5, 0xa5, 0xb1, 0x84, 0x0a, 0xe6, 0x48, 0x9e, - 0x99, 0x84, 0x31, 0x3a, 0x1c, 0x31, 0x79, 0x1b, 0x67, 0x71, 0x69, 0x48, 0x9e, 0x19, 0x4a, 0x84, - 0x7e, 0x08, 0xf9, 0x33, 0xc7, 0xb3, 0xfd, 0x33, 0x75, 0xe1, 0x5e, 0x6f, 0x57, 0x61, 0xf5, 0x73, - 0x7e, 0xcf, 0xce, 0x39, 0xcb, 0x57, 0xbd, 0xbd, 0xdf, 0x6e, 0x46, 0xab, 0xae, 0xfa, 0xf7, 0xbd, - 0xb6, 0xef, 0xf1, 0x13, 0x03, 0xfb, 0x6d, 0x73, 0xc7, 0x68, 0xed, 0xf6, 0x31, 0x5f, 0xf9, 0x5b, - 0xe7, 0x17, 0x55, 0x2d, 0x86, 0xec, 0x10, 0xc7, 0xe5, 0x24, 0xf0, 0x0e, 0x64, 0x8c, 0xf6, 0x17, - 0x5a, 0xba, 0xa2, 0x9d, 0x5f, 0x54, 0xcb, 0x71, 0xb7, 0xe1, 0x4d, 0xa6, 0x87, 0x69, 0x7e, 0x5c, - 0xfd, 0xdf, 0xd3, 0x50, 0xee, 0x8f, 0x6c, 0xc2, 0xa8, 0x8c, 0x4c, 0x54, 0x85, 0xd2, 0x88, 0x04, - 0xc4, 0x75, 0xa9, 0xeb, 0x84, 0x43, 0x55, 0x28, 0x24, 0x45, 0xe8, 0xc1, 0x77, 0x58, 0x4c, 0x45, - 0xc2, 0xd4, 0x92, 0xf6, 0x61, 0xf5, 0x48, 0x3a, 0x6b, 0x12, 0x4b, 0xec, 0x6e, 0x46, 0xec, 0x6e, - 0x6d, 0x91, 0x89, 0xa4, 0x57, 0x35, 0x35, 0x47, 0x43, 0x68, 0xe1, 0x95, 0xa3, 0x64, 0x13, 0x7d, - 0x02, 0xcb, 0x43, 0xdf, 0x73, 0x98, 0x1f, 0xbc, 0xd2, 0x3e, 0x44, 0x60, 0xf4, 0x1e, 0xdc, 0xe0, - 0x3b, 0x1c, 0xb9, 0x24, 0xba, 0xc5, 0xcd, 0x95, 0xc6, 0x6b, 0x43, 0xf2, 0x4c, 0x8d, 0x89, 0xb9, - 0x58, 0xff, 0x04, 0x56, 0x66, 0x7c, 0xe0, 0xb7, 0x79, 0xc7, 0xe8, 0x77, 0x9b, 0xda, 0x12, 0x2a, - 0x43, 0xa1, 0xbe, 0xdf, 0xee, 0xb5, 0xda, 0x7d, 0x4e, 0x3d, 0xca, 0x50, 0xc0, 0xfb, 0xbb, 0xbb, - 0xdb, 0x46, 0xfd, 0x89, 0x96, 0xd6, 0xff, 0x3b, 0x5e, 0x5f, 0xc5, 0x3d, 0xb6, 0x67, 0xb9, 0xc7, - 0xfb, 0x2f, 0x9f, 0xba, 0x62, 0x1f, 0xd3, 0x46, 0xcc, 0x41, 0x7e, 0x0c, 0x20, 0xb6, 0x91, 0xda, - 0x26, 0x61, 0xd7, 0xd5, 0x17, 0xbd, 0xa8, 0x72, 0xc4, 0x45, 0xa5, 0x60, 0x30, 0xf4, 0x39, 0x94, - 0x2d, 0x7f, 0x38, 0x72, 0xa9, 0xd2, 0xcf, 0xbc, 0x8a, 0x7e, 0x29, 0x56, 0x31, 0x58, 0x92, 0x03, - 0x65, 0x67, 0x39, 0xd0, 0x9f, 0xa6, 0xa0, 0x94, 0x70, 0x78, 0x96, 0x0a, 0x95, 0xa1, 0xd0, 0xef, - 0x34, 0x8c, 0x5e, 0xab, 0xfd, 0x48, 0x4b, 0x21, 0x80, 0xbc, 0x58, 0xc0, 0x86, 0x96, 0xe6, 0x74, - 0xad, 0xbe, 0xbf, 0xd7, 0xd9, 0x6d, 0x0a, 0x32, 0x84, 0x6e, 0x81, 0x16, 0x2d, 0xa1, 0xd9, 0xed, - 0x19, 0x98, 0x4b, 0xb3, 0xe8, 0x26, 0xac, 0xc5, 0x52, 0xa5, 0x99, 0x43, 0xb7, 0x01, 0xc5, 0xc2, - 0xa9, 0x89, 0xbc, 0xfe, 0x47, 0xb0, 0x56, 0xf7, 0x3d, 0x46, 0x1c, 0x2f, 0xa6, 0xb2, 0x5b, 0x7c, - 0xde, 0x4a, 0x64, 0x3a, 0xb6, 0xcc, 0xb6, 0xdb, 0x6b, 0x57, 0x97, 0x9b, 0xa5, 0x18, 0xda, 0x6a, - 0xf0, 0x99, 0x46, 0x0d, 0x9b, 0x9f, 0xa9, 0x91, 0x63, 0xab, 0xe4, 0xb9, 0x7c, 0x75, 0xb9, 0x99, - 0xe9, 0xb4, 0x1a, 0x98, 0xcb, 0xd0, 0xeb, 0x50, 0xa4, 0xcf, 0x1c, 0x66, 0x5a, 0x3c, 0xbb, 0xf2, - 0x35, 0xcc, 0xe1, 0x02, 0x17, 0xd4, 0x79, 0x32, 0xfd, 0xe3, 0x34, 0x40, 0x8f, 0x84, 0x27, 0x6a, - 0xe8, 0x87, 0x50, 0x8c, 0x8b, 0xf8, 0xeb, 0x8a, 0xc9, 0xc4, 0x7e, 0xc5, 0x78, 0xf4, 0x71, 0x14, - 0x31, 0x92, 0x63, 0x2f, 0x56, 0x54, 0x63, 0x2d, 0xa2, 0xa9, 0xb3, 0x44, 0x9a, 0xdf, 0x35, 0x34, - 0x08, 0xd4, 0xc6, 0xf1, 0x4f, 0x54, 0x17, 0xf9, 0x56, 0xce, 0x59, 0x31, 0xb7, 0xb7, 0x16, 0x0d, - 0x32, 0xb7, 0xa0, 0x8f, 0x97, 0xf0, 0x54, 0x6f, 0x5b, 0x83, 0xd5, 0x60, 0xec, 0x71, 0xaf, 0xcd, - 0x50, 0x74, 0xeb, 0x0e, 0xbc, 0xd6, 0xa6, 0xec, 0xcc, 0x0f, 0x4e, 0x0c, 0xc6, 0x88, 0x75, 0xcc, - 0x8b, 0x6a, 0x95, 0x64, 0xa6, 0x84, 0x33, 0x35, 0x43, 0x38, 0xd7, 0x61, 0x99, 0xb8, 0x0e, 0x09, - 0xa9, 0xbc, 0xa5, 0x8b, 0x38, 0x6a, 0x72, 0x5a, 0x4c, 0x6c, 0x3b, 0xa0, 0x61, 0x48, 0x65, 0x19, - 0x58, 0xc4, 0x53, 0x81, 0xfe, 0xcf, 0x69, 0x80, 0x56, 0xc7, 0xd8, 0x53, 0xe6, 0x1b, 0x90, 0x3f, - 0x22, 0x43, 0xc7, 0x9d, 0x5c, 0x77, 0xc8, 0xa6, 0xf8, 0x9a, 0x21, 0x0d, 0xed, 0x08, 0x1d, 0xac, - 0x74, 0x05, 0x5b, 0x1e, 0x1f, 0x7a, 0x94, 0xc5, 0x6c, 0x59, 0xb4, 0xf8, 0xd5, 0x1c, 0x10, 0x2f, - 0x5e, 0x58, 0xd9, 0xe0, 0xae, 0x0f, 0x08, 0xa3, 0x67, 0x64, 0x12, 0x9d, 0x09, 0xd5, 0x44, 0x8f, - 0x39, 0x8b, 0xe6, 0xc5, 0x3d, 0xb5, 0xd7, 0x73, 0x82, 0x7b, 0x7c, 0x9b, 0x3f, 0x58, 0xc1, 0x25, - 0xe9, 0x88, 0xb5, 0x2b, 0x0f, 0xc5, 0x4d, 0x39, 0xed, 0xfa, 0x4e, 0x45, 0xec, 0x87, 0xb0, 0x32, - 0x33, 0xcf, 0x17, 0xca, 0x94, 0x56, 0xe7, 0xe0, 0x87, 0x5a, 0x56, 0x7d, 0x7d, 0xa2, 0xe5, 0xf5, - 0xff, 0x4a, 0x01, 0x74, 0xfc, 0x20, 0xda, 0xb4, 0xc5, 0xcf, 0x42, 0x05, 0xf1, 0xc8, 0x64, 0xf9, - 0xae, 0x0a, 0xcf, 0x85, 0x3c, 0x7d, 0x6a, 0x85, 0xd3, 0x5e, 0x01, 0xc7, 0xb1, 0x22, 0xda, 0x84, - 0x92, 0xdc, 0x7f, 0x73, 0xe4, 0x07, 0x32, 0x1f, 0xad, 0x60, 0x90, 0x22, 0xae, 0x89, 0xee, 0xc1, - 0xea, 0x68, 0x7c, 0xe8, 0x3a, 0xe1, 0x31, 0xb5, 0x25, 0x26, 0x2b, 0x30, 0x2b, 0xb1, 0x94, 0xc3, - 0xf4, 0x06, 0x14, 0x22, 0xeb, 0x68, 0x1d, 0x32, 0xbd, 0x7a, 0x47, 0x5b, 0xaa, 0xac, 0x9d, 0x5f, - 0x54, 0x4b, 0x91, 0xb8, 0x57, 0xef, 0xf0, 0x9e, 0x7e, 0xa3, 0xa3, 0xa5, 0x66, 0x7b, 0xfa, 0x8d, - 0x4e, 0x25, 0xcb, 0x6f, 0x49, 0xfd, 0x2f, 0x53, 0x90, 0x97, 0x9c, 0x6d, 0xe1, 0x8c, 0x0d, 0x58, - 0x8e, 0x2a, 0x09, 0x49, 0x24, 0xdf, 0x79, 0x39, 0xe9, 0xab, 0x29, 0x8e, 0x26, 0xf7, 0x31, 0xd2, - 0xab, 0x7c, 0x0a, 0xe5, 0x64, 0xc7, 0x77, 0xda, 0xc5, 0x3f, 0x84, 0x12, 0x0f, 0x94, 0x88, 0xfc, - 0x6d, 0x41, 0x5e, 0xf2, 0x4a, 0x95, 0x55, 0xae, 0x63, 0xa0, 0x0a, 0x89, 0x1e, 0xc0, 0xb2, 0x64, - 0xad, 0xd1, 0x7b, 0xca, 0xc6, 0xf5, 0xe1, 0x88, 0x23, 0xb8, 0xfe, 0x19, 0x64, 0x3b, 0x94, 0x06, - 0xe8, 0x2d, 0x58, 0xf6, 0x7c, 0x9b, 0x4e, 0x93, 0xa8, 0x22, 0xdc, 0x36, 0x6d, 0x35, 0x38, 0xe1, - 0xb6, 0x69, 0xcb, 0xe6, 0x8b, 0xc7, 0x0f, 0x68, 0xf4, 0xa4, 0xc4, 0xbf, 0xf5, 0x1e, 0x94, 0x9f, - 0x52, 0x67, 0x70, 0xcc, 0xa8, 0x2d, 0x0c, 0xbd, 0x0f, 0xd9, 0x11, 0x8d, 0x9d, 0x5f, 0x5f, 0x18, - 0x3a, 0x94, 0x06, 0x58, 0xa0, 0xf8, 0x81, 0x3c, 0x13, 0xda, 0xea, 0x15, 0x4f, 0xb5, 0xf4, 0xbf, - 0x4b, 0xc3, 0x6a, 0x2b, 0x0c, 0xc7, 0xc4, 0xb3, 0xa2, 0x5b, 0xf6, 0x27, 0xb3, 0xb7, 0xec, 0xfd, - 0x85, 0x33, 0x9c, 0x51, 0x99, 0xad, 0xf2, 0x55, 0x92, 0x4c, 0xc7, 0x49, 0x52, 0xff, 0x3a, 0x15, - 0x95, 0xf7, 0xf7, 0x12, 0xe7, 0xa6, 0xb2, 0x7e, 0x7e, 0x51, 0xbd, 0x95, 0xb4, 0x44, 0xfb, 0xde, - 0x89, 0xe7, 0x9f, 0x79, 0xe8, 0x4d, 0x5e, 0xee, 0xb7, 0x9b, 0x4f, 0xb5, 0x54, 0xe5, 0xf6, 0xf9, - 0x45, 0x15, 0xcd, 0x80, 0x30, 0xf5, 0xe8, 0x19, 0xb7, 0xd4, 0x69, 0xb6, 0x1b, 0xfc, 0x3e, 0x4c, - 0x2f, 0xb0, 0xd4, 0xa1, 0x9e, 0xed, 0x78, 0x03, 0xf4, 0x16, 0xe4, 0x5b, 0xdd, 0x6e, 0x5f, 0x14, - 0x60, 0xaf, 0x9d, 0x5f, 0x54, 0x6f, 0xce, 0xa0, 0x78, 0x83, 0xda, 0x1c, 0xc4, 0x09, 0x22, 0xbf, - 0x29, 0x17, 0x80, 0x38, 0x77, 0xa1, 0xb6, 0x8a, 0xf0, 0x7f, 0x4b, 0x83, 0x66, 0x58, 0x16, 0x1d, - 0x31, 0xde, 0xaf, 0x48, 0x77, 0x0f, 0x0a, 0x23, 0xfe, 0xe5, 0x88, 0x22, 0x82, 0x87, 0xc5, 0x83, - 0x85, 0x4f, 0xbc, 0x73, 0x7a, 0x35, 0xec, 0xbb, 0xd4, 0xb0, 0x87, 0x4e, 0x18, 0xf2, 0xe2, 0x52, - 0xc8, 0x70, 0x6c, 0xa9, 0xf2, 0xcb, 0x14, 0xdc, 0x5c, 0x80, 0x40, 0x1f, 0x42, 0x36, 0xf0, 0xdd, - 0x68, 0x7b, 0xee, 0xbe, 0xec, 0x01, 0x86, 0xab, 0x62, 0x81, 0x44, 0x1b, 0x00, 0x64, 0xcc, 0x7c, - 0x22, 0xc6, 0x17, 0x1b, 0x53, 0xc0, 0x09, 0x09, 0x7a, 0x0a, 0xf9, 0x90, 0x5a, 0x01, 0x8d, 0xf8, - 0xcc, 0x67, 0xff, 0x5f, 0xef, 0x6b, 0x5d, 0x61, 0x06, 0x2b, 0x73, 0x95, 0x1a, 0xe4, 0xa5, 0x84, - 0x47, 0xb4, 0x4d, 0x18, 0x11, 0x4e, 0x97, 0xb1, 0xf8, 0xe6, 0x81, 0x42, 0xdc, 0x41, 0x14, 0x28, - 0xc4, 0x1d, 0xe8, 0x3f, 0x4b, 0x03, 0x34, 0x9f, 0x31, 0x1a, 0x78, 0xc4, 0xad, 0x1b, 0xa8, 0x99, - 0xc8, 0x90, 0x72, 0xb6, 0xef, 0x2e, 0x7c, 0x96, 0x8b, 0x35, 0x6a, 0x75, 0x63, 0x41, 0x8e, 0xbc, - 0x03, 0x99, 0x71, 0xe0, 0xaa, 0x27, 0x5e, 0x41, 0x44, 0xfa, 0x78, 0x17, 0x73, 0x19, 0x6a, 0x4e, - 0x33, 0x52, 0xe6, 0xe5, 0x6f, 0xf3, 0x89, 0x01, 0x7e, 0xf3, 0x59, 0xe9, 0x7d, 0x80, 0xa9, 0xd7, - 0x68, 0x03, 0x72, 0xf5, 0x9d, 0x6e, 0x77, 0x57, 0x5b, 0x92, 0x35, 0xe2, 0xb4, 0x4b, 0x88, 0xf5, - 0xbf, 0x4d, 0x41, 0xa1, 0x6e, 0xa8, 0x5b, 0x65, 0x07, 0x34, 0x91, 0x4b, 0x2c, 0x1a, 0x30, 0x93, - 0x3e, 0x1b, 0x39, 0xc1, 0x44, 0xa5, 0x83, 0xeb, 0x59, 0xfc, 0x2a, 0xd7, 0xaa, 0xd3, 0x80, 0x35, - 0x85, 0x0e, 0xc2, 0x50, 0xa6, 0x6a, 0x8a, 0xa6, 0x45, 0xa2, 0xe4, 0xbc, 0x71, 0xfd, 0x52, 0x48, - 0xf6, 0x37, 0x6d, 0x87, 0xb8, 0x14, 0x19, 0xa9, 0x93, 0x50, 0x3f, 0x80, 0x9b, 0xfb, 0x81, 0x75, - 0x4c, 0x43, 0x26, 0x07, 0x55, 0x2e, 0x7f, 0x06, 0x77, 0x19, 0x09, 0x4f, 0xcc, 0x63, 0x27, 0x64, - 0x7e, 0x30, 0x31, 0x03, 0xca, 0xa8, 0xc7, 0xfb, 0x4d, 0xf1, 0x0f, 0x80, 0xaa, 0xc1, 0xef, 0x70, - 0xcc, 0x63, 0x09, 0xc1, 0x11, 0x62, 0x97, 0x03, 0xf4, 0x16, 0x94, 0x39, 0x61, 0x6b, 0xd0, 0x23, - 0x32, 0x76, 0x59, 0x88, 0x7e, 0x04, 0xe0, 0xfa, 0x03, 0xf3, 0x95, 0x33, 0x79, 0xd1, 0xf5, 0x07, - 0xf2, 0x53, 0xff, 0x5d, 0xd0, 0x1a, 0x4e, 0x38, 0x22, 0xcc, 0x3a, 0x8e, 0x1e, 0x17, 0xd0, 0x23, - 0xd0, 0x8e, 0x29, 0x09, 0xd8, 0x21, 0x25, 0xcc, 0x1c, 0xd1, 0xc0, 0xf1, 0xed, 0x57, 0x5a, 0xd2, - 0xb5, 0x58, 0xab, 0x23, 0x94, 0xf4, 0x5f, 0xa5, 0x00, 0x30, 0x39, 0x8a, 0x08, 0xc0, 0x0f, 0xe0, - 0x46, 0xe8, 0x91, 0x51, 0x78, 0xec, 0x33, 0xd3, 0xf1, 0x18, 0x0d, 0x4e, 0x89, 0xab, 0x0a, 0x44, - 0x2d, 0xea, 0x68, 0x29, 0x39, 0x7a, 0x1f, 0xd0, 0x09, 0xa5, 0x23, 0xd3, 0x77, 0x6d, 0x33, 0xea, - 0x94, 0x7f, 0x51, 0x64, 0xb1, 0xc6, 0x7b, 0xf6, 0x5d, 0xbb, 0x1b, 0xc9, 0xd1, 0x36, 0x6c, 0xf0, - 0x15, 0xa0, 0x1e, 0x0b, 0x1c, 0x1a, 0x9a, 0x47, 0x7e, 0x60, 0x86, 0xae, 0x7f, 0x66, 0x1e, 0xf9, - 0xae, 0xeb, 0x9f, 0xd1, 0x20, 0x2a, 0xbf, 0x2b, 0xae, 0x3f, 0x68, 0x4a, 0xd0, 0x8e, 0x1f, 0x74, - 0x5d, 0xff, 0x6c, 0x27, 0x42, 0x70, 0x96, 0x30, 0x9d, 0x36, 0x73, 0xac, 0x93, 0x88, 0x25, 0xc4, - 0xd2, 0x9e, 0x63, 0x9d, 0xa0, 0xb7, 0x60, 0x85, 0xba, 0x54, 0x14, 0x71, 0x12, 0x95, 0x13, 0xa8, - 0x72, 0x24, 0xe4, 0x20, 0x4e, 0x96, 0xe4, 0xa1, 0x0f, 0xd5, 0xdc, 0x37, 0x81, 0x57, 0xfe, 0xa6, - 0xcc, 0x09, 0xf2, 0x99, 0x65, 0x05, 0xc3, 0x90, 0x3c, 0x53, 0x30, 0xfd, 0xb7, 0xa0, 0xd8, 0x71, - 0x89, 0x25, 0xfe, 0x3a, 0xe2, 0x45, 0xb4, 0xe5, 0x7b, 0x3c, 0x6c, 0x1c, 0x8f, 0xc9, 0x7c, 0x5a, - 0xc4, 0x49, 0x91, 0xfe, 0x13, 0x80, 0x9f, 0xfa, 0x8e, 0xd7, 0xf3, 0x4f, 0xa8, 0x27, 0x5e, 0xd9, - 0x39, 0x4f, 0x56, 0x9b, 0x5f, 0xc4, 0xaa, 0x25, 0x58, 0x3c, 0xf1, 0xc8, 0x80, 0x06, 0xf1, 0x63, - 0xb3, 0x6c, 0xf2, 0xeb, 0x28, 0x8f, 0x7d, 0x9f, 0xd5, 0x0d, 0x54, 0x85, 0xbc, 0x45, 0xcc, 0xe8, - 0xac, 0x96, 0xb7, 0x8b, 0x57, 0x97, 0x9b, 0xb9, 0xba, 0xf1, 0x84, 0x4e, 0x70, 0xce, 0x22, 0x4f, - 0xe8, 0x84, 0xdf, 0xd7, 0x16, 0x11, 0x27, 0x4c, 0x98, 0x29, 0xcb, 0xfb, 0xba, 0x6e, 0xf0, 0xe3, - 0x83, 0xf3, 0x16, 0xe1, 0xbf, 0xe8, 0x43, 0x28, 0x2b, 0x90, 0x79, 0x4c, 0xc2, 0x63, 0xc9, 0x6e, - 0xb7, 0x57, 0xaf, 0x2e, 0x37, 0x41, 0x22, 0x1f, 0x93, 0xf0, 0x18, 0x83, 0x44, 0xf3, 0x6f, 0xd4, - 0x84, 0xd2, 0x97, 0xbe, 0xe3, 0x99, 0x4c, 0x4c, 0x42, 0xd5, 0xde, 0x0b, 0x4f, 0xdc, 0x74, 0xaa, - 0xea, 0x41, 0x00, 0xbe, 0x8c, 0x25, 0xfa, 0xbf, 0xa4, 0xa0, 0xc4, 0x6d, 0x3a, 0x47, 0x8e, 0xc5, - 0xef, 0xd7, 0xef, 0x7e, 0x37, 0xdc, 0x81, 0x8c, 0x15, 0x06, 0x6a, 0x6e, 0x22, 0x39, 0xd6, 0xbb, - 0x18, 0x73, 0x19, 0xfa, 0x1c, 0xf2, 0xb2, 0x1c, 0x51, 0xd7, 0x82, 0xfe, 0xed, 0x4c, 0x40, 0xb9, - 0xa8, 0xf4, 0xc4, 0x5e, 0x4e, 0xbd, 0x13, 0xb3, 0x2c, 0xe3, 0xa4, 0x08, 0xdd, 0x86, 0xb4, 0xe5, - 0x89, 0x30, 0x52, 0xff, 0xbe, 0xd5, 0xdb, 0x38, 0x6d, 0x79, 0xfa, 0x3f, 0xa5, 0x60, 0xa5, 0xe9, - 0x59, 0xc1, 0x44, 0xa4, 0x55, 0xbe, 0x11, 0x77, 0xa1, 0x18, 0x8e, 0x0f, 0xc3, 0x49, 0xc8, 0xe8, - 0x30, 0x7a, 0xdc, 0x8f, 0x05, 0xa8, 0x05, 0x45, 0xe2, 0x0e, 0xfc, 0xc0, 0x61, 0xc7, 0x43, 0xc5, - 0xa6, 0x17, 0xa7, 0xf2, 0xa4, 0xcd, 0x9a, 0x11, 0xa9, 0xe0, 0xa9, 0x76, 0x94, 0xbc, 0x33, 0xc2, - 0x59, 0x91, 0xbc, 0xdf, 0x84, 0xb2, 0x4b, 0x86, 0x9c, 0x3c, 0x9b, 0xbc, 0x48, 0x13, 0xf3, 0xc8, - 0xe2, 0x92, 0x92, 0xf1, 0xc2, 0x53, 0xd7, 0xa1, 0x18, 0x1b, 0x43, 0x6b, 0x50, 0x32, 0x9a, 0x5d, - 0xf3, 0xa3, 0xad, 0x07, 0xe6, 0xa3, 0xfa, 0x9e, 0xb6, 0xa4, 0xb8, 0xc3, 0xdf, 0xa7, 0x60, 0x65, - 0x4f, 0xc6, 0xa0, 0xa2, 0x5a, 0x6f, 0xc1, 0x72, 0x40, 0x8e, 0x58, 0x44, 0x06, 0xb3, 0x32, 0xb8, - 0x78, 0xda, 0xe0, 0x64, 0x90, 0x77, 0x2d, 0x26, 0x83, 0x89, 0xbf, 0x96, 0x32, 0xd7, 0xfe, 0xb5, - 0x94, 0xfd, 0x8d, 0xfc, 0xb5, 0xa4, 0xff, 0x63, 0x0a, 0xd6, 0xd4, 0xd5, 0x1e, 0xfd, 0x9d, 0xb2, - 0x90, 0xe0, 0xbf, 0x0b, 0x45, 0x79, 0xca, 0x4d, 0x55, 0xf8, 0x17, 0xe5, 0xbf, 0x1e, 0x52, 0xb7, - 0xd5, 0xc0, 0x05, 0xd9, 0xdd, 0xb2, 0xd1, 0x8f, 0xd5, 0xdb, 0x6a, 0xe6, 0xe5, 0x24, 0x73, 0x6e, - 0xc4, 0xda, 0xf4, 0xc1, 0x35, 0x51, 0x04, 0x67, 0x93, 0x45, 0xb0, 0x7e, 0x0f, 0xb2, 0x1c, 0x85, - 0x00, 0xf2, 0xdd, 0x2f, 0xba, 0xbd, 0xe6, 0x9e, 0x2c, 0xcf, 0x76, 0x5a, 0xe2, 0x9f, 0xad, 0x65, - 0xc8, 0x34, 0xdb, 0x07, 0x5a, 0xfa, 0xbd, 0x5f, 0x65, 0xa0, 0x18, 0x97, 0xfd, 0xfc, 0x08, 0x70, - 0xae, 0xb9, 0x24, 0x1f, 0xff, 0x62, 0x79, 0x5b, 0xb0, 0xcc, 0xa2, 0xb1, 0xbb, 0xbb, 0x5f, 0x37, - 0x7a, 0xcd, 0x86, 0xf6, 0xb9, 0x24, 0xa3, 0x31, 0xc0, 0x70, 0x5d, 0x9f, 0x07, 0xb1, 0x8d, 0xf4, - 0x29, 0x19, 0x7d, 0xae, 0x9e, 0x18, 0x63, 0x54, 0xc4, 0x44, 0xdf, 0x86, 0x82, 0xd1, 0xed, 0xb6, - 0x1e, 0xb5, 0x9b, 0x0d, 0xed, 0xab, 0x54, 0xe5, 0x7b, 0xe7, 0x17, 0xd5, 0x1b, 0x53, 0x53, 0x61, - 0xe8, 0x0c, 0x3c, 0x6a, 0x0b, 0x54, 0xbd, 0xde, 0xec, 0xf0, 0xf1, 0x9e, 0xa7, 0xe7, 0x51, 0x82, - 0x82, 0x89, 0xbf, 0x0b, 0x8a, 0x1d, 0xdc, 0xec, 0x18, 0x98, 0x8f, 0xf8, 0x55, 0x7a, 0xce, 0xaf, - 0x4e, 0x40, 0x47, 0x24, 0xe0, 0x63, 0x6e, 0x44, 0x7f, 0x9b, 0x3d, 0xcf, 0xc8, 0x27, 0xe5, 0xe9, - 0x5b, 0x07, 0x25, 0xf6, 0x84, 0x8f, 0x26, 0xde, 0x88, 0x84, 0x99, 0xcc, 0xdc, 0x68, 0x5d, 0x46, - 0x02, 0xc6, 0xad, 0xe8, 0xb0, 0x8c, 0xfb, 0xed, 0xb6, 0x98, 0x5d, 0x76, 0x6e, 0x76, 0x78, 0xec, - 0x79, 0x1c, 0x73, 0x0f, 0x0a, 0xd1, 0x13, 0x92, 0xf6, 0x55, 0x76, 0xce, 0xa1, 0x7a, 0xf4, 0xfe, - 0x25, 0x06, 0x7c, 0xdc, 0xef, 0x89, 0x7f, 0xf5, 0x9e, 0xe7, 0xe6, 0x07, 0x3c, 0x1e, 0x33, 0x9b, - 0xd3, 0xff, 0x6a, 0xcc, 0xc7, 0xbf, 0xca, 0x49, 0x1a, 0x14, 0x63, 0x24, 0x19, 0xe7, 0x76, 0x70, - 0xf3, 0xa7, 0xf2, 0x0f, 0xc0, 0xe7, 0xf9, 0x39, 0x3b, 0x98, 0x7e, 0x49, 0x2d, 0x46, 0xed, 0xe9, - 0x8b, 0x79, 0xdc, 0xf5, 0xde, 0xef, 0x41, 0x21, 0x4a, 0x80, 0x68, 0x03, 0xf2, 0x4f, 0xf7, 0xf1, - 0x93, 0x26, 0xd6, 0x96, 0xe4, 0xea, 0x44, 0x3d, 0x4f, 0xe5, 0x0d, 0x52, 0x85, 0xe5, 0x3d, 0xa3, - 0x6d, 0x3c, 0x6a, 0xe2, 0xe8, 0xc5, 0x3e, 0x02, 0xa8, 0x53, 0x5c, 0xd1, 0xd4, 0x00, 0xb1, 0xcd, - 0xed, 0xbb, 0x5f, 0x7f, 0xb3, 0xb1, 0xf4, 0x8b, 0x6f, 0x36, 0x96, 0x7e, 0xf9, 0xcd, 0x46, 0xea, - 0xf9, 0xd5, 0x46, 0xea, 0xeb, 0xab, 0x8d, 0xd4, 0xcf, 0xaf, 0x36, 0x52, 0xff, 0x71, 0xb5, 0x91, - 0x3a, 0xcc, 0x0b, 0x4e, 0xfa, 0xf1, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0xfd, 0x76, 0xe5, 0x63, - 0xc2, 0x22, 0x00, 0x00, + 0xf9, 0x07, 0x16, 0x08, 0x82, 0x3d, 0x24, 0x87, 0xa0, 0x3e, 0xba, 0xd9, 0xe4, 0x50, 0xf2, 0x4c, + 0x76, 0x4f, 0xdd, 0xf5, 0xea, 0xf7, 0x5e, 0x7d, 0xbd, 0x7a, 0xf5, 0x7b, 0x55, 0x50, 0x60, 0x93, + 0x11, 0x0d, 0x2a, 0x23, 0xdf, 0x63, 0x1e, 0x42, 0x96, 0x67, 0x1e, 0x53, 0xbf, 0x12, 0x9c, 0x12, + 0x7f, 0x78, 0x6c, 0xb3, 0xca, 0xc9, 0xc7, 0xa5, 0x3b, 0xcc, 0x1e, 0xd2, 0x80, 0x91, 0xe1, 0xe8, + 0xc3, 0xe8, 0x4f, 0xc2, 0x4b, 0x6f, 0x58, 0x63, 0x9f, 0x30, 0xdb, 0x73, 0x3f, 0x0c, 0x7f, 0x54, + 0xc5, 0xad, 0xbe, 0xd7, 0xf7, 0xc4, 0xef, 0x87, 0xfc, 0x4f, 0x4a, 0xf5, 0x4d, 0x58, 0x3e, 0xa0, + 0x7e, 0x60, 0x7b, 0x2e, 0xba, 0x05, 0x19, 0xdb, 0xb5, 0xe8, 0xf3, 0xf5, 0x44, 0x39, 0xf1, 0x20, + 0x8d, 0x65, 0x41, 0xff, 0xab, 0x04, 0x14, 0x0c, 0xd7, 0xf5, 0x98, 0xb0, 0x15, 0x20, 0x04, 0x69, + 0x97, 0x0c, 0xa9, 0x00, 0xe5, 0xb1, 0xf8, 0x47, 0x55, 0xc8, 0x3a, 0xe4, 0x90, 0x3a, 0xc1, 0x7a, + 0xb2, 0x9c, 0x7a, 0x50, 0xd8, 0xfa, 0x41, 0xe5, 0xe5, 0x3e, 0x57, 0x62, 0x46, 0x2a, 0xbb, 0x02, + 0x5d, 0x77, 0x99, 0x3f, 0xc1, 0x4a, 0xb5, 0xf4, 0x23, 0x28, 0xc4, 0xc4, 0x48, 0x83, 0xd4, 0x31, + 0x9d, 0xa8, 0x66, 0xf8, 0x2f, 0xef, 0xdf, 0x09, 0x71, 0xc6, 0x74, 0x3d, 0x29, 0x64, 0xb2, 0xf0, + 0x59, 0xf2, 0x61, 0x42, 0xff, 0x12, 0xf2, 0x98, 0x06, 0xde, 0xd8, 0x37, 0x69, 0x80, 0xde, 0x83, + 0xbc, 0x4b, 0x5c, 0xaf, 0x67, 0x8e, 0xc6, 0x81, 0x50, 0x4f, 0x6d, 0x17, 0x2f, 0x2f, 0x36, 0x73, + 0x4d, 0xe2, 0x7a, 0xd5, 0x56, 0x37, 0xc0, 0x39, 0x5e, 0x5d, 0x1d, 0x8d, 0x03, 0xf4, 0x36, 0x14, + 0x87, 0x74, 0xe8, 0xf9, 0x93, 0xde, 0xe1, 0x84, 0xd1, 0x40, 0x18, 0x4e, 0xe1, 0x82, 0x94, 0x6d, + 0x73, 0x91, 0xfe, 0x17, 0x09, 0xb8, 0x15, 0xda, 0xc6, 0xf4, 0xf7, 0xc7, 0xb6, 0x4f, 0x87, 0xd4, + 0x65, 0x01, 0xfa, 0x6d, 0xc8, 0x3a, 0xf6, 0xd0, 0x66, 0xb2, 0x8d, 0xc2, 0xd6, 0x5b, 0x8b, 0xc6, + 0x1c, 0xf5, 0x0a, 0x2b, 0x30, 0x32, 0xa0, 0xe8, 0xd3, 0x80, 0xfa, 0x27, 0x72, 0x26, 0x44, 0x93, + 0xdf, 0xa9, 0x3c, 0xa3, 0xa2, 0xef, 0x40, 0xae, 0xe5, 0x10, 0x76, 0xe4, 0xf9, 0x43, 0xa4, 0x43, + 0x91, 0xf8, 0xe6, 0xc0, 0x66, 0xd4, 0x64, 0x63, 0x3f, 0x5c, 0x95, 0x19, 0x19, 0xba, 0x0d, 0x49, + 0x4f, 0x36, 0x94, 0xdf, 0xce, 0x5e, 0x5e, 0x6c, 0x26, 0xf7, 0xdb, 0x38, 0xe9, 0x05, 0xfa, 0x23, + 0xb8, 0xd1, 0x72, 0xc6, 0x7d, 0xdb, 0xad, 0xd1, 0xc0, 0xf4, 0xed, 0x11, 0xb7, 0xce, 0x97, 0x97, + 0x3b, 0x5f, 0xb8, 0xbc, 0xfc, 0x3f, 0x5a, 0xf2, 0xe4, 0x74, 0xc9, 0xf5, 0x3f, 0x4b, 0xc2, 0x8d, + 0xba, 0xdb, 0xb7, 0x5d, 0x1a, 0xd7, 0xbe, 0x0f, 0xab, 0x54, 0x08, 0x7b, 0x27, 0xd2, 0xa9, 0x94, + 0x9d, 0x15, 0x29, 0x0d, 0x3d, 0xad, 0x31, 0xe7, 0x2f, 0x1f, 0x2f, 0x1a, 0xfe, 0x4b, 0xd6, 0x17, + 0x79, 0x0d, 0xaa, 0xc3, 0xf2, 0x48, 0x0c, 0x22, 0x58, 0x4f, 0x09, 0x5b, 0xf7, 0x17, 0xd9, 0x7a, + 0x69, 0x9c, 0xdb, 0xe9, 0x6f, 0x2e, 0x36, 0x97, 0x70, 0xa8, 0xfb, 0xeb, 0x38, 0xdf, 0x7f, 0x26, + 0x60, 0xad, 0xe9, 0x59, 0x33, 0xf3, 0x50, 0x82, 0xdc, 0xc0, 0x0b, 0x58, 0x6c, 0xa3, 0x44, 0x65, + 0xf4, 0x10, 0x72, 0x23, 0xb5, 0x7c, 0x6a, 0xf5, 0xef, 0x2e, 0xee, 0xb2, 0xc4, 0xe0, 0x08, 0x8d, + 0x1e, 0x41, 0xde, 0x0f, 0x7d, 0x62, 0x3d, 0xf5, 0x2a, 0x8e, 0x33, 0xc5, 0xa3, 0xdf, 0x81, 0xac, + 0x5c, 0x84, 0xf5, 0xb4, 0xd0, 0xbc, 0xff, 0x4a, 0x73, 0x8e, 0x95, 0x92, 0xfe, 0x8b, 0x04, 0x68, + 0x98, 0x1c, 0xb1, 0x3d, 0x3a, 0x3c, 0xa4, 0x7e, 0x9b, 0x11, 0x36, 0x0e, 0xd0, 0x6d, 0xc8, 0x3a, + 0x94, 0x58, 0xd4, 0x17, 0x83, 0xcc, 0x61, 0x55, 0x42, 0x5d, 0xee, 0xe4, 0xc4, 0x1c, 0x90, 0x43, + 0xdb, 0xb1, 0xd9, 0x44, 0x0c, 0x73, 0x75, 0xf1, 0x2a, 0xcf, 0xdb, 0xac, 0xe0, 0x98, 0x22, 0x9e, + 0x31, 0x83, 0xd6, 0x61, 0x79, 0x48, 0x83, 0x80, 0xf4, 0xa9, 0x18, 0x7d, 0x1e, 0x87, 0x45, 0xfd, + 0x11, 0x14, 0xe3, 0x7a, 0xa8, 0x00, 0xcb, 0xdd, 0xe6, 0xd3, 0xe6, 0xfe, 0xb3, 0xa6, 0xb6, 0x84, + 0xd6, 0xa0, 0xd0, 0x6d, 0xe2, 0xba, 0x51, 0x7d, 0x62, 0x6c, 0xef, 0xd6, 0xb5, 0x04, 0x5a, 0x81, + 0xfc, 0xb4, 0x98, 0xd4, 0x7f, 0x96, 0x00, 0xe0, 0x0b, 0xa8, 0x06, 0xf5, 0x19, 0x64, 0x02, 0x46, + 0x98, 0x5c, 0xb8, 0xd5, 0xad, 0x77, 0x16, 0xf5, 0x7a, 0x0a, 0xaf, 0xf0, 0x0f, 0xc5, 0x52, 0x25, + 0xde, 0xc3, 0xe4, 0x7c, 0x0f, 0x33, 0x02, 0x39, 0xdb, 0xb5, 0x1c, 0xa4, 0x6b, 0xfc, 0x2f, 0x81, + 0xf2, 0x90, 0xc1, 0x75, 0xa3, 0xf6, 0xa5, 0x96, 0x44, 0x1a, 0x14, 0x6b, 0x8d, 0x76, 0x75, 0xbf, + 0xd9, 0xac, 0x57, 0x3b, 0xf5, 0x9a, 0x96, 0xd2, 0xef, 0x43, 0xa6, 0x31, 0x24, 0x7d, 0x8a, 0xee, + 0x72, 0x0f, 0x38, 0xa2, 0x3e, 0x75, 0xcd, 0xd0, 0xb1, 0xa6, 0x02, 0xfd, 0xe7, 0x79, 0xc8, 0xec, + 0x79, 0x63, 0x97, 0xa1, 0xad, 0xd8, 0x2e, 0x5e, 0xdd, 0xda, 0x58, 0x34, 0x04, 0x01, 0xac, 0x74, + 0x26, 0x23, 0xaa, 0x76, 0xf9, 0x6d, 0xc8, 0x4a, 0x5f, 0x51, 0x5d, 0x57, 0x25, 0x2e, 0x67, 0xc4, + 0xef, 0x53, 0xa6, 0x26, 0x5d, 0x95, 0xd0, 0x03, 0xc8, 0xf9, 0x94, 0x58, 0x9e, 0xeb, 0x4c, 0x84, + 0x4b, 0xe5, 0x64, 0x98, 0xc5, 0x94, 0x58, 0xfb, 0xae, 0x33, 0xc1, 0x51, 0x2d, 0x7a, 0x02, 0xc5, + 0x43, 0xdb, 0xb5, 0x7a, 0xde, 0x48, 0xc6, 0xbc, 0xcc, 0xd5, 0x0e, 0x28, 0x7b, 0xb5, 0x6d, 0xbb, + 0xd6, 0xbe, 0x04, 0xe3, 0xc2, 0xe1, 0xb4, 0x80, 0x9a, 0xb0, 0x7a, 0xe2, 0x39, 0xe3, 0x21, 0x8d, + 0x6c, 0x65, 0x85, 0xad, 0x77, 0xaf, 0xb6, 0x75, 0x20, 0xf0, 0xa1, 0xb5, 0x95, 0x93, 0x78, 0x11, + 0x3d, 0x85, 0x15, 0x36, 0x1c, 0x1d, 0x05, 0x91, 0xb9, 0x65, 0x61, 0xee, 0xfb, 0xd7, 0x4c, 0x18, + 0x87, 0x87, 0xd6, 0x8a, 0x2c, 0x56, 0x2a, 0xfd, 0x49, 0x0a, 0x0a, 0xb1, 0x9e, 0xa3, 0x36, 0x14, + 0x46, 0xbe, 0x37, 0x22, 0x7d, 0x11, 0xb7, 0xd5, 0x5a, 0x7c, 0xfc, 0x4a, 0xa3, 0xae, 0xb4, 0xa6, + 0x8a, 0x38, 0x6e, 0x45, 0x3f, 0x4f, 0x42, 0x21, 0x56, 0x89, 0xde, 0x87, 0x1c, 0x6e, 0xe1, 0xc6, + 0x81, 0xd1, 0xa9, 0x6b, 0x4b, 0xa5, 0xbb, 0x67, 0xe7, 0xe5, 0x75, 0x61, 0x2d, 0x6e, 0xa0, 0xe5, + 0xdb, 0x27, 0xdc, 0xf5, 0x1e, 0xc0, 0x72, 0x08, 0x4d, 0x94, 0xde, 0x3c, 0x3b, 0x2f, 0xbf, 0x31, + 0x0f, 0x8d, 0x21, 0x71, 0xfb, 0x89, 0x81, 0xeb, 0x35, 0x2d, 0xb9, 0x18, 0x89, 0xdb, 0x03, 0xe2, + 0x53, 0x0b, 0x7d, 0x1f, 0xb2, 0x0a, 0x98, 0x2a, 0x95, 0xce, 0xce, 0xcb, 0xb7, 0xe7, 0x81, 0x53, + 0x1c, 0x6e, 0xef, 0x1a, 0x07, 0x75, 0x2d, 0xbd, 0x18, 0x87, 0xdb, 0x0e, 0x39, 0xa1, 0xe8, 0x1d, + 0xc8, 0x48, 0x58, 0xa6, 0x74, 0xe7, 0xec, 0xbc, 0xfc, 0xbd, 0x97, 0xcc, 0x71, 0x54, 0x69, 0xfd, + 0xcf, 0xff, 0x7a, 0x63, 0xe9, 0x1f, 0xfe, 0x66, 0x43, 0x9b, 0xaf, 0x2e, 0xfd, 0x6f, 0x02, 0x56, + 0x66, 0x96, 0x1c, 0xe9, 0x90, 0x75, 0x3d, 0xd3, 0x1b, 0xc9, 0x70, 0x9e, 0xdb, 0x86, 0xcb, 0x8b, + 0xcd, 0x6c, 0xd3, 0xab, 0x7a, 0xa3, 0x09, 0x56, 0x35, 0xe8, 0xe9, 0xdc, 0x81, 0xf4, 0xc9, 0x2b, + 0xfa, 0xd3, 0xc2, 0x23, 0xe9, 0x73, 0x58, 0xb1, 0x7c, 0xfb, 0x84, 0xfa, 0x3d, 0xd3, 0x73, 0x8f, + 0xec, 0xbe, 0x0a, 0xd5, 0xa5, 0x45, 0x36, 0x6b, 0x02, 0x88, 0x8b, 0x52, 0xa1, 0x2a, 0xf0, 0xbf, + 0xc6, 0x61, 0x54, 0x3a, 0x80, 0x62, 0xdc, 0x43, 0xd1, 0x5b, 0x00, 0x81, 0xfd, 0x07, 0x54, 0xf1, + 0x1b, 0xc1, 0x86, 0x70, 0x9e, 0x4b, 0x04, 0xbb, 0x41, 0xef, 0x42, 0x7a, 0xe8, 0x59, 0xd2, 0x4e, + 0x66, 0xfb, 0x26, 0x3f, 0x13, 0xff, 0xf5, 0x62, 0xb3, 0xe0, 0x05, 0x95, 0x1d, 0xdb, 0xa1, 0x7b, + 0x9e, 0x45, 0xb1, 0x00, 0xe8, 0x27, 0x90, 0xe6, 0xa1, 0x02, 0xbd, 0x09, 0xe9, 0xed, 0x46, 0xb3, + 0xa6, 0x2d, 0x95, 0x6e, 0x9c, 0x9d, 0x97, 0x57, 0xc4, 0x94, 0xf0, 0x0a, 0xee, 0xbb, 0x68, 0x13, + 0xb2, 0x07, 0xfb, 0xbb, 0xdd, 0x3d, 0xee, 0x5e, 0x37, 0xcf, 0xce, 0xcb, 0x6b, 0x51, 0xb5, 0x9c, + 0x34, 0xf4, 0x16, 0x64, 0x3a, 0x7b, 0xad, 0x9d, 0xb6, 0x96, 0x2c, 0xa1, 0xb3, 0xf3, 0xf2, 0x6a, + 0x54, 0x2f, 0xfa, 0x5c, 0xba, 0xa1, 0x56, 0x35, 0x1f, 0xc9, 0xf5, 0xff, 0x49, 0xc2, 0x0a, 0xe6, + 0xfc, 0xd6, 0x67, 0x2d, 0xcf, 0xb1, 0xcd, 0x09, 0x6a, 0x41, 0xde, 0xf4, 0x5c, 0xcb, 0x8e, 0xed, + 0xa9, 0xad, 0x2b, 0x0e, 0xc1, 0xa9, 0x56, 0x58, 0xaa, 0x86, 0x9a, 0x78, 0x6a, 0x04, 0x6d, 0x41, + 0xc6, 0xa2, 0x0e, 0x99, 0x5c, 0x77, 0x1a, 0xd7, 0x14, 0x97, 0xc6, 0x12, 0x2a, 0x98, 0x23, 0x79, + 0xde, 0x23, 0x8c, 0xd1, 0xe1, 0x88, 0xc9, 0xd3, 0x38, 0x8d, 0x0b, 0x43, 0xf2, 0xdc, 0x50, 0x22, + 0xf4, 0x43, 0xc8, 0x9e, 0xda, 0xae, 0xe5, 0x9d, 0xaa, 0x03, 0xf7, 0x7a, 0xbb, 0x0a, 0xab, 0x9f, + 0xf1, 0x73, 0x76, 0xae, 0xb3, 0x7c, 0xd6, 0x9b, 0xfb, 0xcd, 0x7a, 0x38, 0xeb, 0xaa, 0x7e, 0xdf, + 0x6d, 0x7a, 0x2e, 0xdf, 0x31, 0xb0, 0xdf, 0xec, 0xed, 0x18, 0x8d, 0xdd, 0x2e, 0xe6, 0x33, 0x7f, + 0xeb, 0xec, 0xbc, 0xac, 0x45, 0x90, 0x1d, 0x62, 0x3b, 0x9c, 0x04, 0xde, 0x81, 0x94, 0xd1, 0xfc, + 0x52, 0x4b, 0x96, 0xb4, 0xb3, 0xf3, 0x72, 0x31, 0xaa, 0x36, 0xdc, 0xc9, 0x74, 0x33, 0xcd, 0xb7, + 0xab, 0xff, 0x7b, 0x12, 0x8a, 0xdd, 0x91, 0x45, 0x18, 0x95, 0x9e, 0x89, 0xca, 0x50, 0x18, 0x11, + 0x9f, 0x38, 0x0e, 0x75, 0xec, 0x60, 0xa8, 0x12, 0x85, 0xb8, 0x08, 0x3d, 0x7c, 0x8d, 0xc9, 0x54, + 0x24, 0x4c, 0x4d, 0x69, 0x17, 0x56, 0x8f, 0x64, 0x67, 0x7b, 0xc4, 0x14, 0xab, 0x9b, 0x12, 0xab, + 0x5b, 0x59, 0x64, 0x22, 0xde, 0xab, 0x8a, 0x1a, 0xa3, 0x21, 0xb4, 0xf0, 0xca, 0x51, 0xbc, 0x88, + 0x3e, 0x85, 0xe5, 0xa1, 0xe7, 0xda, 0xcc, 0xf3, 0x5f, 0x69, 0x1d, 0x42, 0x30, 0x7a, 0x1f, 0x6e, + 0xf0, 0x15, 0x0e, 0xbb, 0x24, 0xaa, 0xc5, 0xc9, 0x95, 0xc4, 0x6b, 0x43, 0xf2, 0x5c, 0xb5, 0x89, + 0xb9, 0x58, 0xff, 0x14, 0x56, 0x66, 0xfa, 0xc0, 0x4f, 0xf3, 0x96, 0xd1, 0x6d, 0xd7, 0xb5, 0x25, + 0x54, 0x84, 0x5c, 0x75, 0xbf, 0xd9, 0x69, 0x34, 0xbb, 0x9c, 0x7a, 0x14, 0x21, 0x87, 0xf7, 0x77, + 0x77, 0xb7, 0x8d, 0xea, 0x53, 0x2d, 0xa9, 0xff, 0x77, 0x34, 0xbf, 0x8a, 0x7b, 0x6c, 0xcf, 0x72, + 0x8f, 0x0f, 0xae, 0x1e, 0xba, 0x62, 0x1f, 0xd3, 0x42, 0xc4, 0x41, 0x7e, 0x0c, 0x20, 0x96, 0x91, + 0x5a, 0x3d, 0xc2, 0xae, 0xcb, 0x2f, 0x3a, 0x61, 0xe6, 0x88, 0xf3, 0x4a, 0xc1, 0x60, 0xe8, 0x0b, + 0x28, 0x9a, 0xde, 0x70, 0xe4, 0x50, 0xa5, 0x9f, 0x7a, 0x15, 0xfd, 0x42, 0xa4, 0x62, 0xb0, 0x38, + 0x07, 0x4a, 0xcf, 0x72, 0xa0, 0x3f, 0x4d, 0x40, 0x21, 0xd6, 0xe1, 0x59, 0x2a, 0x54, 0x84, 0x5c, + 0xb7, 0x55, 0x33, 0x3a, 0x8d, 0xe6, 0x63, 0x2d, 0x81, 0x00, 0xb2, 0x62, 0x02, 0x6b, 0x5a, 0x92, + 0xd3, 0xb5, 0xea, 0xfe, 0x5e, 0x6b, 0xb7, 0x2e, 0xc8, 0x10, 0xba, 0x05, 0x5a, 0x38, 0x85, 0xbd, + 0x76, 0xc7, 0xc0, 0x5c, 0x9a, 0x46, 0x37, 0x61, 0x2d, 0x92, 0x2a, 0xcd, 0x0c, 0xba, 0x0d, 0x28, + 0x12, 0x4e, 0x4d, 0x64, 0xf5, 0x3f, 0x82, 0xb5, 0xaa, 0xe7, 0x32, 0x62, 0xbb, 0x11, 0x95, 0xdd, + 0xe2, 0xe3, 0x56, 0xa2, 0x9e, 0x6d, 0xc9, 0x68, 0xbb, 0xbd, 0x76, 0x79, 0xb1, 0x59, 0x88, 0xa0, + 0x8d, 0x1a, 0x1f, 0x69, 0x58, 0xb0, 0xf8, 0x9e, 0x1a, 0xd9, 0x96, 0x0a, 0x9e, 0xcb, 0x97, 0x17, + 0x9b, 0xa9, 0x56, 0xa3, 0x86, 0xb9, 0x0c, 0xbd, 0x09, 0x79, 0xfa, 0xdc, 0x66, 0x3d, 0x93, 0x47, + 0x57, 0x3e, 0x87, 0x19, 0x9c, 0xe3, 0x82, 0x2a, 0x0f, 0xa6, 0x7f, 0x9c, 0x04, 0xe8, 0x90, 0xe0, + 0x58, 0x35, 0xfd, 0x08, 0xf2, 0x51, 0x12, 0x7f, 0x5d, 0x32, 0x19, 0x5b, 0xaf, 0x08, 0x8f, 0x3e, + 0x09, 0x3d, 0x46, 0x72, 0xec, 0xc5, 0x8a, 0xaa, 0xad, 0x45, 0x34, 0x75, 0x96, 0x48, 0xf3, 0xb3, + 0x86, 0xfa, 0xbe, 0x5a, 0x38, 0xfe, 0x8b, 0xaa, 0x22, 0xde, 0xca, 0x31, 0x2b, 0xe6, 0x76, 0x6f, + 0x51, 0x23, 0x73, 0x13, 0xfa, 0x64, 0x09, 0x4f, 0xf5, 0xb6, 0x35, 0x58, 0xf5, 0xc7, 0x2e, 0xef, + 0x75, 0x2f, 0x10, 0xd5, 0xba, 0x0d, 0x6f, 0x34, 0x29, 0x3b, 0xf5, 0xfc, 0x63, 0x83, 0x31, 0x62, + 0x0e, 0x78, 0x52, 0xad, 0x82, 0xcc, 0x94, 0x70, 0x26, 0x66, 0x08, 0xe7, 0x3a, 0x2c, 0x13, 0xc7, + 0x26, 0x01, 0x95, 0xa7, 0x74, 0x1e, 0x87, 0x45, 0x4e, 0x8b, 0x89, 0x65, 0xf9, 0x34, 0x08, 0xa8, + 0x4c, 0x03, 0xf3, 0x78, 0x2a, 0xd0, 0xff, 0x39, 0x09, 0xd0, 0x68, 0x19, 0x7b, 0xca, 0x7c, 0x0d, + 0xb2, 0x47, 0x64, 0x68, 0x3b, 0x93, 0xeb, 0x36, 0xd9, 0x14, 0x5f, 0x31, 0xa4, 0xa1, 0x1d, 0xa1, + 0x83, 0x95, 0xae, 0x60, 0xcb, 0xe3, 0x43, 0x97, 0xb2, 0x88, 0x2d, 0x8b, 0x12, 0x3f, 0x9a, 0x7d, + 0xe2, 0x46, 0x13, 0x2b, 0x0b, 0xbc, 0xeb, 0x7d, 0xc2, 0xe8, 0x29, 0x99, 0x84, 0x7b, 0x42, 0x15, + 0xd1, 0x13, 0xce, 0xa2, 0x79, 0x72, 0x4f, 0xad, 0xf5, 0x8c, 0xe0, 0x1e, 0xdf, 0xd5, 0x1f, 0xac, + 0xe0, 0x92, 0x74, 0x44, 0xda, 0xa5, 0x47, 0xe2, 0xa4, 0x9c, 0x56, 0xbd, 0x56, 0x12, 0xfb, 0x11, + 0xac, 0xcc, 0x8c, 0xf3, 0xa5, 0x34, 0xa5, 0xd1, 0x3a, 0xf8, 0xa1, 0x96, 0x56, 0x7f, 0x9f, 0x6a, + 0x59, 0xfd, 0xbf, 0x12, 0x00, 0x2d, 0xcf, 0x0f, 0x17, 0x6d, 0xf1, 0xb5, 0x50, 0x4e, 0x5c, 0x32, + 0x99, 0x9e, 0xa3, 0xdc, 0x73, 0x21, 0x4f, 0x9f, 0x5a, 0xe1, 0xb4, 0x57, 0xc0, 0x71, 0xa4, 0x88, + 0x36, 0xa1, 0x20, 0xd7, 0xbf, 0x37, 0xf2, 0x7c, 0x19, 0x8f, 0x56, 0x30, 0x48, 0x11, 0xd7, 0x44, + 0xf7, 0x61, 0x75, 0x34, 0x3e, 0x74, 0xec, 0x60, 0x40, 0x2d, 0x89, 0x49, 0x0b, 0xcc, 0x4a, 0x24, + 0xe5, 0x30, 0xbd, 0x06, 0xb9, 0xd0, 0x3a, 0x5a, 0x87, 0x54, 0xa7, 0xda, 0xd2, 0x96, 0x4a, 0x6b, + 0x67, 0xe7, 0xe5, 0x42, 0x28, 0xee, 0x54, 0x5b, 0xbc, 0xa6, 0x5b, 0x6b, 0x69, 0x89, 0xd9, 0x9a, + 0x6e, 0xad, 0x55, 0x4a, 0xf3, 0x53, 0x52, 0xff, 0xcb, 0x04, 0x64, 0x25, 0x67, 0x5b, 0x38, 0x62, + 0x03, 0x96, 0xc3, 0x4c, 0x42, 0x12, 0xc9, 0x77, 0xaf, 0x26, 0x7d, 0x15, 0xc5, 0xd1, 0xe4, 0x3a, + 0x86, 0x7a, 0xa5, 0xcf, 0xa0, 0x18, 0xaf, 0x78, 0xad, 0x55, 0xfc, 0x43, 0x28, 0x70, 0x47, 0x09, + 0xc9, 0xdf, 0x16, 0x64, 0x25, 0xaf, 0x54, 0x51, 0xe5, 0x3a, 0x06, 0xaa, 0x90, 0xe8, 0x21, 0x2c, + 0x4b, 0xd6, 0x1a, 0xde, 0xa7, 0x6c, 0x5c, 0xef, 0x8e, 0x38, 0x84, 0xeb, 0x9f, 0x43, 0xba, 0x45, + 0xa9, 0x8f, 0xee, 0xc1, 0xb2, 0xeb, 0x59, 0x74, 0x1a, 0x44, 0x15, 0xe1, 0xb6, 0x68, 0xa3, 0xc6, + 0x09, 0xb7, 0x45, 0x1b, 0x16, 0x9f, 0x3c, 0xbe, 0x41, 0xc3, 0x2b, 0x25, 0xfe, 0xaf, 0x77, 0xa0, + 0xf8, 0x8c, 0xda, 0xfd, 0x01, 0xa3, 0x96, 0x30, 0xf4, 0x01, 0xa4, 0x47, 0x34, 0xea, 0xfc, 0xfa, + 0x42, 0xd7, 0xa1, 0xd4, 0xc7, 0x02, 0xc5, 0x37, 0xe4, 0xa9, 0xd0, 0x56, 0xb7, 0x78, 0xaa, 0xa4, + 0xff, 0x5d, 0x12, 0x56, 0x1b, 0x41, 0x30, 0x26, 0xae, 0x19, 0x9e, 0xb2, 0x3f, 0x99, 0x3d, 0x65, + 0x1f, 0x2c, 0x1c, 0xe1, 0x8c, 0xca, 0x6c, 0x96, 0xaf, 0x82, 0x64, 0x32, 0x0a, 0x92, 0xfa, 0x37, + 0x89, 0x30, 0xbd, 0xbf, 0x1f, 0xdb, 0x37, 0xa5, 0xf5, 0xb3, 0xf3, 0xf2, 0xad, 0xb8, 0x25, 0xda, + 0x75, 0x8f, 0x5d, 0xef, 0xd4, 0x45, 0x6f, 0xf3, 0x74, 0xbf, 0x59, 0x7f, 0xa6, 0x25, 0x4a, 0xb7, + 0xcf, 0xce, 0xcb, 0x68, 0x06, 0x84, 0xa9, 0x4b, 0x4f, 0xb9, 0xa5, 0x56, 0xbd, 0x59, 0xe3, 0xe7, + 0x61, 0x72, 0x81, 0xa5, 0x16, 0x75, 0x2d, 0xdb, 0xed, 0xa3, 0x7b, 0x90, 0x6d, 0xb4, 0xdb, 0x5d, + 0x91, 0x80, 0xbd, 0x71, 0x76, 0x5e, 0xbe, 0x39, 0x83, 0xe2, 0x05, 0x6a, 0x71, 0x10, 0x27, 0x88, + 0xfc, 0xa4, 0x5c, 0x00, 0xe2, 0xdc, 0x85, 0x5a, 0xca, 0xc3, 0xff, 0x2d, 0x09, 0x9a, 0x61, 0x9a, + 0x74, 0xc4, 0x78, 0xbd, 0x22, 0xdd, 0x1d, 0xc8, 0x8d, 0xf8, 0x9f, 0x2d, 0x92, 0x08, 0xee, 0x16, + 0x0f, 0x17, 0x5e, 0xf1, 0xce, 0xe9, 0x55, 0xb0, 0xe7, 0x50, 0xc3, 0x1a, 0xda, 0x41, 0xc0, 0x93, + 0x4b, 0x21, 0xc3, 0x91, 0xa5, 0xd2, 0x2f, 0x13, 0x70, 0x73, 0x01, 0x02, 0x7d, 0x04, 0x69, 0xdf, + 0x73, 0xc2, 0xe5, 0xb9, 0x7b, 0xd5, 0x05, 0x0c, 0x57, 0xc5, 0x02, 0x89, 0x36, 0x00, 0xc8, 0x98, + 0x79, 0x44, 0xb4, 0x2f, 0x16, 0x26, 0x87, 0x63, 0x12, 0xf4, 0x0c, 0xb2, 0x01, 0x35, 0x7d, 0x1a, + 0xf2, 0x99, 0xcf, 0xff, 0xbf, 0xbd, 0xaf, 0xb4, 0x85, 0x19, 0xac, 0xcc, 0x95, 0x2a, 0x90, 0x95, + 0x12, 0xee, 0xd1, 0x16, 0x61, 0x44, 0x74, 0xba, 0x88, 0xc5, 0x3f, 0x77, 0x14, 0xe2, 0xf4, 0x43, + 0x47, 0x21, 0x4e, 0x5f, 0xff, 0x59, 0x12, 0xa0, 0xfe, 0x9c, 0x51, 0xdf, 0x25, 0x4e, 0xd5, 0x40, + 0xf5, 0x58, 0x84, 0x94, 0xa3, 0x7d, 0x6f, 0xe1, 0xb5, 0x5c, 0xa4, 0x51, 0xa9, 0x1a, 0x0b, 0x62, + 0xe4, 0x1d, 0x48, 0x8d, 0x7d, 0x47, 0x5d, 0xf1, 0x0a, 0x22, 0xd2, 0xc5, 0xbb, 0x98, 0xcb, 0x50, + 0x7d, 0x1a, 0x91, 0x52, 0x57, 0xdf, 0xcd, 0xc7, 0x1a, 0xf8, 0xcd, 0x47, 0xa5, 0x0f, 0x00, 0xa6, + 0xbd, 0x46, 0x1b, 0x90, 0xa9, 0xee, 0xb4, 0xdb, 0xbb, 0xda, 0x92, 0xcc, 0x11, 0xa7, 0x55, 0x42, + 0xac, 0xff, 0x6d, 0x02, 0x72, 0x55, 0x43, 0x9d, 0x2a, 0x3b, 0xa0, 0x89, 0x58, 0x62, 0x52, 0x9f, + 0xf5, 0xe8, 0xf3, 0x91, 0xed, 0x4f, 0x54, 0x38, 0xb8, 0x9e, 0xc5, 0xaf, 0x72, 0xad, 0x2a, 0xf5, + 0x59, 0x5d, 0xe8, 0x20, 0x0c, 0x45, 0xaa, 0x86, 0xd8, 0x33, 0x49, 0x18, 0x9c, 0x37, 0xae, 0x9f, + 0x0a, 0xc9, 0xfe, 0xa6, 0xe5, 0x00, 0x17, 0x42, 0x23, 0x55, 0x12, 0xe8, 0x07, 0x70, 0x73, 0xdf, + 0x37, 0x07, 0x34, 0x60, 0xb2, 0x51, 0xd5, 0xe5, 0xcf, 0xe1, 0x2e, 0x23, 0xc1, 0x71, 0x6f, 0x60, + 0x07, 0xcc, 0xf3, 0x27, 0x3d, 0x9f, 0x32, 0xea, 0xf2, 0xfa, 0x9e, 0x78, 0x01, 0x50, 0x39, 0xf8, + 0x1d, 0x8e, 0x79, 0x22, 0x21, 0x38, 0x44, 0xec, 0x72, 0x80, 0xde, 0x80, 0x22, 0x27, 0x6c, 0x35, + 0x7a, 0x44, 0xc6, 0x0e, 0x0b, 0xd0, 0x8f, 0x00, 0x1c, 0xaf, 0xdf, 0x7b, 0xe5, 0x48, 0x9e, 0x77, + 0xbc, 0xbe, 0xfc, 0xd5, 0x7f, 0x17, 0xb4, 0x9a, 0x1d, 0x8c, 0x08, 0x33, 0x07, 0xe1, 0xe5, 0x02, + 0x7a, 0x0c, 0xda, 0x80, 0x12, 0x9f, 0x1d, 0x52, 0xc2, 0x7a, 0x23, 0xea, 0xdb, 0x9e, 0xf5, 0x4a, + 0x53, 0xba, 0x16, 0x69, 0xb5, 0x84, 0x92, 0xfe, 0xab, 0x04, 0x00, 0x26, 0x47, 0x21, 0x01, 0xf8, + 0x01, 0xdc, 0x08, 0x5c, 0x32, 0x0a, 0x06, 0x1e, 0xeb, 0xd9, 0x2e, 0xa3, 0xfe, 0x09, 0x71, 0x54, + 0x82, 0xa8, 0x85, 0x15, 0x0d, 0x25, 0x47, 0x1f, 0x00, 0x3a, 0xa6, 0x74, 0xd4, 0xf3, 0x1c, 0xab, + 0x17, 0x56, 0xca, 0x27, 0x8a, 0x34, 0xd6, 0x78, 0xcd, 0xbe, 0x63, 0xb5, 0x43, 0x39, 0xda, 0x86, + 0x0d, 0x3e, 0x03, 0xd4, 0x65, 0xbe, 0x4d, 0x83, 0xde, 0x91, 0xe7, 0xf7, 0x02, 0xc7, 0x3b, 0xed, + 0x1d, 0x79, 0x8e, 0xe3, 0x9d, 0x52, 0x3f, 0x4c, 0xbf, 0x4b, 0x8e, 0xd7, 0xaf, 0x4b, 0xd0, 0x8e, + 0xe7, 0xb7, 0x1d, 0xef, 0x74, 0x27, 0x44, 0x70, 0x96, 0x30, 0x1d, 0x36, 0xb3, 0xcd, 0xe3, 0x90, + 0x25, 0x44, 0xd2, 0x8e, 0x6d, 0x1e, 0xa3, 0x7b, 0xb0, 0x42, 0x1d, 0x2a, 0x92, 0x38, 0x89, 0xca, + 0x08, 0x54, 0x31, 0x14, 0x72, 0x10, 0x27, 0x4b, 0x72, 0xd3, 0x07, 0x6a, 0xec, 0x9b, 0xc0, 0x33, + 0xff, 0x9e, 0x8c, 0x09, 0xf2, 0x9a, 0x65, 0x05, 0xc3, 0x90, 0x3c, 0x57, 0x30, 0xfd, 0xb7, 0x20, + 0xdf, 0x72, 0x88, 0x29, 0x9e, 0x8e, 0x78, 0x12, 0x6d, 0x7a, 0x2e, 0x77, 0x1b, 0xdb, 0x65, 0x32, + 0x9e, 0xe6, 0x71, 0x5c, 0xa4, 0xff, 0x04, 0xe0, 0xa7, 0x9e, 0xed, 0x76, 0xbc, 0x63, 0xea, 0x8a, + 0x5b, 0x76, 0xce, 0x93, 0xd5, 0xe2, 0xe7, 0xb1, 0x2a, 0x09, 0x16, 0x4f, 0x5c, 0xd2, 0xa7, 0x7e, + 0x74, 0xd9, 0x2c, 0x8b, 0xfc, 0x38, 0xca, 0x62, 0xcf, 0x63, 0x55, 0x03, 0x95, 0x21, 0x6b, 0x92, + 0x5e, 0xb8, 0x57, 0x8b, 0xdb, 0xf9, 0xcb, 0x8b, 0xcd, 0x4c, 0xd5, 0x78, 0x4a, 0x27, 0x38, 0x63, + 0x92, 0xa7, 0x74, 0xc2, 0xcf, 0x6b, 0x93, 0x88, 0x1d, 0x26, 0xcc, 0x14, 0xe5, 0x79, 0x5d, 0x35, + 0xf8, 0xf6, 0xc1, 0x59, 0x93, 0xf0, 0x2f, 0xfa, 0x08, 0x8a, 0x0a, 0xd4, 0x1b, 0x90, 0x60, 0x20, + 0xd9, 0xed, 0xf6, 0xea, 0xe5, 0xc5, 0x26, 0x48, 0xe4, 0x13, 0x12, 0x0c, 0x30, 0x48, 0x34, 0xff, + 0x47, 0x75, 0x28, 0x7c, 0xe5, 0xd9, 0x6e, 0x8f, 0x89, 0x41, 0xa8, 0xdc, 0x7b, 0xe1, 0x8e, 0x9b, + 0x0e, 0x55, 0x5d, 0x08, 0xc0, 0x57, 0x91, 0x44, 0xff, 0x97, 0x04, 0x14, 0xb8, 0x4d, 0xfb, 0xc8, + 0x36, 0xf9, 0xf9, 0xfa, 0xfa, 0x67, 0xc3, 0x1d, 0x48, 0x99, 0x81, 0xaf, 0xc6, 0x26, 0x82, 0x63, + 0xb5, 0x8d, 0x31, 0x97, 0xa1, 0x2f, 0x20, 0x2b, 0xd3, 0x11, 0x75, 0x2c, 0xe8, 0xdf, 0xcd, 0x04, + 0x54, 0x17, 0x95, 0x9e, 0x58, 0xcb, 0x69, 0xef, 0xc4, 0x28, 0x8b, 0x38, 0x2e, 0x42, 0xb7, 0x21, + 0x69, 0xba, 0xc2, 0x8d, 0xd4, 0xeb, 0x5b, 0xb5, 0x89, 0x93, 0xa6, 0xab, 0xff, 0x53, 0x02, 0x56, + 0xea, 0xae, 0xe9, 0x4f, 0x44, 0x58, 0xe5, 0x0b, 0x71, 0x17, 0xf2, 0xc1, 0xf8, 0x30, 0x98, 0x04, + 0x8c, 0x0e, 0xc3, 0xcb, 0xfd, 0x48, 0x80, 0x1a, 0x90, 0x27, 0x4e, 0xdf, 0xf3, 0x6d, 0x36, 0x18, + 0x2a, 0x36, 0xbd, 0x38, 0x94, 0xc7, 0x6d, 0x56, 0x8c, 0x50, 0x05, 0x4f, 0xb5, 0xc3, 0xe0, 0x9d, + 0x12, 0x9d, 0x15, 0xc1, 0xfb, 0x6d, 0x28, 0x3a, 0x64, 0xc8, 0xc9, 0x73, 0x8f, 0x27, 0x69, 0x62, + 0x1c, 0x69, 0x5c, 0x50, 0x32, 0x9e, 0x78, 0xea, 0x3a, 0xe4, 0x23, 0x63, 0x68, 0x0d, 0x0a, 0x46, + 0xbd, 0xdd, 0xfb, 0x78, 0xeb, 0x61, 0xef, 0x71, 0x75, 0x4f, 0x5b, 0x52, 0xdc, 0xe1, 0xef, 0x13, + 0xb0, 0xb2, 0x27, 0x7d, 0x50, 0x51, 0xad, 0x7b, 0xb0, 0xec, 0x93, 0x23, 0x16, 0x92, 0xc1, 0xb4, + 0x74, 0x2e, 0x1e, 0x36, 0x38, 0x19, 0xe4, 0x55, 0x8b, 0xc9, 0x60, 0xec, 0x69, 0x29, 0x75, 0xed, + 0xd3, 0x52, 0xfa, 0x37, 0xf2, 0xb4, 0xa4, 0xff, 0x63, 0x02, 0xd6, 0xd4, 0xd1, 0x1e, 0x3e, 0xa7, + 0xa0, 0xf7, 0x20, 0x2f, 0x77, 0xf4, 0x94, 0xca, 0x8a, 0x17, 0x0e, 0x89, 0x6b, 0xd4, 0x70, 0x4e, + 0x56, 0x37, 0x2c, 0xf4, 0xe3, 0xd8, 0x3d, 0xea, 0x15, 0x84, 0x72, 0xce, 0x7a, 0x65, 0x7a, 0xb9, + 0x7a, 0xe5, 0x0b, 0x4b, 0x98, 0x61, 0xa4, 0x63, 0xef, 0xae, 0xf7, 0x21, 0xcd, 0x35, 0x11, 0x40, + 0xb6, 0xfd, 0x65, 0xbb, 0x53, 0xdf, 0x93, 0xe9, 0xd9, 0x4e, 0x43, 0xbc, 0x6c, 0x2d, 0x43, 0xaa, + 0xde, 0x3c, 0xd0, 0x92, 0xef, 0xff, 0x2a, 0x05, 0xf9, 0x28, 0xed, 0xe7, 0x5b, 0x80, 0x73, 0xcd, + 0x25, 0x79, 0xf9, 0x17, 0xc9, 0x9b, 0x82, 0x65, 0xe6, 0x8d, 0xdd, 0xdd, 0xfd, 0xaa, 0xd1, 0xa9, + 0xd7, 0xb4, 0x2f, 0x24, 0x19, 0x8d, 0x00, 0x86, 0xe3, 0x78, 0xdc, 0x89, 0x2d, 0xa4, 0x4f, 0xc9, + 0xe8, 0x0b, 0x75, 0xc5, 0x18, 0xa1, 0x42, 0x26, 0xfa, 0x0e, 0xe4, 0x8c, 0x76, 0xbb, 0xf1, 0xb8, + 0x59, 0xaf, 0x69, 0x5f, 0x27, 0x4a, 0xdf, 0x3b, 0x3b, 0x2f, 0xdf, 0x98, 0x9a, 0x0a, 0x02, 0xbb, + 0xef, 0x52, 0x4b, 0xa0, 0xaa, 0xd5, 0x7a, 0x8b, 0xb7, 0xf7, 0x22, 0x39, 0x8f, 0x12, 0x14, 0x4c, + 0x3c, 0x17, 0xe4, 0x5b, 0xb8, 0xde, 0x32, 0x30, 0x6f, 0xf1, 0xeb, 0xe4, 0x5c, 0xbf, 0x5a, 0x3e, + 0x1d, 0x11, 0x9f, 0xb7, 0xb9, 0x11, 0x3e, 0x9b, 0xbd, 0x48, 0xc9, 0x2b, 0xe5, 0xe9, 0x5d, 0x07, + 0x25, 0xd6, 0x84, 0xb7, 0x26, 0xee, 0x88, 0x84, 0x99, 0xd4, 0x5c, 0x6b, 0x6d, 0x46, 0x7c, 0xc6, + 0xad, 0xe8, 0xb0, 0x8c, 0xbb, 0xcd, 0xa6, 0x18, 0x5d, 0x7a, 0x6e, 0x74, 0x78, 0xec, 0xba, 0x1c, + 0x73, 0x1f, 0x72, 0xe1, 0x15, 0x92, 0xf6, 0x75, 0x7a, 0xae, 0x43, 0xd5, 0xf0, 0xfe, 0x4b, 0x34, + 0xf8, 0xa4, 0xdb, 0x11, 0xaf, 0x7a, 0x2f, 0x32, 0xf3, 0x0d, 0x0e, 0xc6, 0xcc, 0xe2, 0xf4, 0xbf, + 0x1c, 0xf1, 0xf1, 0xaf, 0x33, 0x92, 0x06, 0x45, 0x18, 0x49, 0xc6, 0xb9, 0x1d, 0x5c, 0xff, 0xa9, + 0x7c, 0x00, 0x7c, 0x91, 0x9d, 0xb3, 0x83, 0xe9, 0x57, 0xd4, 0x64, 0xd4, 0x9a, 0xde, 0x98, 0x47, + 0x55, 0xef, 0xff, 0x1e, 0xe4, 0xc2, 0x00, 0x88, 0x36, 0x20, 0xfb, 0x6c, 0x1f, 0x3f, 0xad, 0x63, + 0x6d, 0x49, 0xce, 0x4e, 0x58, 0xf3, 0x4c, 0x9e, 0x20, 0x65, 0x58, 0xde, 0x33, 0x9a, 0xc6, 0xe3, + 0x3a, 0x0e, 0x6f, 0xec, 0x43, 0x80, 0xda, 0xc5, 0x25, 0x4d, 0x35, 0x10, 0xd9, 0xdc, 0xbe, 0xfb, + 0xcd, 0xb7, 0x1b, 0x4b, 0xbf, 0xf8, 0x76, 0x63, 0xe9, 0x97, 0xdf, 0x6e, 0x24, 0x5e, 0x5c, 0x6e, + 0x24, 0xbe, 0xb9, 0xdc, 0x48, 0xfc, 0xfc, 0x72, 0x23, 0xf1, 0x1f, 0x97, 0x1b, 0x89, 0xc3, 0xac, + 0xe0, 0xa4, 0x9f, 0xfc, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xe5, 0xda, 0x79, 0xf7, 0xc2, 0x22, + 0x00, 0x00, } diff --git a/api/types.proto b/api/types.proto index cde1e878f7..69e2e0f73c 100644 --- a/api/types.proto +++ b/api/types.proto @@ -758,13 +758,10 @@ message ManagerStatus { // SecretReference is the linkage between a service and a secret that it uses. message SecretReference { - // Name is the name of the secret that this references. - string name = 1; - // SecretID represents the ID of the specific Secret that we're // referencing. This identifier exists so that SecretReferences don't leak // any information about the secret contents. - string secret_id = 2 [(gogoproto.customname) = "SecretID"]; + string secret_id = 1 [(gogoproto.customname) = "SecretID"]; // Mode specifies how this secret should be exposed to the task. enum Mode { @@ -778,8 +775,12 @@ message SecretReference { } // Mode is the way the secret should be presented. - Mode mode = 3; + Mode mode = 2; // Target is the name by which the image accesses the secret. - string target = 4; + string target = 3; + + // Name is the name of the secret that this references, but this is just provided for + // lookup/display purposes. The secret in the reference will be identified by its ID. + string name = 4; } From ac092dee4c5df2bf92f56e9bbd7d0fd27a60ab88 Mon Sep 17 00:00:00 2001 From: cyli Date: Fri, 23 Sep 2016 10:31:25 -0700 Subject: [PATCH 9/9] Add stub implementations of the secret control APIs to satisfy the interface Signed-off-by: cyli --- api/specs.pb.go | 211 +++++------- api/specs.proto | 6 +- api/types.pb.go | 633 ++++++++++++++--------------------- api/types.proto | 12 +- manager/controlapi/secret.go | 50 +++ 5 files changed, 378 insertions(+), 534 deletions(-) create mode 100644 manager/controlapi/secret.go diff --git a/api/specs.pb.go b/api/specs.pb.go index 88b9d93d2d..2e1ce2e5c5 100644 --- a/api/specs.pb.go +++ b/api/specs.pb.go @@ -552,9 +552,6 @@ type ClusterSpec struct { CAConfig CAConfig `protobuf:"bytes,6,opt,name=ca_config,json=caConfig" json:"ca_config"` // TaskDefaults specifies the default values to use for task creation. TaskDefaults TaskDefaults `protobuf:"bytes,7,opt,name=task_defaults,json=taskDefaults" json:"task_defaults"` - // SecretConfig specifies cluster-level secret configuration settings, such as - // maximum number of secrets. - Secrets SecretsConfig `protobuf:"bytes,8,opt,name=secrets" json:"secrets"` } func (m *ClusterSpec) Reset() { *m = ClusterSpec{} } @@ -564,7 +561,7 @@ func (*ClusterSpec) Descriptor() ([]byte, []int) { return fileDescriptorSpecs, [ // SecretSpec specifies a user-provided secret. type SecretSpec struct { Annotations Annotations `protobuf:"bytes,1,opt,name=annotations" json:"annotations"` - // Secret payload. + // Data is the secret payload - the maximum size is 500KB (that is, 500*1024 bytes) Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` } @@ -839,7 +836,6 @@ func (m *ClusterSpec) Copy() *ClusterSpec { Dispatcher: *m.Dispatcher.Copy(), CAConfig: *m.CAConfig.Copy(), TaskDefaults: *m.TaskDefaults.Copy(), - Secrets: *m.Secrets.Copy(), } return o @@ -1069,7 +1065,7 @@ func (this *ClusterSpec) GoString() string { if this == nil { return "nil" } - s := make([]string, 0, 12) + s := make([]string, 0, 11) s = append(s, "&api.ClusterSpec{") s = append(s, "Annotations: "+strings.Replace(this.Annotations.GoString(), `&`, ``, 1)+",\n") s = append(s, "AcceptancePolicy: "+strings.Replace(this.AcceptancePolicy.GoString(), `&`, ``, 1)+",\n") @@ -1078,7 +1074,6 @@ func (this *ClusterSpec) GoString() string { s = append(s, "Dispatcher: "+strings.Replace(this.Dispatcher.GoString(), `&`, ``, 1)+",\n") s = append(s, "CAConfig: "+strings.Replace(this.CAConfig.GoString(), `&`, ``, 1)+",\n") s = append(s, "TaskDefaults: "+strings.Replace(this.TaskDefaults.GoString(), `&`, ``, 1)+",\n") - s = append(s, "Secrets: "+strings.Replace(this.Secrets.GoString(), `&`, ``, 1)+",\n") s = append(s, "}") return strings.Join(s, "") } @@ -1796,14 +1791,6 @@ func (m *ClusterSpec) MarshalTo(data []byte) (int, error) { return 0, err } i += n27 - data[i] = 0x42 - i++ - i = encodeVarintSpecs(data, i, uint64(m.Secrets.Size())) - n28, err := m.Secrets.MarshalTo(data[i:]) - if err != nil { - return 0, err - } - i += n28 return i, nil } @@ -1825,11 +1812,11 @@ func (m *SecretSpec) MarshalTo(data []byte) (int, error) { data[i] = 0xa i++ i = encodeVarintSpecs(data, i, uint64(m.Annotations.Size())) - n29, err := m.Annotations.MarshalTo(data[i:]) + n28, err := m.Annotations.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n29 + i += n28 if len(m.Data) > 0 { data[i] = 0x12 i++ @@ -2140,8 +2127,6 @@ func (m *ClusterSpec) Size() (n int) { n += 1 + l + sovSpecs(uint64(l)) l = m.TaskDefaults.Size() n += 1 + l + sovSpecs(uint64(l)) - l = m.Secrets.Size() - n += 1 + l + sovSpecs(uint64(l)) return n } @@ -2361,7 +2346,6 @@ func (this *ClusterSpec) String() string { `Dispatcher:` + strings.Replace(strings.Replace(this.Dispatcher.String(), "DispatcherConfig", "DispatcherConfig", 1), `&`, ``, 1) + `,`, `CAConfig:` + strings.Replace(strings.Replace(this.CAConfig.String(), "CAConfig", "CAConfig", 1), `&`, ``, 1) + `,`, `TaskDefaults:` + strings.Replace(strings.Replace(this.TaskDefaults.String(), "TaskDefaults", "TaskDefaults", 1), `&`, ``, 1) + `,`, - `Secrets:` + strings.Replace(strings.Replace(this.Secrets.String(), "SecretsConfig", "SecretsConfig", 1), `&`, ``, 1) + `,`, `}`, }, "") return s @@ -4389,36 +4373,6 @@ func (m *ClusterSpec) Unmarshal(data []byte) error { return err } iNdEx = postIndex - case 8: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Secrets", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSpecs - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - msglen |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthSpecs - } - postIndex := iNdEx + msglen - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Secrets.Unmarshal(data[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipSpecs(data[iNdEx:]) @@ -4659,97 +4613,96 @@ var ( func init() { proto.RegisterFile("specs.proto", fileDescriptorSpecs) } var fileDescriptorSpecs = []byte{ - // 1458 bytes of a gzipped FileDescriptorProto + // 1443 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x57, 0xcd, 0x6e, 0x1b, 0xc9, 0x11, 0xe6, 0x48, 0x23, 0x8a, 0xac, 0xa1, 0x6c, 0xba, 0xe1, 0x9f, 0x31, 0xed, 0x50, 0x34, 0xed, 0x38, 0x72, 0x82, 0x48, 0x09, 0x13, 0x38, 0x76, 0x1c, 0x23, 0xe1, 0x5f, 0x64, 0x46, 0x91, 0x4c, 0xb4, 0x6c, 0x03, 0x39, 0x11, 0xad, 0x99, 0x16, 0x35, 0xd0, 0x70, 0x7a, 0xd2, 0xd3, 0x43, 0x43, - 0xb7, 0x1c, 0x0d, 0x1d, 0xf2, 0x06, 0x3a, 0xed, 0x33, 0xec, 0x3b, 0xf8, 0xb8, 0xc7, 0x3d, 0x09, - 0x2b, 0xdd, 0x16, 0x8b, 0x05, 0x16, 0xd8, 0x17, 0x58, 0x74, 0x4f, 0x93, 0x1c, 0xae, 0x47, 0xb6, - 0x81, 0xd5, 0xad, 0xbb, 0xfa, 0xfb, 0xaa, 0x6b, 0xaa, 0x3e, 0x56, 0x17, 0xc1, 0x8a, 0x42, 0xea, - 0x44, 0xeb, 0x21, 0x67, 0x82, 0x21, 0xe4, 0x32, 0xe7, 0x90, 0xf2, 0xf5, 0xe8, 0x2d, 0xe1, 0xa3, - 0x43, 0x4f, 0xac, 0x8f, 0xff, 0x58, 0xb1, 0xc4, 0x51, 0x48, 0x35, 0xa0, 0x72, 0x7d, 0xc8, 0x86, - 0x4c, 0x2d, 0x37, 0xe4, 0x4a, 0x5b, 0x6f, 0xb9, 0x31, 0x27, 0xc2, 0x63, 0xc1, 0xc6, 0x64, 0x91, - 0x1c, 0xd4, 0xff, 0x6f, 0x42, 0x61, 0x87, 0xb9, 0x74, 0x37, 0xa4, 0x0e, 0xda, 0x04, 0x8b, 0x04, - 0x01, 0x13, 0x0a, 0x10, 0xd9, 0x46, 0xcd, 0x58, 0xb3, 0x1a, 0xab, 0xeb, 0x1f, 0x5e, 0xb9, 0xde, + 0xb7, 0x1c, 0x0d, 0x1d, 0xf2, 0x06, 0x3a, 0x2d, 0xb0, 0x6f, 0xb0, 0xef, 0xe0, 0xe3, 0x1e, 0xf7, + 0x24, 0xac, 0x74, 0x5d, 0x2c, 0xb0, 0xc0, 0xbe, 0xc0, 0xa2, 0x7b, 0x9a, 0xe4, 0x70, 0x3d, 0xb2, + 0x0d, 0xac, 0x6e, 0xd5, 0xd5, 0xdf, 0x57, 0x5d, 0xac, 0xfa, 0xa6, 0xba, 0x09, 0x56, 0x14, 0x52, + 0x27, 0x5a, 0x0f, 0x39, 0x13, 0x0c, 0x21, 0x97, 0x39, 0x87, 0x94, 0xaf, 0x47, 0x6f, 0x09, 0x1f, + 0x1d, 0x7a, 0x62, 0x7d, 0xfc, 0xc7, 0x8a, 0x25, 0x8e, 0x42, 0xaa, 0x01, 0x95, 0xeb, 0x43, 0x36, + 0x64, 0xca, 0xdc, 0x90, 0x96, 0xf6, 0xde, 0x72, 0x63, 0x4e, 0x84, 0xc7, 0x82, 0x8d, 0x89, 0x91, + 0x6c, 0xd4, 0xff, 0x6f, 0x42, 0x61, 0x87, 0xb9, 0x74, 0x37, 0xa4, 0x0e, 0xda, 0x04, 0x8b, 0x04, + 0x01, 0x13, 0x0a, 0x10, 0xd9, 0x46, 0xcd, 0x58, 0xb3, 0x1a, 0xab, 0xeb, 0x1f, 0x1e, 0xb9, 0xde, 0x9c, 0xc1, 0x5a, 0xe6, 0xfb, 0xd3, 0xd5, 0x1c, 0x4e, 0x33, 0xd1, 0x1f, 0xc0, 0xe4, 0xcc, 0xa7, - 0xf6, 0x42, 0xcd, 0x58, 0xbb, 0xd2, 0xb8, 0x9b, 0xe5, 0x41, 0x5e, 0x8a, 0x99, 0x4f, 0xb1, 0x42, + 0xf6, 0x42, 0xcd, 0x58, 0xbb, 0xd2, 0xb8, 0x9b, 0x15, 0x41, 0x1e, 0x8a, 0x99, 0x4f, 0xb1, 0x42, 0xa2, 0x4d, 0x80, 0x11, 0x1d, 0xed, 0x51, 0x1e, 0x1d, 0x78, 0xa1, 0xbd, 0xa8, 0x78, 0xbf, 0xb9, - 0x88, 0x27, 0x83, 0x5d, 0xdf, 0x9e, 0xc2, 0x71, 0x8a, 0x8a, 0xb6, 0xa1, 0x44, 0xc6, 0xc4, 0xf3, - 0xc9, 0x9e, 0xe7, 0x7b, 0xe2, 0xc8, 0x36, 0x95, 0xab, 0x47, 0x1f, 0x75, 0xd5, 0x4c, 0x11, 0xf0, - 0x1c, 0xbd, 0xee, 0x02, 0xcc, 0x2e, 0x42, 0x0f, 0x61, 0xb9, 0xdf, 0xdd, 0xe9, 0xf4, 0x76, 0x36, - 0xcb, 0xb9, 0xca, 0xed, 0xe3, 0x93, 0xda, 0x0d, 0xe9, 0x63, 0x06, 0xe8, 0xd3, 0xc0, 0xf5, 0x82, + 0x88, 0x27, 0x93, 0x5d, 0xdf, 0x9e, 0xc2, 0x71, 0x8a, 0x8a, 0xb6, 0xa1, 0x44, 0xc6, 0xc4, 0xf3, + 0xc9, 0x9e, 0xe7, 0x7b, 0xe2, 0xc8, 0x36, 0x55, 0xa8, 0x47, 0x1f, 0x0d, 0xd5, 0x4c, 0x11, 0xf0, + 0x1c, 0xbd, 0xee, 0x02, 0xcc, 0x0e, 0x42, 0x0f, 0x61, 0xb9, 0xdf, 0xdd, 0xe9, 0xf4, 0x76, 0x36, + 0xcb, 0xb9, 0xca, 0xed, 0xe3, 0x93, 0xda, 0x0d, 0x19, 0x63, 0x06, 0xe8, 0xd3, 0xc0, 0xf5, 0x82, 0x21, 0x5a, 0x83, 0x42, 0xb3, 0xdd, 0xee, 0xf6, 0x5f, 0x75, 0x3b, 0x65, 0xa3, 0x52, 0x39, 0x3e, 0xa9, 0xdd, 0x9c, 0x07, 0x36, 0x1d, 0x87, 0x86, 0x82, 0xba, 0x15, 0xf3, 0xdd, 0x17, 0xd5, 0x5c, - 0xfd, 0x9d, 0x01, 0xa5, 0x74, 0x10, 0xe8, 0x21, 0xe4, 0x9b, 0xed, 0x57, 0xbd, 0x37, 0xdd, 0x72, + 0xfd, 0x9d, 0x01, 0xa5, 0x74, 0x12, 0xe8, 0x21, 0xe4, 0x9b, 0xed, 0x57, 0xbd, 0x37, 0xdd, 0x72, 0x6e, 0x46, 0x4f, 0x23, 0x9a, 0x8e, 0xf0, 0xc6, 0x14, 0x3d, 0x80, 0xa5, 0x7e, 0xf3, 0xf5, 0x6e, - 0xb7, 0x6c, 0xcc, 0xc2, 0x49, 0xc3, 0xfa, 0x24, 0x8e, 0x14, 0xaa, 0x83, 0x9b, 0xbd, 0x9d, 0xf2, - 0x42, 0x36, 0xaa, 0xc3, 0x89, 0x17, 0xe8, 0x50, 0xce, 0x16, 0xc1, 0xda, 0xa5, 0x7c, 0xec, 0x39, + 0xb7, 0x6c, 0xcc, 0xd2, 0x49, 0xc3, 0xfa, 0x24, 0x8e, 0x14, 0xaa, 0x83, 0x9b, 0xbd, 0x9d, 0xf2, + 0x42, 0x36, 0xaa, 0xc3, 0x89, 0x17, 0xe8, 0x54, 0xce, 0x16, 0xc1, 0xda, 0xa5, 0x7c, 0xec, 0x39, 0x97, 0xac, 0x89, 0xc7, 0x60, 0x0a, 0x12, 0x1d, 0x2a, 0x4d, 0x58, 0xd9, 0x9a, 0x78, 0x45, 0xa2, - 0x43, 0x79, 0xa9, 0xa6, 0x2b, 0xbc, 0x54, 0x06, 0xa7, 0xa1, 0xef, 0x39, 0x44, 0x50, 0x57, 0x29, - 0xc3, 0x6a, 0xfc, 0x3a, 0x8b, 0x8d, 0xa7, 0x28, 0x1d, 0xff, 0x8b, 0x1c, 0x4e, 0x51, 0xd1, 0x33, - 0xc8, 0x0f, 0x7d, 0xb6, 0x47, 0x7c, 0xa5, 0x09, 0xab, 0x71, 0x2f, 0xcb, 0xc9, 0xa6, 0x42, 0xcc, - 0x1c, 0x68, 0x0a, 0x7a, 0x02, 0xf9, 0x38, 0x74, 0x89, 0xa0, 0x76, 0x5e, 0x91, 0x6b, 0x59, 0xe4, + 0x43, 0x79, 0xa8, 0xa6, 0x2b, 0xbc, 0x54, 0x06, 0xa7, 0xa1, 0xef, 0x39, 0x44, 0x50, 0x57, 0x29, + 0xc3, 0x6a, 0xfc, 0x3a, 0x8b, 0x8d, 0xa7, 0x28, 0x9d, 0xff, 0x8b, 0x1c, 0x4e, 0x51, 0xd1, 0x33, + 0xc8, 0x0f, 0x7d, 0xb6, 0x47, 0x7c, 0xa5, 0x09, 0xab, 0x71, 0x2f, 0x2b, 0xc8, 0xa6, 0x42, 0xcc, + 0x02, 0x68, 0x0a, 0x7a, 0x02, 0xf9, 0x38, 0x74, 0x89, 0xa0, 0x76, 0x5e, 0x91, 0x6b, 0x59, 0xe4, 0xd7, 0x0a, 0xd1, 0x66, 0xc1, 0xbe, 0x37, 0xc4, 0x1a, 0x8f, 0xb6, 0xa0, 0x10, 0x50, 0xf1, 0x96, 0xf1, 0xc3, 0xc8, 0x5e, 0xae, 0x2d, 0xae, 0x59, 0x8d, 0xdf, 0x65, 0x8a, 0x31, 0xc1, 0x34, 0x85, - 0x20, 0xce, 0xc1, 0x88, 0x06, 0x22, 0x71, 0xd3, 0x5a, 0xb0, 0x0d, 0x3c, 0x75, 0x80, 0xfe, 0x06, - 0x05, 0x1a, 0xb8, 0x21, 0xf3, 0x02, 0x61, 0x17, 0x2e, 0x0e, 0xa4, 0xab, 0x31, 0x32, 0x99, 0x78, - 0xca, 0x68, 0xe5, 0xc1, 0x1c, 0x31, 0x97, 0xd6, 0x37, 0xe0, 0xda, 0x07, 0xc9, 0x42, 0x15, 0x28, - 0xe8, 0x64, 0x25, 0x55, 0x36, 0xf1, 0x74, 0x5f, 0xbf, 0x0a, 0x2b, 0x73, 0x89, 0xa9, 0x7f, 0xb7, - 0x08, 0x85, 0x49, 0xb5, 0x50, 0x13, 0x8a, 0x0e, 0x0b, 0x04, 0xf1, 0x02, 0xca, 0xb5, 0x40, 0x32, - 0x73, 0xdb, 0x9e, 0x80, 0x24, 0xeb, 0x45, 0x0e, 0xcf, 0x58, 0xe8, 0x9f, 0x50, 0xe4, 0x34, 0x62, - 0x31, 0x77, 0x68, 0xa4, 0x15, 0xb2, 0x96, 0x5d, 0xe3, 0x04, 0x84, 0xe9, 0x7f, 0x63, 0x8f, 0x53, - 0x99, 0xa7, 0x08, 0xcf, 0xa8, 0xe8, 0x19, 0x2c, 0x73, 0x1a, 0x09, 0xc2, 0xc5, 0xc7, 0x8a, 0x8c, - 0x13, 0x48, 0x9f, 0xf9, 0x9e, 0x73, 0x84, 0x27, 0x0c, 0xf4, 0x0c, 0x8a, 0xa1, 0x4f, 0x1c, 0xe5, + 0x20, 0xce, 0xc1, 0x88, 0x06, 0x22, 0x09, 0xd3, 0x5a, 0xb0, 0x0d, 0x3c, 0x0d, 0x80, 0xfe, 0x06, + 0x05, 0x1a, 0xb8, 0x21, 0xf3, 0x02, 0x61, 0x17, 0x2e, 0x4e, 0xa4, 0xab, 0x31, 0xb2, 0x98, 0x78, + 0xca, 0x68, 0xe5, 0xc1, 0x1c, 0x31, 0x97, 0xd6, 0x37, 0xe0, 0xda, 0x07, 0xc5, 0x42, 0x15, 0x28, + 0xe8, 0x62, 0x25, 0x5d, 0x36, 0xf1, 0x74, 0x5d, 0xbf, 0x0a, 0x2b, 0x73, 0x85, 0xa9, 0x7f, 0xb7, + 0x08, 0x85, 0x49, 0xb7, 0x50, 0x13, 0x8a, 0x0e, 0x0b, 0x04, 0xf1, 0x02, 0xca, 0xb5, 0x40, 0x32, + 0x6b, 0xdb, 0x9e, 0x80, 0x24, 0xeb, 0x45, 0x0e, 0xcf, 0x58, 0xe8, 0x9f, 0x50, 0xe4, 0x34, 0x62, + 0x31, 0x77, 0x68, 0xa4, 0x15, 0xb2, 0x96, 0xdd, 0xe3, 0x04, 0x84, 0xe9, 0x7f, 0x63, 0x8f, 0x53, + 0x59, 0xa7, 0x08, 0xcf, 0xa8, 0xe8, 0x19, 0x2c, 0x73, 0x1a, 0x09, 0xc2, 0xc5, 0xc7, 0x9a, 0x8c, + 0x13, 0x48, 0x9f, 0xf9, 0x9e, 0x73, 0x84, 0x27, 0x0c, 0xf4, 0x0c, 0x8a, 0xa1, 0x4f, 0x1c, 0x15, 0xd5, 0x5e, 0x52, 0xf4, 0x5f, 0x65, 0xd1, 0xfb, 0x13, 0x10, 0x9e, 0xe1, 0xd1, 0x53, 0x00, 0x9f, 0x0d, 0x07, 0x2e, 0xf7, 0xc6, 0x94, 0x6b, 0x91, 0x54, 0xb2, 0xd8, 0x1d, 0x85, 0xc0, 0x45, 0x9f, - 0x0d, 0x93, 0x25, 0xda, 0xfc, 0x45, 0x0a, 0x49, 0xa9, 0x63, 0x0b, 0x80, 0x4c, 0x4f, 0xb5, 0x3e, - 0x1e, 0x7d, 0x96, 0x2b, 0x5d, 0x91, 0x14, 0xbd, 0x55, 0x84, 0x65, 0x1e, 0x07, 0xc2, 0x1b, 0xd1, - 0xfa, 0x16, 0xdc, 0xc8, 0x64, 0xa0, 0x06, 0x94, 0xa6, 0x35, 0x1c, 0x78, 0xae, 0x2a, 0x7e, 0xb1, - 0x75, 0xf5, 0xfc, 0x74, 0xd5, 0x9a, 0x16, 0xbb, 0xd7, 0xc1, 0xd6, 0x14, 0xd4, 0x73, 0xeb, 0xdf, - 0x9b, 0xb0, 0x32, 0xa7, 0x04, 0x74, 0x1d, 0x96, 0xbc, 0x11, 0x19, 0xd2, 0x84, 0x8e, 0x93, 0x0d, - 0xea, 0x42, 0xde, 0x27, 0x7b, 0xd4, 0x97, 0x7a, 0x90, 0x39, 0xf9, 0xfd, 0x27, 0x25, 0xb5, 0xfe, - 0x6f, 0x85, 0xef, 0x06, 0x82, 0x1f, 0x61, 0x4d, 0x46, 0x36, 0x2c, 0x3b, 0x6c, 0x34, 0x22, 0x81, - 0xec, 0x1d, 0x8b, 0x6b, 0x45, 0x3c, 0xd9, 0x22, 0x04, 0x26, 0xe1, 0xc3, 0xc8, 0x36, 0x95, 0x59, - 0xad, 0x51, 0x19, 0x16, 0x69, 0x30, 0xb6, 0x97, 0x94, 0x49, 0x2e, 0xa5, 0xc5, 0xf5, 0x92, 0x82, - 0x16, 0xb1, 0x5c, 0x4a, 0x5e, 0x1c, 0x51, 0x6e, 0x2f, 0x2b, 0x93, 0x5a, 0xa3, 0xbf, 0x40, 0x7e, - 0xc4, 0xe2, 0x40, 0x44, 0x76, 0x41, 0x05, 0x7b, 0x3b, 0x2b, 0xd8, 0x6d, 0x89, 0xd0, 0xbd, 0x4d, - 0xc3, 0xd1, 0x0b, 0xb8, 0x16, 0x09, 0x16, 0x0e, 0x86, 0x9c, 0x38, 0x74, 0x10, 0x52, 0xee, 0x31, - 0xd7, 0x2e, 0x5e, 0xdc, 0x22, 0x3b, 0xfa, 0xf9, 0xc6, 0x57, 0x25, 0x6d, 0x53, 0xb2, 0xfa, 0x8a, - 0x84, 0xfa, 0x50, 0x0a, 0x63, 0xdf, 0x1f, 0xb0, 0x30, 0xe9, 0xd4, 0xa0, 0x9c, 0x7c, 0x46, 0xd6, - 0xfa, 0xb1, 0xef, 0xbf, 0x4c, 0x48, 0xd8, 0x0a, 0x67, 0x1b, 0x74, 0x13, 0xf2, 0x43, 0xce, 0xe2, - 0x30, 0xb2, 0x2d, 0x95, 0x0f, 0xbd, 0x43, 0xcf, 0x61, 0x39, 0xa2, 0x0e, 0xa7, 0x22, 0xb2, 0x4b, - 0xea, 0x6b, 0xef, 0x67, 0x5d, 0xb2, 0xab, 0x20, 0x98, 0xee, 0x53, 0x4e, 0x03, 0x87, 0xe2, 0x09, - 0xa7, 0xf2, 0x14, 0xac, 0x54, 0xa1, 0x64, 0x82, 0x0f, 0xe9, 0x91, 0xae, 0xbd, 0x5c, 0x4a, 0x3d, - 0x8c, 0x89, 0x1f, 0x27, 0xe3, 0x43, 0x11, 0x27, 0x9b, 0xbf, 0x2e, 0x3c, 0x31, 0x2a, 0x0d, 0xb0, - 0x52, 0xd1, 0xa2, 0xfb, 0xb0, 0xc2, 0xe9, 0xd0, 0x8b, 0x04, 0x3f, 0x1a, 0x90, 0x58, 0x1c, 0xd8, - 0xff, 0x50, 0x84, 0xd2, 0xc4, 0xd8, 0x8c, 0xc5, 0x41, 0xfd, 0x47, 0x03, 0x4a, 0xe9, 0x7e, 0x88, - 0xda, 0x49, 0x17, 0x54, 0x37, 0x5e, 0x69, 0x6c, 0x7c, 0xaa, 0x7f, 0xaa, 0x9e, 0xe3, 0xc7, 0xf2, - 0xc6, 0x6d, 0x39, 0xb3, 0x28, 0x32, 0xfa, 0x33, 0x2c, 0x85, 0x8c, 0x8b, 0x89, 0x38, 0xab, 0x99, - 0x7d, 0x82, 0xf1, 0xc9, 0x6f, 0x34, 0x01, 0xd7, 0x0f, 0xe0, 0xca, 0xbc, 0x37, 0xf4, 0x00, 0x16, - 0xdf, 0xf4, 0xfa, 0xe5, 0x5c, 0xe5, 0xce, 0xf1, 0x49, 0xed, 0xd6, 0xfc, 0xe1, 0x1b, 0x8f, 0x8b, - 0x98, 0xf8, 0xbd, 0x3e, 0xfa, 0x2d, 0x2c, 0x75, 0x76, 0x76, 0x31, 0x2e, 0x1b, 0x95, 0xd5, 0xe3, - 0x93, 0xda, 0x9d, 0x79, 0x9c, 0x3c, 0x62, 0x71, 0xe0, 0x62, 0xb6, 0x37, 0x7d, 0xc6, 0xbf, 0x5c, - 0x00, 0x4b, 0xff, 0x66, 0x2f, 0xf7, 0x19, 0xff, 0x3b, 0xac, 0x24, 0x3d, 0x6e, 0xe0, 0xa8, 0x4f, - 0xd3, 0xdd, 0xfa, 0x63, 0xad, 0xae, 0x94, 0x10, 0x92, 0x54, 0xa0, 0x7b, 0x50, 0xf2, 0xc2, 0xf1, - 0xe3, 0x01, 0x0d, 0xc8, 0x9e, 0xaf, 0x5f, 0xf4, 0x02, 0xb6, 0xa4, 0xad, 0x9b, 0x98, 0xe4, 0x53, - 0xe4, 0x05, 0x82, 0xf2, 0x40, 0xbf, 0xd5, 0x05, 0x3c, 0xdd, 0xa3, 0xe7, 0x60, 0x7a, 0x21, 0x19, - 0xe9, 0xfe, 0x9c, 0xf9, 0x05, 0xbd, 0x7e, 0x73, 0x5b, 0x4b, 0xa4, 0x55, 0x38, 0x3f, 0x5d, 0x35, - 0xa5, 0x01, 0x2b, 0x1a, 0xaa, 0x4e, 0x5a, 0xa4, 0xbc, 0x49, 0xfd, 0xaa, 0x0b, 0x38, 0x65, 0xa9, - 0x7f, 0x6b, 0x82, 0xd5, 0xf6, 0xe3, 0x48, 0xe8, 0xde, 0x74, 0x69, 0x79, 0xfb, 0x0f, 0x5c, 0x23, - 0x6a, 0xe8, 0x23, 0x81, 0xfc, 0xa1, 0xab, 0xa7, 0x47, 0xe7, 0xee, 0x41, 0xa6, 0xbb, 0x29, 0x38, - 0x79, 0xa6, 0x5a, 0x79, 0xe9, 0xd3, 0x36, 0x70, 0x99, 0xfc, 0xec, 0x04, 0xed, 0xc2, 0x0a, 0xe3, - 0xce, 0x01, 0x8d, 0x44, 0xd2, 0x1b, 0xf4, 0x90, 0x94, 0x39, 0x3e, 0xbf, 0x4c, 0x03, 0xf5, 0x88, - 0x91, 0x44, 0x3b, 0xef, 0x03, 0x3d, 0x01, 0x93, 0x93, 0xfd, 0xc9, 0x33, 0x9a, 0xa9, 0x6f, 0x4c, - 0xf6, 0xc5, 0x9c, 0x0b, 0xc5, 0x40, 0xff, 0x02, 0x70, 0xbd, 0x28, 0x24, 0xc2, 0x39, 0xa0, 0x5c, - 0xd7, 0x29, 0xf3, 0x13, 0x3b, 0x53, 0xd4, 0x9c, 0x97, 0x14, 0x1b, 0x6d, 0x41, 0xd1, 0x21, 0x13, - 0xa5, 0xe5, 0x2f, 0x6e, 0x8b, 0xed, 0xa6, 0x76, 0x51, 0x96, 0x2e, 0xce, 0x4f, 0x57, 0x0b, 0x13, - 0x0b, 0x2e, 0x38, 0x44, 0x2b, 0x6f, 0x0b, 0x56, 0xe4, 0x44, 0x39, 0x70, 0xe9, 0x3e, 0x89, 0x7d, - 0x11, 0xa9, 0x0e, 0x7e, 0xc1, 0x04, 0x25, 0x87, 0x9b, 0x8e, 0xc6, 0xe9, 0xb8, 0x4a, 0x22, 0x65, - 0x43, 0xcd, 0x59, 0x13, 0x2c, 0x5c, 0x3c, 0x69, 0x24, 0x4d, 0x30, 0x9a, 0xfb, 0xbe, 0x09, 0xaf, - 0xee, 0x01, 0x24, 0xe7, 0x97, 0xab, 0x34, 0x04, 0xa6, 0x4b, 0x04, 0x51, 0xe2, 0x2a, 0x61, 0xb5, - 0x6e, 0xdd, 0x7d, 0x7f, 0x56, 0xcd, 0x7d, 0x7d, 0x56, 0xcd, 0xfd, 0x70, 0x56, 0x35, 0xfe, 0x77, - 0x5e, 0x35, 0xde, 0x9f, 0x57, 0x8d, 0xaf, 0xce, 0xab, 0xc6, 0x37, 0xe7, 0x55, 0x63, 0x2f, 0xaf, - 0xfe, 0x0b, 0xfe, 0xe9, 0xa7, 0x00, 0x00, 0x00, 0xff, 0xff, 0xad, 0x1a, 0xf2, 0x2e, 0x6a, 0x0e, - 0x00, 0x00, + 0x0d, 0x13, 0x13, 0x6d, 0xfe, 0x22, 0x85, 0xa4, 0xd4, 0xb1, 0x05, 0x40, 0xa6, 0xbb, 0x5a, 0x1f, + 0x8f, 0x3e, 0x2b, 0x94, 0xee, 0x48, 0x8a, 0xde, 0x2a, 0xc2, 0x32, 0x8f, 0x03, 0xe1, 0x8d, 0x68, + 0x7d, 0x0b, 0x6e, 0x64, 0x32, 0x50, 0x03, 0x4a, 0xd3, 0x1e, 0x0e, 0x3c, 0x57, 0x35, 0xbf, 0xd8, + 0xba, 0x7a, 0x7e, 0xba, 0x6a, 0x4d, 0x9b, 0xdd, 0xeb, 0x60, 0x6b, 0x0a, 0xea, 0xb9, 0xf5, 0xef, + 0x4d, 0x58, 0x99, 0x53, 0x02, 0xba, 0x0e, 0x4b, 0xde, 0x88, 0x0c, 0x69, 0x42, 0xc7, 0xc9, 0x02, + 0x75, 0x21, 0xef, 0x93, 0x3d, 0xea, 0x4b, 0x3d, 0xc8, 0x9a, 0xfc, 0xfe, 0x93, 0x92, 0x5a, 0xff, + 0xb7, 0xc2, 0x77, 0x03, 0xc1, 0x8f, 0xb0, 0x26, 0x23, 0x1b, 0x96, 0x1d, 0x36, 0x1a, 0x91, 0x40, + 0xce, 0x8e, 0xc5, 0xb5, 0x22, 0x9e, 0x2c, 0x11, 0x02, 0x93, 0xf0, 0x61, 0x64, 0x9b, 0xca, 0xad, + 0x6c, 0x54, 0x86, 0x45, 0x1a, 0x8c, 0xed, 0x25, 0xe5, 0x92, 0xa6, 0xf4, 0xb8, 0x5e, 0xd2, 0xd0, + 0x22, 0x96, 0xa6, 0xe4, 0xc5, 0x11, 0xe5, 0xf6, 0xb2, 0x72, 0x29, 0x1b, 0xfd, 0x05, 0xf2, 0x23, + 0x16, 0x07, 0x22, 0xb2, 0x0b, 0x2a, 0xd9, 0xdb, 0x59, 0xc9, 0x6e, 0x4b, 0x84, 0x9e, 0x6d, 0x1a, + 0x8e, 0x5e, 0xc0, 0xb5, 0x48, 0xb0, 0x70, 0x30, 0xe4, 0xc4, 0xa1, 0x83, 0x90, 0x72, 0x8f, 0xb9, + 0x76, 0xf1, 0xe2, 0x11, 0xd9, 0xd1, 0xd7, 0x37, 0xbe, 0x2a, 0x69, 0x9b, 0x92, 0xd5, 0x57, 0x24, + 0xd4, 0x87, 0x52, 0x18, 0xfb, 0xfe, 0x80, 0x85, 0xc9, 0xa4, 0x06, 0x15, 0xe4, 0x33, 0xaa, 0xd6, + 0x8f, 0x7d, 0xff, 0x65, 0x42, 0xc2, 0x56, 0x38, 0x5b, 0xa0, 0x9b, 0x90, 0x1f, 0x72, 0x16, 0x87, + 0x91, 0x6d, 0xa9, 0x7a, 0xe8, 0x15, 0x7a, 0x0e, 0xcb, 0x11, 0x75, 0x38, 0x15, 0x91, 0x5d, 0x52, + 0xbf, 0xf6, 0x7e, 0xd6, 0x21, 0xbb, 0x0a, 0x82, 0xe9, 0x3e, 0xe5, 0x34, 0x70, 0x28, 0x9e, 0x70, + 0x2a, 0x4f, 0xc1, 0x4a, 0x35, 0x4a, 0x16, 0xf8, 0x90, 0x1e, 0xe9, 0xde, 0x4b, 0x53, 0xea, 0x61, + 0x4c, 0xfc, 0x38, 0x79, 0x3e, 0x14, 0x71, 0xb2, 0xf8, 0xeb, 0xc2, 0x13, 0xa3, 0xd2, 0x00, 0x2b, + 0x95, 0x2d, 0xba, 0x0f, 0x2b, 0x9c, 0x0e, 0xbd, 0x48, 0xf0, 0xa3, 0x01, 0x89, 0xc5, 0x81, 0xfd, + 0x0f, 0x45, 0x28, 0x4d, 0x9c, 0xcd, 0x58, 0x1c, 0xd4, 0x7f, 0x34, 0xa0, 0x94, 0x9e, 0x87, 0xa8, + 0x9d, 0x4c, 0x41, 0x75, 0xe2, 0x95, 0xc6, 0xc6, 0xa7, 0xe6, 0xa7, 0x9a, 0x39, 0x7e, 0x2c, 0x4f, + 0xdc, 0x96, 0x6f, 0x16, 0x45, 0x46, 0x7f, 0x86, 0xa5, 0x90, 0x71, 0x31, 0x11, 0x67, 0x35, 0x73, + 0x4e, 0x30, 0x3e, 0xf9, 0x46, 0x13, 0x70, 0xfd, 0x00, 0xae, 0xcc, 0x47, 0x43, 0x0f, 0x60, 0xf1, + 0x4d, 0xaf, 0x5f, 0xce, 0x55, 0xee, 0x1c, 0x9f, 0xd4, 0x6e, 0xcd, 0x6f, 0xbe, 0xf1, 0xb8, 0x88, + 0x89, 0xdf, 0xeb, 0xa3, 0xdf, 0xc2, 0x52, 0x67, 0x67, 0x17, 0xe3, 0xb2, 0x51, 0x59, 0x3d, 0x3e, + 0xa9, 0xdd, 0x99, 0xc7, 0xc9, 0x2d, 0x16, 0x07, 0x2e, 0x66, 0x7b, 0xd3, 0x6b, 0xfc, 0xab, 0x05, + 0xb0, 0xf4, 0x37, 0x7b, 0xb9, 0xd7, 0xf8, 0xdf, 0x61, 0x25, 0x99, 0x71, 0x03, 0x47, 0xfd, 0x34, + 0x3d, 0xad, 0x3f, 0x36, 0xea, 0x4a, 0x09, 0x21, 0x29, 0x05, 0xba, 0x07, 0x25, 0x2f, 0x1c, 0x3f, + 0x1e, 0xd0, 0x80, 0xec, 0xf9, 0xfa, 0x46, 0x2f, 0x60, 0x4b, 0xfa, 0xba, 0x89, 0x4b, 0x5e, 0x45, + 0x5e, 0x20, 0x28, 0x0f, 0xf4, 0x5d, 0x5d, 0xc0, 0xd3, 0x35, 0x7a, 0x0e, 0xa6, 0x17, 0x92, 0x91, + 0x9e, 0xcf, 0x99, 0xbf, 0xa0, 0xd7, 0x6f, 0x6e, 0x6b, 0x89, 0xb4, 0x0a, 0xe7, 0xa7, 0xab, 0xa6, + 0x74, 0x60, 0x45, 0x43, 0xd5, 0xc9, 0x88, 0x94, 0x27, 0xa9, 0xaf, 0xba, 0x80, 0x53, 0x9e, 0xfa, + 0x97, 0x26, 0x58, 0x6d, 0x3f, 0x8e, 0x84, 0x9e, 0x4d, 0x97, 0x56, 0xb7, 0xff, 0xc0, 0x35, 0xa2, + 0x1e, 0x7d, 0x24, 0x90, 0x1f, 0xba, 0xba, 0x7a, 0x74, 0xed, 0x1e, 0x64, 0x86, 0x9b, 0x82, 0x93, + 0x6b, 0xaa, 0x95, 0x97, 0x31, 0x6d, 0x03, 0x97, 0xc9, 0xcf, 0x76, 0xd0, 0x2e, 0xac, 0x30, 0xee, + 0x1c, 0xd0, 0x48, 0x24, 0xb3, 0x41, 0x3f, 0x92, 0x32, 0x9f, 0xcf, 0x2f, 0xd3, 0x40, 0xfd, 0xc4, + 0x48, 0xb2, 0x9d, 0x8f, 0x81, 0x9e, 0x80, 0xc9, 0xc9, 0xfe, 0xe4, 0x1a, 0xcd, 0xd4, 0x37, 0x26, + 0xfb, 0x62, 0x2e, 0x84, 0x62, 0xa0, 0x7f, 0x01, 0xb8, 0x5e, 0x14, 0x12, 0xe1, 0x1c, 0x50, 0xae, + 0xfb, 0x94, 0xf9, 0x13, 0x3b, 0x53, 0xd4, 0x5c, 0x94, 0x14, 0x1b, 0x6d, 0x41, 0xd1, 0x21, 0x13, + 0xa5, 0xe5, 0x2f, 0x1e, 0x8b, 0xed, 0xa6, 0x0e, 0x51, 0x96, 0x21, 0xce, 0x4f, 0x57, 0x0b, 0x13, + 0x0f, 0x2e, 0x38, 0x44, 0x2b, 0x6f, 0x0b, 0x56, 0xe4, 0x8b, 0x72, 0xe0, 0xd2, 0x7d, 0x12, 0xfb, + 0x22, 0x52, 0x13, 0xfc, 0x82, 0x17, 0x94, 0x7c, 0xdc, 0x74, 0x34, 0x4e, 0xe7, 0x55, 0x12, 0x29, + 0x5f, 0xdd, 0x03, 0x48, 0x26, 0xdc, 0xe5, 0xca, 0x04, 0x81, 0xe9, 0x12, 0x41, 0x94, 0x32, 0x4a, + 0x58, 0xd9, 0xad, 0xbb, 0xef, 0xcf, 0xaa, 0xb9, 0x6f, 0xce, 0xaa, 0xb9, 0x1f, 0xce, 0xaa, 0xc6, + 0xff, 0xce, 0xab, 0xc6, 0xfb, 0xf3, 0xaa, 0xf1, 0xf5, 0x79, 0xd5, 0xf8, 0xf6, 0xbc, 0x6a, 0xec, + 0xe5, 0xd5, 0x1f, 0xb9, 0x3f, 0xfd, 0x14, 0x00, 0x00, 0xff, 0xff, 0xc3, 0xfc, 0x45, 0x4e, 0x27, + 0x0e, 0x00, 0x00, } diff --git a/api/specs.proto b/api/specs.proto index 26bd8050b7..4a42a63a54 100644 --- a/api/specs.proto +++ b/api/specs.proto @@ -274,16 +274,12 @@ message ClusterSpec { // TaskDefaults specifies the default values to use for task creation. TaskDefaults task_defaults = 7 [(gogoproto.nullable) = false]; - - // SecretConfig specifies cluster-level secret configuration settings, such as - // maximum number of secrets. - SecretsConfig secrets = 8 [(gogoproto.nullable) = false]; } // SecretSpec specifies a user-provided secret. message SecretSpec { Annotations annotations = 1 [(gogoproto.nullable) = false]; - // Secret payload. + // Data is the secret payload - the maximum size is 500KB (that is, 500*1024 bytes) bytes data = 2; } diff --git a/api/types.pb.go b/api/types.pb.go index d1dc8970b5..11fd41fe53 100644 --- a/api/types.pb.go +++ b/api/types.pb.go @@ -50,7 +50,6 @@ TaskDefaults DispatcherConfig RaftConfig - SecretsConfig Placement JoinTokens RootCA @@ -606,7 +605,7 @@ func (x EncryptionKey_Algorithm) String() string { return proto.EnumName(EncryptionKey_Algorithm_name, int32(x)) } func (EncryptionKey_Algorithm) EnumDescriptor() ([]byte, []int) { - return fileDescriptorTypes, []int{37, 0} + return fileDescriptorTypes, []int{36, 0} } // Mode specifies how this secret should be exposed to the task. @@ -636,7 +635,7 @@ var SecretReference_Mode_value = map[string]int32{ func (x SecretReference_Mode) String() string { return proto.EnumName(SecretReference_Mode_name, int32(x)) } -func (SecretReference_Mode) EnumDescriptor() ([]byte, []int) { return fileDescriptorTypes, []int{39, 0} } +func (SecretReference_Mode) EnumDescriptor() ([]byte, []int) { return fileDescriptorTypes, []int{38, 0} } // Version tracks the last time an object in the store was updated. type Version struct { @@ -1293,17 +1292,6 @@ func (m *RaftConfig) Reset() { *m = RaftConfig{} } func (*RaftConfig) ProtoMessage() {} func (*RaftConfig) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{31} } -// SecretsConfig specifies cluster-level secrets settings. -type SecretsConfig struct { - // MaxSecrets specifies how many user-specified secrets there can be. A value - // of 0 will be interpreted as the default maximum value. - MaxSecrets uint32 `protobuf:"varint,1,opt,name=max_secrets,json=maxSecrets,proto3" json:"max_secrets,omitempty"` -} - -func (m *SecretsConfig) Reset() { *m = SecretsConfig{} } -func (*SecretsConfig) ProtoMessage() {} -func (*SecretsConfig) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{32} } - // Placement specifies task distribution constraints. type Placement struct { // constraints specifies a set of requirements a node should meet for a task. @@ -1312,7 +1300,7 @@ type Placement struct { func (m *Placement) Reset() { *m = Placement{} } func (*Placement) ProtoMessage() {} -func (*Placement) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{33} } +func (*Placement) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{32} } // JoinToken contains the join tokens for workers and managers. type JoinTokens struct { @@ -1324,7 +1312,7 @@ type JoinTokens struct { func (m *JoinTokens) Reset() { *m = JoinTokens{} } func (*JoinTokens) ProtoMessage() {} -func (*JoinTokens) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{34} } +func (*JoinTokens) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{33} } type RootCA struct { // CAKey is the root CA private key. @@ -1339,7 +1327,7 @@ type RootCA struct { func (m *RootCA) Reset() { *m = RootCA{} } func (*RootCA) ProtoMessage() {} -func (*RootCA) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{35} } +func (*RootCA) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{34} } type Certificate struct { Role NodeRole `protobuf:"varint,1,opt,name=role,proto3,enum=docker.swarmkit.v1.NodeRole" json:"role,omitempty"` @@ -1352,7 +1340,7 @@ type Certificate struct { func (m *Certificate) Reset() { *m = Certificate{} } func (*Certificate) ProtoMessage() {} -func (*Certificate) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{36} } +func (*Certificate) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{35} } // Symmetric keys to encrypt inter-agent communication. type EncryptionKey struct { @@ -1368,7 +1356,7 @@ type EncryptionKey struct { func (m *EncryptionKey) Reset() { *m = EncryptionKey{} } func (*EncryptionKey) ProtoMessage() {} -func (*EncryptionKey) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{37} } +func (*EncryptionKey) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{36} } // ManagerStatus provides informations about the state of a manager in the cluster. type ManagerStatus struct { @@ -1385,7 +1373,7 @@ type ManagerStatus struct { func (m *ManagerStatus) Reset() { *m = ManagerStatus{} } func (*ManagerStatus) ProtoMessage() {} -func (*ManagerStatus) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{38} } +func (*ManagerStatus) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{37} } // SecretReference is the linkage between a service and a secret that it uses. type SecretReference struct { @@ -1397,14 +1385,14 @@ type SecretReference struct { Mode SecretReference_Mode `protobuf:"varint,2,opt,name=mode,proto3,enum=docker.swarmkit.v1.SecretReference_Mode" json:"mode,omitempty"` // Target is the name by which the image accesses the secret. Target string `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` - // Name is the name of the secret that this references, but this is just provided for + // SecretName is the name of the secret that this references, but this is just provided for // lookup/display purposes. The secret in the reference will be identified by its ID. - Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` + SecretName string `protobuf:"bytes,4,opt,name=secret_name,json=secretName,proto3" json:"secret_name,omitempty"` } func (m *SecretReference) Reset() { *m = SecretReference{} } func (*SecretReference) ProtoMessage() {} -func (*SecretReference) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{39} } +func (*SecretReference) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{38} } func init() { proto.RegisterType((*Version)(nil), "docker.swarmkit.v1.Version") @@ -1444,7 +1432,6 @@ func init() { proto.RegisterType((*TaskDefaults)(nil), "docker.swarmkit.v1.TaskDefaults") proto.RegisterType((*DispatcherConfig)(nil), "docker.swarmkit.v1.DispatcherConfig") proto.RegisterType((*RaftConfig)(nil), "docker.swarmkit.v1.RaftConfig") - proto.RegisterType((*SecretsConfig)(nil), "docker.swarmkit.v1.SecretsConfig") proto.RegisterType((*Placement)(nil), "docker.swarmkit.v1.Placement") proto.RegisterType((*JoinTokens)(nil), "docker.swarmkit.v1.JoinTokens") proto.RegisterType((*RootCA)(nil), "docker.swarmkit.v1.RootCA") @@ -2054,18 +2041,6 @@ func (m *RaftConfig) Copy() *RaftConfig { return o } -func (m *SecretsConfig) Copy() *SecretsConfig { - if m == nil { - return nil - } - - o := &SecretsConfig{ - MaxSecrets: m.MaxSecrets, - } - - return o -} - func (m *Placement) Copy() *Placement { if m == nil { return nil @@ -2163,10 +2138,10 @@ func (m *SecretReference) Copy() *SecretReference { } o := &SecretReference{ - SecretID: m.SecretID, - Mode: m.Mode, - Target: m.Target, - Name: m.Name, + SecretID: m.SecretID, + Mode: m.Mode, + Target: m.Target, + SecretName: m.SecretName, } return o @@ -2736,16 +2711,6 @@ func (this *RaftConfig) GoString() string { s = append(s, "}") return strings.Join(s, "") } -func (this *SecretsConfig) GoString() string { - if this == nil { - return "nil" - } - s := make([]string, 0, 5) - s = append(s, "&api.SecretsConfig{") - s = append(s, "MaxSecrets: "+fmt.Sprintf("%#v", this.MaxSecrets)+",\n") - s = append(s, "}") - return strings.Join(s, "") -} func (this *Placement) GoString() string { if this == nil { return "nil" @@ -2829,7 +2794,7 @@ func (this *SecretReference) GoString() string { s = append(s, "SecretID: "+fmt.Sprintf("%#v", this.SecretID)+",\n") s = append(s, "Mode: "+fmt.Sprintf("%#v", this.Mode)+",\n") s = append(s, "Target: "+fmt.Sprintf("%#v", this.Target)+",\n") - s = append(s, "Name: "+fmt.Sprintf("%#v", this.Name)+",\n") + s = append(s, "SecretName: "+fmt.Sprintf("%#v", this.SecretName)+",\n") s = append(s, "}") return strings.Join(s, "") } @@ -4312,29 +4277,6 @@ func (m *RaftConfig) MarshalTo(data []byte) (int, error) { return i, nil } -func (m *SecretsConfig) Marshal() (data []byte, err error) { - size := m.Size() - data = make([]byte, size) - n, err := m.MarshalTo(data) - if err != nil { - return nil, err - } - return data[:n], nil -} - -func (m *SecretsConfig) MarshalTo(data []byte) (int, error) { - var i int - _ = i - var l int - _ = l - if m.MaxSecrets != 0 { - data[i] = 0x8 - i++ - i = encodeVarintTypes(data, i, uint64(m.MaxSecrets)) - } - return i, nil -} - func (m *Placement) Marshal() (data []byte, err error) { size := m.Size() data = make([]byte, size) @@ -4607,11 +4549,11 @@ func (m *SecretReference) MarshalTo(data []byte) (int, error) { i = encodeVarintTypes(data, i, uint64(len(m.Target))) i += copy(data[i:], m.Target) } - if len(m.Name) > 0 { + if len(m.SecretName) > 0 { data[i] = 0x22 i++ - i = encodeVarintTypes(data, i, uint64(len(m.Name))) - i += copy(data[i:], m.Name) + i = encodeVarintTypes(data, i, uint64(len(m.SecretName))) + i += copy(data[i:], m.SecretName) } return i, nil } @@ -5268,15 +5210,6 @@ func (m *RaftConfig) Size() (n int) { return n } -func (m *SecretsConfig) Size() (n int) { - var l int - _ = l - if m.MaxSecrets != 0 { - n += 1 + sovTypes(uint64(m.MaxSecrets)) - } - return n -} - func (m *Placement) Size() (n int) { var l int _ = l @@ -5399,7 +5332,7 @@ func (m *SecretReference) Size() (n int) { if l > 0 { n += 1 + l + sovTypes(uint64(l)) } - l = len(m.Name) + l = len(m.SecretName) if l > 0 { n += 1 + l + sovTypes(uint64(l)) } @@ -5921,16 +5854,6 @@ func (this *RaftConfig) String() string { }, "") return s } -func (this *SecretsConfig) String() string { - if this == nil { - return "nil" - } - s := strings.Join([]string{`&SecretsConfig{`, - `MaxSecrets:` + fmt.Sprintf("%v", this.MaxSecrets) + `,`, - `}`, - }, "") - return s -} func (this *Placement) String() string { if this == nil { return "nil" @@ -6013,7 +5936,7 @@ func (this *SecretReference) String() string { `SecretID:` + fmt.Sprintf("%v", this.SecretID) + `,`, `Mode:` + fmt.Sprintf("%v", this.Mode) + `,`, `Target:` + fmt.Sprintf("%v", this.Target) + `,`, - `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `SecretName:` + fmt.Sprintf("%v", this.SecretName) + `,`, `}`, }, "") return s @@ -11006,75 +10929,6 @@ func (m *RaftConfig) Unmarshal(data []byte) error { } return nil } -func (m *SecretsConfig) Unmarshal(data []byte) error { - l := len(data) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: SecretsConfig: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: SecretsConfig: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field MaxSecrets", wireType) - } - m.MaxSecrets = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - m.MaxSecrets |= (uint32(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - default: - iNdEx = preIndex - skippy, err := skipTypes(data[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthTypes - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} func (m *Placement) Unmarshal(data []byte) error { l := len(data) iNdEx := 0 @@ -12016,7 +11870,7 @@ func (m *SecretReference) Unmarshal(data []byte) error { iNdEx = postIndex case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SecretName", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -12041,7 +11895,7 @@ func (m *SecretReference) Unmarshal(data []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Name = string(data[iNdEx:postIndex]) + m.SecretName = string(data[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -12172,232 +12026,231 @@ var ( func init() { proto.RegisterFile("types.proto", fileDescriptorTypes) } var fileDescriptorTypes = []byte{ - // 3618 bytes of a gzipped FileDescriptorProto + // 3603 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x59, 0xcd, 0x6f, 0x23, 0x47, 0x76, 0x17, 0x3f, 0x45, 0x3e, 0x52, 0x52, 0x4f, 0xcd, 0xec, 0x58, 0x43, 0x8f, 0x25, 0xba, 0xc7, 0xb3, 0x1e, 0x7b, 0x1d, 0xda, 0x96, 0x37, 0xc6, 0xac, 0x67, 0xb3, 0x76, 0x8b, 0xa4, 0x66, 0xb8, 0x23, 0x51, 0x44, 0x91, 0xd4, 0xc0, 0x08, 0x10, 0xa2, 0xd4, 0x5d, 0x22, 0xdb, 0x6a, 0x76, 0x33, 0xdd, 0x45, 0x69, 0x98, 0x20, 0xc0, 0x24, 0x87, 0x24, 0xd0, 0x29, 0xf7, 0x40, 0x58, 0x04, 0x09, - 0x72, 0xcb, 0x39, 0x40, 0x4e, 0x3e, 0xfa, 0x12, 0x60, 0x83, 0x00, 0xc1, 0x22, 0x41, 0x84, 0x58, - 0xf9, 0x07, 0x16, 0x08, 0x82, 0x3d, 0x24, 0x87, 0xa0, 0x3e, 0xba, 0xd9, 0xe4, 0x50, 0xf2, 0x4c, - 0x76, 0x4f, 0xdd, 0xf5, 0xea, 0xf7, 0x5e, 0x7d, 0xbd, 0x7a, 0xf5, 0x7b, 0x55, 0x50, 0x60, 0x93, - 0x11, 0x0d, 0x2a, 0x23, 0xdf, 0x63, 0x1e, 0x42, 0x96, 0x67, 0x1e, 0x53, 0xbf, 0x12, 0x9c, 0x12, - 0x7f, 0x78, 0x6c, 0xb3, 0xca, 0xc9, 0xc7, 0xa5, 0x3b, 0xcc, 0x1e, 0xd2, 0x80, 0x91, 0xe1, 0xe8, - 0xc3, 0xe8, 0x4f, 0xc2, 0x4b, 0x6f, 0x58, 0x63, 0x9f, 0x30, 0xdb, 0x73, 0x3f, 0x0c, 0x7f, 0x54, - 0xc5, 0xad, 0xbe, 0xd7, 0xf7, 0xc4, 0xef, 0x87, 0xfc, 0x4f, 0x4a, 0xf5, 0x4d, 0x58, 0x3e, 0xa0, - 0x7e, 0x60, 0x7b, 0x2e, 0xba, 0x05, 0x19, 0xdb, 0xb5, 0xe8, 0xf3, 0xf5, 0x44, 0x39, 0xf1, 0x20, - 0x8d, 0x65, 0x41, 0xff, 0xab, 0x04, 0x14, 0x0c, 0xd7, 0xf5, 0x98, 0xb0, 0x15, 0x20, 0x04, 0x69, - 0x97, 0x0c, 0xa9, 0x00, 0xe5, 0xb1, 0xf8, 0x47, 0x55, 0xc8, 0x3a, 0xe4, 0x90, 0x3a, 0xc1, 0x7a, - 0xb2, 0x9c, 0x7a, 0x50, 0xd8, 0xfa, 0x41, 0xe5, 0xe5, 0x3e, 0x57, 0x62, 0x46, 0x2a, 0xbb, 0x02, - 0x5d, 0x77, 0x99, 0x3f, 0xc1, 0x4a, 0xb5, 0xf4, 0x23, 0x28, 0xc4, 0xc4, 0x48, 0x83, 0xd4, 0x31, - 0x9d, 0xa8, 0x66, 0xf8, 0x2f, 0xef, 0xdf, 0x09, 0x71, 0xc6, 0x74, 0x3d, 0x29, 0x64, 0xb2, 0xf0, - 0x59, 0xf2, 0x61, 0x42, 0xff, 0x12, 0xf2, 0x98, 0x06, 0xde, 0xd8, 0x37, 0x69, 0x80, 0xde, 0x83, - 0xbc, 0x4b, 0x5c, 0xaf, 0x67, 0x8e, 0xc6, 0x81, 0x50, 0x4f, 0x6d, 0x17, 0x2f, 0x2f, 0x36, 0x73, - 0x4d, 0xe2, 0x7a, 0xd5, 0x56, 0x37, 0xc0, 0x39, 0x5e, 0x5d, 0x1d, 0x8d, 0x03, 0xf4, 0x36, 0x14, - 0x87, 0x74, 0xe8, 0xf9, 0x93, 0xde, 0xe1, 0x84, 0xd1, 0x40, 0x18, 0x4e, 0xe1, 0x82, 0x94, 0x6d, - 0x73, 0x91, 0xfe, 0x17, 0x09, 0xb8, 0x15, 0xda, 0xc6, 0xf4, 0xf7, 0xc7, 0xb6, 0x4f, 0x87, 0xd4, - 0x65, 0x01, 0xfa, 0x6d, 0xc8, 0x3a, 0xf6, 0xd0, 0x66, 0xb2, 0x8d, 0xc2, 0xd6, 0x5b, 0x8b, 0xc6, - 0x1c, 0xf5, 0x0a, 0x2b, 0x30, 0x32, 0xa0, 0xe8, 0xd3, 0x80, 0xfa, 0x27, 0x72, 0x26, 0x44, 0x93, - 0xdf, 0xa9, 0x3c, 0xa3, 0xa2, 0xef, 0x40, 0xae, 0xe5, 0x10, 0x76, 0xe4, 0xf9, 0x43, 0xa4, 0x43, - 0x91, 0xf8, 0xe6, 0xc0, 0x66, 0xd4, 0x64, 0x63, 0x3f, 0x5c, 0x95, 0x19, 0x19, 0xba, 0x0d, 0x49, - 0x4f, 0x36, 0x94, 0xdf, 0xce, 0x5e, 0x5e, 0x6c, 0x26, 0xf7, 0xdb, 0x38, 0xe9, 0x05, 0xfa, 0x23, - 0xb8, 0xd1, 0x72, 0xc6, 0x7d, 0xdb, 0xad, 0xd1, 0xc0, 0xf4, 0xed, 0x11, 0xb7, 0xce, 0x97, 0x97, - 0x3b, 0x5f, 0xb8, 0xbc, 0xfc, 0x3f, 0x5a, 0xf2, 0xe4, 0x74, 0xc9, 0xf5, 0x3f, 0x4b, 0xc2, 0x8d, - 0xba, 0xdb, 0xb7, 0x5d, 0x1a, 0xd7, 0xbe, 0x0f, 0xab, 0x54, 0x08, 0x7b, 0x27, 0xd2, 0xa9, 0x94, - 0x9d, 0x15, 0x29, 0x0d, 0x3d, 0xad, 0x31, 0xe7, 0x2f, 0x1f, 0x2f, 0x1a, 0xfe, 0x4b, 0xd6, 0x17, - 0x79, 0x0d, 0xaa, 0xc3, 0xf2, 0x48, 0x0c, 0x22, 0x58, 0x4f, 0x09, 0x5b, 0xf7, 0x17, 0xd9, 0x7a, - 0x69, 0x9c, 0xdb, 0xe9, 0x6f, 0x2e, 0x36, 0x97, 0x70, 0xa8, 0xfb, 0xeb, 0x38, 0xdf, 0x7f, 0x26, - 0x60, 0xad, 0xe9, 0x59, 0x33, 0xf3, 0x50, 0x82, 0xdc, 0xc0, 0x0b, 0x58, 0x6c, 0xa3, 0x44, 0x65, - 0xf4, 0x10, 0x72, 0x23, 0xb5, 0x7c, 0x6a, 0xf5, 0xef, 0x2e, 0xee, 0xb2, 0xc4, 0xe0, 0x08, 0x8d, - 0x1e, 0x41, 0xde, 0x0f, 0x7d, 0x62, 0x3d, 0xf5, 0x2a, 0x8e, 0x33, 0xc5, 0xa3, 0xdf, 0x81, 0xac, - 0x5c, 0x84, 0xf5, 0xb4, 0xd0, 0xbc, 0xff, 0x4a, 0x73, 0x8e, 0x95, 0x92, 0xfe, 0x8b, 0x04, 0x68, - 0x98, 0x1c, 0xb1, 0x3d, 0x3a, 0x3c, 0xa4, 0x7e, 0x9b, 0x11, 0x36, 0x0e, 0xd0, 0x6d, 0xc8, 0x3a, - 0x94, 0x58, 0xd4, 0x17, 0x83, 0xcc, 0x61, 0x55, 0x42, 0x5d, 0xee, 0xe4, 0xc4, 0x1c, 0x90, 0x43, - 0xdb, 0xb1, 0xd9, 0x44, 0x0c, 0x73, 0x75, 0xf1, 0x2a, 0xcf, 0xdb, 0xac, 0xe0, 0x98, 0x22, 0x9e, - 0x31, 0x83, 0xd6, 0x61, 0x79, 0x48, 0x83, 0x80, 0xf4, 0xa9, 0x18, 0x7d, 0x1e, 0x87, 0x45, 0xfd, - 0x11, 0x14, 0xe3, 0x7a, 0xa8, 0x00, 0xcb, 0xdd, 0xe6, 0xd3, 0xe6, 0xfe, 0xb3, 0xa6, 0xb6, 0x84, - 0xd6, 0xa0, 0xd0, 0x6d, 0xe2, 0xba, 0x51, 0x7d, 0x62, 0x6c, 0xef, 0xd6, 0xb5, 0x04, 0x5a, 0x81, - 0xfc, 0xb4, 0x98, 0xd4, 0x7f, 0x96, 0x00, 0xe0, 0x0b, 0xa8, 0x06, 0xf5, 0x19, 0x64, 0x02, 0x46, - 0x98, 0x5c, 0xb8, 0xd5, 0xad, 0x77, 0x16, 0xf5, 0x7a, 0x0a, 0xaf, 0xf0, 0x0f, 0xc5, 0x52, 0x25, - 0xde, 0xc3, 0xe4, 0x7c, 0x0f, 0x33, 0x02, 0x39, 0xdb, 0xb5, 0x1c, 0xa4, 0x6b, 0xfc, 0x2f, 0x81, + 0x72, 0xcb, 0x39, 0x40, 0x4e, 0x3e, 0xfa, 0xb8, 0x41, 0x80, 0x60, 0xb1, 0x41, 0x84, 0x58, 0xf9, + 0x07, 0x16, 0x08, 0x82, 0x3d, 0x24, 0x87, 0xa0, 0x3e, 0xba, 0xd9, 0xe4, 0x50, 0xf2, 0x4c, 0x76, + 0x4f, 0x64, 0xbd, 0xfa, 0xbd, 0x57, 0xaf, 0xaa, 0x5e, 0xbd, 0xfa, 0xbd, 0x6a, 0x28, 0xb0, 0xc9, + 0x88, 0x06, 0x95, 0x91, 0xef, 0x31, 0x0f, 0x21, 0xcb, 0x33, 0x8f, 0xa9, 0x5f, 0x09, 0x4e, 0x89, + 0x3f, 0x3c, 0xb6, 0x59, 0xe5, 0xe4, 0xe3, 0xd2, 0x1d, 0x66, 0x0f, 0x69, 0xc0, 0xc8, 0x70, 0xf4, + 0x61, 0xf4, 0x4f, 0xc2, 0x4b, 0x6f, 0x58, 0x63, 0x9f, 0x30, 0xdb, 0x73, 0x3f, 0x0c, 0xff, 0xa8, + 0x8e, 0x5b, 0x7d, 0xaf, 0xef, 0x89, 0xbf, 0x1f, 0xf2, 0x7f, 0x52, 0xaa, 0x6f, 0xc2, 0xf2, 0x01, + 0xf5, 0x03, 0xdb, 0x73, 0xd1, 0x2d, 0xc8, 0xd8, 0xae, 0x45, 0x9f, 0xaf, 0x27, 0xca, 0x89, 0x07, + 0x69, 0x2c, 0x1b, 0xfa, 0xdf, 0x24, 0xa0, 0x60, 0xb8, 0xae, 0xc7, 0x84, 0xad, 0x00, 0x21, 0x48, + 0xbb, 0x64, 0x48, 0x05, 0x28, 0x8f, 0xc5, 0x7f, 0x54, 0x85, 0xac, 0x43, 0x0e, 0xa9, 0x13, 0xac, + 0x27, 0xcb, 0xa9, 0x07, 0x85, 0xad, 0x1f, 0x54, 0x5e, 0xf6, 0xb9, 0x12, 0x33, 0x52, 0xd9, 0x15, + 0xe8, 0xba, 0xcb, 0xfc, 0x09, 0x56, 0xaa, 0xa5, 0x1f, 0x41, 0x21, 0x26, 0x46, 0x1a, 0xa4, 0x8e, + 0xe9, 0x44, 0x0d, 0xc3, 0xff, 0x72, 0xff, 0x4e, 0x88, 0x33, 0xa6, 0xeb, 0x49, 0x21, 0x93, 0x8d, + 0xcf, 0x92, 0x0f, 0x13, 0xfa, 0x97, 0x90, 0xc7, 0x34, 0xf0, 0xc6, 0xbe, 0x49, 0x03, 0xf4, 0x1e, + 0xe4, 0x5d, 0xe2, 0x7a, 0x3d, 0x73, 0x34, 0x0e, 0x84, 0x7a, 0x6a, 0xbb, 0x78, 0x79, 0xb1, 0x99, + 0x6b, 0x12, 0xd7, 0xab, 0xb6, 0xba, 0x01, 0xce, 0xf1, 0xee, 0xea, 0x68, 0x1c, 0xa0, 0xb7, 0xa1, + 0x38, 0xa4, 0x43, 0xcf, 0x9f, 0xf4, 0x0e, 0x27, 0x8c, 0x06, 0xc2, 0x70, 0x0a, 0x17, 0xa4, 0x6c, + 0x9b, 0x8b, 0xf4, 0xbf, 0x4a, 0xc0, 0xad, 0xd0, 0x36, 0xa6, 0x7f, 0x38, 0xb6, 0x7d, 0x3a, 0xa4, + 0x2e, 0x0b, 0xd0, 0xef, 0x42, 0xd6, 0xb1, 0x87, 0x36, 0x93, 0x63, 0x14, 0xb6, 0xde, 0x5a, 0x34, + 0xe7, 0xc8, 0x2b, 0xac, 0xc0, 0xc8, 0x80, 0xa2, 0x4f, 0x03, 0xea, 0x9f, 0xc8, 0x95, 0x10, 0x43, + 0x7e, 0xa7, 0xf2, 0x8c, 0x8a, 0xbe, 0x03, 0xb9, 0x96, 0x43, 0xd8, 0x91, 0xe7, 0x0f, 0x91, 0x0e, + 0x45, 0xe2, 0x9b, 0x03, 0x9b, 0x51, 0x93, 0x8d, 0xfd, 0x70, 0x57, 0x66, 0x64, 0xe8, 0x36, 0x24, + 0x3d, 0x39, 0x50, 0x7e, 0x3b, 0x7b, 0x79, 0xb1, 0x99, 0xdc, 0x6f, 0xe3, 0xa4, 0x17, 0xe8, 0x8f, + 0xe0, 0x46, 0xcb, 0x19, 0xf7, 0x6d, 0xb7, 0x46, 0x03, 0xd3, 0xb7, 0x47, 0xdc, 0x3a, 0xdf, 0x5e, + 0x1e, 0x7c, 0xe1, 0xf6, 0xf2, 0xff, 0xd1, 0x96, 0x27, 0xa7, 0x5b, 0xae, 0xff, 0x45, 0x12, 0x6e, + 0xd4, 0xdd, 0xbe, 0xed, 0xd2, 0xb8, 0xf6, 0x7d, 0x58, 0xa5, 0x42, 0xd8, 0x3b, 0x91, 0x41, 0xa5, + 0xec, 0xac, 0x48, 0x69, 0x18, 0x69, 0x8d, 0xb9, 0x78, 0xf9, 0x78, 0xd1, 0xf4, 0x5f, 0xb2, 0xbe, + 0x28, 0x6a, 0x50, 0x1d, 0x96, 0x47, 0x62, 0x12, 0xc1, 0x7a, 0x4a, 0xd8, 0xba, 0xbf, 0xc8, 0xd6, + 0x4b, 0xf3, 0xdc, 0x4e, 0x7f, 0x73, 0xb1, 0xb9, 0x84, 0x43, 0xdd, 0xdf, 0x24, 0xf8, 0xfe, 0x33, + 0x01, 0x6b, 0x4d, 0xcf, 0x9a, 0x59, 0x87, 0x12, 0xe4, 0x06, 0x5e, 0xc0, 0x62, 0x07, 0x25, 0x6a, + 0xa3, 0x87, 0x90, 0x1b, 0xa9, 0xed, 0x53, 0xbb, 0x7f, 0x77, 0xb1, 0xcb, 0x12, 0x83, 0x23, 0x34, + 0x7a, 0x04, 0x79, 0x3f, 0x8c, 0x89, 0xf5, 0xd4, 0xab, 0x04, 0xce, 0x14, 0x8f, 0x7e, 0x0f, 0xb2, + 0x72, 0x13, 0xd6, 0xd3, 0x42, 0xf3, 0xfe, 0x2b, 0xad, 0x39, 0x56, 0x4a, 0xfa, 0x2f, 0x12, 0xa0, + 0x61, 0x72, 0xc4, 0xf6, 0xe8, 0xf0, 0x90, 0xfa, 0x6d, 0x46, 0xd8, 0x38, 0x40, 0xb7, 0x21, 0xeb, + 0x50, 0x62, 0x51, 0x5f, 0x4c, 0x32, 0x87, 0x55, 0x0b, 0x75, 0x79, 0x90, 0x13, 0x73, 0x40, 0x0e, + 0x6d, 0xc7, 0x66, 0x13, 0x31, 0xcd, 0xd5, 0xc5, 0xbb, 0x3c, 0x6f, 0xb3, 0x82, 0x63, 0x8a, 0x78, + 0xc6, 0x0c, 0x5a, 0x87, 0xe5, 0x21, 0x0d, 0x02, 0xd2, 0xa7, 0x62, 0xf6, 0x79, 0x1c, 0x36, 0xf5, + 0x47, 0x50, 0x8c, 0xeb, 0xa1, 0x02, 0x2c, 0x77, 0x9b, 0x4f, 0x9b, 0xfb, 0xcf, 0x9a, 0xda, 0x12, + 0x5a, 0x83, 0x42, 0xb7, 0x89, 0xeb, 0x46, 0xf5, 0x89, 0xb1, 0xbd, 0x5b, 0xd7, 0x12, 0x68, 0x05, + 0xf2, 0xd3, 0x66, 0x52, 0xff, 0x59, 0x02, 0x80, 0x6f, 0xa0, 0x9a, 0xd4, 0x67, 0x90, 0x09, 0x18, + 0x61, 0x72, 0xe3, 0x56, 0xb7, 0xde, 0x59, 0xe4, 0xf5, 0x14, 0x5e, 0xe1, 0x3f, 0x14, 0x4b, 0x95, + 0xb8, 0x87, 0xc9, 0x79, 0x0f, 0x33, 0x02, 0x39, 0xeb, 0x5a, 0x0e, 0xd2, 0x35, 0xfe, 0x2f, 0x81, 0xf2, 0x90, 0xc1, 0x75, 0xa3, 0xf6, 0xa5, 0x96, 0x44, 0x1a, 0x14, 0x6b, 0x8d, 0x76, 0x75, 0xbf, 0xd9, 0xac, 0x57, 0x3b, 0xf5, 0x9a, 0x96, 0xd2, 0xef, 0x43, 0xa6, 0x31, 0x24, 0x7d, 0x8a, 0xee, - 0x72, 0x0f, 0x38, 0xa2, 0x3e, 0x75, 0xcd, 0xd0, 0xb1, 0xa6, 0x02, 0xfd, 0xe7, 0x79, 0xc8, 0xec, - 0x79, 0x63, 0x97, 0xa1, 0xad, 0xd8, 0x2e, 0x5e, 0xdd, 0xda, 0x58, 0x34, 0x04, 0x01, 0xac, 0x74, - 0x26, 0x23, 0xaa, 0x76, 0xf9, 0x6d, 0xc8, 0x4a, 0x5f, 0x51, 0x5d, 0x57, 0x25, 0x2e, 0x67, 0xc4, - 0xef, 0x53, 0xa6, 0x26, 0x5d, 0x95, 0xd0, 0x03, 0xc8, 0xf9, 0x94, 0x58, 0x9e, 0xeb, 0x4c, 0x84, - 0x4b, 0xe5, 0x64, 0x98, 0xc5, 0x94, 0x58, 0xfb, 0xae, 0x33, 0xc1, 0x51, 0x2d, 0x7a, 0x02, 0xc5, - 0x43, 0xdb, 0xb5, 0x7a, 0xde, 0x48, 0xc6, 0xbc, 0xcc, 0xd5, 0x0e, 0x28, 0x7b, 0xb5, 0x6d, 0xbb, - 0xd6, 0xbe, 0x04, 0xe3, 0xc2, 0xe1, 0xb4, 0x80, 0x9a, 0xb0, 0x7a, 0xe2, 0x39, 0xe3, 0x21, 0x8d, - 0x6c, 0x65, 0x85, 0xad, 0x77, 0xaf, 0xb6, 0x75, 0x20, 0xf0, 0xa1, 0xb5, 0x95, 0x93, 0x78, 0x11, - 0x3d, 0x85, 0x15, 0x36, 0x1c, 0x1d, 0x05, 0x91, 0xb9, 0x65, 0x61, 0xee, 0xfb, 0xd7, 0x4c, 0x18, - 0x87, 0x87, 0xd6, 0x8a, 0x2c, 0x56, 0x2a, 0xfd, 0x49, 0x0a, 0x0a, 0xb1, 0x9e, 0xa3, 0x36, 0x14, - 0x46, 0xbe, 0x37, 0x22, 0x7d, 0x11, 0xb7, 0xd5, 0x5a, 0x7c, 0xfc, 0x4a, 0xa3, 0xae, 0xb4, 0xa6, - 0x8a, 0x38, 0x6e, 0x45, 0x3f, 0x4f, 0x42, 0x21, 0x56, 0x89, 0xde, 0x87, 0x1c, 0x6e, 0xe1, 0xc6, - 0x81, 0xd1, 0xa9, 0x6b, 0x4b, 0xa5, 0xbb, 0x67, 0xe7, 0xe5, 0x75, 0x61, 0x2d, 0x6e, 0xa0, 0xe5, - 0xdb, 0x27, 0xdc, 0xf5, 0x1e, 0xc0, 0x72, 0x08, 0x4d, 0x94, 0xde, 0x3c, 0x3b, 0x2f, 0xbf, 0x31, - 0x0f, 0x8d, 0x21, 0x71, 0xfb, 0x89, 0x81, 0xeb, 0x35, 0x2d, 0xb9, 0x18, 0x89, 0xdb, 0x03, 0xe2, - 0x53, 0x0b, 0x7d, 0x1f, 0xb2, 0x0a, 0x98, 0x2a, 0x95, 0xce, 0xce, 0xcb, 0xb7, 0xe7, 0x81, 0x53, - 0x1c, 0x6e, 0xef, 0x1a, 0x07, 0x75, 0x2d, 0xbd, 0x18, 0x87, 0xdb, 0x0e, 0x39, 0xa1, 0xe8, 0x1d, - 0xc8, 0x48, 0x58, 0xa6, 0x74, 0xe7, 0xec, 0xbc, 0xfc, 0xbd, 0x97, 0xcc, 0x71, 0x54, 0x69, 0xfd, - 0xcf, 0xff, 0x7a, 0x63, 0xe9, 0x1f, 0xfe, 0x66, 0x43, 0x9b, 0xaf, 0x2e, 0xfd, 0x6f, 0x02, 0x56, - 0x66, 0x96, 0x1c, 0xe9, 0x90, 0x75, 0x3d, 0xd3, 0x1b, 0xc9, 0x70, 0x9e, 0xdb, 0x86, 0xcb, 0x8b, - 0xcd, 0x6c, 0xd3, 0xab, 0x7a, 0xa3, 0x09, 0x56, 0x35, 0xe8, 0xe9, 0xdc, 0x81, 0xf4, 0xc9, 0x2b, - 0xfa, 0xd3, 0xc2, 0x23, 0xe9, 0x73, 0x58, 0xb1, 0x7c, 0xfb, 0x84, 0xfa, 0x3d, 0xd3, 0x73, 0x8f, - 0xec, 0xbe, 0x0a, 0xd5, 0xa5, 0x45, 0x36, 0x6b, 0x02, 0x88, 0x8b, 0x52, 0xa1, 0x2a, 0xf0, 0xbf, - 0xc6, 0x61, 0x54, 0x3a, 0x80, 0x62, 0xdc, 0x43, 0xd1, 0x5b, 0x00, 0x81, 0xfd, 0x07, 0x54, 0xf1, - 0x1b, 0xc1, 0x86, 0x70, 0x9e, 0x4b, 0x04, 0xbb, 0x41, 0xef, 0x42, 0x7a, 0xe8, 0x59, 0xd2, 0x4e, - 0x66, 0xfb, 0x26, 0x3f, 0x13, 0xff, 0xf5, 0x62, 0xb3, 0xe0, 0x05, 0x95, 0x1d, 0xdb, 0xa1, 0x7b, - 0x9e, 0x45, 0xb1, 0x00, 0xe8, 0x27, 0x90, 0xe6, 0xa1, 0x02, 0xbd, 0x09, 0xe9, 0xed, 0x46, 0xb3, - 0xa6, 0x2d, 0x95, 0x6e, 0x9c, 0x9d, 0x97, 0x57, 0xc4, 0x94, 0xf0, 0x0a, 0xee, 0xbb, 0x68, 0x13, - 0xb2, 0x07, 0xfb, 0xbb, 0xdd, 0x3d, 0xee, 0x5e, 0x37, 0xcf, 0xce, 0xcb, 0x6b, 0x51, 0xb5, 0x9c, - 0x34, 0xf4, 0x16, 0x64, 0x3a, 0x7b, 0xad, 0x9d, 0xb6, 0x96, 0x2c, 0xa1, 0xb3, 0xf3, 0xf2, 0x6a, - 0x54, 0x2f, 0xfa, 0x5c, 0xba, 0xa1, 0x56, 0x35, 0x1f, 0xc9, 0xf5, 0xff, 0x49, 0xc2, 0x0a, 0xe6, - 0xfc, 0xd6, 0x67, 0x2d, 0xcf, 0xb1, 0xcd, 0x09, 0x6a, 0x41, 0xde, 0xf4, 0x5c, 0xcb, 0x8e, 0xed, - 0xa9, 0xad, 0x2b, 0x0e, 0xc1, 0xa9, 0x56, 0x58, 0xaa, 0x86, 0x9a, 0x78, 0x6a, 0x04, 0x6d, 0x41, - 0xc6, 0xa2, 0x0e, 0x99, 0x5c, 0x77, 0x1a, 0xd7, 0x14, 0x97, 0xc6, 0x12, 0x2a, 0x98, 0x23, 0x79, - 0xde, 0x23, 0x8c, 0xd1, 0xe1, 0x88, 0xc9, 0xd3, 0x38, 0x8d, 0x0b, 0x43, 0xf2, 0xdc, 0x50, 0x22, - 0xf4, 0x43, 0xc8, 0x9e, 0xda, 0xae, 0xe5, 0x9d, 0xaa, 0x03, 0xf7, 0x7a, 0xbb, 0x0a, 0xab, 0x9f, - 0xf1, 0x73, 0x76, 0xae, 0xb3, 0x7c, 0xd6, 0x9b, 0xfb, 0xcd, 0x7a, 0x38, 0xeb, 0xaa, 0x7e, 0xdf, - 0x6d, 0x7a, 0x2e, 0xdf, 0x31, 0xb0, 0xdf, 0xec, 0xed, 0x18, 0x8d, 0xdd, 0x2e, 0xe6, 0x33, 0x7f, - 0xeb, 0xec, 0xbc, 0xac, 0x45, 0x90, 0x1d, 0x62, 0x3b, 0x9c, 0x04, 0xde, 0x81, 0x94, 0xd1, 0xfc, - 0x52, 0x4b, 0x96, 0xb4, 0xb3, 0xf3, 0x72, 0x31, 0xaa, 0x36, 0xdc, 0xc9, 0x74, 0x33, 0xcd, 0xb7, - 0xab, 0xff, 0x7b, 0x12, 0x8a, 0xdd, 0x91, 0x45, 0x18, 0x95, 0x9e, 0x89, 0xca, 0x50, 0x18, 0x11, - 0x9f, 0x38, 0x0e, 0x75, 0xec, 0x60, 0xa8, 0x12, 0x85, 0xb8, 0x08, 0x3d, 0x7c, 0x8d, 0xc9, 0x54, - 0x24, 0x4c, 0x4d, 0x69, 0x17, 0x56, 0x8f, 0x64, 0x67, 0x7b, 0xc4, 0x14, 0xab, 0x9b, 0x12, 0xab, - 0x5b, 0x59, 0x64, 0x22, 0xde, 0xab, 0x8a, 0x1a, 0xa3, 0x21, 0xb4, 0xf0, 0xca, 0x51, 0xbc, 0x88, - 0x3e, 0x85, 0xe5, 0xa1, 0xe7, 0xda, 0xcc, 0xf3, 0x5f, 0x69, 0x1d, 0x42, 0x30, 0x7a, 0x1f, 0x6e, - 0xf0, 0x15, 0x0e, 0xbb, 0x24, 0xaa, 0xc5, 0xc9, 0x95, 0xc4, 0x6b, 0x43, 0xf2, 0x5c, 0xb5, 0x89, - 0xb9, 0x58, 0xff, 0x14, 0x56, 0x66, 0xfa, 0xc0, 0x4f, 0xf3, 0x96, 0xd1, 0x6d, 0xd7, 0xb5, 0x25, - 0x54, 0x84, 0x5c, 0x75, 0xbf, 0xd9, 0x69, 0x34, 0xbb, 0x9c, 0x7a, 0x14, 0x21, 0x87, 0xf7, 0x77, - 0x77, 0xb7, 0x8d, 0xea, 0x53, 0x2d, 0xa9, 0xff, 0x77, 0x34, 0xbf, 0x8a, 0x7b, 0x6c, 0xcf, 0x72, - 0x8f, 0x0f, 0xae, 0x1e, 0xba, 0x62, 0x1f, 0xd3, 0x42, 0xc4, 0x41, 0x7e, 0x0c, 0x20, 0x96, 0x91, - 0x5a, 0x3d, 0xc2, 0xae, 0xcb, 0x2f, 0x3a, 0x61, 0xe6, 0x88, 0xf3, 0x4a, 0xc1, 0x60, 0xe8, 0x0b, - 0x28, 0x9a, 0xde, 0x70, 0xe4, 0x50, 0xa5, 0x9f, 0x7a, 0x15, 0xfd, 0x42, 0xa4, 0x62, 0xb0, 0x38, - 0x07, 0x4a, 0xcf, 0x72, 0xa0, 0x3f, 0x4d, 0x40, 0x21, 0xd6, 0xe1, 0x59, 0x2a, 0x54, 0x84, 0x5c, - 0xb7, 0x55, 0x33, 0x3a, 0x8d, 0xe6, 0x63, 0x2d, 0x81, 0x00, 0xb2, 0x62, 0x02, 0x6b, 0x5a, 0x92, - 0xd3, 0xb5, 0xea, 0xfe, 0x5e, 0x6b, 0xb7, 0x2e, 0xc8, 0x10, 0xba, 0x05, 0x5a, 0x38, 0x85, 0xbd, - 0x76, 0xc7, 0xc0, 0x5c, 0x9a, 0x46, 0x37, 0x61, 0x2d, 0x92, 0x2a, 0xcd, 0x0c, 0xba, 0x0d, 0x28, - 0x12, 0x4e, 0x4d, 0x64, 0xf5, 0x3f, 0x82, 0xb5, 0xaa, 0xe7, 0x32, 0x62, 0xbb, 0x11, 0x95, 0xdd, - 0xe2, 0xe3, 0x56, 0xa2, 0x9e, 0x6d, 0xc9, 0x68, 0xbb, 0xbd, 0x76, 0x79, 0xb1, 0x59, 0x88, 0xa0, - 0x8d, 0x1a, 0x1f, 0x69, 0x58, 0xb0, 0xf8, 0x9e, 0x1a, 0xd9, 0x96, 0x0a, 0x9e, 0xcb, 0x97, 0x17, - 0x9b, 0xa9, 0x56, 0xa3, 0x86, 0xb9, 0x0c, 0xbd, 0x09, 0x79, 0xfa, 0xdc, 0x66, 0x3d, 0x93, 0x47, - 0x57, 0x3e, 0x87, 0x19, 0x9c, 0xe3, 0x82, 0x2a, 0x0f, 0xa6, 0x7f, 0x9c, 0x04, 0xe8, 0x90, 0xe0, - 0x58, 0x35, 0xfd, 0x08, 0xf2, 0x51, 0x12, 0x7f, 0x5d, 0x32, 0x19, 0x5b, 0xaf, 0x08, 0x8f, 0x3e, - 0x09, 0x3d, 0x46, 0x72, 0xec, 0xc5, 0x8a, 0xaa, 0xad, 0x45, 0x34, 0x75, 0x96, 0x48, 0xf3, 0xb3, - 0x86, 0xfa, 0xbe, 0x5a, 0x38, 0xfe, 0x8b, 0xaa, 0x22, 0xde, 0xca, 0x31, 0x2b, 0xe6, 0x76, 0x6f, - 0x51, 0x23, 0x73, 0x13, 0xfa, 0x64, 0x09, 0x4f, 0xf5, 0xb6, 0x35, 0x58, 0xf5, 0xc7, 0x2e, 0xef, - 0x75, 0x2f, 0x10, 0xd5, 0xba, 0x0d, 0x6f, 0x34, 0x29, 0x3b, 0xf5, 0xfc, 0x63, 0x83, 0x31, 0x62, - 0x0e, 0x78, 0x52, 0xad, 0x82, 0xcc, 0x94, 0x70, 0x26, 0x66, 0x08, 0xe7, 0x3a, 0x2c, 0x13, 0xc7, - 0x26, 0x01, 0x95, 0xa7, 0x74, 0x1e, 0x87, 0x45, 0x4e, 0x8b, 0x89, 0x65, 0xf9, 0x34, 0x08, 0xa8, - 0x4c, 0x03, 0xf3, 0x78, 0x2a, 0xd0, 0xff, 0x39, 0x09, 0xd0, 0x68, 0x19, 0x7b, 0xca, 0x7c, 0x0d, - 0xb2, 0x47, 0x64, 0x68, 0x3b, 0x93, 0xeb, 0x36, 0xd9, 0x14, 0x5f, 0x31, 0xa4, 0xa1, 0x1d, 0xa1, - 0x83, 0x95, 0xae, 0x60, 0xcb, 0xe3, 0x43, 0x97, 0xb2, 0x88, 0x2d, 0x8b, 0x12, 0x3f, 0x9a, 0x7d, - 0xe2, 0x46, 0x13, 0x2b, 0x0b, 0xbc, 0xeb, 0x7d, 0xc2, 0xe8, 0x29, 0x99, 0x84, 0x7b, 0x42, 0x15, - 0xd1, 0x13, 0xce, 0xa2, 0x79, 0x72, 0x4f, 0xad, 0xf5, 0x8c, 0xe0, 0x1e, 0xdf, 0xd5, 0x1f, 0xac, - 0xe0, 0x92, 0x74, 0x44, 0xda, 0xa5, 0x47, 0xe2, 0xa4, 0x9c, 0x56, 0xbd, 0x56, 0x12, 0xfb, 0x11, - 0xac, 0xcc, 0x8c, 0xf3, 0xa5, 0x34, 0xa5, 0xd1, 0x3a, 0xf8, 0xa1, 0x96, 0x56, 0x7f, 0x9f, 0x6a, - 0x59, 0xfd, 0xbf, 0x12, 0x00, 0x2d, 0xcf, 0x0f, 0x17, 0x6d, 0xf1, 0xb5, 0x50, 0x4e, 0x5c, 0x32, - 0x99, 0x9e, 0xa3, 0xdc, 0x73, 0x21, 0x4f, 0x9f, 0x5a, 0xe1, 0xb4, 0x57, 0xc0, 0x71, 0xa4, 0x88, - 0x36, 0xa1, 0x20, 0xd7, 0xbf, 0x37, 0xf2, 0x7c, 0x19, 0x8f, 0x56, 0x30, 0x48, 0x11, 0xd7, 0x44, - 0xf7, 0x61, 0x75, 0x34, 0x3e, 0x74, 0xec, 0x60, 0x40, 0x2d, 0x89, 0x49, 0x0b, 0xcc, 0x4a, 0x24, - 0xe5, 0x30, 0xbd, 0x06, 0xb9, 0xd0, 0x3a, 0x5a, 0x87, 0x54, 0xa7, 0xda, 0xd2, 0x96, 0x4a, 0x6b, - 0x67, 0xe7, 0xe5, 0x42, 0x28, 0xee, 0x54, 0x5b, 0xbc, 0xa6, 0x5b, 0x6b, 0x69, 0x89, 0xd9, 0x9a, - 0x6e, 0xad, 0x55, 0x4a, 0xf3, 0x53, 0x52, 0xff, 0xcb, 0x04, 0x64, 0x25, 0x67, 0x5b, 0x38, 0x62, - 0x03, 0x96, 0xc3, 0x4c, 0x42, 0x12, 0xc9, 0x77, 0xaf, 0x26, 0x7d, 0x15, 0xc5, 0xd1, 0xe4, 0x3a, - 0x86, 0x7a, 0xa5, 0xcf, 0xa0, 0x18, 0xaf, 0x78, 0xad, 0x55, 0xfc, 0x43, 0x28, 0x70, 0x47, 0x09, - 0xc9, 0xdf, 0x16, 0x64, 0x25, 0xaf, 0x54, 0x51, 0xe5, 0x3a, 0x06, 0xaa, 0x90, 0xe8, 0x21, 0x2c, - 0x4b, 0xd6, 0x1a, 0xde, 0xa7, 0x6c, 0x5c, 0xef, 0x8e, 0x38, 0x84, 0xeb, 0x9f, 0x43, 0xba, 0x45, - 0xa9, 0x8f, 0xee, 0xc1, 0xb2, 0xeb, 0x59, 0x74, 0x1a, 0x44, 0x15, 0xe1, 0xb6, 0x68, 0xa3, 0xc6, - 0x09, 0xb7, 0x45, 0x1b, 0x16, 0x9f, 0x3c, 0xbe, 0x41, 0xc3, 0x2b, 0x25, 0xfe, 0xaf, 0x77, 0xa0, - 0xf8, 0x8c, 0xda, 0xfd, 0x01, 0xa3, 0x96, 0x30, 0xf4, 0x01, 0xa4, 0x47, 0x34, 0xea, 0xfc, 0xfa, - 0x42, 0xd7, 0xa1, 0xd4, 0xc7, 0x02, 0xc5, 0x37, 0xe4, 0xa9, 0xd0, 0x56, 0xb7, 0x78, 0xaa, 0xa4, - 0xff, 0x5d, 0x12, 0x56, 0x1b, 0x41, 0x30, 0x26, 0xae, 0x19, 0x9e, 0xb2, 0x3f, 0x99, 0x3d, 0x65, - 0x1f, 0x2c, 0x1c, 0xe1, 0x8c, 0xca, 0x6c, 0x96, 0xaf, 0x82, 0x64, 0x32, 0x0a, 0x92, 0xfa, 0x37, - 0x89, 0x30, 0xbd, 0xbf, 0x1f, 0xdb, 0x37, 0xa5, 0xf5, 0xb3, 0xf3, 0xf2, 0xad, 0xb8, 0x25, 0xda, - 0x75, 0x8f, 0x5d, 0xef, 0xd4, 0x45, 0x6f, 0xf3, 0x74, 0xbf, 0x59, 0x7f, 0xa6, 0x25, 0x4a, 0xb7, - 0xcf, 0xce, 0xcb, 0x68, 0x06, 0x84, 0xa9, 0x4b, 0x4f, 0xb9, 0xa5, 0x56, 0xbd, 0x59, 0xe3, 0xe7, - 0x61, 0x72, 0x81, 0xa5, 0x16, 0x75, 0x2d, 0xdb, 0xed, 0xa3, 0x7b, 0x90, 0x6d, 0xb4, 0xdb, 0x5d, - 0x91, 0x80, 0xbd, 0x71, 0x76, 0x5e, 0xbe, 0x39, 0x83, 0xe2, 0x05, 0x6a, 0x71, 0x10, 0x27, 0x88, - 0xfc, 0xa4, 0x5c, 0x00, 0xe2, 0xdc, 0x85, 0x5a, 0xca, 0xc3, 0xff, 0x2d, 0x09, 0x9a, 0x61, 0x9a, - 0x74, 0xc4, 0x78, 0xbd, 0x22, 0xdd, 0x1d, 0xc8, 0x8d, 0xf8, 0x9f, 0x2d, 0x92, 0x08, 0xee, 0x16, - 0x0f, 0x17, 0x5e, 0xf1, 0xce, 0xe9, 0x55, 0xb0, 0xe7, 0x50, 0xc3, 0x1a, 0xda, 0x41, 0xc0, 0x93, - 0x4b, 0x21, 0xc3, 0x91, 0xa5, 0xd2, 0x2f, 0x13, 0x70, 0x73, 0x01, 0x02, 0x7d, 0x04, 0x69, 0xdf, - 0x73, 0xc2, 0xe5, 0xb9, 0x7b, 0xd5, 0x05, 0x0c, 0x57, 0xc5, 0x02, 0x89, 0x36, 0x00, 0xc8, 0x98, - 0x79, 0x44, 0xb4, 0x2f, 0x16, 0x26, 0x87, 0x63, 0x12, 0xf4, 0x0c, 0xb2, 0x01, 0x35, 0x7d, 0x1a, - 0xf2, 0x99, 0xcf, 0xff, 0xbf, 0xbd, 0xaf, 0xb4, 0x85, 0x19, 0xac, 0xcc, 0x95, 0x2a, 0x90, 0x95, - 0x12, 0xee, 0xd1, 0x16, 0x61, 0x44, 0x74, 0xba, 0x88, 0xc5, 0x3f, 0x77, 0x14, 0xe2, 0xf4, 0x43, - 0x47, 0x21, 0x4e, 0x5f, 0xff, 0x59, 0x12, 0xa0, 0xfe, 0x9c, 0x51, 0xdf, 0x25, 0x4e, 0xd5, 0x40, - 0xf5, 0x58, 0x84, 0x94, 0xa3, 0x7d, 0x6f, 0xe1, 0xb5, 0x5c, 0xa4, 0x51, 0xa9, 0x1a, 0x0b, 0x62, - 0xe4, 0x1d, 0x48, 0x8d, 0x7d, 0x47, 0x5d, 0xf1, 0x0a, 0x22, 0xd2, 0xc5, 0xbb, 0x98, 0xcb, 0x50, - 0x7d, 0x1a, 0x91, 0x52, 0x57, 0xdf, 0xcd, 0xc7, 0x1a, 0xf8, 0xcd, 0x47, 0xa5, 0x0f, 0x00, 0xa6, - 0xbd, 0x46, 0x1b, 0x90, 0xa9, 0xee, 0xb4, 0xdb, 0xbb, 0xda, 0x92, 0xcc, 0x11, 0xa7, 0x55, 0x42, - 0xac, 0xff, 0x6d, 0x02, 0x72, 0x55, 0x43, 0x9d, 0x2a, 0x3b, 0xa0, 0x89, 0x58, 0x62, 0x52, 0x9f, - 0xf5, 0xe8, 0xf3, 0x91, 0xed, 0x4f, 0x54, 0x38, 0xb8, 0x9e, 0xc5, 0xaf, 0x72, 0xad, 0x2a, 0xf5, - 0x59, 0x5d, 0xe8, 0x20, 0x0c, 0x45, 0xaa, 0x86, 0xd8, 0x33, 0x49, 0x18, 0x9c, 0x37, 0xae, 0x9f, - 0x0a, 0xc9, 0xfe, 0xa6, 0xe5, 0x00, 0x17, 0x42, 0x23, 0x55, 0x12, 0xe8, 0x07, 0x70, 0x73, 0xdf, - 0x37, 0x07, 0x34, 0x60, 0xb2, 0x51, 0xd5, 0xe5, 0xcf, 0xe1, 0x2e, 0x23, 0xc1, 0x71, 0x6f, 0x60, - 0x07, 0xcc, 0xf3, 0x27, 0x3d, 0x9f, 0x32, 0xea, 0xf2, 0xfa, 0x9e, 0x78, 0x01, 0x50, 0x39, 0xf8, - 0x1d, 0x8e, 0x79, 0x22, 0x21, 0x38, 0x44, 0xec, 0x72, 0x80, 0xde, 0x80, 0x22, 0x27, 0x6c, 0x35, - 0x7a, 0x44, 0xc6, 0x0e, 0x0b, 0xd0, 0x8f, 0x00, 0x1c, 0xaf, 0xdf, 0x7b, 0xe5, 0x48, 0x9e, 0x77, - 0xbc, 0xbe, 0xfc, 0xd5, 0x7f, 0x17, 0xb4, 0x9a, 0x1d, 0x8c, 0x08, 0x33, 0x07, 0xe1, 0xe5, 0x02, - 0x7a, 0x0c, 0xda, 0x80, 0x12, 0x9f, 0x1d, 0x52, 0xc2, 0x7a, 0x23, 0xea, 0xdb, 0x9e, 0xf5, 0x4a, - 0x53, 0xba, 0x16, 0x69, 0xb5, 0x84, 0x92, 0xfe, 0xab, 0x04, 0x00, 0x26, 0x47, 0x21, 0x01, 0xf8, - 0x01, 0xdc, 0x08, 0x5c, 0x32, 0x0a, 0x06, 0x1e, 0xeb, 0xd9, 0x2e, 0xa3, 0xfe, 0x09, 0x71, 0x54, - 0x82, 0xa8, 0x85, 0x15, 0x0d, 0x25, 0x47, 0x1f, 0x00, 0x3a, 0xa6, 0x74, 0xd4, 0xf3, 0x1c, 0xab, - 0x17, 0x56, 0xca, 0x27, 0x8a, 0x34, 0xd6, 0x78, 0xcd, 0xbe, 0x63, 0xb5, 0x43, 0x39, 0xda, 0x86, - 0x0d, 0x3e, 0x03, 0xd4, 0x65, 0xbe, 0x4d, 0x83, 0xde, 0x91, 0xe7, 0xf7, 0x02, 0xc7, 0x3b, 0xed, - 0x1d, 0x79, 0x8e, 0xe3, 0x9d, 0x52, 0x3f, 0x4c, 0xbf, 0x4b, 0x8e, 0xd7, 0xaf, 0x4b, 0xd0, 0x8e, - 0xe7, 0xb7, 0x1d, 0xef, 0x74, 0x27, 0x44, 0x70, 0x96, 0x30, 0x1d, 0x36, 0xb3, 0xcd, 0xe3, 0x90, - 0x25, 0x44, 0xd2, 0x8e, 0x6d, 0x1e, 0xa3, 0x7b, 0xb0, 0x42, 0x1d, 0x2a, 0x92, 0x38, 0x89, 0xca, - 0x08, 0x54, 0x31, 0x14, 0x72, 0x10, 0x27, 0x4b, 0x72, 0xd3, 0x07, 0x6a, 0xec, 0x9b, 0xc0, 0x33, - 0xff, 0x9e, 0x8c, 0x09, 0xf2, 0x9a, 0x65, 0x05, 0xc3, 0x90, 0x3c, 0x57, 0x30, 0xfd, 0xb7, 0x20, - 0xdf, 0x72, 0x88, 0x29, 0x9e, 0x8e, 0x78, 0x12, 0x6d, 0x7a, 0x2e, 0x77, 0x1b, 0xdb, 0x65, 0x32, - 0x9e, 0xe6, 0x71, 0x5c, 0xa4, 0xff, 0x04, 0xe0, 0xa7, 0x9e, 0xed, 0x76, 0xbc, 0x63, 0xea, 0x8a, - 0x5b, 0x76, 0xce, 0x93, 0xd5, 0xe2, 0xe7, 0xb1, 0x2a, 0x09, 0x16, 0x4f, 0x5c, 0xd2, 0xa7, 0x7e, - 0x74, 0xd9, 0x2c, 0x8b, 0xfc, 0x38, 0xca, 0x62, 0xcf, 0x63, 0x55, 0x03, 0x95, 0x21, 0x6b, 0x92, - 0x5e, 0xb8, 0x57, 0x8b, 0xdb, 0xf9, 0xcb, 0x8b, 0xcd, 0x4c, 0xd5, 0x78, 0x4a, 0x27, 0x38, 0x63, - 0x92, 0xa7, 0x74, 0xc2, 0xcf, 0x6b, 0x93, 0x88, 0x1d, 0x26, 0xcc, 0x14, 0xe5, 0x79, 0x5d, 0x35, - 0xf8, 0xf6, 0xc1, 0x59, 0x93, 0xf0, 0x2f, 0xfa, 0x08, 0x8a, 0x0a, 0xd4, 0x1b, 0x90, 0x60, 0x20, - 0xd9, 0xed, 0xf6, 0xea, 0xe5, 0xc5, 0x26, 0x48, 0xe4, 0x13, 0x12, 0x0c, 0x30, 0x48, 0x34, 0xff, - 0x47, 0x75, 0x28, 0x7c, 0xe5, 0xd9, 0x6e, 0x8f, 0x89, 0x41, 0xa8, 0xdc, 0x7b, 0xe1, 0x8e, 0x9b, - 0x0e, 0x55, 0x5d, 0x08, 0xc0, 0x57, 0x91, 0x44, 0xff, 0x97, 0x04, 0x14, 0xb8, 0x4d, 0xfb, 0xc8, - 0x36, 0xf9, 0xf9, 0xfa, 0xfa, 0x67, 0xc3, 0x1d, 0x48, 0x99, 0x81, 0xaf, 0xc6, 0x26, 0x82, 0x63, - 0xb5, 0x8d, 0x31, 0x97, 0xa1, 0x2f, 0x20, 0x2b, 0xd3, 0x11, 0x75, 0x2c, 0xe8, 0xdf, 0xcd, 0x04, - 0x54, 0x17, 0x95, 0x9e, 0x58, 0xcb, 0x69, 0xef, 0xc4, 0x28, 0x8b, 0x38, 0x2e, 0x42, 0xb7, 0x21, - 0x69, 0xba, 0xc2, 0x8d, 0xd4, 0xeb, 0x5b, 0xb5, 0x89, 0x93, 0xa6, 0xab, 0xff, 0x53, 0x02, 0x56, - 0xea, 0xae, 0xe9, 0x4f, 0x44, 0x58, 0xe5, 0x0b, 0x71, 0x17, 0xf2, 0xc1, 0xf8, 0x30, 0x98, 0x04, - 0x8c, 0x0e, 0xc3, 0xcb, 0xfd, 0x48, 0x80, 0x1a, 0x90, 0x27, 0x4e, 0xdf, 0xf3, 0x6d, 0x36, 0x18, - 0x2a, 0x36, 0xbd, 0x38, 0x94, 0xc7, 0x6d, 0x56, 0x8c, 0x50, 0x05, 0x4f, 0xb5, 0xc3, 0xe0, 0x9d, - 0x12, 0x9d, 0x15, 0xc1, 0xfb, 0x6d, 0x28, 0x3a, 0x64, 0xc8, 0xc9, 0x73, 0x8f, 0x27, 0x69, 0x62, - 0x1c, 0x69, 0x5c, 0x50, 0x32, 0x9e, 0x78, 0xea, 0x3a, 0xe4, 0x23, 0x63, 0x68, 0x0d, 0x0a, 0x46, - 0xbd, 0xdd, 0xfb, 0x78, 0xeb, 0x61, 0xef, 0x71, 0x75, 0x4f, 0x5b, 0x52, 0xdc, 0xe1, 0xef, 0x13, - 0xb0, 0xb2, 0x27, 0x7d, 0x50, 0x51, 0xad, 0x7b, 0xb0, 0xec, 0x93, 0x23, 0x16, 0x92, 0xc1, 0xb4, - 0x74, 0x2e, 0x1e, 0x36, 0x38, 0x19, 0xe4, 0x55, 0x8b, 0xc9, 0x60, 0xec, 0x69, 0x29, 0x75, 0xed, - 0xd3, 0x52, 0xfa, 0x37, 0xf2, 0xb4, 0xa4, 0xff, 0x63, 0x02, 0xd6, 0xd4, 0xd1, 0x1e, 0x3e, 0xa7, - 0xa0, 0xf7, 0x20, 0x2f, 0x77, 0xf4, 0x94, 0xca, 0x8a, 0x17, 0x0e, 0x89, 0x6b, 0xd4, 0x70, 0x4e, - 0x56, 0x37, 0x2c, 0xf4, 0xe3, 0xd8, 0x3d, 0xea, 0x15, 0x84, 0x72, 0xce, 0x7a, 0x65, 0x7a, 0xb9, - 0x7a, 0xe5, 0x0b, 0x4b, 0x98, 0x61, 0xa4, 0x63, 0xef, 0xae, 0xf7, 0x21, 0xcd, 0x35, 0x11, 0x40, - 0xb6, 0xfd, 0x65, 0xbb, 0x53, 0xdf, 0x93, 0xe9, 0xd9, 0x4e, 0x43, 0xbc, 0x6c, 0x2d, 0x43, 0xaa, - 0xde, 0x3c, 0xd0, 0x92, 0xef, 0xff, 0x2a, 0x05, 0xf9, 0x28, 0xed, 0xe7, 0x5b, 0x80, 0x73, 0xcd, - 0x25, 0x79, 0xf9, 0x17, 0xc9, 0x9b, 0x82, 0x65, 0xe6, 0x8d, 0xdd, 0xdd, 0xfd, 0xaa, 0xd1, 0xa9, - 0xd7, 0xb4, 0x2f, 0x24, 0x19, 0x8d, 0x00, 0x86, 0xe3, 0x78, 0xdc, 0x89, 0x2d, 0xa4, 0x4f, 0xc9, - 0xe8, 0x0b, 0x75, 0xc5, 0x18, 0xa1, 0x42, 0x26, 0xfa, 0x0e, 0xe4, 0x8c, 0x76, 0xbb, 0xf1, 0xb8, - 0x59, 0xaf, 0x69, 0x5f, 0x27, 0x4a, 0xdf, 0x3b, 0x3b, 0x2f, 0xdf, 0x98, 0x9a, 0x0a, 0x02, 0xbb, - 0xef, 0x52, 0x4b, 0xa0, 0xaa, 0xd5, 0x7a, 0x8b, 0xb7, 0xf7, 0x22, 0x39, 0x8f, 0x12, 0x14, 0x4c, - 0x3c, 0x17, 0xe4, 0x5b, 0xb8, 0xde, 0x32, 0x30, 0x6f, 0xf1, 0xeb, 0xe4, 0x5c, 0xbf, 0x5a, 0x3e, - 0x1d, 0x11, 0x9f, 0xb7, 0xb9, 0x11, 0x3e, 0x9b, 0xbd, 0x48, 0xc9, 0x2b, 0xe5, 0xe9, 0x5d, 0x07, - 0x25, 0xd6, 0x84, 0xb7, 0x26, 0xee, 0x88, 0x84, 0x99, 0xd4, 0x5c, 0x6b, 0x6d, 0x46, 0x7c, 0xc6, - 0xad, 0xe8, 0xb0, 0x8c, 0xbb, 0xcd, 0xa6, 0x18, 0x5d, 0x7a, 0x6e, 0x74, 0x78, 0xec, 0xba, 0x1c, - 0x73, 0x1f, 0x72, 0xe1, 0x15, 0x92, 0xf6, 0x75, 0x7a, 0xae, 0x43, 0xd5, 0xf0, 0xfe, 0x4b, 0x34, - 0xf8, 0xa4, 0xdb, 0x11, 0xaf, 0x7a, 0x2f, 0x32, 0xf3, 0x0d, 0x0e, 0xc6, 0xcc, 0xe2, 0xf4, 0xbf, - 0x1c, 0xf1, 0xf1, 0xaf, 0x33, 0x92, 0x06, 0x45, 0x18, 0x49, 0xc6, 0xb9, 0x1d, 0x5c, 0xff, 0xa9, - 0x7c, 0x00, 0x7c, 0x91, 0x9d, 0xb3, 0x83, 0xe9, 0x57, 0xd4, 0x64, 0xd4, 0x9a, 0xde, 0x98, 0x47, - 0x55, 0xef, 0xff, 0x1e, 0xe4, 0xc2, 0x00, 0x88, 0x36, 0x20, 0xfb, 0x6c, 0x1f, 0x3f, 0xad, 0x63, - 0x6d, 0x49, 0xce, 0x4e, 0x58, 0xf3, 0x4c, 0x9e, 0x20, 0x65, 0x58, 0xde, 0x33, 0x9a, 0xc6, 0xe3, - 0x3a, 0x0e, 0x6f, 0xec, 0x43, 0x80, 0xda, 0xc5, 0x25, 0x4d, 0x35, 0x10, 0xd9, 0xdc, 0xbe, 0xfb, - 0xcd, 0xb7, 0x1b, 0x4b, 0xbf, 0xf8, 0x76, 0x63, 0xe9, 0x97, 0xdf, 0x6e, 0x24, 0x5e, 0x5c, 0x6e, - 0x24, 0xbe, 0xb9, 0xdc, 0x48, 0xfc, 0xfc, 0x72, 0x23, 0xf1, 0x1f, 0x97, 0x1b, 0x89, 0xc3, 0xac, - 0xe0, 0xa4, 0x9f, 0xfc, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xe5, 0xda, 0x79, 0xf7, 0xc2, 0x22, - 0x00, 0x00, + 0xf2, 0x08, 0x38, 0xa2, 0x3e, 0x75, 0xcd, 0x30, 0xb0, 0xa6, 0x02, 0xfd, 0xe7, 0x79, 0xc8, 0xec, + 0x79, 0x63, 0x97, 0xa1, 0xad, 0xd8, 0x29, 0x5e, 0xdd, 0xda, 0x58, 0x34, 0x05, 0x01, 0xac, 0x74, + 0x26, 0x23, 0xaa, 0x4e, 0xf9, 0x6d, 0xc8, 0xca, 0x58, 0x51, 0xae, 0xab, 0x16, 0x97, 0x33, 0xe2, + 0xf7, 0x29, 0x53, 0x8b, 0xae, 0x5a, 0xe8, 0x01, 0xe4, 0x7c, 0x4a, 0x2c, 0xcf, 0x75, 0x26, 0x22, + 0xa4, 0x72, 0x32, 0xcd, 0x62, 0x4a, 0xac, 0x7d, 0xd7, 0x99, 0xe0, 0xa8, 0x17, 0x3d, 0x81, 0xe2, + 0xa1, 0xed, 0x5a, 0x3d, 0x6f, 0x24, 0x73, 0x5e, 0xe6, 0xea, 0x00, 0x94, 0x5e, 0x6d, 0xdb, 0xae, + 0xb5, 0x2f, 0xc1, 0xb8, 0x70, 0x38, 0x6d, 0xa0, 0x26, 0xac, 0x9e, 0x78, 0xce, 0x78, 0x48, 0x23, + 0x5b, 0x59, 0x61, 0xeb, 0xdd, 0xab, 0x6d, 0x1d, 0x08, 0x7c, 0x68, 0x6d, 0xe5, 0x24, 0xde, 0x44, + 0x4f, 0x61, 0x85, 0x0d, 0x47, 0x47, 0x41, 0x64, 0x6e, 0x59, 0x98, 0xfb, 0xfe, 0x35, 0x0b, 0xc6, + 0xe1, 0xa1, 0xb5, 0x22, 0x8b, 0xb5, 0x4a, 0x7f, 0x96, 0x82, 0x42, 0xcc, 0x73, 0xd4, 0x86, 0xc2, + 0xc8, 0xf7, 0x46, 0xa4, 0x2f, 0xf2, 0xb6, 0xda, 0x8b, 0x8f, 0x5f, 0x69, 0xd6, 0x95, 0xd6, 0x54, + 0x11, 0xc7, 0xad, 0xe8, 0xe7, 0x49, 0x28, 0xc4, 0x3a, 0xd1, 0xfb, 0x90, 0xc3, 0x2d, 0xdc, 0x38, + 0x30, 0x3a, 0x75, 0x6d, 0xa9, 0x74, 0xf7, 0xec, 0xbc, 0xbc, 0x2e, 0xac, 0xc5, 0x0d, 0xb4, 0x7c, + 0xfb, 0x84, 0x87, 0xde, 0x03, 0x58, 0x0e, 0xa1, 0x89, 0xd2, 0x9b, 0x67, 0xe7, 0xe5, 0x37, 0xe6, + 0xa1, 0x31, 0x24, 0x6e, 0x3f, 0x31, 0x70, 0xbd, 0xa6, 0x25, 0x17, 0x23, 0x71, 0x7b, 0x40, 0x7c, + 0x6a, 0xa1, 0xef, 0x43, 0x56, 0x01, 0x53, 0xa5, 0xd2, 0xd9, 0x79, 0xf9, 0xf6, 0x3c, 0x70, 0x8a, + 0xc3, 0xed, 0x5d, 0xe3, 0xa0, 0xae, 0xa5, 0x17, 0xe3, 0x70, 0xdb, 0x21, 0x27, 0x14, 0xbd, 0x03, + 0x19, 0x09, 0xcb, 0x94, 0xee, 0x9c, 0x9d, 0x97, 0xbf, 0xf7, 0x92, 0x39, 0x8e, 0x2a, 0xad, 0xff, + 0xe5, 0xdf, 0x6e, 0x2c, 0xfd, 0xd3, 0xdf, 0x6d, 0x68, 0xf3, 0xdd, 0xa5, 0xff, 0x4d, 0xc0, 0xca, + 0xcc, 0x96, 0x23, 0x1d, 0xb2, 0xae, 0x67, 0x7a, 0x23, 0x99, 0xce, 0x73, 0xdb, 0x70, 0x79, 0xb1, + 0x99, 0x6d, 0x7a, 0x55, 0x6f, 0x34, 0xc1, 0xaa, 0x07, 0x3d, 0x9d, 0xbb, 0x90, 0x3e, 0x79, 0xc5, + 0x78, 0x5a, 0x78, 0x25, 0x7d, 0x0e, 0x2b, 0x96, 0x6f, 0x9f, 0x50, 0xbf, 0x67, 0x7a, 0xee, 0x91, + 0xdd, 0x57, 0xa9, 0xba, 0xb4, 0xc8, 0x66, 0x4d, 0x00, 0x71, 0x51, 0x2a, 0x54, 0x05, 0xfe, 0x37, + 0xb8, 0x8c, 0x4a, 0x07, 0x50, 0x8c, 0x47, 0x28, 0x7a, 0x0b, 0x20, 0xb0, 0xff, 0x88, 0x2a, 0x7e, + 0x23, 0xd8, 0x10, 0xce, 0x73, 0x89, 0x60, 0x37, 0xe8, 0x5d, 0x48, 0x0f, 0x3d, 0x4b, 0xda, 0xc9, + 0x6c, 0xdf, 0xe4, 0x77, 0xe2, 0x2f, 0x2f, 0x36, 0x0b, 0x5e, 0x50, 0xd9, 0xb1, 0x1d, 0xba, 0xe7, + 0x59, 0x14, 0x0b, 0x80, 0x7e, 0x02, 0x69, 0x9e, 0x2a, 0xd0, 0x9b, 0x90, 0xde, 0x6e, 0x34, 0x6b, + 0xda, 0x52, 0xe9, 0xc6, 0xd9, 0x79, 0x79, 0x45, 0x2c, 0x09, 0xef, 0xe0, 0xb1, 0x8b, 0x36, 0x21, + 0x7b, 0xb0, 0xbf, 0xdb, 0xdd, 0xe3, 0xe1, 0x75, 0xf3, 0xec, 0xbc, 0xbc, 0x16, 0x75, 0xcb, 0x45, + 0x43, 0x6f, 0x41, 0xa6, 0xb3, 0xd7, 0xda, 0x69, 0x6b, 0xc9, 0x12, 0x3a, 0x3b, 0x2f, 0xaf, 0x46, + 0xfd, 0xc2, 0xe7, 0xd2, 0x0d, 0xb5, 0xab, 0xf9, 0x48, 0xae, 0xff, 0x4f, 0x12, 0x56, 0x30, 0xe7, + 0xb7, 0x3e, 0x6b, 0x79, 0x8e, 0x6d, 0x4e, 0x50, 0x0b, 0xf2, 0xa6, 0xe7, 0x5a, 0x76, 0xec, 0x4c, + 0x6d, 0x5d, 0x71, 0x09, 0x4e, 0xb5, 0xc2, 0x56, 0x35, 0xd4, 0xc4, 0x53, 0x23, 0x68, 0x0b, 0x32, + 0x16, 0x75, 0xc8, 0xe4, 0xba, 0xdb, 0xb8, 0xa6, 0xb8, 0x34, 0x96, 0x50, 0xc1, 0x1c, 0xc9, 0xf3, + 0x1e, 0x61, 0x8c, 0x0e, 0x47, 0x4c, 0xde, 0xc6, 0x69, 0x5c, 0x18, 0x92, 0xe7, 0x86, 0x12, 0xa1, + 0x1f, 0x42, 0xf6, 0xd4, 0x76, 0x2d, 0xef, 0x54, 0x5d, 0xb8, 0xd7, 0xdb, 0x55, 0x58, 0xfd, 0x8c, + 0xdf, 0xb3, 0x73, 0xce, 0xf2, 0x55, 0x6f, 0xee, 0x37, 0xeb, 0xe1, 0xaa, 0xab, 0xfe, 0x7d, 0xb7, + 0xe9, 0xb9, 0xfc, 0xc4, 0xc0, 0x7e, 0xb3, 0xb7, 0x63, 0x34, 0x76, 0xbb, 0x98, 0xaf, 0xfc, 0xad, + 0xb3, 0xf3, 0xb2, 0x16, 0x41, 0x76, 0x88, 0xed, 0x70, 0x12, 0x78, 0x07, 0x52, 0x46, 0xf3, 0x4b, + 0x2d, 0x59, 0xd2, 0xce, 0xce, 0xcb, 0xc5, 0xa8, 0xdb, 0x70, 0x27, 0xd3, 0xc3, 0x34, 0x3f, 0xae, + 0xfe, 0xef, 0x49, 0x28, 0x76, 0x47, 0x16, 0x61, 0x54, 0x46, 0x26, 0x2a, 0x43, 0x61, 0x44, 0x7c, + 0xe2, 0x38, 0xd4, 0xb1, 0x83, 0xa1, 0x2a, 0x14, 0xe2, 0x22, 0xf4, 0xf0, 0x35, 0x16, 0x53, 0x91, + 0x30, 0xb5, 0xa4, 0x5d, 0x58, 0x3d, 0x92, 0xce, 0xf6, 0x88, 0x29, 0x76, 0x37, 0x25, 0x76, 0xb7, + 0xb2, 0xc8, 0x44, 0xdc, 0xab, 0x8a, 0x9a, 0xa3, 0x21, 0xb4, 0xf0, 0xca, 0x51, 0xbc, 0x89, 0x3e, + 0x85, 0xe5, 0xa1, 0xe7, 0xda, 0xcc, 0xf3, 0x5f, 0x69, 0x1f, 0x42, 0x30, 0x7a, 0x1f, 0x6e, 0xf0, + 0x1d, 0x0e, 0x5d, 0x12, 0xdd, 0xe2, 0xe6, 0x4a, 0xe2, 0xb5, 0x21, 0x79, 0xae, 0xc6, 0xc4, 0x5c, + 0xac, 0x7f, 0x0a, 0x2b, 0x33, 0x3e, 0xf0, 0xdb, 0xbc, 0x65, 0x74, 0xdb, 0x75, 0x6d, 0x09, 0x15, + 0x21, 0x57, 0xdd, 0x6f, 0x76, 0x1a, 0xcd, 0x2e, 0xa7, 0x1e, 0x45, 0xc8, 0xe1, 0xfd, 0xdd, 0xdd, + 0x6d, 0xa3, 0xfa, 0x54, 0x4b, 0xea, 0xff, 0x1d, 0xad, 0xaf, 0xe2, 0x1e, 0xdb, 0xb3, 0xdc, 0xe3, + 0x83, 0xab, 0xa7, 0xae, 0xd8, 0xc7, 0xb4, 0x11, 0x71, 0x90, 0x1f, 0x03, 0x88, 0x6d, 0xa4, 0x56, + 0x8f, 0xb0, 0xeb, 0xea, 0x8b, 0x4e, 0x58, 0x39, 0xe2, 0xbc, 0x52, 0x30, 0x18, 0xfa, 0x02, 0x8a, + 0xa6, 0x37, 0x1c, 0x39, 0x54, 0xe9, 0xa7, 0x5e, 0x45, 0xbf, 0x10, 0xa9, 0x18, 0x2c, 0xce, 0x81, + 0xd2, 0xb3, 0x1c, 0xe8, 0xcf, 0x13, 0x50, 0x88, 0x39, 0x3c, 0x4b, 0x85, 0x8a, 0x90, 0xeb, 0xb6, + 0x6a, 0x46, 0xa7, 0xd1, 0x7c, 0xac, 0x25, 0x10, 0x40, 0x56, 0x2c, 0x60, 0x4d, 0x4b, 0x72, 0xba, + 0x56, 0xdd, 0xdf, 0x6b, 0xed, 0xd6, 0x05, 0x19, 0x42, 0xb7, 0x40, 0x0b, 0x97, 0xb0, 0xd7, 0xee, + 0x18, 0x98, 0x4b, 0xd3, 0xe8, 0x26, 0xac, 0x45, 0x52, 0xa5, 0x99, 0x41, 0xb7, 0x01, 0x45, 0xc2, + 0xa9, 0x89, 0xac, 0xfe, 0x27, 0xb0, 0x56, 0xf5, 0x5c, 0x46, 0x6c, 0x37, 0xa2, 0xb2, 0x5b, 0x7c, + 0xde, 0x4a, 0xd4, 0xb3, 0x2d, 0x99, 0x6d, 0xb7, 0xd7, 0x2e, 0x2f, 0x36, 0x0b, 0x11, 0xb4, 0x51, + 0xe3, 0x33, 0x0d, 0x1b, 0x16, 0x3f, 0x53, 0x23, 0xdb, 0x52, 0xc9, 0x73, 0xf9, 0xf2, 0x62, 0x33, + 0xd5, 0x6a, 0xd4, 0x30, 0x97, 0xa1, 0x37, 0x21, 0x4f, 0x9f, 0xdb, 0xac, 0x67, 0xf2, 0xec, 0xca, + 0xd7, 0x30, 0x83, 0x73, 0x5c, 0x50, 0xe5, 0xc9, 0xf4, 0x4f, 0x93, 0x00, 0x1d, 0x12, 0x1c, 0xab, + 0xa1, 0x1f, 0x41, 0x3e, 0x2a, 0xe2, 0xaf, 0x2b, 0x26, 0x63, 0xfb, 0x15, 0xe1, 0xd1, 0x27, 0x61, + 0xc4, 0x48, 0x8e, 0xbd, 0x58, 0x51, 0x8d, 0xb5, 0x88, 0xa6, 0xce, 0x12, 0x69, 0x7e, 0xd7, 0x50, + 0xdf, 0x57, 0x1b, 0xc7, 0xff, 0xa2, 0xaa, 0xc8, 0xb7, 0x72, 0xce, 0x8a, 0xb9, 0xdd, 0x5b, 0x34, + 0xc8, 0xdc, 0x82, 0x3e, 0x59, 0xc2, 0x53, 0xbd, 0x6d, 0x0d, 0x56, 0xfd, 0xb1, 0xcb, 0xbd, 0xee, + 0x05, 0xa2, 0x5b, 0xb7, 0xe1, 0x8d, 0x26, 0x65, 0xa7, 0x9e, 0x7f, 0x6c, 0x30, 0x46, 0xcc, 0x01, + 0x2f, 0xaa, 0x55, 0x92, 0x99, 0x12, 0xce, 0xc4, 0x0c, 0xe1, 0x5c, 0x87, 0x65, 0xe2, 0xd8, 0x24, + 0xa0, 0xf2, 0x96, 0xce, 0xe3, 0xb0, 0xc9, 0x69, 0x31, 0xb1, 0x2c, 0x9f, 0x06, 0x01, 0x95, 0x65, + 0x60, 0x1e, 0x4f, 0x05, 0xfa, 0xbf, 0x24, 0x01, 0x1a, 0x2d, 0x63, 0x4f, 0x99, 0xaf, 0x41, 0xf6, + 0x88, 0x0c, 0x6d, 0x67, 0x72, 0xdd, 0x21, 0x9b, 0xe2, 0x2b, 0x86, 0x34, 0xb4, 0x23, 0x74, 0xb0, + 0xd2, 0x15, 0x6c, 0x79, 0x7c, 0xe8, 0x52, 0x16, 0xb1, 0x65, 0xd1, 0xe2, 0x57, 0xb3, 0x4f, 0xdc, + 0x68, 0x61, 0x65, 0x83, 0xbb, 0xde, 0x27, 0x8c, 0x9e, 0x92, 0x49, 0x78, 0x26, 0x54, 0x13, 0x3d, + 0xe1, 0x2c, 0x9a, 0x17, 0xf7, 0xd4, 0x5a, 0xcf, 0x08, 0xee, 0xf1, 0x5d, 0xfe, 0x60, 0x05, 0x97, + 0xa4, 0x23, 0xd2, 0x2e, 0x3d, 0x12, 0x37, 0xe5, 0xb4, 0xeb, 0xb5, 0x8a, 0xd8, 0x8f, 0x60, 0x65, + 0x66, 0x9e, 0x2f, 0x95, 0x29, 0x8d, 0xd6, 0xc1, 0x0f, 0xb5, 0xb4, 0xfa, 0xf7, 0xa9, 0x96, 0xd5, + 0xff, 0x2b, 0x01, 0xd0, 0xf2, 0xfc, 0x70, 0xd3, 0x16, 0x3f, 0x0b, 0xe5, 0xc4, 0x23, 0x93, 0xe9, + 0x39, 0x2a, 0x3c, 0x17, 0xf2, 0xf4, 0xa9, 0x15, 0x4e, 0x7b, 0x05, 0x1c, 0x47, 0x8a, 0x68, 0x13, + 0x0a, 0x72, 0xff, 0x7b, 0x23, 0xcf, 0x97, 0xf9, 0x68, 0x05, 0x83, 0x14, 0x71, 0x4d, 0x74, 0x1f, + 0x56, 0x47, 0xe3, 0x43, 0xc7, 0x0e, 0x06, 0xd4, 0x92, 0x98, 0xb4, 0xc0, 0xac, 0x44, 0x52, 0x0e, + 0xd3, 0x6b, 0x90, 0x0b, 0xad, 0xa3, 0x75, 0x48, 0x75, 0xaa, 0x2d, 0x6d, 0xa9, 0xb4, 0x76, 0x76, + 0x5e, 0x2e, 0x84, 0xe2, 0x4e, 0xb5, 0xc5, 0x7b, 0xba, 0xb5, 0x96, 0x96, 0x98, 0xed, 0xe9, 0xd6, + 0x5a, 0xa5, 0x34, 0xbf, 0x25, 0xf5, 0xbf, 0x4e, 0x40, 0x56, 0x72, 0xb6, 0x85, 0x33, 0x36, 0x60, + 0x39, 0xac, 0x24, 0x24, 0x91, 0x7c, 0xf7, 0x6a, 0xd2, 0x57, 0x51, 0x1c, 0x4d, 0xee, 0x63, 0xa8, + 0x57, 0xfa, 0x0c, 0x8a, 0xf1, 0x8e, 0xd7, 0xda, 0xc5, 0x3f, 0x86, 0x02, 0x0f, 0x94, 0x90, 0xfc, + 0x6d, 0x41, 0x56, 0xf2, 0x4a, 0x95, 0x55, 0xae, 0x63, 0xa0, 0x0a, 0x89, 0x1e, 0xc2, 0xb2, 0x64, + 0xad, 0xe1, 0x7b, 0xca, 0xc6, 0xf5, 0xe1, 0x88, 0x43, 0xb8, 0xfe, 0x39, 0xa4, 0x5b, 0x94, 0xfa, + 0xe8, 0x1e, 0x2c, 0xbb, 0x9e, 0x45, 0xa7, 0x49, 0x54, 0x11, 0x6e, 0x8b, 0x36, 0x6a, 0x9c, 0x70, + 0x5b, 0xb4, 0x61, 0xf1, 0xc5, 0xe3, 0x07, 0x34, 0x7c, 0x52, 0xe2, 0xff, 0xf5, 0x0e, 0x14, 0x9f, + 0x51, 0xbb, 0x3f, 0x60, 0xd4, 0x12, 0x86, 0x3e, 0x80, 0xf4, 0x88, 0x46, 0xce, 0xaf, 0x2f, 0x0c, + 0x1d, 0x4a, 0x7d, 0x2c, 0x50, 0xfc, 0x40, 0x9e, 0x0a, 0x6d, 0xf5, 0x8a, 0xa7, 0x5a, 0xfa, 0x3f, + 0x24, 0x61, 0xb5, 0x11, 0x04, 0x63, 0xe2, 0x9a, 0xe1, 0x2d, 0xfb, 0x93, 0xd9, 0x5b, 0xf6, 0xc1, + 0xc2, 0x19, 0xce, 0xa8, 0xcc, 0x56, 0xf9, 0x2a, 0x49, 0x26, 0xa3, 0x24, 0xa9, 0x7f, 0x93, 0x08, + 0xcb, 0xfb, 0xfb, 0xb1, 0x73, 0x53, 0x5a, 0x3f, 0x3b, 0x2f, 0xdf, 0x8a, 0x5b, 0xa2, 0x5d, 0xf7, + 0xd8, 0xf5, 0x4e, 0x5d, 0xf4, 0x36, 0x2f, 0xf7, 0x9b, 0xf5, 0x67, 0x5a, 0xa2, 0x74, 0xfb, 0xec, + 0xbc, 0x8c, 0x66, 0x40, 0x98, 0xba, 0xf4, 0x94, 0x5b, 0x6a, 0xd5, 0x9b, 0x35, 0x7e, 0x1f, 0x26, + 0x17, 0x58, 0x6a, 0x51, 0xd7, 0xb2, 0xdd, 0x3e, 0xba, 0x07, 0xd9, 0x46, 0xbb, 0xdd, 0x15, 0x05, + 0xd8, 0x1b, 0x67, 0xe7, 0xe5, 0x9b, 0x33, 0x28, 0xde, 0xa0, 0x16, 0x07, 0x71, 0x82, 0xc8, 0x6f, + 0xca, 0x05, 0x20, 0xce, 0x5d, 0xa8, 0xa5, 0x22, 0xfc, 0xdf, 0x92, 0xa0, 0x19, 0xa6, 0x49, 0x47, + 0x8c, 0xf7, 0x2b, 0xd2, 0xdd, 0x81, 0xdc, 0x88, 0xff, 0xb3, 0x45, 0x11, 0xc1, 0xc3, 0xe2, 0xe1, + 0xc2, 0x27, 0xde, 0x39, 0xbd, 0x0a, 0xf6, 0x1c, 0x6a, 0x58, 0x43, 0x3b, 0x08, 0x78, 0x71, 0x29, + 0x64, 0x38, 0xb2, 0x54, 0xfa, 0x55, 0x02, 0x6e, 0x2e, 0x40, 0xa0, 0x8f, 0x20, 0xed, 0x7b, 0x4e, + 0xb8, 0x3d, 0x77, 0xaf, 0x7a, 0x80, 0xe1, 0xaa, 0x58, 0x20, 0xd1, 0x06, 0x00, 0x19, 0x33, 0x8f, + 0x88, 0xf1, 0xc5, 0xc6, 0xe4, 0x70, 0x4c, 0x82, 0x9e, 0x41, 0x36, 0xa0, 0xa6, 0x4f, 0x43, 0x3e, + 0xf3, 0xf9, 0xff, 0xd7, 0xfb, 0x4a, 0x5b, 0x98, 0xc1, 0xca, 0x5c, 0xa9, 0x02, 0x59, 0x29, 0xe1, + 0x11, 0x6d, 0x11, 0x46, 0x84, 0xd3, 0x45, 0x2c, 0xfe, 0xf3, 0x40, 0x21, 0x4e, 0x3f, 0x0c, 0x14, + 0xe2, 0xf4, 0xf5, 0x9f, 0x25, 0x01, 0xea, 0xcf, 0x19, 0xf5, 0x5d, 0xe2, 0x54, 0x0d, 0x54, 0x8f, + 0x65, 0x48, 0x39, 0xdb, 0xf7, 0x16, 0x3e, 0xcb, 0x45, 0x1a, 0x95, 0xaa, 0xb1, 0x20, 0x47, 0xde, + 0x81, 0xd4, 0xd8, 0x77, 0xd4, 0x13, 0xaf, 0x20, 0x22, 0x5d, 0xbc, 0x8b, 0xb9, 0x0c, 0xd5, 0xa7, + 0x19, 0x29, 0x75, 0xf5, 0xdb, 0x7c, 0x6c, 0x80, 0xdf, 0x7e, 0x56, 0xfa, 0x00, 0x60, 0xea, 0x35, + 0xda, 0x80, 0x4c, 0x75, 0xa7, 0xdd, 0xde, 0xd5, 0x96, 0x64, 0x8d, 0x38, 0xed, 0x12, 0x62, 0xfd, + 0xef, 0x13, 0x90, 0xab, 0x1a, 0xea, 0x56, 0xd9, 0x01, 0x4d, 0xe4, 0x12, 0x93, 0xfa, 0xac, 0x47, + 0x9f, 0x8f, 0x6c, 0x7f, 0xa2, 0xd2, 0xc1, 0xf5, 0x2c, 0x7e, 0x95, 0x6b, 0x55, 0xa9, 0xcf, 0xea, + 0x42, 0x07, 0x61, 0x28, 0x52, 0x35, 0xc5, 0x9e, 0x49, 0xc2, 0xe4, 0xbc, 0x71, 0xfd, 0x52, 0x48, + 0xf6, 0x37, 0x6d, 0x07, 0xb8, 0x10, 0x1a, 0xa9, 0x92, 0x40, 0x3f, 0x80, 0x9b, 0xfb, 0xbe, 0x39, + 0xa0, 0x01, 0x93, 0x83, 0x2a, 0x97, 0x3f, 0x87, 0xbb, 0x8c, 0x04, 0xc7, 0xbd, 0x81, 0x1d, 0x30, + 0xcf, 0x9f, 0xf4, 0x7c, 0xca, 0xa8, 0xcb, 0xfb, 0x7b, 0xe2, 0x0b, 0x80, 0xaa, 0xc1, 0xef, 0x70, + 0xcc, 0x13, 0x09, 0xc1, 0x21, 0x62, 0x97, 0x03, 0xf4, 0x06, 0x14, 0x39, 0x61, 0xab, 0xd1, 0x23, + 0x32, 0x76, 0x58, 0x80, 0x7e, 0x04, 0xe0, 0x78, 0xfd, 0xde, 0x2b, 0x67, 0xf2, 0xbc, 0xe3, 0xf5, + 0xe5, 0x5f, 0xfd, 0xf7, 0x41, 0xab, 0xd9, 0xc1, 0x88, 0x30, 0x73, 0x10, 0x3e, 0x2e, 0xa0, 0xc7, + 0xa0, 0x0d, 0x28, 0xf1, 0xd9, 0x21, 0x25, 0xac, 0x37, 0xa2, 0xbe, 0xed, 0x59, 0xaf, 0xb4, 0xa4, + 0x6b, 0x91, 0x56, 0x4b, 0x28, 0xe9, 0xbf, 0x4e, 0x00, 0x60, 0x72, 0x14, 0x12, 0x80, 0x1f, 0xc0, + 0x8d, 0xc0, 0x25, 0xa3, 0x60, 0xe0, 0xb1, 0x9e, 0xed, 0x32, 0xea, 0x9f, 0x10, 0x47, 0x15, 0x88, + 0x5a, 0xd8, 0xd1, 0x50, 0x72, 0xf4, 0x01, 0xa0, 0x63, 0x4a, 0x47, 0x3d, 0xcf, 0xb1, 0x7a, 0x61, + 0xa7, 0xfc, 0x44, 0x91, 0xc6, 0x1a, 0xef, 0xd9, 0x77, 0xac, 0x76, 0x28, 0x47, 0xdb, 0xb0, 0xc1, + 0x57, 0x80, 0xba, 0xcc, 0xb7, 0x69, 0xd0, 0x3b, 0xf2, 0xfc, 0x5e, 0xe0, 0x78, 0xa7, 0xbd, 0x23, + 0xcf, 0x71, 0xbc, 0x53, 0xea, 0x87, 0xe5, 0x77, 0xc9, 0xf1, 0xfa, 0x75, 0x09, 0xda, 0xf1, 0xfc, + 0xb6, 0xe3, 0x9d, 0xee, 0x84, 0x08, 0xce, 0x12, 0xa6, 0xd3, 0x66, 0xb6, 0x79, 0x1c, 0xb2, 0x84, + 0x48, 0xda, 0xb1, 0xcd, 0x63, 0x74, 0x0f, 0x56, 0xa8, 0x43, 0x45, 0x11, 0x27, 0x51, 0x19, 0x81, + 0x2a, 0x86, 0x42, 0x0e, 0xd2, 0x7f, 0x07, 0xf2, 0x2d, 0x87, 0x98, 0xe2, 0x43, 0x10, 0x2f, 0x89, + 0x4d, 0xcf, 0xe5, 0x41, 0x60, 0xbb, 0x4c, 0x66, 0xc7, 0x3c, 0x8e, 0x8b, 0xf4, 0x9f, 0x00, 0xfc, + 0xd4, 0xb3, 0xdd, 0x8e, 0x77, 0x4c, 0x5d, 0xf1, 0x66, 0xce, 0x59, 0xaf, 0xda, 0xca, 0x3c, 0x56, + 0x2d, 0xc1, 0xc9, 0x89, 0x4b, 0xfa, 0xd4, 0x8f, 0x9e, 0x8e, 0x65, 0x93, 0x5f, 0x2e, 0x59, 0xec, + 0x79, 0xac, 0x6a, 0xa0, 0x32, 0x64, 0x4d, 0xd2, 0x0b, 0x4f, 0x5e, 0x71, 0x3b, 0x7f, 0x79, 0xb1, + 0x99, 0xa9, 0x1a, 0x4f, 0xe9, 0x04, 0x67, 0x4c, 0xf2, 0x94, 0x4e, 0xf8, 0xed, 0x6b, 0x12, 0x71, + 0x5e, 0x84, 0x99, 0xa2, 0xbc, 0x7d, 0xab, 0x06, 0x3f, 0x0c, 0x38, 0x6b, 0x12, 0xfe, 0x8b, 0x3e, + 0x82, 0xa2, 0x02, 0xf5, 0x06, 0x24, 0x18, 0x48, 0xae, 0xba, 0xbd, 0x7a, 0x79, 0xb1, 0x09, 0x12, + 0xf9, 0x84, 0x04, 0x03, 0x0c, 0x12, 0xcd, 0xff, 0xa3, 0x3a, 0x14, 0xbe, 0xf2, 0x6c, 0xb7, 0xc7, + 0xc4, 0x24, 0x54, 0x25, 0xbd, 0xf0, 0xfc, 0x4c, 0xa7, 0xaa, 0xca, 0x7b, 0xf8, 0x2a, 0x92, 0xe8, + 0xff, 0x9a, 0x80, 0x02, 0xb7, 0x69, 0x1f, 0xd9, 0x26, 0xbf, 0x2d, 0x5f, 0x3f, 0xd3, 0xdf, 0x81, + 0x94, 0x19, 0xf8, 0x6a, 0x6e, 0x22, 0xd5, 0x55, 0xdb, 0x18, 0x73, 0x19, 0xfa, 0x02, 0xb2, 0xb2, + 0xb8, 0x50, 0x49, 0x5e, 0xff, 0xee, 0x7b, 0x5d, 0xb9, 0xa8, 0xf4, 0xc4, 0x5e, 0x4e, 0xbd, 0x13, + 0xb3, 0x2c, 0xe2, 0xb8, 0x08, 0xdd, 0x86, 0xa4, 0xe9, 0x8a, 0xa0, 0x50, 0xdf, 0xd2, 0xaa, 0x4d, + 0x9c, 0x34, 0x5d, 0xfd, 0x9f, 0x13, 0xb0, 0x52, 0x77, 0x4d, 0x7f, 0x22, 0x92, 0x24, 0xdf, 0x88, + 0xbb, 0x90, 0x0f, 0xc6, 0x87, 0xc1, 0x24, 0x60, 0x74, 0x18, 0x3e, 0xd5, 0x47, 0x02, 0xd4, 0x80, + 0x3c, 0x71, 0xfa, 0x9e, 0x6f, 0xb3, 0xc1, 0x50, 0x71, 0xe3, 0xc5, 0x89, 0x39, 0x6e, 0xb3, 0x62, + 0x84, 0x2a, 0x78, 0xaa, 0x1d, 0xa6, 0xe2, 0x94, 0x70, 0x56, 0xa4, 0xe2, 0xb7, 0xa1, 0xe8, 0x90, + 0x21, 0xa7, 0xc2, 0x3d, 0x5e, 0x72, 0x89, 0x79, 0xa4, 0x71, 0x41, 0xc9, 0x78, 0x19, 0xa9, 0xeb, + 0x90, 0x8f, 0x8c, 0xa1, 0x35, 0x28, 0x18, 0xf5, 0x76, 0xef, 0xe3, 0xad, 0x87, 0xbd, 0xc7, 0xd5, + 0x3d, 0x6d, 0x49, 0x31, 0x81, 0x7f, 0x4c, 0xc0, 0xca, 0x9e, 0x8c, 0x41, 0x45, 0x9c, 0xee, 0xc1, + 0xb2, 0x4f, 0x8e, 0x58, 0x48, 0xed, 0xd2, 0x32, 0xb8, 0x78, 0x12, 0xe0, 0xd4, 0x8e, 0x77, 0x2d, + 0xa6, 0x76, 0xb1, 0x0f, 0x45, 0xa9, 0x6b, 0x3f, 0x14, 0xa5, 0x7f, 0x2b, 0x1f, 0x8a, 0xf4, 0x5f, + 0x26, 0x60, 0x4d, 0x5d, 0xd4, 0xe1, 0xc7, 0x11, 0xf4, 0x1e, 0xe4, 0xe5, 0x9d, 0x3d, 0x25, 0xa6, + 0xe2, 0x7b, 0x85, 0xc4, 0x35, 0x6a, 0x38, 0x27, 0xbb, 0x1b, 0x16, 0xfa, 0x71, 0xec, 0x55, 0xf4, + 0x0a, 0x7a, 0x38, 0x67, 0xbd, 0x32, 0x7d, 0x2a, 0xbd, 0xf2, 0x7b, 0xc9, 0x26, 0x14, 0x94, 0x03, + 0xa2, 0x6c, 0x90, 0x75, 0x20, 0x48, 0x51, 0x93, 0x0c, 0xa9, 0x7e, 0x1f, 0xd2, 0xdc, 0x0c, 0x02, + 0xc8, 0xb6, 0xbf, 0x6c, 0x77, 0xea, 0x7b, 0xb2, 0xf2, 0xda, 0x69, 0x88, 0x8f, 0x56, 0xcb, 0x90, + 0xaa, 0x37, 0x0f, 0xb4, 0xe4, 0xfb, 0xbf, 0x4e, 0x41, 0x3e, 0xaa, 0xe8, 0xf9, 0x79, 0xe0, 0x34, + 0x72, 0x49, 0xbe, 0xeb, 0x45, 0xf2, 0xa6, 0x20, 0x90, 0x79, 0x63, 0x77, 0x77, 0xbf, 0x6a, 0x74, + 0xea, 0x35, 0xed, 0x0b, 0xc9, 0x33, 0x23, 0x80, 0xe1, 0x38, 0x1e, 0x8f, 0x68, 0x0b, 0xe9, 0x53, + 0x9e, 0xf9, 0x42, 0xbd, 0x1e, 0x46, 0xa8, 0x90, 0x64, 0xbe, 0x03, 0x39, 0xa3, 0xdd, 0x6e, 0x3c, + 0x6e, 0xd6, 0x6b, 0xda, 0xd7, 0x89, 0xd2, 0xf7, 0xce, 0xce, 0xcb, 0x37, 0xa6, 0xa6, 0x82, 0xc0, + 0xee, 0xbb, 0xd4, 0x12, 0xa8, 0x6a, 0xb5, 0xde, 0xe2, 0xe3, 0xbd, 0x48, 0xce, 0xa3, 0x04, 0xbb, + 0x12, 0x5f, 0x02, 0xf2, 0x2d, 0x5c, 0x6f, 0x19, 0x98, 0x8f, 0xf8, 0x75, 0x72, 0xce, 0xaf, 0x96, + 0x4f, 0x47, 0xc4, 0xe7, 0x63, 0x6e, 0x84, 0x5f, 0xc4, 0x5e, 0xa4, 0xe4, 0x6b, 0xf1, 0xf4, 0x19, + 0x83, 0x12, 0x6b, 0xc2, 0x47, 0x13, 0xcf, 0x3f, 0xc2, 0x4c, 0x6a, 0x6e, 0xb4, 0x36, 0x23, 0x3e, + 0xe3, 0x56, 0x74, 0x58, 0xc6, 0xdd, 0x66, 0x53, 0xcc, 0x2e, 0x3d, 0x37, 0x3b, 0x3c, 0x76, 0x5d, + 0x8e, 0xb9, 0x0f, 0xb9, 0xf0, 0x75, 0x48, 0xfb, 0x3a, 0x3d, 0xe7, 0x50, 0x35, 0x7c, 0xda, 0x12, + 0x03, 0x3e, 0xe9, 0x76, 0xc4, 0x07, 0xbb, 0x17, 0x99, 0xf9, 0x01, 0x07, 0x63, 0x66, 0x71, 0x66, + 0x5f, 0x8e, 0xa8, 0xf6, 0xd7, 0x19, 0xc9, 0x70, 0x22, 0x8c, 0xe4, 0xd9, 0xdc, 0x0e, 0xae, 0xff, + 0x54, 0x7e, 0xdb, 0x7b, 0x91, 0x9d, 0xb3, 0x83, 0xe9, 0x57, 0xd4, 0x64, 0xd4, 0x9a, 0x3e, 0x86, + 0x47, 0x5d, 0xef, 0xff, 0x01, 0xe4, 0xc2, 0x6c, 0x88, 0x36, 0x20, 0xfb, 0x6c, 0x1f, 0x3f, 0xad, + 0x63, 0x6d, 0x49, 0xae, 0x4e, 0xd8, 0xf3, 0x4c, 0x5e, 0x27, 0x65, 0x58, 0xde, 0x33, 0x9a, 0xc6, + 0xe3, 0x3a, 0x0e, 0x1f, 0xe3, 0x43, 0x80, 0x3a, 0xd2, 0x25, 0x4d, 0x0d, 0x10, 0xd9, 0xdc, 0xbe, + 0xfb, 0xcd, 0xb7, 0x1b, 0x4b, 0xbf, 0xf8, 0x76, 0x63, 0xe9, 0x57, 0xdf, 0x6e, 0x24, 0x5e, 0x5c, + 0x6e, 0x24, 0xbe, 0xb9, 0xdc, 0x48, 0xfc, 0xfc, 0x72, 0x23, 0xf1, 0x1f, 0x97, 0x1b, 0x89, 0xc3, + 0xac, 0xa0, 0x9b, 0x9f, 0xfc, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x79, 0xf6, 0x7c, 0x35, 0x9d, + 0x22, 0x00, 0x00, } diff --git a/api/types.proto b/api/types.proto index 69e2e0f73c..e85ec666b3 100644 --- a/api/types.proto +++ b/api/types.proto @@ -658,14 +658,6 @@ message RaftConfig { uint32 election_tick = 5; } - -// SecretsConfig specifies cluster-level secrets settings. -message SecretsConfig { - // MaxSecrets specifies how many user-specified secrets there can be. A value - // of 0 will be interpreted as the default maximum value. - uint32 max_secrets = 1; -} - // Placement specifies task distribution constraints. message Placement { // constraints specifies a set of requirements a node should meet for a task. @@ -780,7 +772,7 @@ message SecretReference { // Target is the name by which the image accesses the secret. string target = 3; - // Name is the name of the secret that this references, but this is just provided for + // SecretName is the name of the secret that this references, but this is just provided for // lookup/display purposes. The secret in the reference will be identified by its ID. - string name = 4; + string secret_name = 4; } diff --git a/manager/controlapi/secret.go b/manager/controlapi/secret.go new file mode 100644 index 0000000000..a44183e324 --- /dev/null +++ b/manager/controlapi/secret.go @@ -0,0 +1,50 @@ +package controlapi + +import ( + "github.com/docker/swarmkit/api" + "golang.org/x/net/context" + "google.golang.org/grpc" + "google.golang.org/grpc/codes" +) + +// Currently this is contains the unimplemented secret functions in order to satisfy the interface + +// MaxSecretSize is the maximum byte length of the `Secret.Spec.Data` field. +const MaxSecretSize = 500 * 1024 // 500KB + +// GetSecret returns a `GetSecretResponse` with a `Secret` with the same +// id as `GetSecretRequest.SecretID` +// - Returns `NotFound` if the Secret with the given id is not found. +// - Returns `InvalidArgument` if the `GetSecretRequest.SecretID` is empty. +// - Returns an error if getting fails. +func (s *Server) GetSecret(ctx context.Context, request *api.GetSecretRequest) (*api.GetSecretResponse, error) { + return nil, grpc.Errorf(codes.Unimplemented, "Not yet implemented") +} + +// ListSecrets returns a `ListSecretResponse` with a list all non-internal `Secret`s being +// managed, or all secrets matching any name in `ListSecretsRequest.Names`, any +// name prefix in `ListSecretsRequest.NamePrefixes`, any id in +// `ListSecretsRequest.SecretIDs`, or any id prefix in `ListSecretsRequest.IDPrefixes`. +// - Returns an error if listing fails. +func (s *Server) ListSecrets(ctx context.Context, request *api.ListSecretsRequest) (*api.ListSecretsResponse, error) { + return nil, grpc.Errorf(codes.Unimplemented, "Not yet implemented") +} + +// CreateSecret creates and return a `CreateSecretResponse` with a `Secret` based +// on the provided `CreateSecretRequest.SecretSpec`. +// - Returns `InvalidArgument` if the `CreateSecretRequest.SecretSpec` is malformed, +// or if the secret data is too long or contains invalid characters. +// - Returns `ResourceExhausted` if there are already the maximum number of allowed +// secrets in the system. +// - Returns an error if the creation fails. +func (s *Server) CreateSecret(ctx context.Context, request *api.CreateSecretRequest) (*api.CreateSecretResponse, error) { + return nil, grpc.Errorf(codes.Unimplemented, "Not yet implemented") +} + +// RemoveSecret removes the secret referenced by `RemoveSecretRequest.ID`. +// - Returns `InvalidArgument` if `RemoveSecretRequest.ID` is empty. +// - Returns `NotFound` if the a secret named `RemoveSecretRequest.ID` is not found. +// - Returns an error if the deletion fails. +func (s *Server) RemoveSecret(ctx context.Context, request *api.RemoveSecretRequest) (*api.RemoveSecretResponse, error) { + return nil, grpc.Errorf(codes.Unimplemented, "Not yet implemented") +}