From 746d2891f938d8e2d5b90f7caa9ea435f05ec767 Mon Sep 17 00:00:00 2001 From: MyonKeminta Date: Thu, 22 Apr 2021 09:31:01 +0000 Subject: [PATCH 1/4] Add proto for implemening lock view --- pkg/deadlock/deadlock.pb.go | 326 +++++++- pkg/kvrpcpb/kvrpcpb.pb.go | 1395 ++++++++++++++++++++++++----------- pkg/tikvpb/tikvpb.pb.go | 351 +++++---- proto/deadlock.proto | 10 + proto/kvrpcpb.proto | 16 + proto/tikvpb.proto | 3 + 6 files changed, 1492 insertions(+), 609 deletions(-) diff --git a/pkg/deadlock/deadlock.pb.go b/pkg/deadlock/deadlock.pb.go index a635b9626..67acb918c 100644 --- a/pkg/deadlock/deadlock.pb.go +++ b/pkg/deadlock/deadlock.pb.go @@ -53,7 +53,7 @@ func (x DeadlockRequestType) String() string { return proto.EnumName(DeadlockRequestType_name, int32(x)) } func (DeadlockRequestType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_deadlock_457927c5a1d4a76c, []int{0} + return fileDescriptor_deadlock_6374d0ff2c4885de, []int{0} } type WaitForEntriesRequest struct { @@ -66,7 +66,7 @@ func (m *WaitForEntriesRequest) Reset() { *m = WaitForEntriesRequest{} } func (m *WaitForEntriesRequest) String() string { return proto.CompactTextString(m) } func (*WaitForEntriesRequest) ProtoMessage() {} func (*WaitForEntriesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_deadlock_457927c5a1d4a76c, []int{0} + return fileDescriptor_deadlock_6374d0ff2c4885de, []int{0} } func (m *WaitForEntriesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -106,7 +106,7 @@ func (m *WaitForEntriesResponse) Reset() { *m = WaitForEntriesResponse{} func (m *WaitForEntriesResponse) String() string { return proto.CompactTextString(m) } func (*WaitForEntriesResponse) ProtoMessage() {} func (*WaitForEntriesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_deadlock_457927c5a1d4a76c, []int{1} + return fileDescriptor_deadlock_6374d0ff2c4885de, []int{1} } func (m *WaitForEntriesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -148,7 +148,15 @@ type WaitForEntry struct { // The transaction id that is being waited for. WaitForTxn uint64 `protobuf:"varint,2,opt,name=wait_for_txn,json=waitForTxn,proto3" json:"wait_for_txn,omitempty"` // The hash value of the key is being waited for. - KeyHash uint64 `protobuf:"varint,3,opt,name=key_hash,json=keyHash,proto3" json:"key_hash,omitempty"` + KeyHash uint64 `protobuf:"varint,3,opt,name=key_hash,json=keyHash,proto3" json:"key_hash,omitempty"` + // The key the current txn is trying to lock. + Key []byte `protobuf:"bytes,4,opt,name=key,proto3" json:"key,omitempty"` + // The key that is being waited for. It can be different from `key` since they are checked by hash. + WaitForKeyHash []byte `protobuf:"bytes,5,opt,name=wait_for_key_hash,json=waitForKeyHash,proto3" json:"wait_for_key_hash,omitempty"` + // The sql that needs to wait for the lock. + SqlDigest string `protobuf:"bytes,6,opt,name=sql_digest,json=sqlDigest,proto3" json:"sql_digest,omitempty"` + // Milliseconds it has been waits. + WaitTime uint64 `protobuf:"varint,7,opt,name=wait_time,json=waitTime,proto3" json:"wait_time,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -158,7 +166,7 @@ func (m *WaitForEntry) Reset() { *m = WaitForEntry{} } func (m *WaitForEntry) String() string { return proto.CompactTextString(m) } func (*WaitForEntry) ProtoMessage() {} func (*WaitForEntry) Descriptor() ([]byte, []int) { - return fileDescriptor_deadlock_457927c5a1d4a76c, []int{2} + return fileDescriptor_deadlock_6374d0ff2c4885de, []int{2} } func (m *WaitForEntry) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -208,6 +216,34 @@ func (m *WaitForEntry) GetKeyHash() uint64 { return 0 } +func (m *WaitForEntry) GetKey() []byte { + if m != nil { + return m.Key + } + return nil +} + +func (m *WaitForEntry) GetWaitForKeyHash() []byte { + if m != nil { + return m.WaitForKeyHash + } + return nil +} + +func (m *WaitForEntry) GetSqlDigest() string { + if m != nil { + return m.SqlDigest + } + return "" +} + +func (m *WaitForEntry) GetWaitTime() uint64 { + if m != nil { + return m.WaitTime + } + return 0 +} + type DeadlockRequest struct { Tp DeadlockRequestType `protobuf:"varint,1,opt,name=tp,proto3,enum=deadlock.DeadlockRequestType" json:"tp,omitempty"` Entry WaitForEntry `protobuf:"bytes,2,opt,name=entry" json:"entry"` @@ -220,7 +256,7 @@ func (m *DeadlockRequest) Reset() { *m = DeadlockRequest{} } func (m *DeadlockRequest) String() string { return proto.CompactTextString(m) } func (*DeadlockRequest) ProtoMessage() {} func (*DeadlockRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_deadlock_457927c5a1d4a76c, []int{3} + return fileDescriptor_deadlock_6374d0ff2c4885de, []int{3} } func (m *DeadlockRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -267,17 +303,19 @@ type DeadlockResponse struct { // The same entry sent by DeadlockRequest, identifies the sender. Entry WaitForEntry `protobuf:"bytes,1,opt,name=entry" json:"entry"` // The key hash of the lock that is hold by the waiting transaction. - DeadlockKeyHash uint64 `protobuf:"varint,2,opt,name=deadlock_key_hash,json=deadlockKeyHash,proto3" json:"deadlock_key_hash,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + DeadlockKeyHash uint64 `protobuf:"varint,2,opt,name=deadlock_key_hash,json=deadlockKeyHash,proto3" json:"deadlock_key_hash,omitempty"` + // The other entries of the dead lock circle. + WaitChain []*WaitForEntry `protobuf:"bytes,3,rep,name=wait_chain,json=waitChain" json:"wait_chain,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *DeadlockResponse) Reset() { *m = DeadlockResponse{} } func (m *DeadlockResponse) String() string { return proto.CompactTextString(m) } func (*DeadlockResponse) ProtoMessage() {} func (*DeadlockResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_deadlock_457927c5a1d4a76c, []int{4} + return fileDescriptor_deadlock_6374d0ff2c4885de, []int{4} } func (m *DeadlockResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -320,6 +358,13 @@ func (m *DeadlockResponse) GetDeadlockKeyHash() uint64 { return 0 } +func (m *DeadlockResponse) GetWaitChain() []*WaitForEntry { + if m != nil { + return m.WaitChain + } + return nil +} + func init() { proto.RegisterType((*WaitForEntriesRequest)(nil), "deadlock.WaitForEntriesRequest") proto.RegisterType((*WaitForEntriesResponse)(nil), "deadlock.WaitForEntriesResponse") @@ -561,6 +606,29 @@ func (m *WaitForEntry) MarshalTo(dAtA []byte) (int, error) { i++ i = encodeVarintDeadlock(dAtA, i, uint64(m.KeyHash)) } + if len(m.Key) > 0 { + dAtA[i] = 0x22 + i++ + i = encodeVarintDeadlock(dAtA, i, uint64(len(m.Key))) + i += copy(dAtA[i:], m.Key) + } + if len(m.WaitForKeyHash) > 0 { + dAtA[i] = 0x2a + i++ + i = encodeVarintDeadlock(dAtA, i, uint64(len(m.WaitForKeyHash))) + i += copy(dAtA[i:], m.WaitForKeyHash) + } + if len(m.SqlDigest) > 0 { + dAtA[i] = 0x32 + i++ + i = encodeVarintDeadlock(dAtA, i, uint64(len(m.SqlDigest))) + i += copy(dAtA[i:], m.SqlDigest) + } + if m.WaitTime != 0 { + dAtA[i] = 0x38 + i++ + i = encodeVarintDeadlock(dAtA, i, uint64(m.WaitTime)) + } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) } @@ -629,6 +697,18 @@ func (m *DeadlockResponse) MarshalTo(dAtA []byte) (int, error) { i++ i = encodeVarintDeadlock(dAtA, i, uint64(m.DeadlockKeyHash)) } + if len(m.WaitChain) > 0 { + for _, msg := range m.WaitChain { + dAtA[i] = 0x1a + i++ + i = encodeVarintDeadlock(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) } @@ -680,6 +760,21 @@ func (m *WaitForEntry) Size() (n int) { if m.KeyHash != 0 { n += 1 + sovDeadlock(uint64(m.KeyHash)) } + l = len(m.Key) + if l > 0 { + n += 1 + l + sovDeadlock(uint64(l)) + } + l = len(m.WaitForKeyHash) + if l > 0 { + n += 1 + l + sovDeadlock(uint64(l)) + } + l = len(m.SqlDigest) + if l > 0 { + n += 1 + l + sovDeadlock(uint64(l)) + } + if m.WaitTime != 0 { + n += 1 + sovDeadlock(uint64(m.WaitTime)) + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -708,6 +803,12 @@ func (m *DeadlockResponse) Size() (n int) { if m.DeadlockKeyHash != 0 { n += 1 + sovDeadlock(uint64(m.DeadlockKeyHash)) } + if len(m.WaitChain) > 0 { + for _, e := range m.WaitChain { + l = e.Size() + n += 1 + l + sovDeadlock(uint64(l)) + } + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -946,6 +1047,116 @@ func (m *WaitForEntry) Unmarshal(dAtA []byte) error { break } } + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDeadlock + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthDeadlock + } + postIndex := iNdEx + byteLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Key = append(m.Key[:0], dAtA[iNdEx:postIndex]...) + if m.Key == nil { + m.Key = []byte{} + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field WaitForKeyHash", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDeadlock + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthDeadlock + } + postIndex := iNdEx + byteLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.WaitForKeyHash = append(m.WaitForKeyHash[:0], dAtA[iNdEx:postIndex]...) + if m.WaitForKeyHash == nil { + m.WaitForKeyHash = []byte{} + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SqlDigest", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDeadlock + } + 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 ErrInvalidLengthDeadlock + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SqlDigest = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field WaitTime", wireType) + } + m.WaitTime = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDeadlock + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.WaitTime |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipDeadlock(dAtA[iNdEx:]) @@ -1146,6 +1357,37 @@ func (m *DeadlockResponse) Unmarshal(dAtA []byte) error { break } } + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field WaitChain", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDeadlock + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthDeadlock + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.WaitChain = append(m.WaitChain, &WaitForEntry{}) + if err := m.WaitChain[len(m.WaitChain)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipDeadlock(dAtA[iNdEx:]) @@ -1273,32 +1515,38 @@ var ( ErrIntOverflowDeadlock = fmt.Errorf("proto: integer overflow") ) -func init() { proto.RegisterFile("deadlock.proto", fileDescriptor_deadlock_457927c5a1d4a76c) } - -var fileDescriptor_deadlock_457927c5a1d4a76c = []byte{ - // 382 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x52, 0x5d, 0x4e, 0xea, 0x40, - 0x14, 0xee, 0x14, 0x2e, 0x90, 0x03, 0x81, 0x72, 0xee, 0xbd, 0x5c, 0x68, 0x72, 0x4b, 0xd3, 0x27, - 0x42, 0x22, 0x9a, 0x9a, 0xb8, 0x00, 0x04, 0x35, 0xf1, 0xc5, 0x34, 0x18, 0x7d, 0x31, 0x4d, 0x85, - 0x11, 0x08, 0xa4, 0x53, 0xdb, 0x31, 0xd0, 0x9d, 0xb8, 0x07, 0x37, 0xc2, 0xa3, 0x2b, 0x30, 0x06, - 0x37, 0x62, 0xfa, 0x07, 0x48, 0x20, 0xfa, 0x36, 0x3d, 0xdf, 0x37, 0xdf, 0xcf, 0xe9, 0x40, 0x71, - 0x40, 0xad, 0xc1, 0x94, 0xf5, 0x27, 0x2d, 0xc7, 0x65, 0x9c, 0x61, 0x2e, 0xf9, 0x96, 0xff, 0x0c, - 0xd9, 0x90, 0x85, 0xc3, 0xc3, 0xe0, 0x14, 0xe1, 0xda, 0x3f, 0xf8, 0x7b, 0x63, 0x8d, 0xf9, 0x19, - 0x73, 0xbb, 0x36, 0x77, 0xc7, 0xd4, 0x33, 0xe8, 0xe3, 0x13, 0xf5, 0xb8, 0x76, 0x05, 0x95, 0x6d, - 0xc0, 0x73, 0x98, 0xed, 0x51, 0x3c, 0x81, 0x2c, 0x8d, 0x46, 0x55, 0xa2, 0xa6, 0x1a, 0x79, 0xbd, - 0xd2, 0x5a, 0x99, 0x6e, 0x5c, 0xf1, 0xdb, 0xe9, 0xc5, 0x5b, 0x5d, 0x30, 0x12, 0xb2, 0x76, 0x07, - 0x85, 0x4d, 0x18, 0x25, 0x48, 0xf1, 0xb9, 0x5d, 0x25, 0x2a, 0x69, 0xa4, 0x8d, 0xe0, 0x88, 0x2a, - 0x14, 0x66, 0xd6, 0x98, 0x9b, 0x0f, 0xcc, 0x35, 0x03, 0x48, 0x0c, 0x21, 0x98, 0x45, 0xb7, 0x7a, - 0x73, 0x1b, 0x6b, 0x90, 0x9b, 0x50, 0xdf, 0x1c, 0x59, 0xde, 0xa8, 0x9a, 0x0a, 0xd1, 0xec, 0x84, - 0xfa, 0x17, 0x96, 0x37, 0xd2, 0x38, 0x94, 0x3a, 0x71, 0x8c, 0xb8, 0x03, 0x1e, 0x80, 0xc8, 0x9d, - 0xd0, 0xa0, 0xa8, 0xff, 0x5f, 0x87, 0xdc, 0xa2, 0xf5, 0x7c, 0x87, 0x1a, 0x22, 0x77, 0x50, 0x87, - 0x5f, 0x41, 0x56, 0x3f, 0xf4, 0xfd, 0xae, 0x56, 0x44, 0xd5, 0x5c, 0x90, 0xd6, 0x72, 0xf1, 0x82, - 0x56, 0x3a, 0xe4, 0xc7, 0x3a, 0xd8, 0x84, 0x72, 0xc2, 0x32, 0x57, 0x0d, 0xa3, 0xfe, 0xa5, 0x04, - 0xb8, 0x8c, 0x9a, 0x36, 0xdb, 0xf0, 0x7b, 0x47, 0x05, 0x04, 0xc8, 0x74, 0x28, 0xa7, 0x7d, 0x2e, - 0x09, 0x88, 0x50, 0x3c, 0x9d, 0x52, 0xcb, 0xbe, 0x76, 0x62, 0x4b, 0x89, 0x60, 0x1e, 0xb2, 0xf1, - 0x4c, 0x12, 0xf5, 0x17, 0x02, 0xb9, 0x44, 0x04, 0x6f, 0xa1, 0x7c, 0x4e, 0xf9, 0xd7, 0xdf, 0x8d, - 0xf5, 0x9d, 0xb1, 0xd7, 0x2f, 0x44, 0x56, 0xf7, 0x13, 0xa2, 0x45, 0x68, 0x02, 0x76, 0x93, 0x4c, - 0x58, 0xdb, 0xbb, 0x7f, 0x59, 0xde, 0x05, 0x25, 0x12, 0x0d, 0x72, 0x44, 0xda, 0xd2, 0x62, 0xa9, - 0x90, 0xd7, 0xa5, 0x42, 0xde, 0x97, 0x0a, 0x79, 0xfe, 0x50, 0x84, 0xfb, 0x4c, 0xf8, 0x7c, 0x8f, - 0x3f, 0x03, 0x00, 0x00, 0xff, 0xff, 0xde, 0xd4, 0x6f, 0x8f, 0xf0, 0x02, 0x00, 0x00, +func init() { proto.RegisterFile("deadlock.proto", fileDescriptor_deadlock_6374d0ff2c4885de) } + +var fileDescriptor_deadlock_6374d0ff2c4885de = []byte{ + // 471 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x53, 0xcd, 0x6e, 0xd3, 0x40, + 0x10, 0xce, 0x26, 0x69, 0x7e, 0xa6, 0x51, 0xea, 0x0c, 0x50, 0xdc, 0xa0, 0xa6, 0x96, 0x4f, 0xa6, + 0x12, 0x05, 0x05, 0xc1, 0x03, 0xa4, 0x29, 0x20, 0x71, 0x41, 0x56, 0x10, 0xdc, 0x2c, 0x93, 0x0c, + 0x89, 0x95, 0xd4, 0xeb, 0x64, 0x17, 0xb5, 0x7e, 0x13, 0x5e, 0x01, 0xf1, 0x22, 0x3d, 0x72, 0xe2, + 0x88, 0x50, 0x78, 0x11, 0xb4, 0x6b, 0x6f, 0x5c, 0xaa, 0x14, 0xb8, 0x8d, 0xbf, 0xef, 0x9b, 0x6f, + 0x77, 0xbe, 0x59, 0x43, 0x7b, 0x42, 0xe1, 0x64, 0xc1, 0xc7, 0xf3, 0x93, 0x64, 0xc5, 0x25, 0xc7, + 0x86, 0xf9, 0xee, 0xde, 0x9d, 0xf2, 0x29, 0xd7, 0xe0, 0x63, 0x55, 0x65, 0xbc, 0x7b, 0x1f, 0xee, + 0xbd, 0x0b, 0x23, 0xf9, 0x82, 0xaf, 0xce, 0x62, 0xb9, 0x8a, 0x48, 0xf8, 0xb4, 0xfc, 0x44, 0x42, + 0xba, 0x6f, 0x60, 0xff, 0x26, 0x21, 0x12, 0x1e, 0x0b, 0xc2, 0xe7, 0x50, 0xa7, 0x0c, 0xb2, 0x99, + 0x53, 0xf1, 0x76, 0xfb, 0xfb, 0x27, 0x9b, 0x43, 0xaf, 0xb5, 0xa4, 0x83, 0xea, 0xd5, 0x8f, 0xa3, + 0x92, 0x6f, 0xc4, 0xee, 0x77, 0x06, 0xad, 0xeb, 0x3c, 0x5a, 0x50, 0x91, 0x97, 0xb1, 0xcd, 0x1c, + 0xe6, 0x55, 0x7d, 0x55, 0xa2, 0x03, 0xad, 0x8b, 0x30, 0x92, 0xc1, 0x47, 0xbe, 0x0a, 0x14, 0x55, + 0xd6, 0x14, 0x5c, 0x64, 0x5d, 0xa3, 0xcb, 0x18, 0x0f, 0xa0, 0x31, 0xa7, 0x34, 0x98, 0x85, 0x62, + 0x66, 0x57, 0x34, 0x5b, 0x9f, 0x53, 0xfa, 0x2a, 0x14, 0x33, 0x65, 0x37, 0xa7, 0xd4, 0xae, 0x3a, + 0xcc, 0x6b, 0xf9, 0xaa, 0xc4, 0x87, 0xd0, 0xd9, 0xd8, 0x6d, 0xba, 0x76, 0x34, 0xdf, 0xce, 0x3d, + 0x5f, 0xe7, 0xcd, 0x87, 0x00, 0x62, 0xb9, 0x08, 0x26, 0xd1, 0x94, 0x84, 0xb4, 0x6b, 0x0e, 0xf3, + 0x9a, 0x7e, 0x53, 0x2c, 0x17, 0x43, 0x0d, 0xe0, 0x03, 0x68, 0x6a, 0x27, 0x19, 0x9d, 0x93, 0x5d, + 0xd7, 0xe7, 0x36, 0x14, 0x30, 0x8a, 0xce, 0xc9, 0x95, 0xb0, 0x37, 0xcc, 0x03, 0xc8, 0xd3, 0xc3, + 0x47, 0x50, 0x96, 0x89, 0x9e, 0xac, 0xdd, 0x3f, 0x2c, 0xe2, 0xb9, 0x21, 0x1b, 0xa5, 0x09, 0xf9, + 0x65, 0x99, 0x60, 0x1f, 0x76, 0x54, 0x4a, 0xa9, 0x1e, 0xf8, 0x5f, 0x81, 0x66, 0x52, 0xf7, 0x0b, + 0x03, 0xab, 0xf0, 0xcb, 0x77, 0xb3, 0x31, 0x62, 0xff, 0x6d, 0x84, 0xc7, 0xd0, 0x31, 0xaa, 0x22, + 0xa5, 0x2c, 0xf9, 0x3d, 0x43, 0x98, 0x98, 0x9e, 0x81, 0x5e, 0x46, 0x30, 0x9e, 0x85, 0x51, 0x6c, + 0x57, 0xfe, 0xb6, 0x7e, 0x5f, 0x27, 0x76, 0xaa, 0x84, 0xc7, 0x03, 0xb8, 0xb3, 0x65, 0x74, 0x04, + 0xa8, 0x0d, 0x49, 0xd2, 0x58, 0x5a, 0x25, 0x44, 0x68, 0x9f, 0x2e, 0x28, 0x8c, 0xdf, 0x26, 0xb9, + 0x89, 0xc5, 0x70, 0x17, 0xea, 0x39, 0x66, 0x95, 0xfb, 0x5f, 0x19, 0x34, 0x8c, 0x09, 0xbe, 0x87, + 0xce, 0x4b, 0x92, 0x7f, 0x3e, 0x50, 0x3c, 0xda, 0x7a, 0x91, 0xe2, 0x4d, 0x77, 0x9d, 0xdb, 0x05, + 0x59, 0x7e, 0x6e, 0x09, 0xcf, 0xcc, 0x9d, 0xf0, 0xe0, 0xd6, 0xbd, 0x75, 0xbb, 0xdb, 0x28, 0x63, + 0xe1, 0xb1, 0x27, 0x6c, 0x60, 0x5d, 0xad, 0x7b, 0xec, 0xdb, 0xba, 0xc7, 0x7e, 0xae, 0x7b, 0xec, + 0xf3, 0xaf, 0x5e, 0xe9, 0x43, 0x4d, 0xff, 0x70, 0x4f, 0x7f, 0x07, 0x00, 0x00, 0xff, 0xff, 0x6b, + 0x9b, 0x60, 0xa1, 0xa2, 0x03, 0x00, 0x00, } diff --git a/pkg/kvrpcpb/kvrpcpb.pb.go b/pkg/kvrpcpb/kvrpcpb.pb.go index 863d83d1d..5fa8c267c 100644 --- a/pkg/kvrpcpb/kvrpcpb.pb.go +++ b/pkg/kvrpcpb/kvrpcpb.pb.go @@ -12,6 +12,8 @@ import ( _ "github.com/gogo/protobuf/gogoproto" + deadlock "github.com/pingcap/kvproto/pkg/deadlock" + errorpb "github.com/pingcap/kvproto/pkg/errorpb" metapb "github.com/pingcap/kvproto/pkg/metapb" @@ -48,7 +50,7 @@ func (x VerOp) String() string { return proto.EnumName(VerOp_name, int32(x)) } func (VerOp) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{0} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{0} } type CommandPri int32 @@ -74,7 +76,7 @@ func (x CommandPri) String() string { return proto.EnumName(CommandPri_name, int32(x)) } func (CommandPri) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{1} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{1} } type IsolationLevel int32 @@ -97,7 +99,7 @@ func (x IsolationLevel) String() string { return proto.EnumName(IsolationLevel_name, int32(x)) } func (IsolationLevel) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{2} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{2} } type Op int32 @@ -136,7 +138,7 @@ func (x Op) String() string { return proto.EnumName(Op_name, int32(x)) } func (Op) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{3} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{3} } type Assertion int32 @@ -162,7 +164,7 @@ func (x Assertion) String() string { return proto.EnumName(Assertion_name, int32(x)) } func (Assertion) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{4} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{4} } type Action int32 @@ -197,7 +199,7 @@ func (x Action) String() string { return proto.EnumName(Action_name, int32(x)) } func (Action) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{5} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{5} } type ExtraOp int32 @@ -221,7 +223,7 @@ func (x ExtraOp) String() string { return proto.EnumName(ExtraOp_name, int32(x)) } func (ExtraOp) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{6} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{6} } // A transactional get command. Lookup a value for `key` in the transaction with @@ -239,7 +241,7 @@ func (m *GetRequest) Reset() { *m = GetRequest{} } func (m *GetRequest) String() string { return proto.CompactTextString(m) } func (*GetRequest) ProtoMessage() {} func (*GetRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{0} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{0} } func (m *GetRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -310,7 +312,7 @@ func (m *GetResponse) Reset() { *m = GetResponse{} } func (m *GetResponse) String() string { return proto.CompactTextString(m) } func (*GetResponse) ProtoMessage() {} func (*GetResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{1} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{1} } func (m *GetResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -400,7 +402,7 @@ func (m *ScanRequest) Reset() { *m = ScanRequest{} } func (m *ScanRequest) String() string { return proto.CompactTextString(m) } func (*ScanRequest) ProtoMessage() {} func (*ScanRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{2} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{2} } func (m *ScanRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -502,7 +504,7 @@ func (m *ScanResponse) Reset() { *m = ScanResponse{} } func (m *ScanResponse) String() string { return proto.CompactTextString(m) } func (*ScanResponse) ProtoMessage() {} func (*ScanResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{3} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{3} } func (m *ScanResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -596,7 +598,7 @@ func (m *PrewriteRequest) Reset() { *m = PrewriteRequest{} } func (m *PrewriteRequest) String() string { return proto.CompactTextString(m) } func (*PrewriteRequest) ProtoMessage() {} func (*PrewriteRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{4} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{4} } func (m *PrewriteRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -743,7 +745,7 @@ func (m *PrewriteResponse) Reset() { *m = PrewriteResponse{} } func (m *PrewriteResponse) String() string { return proto.CompactTextString(m) } func (*PrewriteResponse) ProtoMessage() {} func (*PrewriteResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{5} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{5} } func (m *PrewriteResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -828,7 +830,9 @@ type PessimisticLockRequest struct { ReturnValues bool `protobuf:"varint,10,opt,name=return_values,json=returnValues,proto3" json:"return_values,omitempty"` // If min_commit_ts > 0, this is large transaction proto, the final commit_ts // would be infered from min_commit_ts. - MinCommitTs uint64 `protobuf:"varint,11,opt,name=min_commit_ts,json=minCommitTs,proto3" json:"min_commit_ts,omitempty"` + MinCommitTs uint64 `protobuf:"varint,11,opt,name=min_commit_ts,json=minCommitTs,proto3" json:"min_commit_ts,omitempty"` + // The digest of the SQL that's acquiring the lock. + SqlDigest string `protobuf:"bytes,12,opt,name=sql_digest,json=sqlDigest,proto3" json:"sql_digest,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -838,7 +842,7 @@ func (m *PessimisticLockRequest) Reset() { *m = PessimisticLockRequest{} func (m *PessimisticLockRequest) String() string { return proto.CompactTextString(m) } func (*PessimisticLockRequest) ProtoMessage() {} func (*PessimisticLockRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{6} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{6} } func (m *PessimisticLockRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -944,6 +948,13 @@ func (m *PessimisticLockRequest) GetMinCommitTs() uint64 { return 0 } +func (m *PessimisticLockRequest) GetSqlDigest() string { + if m != nil { + return m.SqlDigest + } + return "" +} + type PessimisticLockResponse struct { RegionError *errorpb.Error `protobuf:"bytes,1,opt,name=region_error,json=regionError" json:"region_error,omitempty"` Errors []*KeyError `protobuf:"bytes,2,rep,name=errors" json:"errors,omitempty"` @@ -966,7 +977,7 @@ func (m *PessimisticLockResponse) Reset() { *m = PessimisticLockResponse func (m *PessimisticLockResponse) String() string { return proto.CompactTextString(m) } func (*PessimisticLockResponse) ProtoMessage() {} func (*PessimisticLockResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{7} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{7} } func (m *PessimisticLockResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1052,7 +1063,7 @@ func (m *PessimisticRollbackRequest) Reset() { *m = PessimisticRollbackR func (m *PessimisticRollbackRequest) String() string { return proto.CompactTextString(m) } func (*PessimisticRollbackRequest) ProtoMessage() {} func (*PessimisticRollbackRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{8} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{8} } func (m *PessimisticRollbackRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1121,7 +1132,7 @@ func (m *PessimisticRollbackResponse) Reset() { *m = PessimisticRollback func (m *PessimisticRollbackResponse) String() string { return proto.CompactTextString(m) } func (*PessimisticRollbackResponse) ProtoMessage() {} func (*PessimisticRollbackResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{9} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{9} } func (m *PessimisticRollbackResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1182,7 +1193,7 @@ func (m *TxnHeartBeatRequest) Reset() { *m = TxnHeartBeatRequest{} } func (m *TxnHeartBeatRequest) String() string { return proto.CompactTextString(m) } func (*TxnHeartBeatRequest) ProtoMessage() {} func (*TxnHeartBeatRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{10} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{10} } func (m *TxnHeartBeatRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1253,7 +1264,7 @@ func (m *TxnHeartBeatResponse) Reset() { *m = TxnHeartBeatResponse{} } func (m *TxnHeartBeatResponse) String() string { return proto.CompactTextString(m) } func (*TxnHeartBeatResponse) ProtoMessage() {} func (*TxnHeartBeatResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{11} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{11} } func (m *TxnHeartBeatResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1339,7 +1350,7 @@ func (m *CheckTxnStatusRequest) Reset() { *m = CheckTxnStatusRequest{} } func (m *CheckTxnStatusRequest) String() string { return proto.CompactTextString(m) } func (*CheckTxnStatusRequest) ProtoMessage() {} func (*CheckTxnStatusRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{12} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{12} } func (m *CheckTxnStatusRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1445,7 +1456,7 @@ func (m *CheckTxnStatusResponse) Reset() { *m = CheckTxnStatusResponse{} func (m *CheckTxnStatusResponse) String() string { return proto.CompactTextString(m) } func (*CheckTxnStatusResponse) ProtoMessage() {} func (*CheckTxnStatusResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{13} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{13} } func (m *CheckTxnStatusResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1533,7 +1544,7 @@ func (m *CheckSecondaryLocksRequest) Reset() { *m = CheckSecondaryLocksR func (m *CheckSecondaryLocksRequest) String() string { return proto.CompactTextString(m) } func (*CheckSecondaryLocksRequest) ProtoMessage() {} func (*CheckSecondaryLocksRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{14} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{14} } func (m *CheckSecondaryLocksRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1602,7 +1613,7 @@ func (m *CheckSecondaryLocksResponse) Reset() { *m = CheckSecondaryLocks func (m *CheckSecondaryLocksResponse) String() string { return proto.CompactTextString(m) } func (*CheckSecondaryLocksResponse) ProtoMessage() {} func (*CheckSecondaryLocksResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{15} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{15} } func (m *CheckSecondaryLocksResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1678,7 +1689,7 @@ func (m *CommitRequest) Reset() { *m = CommitRequest{} } func (m *CommitRequest) String() string { return proto.CompactTextString(m) } func (*CommitRequest) ProtoMessage() {} func (*CommitRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{16} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{16} } func (m *CommitRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1749,7 +1760,7 @@ func (m *CommitResponse) Reset() { *m = CommitResponse{} } func (m *CommitResponse) String() string { return proto.CompactTextString(m) } func (*CommitResponse) ProtoMessage() {} func (*CommitResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{17} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{17} } func (m *CommitResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1812,7 +1823,7 @@ func (m *ImportRequest) Reset() { *m = ImportRequest{} } func (m *ImportRequest) String() string { return proto.CompactTextString(m) } func (*ImportRequest) ProtoMessage() {} func (*ImportRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{18} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{18} } func (m *ImportRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1867,7 +1878,7 @@ func (m *ImportResponse) Reset() { *m = ImportResponse{} } func (m *ImportResponse) String() string { return proto.CompactTextString(m) } func (*ImportResponse) ProtoMessage() {} func (*ImportResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{19} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{19} } func (m *ImportResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1929,7 +1940,7 @@ func (m *CleanupRequest) Reset() { *m = CleanupRequest{} } func (m *CleanupRequest) String() string { return proto.CompactTextString(m) } func (*CleanupRequest) ProtoMessage() {} func (*CleanupRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{20} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{20} } func (m *CleanupRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2000,7 +2011,7 @@ func (m *CleanupResponse) Reset() { *m = CleanupResponse{} } func (m *CleanupResponse) String() string { return proto.CompactTextString(m) } func (*CleanupResponse) ProtoMessage() {} func (*CleanupResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{21} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{21} } func (m *CleanupResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2064,7 +2075,7 @@ func (m *BatchGetRequest) Reset() { *m = BatchGetRequest{} } func (m *BatchGetRequest) String() string { return proto.CompactTextString(m) } func (*BatchGetRequest) ProtoMessage() {} func (*BatchGetRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{22} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{22} } func (m *BatchGetRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2132,7 +2143,7 @@ func (m *BatchGetResponse) Reset() { *m = BatchGetResponse{} } func (m *BatchGetResponse) String() string { return proto.CompactTextString(m) } func (*BatchGetResponse) ProtoMessage() {} func (*BatchGetResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{23} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{23} } func (m *BatchGetResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2206,7 +2217,7 @@ func (m *BatchRollbackRequest) Reset() { *m = BatchRollbackRequest{} } func (m *BatchRollbackRequest) String() string { return proto.CompactTextString(m) } func (*BatchRollbackRequest) ProtoMessage() {} func (*BatchRollbackRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{24} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{24} } func (m *BatchRollbackRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2268,7 +2279,7 @@ func (m *BatchRollbackResponse) Reset() { *m = BatchRollbackResponse{} } func (m *BatchRollbackResponse) String() string { return proto.CompactTextString(m) } func (*BatchRollbackResponse) ProtoMessage() {} func (*BatchRollbackResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{25} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{25} } func (m *BatchRollbackResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2332,7 +2343,7 @@ func (m *ScanLockRequest) Reset() { *m = ScanLockRequest{} } func (m *ScanLockRequest) String() string { return proto.CompactTextString(m) } func (*ScanLockRequest) ProtoMessage() {} func (*ScanLockRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{26} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{26} } func (m *ScanLockRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2410,7 +2421,7 @@ func (m *ScanLockResponse) Reset() { *m = ScanLockResponse{} } func (m *ScanLockResponse) String() string { return proto.CompactTextString(m) } func (*ScanLockResponse) ProtoMessage() {} func (*ScanLockResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{27} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{27} } func (m *ScanLockResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2480,7 +2491,7 @@ func (m *ResolveLockRequest) Reset() { *m = ResolveLockRequest{} } func (m *ResolveLockRequest) String() string { return proto.CompactTextString(m) } func (*ResolveLockRequest) ProtoMessage() {} func (*ResolveLockRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{28} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{28} } func (m *ResolveLockRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2556,7 +2567,7 @@ func (m *ResolveLockResponse) Reset() { *m = ResolveLockResponse{} } func (m *ResolveLockResponse) String() string { return proto.CompactTextString(m) } func (*ResolveLockResponse) ProtoMessage() {} func (*ResolveLockResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{29} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{29} } func (m *ResolveLockResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2612,7 +2623,7 @@ func (m *GCRequest) Reset() { *m = GCRequest{} } func (m *GCRequest) String() string { return proto.CompactTextString(m) } func (*GCRequest) ProtoMessage() {} func (*GCRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{30} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{30} } func (m *GCRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2667,7 +2678,7 @@ func (m *GCResponse) Reset() { *m = GCResponse{} } func (m *GCResponse) String() string { return proto.CompactTextString(m) } func (*GCResponse) ProtoMessage() {} func (*GCResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{31} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{31} } func (m *GCResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2729,7 +2740,7 @@ func (m *DeleteRangeRequest) Reset() { *m = DeleteRangeRequest{} } func (m *DeleteRangeRequest) String() string { return proto.CompactTextString(m) } func (*DeleteRangeRequest) ProtoMessage() {} func (*DeleteRangeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{32} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{32} } func (m *DeleteRangeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2798,7 +2809,7 @@ func (m *DeleteRangeResponse) Reset() { *m = DeleteRangeResponse{} } func (m *DeleteRangeResponse) String() string { return proto.CompactTextString(m) } func (*DeleteRangeResponse) ProtoMessage() {} func (*DeleteRangeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{33} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{33} } func (m *DeleteRangeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2854,7 +2865,7 @@ func (m *RawGetRequest) Reset() { *m = RawGetRequest{} } func (m *RawGetRequest) String() string { return proto.CompactTextString(m) } func (*RawGetRequest) ProtoMessage() {} func (*RawGetRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{34} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{34} } func (m *RawGetRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2918,7 +2929,7 @@ func (m *RawGetResponse) Reset() { *m = RawGetResponse{} } func (m *RawGetResponse) String() string { return proto.CompactTextString(m) } func (*RawGetResponse) ProtoMessage() {} func (*RawGetResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{35} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{35} } func (m *RawGetResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2988,7 +2999,7 @@ func (m *RawBatchGetRequest) Reset() { *m = RawBatchGetRequest{} } func (m *RawBatchGetRequest) String() string { return proto.CompactTextString(m) } func (*RawBatchGetRequest) ProtoMessage() {} func (*RawBatchGetRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{36} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{36} } func (m *RawBatchGetRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3050,7 +3061,7 @@ func (m *RawBatchGetResponse) Reset() { *m = RawBatchGetResponse{} } func (m *RawBatchGetResponse) String() string { return proto.CompactTextString(m) } func (*RawBatchGetResponse) ProtoMessage() {} func (*RawBatchGetResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{37} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{37} } func (m *RawBatchGetResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3109,7 +3120,7 @@ func (m *RawPutRequest) Reset() { *m = RawPutRequest{} } func (m *RawPutRequest) String() string { return proto.CompactTextString(m) } func (*RawPutRequest) ProtoMessage() {} func (*RawPutRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{38} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{38} } func (m *RawPutRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3192,7 +3203,7 @@ func (m *RawPutResponse) Reset() { *m = RawPutResponse{} } func (m *RawPutResponse) String() string { return proto.CompactTextString(m) } func (*RawPutResponse) ProtoMessage() {} func (*RawPutResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{39} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{39} } func (m *RawPutResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3250,7 +3261,7 @@ func (m *RawBatchPutRequest) Reset() { *m = RawBatchPutRequest{} } func (m *RawBatchPutRequest) String() string { return proto.CompactTextString(m) } func (*RawBatchPutRequest) ProtoMessage() {} func (*RawBatchPutRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{40} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{40} } func (m *RawBatchPutRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3326,7 +3337,7 @@ func (m *RawBatchPutResponse) Reset() { *m = RawBatchPutResponse{} } func (m *RawBatchPutResponse) String() string { return proto.CompactTextString(m) } func (*RawBatchPutResponse) ProtoMessage() {} func (*RawBatchPutResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{41} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{41} } func (m *RawBatchPutResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3383,7 +3394,7 @@ func (m *RawDeleteRequest) Reset() { *m = RawDeleteRequest{} } func (m *RawDeleteRequest) String() string { return proto.CompactTextString(m) } func (*RawDeleteRequest) ProtoMessage() {} func (*RawDeleteRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{42} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{42} } func (m *RawDeleteRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3452,7 +3463,7 @@ func (m *RawDeleteResponse) Reset() { *m = RawDeleteResponse{} } func (m *RawDeleteResponse) String() string { return proto.CompactTextString(m) } func (*RawDeleteResponse) ProtoMessage() {} func (*RawDeleteResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{43} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{43} } func (m *RawDeleteResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3509,7 +3520,7 @@ func (m *RawBatchDeleteRequest) Reset() { *m = RawBatchDeleteRequest{} } func (m *RawBatchDeleteRequest) String() string { return proto.CompactTextString(m) } func (*RawBatchDeleteRequest) ProtoMessage() {} func (*RawBatchDeleteRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{44} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{44} } func (m *RawBatchDeleteRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3578,7 +3589,7 @@ func (m *RawBatchDeleteResponse) Reset() { *m = RawBatchDeleteResponse{} func (m *RawBatchDeleteResponse) String() string { return proto.CompactTextString(m) } func (*RawBatchDeleteResponse) ProtoMessage() {} func (*RawBatchDeleteResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{45} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{45} } func (m *RawBatchDeleteResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3640,7 +3651,7 @@ func (m *RawScanRequest) Reset() { *m = RawScanRequest{} } func (m *RawScanRequest) String() string { return proto.CompactTextString(m) } func (*RawScanRequest) ProtoMessage() {} func (*RawScanRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{46} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{46} } func (m *RawScanRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3730,7 +3741,7 @@ func (m *RawScanResponse) Reset() { *m = RawScanResponse{} } func (m *RawScanResponse) String() string { return proto.CompactTextString(m) } func (*RawScanResponse) ProtoMessage() {} func (*RawScanResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{47} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{47} } func (m *RawScanResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3787,7 +3798,7 @@ func (m *RawDeleteRangeRequest) Reset() { *m = RawDeleteRangeRequest{} } func (m *RawDeleteRangeRequest) String() string { return proto.CompactTextString(m) } func (*RawDeleteRangeRequest) ProtoMessage() {} func (*RawDeleteRangeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{48} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{48} } func (m *RawDeleteRangeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3856,7 +3867,7 @@ func (m *RawDeleteRangeResponse) Reset() { *m = RawDeleteRangeResponse{} func (m *RawDeleteRangeResponse) String() string { return proto.CompactTextString(m) } func (*RawDeleteRangeResponse) ProtoMessage() {} func (*RawDeleteRangeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{49} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{49} } func (m *RawDeleteRangeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3915,7 +3926,7 @@ func (m *RawBatchScanRequest) Reset() { *m = RawBatchScanRequest{} } func (m *RawBatchScanRequest) String() string { return proto.CompactTextString(m) } func (*RawBatchScanRequest) ProtoMessage() {} func (*RawBatchScanRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{50} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{50} } func (m *RawBatchScanRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3998,7 +4009,7 @@ func (m *RawBatchScanResponse) Reset() { *m = RawBatchScanResponse{} } func (m *RawBatchScanResponse) String() string { return proto.CompactTextString(m) } func (*RawBatchScanResponse) ProtoMessage() {} func (*RawBatchScanResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{51} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{51} } func (m *RawBatchScanResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4054,7 +4065,7 @@ func (m *UnsafeDestroyRangeRequest) Reset() { *m = UnsafeDestroyRangeReq func (m *UnsafeDestroyRangeRequest) String() string { return proto.CompactTextString(m) } func (*UnsafeDestroyRangeRequest) ProtoMessage() {} func (*UnsafeDestroyRangeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{52} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{52} } func (m *UnsafeDestroyRangeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4116,7 +4127,7 @@ func (m *UnsafeDestroyRangeResponse) Reset() { *m = UnsafeDestroyRangeRe func (m *UnsafeDestroyRangeResponse) String() string { return proto.CompactTextString(m) } func (*UnsafeDestroyRangeResponse) ProtoMessage() {} func (*UnsafeDestroyRangeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{53} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{53} } func (m *UnsafeDestroyRangeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4171,7 +4182,7 @@ func (m *RegisterLockObserverRequest) Reset() { *m = RegisterLockObserve func (m *RegisterLockObserverRequest) String() string { return proto.CompactTextString(m) } func (*RegisterLockObserverRequest) ProtoMessage() {} func (*RegisterLockObserverRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{54} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{54} } func (m *RegisterLockObserverRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4225,7 +4236,7 @@ func (m *RegisterLockObserverResponse) Reset() { *m = RegisterLockObserv func (m *RegisterLockObserverResponse) String() string { return proto.CompactTextString(m) } func (*RegisterLockObserverResponse) ProtoMessage() {} func (*RegisterLockObserverResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{55} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{55} } func (m *RegisterLockObserverResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4273,7 +4284,7 @@ func (m *CheckLockObserverRequest) Reset() { *m = CheckLockObserverReque func (m *CheckLockObserverRequest) String() string { return proto.CompactTextString(m) } func (*CheckLockObserverRequest) ProtoMessage() {} func (*CheckLockObserverRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{56} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{56} } func (m *CheckLockObserverRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4329,7 +4340,7 @@ func (m *CheckLockObserverResponse) Reset() { *m = CheckLockObserverResp func (m *CheckLockObserverResponse) String() string { return proto.CompactTextString(m) } func (*CheckLockObserverResponse) ProtoMessage() {} func (*CheckLockObserverResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{57} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{57} } func (m *CheckLockObserverResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4391,7 +4402,7 @@ func (m *RemoveLockObserverRequest) Reset() { *m = RemoveLockObserverReq func (m *RemoveLockObserverRequest) String() string { return proto.CompactTextString(m) } func (*RemoveLockObserverRequest) ProtoMessage() {} func (*RemoveLockObserverRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{58} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{58} } func (m *RemoveLockObserverRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4445,7 +4456,7 @@ func (m *RemoveLockObserverResponse) Reset() { *m = RemoveLockObserverRe func (m *RemoveLockObserverResponse) String() string { return proto.CompactTextString(m) } func (*RemoveLockObserverResponse) ProtoMessage() {} func (*RemoveLockObserverResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{59} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{59} } func (m *RemoveLockObserverResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4495,7 +4506,7 @@ func (m *PhysicalScanLockRequest) Reset() { *m = PhysicalScanLockRequest func (m *PhysicalScanLockRequest) String() string { return proto.CompactTextString(m) } func (*PhysicalScanLockRequest) ProtoMessage() {} func (*PhysicalScanLockRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{60} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{60} } func (m *PhysicalScanLockRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4564,7 +4575,7 @@ func (m *PhysicalScanLockResponse) Reset() { *m = PhysicalScanLockRespon func (m *PhysicalScanLockResponse) String() string { return proto.CompactTextString(m) } func (*PhysicalScanLockResponse) ProtoMessage() {} func (*PhysicalScanLockResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{61} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{61} } func (m *PhysicalScanLockResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4621,7 +4632,7 @@ func (m *SplitRegionRequest) Reset() { *m = SplitRegionRequest{} } func (m *SplitRegionRequest) String() string { return proto.CompactTextString(m) } func (*SplitRegionRequest) ProtoMessage() {} func (*SplitRegionRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{62} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{62} } func (m *SplitRegionRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4686,7 +4697,7 @@ func (m *SplitRegionResponse) Reset() { *m = SplitRegionResponse{} } func (m *SplitRegionResponse) String() string { return proto.CompactTextString(m) } func (*SplitRegionResponse) ProtoMessage() {} func (*SplitRegionResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{63} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{63} } func (m *SplitRegionResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4761,7 +4772,7 @@ func (m *ReadIndexRequest) Reset() { *m = ReadIndexRequest{} } func (m *ReadIndexRequest) String() string { return proto.CompactTextString(m) } func (*ReadIndexRequest) ProtoMessage() {} func (*ReadIndexRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{64} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{64} } func (m *ReadIndexRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4826,7 +4837,7 @@ func (m *ReadIndexResponse) Reset() { *m = ReadIndexResponse{} } func (m *ReadIndexResponse) String() string { return proto.CompactTextString(m) } func (*ReadIndexResponse) ProtoMessage() {} func (*ReadIndexResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{65} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{65} } func (m *ReadIndexResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4889,7 +4900,7 @@ func (m *VerMutation) Reset() { *m = VerMutation{} } func (m *VerMutation) String() string { return proto.CompactTextString(m) } func (*VerMutation) ProtoMessage() {} func (*VerMutation) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{66} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{66} } func (m *VerMutation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4951,7 +4962,7 @@ func (m *VerValue) Reset() { *m = VerValue{} } func (m *VerValue) String() string { return proto.CompactTextString(m) } func (*VerValue) ProtoMessage() {} func (*VerValue) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{67} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{67} } func (m *VerValue) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5005,7 +5016,7 @@ func (m *VerError) Reset() { *m = VerError{} } func (m *VerError) String() string { return proto.CompactTextString(m) } func (*VerError) ProtoMessage() {} func (*VerError) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{68} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{68} } func (m *VerError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5054,7 +5065,7 @@ func (m *VerKvPair) Reset() { *m = VerKvPair{} } func (m *VerKvPair) String() string { return proto.CompactTextString(m) } func (*VerKvPair) ProtoMessage() {} func (*VerKvPair) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{69} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{69} } func (m *VerKvPair) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5117,7 +5128,7 @@ func (m *VerGetRequest) Reset() { *m = VerGetRequest{} } func (m *VerGetRequest) String() string { return proto.CompactTextString(m) } func (*VerGetRequest) ProtoMessage() {} func (*VerGetRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{70} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{70} } func (m *VerGetRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5181,7 +5192,7 @@ func (m *VerGetResponse) Reset() { *m = VerGetResponse{} } func (m *VerGetResponse) String() string { return proto.CompactTextString(m) } func (*VerGetResponse) ProtoMessage() {} func (*VerGetResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{71} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{71} } func (m *VerGetResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5251,7 +5262,7 @@ func (m *VerBatchGetRequest) Reset() { *m = VerBatchGetRequest{} } func (m *VerBatchGetRequest) String() string { return proto.CompactTextString(m) } func (*VerBatchGetRequest) ProtoMessage() {} func (*VerBatchGetRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{72} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{72} } func (m *VerBatchGetRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5313,7 +5324,7 @@ func (m *VerBatchGetResponse) Reset() { *m = VerBatchGetResponse{} } func (m *VerBatchGetResponse) String() string { return proto.CompactTextString(m) } func (*VerBatchGetResponse) ProtoMessage() {} func (*VerBatchGetResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{73} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{73} } func (m *VerBatchGetResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5369,7 +5380,7 @@ func (m *VerMutRequest) Reset() { *m = VerMutRequest{} } func (m *VerMutRequest) String() string { return proto.CompactTextString(m) } func (*VerMutRequest) ProtoMessage() {} func (*VerMutRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{74} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{74} } func (m *VerMutRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5431,7 +5442,7 @@ func (m *VerMutResponse) Reset() { *m = VerMutResponse{} } func (m *VerMutResponse) String() string { return proto.CompactTextString(m) } func (*VerMutResponse) ProtoMessage() {} func (*VerMutResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{75} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{75} } func (m *VerMutResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5487,7 +5498,7 @@ func (m *VerBatchMutRequest) Reset() { *m = VerBatchMutRequest{} } func (m *VerBatchMutRequest) String() string { return proto.CompactTextString(m) } func (*VerBatchMutRequest) ProtoMessage() {} func (*VerBatchMutRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{76} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{76} } func (m *VerBatchMutRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5549,7 +5560,7 @@ func (m *VerBatchMutResponse) Reset() { *m = VerBatchMutResponse{} } func (m *VerBatchMutResponse) String() string { return proto.CompactTextString(m) } func (*VerBatchMutResponse) ProtoMessage() {} func (*VerBatchMutResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{77} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{77} } func (m *VerBatchMutResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5609,7 +5620,7 @@ func (m *VerScanRequest) Reset() { *m = VerScanRequest{} } func (m *VerScanRequest) String() string { return proto.CompactTextString(m) } func (*VerScanRequest) ProtoMessage() {} func (*VerScanRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{78} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{78} } func (m *VerScanRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5699,7 +5710,7 @@ func (m *VerScanResponse) Reset() { *m = VerScanResponse{} } func (m *VerScanResponse) String() string { return proto.CompactTextString(m) } func (*VerScanResponse) ProtoMessage() {} func (*VerScanResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{79} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{79} } func (m *VerScanResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5755,7 +5766,7 @@ func (m *VerDeleteRangeRequest) Reset() { *m = VerDeleteRangeRequest{} } func (m *VerDeleteRangeRequest) String() string { return proto.CompactTextString(m) } func (*VerDeleteRangeRequest) ProtoMessage() {} func (*VerDeleteRangeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{80} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{80} } func (m *VerDeleteRangeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5817,7 +5828,7 @@ func (m *VerDeleteRangeResponse) Reset() { *m = VerDeleteRangeResponse{} func (m *VerDeleteRangeResponse) String() string { return proto.CompactTextString(m) } func (*VerDeleteRangeResponse) ProtoMessage() {} func (*VerDeleteRangeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{81} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{81} } func (m *VerDeleteRangeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5872,7 +5883,7 @@ func (m *MvccGetByKeyRequest) Reset() { *m = MvccGetByKeyRequest{} } func (m *MvccGetByKeyRequest) String() string { return proto.CompactTextString(m) } func (*MvccGetByKeyRequest) ProtoMessage() {} func (*MvccGetByKeyRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{82} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{82} } func (m *MvccGetByKeyRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5928,7 +5939,7 @@ func (m *MvccGetByKeyResponse) Reset() { *m = MvccGetByKeyResponse{} } func (m *MvccGetByKeyResponse) String() string { return proto.CompactTextString(m) } func (*MvccGetByKeyResponse) ProtoMessage() {} func (*MvccGetByKeyResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{83} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{83} } func (m *MvccGetByKeyResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5990,7 +6001,7 @@ func (m *MvccGetByStartTsRequest) Reset() { *m = MvccGetByStartTsRequest func (m *MvccGetByStartTsRequest) String() string { return proto.CompactTextString(m) } func (*MvccGetByStartTsRequest) ProtoMessage() {} func (*MvccGetByStartTsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{84} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{84} } func (m *MvccGetByStartTsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6047,7 +6058,7 @@ func (m *MvccGetByStartTsResponse) Reset() { *m = MvccGetByStartTsRespon func (m *MvccGetByStartTsResponse) String() string { return proto.CompactTextString(m) } func (*MvccGetByStartTsResponse) ProtoMessage() {} func (*MvccGetByStartTsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{85} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{85} } func (m *MvccGetByStartTsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6139,7 +6150,7 @@ func (m *Context) Reset() { *m = Context{} } func (m *Context) String() string { return proto.CompactTextString(m) } func (*Context) ProtoMessage() {} func (*Context) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{86} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{86} } func (m *Context) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6302,7 +6313,7 @@ func (m *LockInfo) Reset() { *m = LockInfo{} } func (m *LockInfo) String() string { return proto.CompactTextString(m) } func (*LockInfo) ProtoMessage() {} func (*LockInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{87} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{87} } func (m *LockInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6420,7 +6431,7 @@ func (m *KeyError) Reset() { *m = KeyError{} } func (m *KeyError) String() string { return proto.CompactTextString(m) } func (*KeyError) ProtoMessage() {} func (*KeyError) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{88} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{88} } func (m *KeyError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6527,7 +6538,7 @@ func (m *WriteConflict) Reset() { *m = WriteConflict{} } func (m *WriteConflict) String() string { return proto.CompactTextString(m) } func (*WriteConflict) ProtoMessage() {} func (*WriteConflict) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{89} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{89} } func (m *WriteConflict) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6602,7 +6613,7 @@ func (m *AlreadyExist) Reset() { *m = AlreadyExist{} } func (m *AlreadyExist) String() string { return proto.CompactTextString(m) } func (*AlreadyExist) ProtoMessage() {} func (*AlreadyExist) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{90} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{90} } func (m *AlreadyExist) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6639,19 +6650,20 @@ func (m *AlreadyExist) GetKey() []byte { } type Deadlock struct { - LockTs uint64 `protobuf:"varint,1,opt,name=lock_ts,json=lockTs,proto3" json:"lock_ts,omitempty"` - LockKey []byte `protobuf:"bytes,2,opt,name=lock_key,json=lockKey,proto3" json:"lock_key,omitempty"` - DeadlockKeyHash uint64 `protobuf:"varint,3,opt,name=deadlock_key_hash,json=deadlockKeyHash,proto3" json:"deadlock_key_hash,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + LockTs uint64 `protobuf:"varint,1,opt,name=lock_ts,json=lockTs,proto3" json:"lock_ts,omitempty"` + LockKey []byte `protobuf:"bytes,2,opt,name=lock_key,json=lockKey,proto3" json:"lock_key,omitempty"` + DeadlockKeyHash uint64 `protobuf:"varint,3,opt,name=deadlock_key_hash,json=deadlockKeyHash,proto3" json:"deadlock_key_hash,omitempty"` + WaitChain []*deadlock.WaitForEntry `protobuf:"bytes,4,rep,name=wait_chain,json=waitChain" json:"wait_chain,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *Deadlock) Reset() { *m = Deadlock{} } func (m *Deadlock) String() string { return proto.CompactTextString(m) } func (*Deadlock) ProtoMessage() {} func (*Deadlock) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{91} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{91} } func (m *Deadlock) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6701,6 +6713,13 @@ func (m *Deadlock) GetDeadlockKeyHash() uint64 { return 0 } +func (m *Deadlock) GetWaitChain() []*deadlock.WaitForEntry { + if m != nil { + return m.WaitChain + } + return nil +} + type CommitTsExpired struct { StartTs uint64 `protobuf:"varint,1,opt,name=start_ts,json=startTs,proto3" json:"start_ts,omitempty"` AttemptedCommitTs uint64 `protobuf:"varint,2,opt,name=attempted_commit_ts,json=attemptedCommitTs,proto3" json:"attempted_commit_ts,omitempty"` @@ -6715,7 +6734,7 @@ func (m *CommitTsExpired) Reset() { *m = CommitTsExpired{} } func (m *CommitTsExpired) String() string { return proto.CompactTextString(m) } func (*CommitTsExpired) ProtoMessage() {} func (*CommitTsExpired) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{92} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{92} } func (m *CommitTsExpired) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6784,7 +6803,7 @@ func (m *TxnNotFound) Reset() { *m = TxnNotFound{} } func (m *TxnNotFound) String() string { return proto.CompactTextString(m) } func (*TxnNotFound) ProtoMessage() {} func (*TxnNotFound) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{93} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{93} } func (m *TxnNotFound) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6838,7 +6857,7 @@ func (m *CommitTsTooLarge) Reset() { *m = CommitTsTooLarge{} } func (m *CommitTsTooLarge) String() string { return proto.CompactTextString(m) } func (*CommitTsTooLarge) ProtoMessage() {} func (*CommitTsTooLarge) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{94} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{94} } func (m *CommitTsTooLarge) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6895,7 +6914,7 @@ func (m *TimeDetail) Reset() { *m = TimeDetail{} } func (m *TimeDetail) String() string { return proto.CompactTextString(m) } func (*TimeDetail) ProtoMessage() {} func (*TimeDetail) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{95} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{95} } func (m *TimeDetail) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6958,7 +6977,7 @@ func (m *ScanInfo) Reset() { *m = ScanInfo{} } func (m *ScanInfo) String() string { return proto.CompactTextString(m) } func (*ScanInfo) ProtoMessage() {} func (*ScanInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{96} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{96} } func (m *ScanInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7022,7 +7041,7 @@ func (m *ScanDetail) Reset() { *m = ScanDetail{} } func (m *ScanDetail) String() string { return proto.CompactTextString(m) } func (*ScanDetail) ProtoMessage() {} func (*ScanDetail) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{97} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{97} } func (m *ScanDetail) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7105,7 +7124,7 @@ func (m *ScanDetailV2) Reset() { *m = ScanDetailV2{} } func (m *ScanDetailV2) String() string { return proto.CompactTextString(m) } func (*ScanDetailV2) ProtoMessage() {} func (*ScanDetailV2) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{98} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{98} } func (m *ScanDetailV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7197,7 +7216,7 @@ func (m *ExecDetails) Reset() { *m = ExecDetails{} } func (m *ExecDetails) String() string { return proto.CompactTextString(m) } func (*ExecDetails) ProtoMessage() {} func (*ExecDetails) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{99} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{99} } func (m *ExecDetails) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7254,7 +7273,7 @@ func (m *ExecDetailsV2) Reset() { *m = ExecDetailsV2{} } func (m *ExecDetailsV2) String() string { return proto.CompactTextString(m) } func (*ExecDetailsV2) ProtoMessage() {} func (*ExecDetailsV2) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{100} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{100} } func (m *ExecDetailsV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7310,7 +7329,7 @@ func (m *KvPair) Reset() { *m = KvPair{} } func (m *KvPair) String() string { return proto.CompactTextString(m) } func (*KvPair) ProtoMessage() {} func (*KvPair) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{101} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{101} } func (m *KvPair) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7374,7 +7393,7 @@ func (m *Mutation) Reset() { *m = Mutation{} } func (m *Mutation) String() string { return proto.CompactTextString(m) } func (*Mutation) ProtoMessage() {} func (*Mutation) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{102} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{102} } func (m *Mutation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7445,7 +7464,7 @@ func (m *MvccWrite) Reset() { *m = MvccWrite{} } func (m *MvccWrite) String() string { return proto.CompactTextString(m) } func (*MvccWrite) ProtoMessage() {} func (*MvccWrite) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{103} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{103} } func (m *MvccWrite) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7514,7 +7533,7 @@ func (m *MvccValue) Reset() { *m = MvccValue{} } func (m *MvccValue) String() string { return proto.CompactTextString(m) } func (*MvccValue) ProtoMessage() {} func (*MvccValue) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{104} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{104} } func (m *MvccValue) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7571,7 +7590,7 @@ func (m *MvccLock) Reset() { *m = MvccLock{} } func (m *MvccLock) String() string { return proto.CompactTextString(m) } func (*MvccLock) ProtoMessage() {} func (*MvccLock) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{105} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{105} } func (m *MvccLock) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7641,7 +7660,7 @@ func (m *MvccInfo) Reset() { *m = MvccInfo{} } func (m *MvccInfo) String() string { return proto.CompactTextString(m) } func (*MvccInfo) ProtoMessage() {} func (*MvccInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{106} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{106} } func (m *MvccInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7703,7 +7722,7 @@ func (m *TxnInfo) Reset() { *m = TxnInfo{} } func (m *TxnInfo) String() string { return proto.CompactTextString(m) } func (*TxnInfo) ProtoMessage() {} func (*TxnInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{107} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{107} } func (m *TxnInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7758,7 +7777,7 @@ func (m *KeyRange) Reset() { *m = KeyRange{} } func (m *KeyRange) String() string { return proto.CompactTextString(m) } func (*KeyRange) ProtoMessage() {} func (*KeyRange) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{108} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{108} } func (m *KeyRange) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7816,7 +7835,7 @@ func (m *LeaderInfo) Reset() { *m = LeaderInfo{} } func (m *LeaderInfo) String() string { return proto.CompactTextString(m) } func (*LeaderInfo) ProtoMessage() {} func (*LeaderInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{109} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{109} } func (m *LeaderInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7892,7 +7911,7 @@ func (m *ReadState) Reset() { *m = ReadState{} } func (m *ReadState) String() string { return proto.CompactTextString(m) } func (*ReadState) ProtoMessage() {} func (*ReadState) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{110} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{110} } func (m *ReadState) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7947,7 +7966,7 @@ func (m *CheckLeaderRequest) Reset() { *m = CheckLeaderRequest{} } func (m *CheckLeaderRequest) String() string { return proto.CompactTextString(m) } func (*CheckLeaderRequest) ProtoMessage() {} func (*CheckLeaderRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{111} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{111} } func (m *CheckLeaderRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8002,7 +8021,7 @@ func (m *CheckLeaderResponse) Reset() { *m = CheckLeaderResponse{} } func (m *CheckLeaderResponse) String() string { return proto.CompactTextString(m) } func (*CheckLeaderResponse) ProtoMessage() {} func (*CheckLeaderResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{112} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{112} } func (m *CheckLeaderResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8058,7 +8077,7 @@ func (m *StoreSafeTSRequest) Reset() { *m = StoreSafeTSRequest{} } func (m *StoreSafeTSRequest) String() string { return proto.CompactTextString(m) } func (*StoreSafeTSRequest) ProtoMessage() {} func (*StoreSafeTSRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{113} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{113} } func (m *StoreSafeTSRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8105,7 +8124,7 @@ func (m *StoreSafeTSResponse) Reset() { *m = StoreSafeTSResponse{} } func (m *StoreSafeTSResponse) String() string { return proto.CompactTextString(m) } func (*StoreSafeTSResponse) ProtoMessage() {} func (*StoreSafeTSResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{114} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{114} } func (m *StoreSafeTSResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8154,7 +8173,7 @@ func (m *RawGetKeyTTLRequest) Reset() { *m = RawGetKeyTTLRequest{} } func (m *RawGetKeyTTLRequest) String() string { return proto.CompactTextString(m) } func (*RawGetKeyTTLRequest) ProtoMessage() {} func (*RawGetKeyTTLRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{115} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{115} } func (m *RawGetKeyTTLRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8218,7 +8237,7 @@ func (m *RawGetKeyTTLResponse) Reset() { *m = RawGetKeyTTLResponse{} } func (m *RawGetKeyTTLResponse) String() string { return proto.CompactTextString(m) } func (*RawGetKeyTTLResponse) ProtoMessage() {} func (*RawGetKeyTTLResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{116} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{116} } func (m *RawGetKeyTTLResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8292,7 +8311,7 @@ func (m *RawCASRequest) Reset() { *m = RawCASRequest{} } func (m *RawCASRequest) String() string { return proto.CompactTextString(m) } func (*RawCASRequest) ProtoMessage() {} func (*RawCASRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{117} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{117} } func (m *RawCASRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8386,7 +8405,7 @@ func (m *RawCASResponse) Reset() { *m = RawCASResponse{} } func (m *RawCASResponse) String() string { return proto.CompactTextString(m) } func (*RawCASResponse) ProtoMessage() {} func (*RawCASResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8, []int{118} + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{118} } func (m *RawCASResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8450,6 +8469,116 @@ func (m *RawCASResponse) GetPreviousValue() []byte { return nil } +type GetLockWaitInfoRequest struct { + Context *Context `protobuf:"bytes,1,opt,name=context" json:"context,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetLockWaitInfoRequest) Reset() { *m = GetLockWaitInfoRequest{} } +func (m *GetLockWaitInfoRequest) String() string { return proto.CompactTextString(m) } +func (*GetLockWaitInfoRequest) ProtoMessage() {} +func (*GetLockWaitInfoRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{119} +} +func (m *GetLockWaitInfoRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GetLockWaitInfoRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GetLockWaitInfoRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (dst *GetLockWaitInfoRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetLockWaitInfoRequest.Merge(dst, src) +} +func (m *GetLockWaitInfoRequest) XXX_Size() int { + return m.Size() +} +func (m *GetLockWaitInfoRequest) XXX_DiscardUnknown() { + xxx_messageInfo_GetLockWaitInfoRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_GetLockWaitInfoRequest proto.InternalMessageInfo + +func (m *GetLockWaitInfoRequest) GetContext() *Context { + if m != nil { + return m.Context + } + return nil +} + +type GetLockWaitInfoResponse struct { + RegionError *errorpb.Error `protobuf:"bytes,1,opt,name=region_error,json=regionError" json:"region_error,omitempty"` + Error string `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"` + Entries []*deadlock.WaitForEntry `protobuf:"bytes,3,rep,name=entries" json:"entries,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetLockWaitInfoResponse) Reset() { *m = GetLockWaitInfoResponse{} } +func (m *GetLockWaitInfoResponse) String() string { return proto.CompactTextString(m) } +func (*GetLockWaitInfoResponse) ProtoMessage() {} +func (*GetLockWaitInfoResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{120} +} +func (m *GetLockWaitInfoResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GetLockWaitInfoResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GetLockWaitInfoResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (dst *GetLockWaitInfoResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetLockWaitInfoResponse.Merge(dst, src) +} +func (m *GetLockWaitInfoResponse) XXX_Size() int { + return m.Size() +} +func (m *GetLockWaitInfoResponse) XXX_DiscardUnknown() { + xxx_messageInfo_GetLockWaitInfoResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_GetLockWaitInfoResponse proto.InternalMessageInfo + +func (m *GetLockWaitInfoResponse) GetRegionError() *errorpb.Error { + if m != nil { + return m.RegionError + } + return nil +} + +func (m *GetLockWaitInfoResponse) GetError() string { + if m != nil { + return m.Error + } + return "" +} + +func (m *GetLockWaitInfoResponse) GetEntries() []*deadlock.WaitForEntry { + if m != nil { + return m.Entries + } + return nil +} + func init() { proto.RegisterType((*GetRequest)(nil), "kvrpcpb.GetRequest") proto.RegisterType((*GetResponse)(nil), "kvrpcpb.GetResponse") @@ -8570,6 +8699,8 @@ func init() { proto.RegisterType((*RawGetKeyTTLResponse)(nil), "kvrpcpb.RawGetKeyTTLResponse") proto.RegisterType((*RawCASRequest)(nil), "kvrpcpb.RawCASRequest") proto.RegisterType((*RawCASResponse)(nil), "kvrpcpb.RawCASResponse") + proto.RegisterType((*GetLockWaitInfoRequest)(nil), "kvrpcpb.GetLockWaitInfoRequest") + proto.RegisterType((*GetLockWaitInfoResponse)(nil), "kvrpcpb.GetLockWaitInfoResponse") proto.RegisterEnum("kvrpcpb.VerOp", VerOp_name, VerOp_value) proto.RegisterEnum("kvrpcpb.CommandPri", CommandPri_name, CommandPri_value) proto.RegisterEnum("kvrpcpb.IsolationLevel", IsolationLevel_name, IsolationLevel_value) @@ -9099,6 +9230,12 @@ func (m *PessimisticLockRequest) MarshalTo(dAtA []byte) (int, error) { i++ i = encodeVarintKvrpcpb(dAtA, i, uint64(m.MinCommitTs)) } + if len(m.SqlDigest) > 0 { + dAtA[i] = 0x62 + i++ + i = encodeVarintKvrpcpb(dAtA, i, uint64(len(m.SqlDigest))) + i += copy(dAtA[i:], m.SqlDigest) + } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) } @@ -13242,6 +13379,18 @@ func (m *Deadlock) MarshalTo(dAtA []byte) (int, error) { i++ i = encodeVarintKvrpcpb(dAtA, i, uint64(m.DeadlockKeyHash)) } + if len(m.WaitChain) > 0 { + for _, msg := range m.WaitChain { + dAtA[i] = 0x22 + i++ + i = encodeVarintKvrpcpb(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) } @@ -14384,6 +14533,86 @@ func (m *RawCASResponse) MarshalTo(dAtA []byte) (int, error) { return i, nil } +func (m *GetLockWaitInfoRequest) 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 *GetLockWaitInfoRequest) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Context != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintKvrpcpb(dAtA, i, uint64(m.Context.Size())) + n135, err := m.Context.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n135 + } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } + return i, nil +} + +func (m *GetLockWaitInfoResponse) 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 *GetLockWaitInfoResponse) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.RegionError != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintKvrpcpb(dAtA, i, uint64(m.RegionError.Size())) + n136, err := m.RegionError.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n136 + } + if len(m.Error) > 0 { + dAtA[i] = 0x12 + i++ + i = encodeVarintKvrpcpb(dAtA, i, uint64(len(m.Error))) + i += copy(dAtA[i:], m.Error) + } + if len(m.Entries) > 0 { + for _, msg := range m.Entries { + dAtA[i] = 0x1a + i++ + i = encodeVarintKvrpcpb(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } + return i, nil +} + func encodeVarintKvrpcpb(dAtA []byte, offset int, v uint64) int { for v >= 1<<7 { dAtA[offset] = uint8(v&0x7f | 0x80) @@ -14625,6 +14854,10 @@ func (m *PessimisticLockRequest) Size() (n int) { if m.MinCommitTs != 0 { n += 1 + sovKvrpcpb(uint64(m.MinCommitTs)) } + l = len(m.SqlDigest) + if l > 0 { + n += 1 + l + sovKvrpcpb(uint64(l)) + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -16532,6 +16765,12 @@ func (m *Deadlock) Size() (n int) { if m.DeadlockKeyHash != 0 { n += 1 + sovKvrpcpb(uint64(m.DeadlockKeyHash)) } + if len(m.WaitChain) > 0 { + for _, e := range m.WaitChain { + l = e.Size() + n += 1 + l + sovKvrpcpb(uint64(l)) + } + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -17080,6 +17319,42 @@ func (m *RawCASResponse) Size() (n int) { return n } +func (m *GetLockWaitInfoRequest) Size() (n int) { + var l int + _ = l + if m.Context != nil { + l = m.Context.Size() + n += 1 + l + sovKvrpcpb(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *GetLockWaitInfoResponse) Size() (n int) { + var l int + _ = l + if m.RegionError != nil { + l = m.RegionError.Size() + n += 1 + l + sovKvrpcpb(uint64(l)) + } + l = len(m.Error) + if l > 0 { + n += 1 + l + sovKvrpcpb(uint64(l)) + } + if len(m.Entries) > 0 { + for _, e := range m.Entries { + l = e.Size() + n += 1 + l + sovKvrpcpb(uint64(l)) + } + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + func sovKvrpcpb(x uint64) (n int) { for { n++ @@ -18662,6 +18937,35 @@ func (m *PessimisticLockRequest) Unmarshal(dAtA []byte) error { break } } + case 12: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SqlDigest", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowKvrpcpb + } + 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 ErrInvalidLengthKvrpcpb + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SqlDigest = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipKvrpcpb(dAtA[iNdEx:]) @@ -31185,6 +31489,37 @@ func (m *Deadlock) Unmarshal(dAtA []byte) error { break } } + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field WaitChain", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowKvrpcpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthKvrpcpb + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.WaitChain = append(m.WaitChain, &deadlock.WaitForEntry{}) + if err := m.WaitChain[len(m.WaitChain)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipKvrpcpb(dAtA[iNdEx:]) @@ -34712,6 +35047,234 @@ func (m *RawCASResponse) Unmarshal(dAtA []byte) error { } return nil } +func (m *GetLockWaitInfoRequest) 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 ErrIntOverflowKvrpcpb + } + 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: GetLockWaitInfoRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GetLockWaitInfoRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Context", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowKvrpcpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthKvrpcpb + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Context == nil { + m.Context = &Context{} + } + if err := m.Context.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipKvrpcpb(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthKvrpcpb + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GetLockWaitInfoResponse) 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 ErrIntOverflowKvrpcpb + } + 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: GetLockWaitInfoResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GetLockWaitInfoResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RegionError", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowKvrpcpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthKvrpcpb + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.RegionError == nil { + m.RegionError = &errorpb.Error{} + } + if err := m.RegionError.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowKvrpcpb + } + 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 ErrInvalidLengthKvrpcpb + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Error = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Entries", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowKvrpcpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthKvrpcpb + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Entries = append(m.Entries, &deadlock.WaitForEntry{}) + if err := m.Entries[len(m.Entries)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipKvrpcpb(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthKvrpcpb + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipKvrpcpb(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 @@ -34817,286 +35380,292 @@ var ( ErrIntOverflowKvrpcpb = fmt.Errorf("proto: integer overflow") ) -func init() { proto.RegisterFile("kvrpcpb.proto", fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8) } +func init() { proto.RegisterFile("kvrpcpb.proto", fileDescriptor_kvrpcpb_e007fb3560e1c248) } -var fileDescriptor_kvrpcpb_95b9c6b6f9cd06f8 = []byte{ - // 4436 bytes of a gzipped FileDescriptorProto +var fileDescriptor_kvrpcpb_e007fb3560e1c248 = []byte{ + // 4535 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x3c, 0x5d, 0x6f, 0x1c, 0xc9, - 0x71, 0x9a, 0xfd, 0xde, 0xda, 0x0f, 0x0e, 0x9b, 0xa4, 0xb4, 0x94, 0x74, 0x12, 0x35, 0x89, 0x4e, - 0x34, 0xed, 0xa3, 0x72, 0xf4, 0xe5, 0xcb, 0x31, 0xe2, 0x3b, 0x51, 0xba, 0x13, 0xef, 0x28, 0x91, - 0x98, 0xdd, 0xa3, 0x71, 0x40, 0x7c, 0xe3, 0xe1, 0x6c, 0x93, 0x9c, 0x70, 0x76, 0x66, 0xaf, 0xbb, - 0x97, 0xda, 0xb5, 0x61, 0xc0, 0xce, 0x17, 0x60, 0x20, 0x89, 0xe3, 0x4b, 0x00, 0x1b, 0x48, 0x90, - 0x07, 0x03, 0x0e, 0x92, 0xbc, 0x25, 0xef, 0x41, 0x10, 0x20, 0x0f, 0x7e, 0x09, 0x62, 0xe4, 0x29, - 0x48, 0x1e, 0x12, 0x2b, 0xbf, 0x21, 0xef, 0x41, 0x7f, 0xcd, 0xc7, 0xee, 0x8a, 0xe2, 0xed, 0x91, - 0x3c, 0x23, 0x4f, 0xdc, 0xae, 0xaa, 0xee, 0xae, 0xaa, 0xae, 0xee, 0xaa, 0xae, 0xae, 0x21, 0x34, - 0x8e, 0x4f, 0x48, 0xdf, 0xeb, 0xef, 0xaf, 0xf7, 0x49, 0xc4, 0x22, 0x54, 0x56, 0xcd, 0xeb, 0xf5, - 0x1e, 0x66, 0xae, 0x06, 0x5f, 0x6f, 0x60, 0x42, 0x22, 0x12, 0x37, 0x17, 0x0f, 0xa3, 0xc3, 0x48, - 0xfc, 0xbc, 0xcf, 0x7f, 0x29, 0xe8, 0x1c, 0x19, 0x50, 0x26, 0x7e, 0x4a, 0x80, 0xd5, 0x05, 0x78, - 0x07, 0x33, 0x1b, 0x7f, 0x34, 0xc0, 0x94, 0xa1, 0x35, 0x28, 0x7b, 0x51, 0xc8, 0xf0, 0x90, 0xb5, - 0x8c, 0x15, 0x63, 0xb5, 0xb6, 0x61, 0xae, 0xeb, 0xb9, 0x37, 0x25, 0xdc, 0xd6, 0x04, 0xc8, 0x84, - 0xfc, 0x31, 0x1e, 0xb5, 0x72, 0x2b, 0xc6, 0x6a, 0xdd, 0xe6, 0x3f, 0x51, 0x0b, 0xca, 0x27, 0x98, - 0x50, 0x3f, 0x0a, 0x5b, 0xf9, 0x15, 0x63, 0xb5, 0x60, 0xeb, 0xa6, 0xf5, 0xdc, 0x80, 0x9a, 0x98, - 0x86, 0xf6, 0xa3, 0x90, 0x62, 0xf4, 0x3a, 0xd4, 0x09, 0x3e, 0xf4, 0xa3, 0xd0, 0x11, 0x4c, 0xab, - 0xc9, 0x9a, 0xeb, 0x5a, 0x84, 0x47, 0xfc, 0xaf, 0x5d, 0x93, 0x34, 0xa2, 0x81, 0xee, 0x41, 0x51, - 0xd2, 0xe6, 0x04, 0xed, 0x7c, 0xcc, 0xd8, 0x7b, 0x78, 0x24, 0xc9, 0x25, 0x1e, 0x2d, 0x42, 0xf1, - 0xc4, 0x0d, 0x06, 0x58, 0xf0, 0x50, 0xb7, 0x65, 0x03, 0xdd, 0x80, 0x6a, 0x18, 0x31, 0xe7, 0x20, - 0x1a, 0x84, 0xdd, 0x56, 0x61, 0xc5, 0x58, 0xad, 0xd8, 0x95, 0x30, 0x62, 0x6f, 0xf3, 0x36, 0xfa, - 0x4d, 0x98, 0xc3, 0x43, 0xec, 0x39, 0x5d, 0xcc, 0x5c, 0x3f, 0xa0, 0xce, 0xc9, 0x46, 0xab, 0x24, - 0x66, 0xb9, 0x1a, 0xcf, 0xf2, 0x68, 0x88, 0xbd, 0x87, 0x12, 0xbd, 0xb7, 0x61, 0x37, 0x70, 0xba, - 0xf9, 0x6e, 0xa1, 0x52, 0x34, 0x4b, 0xd6, 0xff, 0x1a, 0x50, 0x6b, 0x7b, 0x6e, 0x38, 0x8b, 0x32, - 0x6f, 0x40, 0x95, 0x32, 0x97, 0x30, 0x27, 0x51, 0x69, 0x45, 0x00, 0xde, 0xc3, 0x23, 0x2e, 0x51, - 0xe0, 0xf7, 0x7c, 0x26, 0x24, 0x6a, 0xd8, 0xb2, 0x91, 0xd6, 0x76, 0x21, 0xa3, 0x6d, 0xb4, 0x0c, - 0x95, 0x63, 0x3c, 0x72, 0xa2, 0x30, 0x18, 0xb5, 0x8a, 0x42, 0xd4, 0xf2, 0x31, 0x1e, 0xed, 0x84, - 0x81, 0x58, 0x22, 0x82, 0x39, 0x1d, 0x16, 0x12, 0x56, 0x6c, 0xdd, 0x44, 0xd7, 0xa0, 0x8c, 0xc3, - 0xae, 0x98, 0xbf, 0x2c, 0xe6, 0x2f, 0xe1, 0xb0, 0xcb, 0x67, 0xbf, 0x0d, 0x35, 0xea, 0xf6, 0xfa, - 0x01, 0x76, 0x28, 0xc3, 0xfd, 0x56, 0x45, 0xf0, 0x00, 0x12, 0xd4, 0x66, 0xb8, 0x6f, 0x7d, 0xdf, - 0x80, 0xba, 0x94, 0x7b, 0xf6, 0xd5, 0xbd, 0x0b, 0xc5, 0xbe, 0xeb, 0x13, 0xda, 0xca, 0xad, 0xe4, - 0x57, 0x6b, 0x1b, 0x73, 0xc9, 0xea, 0x9e, 0xec, 0xba, 0x3e, 0xb1, 0x25, 0x36, 0x31, 0x82, 0xfc, - 0xe9, 0x46, 0x60, 0xfd, 0x55, 0x01, 0xe6, 0x76, 0x09, 0x7e, 0x46, 0x7c, 0x86, 0x67, 0x59, 0x8f, - 0xfb, 0x50, 0xed, 0x0d, 0x98, 0xcb, 0xfc, 0x28, 0xd4, 0x3c, 0x25, 0x93, 0x3d, 0x51, 0x18, 0x3b, - 0xa1, 0x41, 0x77, 0xa0, 0xde, 0x27, 0x7e, 0xcf, 0x25, 0x23, 0x27, 0x88, 0xbc, 0x63, 0x65, 0x7c, - 0x35, 0x05, 0xdb, 0x8e, 0xbc, 0x63, 0xf4, 0x0b, 0xd0, 0x90, 0x6b, 0x9c, 0x5d, 0xb6, 0xba, 0x00, - 0xee, 0x25, 0x6b, 0xc7, 0xfb, 0x3b, 0x8c, 0x05, 0x62, 0xed, 0x0a, 0x76, 0x99, 0xb7, 0x3b, 0x2c, - 0x40, 0x1b, 0xb0, 0x44, 0x8f, 0xfd, 0xbe, 0xe3, 0x45, 0x21, 0x65, 0xc4, 0xf5, 0x43, 0xe6, 0x78, - 0x47, 0xd8, 0x3b, 0x56, 0x2b, 0xb9, 0xc0, 0x91, 0x9b, 0x31, 0x6e, 0x93, 0xa3, 0xd0, 0x3a, 0x2c, - 0xf8, 0xd4, 0xe9, 0x63, 0x4a, 0xfd, 0x9e, 0x4f, 0x99, 0xef, 0x49, 0xee, 0xca, 0x2b, 0xf9, 0xd5, - 0x8a, 0x3d, 0xef, 0xd3, 0xdd, 0x04, 0x23, 0x78, 0x5c, 0x86, 0x0a, 0x1b, 0x86, 0x0e, 0xf5, 0xbf, - 0x81, 0xc5, 0x4a, 0x17, 0xec, 0x32, 0x1b, 0x86, 0x6d, 0xff, 0x1b, 0x18, 0x59, 0xd0, 0x38, 0x88, - 0x88, 0x33, 0xe8, 0x77, 0x5d, 0x86, 0x1d, 0x46, 0x5b, 0x55, 0x81, 0xaf, 0x1d, 0x44, 0xe4, 0x7d, - 0x01, 0xeb, 0x50, 0x4e, 0xd3, 0xf3, 0x43, 0xc7, 0x8b, 0x7a, 0x3d, 0x9f, 0x71, 0x1a, 0x90, 0x34, - 0x3d, 0x3f, 0xdc, 0x14, 0xb0, 0x0e, 0x45, 0xab, 0x60, 0x0e, 0x28, 0x76, 0x5c, 0x3a, 0x0a, 0x3d, - 0x45, 0xd9, 0xaa, 0x09, 0x09, 0x9a, 0x03, 0x8a, 0xdf, 0xe2, 0x60, 0x49, 0x8b, 0x56, 0xa0, 0x46, - 0xb1, 0x17, 0x85, 0x5d, 0x97, 0xf8, 0x98, 0xb6, 0xea, 0x2b, 0x79, 0xae, 0xd2, 0x14, 0x08, 0xdd, - 0x04, 0x60, 0x84, 0x5b, 0x3a, 0x76, 0xfa, 0x5e, 0xab, 0x21, 0xb7, 0x35, 0x23, 0xa3, 0x9d, 0x10, - 0xef, 0x7a, 0x82, 0x1b, 0x77, 0x98, 0xe2, 0xa6, 0xa9, 0xb8, 0x71, 0x87, 0x9a, 0x1b, 0xeb, 0x1f, - 0x0c, 0x30, 0x13, 0x43, 0x99, 0xdd, 0x80, 0x3f, 0x07, 0x25, 0x81, 0x9d, 0xb4, 0x96, 0xd8, 0x34, - 0x15, 0xc1, 0xa4, 0x92, 0xf2, 0x93, 0x4a, 0xba, 0x07, 0xa6, 0x14, 0x2a, 0x45, 0x26, 0xcd, 0xa5, - 0x11, 0x71, 0xd9, 0x62, 0xfe, 0x7f, 0x94, 0x87, 0xab, 0x63, 0x8b, 0xf8, 0xff, 0xc5, 0xde, 0x27, - 0x0c, 0xae, 0x34, 0xd5, 0xe0, 0x7c, 0xea, 0x1c, 0xf8, 0x84, 0x32, 0x6d, 0xd9, 0xdc, 0x06, 0x6a, - 0x3e, 0x7d, 0x9b, 0xc3, 0x04, 0x1f, 0x77, 0xa0, 0xfe, 0xcc, 0xe5, 0x2a, 0xf4, 0x7b, 0x38, 0x1a, - 0x30, 0x61, 0xd7, 0x79, 0xbb, 0xc6, 0x61, 0x1d, 0x09, 0xe2, 0x27, 0xec, 0x41, 0x44, 0x3c, 0x2c, - 0x6c, 0xba, 0x62, 0xcb, 0x06, 0x17, 0x80, 0x60, 0x36, 0x20, 0xa1, 0x23, 0x7c, 0x88, 0xb4, 0xe6, - 0x8a, 0x5d, 0x97, 0xc0, 0x3d, 0x01, 0x9b, 0x5c, 0xcd, 0xda, 0xc4, 0x6a, 0x5a, 0x3f, 0x33, 0xe0, - 0xda, 0xc4, 0x22, 0x5d, 0x8a, 0xad, 0xdd, 0x80, 0xea, 0xb8, 0x9d, 0x55, 0x3c, 0x6d, 0x64, 0xb1, - 0xa7, 0x2c, 0xa4, 0x3d, 0xe5, 0x55, 0x28, 0x29, 0x71, 0x8b, 0x62, 0xc3, 0xa9, 0x16, 0x7a, 0x05, - 0x20, 0xf6, 0xa0, 0x7c, 0x2d, 0xf8, 0x09, 0x52, 0xd5, 0x2e, 0x94, 0x5a, 0x3f, 0x36, 0xe0, 0x7a, - 0x4a, 0x46, 0x3b, 0x0a, 0x82, 0x7d, 0x77, 0x36, 0x63, 0x9c, 0x30, 0x9c, 0xdc, 0x14, 0xc3, 0x99, - 0xb0, 0x8e, 0xfc, 0xa4, 0x75, 0x20, 0x28, 0x1c, 0xe3, 0x11, 0xdf, 0x39, 0x5c, 0x10, 0xf1, 0xdb, - 0xfa, 0x26, 0xdc, 0x98, 0xca, 0xe6, 0x65, 0x2c, 0x87, 0xf5, 0x77, 0x06, 0x2c, 0x74, 0x86, 0xe1, - 0x63, 0xec, 0x12, 0xf6, 0x00, 0xbb, 0x33, 0xc5, 0x5d, 0xe3, 0x3b, 0x2f, 0x77, 0x86, 0x9d, 0x97, - 0x9f, 0xa2, 0xc0, 0x57, 0x61, 0xce, 0xed, 0x9e, 0xf8, 0x14, 0x3b, 0xf1, 0x06, 0x54, 0x27, 0x8c, - 0x04, 0x6f, 0xcb, 0x6d, 0x68, 0xfd, 0x91, 0x01, 0x8b, 0x59, 0x9e, 0x2f, 0x21, 0x88, 0x4b, 0x1f, - 0x0b, 0xf9, 0xcc, 0xb1, 0x60, 0xfd, 0x2c, 0x07, 0x4b, 0xc2, 0xb9, 0x75, 0x86, 0x61, 0x9b, 0xb9, - 0x6c, 0x40, 0x67, 0xd1, 0xe2, 0x6d, 0xd0, 0x1a, 0x4b, 0x85, 0x5c, 0xa0, 0x40, 0x3c, 0xec, 0xb9, - 0x06, 0x65, 0xc9, 0x81, 0xb6, 0xac, 0x92, 0x60, 0x80, 0x72, 0xbd, 0x79, 0x6e, 0x10, 0x60, 0xe2, - 0x48, 0x1d, 0x27, 0x27, 0xb3, 0x04, 0xb7, 0x39, 0xb4, 0x23, 0xf6, 0x8b, 0x37, 0x20, 0x04, 0x87, - 0x82, 0x44, 0x9e, 0x6d, 0x55, 0x05, 0xe9, 0x50, 0xf4, 0x3a, 0x2c, 0x11, 0x65, 0x7c, 0x8e, 0x7f, - 0xe0, 0xf0, 0xad, 0x85, 0x87, 0x3e, 0x65, 0xca, 0x9b, 0x23, 0x8d, 0xdc, 0x3a, 0x78, 0x1a, 0xb1, - 0x47, 0x1c, 0x83, 0xd6, 0x60, 0x5e, 0x1c, 0x4c, 0x4e, 0xda, 0x75, 0xca, 0x03, 0x6f, 0x4e, 0x20, - 0xda, 0x89, 0xef, 0xfc, 0x32, 0x5c, 0x27, 0x98, 0x46, 0xc1, 0x89, 0x1f, 0x1e, 0x4e, 0xfa, 0xff, - 0x8a, 0xe8, 0xd4, 0x8a, 0x29, 0xc6, 0x0e, 0x27, 0xeb, 0x7b, 0x39, 0xb8, 0x3a, 0xae, 0xe3, 0xcf, - 0x74, 0xd5, 0xd1, 0x5d, 0x68, 0xaa, 0x83, 0x2c, 0xeb, 0x4d, 0x1a, 0x12, 0xaa, 0x8d, 0xfa, 0x1e, - 0x94, 0x5c, 0x8f, 0x7b, 0x28, 0xa1, 0xf0, 0x66, 0x2a, 0x90, 0x7c, 0x4b, 0x80, 0x6d, 0x85, 0x46, - 0xeb, 0x50, 0x15, 0x53, 0xf9, 0xe1, 0x41, 0xa4, 0x82, 0xfd, 0x84, 0x2f, 0xae, 0x83, 0xad, 0xf0, - 0x20, 0xb2, 0x05, 0x3b, 0xfc, 0x97, 0xf5, 0x1d, 0x03, 0xae, 0x0b, 0x8d, 0xb4, 0x55, 0xf8, 0x21, - 0x76, 0xda, 0x4c, 0xa6, 0xa7, 0x4f, 0xa5, 0x5c, 0x72, 0x2a, 0x9d, 0x69, 0xc7, 0x5a, 0xff, 0x68, - 0xc0, 0x8d, 0xa9, 0x3c, 0x5c, 0xc2, 0xd2, 0xdc, 0x83, 0x22, 0xd7, 0x05, 0xdf, 0x0c, 0xf9, 0xe9, - 0xba, 0x92, 0xf8, 0xac, 0xc7, 0x29, 0x64, 0x3d, 0x8e, 0xf5, 0x37, 0x06, 0x34, 0xa4, 0x81, 0x5e, - 0x98, 0x5f, 0xd0, 0xda, 0xcd, 0xa7, 0xb4, 0x7b, 0x36, 0xe3, 0x91, 0xd7, 0x38, 0xbb, 0xb4, 0xef, - 0x87, 0x41, 0x74, 0x68, 0xfd, 0xa9, 0x01, 0x4d, 0xcd, 0xeb, 0x25, 0x28, 0x78, 0x92, 0xc7, 0xfc, - 0x14, 0x1e, 0xad, 0x43, 0x68, 0x6c, 0xf5, 0xfa, 0x11, 0x89, 0x15, 0x98, 0x89, 0xdc, 0x8c, 0x33, - 0x44, 0x6e, 0x93, 0x13, 0xe5, 0xa6, 0x4d, 0xf4, 0x01, 0x34, 0xf5, 0x44, 0xb3, 0x4b, 0xbf, 0x98, - 0x96, 0xbe, 0xaa, 0x2f, 0x67, 0x1f, 0x73, 0xcd, 0x06, 0xd8, 0x0d, 0x07, 0xfd, 0xf3, 0x49, 0x3c, - 0x9c, 0xc9, 0xdf, 0x65, 0xcf, 0xe3, 0xc2, 0xd8, 0x79, 0x6c, 0xfd, 0x99, 0x01, 0x73, 0x31, 0x53, - 0x3f, 0x3f, 0xeb, 0x7d, 0x0c, 0x73, 0x0f, 0x5c, 0xe6, 0x1d, 0xcd, 0x98, 0xa4, 0x99, 0x76, 0xd6, - 0xbc, 0x38, 0x4d, 0xf3, 0x9f, 0x06, 0x98, 0xc9, 0x6c, 0x17, 0x7e, 0x9b, 0x9f, 0x92, 0x76, 0x29, - 0x7c, 0x82, 0xb4, 0x4b, 0xa2, 0xeb, 0xe2, 0xe9, 0xba, 0x7e, 0xb7, 0x50, 0xc9, 0x9b, 0x05, 0xeb, - 0x9b, 0xb0, 0x28, 0x84, 0xbb, 0xf0, 0xd0, 0x74, 0xca, 0x11, 0x64, 0x51, 0x58, 0x1a, 0x9b, 0xfc, - 0xe2, 0x6d, 0xcc, 0xfa, 0x5b, 0x03, 0xe6, 0xda, 0x9e, 0x1b, 0xce, 0x7a, 0x2b, 0xbc, 0x0d, 0xfc, - 0xae, 0x3c, 0x26, 0x2b, 0xf4, 0xdc, 0xa1, 0x96, 0x34, 0x93, 0xb6, 0xca, 0xbf, 0x28, 0x6d, 0x55, - 0x48, 0xa7, 0xad, 0x52, 0x79, 0xa6, 0x62, 0x3a, 0xcf, 0x64, 0xfd, 0xc0, 0x00, 0x33, 0x61, 0xf6, - 0xe7, 0xc8, 0xa5, 0x59, 0xff, 0x6a, 0x00, 0xb2, 0x45, 0xa8, 0x84, 0x67, 0xd5, 0xe4, 0x99, 0xec, - 0xe6, 0x6c, 0x47, 0x02, 0x7a, 0x0d, 0xaa, 0x6c, 0x18, 0x8a, 0xc8, 0x45, 0x5e, 0x6d, 0xd2, 0x33, - 0x77, 0x86, 0xa1, 0x8c, 0x5c, 0x98, 0xfc, 0x91, 0x5c, 0x82, 0x8a, 0x29, 0x6b, 0xfc, 0x08, 0x16, - 0x32, 0x02, 0x5d, 0x82, 0x2d, 0xee, 0x41, 0xf5, 0x9d, 0xcd, 0x59, 0x54, 0xf7, 0x0a, 0x00, 0x75, - 0x0f, 0xb0, 0xd3, 0x8f, 0xfc, 0x90, 0x29, 0xbd, 0x55, 0x39, 0x64, 0x97, 0x03, 0xac, 0x23, 0x00, - 0x3e, 0xee, 0x25, 0x48, 0xf0, 0x03, 0x03, 0xd0, 0x43, 0x1c, 0x60, 0x86, 0x6d, 0x37, 0x3c, 0xc4, - 0xe7, 0x9e, 0xe6, 0x4d, 0xed, 0x8c, 0xfc, 0x78, 0x06, 0x36, 0x8c, 0x98, 0x7f, 0xa0, 0x52, 0xba, - 0x32, 0x7b, 0x0d, 0x12, 0xb4, 0x13, 0x06, 0x23, 0xeb, 0x43, 0x58, 0xc8, 0x30, 0x76, 0xde, 0x0e, - 0xfb, 0x6b, 0xd0, 0xb0, 0xdd, 0x67, 0xe7, 0xf6, 0x4e, 0xd0, 0x84, 0x9c, 0x77, 0x20, 0x64, 0xac, - 0xda, 0x39, 0xef, 0xc0, 0xfa, 0x43, 0x03, 0x9a, 0x7a, 0xfc, 0x73, 0x66, 0x7d, 0x86, 0xd7, 0x00, - 0xab, 0x0b, 0xc8, 0x76, 0x9f, 0x9d, 0xb7, 0xd7, 0x1d, 0x17, 0x3a, 0x82, 0x85, 0xcc, 0x2c, 0x17, - 0xed, 0x6d, 0xad, 0xbf, 0x34, 0xc4, 0x2a, 0xee, 0x0e, 0xce, 0x69, 0x15, 0xa7, 0x6b, 0x56, 0x8a, - 0x59, 0xd0, 0x62, 0xf2, 0x7e, 0x49, 0x6a, 0x8f, 0xff, 0xe4, 0x66, 0x7e, 0x10, 0x11, 0xc7, 0x73, - 0xa9, 0xba, 0xea, 0x96, 0x0e, 0x22, 0xb2, 0xe9, 0x52, 0x1e, 0x71, 0x6a, 0xfe, 0xce, 0xdb, 0x80, - 0x7f, 0x64, 0x24, 0x6b, 0x3a, 0xa3, 0x02, 0xce, 0x18, 0xd3, 0x8c, 0x2d, 0xb3, 0x96, 0xbf, 0x30, - 0x55, 0xfe, 0x62, 0x46, 0xfe, 0x0f, 0x13, 0x8b, 0xb8, 0x10, 0x25, 0x8c, 0xc0, 0xb4, 0xdd, 0x67, - 0xea, 0xa0, 0xb8, 0x88, 0x8d, 0x9c, 0x16, 0xad, 0x90, 0x11, 0xed, 0xb7, 0x60, 0x3e, 0x35, 0xf5, - 0x79, 0x0b, 0xf6, 0x6d, 0x03, 0x96, 0xb4, 0xe6, 0x66, 0x17, 0xef, 0x0c, 0x9b, 0xf6, 0xc5, 0x02, - 0xba, 0x70, 0x75, 0x9c, 0x83, 0xf3, 0x96, 0xf2, 0x5f, 0xe4, 0x29, 0x79, 0x89, 0x2f, 0x8c, 0xe9, - 0x77, 0xc4, 0x42, 0xf6, 0x1d, 0x51, 0x2a, 0xa6, 0x18, 0x2b, 0xe6, 0x93, 0xbf, 0x2b, 0x5a, 0x87, - 0x30, 0x17, 0x8b, 0x33, 0xbb, 0xae, 0xee, 0x40, 0xfe, 0xf8, 0xe4, 0x85, 0x9b, 0x92, 0xe3, 0xac, - 0xef, 0x4a, 0xf3, 0xf8, 0x4c, 0x5c, 0xf7, 0xd8, 0x71, 0xa8, 0xec, 0xe4, 0x42, 0x9d, 0xf5, 0x4f, - 0x8d, 0xe4, 0x1c, 0x99, 0xd5, 0x58, 0x3e, 0x07, 0x25, 0xc2, 0xb9, 0x9b, 0x9a, 0xd2, 0x96, 0x7c, - 0x2b, 0x02, 0x1e, 0x9e, 0x61, 0xd7, 0x3b, 0x72, 0xd2, 0xf6, 0x53, 0xe5, 0x90, 0xed, 0x73, 0xb3, - 0x21, 0x2b, 0x80, 0xc5, 0xac, 0x44, 0x17, 0x6a, 0x2f, 0xdf, 0x82, 0xe5, 0xf7, 0x43, 0x1e, 0x60, - 0x3e, 0xc4, 0x94, 0x91, 0x68, 0x74, 0xb9, 0x26, 0x63, 0x61, 0xb8, 0x3e, 0x6d, 0xfa, 0xf3, 0x36, - 0x93, 0xaf, 0xc3, 0x0d, 0x1b, 0x1f, 0xfa, 0x94, 0x61, 0xc2, 0xef, 0x00, 0x3b, 0xfb, 0x14, 0x93, - 0x13, 0x4c, 0x66, 0x91, 0x73, 0x09, 0x4a, 0xfc, 0x9a, 0xc8, 0xa8, 0x8a, 0xce, 0x8b, 0x3d, 0x77, - 0xd8, 0xa1, 0xd6, 0x1b, 0x70, 0x73, 0xfa, 0x0c, 0x4a, 0x94, 0x98, 0x2f, 0x23, 0x1b, 0x6b, 0xb6, - 0x44, 0x8e, 0xf3, 0x82, 0x98, 0x1a, 0xc0, 0xf2, 0x94, 0xe1, 0x4f, 0xe3, 0x88, 0x9b, 0xb0, 0x4f, - 0x1d, 0x2f, 0xc0, 0xae, 0xbc, 0xb6, 0x55, 0xec, 0xb2, 0x4f, 0x45, 0xaa, 0xe8, 0xec, 0x57, 0xc8, - 0x0f, 0x61, 0xd9, 0xc6, 0xbd, 0x48, 0xde, 0xb7, 0x2e, 0x40, 0xac, 0x0d, 0xb8, 0x3e, 0x6d, 0xfc, - 0x53, 0x35, 0xfd, 0x3d, 0x03, 0xae, 0xed, 0x1e, 0x8d, 0xa8, 0xef, 0xb9, 0xc1, 0xa7, 0xc9, 0x12, - 0x4c, 0x67, 0x69, 0x86, 0xdc, 0x80, 0xf5, 0x01, 0xb4, 0x26, 0x19, 0x3a, 0x75, 0x6d, 0xe2, 0x05, - 0xc8, 0xbd, 0x64, 0x01, 0xbe, 0x6d, 0x00, 0x6a, 0xf7, 0x03, 0x9f, 0xd9, 0x62, 0x67, 0xcc, 0x96, - 0x0d, 0xa9, 0x52, 0x3e, 0x42, 0xb2, 0x9d, 0x1f, 0xe4, 0x5a, 0x86, 0x5d, 0x11, 0x40, 0x2e, 0x14, - 0xbf, 0xa9, 0x6a, 0x02, 0x9d, 0xfd, 0xa9, 0x6a, 0x2c, 0xb5, 0xfe, 0xd9, 0x80, 0x85, 0x0c, 0x0b, - 0xb3, 0x6f, 0xe9, 0x57, 0xa1, 0x10, 0xe0, 0x03, 0xa6, 0xae, 0xac, 0xcd, 0x75, 0x55, 0x08, 0x26, - 0x07, 0x16, 0x5c, 0x09, 0x3c, 0x5a, 0x85, 0x22, 0xf1, 0x0f, 0x8f, 0x98, 0xaa, 0x97, 0x99, 0x46, - 0x28, 0x09, 0xd0, 0x2a, 0x3f, 0x7c, 0x0f, 0x45, 0x12, 0x59, 0xa6, 0x14, 0xc6, 0x68, 0x6d, 0x8d, - 0xb6, 0x7e, 0xcf, 0x00, 0xd3, 0xc6, 0x6e, 0x77, 0x2b, 0xec, 0xe2, 0xe1, 0x2c, 0x7a, 0x5c, 0x86, - 0x4a, 0xfc, 0x72, 0x26, 0x2d, 0xa6, 0x4c, 0xd5, 0x9b, 0x59, 0xe2, 0x77, 0xf2, 0x2f, 0xf1, 0x3b, - 0xd6, 0x9f, 0x18, 0x30, 0x9f, 0x62, 0x63, 0x76, 0x5d, 0xbe, 0x02, 0x40, 0xb0, 0xdb, 0x75, 0x7c, - 0x3e, 0x90, 0xce, 0x2f, 0x10, 0x3d, 0x32, 0x67, 0x89, 0x5b, 0x10, 0xee, 0x4e, 0xd4, 0x1c, 0xc5, - 0x26, 0xa6, 0x08, 0xac, 0xf7, 0xa1, 0xb6, 0x87, 0x89, 0xce, 0xb9, 0xa3, 0x5b, 0x90, 0x8b, 0xfa, - 0x82, 0x83, 0xe6, 0x46, 0x33, 0xee, 0xb5, 0x87, 0xc9, 0x4e, 0xdf, 0xce, 0x45, 0xfd, 0xb3, 0x5e, - 0xa9, 0xac, 0x2f, 0x41, 0x65, 0x0f, 0x13, 0x51, 0x6e, 0x90, 0x50, 0x18, 0xe9, 0x4b, 0x57, 0x2a, - 0xa3, 0x9b, 0xcb, 0x66, 0x74, 0x57, 0x44, 0xdf, 0x31, 0x3f, 0x90, 0x39, 0x05, 0x22, 0xa8, 0xee, - 0x61, 0x22, 0xfd, 0x5f, 0x92, 0x0b, 0x31, 0xc6, 0x64, 0xd5, 0x83, 0xe8, 0x7d, 0x37, 0xc9, 0xfb, - 0xbd, 0x34, 0xef, 0x63, 0x5d, 0x05, 0xef, 0x5a, 0x1c, 0x02, 0x8d, 0x3d, 0x4c, 0xce, 0x2d, 0x99, - 0x70, 0xa6, 0x97, 0xb3, 0xbf, 0x37, 0xa0, 0xa9, 0x27, 0xbd, 0x80, 0x4c, 0xd1, 0xb8, 0x76, 0xce, - 0xaa, 0x8b, 0xd3, 0xf3, 0x10, 0xcf, 0x00, 0xed, 0x61, 0xf2, 0x69, 0xf2, 0x10, 0xb1, 0xb6, 0xf2, - 0x9f, 0x48, 0x5b, 0x04, 0x16, 0x32, 0x13, 0xcf, 0xae, 0xb1, 0xd5, 0xec, 0xa5, 0x19, 0xa5, 0x15, - 0x91, 0xcd, 0x4e, 0x7c, 0x4b, 0x58, 0xc5, 0x93, 0xd9, 0xee, 0xe6, 0xaf, 0x42, 0xbe, 0x37, 0xd0, - 0xa7, 0xe1, 0x62, 0x7a, 0x92, 0xf8, 0x01, 0x8c, 0x13, 0x9c, 0xf2, 0xf2, 0x11, 0x08, 0xfb, 0x78, - 0x32, 0xb8, 0x14, 0xfb, 0xe0, 0x47, 0x68, 0xbc, 0xb4, 0x33, 0x8a, 0xbc, 0x0a, 0x85, 0xde, 0x80, - 0x69, 0xc5, 0x4e, 0x97, 0x59, 0x50, 0x9c, 0x22, 0xf4, 0x47, 0xc9, 0x3a, 0x5f, 0x96, 0xe4, 0xcf, - 0xe5, 0x46, 0xbc, 0x90, 0x4b, 0xec, 0x0b, 0x2f, 0x61, 0xd3, 0x1f, 0x22, 0x66, 0xaa, 0x92, 0x9d, - 0xd8, 0x3f, 0xe5, 0x29, 0xfb, 0x27, 0x84, 0xb9, 0x58, 0xc6, 0xcb, 0xd8, 0x3b, 0x23, 0x58, 0xda, - 0xc3, 0xe4, 0xb3, 0xb8, 0xdf, 0x5a, 0x0c, 0xae, 0x8e, 0x4f, 0x7d, 0x09, 0x56, 0xd4, 0x86, 0x85, - 0x27, 0x27, 0x9e, 0xf7, 0x0e, 0x66, 0x0f, 0x46, 0x3c, 0x30, 0x38, 0x0f, 0x47, 0x62, 0xfd, 0x81, - 0x01, 0x8b, 0xd9, 0x51, 0xcf, 0x3b, 0x17, 0x7d, 0x17, 0x0a, 0xa2, 0xdc, 0x64, 0xdc, 0x2b, 0xf0, - 0x59, 0x45, 0x20, 0x21, 0xd0, 0xd6, 0xd7, 0xe1, 0x5a, 0xcc, 0x87, 0x2a, 0x26, 0x3a, 0xdf, 0x30, - 0xcb, 0xfa, 0x0b, 0x03, 0x5a, 0x93, 0x53, 0x9c, 0xb7, 0xb8, 0x4a, 0xc5, 0xf9, 0xc4, 0x57, 0x6b, - 0x05, 0x14, 0x4e, 0x57, 0xc0, 0xf7, 0x8b, 0x50, 0xde, 0x4c, 0xcc, 0x52, 0x71, 0xe3, 0x77, 0x05, - 0x2b, 0x05, 0xbb, 0x22, 0x01, 0x5b, 0x5d, 0xf4, 0x2b, 0x09, 0xab, 0xfd, 0xc8, 0x3b, 0x52, 0x76, - 0xb3, 0x90, 0x8d, 0x5c, 0x1f, 0x71, 0x54, 0xcc, 0x2f, 0x6f, 0xa0, 0x15, 0x28, 0xf4, 0x31, 0xd6, - 0x55, 0xe4, 0x75, 0x4d, 0xbf, 0x8b, 0x31, 0xb1, 0x05, 0x06, 0x21, 0x28, 0x30, 0x4c, 0x7a, 0x2a, - 0x6f, 0x2d, 0x7e, 0xa3, 0xfb, 0x50, 0xe9, 0x13, 0x3f, 0x22, 0x3e, 0x1b, 0x89, 0x63, 0xa1, 0xb9, - 0xb1, 0x90, 0xd2, 0x7e, 0xaf, 0xe7, 0x86, 0xdd, 0x5d, 0xe2, 0xdb, 0x31, 0x11, 0x7a, 0x13, 0xe6, - 0x7c, 0x1a, 0x05, 0xe2, 0x30, 0x76, 0x02, 0x7c, 0x82, 0x03, 0x71, 0x5c, 0x34, 0x37, 0xae, 0xc5, - 0xfd, 0xb6, 0x34, 0x7e, 0x9b, 0xa3, 0xed, 0xa6, 0x9f, 0x69, 0xa3, 0x5f, 0x84, 0xa6, 0x88, 0x0f, - 0xfc, 0x20, 0x70, 0x3c, 0xd7, 0x3b, 0xc2, 0xaa, 0x72, 0xab, 0xce, 0x83, 0x04, 0x3f, 0x08, 0x36, - 0x39, 0x4c, 0xac, 0xf4, 0x28, 0xf4, 0x9c, 0x20, 0x3a, 0x54, 0x05, 0xac, 0x65, 0xde, 0xde, 0x8e, - 0x0e, 0xd1, 0x2a, 0x98, 0x04, 0x7b, 0x11, 0xe9, 0x8a, 0xea, 0x57, 0x87, 0x32, 0x97, 0xa9, 0x2a, - 0xd6, 0xa6, 0x84, 0x77, 0xfc, 0x1e, 0x6e, 0x33, 0x97, 0xa5, 0x28, 0xa9, 0xe7, 0x86, 0x92, 0xb2, - 0x96, 0xa6, 0xe4, 0xe7, 0x99, 0xa0, 0xbc, 0xc3, 0xb5, 0xde, 0x0f, 0x7c, 0xcf, 0x75, 0x78, 0x98, - 0xdc, 0xaa, 0xcb, 0x92, 0x5b, 0x05, 0xe3, 0x31, 0x39, 0xba, 0x0b, 0x4d, 0x59, 0x5b, 0x86, 0xbb, - 0x8e, 0xbc, 0x9f, 0x35, 0x56, 0xf2, 0xab, 0x05, 0xbb, 0xa1, 0xa1, 0xa2, 0x70, 0x09, 0xfd, 0x3a, - 0x2c, 0xf3, 0x9b, 0x23, 0x1e, 0x62, 0x6f, 0x20, 0x94, 0xd4, 0x1d, 0x10, 0xa9, 0xad, 0x9e, 0x2e, - 0xd6, 0xbe, 0xda, 0x73, 0x87, 0x8f, 0x34, 0xfe, 0xa1, 0x42, 0x3f, 0x11, 0x05, 0x53, 0x6e, 0xbf, - 0x1f, 0xf8, 0x58, 0x07, 0xee, 0x73, 0xf2, 0x20, 0x56, 0x40, 0x19, 0xbb, 0x5f, 0x83, 0x32, 0x73, - 0xe9, 0x31, 0x37, 0x1d, 0x53, 0xd6, 0xf0, 0xf1, 0xe6, 0x56, 0x57, 0xdc, 0xd4, 0x98, 0x1b, 0x60, - 0x29, 0xc0, 0xbc, 0x10, 0xa0, 0x2a, 0x20, 0x9c, 0xfd, 0x77, 0x0b, 0x95, 0x82, 0x59, 0xe4, 0x12, - 0xb9, 0x5d, 0xe7, 0xa3, 0x41, 0x44, 0x06, 0x3d, 0xeb, 0xbf, 0x72, 0x50, 0xd1, 0x01, 0xff, 0x44, - 0x09, 0xa6, 0x31, 0x59, 0x82, 0x79, 0x07, 0xea, 0xa2, 0xbe, 0x2c, 0x1b, 0x97, 0xd7, 0x38, 0x4c, - 0xbf, 0xe3, 0x4e, 0xee, 0x8f, 0x74, 0xfd, 0x5b, 0x21, 0x5b, 0xff, 0x96, 0x2e, 0xcc, 0x2f, 0x66, - 0x0b, 0xf3, 0x57, 0x55, 0x29, 0x1b, 0x1b, 0xf5, 0xb1, 0x32, 0xcc, 0x5a, 0x6c, 0x60, 0x3b, 0x7d, - 0x59, 0xc4, 0xd6, 0x19, 0xf5, 0x31, 0xfa, 0x3c, 0x20, 0x41, 0x99, 0x2d, 0x9c, 0x95, 0x2e, 0x6c, - 0x8e, 0x63, 0xde, 0x4e, 0x15, 0xcf, 0x4e, 0xab, 0xd3, 0xaf, 0x4c, 0xad, 0xd3, 0x9f, 0x28, 0x81, - 0xae, 0x4e, 0x16, 0xb4, 0x8f, 0xd5, 0xf2, 0xc3, 0x44, 0x2d, 0xbf, 0xf5, 0x6f, 0x79, 0xa8, 0xe8, - 0x27, 0xd7, 0xd4, 0xad, 0xcb, 0x78, 0xc9, 0xad, 0x0b, 0xdd, 0xe4, 0x27, 0x04, 0x23, 0x23, 0x77, - 0x3f, 0xc0, 0xea, 0x00, 0x4a, 0x00, 0xfc, 0x68, 0x72, 0xf7, 0x23, 0xc2, 0x54, 0x12, 0x5f, 0x36, - 0xd0, 0x06, 0x54, 0xbc, 0x28, 0x3c, 0x08, 0x7c, 0x8f, 0x4d, 0x94, 0x9c, 0x7c, 0x95, 0xf8, 0x0c, - 0x6f, 0x2a, 0xac, 0x1d, 0xd3, 0xa1, 0x2f, 0x41, 0xc3, 0x0d, 0xb8, 0x49, 0x8c, 0x54, 0xa1, 0xa6, - 0xac, 0x3a, 0x59, 0x4a, 0x2a, 0x0c, 0x25, 0x56, 0xd4, 0x6a, 0xda, 0x75, 0x37, 0xd5, 0x42, 0xaf, - 0x41, 0xa5, 0x8b, 0xdd, 0xae, 0x30, 0x96, 0xf1, 0x62, 0xc3, 0x87, 0x0a, 0x61, 0xc7, 0x24, 0xe8, - 0x21, 0xcc, 0xc7, 0xca, 0x74, 0xf0, 0xb0, 0xef, 0x13, 0xdc, 0x15, 0xcb, 0x54, 0xdb, 0x68, 0x65, - 0x8e, 0x1c, 0xae, 0xda, 0x47, 0x12, 0x6f, 0xcf, 0x79, 0x59, 0x00, 0xfa, 0x35, 0x68, 0x70, 0x93, - 0x49, 0x2e, 0x18, 0x95, 0xb1, 0xf8, 0xb8, 0x33, 0x0c, 0x9f, 0xaa, 0xcb, 0x86, 0x5d, 0x63, 0x49, - 0x03, 0x3d, 0x86, 0x85, 0x64, 0x7e, 0x16, 0x45, 0x4e, 0xe0, 0x92, 0x43, 0x59, 0x1c, 0x5f, 0xdb, - 0x58, 0x9e, 0xe0, 0xa0, 0x13, 0x45, 0xdb, 0x9c, 0xc0, 0x36, 0xbd, 0x31, 0x88, 0xf5, 0x63, 0x03, - 0x1a, 0x19, 0x85, 0x66, 0xdc, 0x92, 0x91, 0xbd, 0xfd, 0xdf, 0x86, 0x9a, 0xd6, 0x76, 0xe2, 0xb4, - 0x40, 0x83, 0x3a, 0x74, 0xca, 0x8e, 0x69, 0x41, 0x59, 0xed, 0x3a, 0x55, 0xc4, 0xae, 0x9b, 0xe8, - 0x0b, 0x80, 0xe2, 0xc1, 0x12, 0xcb, 0x94, 0x5b, 0xc7, 0xd4, 0x98, 0xb8, 0x42, 0x7f, 0x05, 0xea, - 0xe9, 0xe5, 0xd3, 0x33, 0x19, 0x49, 0x78, 0xf0, 0xdb, 0x50, 0xd1, 0x2b, 0x95, 0xae, 0x0d, 0x36, - 0x32, 0xb5, 0xc1, 0x7a, 0x03, 0x27, 0xa1, 0x85, 0x20, 0xe4, 0x21, 0xd4, 0x1a, 0xcc, 0xeb, 0xf5, - 0xe5, 0x68, 0xe7, 0xc8, 0xa5, 0x47, 0x2a, 0x20, 0x9f, 0xd3, 0x88, 0xf7, 0xf0, 0xe8, 0xb1, 0x4b, - 0x8f, 0xac, 0x8f, 0x0d, 0x98, 0x1b, 0x5b, 0xde, 0xd3, 0xf4, 0xb6, 0x0e, 0x0b, 0x2e, 0x63, 0xb8, - 0xd7, 0x67, 0xb8, 0x9b, 0x92, 0x55, 0xea, 0x6f, 0x3e, 0x46, 0xc5, 0x7b, 0x71, 0x52, 0x8d, 0x13, - 0x3b, 0xb8, 0x30, 0xf9, 0x11, 0xc3, 0x16, 0xd4, 0x52, 0x06, 0xf3, 0x92, 0x75, 0x3c, 0xb5, 0xb6, - 0xda, 0xba, 0x0f, 0xe6, 0xb8, 0xed, 0x64, 0xeb, 0x46, 0x8d, 0xb1, 0xba, 0xd1, 0x1f, 0x1a, 0x00, - 0xdc, 0x53, 0xc9, 0xda, 0x2f, 0xf4, 0x39, 0x98, 0x17, 0x5f, 0x74, 0x3c, 0x73, 0x83, 0x40, 0x3a, - 0xb6, 0x9e, 0xec, 0x93, 0xb7, 0x9b, 0x1c, 0xf1, 0x55, 0x37, 0x08, 0x38, 0xf9, 0x13, 0x8a, 0xee, - 0xc3, 0x62, 0x9f, 0x44, 0x1e, 0xa6, 0x34, 0x4b, 0x9d, 0x13, 0xd4, 0xf3, 0x0a, 0x97, 0xea, 0xb0, - 0x0e, 0x8b, 0xc7, 0x27, 0xc2, 0x2f, 0x64, 0x3b, 0xe4, 0x45, 0x07, 0xf3, 0xf8, 0x84, 0x7b, 0x88, - 0x84, 0xde, 0xfa, 0x1a, 0x54, 0xb8, 0x67, 0x14, 0x7e, 0x61, 0x11, 0x8a, 0x2c, 0x62, 0x6e, 0xa0, - 0x78, 0x91, 0x0d, 0x7e, 0x40, 0xa9, 0x69, 0x70, 0x57, 0xcd, 0x9b, 0x00, 0xe2, 0xf4, 0xd3, 0xfe, - 0x88, 0x61, 0x3d, 0x8b, 0x48, 0x3f, 0x3d, 0xe0, 0x00, 0xeb, 0x77, 0x0d, 0x00, 0x3e, 0xbe, 0x92, - 0xfc, 0x1e, 0x14, 0xc5, 0xa7, 0x4a, 0x13, 0xc7, 0xa2, 0xe6, 0xc1, 0x96, 0x78, 0x1e, 0x6a, 0xc5, - 0x5f, 0x07, 0x4c, 0xa5, 0x13, 0x68, 0x4e, 0xd6, 0x75, 0x99, 0x3b, 0x11, 0x92, 0x26, 0x64, 0x1c, - 0x6d, 0x7d, 0x9c, 0x97, 0x9f, 0xf8, 0x49, 0x2e, 0xf6, 0x36, 0xd0, 0x6b, 0x80, 0x62, 0x11, 0xb4, - 0x8f, 0xd3, 0xcb, 0x36, 0x1f, 0x63, 0x94, 0xa7, 0x13, 0x35, 0xa7, 0x42, 0x17, 0x09, 0xa9, 0xaa, - 0x39, 0x15, 0xd0, 0x98, 0xec, 0x2b, 0x70, 0x93, 0xf0, 0xc0, 0xa0, 0xbb, 0xef, 0x74, 0xc5, 0x95, - 0xc2, 0xa1, 0xc7, 0x7e, 0xbf, 0x2f, 0xac, 0x7a, 0x10, 0x32, 0xb5, 0x5d, 0x96, 0x15, 0x8d, 0xbc, - 0x75, 0xb4, 0x25, 0xc5, 0x26, 0x27, 0xe0, 0x01, 0x85, 0x1e, 0x80, 0xef, 0xb1, 0x6c, 0x6f, 0x69, - 0xd3, 0x57, 0x15, 0xc1, 0x7b, 0x78, 0x94, 0xe9, 0xfa, 0x26, 0xbc, 0xa2, 0xbb, 0xee, 0x8b, 0x4d, - 0x2a, 0xe2, 0x2d, 0xe7, 0xc8, 0x67, 0xaa, 0x7b, 0x31, 0x33, 0xf9, 0x03, 0x4e, 0x23, 0xc2, 0xaf, - 0xc7, 0x3e, 0x93, 0x23, 0xfc, 0x2a, 0xb4, 0xb2, 0x23, 0x88, 0x75, 0x95, 0x9d, 0xe5, 0xa7, 0x4b, - 0x4b, 0xe9, 0xce, 0xdc, 0x8e, 0x64, 0xc7, 0x5f, 0x86, 0x6b, 0x53, 0x3a, 0x72, 0x83, 0x50, 0xbe, - 0x79, 0x71, 0xbc, 0x1f, 0xb7, 0x0d, 0xeb, 0xf7, 0x0d, 0xa8, 0xa5, 0xea, 0x23, 0xd1, 0x1b, 0x50, - 0x13, 0xc6, 0x2a, 0xcb, 0x29, 0x95, 0x85, 0x24, 0x21, 0x6a, 0xb2, 0x7f, 0x6c, 0x60, 0xc9, 0x5e, - 0x7a, 0x03, 0x6a, 0x22, 0xe0, 0x53, 0xbd, 0x72, 0x63, 0xbd, 0x92, 0x55, 0xb7, 0x81, 0xc6, 0xbf, - 0x65, 0x45, 0xa5, 0x8c, 0x93, 0xac, 0xdf, 0x31, 0xa0, 0x91, 0xa9, 0xd3, 0x9c, 0x91, 0x93, 0xdf, - 0x80, 0x66, 0x8a, 0x13, 0xe7, 0x64, 0x43, 0x31, 0xb3, 0x34, 0x85, 0x99, 0xbd, 0x0d, 0xbb, 0x4e, - 0x53, 0x2d, 0xeb, 0x03, 0x28, 0xbd, 0x2c, 0x87, 0x39, 0x5e, 0xff, 0x77, 0xd6, 0xfc, 0xeb, 0x77, - 0x0c, 0xa8, 0xc4, 0x49, 0xdd, 0x1b, 0xa9, 0xa4, 0x6e, 0x26, 0xca, 0xfa, 0x04, 0x19, 0x5d, 0xf4, - 0x4b, 0x50, 0x75, 0x29, 0xc5, 0x84, 0xe9, 0x52, 0xf4, 0x66, 0xea, 0x7a, 0xff, 0x96, 0xc6, 0xd8, - 0x09, 0x11, 0x5f, 0xeb, 0x2a, 0xbf, 0x25, 0x09, 0x5f, 0x8a, 0x6e, 0x43, 0x41, 0x04, 0x7b, 0x53, - 0xd8, 0x10, 0x88, 0xd3, 0x52, 0xec, 0xa7, 0x7e, 0x11, 0x76, 0x1b, 0x6a, 0xf4, 0x28, 0x22, 0xcc, - 0x49, 0x7f, 0x17, 0x06, 0x02, 0x24, 0xf2, 0x96, 0xd6, 0x97, 0x25, 0x1b, 0x32, 0x19, 0x7d, 0x8a, - 0x0b, 0x88, 0xe5, 0xce, 0x4d, 0x68, 0xf2, 0xc4, 0x93, 0x9f, 0x9a, 0x7e, 0x1a, 0x21, 0x52, 0x6e, - 0x3f, 0x9f, 0x75, 0xfb, 0x2f, 0x95, 0xe0, 0xbb, 0x8a, 0x07, 0x71, 0x60, 0xeb, 0x53, 0xd2, 0x98, - 0x72, 0x21, 0x15, 0xaf, 0x4f, 0xf2, 0x94, 0x5c, 0x83, 0x92, 0x38, 0x55, 0x27, 0x73, 0x31, 0xf1, - 0x9a, 0xd8, 0x8a, 0x82, 0xd3, 0xaa, 0xcf, 0xe7, 0xf2, 0x53, 0x68, 0x65, 0xf6, 0x57, 0x51, 0x58, - 0x5f, 0x84, 0xb2, 0xaa, 0xd7, 0x14, 0x75, 0x42, 0xc3, 0x50, 0xa9, 0x91, 0xff, 0x44, 0x57, 0xa1, - 0x44, 0xc5, 0xa7, 0x37, 0x4a, 0x78, 0xd5, 0xb2, 0xde, 0x14, 0x61, 0xb2, 0x48, 0xb6, 0x64, 0x93, - 0x36, 0xc6, 0x8b, 0x93, 0x36, 0xb9, 0x4c, 0xd2, 0xe6, 0x9f, 0x0c, 0x80, 0x6d, 0xec, 0x76, 0x31, - 0x11, 0x53, 0x9f, 0x7a, 0xc5, 0xbe, 0x06, 0x65, 0x7e, 0x21, 0xe6, 0x28, 0xc5, 0x06, 0x6f, 0x6e, - 0x75, 0xe3, 0x1b, 0x72, 0x3e, 0x75, 0x43, 0x1e, 0xbf, 0x8f, 0x17, 0xce, 0x78, 0x1f, 0x7f, 0x5d, - 0xf9, 0x40, 0x2e, 0x21, 0x56, 0x71, 0x75, 0xa2, 0x37, 0x7e, 0xe0, 0xf1, 0x8b, 0x27, 0x96, 0x7e, - 0x51, 0xfc, 0xb4, 0xb6, 0xa0, 0x1a, 0xc3, 0x27, 0x2f, 0x83, 0xc6, 0xf4, 0xcb, 0xa0, 0xa8, 0x23, - 0x65, 0x89, 0x42, 0xdd, 0x03, 0xdc, 0xa1, 0x56, 0x1b, 0x90, 0x7c, 0x12, 0x16, 0x2a, 0xd1, 0xa9, - 0x96, 0xd7, 0x92, 0x07, 0x31, 0xf9, 0x55, 0x45, 0x72, 0x7e, 0x25, 0xba, 0x8b, 0x5f, 0xc5, 0x50, - 0x13, 0x72, 0xf1, 0xc0, 0x39, 0x46, 0xad, 0xaf, 0xc0, 0x42, 0x66, 0x50, 0x95, 0x5c, 0x69, 0x65, - 0x47, 0x2d, 0xbc, 0x78, 0x80, 0x87, 0x80, 0xda, 0x2c, 0x22, 0xb8, 0xcd, 0x99, 0x6c, 0x6b, 0xae, - 0xd6, 0xa1, 0xca, 0x1d, 0x9b, 0x78, 0x03, 0x9b, 0x76, 0xc0, 0xc9, 0x1c, 0x5c, 0xe5, 0x58, 0xfd, - 0xb2, 0xd6, 0x61, 0x21, 0x33, 0x8a, 0x62, 0x23, 0xa5, 0x0b, 0x23, 0xa3, 0x0b, 0x4f, 0xd4, 0x8e, - 0xbc, 0x83, 0xb9, 0x01, 0x75, 0x3a, 0xdb, 0x17, 0x53, 0xef, 0xf9, 0xc7, 0x86, 0xa8, 0xe7, 0x48, - 0xcd, 0x72, 0x01, 0xa9, 0xa7, 0xe4, 0x1b, 0x32, 0x51, 0x75, 0x77, 0xea, 0x4b, 0xcb, 0x7f, 0xc8, - 0xd2, 0xc8, 0xcd, 0xb7, 0xda, 0x17, 0x59, 0x1a, 0xf9, 0x05, 0x1e, 0x33, 0xe1, 0x13, 0x3f, 0x1a, - 0xd0, 0xd4, 0xe7, 0x7e, 0x92, 0x17, 0x53, 0x63, 0xe2, 0x8f, 0xfd, 0xee, 0x42, 0x33, 0xa6, 0x96, - 0x83, 0xc9, 0x72, 0xf9, 0x86, 0x86, 0xee, 0xa5, 0xea, 0x2d, 0x4b, 0xe3, 0xf5, 0x86, 0xe5, 0x58, - 0x72, 0xeb, 0x27, 0xb2, 0x6e, 0x4c, 0x08, 0x77, 0xde, 0x7a, 0x6e, 0x41, 0x99, 0x0e, 0x3c, 0x0f, - 0xab, 0xd7, 0xd1, 0x8a, 0xad, 0x9b, 0x17, 0x22, 0xec, 0xda, 0x6d, 0x28, 0x8a, 0xe7, 0x53, 0x04, - 0x50, 0xda, 0xc3, 0x64, 0x77, 0xc0, 0xcc, 0x2b, 0xea, 0xf7, 0x43, 0x1c, 0x98, 0xc6, 0xda, 0xe7, - 0x01, 0x92, 0x4c, 0x1c, 0xc7, 0x3c, 0x8d, 0x48, 0xcf, 0x0d, 0xcc, 0x2b, 0xa8, 0x0c, 0xf9, 0xed, - 0xe8, 0x99, 0x69, 0xa0, 0x0a, 0x14, 0x1e, 0xfb, 0x87, 0x47, 0x66, 0x6e, 0x6d, 0x05, 0x9a, 0xd9, - 0xf4, 0x1b, 0x2a, 0x41, 0xae, 0xbd, 0x65, 0x5e, 0xe1, 0x7f, 0xed, 0x4d, 0xd3, 0x58, 0xf3, 0x20, - 0xb7, 0xd3, 0xe7, 0x5d, 0xe5, 0x4c, 0x65, 0xc8, 0x8b, 0x69, 0xf8, 0x18, 0xdc, 0x3b, 0x98, 0x39, - 0x54, 0x87, 0x8a, 0xfe, 0xa2, 0xc3, 0xcc, 0xf3, 0x09, 0xb7, 0x42, 0xee, 0xb2, 0xcd, 0x02, 0x5a, - 0x80, 0xb9, 0xb1, 0xaf, 0x2a, 0xcd, 0x22, 0x42, 0xd0, 0x14, 0xa7, 0x82, 0x16, 0x9c, 0x9a, 0xa5, - 0xb5, 0x75, 0xa8, 0xc6, 0x2e, 0x9f, 0x8f, 0xfc, 0x34, 0x0a, 0xb1, 0x79, 0x05, 0x55, 0xa1, 0x28, - 0x48, 0x4c, 0x83, 0x4f, 0xa2, 0x3b, 0x98, 0xb9, 0xb5, 0x3f, 0x37, 0xa0, 0x24, 0x3f, 0x66, 0x94, - 0x08, 0xf9, 0xdb, 0xbc, 0x82, 0x96, 0x60, 0xbe, 0xd3, 0xd9, 0x96, 0xf7, 0xc5, 0x98, 0x29, 0x03, - 0xb5, 0x60, 0x91, 0xcf, 0xae, 0x47, 0x88, 0x31, 0x39, 0xde, 0xe1, 0x49, 0x7c, 0xc1, 0x6b, 0xef, - 0x0e, 0xe8, 0x11, 0xee, 0x9a, 0x79, 0xb4, 0x02, 0x37, 0xe3, 0x71, 0xa6, 0x7c, 0x2a, 0x6d, 0x16, - 0xd0, 0x32, 0x2c, 0xa5, 0x87, 0x7c, 0x18, 0x3d, 0x8d, 0xd8, 0x91, 0x1f, 0x1e, 0x9a, 0xc5, 0xb5, - 0xbb, 0x50, 0x7e, 0x34, 0x64, 0xc4, 0xdd, 0xe9, 0x4b, 0x59, 0xa2, 0xbe, 0x79, 0x05, 0x99, 0x50, - 0xe7, 0x87, 0xf5, 0x4e, 0xd0, 0x15, 0xeb, 0x68, 0x1a, 0x0f, 0x5e, 0xfd, 0xf7, 0xbf, 0xae, 0x18, - 0x3f, 0x79, 0x7e, 0xcb, 0xf8, 0xe9, 0xf3, 0x5b, 0xc6, 0x7f, 0x3f, 0xbf, 0x65, 0xfc, 0xf0, 0x7f, - 0x6e, 0x5d, 0x01, 0x33, 0x22, 0x87, 0xeb, 0xcc, 0x3f, 0x3e, 0x59, 0x3f, 0x3e, 0x11, 0xff, 0x9e, - 0x66, 0xbf, 0x24, 0xfe, 0x7c, 0xf1, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x89, 0xc0, 0xaa, 0x1e, - 0x03, 0x47, 0x00, 0x00, + 0x71, 0x9a, 0xfd, 0xde, 0x5a, 0xee, 0x72, 0xd8, 0xfc, 0x5a, 0x4a, 0x77, 0x12, 0x35, 0x89, 0x4e, + 0x3c, 0xda, 0x47, 0xf9, 0xe8, 0x73, 0x3e, 0x1c, 0x23, 0xbe, 0x13, 0xa9, 0x93, 0x78, 0x47, 0x49, + 0xc4, 0x90, 0xc7, 0xc3, 0x01, 0xf1, 0x8d, 0x87, 0xb3, 0x4d, 0x72, 0xc0, 0xd9, 0x99, 0x55, 0x77, + 0x2f, 0xb5, 0x6b, 0xc3, 0x80, 0x9d, 0x2f, 0xc0, 0x40, 0x12, 0xc7, 0x17, 0x03, 0x36, 0x90, 0x20, + 0x40, 0x02, 0x38, 0x48, 0xf2, 0x96, 0xbc, 0x07, 0x81, 0x81, 0x3c, 0xf8, 0x25, 0x88, 0x91, 0xa7, + 0x20, 0x79, 0x48, 0xac, 0xfc, 0x86, 0xbc, 0x07, 0xfd, 0x35, 0x1f, 0xbb, 0x2b, 0x8a, 0xda, 0x5b, + 0xf2, 0x0c, 0x3f, 0x71, 0xbb, 0xaa, 0xa6, 0xbb, 0xaa, 0xba, 0xba, 0xba, 0xaa, 0xa6, 0x86, 0x50, + 0x3f, 0x39, 0x25, 0x1d, 0xaf, 0x73, 0xb0, 0xd6, 0x21, 0x11, 0x8b, 0x50, 0x59, 0x0d, 0xaf, 0x4e, + 0xb5, 0x31, 0x73, 0x35, 0xf8, 0x6a, 0x1d, 0x13, 0x12, 0x91, 0x78, 0x38, 0x77, 0x14, 0x1d, 0x45, + 0xe2, 0xe7, 0x1d, 0xfe, 0x4b, 0x41, 0xa7, 0x49, 0x97, 0x32, 0xf1, 0x53, 0x01, 0x1a, 0x2d, 0xec, + 0xb6, 0x82, 0xc8, 0x3b, 0x91, 0x63, 0xab, 0x05, 0x70, 0x1f, 0x33, 0x1b, 0x3f, 0xe9, 0x62, 0xca, + 0xd0, 0x2a, 0x94, 0xbd, 0x28, 0x64, 0xb8, 0xc7, 0x9a, 0xc6, 0xb2, 0xb1, 0x52, 0x5b, 0x37, 0xd7, + 0x34, 0x2f, 0x1b, 0x12, 0x6e, 0x6b, 0x02, 0x64, 0x42, 0xfe, 0x04, 0xf7, 0x9b, 0xb9, 0x65, 0x63, + 0x65, 0xca, 0xe6, 0x3f, 0x51, 0x13, 0xca, 0xa7, 0x98, 0x50, 0x3f, 0x0a, 0x9b, 0xf9, 0x65, 0x63, + 0xa5, 0x60, 0xeb, 0xa1, 0xf5, 0xcc, 0x80, 0x9a, 0x58, 0x86, 0x76, 0xa2, 0x90, 0x62, 0xf4, 0x26, + 0x4c, 0x11, 0x7c, 0xe4, 0x47, 0xa1, 0x23, 0x84, 0x50, 0x8b, 0x35, 0xd6, 0xb4, 0x48, 0xf7, 0xf8, + 0x5f, 0xbb, 0x26, 0x69, 0xc4, 0x00, 0xdd, 0x86, 0xa2, 0xa4, 0xcd, 0x09, 0xda, 0x99, 0x98, 0xb1, + 0xf7, 0x71, 0x5f, 0x92, 0x4b, 0x3c, 0x9a, 0x83, 0xe2, 0xa9, 0x1b, 0x74, 0xb1, 0xe0, 0x61, 0xca, + 0x96, 0x03, 0x74, 0x0d, 0xaa, 0x61, 0xc4, 0x9c, 0xc3, 0xa8, 0x1b, 0xb6, 0x9a, 0x85, 0x65, 0x63, + 0xa5, 0x62, 0x57, 0xc2, 0x88, 0xbd, 0xcb, 0xc7, 0xe8, 0xb7, 0x61, 0x1a, 0xf7, 0xb0, 0xe7, 0xb4, + 0x30, 0x73, 0xfd, 0x80, 0x3a, 0xa7, 0xeb, 0xcd, 0x92, 0x58, 0x65, 0x21, 0x5e, 0xe5, 0x5e, 0x0f, + 0x7b, 0x9b, 0x12, 0xbd, 0xbf, 0x6e, 0xd7, 0x71, 0x7a, 0xf8, 0x5e, 0xa1, 0x52, 0x34, 0x4b, 0xd6, + 0xff, 0x19, 0x50, 0xdb, 0xf5, 0xdc, 0x70, 0x1c, 0x65, 0x5e, 0x83, 0x2a, 0x65, 0x2e, 0x61, 0x4e, + 0xa2, 0xd2, 0x8a, 0x00, 0xbc, 0x8f, 0xfb, 0x5c, 0xa2, 0xc0, 0x6f, 0xfb, 0x4c, 0x48, 0x54, 0xb7, + 0xe5, 0x20, 0xad, 0xed, 0x42, 0x46, 0xdb, 0x68, 0x09, 0x2a, 0x27, 0xb8, 0xef, 0x44, 0x61, 0xd0, + 0x6f, 0x16, 0x85, 0xa8, 0xe5, 0x13, 0xdc, 0x7f, 0x1c, 0x06, 0x62, 0x8b, 0x08, 0xe6, 0x74, 0x58, + 0x48, 0x58, 0xb1, 0xf5, 0x10, 0x2d, 0x42, 0x19, 0x87, 0x2d, 0xb1, 0x7e, 0x59, 0xac, 0x5f, 0xc2, + 0x61, 0x8b, 0xaf, 0x7e, 0x03, 0x6a, 0xd4, 0x6d, 0x77, 0x02, 0xec, 0x50, 0x86, 0x3b, 0xcd, 0x8a, + 0xe0, 0x01, 0x24, 0x68, 0x97, 0xe1, 0x8e, 0xf5, 0x7d, 0x03, 0xa6, 0xa4, 0xdc, 0xe3, 0xef, 0xee, + 0x2d, 0x28, 0x76, 0x5c, 0x9f, 0xd0, 0x66, 0x6e, 0x39, 0xbf, 0x52, 0x5b, 0x9f, 0x4e, 0x76, 0xf7, + 0x74, 0xc7, 0xf5, 0x89, 0x2d, 0xb1, 0x89, 0x11, 0xe4, 0xcf, 0x36, 0x02, 0xeb, 0x6f, 0x0a, 0x30, + 0xbd, 0x43, 0xf0, 0x53, 0xe2, 0x33, 0x3c, 0xce, 0x7e, 0xdc, 0x81, 0x6a, 0xbb, 0xcb, 0x5c, 0xe6, + 0x47, 0xa1, 0xe6, 0x29, 0x59, 0xec, 0xa1, 0xc2, 0xd8, 0x09, 0x0d, 0xba, 0x09, 0x53, 0x1d, 0xe2, + 0xb7, 0x5d, 0xd2, 0x77, 0xf8, 0xe9, 0x52, 0xc6, 0x57, 0x53, 0xb0, 0xed, 0xc8, 0x3b, 0x41, 0xbf, + 0x02, 0x75, 0xb9, 0xc7, 0xd9, 0x6d, 0x9b, 0x12, 0xc0, 0xfd, 0x64, 0xef, 0xf8, 0xf3, 0x0e, 0x63, + 0x81, 0xd8, 0xbb, 0x82, 0x5d, 0xe6, 0xe3, 0x3d, 0x16, 0xa0, 0x75, 0x98, 0xa7, 0x27, 0x7e, 0xc7, + 0xf1, 0xa2, 0x90, 0x32, 0xe2, 0xfa, 0x21, 0x73, 0xbc, 0x63, 0xec, 0x9d, 0xa8, 0x9d, 0x9c, 0xe5, + 0xc8, 0x8d, 0x18, 0xb7, 0xc1, 0x51, 0x68, 0x0d, 0x66, 0x7d, 0xea, 0x74, 0x30, 0xa5, 0x7e, 0xdb, + 0xa7, 0xcc, 0xf7, 0x24, 0x77, 0xe5, 0xe5, 0xfc, 0x4a, 0xc5, 0x9e, 0xf1, 0xe9, 0x4e, 0x82, 0x11, + 0x3c, 0x2e, 0x41, 0x85, 0xf5, 0x42, 0x87, 0xfa, 0xdf, 0xc0, 0x62, 0xa7, 0x0b, 0x76, 0x99, 0xf5, + 0xc2, 0x5d, 0xff, 0x1b, 0x18, 0x59, 0x50, 0x3f, 0x8c, 0x88, 0xd3, 0xed, 0xb4, 0x5c, 0x86, 0x1d, + 0x46, 0x9b, 0x55, 0x81, 0xaf, 0x1d, 0x46, 0xe4, 0x03, 0x01, 0xdb, 0xa3, 0x9c, 0xa6, 0xed, 0x87, + 0x8e, 0x17, 0xb5, 0xdb, 0x3e, 0xe3, 0x34, 0x20, 0x69, 0xda, 0x7e, 0xb8, 0x21, 0x60, 0x7b, 0x14, + 0xad, 0x80, 0xd9, 0xa5, 0xd8, 0x71, 0x69, 0x3f, 0xf4, 0x14, 0x65, 0xb3, 0x26, 0x24, 0x68, 0x74, + 0x29, 0x7e, 0x87, 0x83, 0x25, 0x2d, 0x5a, 0x86, 0x1a, 0xc5, 0x5e, 0x14, 0xb6, 0x5c, 0xe2, 0x63, + 0xda, 0x9c, 0x5a, 0xce, 0x73, 0x95, 0xa6, 0x40, 0xe8, 0x15, 0x00, 0x46, 0xb8, 0xa5, 0x63, 0xa7, + 0xe3, 0x35, 0xeb, 0xf2, 0x58, 0x33, 0xd2, 0x7f, 0x1c, 0xe2, 0x1d, 0x4f, 0x70, 0xe3, 0xf6, 0x52, + 0xdc, 0x34, 0x14, 0x37, 0x6e, 0x4f, 0x73, 0x63, 0xfd, 0x93, 0x01, 0x66, 0x62, 0x28, 0xe3, 0x1b, + 0xf0, 0xeb, 0x50, 0x12, 0xd8, 0x61, 0x6b, 0x89, 0x4d, 0x53, 0x11, 0x0c, 0x2b, 0x29, 0x3f, 0xac, + 0xa4, 0xdb, 0x60, 0x4a, 0xa1, 0x52, 0x64, 0xd2, 0x5c, 0xea, 0x11, 0x97, 0x2d, 0xe6, 0xff, 0x27, + 0x79, 0x58, 0x18, 0xd8, 0xc4, 0x5f, 0x16, 0x7b, 0x1f, 0x32, 0xb8, 0xd2, 0x48, 0x83, 0xf3, 0xa9, + 0x73, 0xe8, 0x13, 0xca, 0xb4, 0x65, 0x73, 0x1b, 0xa8, 0xf9, 0xf4, 0x5d, 0x0e, 0x13, 0x7c, 0xdc, + 0x84, 0xa9, 0xa7, 0x2e, 0x57, 0xa1, 0xdf, 0xc6, 0x51, 0x97, 0x09, 0xbb, 0xce, 0xdb, 0x35, 0x0e, + 0xdb, 0x93, 0x20, 0xee, 0x61, 0x0f, 0x23, 0xe2, 0x61, 0x61, 0xd3, 0x15, 0x5b, 0x0e, 0xb8, 0x00, + 0x04, 0xb3, 0x2e, 0x09, 0x1d, 0x71, 0x87, 0x48, 0x6b, 0xae, 0xd8, 0x53, 0x12, 0xb8, 0x2f, 0x60, + 0xc3, 0xbb, 0x59, 0x1b, 0xde, 0xcd, 0x57, 0x01, 0xe8, 0x93, 0xc0, 0x69, 0xf9, 0x47, 0x98, 0xb2, + 0xe6, 0xd4, 0xb2, 0xb1, 0x52, 0xb5, 0xab, 0xf4, 0x49, 0xb0, 0x29, 0x00, 0xd6, 0xcf, 0x0d, 0x58, + 0x1c, 0xda, 0xc3, 0x4b, 0x31, 0xc5, 0x6b, 0x50, 0x1d, 0x34, 0xc3, 0x8a, 0xa7, 0xb9, 0x8e, 0x2f, + 0xd2, 0x42, 0xfa, 0x22, 0x5d, 0x80, 0x92, 0xd2, 0x46, 0x51, 0x9c, 0x47, 0x35, 0xe2, 0x32, 0xc6, + 0x17, 0x2c, 0xdf, 0x2a, 0xee, 0x60, 0xaa, 0xfa, 0x86, 0xa5, 0xd6, 0x8f, 0x0d, 0xb8, 0x9a, 0x92, + 0xd1, 0x8e, 0x82, 0xe0, 0xc0, 0x1d, 0xcf, 0x56, 0x87, 0xec, 0x2a, 0x37, 0xc2, 0xae, 0x86, 0x8c, + 0x27, 0x3f, 0x6c, 0x3c, 0x08, 0x0a, 0x27, 0xb8, 0xcf, 0x0f, 0x16, 0x17, 0x44, 0xfc, 0xb6, 0xbe, + 0x09, 0xd7, 0x46, 0xb2, 0x79, 0x19, 0xdb, 0x61, 0xfd, 0x83, 0x01, 0xb3, 0x7b, 0xbd, 0xf0, 0x01, + 0x76, 0x09, 0xbb, 0x8b, 0xdd, 0xb1, 0xc2, 0xb2, 0xc1, 0x83, 0x99, 0x3b, 0xc7, 0xc1, 0xcc, 0x8f, + 0x50, 0xe0, 0x6b, 0x30, 0xed, 0xb6, 0x4e, 0x7d, 0x8a, 0x9d, 0xf8, 0x7c, 0x2a, 0x07, 0x24, 0xc1, + 0xdb, 0xf2, 0x94, 0x5a, 0x7f, 0x6c, 0xc0, 0x5c, 0x96, 0xe7, 0x4b, 0x88, 0xf1, 0xd2, 0x5e, 0x23, + 0x9f, 0xf1, 0x1a, 0xd6, 0xcf, 0x73, 0x30, 0x2f, 0xee, 0xbe, 0xbd, 0x5e, 0xb8, 0xcb, 0x5c, 0xd6, + 0xa5, 0xe3, 0x68, 0xf1, 0x06, 0x68, 0x8d, 0xa5, 0x22, 0x32, 0x50, 0x20, 0x1e, 0x15, 0x2d, 0x42, + 0x59, 0x72, 0xa0, 0x2d, 0xab, 0x24, 0x18, 0xa0, 0x5c, 0x6f, 0x9e, 0x1b, 0x04, 0x98, 0x38, 0x52, + 0xc7, 0x89, 0xe3, 0x96, 0xe0, 0x5d, 0x0e, 0x95, 0x3e, 0xc1, 0xeb, 0x12, 0x82, 0x43, 0x41, 0x22, + 0x5d, 0x5f, 0x55, 0x41, 0xf6, 0x28, 0x7a, 0x13, 0xe6, 0x89, 0x32, 0x3e, 0xc7, 0x3f, 0x74, 0xf8, + 0xd1, 0xc2, 0x3d, 0x9f, 0x32, 0x75, 0xd9, 0x23, 0x8d, 0xdc, 0x3a, 0x7c, 0x14, 0xb1, 0x7b, 0x1c, + 0x83, 0x56, 0x61, 0x46, 0xf8, 0x2d, 0x27, 0x7d, 0xb3, 0x4a, 0x7f, 0x38, 0x2d, 0x10, 0xbb, 0xc9, + 0xd5, 0xfa, 0x15, 0xb8, 0x4a, 0x30, 0x8d, 0x82, 0x53, 0x3f, 0x3c, 0x1a, 0x0e, 0x0f, 0x2a, 0xe2, + 0xa1, 0x66, 0x4c, 0x31, 0xe0, 0x9c, 0xac, 0xef, 0xe5, 0x60, 0x61, 0x50, 0xc7, 0x9f, 0xe9, 0xae, + 0xa3, 0x5b, 0xd0, 0x50, 0x8e, 0x2c, 0x7b, 0xd9, 0xd4, 0x25, 0x54, 0x1b, 0xf5, 0x6d, 0x28, 0xb9, + 0x1e, 0xbf, 0xc0, 0x84, 0xc2, 0x1b, 0xa9, 0x38, 0xf3, 0x1d, 0x01, 0xb6, 0x15, 0x1a, 0xad, 0x41, + 0x55, 0x2c, 0xe5, 0x87, 0x87, 0x91, 0xca, 0x05, 0x12, 0xbe, 0xb8, 0x0e, 0xb6, 0xc2, 0xc3, 0xc8, + 0x16, 0xec, 0xf0, 0x5f, 0xd6, 0x77, 0x0c, 0xb8, 0x2a, 0x34, 0xb2, 0xab, 0xa2, 0x13, 0x71, 0xd2, + 0xc6, 0x32, 0x3d, 0xed, 0x95, 0x72, 0x89, 0x57, 0x3a, 0xd7, 0x89, 0xb5, 0xfe, 0xd9, 0x80, 0x6b, + 0x23, 0x79, 0xb8, 0x84, 0xad, 0xb9, 0x0d, 0x45, 0xae, 0x0b, 0x7e, 0x18, 0xf2, 0xa3, 0x75, 0x25, + 0xf1, 0xd9, 0x1b, 0xa7, 0x90, 0xbd, 0x71, 0xac, 0xbf, 0x33, 0xa0, 0x2e, 0x0d, 0xf4, 0xc2, 0xee, + 0x05, 0xad, 0xdd, 0x7c, 0x4a, 0xbb, 0xe7, 0x33, 0x1e, 0x99, 0xe5, 0xd9, 0xa5, 0x03, 0x3f, 0x0c, + 0xa2, 0x23, 0xeb, 0xcf, 0x0c, 0x68, 0x68, 0x5e, 0x2f, 0x41, 0xc1, 0xc3, 0x3c, 0xe6, 0x47, 0xf0, + 0x68, 0x1d, 0x41, 0x7d, 0xab, 0xdd, 0x89, 0x48, 0xac, 0xc0, 0x4c, 0x60, 0x67, 0x9c, 0x23, 0xb0, + 0x1b, 0x5e, 0x28, 0x37, 0x6a, 0xa1, 0x8f, 0xa0, 0xa1, 0x17, 0x1a, 0x5f, 0xfa, 0xb9, 0xb4, 0xf4, + 0x55, 0x9d, 0xbb, 0x7d, 0xc2, 0x35, 0x1b, 0x60, 0x37, 0xec, 0x76, 0x26, 0x53, 0x97, 0x38, 0xd7, + 0x7d, 0x97, 0xf5, 0xc7, 0x85, 0x01, 0x7f, 0x6c, 0xfd, 0xc0, 0x80, 0xe9, 0x98, 0xa9, 0x5f, 0x9c, + 0xfd, 0x3e, 0x81, 0xe9, 0xbb, 0x2e, 0xf3, 0x8e, 0xc7, 0xac, 0xe1, 0x8c, 0xf2, 0x35, 0xcf, 0xaf, + 0xe2, 0xfc, 0x97, 0x01, 0x66, 0xb2, 0xda, 0x85, 0x27, 0xfb, 0x23, 0xaa, 0x32, 0x85, 0x97, 0xa8, + 0xca, 0x24, 0xba, 0x2e, 0x9e, 0xad, 0xeb, 0xf7, 0x0a, 0x95, 0xbc, 0x59, 0xb0, 0xbe, 0x09, 0x73, + 0x42, 0xb8, 0x0b, 0x0f, 0x4d, 0x47, 0xb8, 0x20, 0x8b, 0xc2, 0xfc, 0xc0, 0xe2, 0x17, 0x6f, 0x63, + 0xd6, 0xdf, 0x1b, 0x30, 0xbd, 0xeb, 0xb9, 0xe1, 0xb8, 0x49, 0xe3, 0x0d, 0xe0, 0xa9, 0xf4, 0x80, + 0xac, 0xd0, 0x76, 0x7b, 0x5a, 0xd2, 0x4c, 0x55, 0x2b, 0xff, 0xbc, 0xaa, 0x56, 0x21, 0x5d, 0xd5, + 0x4a, 0x95, 0xa1, 0x8a, 0xe9, 0x32, 0x94, 0xf5, 0x43, 0x03, 0xcc, 0x84, 0xd9, 0x5f, 0xa0, 0x2b, + 0xcd, 0xfa, 0x37, 0x03, 0x90, 0x2d, 0x42, 0x25, 0x3c, 0xae, 0x26, 0xcf, 0x65, 0x37, 0xe7, 0x73, + 0x09, 0xe8, 0x0d, 0xa8, 0xb2, 0x5e, 0x28, 0x22, 0x17, 0x99, 0xda, 0xa4, 0x57, 0xde, 0xeb, 0x85, + 0x32, 0x72, 0x61, 0xf2, 0x47, 0x92, 0x04, 0x15, 0x53, 0xd6, 0xf8, 0x04, 0x66, 0x33, 0x02, 0x5d, + 0x82, 0x2d, 0xee, 0x43, 0xf5, 0xfe, 0xc6, 0x38, 0xaa, 0xe3, 0xb9, 0xb5, 0x7b, 0x88, 0x9d, 0x4e, + 0xe4, 0x87, 0x4c, 0xe9, 0xad, 0xca, 0x21, 0x3b, 0x1c, 0x60, 0x1d, 0x03, 0xf0, 0x79, 0x2f, 0x41, + 0x82, 0x1f, 0x1a, 0x80, 0x36, 0x71, 0x80, 0x19, 0xb6, 0xdd, 0xf0, 0x08, 0x4f, 0xbc, 0x0a, 0x9c, + 0x3a, 0x19, 0xf9, 0xc1, 0x02, 0x6d, 0x18, 0x31, 0xff, 0x50, 0x55, 0x7c, 0x65, 0x71, 0x1b, 0x24, + 0xe8, 0x71, 0x18, 0xf4, 0xad, 0x8f, 0x61, 0x36, 0xc3, 0xd8, 0xa4, 0x2f, 0xec, 0xaf, 0x41, 0xdd, + 0x76, 0x9f, 0x4e, 0xec, 0x35, 0x42, 0x03, 0x72, 0xde, 0xa1, 0x90, 0xb1, 0x6a, 0xe7, 0xbc, 0x43, + 0xeb, 0x8f, 0x0c, 0x68, 0xe8, 0xf9, 0x27, 0xcc, 0xfa, 0x18, 0x2f, 0x0b, 0xac, 0x16, 0x20, 0xdb, + 0x7d, 0x3a, 0xe9, 0x5b, 0x77, 0x50, 0xe8, 0x08, 0x66, 0x33, 0xab, 0x5c, 0xf4, 0x6d, 0x6b, 0xfd, + 0xa5, 0x21, 0x76, 0x71, 0xa7, 0x3b, 0xa1, 0x5d, 0x1c, 0xad, 0x59, 0x29, 0x66, 0x41, 0x8b, 0xc9, + 0x9f, 0x4b, 0x2a, 0x7f, 0xfc, 0x27, 0x37, 0xf3, 0xc3, 0x88, 0x38, 0x9e, 0x4b, 0x55, 0xaa, 0x5b, + 0x3a, 0x8c, 0xc8, 0x86, 0x4b, 0x79, 0xc4, 0xa9, 0xf9, 0x9b, 0xb4, 0x01, 0xff, 0xb5, 0x91, 0xec, + 0xe9, 0x98, 0x0a, 0x38, 0x67, 0x4c, 0x33, 0xb0, 0xcd, 0x5a, 0xfe, 0xc2, 0x48, 0xf9, 0x8b, 0x19, + 0xf9, 0x3f, 0x4e, 0x2c, 0xe2, 0x42, 0x94, 0xd0, 0x07, 0xd3, 0x76, 0x9f, 0x2a, 0x47, 0x71, 0x11, + 0x07, 0x39, 0x2d, 0x5a, 0x21, 0x23, 0xda, 0xef, 0xc0, 0x4c, 0x6a, 0xe9, 0x49, 0x0b, 0xf6, 0x6d, + 0x03, 0xe6, 0xb5, 0xe6, 0xc6, 0x17, 0xef, 0x1c, 0x87, 0xf6, 0xf9, 0x02, 0xba, 0xb0, 0x30, 0xc8, + 0xc1, 0xa4, 0xa5, 0xfc, 0x57, 0xe9, 0x25, 0x2f, 0xf1, 0x05, 0x64, 0xfa, 0x35, 0x63, 0x21, 0xfb, + 0x9a, 0x51, 0x2a, 0xa6, 0x18, 0x2b, 0xe6, 0xe5, 0x5f, 0x3b, 0x5a, 0x47, 0x30, 0x1d, 0x8b, 0x33, + 0xbe, 0xae, 0x6e, 0x42, 0xfe, 0xe4, 0xf4, 0xb9, 0x87, 0x92, 0xe3, 0xac, 0xef, 0x4a, 0xf3, 0xf8, + 0x4c, 0xae, 0xee, 0x01, 0x77, 0xa8, 0xec, 0xe4, 0x42, 0x2f, 0xeb, 0x9f, 0x19, 0x89, 0x1f, 0x19, + 0xd7, 0x58, 0x5e, 0x87, 0x12, 0xe1, 0xdc, 0x8d, 0x2c, 0x69, 0x4b, 0xbe, 0x15, 0x01, 0x0f, 0xcf, + 0xb0, 0xeb, 0x1d, 0x3b, 0x69, 0xfb, 0xa9, 0x72, 0xc8, 0xf6, 0xc4, 0x6c, 0xc8, 0x0a, 0x60, 0x2e, + 0x2b, 0xd1, 0x85, 0xda, 0xcb, 0xb7, 0x60, 0xe9, 0x83, 0x90, 0x07, 0x98, 0x9b, 0x98, 0x32, 0x12, + 0xf5, 0x2f, 0xd7, 0x64, 0x2c, 0x0c, 0x57, 0x47, 0x2d, 0x3f, 0x69, 0x33, 0xf9, 0x3a, 0x5c, 0xb3, + 0xf1, 0x91, 0x4f, 0x19, 0x26, 0x3c, 0x07, 0x78, 0x7c, 0x40, 0x31, 0x39, 0xc5, 0x64, 0x1c, 0x39, + 0xe7, 0xa1, 0xc4, 0xd3, 0x44, 0x46, 0x55, 0x74, 0x5e, 0x6c, 0xbb, 0xbd, 0x3d, 0x6a, 0xbd, 0x05, + 0xaf, 0x8c, 0x5e, 0x41, 0x89, 0x12, 0xf3, 0x65, 0x64, 0x63, 0xcd, 0xa6, 0xa8, 0x71, 0x5e, 0x10, + 0x53, 0x5d, 0x58, 0x1a, 0x31, 0xfd, 0x59, 0x1c, 0x71, 0x13, 0xf6, 0xa9, 0xe3, 0x05, 0xd8, 0x95, + 0x69, 0x5b, 0xc5, 0x2e, 0xfb, 0x54, 0x94, 0x8a, 0xce, 0x9f, 0x42, 0x7e, 0x0c, 0x4b, 0x36, 0x6e, + 0x47, 0x32, 0xdf, 0xba, 0x00, 0xb1, 0xd6, 0xe1, 0xea, 0xa8, 0xf9, 0xcf, 0xd4, 0xf4, 0xf7, 0x0c, + 0x58, 0xdc, 0x39, 0xee, 0x53, 0xdf, 0x73, 0x83, 0x4f, 0x53, 0x25, 0x18, 0xcd, 0xd2, 0x18, 0xb5, + 0x01, 0xeb, 0x23, 0x68, 0x0e, 0x33, 0x74, 0xe6, 0xde, 0xc4, 0x1b, 0x90, 0x7b, 0xc1, 0x06, 0x7c, + 0xdb, 0x00, 0xb4, 0xdb, 0x09, 0x7c, 0x66, 0x8b, 0x93, 0x31, 0x5e, 0x35, 0xa4, 0x4a, 0xf9, 0x0c, + 0xc9, 0x71, 0xbe, 0x9b, 0x6b, 0x1a, 0x76, 0x45, 0x00, 0xb9, 0x50, 0x3c, 0x53, 0xd5, 0x04, 0xba, + 0xfa, 0x53, 0xd5, 0x58, 0x6a, 0xfd, 0x8b, 0x01, 0xb3, 0x19, 0x16, 0xc6, 0x3f, 0xd2, 0xaf, 0x41, + 0x21, 0xc0, 0x87, 0x4c, 0xa5, 0xac, 0x8d, 0x35, 0xd5, 0x37, 0x26, 0x27, 0x16, 0x5c, 0x09, 0x3c, + 0x5a, 0x81, 0x22, 0xf1, 0x8f, 0x8e, 0x99, 0x6a, 0xa7, 0x19, 0x45, 0x28, 0x09, 0xd0, 0x0a, 0x77, + 0xbe, 0x47, 0xa2, 0x88, 0x2c, 0x4b, 0x0a, 0x03, 0xb4, 0xb6, 0x46, 0x5b, 0xbf, 0x6f, 0x80, 0x69, + 0x63, 0xb7, 0xb5, 0x15, 0xb6, 0x70, 0x6f, 0x1c, 0x3d, 0x2e, 0x41, 0x25, 0x7e, 0x73, 0x26, 0x2d, + 0xa6, 0x4c, 0xd5, 0x3b, 0xb3, 0xe4, 0xde, 0xc9, 0xbf, 0xe0, 0xde, 0xb1, 0xfe, 0xd4, 0x80, 0x99, + 0x14, 0x1b, 0xe3, 0xeb, 0xf2, 0x55, 0x00, 0x82, 0xdd, 0x96, 0xe3, 0xf3, 0x89, 0x74, 0x7d, 0x81, + 0xe8, 0x99, 0x39, 0x4b, 0xdc, 0x82, 0x70, 0x6b, 0xa8, 0x25, 0x29, 0x36, 0x31, 0x45, 0x60, 0x7d, + 0x00, 0xb5, 0x7d, 0x4c, 0x74, 0xcd, 0x1d, 0x5d, 0x87, 0x5c, 0xd4, 0x11, 0x1c, 0x34, 0xd6, 0x1b, + 0xf1, 0x53, 0xfb, 0x98, 0x3c, 0xee, 0xd8, 0xb9, 0xa8, 0x73, 0xde, 0x94, 0xca, 0xfa, 0x32, 0x54, + 0xf6, 0x31, 0x11, 0xdd, 0x08, 0x09, 0x85, 0x91, 0x4e, 0xba, 0x52, 0x15, 0xdd, 0x5c, 0xb6, 0xa2, + 0xbb, 0x2c, 0x9e, 0x1d, 0xb8, 0x07, 0x32, 0x5e, 0x20, 0x82, 0xea, 0x3e, 0x26, 0xf2, 0xfe, 0x4b, + 0x6a, 0x21, 0xc6, 0x80, 0xac, 0x7a, 0x12, 0x7d, 0xee, 0x86, 0x79, 0xbf, 0x9d, 0xe6, 0x7d, 0xe0, + 0x51, 0xc1, 0xbb, 0x16, 0x87, 0x40, 0x7d, 0x1f, 0x93, 0x89, 0x15, 0x13, 0xce, 0xf5, 0xe6, 0xec, + 0x1f, 0x0d, 0x68, 0xe8, 0x45, 0x2f, 0xa0, 0x52, 0x34, 0xa8, 0x9d, 0xf3, 0xea, 0xe2, 0xec, 0x3a, + 0xc4, 0x53, 0x40, 0xfb, 0x98, 0x7c, 0x9a, 0x3a, 0x44, 0xac, 0xad, 0xfc, 0x4b, 0x69, 0x8b, 0xc0, + 0x6c, 0x66, 0xe1, 0xf1, 0x35, 0xb6, 0x92, 0x4d, 0x9a, 0x51, 0x5a, 0x11, 0xd9, 0xea, 0xc4, 0xb7, + 0x84, 0x55, 0x3c, 0x1c, 0x2f, 0x37, 0x7f, 0x0d, 0xf2, 0xed, 0xae, 0xf6, 0x86, 0x73, 0xe9, 0x45, + 0xe2, 0x17, 0x60, 0x9c, 0xe0, 0x8c, 0x37, 0x1f, 0x81, 0xb0, 0x8f, 0x87, 0xdd, 0x4b, 0xb1, 0x0f, + 0xee, 0x42, 0xe3, 0xad, 0x1d, 0x53, 0xe4, 0x15, 0x28, 0xb4, 0xbb, 0x4c, 0x2b, 0x76, 0xb4, 0xcc, + 0x82, 0xe2, 0x0c, 0xa1, 0x9f, 0x24, 0xfb, 0x7c, 0x59, 0x92, 0x3f, 0x93, 0x07, 0xf1, 0x42, 0x92, + 0xd8, 0xe7, 0x26, 0x61, 0xa3, 0x5f, 0x44, 0x8c, 0xd5, 0x44, 0x3b, 0x74, 0x7e, 0xca, 0x23, 0xce, + 0x4f, 0x08, 0xd3, 0xb1, 0x8c, 0x97, 0x71, 0x76, 0xfa, 0x30, 0xbf, 0x8f, 0xc9, 0x67, 0x91, 0xdf, + 0x5a, 0x0c, 0x16, 0x06, 0x97, 0xbe, 0x04, 0x2b, 0xda, 0x85, 0xd9, 0x87, 0xa7, 0x9e, 0x77, 0x1f, + 0xb3, 0xbb, 0x7d, 0x1e, 0x18, 0x4c, 0xe2, 0x22, 0xb1, 0xfe, 0xd0, 0x80, 0xb9, 0xec, 0xac, 0x93, + 0xae, 0x45, 0xdf, 0x82, 0x82, 0x68, 0x37, 0x19, 0xbc, 0x15, 0xf8, 0xaa, 0x22, 0x90, 0x10, 0x68, + 0xeb, 0xeb, 0xb0, 0x18, 0xf3, 0xa1, 0x9a, 0x89, 0x26, 0x1b, 0x66, 0x59, 0x7f, 0x61, 0x40, 0x73, + 0x78, 0x89, 0x49, 0x8b, 0xab, 0x54, 0x9c, 0x4f, 0xee, 0x6a, 0xad, 0x80, 0xc2, 0xd9, 0x0a, 0xf8, + 0x7e, 0x11, 0xca, 0x1b, 0x89, 0x59, 0x2a, 0x6e, 0xfc, 0x96, 0x60, 0xa5, 0x60, 0x57, 0x24, 0x60, + 0xab, 0x85, 0x7e, 0x2d, 0x61, 0xb5, 0x13, 0x79, 0xc7, 0xca, 0x6e, 0x66, 0xb3, 0x91, 0xeb, 0x3d, + 0x8e, 0x8a, 0xf9, 0xe5, 0x03, 0xb4, 0x0c, 0x85, 0x0e, 0xc6, 0xba, 0xc9, 0x7c, 0x4a, 0xd3, 0xef, + 0x60, 0x4c, 0x6c, 0x81, 0x41, 0x08, 0x0a, 0x0c, 0x93, 0xb6, 0xaa, 0x5b, 0x8b, 0xdf, 0xe8, 0x0e, + 0x54, 0x3a, 0xc4, 0x8f, 0x88, 0xcf, 0xfa, 0xc2, 0x2d, 0x34, 0xd6, 0x67, 0x53, 0xda, 0x6f, 0xb7, + 0xdd, 0xb0, 0xb5, 0x43, 0x7c, 0x3b, 0x26, 0x42, 0x6f, 0xc3, 0xb4, 0x4f, 0xa3, 0x40, 0x38, 0x63, + 0x27, 0xc0, 0xa7, 0x38, 0x10, 0xee, 0xa2, 0xb1, 0xbe, 0x18, 0x3f, 0xb7, 0xa5, 0xf1, 0xdb, 0x1c, + 0x6d, 0x37, 0xfc, 0xcc, 0x18, 0xfd, 0x2a, 0x34, 0x44, 0x7c, 0xe0, 0x07, 0x81, 0xe3, 0xb9, 0xde, + 0x31, 0x56, 0x9d, 0x5b, 0x53, 0x3c, 0x48, 0xf0, 0x83, 0x60, 0x83, 0xc3, 0xc4, 0x4e, 0xf7, 0x43, + 0xcf, 0x09, 0xa2, 0x23, 0xd5, 0xdf, 0x5a, 0xe6, 0xe3, 0xed, 0xe8, 0x08, 0xad, 0x80, 0x49, 0xb0, + 0x17, 0x91, 0x96, 0x68, 0x8e, 0x75, 0x28, 0x73, 0x99, 0x6a, 0x72, 0x6d, 0x48, 0xf8, 0x9e, 0xdf, + 0xc6, 0xbb, 0xcc, 0x65, 0x29, 0x4a, 0xea, 0xb9, 0xa1, 0xa4, 0xac, 0xa5, 0x29, 0xb9, 0x3f, 0x13, + 0x94, 0x37, 0xb9, 0xd6, 0x3b, 0x81, 0xef, 0xb9, 0x0e, 0x0f, 0x93, 0x45, 0xbb, 0x6b, 0x85, 0x2b, + 0x58, 0xc0, 0x78, 0x4c, 0x8e, 0x6e, 0x41, 0x43, 0xf6, 0x96, 0xe1, 0x96, 0x23, 0xf3, 0xb3, 0xfa, + 0x72, 0x7e, 0xa5, 0x60, 0xd7, 0x35, 0x54, 0x34, 0x2e, 0xa1, 0xdf, 0x84, 0x25, 0x9e, 0x39, 0xe2, + 0x1e, 0xf6, 0xba, 0x42, 0x49, 0xad, 0x2e, 0x91, 0xda, 0x6a, 0xeb, 0x5e, 0xee, 0x85, 0xb6, 0xdb, + 0xbb, 0xa7, 0xf1, 0x9b, 0x0a, 0xfd, 0x50, 0x34, 0x4c, 0xb9, 0x9d, 0x4e, 0xe0, 0x63, 0x1d, 0xb8, + 0x4f, 0x4b, 0x47, 0xac, 0x80, 0x32, 0x76, 0x5f, 0x84, 0x32, 0x73, 0xe9, 0x09, 0x37, 0x1d, 0x53, + 0xf6, 0xf0, 0xf1, 0xe1, 0x56, 0x4b, 0x64, 0x6a, 0xcc, 0x0d, 0xb0, 0x14, 0x60, 0x46, 0x08, 0x50, + 0x15, 0x10, 0xce, 0xfe, 0x7b, 0x85, 0x4a, 0xc1, 0x2c, 0x72, 0x89, 0xdc, 0x96, 0xf3, 0xa4, 0x1b, + 0x91, 0x6e, 0xdb, 0xfa, 0xef, 0x1c, 0x54, 0x74, 0xc0, 0x3f, 0xd4, 0x82, 0x69, 0x0c, 0xb7, 0x60, + 0xde, 0x84, 0x29, 0xd1, 0x5f, 0x96, 0x8d, 0xcb, 0x6b, 0x1c, 0xa6, 0xdf, 0xe3, 0x0e, 0x9f, 0x8f, + 0x74, 0xff, 0x5b, 0x21, 0xdb, 0xff, 0x96, 0xee, 0xdb, 0x2f, 0x66, 0xfb, 0xf6, 0x57, 0x54, 0x2b, + 0x1b, 0xeb, 0x77, 0xb0, 0x32, 0xcc, 0x5a, 0x6c, 0x60, 0x8f, 0x3b, 0xb2, 0x89, 0x6d, 0xaf, 0xdf, + 0xc1, 0xe8, 0x73, 0x80, 0x04, 0x65, 0xb6, 0x71, 0x56, 0x5e, 0x61, 0xd3, 0x1c, 0xf3, 0x6e, 0xaa, + 0x79, 0x76, 0x54, 0x1b, 0x7f, 0x65, 0x64, 0x1b, 0xff, 0x50, 0x87, 0x74, 0x75, 0xb8, 0x43, 0x7a, + 0xa0, 0xd5, 0x1f, 0x86, 0x5a, 0xfd, 0xad, 0x7f, 0xcf, 0x43, 0x45, 0xbf, 0x72, 0x4d, 0x65, 0x5d, + 0xc6, 0x0b, 0xb2, 0x2e, 0xf4, 0x0a, 0xf7, 0x10, 0x8c, 0xf4, 0xdd, 0x83, 0x00, 0x2b, 0x07, 0x94, + 0x00, 0xb8, 0x6b, 0x72, 0x0f, 0x22, 0xc2, 0x54, 0x11, 0x5f, 0x0e, 0xd0, 0x3a, 0x54, 0xbc, 0x28, + 0x3c, 0x0c, 0x7c, 0x8f, 0x0d, 0xb5, 0x9c, 0x7c, 0x48, 0x7c, 0x86, 0x37, 0x14, 0xd6, 0x8e, 0xe9, + 0xd0, 0x97, 0xa1, 0xee, 0x06, 0xdc, 0x24, 0xfa, 0xaa, 0x51, 0x53, 0x76, 0x9d, 0xcc, 0x27, 0x1d, + 0x86, 0x12, 0x2b, 0x7a, 0x35, 0xed, 0x29, 0x37, 0x35, 0x42, 0x6f, 0x40, 0x45, 0x7f, 0x96, 0x35, + 0xd4, 0x6c, 0xb8, 0xa9, 0x10, 0x76, 0x4c, 0x82, 0x36, 0x61, 0x26, 0x56, 0xa6, 0x83, 0x7b, 0x1d, + 0x9f, 0xe0, 0x96, 0xd8, 0xa6, 0xda, 0x7a, 0x33, 0xe3, 0x72, 0xb8, 0x6a, 0xef, 0x49, 0xbc, 0x3d, + 0xed, 0x65, 0x01, 0xe8, 0x37, 0xa0, 0xce, 0x4d, 0x26, 0x49, 0x30, 0x2a, 0x03, 0xf1, 0xf1, 0x5e, + 0x2f, 0x7c, 0xa4, 0x92, 0x0d, 0xbb, 0xc6, 0x92, 0x01, 0x7a, 0x00, 0xb3, 0xc9, 0xfa, 0x2c, 0x8a, + 0x9c, 0xc0, 0x25, 0x47, 0xb2, 0x77, 0xbe, 0xb6, 0xbe, 0x34, 0xc4, 0xc1, 0x5e, 0x14, 0x6d, 0x73, + 0x02, 0xdb, 0xf4, 0x06, 0x20, 0xd6, 0x8f, 0x0d, 0xa8, 0x67, 0x14, 0x9a, 0xb9, 0x96, 0x8c, 0x6c, + 0xf6, 0x7f, 0x03, 0x6a, 0x5a, 0xdb, 0xc9, 0xa5, 0x05, 0x1a, 0xb4, 0x47, 0x47, 0x9c, 0x98, 0x26, + 0x94, 0xd5, 0xa9, 0x53, 0x4d, 0xec, 0x7a, 0x88, 0x3e, 0x0f, 0x28, 0x9e, 0x2c, 0xb1, 0x4c, 0x79, + 0x74, 0x4c, 0x8d, 0x89, 0xbf, 0xb2, 0x58, 0x86, 0xa9, 0xf4, 0xf6, 0xe9, 0x95, 0x8c, 0x24, 0x3c, + 0xf8, 0x2b, 0x03, 0x2a, 0x7a, 0xab, 0xd2, 0xcd, 0xc1, 0x46, 0xa6, 0x39, 0x58, 0x9f, 0xe0, 0x24, + 0xb6, 0x10, 0x84, 0x3c, 0x86, 0x5a, 0x85, 0x19, 0xbd, 0xc1, 0x1c, 0xed, 0x1c, 0xbb, 0xf4, 0x58, + 0x45, 0xe4, 0xd3, 0x1a, 0xf1, 0x3e, 0xee, 0x3f, 0x70, 0xe9, 0x31, 0xfa, 0x12, 0x80, 0xf8, 0xa2, + 0xc1, 0x3b, 0x76, 0xfd, 0x50, 0x15, 0x64, 0x16, 0xd6, 0xe2, 0x2f, 0xfb, 0x3e, 0x74, 0x7d, 0xf6, + 0x6e, 0x44, 0xee, 0x85, 0x8c, 0xf4, 0xed, 0x2a, 0xa7, 0xdc, 0xe0, 0x84, 0xd6, 0x27, 0x06, 0x4c, + 0x0f, 0x98, 0xc5, 0x59, 0xfa, 0x5e, 0x83, 0x59, 0x97, 0x31, 0xdc, 0xee, 0x30, 0xdc, 0x4a, 0xe9, + 0x48, 0xea, 0x7d, 0x26, 0x46, 0xc5, 0x67, 0x78, 0x58, 0xfd, 0x43, 0x27, 0xbf, 0x30, 0x74, 0xf2, + 0xad, 0x2d, 0xa8, 0xa5, 0x0c, 0xed, 0x05, 0xfb, 0x7f, 0x66, 0x4f, 0xb6, 0x75, 0x07, 0xcc, 0x41, + 0x9b, 0xcb, 0xf6, 0x9b, 0x1a, 0x03, 0xfd, 0xa6, 0x3f, 0x32, 0x00, 0xf8, 0x0d, 0x27, 0x7b, 0xc6, + 0xd0, 0xeb, 0x30, 0x23, 0xd4, 0xfa, 0xd4, 0x0d, 0x02, 0x79, 0x21, 0xb6, 0xe5, 0x33, 0x79, 0xbb, + 0xc1, 0x11, 0x1f, 0xba, 0x41, 0xc0, 0xc9, 0x1f, 0x52, 0x74, 0x07, 0xe6, 0x3a, 0x24, 0xf2, 0x30, + 0xa5, 0x59, 0xea, 0x9c, 0xa0, 0x9e, 0x51, 0xb8, 0xd4, 0x03, 0x6b, 0x30, 0x77, 0x72, 0x2a, 0xee, + 0x93, 0xec, 0x03, 0x79, 0xf1, 0x80, 0x79, 0x72, 0xca, 0x6f, 0x96, 0x84, 0xde, 0xfa, 0x1a, 0x54, + 0xf8, 0x8d, 0x2a, 0xee, 0x93, 0x39, 0x28, 0xb2, 0x88, 0xb9, 0x81, 0xe2, 0x45, 0x0e, 0xb8, 0x63, + 0x53, 0xcb, 0xe0, 0x96, 0x5a, 0x37, 0x01, 0xc4, 0x65, 0xab, 0x83, 0x3e, 0xc3, 0x7a, 0x15, 0x51, + 0xb6, 0xba, 0xcb, 0x01, 0xd6, 0xef, 0x19, 0x00, 0x7c, 0x7e, 0x25, 0xf9, 0x6d, 0x28, 0x8a, 0x2f, + 0xa0, 0x86, 0xdc, 0xa9, 0xe6, 0xc1, 0x96, 0x78, 0x1e, 0xa2, 0xc5, 0x5f, 0x15, 0x8c, 0xa4, 0x13, + 0x68, 0x4e, 0xd6, 0x72, 0x99, 0x3b, 0x14, 0xca, 0x26, 0x64, 0x1c, 0x6d, 0x7d, 0x92, 0x97, 0x5f, + 0x0e, 0x4a, 0x2e, 0xf6, 0xd7, 0xd1, 0x1b, 0x80, 0x62, 0x11, 0xf4, 0xdd, 0xa8, 0xb7, 0x6d, 0x26, + 0xc6, 0xa8, 0x1b, 0x52, 0xf4, 0xaa, 0x0a, 0x5d, 0x24, 0xa4, 0xaa, 0x57, 0x55, 0x40, 0x63, 0xb2, + 0xaf, 0xc2, 0x2b, 0x84, 0x07, 0x14, 0xad, 0x03, 0xa7, 0x25, 0x52, 0x11, 0x87, 0x9e, 0xf8, 0x9d, + 0x8e, 0xb0, 0xea, 0x6e, 0xc8, 0xd4, 0x29, 0x5b, 0x52, 0x34, 0x32, 0x5b, 0xd9, 0x95, 0x14, 0x1b, + 0x9c, 0x80, 0x07, 0x22, 0x7a, 0x02, 0x7e, 0x34, 0xb3, 0x4f, 0x4b, 0x9b, 0x5e, 0x50, 0x04, 0xef, + 0xe3, 0x7e, 0xe6, 0xd1, 0xb7, 0xe1, 0x55, 0xfd, 0xe8, 0x81, 0x38, 0xdb, 0x22, 0x4e, 0x73, 0x8e, + 0xf9, 0xe9, 0x15, 0x8f, 0x17, 0x33, 0x8b, 0xdf, 0xe5, 0x34, 0x22, 0x6c, 0x7b, 0xe0, 0x33, 0x39, + 0xc3, 0xaf, 0x43, 0x33, 0x3b, 0x83, 0xd8, 0x57, 0xf9, 0xb0, 0xfc, 0x22, 0x6a, 0x3e, 0xfd, 0x30, + 0xb7, 0x23, 0xf9, 0xe0, 0x97, 0x60, 0x71, 0xc4, 0x83, 0xdc, 0x20, 0xd4, 0x9d, 0x3e, 0x37, 0xf8, + 0x1c, 0xb7, 0x0d, 0xeb, 0x0f, 0x0c, 0xa8, 0xa5, 0xfa, 0x2a, 0xd1, 0x5b, 0x50, 0x13, 0xc6, 0x2a, + 0xdb, 0x30, 0x95, 0x85, 0x24, 0xa1, 0x6d, 0x72, 0x7e, 0x6c, 0x60, 0xc9, 0x59, 0x7a, 0x0b, 0x6a, + 0x22, 0x50, 0x54, 0x4f, 0xe5, 0x06, 0x9e, 0x4a, 0x76, 0xdd, 0x06, 0x1a, 0xff, 0x96, 0x9d, 0x98, + 0x32, 0xbe, 0xb2, 0x7e, 0xd7, 0x80, 0x7a, 0xa6, 0xbf, 0x73, 0x4c, 0x4e, 0x7e, 0x0b, 0x1a, 0x29, + 0x4e, 0x9c, 0xd3, 0x75, 0xc5, 0xcc, 0xfc, 0x08, 0x66, 0xf6, 0xd7, 0xed, 0x29, 0x9a, 0x1a, 0x59, + 0x1f, 0x41, 0xe9, 0x45, 0xb5, 0xcf, 0xc1, 0xbe, 0xc1, 0xf3, 0xd6, 0x6d, 0xbf, 0x63, 0x40, 0x25, + 0x2e, 0x06, 0x5f, 0x4b, 0x15, 0x83, 0x33, 0xd1, 0xd9, 0x4b, 0x54, 0x82, 0xd1, 0x17, 0xa0, 0xea, + 0x52, 0x8a, 0x09, 0xd3, 0x2d, 0xec, 0x8d, 0x54, 0x59, 0xe0, 0x1d, 0x8d, 0xb1, 0x13, 0x22, 0xbe, + 0xd7, 0x55, 0x9e, 0x5d, 0x89, 0x3b, 0x18, 0xdd, 0x80, 0x82, 0x08, 0x12, 0x47, 0xb0, 0x21, 0x10, + 0x67, 0x95, 0xe6, 0xcf, 0xfc, 0x92, 0xec, 0x06, 0xd4, 0xe8, 0x71, 0x44, 0x98, 0x93, 0xfe, 0x9e, + 0x0c, 0x04, 0x48, 0xd4, 0x3b, 0xad, 0xaf, 0x48, 0x36, 0x64, 0x11, 0xfb, 0x8c, 0x2b, 0x20, 0x96, + 0x3b, 0x37, 0xa4, 0xc9, 0x53, 0x4f, 0x7e, 0xc1, 0xfa, 0x69, 0x84, 0x48, 0x85, 0x0b, 0xf9, 0x6c, + 0xb8, 0xf0, 0x42, 0x09, 0xbe, 0xab, 0x78, 0x10, 0x0e, 0x5b, 0x7b, 0x49, 0x63, 0x44, 0x22, 0x2b, + 0xde, 0x5a, 0x49, 0x2f, 0xb9, 0x0a, 0x25, 0xe1, 0x55, 0x87, 0x6b, 0x38, 0xf1, 0x9e, 0xd8, 0x8a, + 0x82, 0xd3, 0xaa, 0xcf, 0xee, 0xf2, 0x23, 0x68, 0x65, 0xd5, 0x58, 0x51, 0x58, 0x5f, 0x84, 0xb2, + 0xea, 0xf3, 0x14, 0xfd, 0x45, 0xbd, 0x50, 0xa9, 0x91, 0xff, 0x44, 0x0b, 0x50, 0xa2, 0xe2, 0x93, + 0x1d, 0x25, 0xbc, 0x1a, 0x59, 0x6f, 0x8b, 0xf0, 0x5a, 0x14, 0x69, 0xb2, 0xc5, 0x1e, 0xe3, 0xf9, + 0xc5, 0x9e, 0x5c, 0xa6, 0xd8, 0xf3, 0x13, 0x03, 0x60, 0x1b, 0xbb, 0x2d, 0x4c, 0xc4, 0xd2, 0x67, + 0xa6, 0xe6, 0x8b, 0x50, 0xe6, 0x89, 0x34, 0x47, 0x29, 0x36, 0xf8, 0x70, 0xab, 0x15, 0x67, 0xd6, + 0xf9, 0x54, 0x66, 0x3d, 0x98, 0xc7, 0x17, 0xce, 0x99, 0xc7, 0xbf, 0xa9, 0xee, 0x40, 0x2e, 0x21, + 0x56, 0xf1, 0x78, 0xa2, 0x37, 0xee, 0xf0, 0x78, 0xc2, 0x8a, 0xe5, 0xbd, 0x28, 0x7e, 0x5a, 0x5b, + 0x50, 0x8d, 0xe1, 0xc3, 0x49, 0xa4, 0x31, 0x3a, 0x89, 0x14, 0xfd, 0xa7, 0x2c, 0x51, 0xa8, 0x7b, + 0x88, 0xf7, 0xa8, 0xb5, 0x0b, 0x48, 0xbe, 0x4a, 0x16, 0x2a, 0xd1, 0x25, 0x9a, 0x37, 0x92, 0x17, + 0x69, 0xf2, 0x6b, 0x8c, 0xc4, 0x7f, 0x25, 0xba, 0x8b, 0xdf, 0xa6, 0xa1, 0x06, 0xe4, 0xe2, 0x89, + 0x73, 0x8c, 0x5a, 0x5f, 0x85, 0xd9, 0xcc, 0xa4, 0xaa, 0x28, 0xd3, 0xcc, 0xce, 0x5a, 0x78, 0xfe, + 0x04, 0x9b, 0x80, 0x76, 0x59, 0x44, 0xf0, 0x2e, 0x67, 0x72, 0x57, 0x73, 0xb5, 0x06, 0x55, 0x7e, + 0xb1, 0x89, 0x77, 0x67, 0xa3, 0x1c, 0x9c, 0xac, 0xdd, 0x55, 0x4e, 0xd4, 0x2f, 0x6b, 0x0d, 0x66, + 0x33, 0xb3, 0x28, 0x36, 0x52, 0xba, 0x30, 0x32, 0xba, 0xf0, 0x44, 0xcf, 0xc9, 0x7d, 0xcc, 0x0d, + 0x68, 0x6f, 0x6f, 0xfb, 0x62, 0xfa, 0x44, 0xff, 0xc4, 0x10, 0x7d, 0x20, 0xa9, 0x55, 0x2e, 0xa0, + 0x64, 0x95, 0x7c, 0x7b, 0x26, 0xba, 0xf5, 0xce, 0x7c, 0x43, 0xf3, 0x9f, 0xb2, 0xa5, 0x72, 0xe3, + 0x9d, 0xdd, 0x8b, 0x6c, 0xa9, 0xfc, 0x3c, 0x8f, 0x99, 0xf0, 0xa9, 0x1f, 0x75, 0x69, 0xea, 0x33, + 0x41, 0xc9, 0x8b, 0xa9, 0x31, 0xf1, 0x47, 0x82, 0xb7, 0xa0, 0x11, 0x53, 0xcb, 0xc9, 0x64, 0x9b, + 0x7d, 0x5d, 0x43, 0xf7, 0x53, 0x7d, 0x9a, 0xa5, 0xc1, 0x3e, 0xc5, 0x72, 0x2c, 0xb9, 0xf5, 0x53, + 0xd9, 0x6f, 0x26, 0x84, 0x9b, 0xb4, 0x9e, 0x9b, 0x50, 0xa6, 0x5d, 0xcf, 0xc3, 0xea, 0xad, 0x6a, + 0xc5, 0xd6, 0xc3, 0x0b, 0x11, 0xd6, 0xda, 0x84, 0x85, 0xfb, 0x58, 0x7c, 0x2b, 0xce, 0x33, 0x27, + 0x71, 0x00, 0x5f, 0x7e, 0xbf, 0xac, 0x1f, 0x18, 0xb0, 0x38, 0x34, 0xcd, 0xa4, 0x35, 0xf3, 0x05, + 0xee, 0x7c, 0x99, 0xa8, 0x91, 0xe4, 0xcf, 0x4c, 0xfb, 0x34, 0xd9, 0xea, 0x0d, 0x28, 0x8a, 0x77, + 0xca, 0x08, 0xa0, 0xb4, 0x8f, 0xc9, 0x4e, 0x97, 0x99, 0x57, 0xd4, 0xef, 0x4d, 0x1c, 0x98, 0xc6, + 0xea, 0xe7, 0x00, 0x92, 0xf2, 0x24, 0xc7, 0x3c, 0x8a, 0x48, 0xdb, 0x0d, 0xcc, 0x2b, 0xa8, 0x0c, + 0xf9, 0xed, 0xe8, 0xa9, 0x69, 0xa0, 0x0a, 0x14, 0x1e, 0xf8, 0x47, 0xc7, 0x66, 0x6e, 0x75, 0x19, + 0x1a, 0xd9, 0x9a, 0x24, 0x2a, 0x41, 0x6e, 0x77, 0xcb, 0xbc, 0xc2, 0xff, 0xda, 0x1b, 0xa6, 0xb1, + 0xea, 0x41, 0xee, 0x71, 0x87, 0x3f, 0x2a, 0x57, 0x2a, 0x43, 0x5e, 0x2c, 0xc3, 0xe7, 0xe0, 0xaa, + 0x31, 0x73, 0x68, 0x0a, 0x2a, 0xfa, 0x33, 0x17, 0x33, 0xcf, 0x17, 0xdc, 0x0a, 0x79, 0x3c, 0x62, + 0x16, 0xd0, 0x2c, 0x4c, 0x0f, 0x7c, 0x6a, 0x6a, 0x16, 0x11, 0x82, 0x86, 0x70, 0x79, 0x7a, 0x57, + 0xa9, 0x59, 0x5a, 0x5d, 0x83, 0x6a, 0x1c, 0xcf, 0xf0, 0x99, 0x1f, 0x45, 0x21, 0x36, 0xaf, 0xa0, + 0x2a, 0x14, 0x05, 0x89, 0x69, 0xf0, 0x45, 0xf4, 0x03, 0x66, 0x6e, 0xf5, 0xcf, 0x0d, 0x28, 0xc9, + 0x2f, 0x3c, 0x25, 0x42, 0xfe, 0x36, 0xaf, 0xa0, 0x79, 0x98, 0xd9, 0xdb, 0xdb, 0x96, 0xc9, 0x70, + 0xcc, 0x94, 0x81, 0x9a, 0x30, 0xc7, 0x57, 0xd7, 0x33, 0xc4, 0x98, 0x1c, 0x7f, 0xe0, 0x61, 0x9c, + 0xbd, 0xee, 0xee, 0x74, 0xe9, 0x31, 0x6e, 0x99, 0x79, 0xb4, 0x0c, 0xaf, 0xc4, 0xf3, 0x8c, 0xf8, + 0x7e, 0xdc, 0x2c, 0xa0, 0x25, 0x98, 0x4f, 0x4f, 0xb9, 0x19, 0x3d, 0x8a, 0xd8, 0xb1, 0x1f, 0x1e, + 0x99, 0xc5, 0xd5, 0x5b, 0x50, 0xbe, 0xd7, 0x63, 0xc4, 0x7d, 0xdc, 0x91, 0xb2, 0x44, 0x1d, 0xf3, + 0x0a, 0x32, 0x61, 0x8a, 0xdf, 0x44, 0x8f, 0x83, 0x96, 0x30, 0x52, 0xd3, 0xb8, 0xfb, 0xda, 0x7f, + 0xfc, 0x6d, 0xc5, 0xf8, 0xe9, 0xb3, 0xeb, 0xc6, 0xcf, 0x9e, 0x5d, 0x37, 0xfe, 0xe7, 0xd9, 0x75, + 0xe3, 0x47, 0xff, 0x7b, 0xfd, 0x0a, 0x98, 0x11, 0x39, 0x5a, 0x63, 0xfe, 0xc9, 0xe9, 0xda, 0xc9, + 0xa9, 0xf8, 0x97, 0x3e, 0x07, 0x25, 0xf1, 0xe7, 0x8b, 0xff, 0x1f, 0x00, 0x00, 0xff, 0xff, 0x9a, + 0x14, 0x27, 0x6c, 0x47, 0x48, 0x00, 0x00, } diff --git a/pkg/tikvpb/tikvpb.pb.go b/pkg/tikvpb/tikvpb.pb.go index ab8fd6bcf..5b8e76381 100644 --- a/pkg/tikvpb/tikvpb.pb.go +++ b/pkg/tikvpb/tikvpb.pb.go @@ -50,7 +50,7 @@ func (m *BatchCommandsRequest) Reset() { *m = BatchCommandsRequest{} } func (m *BatchCommandsRequest) String() string { return proto.CompactTextString(m) } func (*BatchCommandsRequest) ProtoMessage() {} func (*BatchCommandsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_tikvpb_b69134d8e9356524, []int{0} + return fileDescriptor_tikvpb_1d6427ea9cec8226, []int{0} } func (m *BatchCommandsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -140,7 +140,7 @@ func (m *BatchCommandsRequest_Request) Reset() { *m = BatchCommandsReque func (m *BatchCommandsRequest_Request) String() string { return proto.CompactTextString(m) } func (*BatchCommandsRequest_Request) ProtoMessage() {} func (*BatchCommandsRequest_Request) Descriptor() ([]byte, []int) { - return fileDescriptor_tikvpb_b69134d8e9356524, []int{0, 0} + return fileDescriptor_tikvpb_1d6427ea9cec8226, []int{0, 0} } func (m *BatchCommandsRequest_Request) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1284,7 +1284,7 @@ func (m *BatchCommandsResponse) Reset() { *m = BatchCommandsResponse{} } func (m *BatchCommandsResponse) String() string { return proto.CompactTextString(m) } func (*BatchCommandsResponse) ProtoMessage() {} func (*BatchCommandsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_tikvpb_b69134d8e9356524, []int{1} + return fileDescriptor_tikvpb_1d6427ea9cec8226, []int{1} } func (m *BatchCommandsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1381,7 +1381,7 @@ func (m *BatchCommandsResponse_Response) Reset() { *m = BatchCommandsRes func (m *BatchCommandsResponse_Response) String() string { return proto.CompactTextString(m) } func (*BatchCommandsResponse_Response) ProtoMessage() {} func (*BatchCommandsResponse_Response) Descriptor() ([]byte, []int) { - return fileDescriptor_tikvpb_b69134d8e9356524, []int{1, 0} + return fileDescriptor_tikvpb_1d6427ea9cec8226, []int{1, 0} } func (m *BatchCommandsResponse_Response) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2522,7 +2522,7 @@ func (m *BatchRaftMessage) Reset() { *m = BatchRaftMessage{} } func (m *BatchRaftMessage) String() string { return proto.CompactTextString(m) } func (*BatchRaftMessage) ProtoMessage() {} func (*BatchRaftMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_tikvpb_b69134d8e9356524, []int{2} + return fileDescriptor_tikvpb_1d6427ea9cec8226, []int{2} } func (m *BatchRaftMessage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2572,7 +2572,7 @@ func (m *BatchCommandsEmptyRequest) Reset() { *m = BatchCommandsEmptyReq func (m *BatchCommandsEmptyRequest) String() string { return proto.CompactTextString(m) } func (*BatchCommandsEmptyRequest) ProtoMessage() {} func (*BatchCommandsEmptyRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_tikvpb_b69134d8e9356524, []int{3} + return fileDescriptor_tikvpb_1d6427ea9cec8226, []int{3} } func (m *BatchCommandsEmptyRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2627,7 +2627,7 @@ func (m *BatchCommandsEmptyResponse) Reset() { *m = BatchCommandsEmptyRe func (m *BatchCommandsEmptyResponse) String() string { return proto.CompactTextString(m) } func (*BatchCommandsEmptyResponse) ProtoMessage() {} func (*BatchCommandsEmptyResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_tikvpb_b69134d8e9356524, []int{4} + return fileDescriptor_tikvpb_1d6427ea9cec8226, []int{4} } func (m *BatchCommandsEmptyResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2761,6 +2761,8 @@ type TikvClient interface { CheckLeader(ctx context.Context, in *kvrpcpb.CheckLeaderRequest, opts ...grpc.CallOption) (*kvrpcpb.CheckLeaderResponse, error) // / Get the minimal `safe_ts` from regions at the store GetStoreSafeTS(ctx context.Context, in *kvrpcpb.StoreSafeTSRequest, opts ...grpc.CallOption) (*kvrpcpb.StoreSafeTSResponse, error) + // / Get the information about lock waiting from TiKV. + GetLockWaitInfo(ctx context.Context, in *kvrpcpb.GetLockWaitInfoRequest, opts ...grpc.CallOption) (*kvrpcpb.GetLockWaitInfoResponse, error) } type tikvClient struct { @@ -3441,6 +3443,15 @@ func (c *tikvClient) GetStoreSafeTS(ctx context.Context, in *kvrpcpb.StoreSafeTS return out, nil } +func (c *tikvClient) GetLockWaitInfo(ctx context.Context, in *kvrpcpb.GetLockWaitInfoRequest, opts ...grpc.CallOption) (*kvrpcpb.GetLockWaitInfoResponse, error) { + out := new(kvrpcpb.GetLockWaitInfoResponse) + err := c.cc.Invoke(ctx, "/tikvpb.Tikv/GetLockWaitInfo", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // Server API for Tikv service type TikvServer interface { @@ -3521,6 +3532,8 @@ type TikvServer interface { CheckLeader(context.Context, *kvrpcpb.CheckLeaderRequest) (*kvrpcpb.CheckLeaderResponse, error) // / Get the minimal `safe_ts` from regions at the store GetStoreSafeTS(context.Context, *kvrpcpb.StoreSafeTSRequest) (*kvrpcpb.StoreSafeTSResponse, error) + // / Get the information about lock waiting from TiKV. + GetLockWaitInfo(context.Context, *kvrpcpb.GetLockWaitInfoRequest) (*kvrpcpb.GetLockWaitInfoResponse, error) } func RegisterTikvServer(s *grpc.Server, srv TikvServer) { @@ -4576,6 +4589,24 @@ func _Tikv_GetStoreSafeTS_Handler(srv interface{}, ctx context.Context, dec func return interceptor(ctx, in, info, handler) } +func _Tikv_GetLockWaitInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(kvrpcpb.GetLockWaitInfoRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(TikvServer).GetLockWaitInfo(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/tikvpb.Tikv/GetLockWaitInfo", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(TikvServer).GetLockWaitInfo(ctx, req.(*kvrpcpb.GetLockWaitInfoRequest)) + } + return interceptor(ctx, in, info, handler) +} + var _Tikv_serviceDesc = grpc.ServiceDesc{ ServiceName: "tikvpb.Tikv", HandlerType: (*TikvServer)(nil), @@ -4776,6 +4807,10 @@ var _Tikv_serviceDesc = grpc.ServiceDesc{ MethodName: "GetStoreSafeTS", Handler: _Tikv_GetStoreSafeTS_Handler, }, + { + MethodName: "GetLockWaitInfo", + Handler: _Tikv_GetLockWaitInfo_Handler, + }, }, Streams: []grpc.StreamDesc{ { @@ -9889,156 +9924,158 @@ var ( ErrIntOverflowTikvpb = fmt.Errorf("proto: integer overflow") ) -func init() { proto.RegisterFile("tikvpb.proto", fileDescriptor_tikvpb_b69134d8e9356524) } +func init() { proto.RegisterFile("tikvpb.proto", fileDescriptor_tikvpb_1d6427ea9cec8226) } -var fileDescriptor_tikvpb_b69134d8e9356524 = []byte{ - // 2358 bytes of a gzipped FileDescriptorProto +var fileDescriptor_tikvpb_1d6427ea9cec8226 = []byte{ + // 2385 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x9a, 0xdf, 0x53, 0x1b, 0xb9, - 0x1d, 0xc0, 0xd7, 0x89, 0x43, 0x40, 0x84, 0x00, 0x02, 0xe2, 0x45, 0xc7, 0xcf, 0x3d, 0x92, 0x32, - 0xed, 0x8c, 0x1b, 0xb8, 0xb4, 0xe9, 0xdd, 0xb5, 0x29, 0xc1, 0xe4, 0x80, 0x33, 0xee, 0x79, 0x6c, - 0x1f, 0x4d, 0x67, 0x3a, 0x43, 0x85, 0xad, 0x80, 0x07, 0xdb, 0xeb, 0xee, 0xca, 0x26, 0xfc, 0x27, - 0x7d, 0xea, 0x63, 0xa7, 0x7f, 0x4a, 0x1f, 0xdb, 0xb7, 0x3e, 0x76, 0xd2, 0xff, 0xa1, 0x0f, 0x7d, - 0x69, 0x47, 0xda, 0x5d, 0xad, 0xa4, 0x95, 0xd6, 0xdc, 0x13, 0xcb, 0xf7, 0xa7, 0x7e, 0xeb, 0xa3, - 0x2f, 0x80, 0x27, 0xb4, 0x7b, 0x33, 0x1e, 0x5e, 0x96, 0x87, 0x81, 0x4f, 0x7d, 0x38, 0x15, 0xfd, - 0x86, 0x16, 0xdb, 0xfe, 0x30, 0xf0, 0xdb, 0x24, 0x0c, 0xfd, 0x20, 0x52, 0xa1, 0x65, 0x49, 0x74, - 0x31, 0xde, 0x8f, 0xa5, 0x73, 0x37, 0xe3, 0x60, 0xd8, 0x4e, 0xfc, 0xd1, 0x4c, 0x7f, 0x38, 0x8c, - 0x3f, 0x97, 0x02, 0xfc, 0x81, 0x5e, 0x84, 0x24, 0x18, 0x93, 0x40, 0xe8, 0x97, 0xaf, 0xfc, 0x2b, - 0x9f, 0x7f, 0xfe, 0x94, 0x7d, 0xc5, 0xd2, 0xf9, 0x60, 0x14, 0x52, 0xfe, 0x19, 0x09, 0xbc, 0xff, - 0x2c, 0x82, 0xe5, 0x43, 0x4c, 0xdb, 0xd7, 0x15, 0xbf, 0xdf, 0xc7, 0x83, 0x4e, 0xd8, 0x20, 0x7f, - 0x1c, 0x91, 0x90, 0xc2, 0x03, 0x30, 0x1d, 0x44, 0x9f, 0xa1, 0x5b, 0xd8, 0x7a, 0xb8, 0x3b, 0xbb, - 0xbf, 0x53, 0x8e, 0x3b, 0x60, 0xb2, 0x2f, 0xc7, 0x3f, 0x1b, 0xc2, 0x0b, 0x6e, 0x82, 0xd9, 0xf8, - 0xfb, 0xa2, 0xdb, 0x09, 0xdd, 0x07, 0x5b, 0x0f, 0x77, 0x8b, 0x0d, 0x10, 0x8b, 0x4e, 0x3b, 0x21, - 0xfa, 0xef, 0x02, 0x78, 0x9c, 0xa4, 0xfb, 0x11, 0x78, 0x78, 0x4c, 0xa8, 0x5b, 0xd8, 0x2a, 0xec, - 0xce, 0xee, 0x2f, 0x95, 0x93, 0xbe, 0x1e, 0x13, 0x1a, 0x5b, 0x9c, 0x38, 0x0d, 0x66, 0x01, 0x7f, - 0x0c, 0x8a, 0xcd, 0x36, 0x1e, 0xb8, 0x0f, 0xb8, 0xe5, 0xb2, 0xb0, 0x64, 0xc2, 0xd4, 0x94, 0xdb, - 0xc0, 0x9f, 0x83, 0xe9, 0x7a, 0x40, 0x6e, 0x83, 0x2e, 0x25, 0xee, 0x43, 0x6e, 0xef, 0x0a, 0xfb, - 0x44, 0x91, 0xfa, 0x08, 0x5b, 0xf8, 0x12, 0x4c, 0xb1, 0xee, 0x75, 0xa9, 0x5b, 0xe4, 0x5e, 0xcf, - 0x84, 0x57, 0x24, 0x4e, 0x7d, 0x62, 0x3b, 0xe6, 0x71, 0xda, 0x1f, 0xfa, 0x01, 0x75, 0x1f, 0x69, - 0x1e, 0x91, 0x58, 0xf2, 0x88, 0x04, 0xf0, 0x0b, 0xf0, 0xb8, 0xd2, 0x23, 0x78, 0x30, 0x1a, 0xba, - 0x53, 0xdc, 0xa5, 0x94, 0x26, 0x89, 0xe4, 0xa9, 0x4f, 0x62, 0xc9, 0x3a, 0xc4, 0x07, 0x9f, 0x0d, - 0xd5, 0x63, 0xad, 0x43, 0x89, 0x42, 0xea, 0x50, 0x22, 0x82, 0xef, 0xc0, 0x1c, 0xff, 0x6e, 0xf8, - 0xbd, 0xde, 0x25, 0x6e, 0xdf, 0xb8, 0xd3, 0xdc, 0x79, 0x5d, 0x75, 0x4e, 0xb4, 0x69, 0x04, 0xd5, - 0x8b, 0xa5, 0x67, 0xe3, 0x7a, 0xe6, 0xb7, 0x6f, 0xdc, 0x19, 0x2d, 0x7d, 0xa2, 0x90, 0xd2, 0x27, - 0x22, 0xf8, 0x6b, 0x30, 0xdb, 0x20, 0xa1, 0xdf, 0x1b, 0x13, 0xee, 0x0a, 0xb8, 0xeb, 0x67, 0xc2, - 0x55, 0xd2, 0xa5, 0xde, 0xb2, 0x07, 0xdc, 0x01, 0x0f, 0x8e, 0x2b, 0xee, 0x2c, 0xf7, 0x83, 0xe9, - 0xe2, 0xa8, 0xa4, 0xe6, 0x0f, 0x8e, 0x2b, 0x2c, 0xcd, 0x11, 0xe9, 0x11, 0x4a, 0x1a, 0x78, 0x70, - 0x45, 0xdc, 0x27, 0x5a, 0x1a, 0x49, 0x27, 0xa5, 0x91, 0xa4, 0x6c, 0x16, 0x1b, 0xf8, 0x96, 0x0d, - 0xee, 0x9c, 0x36, 0x8b, 0x91, 0x58, 0x9a, 0xc5, 0x48, 0xc0, 0x7b, 0x86, 0x6f, 0xc5, 0x9c, 0x3c, - 0xd5, 0x7b, 0x96, 0xea, 0xe4, 0x9e, 0xa5, 0xd2, 0x38, 0x65, 0x7d, 0x44, 0xdd, 0xf9, 0x6c, 0xca, - 0xfa, 0x48, 0x4b, 0x59, 0x1f, 0x29, 0x29, 0x99, 0xdb, 0x82, 0x25, 0xa5, 0xe2, 0x2b, 0x7b, 0xc0, - 0x2f, 0xc1, 0x4c, 0x03, 0xdf, 0x46, 0xfd, 0x76, 0x17, 0xb9, 0xfb, 0xaa, 0xec, 0x1e, 0x8f, 0x88, - 0x70, 0x4e, 0xad, 0xe1, 0x09, 0x78, 0x9a, 0x44, 0x8a, 0xfd, 0x21, 0xf7, 0xdf, 0xc8, 0xa4, 0xd7, - 0x83, 0x68, 0x7e, 0x6c, 0xf9, 0x37, 0xf0, 0x2d, 0xdf, 0xc9, 0x4b, 0xda, 0xf2, 0x8f, 0xe5, 0xd2, - 0xf2, 0x8f, 0x25, 0x71, 0x7a, 0x79, 0x8e, 0x97, 0xb3, 0xe9, 0x8d, 0xd3, 0xac, 0xf9, 0xc1, 0x43, - 0xf0, 0x24, 0x69, 0x10, 0x6f, 0xc3, 0x0a, 0x8f, 0xb3, 0x96, 0xe9, 0x86, 0xda, 0x10, 0xc5, 0x07, - 0xfe, 0x02, 0xcc, 0x56, 0xd2, 0x83, 0xda, 0x7d, 0x16, 0x1f, 0x48, 0xf2, 0x79, 0x2e, 0xcd, 0x80, - 0x64, 0x0a, 0xab, 0x60, 0xbe, 0x4e, 0xc2, 0xb0, 0xdb, 0xef, 0x86, 0xb4, 0xdb, 0xe6, 0x7b, 0xa2, - 0xc4, 0xbd, 0x37, 0xd3, 0xe3, 0x49, 0xd5, 0xa7, 0x81, 0x74, 0x4f, 0xf8, 0x5b, 0xb0, 0x24, 0x89, - 0xc4, 0x0e, 0x77, 0x79, 0xc0, 0xcf, 0x4d, 0x01, 0xb3, 0xfb, 0xdc, 0x14, 0x81, 0x8d, 0x76, 0xe5, - 0x9a, 0xb4, 0x6f, 0x5a, 0x1f, 0x07, 0x4d, 0x8a, 0xe9, 0x28, 0x74, 0x57, 0xb5, 0xd1, 0x56, 0xd5, - 0xd2, 0x68, 0xab, 0x0a, 0x36, 0xda, 0xad, 0x8f, 0x83, 0x13, 0x82, 0x03, 0x7a, 0x48, 0x30, 0x75, - 0x91, 0x36, 0xda, 0xb2, 0x52, 0x1a, 0x6d, 0x59, 0xcc, 0x36, 0xca, 0x39, 0x09, 0xd8, 0x26, 0xfb, - 0x4c, 0xdb, 0x28, 0x91, 0x58, 0xda, 0x28, 0x91, 0x80, 0x6d, 0x94, 0x73, 0x12, 0x88, 0xbd, 0xb9, - 0xa6, 0x6d, 0x14, 0x49, 0x27, 0x4d, 0x93, 0x24, 0x8d, 0x53, 0xd6, 0x46, 0xd4, 0x5d, 0xcf, 0xa6, - 0xac, 0x8d, 0xb4, 0x94, 0xb5, 0x91, 0x92, 0x92, 0xb9, 0x6d, 0x58, 0x52, 0x2a, 0xbe, 0xb2, 0x07, - 0xdb, 0x16, 0xe7, 0x24, 0xe0, 0x4b, 0x72, 0x53, 0xdb, 0x16, 0xb1, 0x5c, 0xda, 0x16, 0xb1, 0x84, - 0x4d, 0xd4, 0x39, 0x09, 0xe4, 0x6d, 0xb1, 0xa5, 0x4d, 0x94, 0xaa, 0x96, 0x26, 0x4a, 0x55, 0xb0, - 0xb5, 0xc4, 0xa7, 0xae, 0x49, 0xda, 0xfe, 0xa0, 0x83, 0x83, 0x3b, 0xb6, 0xc2, 0x42, 0x77, 0x5b, - 0x5b, 0x4b, 0x06, 0x1b, 0x69, 0x2d, 0x19, 0xb4, 0xb0, 0x06, 0xe6, 0xa4, 0x0d, 0x70, 0xbe, 0xef, - 0x7a, 0x3c, 0xe4, 0xf3, 0xb2, 0x86, 0x3a, 0x0d, 0x7c, 0x2b, 0xd9, 0x49, 0x17, 0x91, 0xe2, 0x0d, - 0xbf, 0x02, 0x8f, 0xde, 0xf5, 0x87, 0xf4, 0xce, 0xfd, 0x5f, 0x04, 0x0c, 0xdb, 0x46, 0x34, 0xe1, - 0x26, 0x69, 0x8c, 0xc8, 0xe5, 0xf0, 0x11, 0x78, 0xd8, 0xee, 0x77, 0xbc, 0x7f, 0x40, 0xb0, 0xa2, - 0x81, 0x4c, 0x38, 0xf4, 0x07, 0x21, 0x81, 0x47, 0x60, 0x26, 0x88, 0xbf, 0x13, 0xf4, 0x79, 0x61, - 0x41, 0x9f, 0xc8, 0xaa, 0x9c, 0x7c, 0x34, 0x52, 0xc7, 0x89, 0xf4, 0x03, 0x5f, 0x82, 0x65, 0x1a, - 0xe0, 0x41, 0xc8, 0x68, 0xe0, 0xa2, 0x87, 0xef, 0x48, 0x70, 0xd1, 0xf3, 0x71, 0x87, 0x83, 0x4a, - 0xb1, 0x01, 0x85, 0xee, 0x8c, 0xa9, 0xce, 0x7c, 0xdc, 0x41, 0x7f, 0x5e, 0x04, 0xd3, 0xa2, 0x95, - 0xbb, 0x32, 0x30, 0x2d, 0xab, 0xc0, 0x14, 0x99, 0x24, 0xc4, 0xf4, 0x13, 0x85, 0x98, 0x56, 0x34, - 0x62, 0x12, 0xb6, 0x11, 0x32, 0xbd, 0xce, 0x20, 0xd3, 0xaa, 0x01, 0x99, 0x84, 0x53, 0xca, 0x4c, - 0x7b, 0x1a, 0x33, 0x95, 0x32, 0xcc, 0x24, 0x9c, 0x12, 0x68, 0xda, 0xd3, 0xa0, 0xa9, 0x94, 0x81, - 0xa6, 0xd4, 0x25, 0xa6, 0xa6, 0x57, 0x3a, 0x35, 0xb9, 0x59, 0x6a, 0x12, 0x4e, 0x02, 0x9b, 0x5e, - 0x67, 0xb0, 0x69, 0xd5, 0x80, 0x4d, 0x69, 0xa7, 0xc4, 0x09, 0xf0, 0x8d, 0x99, 0x9b, 0x36, 0x6c, - 0xdc, 0x24, 0x42, 0x68, 0xe0, 0xf4, 0x3a, 0x03, 0x4e, 0xab, 0x06, 0x70, 0x4a, 0x1b, 0x20, 0xc8, - 0xe9, 0xc0, 0x44, 0x4e, 0x6b, 0x66, 0x72, 0x12, 0xee, 0x0a, 0x3a, 0x3d, 0x97, 0xd0, 0x69, 0x49, - 0x41, 0x27, 0x61, 0xcf, 0xd8, 0xe9, 0xc0, 0xc4, 0x4e, 0x6b, 0x66, 0x76, 0x4a, 0x13, 0xc9, 0x67, - 0xc7, 0x9e, 0x06, 0x4f, 0xa5, 0x0c, 0x3c, 0xa5, 0xb3, 0x19, 0xd3, 0xd3, 0x81, 0x89, 0x9e, 0xd6, - 0xcc, 0xf4, 0x24, 0xf5, 0x4e, 0xc2, 0xa7, 0x3d, 0x0d, 0x9f, 0x4a, 0x19, 0x7c, 0x52, 0x92, 0x32, - 0xfc, 0x39, 0x30, 0xf1, 0xd3, 0x9a, 0x99, 0x9f, 0xb2, 0x49, 0x59, 0x84, 0xaf, 0xb2, 0x00, 0x85, - 0x4c, 0x00, 0x25, 0xbc, 0x25, 0x82, 0x3a, 0xb5, 0x10, 0xd4, 0xa6, 0x95, 0xa0, 0x44, 0x14, 0x1d, - 0xa1, 0x5e, 0xe9, 0x08, 0xe5, 0x66, 0x11, 0x2a, 0xdd, 0x0b, 0x09, 0x43, 0x9d, 0x5a, 0x18, 0x6a, - 0xd3, 0xca, 0x50, 0x4a, 0x03, 0xe4, 0x19, 0xaf, 0x18, 0x21, 0x6a, 0xdd, 0x02, 0x51, 0x22, 0x8c, - 0x4a, 0x51, 0x5f, 0x9a, 0x28, 0x6a, 0x45, 0xa3, 0xa8, 0x74, 0x1e, 0x64, 0x8c, 0x3a, 0xb3, 0x61, - 0xd4, 0x96, 0x1d, 0xa3, 0x44, 0xa4, 0x0c, 0x47, 0xbd, 0xcf, 0xe3, 0xa8, 0x9d, 0x7c, 0x8e, 0x12, - 0x51, 0x8d, 0x20, 0x75, 0x6a, 0x01, 0xa9, 0x4d, 0x2b, 0x48, 0xa5, 0x43, 0xae, 0x91, 0x54, 0xc5, - 0x48, 0x52, 0xeb, 0x16, 0x92, 0x4a, 0x87, 0x5c, 0x41, 0xa9, 0x3d, 0x0d, 0xa5, 0x4a, 0x19, 0x94, - 0x4a, 0x37, 0x4d, 0xcc, 0x52, 0x07, 0x26, 0x96, 0x5a, 0x33, 0xb3, 0x54, 0x3a, 0x59, 0x32, 0x4c, - 0xed, 0x69, 0x30, 0x55, 0xca, 0xc0, 0x94, 0x92, 0xb4, 0x36, 0x52, 0x92, 0xa6, 0x34, 0xb5, 0x66, - 0xa6, 0xa9, 0x6c, 0x52, 0x16, 0xe1, 0x95, 0x8e, 0x53, 0x6e, 0x16, 0xa7, 0xd2, 0x2d, 0x92, 0xf0, - 0xd4, 0xa9, 0x85, 0xa7, 0x36, 0xad, 0x3c, 0x95, 0xce, 0x97, 0x06, 0x54, 0xef, 0xf3, 0x80, 0x6a, - 0x27, 0x1f, 0xa8, 0xd2, 0x45, 0x65, 0x22, 0xaa, 0xdf, 0x98, 0x89, 0xea, 0xc5, 0x24, 0xa2, 0x4a, - 0xaf, 0x28, 0x15, 0xa9, 0xbe, 0xd6, 0x90, 0xca, 0xcb, 0x43, 0x2a, 0x11, 0x44, 0x65, 0xaa, 0x43, - 0xb0, 0x10, 0xdd, 0x7b, 0xf8, 0x03, 0xad, 0x91, 0x30, 0xc4, 0x57, 0x04, 0x96, 0x41, 0xb1, 0x1f, - 0x5e, 0x25, 0x20, 0x85, 0xca, 0x6a, 0xad, 0x4a, 0xb2, 0x6c, 0x70, 0x3b, 0xaf, 0x09, 0x56, 0xad, - 0x10, 0x07, 0x4b, 0xe0, 0x31, 0x8d, 0x88, 0x8a, 0x83, 0x4f, 0xb1, 0x31, 0x45, 0x39, 0x4d, 0xc1, - 0x75, 0x00, 0x3a, 0xa4, 0x87, 0xef, 0x2e, 0x68, 0xb7, 0x4f, 0x38, 0xe9, 0x14, 0x1b, 0x33, 0x5c, - 0xd2, 0xea, 0xf6, 0x89, 0xf7, 0x33, 0x80, 0xec, 0xdd, 0xb0, 0x46, 0xdd, 0xff, 0xcb, 0x36, 0x28, - 0xb6, 0xba, 0x37, 0x63, 0xf8, 0x0a, 0x3c, 0xaa, 0x8e, 0xd9, 0x2a, 0x36, 0x55, 0xa6, 0x90, 0x91, - 0xbe, 0x3c, 0x07, 0xbe, 0x06, 0x53, 0xd5, 0x31, 0x5f, 0x51, 0xc6, 0x32, 0x15, 0x32, 0xa3, 0x98, - 0xe7, 0xc0, 0x0a, 0x00, 0xd5, 0xb1, 0x20, 0x2b, 0x6b, 0xcd, 0x0a, 0xd9, 0xd1, 0xcc, 0x73, 0xe0, - 0x7b, 0xb0, 0x58, 0x1d, 0xeb, 0x87, 0xdc, 0xa4, 0x07, 0x26, 0x9a, 0x78, 0x74, 0x7a, 0x0e, 0xec, - 0x80, 0x95, 0xea, 0xb9, 0xe9, 0xa0, 0xbb, 0xcf, 0x6b, 0x13, 0xdd, 0xeb, 0x28, 0xf5, 0x1c, 0xf8, - 0x1d, 0x78, 0x5a, 0x1d, 0x2b, 0xe7, 0x56, 0xee, 0x83, 0x11, 0xe5, 0x1f, 0x82, 0x9e, 0x03, 0xbf, - 0x07, 0x0b, 0xd5, 0xb1, 0x76, 0x9e, 0x4e, 0x78, 0xcb, 0xa2, 0x49, 0x47, 0x74, 0x3c, 0x1a, 0x63, - 0xd3, 0x0e, 0xbd, 0xcf, 0x7b, 0x09, 0xdd, 0xeb, 0x0c, 0xf0, 0x1c, 0xf8, 0x2b, 0x30, 0x5d, 0x1d, - 0xc7, 0xdc, 0x6c, 0x29, 0x47, 0x22, 0x1b, 0x72, 0x27, 0xee, 0x31, 0x43, 0x5b, 0x6a, 0x93, 0xc8, - 0x86, 0xdf, 0x9e, 0x03, 0x0f, 0xc0, 0x4c, 0x75, 0x9c, 0xd0, 0xb4, 0xad, 0x50, 0x89, 0xac, 0x2c, - 0x9e, 0x2c, 0x69, 0x71, 0x19, 0x58, 0xab, 0x96, 0xc8, 0x0e, 0xe6, 0x9e, 0x03, 0x1b, 0x60, 0x3e, - 0x0e, 0x22, 0x96, 0x5c, 0x7e, 0x09, 0x13, 0x4d, 0x20, 0xf5, 0xa4, 0x61, 0x82, 0xb7, 0xad, 0xf5, - 0x4c, 0x64, 0x07, 0x76, 0xcf, 0x81, 0x67, 0x60, 0xae, 0x3a, 0x96, 0xa9, 0x3b, 0xaf, 0xb8, 0x89, - 0x72, 0xf9, 0xdd, 0x73, 0xe0, 0x1e, 0x28, 0x56, 0xc7, 0xc7, 0x15, 0x68, 0xa8, 0x74, 0x22, 0x13, - 0xc2, 0x27, 0x0d, 0x90, 0x2f, 0x9e, 0xbc, 0xb2, 0x27, 0xca, 0xe5, 0x7a, 0xcf, 0x81, 0x5f, 0x27, - 0x28, 0x0f, 0x2d, 0x15, 0x50, 0x64, 0x83, 0x7b, 0xcf, 0x81, 0xdf, 0x2a, 0x50, 0x0f, 0xf3, 0x8a, - 0xa1, 0x28, 0x97, 0xf5, 0x45, 0x43, 0x18, 0x73, 0x5b, 0xea, 0xa2, 0xc8, 0x06, 0xfc, 0x6a, 0x43, - 0x58, 0x84, 0xbc, 0x12, 0x29, 0xca, 0xe5, 0x7f, 0xcf, 0x81, 0x47, 0x12, 0xf2, 0x43, 0x7b, 0xb5, - 0x14, 0xe5, 0xbc, 0x03, 0x3c, 0x07, 0x36, 0x75, 0xf8, 0x87, 0x13, 0x0a, 0xa7, 0x68, 0xd2, 0xb3, - 0xc0, 0x73, 0xe0, 0x1b, 0xf1, 0x0c, 0x80, 0xb6, 0x1a, 0x2a, 0xb2, 0xbe, 0x0c, 0x44, 0xa3, 0xe4, - 0xb5, 0x33, 0xa1, 0x9c, 0x8a, 0x26, 0x3d, 0x15, 0x3c, 0x07, 0xd6, 0xd4, 0xa7, 0x01, 0xcc, 0xad, - 0xac, 0xa2, 0xfc, 0x27, 0x83, 0x08, 0x77, 0x4c, 0x68, 0x95, 0xdc, 0xb5, 0x5a, 0x67, 0x6a, 0x38, - 0x21, 0x36, 0x86, 0x93, 0xb4, 0x22, 0xdc, 0x37, 0x60, 0x91, 0x63, 0x51, 0x7f, 0x88, 0x03, 0xf2, - 0x76, 0xd0, 0x69, 0xde, 0xe2, 0xa1, 0xba, 0xc2, 0x2a, 0x6f, 0x9b, 0xc6, 0x15, 0xc6, 0xe5, 0xf2, - 0xf2, 0x8c, 0xf9, 0xd8, 0x52, 0x8d, 0x44, 0x36, 0xb4, 0x8e, 0x96, 0xa7, 0xcc, 0xc7, 0x79, 0x85, - 0x49, 0x94, 0x4b, 0xda, 0xa2, 0x21, 0xb5, 0x91, 0xd6, 0x90, 0xda, 0xc8, 0xdc, 0x90, 0xda, 0xc8, - 0xd2, 0x90, 0xda, 0xc8, 0xd4, 0x90, 0xda, 0x28, 0xa7, 0x21, 0x6a, 0xac, 0x37, 0x02, 0xb8, 0xa1, - 0xad, 0x72, 0x89, 0xac, 0x0c, 0x1e, 0x2d, 0x46, 0x8d, 0xa0, 0x27, 0x14, 0x31, 0xd1, 0x24, 0x28, - 0xf7, 0x1c, 0x78, 0x01, 0xe0, 0xf7, 0x83, 0x10, 0x7f, 0x20, 0x47, 0x24, 0xa4, 0x81, 0x7f, 0x17, - 0x05, 0xf6, 0x84, 0x63, 0x56, 0x99, 0x04, 0xff, 0x3c, 0xd7, 0x46, 0x24, 0x20, 0x60, 0xb9, 0x41, - 0xae, 0xba, 0x21, 0x25, 0x01, 0x3b, 0xca, 0xbf, 0xbb, 0x8c, 0xf8, 0x16, 0xee, 0x48, 0x07, 0x7d, - 0x56, 0x9d, 0x24, 0x79, 0x3e, 0xc1, 0x4a, 0xa4, 0xf9, 0x3d, 0x58, 0xe4, 0x90, 0xa0, 0xe4, 0xd8, - 0x56, 0x01, 0xc2, 0x94, 0xc0, 0xcb, 0x33, 0x91, 0x47, 0xa9, 0x41, 0xfa, 0x7e, 0x74, 0x1b, 0x89, - 0xf0, 0x9e, 0xd4, 0x38, 0x5d, 0x99, 0x1d, 0x25, 0x93, 0x8d, 0x48, 0xf0, 0x3b, 0xb0, 0x50, 0xbf, - 0xbe, 0x0b, 0xbb, 0x6d, 0xdc, 0x13, 0xf7, 0xad, 0x84, 0x9b, 0x9a, 0x2a, 0x09, 0xbe, 0x9d, 0x63, - 0x21, 0x42, 0xff, 0x52, 0x29, 0x22, 0x40, 0xe3, 0x1f, 0x61, 0x90, 0xb9, 0xa8, 0xc0, 0x0f, 0xf7, - 0x45, 0xc9, 0xbb, 0x49, 0x03, 0x82, 0xfb, 0x3f, 0x30, 0xc6, 0xcb, 0x02, 0xac, 0xc5, 0x8f, 0x1f, - 0xb9, 0x21, 0xab, 0x8a, 0x79, 0x84, 0x20, 0xe2, 0xa6, 0x30, 0xa8, 0xa4, 0x70, 0x7f, 0xd0, 0xde, - 0x77, 0xf0, 0x7e, 0xb5, 0x72, 0x74, 0xcf, 0x07, 0x20, 0x3f, 0x34, 0x8a, 0xec, 0xf9, 0x05, 0x73, - 0xde, 0x64, 0x68, 0x49, 0xd3, 0x1d, 0xf9, 0x03, 0xe2, 0x39, 0xbb, 0x05, 0xf8, 0x06, 0xcc, 0x88, - 0xa7, 0x1e, 0x74, 0x95, 0xb7, 0xe2, 0xbd, 0xfc, 0xdf, 0x82, 0xe9, 0xe6, 0x00, 0x0f, 0xc3, 0x6b, - 0x9f, 0x71, 0xbd, 0x6a, 0x94, 0x28, 0x2a, 0xd7, 0xa3, 0xc1, 0x8d, 0x3d, 0xc4, 0xb7, 0x60, 0xb6, - 0x39, 0xec, 0x31, 0xcc, 0xbd, 0xea, 0xfa, 0x03, 0xe9, 0xdc, 0x92, 0xa4, 0xd9, 0x73, 0x4b, 0x51, - 0x2a, 0xf7, 0x3b, 0xc1, 0x9d, 0xd3, 0x41, 0x87, 0x7c, 0x94, 0xef, 0xf7, 0x44, 0x66, 0xb8, 0xdf, - 0x53, 0x95, 0x7c, 0x4d, 0xd5, 0xc6, 0xed, 0xf6, 0x31, 0xa1, 0x87, 0x77, 0x55, 0x72, 0x27, 0x5d, - 0x53, 0xb2, 0x38, 0x7b, 0x4d, 0xa9, 0x5a, 0x79, 0xc3, 0x08, 0x4d, 0x93, 0xe2, 0x80, 0xb6, 0x42, - 0x69, 0xc3, 0xe8, 0xaa, 0xec, 0x86, 0xc9, 0x5a, 0x48, 0x24, 0x3d, 0xa7, 0x3c, 0x88, 0xe1, 0x5a, - 0xde, 0x3f, 0x77, 0xa0, 0xf5, 0xdc, 0xbf, 0x7f, 0xb0, 0xd9, 0x78, 0x59, 0x80, 0x27, 0x60, 0xfe, - 0xa8, 0x1b, 0x0e, 0xf9, 0xa5, 0x50, 0xaf, 0xb7, 0x70, 0xc8, 0x70, 0xba, 0x3f, 0x1c, 0x96, 0x13, - 0x29, 0x13, 0xa5, 0x38, 0x9d, 0xd5, 0x88, 0xd6, 0x1d, 0x82, 0xb9, 0x0a, 0x1e, 0xb4, 0x49, 0x2f, - 0x89, 0xf3, 0x8c, 0x5b, 0x47, 0x32, 0x39, 0x4a, 0x29, 0x23, 0x17, 0x31, 0x5a, 0xe0, 0xd9, 0xbb, - 0x90, 0xe2, 0xcb, 0x5e, 0x37, 0x64, 0xcd, 0xa9, 0xf8, 0x83, 0x01, 0x69, 0x53, 0xb6, 0x50, 0x3c, - 0xee, 0x64, 0x56, 0x26, 0x81, 0x21, 0xb7, 0xa9, 0xd5, 0xeb, 0x47, 0x98, 0xe2, 0x3a, 0x6e, 0xdf, - 0x10, 0xca, 0x77, 0xe5, 0x09, 0x98, 0x8d, 0xce, 0x50, 0x82, 0x3b, 0x24, 0x90, 0xd6, 0x9c, 0x24, - 0xcd, 0xae, 0x39, 0x45, 0x19, 0x17, 0x1d, 0xaa, 0xe0, 0xe9, 0x31, 0xa1, 0x4d, 0xea, 0x07, 0xa4, - 0x89, 0x3f, 0x90, 0x56, 0x53, 0x5e, 0xc0, 0xa9, 0xd4, 0xb0, 0x80, 0x65, 0x65, 0x14, 0xec, 0xf0, - 0xc5, 0x3f, 0xff, 0x3a, 0x5d, 0xf8, 0xdb, 0xa7, 0x8d, 0xc2, 0xdf, 0x3f, 0x6d, 0x14, 0xfe, 0xf5, - 0x69, 0xa3, 0xf0, 0xa7, 0x7f, 0x6f, 0x38, 0x60, 0xc1, 0x0f, 0xae, 0xf8, 0xc4, 0x95, 0x6f, 0xc6, - 0xfc, 0xbf, 0x7d, 0x2e, 0xa7, 0xf8, 0x8f, 0x2f, 0xfe, 0x1f, 0x00, 0x00, 0xff, 0xff, 0x4f, 0x1c, - 0xdd, 0x01, 0x8b, 0x24, 0x00, 0x00, + 0x1d, 0xc0, 0xd7, 0x89, 0x43, 0x40, 0x84, 0x00, 0x82, 0xc4, 0x8b, 0x8e, 0x1f, 0xc9, 0x5e, 0x92, + 0x66, 0xda, 0x19, 0x37, 0x70, 0x69, 0xd3, 0xbb, 0x6b, 0x53, 0x82, 0xc9, 0x01, 0x67, 0xdc, 0xf3, + 0xd8, 0x3e, 0x2e, 0x9d, 0xe9, 0x0c, 0x15, 0xb6, 0x00, 0x0f, 0xf6, 0xae, 0xbb, 0x2b, 0x9b, 0xf0, + 0x9f, 0xf4, 0xa9, 0xcf, 0xfd, 0x53, 0xfa, 0xd8, 0xbe, 0xf5, 0xb1, 0x93, 0xfe, 0x0f, 0x7d, 0xe8, + 0x74, 0xa6, 0x1d, 0x69, 0x77, 0xb5, 0x92, 0x56, 0x5a, 0xd3, 0x27, 0x96, 0xef, 0x4f, 0xfd, 0xd6, + 0x47, 0x5f, 0x00, 0x0f, 0x68, 0xff, 0x6a, 0x32, 0x3a, 0xab, 0x8e, 0xc2, 0x80, 0x06, 0x70, 0x26, + 0xfe, 0x0d, 0x2d, 0x77, 0x83, 0x51, 0x18, 0x74, 0x49, 0x14, 0x05, 0x61, 0xac, 0x42, 0xab, 0x92, + 0xe8, 0x74, 0xb2, 0x93, 0x48, 0x17, 0xae, 0x26, 0xe1, 0xa8, 0x9b, 0xfa, 0xa3, 0xb9, 0xe1, 0x68, + 0x94, 0x7c, 0xae, 0x84, 0xf8, 0x9c, 0x9e, 0x46, 0x24, 0x9c, 0x90, 0x50, 0xe8, 0x57, 0x2f, 0x82, + 0x8b, 0x80, 0x7f, 0xfe, 0x94, 0x7d, 0x25, 0xd2, 0xc5, 0x70, 0x1c, 0x51, 0xfe, 0x19, 0x0b, 0xbc, + 0x7f, 0x2d, 0x83, 0xd5, 0x3d, 0x4c, 0xbb, 0x97, 0xb5, 0x60, 0x38, 0xc4, 0x7e, 0x2f, 0x6a, 0x91, + 0x3f, 0x8c, 0x49, 0x44, 0xe1, 0x2e, 0x98, 0x0d, 0xe3, 0xcf, 0xc8, 0x2d, 0x3d, 0xb9, 0xfb, 0x72, + 0x7e, 0xe7, 0x59, 0x35, 0xe9, 0x80, 0xc9, 0xbe, 0x9a, 0xfc, 0x6c, 0x09, 0x2f, 0xb8, 0x05, 0xe6, + 0x93, 0xef, 0xd3, 0x7e, 0x2f, 0x72, 0xef, 0x3c, 0xb9, 0xfb, 0xb2, 0xdc, 0x02, 0x89, 0xe8, 0xa8, + 0x17, 0xa1, 0x7f, 0x2f, 0x81, 0xfb, 0x69, 0xba, 0x1f, 0x81, 0xbb, 0x07, 0x84, 0xba, 0xa5, 0x27, + 0xa5, 0x97, 0xf3, 0x3b, 0x2b, 0xd5, 0xb4, 0xaf, 0x07, 0x84, 0x26, 0x16, 0x87, 0x4e, 0x8b, 0x59, + 0xc0, 0x1f, 0x83, 0x72, 0xbb, 0x8b, 0x7d, 0xf7, 0x0e, 0xb7, 0x5c, 0x15, 0x96, 0x4c, 0x98, 0x99, + 0x72, 0x1b, 0xf8, 0x73, 0x30, 0xdb, 0x0c, 0xc9, 0x75, 0xd8, 0xa7, 0xc4, 0xbd, 0xcb, 0xed, 0x5d, + 0x61, 0x9f, 0x2a, 0x32, 0x1f, 0x61, 0x0b, 0x5f, 0x81, 0x19, 0xd6, 0xbd, 0x3e, 0x75, 0xcb, 0xdc, + 0xeb, 0xb1, 0xf0, 0x8a, 0xc5, 0x99, 0x4f, 0x62, 0xc7, 0x3c, 0x8e, 0x86, 0xa3, 0x20, 0xa4, 0xee, + 0x3d, 0xcd, 0x23, 0x16, 0x4b, 0x1e, 0xb1, 0x00, 0x7e, 0x01, 0xee, 0xd7, 0x06, 0x04, 0xfb, 0xe3, + 0x91, 0x3b, 0xc3, 0x5d, 0x2a, 0x59, 0x92, 0x58, 0x9e, 0xf9, 0xa4, 0x96, 0xac, 0x43, 0x7c, 0xf0, + 0xd9, 0x50, 0xdd, 0xd7, 0x3a, 0x94, 0x2a, 0xa4, 0x0e, 0xa5, 0x22, 0xf8, 0x1e, 0x2c, 0xf0, 0xef, + 0x56, 0x30, 0x18, 0x9c, 0xe1, 0xee, 0x95, 0x3b, 0xcb, 0x9d, 0x37, 0x54, 0xe7, 0x54, 0x9b, 0x45, + 0x50, 0xbd, 0x58, 0x7a, 0x36, 0xae, 0xc7, 0x41, 0xf7, 0xca, 0x9d, 0xd3, 0xd2, 0xa7, 0x0a, 0x29, + 0x7d, 0x2a, 0x82, 0xbf, 0x06, 0xf3, 0x2d, 0x12, 0x05, 0x83, 0x09, 0xe1, 0xae, 0x80, 0xbb, 0x7e, + 0x26, 0x5c, 0x25, 0x5d, 0xe6, 0x2d, 0x7b, 0xc0, 0x67, 0xe0, 0xce, 0x41, 0xcd, 0x9d, 0xe7, 0x7e, + 0x30, 0x5b, 0x1c, 0xb5, 0xcc, 0xfc, 0xce, 0x41, 0x8d, 0xa5, 0xd9, 0x27, 0x03, 0x42, 0x49, 0x0b, + 0xfb, 0x17, 0xc4, 0x7d, 0xa0, 0xa5, 0x91, 0x74, 0x52, 0x1a, 0x49, 0xca, 0x66, 0xb1, 0x85, 0xaf, + 0xd9, 0xe0, 0x2e, 0x68, 0xb3, 0x18, 0x8b, 0xa5, 0x59, 0x8c, 0x05, 0xbc, 0x67, 0xf8, 0x5a, 0xcc, + 0xc9, 0x43, 0xbd, 0x67, 0x99, 0x4e, 0xee, 0x59, 0x26, 0x4d, 0x52, 0x36, 0xc7, 0xd4, 0x5d, 0xcc, + 0xa7, 0x6c, 0x8e, 0xb5, 0x94, 0xcd, 0xb1, 0x92, 0x92, 0xb9, 0x2d, 0x59, 0x52, 0x2a, 0xbe, 0xb2, + 0x07, 0xfc, 0x12, 0xcc, 0xb5, 0xf0, 0x75, 0xdc, 0x6f, 0x77, 0x99, 0xbb, 0xaf, 0xc9, 0xee, 0xc9, + 0x88, 0x08, 0xe7, 0xcc, 0x1a, 0x1e, 0x82, 0x87, 0x69, 0xa4, 0xc4, 0x1f, 0x72, 0xff, 0xcd, 0x5c, + 0x7a, 0x3d, 0x88, 0xe6, 0xc7, 0x96, 0x7f, 0x0b, 0x5f, 0xf3, 0x9d, 0xbc, 0xa2, 0x2d, 0xff, 0x44, + 0x2e, 0x2d, 0xff, 0x44, 0x92, 0xa4, 0x97, 0xe7, 0x78, 0x35, 0x9f, 0xde, 0x38, 0xcd, 0x9a, 0x1f, + 0xdc, 0x03, 0x0f, 0xd2, 0x06, 0xf1, 0x36, 0x3c, 0xe2, 0x71, 0xd6, 0x73, 0xdd, 0x50, 0x1b, 0xa2, + 0xf8, 0xc0, 0x5f, 0x80, 0xf9, 0x5a, 0x76, 0x50, 0xbb, 0x8f, 0x93, 0x03, 0x49, 0x3e, 0xcf, 0xa5, + 0x19, 0x90, 0x4c, 0x61, 0x1d, 0x2c, 0x36, 0x49, 0x14, 0xf5, 0x87, 0xfd, 0x88, 0xf6, 0xbb, 0x7c, + 0x4f, 0x54, 0xb8, 0xf7, 0x56, 0x76, 0x3c, 0xa9, 0xfa, 0x2c, 0x90, 0xee, 0x09, 0x7f, 0x00, 0x2b, + 0x92, 0x48, 0xec, 0x70, 0x97, 0x07, 0xfc, 0xdc, 0x14, 0x30, 0xbf, 0xcf, 0x4d, 0x11, 0xd8, 0x68, + 0xd7, 0x2e, 0x49, 0xf7, 0xaa, 0xf3, 0xd1, 0x6f, 0x53, 0x4c, 0xc7, 0x91, 0xbb, 0xa6, 0x8d, 0xb6, + 0xaa, 0x96, 0x46, 0x5b, 0x55, 0xb0, 0xd1, 0xee, 0x7c, 0xf4, 0x0f, 0x09, 0x0e, 0xe9, 0x1e, 0xc1, + 0xd4, 0x45, 0xda, 0x68, 0xcb, 0x4a, 0x69, 0xb4, 0x65, 0x31, 0xdb, 0x28, 0x27, 0x24, 0x64, 0x9b, + 0xec, 0x33, 0x6d, 0xa3, 0xc4, 0x62, 0x69, 0xa3, 0xc4, 0x02, 0xb6, 0x51, 0x4e, 0x48, 0x28, 0xf6, + 0xe6, 0xba, 0xb6, 0x51, 0x24, 0x9d, 0x34, 0x4d, 0x92, 0x34, 0x49, 0xd9, 0x18, 0x53, 0x77, 0x23, + 0x9f, 0xb2, 0x31, 0xd6, 0x52, 0x36, 0xc6, 0x4a, 0x4a, 0xe6, 0xb6, 0x69, 0x49, 0xa9, 0xf8, 0xca, + 0x1e, 0x6c, 0x5b, 0x9c, 0x90, 0x90, 0x2f, 0xc9, 0x2d, 0x6d, 0x5b, 0x24, 0x72, 0x69, 0x5b, 0x24, + 0x12, 0x36, 0x51, 0x27, 0x24, 0x94, 0xb7, 0xc5, 0x13, 0x6d, 0xa2, 0x54, 0xb5, 0x34, 0x51, 0xaa, + 0x82, 0xad, 0x25, 0x3e, 0x75, 0x6d, 0xd2, 0x0d, 0xfc, 0x1e, 0x0e, 0x6f, 0xd8, 0x0a, 0x8b, 0xdc, + 0xa7, 0xda, 0x5a, 0x32, 0xd8, 0x48, 0x6b, 0xc9, 0xa0, 0x85, 0x0d, 0xb0, 0x20, 0x6d, 0x80, 0x93, + 0x1d, 0xd7, 0xe3, 0x21, 0x9f, 0x57, 0x35, 0xd4, 0x69, 0xe1, 0x6b, 0xc9, 0x4e, 0xba, 0x88, 0x14, + 0x6f, 0xf8, 0x15, 0xb8, 0xf7, 0x7e, 0x38, 0xa2, 0x37, 0xee, 0x7f, 0x63, 0x60, 0x78, 0x6a, 0x44, + 0x13, 0x6e, 0x92, 0xc5, 0x88, 0x5d, 0xf6, 0xee, 0x81, 0xbb, 0xdd, 0x61, 0xcf, 0xfb, 0x1b, 0x04, + 0x8f, 0x34, 0x90, 0x89, 0x46, 0x81, 0x1f, 0x11, 0xb8, 0x0f, 0xe6, 0xc2, 0xe4, 0x3b, 0x45, 0x9f, + 0x17, 0x16, 0xf4, 0x89, 0xad, 0xaa, 0xe9, 0x47, 0x2b, 0x73, 0x9c, 0x4a, 0x3f, 0xf0, 0x15, 0x58, + 0xa5, 0x21, 0xf6, 0x23, 0x46, 0x03, 0xa7, 0x03, 0x7c, 0x43, 0xc2, 0xd3, 0x41, 0x80, 0x7b, 0x1c, + 0x54, 0xca, 0x2d, 0x28, 0x74, 0xc7, 0x4c, 0x75, 0x1c, 0xe0, 0x1e, 0xfa, 0xd3, 0x32, 0x98, 0x15, + 0xad, 0x7c, 0x29, 0x03, 0xd3, 0xaa, 0x0a, 0x4c, 0xb1, 0x49, 0x4a, 0x4c, 0x3f, 0x51, 0x88, 0xe9, + 0x91, 0x46, 0x4c, 0xc2, 0x36, 0x46, 0xa6, 0x37, 0x39, 0x64, 0x5a, 0x33, 0x20, 0x93, 0x70, 0xca, + 0x98, 0x69, 0x5b, 0x63, 0xa6, 0x4a, 0x8e, 0x99, 0x84, 0x53, 0x0a, 0x4d, 0xdb, 0x1a, 0x34, 0x55, + 0x72, 0xd0, 0x94, 0xb9, 0x24, 0xd4, 0xf4, 0x5a, 0xa7, 0x26, 0x37, 0x4f, 0x4d, 0xc2, 0x49, 0x60, + 0xd3, 0x9b, 0x1c, 0x36, 0xad, 0x19, 0xb0, 0x29, 0xeb, 0x94, 0x38, 0x01, 0xbe, 0x31, 0x73, 0xd3, + 0xa6, 0x8d, 0x9b, 0x44, 0x08, 0x0d, 0x9c, 0xde, 0xe4, 0xc0, 0x69, 0xcd, 0x00, 0x4e, 0x59, 0x03, + 0x04, 0x39, 0xed, 0x9a, 0xc8, 0x69, 0xdd, 0x4c, 0x4e, 0xc2, 0x5d, 0x41, 0xa7, 0xe7, 0x12, 0x3a, + 0xad, 0x28, 0xe8, 0x24, 0xec, 0x19, 0x3b, 0xed, 0x9a, 0xd8, 0x69, 0xdd, 0xcc, 0x4e, 0x59, 0x22, + 0xf9, 0xec, 0xd8, 0xd6, 0xe0, 0xa9, 0x92, 0x83, 0xa7, 0x6c, 0x36, 0x13, 0x7a, 0xda, 0x35, 0xd1, + 0xd3, 0xba, 0x99, 0x9e, 0xa4, 0xde, 0x49, 0xf8, 0xb4, 0xad, 0xe1, 0x53, 0x25, 0x87, 0x4f, 0x4a, + 0x52, 0x86, 0x3f, 0xbb, 0x26, 0x7e, 0x5a, 0x37, 0xf3, 0x53, 0x3e, 0x29, 0x8b, 0xf0, 0x55, 0x1e, + 0xa0, 0x90, 0x09, 0xa0, 0x84, 0xb7, 0x44, 0x50, 0x47, 0x16, 0x82, 0xda, 0xb2, 0x12, 0x94, 0x88, + 0xa2, 0x23, 0xd4, 0x6b, 0x1d, 0xa1, 0xdc, 0x3c, 0x42, 0x65, 0x7b, 0x21, 0x65, 0xa8, 0x23, 0x0b, + 0x43, 0x6d, 0x59, 0x19, 0x4a, 0x69, 0x80, 0x3c, 0xe3, 0x35, 0x23, 0x44, 0x6d, 0x58, 0x20, 0x4a, + 0x84, 0x51, 0x29, 0xea, 0x4b, 0x13, 0x45, 0x3d, 0xd2, 0x28, 0x2a, 0x9b, 0x07, 0x19, 0xa3, 0x8e, + 0x6d, 0x18, 0xf5, 0xc4, 0x8e, 0x51, 0x22, 0x52, 0x8e, 0xa3, 0x3e, 0x14, 0x71, 0xd4, 0xb3, 0x62, + 0x8e, 0x12, 0x51, 0x8d, 0x20, 0x75, 0x64, 0x01, 0xa9, 0x2d, 0x2b, 0x48, 0x65, 0x43, 0xae, 0x91, + 0x54, 0xcd, 0x48, 0x52, 0x1b, 0x16, 0x92, 0xca, 0x86, 0x5c, 0x41, 0xa9, 0x6d, 0x0d, 0xa5, 0x2a, + 0x39, 0x94, 0xca, 0x36, 0x4d, 0xc2, 0x52, 0xbb, 0x26, 0x96, 0x5a, 0x37, 0xb3, 0x54, 0x36, 0x59, + 0x32, 0x4c, 0x6d, 0x6b, 0x30, 0x55, 0xc9, 0xc1, 0x94, 0x92, 0xb4, 0x31, 0x56, 0x92, 0x66, 0x34, + 0xb5, 0x6e, 0xa6, 0xa9, 0x7c, 0x52, 0x16, 0xe1, 0xb5, 0x8e, 0x53, 0x6e, 0x1e, 0xa7, 0xb2, 0x2d, + 0x92, 0xf2, 0xd4, 0x91, 0x85, 0xa7, 0xb6, 0xac, 0x3c, 0x95, 0xcd, 0x97, 0x06, 0x54, 0x1f, 0x8a, + 0x80, 0xea, 0x59, 0x31, 0x50, 0x65, 0x8b, 0xca, 0x44, 0x54, 0xbf, 0x31, 0x13, 0xd5, 0x8b, 0x69, + 0x44, 0x95, 0x5d, 0x51, 0x2a, 0x52, 0x7d, 0xad, 0x21, 0x95, 0x57, 0x84, 0x54, 0x22, 0x88, 0xca, + 0x54, 0x7b, 0x60, 0x29, 0xbe, 0xf7, 0xf0, 0x39, 0x6d, 0x90, 0x28, 0xc2, 0x17, 0x04, 0x56, 0x41, + 0x79, 0x18, 0x5d, 0xa4, 0x20, 0x85, 0xaa, 0x6a, 0xad, 0x4a, 0xb2, 0x6c, 0x71, 0x3b, 0xaf, 0x0d, + 0xd6, 0xac, 0x10, 0x07, 0x2b, 0xe0, 0x3e, 0x8d, 0x89, 0x8a, 0x83, 0x4f, 0xb9, 0x35, 0x43, 0x39, + 0x4d, 0xc1, 0x0d, 0x00, 0x7a, 0x64, 0x80, 0x6f, 0x4e, 0x69, 0x7f, 0x48, 0x38, 0xe9, 0x94, 0x5b, + 0x73, 0x5c, 0xd2, 0xe9, 0x0f, 0x89, 0xf7, 0x33, 0x80, 0xec, 0xdd, 0xb0, 0x46, 0xdd, 0xf9, 0xcf, + 0x53, 0x50, 0xee, 0xf4, 0xaf, 0x26, 0xf0, 0x35, 0xb8, 0x57, 0x9f, 0xb0, 0x55, 0x6c, 0xaa, 0x4c, + 0x21, 0x23, 0x7d, 0x79, 0x0e, 0x7c, 0x03, 0x66, 0xea, 0x13, 0xbe, 0xa2, 0x8c, 0x65, 0x2a, 0x64, + 0x46, 0x31, 0xcf, 0x81, 0x35, 0x00, 0xea, 0x13, 0x41, 0x56, 0xd6, 0x9a, 0x15, 0xb2, 0xa3, 0x99, + 0xe7, 0xc0, 0x0f, 0x60, 0xb9, 0x3e, 0xd1, 0x0f, 0xb9, 0x69, 0x0f, 0x4c, 0x34, 0xf5, 0xe8, 0xf4, + 0x1c, 0xd8, 0x03, 0x8f, 0xea, 0x27, 0xa6, 0x83, 0xee, 0x36, 0xaf, 0x4d, 0x74, 0xab, 0xa3, 0xd4, + 0x73, 0xe0, 0x77, 0xe0, 0x61, 0x7d, 0xa2, 0x9c, 0x5b, 0x85, 0x0f, 0x46, 0x54, 0x7c, 0x08, 0x7a, + 0x0e, 0xfc, 0x1e, 0x2c, 0xd5, 0x27, 0xda, 0x79, 0x3a, 0xe5, 0x2d, 0x8b, 0xa6, 0x1d, 0xd1, 0xc9, + 0x68, 0x4c, 0x4c, 0x3b, 0xf4, 0x36, 0xef, 0x25, 0x74, 0xab, 0x33, 0xc0, 0x73, 0xe0, 0xaf, 0xc0, + 0x6c, 0x7d, 0x92, 0x70, 0xb3, 0xa5, 0x1c, 0x89, 0x6c, 0xc8, 0x9d, 0xba, 0x27, 0x0c, 0x6d, 0xa9, + 0x4d, 0x22, 0x1b, 0x7e, 0x7b, 0x0e, 0xdc, 0x05, 0x73, 0xf5, 0x49, 0x4a, 0xd3, 0xb6, 0x42, 0x25, + 0xb2, 0xb2, 0x78, 0xba, 0xa4, 0xc5, 0x65, 0x60, 0xad, 0x5a, 0x22, 0x3b, 0x98, 0x7b, 0x0e, 0x6c, + 0x81, 0xc5, 0x24, 0x88, 0x58, 0x72, 0xc5, 0x25, 0x4c, 0x34, 0x85, 0xd4, 0xd3, 0x86, 0x09, 0xde, + 0xb6, 0xd6, 0x33, 0x91, 0x1d, 0xd8, 0x3d, 0x07, 0x1e, 0x83, 0x85, 0xfa, 0x44, 0xa6, 0xee, 0xa2, + 0xe2, 0x26, 0x2a, 0xe4, 0x77, 0xcf, 0x81, 0xdb, 0xa0, 0x5c, 0x9f, 0x1c, 0xd4, 0xa0, 0xa1, 0xd2, + 0x89, 0x4c, 0x08, 0x9f, 0x36, 0x40, 0xbe, 0x78, 0x8a, 0xca, 0x9e, 0xa8, 0x90, 0xeb, 0x3d, 0x07, + 0x7e, 0x9d, 0xa2, 0x3c, 0xb4, 0x54, 0x40, 0x91, 0x0d, 0xee, 0x3d, 0x07, 0x7e, 0xab, 0x40, 0x3d, + 0x2c, 0x2a, 0x86, 0xa2, 0x42, 0xd6, 0x17, 0x0d, 0x61, 0xcc, 0x6d, 0xa9, 0x8b, 0x22, 0x1b, 0xf0, + 0xab, 0x0d, 0x61, 0x11, 0x8a, 0x4a, 0xa4, 0xa8, 0x90, 0xff, 0x3d, 0x07, 0xee, 0x4b, 0xc8, 0x0f, + 0xed, 0xd5, 0x52, 0x54, 0xf0, 0x0e, 0xf0, 0x1c, 0xd8, 0xd6, 0xe1, 0x1f, 0x4e, 0x29, 0x9c, 0xa2, + 0x69, 0xcf, 0x02, 0xcf, 0x81, 0x6f, 0xc5, 0x33, 0x00, 0xda, 0x6a, 0xa8, 0xc8, 0xfa, 0x32, 0x10, + 0x8d, 0x92, 0xd7, 0xce, 0x94, 0x72, 0x2a, 0x9a, 0xf6, 0x54, 0xf0, 0x1c, 0xd8, 0x50, 0x9f, 0x06, + 0xb0, 0xb0, 0xb2, 0x8a, 0x8a, 0x9f, 0x0c, 0x22, 0xdc, 0x01, 0xa1, 0x75, 0x72, 0xd3, 0xe9, 0x1c, + 0xab, 0xe1, 0x84, 0xd8, 0x18, 0x4e, 0xd2, 0x8a, 0x70, 0xdf, 0x80, 0x65, 0x8e, 0x45, 0xc3, 0x11, + 0x0e, 0xc9, 0x3b, 0xbf, 0xd7, 0xbe, 0xc6, 0x23, 0x75, 0x85, 0xd5, 0xde, 0xb5, 0x8d, 0x2b, 0x8c, + 0xcb, 0xe5, 0xe5, 0x99, 0xf0, 0xb1, 0xa5, 0x1a, 0x89, 0x6c, 0x68, 0x1d, 0x2f, 0x4f, 0x99, 0x8f, + 0x8b, 0x0a, 0x93, 0xa8, 0x90, 0xb4, 0x45, 0x43, 0x1a, 0x63, 0xad, 0x21, 0x8d, 0xb1, 0xb9, 0x21, + 0x8d, 0xb1, 0xa5, 0x21, 0x8d, 0xb1, 0xa9, 0x21, 0x8d, 0x71, 0x41, 0x43, 0xd4, 0x58, 0x6f, 0x05, + 0x70, 0x43, 0x5b, 0xe5, 0x12, 0x59, 0x19, 0x3c, 0x5e, 0x8c, 0x1a, 0x41, 0x4f, 0x29, 0x62, 0xa2, + 0x69, 0x50, 0xee, 0x39, 0xf0, 0x14, 0xc0, 0xef, 0xfd, 0x08, 0x9f, 0x93, 0x7d, 0x12, 0xd1, 0x30, + 0xb8, 0x89, 0x03, 0x7b, 0xc2, 0x31, 0xaf, 0x4c, 0x83, 0x7f, 0x5e, 0x68, 0x23, 0x12, 0x10, 0xb0, + 0xda, 0x22, 0x17, 0xfd, 0x88, 0x92, 0x90, 0x1d, 0xe5, 0xdf, 0x9d, 0xc5, 0x7c, 0x0b, 0x9f, 0x49, + 0x07, 0x7d, 0x5e, 0x9d, 0x26, 0x79, 0x3e, 0xc5, 0x4a, 0xa4, 0xf9, 0x1d, 0x58, 0xe6, 0x90, 0xa0, + 0xe4, 0x78, 0xaa, 0x02, 0x84, 0x29, 0x81, 0x57, 0x64, 0x22, 0x8f, 0x52, 0x8b, 0x0c, 0x83, 0xf8, + 0x36, 0x12, 0xe1, 0x3d, 0xa9, 0x71, 0xba, 0x32, 0x3f, 0x4a, 0x26, 0x1b, 0x91, 0xe0, 0xb7, 0x60, + 0xa9, 0x79, 0x79, 0x13, 0xf5, 0xbb, 0x78, 0x20, 0xee, 0x5b, 0x09, 0x37, 0x35, 0x55, 0x1a, 0xfc, + 0x69, 0x81, 0x85, 0x08, 0xfd, 0x4b, 0xa5, 0x88, 0x00, 0x8d, 0x7f, 0x84, 0x41, 0xe6, 0xa2, 0x02, + 0x3f, 0xdc, 0x97, 0x25, 0xef, 0x36, 0x0d, 0x09, 0x1e, 0xfe, 0x9f, 0x31, 0x5e, 0x95, 0x60, 0x23, + 0x79, 0xfc, 0xc8, 0x0d, 0x59, 0x53, 0xcc, 0x63, 0x04, 0x11, 0x37, 0x85, 0x41, 0x25, 0x85, 0xfb, + 0xbd, 0xf6, 0xbe, 0x83, 0xb7, 0xab, 0x95, 0xa3, 0x5b, 0x3e, 0x00, 0xf9, 0xa1, 0x51, 0x66, 0xcf, + 0x2f, 0x58, 0xf0, 0x26, 0x43, 0x2b, 0x9a, 0x6e, 0x3f, 0xf0, 0x89, 0xe7, 0xbc, 0x2c, 0xc1, 0xb7, + 0x60, 0x4e, 0x3c, 0xf5, 0xa0, 0xab, 0xbc, 0x15, 0x6f, 0xe5, 0xff, 0x0e, 0xcc, 0xb6, 0x7d, 0x3c, + 0x8a, 0x2e, 0x03, 0xc6, 0xf5, 0xaa, 0x51, 0xaa, 0xa8, 0x5d, 0x8e, 0xfd, 0x2b, 0x7b, 0x88, 0x6f, + 0xc1, 0x7c, 0x7b, 0x34, 0x60, 0x98, 0x7b, 0xd1, 0x0f, 0x7c, 0xe9, 0xdc, 0x92, 0xa4, 0xf9, 0x73, + 0x4b, 0x51, 0x2a, 0xf7, 0x3b, 0xc1, 0xbd, 0x23, 0xbf, 0x47, 0x3e, 0xca, 0xf7, 0x7b, 0x2a, 0x33, + 0xdc, 0xef, 0x99, 0x4a, 0xbe, 0xa6, 0x1a, 0x93, 0x6e, 0xf7, 0x80, 0xd0, 0xbd, 0x9b, 0x3a, 0xb9, + 0x91, 0xae, 0x29, 0x59, 0x9c, 0xbf, 0xa6, 0x54, 0xad, 0xbc, 0x61, 0x84, 0xa6, 0x4d, 0x71, 0x48, + 0x3b, 0x91, 0xb4, 0x61, 0x74, 0x55, 0x7e, 0xc3, 0xe4, 0x2d, 0x24, 0x92, 0x5e, 0x50, 0x1e, 0xc4, + 0x70, 0xbd, 0xe8, 0x9f, 0x3b, 0xd0, 0x46, 0xe1, 0xdf, 0x3f, 0xd8, 0x6c, 0xbc, 0x2a, 0xc1, 0x43, + 0xb0, 0xb8, 0xdf, 0x8f, 0x46, 0xfc, 0x52, 0x68, 0x36, 0x3b, 0x38, 0x62, 0x38, 0x3d, 0x1c, 0x8d, + 0xaa, 0xa9, 0x94, 0x89, 0x32, 0x9c, 0xce, 0x6b, 0x44, 0xeb, 0xf6, 0xc0, 0x42, 0x0d, 0xfb, 0x5d, + 0x32, 0x48, 0xe3, 0x3c, 0xe6, 0xd6, 0xb1, 0x4c, 0x8e, 0x52, 0xc9, 0xc9, 0x45, 0x8c, 0x0e, 0x78, + 0xfc, 0x3e, 0xa2, 0xf8, 0x6c, 0xd0, 0x8f, 0x58, 0x73, 0x6a, 0x81, 0xef, 0x93, 0x2e, 0x65, 0x0b, + 0xc5, 0xe3, 0x4e, 0x66, 0x65, 0x1a, 0x18, 0x72, 0x9b, 0x46, 0xb3, 0xb9, 0x8f, 0x29, 0x6e, 0xe2, + 0xee, 0x15, 0xa1, 0x7c, 0x57, 0x1e, 0x82, 0xf9, 0xf8, 0x0c, 0x25, 0xb8, 0x47, 0x42, 0x69, 0xcd, + 0x49, 0xd2, 0xfc, 0x9a, 0x53, 0x94, 0x49, 0xd1, 0xa1, 0x0e, 0x1e, 0x1e, 0x10, 0xda, 0xa6, 0x41, + 0x48, 0xda, 0xf8, 0x9c, 0x74, 0xda, 0xf2, 0x02, 0xce, 0xa4, 0x86, 0x05, 0x2c, 0x2b, 0x93, 0x60, + 0x1d, 0xb0, 0x78, 0x40, 0x28, 0x3b, 0x14, 0x7f, 0xc0, 0x7d, 0x7a, 0xe4, 0x9f, 0x07, 0xd2, 0x4b, + 0x5f, 0xd3, 0xe4, 0x5f, 0xfa, 0x39, 0x83, 0x38, 0xea, 0xde, 0x8b, 0xbf, 0xff, 0x79, 0xb6, 0xf4, + 0x97, 0x4f, 0x9b, 0xa5, 0xbf, 0x7e, 0xda, 0x2c, 0xfd, 0xe3, 0xd3, 0x66, 0xe9, 0x8f, 0xff, 0xdc, + 0x74, 0xc0, 0x52, 0x10, 0x5e, 0xf0, 0xe5, 0x50, 0xbd, 0x9a, 0xf0, 0xff, 0x21, 0x3a, 0x9b, 0xe1, + 0x3f, 0xbe, 0xf8, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x9c, 0x3b, 0x09, 0xd8, 0xe1, 0x24, 0x00, + 0x00, } diff --git a/proto/deadlock.proto b/proto/deadlock.proto index 582961659..9e9a8b96d 100644 --- a/proto/deadlock.proto +++ b/proto/deadlock.proto @@ -17,6 +17,14 @@ message WaitForEntry { uint64 wait_for_txn = 2; // The hash value of the key is being waited for. uint64 key_hash = 3; + // The key the current txn is trying to lock. + bytes key = 4; + // The key that is being waited for. It can be different from `key` since they are checked by hash. + bytes wait_for_key_hash = 5; + // The sql that needs to wait for the lock. + string sql_digest = 6; + // Milliseconds it has been waits. + uint64 wait_time = 7; } enum DeadlockRequestType { @@ -37,6 +45,8 @@ message DeadlockResponse { WaitForEntry entry = 1 [(gogoproto.nullable) = false]; // The key hash of the lock that is hold by the waiting transaction. uint64 deadlock_key_hash = 2; + // The other entries of the dead lock circle. + repeated WaitForEntry wait_chain = 3; } service Deadlock { diff --git a/proto/kvrpcpb.proto b/proto/kvrpcpb.proto index bbbb0498b..3632e79ab 100644 --- a/proto/kvrpcpb.proto +++ b/proto/kvrpcpb.proto @@ -5,6 +5,7 @@ import "metapb.proto"; import "errorpb.proto"; import "gogoproto/gogo.proto"; import "rustproto.proto"; +import "deadlock.proto"; option (gogoproto.marshaler_all) = true; option (gogoproto.sizer_all) = true; @@ -149,6 +150,9 @@ message PessimisticLockRequest { // If min_commit_ts > 0, this is large transaction proto, the final commit_ts // would be infered from min_commit_ts. uint64 min_commit_ts = 11; + + // The digest of the SQL that's acquiring the lock. + string sql_digest = 12; } message PessimisticLockResponse { @@ -824,6 +828,7 @@ message Deadlock { uint64 lock_ts = 1; bytes lock_key = 2; uint64 deadlock_key_hash = 3; + repeated deadlock.WaitForEntry wait_chain = 4; } message CommitTsExpired { @@ -1077,3 +1082,14 @@ message RawCASResponse { bytes previous_value = 5; } +message GetLockWaitInfoRequest { + Context context = 1; + // TODO: There may need some filter options to be used on conditional querying, e.g., finding + // the lock waiting status for some specified transaction. +} + +message GetLockWaitInfoResponse { + errorpb.Error region_error = 1; + string error = 2; + repeated deadlock.WaitForEntry entries = 3; +} diff --git a/proto/tikvpb.proto b/proto/tikvpb.proto index d2f3f8acd..1dab25d95 100644 --- a/proto/tikvpb.proto +++ b/proto/tikvpb.proto @@ -108,6 +108,9 @@ service Tikv { /// Get the minimal `safe_ts` from regions at the store rpc GetStoreSafeTS(kvrpcpb.StoreSafeTSRequest) returns (kvrpcpb.StoreSafeTSResponse); + + /// Get the information about lock waiting from TiKV. + rpc GetLockWaitInfo(kvrpcpb.GetLockWaitInfoRequest) returns (kvrpcpb.GetLockWaitInfoResponse); } message BatchCommandsRequest { From 5bccc139b37386b4480e5262049930a2276d27b2 Mon Sep 17 00:00:00 2001 From: MyonKeminta Date: Thu, 22 Apr 2021 10:02:20 +0000 Subject: [PATCH 2/4] Add comments --- pkg/deadlock/deadlock.pb.go | 19 ++++++++++--------- proto/deadlock.proto | 3 ++- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/pkg/deadlock/deadlock.pb.go b/pkg/deadlock/deadlock.pb.go index 67acb918c..9e817fc0d 100644 --- a/pkg/deadlock/deadlock.pb.go +++ b/pkg/deadlock/deadlock.pb.go @@ -53,7 +53,7 @@ func (x DeadlockRequestType) String() string { return proto.EnumName(DeadlockRequestType_name, int32(x)) } func (DeadlockRequestType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_deadlock_6374d0ff2c4885de, []int{0} + return fileDescriptor_deadlock_5c016546d55a2f58, []int{0} } type WaitForEntriesRequest struct { @@ -66,7 +66,7 @@ func (m *WaitForEntriesRequest) Reset() { *m = WaitForEntriesRequest{} } func (m *WaitForEntriesRequest) String() string { return proto.CompactTextString(m) } func (*WaitForEntriesRequest) ProtoMessage() {} func (*WaitForEntriesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_deadlock_6374d0ff2c4885de, []int{0} + return fileDescriptor_deadlock_5c016546d55a2f58, []int{0} } func (m *WaitForEntriesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -106,7 +106,7 @@ func (m *WaitForEntriesResponse) Reset() { *m = WaitForEntriesResponse{} func (m *WaitForEntriesResponse) String() string { return proto.CompactTextString(m) } func (*WaitForEntriesResponse) ProtoMessage() {} func (*WaitForEntriesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_deadlock_6374d0ff2c4885de, []int{1} + return fileDescriptor_deadlock_5c016546d55a2f58, []int{1} } func (m *WaitForEntriesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -166,7 +166,7 @@ func (m *WaitForEntry) Reset() { *m = WaitForEntry{} } func (m *WaitForEntry) String() string { return proto.CompactTextString(m) } func (*WaitForEntry) ProtoMessage() {} func (*WaitForEntry) Descriptor() ([]byte, []int) { - return fileDescriptor_deadlock_6374d0ff2c4885de, []int{2} + return fileDescriptor_deadlock_5c016546d55a2f58, []int{2} } func (m *WaitForEntry) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -256,7 +256,7 @@ func (m *DeadlockRequest) Reset() { *m = DeadlockRequest{} } func (m *DeadlockRequest) String() string { return proto.CompactTextString(m) } func (*DeadlockRequest) ProtoMessage() {} func (*DeadlockRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_deadlock_6374d0ff2c4885de, []int{3} + return fileDescriptor_deadlock_5c016546d55a2f58, []int{3} } func (m *DeadlockRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -304,7 +304,8 @@ type DeadlockResponse struct { Entry WaitForEntry `protobuf:"bytes,1,opt,name=entry" json:"entry"` // The key hash of the lock that is hold by the waiting transaction. DeadlockKeyHash uint64 `protobuf:"varint,2,opt,name=deadlock_key_hash,json=deadlockKeyHash,proto3" json:"deadlock_key_hash,omitempty"` - // The other entries of the dead lock circle. + // The other entries of the dead lock circle. The current entry is in `entry` field and not + // included in this field. WaitChain []*WaitForEntry `protobuf:"bytes,3,rep,name=wait_chain,json=waitChain" json:"wait_chain,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` @@ -315,7 +316,7 @@ func (m *DeadlockResponse) Reset() { *m = DeadlockResponse{} } func (m *DeadlockResponse) String() string { return proto.CompactTextString(m) } func (*DeadlockResponse) ProtoMessage() {} func (*DeadlockResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_deadlock_6374d0ff2c4885de, []int{4} + return fileDescriptor_deadlock_5c016546d55a2f58, []int{4} } func (m *DeadlockResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1515,9 +1516,9 @@ var ( ErrIntOverflowDeadlock = fmt.Errorf("proto: integer overflow") ) -func init() { proto.RegisterFile("deadlock.proto", fileDescriptor_deadlock_6374d0ff2c4885de) } +func init() { proto.RegisterFile("deadlock.proto", fileDescriptor_deadlock_5c016546d55a2f58) } -var fileDescriptor_deadlock_6374d0ff2c4885de = []byte{ +var fileDescriptor_deadlock_5c016546d55a2f58 = []byte{ // 471 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x53, 0xcd, 0x6e, 0xd3, 0x40, 0x10, 0xce, 0x26, 0x69, 0x7e, 0xa6, 0x51, 0xea, 0x0c, 0x50, 0xdc, 0xa0, 0xa6, 0x96, 0x4f, 0xa6, diff --git a/proto/deadlock.proto b/proto/deadlock.proto index 9e9a8b96d..ba090a78b 100644 --- a/proto/deadlock.proto +++ b/proto/deadlock.proto @@ -45,7 +45,8 @@ message DeadlockResponse { WaitForEntry entry = 1 [(gogoproto.nullable) = false]; // The key hash of the lock that is hold by the waiting transaction. uint64 deadlock_key_hash = 2; - // The other entries of the dead lock circle. + // The other entries of the dead lock circle. The current entry is in `entry` field and not + // included in this field. repeated WaitForEntry wait_chain = 3; } From 64380309611cdce52bd67222c574e60ef8d652c7 Mon Sep 17 00:00:00 2001 From: MyonKeminta Date: Fri, 23 Apr 2021 04:53:29 +0000 Subject: [PATCH 3/4] Remove a mistake field --- pkg/deadlock/deadlock.pb.go | 139 ++++++++++++------------------------ proto/deadlock.proto | 6 +- 2 files changed, 46 insertions(+), 99 deletions(-) diff --git a/pkg/deadlock/deadlock.pb.go b/pkg/deadlock/deadlock.pb.go index 9e817fc0d..a543aa93a 100644 --- a/pkg/deadlock/deadlock.pb.go +++ b/pkg/deadlock/deadlock.pb.go @@ -53,7 +53,7 @@ func (x DeadlockRequestType) String() string { return proto.EnumName(DeadlockRequestType_name, int32(x)) } func (DeadlockRequestType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_deadlock_5c016546d55a2f58, []int{0} + return fileDescriptor_deadlock_85eba94e18b6a920, []int{0} } type WaitForEntriesRequest struct { @@ -66,7 +66,7 @@ func (m *WaitForEntriesRequest) Reset() { *m = WaitForEntriesRequest{} } func (m *WaitForEntriesRequest) String() string { return proto.CompactTextString(m) } func (*WaitForEntriesRequest) ProtoMessage() {} func (*WaitForEntriesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_deadlock_5c016546d55a2f58, []int{0} + return fileDescriptor_deadlock_85eba94e18b6a920, []int{0} } func (m *WaitForEntriesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -106,7 +106,7 @@ func (m *WaitForEntriesResponse) Reset() { *m = WaitForEntriesResponse{} func (m *WaitForEntriesResponse) String() string { return proto.CompactTextString(m) } func (*WaitForEntriesResponse) ProtoMessage() {} func (*WaitForEntriesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_deadlock_5c016546d55a2f58, []int{1} + return fileDescriptor_deadlock_85eba94e18b6a920, []int{1} } func (m *WaitForEntriesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -151,12 +151,10 @@ type WaitForEntry struct { KeyHash uint64 `protobuf:"varint,3,opt,name=key_hash,json=keyHash,proto3" json:"key_hash,omitempty"` // The key the current txn is trying to lock. Key []byte `protobuf:"bytes,4,opt,name=key,proto3" json:"key,omitempty"` - // The key that is being waited for. It can be different from `key` since they are checked by hash. - WaitForKeyHash []byte `protobuf:"bytes,5,opt,name=wait_for_key_hash,json=waitForKeyHash,proto3" json:"wait_for_key_hash,omitempty"` // The sql that needs to wait for the lock. - SqlDigest string `protobuf:"bytes,6,opt,name=sql_digest,json=sqlDigest,proto3" json:"sql_digest,omitempty"` + SqlDigest string `protobuf:"bytes,5,opt,name=sql_digest,json=sqlDigest,proto3" json:"sql_digest,omitempty"` // Milliseconds it has been waits. - WaitTime uint64 `protobuf:"varint,7,opt,name=wait_time,json=waitTime,proto3" json:"wait_time,omitempty"` + WaitTime uint64 `protobuf:"varint,6,opt,name=wait_time,json=waitTime,proto3" json:"wait_time,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -166,7 +164,7 @@ func (m *WaitForEntry) Reset() { *m = WaitForEntry{} } func (m *WaitForEntry) String() string { return proto.CompactTextString(m) } func (*WaitForEntry) ProtoMessage() {} func (*WaitForEntry) Descriptor() ([]byte, []int) { - return fileDescriptor_deadlock_5c016546d55a2f58, []int{2} + return fileDescriptor_deadlock_85eba94e18b6a920, []int{2} } func (m *WaitForEntry) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -223,13 +221,6 @@ func (m *WaitForEntry) GetKey() []byte { return nil } -func (m *WaitForEntry) GetWaitForKeyHash() []byte { - if m != nil { - return m.WaitForKeyHash - } - return nil -} - func (m *WaitForEntry) GetSqlDigest() string { if m != nil { return m.SqlDigest @@ -256,7 +247,7 @@ func (m *DeadlockRequest) Reset() { *m = DeadlockRequest{} } func (m *DeadlockRequest) String() string { return proto.CompactTextString(m) } func (*DeadlockRequest) ProtoMessage() {} func (*DeadlockRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_deadlock_5c016546d55a2f58, []int{3} + return fileDescriptor_deadlock_85eba94e18b6a920, []int{3} } func (m *DeadlockRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -316,7 +307,7 @@ func (m *DeadlockResponse) Reset() { *m = DeadlockResponse{} } func (m *DeadlockResponse) String() string { return proto.CompactTextString(m) } func (*DeadlockResponse) ProtoMessage() {} func (*DeadlockResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_deadlock_5c016546d55a2f58, []int{4} + return fileDescriptor_deadlock_85eba94e18b6a920, []int{4} } func (m *DeadlockResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -613,20 +604,14 @@ func (m *WaitForEntry) MarshalTo(dAtA []byte) (int, error) { i = encodeVarintDeadlock(dAtA, i, uint64(len(m.Key))) i += copy(dAtA[i:], m.Key) } - if len(m.WaitForKeyHash) > 0 { - dAtA[i] = 0x2a - i++ - i = encodeVarintDeadlock(dAtA, i, uint64(len(m.WaitForKeyHash))) - i += copy(dAtA[i:], m.WaitForKeyHash) - } if len(m.SqlDigest) > 0 { - dAtA[i] = 0x32 + dAtA[i] = 0x2a i++ i = encodeVarintDeadlock(dAtA, i, uint64(len(m.SqlDigest))) i += copy(dAtA[i:], m.SqlDigest) } if m.WaitTime != 0 { - dAtA[i] = 0x38 + dAtA[i] = 0x30 i++ i = encodeVarintDeadlock(dAtA, i, uint64(m.WaitTime)) } @@ -765,10 +750,6 @@ func (m *WaitForEntry) Size() (n int) { if l > 0 { n += 1 + l + sovDeadlock(uint64(l)) } - l = len(m.WaitForKeyHash) - if l > 0 { - n += 1 + l + sovDeadlock(uint64(l)) - } l = len(m.SqlDigest) if l > 0 { n += 1 + l + sovDeadlock(uint64(l)) @@ -1080,37 +1061,6 @@ func (m *WaitForEntry) Unmarshal(dAtA []byte) error { } iNdEx = postIndex case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field WaitForKeyHash", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowDeadlock - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthDeadlock - } - postIndex := iNdEx + byteLen - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.WaitForKeyHash = append(m.WaitForKeyHash[:0], dAtA[iNdEx:postIndex]...) - if m.WaitForKeyHash == nil { - m.WaitForKeyHash = []byte{} - } - iNdEx = postIndex - case 6: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field SqlDigest", wireType) } @@ -1139,7 +1089,7 @@ func (m *WaitForEntry) Unmarshal(dAtA []byte) error { } m.SqlDigest = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 7: + case 6: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field WaitTime", wireType) } @@ -1516,38 +1466,37 @@ var ( ErrIntOverflowDeadlock = fmt.Errorf("proto: integer overflow") ) -func init() { proto.RegisterFile("deadlock.proto", fileDescriptor_deadlock_5c016546d55a2f58) } - -var fileDescriptor_deadlock_5c016546d55a2f58 = []byte{ - // 471 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x53, 0xcd, 0x6e, 0xd3, 0x40, - 0x10, 0xce, 0x26, 0x69, 0x7e, 0xa6, 0x51, 0xea, 0x0c, 0x50, 0xdc, 0xa0, 0xa6, 0x96, 0x4f, 0xa6, - 0x12, 0x05, 0x05, 0xc1, 0x03, 0xa4, 0x29, 0x20, 0x71, 0x41, 0x56, 0x10, 0xdc, 0x2c, 0x93, 0x0c, - 0x89, 0x95, 0xd4, 0xeb, 0x64, 0x17, 0xb5, 0x7e, 0x13, 0x5e, 0x01, 0xf1, 0x22, 0x3d, 0x72, 0xe2, - 0x88, 0x50, 0x78, 0x11, 0xb4, 0x6b, 0x6f, 0x5c, 0xaa, 0x14, 0xb8, 0x8d, 0xbf, 0xef, 0x9b, 0x6f, - 0x77, 0xbe, 0x59, 0x43, 0x7b, 0x42, 0xe1, 0x64, 0xc1, 0xc7, 0xf3, 0x93, 0x64, 0xc5, 0x25, 0xc7, - 0x86, 0xf9, 0xee, 0xde, 0x9d, 0xf2, 0x29, 0xd7, 0xe0, 0x63, 0x55, 0x65, 0xbc, 0x7b, 0x1f, 0xee, - 0xbd, 0x0b, 0x23, 0xf9, 0x82, 0xaf, 0xce, 0x62, 0xb9, 0x8a, 0x48, 0xf8, 0xb4, 0xfc, 0x44, 0x42, - 0xba, 0x6f, 0x60, 0xff, 0x26, 0x21, 0x12, 0x1e, 0x0b, 0xc2, 0xe7, 0x50, 0xa7, 0x0c, 0xb2, 0x99, - 0x53, 0xf1, 0x76, 0xfb, 0xfb, 0x27, 0x9b, 0x43, 0xaf, 0xb5, 0xa4, 0x83, 0xea, 0xd5, 0x8f, 0xa3, - 0x92, 0x6f, 0xc4, 0xee, 0x77, 0x06, 0xad, 0xeb, 0x3c, 0x5a, 0x50, 0x91, 0x97, 0xb1, 0xcd, 0x1c, - 0xe6, 0x55, 0x7d, 0x55, 0xa2, 0x03, 0xad, 0x8b, 0x30, 0x92, 0xc1, 0x47, 0xbe, 0x0a, 0x14, 0x55, - 0xd6, 0x14, 0x5c, 0x64, 0x5d, 0xa3, 0xcb, 0x18, 0x0f, 0xa0, 0x31, 0xa7, 0x34, 0x98, 0x85, 0x62, - 0x66, 0x57, 0x34, 0x5b, 0x9f, 0x53, 0xfa, 0x2a, 0x14, 0x33, 0x65, 0x37, 0xa7, 0xd4, 0xae, 0x3a, - 0xcc, 0x6b, 0xf9, 0xaa, 0xc4, 0x87, 0xd0, 0xd9, 0xd8, 0x6d, 0xba, 0x76, 0x34, 0xdf, 0xce, 0x3d, - 0x5f, 0xe7, 0xcd, 0x87, 0x00, 0x62, 0xb9, 0x08, 0x26, 0xd1, 0x94, 0x84, 0xb4, 0x6b, 0x0e, 0xf3, - 0x9a, 0x7e, 0x53, 0x2c, 0x17, 0x43, 0x0d, 0xe0, 0x03, 0x68, 0x6a, 0x27, 0x19, 0x9d, 0x93, 0x5d, - 0xd7, 0xe7, 0x36, 0x14, 0x30, 0x8a, 0xce, 0xc9, 0x95, 0xb0, 0x37, 0xcc, 0x03, 0xc8, 0xd3, 0xc3, - 0x47, 0x50, 0x96, 0x89, 0x9e, 0xac, 0xdd, 0x3f, 0x2c, 0xe2, 0xb9, 0x21, 0x1b, 0xa5, 0x09, 0xf9, - 0x65, 0x99, 0x60, 0x1f, 0x76, 0x54, 0x4a, 0xa9, 0x1e, 0xf8, 0x5f, 0x81, 0x66, 0x52, 0xf7, 0x0b, - 0x03, 0xab, 0xf0, 0xcb, 0x77, 0xb3, 0x31, 0x62, 0xff, 0x6d, 0x84, 0xc7, 0xd0, 0x31, 0xaa, 0x22, - 0xa5, 0x2c, 0xf9, 0x3d, 0x43, 0x98, 0x98, 0x9e, 0x81, 0x5e, 0x46, 0x30, 0x9e, 0x85, 0x51, 0x6c, - 0x57, 0xfe, 0xb6, 0x7e, 0x5f, 0x27, 0x76, 0xaa, 0x84, 0xc7, 0x03, 0xb8, 0xb3, 0x65, 0x74, 0x04, - 0xa8, 0x0d, 0x49, 0xd2, 0x58, 0x5a, 0x25, 0x44, 0x68, 0x9f, 0x2e, 0x28, 0x8c, 0xdf, 0x26, 0xb9, - 0x89, 0xc5, 0x70, 0x17, 0xea, 0x39, 0x66, 0x95, 0xfb, 0x5f, 0x19, 0x34, 0x8c, 0x09, 0xbe, 0x87, - 0xce, 0x4b, 0x92, 0x7f, 0x3e, 0x50, 0x3c, 0xda, 0x7a, 0x91, 0xe2, 0x4d, 0x77, 0x9d, 0xdb, 0x05, - 0x59, 0x7e, 0x6e, 0x09, 0xcf, 0xcc, 0x9d, 0xf0, 0xe0, 0xd6, 0xbd, 0x75, 0xbb, 0xdb, 0x28, 0x63, - 0xe1, 0xb1, 0x27, 0x6c, 0x60, 0x5d, 0xad, 0x7b, 0xec, 0xdb, 0xba, 0xc7, 0x7e, 0xae, 0x7b, 0xec, - 0xf3, 0xaf, 0x5e, 0xe9, 0x43, 0x4d, 0xff, 0x70, 0x4f, 0x7f, 0x07, 0x00, 0x00, 0xff, 0xff, 0x6b, - 0x9b, 0x60, 0xa1, 0xa2, 0x03, 0x00, 0x00, +func init() { proto.RegisterFile("deadlock.proto", fileDescriptor_deadlock_85eba94e18b6a920) } + +var fileDescriptor_deadlock_85eba94e18b6a920 = []byte{ + // 458 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x53, 0x5d, 0x6e, 0xd3, 0x40, + 0x18, 0xcc, 0x26, 0x69, 0x7e, 0xbe, 0x46, 0xa9, 0xfb, 0x01, 0xc5, 0x0d, 0x6a, 0x6a, 0xf9, 0xc9, + 0xaa, 0x44, 0x41, 0x41, 0x70, 0x80, 0x34, 0x05, 0x24, 0x5e, 0x90, 0x15, 0x04, 0x6f, 0x96, 0x49, + 0x3e, 0x12, 0xcb, 0xae, 0xd7, 0xf1, 0x2e, 0x6a, 0x7d, 0x13, 0xae, 0x80, 0x7a, 0x91, 0x3e, 0x72, + 0x02, 0x84, 0xc2, 0x45, 0xd0, 0xae, 0xed, 0xa4, 0x54, 0x09, 0xf4, 0x6d, 0x3d, 0x33, 0x3b, 0xfb, + 0xcd, 0xec, 0x1a, 0xba, 0x53, 0xf2, 0xa7, 0x11, 0x9f, 0x84, 0xa7, 0x49, 0xca, 0x25, 0xc7, 0x56, + 0xf9, 0xdd, 0x7b, 0x38, 0xe3, 0x33, 0xae, 0xc1, 0x67, 0x6a, 0x95, 0xf3, 0xf6, 0x63, 0x78, 0xf4, + 0xd1, 0x0f, 0xe4, 0x6b, 0x9e, 0x9e, 0xc7, 0x32, 0x0d, 0x48, 0xb8, 0xb4, 0xf8, 0x4a, 0x42, 0xda, + 0xef, 0xe1, 0xe0, 0x2e, 0x21, 0x12, 0x1e, 0x0b, 0xc2, 0x57, 0xd0, 0xa4, 0x1c, 0x32, 0x99, 0x55, + 0x73, 0x76, 0x07, 0x07, 0xa7, 0xab, 0x43, 0x6f, 0x6d, 0xc9, 0x86, 0xf5, 0x9b, 0x9f, 0xc7, 0x15, + 0xb7, 0x14, 0xdb, 0xd7, 0x0c, 0x3a, 0xb7, 0x79, 0x34, 0xa0, 0x26, 0xaf, 0x62, 0x93, 0x59, 0xcc, + 0xa9, 0xbb, 0x6a, 0x89, 0x16, 0x74, 0x2e, 0xfd, 0x40, 0x7a, 0x5f, 0x78, 0xea, 0x29, 0xaa, 0xaa, + 0x29, 0xb8, 0xcc, 0x77, 0x8d, 0xaf, 0x62, 0x3c, 0x84, 0x56, 0x48, 0x99, 0x37, 0xf7, 0xc5, 0xdc, + 0xac, 0x69, 0xb6, 0x19, 0x52, 0xf6, 0xd6, 0x17, 0x73, 0x65, 0x17, 0x52, 0x66, 0xd6, 0x2d, 0xe6, + 0x74, 0x5c, 0xb5, 0xc4, 0x23, 0x00, 0xb1, 0x88, 0xbc, 0x69, 0x30, 0x23, 0x21, 0xcd, 0x1d, 0x8b, + 0x39, 0x6d, 0xb7, 0x2d, 0x16, 0xd1, 0x48, 0x03, 0xf8, 0x04, 0xda, 0xfa, 0x34, 0x19, 0x5c, 0x90, + 0xd9, 0xd0, 0x66, 0x2d, 0x05, 0x8c, 0x83, 0x0b, 0xb2, 0x25, 0xec, 0x8d, 0x8a, 0x54, 0x45, 0x25, + 0xf8, 0x14, 0xaa, 0x32, 0xd1, 0xe3, 0x76, 0x07, 0x47, 0xeb, 0xcc, 0x77, 0x64, 0xe3, 0x2c, 0x21, + 0xb7, 0x2a, 0x13, 0x1c, 0xc0, 0x8e, 0x8a, 0x9e, 0xe9, 0x14, 0xff, 0x6b, 0x29, 0x97, 0xda, 0xdf, + 0x19, 0x18, 0x6b, 0xbf, 0xa2, 0xf0, 0x95, 0x11, 0xbb, 0xb7, 0x11, 0x9e, 0xc0, 0x7e, 0xa9, 0xf2, + 0x56, 0x85, 0xe5, 0x75, 0xee, 0x95, 0xc4, 0xbb, 0xa2, 0xb8, 0x97, 0xa0, 0x1b, 0xf6, 0x26, 0x73, + 0x3f, 0x88, 0xcd, 0xda, 0xbf, 0xee, 0xd4, 0xd5, 0x8d, 0x9d, 0x29, 0xe1, 0xc9, 0x10, 0x1e, 0x6c, + 0x88, 0x8e, 0x00, 0x8d, 0x11, 0x49, 0x9a, 0x48, 0xa3, 0x82, 0x08, 0xdd, 0xb3, 0x88, 0xfc, 0xf8, + 0x43, 0x52, 0x98, 0x18, 0x0c, 0x77, 0xa1, 0x59, 0x60, 0x46, 0x75, 0x70, 0xcd, 0xa0, 0x55, 0x9a, + 0xe0, 0x27, 0xd8, 0x7f, 0x43, 0xf2, 0xef, 0x57, 0x87, 0xc7, 0x1b, 0x07, 0x59, 0x3f, 0xd4, 0x9e, + 0xb5, 0x5d, 0x90, 0xf7, 0x67, 0x57, 0xf0, 0xbc, 0x9c, 0x09, 0x0f, 0xb7, 0xde, 0x5b, 0xaf, 0xb7, + 0x89, 0x2a, 0x2d, 0x1c, 0xf6, 0x9c, 0x0d, 0x8d, 0x9b, 0x65, 0x9f, 0xfd, 0x58, 0xf6, 0xd9, 0xaf, + 0x65, 0x9f, 0x7d, 0xfb, 0xdd, 0xaf, 0x7c, 0x6e, 0xe8, 0xbf, 0xe8, 0xc5, 0x9f, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x82, 0x0a, 0x2c, 0xfc, 0x77, 0x03, 0x00, 0x00, } diff --git a/proto/deadlock.proto b/proto/deadlock.proto index ba090a78b..8cc09d4bd 100644 --- a/proto/deadlock.proto +++ b/proto/deadlock.proto @@ -19,12 +19,10 @@ message WaitForEntry { uint64 key_hash = 3; // The key the current txn is trying to lock. bytes key = 4; - // The key that is being waited for. It can be different from `key` since they are checked by hash. - bytes wait_for_key_hash = 5; // The sql that needs to wait for the lock. - string sql_digest = 6; + string sql_digest = 5; // Milliseconds it has been waits. - uint64 wait_time = 7; + uint64 wait_time = 6; } enum DeadlockRequestType { From 739cf7f75a058e72032d9f582094f9d600cca00f Mon Sep 17 00:00:00 2001 From: MyonKeminta Date: Fri, 23 Apr 2021 12:53:57 +0000 Subject: [PATCH 4/4] Change sql digest to resource_group_tag --- pkg/deadlock/deadlock.pb.go | 113 ++--- pkg/kvrpcpb/kvrpcpb.pb.go | 932 ++++++++++++++++++------------------ proto/deadlock.proto | 4 +- proto/kvrpcpb.proto | 6 +- 4 files changed, 531 insertions(+), 524 deletions(-) diff --git a/pkg/deadlock/deadlock.pb.go b/pkg/deadlock/deadlock.pb.go index a543aa93a..86d48ea48 100644 --- a/pkg/deadlock/deadlock.pb.go +++ b/pkg/deadlock/deadlock.pb.go @@ -53,7 +53,7 @@ func (x DeadlockRequestType) String() string { return proto.EnumName(DeadlockRequestType_name, int32(x)) } func (DeadlockRequestType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_deadlock_85eba94e18b6a920, []int{0} + return fileDescriptor_deadlock_049c682449cfa76f, []int{0} } type WaitForEntriesRequest struct { @@ -66,7 +66,7 @@ func (m *WaitForEntriesRequest) Reset() { *m = WaitForEntriesRequest{} } func (m *WaitForEntriesRequest) String() string { return proto.CompactTextString(m) } func (*WaitForEntriesRequest) ProtoMessage() {} func (*WaitForEntriesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_deadlock_85eba94e18b6a920, []int{0} + return fileDescriptor_deadlock_049c682449cfa76f, []int{0} } func (m *WaitForEntriesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -106,7 +106,7 @@ func (m *WaitForEntriesResponse) Reset() { *m = WaitForEntriesResponse{} func (m *WaitForEntriesResponse) String() string { return proto.CompactTextString(m) } func (*WaitForEntriesResponse) ProtoMessage() {} func (*WaitForEntriesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_deadlock_85eba94e18b6a920, []int{1} + return fileDescriptor_deadlock_049c682449cfa76f, []int{1} } func (m *WaitForEntriesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -151,8 +151,8 @@ type WaitForEntry struct { KeyHash uint64 `protobuf:"varint,3,opt,name=key_hash,json=keyHash,proto3" json:"key_hash,omitempty"` // The key the current txn is trying to lock. Key []byte `protobuf:"bytes,4,opt,name=key,proto3" json:"key,omitempty"` - // The sql that needs to wait for the lock. - SqlDigest string `protobuf:"bytes,5,opt,name=sql_digest,json=sqlDigest,proto3" json:"sql_digest,omitempty"` + // The tag came from the lock request's context. + ResourceGroupTag []byte `protobuf:"bytes,5,opt,name=resource_group_tag,json=resourceGroupTag,proto3" json:"resource_group_tag,omitempty"` // Milliseconds it has been waits. WaitTime uint64 `protobuf:"varint,6,opt,name=wait_time,json=waitTime,proto3" json:"wait_time,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` @@ -164,7 +164,7 @@ func (m *WaitForEntry) Reset() { *m = WaitForEntry{} } func (m *WaitForEntry) String() string { return proto.CompactTextString(m) } func (*WaitForEntry) ProtoMessage() {} func (*WaitForEntry) Descriptor() ([]byte, []int) { - return fileDescriptor_deadlock_85eba94e18b6a920, []int{2} + return fileDescriptor_deadlock_049c682449cfa76f, []int{2} } func (m *WaitForEntry) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -221,11 +221,11 @@ func (m *WaitForEntry) GetKey() []byte { return nil } -func (m *WaitForEntry) GetSqlDigest() string { +func (m *WaitForEntry) GetResourceGroupTag() []byte { if m != nil { - return m.SqlDigest + return m.ResourceGroupTag } - return "" + return nil } func (m *WaitForEntry) GetWaitTime() uint64 { @@ -247,7 +247,7 @@ func (m *DeadlockRequest) Reset() { *m = DeadlockRequest{} } func (m *DeadlockRequest) String() string { return proto.CompactTextString(m) } func (*DeadlockRequest) ProtoMessage() {} func (*DeadlockRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_deadlock_85eba94e18b6a920, []int{3} + return fileDescriptor_deadlock_049c682449cfa76f, []int{3} } func (m *DeadlockRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -307,7 +307,7 @@ func (m *DeadlockResponse) Reset() { *m = DeadlockResponse{} } func (m *DeadlockResponse) String() string { return proto.CompactTextString(m) } func (*DeadlockResponse) ProtoMessage() {} func (*DeadlockResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_deadlock_85eba94e18b6a920, []int{4} + return fileDescriptor_deadlock_049c682449cfa76f, []int{4} } func (m *DeadlockResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -604,11 +604,11 @@ func (m *WaitForEntry) MarshalTo(dAtA []byte) (int, error) { i = encodeVarintDeadlock(dAtA, i, uint64(len(m.Key))) i += copy(dAtA[i:], m.Key) } - if len(m.SqlDigest) > 0 { + if len(m.ResourceGroupTag) > 0 { dAtA[i] = 0x2a i++ - i = encodeVarintDeadlock(dAtA, i, uint64(len(m.SqlDigest))) - i += copy(dAtA[i:], m.SqlDigest) + i = encodeVarintDeadlock(dAtA, i, uint64(len(m.ResourceGroupTag))) + i += copy(dAtA[i:], m.ResourceGroupTag) } if m.WaitTime != 0 { dAtA[i] = 0x30 @@ -750,7 +750,7 @@ func (m *WaitForEntry) Size() (n int) { if l > 0 { n += 1 + l + sovDeadlock(uint64(l)) } - l = len(m.SqlDigest) + l = len(m.ResourceGroupTag) if l > 0 { n += 1 + l + sovDeadlock(uint64(l)) } @@ -1062,9 +1062,9 @@ func (m *WaitForEntry) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 5: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SqlDigest", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ResourceGroupTag", wireType) } - var stringLen uint64 + var byteLen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowDeadlock @@ -1074,20 +1074,22 @@ func (m *WaitForEntry) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + byteLen |= (int(b) & 0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if byteLen < 0 { return ErrInvalidLengthDeadlock } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + byteLen if postIndex > l { return io.ErrUnexpectedEOF } - m.SqlDigest = string(dAtA[iNdEx:postIndex]) + m.ResourceGroupTag = append(m.ResourceGroupTag[:0], dAtA[iNdEx:postIndex]...) + if m.ResourceGroupTag == nil { + m.ResourceGroupTag = []byte{} + } iNdEx = postIndex case 6: if wireType != 0 { @@ -1466,37 +1468,38 @@ var ( ErrIntOverflowDeadlock = fmt.Errorf("proto: integer overflow") ) -func init() { proto.RegisterFile("deadlock.proto", fileDescriptor_deadlock_85eba94e18b6a920) } - -var fileDescriptor_deadlock_85eba94e18b6a920 = []byte{ - // 458 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x53, 0x5d, 0x6e, 0xd3, 0x40, - 0x18, 0xcc, 0x26, 0x69, 0x7e, 0xbe, 0x46, 0xa9, 0xfb, 0x01, 0xc5, 0x0d, 0x6a, 0x6a, 0xf9, 0xc9, - 0xaa, 0x44, 0x41, 0x41, 0x70, 0x80, 0x34, 0x05, 0x24, 0x5e, 0x90, 0x15, 0x04, 0x6f, 0x96, 0x49, - 0x3e, 0x12, 0xcb, 0xae, 0xd7, 0xf1, 0x2e, 0x6a, 0x7d, 0x13, 0xae, 0x80, 0x7a, 0x91, 0x3e, 0x72, - 0x02, 0x84, 0xc2, 0x45, 0xd0, 0xae, 0xed, 0xa4, 0x54, 0x09, 0xf4, 0x6d, 0x3d, 0x33, 0x3b, 0xfb, - 0xcd, 0xec, 0x1a, 0xba, 0x53, 0xf2, 0xa7, 0x11, 0x9f, 0x84, 0xa7, 0x49, 0xca, 0x25, 0xc7, 0x56, - 0xf9, 0xdd, 0x7b, 0x38, 0xe3, 0x33, 0xae, 0xc1, 0x67, 0x6a, 0x95, 0xf3, 0xf6, 0x63, 0x78, 0xf4, - 0xd1, 0x0f, 0xe4, 0x6b, 0x9e, 0x9e, 0xc7, 0x32, 0x0d, 0x48, 0xb8, 0xb4, 0xf8, 0x4a, 0x42, 0xda, - 0xef, 0xe1, 0xe0, 0x2e, 0x21, 0x12, 0x1e, 0x0b, 0xc2, 0x57, 0xd0, 0xa4, 0x1c, 0x32, 0x99, 0x55, - 0x73, 0x76, 0x07, 0x07, 0xa7, 0xab, 0x43, 0x6f, 0x6d, 0xc9, 0x86, 0xf5, 0x9b, 0x9f, 0xc7, 0x15, - 0xb7, 0x14, 0xdb, 0xd7, 0x0c, 0x3a, 0xb7, 0x79, 0x34, 0xa0, 0x26, 0xaf, 0x62, 0x93, 0x59, 0xcc, - 0xa9, 0xbb, 0x6a, 0x89, 0x16, 0x74, 0x2e, 0xfd, 0x40, 0x7a, 0x5f, 0x78, 0xea, 0x29, 0xaa, 0xaa, - 0x29, 0xb8, 0xcc, 0x77, 0x8d, 0xaf, 0x62, 0x3c, 0x84, 0x56, 0x48, 0x99, 0x37, 0xf7, 0xc5, 0xdc, - 0xac, 0x69, 0xb6, 0x19, 0x52, 0xf6, 0xd6, 0x17, 0x73, 0x65, 0x17, 0x52, 0x66, 0xd6, 0x2d, 0xe6, - 0x74, 0x5c, 0xb5, 0xc4, 0x23, 0x00, 0xb1, 0x88, 0xbc, 0x69, 0x30, 0x23, 0x21, 0xcd, 0x1d, 0x8b, - 0x39, 0x6d, 0xb7, 0x2d, 0x16, 0xd1, 0x48, 0x03, 0xf8, 0x04, 0xda, 0xfa, 0x34, 0x19, 0x5c, 0x90, - 0xd9, 0xd0, 0x66, 0x2d, 0x05, 0x8c, 0x83, 0x0b, 0xb2, 0x25, 0xec, 0x8d, 0x8a, 0x54, 0x45, 0x25, - 0xf8, 0x14, 0xaa, 0x32, 0xd1, 0xe3, 0x76, 0x07, 0x47, 0xeb, 0xcc, 0x77, 0x64, 0xe3, 0x2c, 0x21, - 0xb7, 0x2a, 0x13, 0x1c, 0xc0, 0x8e, 0x8a, 0x9e, 0xe9, 0x14, 0xff, 0x6b, 0x29, 0x97, 0xda, 0xdf, - 0x19, 0x18, 0x6b, 0xbf, 0xa2, 0xf0, 0x95, 0x11, 0xbb, 0xb7, 0x11, 0x9e, 0xc0, 0x7e, 0xa9, 0xf2, - 0x56, 0x85, 0xe5, 0x75, 0xee, 0x95, 0xc4, 0xbb, 0xa2, 0xb8, 0x97, 0xa0, 0x1b, 0xf6, 0x26, 0x73, - 0x3f, 0x88, 0xcd, 0xda, 0xbf, 0xee, 0xd4, 0xd5, 0x8d, 0x9d, 0x29, 0xe1, 0xc9, 0x10, 0x1e, 0x6c, - 0x88, 0x8e, 0x00, 0x8d, 0x11, 0x49, 0x9a, 0x48, 0xa3, 0x82, 0x08, 0xdd, 0xb3, 0x88, 0xfc, 0xf8, - 0x43, 0x52, 0x98, 0x18, 0x0c, 0x77, 0xa1, 0x59, 0x60, 0x46, 0x75, 0x70, 0xcd, 0xa0, 0x55, 0x9a, - 0xe0, 0x27, 0xd8, 0x7f, 0x43, 0xf2, 0xef, 0x57, 0x87, 0xc7, 0x1b, 0x07, 0x59, 0x3f, 0xd4, 0x9e, - 0xb5, 0x5d, 0x90, 0xf7, 0x67, 0x57, 0xf0, 0xbc, 0x9c, 0x09, 0x0f, 0xb7, 0xde, 0x5b, 0xaf, 0xb7, - 0x89, 0x2a, 0x2d, 0x1c, 0xf6, 0x9c, 0x0d, 0x8d, 0x9b, 0x65, 0x9f, 0xfd, 0x58, 0xf6, 0xd9, 0xaf, - 0x65, 0x9f, 0x7d, 0xfb, 0xdd, 0xaf, 0x7c, 0x6e, 0xe8, 0xbf, 0xe8, 0xc5, 0x9f, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x82, 0x0a, 0x2c, 0xfc, 0x77, 0x03, 0x00, 0x00, +func init() { proto.RegisterFile("deadlock.proto", fileDescriptor_deadlock_049c682449cfa76f) } + +var fileDescriptor_deadlock_049c682449cfa76f = []byte{ + // 465 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x93, 0x51, 0x6e, 0xd3, 0x40, + 0x10, 0x86, 0xb3, 0x49, 0x9a, 0x84, 0x69, 0x94, 0xba, 0x03, 0x14, 0x37, 0x88, 0xd4, 0xf2, 0x53, + 0x54, 0x41, 0x41, 0x41, 0x70, 0x80, 0xb4, 0xa5, 0x48, 0xbc, 0x20, 0x2b, 0x08, 0xde, 0xac, 0x25, + 0x1d, 0x6c, 0xcb, 0xad, 0xd7, 0xd8, 0x1b, 0xb5, 0xbe, 0x09, 0x57, 0x40, 0xdc, 0x80, 0x13, 0xf4, + 0x91, 0x13, 0x20, 0x14, 0x2e, 0x82, 0x76, 0xed, 0x4d, 0x4a, 0x95, 0x40, 0xdf, 0xd6, 0xf3, 0xff, + 0xfb, 0xef, 0xcc, 0xb7, 0x6b, 0xe8, 0x9d, 0x12, 0x3f, 0x3d, 0x13, 0xd3, 0xf8, 0x20, 0xcd, 0x84, + 0x14, 0xd8, 0x31, 0xdf, 0xfd, 0x7b, 0x81, 0x08, 0x84, 0x2e, 0x3e, 0x55, 0xab, 0x52, 0x77, 0x1f, + 0xc0, 0xfd, 0xf7, 0x3c, 0x92, 0xaf, 0x44, 0x76, 0x9c, 0xc8, 0x2c, 0xa2, 0xdc, 0xa3, 0xcf, 0x33, + 0xca, 0xa5, 0xfb, 0x16, 0x76, 0x6e, 0x0a, 0x79, 0x2a, 0x92, 0x9c, 0xf0, 0x25, 0xb4, 0xa9, 0x2c, + 0xd9, 0xcc, 0x69, 0x0c, 0x37, 0x47, 0x3b, 0x07, 0x8b, 0x43, 0xaf, 0x6d, 0x29, 0xc6, 0xcd, 0xab, + 0x9f, 0x7b, 0x35, 0xcf, 0x98, 0xdd, 0xef, 0x0c, 0xba, 0xd7, 0x75, 0xb4, 0xa0, 0x21, 0x2f, 0x13, + 0x9b, 0x39, 0x6c, 0xd8, 0xf4, 0xd4, 0x12, 0x1d, 0xe8, 0x5e, 0xf0, 0x48, 0xfa, 0x9f, 0x44, 0xe6, + 0x2b, 0xa9, 0xae, 0x25, 0xb8, 0x28, 0x77, 0x4d, 0x2e, 0x13, 0xdc, 0x85, 0x4e, 0x4c, 0x85, 0x1f, + 0xf2, 0x3c, 0xb4, 0x1b, 0x5a, 0x6d, 0xc7, 0x54, 0xbc, 0xe6, 0x79, 0xa8, 0xe2, 0x62, 0x2a, 0xec, + 0xa6, 0xc3, 0x86, 0x5d, 0x4f, 0x2d, 0xf1, 0x31, 0x60, 0x46, 0xb9, 0x98, 0x65, 0x53, 0xf2, 0x83, + 0x4c, 0xcc, 0x52, 0x5f, 0xf2, 0xc0, 0xde, 0xd0, 0x06, 0xcb, 0x28, 0x27, 0x4a, 0x98, 0xf0, 0x00, + 0x1f, 0xc2, 0x1d, 0x7d, 0xb8, 0x8c, 0xce, 0xc9, 0x6e, 0xe9, 0xec, 0x8e, 0x2a, 0x4c, 0xa2, 0x73, + 0x72, 0x25, 0x6c, 0x1d, 0x55, 0x43, 0x56, 0x84, 0xf0, 0x09, 0xd4, 0x65, 0xaa, 0xbb, 0xef, 0x8d, + 0x1e, 0x2d, 0x11, 0xdc, 0xb0, 0x4d, 0x8a, 0x94, 0xbc, 0xba, 0x4c, 0x71, 0x04, 0x1b, 0x8a, 0x44, + 0xa1, 0x87, 0xfa, 0x1f, 0xb4, 0xd2, 0xea, 0x7e, 0x65, 0x60, 0x2d, 0xf3, 0x2a, 0xfe, 0x8b, 0x20, + 0x76, 0xeb, 0x20, 0xdc, 0x87, 0x6d, 0xe3, 0xf2, 0x17, 0xfc, 0x4a, 0xba, 0x5b, 0x46, 0x78, 0x53, + 0x71, 0x7c, 0x01, 0x1a, 0xb8, 0x3f, 0x0d, 0x79, 0x94, 0xd8, 0x8d, 0x7f, 0x5d, 0xb1, 0xa7, 0x89, + 0x1d, 0x2a, 0xe3, 0xfe, 0x18, 0xee, 0xae, 0x18, 0x1d, 0x01, 0x5a, 0x47, 0x24, 0x69, 0x2a, 0xad, + 0x1a, 0x22, 0xf4, 0x0e, 0xcf, 0x88, 0x27, 0xef, 0xd2, 0x2a, 0xc4, 0x62, 0xb8, 0x09, 0xed, 0xaa, + 0x66, 0xd5, 0x47, 0xdf, 0x18, 0x74, 0x4c, 0x08, 0x7e, 0x80, 0xed, 0x13, 0x92, 0x7f, 0x3f, 0x42, + 0xdc, 0x5b, 0xd9, 0xc8, 0xf2, 0xdd, 0xf6, 0x9d, 0xf5, 0x86, 0x92, 0x9f, 0x5b, 0xc3, 0x63, 0xd3, + 0x13, 0xee, 0xae, 0xbd, 0xb7, 0x7e, 0x7f, 0x95, 0x64, 0x22, 0x86, 0xec, 0x19, 0x1b, 0x5b, 0x57, + 0xf3, 0x01, 0xfb, 0x31, 0x1f, 0xb0, 0x5f, 0xf3, 0x01, 0xfb, 0xf2, 0x7b, 0x50, 0xfb, 0xd8, 0xd2, + 0x3f, 0xd5, 0xf3, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x1f, 0x1a, 0x00, 0x2a, 0x86, 0x03, 0x00, + 0x00, } diff --git a/pkg/kvrpcpb/kvrpcpb.pb.go b/pkg/kvrpcpb/kvrpcpb.pb.go index 5fa8c267c..c027cd4c4 100644 --- a/pkg/kvrpcpb/kvrpcpb.pb.go +++ b/pkg/kvrpcpb/kvrpcpb.pb.go @@ -50,7 +50,7 @@ func (x VerOp) String() string { return proto.EnumName(VerOp_name, int32(x)) } func (VerOp) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{0} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{0} } type CommandPri int32 @@ -76,7 +76,7 @@ func (x CommandPri) String() string { return proto.EnumName(CommandPri_name, int32(x)) } func (CommandPri) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{1} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{1} } type IsolationLevel int32 @@ -99,7 +99,7 @@ func (x IsolationLevel) String() string { return proto.EnumName(IsolationLevel_name, int32(x)) } func (IsolationLevel) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{2} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{2} } type Op int32 @@ -138,7 +138,7 @@ func (x Op) String() string { return proto.EnumName(Op_name, int32(x)) } func (Op) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{3} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{3} } type Assertion int32 @@ -164,7 +164,7 @@ func (x Assertion) String() string { return proto.EnumName(Assertion_name, int32(x)) } func (Assertion) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{4} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{4} } type Action int32 @@ -199,7 +199,7 @@ func (x Action) String() string { return proto.EnumName(Action_name, int32(x)) } func (Action) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{5} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{5} } type ExtraOp int32 @@ -223,7 +223,7 @@ func (x ExtraOp) String() string { return proto.EnumName(ExtraOp_name, int32(x)) } func (ExtraOp) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{6} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{6} } // A transactional get command. Lookup a value for `key` in the transaction with @@ -241,7 +241,7 @@ func (m *GetRequest) Reset() { *m = GetRequest{} } func (m *GetRequest) String() string { return proto.CompactTextString(m) } func (*GetRequest) ProtoMessage() {} func (*GetRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{0} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{0} } func (m *GetRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -312,7 +312,7 @@ func (m *GetResponse) Reset() { *m = GetResponse{} } func (m *GetResponse) String() string { return proto.CompactTextString(m) } func (*GetResponse) ProtoMessage() {} func (*GetResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{1} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{1} } func (m *GetResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -402,7 +402,7 @@ func (m *ScanRequest) Reset() { *m = ScanRequest{} } func (m *ScanRequest) String() string { return proto.CompactTextString(m) } func (*ScanRequest) ProtoMessage() {} func (*ScanRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{2} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{2} } func (m *ScanRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -504,7 +504,7 @@ func (m *ScanResponse) Reset() { *m = ScanResponse{} } func (m *ScanResponse) String() string { return proto.CompactTextString(m) } func (*ScanResponse) ProtoMessage() {} func (*ScanResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{3} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{3} } func (m *ScanResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -598,7 +598,7 @@ func (m *PrewriteRequest) Reset() { *m = PrewriteRequest{} } func (m *PrewriteRequest) String() string { return proto.CompactTextString(m) } func (*PrewriteRequest) ProtoMessage() {} func (*PrewriteRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{4} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{4} } func (m *PrewriteRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -745,7 +745,7 @@ func (m *PrewriteResponse) Reset() { *m = PrewriteResponse{} } func (m *PrewriteResponse) String() string { return proto.CompactTextString(m) } func (*PrewriteResponse) ProtoMessage() {} func (*PrewriteResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{5} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{5} } func (m *PrewriteResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -830,9 +830,7 @@ type PessimisticLockRequest struct { ReturnValues bool `protobuf:"varint,10,opt,name=return_values,json=returnValues,proto3" json:"return_values,omitempty"` // If min_commit_ts > 0, this is large transaction proto, the final commit_ts // would be infered from min_commit_ts. - MinCommitTs uint64 `protobuf:"varint,11,opt,name=min_commit_ts,json=minCommitTs,proto3" json:"min_commit_ts,omitempty"` - // The digest of the SQL that's acquiring the lock. - SqlDigest string `protobuf:"bytes,12,opt,name=sql_digest,json=sqlDigest,proto3" json:"sql_digest,omitempty"` + MinCommitTs uint64 `protobuf:"varint,11,opt,name=min_commit_ts,json=minCommitTs,proto3" json:"min_commit_ts,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -842,7 +840,7 @@ func (m *PessimisticLockRequest) Reset() { *m = PessimisticLockRequest{} func (m *PessimisticLockRequest) String() string { return proto.CompactTextString(m) } func (*PessimisticLockRequest) ProtoMessage() {} func (*PessimisticLockRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{6} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{6} } func (m *PessimisticLockRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -948,13 +946,6 @@ func (m *PessimisticLockRequest) GetMinCommitTs() uint64 { return 0 } -func (m *PessimisticLockRequest) GetSqlDigest() string { - if m != nil { - return m.SqlDigest - } - return "" -} - type PessimisticLockResponse struct { RegionError *errorpb.Error `protobuf:"bytes,1,opt,name=region_error,json=regionError" json:"region_error,omitempty"` Errors []*KeyError `protobuf:"bytes,2,rep,name=errors" json:"errors,omitempty"` @@ -977,7 +968,7 @@ func (m *PessimisticLockResponse) Reset() { *m = PessimisticLockResponse func (m *PessimisticLockResponse) String() string { return proto.CompactTextString(m) } func (*PessimisticLockResponse) ProtoMessage() {} func (*PessimisticLockResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{7} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{7} } func (m *PessimisticLockResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1063,7 +1054,7 @@ func (m *PessimisticRollbackRequest) Reset() { *m = PessimisticRollbackR func (m *PessimisticRollbackRequest) String() string { return proto.CompactTextString(m) } func (*PessimisticRollbackRequest) ProtoMessage() {} func (*PessimisticRollbackRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{8} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{8} } func (m *PessimisticRollbackRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1132,7 +1123,7 @@ func (m *PessimisticRollbackResponse) Reset() { *m = PessimisticRollback func (m *PessimisticRollbackResponse) String() string { return proto.CompactTextString(m) } func (*PessimisticRollbackResponse) ProtoMessage() {} func (*PessimisticRollbackResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{9} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{9} } func (m *PessimisticRollbackResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1193,7 +1184,7 @@ func (m *TxnHeartBeatRequest) Reset() { *m = TxnHeartBeatRequest{} } func (m *TxnHeartBeatRequest) String() string { return proto.CompactTextString(m) } func (*TxnHeartBeatRequest) ProtoMessage() {} func (*TxnHeartBeatRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{10} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{10} } func (m *TxnHeartBeatRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1264,7 +1255,7 @@ func (m *TxnHeartBeatResponse) Reset() { *m = TxnHeartBeatResponse{} } func (m *TxnHeartBeatResponse) String() string { return proto.CompactTextString(m) } func (*TxnHeartBeatResponse) ProtoMessage() {} func (*TxnHeartBeatResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{11} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{11} } func (m *TxnHeartBeatResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1350,7 +1341,7 @@ func (m *CheckTxnStatusRequest) Reset() { *m = CheckTxnStatusRequest{} } func (m *CheckTxnStatusRequest) String() string { return proto.CompactTextString(m) } func (*CheckTxnStatusRequest) ProtoMessage() {} func (*CheckTxnStatusRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{12} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{12} } func (m *CheckTxnStatusRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1456,7 +1447,7 @@ func (m *CheckTxnStatusResponse) Reset() { *m = CheckTxnStatusResponse{} func (m *CheckTxnStatusResponse) String() string { return proto.CompactTextString(m) } func (*CheckTxnStatusResponse) ProtoMessage() {} func (*CheckTxnStatusResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{13} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{13} } func (m *CheckTxnStatusResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1544,7 +1535,7 @@ func (m *CheckSecondaryLocksRequest) Reset() { *m = CheckSecondaryLocksR func (m *CheckSecondaryLocksRequest) String() string { return proto.CompactTextString(m) } func (*CheckSecondaryLocksRequest) ProtoMessage() {} func (*CheckSecondaryLocksRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{14} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{14} } func (m *CheckSecondaryLocksRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1613,7 +1604,7 @@ func (m *CheckSecondaryLocksResponse) Reset() { *m = CheckSecondaryLocks func (m *CheckSecondaryLocksResponse) String() string { return proto.CompactTextString(m) } func (*CheckSecondaryLocksResponse) ProtoMessage() {} func (*CheckSecondaryLocksResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{15} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{15} } func (m *CheckSecondaryLocksResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1689,7 +1680,7 @@ func (m *CommitRequest) Reset() { *m = CommitRequest{} } func (m *CommitRequest) String() string { return proto.CompactTextString(m) } func (*CommitRequest) ProtoMessage() {} func (*CommitRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{16} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{16} } func (m *CommitRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1760,7 +1751,7 @@ func (m *CommitResponse) Reset() { *m = CommitResponse{} } func (m *CommitResponse) String() string { return proto.CompactTextString(m) } func (*CommitResponse) ProtoMessage() {} func (*CommitResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{17} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{17} } func (m *CommitResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1823,7 +1814,7 @@ func (m *ImportRequest) Reset() { *m = ImportRequest{} } func (m *ImportRequest) String() string { return proto.CompactTextString(m) } func (*ImportRequest) ProtoMessage() {} func (*ImportRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{18} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{18} } func (m *ImportRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1878,7 +1869,7 @@ func (m *ImportResponse) Reset() { *m = ImportResponse{} } func (m *ImportResponse) String() string { return proto.CompactTextString(m) } func (*ImportResponse) ProtoMessage() {} func (*ImportResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{19} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{19} } func (m *ImportResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1940,7 +1931,7 @@ func (m *CleanupRequest) Reset() { *m = CleanupRequest{} } func (m *CleanupRequest) String() string { return proto.CompactTextString(m) } func (*CleanupRequest) ProtoMessage() {} func (*CleanupRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{20} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{20} } func (m *CleanupRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2011,7 +2002,7 @@ func (m *CleanupResponse) Reset() { *m = CleanupResponse{} } func (m *CleanupResponse) String() string { return proto.CompactTextString(m) } func (*CleanupResponse) ProtoMessage() {} func (*CleanupResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{21} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{21} } func (m *CleanupResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2075,7 +2066,7 @@ func (m *BatchGetRequest) Reset() { *m = BatchGetRequest{} } func (m *BatchGetRequest) String() string { return proto.CompactTextString(m) } func (*BatchGetRequest) ProtoMessage() {} func (*BatchGetRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{22} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{22} } func (m *BatchGetRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2143,7 +2134,7 @@ func (m *BatchGetResponse) Reset() { *m = BatchGetResponse{} } func (m *BatchGetResponse) String() string { return proto.CompactTextString(m) } func (*BatchGetResponse) ProtoMessage() {} func (*BatchGetResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{23} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{23} } func (m *BatchGetResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2217,7 +2208,7 @@ func (m *BatchRollbackRequest) Reset() { *m = BatchRollbackRequest{} } func (m *BatchRollbackRequest) String() string { return proto.CompactTextString(m) } func (*BatchRollbackRequest) ProtoMessage() {} func (*BatchRollbackRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{24} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{24} } func (m *BatchRollbackRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2279,7 +2270,7 @@ func (m *BatchRollbackResponse) Reset() { *m = BatchRollbackResponse{} } func (m *BatchRollbackResponse) String() string { return proto.CompactTextString(m) } func (*BatchRollbackResponse) ProtoMessage() {} func (*BatchRollbackResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{25} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{25} } func (m *BatchRollbackResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2343,7 +2334,7 @@ func (m *ScanLockRequest) Reset() { *m = ScanLockRequest{} } func (m *ScanLockRequest) String() string { return proto.CompactTextString(m) } func (*ScanLockRequest) ProtoMessage() {} func (*ScanLockRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{26} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{26} } func (m *ScanLockRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2421,7 +2412,7 @@ func (m *ScanLockResponse) Reset() { *m = ScanLockResponse{} } func (m *ScanLockResponse) String() string { return proto.CompactTextString(m) } func (*ScanLockResponse) ProtoMessage() {} func (*ScanLockResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{27} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{27} } func (m *ScanLockResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2491,7 +2482,7 @@ func (m *ResolveLockRequest) Reset() { *m = ResolveLockRequest{} } func (m *ResolveLockRequest) String() string { return proto.CompactTextString(m) } func (*ResolveLockRequest) ProtoMessage() {} func (*ResolveLockRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{28} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{28} } func (m *ResolveLockRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2567,7 +2558,7 @@ func (m *ResolveLockResponse) Reset() { *m = ResolveLockResponse{} } func (m *ResolveLockResponse) String() string { return proto.CompactTextString(m) } func (*ResolveLockResponse) ProtoMessage() {} func (*ResolveLockResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{29} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{29} } func (m *ResolveLockResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2623,7 +2614,7 @@ func (m *GCRequest) Reset() { *m = GCRequest{} } func (m *GCRequest) String() string { return proto.CompactTextString(m) } func (*GCRequest) ProtoMessage() {} func (*GCRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{30} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{30} } func (m *GCRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2678,7 +2669,7 @@ func (m *GCResponse) Reset() { *m = GCResponse{} } func (m *GCResponse) String() string { return proto.CompactTextString(m) } func (*GCResponse) ProtoMessage() {} func (*GCResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{31} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{31} } func (m *GCResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2740,7 +2731,7 @@ func (m *DeleteRangeRequest) Reset() { *m = DeleteRangeRequest{} } func (m *DeleteRangeRequest) String() string { return proto.CompactTextString(m) } func (*DeleteRangeRequest) ProtoMessage() {} func (*DeleteRangeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{32} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{32} } func (m *DeleteRangeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2809,7 +2800,7 @@ func (m *DeleteRangeResponse) Reset() { *m = DeleteRangeResponse{} } func (m *DeleteRangeResponse) String() string { return proto.CompactTextString(m) } func (*DeleteRangeResponse) ProtoMessage() {} func (*DeleteRangeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{33} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{33} } func (m *DeleteRangeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2865,7 +2856,7 @@ func (m *RawGetRequest) Reset() { *m = RawGetRequest{} } func (m *RawGetRequest) String() string { return proto.CompactTextString(m) } func (*RawGetRequest) ProtoMessage() {} func (*RawGetRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{34} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{34} } func (m *RawGetRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2929,7 +2920,7 @@ func (m *RawGetResponse) Reset() { *m = RawGetResponse{} } func (m *RawGetResponse) String() string { return proto.CompactTextString(m) } func (*RawGetResponse) ProtoMessage() {} func (*RawGetResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{35} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{35} } func (m *RawGetResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2999,7 +2990,7 @@ func (m *RawBatchGetRequest) Reset() { *m = RawBatchGetRequest{} } func (m *RawBatchGetRequest) String() string { return proto.CompactTextString(m) } func (*RawBatchGetRequest) ProtoMessage() {} func (*RawBatchGetRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{36} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{36} } func (m *RawBatchGetRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3061,7 +3052,7 @@ func (m *RawBatchGetResponse) Reset() { *m = RawBatchGetResponse{} } func (m *RawBatchGetResponse) String() string { return proto.CompactTextString(m) } func (*RawBatchGetResponse) ProtoMessage() {} func (*RawBatchGetResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{37} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{37} } func (m *RawBatchGetResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3120,7 +3111,7 @@ func (m *RawPutRequest) Reset() { *m = RawPutRequest{} } func (m *RawPutRequest) String() string { return proto.CompactTextString(m) } func (*RawPutRequest) ProtoMessage() {} func (*RawPutRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{38} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{38} } func (m *RawPutRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3203,7 +3194,7 @@ func (m *RawPutResponse) Reset() { *m = RawPutResponse{} } func (m *RawPutResponse) String() string { return proto.CompactTextString(m) } func (*RawPutResponse) ProtoMessage() {} func (*RawPutResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{39} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{39} } func (m *RawPutResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3261,7 +3252,7 @@ func (m *RawBatchPutRequest) Reset() { *m = RawBatchPutRequest{} } func (m *RawBatchPutRequest) String() string { return proto.CompactTextString(m) } func (*RawBatchPutRequest) ProtoMessage() {} func (*RawBatchPutRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{40} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{40} } func (m *RawBatchPutRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3337,7 +3328,7 @@ func (m *RawBatchPutResponse) Reset() { *m = RawBatchPutResponse{} } func (m *RawBatchPutResponse) String() string { return proto.CompactTextString(m) } func (*RawBatchPutResponse) ProtoMessage() {} func (*RawBatchPutResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{41} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{41} } func (m *RawBatchPutResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3394,7 +3385,7 @@ func (m *RawDeleteRequest) Reset() { *m = RawDeleteRequest{} } func (m *RawDeleteRequest) String() string { return proto.CompactTextString(m) } func (*RawDeleteRequest) ProtoMessage() {} func (*RawDeleteRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{42} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{42} } func (m *RawDeleteRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3463,7 +3454,7 @@ func (m *RawDeleteResponse) Reset() { *m = RawDeleteResponse{} } func (m *RawDeleteResponse) String() string { return proto.CompactTextString(m) } func (*RawDeleteResponse) ProtoMessage() {} func (*RawDeleteResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{43} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{43} } func (m *RawDeleteResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3520,7 +3511,7 @@ func (m *RawBatchDeleteRequest) Reset() { *m = RawBatchDeleteRequest{} } func (m *RawBatchDeleteRequest) String() string { return proto.CompactTextString(m) } func (*RawBatchDeleteRequest) ProtoMessage() {} func (*RawBatchDeleteRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{44} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{44} } func (m *RawBatchDeleteRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3589,7 +3580,7 @@ func (m *RawBatchDeleteResponse) Reset() { *m = RawBatchDeleteResponse{} func (m *RawBatchDeleteResponse) String() string { return proto.CompactTextString(m) } func (*RawBatchDeleteResponse) ProtoMessage() {} func (*RawBatchDeleteResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{45} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{45} } func (m *RawBatchDeleteResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3651,7 +3642,7 @@ func (m *RawScanRequest) Reset() { *m = RawScanRequest{} } func (m *RawScanRequest) String() string { return proto.CompactTextString(m) } func (*RawScanRequest) ProtoMessage() {} func (*RawScanRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{46} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{46} } func (m *RawScanRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3741,7 +3732,7 @@ func (m *RawScanResponse) Reset() { *m = RawScanResponse{} } func (m *RawScanResponse) String() string { return proto.CompactTextString(m) } func (*RawScanResponse) ProtoMessage() {} func (*RawScanResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{47} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{47} } func (m *RawScanResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3798,7 +3789,7 @@ func (m *RawDeleteRangeRequest) Reset() { *m = RawDeleteRangeRequest{} } func (m *RawDeleteRangeRequest) String() string { return proto.CompactTextString(m) } func (*RawDeleteRangeRequest) ProtoMessage() {} func (*RawDeleteRangeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{48} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{48} } func (m *RawDeleteRangeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3867,7 +3858,7 @@ func (m *RawDeleteRangeResponse) Reset() { *m = RawDeleteRangeResponse{} func (m *RawDeleteRangeResponse) String() string { return proto.CompactTextString(m) } func (*RawDeleteRangeResponse) ProtoMessage() {} func (*RawDeleteRangeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{49} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{49} } func (m *RawDeleteRangeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3926,7 +3917,7 @@ func (m *RawBatchScanRequest) Reset() { *m = RawBatchScanRequest{} } func (m *RawBatchScanRequest) String() string { return proto.CompactTextString(m) } func (*RawBatchScanRequest) ProtoMessage() {} func (*RawBatchScanRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{50} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{50} } func (m *RawBatchScanRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4009,7 +4000,7 @@ func (m *RawBatchScanResponse) Reset() { *m = RawBatchScanResponse{} } func (m *RawBatchScanResponse) String() string { return proto.CompactTextString(m) } func (*RawBatchScanResponse) ProtoMessage() {} func (*RawBatchScanResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{51} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{51} } func (m *RawBatchScanResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4065,7 +4056,7 @@ func (m *UnsafeDestroyRangeRequest) Reset() { *m = UnsafeDestroyRangeReq func (m *UnsafeDestroyRangeRequest) String() string { return proto.CompactTextString(m) } func (*UnsafeDestroyRangeRequest) ProtoMessage() {} func (*UnsafeDestroyRangeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{52} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{52} } func (m *UnsafeDestroyRangeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4127,7 +4118,7 @@ func (m *UnsafeDestroyRangeResponse) Reset() { *m = UnsafeDestroyRangeRe func (m *UnsafeDestroyRangeResponse) String() string { return proto.CompactTextString(m) } func (*UnsafeDestroyRangeResponse) ProtoMessage() {} func (*UnsafeDestroyRangeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{53} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{53} } func (m *UnsafeDestroyRangeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4182,7 +4173,7 @@ func (m *RegisterLockObserverRequest) Reset() { *m = RegisterLockObserve func (m *RegisterLockObserverRequest) String() string { return proto.CompactTextString(m) } func (*RegisterLockObserverRequest) ProtoMessage() {} func (*RegisterLockObserverRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{54} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{54} } func (m *RegisterLockObserverRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4236,7 +4227,7 @@ func (m *RegisterLockObserverResponse) Reset() { *m = RegisterLockObserv func (m *RegisterLockObserverResponse) String() string { return proto.CompactTextString(m) } func (*RegisterLockObserverResponse) ProtoMessage() {} func (*RegisterLockObserverResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{55} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{55} } func (m *RegisterLockObserverResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4284,7 +4275,7 @@ func (m *CheckLockObserverRequest) Reset() { *m = CheckLockObserverReque func (m *CheckLockObserverRequest) String() string { return proto.CompactTextString(m) } func (*CheckLockObserverRequest) ProtoMessage() {} func (*CheckLockObserverRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{56} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{56} } func (m *CheckLockObserverRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4340,7 +4331,7 @@ func (m *CheckLockObserverResponse) Reset() { *m = CheckLockObserverResp func (m *CheckLockObserverResponse) String() string { return proto.CompactTextString(m) } func (*CheckLockObserverResponse) ProtoMessage() {} func (*CheckLockObserverResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{57} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{57} } func (m *CheckLockObserverResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4402,7 +4393,7 @@ func (m *RemoveLockObserverRequest) Reset() { *m = RemoveLockObserverReq func (m *RemoveLockObserverRequest) String() string { return proto.CompactTextString(m) } func (*RemoveLockObserverRequest) ProtoMessage() {} func (*RemoveLockObserverRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{58} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{58} } func (m *RemoveLockObserverRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4456,7 +4447,7 @@ func (m *RemoveLockObserverResponse) Reset() { *m = RemoveLockObserverRe func (m *RemoveLockObserverResponse) String() string { return proto.CompactTextString(m) } func (*RemoveLockObserverResponse) ProtoMessage() {} func (*RemoveLockObserverResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{59} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{59} } func (m *RemoveLockObserverResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4506,7 +4497,7 @@ func (m *PhysicalScanLockRequest) Reset() { *m = PhysicalScanLockRequest func (m *PhysicalScanLockRequest) String() string { return proto.CompactTextString(m) } func (*PhysicalScanLockRequest) ProtoMessage() {} func (*PhysicalScanLockRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{60} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{60} } func (m *PhysicalScanLockRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4575,7 +4566,7 @@ func (m *PhysicalScanLockResponse) Reset() { *m = PhysicalScanLockRespon func (m *PhysicalScanLockResponse) String() string { return proto.CompactTextString(m) } func (*PhysicalScanLockResponse) ProtoMessage() {} func (*PhysicalScanLockResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{61} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{61} } func (m *PhysicalScanLockResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4632,7 +4623,7 @@ func (m *SplitRegionRequest) Reset() { *m = SplitRegionRequest{} } func (m *SplitRegionRequest) String() string { return proto.CompactTextString(m) } func (*SplitRegionRequest) ProtoMessage() {} func (*SplitRegionRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{62} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{62} } func (m *SplitRegionRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4697,7 +4688,7 @@ func (m *SplitRegionResponse) Reset() { *m = SplitRegionResponse{} } func (m *SplitRegionResponse) String() string { return proto.CompactTextString(m) } func (*SplitRegionResponse) ProtoMessage() {} func (*SplitRegionResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{63} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{63} } func (m *SplitRegionResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4772,7 +4763,7 @@ func (m *ReadIndexRequest) Reset() { *m = ReadIndexRequest{} } func (m *ReadIndexRequest) String() string { return proto.CompactTextString(m) } func (*ReadIndexRequest) ProtoMessage() {} func (*ReadIndexRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{64} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{64} } func (m *ReadIndexRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4837,7 +4828,7 @@ func (m *ReadIndexResponse) Reset() { *m = ReadIndexResponse{} } func (m *ReadIndexResponse) String() string { return proto.CompactTextString(m) } func (*ReadIndexResponse) ProtoMessage() {} func (*ReadIndexResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{65} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{65} } func (m *ReadIndexResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4900,7 +4891,7 @@ func (m *VerMutation) Reset() { *m = VerMutation{} } func (m *VerMutation) String() string { return proto.CompactTextString(m) } func (*VerMutation) ProtoMessage() {} func (*VerMutation) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{66} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{66} } func (m *VerMutation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4962,7 +4953,7 @@ func (m *VerValue) Reset() { *m = VerValue{} } func (m *VerValue) String() string { return proto.CompactTextString(m) } func (*VerValue) ProtoMessage() {} func (*VerValue) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{67} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{67} } func (m *VerValue) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5016,7 +5007,7 @@ func (m *VerError) Reset() { *m = VerError{} } func (m *VerError) String() string { return proto.CompactTextString(m) } func (*VerError) ProtoMessage() {} func (*VerError) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{68} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{68} } func (m *VerError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5065,7 +5056,7 @@ func (m *VerKvPair) Reset() { *m = VerKvPair{} } func (m *VerKvPair) String() string { return proto.CompactTextString(m) } func (*VerKvPair) ProtoMessage() {} func (*VerKvPair) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{69} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{69} } func (m *VerKvPair) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5128,7 +5119,7 @@ func (m *VerGetRequest) Reset() { *m = VerGetRequest{} } func (m *VerGetRequest) String() string { return proto.CompactTextString(m) } func (*VerGetRequest) ProtoMessage() {} func (*VerGetRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{70} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{70} } func (m *VerGetRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5192,7 +5183,7 @@ func (m *VerGetResponse) Reset() { *m = VerGetResponse{} } func (m *VerGetResponse) String() string { return proto.CompactTextString(m) } func (*VerGetResponse) ProtoMessage() {} func (*VerGetResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{71} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{71} } func (m *VerGetResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5262,7 +5253,7 @@ func (m *VerBatchGetRequest) Reset() { *m = VerBatchGetRequest{} } func (m *VerBatchGetRequest) String() string { return proto.CompactTextString(m) } func (*VerBatchGetRequest) ProtoMessage() {} func (*VerBatchGetRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{72} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{72} } func (m *VerBatchGetRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5324,7 +5315,7 @@ func (m *VerBatchGetResponse) Reset() { *m = VerBatchGetResponse{} } func (m *VerBatchGetResponse) String() string { return proto.CompactTextString(m) } func (*VerBatchGetResponse) ProtoMessage() {} func (*VerBatchGetResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{73} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{73} } func (m *VerBatchGetResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5380,7 +5371,7 @@ func (m *VerMutRequest) Reset() { *m = VerMutRequest{} } func (m *VerMutRequest) String() string { return proto.CompactTextString(m) } func (*VerMutRequest) ProtoMessage() {} func (*VerMutRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{74} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{74} } func (m *VerMutRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5442,7 +5433,7 @@ func (m *VerMutResponse) Reset() { *m = VerMutResponse{} } func (m *VerMutResponse) String() string { return proto.CompactTextString(m) } func (*VerMutResponse) ProtoMessage() {} func (*VerMutResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{75} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{75} } func (m *VerMutResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5498,7 +5489,7 @@ func (m *VerBatchMutRequest) Reset() { *m = VerBatchMutRequest{} } func (m *VerBatchMutRequest) String() string { return proto.CompactTextString(m) } func (*VerBatchMutRequest) ProtoMessage() {} func (*VerBatchMutRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{76} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{76} } func (m *VerBatchMutRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5560,7 +5551,7 @@ func (m *VerBatchMutResponse) Reset() { *m = VerBatchMutResponse{} } func (m *VerBatchMutResponse) String() string { return proto.CompactTextString(m) } func (*VerBatchMutResponse) ProtoMessage() {} func (*VerBatchMutResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{77} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{77} } func (m *VerBatchMutResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5620,7 +5611,7 @@ func (m *VerScanRequest) Reset() { *m = VerScanRequest{} } func (m *VerScanRequest) String() string { return proto.CompactTextString(m) } func (*VerScanRequest) ProtoMessage() {} func (*VerScanRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{78} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{78} } func (m *VerScanRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5710,7 +5701,7 @@ func (m *VerScanResponse) Reset() { *m = VerScanResponse{} } func (m *VerScanResponse) String() string { return proto.CompactTextString(m) } func (*VerScanResponse) ProtoMessage() {} func (*VerScanResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{79} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{79} } func (m *VerScanResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5766,7 +5757,7 @@ func (m *VerDeleteRangeRequest) Reset() { *m = VerDeleteRangeRequest{} } func (m *VerDeleteRangeRequest) String() string { return proto.CompactTextString(m) } func (*VerDeleteRangeRequest) ProtoMessage() {} func (*VerDeleteRangeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{80} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{80} } func (m *VerDeleteRangeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5828,7 +5819,7 @@ func (m *VerDeleteRangeResponse) Reset() { *m = VerDeleteRangeResponse{} func (m *VerDeleteRangeResponse) String() string { return proto.CompactTextString(m) } func (*VerDeleteRangeResponse) ProtoMessage() {} func (*VerDeleteRangeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{81} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{81} } func (m *VerDeleteRangeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5883,7 +5874,7 @@ func (m *MvccGetByKeyRequest) Reset() { *m = MvccGetByKeyRequest{} } func (m *MvccGetByKeyRequest) String() string { return proto.CompactTextString(m) } func (*MvccGetByKeyRequest) ProtoMessage() {} func (*MvccGetByKeyRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{82} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{82} } func (m *MvccGetByKeyRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5939,7 +5930,7 @@ func (m *MvccGetByKeyResponse) Reset() { *m = MvccGetByKeyResponse{} } func (m *MvccGetByKeyResponse) String() string { return proto.CompactTextString(m) } func (*MvccGetByKeyResponse) ProtoMessage() {} func (*MvccGetByKeyResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{83} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{83} } func (m *MvccGetByKeyResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6001,7 +5992,7 @@ func (m *MvccGetByStartTsRequest) Reset() { *m = MvccGetByStartTsRequest func (m *MvccGetByStartTsRequest) String() string { return proto.CompactTextString(m) } func (*MvccGetByStartTsRequest) ProtoMessage() {} func (*MvccGetByStartTsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{84} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{84} } func (m *MvccGetByStartTsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6058,7 +6049,7 @@ func (m *MvccGetByStartTsResponse) Reset() { *m = MvccGetByStartTsRespon func (m *MvccGetByStartTsResponse) String() string { return proto.CompactTextString(m) } func (*MvccGetByStartTsResponse) ProtoMessage() {} func (*MvccGetByStartTsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{85} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{85} } func (m *MvccGetByStartTsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6140,7 +6131,9 @@ type Context struct { TaskId uint64 `protobuf:"varint,16,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"` // Not required to read the most up-to-date data, replicas with `safe_ts` >= `start_ts` // can handle read request directly - StaleRead bool `protobuf:"varint,17,opt,name=stale_read,json=staleRead,proto3" json:"stale_read,omitempty"` + StaleRead bool `protobuf:"varint,17,opt,name=stale_read,json=staleRead,proto3" json:"stale_read,omitempty"` + // Any additional serialized information about the request. + ResourceGroupTag []byte `protobuf:"bytes,18,opt,name=resource_group_tag,json=resourceGroupTag,proto3" json:"resource_group_tag,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -6150,7 +6143,7 @@ func (m *Context) Reset() { *m = Context{} } func (m *Context) String() string { return proto.CompactTextString(m) } func (*Context) ProtoMessage() {} func (*Context) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{86} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{86} } func (m *Context) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6291,6 +6284,13 @@ func (m *Context) GetStaleRead() bool { return false } +func (m *Context) GetResourceGroupTag() []byte { + if m != nil { + return m.ResourceGroupTag + } + return nil +} + type LockInfo struct { PrimaryLock []byte `protobuf:"bytes,1,opt,name=primary_lock,json=primaryLock,proto3" json:"primary_lock,omitempty"` LockVersion uint64 `protobuf:"varint,2,opt,name=lock_version,json=lockVersion,proto3" json:"lock_version,omitempty"` @@ -6313,7 +6313,7 @@ func (m *LockInfo) Reset() { *m = LockInfo{} } func (m *LockInfo) String() string { return proto.CompactTextString(m) } func (*LockInfo) ProtoMessage() {} func (*LockInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{87} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{87} } func (m *LockInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6431,7 +6431,7 @@ func (m *KeyError) Reset() { *m = KeyError{} } func (m *KeyError) String() string { return proto.CompactTextString(m) } func (*KeyError) ProtoMessage() {} func (*KeyError) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{88} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{88} } func (m *KeyError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6538,7 +6538,7 @@ func (m *WriteConflict) Reset() { *m = WriteConflict{} } func (m *WriteConflict) String() string { return proto.CompactTextString(m) } func (*WriteConflict) ProtoMessage() {} func (*WriteConflict) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{89} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{89} } func (m *WriteConflict) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6613,7 +6613,7 @@ func (m *AlreadyExist) Reset() { *m = AlreadyExist{} } func (m *AlreadyExist) String() string { return proto.CompactTextString(m) } func (*AlreadyExist) ProtoMessage() {} func (*AlreadyExist) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{90} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{90} } func (m *AlreadyExist) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6663,7 +6663,7 @@ func (m *Deadlock) Reset() { *m = Deadlock{} } func (m *Deadlock) String() string { return proto.CompactTextString(m) } func (*Deadlock) ProtoMessage() {} func (*Deadlock) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{91} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{91} } func (m *Deadlock) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6734,7 +6734,7 @@ func (m *CommitTsExpired) Reset() { *m = CommitTsExpired{} } func (m *CommitTsExpired) String() string { return proto.CompactTextString(m) } func (*CommitTsExpired) ProtoMessage() {} func (*CommitTsExpired) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{92} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{92} } func (m *CommitTsExpired) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6803,7 +6803,7 @@ func (m *TxnNotFound) Reset() { *m = TxnNotFound{} } func (m *TxnNotFound) String() string { return proto.CompactTextString(m) } func (*TxnNotFound) ProtoMessage() {} func (*TxnNotFound) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{93} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{93} } func (m *TxnNotFound) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6857,7 +6857,7 @@ func (m *CommitTsTooLarge) Reset() { *m = CommitTsTooLarge{} } func (m *CommitTsTooLarge) String() string { return proto.CompactTextString(m) } func (*CommitTsTooLarge) ProtoMessage() {} func (*CommitTsTooLarge) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{94} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{94} } func (m *CommitTsTooLarge) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6914,7 +6914,7 @@ func (m *TimeDetail) Reset() { *m = TimeDetail{} } func (m *TimeDetail) String() string { return proto.CompactTextString(m) } func (*TimeDetail) ProtoMessage() {} func (*TimeDetail) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{95} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{95} } func (m *TimeDetail) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6977,7 +6977,7 @@ func (m *ScanInfo) Reset() { *m = ScanInfo{} } func (m *ScanInfo) String() string { return proto.CompactTextString(m) } func (*ScanInfo) ProtoMessage() {} func (*ScanInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{96} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{96} } func (m *ScanInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7041,7 +7041,7 @@ func (m *ScanDetail) Reset() { *m = ScanDetail{} } func (m *ScanDetail) String() string { return proto.CompactTextString(m) } func (*ScanDetail) ProtoMessage() {} func (*ScanDetail) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{97} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{97} } func (m *ScanDetail) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7124,7 +7124,7 @@ func (m *ScanDetailV2) Reset() { *m = ScanDetailV2{} } func (m *ScanDetailV2) String() string { return proto.CompactTextString(m) } func (*ScanDetailV2) ProtoMessage() {} func (*ScanDetailV2) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{98} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{98} } func (m *ScanDetailV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7216,7 +7216,7 @@ func (m *ExecDetails) Reset() { *m = ExecDetails{} } func (m *ExecDetails) String() string { return proto.CompactTextString(m) } func (*ExecDetails) ProtoMessage() {} func (*ExecDetails) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{99} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{99} } func (m *ExecDetails) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7273,7 +7273,7 @@ func (m *ExecDetailsV2) Reset() { *m = ExecDetailsV2{} } func (m *ExecDetailsV2) String() string { return proto.CompactTextString(m) } func (*ExecDetailsV2) ProtoMessage() {} func (*ExecDetailsV2) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{100} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{100} } func (m *ExecDetailsV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7329,7 +7329,7 @@ func (m *KvPair) Reset() { *m = KvPair{} } func (m *KvPair) String() string { return proto.CompactTextString(m) } func (*KvPair) ProtoMessage() {} func (*KvPair) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{101} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{101} } func (m *KvPair) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7393,7 +7393,7 @@ func (m *Mutation) Reset() { *m = Mutation{} } func (m *Mutation) String() string { return proto.CompactTextString(m) } func (*Mutation) ProtoMessage() {} func (*Mutation) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{102} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{102} } func (m *Mutation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7464,7 +7464,7 @@ func (m *MvccWrite) Reset() { *m = MvccWrite{} } func (m *MvccWrite) String() string { return proto.CompactTextString(m) } func (*MvccWrite) ProtoMessage() {} func (*MvccWrite) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{103} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{103} } func (m *MvccWrite) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7533,7 +7533,7 @@ func (m *MvccValue) Reset() { *m = MvccValue{} } func (m *MvccValue) String() string { return proto.CompactTextString(m) } func (*MvccValue) ProtoMessage() {} func (*MvccValue) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{104} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{104} } func (m *MvccValue) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7590,7 +7590,7 @@ func (m *MvccLock) Reset() { *m = MvccLock{} } func (m *MvccLock) String() string { return proto.CompactTextString(m) } func (*MvccLock) ProtoMessage() {} func (*MvccLock) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{105} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{105} } func (m *MvccLock) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7660,7 +7660,7 @@ func (m *MvccInfo) Reset() { *m = MvccInfo{} } func (m *MvccInfo) String() string { return proto.CompactTextString(m) } func (*MvccInfo) ProtoMessage() {} func (*MvccInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{106} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{106} } func (m *MvccInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7722,7 +7722,7 @@ func (m *TxnInfo) Reset() { *m = TxnInfo{} } func (m *TxnInfo) String() string { return proto.CompactTextString(m) } func (*TxnInfo) ProtoMessage() {} func (*TxnInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{107} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{107} } func (m *TxnInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7777,7 +7777,7 @@ func (m *KeyRange) Reset() { *m = KeyRange{} } func (m *KeyRange) String() string { return proto.CompactTextString(m) } func (*KeyRange) ProtoMessage() {} func (*KeyRange) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{108} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{108} } func (m *KeyRange) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7835,7 +7835,7 @@ func (m *LeaderInfo) Reset() { *m = LeaderInfo{} } func (m *LeaderInfo) String() string { return proto.CompactTextString(m) } func (*LeaderInfo) ProtoMessage() {} func (*LeaderInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{109} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{109} } func (m *LeaderInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7911,7 +7911,7 @@ func (m *ReadState) Reset() { *m = ReadState{} } func (m *ReadState) String() string { return proto.CompactTextString(m) } func (*ReadState) ProtoMessage() {} func (*ReadState) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{110} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{110} } func (m *ReadState) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7966,7 +7966,7 @@ func (m *CheckLeaderRequest) Reset() { *m = CheckLeaderRequest{} } func (m *CheckLeaderRequest) String() string { return proto.CompactTextString(m) } func (*CheckLeaderRequest) ProtoMessage() {} func (*CheckLeaderRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{111} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{111} } func (m *CheckLeaderRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8021,7 +8021,7 @@ func (m *CheckLeaderResponse) Reset() { *m = CheckLeaderResponse{} } func (m *CheckLeaderResponse) String() string { return proto.CompactTextString(m) } func (*CheckLeaderResponse) ProtoMessage() {} func (*CheckLeaderResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{112} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{112} } func (m *CheckLeaderResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8077,7 +8077,7 @@ func (m *StoreSafeTSRequest) Reset() { *m = StoreSafeTSRequest{} } func (m *StoreSafeTSRequest) String() string { return proto.CompactTextString(m) } func (*StoreSafeTSRequest) ProtoMessage() {} func (*StoreSafeTSRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{113} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{113} } func (m *StoreSafeTSRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8124,7 +8124,7 @@ func (m *StoreSafeTSResponse) Reset() { *m = StoreSafeTSResponse{} } func (m *StoreSafeTSResponse) String() string { return proto.CompactTextString(m) } func (*StoreSafeTSResponse) ProtoMessage() {} func (*StoreSafeTSResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{114} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{114} } func (m *StoreSafeTSResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8173,7 +8173,7 @@ func (m *RawGetKeyTTLRequest) Reset() { *m = RawGetKeyTTLRequest{} } func (m *RawGetKeyTTLRequest) String() string { return proto.CompactTextString(m) } func (*RawGetKeyTTLRequest) ProtoMessage() {} func (*RawGetKeyTTLRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{115} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{115} } func (m *RawGetKeyTTLRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8237,7 +8237,7 @@ func (m *RawGetKeyTTLResponse) Reset() { *m = RawGetKeyTTLResponse{} } func (m *RawGetKeyTTLResponse) String() string { return proto.CompactTextString(m) } func (*RawGetKeyTTLResponse) ProtoMessage() {} func (*RawGetKeyTTLResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{116} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{116} } func (m *RawGetKeyTTLResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8311,7 +8311,7 @@ func (m *RawCASRequest) Reset() { *m = RawCASRequest{} } func (m *RawCASRequest) String() string { return proto.CompactTextString(m) } func (*RawCASRequest) ProtoMessage() {} func (*RawCASRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{117} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{117} } func (m *RawCASRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8405,7 +8405,7 @@ func (m *RawCASResponse) Reset() { *m = RawCASResponse{} } func (m *RawCASResponse) String() string { return proto.CompactTextString(m) } func (*RawCASResponse) ProtoMessage() {} func (*RawCASResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{118} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{118} } func (m *RawCASResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8480,7 +8480,7 @@ func (m *GetLockWaitInfoRequest) Reset() { *m = GetLockWaitInfoRequest{} func (m *GetLockWaitInfoRequest) String() string { return proto.CompactTextString(m) } func (*GetLockWaitInfoRequest) ProtoMessage() {} func (*GetLockWaitInfoRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{119} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{119} } func (m *GetLockWaitInfoRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8529,7 +8529,7 @@ func (m *GetLockWaitInfoResponse) Reset() { *m = GetLockWaitInfoResponse func (m *GetLockWaitInfoResponse) String() string { return proto.CompactTextString(m) } func (*GetLockWaitInfoResponse) ProtoMessage() {} func (*GetLockWaitInfoResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_kvrpcpb_e007fb3560e1c248, []int{120} + return fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c, []int{120} } func (m *GetLockWaitInfoResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9230,12 +9230,6 @@ func (m *PessimisticLockRequest) MarshalTo(dAtA []byte) (int, error) { i++ i = encodeVarintKvrpcpb(dAtA, i, uint64(m.MinCommitTs)) } - if len(m.SqlDigest) > 0 { - dAtA[i] = 0x62 - i++ - i = encodeVarintKvrpcpb(dAtA, i, uint64(len(m.SqlDigest))) - i += copy(dAtA[i:], m.SqlDigest) - } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) } @@ -13083,6 +13077,14 @@ func (m *Context) MarshalTo(dAtA []byte) (int, error) { } i++ } + if len(m.ResourceGroupTag) > 0 { + dAtA[i] = 0x92 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintKvrpcpb(dAtA, i, uint64(len(m.ResourceGroupTag))) + i += copy(dAtA[i:], m.ResourceGroupTag) + } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) } @@ -14854,10 +14856,6 @@ func (m *PessimisticLockRequest) Size() (n int) { if m.MinCommitTs != 0 { n += 1 + sovKvrpcpb(uint64(m.MinCommitTs)) } - l = len(m.SqlDigest) - if l > 0 { - n += 1 + l + sovKvrpcpb(uint64(l)) - } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -16618,6 +16616,10 @@ func (m *Context) Size() (n int) { if m.StaleRead { n += 3 } + l = len(m.ResourceGroupTag) + if l > 0 { + n += 2 + l + sovKvrpcpb(uint64(l)) + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -18937,35 +18939,6 @@ func (m *PessimisticLockRequest) Unmarshal(dAtA []byte) error { break } } - case 12: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SqlDigest", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowKvrpcpb - } - 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 ErrInvalidLengthKvrpcpb - } - postIndex := iNdEx + intStringLen - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.SqlDigest = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipKvrpcpb(dAtA[iNdEx:]) @@ -30501,6 +30474,37 @@ func (m *Context) Unmarshal(dAtA []byte) error { } } m.StaleRead = bool(v != 0) + case 18: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ResourceGroupTag", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowKvrpcpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthKvrpcpb + } + postIndex := iNdEx + byteLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ResourceGroupTag = append(m.ResourceGroupTag[:0], dAtA[iNdEx:postIndex]...) + if m.ResourceGroupTag == nil { + m.ResourceGroupTag = []byte{} + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipKvrpcpb(dAtA[iNdEx:]) @@ -35380,292 +35384,292 @@ var ( ErrIntOverflowKvrpcpb = fmt.Errorf("proto: integer overflow") ) -func init() { proto.RegisterFile("kvrpcpb.proto", fileDescriptor_kvrpcpb_e007fb3560e1c248) } +func init() { proto.RegisterFile("kvrpcpb.proto", fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c) } -var fileDescriptor_kvrpcpb_e007fb3560e1c248 = []byte{ - // 4535 bytes of a gzipped FileDescriptorProto +var fileDescriptor_kvrpcpb_0c7f6a72ef2c1d9c = []byte{ + // 4539 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x3c, 0x5d, 0x6f, 0x1c, 0xc9, - 0x71, 0x9a, 0xfd, 0xde, 0x5a, 0xee, 0x72, 0xd8, 0xfc, 0x5a, 0x4a, 0x77, 0x12, 0x35, 0x89, 0x4e, - 0x3c, 0xda, 0x47, 0xf9, 0xe8, 0x73, 0x3e, 0x1c, 0x23, 0xbe, 0x13, 0xa9, 0x93, 0x78, 0x47, 0x49, - 0xc4, 0x90, 0xc7, 0xc3, 0x01, 0xf1, 0x8d, 0x87, 0xb3, 0x4d, 0x72, 0xc0, 0xd9, 0x99, 0x55, 0x77, - 0x2f, 0xb5, 0x6b, 0xc3, 0x80, 0x9d, 0x2f, 0xc0, 0x40, 0x12, 0xc7, 0x17, 0x03, 0x36, 0x90, 0x20, - 0x40, 0x02, 0x38, 0x48, 0xf2, 0x96, 0xbc, 0x07, 0x81, 0x81, 0x3c, 0xf8, 0x25, 0x88, 0x91, 0xa7, - 0x20, 0x79, 0x48, 0xac, 0xfc, 0x86, 0xbc, 0x07, 0xfd, 0x35, 0x1f, 0xbb, 0x2b, 0x8a, 0xda, 0x5b, - 0xf2, 0x0c, 0x3f, 0x71, 0xbb, 0xaa, 0xa6, 0xbb, 0xaa, 0xba, 0xba, 0xba, 0xaa, 0xa6, 0x86, 0x50, - 0x3f, 0x39, 0x25, 0x1d, 0xaf, 0x73, 0xb0, 0xd6, 0x21, 0x11, 0x8b, 0x50, 0x59, 0x0d, 0xaf, 0x4e, - 0xb5, 0x31, 0x73, 0x35, 0xf8, 0x6a, 0x1d, 0x13, 0x12, 0x91, 0x78, 0x38, 0x77, 0x14, 0x1d, 0x45, - 0xe2, 0xe7, 0x1d, 0xfe, 0x4b, 0x41, 0xa7, 0x49, 0x97, 0x32, 0xf1, 0x53, 0x01, 0x1a, 0x2d, 0xec, - 0xb6, 0x82, 0xc8, 0x3b, 0x91, 0x63, 0xab, 0x05, 0x70, 0x1f, 0x33, 0x1b, 0x3f, 0xe9, 0x62, 0xca, - 0xd0, 0x2a, 0x94, 0xbd, 0x28, 0x64, 0xb8, 0xc7, 0x9a, 0xc6, 0xb2, 0xb1, 0x52, 0x5b, 0x37, 0xd7, - 0x34, 0x2f, 0x1b, 0x12, 0x6e, 0x6b, 0x02, 0x64, 0x42, 0xfe, 0x04, 0xf7, 0x9b, 0xb9, 0x65, 0x63, - 0x65, 0xca, 0xe6, 0x3f, 0x51, 0x13, 0xca, 0xa7, 0x98, 0x50, 0x3f, 0x0a, 0x9b, 0xf9, 0x65, 0x63, - 0xa5, 0x60, 0xeb, 0xa1, 0xf5, 0xcc, 0x80, 0x9a, 0x58, 0x86, 0x76, 0xa2, 0x90, 0x62, 0xf4, 0x26, - 0x4c, 0x11, 0x7c, 0xe4, 0x47, 0xa1, 0x23, 0x84, 0x50, 0x8b, 0x35, 0xd6, 0xb4, 0x48, 0xf7, 0xf8, - 0x5f, 0xbb, 0x26, 0x69, 0xc4, 0x00, 0xdd, 0x86, 0xa2, 0xa4, 0xcd, 0x09, 0xda, 0x99, 0x98, 0xb1, - 0xf7, 0x71, 0x5f, 0x92, 0x4b, 0x3c, 0x9a, 0x83, 0xe2, 0xa9, 0x1b, 0x74, 0xb1, 0xe0, 0x61, 0xca, - 0x96, 0x03, 0x74, 0x0d, 0xaa, 0x61, 0xc4, 0x9c, 0xc3, 0xa8, 0x1b, 0xb6, 0x9a, 0x85, 0x65, 0x63, - 0xa5, 0x62, 0x57, 0xc2, 0x88, 0xbd, 0xcb, 0xc7, 0xe8, 0xb7, 0x61, 0x1a, 0xf7, 0xb0, 0xe7, 0xb4, - 0x30, 0x73, 0xfd, 0x80, 0x3a, 0xa7, 0xeb, 0xcd, 0x92, 0x58, 0x65, 0x21, 0x5e, 0xe5, 0x5e, 0x0f, - 0x7b, 0x9b, 0x12, 0xbd, 0xbf, 0x6e, 0xd7, 0x71, 0x7a, 0xf8, 0x5e, 0xa1, 0x52, 0x34, 0x4b, 0xd6, - 0xff, 0x19, 0x50, 0xdb, 0xf5, 0xdc, 0x70, 0x1c, 0x65, 0x5e, 0x83, 0x2a, 0x65, 0x2e, 0x61, 0x4e, - 0xa2, 0xd2, 0x8a, 0x00, 0xbc, 0x8f, 0xfb, 0x5c, 0xa2, 0xc0, 0x6f, 0xfb, 0x4c, 0x48, 0x54, 0xb7, - 0xe5, 0x20, 0xad, 0xed, 0x42, 0x46, 0xdb, 0x68, 0x09, 0x2a, 0x27, 0xb8, 0xef, 0x44, 0x61, 0xd0, - 0x6f, 0x16, 0x85, 0xa8, 0xe5, 0x13, 0xdc, 0x7f, 0x1c, 0x06, 0x62, 0x8b, 0x08, 0xe6, 0x74, 0x58, - 0x48, 0x58, 0xb1, 0xf5, 0x10, 0x2d, 0x42, 0x19, 0x87, 0x2d, 0xb1, 0x7e, 0x59, 0xac, 0x5f, 0xc2, - 0x61, 0x8b, 0xaf, 0x7e, 0x03, 0x6a, 0xd4, 0x6d, 0x77, 0x02, 0xec, 0x50, 0x86, 0x3b, 0xcd, 0x8a, - 0xe0, 0x01, 0x24, 0x68, 0x97, 0xe1, 0x8e, 0xf5, 0x7d, 0x03, 0xa6, 0xa4, 0xdc, 0xe3, 0xef, 0xee, - 0x2d, 0x28, 0x76, 0x5c, 0x9f, 0xd0, 0x66, 0x6e, 0x39, 0xbf, 0x52, 0x5b, 0x9f, 0x4e, 0x76, 0xf7, - 0x74, 0xc7, 0xf5, 0x89, 0x2d, 0xb1, 0x89, 0x11, 0xe4, 0xcf, 0x36, 0x02, 0xeb, 0x6f, 0x0a, 0x30, - 0xbd, 0x43, 0xf0, 0x53, 0xe2, 0x33, 0x3c, 0xce, 0x7e, 0xdc, 0x81, 0x6a, 0xbb, 0xcb, 0x5c, 0xe6, - 0x47, 0xa1, 0xe6, 0x29, 0x59, 0xec, 0xa1, 0xc2, 0xd8, 0x09, 0x0d, 0xba, 0x09, 0x53, 0x1d, 0xe2, - 0xb7, 0x5d, 0xd2, 0x77, 0xf8, 0xe9, 0x52, 0xc6, 0x57, 0x53, 0xb0, 0xed, 0xc8, 0x3b, 0x41, 0xbf, - 0x02, 0x75, 0xb9, 0xc7, 0xd9, 0x6d, 0x9b, 0x12, 0xc0, 0xfd, 0x64, 0xef, 0xf8, 0xf3, 0x0e, 0x63, - 0x81, 0xd8, 0xbb, 0x82, 0x5d, 0xe6, 0xe3, 0x3d, 0x16, 0xa0, 0x75, 0x98, 0xa7, 0x27, 0x7e, 0xc7, - 0xf1, 0xa2, 0x90, 0x32, 0xe2, 0xfa, 0x21, 0x73, 0xbc, 0x63, 0xec, 0x9d, 0xa8, 0x9d, 0x9c, 0xe5, - 0xc8, 0x8d, 0x18, 0xb7, 0xc1, 0x51, 0x68, 0x0d, 0x66, 0x7d, 0xea, 0x74, 0x30, 0xa5, 0x7e, 0xdb, - 0xa7, 0xcc, 0xf7, 0x24, 0x77, 0xe5, 0xe5, 0xfc, 0x4a, 0xc5, 0x9e, 0xf1, 0xe9, 0x4e, 0x82, 0x11, - 0x3c, 0x2e, 0x41, 0x85, 0xf5, 0x42, 0x87, 0xfa, 0xdf, 0xc0, 0x62, 0xa7, 0x0b, 0x76, 0x99, 0xf5, - 0xc2, 0x5d, 0xff, 0x1b, 0x18, 0x59, 0x50, 0x3f, 0x8c, 0x88, 0xd3, 0xed, 0xb4, 0x5c, 0x86, 0x1d, - 0x46, 0x9b, 0x55, 0x81, 0xaf, 0x1d, 0x46, 0xe4, 0x03, 0x01, 0xdb, 0xa3, 0x9c, 0xa6, 0xed, 0x87, - 0x8e, 0x17, 0xb5, 0xdb, 0x3e, 0xe3, 0x34, 0x20, 0x69, 0xda, 0x7e, 0xb8, 0x21, 0x60, 0x7b, 0x14, - 0xad, 0x80, 0xd9, 0xa5, 0xd8, 0x71, 0x69, 0x3f, 0xf4, 0x14, 0x65, 0xb3, 0x26, 0x24, 0x68, 0x74, - 0x29, 0x7e, 0x87, 0x83, 0x25, 0x2d, 0x5a, 0x86, 0x1a, 0xc5, 0x5e, 0x14, 0xb6, 0x5c, 0xe2, 0x63, - 0xda, 0x9c, 0x5a, 0xce, 0x73, 0x95, 0xa6, 0x40, 0xe8, 0x15, 0x00, 0x46, 0xb8, 0xa5, 0x63, 0xa7, - 0xe3, 0x35, 0xeb, 0xf2, 0x58, 0x33, 0xd2, 0x7f, 0x1c, 0xe2, 0x1d, 0x4f, 0x70, 0xe3, 0xf6, 0x52, - 0xdc, 0x34, 0x14, 0x37, 0x6e, 0x4f, 0x73, 0x63, 0xfd, 0x93, 0x01, 0x66, 0x62, 0x28, 0xe3, 0x1b, - 0xf0, 0xeb, 0x50, 0x12, 0xd8, 0x61, 0x6b, 0x89, 0x4d, 0x53, 0x11, 0x0c, 0x2b, 0x29, 0x3f, 0xac, - 0xa4, 0xdb, 0x60, 0x4a, 0xa1, 0x52, 0x64, 0xd2, 0x5c, 0xea, 0x11, 0x97, 0x2d, 0xe6, 0xff, 0x27, - 0x79, 0x58, 0x18, 0xd8, 0xc4, 0x5f, 0x16, 0x7b, 0x1f, 0x32, 0xb8, 0xd2, 0x48, 0x83, 0xf3, 0xa9, - 0x73, 0xe8, 0x13, 0xca, 0xb4, 0x65, 0x73, 0x1b, 0xa8, 0xf9, 0xf4, 0x5d, 0x0e, 0x13, 0x7c, 0xdc, - 0x84, 0xa9, 0xa7, 0x2e, 0x57, 0xa1, 0xdf, 0xc6, 0x51, 0x97, 0x09, 0xbb, 0xce, 0xdb, 0x35, 0x0e, - 0xdb, 0x93, 0x20, 0xee, 0x61, 0x0f, 0x23, 0xe2, 0x61, 0x61, 0xd3, 0x15, 0x5b, 0x0e, 0xb8, 0x00, - 0x04, 0xb3, 0x2e, 0x09, 0x1d, 0x71, 0x87, 0x48, 0x6b, 0xae, 0xd8, 0x53, 0x12, 0xb8, 0x2f, 0x60, - 0xc3, 0xbb, 0x59, 0x1b, 0xde, 0xcd, 0x57, 0x01, 0xe8, 0x93, 0xc0, 0x69, 0xf9, 0x47, 0x98, 0xb2, - 0xe6, 0xd4, 0xb2, 0xb1, 0x52, 0xb5, 0xab, 0xf4, 0x49, 0xb0, 0x29, 0x00, 0xd6, 0xcf, 0x0d, 0x58, - 0x1c, 0xda, 0xc3, 0x4b, 0x31, 0xc5, 0x6b, 0x50, 0x1d, 0x34, 0xc3, 0x8a, 0xa7, 0xb9, 0x8e, 0x2f, - 0xd2, 0x42, 0xfa, 0x22, 0x5d, 0x80, 0x92, 0xd2, 0x46, 0x51, 0x9c, 0x47, 0x35, 0xe2, 0x32, 0xc6, - 0x17, 0x2c, 0xdf, 0x2a, 0xee, 0x60, 0xaa, 0xfa, 0x86, 0xa5, 0xd6, 0x8f, 0x0d, 0xb8, 0x9a, 0x92, - 0xd1, 0x8e, 0x82, 0xe0, 0xc0, 0x1d, 0xcf, 0x56, 0x87, 0xec, 0x2a, 0x37, 0xc2, 0xae, 0x86, 0x8c, - 0x27, 0x3f, 0x6c, 0x3c, 0x08, 0x0a, 0x27, 0xb8, 0xcf, 0x0f, 0x16, 0x17, 0x44, 0xfc, 0xb6, 0xbe, - 0x09, 0xd7, 0x46, 0xb2, 0x79, 0x19, 0xdb, 0x61, 0xfd, 0x83, 0x01, 0xb3, 0x7b, 0xbd, 0xf0, 0x01, - 0x76, 0x09, 0xbb, 0x8b, 0xdd, 0xb1, 0xc2, 0xb2, 0xc1, 0x83, 0x99, 0x3b, 0xc7, 0xc1, 0xcc, 0x8f, - 0x50, 0xe0, 0x6b, 0x30, 0xed, 0xb6, 0x4e, 0x7d, 0x8a, 0x9d, 0xf8, 0x7c, 0x2a, 0x07, 0x24, 0xc1, - 0xdb, 0xf2, 0x94, 0x5a, 0x7f, 0x6c, 0xc0, 0x5c, 0x96, 0xe7, 0x4b, 0x88, 0xf1, 0xd2, 0x5e, 0x23, - 0x9f, 0xf1, 0x1a, 0xd6, 0xcf, 0x73, 0x30, 0x2f, 0xee, 0xbe, 0xbd, 0x5e, 0xb8, 0xcb, 0x5c, 0xd6, - 0xa5, 0xe3, 0x68, 0xf1, 0x06, 0x68, 0x8d, 0xa5, 0x22, 0x32, 0x50, 0x20, 0x1e, 0x15, 0x2d, 0x42, - 0x59, 0x72, 0xa0, 0x2d, 0xab, 0x24, 0x18, 0xa0, 0x5c, 0x6f, 0x9e, 0x1b, 0x04, 0x98, 0x38, 0x52, - 0xc7, 0x89, 0xe3, 0x96, 0xe0, 0x5d, 0x0e, 0x95, 0x3e, 0xc1, 0xeb, 0x12, 0x82, 0x43, 0x41, 0x22, - 0x5d, 0x5f, 0x55, 0x41, 0xf6, 0x28, 0x7a, 0x13, 0xe6, 0x89, 0x32, 0x3e, 0xc7, 0x3f, 0x74, 0xf8, - 0xd1, 0xc2, 0x3d, 0x9f, 0x32, 0x75, 0xd9, 0x23, 0x8d, 0xdc, 0x3a, 0x7c, 0x14, 0xb1, 0x7b, 0x1c, - 0x83, 0x56, 0x61, 0x46, 0xf8, 0x2d, 0x27, 0x7d, 0xb3, 0x4a, 0x7f, 0x38, 0x2d, 0x10, 0xbb, 0xc9, - 0xd5, 0xfa, 0x15, 0xb8, 0x4a, 0x30, 0x8d, 0x82, 0x53, 0x3f, 0x3c, 0x1a, 0x0e, 0x0f, 0x2a, 0xe2, - 0xa1, 0x66, 0x4c, 0x31, 0xe0, 0x9c, 0xac, 0xef, 0xe5, 0x60, 0x61, 0x50, 0xc7, 0x9f, 0xe9, 0xae, - 0xa3, 0x5b, 0xd0, 0x50, 0x8e, 0x2c, 0x7b, 0xd9, 0xd4, 0x25, 0x54, 0x1b, 0xf5, 0x6d, 0x28, 0xb9, - 0x1e, 0xbf, 0xc0, 0x84, 0xc2, 0x1b, 0xa9, 0x38, 0xf3, 0x1d, 0x01, 0xb6, 0x15, 0x1a, 0xad, 0x41, - 0x55, 0x2c, 0xe5, 0x87, 0x87, 0x91, 0xca, 0x05, 0x12, 0xbe, 0xb8, 0x0e, 0xb6, 0xc2, 0xc3, 0xc8, - 0x16, 0xec, 0xf0, 0x5f, 0xd6, 0x77, 0x0c, 0xb8, 0x2a, 0x34, 0xb2, 0xab, 0xa2, 0x13, 0x71, 0xd2, - 0xc6, 0x32, 0x3d, 0xed, 0x95, 0x72, 0x89, 0x57, 0x3a, 0xd7, 0x89, 0xb5, 0xfe, 0xd9, 0x80, 0x6b, - 0x23, 0x79, 0xb8, 0x84, 0xad, 0xb9, 0x0d, 0x45, 0xae, 0x0b, 0x7e, 0x18, 0xf2, 0xa3, 0x75, 0x25, - 0xf1, 0xd9, 0x1b, 0xa7, 0x90, 0xbd, 0x71, 0xac, 0xbf, 0x33, 0xa0, 0x2e, 0x0d, 0xf4, 0xc2, 0xee, - 0x05, 0xad, 0xdd, 0x7c, 0x4a, 0xbb, 0xe7, 0x33, 0x1e, 0x99, 0xe5, 0xd9, 0xa5, 0x03, 0x3f, 0x0c, - 0xa2, 0x23, 0xeb, 0xcf, 0x0c, 0x68, 0x68, 0x5e, 0x2f, 0x41, 0xc1, 0xc3, 0x3c, 0xe6, 0x47, 0xf0, - 0x68, 0x1d, 0x41, 0x7d, 0xab, 0xdd, 0x89, 0x48, 0xac, 0xc0, 0x4c, 0x60, 0x67, 0x9c, 0x23, 0xb0, - 0x1b, 0x5e, 0x28, 0x37, 0x6a, 0xa1, 0x8f, 0xa0, 0xa1, 0x17, 0x1a, 0x5f, 0xfa, 0xb9, 0xb4, 0xf4, - 0x55, 0x9d, 0xbb, 0x7d, 0xc2, 0x35, 0x1b, 0x60, 0x37, 0xec, 0x76, 0x26, 0x53, 0x97, 0x38, 0xd7, - 0x7d, 0x97, 0xf5, 0xc7, 0x85, 0x01, 0x7f, 0x6c, 0xfd, 0xc0, 0x80, 0xe9, 0x98, 0xa9, 0x5f, 0x9c, - 0xfd, 0x3e, 0x81, 0xe9, 0xbb, 0x2e, 0xf3, 0x8e, 0xc7, 0xac, 0xe1, 0x8c, 0xf2, 0x35, 0xcf, 0xaf, - 0xe2, 0xfc, 0x97, 0x01, 0x66, 0xb2, 0xda, 0x85, 0x27, 0xfb, 0x23, 0xaa, 0x32, 0x85, 0x97, 0xa8, - 0xca, 0x24, 0xba, 0x2e, 0x9e, 0xad, 0xeb, 0xf7, 0x0a, 0x95, 0xbc, 0x59, 0xb0, 0xbe, 0x09, 0x73, - 0x42, 0xb8, 0x0b, 0x0f, 0x4d, 0x47, 0xb8, 0x20, 0x8b, 0xc2, 0xfc, 0xc0, 0xe2, 0x17, 0x6f, 0x63, - 0xd6, 0xdf, 0x1b, 0x30, 0xbd, 0xeb, 0xb9, 0xe1, 0xb8, 0x49, 0xe3, 0x0d, 0xe0, 0xa9, 0xf4, 0x80, - 0xac, 0xd0, 0x76, 0x7b, 0x5a, 0xd2, 0x4c, 0x55, 0x2b, 0xff, 0xbc, 0xaa, 0x56, 0x21, 0x5d, 0xd5, - 0x4a, 0x95, 0xa1, 0x8a, 0xe9, 0x32, 0x94, 0xf5, 0x43, 0x03, 0xcc, 0x84, 0xd9, 0x5f, 0xa0, 0x2b, - 0xcd, 0xfa, 0x37, 0x03, 0x90, 0x2d, 0x42, 0x25, 0x3c, 0xae, 0x26, 0xcf, 0x65, 0x37, 0xe7, 0x73, - 0x09, 0xe8, 0x0d, 0xa8, 0xb2, 0x5e, 0x28, 0x22, 0x17, 0x99, 0xda, 0xa4, 0x57, 0xde, 0xeb, 0x85, - 0x32, 0x72, 0x61, 0xf2, 0x47, 0x92, 0x04, 0x15, 0x53, 0xd6, 0xf8, 0x04, 0x66, 0x33, 0x02, 0x5d, - 0x82, 0x2d, 0xee, 0x43, 0xf5, 0xfe, 0xc6, 0x38, 0xaa, 0xe3, 0xb9, 0xb5, 0x7b, 0x88, 0x9d, 0x4e, - 0xe4, 0x87, 0x4c, 0xe9, 0xad, 0xca, 0x21, 0x3b, 0x1c, 0x60, 0x1d, 0x03, 0xf0, 0x79, 0x2f, 0x41, - 0x82, 0x1f, 0x1a, 0x80, 0x36, 0x71, 0x80, 0x19, 0xb6, 0xdd, 0xf0, 0x08, 0x4f, 0xbc, 0x0a, 0x9c, - 0x3a, 0x19, 0xf9, 0xc1, 0x02, 0x6d, 0x18, 0x31, 0xff, 0x50, 0x55, 0x7c, 0x65, 0x71, 0x1b, 0x24, - 0xe8, 0x71, 0x18, 0xf4, 0xad, 0x8f, 0x61, 0x36, 0xc3, 0xd8, 0xa4, 0x2f, 0xec, 0xaf, 0x41, 0xdd, - 0x76, 0x9f, 0x4e, 0xec, 0x35, 0x42, 0x03, 0x72, 0xde, 0xa1, 0x90, 0xb1, 0x6a, 0xe7, 0xbc, 0x43, - 0xeb, 0x8f, 0x0c, 0x68, 0xe8, 0xf9, 0x27, 0xcc, 0xfa, 0x18, 0x2f, 0x0b, 0xac, 0x16, 0x20, 0xdb, - 0x7d, 0x3a, 0xe9, 0x5b, 0x77, 0x50, 0xe8, 0x08, 0x66, 0x33, 0xab, 0x5c, 0xf4, 0x6d, 0x6b, 0xfd, - 0xa5, 0x21, 0x76, 0x71, 0xa7, 0x3b, 0xa1, 0x5d, 0x1c, 0xad, 0x59, 0x29, 0x66, 0x41, 0x8b, 0xc9, - 0x9f, 0x4b, 0x2a, 0x7f, 0xfc, 0x27, 0x37, 0xf3, 0xc3, 0x88, 0x38, 0x9e, 0x4b, 0x55, 0xaa, 0x5b, - 0x3a, 0x8c, 0xc8, 0x86, 0x4b, 0x79, 0xc4, 0xa9, 0xf9, 0x9b, 0xb4, 0x01, 0xff, 0xb5, 0x91, 0xec, - 0xe9, 0x98, 0x0a, 0x38, 0x67, 0x4c, 0x33, 0xb0, 0xcd, 0x5a, 0xfe, 0xc2, 0x48, 0xf9, 0x8b, 0x19, - 0xf9, 0x3f, 0x4e, 0x2c, 0xe2, 0x42, 0x94, 0xd0, 0x07, 0xd3, 0x76, 0x9f, 0x2a, 0x47, 0x71, 0x11, - 0x07, 0x39, 0x2d, 0x5a, 0x21, 0x23, 0xda, 0xef, 0xc0, 0x4c, 0x6a, 0xe9, 0x49, 0x0b, 0xf6, 0x6d, - 0x03, 0xe6, 0xb5, 0xe6, 0xc6, 0x17, 0xef, 0x1c, 0x87, 0xf6, 0xf9, 0x02, 0xba, 0xb0, 0x30, 0xc8, - 0xc1, 0xa4, 0xa5, 0xfc, 0x57, 0xe9, 0x25, 0x2f, 0xf1, 0x05, 0x64, 0xfa, 0x35, 0x63, 0x21, 0xfb, - 0x9a, 0x51, 0x2a, 0xa6, 0x18, 0x2b, 0xe6, 0xe5, 0x5f, 0x3b, 0x5a, 0x47, 0x30, 0x1d, 0x8b, 0x33, - 0xbe, 0xae, 0x6e, 0x42, 0xfe, 0xe4, 0xf4, 0xb9, 0x87, 0x92, 0xe3, 0xac, 0xef, 0x4a, 0xf3, 0xf8, - 0x4c, 0xae, 0xee, 0x01, 0x77, 0xa8, 0xec, 0xe4, 0x42, 0x2f, 0xeb, 0x9f, 0x19, 0x89, 0x1f, 0x19, - 0xd7, 0x58, 0x5e, 0x87, 0x12, 0xe1, 0xdc, 0x8d, 0x2c, 0x69, 0x4b, 0xbe, 0x15, 0x01, 0x0f, 0xcf, - 0xb0, 0xeb, 0x1d, 0x3b, 0x69, 0xfb, 0xa9, 0x72, 0xc8, 0xf6, 0xc4, 0x6c, 0xc8, 0x0a, 0x60, 0x2e, - 0x2b, 0xd1, 0x85, 0xda, 0xcb, 0xb7, 0x60, 0xe9, 0x83, 0x90, 0x07, 0x98, 0x9b, 0x98, 0x32, 0x12, - 0xf5, 0x2f, 0xd7, 0x64, 0x2c, 0x0c, 0x57, 0x47, 0x2d, 0x3f, 0x69, 0x33, 0xf9, 0x3a, 0x5c, 0xb3, - 0xf1, 0x91, 0x4f, 0x19, 0x26, 0x3c, 0x07, 0x78, 0x7c, 0x40, 0x31, 0x39, 0xc5, 0x64, 0x1c, 0x39, - 0xe7, 0xa1, 0xc4, 0xd3, 0x44, 0x46, 0x55, 0x74, 0x5e, 0x6c, 0xbb, 0xbd, 0x3d, 0x6a, 0xbd, 0x05, - 0xaf, 0x8c, 0x5e, 0x41, 0x89, 0x12, 0xf3, 0x65, 0x64, 0x63, 0xcd, 0xa6, 0xa8, 0x71, 0x5e, 0x10, - 0x53, 0x5d, 0x58, 0x1a, 0x31, 0xfd, 0x59, 0x1c, 0x71, 0x13, 0xf6, 0xa9, 0xe3, 0x05, 0xd8, 0x95, - 0x69, 0x5b, 0xc5, 0x2e, 0xfb, 0x54, 0x94, 0x8a, 0xce, 0x9f, 0x42, 0x7e, 0x0c, 0x4b, 0x36, 0x6e, - 0x47, 0x32, 0xdf, 0xba, 0x00, 0xb1, 0xd6, 0xe1, 0xea, 0xa8, 0xf9, 0xcf, 0xd4, 0xf4, 0xf7, 0x0c, - 0x58, 0xdc, 0x39, 0xee, 0x53, 0xdf, 0x73, 0x83, 0x4f, 0x53, 0x25, 0x18, 0xcd, 0xd2, 0x18, 0xb5, - 0x01, 0xeb, 0x23, 0x68, 0x0e, 0x33, 0x74, 0xe6, 0xde, 0xc4, 0x1b, 0x90, 0x7b, 0xc1, 0x06, 0x7c, - 0xdb, 0x00, 0xb4, 0xdb, 0x09, 0x7c, 0x66, 0x8b, 0x93, 0x31, 0x5e, 0x35, 0xa4, 0x4a, 0xf9, 0x0c, - 0xc9, 0x71, 0xbe, 0x9b, 0x6b, 0x1a, 0x76, 0x45, 0x00, 0xb9, 0x50, 0x3c, 0x53, 0xd5, 0x04, 0xba, - 0xfa, 0x53, 0xd5, 0x58, 0x6a, 0xfd, 0x8b, 0x01, 0xb3, 0x19, 0x16, 0xc6, 0x3f, 0xd2, 0xaf, 0x41, - 0x21, 0xc0, 0x87, 0x4c, 0xa5, 0xac, 0x8d, 0x35, 0xd5, 0x37, 0x26, 0x27, 0x16, 0x5c, 0x09, 0x3c, - 0x5a, 0x81, 0x22, 0xf1, 0x8f, 0x8e, 0x99, 0x6a, 0xa7, 0x19, 0x45, 0x28, 0x09, 0xd0, 0x0a, 0x77, - 0xbe, 0x47, 0xa2, 0x88, 0x2c, 0x4b, 0x0a, 0x03, 0xb4, 0xb6, 0x46, 0x5b, 0xbf, 0x6f, 0x80, 0x69, - 0x63, 0xb7, 0xb5, 0x15, 0xb6, 0x70, 0x6f, 0x1c, 0x3d, 0x2e, 0x41, 0x25, 0x7e, 0x73, 0x26, 0x2d, - 0xa6, 0x4c, 0xd5, 0x3b, 0xb3, 0xe4, 0xde, 0xc9, 0xbf, 0xe0, 0xde, 0xb1, 0xfe, 0xd4, 0x80, 0x99, - 0x14, 0x1b, 0xe3, 0xeb, 0xf2, 0x55, 0x00, 0x82, 0xdd, 0x96, 0xe3, 0xf3, 0x89, 0x74, 0x7d, 0x81, - 0xe8, 0x99, 0x39, 0x4b, 0xdc, 0x82, 0x70, 0x6b, 0xa8, 0x25, 0x29, 0x36, 0x31, 0x45, 0x60, 0x7d, - 0x00, 0xb5, 0x7d, 0x4c, 0x74, 0xcd, 0x1d, 0x5d, 0x87, 0x5c, 0xd4, 0x11, 0x1c, 0x34, 0xd6, 0x1b, - 0xf1, 0x53, 0xfb, 0x98, 0x3c, 0xee, 0xd8, 0xb9, 0xa8, 0x73, 0xde, 0x94, 0xca, 0xfa, 0x32, 0x54, - 0xf6, 0x31, 0x11, 0xdd, 0x08, 0x09, 0x85, 0x91, 0x4e, 0xba, 0x52, 0x15, 0xdd, 0x5c, 0xb6, 0xa2, - 0xbb, 0x2c, 0x9e, 0x1d, 0xb8, 0x07, 0x32, 0x5e, 0x20, 0x82, 0xea, 0x3e, 0x26, 0xf2, 0xfe, 0x4b, - 0x6a, 0x21, 0xc6, 0x80, 0xac, 0x7a, 0x12, 0x7d, 0xee, 0x86, 0x79, 0xbf, 0x9d, 0xe6, 0x7d, 0xe0, - 0x51, 0xc1, 0xbb, 0x16, 0x87, 0x40, 0x7d, 0x1f, 0x93, 0x89, 0x15, 0x13, 0xce, 0xf5, 0xe6, 0xec, - 0x1f, 0x0d, 0x68, 0xe8, 0x45, 0x2f, 0xa0, 0x52, 0x34, 0xa8, 0x9d, 0xf3, 0xea, 0xe2, 0xec, 0x3a, - 0xc4, 0x53, 0x40, 0xfb, 0x98, 0x7c, 0x9a, 0x3a, 0x44, 0xac, 0xad, 0xfc, 0x4b, 0x69, 0x8b, 0xc0, - 0x6c, 0x66, 0xe1, 0xf1, 0x35, 0xb6, 0x92, 0x4d, 0x9a, 0x51, 0x5a, 0x11, 0xd9, 0xea, 0xc4, 0xb7, - 0x84, 0x55, 0x3c, 0x1c, 0x2f, 0x37, 0x7f, 0x0d, 0xf2, 0xed, 0xae, 0xf6, 0x86, 0x73, 0xe9, 0x45, - 0xe2, 0x17, 0x60, 0x9c, 0xe0, 0x8c, 0x37, 0x1f, 0x81, 0xb0, 0x8f, 0x87, 0xdd, 0x4b, 0xb1, 0x0f, - 0xee, 0x42, 0xe3, 0xad, 0x1d, 0x53, 0xe4, 0x15, 0x28, 0xb4, 0xbb, 0x4c, 0x2b, 0x76, 0xb4, 0xcc, - 0x82, 0xe2, 0x0c, 0xa1, 0x9f, 0x24, 0xfb, 0x7c, 0x59, 0x92, 0x3f, 0x93, 0x07, 0xf1, 0x42, 0x92, - 0xd8, 0xe7, 0x26, 0x61, 0xa3, 0x5f, 0x44, 0x8c, 0xd5, 0x44, 0x3b, 0x74, 0x7e, 0xca, 0x23, 0xce, - 0x4f, 0x08, 0xd3, 0xb1, 0x8c, 0x97, 0x71, 0x76, 0xfa, 0x30, 0xbf, 0x8f, 0xc9, 0x67, 0x91, 0xdf, - 0x5a, 0x0c, 0x16, 0x06, 0x97, 0xbe, 0x04, 0x2b, 0xda, 0x85, 0xd9, 0x87, 0xa7, 0x9e, 0x77, 0x1f, - 0xb3, 0xbb, 0x7d, 0x1e, 0x18, 0x4c, 0xe2, 0x22, 0xb1, 0xfe, 0xd0, 0x80, 0xb9, 0xec, 0xac, 0x93, - 0xae, 0x45, 0xdf, 0x82, 0x82, 0x68, 0x37, 0x19, 0xbc, 0x15, 0xf8, 0xaa, 0x22, 0x90, 0x10, 0x68, - 0xeb, 0xeb, 0xb0, 0x18, 0xf3, 0xa1, 0x9a, 0x89, 0x26, 0x1b, 0x66, 0x59, 0x7f, 0x61, 0x40, 0x73, - 0x78, 0x89, 0x49, 0x8b, 0xab, 0x54, 0x9c, 0x4f, 0xee, 0x6a, 0xad, 0x80, 0xc2, 0xd9, 0x0a, 0xf8, - 0x7e, 0x11, 0xca, 0x1b, 0x89, 0x59, 0x2a, 0x6e, 0xfc, 0x96, 0x60, 0xa5, 0x60, 0x57, 0x24, 0x60, - 0xab, 0x85, 0x7e, 0x2d, 0x61, 0xb5, 0x13, 0x79, 0xc7, 0xca, 0x6e, 0x66, 0xb3, 0x91, 0xeb, 0x3d, - 0x8e, 0x8a, 0xf9, 0xe5, 0x03, 0xb4, 0x0c, 0x85, 0x0e, 0xc6, 0xba, 0xc9, 0x7c, 0x4a, 0xd3, 0xef, - 0x60, 0x4c, 0x6c, 0x81, 0x41, 0x08, 0x0a, 0x0c, 0x93, 0xb6, 0xaa, 0x5b, 0x8b, 0xdf, 0xe8, 0x0e, - 0x54, 0x3a, 0xc4, 0x8f, 0x88, 0xcf, 0xfa, 0xc2, 0x2d, 0x34, 0xd6, 0x67, 0x53, 0xda, 0x6f, 0xb7, - 0xdd, 0xb0, 0xb5, 0x43, 0x7c, 0x3b, 0x26, 0x42, 0x6f, 0xc3, 0xb4, 0x4f, 0xa3, 0x40, 0x38, 0x63, - 0x27, 0xc0, 0xa7, 0x38, 0x10, 0xee, 0xa2, 0xb1, 0xbe, 0x18, 0x3f, 0xb7, 0xa5, 0xf1, 0xdb, 0x1c, - 0x6d, 0x37, 0xfc, 0xcc, 0x18, 0xfd, 0x2a, 0x34, 0x44, 0x7c, 0xe0, 0x07, 0x81, 0xe3, 0xb9, 0xde, - 0x31, 0x56, 0x9d, 0x5b, 0x53, 0x3c, 0x48, 0xf0, 0x83, 0x60, 0x83, 0xc3, 0xc4, 0x4e, 0xf7, 0x43, - 0xcf, 0x09, 0xa2, 0x23, 0xd5, 0xdf, 0x5a, 0xe6, 0xe3, 0xed, 0xe8, 0x08, 0xad, 0x80, 0x49, 0xb0, - 0x17, 0x91, 0x96, 0x68, 0x8e, 0x75, 0x28, 0x73, 0x99, 0x6a, 0x72, 0x6d, 0x48, 0xf8, 0x9e, 0xdf, - 0xc6, 0xbb, 0xcc, 0x65, 0x29, 0x4a, 0xea, 0xb9, 0xa1, 0xa4, 0xac, 0xa5, 0x29, 0xb9, 0x3f, 0x13, - 0x94, 0x37, 0xb9, 0xd6, 0x3b, 0x81, 0xef, 0xb9, 0x0e, 0x0f, 0x93, 0x45, 0xbb, 0x6b, 0x85, 0x2b, - 0x58, 0xc0, 0x78, 0x4c, 0x8e, 0x6e, 0x41, 0x43, 0xf6, 0x96, 0xe1, 0x96, 0x23, 0xf3, 0xb3, 0xfa, - 0x72, 0x7e, 0xa5, 0x60, 0xd7, 0x35, 0x54, 0x34, 0x2e, 0xa1, 0xdf, 0x84, 0x25, 0x9e, 0x39, 0xe2, - 0x1e, 0xf6, 0xba, 0x42, 0x49, 0xad, 0x2e, 0x91, 0xda, 0x6a, 0xeb, 0x5e, 0xee, 0x85, 0xb6, 0xdb, - 0xbb, 0xa7, 0xf1, 0x9b, 0x0a, 0xfd, 0x50, 0x34, 0x4c, 0xb9, 0x9d, 0x4e, 0xe0, 0x63, 0x1d, 0xb8, - 0x4f, 0x4b, 0x47, 0xac, 0x80, 0x32, 0x76, 0x5f, 0x84, 0x32, 0x73, 0xe9, 0x09, 0x37, 0x1d, 0x53, - 0xf6, 0xf0, 0xf1, 0xe1, 0x56, 0x4b, 0x64, 0x6a, 0xcc, 0x0d, 0xb0, 0x14, 0x60, 0x46, 0x08, 0x50, - 0x15, 0x10, 0xce, 0xfe, 0x7b, 0x85, 0x4a, 0xc1, 0x2c, 0x72, 0x89, 0xdc, 0x96, 0xf3, 0xa4, 0x1b, - 0x91, 0x6e, 0xdb, 0xfa, 0xef, 0x1c, 0x54, 0x74, 0xc0, 0x3f, 0xd4, 0x82, 0x69, 0x0c, 0xb7, 0x60, - 0xde, 0x84, 0x29, 0xd1, 0x5f, 0x96, 0x8d, 0xcb, 0x6b, 0x1c, 0xa6, 0xdf, 0xe3, 0x0e, 0x9f, 0x8f, - 0x74, 0xff, 0x5b, 0x21, 0xdb, 0xff, 0x96, 0xee, 0xdb, 0x2f, 0x66, 0xfb, 0xf6, 0x57, 0x54, 0x2b, - 0x1b, 0xeb, 0x77, 0xb0, 0x32, 0xcc, 0x5a, 0x6c, 0x60, 0x8f, 0x3b, 0xb2, 0x89, 0x6d, 0xaf, 0xdf, - 0xc1, 0xe8, 0x73, 0x80, 0x04, 0x65, 0xb6, 0x71, 0x56, 0x5e, 0x61, 0xd3, 0x1c, 0xf3, 0x6e, 0xaa, - 0x79, 0x76, 0x54, 0x1b, 0x7f, 0x65, 0x64, 0x1b, 0xff, 0x50, 0x87, 0x74, 0x75, 0xb8, 0x43, 0x7a, - 0xa0, 0xd5, 0x1f, 0x86, 0x5a, 0xfd, 0xad, 0x7f, 0xcf, 0x43, 0x45, 0xbf, 0x72, 0x4d, 0x65, 0x5d, - 0xc6, 0x0b, 0xb2, 0x2e, 0xf4, 0x0a, 0xf7, 0x10, 0x8c, 0xf4, 0xdd, 0x83, 0x00, 0x2b, 0x07, 0x94, - 0x00, 0xb8, 0x6b, 0x72, 0x0f, 0x22, 0xc2, 0x54, 0x11, 0x5f, 0x0e, 0xd0, 0x3a, 0x54, 0xbc, 0x28, - 0x3c, 0x0c, 0x7c, 0x8f, 0x0d, 0xb5, 0x9c, 0x7c, 0x48, 0x7c, 0x86, 0x37, 0x14, 0xd6, 0x8e, 0xe9, - 0xd0, 0x97, 0xa1, 0xee, 0x06, 0xdc, 0x24, 0xfa, 0xaa, 0x51, 0x53, 0x76, 0x9d, 0xcc, 0x27, 0x1d, - 0x86, 0x12, 0x2b, 0x7a, 0x35, 0xed, 0x29, 0x37, 0x35, 0x42, 0x6f, 0x40, 0x45, 0x7f, 0x96, 0x35, - 0xd4, 0x6c, 0xb8, 0xa9, 0x10, 0x76, 0x4c, 0x82, 0x36, 0x61, 0x26, 0x56, 0xa6, 0x83, 0x7b, 0x1d, - 0x9f, 0xe0, 0x96, 0xd8, 0xa6, 0xda, 0x7a, 0x33, 0xe3, 0x72, 0xb8, 0x6a, 0xef, 0x49, 0xbc, 0x3d, - 0xed, 0x65, 0x01, 0xe8, 0x37, 0xa0, 0xce, 0x4d, 0x26, 0x49, 0x30, 0x2a, 0x03, 0xf1, 0xf1, 0x5e, - 0x2f, 0x7c, 0xa4, 0x92, 0x0d, 0xbb, 0xc6, 0x92, 0x01, 0x7a, 0x00, 0xb3, 0xc9, 0xfa, 0x2c, 0x8a, - 0x9c, 0xc0, 0x25, 0x47, 0xb2, 0x77, 0xbe, 0xb6, 0xbe, 0x34, 0xc4, 0xc1, 0x5e, 0x14, 0x6d, 0x73, - 0x02, 0xdb, 0xf4, 0x06, 0x20, 0xd6, 0x8f, 0x0d, 0xa8, 0x67, 0x14, 0x9a, 0xb9, 0x96, 0x8c, 0x6c, - 0xf6, 0x7f, 0x03, 0x6a, 0x5a, 0xdb, 0xc9, 0xa5, 0x05, 0x1a, 0xb4, 0x47, 0x47, 0x9c, 0x98, 0x26, - 0x94, 0xd5, 0xa9, 0x53, 0x4d, 0xec, 0x7a, 0x88, 0x3e, 0x0f, 0x28, 0x9e, 0x2c, 0xb1, 0x4c, 0x79, - 0x74, 0x4c, 0x8d, 0x89, 0xbf, 0xb2, 0x58, 0x86, 0xa9, 0xf4, 0xf6, 0xe9, 0x95, 0x8c, 0x24, 0x3c, - 0xf8, 0x2b, 0x03, 0x2a, 0x7a, 0xab, 0xd2, 0xcd, 0xc1, 0x46, 0xa6, 0x39, 0x58, 0x9f, 0xe0, 0x24, - 0xb6, 0x10, 0x84, 0x3c, 0x86, 0x5a, 0x85, 0x19, 0xbd, 0xc1, 0x1c, 0xed, 0x1c, 0xbb, 0xf4, 0x58, - 0x45, 0xe4, 0xd3, 0x1a, 0xf1, 0x3e, 0xee, 0x3f, 0x70, 0xe9, 0x31, 0xfa, 0x12, 0x80, 0xf8, 0xa2, - 0xc1, 0x3b, 0x76, 0xfd, 0x50, 0x15, 0x64, 0x16, 0xd6, 0xe2, 0x2f, 0xfb, 0x3e, 0x74, 0x7d, 0xf6, - 0x6e, 0x44, 0xee, 0x85, 0x8c, 0xf4, 0xed, 0x2a, 0xa7, 0xdc, 0xe0, 0x84, 0xd6, 0x27, 0x06, 0x4c, - 0x0f, 0x98, 0xc5, 0x59, 0xfa, 0x5e, 0x83, 0x59, 0x97, 0x31, 0xdc, 0xee, 0x30, 0xdc, 0x4a, 0xe9, - 0x48, 0xea, 0x7d, 0x26, 0x46, 0xc5, 0x67, 0x78, 0x58, 0xfd, 0x43, 0x27, 0xbf, 0x30, 0x74, 0xf2, - 0xad, 0x2d, 0xa8, 0xa5, 0x0c, 0xed, 0x05, 0xfb, 0x7f, 0x66, 0x4f, 0xb6, 0x75, 0x07, 0xcc, 0x41, - 0x9b, 0xcb, 0xf6, 0x9b, 0x1a, 0x03, 0xfd, 0xa6, 0x3f, 0x32, 0x00, 0xf8, 0x0d, 0x27, 0x7b, 0xc6, - 0xd0, 0xeb, 0x30, 0x23, 0xd4, 0xfa, 0xd4, 0x0d, 0x02, 0x79, 0x21, 0xb6, 0xe5, 0x33, 0x79, 0xbb, - 0xc1, 0x11, 0x1f, 0xba, 0x41, 0xc0, 0xc9, 0x1f, 0x52, 0x74, 0x07, 0xe6, 0x3a, 0x24, 0xf2, 0x30, - 0xa5, 0x59, 0xea, 0x9c, 0xa0, 0x9e, 0x51, 0xb8, 0xd4, 0x03, 0x6b, 0x30, 0x77, 0x72, 0x2a, 0xee, - 0x93, 0xec, 0x03, 0x79, 0xf1, 0x80, 0x79, 0x72, 0xca, 0x6f, 0x96, 0x84, 0xde, 0xfa, 0x1a, 0x54, - 0xf8, 0x8d, 0x2a, 0xee, 0x93, 0x39, 0x28, 0xb2, 0x88, 0xb9, 0x81, 0xe2, 0x45, 0x0e, 0xb8, 0x63, - 0x53, 0xcb, 0xe0, 0x96, 0x5a, 0x37, 0x01, 0xc4, 0x65, 0xab, 0x83, 0x3e, 0xc3, 0x7a, 0x15, 0x51, - 0xb6, 0xba, 0xcb, 0x01, 0xd6, 0xef, 0x19, 0x00, 0x7c, 0x7e, 0x25, 0xf9, 0x6d, 0x28, 0x8a, 0x2f, - 0xa0, 0x86, 0xdc, 0xa9, 0xe6, 0xc1, 0x96, 0x78, 0x1e, 0xa2, 0xc5, 0x5f, 0x15, 0x8c, 0xa4, 0x13, - 0x68, 0x4e, 0xd6, 0x72, 0x99, 0x3b, 0x14, 0xca, 0x26, 0x64, 0x1c, 0x6d, 0x7d, 0x92, 0x97, 0x5f, - 0x0e, 0x4a, 0x2e, 0xf6, 0xd7, 0xd1, 0x1b, 0x80, 0x62, 0x11, 0xf4, 0xdd, 0xa8, 0xb7, 0x6d, 0x26, - 0xc6, 0xa8, 0x1b, 0x52, 0xf4, 0xaa, 0x0a, 0x5d, 0x24, 0xa4, 0xaa, 0x57, 0x55, 0x40, 0x63, 0xb2, - 0xaf, 0xc2, 0x2b, 0x84, 0x07, 0x14, 0xad, 0x03, 0xa7, 0x25, 0x52, 0x11, 0x87, 0x9e, 0xf8, 0x9d, - 0x8e, 0xb0, 0xea, 0x6e, 0xc8, 0xd4, 0x29, 0x5b, 0x52, 0x34, 0x32, 0x5b, 0xd9, 0x95, 0x14, 0x1b, - 0x9c, 0x80, 0x07, 0x22, 0x7a, 0x02, 0x7e, 0x34, 0xb3, 0x4f, 0x4b, 0x9b, 0x5e, 0x50, 0x04, 0xef, - 0xe3, 0x7e, 0xe6, 0xd1, 0xb7, 0xe1, 0x55, 0xfd, 0xe8, 0x81, 0x38, 0xdb, 0x22, 0x4e, 0x73, 0x8e, - 0xf9, 0xe9, 0x15, 0x8f, 0x17, 0x33, 0x8b, 0xdf, 0xe5, 0x34, 0x22, 0x6c, 0x7b, 0xe0, 0x33, 0x39, - 0xc3, 0xaf, 0x43, 0x33, 0x3b, 0x83, 0xd8, 0x57, 0xf9, 0xb0, 0xfc, 0x22, 0x6a, 0x3e, 0xfd, 0x30, - 0xb7, 0x23, 0xf9, 0xe0, 0x97, 0x60, 0x71, 0xc4, 0x83, 0xdc, 0x20, 0xd4, 0x9d, 0x3e, 0x37, 0xf8, - 0x1c, 0xb7, 0x0d, 0xeb, 0x0f, 0x0c, 0xa8, 0xa5, 0xfa, 0x2a, 0xd1, 0x5b, 0x50, 0x13, 0xc6, 0x2a, - 0xdb, 0x30, 0x95, 0x85, 0x24, 0xa1, 0x6d, 0x72, 0x7e, 0x6c, 0x60, 0xc9, 0x59, 0x7a, 0x0b, 0x6a, - 0x22, 0x50, 0x54, 0x4f, 0xe5, 0x06, 0x9e, 0x4a, 0x76, 0xdd, 0x06, 0x1a, 0xff, 0x96, 0x9d, 0x98, - 0x32, 0xbe, 0xb2, 0x7e, 0xd7, 0x80, 0x7a, 0xa6, 0xbf, 0x73, 0x4c, 0x4e, 0x7e, 0x0b, 0x1a, 0x29, - 0x4e, 0x9c, 0xd3, 0x75, 0xc5, 0xcc, 0xfc, 0x08, 0x66, 0xf6, 0xd7, 0xed, 0x29, 0x9a, 0x1a, 0x59, - 0x1f, 0x41, 0xe9, 0x45, 0xb5, 0xcf, 0xc1, 0xbe, 0xc1, 0xf3, 0xd6, 0x6d, 0xbf, 0x63, 0x40, 0x25, - 0x2e, 0x06, 0x5f, 0x4b, 0x15, 0x83, 0x33, 0xd1, 0xd9, 0x4b, 0x54, 0x82, 0xd1, 0x17, 0xa0, 0xea, - 0x52, 0x8a, 0x09, 0xd3, 0x2d, 0xec, 0x8d, 0x54, 0x59, 0xe0, 0x1d, 0x8d, 0xb1, 0x13, 0x22, 0xbe, - 0xd7, 0x55, 0x9e, 0x5d, 0x89, 0x3b, 0x18, 0xdd, 0x80, 0x82, 0x08, 0x12, 0x47, 0xb0, 0x21, 0x10, - 0x67, 0x95, 0xe6, 0xcf, 0xfc, 0x92, 0xec, 0x06, 0xd4, 0xe8, 0x71, 0x44, 0x98, 0x93, 0xfe, 0x9e, - 0x0c, 0x04, 0x48, 0xd4, 0x3b, 0xad, 0xaf, 0x48, 0x36, 0x64, 0x11, 0xfb, 0x8c, 0x2b, 0x20, 0x96, - 0x3b, 0x37, 0xa4, 0xc9, 0x53, 0x4f, 0x7e, 0xc1, 0xfa, 0x69, 0x84, 0x48, 0x85, 0x0b, 0xf9, 0x6c, - 0xb8, 0xf0, 0x42, 0x09, 0xbe, 0xab, 0x78, 0x10, 0x0e, 0x5b, 0x7b, 0x49, 0x63, 0x44, 0x22, 0x2b, - 0xde, 0x5a, 0x49, 0x2f, 0xb9, 0x0a, 0x25, 0xe1, 0x55, 0x87, 0x6b, 0x38, 0xf1, 0x9e, 0xd8, 0x8a, - 0x82, 0xd3, 0xaa, 0xcf, 0xee, 0xf2, 0x23, 0x68, 0x65, 0xd5, 0x58, 0x51, 0x58, 0x5f, 0x84, 0xb2, - 0xea, 0xf3, 0x14, 0xfd, 0x45, 0xbd, 0x50, 0xa9, 0x91, 0xff, 0x44, 0x0b, 0x50, 0xa2, 0xe2, 0x93, - 0x1d, 0x25, 0xbc, 0x1a, 0x59, 0x6f, 0x8b, 0xf0, 0x5a, 0x14, 0x69, 0xb2, 0xc5, 0x1e, 0xe3, 0xf9, - 0xc5, 0x9e, 0x5c, 0xa6, 0xd8, 0xf3, 0x13, 0x03, 0x60, 0x1b, 0xbb, 0x2d, 0x4c, 0xc4, 0xd2, 0x67, - 0xa6, 0xe6, 0x8b, 0x50, 0xe6, 0x89, 0x34, 0x47, 0x29, 0x36, 0xf8, 0x70, 0xab, 0x15, 0x67, 0xd6, - 0xf9, 0x54, 0x66, 0x3d, 0x98, 0xc7, 0x17, 0xce, 0x99, 0xc7, 0xbf, 0xa9, 0xee, 0x40, 0x2e, 0x21, - 0x56, 0xf1, 0x78, 0xa2, 0x37, 0xee, 0xf0, 0x78, 0xc2, 0x8a, 0xe5, 0xbd, 0x28, 0x7e, 0x5a, 0x5b, - 0x50, 0x8d, 0xe1, 0xc3, 0x49, 0xa4, 0x31, 0x3a, 0x89, 0x14, 0xfd, 0xa7, 0x2c, 0x51, 0xa8, 0x7b, - 0x88, 0xf7, 0xa8, 0xb5, 0x0b, 0x48, 0xbe, 0x4a, 0x16, 0x2a, 0xd1, 0x25, 0x9a, 0x37, 0x92, 0x17, - 0x69, 0xf2, 0x6b, 0x8c, 0xc4, 0x7f, 0x25, 0xba, 0x8b, 0xdf, 0xa6, 0xa1, 0x06, 0xe4, 0xe2, 0x89, - 0x73, 0x8c, 0x5a, 0x5f, 0x85, 0xd9, 0xcc, 0xa4, 0xaa, 0x28, 0xd3, 0xcc, 0xce, 0x5a, 0x78, 0xfe, - 0x04, 0x9b, 0x80, 0x76, 0x59, 0x44, 0xf0, 0x2e, 0x67, 0x72, 0x57, 0x73, 0xb5, 0x06, 0x55, 0x7e, - 0xb1, 0x89, 0x77, 0x67, 0xa3, 0x1c, 0x9c, 0xac, 0xdd, 0x55, 0x4e, 0xd4, 0x2f, 0x6b, 0x0d, 0x66, - 0x33, 0xb3, 0x28, 0x36, 0x52, 0xba, 0x30, 0x32, 0xba, 0xf0, 0x44, 0xcf, 0xc9, 0x7d, 0xcc, 0x0d, - 0x68, 0x6f, 0x6f, 0xfb, 0x62, 0xfa, 0x44, 0xff, 0xc4, 0x10, 0x7d, 0x20, 0xa9, 0x55, 0x2e, 0xa0, - 0x64, 0x95, 0x7c, 0x7b, 0x26, 0xba, 0xf5, 0xce, 0x7c, 0x43, 0xf3, 0x9f, 0xb2, 0xa5, 0x72, 0xe3, - 0x9d, 0xdd, 0x8b, 0x6c, 0xa9, 0xfc, 0x3c, 0x8f, 0x99, 0xf0, 0xa9, 0x1f, 0x75, 0x69, 0xea, 0x33, - 0x41, 0xc9, 0x8b, 0xa9, 0x31, 0xf1, 0x47, 0x82, 0xb7, 0xa0, 0x11, 0x53, 0xcb, 0xc9, 0x64, 0x9b, - 0x7d, 0x5d, 0x43, 0xf7, 0x53, 0x7d, 0x9a, 0xa5, 0xc1, 0x3e, 0xc5, 0x72, 0x2c, 0xb9, 0xf5, 0x53, - 0xd9, 0x6f, 0x26, 0x84, 0x9b, 0xb4, 0x9e, 0x9b, 0x50, 0xa6, 0x5d, 0xcf, 0xc3, 0xea, 0xad, 0x6a, - 0xc5, 0xd6, 0xc3, 0x0b, 0x11, 0xd6, 0xda, 0x84, 0x85, 0xfb, 0x58, 0x7c, 0x2b, 0xce, 0x33, 0x27, - 0x71, 0x00, 0x5f, 0x7e, 0xbf, 0xac, 0x1f, 0x18, 0xb0, 0x38, 0x34, 0xcd, 0xa4, 0x35, 0xf3, 0x05, - 0xee, 0x7c, 0x99, 0xa8, 0x91, 0xe4, 0xcf, 0x4c, 0xfb, 0x34, 0xd9, 0xea, 0x0d, 0x28, 0x8a, 0x77, - 0xca, 0x08, 0xa0, 0xb4, 0x8f, 0xc9, 0x4e, 0x97, 0x99, 0x57, 0xd4, 0xef, 0x4d, 0x1c, 0x98, 0xc6, - 0xea, 0xe7, 0x00, 0x92, 0xf2, 0x24, 0xc7, 0x3c, 0x8a, 0x48, 0xdb, 0x0d, 0xcc, 0x2b, 0xa8, 0x0c, - 0xf9, 0xed, 0xe8, 0xa9, 0x69, 0xa0, 0x0a, 0x14, 0x1e, 0xf8, 0x47, 0xc7, 0x66, 0x6e, 0x75, 0x19, - 0x1a, 0xd9, 0x9a, 0x24, 0x2a, 0x41, 0x6e, 0x77, 0xcb, 0xbc, 0xc2, 0xff, 0xda, 0x1b, 0xa6, 0xb1, - 0xea, 0x41, 0xee, 0x71, 0x87, 0x3f, 0x2a, 0x57, 0x2a, 0x43, 0x5e, 0x2c, 0xc3, 0xe7, 0xe0, 0xaa, - 0x31, 0x73, 0x68, 0x0a, 0x2a, 0xfa, 0x33, 0x17, 0x33, 0xcf, 0x17, 0xdc, 0x0a, 0x79, 0x3c, 0x62, - 0x16, 0xd0, 0x2c, 0x4c, 0x0f, 0x7c, 0x6a, 0x6a, 0x16, 0x11, 0x82, 0x86, 0x70, 0x79, 0x7a, 0x57, - 0xa9, 0x59, 0x5a, 0x5d, 0x83, 0x6a, 0x1c, 0xcf, 0xf0, 0x99, 0x1f, 0x45, 0x21, 0x36, 0xaf, 0xa0, - 0x2a, 0x14, 0x05, 0x89, 0x69, 0xf0, 0x45, 0xf4, 0x03, 0x66, 0x6e, 0xf5, 0xcf, 0x0d, 0x28, 0xc9, - 0x2f, 0x3c, 0x25, 0x42, 0xfe, 0x36, 0xaf, 0xa0, 0x79, 0x98, 0xd9, 0xdb, 0xdb, 0x96, 0xc9, 0x70, - 0xcc, 0x94, 0x81, 0x9a, 0x30, 0xc7, 0x57, 0xd7, 0x33, 0xc4, 0x98, 0x1c, 0x7f, 0xe0, 0x61, 0x9c, - 0xbd, 0xee, 0xee, 0x74, 0xe9, 0x31, 0x6e, 0x99, 0x79, 0xb4, 0x0c, 0xaf, 0xc4, 0xf3, 0x8c, 0xf8, - 0x7e, 0xdc, 0x2c, 0xa0, 0x25, 0x98, 0x4f, 0x4f, 0xb9, 0x19, 0x3d, 0x8a, 0xd8, 0xb1, 0x1f, 0x1e, - 0x99, 0xc5, 0xd5, 0x5b, 0x50, 0xbe, 0xd7, 0x63, 0xc4, 0x7d, 0xdc, 0x91, 0xb2, 0x44, 0x1d, 0xf3, - 0x0a, 0x32, 0x61, 0x8a, 0xdf, 0x44, 0x8f, 0x83, 0x96, 0x30, 0x52, 0xd3, 0xb8, 0xfb, 0xda, 0x7f, - 0xfc, 0x6d, 0xc5, 0xf8, 0xe9, 0xb3, 0xeb, 0xc6, 0xcf, 0x9e, 0x5d, 0x37, 0xfe, 0xe7, 0xd9, 0x75, - 0xe3, 0x47, 0xff, 0x7b, 0xfd, 0x0a, 0x98, 0x11, 0x39, 0x5a, 0x63, 0xfe, 0xc9, 0xe9, 0xda, 0xc9, - 0xa9, 0xf8, 0x97, 0x3e, 0x07, 0x25, 0xf1, 0xe7, 0x8b, 0xff, 0x1f, 0x00, 0x00, 0xff, 0xff, 0x9a, - 0x14, 0x27, 0x6c, 0x47, 0x48, 0x00, 0x00, + 0x71, 0x9a, 0xfd, 0xde, 0x5a, 0xee, 0x72, 0xd8, 0xfc, 0x5a, 0x4a, 0x3a, 0x89, 0x9a, 0x44, 0x27, + 0x1e, 0xed, 0xa3, 0x7c, 0xf4, 0x39, 0x1f, 0x8e, 0x11, 0xdf, 0x89, 0xd4, 0x49, 0xbc, 0xa3, 0x24, + 0x62, 0xb8, 0xc7, 0xc3, 0x01, 0xf1, 0x8d, 0x87, 0xb3, 0xcd, 0xe5, 0x80, 0xb3, 0x33, 0x73, 0x3d, + 0xbd, 0xd4, 0xae, 0x0d, 0x03, 0x76, 0xbe, 0x00, 0x03, 0x49, 0x9c, 0x5c, 0x0c, 0xd8, 0x40, 0x82, + 0x00, 0x31, 0xe0, 0x20, 0xc9, 0x5b, 0xf2, 0x1e, 0x18, 0x01, 0xf2, 0xe0, 0x97, 0x20, 0x46, 0x9e, + 0x82, 0xe4, 0x21, 0xb1, 0xf2, 0x1b, 0xf2, 0x1e, 0xf4, 0xd7, 0x7c, 0xec, 0xae, 0x28, 0x6a, 0x6f, + 0xc9, 0x33, 0xfc, 0xc4, 0xed, 0xaa, 0x9a, 0xee, 0xaa, 0xea, 0xea, 0xae, 0x8f, 0xa9, 0x21, 0xd4, + 0x4f, 0x4e, 0x49, 0xe8, 0x84, 0x87, 0x1b, 0x21, 0x09, 0x68, 0x80, 0xca, 0x72, 0x78, 0x75, 0xa6, + 0x8b, 0xa9, 0xad, 0xc0, 0x57, 0xeb, 0x98, 0x90, 0x80, 0xc4, 0xc3, 0x85, 0x4e, 0xd0, 0x09, 0xf8, + 0xcf, 0xbb, 0xec, 0x97, 0x84, 0xce, 0x92, 0x5e, 0x44, 0xf9, 0x4f, 0x09, 0x68, 0xb4, 0xb1, 0xdd, + 0xf6, 0x02, 0xe7, 0x44, 0x8c, 0x8d, 0x36, 0xc0, 0x03, 0x4c, 0x4d, 0xfc, 0x71, 0x0f, 0x47, 0x14, + 0xad, 0x43, 0xd9, 0x09, 0x7c, 0x8a, 0xfb, 0xb4, 0xa9, 0xad, 0x6a, 0x6b, 0xb5, 0x4d, 0x7d, 0x43, + 0xf1, 0xb2, 0x25, 0xe0, 0xa6, 0x22, 0x40, 0x3a, 0xe4, 0x4f, 0xf0, 0xa0, 0x99, 0x5b, 0xd5, 0xd6, + 0x66, 0x4c, 0xf6, 0x13, 0x35, 0xa1, 0x7c, 0x8a, 0x49, 0xe4, 0x06, 0x7e, 0x33, 0xbf, 0xaa, 0xad, + 0x15, 0x4c, 0x35, 0x34, 0x9e, 0x69, 0x50, 0xe3, 0xcb, 0x44, 0x61, 0xe0, 0x47, 0x18, 0xbd, 0x01, + 0x33, 0x04, 0x77, 0xdc, 0xc0, 0xb7, 0xb8, 0x10, 0x72, 0xb1, 0xc6, 0x86, 0x12, 0xe9, 0x3e, 0xfb, + 0x6b, 0xd6, 0x04, 0x0d, 0x1f, 0xa0, 0x3b, 0x50, 0x14, 0xb4, 0x39, 0x4e, 0x3b, 0x17, 0x33, 0xf6, + 0x1e, 0x1e, 0x08, 0x72, 0x81, 0x47, 0x0b, 0x50, 0x3c, 0xb5, 0xbd, 0x1e, 0xe6, 0x3c, 0xcc, 0x98, + 0x62, 0x80, 0xae, 0x41, 0xd5, 0x0f, 0xa8, 0x75, 0x14, 0xf4, 0xfc, 0x76, 0xb3, 0xb0, 0xaa, 0xad, + 0x55, 0xcc, 0x8a, 0x1f, 0xd0, 0x77, 0xd8, 0x18, 0xfd, 0x36, 0xcc, 0xe2, 0x3e, 0x76, 0xac, 0x36, + 0xa6, 0xb6, 0xeb, 0x45, 0xd6, 0xe9, 0x66, 0xb3, 0xc4, 0x57, 0x59, 0x8a, 0x57, 0xb9, 0xdf, 0xc7, + 0xce, 0xb6, 0x40, 0x1f, 0x6c, 0x9a, 0x75, 0x9c, 0x1e, 0xbe, 0x5b, 0xa8, 0x14, 0xf5, 0x92, 0xf1, + 0x7f, 0x1a, 0xd4, 0xf6, 0x1d, 0xdb, 0x9f, 0x44, 0x99, 0xd7, 0xa0, 0x1a, 0x51, 0x9b, 0x50, 0x2b, + 0x51, 0x69, 0x85, 0x03, 0xde, 0xc3, 0x03, 0x26, 0x91, 0xe7, 0x76, 0x5d, 0xca, 0x25, 0xaa, 0x9b, + 0x62, 0x90, 0xd6, 0x76, 0x21, 0xa3, 0x6d, 0xb4, 0x02, 0x95, 0x13, 0x3c, 0xb0, 0x02, 0xdf, 0x1b, + 0x34, 0x8b, 0x5c, 0xd4, 0xf2, 0x09, 0x1e, 0x3c, 0xf1, 0x3d, 0xbe, 0x45, 0x04, 0x33, 0x3a, 0xcc, + 0x25, 0xac, 0x98, 0x6a, 0x88, 0x96, 0xa1, 0x8c, 0xfd, 0x36, 0x5f, 0xbf, 0xcc, 0xd7, 0x2f, 0x61, + 0xbf, 0xcd, 0x56, 0xbf, 0x09, 0xb5, 0xc8, 0xee, 0x86, 0x1e, 0xb6, 0x22, 0x8a, 0xc3, 0x66, 0x85, + 0xf3, 0x00, 0x02, 0xb4, 0x4f, 0x71, 0x68, 0xfc, 0x99, 0x06, 0x33, 0x42, 0xee, 0xc9, 0x77, 0xf7, + 0x36, 0x14, 0x43, 0xdb, 0x25, 0x51, 0x33, 0xb7, 0x9a, 0x5f, 0xab, 0x6d, 0xce, 0x26, 0xbb, 0x7b, + 0xba, 0x67, 0xbb, 0xc4, 0x14, 0xd8, 0xc4, 0x08, 0xf2, 0x67, 0x1b, 0x81, 0xf1, 0x37, 0x05, 0x98, + 0xdd, 0x23, 0xf8, 0x29, 0x71, 0x29, 0x9e, 0x64, 0x3f, 0xee, 0x42, 0xb5, 0xdb, 0xa3, 0x36, 0x75, + 0x03, 0x5f, 0xf1, 0x94, 0x2c, 0xf6, 0x48, 0x62, 0xcc, 0x84, 0x06, 0xdd, 0x82, 0x99, 0x90, 0xb8, + 0x5d, 0x9b, 0x0c, 0x2c, 0x76, 0xba, 0xa4, 0xf1, 0xd5, 0x24, 0x6c, 0x37, 0x70, 0x4e, 0xd0, 0xaf, + 0x40, 0x5d, 0xec, 0x71, 0x76, 0xdb, 0x66, 0x38, 0xf0, 0x20, 0xd9, 0x3b, 0xf6, 0xbc, 0x45, 0xa9, + 0xc7, 0xf7, 0xae, 0x60, 0x96, 0xd9, 0xb8, 0x45, 0x3d, 0xb4, 0x09, 0x8b, 0xd1, 0x89, 0x1b, 0x5a, + 0x4e, 0xe0, 0x47, 0x94, 0xd8, 0xae, 0x4f, 0x2d, 0xe7, 0x18, 0x3b, 0x27, 0x72, 0x27, 0xe7, 0x19, + 0x72, 0x2b, 0xc6, 0x6d, 0x31, 0x14, 0xda, 0x80, 0x79, 0x37, 0xb2, 0x42, 0x1c, 0x45, 0x6e, 0xd7, + 0x8d, 0xa8, 0xeb, 0x08, 0xee, 0xca, 0xab, 0xf9, 0xb5, 0x8a, 0x39, 0xe7, 0x46, 0x7b, 0x09, 0x86, + 0xf3, 0xb8, 0x02, 0x15, 0xda, 0xf7, 0xad, 0xc8, 0xfd, 0x06, 0xe6, 0x3b, 0x5d, 0x30, 0xcb, 0xb4, + 0xef, 0xef, 0xbb, 0xdf, 0xc0, 0xc8, 0x80, 0xfa, 0x51, 0x40, 0xac, 0x5e, 0xd8, 0xb6, 0x29, 0xb6, + 0x68, 0xd4, 0xac, 0x72, 0x7c, 0xed, 0x28, 0x20, 0xef, 0x73, 0x58, 0x2b, 0x62, 0x34, 0x5d, 0xd7, + 0xb7, 0x9c, 0xa0, 0xdb, 0x75, 0x29, 0xa3, 0x01, 0x41, 0xd3, 0x75, 0xfd, 0x2d, 0x0e, 0x6b, 0x45, + 0x68, 0x0d, 0xf4, 0x5e, 0x84, 0x2d, 0x3b, 0x1a, 0xf8, 0x8e, 0xa4, 0x6c, 0xd6, 0xb8, 0x04, 0x8d, + 0x5e, 0x84, 0xdf, 0x66, 0x60, 0x41, 0x8b, 0x56, 0xa1, 0x16, 0x61, 0x27, 0xf0, 0xdb, 0x36, 0x71, + 0x71, 0xd4, 0x9c, 0x59, 0xcd, 0x33, 0x95, 0xa6, 0x40, 0xe8, 0x3a, 0x00, 0x25, 0xcc, 0xd2, 0xb1, + 0x15, 0x3a, 0xcd, 0xba, 0x38, 0xd6, 0x94, 0x0c, 0x9e, 0xf8, 0x78, 0xcf, 0xe1, 0xdc, 0xd8, 0xfd, + 0x14, 0x37, 0x0d, 0xc9, 0x8d, 0xdd, 0x57, 0xdc, 0x18, 0xff, 0xa4, 0x81, 0x9e, 0x18, 0xca, 0xe4, + 0x06, 0xfc, 0x1a, 0x94, 0x38, 0x76, 0xd4, 0x5a, 0x62, 0xd3, 0x94, 0x04, 0xa3, 0x4a, 0xca, 0x8f, + 0x2a, 0xe9, 0x0e, 0xe8, 0x42, 0xa8, 0x14, 0x99, 0x30, 0x97, 0x7a, 0xc0, 0x64, 0x8b, 0xf9, 0xff, + 0x51, 0x1e, 0x96, 0x86, 0x36, 0xf1, 0x97, 0xc5, 0xde, 0x47, 0x0c, 0xae, 0x34, 0xd6, 0xe0, 0xdc, + 0xc8, 0x3a, 0x72, 0x49, 0x44, 0x95, 0x65, 0x33, 0x1b, 0xa8, 0xb9, 0xd1, 0x3b, 0x0c, 0xc6, 0xf9, + 0xb8, 0x05, 0x33, 0x4f, 0x6d, 0xa6, 0x42, 0xb7, 0x8b, 0x83, 0x1e, 0xe5, 0x76, 0x9d, 0x37, 0x6b, + 0x0c, 0xd6, 0x12, 0x20, 0x76, 0xc3, 0x1e, 0x05, 0xc4, 0xc1, 0xdc, 0xa6, 0x2b, 0xa6, 0x18, 0x30, + 0x01, 0x08, 0xa6, 0x3d, 0xe2, 0x5b, 0xdc, 0x87, 0x08, 0x6b, 0xae, 0x98, 0x33, 0x02, 0x78, 0xc0, + 0x61, 0xa3, 0xbb, 0x59, 0x1b, 0xd9, 0x4d, 0xe3, 0xe7, 0x1a, 0x2c, 0x8f, 0x6c, 0xd2, 0xa5, 0xd8, + 0xda, 0x35, 0xa8, 0x0e, 0xdb, 0x59, 0xc5, 0x51, 0x46, 0x16, 0x7b, 0xca, 0x42, 0xda, 0x53, 0x2e, + 0x41, 0x49, 0x8a, 0x5b, 0xe4, 0x07, 0x4e, 0x8e, 0xd0, 0x2b, 0x00, 0xb1, 0x07, 0x65, 0x7b, 0xc1, + 0x6e, 0x90, 0xaa, 0x72, 0xa1, 0x91, 0xf1, 0x63, 0x0d, 0xae, 0xa6, 0x64, 0x34, 0x03, 0xcf, 0x3b, + 0xb4, 0x27, 0x33, 0xc6, 0x11, 0xc3, 0xc9, 0x8d, 0x31, 0x9c, 0x11, 0xeb, 0xc8, 0x8f, 0x5a, 0x07, + 0x82, 0xc2, 0x09, 0x1e, 0xb0, 0x93, 0xc3, 0x04, 0xe1, 0xbf, 0x8d, 0x6f, 0xc2, 0xb5, 0xb1, 0x6c, + 0x5e, 0xc6, 0x76, 0x18, 0xff, 0xa0, 0xc1, 0x7c, 0xab, 0xef, 0x3f, 0xc4, 0x36, 0xa1, 0xf7, 0xb0, + 0x3d, 0x51, 0xdc, 0x35, 0x7c, 0xf2, 0x72, 0xe7, 0x38, 0x79, 0xf9, 0x31, 0x0a, 0x7c, 0x15, 0x66, + 0xed, 0xf6, 0xa9, 0x1b, 0x61, 0x2b, 0x3e, 0x80, 0xf2, 0x86, 0x11, 0xe0, 0x5d, 0x71, 0x0c, 0x8d, + 0x3f, 0xd6, 0x60, 0x21, 0xcb, 0xf3, 0x25, 0x04, 0x71, 0xe9, 0x6b, 0x21, 0x9f, 0xb9, 0x16, 0x8c, + 0x9f, 0xe7, 0x60, 0x91, 0x3b, 0xb7, 0x56, 0xdf, 0xdf, 0xa7, 0x36, 0xed, 0x45, 0x93, 0x68, 0xf1, + 0x26, 0x28, 0x8d, 0xa5, 0x42, 0x2e, 0x90, 0x20, 0x16, 0xf6, 0x2c, 0x43, 0x59, 0x70, 0xa0, 0x2c, + 0xab, 0xc4, 0x19, 0x88, 0x98, 0xde, 0x1c, 0xdb, 0xf3, 0x30, 0xb1, 0x84, 0x8e, 0x93, 0x9b, 0x59, + 0x80, 0xf7, 0x19, 0xb4, 0xc5, 0xcf, 0x8b, 0xd3, 0x23, 0x04, 0xfb, 0x9c, 0x44, 0xdc, 0x6d, 0x55, + 0x09, 0x69, 0x45, 0xe8, 0x0d, 0x58, 0x24, 0xd2, 0xf8, 0x2c, 0xf7, 0xc8, 0x62, 0x47, 0x0b, 0xf7, + 0xdd, 0x88, 0x4a, 0x6f, 0x8e, 0x14, 0x72, 0xe7, 0xe8, 0x71, 0x40, 0xef, 0x33, 0x0c, 0x5a, 0x87, + 0x39, 0x7e, 0x31, 0x59, 0x69, 0xd7, 0x29, 0x2e, 0xbc, 0x59, 0x8e, 0xd8, 0x4f, 0x7c, 0xe7, 0x57, + 0xe0, 0x2a, 0xc1, 0x51, 0xe0, 0x9d, 0xba, 0x7e, 0x67, 0xd4, 0xff, 0x57, 0xf8, 0x43, 0xcd, 0x98, + 0x62, 0xe8, 0x72, 0x32, 0xbe, 0x97, 0x83, 0xa5, 0x61, 0x1d, 0x7f, 0xa6, 0xbb, 0x8e, 0x6e, 0x43, + 0x43, 0x5e, 0x64, 0x59, 0x6f, 0x52, 0x17, 0x50, 0x65, 0xd4, 0x77, 0xa0, 0x64, 0x3b, 0xcc, 0x43, + 0x71, 0x85, 0x37, 0x52, 0x81, 0xe4, 0xdb, 0x1c, 0x6c, 0x4a, 0x34, 0xda, 0x80, 0x2a, 0x5f, 0xca, + 0xf5, 0x8f, 0x02, 0x19, 0xec, 0x27, 0x7c, 0x31, 0x1d, 0xec, 0xf8, 0x47, 0x81, 0xc9, 0xd9, 0x61, + 0xbf, 0x8c, 0xef, 0x68, 0x70, 0x95, 0x6b, 0x64, 0x5f, 0x86, 0x1f, 0xfc, 0xa4, 0x4d, 0x64, 0x7a, + 0xea, 0x56, 0xca, 0x25, 0xb7, 0xd2, 0xb9, 0x4e, 0xac, 0xf1, 0x13, 0x0d, 0xae, 0x8d, 0xe5, 0xe1, + 0x12, 0xb6, 0xe6, 0x0e, 0x14, 0x99, 0x2e, 0xd8, 0x61, 0xc8, 0x8f, 0xd7, 0x95, 0xc0, 0x67, 0x3d, + 0x4e, 0x21, 0xeb, 0x71, 0x8c, 0xbf, 0xd3, 0xa0, 0x2e, 0x0c, 0xf4, 0xc2, 0xfc, 0x82, 0xd2, 0x6e, + 0x3e, 0xa5, 0xdd, 0xf3, 0x19, 0x8f, 0x48, 0xe3, 0xcc, 0xd2, 0xa1, 0xeb, 0x7b, 0x41, 0xc7, 0xf8, + 0x73, 0x0d, 0x1a, 0x8a, 0xd7, 0x4b, 0x50, 0xf0, 0x28, 0x8f, 0xf9, 0x31, 0x3c, 0x1a, 0x1d, 0xa8, + 0xef, 0x74, 0xc3, 0x80, 0xc4, 0x0a, 0xcc, 0x44, 0x6e, 0xda, 0x39, 0x22, 0xb7, 0xd1, 0x85, 0x72, + 0xe3, 0x16, 0xfa, 0x10, 0x1a, 0x6a, 0xa1, 0xc9, 0xa5, 0x5f, 0x48, 0x4b, 0x5f, 0x55, 0xc9, 0xd9, + 0x27, 0x4c, 0xb3, 0x1e, 0xb6, 0xfd, 0x5e, 0x38, 0x9d, 0xc2, 0xc3, 0xb9, 0xfc, 0x5d, 0xf6, 0x3e, + 0x2e, 0x0c, 0xdd, 0xc7, 0xc6, 0xf7, 0x35, 0x98, 0x8d, 0x99, 0xfa, 0xc5, 0xd9, 0xef, 0x13, 0x98, + 0xbd, 0x67, 0x53, 0xe7, 0x78, 0xc2, 0x22, 0xcd, 0xb8, 0xbb, 0xe6, 0xf9, 0x65, 0x9a, 0xff, 0xd2, + 0x40, 0x4f, 0x56, 0xbb, 0xf0, 0x6c, 0x7e, 0x4c, 0xd9, 0xa5, 0xf0, 0x12, 0x65, 0x97, 0x44, 0xd7, + 0xc5, 0xb3, 0x75, 0xfd, 0x6e, 0xa1, 0x92, 0xd7, 0x0b, 0xc6, 0x37, 0x61, 0x81, 0x0b, 0x77, 0xe1, + 0xa1, 0xe9, 0x98, 0x2b, 0xc8, 0x88, 0x60, 0x71, 0x68, 0xf1, 0x8b, 0xb7, 0x31, 0xe3, 0xef, 0x35, + 0x98, 0xdd, 0x77, 0x6c, 0x7f, 0xd2, 0xac, 0xf0, 0x26, 0xb0, 0x5c, 0x79, 0x48, 0x56, 0xe8, 0xda, + 0x7d, 0x25, 0x69, 0xa6, 0x6c, 0x95, 0x7f, 0x5e, 0xd9, 0xaa, 0x90, 0x2e, 0x5b, 0xa5, 0xea, 0x4c, + 0xc5, 0x74, 0x9d, 0xc9, 0xf8, 0x81, 0x06, 0x7a, 0xc2, 0xec, 0x2f, 0x90, 0x4b, 0x33, 0xfe, 0x4d, + 0x03, 0x64, 0xf2, 0x50, 0x09, 0x4f, 0xaa, 0xc9, 0x73, 0xd9, 0xcd, 0xf9, 0xae, 0x04, 0xf4, 0x3a, + 0x54, 0x69, 0xdf, 0xe7, 0x91, 0x8b, 0x48, 0x6d, 0xd2, 0x2b, 0xb7, 0xfa, 0xbe, 0x88, 0x5c, 0xa8, + 0xf8, 0x91, 0x24, 0x41, 0xc5, 0x94, 0x35, 0x7e, 0x0c, 0xf3, 0x19, 0x81, 0x2e, 0xc1, 0x16, 0x0f, + 0xa0, 0xfa, 0x60, 0x6b, 0x12, 0xd5, 0xbd, 0x02, 0x10, 0xd9, 0x47, 0xd8, 0x0a, 0x03, 0xd7, 0xa7, + 0x52, 0x6f, 0x55, 0x06, 0xd9, 0x63, 0x00, 0xe3, 0x18, 0x80, 0xcd, 0x7b, 0x09, 0x12, 0xfc, 0x40, + 0x03, 0xb4, 0x8d, 0x3d, 0x4c, 0xb1, 0x69, 0xfb, 0x1d, 0x3c, 0xf5, 0x32, 0x6f, 0xea, 0x64, 0xe4, + 0x87, 0x2b, 0xb0, 0x7e, 0x40, 0xdd, 0x23, 0x59, 0xd2, 0x15, 0xd5, 0x6b, 0x10, 0xa0, 0x27, 0xbe, + 0x37, 0x30, 0x3e, 0x82, 0xf9, 0x0c, 0x63, 0xd3, 0x76, 0xd8, 0x5f, 0x83, 0xba, 0x69, 0x3f, 0x9d, + 0xda, 0x7b, 0x82, 0x06, 0xe4, 0x9c, 0x23, 0x2e, 0x63, 0xd5, 0xcc, 0x39, 0x47, 0xc6, 0x1f, 0x69, + 0xd0, 0x50, 0xf3, 0x4f, 0x99, 0xf5, 0x09, 0xde, 0x06, 0x18, 0x6d, 0x40, 0xa6, 0xfd, 0x74, 0xda, + 0x5e, 0x77, 0x58, 0xe8, 0x00, 0xe6, 0x33, 0xab, 0x5c, 0xb4, 0xb7, 0x35, 0xfe, 0x4a, 0xe3, 0xbb, + 0xb8, 0xd7, 0x9b, 0xd2, 0x2e, 0x8e, 0xd7, 0xac, 0x10, 0xb3, 0xa0, 0xc4, 0x64, 0xcf, 0x25, 0xa5, + 0x3d, 0xf6, 0x93, 0x99, 0xf9, 0x51, 0x40, 0x2c, 0xc7, 0x8e, 0x64, 0xaa, 0x5b, 0x3a, 0x0a, 0xc8, + 0x96, 0x1d, 0xb1, 0x88, 0x53, 0xf1, 0x37, 0x6d, 0x03, 0xfe, 0x91, 0x96, 0xec, 0xe9, 0x84, 0x0a, + 0x38, 0x67, 0x4c, 0x33, 0xb4, 0xcd, 0x4a, 0xfe, 0xc2, 0x58, 0xf9, 0x8b, 0x19, 0xf9, 0x3f, 0x4a, + 0x2c, 0xe2, 0x42, 0x94, 0x30, 0x00, 0xdd, 0xb4, 0x9f, 0xca, 0x8b, 0xe2, 0x22, 0x0e, 0x72, 0x5a, + 0xb4, 0x42, 0x46, 0xb4, 0xdf, 0x81, 0xb9, 0xd4, 0xd2, 0xd3, 0x16, 0xec, 0xdb, 0x1a, 0x2c, 0x2a, + 0xcd, 0x4d, 0x2e, 0xde, 0x39, 0x0e, 0xed, 0xf3, 0x05, 0xb4, 0x61, 0x69, 0x98, 0x83, 0x69, 0x4b, + 0xf9, 0xaf, 0xe2, 0x96, 0xbc, 0xc4, 0x37, 0x8c, 0xe9, 0xf7, 0x88, 0x85, 0xec, 0x7b, 0x44, 0xa1, + 0x98, 0x62, 0xac, 0x98, 0x97, 0x7f, 0xaf, 0x68, 0x74, 0x60, 0x36, 0x16, 0x67, 0x72, 0x5d, 0xdd, + 0x82, 0xfc, 0xc9, 0xe9, 0x73, 0x0f, 0x25, 0xc3, 0x19, 0xdf, 0x15, 0xe6, 0xf1, 0x99, 0xb8, 0xee, + 0xa1, 0xeb, 0x50, 0xda, 0xc9, 0x85, 0x3a, 0xeb, 0x9f, 0x69, 0xc9, 0x3d, 0x32, 0xa9, 0xb1, 0xbc, + 0x06, 0x25, 0xc2, 0xb8, 0x1b, 0x5b, 0xd2, 0x16, 0x7c, 0x4b, 0x02, 0x16, 0x9e, 0x61, 0xdb, 0x39, + 0xb6, 0xd2, 0xf6, 0x53, 0x65, 0x90, 0xdd, 0xa9, 0xd9, 0x90, 0xe1, 0xc1, 0x42, 0x56, 0xa2, 0x0b, + 0xb5, 0x97, 0x6f, 0xc1, 0xca, 0xfb, 0x3e, 0x0b, 0x30, 0xb7, 0x71, 0x44, 0x49, 0x30, 0xb8, 0x5c, + 0x93, 0x31, 0x30, 0x5c, 0x1d, 0xb7, 0xfc, 0xb4, 0xcd, 0xe4, 0xeb, 0x70, 0xcd, 0xc4, 0x1d, 0x37, + 0xa2, 0x98, 0xb0, 0x1c, 0xe0, 0xc9, 0x61, 0x84, 0xc9, 0x29, 0x26, 0x93, 0xc8, 0xb9, 0x08, 0x25, + 0x96, 0x26, 0xd2, 0x48, 0x46, 0xe7, 0xc5, 0xae, 0xdd, 0x6f, 0x45, 0xc6, 0x9b, 0x70, 0x7d, 0xfc, + 0x0a, 0x52, 0x94, 0x98, 0x2f, 0x2d, 0x1b, 0x6b, 0x36, 0x79, 0x8d, 0xf3, 0x82, 0x98, 0xea, 0xc1, + 0xca, 0x98, 0xe9, 0xcf, 0xe2, 0x88, 0x99, 0xb0, 0x1b, 0x59, 0x8e, 0x87, 0x6d, 0x91, 0xb6, 0x55, + 0xcc, 0xb2, 0x1b, 0xf1, 0x52, 0xd1, 0xf9, 0x53, 0xc8, 0x8f, 0x60, 0xc5, 0xc4, 0xdd, 0x40, 0xe4, + 0x5b, 0x17, 0x20, 0xd6, 0x26, 0x5c, 0x1d, 0x37, 0xff, 0x99, 0x9a, 0xfe, 0x9e, 0x06, 0xcb, 0x7b, + 0xc7, 0x83, 0xc8, 0x75, 0x6c, 0xef, 0xd3, 0x54, 0x09, 0xc6, 0xb3, 0x34, 0x41, 0x6d, 0xc0, 0xf8, + 0x10, 0x9a, 0xa3, 0x0c, 0x9d, 0xb9, 0x37, 0xf1, 0x06, 0xe4, 0x5e, 0xb0, 0x01, 0xdf, 0xd6, 0x00, + 0xed, 0x87, 0x9e, 0x4b, 0x4d, 0x7e, 0x32, 0x26, 0xab, 0x86, 0x54, 0x23, 0x36, 0x43, 0x72, 0x9c, + 0xef, 0xe5, 0x9a, 0x9a, 0x59, 0xe1, 0x40, 0x26, 0x14, 0xcb, 0x54, 0x15, 0x81, 0xaa, 0xfe, 0x54, + 0x15, 0x36, 0x32, 0xfe, 0x45, 0x83, 0xf9, 0x0c, 0x0b, 0x93, 0x1f, 0xe9, 0x57, 0xa1, 0xe0, 0xe1, + 0x23, 0x2a, 0x53, 0xd6, 0xc6, 0x86, 0x6c, 0x0c, 0x13, 0x13, 0x73, 0xae, 0x38, 0x1e, 0xad, 0x41, + 0x91, 0xb8, 0x9d, 0x63, 0x2a, 0xfb, 0x65, 0xc6, 0x11, 0x0a, 0x02, 0xb4, 0xc6, 0x2e, 0xdf, 0x0e, + 0x2f, 0x22, 0x8b, 0x92, 0xc2, 0x10, 0xad, 0xa9, 0xd0, 0xc6, 0xef, 0x6b, 0xa0, 0x9b, 0xd8, 0x6e, + 0xef, 0xf8, 0x6d, 0xdc, 0x9f, 0x44, 0x8f, 0x2b, 0x50, 0x89, 0xdf, 0x9c, 0x09, 0x8b, 0x29, 0x47, + 0xf2, 0x9d, 0x59, 0xe2, 0x77, 0xf2, 0x2f, 0xf0, 0x3b, 0xc6, 0x9f, 0x6a, 0x30, 0x97, 0x62, 0x63, + 0x72, 0x5d, 0xbe, 0x02, 0x40, 0xb0, 0xdd, 0xb6, 0x5c, 0x36, 0x91, 0xaa, 0x2f, 0x10, 0x35, 0x33, + 0x63, 0x89, 0x59, 0x10, 0x6e, 0x8f, 0xf4, 0x1c, 0xc5, 0x26, 0x26, 0x09, 0x8c, 0xf7, 0xa1, 0x76, + 0x80, 0x89, 0xaa, 0xb9, 0xa3, 0x1b, 0x90, 0x0b, 0x42, 0xce, 0x41, 0x63, 0xb3, 0x11, 0x3f, 0x75, + 0x80, 0xc9, 0x93, 0xd0, 0xcc, 0x05, 0xe1, 0x79, 0x53, 0x2a, 0xe3, 0xcb, 0x50, 0x39, 0xc0, 0x84, + 0xb7, 0x1b, 0x24, 0x14, 0x5a, 0x3a, 0xe9, 0x4a, 0x55, 0x74, 0x73, 0xd9, 0x8a, 0xee, 0x2a, 0x7f, + 0x76, 0xc8, 0x0f, 0x64, 0x6e, 0x81, 0x00, 0xaa, 0x07, 0x98, 0x08, 0xff, 0x97, 0xd4, 0x42, 0xb4, + 0x21, 0x59, 0xd5, 0x24, 0xea, 0xdc, 0x8d, 0xf2, 0x7e, 0x27, 0xcd, 0xfb, 0xd0, 0xa3, 0x9c, 0x77, + 0x25, 0x0e, 0x81, 0xfa, 0x01, 0x26, 0x53, 0x2b, 0x26, 0x9c, 0xeb, 0xcd, 0xd9, 0x3f, 0x6a, 0xd0, + 0x50, 0x8b, 0x5e, 0x40, 0xa5, 0x68, 0x58, 0x3b, 0xe7, 0xd5, 0xc5, 0xd9, 0x75, 0x88, 0xa7, 0x80, + 0x0e, 0x30, 0xf9, 0x34, 0x75, 0x88, 0x58, 0x5b, 0xf9, 0x97, 0xd2, 0x16, 0x81, 0xf9, 0xcc, 0xc2, + 0x93, 0x6b, 0x6c, 0x2d, 0x9b, 0x34, 0xa3, 0xb4, 0x22, 0xb2, 0xd5, 0x89, 0x6f, 0x71, 0xab, 0x78, + 0x34, 0x59, 0x6e, 0xfe, 0x2a, 0xe4, 0xbb, 0x3d, 0x75, 0x1b, 0x2e, 0xa4, 0x17, 0x89, 0x5f, 0x80, + 0x31, 0x82, 0x33, 0xde, 0x7c, 0x78, 0xdc, 0x3e, 0x1e, 0xf5, 0x2e, 0xc5, 0x3e, 0xd8, 0x15, 0x1a, + 0x6f, 0xed, 0x84, 0x22, 0xaf, 0x41, 0xa1, 0xdb, 0xa3, 0x4a, 0xb1, 0xe3, 0x65, 0xe6, 0x14, 0x67, + 0x08, 0xfd, 0x71, 0xb2, 0xcf, 0x97, 0x25, 0xf9, 0x33, 0x71, 0x10, 0x2f, 0x24, 0x89, 0x7d, 0x6e, + 0x12, 0x36, 0xfe, 0x45, 0xc4, 0x44, 0x5d, 0xb2, 0x23, 0xe7, 0xa7, 0x3c, 0xe6, 0xfc, 0xf8, 0x30, + 0x1b, 0xcb, 0x78, 0x19, 0x67, 0x67, 0x00, 0x8b, 0x07, 0x98, 0x7c, 0x16, 0xf9, 0xad, 0x41, 0x61, + 0x69, 0x78, 0xe9, 0x4b, 0xb0, 0xa2, 0x7d, 0x98, 0x7f, 0x74, 0xea, 0x38, 0x0f, 0x30, 0xbd, 0x37, + 0x60, 0x81, 0xc1, 0x34, 0x1c, 0x89, 0xf1, 0x87, 0x1a, 0x2c, 0x64, 0x67, 0x9d, 0x76, 0x2d, 0xfa, + 0x36, 0x14, 0x78, 0xbb, 0xc9, 0xb0, 0x57, 0x60, 0xab, 0xf2, 0x40, 0x82, 0xa3, 0x8d, 0xaf, 0xc3, + 0x72, 0xcc, 0x87, 0x6c, 0x26, 0x9a, 0x6e, 0x98, 0x65, 0xfc, 0xa5, 0x06, 0xcd, 0xd1, 0x25, 0xa6, + 0x2d, 0xae, 0x54, 0x71, 0x3e, 0xf1, 0xd5, 0x4a, 0x01, 0x85, 0xb3, 0x15, 0xf0, 0x93, 0x22, 0x94, + 0xb7, 0x12, 0xb3, 0x94, 0xdc, 0xb8, 0x6d, 0xce, 0x4a, 0xc1, 0xac, 0x08, 0xc0, 0x4e, 0x1b, 0xfd, + 0x5a, 0xc2, 0x6a, 0x18, 0x38, 0xc7, 0xd2, 0x6e, 0xe6, 0xb3, 0x91, 0xeb, 0x7d, 0x86, 0x8a, 0xf9, + 0x65, 0x03, 0xb4, 0x0a, 0x85, 0x10, 0x63, 0xd5, 0x45, 0x3e, 0xa3, 0xe8, 0xf7, 0x30, 0x26, 0x26, + 0xc7, 0x20, 0x04, 0x05, 0x8a, 0x49, 0x57, 0xd6, 0xad, 0xf9, 0x6f, 0x74, 0x17, 0x2a, 0x21, 0x71, + 0x03, 0xe2, 0xd2, 0x01, 0xbf, 0x16, 0x1a, 0x9b, 0xf3, 0x29, 0xed, 0x77, 0xbb, 0xb6, 0xdf, 0xde, + 0x23, 0xae, 0x19, 0x13, 0xa1, 0xb7, 0x60, 0xd6, 0x8d, 0x02, 0x8f, 0x5f, 0xc6, 0x96, 0x87, 0x4f, + 0xb1, 0xc7, 0xaf, 0x8b, 0xc6, 0xe6, 0x72, 0xfc, 0xdc, 0x8e, 0xc2, 0xef, 0x32, 0xb4, 0xd9, 0x70, + 0x33, 0x63, 0xf4, 0xab, 0xd0, 0xe0, 0xf1, 0x81, 0xeb, 0x79, 0x96, 0x63, 0x3b, 0xc7, 0x58, 0x76, + 0x6e, 0xcd, 0xb0, 0x20, 0xc1, 0xf5, 0xbc, 0x2d, 0x06, 0xe3, 0x3b, 0x3d, 0xf0, 0x1d, 0xcb, 0x0b, + 0x3a, 0xb2, 0x81, 0xb5, 0xcc, 0xc6, 0xbb, 0x41, 0x07, 0xad, 0x81, 0x4e, 0xb0, 0x13, 0x90, 0x36, + 0xef, 0x7e, 0xb5, 0x22, 0x6a, 0x53, 0xd9, 0xc5, 0xda, 0x10, 0xf0, 0x96, 0xdb, 0xc5, 0xfb, 0xd4, + 0xa6, 0x29, 0xca, 0xc8, 0xb1, 0x7d, 0x41, 0x59, 0x4b, 0x53, 0xb2, 0xfb, 0x8c, 0x53, 0xde, 0x62, + 0x5a, 0x0f, 0x3d, 0xd7, 0xb1, 0x2d, 0x16, 0x26, 0x37, 0x67, 0x44, 0xcb, 0xad, 0x84, 0xb1, 0x98, + 0x1c, 0xdd, 0x86, 0x86, 0xe8, 0x2d, 0xc3, 0x6d, 0x4b, 0xe4, 0x67, 0xf5, 0xd5, 0xfc, 0x5a, 0xc1, + 0xac, 0x2b, 0x28, 0x6f, 0x5c, 0x42, 0xbf, 0x09, 0x2b, 0x2c, 0x73, 0xc4, 0x7d, 0xec, 0xf4, 0xb8, + 0x92, 0xda, 0x3d, 0x22, 0xb4, 0xd5, 0x55, 0xcd, 0xda, 0x4b, 0x5d, 0xbb, 0x7f, 0x5f, 0xe1, 0xb7, + 0x25, 0xfa, 0x11, 0x6f, 0x98, 0xb2, 0xc3, 0xd0, 0x73, 0xb1, 0x0a, 0xdc, 0x67, 0xc5, 0x45, 0x2c, + 0x81, 0x22, 0x76, 0x5f, 0x86, 0x32, 0xb5, 0xa3, 0x13, 0x66, 0x3a, 0xba, 0xe8, 0xe1, 0x63, 0xc3, + 0x9d, 0x36, 0xcf, 0xd4, 0xa8, 0xed, 0x61, 0x21, 0xc0, 0x1c, 0x17, 0xa0, 0xca, 0x21, 0x9c, 0xfd, + 0xcf, 0x03, 0x62, 0x8c, 0xf6, 0x88, 0x83, 0xad, 0x0e, 0x09, 0x7a, 0xa1, 0x45, 0xed, 0x4e, 0x13, + 0x71, 0x43, 0xd6, 0x15, 0xe6, 0x01, 0x43, 0xb4, 0xec, 0xce, 0xbb, 0x85, 0x4a, 0x41, 0x2f, 0x32, + 0xf9, 0xed, 0xb6, 0xf5, 0x71, 0x2f, 0x20, 0xbd, 0xae, 0xf1, 0xdf, 0x39, 0xa8, 0xa8, 0xf4, 0x60, + 0xa4, 0x61, 0x53, 0x1b, 0x6d, 0xd8, 0xbc, 0x05, 0x33, 0xbc, 0x1b, 0x2d, 0x1b, 0xc5, 0xd7, 0x18, + 0x4c, 0xbd, 0xf5, 0x1d, 0x3d, 0x4d, 0xe9, 0x6e, 0xb9, 0x42, 0xb6, 0x5b, 0x2e, 0xdd, 0xc6, 0x5f, + 0xcc, 0xb6, 0xf1, 0xaf, 0xc9, 0xc6, 0x37, 0x3a, 0x08, 0xb1, 0x34, 0xe3, 0x5a, 0x6c, 0x8e, 0x4f, + 0x42, 0xd1, 0xf2, 0xd6, 0x1a, 0x84, 0x18, 0x7d, 0x0e, 0x10, 0xa7, 0xcc, 0xb6, 0xd9, 0x0a, 0x87, + 0x37, 0xcb, 0x30, 0xef, 0xa4, 0x5a, 0x6d, 0xc7, 0x75, 0xf5, 0x57, 0xc6, 0x76, 0xf5, 0x8f, 0x34, + 0x4c, 0x57, 0x47, 0xdb, 0xdf, 0x87, 0x3a, 0xff, 0x61, 0xa4, 0xf3, 0xdf, 0xf8, 0xf7, 0x3c, 0x54, + 0xd4, 0x0b, 0xda, 0x54, 0x8e, 0xa6, 0xbd, 0x20, 0x47, 0x43, 0xd7, 0xd9, 0x7d, 0x42, 0xc9, 0xc0, + 0x3e, 0xf4, 0xb0, 0xbc, 0xae, 0x12, 0x00, 0xbb, 0xc8, 0xec, 0xc3, 0x80, 0x50, 0x59, 0xf2, 0x17, + 0x03, 0xb4, 0x09, 0x15, 0x27, 0xf0, 0x8f, 0x3c, 0xd7, 0xa1, 0x23, 0x0d, 0x2a, 0x1f, 0x10, 0x97, + 0xe2, 0x2d, 0x89, 0x35, 0x63, 0x3a, 0xf4, 0x65, 0xa8, 0xdb, 0x1e, 0x33, 0x89, 0x81, 0x6c, 0xeb, + 0x14, 0x3d, 0x2a, 0x8b, 0x49, 0x3f, 0xa2, 0xc0, 0xf2, 0xce, 0x4e, 0x73, 0xc6, 0x4e, 0x8d, 0xd0, + 0xeb, 0x50, 0x51, 0x5f, 0x69, 0x8d, 0xb4, 0x26, 0x6e, 0x4b, 0x84, 0x19, 0x93, 0xa0, 0x6d, 0x98, + 0x8b, 0x95, 0x69, 0xe1, 0x7e, 0xe8, 0x12, 0xdc, 0xe6, 0xdb, 0x54, 0xdb, 0x6c, 0x66, 0x2e, 0x28, + 0xa6, 0xda, 0xfb, 0x02, 0x6f, 0xce, 0x3a, 0x59, 0x00, 0xfa, 0x0d, 0xa8, 0x33, 0x93, 0x49, 0xd2, + 0x91, 0xca, 0x50, 0x34, 0xdd, 0xea, 0xfb, 0x8f, 0x65, 0x6a, 0x62, 0xd6, 0x68, 0x32, 0x40, 0x0f, + 0x61, 0x3e, 0x59, 0x9f, 0x06, 0x81, 0xe5, 0xd9, 0xa4, 0x23, 0x5a, 0xe9, 0x6b, 0x9b, 0x2b, 0x23, + 0x1c, 0xb4, 0x82, 0x60, 0x97, 0x11, 0x98, 0xba, 0x33, 0x04, 0x31, 0x7e, 0xac, 0x41, 0x3d, 0xa3, + 0xd0, 0x8c, 0x13, 0xd3, 0xb2, 0xb5, 0x82, 0x9b, 0x50, 0x53, 0xda, 0x4e, 0x5c, 0x1c, 0x28, 0x50, + 0x2b, 0x1a, 0x73, 0x62, 0x9a, 0x50, 0x96, 0xa7, 0x4e, 0xb6, 0xbc, 0xab, 0x21, 0x3b, 0xf1, 0xf1, + 0x64, 0x89, 0x65, 0x8a, 0xa3, 0xa3, 0x2b, 0x4c, 0xdc, 0xcf, 0xbf, 0x0a, 0x33, 0xe9, 0xed, 0x53, + 0x2b, 0x69, 0x49, 0x30, 0xf1, 0xd7, 0x1a, 0x54, 0xd4, 0x56, 0xa5, 0x5b, 0x89, 0xb5, 0x4c, 0x2b, + 0xb1, 0x3a, 0xc1, 0x49, 0x24, 0xc2, 0x09, 0x59, 0xc4, 0xb5, 0x0e, 0x73, 0x6a, 0x83, 0x19, 0xda, + 0x3a, 0xb6, 0xa3, 0x63, 0x19, 0xbf, 0xcf, 0x2a, 0xc4, 0x7b, 0x78, 0xf0, 0xd0, 0x8e, 0x8e, 0xd1, + 0x97, 0x00, 0xf8, 0x07, 0x0e, 0xce, 0xb1, 0xed, 0xfa, 0xb2, 0x7c, 0xb3, 0xb4, 0x11, 0x7f, 0xe8, + 0xf7, 0x81, 0xed, 0xd2, 0x77, 0x02, 0x72, 0xdf, 0xa7, 0x64, 0x60, 0x56, 0x19, 0xe5, 0x16, 0x23, + 0x34, 0x3e, 0xd1, 0x60, 0x76, 0xc8, 0x2c, 0xce, 0xd2, 0xf7, 0x06, 0xcc, 0xdb, 0x94, 0xe2, 0x6e, + 0x48, 0x71, 0x3b, 0xa5, 0x23, 0xa1, 0xf7, 0xb9, 0x18, 0x15, 0x9f, 0xe1, 0x51, 0xf5, 0x8f, 0x9c, + 0xfc, 0xc2, 0xe8, 0xa7, 0x12, 0x3b, 0x50, 0x4b, 0x19, 0xda, 0x0b, 0xf6, 0xff, 0xcc, 0x0e, 0x6e, + 0xe3, 0x2e, 0xe8, 0xc3, 0x36, 0x97, 0xed, 0x4e, 0xd5, 0x86, 0xba, 0x53, 0x7f, 0xa8, 0x01, 0x30, + 0x7f, 0x28, 0x3a, 0xcc, 0xd0, 0x6b, 0x30, 0xc7, 0xd5, 0xfa, 0xd4, 0xf6, 0x3c, 0xe1, 0x3e, 0xbb, + 0xe2, 0x99, 0xbc, 0xd9, 0x60, 0x88, 0x0f, 0x6c, 0xcf, 0x63, 0xe4, 0x8f, 0x22, 0x74, 0x17, 0x16, + 0x42, 0x12, 0x38, 0x38, 0x8a, 0xb2, 0xd4, 0x39, 0x4e, 0x3d, 0x27, 0x71, 0xa9, 0x07, 0x36, 0x60, + 0xe1, 0xe4, 0x94, 0x7b, 0x9f, 0xec, 0x03, 0x79, 0xfe, 0x80, 0x7e, 0x72, 0xca, 0xfc, 0x50, 0x42, + 0x6f, 0x7c, 0x0d, 0x2a, 0xcc, 0xff, 0x72, 0x7f, 0xb2, 0x00, 0x45, 0x1a, 0x50, 0xdb, 0x93, 0xbc, + 0x88, 0x01, 0xbb, 0xd8, 0xe4, 0x32, 0xb8, 0x2d, 0xd7, 0x4d, 0x00, 0x71, 0x91, 0xeb, 0x70, 0x40, + 0xb1, 0x5a, 0x85, 0x17, 0xb9, 0xee, 0x31, 0x80, 0xf1, 0x7b, 0x1a, 0x00, 0x9b, 0x5f, 0x4a, 0x7e, + 0x07, 0x8a, 0xfc, 0x83, 0xa8, 0x91, 0xeb, 0x54, 0xf1, 0x60, 0x0a, 0x3c, 0x0b, 0xe8, 0xe2, 0x6f, + 0x10, 0xc6, 0xd2, 0x71, 0x34, 0x23, 0x6b, 0xdb, 0xd4, 0x1e, 0x09, 0x7c, 0x13, 0x32, 0x86, 0x36, + 0x3e, 0xc9, 0x8b, 0x0f, 0x09, 0x05, 0x17, 0x07, 0x9b, 0xe8, 0x75, 0x40, 0xb1, 0x08, 0xca, 0x37, + 0xaa, 0x6d, 0x9b, 0x8b, 0x31, 0xd2, 0x43, 0xf2, 0xce, 0x56, 0xae, 0x8b, 0x84, 0x54, 0x76, 0xb6, + 0x72, 0x68, 0x4c, 0xf6, 0x55, 0xb8, 0x4e, 0x58, 0xf8, 0xd1, 0x3e, 0xb4, 0xda, 0x3c, 0x71, 0xb1, + 0xa2, 0x13, 0x37, 0x0c, 0xb9, 0x55, 0xf7, 0x7c, 0x2a, 0x4f, 0xd9, 0x8a, 0xa4, 0x11, 0xb9, 0xcd, + 0xbe, 0xa0, 0xd8, 0x62, 0x04, 0x2c, 0x6c, 0x51, 0x13, 0xb0, 0xa3, 0x99, 0x7d, 0x5a, 0xd8, 0xf4, + 0x92, 0x24, 0x78, 0x0f, 0x0f, 0x32, 0x8f, 0xbe, 0x05, 0xaf, 0xa8, 0x47, 0x0f, 0xf9, 0xd9, 0xe6, + 0x51, 0x9d, 0x75, 0xcc, 0x4e, 0x2f, 0x7f, 0xbc, 0x98, 0x59, 0xfc, 0x1e, 0xa3, 0xe1, 0x41, 0xde, + 0x43, 0x97, 0x8a, 0x19, 0x7e, 0x1d, 0x9a, 0xd9, 0x19, 0xf8, 0xbe, 0x8a, 0x87, 0xc5, 0x07, 0x52, + 0x8b, 0xe9, 0x87, 0x99, 0x1d, 0x89, 0x07, 0xbf, 0x04, 0xcb, 0x63, 0x1e, 0x64, 0x06, 0x21, 0x7d, + 0xfa, 0xc2, 0xf0, 0x73, 0xcc, 0x36, 0x8c, 0x3f, 0xd0, 0xa0, 0x96, 0xea, 0xc2, 0x44, 0x6f, 0x42, + 0x8d, 0x1b, 0xab, 0x68, 0xda, 0x94, 0x16, 0x92, 0x04, 0xc2, 0xc9, 0xf9, 0x31, 0x81, 0x26, 0x67, + 0xe9, 0x4d, 0xa8, 0xf1, 0xb0, 0x52, 0x3e, 0x95, 0x1b, 0x7a, 0x2a, 0xd9, 0x75, 0x13, 0xa2, 0xf8, + 0xb7, 0xe8, 0xdb, 0x14, 0xf1, 0x95, 0xf1, 0xbb, 0x1a, 0xd4, 0x33, 0xdd, 0xa0, 0x13, 0x72, 0xf2, + 0x5b, 0xd0, 0x48, 0x71, 0x62, 0x9d, 0x6e, 0x4a, 0x66, 0x16, 0xc7, 0x30, 0x73, 0xb0, 0x69, 0xce, + 0x44, 0xa9, 0x91, 0xf1, 0x21, 0x94, 0x5e, 0x54, 0x29, 0x1d, 0xee, 0x32, 0x3c, 0x6f, 0x95, 0xf7, + 0x3b, 0x1a, 0x54, 0xe2, 0xd2, 0xf1, 0xb5, 0x54, 0xe9, 0x38, 0x13, 0x9d, 0xbd, 0x44, 0xdd, 0x18, + 0x7d, 0x01, 0xaa, 0x76, 0x14, 0x61, 0x42, 0x55, 0xc3, 0x7b, 0x23, 0x55, 0x44, 0x78, 0x5b, 0x61, + 0xcc, 0x84, 0x88, 0xed, 0x75, 0x95, 0xe5, 0x62, 0xdc, 0x07, 0xa3, 0x9b, 0x50, 0xe0, 0x41, 0xe2, + 0x18, 0x36, 0x38, 0xe2, 0xac, 0x42, 0xfe, 0x99, 0xdf, 0x9d, 0xdd, 0x84, 0x5a, 0x74, 0x1c, 0x10, + 0x6a, 0xa5, 0xbf, 0x3e, 0x03, 0x0e, 0xe2, 0xd5, 0x51, 0xe3, 0x2b, 0x82, 0x0d, 0x51, 0xf2, 0x3e, + 0xc3, 0x05, 0xc4, 0x72, 0xe7, 0x46, 0x34, 0x79, 0xea, 0x88, 0x0f, 0x5a, 0x3f, 0x8d, 0x10, 0xa9, + 0x70, 0x21, 0x9f, 0x0d, 0x17, 0x5e, 0x28, 0xc1, 0x77, 0x25, 0x0f, 0xfc, 0xc2, 0x56, 0xb7, 0xa4, + 0x36, 0x26, 0xed, 0xe5, 0xef, 0xb8, 0xc4, 0x2d, 0xb9, 0x0e, 0x25, 0x7e, 0xab, 0x8e, 0x56, 0x7c, + 0xe2, 0x3d, 0x31, 0x25, 0x05, 0xa3, 0x95, 0x1f, 0xe9, 0xe5, 0xc7, 0xd0, 0x8a, 0x1a, 0xb3, 0xa4, + 0x30, 0xbe, 0x08, 0x65, 0xd9, 0x15, 0xca, 0xbb, 0x91, 0xfa, 0xbe, 0x54, 0x23, 0xfb, 0x89, 0x96, + 0xa0, 0x14, 0xf1, 0x0f, 0x7c, 0xa4, 0xf0, 0x72, 0x64, 0xbc, 0xc5, 0xc3, 0x6b, 0x5e, 0xd2, 0xc9, + 0x96, 0x86, 0xb4, 0xe7, 0x97, 0x86, 0x72, 0x99, 0xd2, 0xd0, 0x3f, 0x6b, 0x00, 0xbb, 0xd8, 0x6e, + 0x63, 0xc2, 0x97, 0x3e, 0x33, 0x91, 0x5f, 0x86, 0x32, 0x4b, 0xbb, 0x19, 0x4a, 0xb2, 0xc1, 0x86, + 0x3b, 0xed, 0x38, 0x0f, 0xcf, 0xa7, 0xf2, 0xf0, 0xe1, 0xac, 0xbf, 0x70, 0xce, 0xac, 0xff, 0x0d, + 0xe9, 0x03, 0x99, 0x84, 0x58, 0xc6, 0xe3, 0x89, 0xde, 0xd8, 0x85, 0xc7, 0xd2, 0x5b, 0x2c, 0xfc, + 0x22, 0xff, 0x69, 0xec, 0x40, 0x35, 0x86, 0x8f, 0xa6, 0x9c, 0xda, 0xf8, 0x94, 0x93, 0x77, 0xab, + 0xd2, 0x44, 0xa1, 0xf6, 0x11, 0x6e, 0x45, 0xc6, 0x3e, 0x20, 0xf1, 0xe2, 0x99, 0xab, 0x44, 0x15, + 0x74, 0x5e, 0x4f, 0x5e, 0xbb, 0x89, 0x6f, 0x37, 0x92, 0xfb, 0x2b, 0xd1, 0x5d, 0xfc, 0xee, 0x0d, + 0x35, 0x20, 0x17, 0x4f, 0x9c, 0xa3, 0x91, 0xf1, 0x55, 0x98, 0xcf, 0x4c, 0x2a, 0x4b, 0x38, 0xcd, + 0xec, 0xac, 0x85, 0xe7, 0x4f, 0xb0, 0x0d, 0x68, 0x9f, 0x06, 0x04, 0xef, 0x33, 0x26, 0xf7, 0x15, + 0x57, 0x1b, 0x50, 0x65, 0x8e, 0x8d, 0xbf, 0x69, 0x1b, 0x77, 0xc1, 0x89, 0x4a, 0x5f, 0xe5, 0x44, + 0xfe, 0x32, 0x36, 0x60, 0x3e, 0x33, 0x8b, 0x64, 0x23, 0xa5, 0x0b, 0x2d, 0xa3, 0x0b, 0x87, 0x77, + 0xa8, 0x3c, 0xc0, 0xcc, 0x80, 0x5a, 0xad, 0xdd, 0x8b, 0xe9, 0x2a, 0xfd, 0x13, 0x8d, 0x77, 0x8d, + 0xa4, 0x56, 0xb9, 0x80, 0x02, 0x57, 0xf2, 0xa5, 0x1a, 0xef, 0xed, 0x3b, 0xf3, 0x7d, 0xce, 0x7f, + 0x8a, 0x06, 0xcc, 0xad, 0xb7, 0xf7, 0x2f, 0xb2, 0x01, 0xf3, 0xf3, 0x2c, 0x66, 0xc2, 0xa7, 0x6e, + 0xd0, 0x8b, 0x52, 0x1f, 0x15, 0x0a, 0x5e, 0x74, 0x85, 0x89, 0x3f, 0x29, 0xbc, 0x0d, 0x8d, 0x98, + 0x5a, 0x4c, 0x26, 0x9a, 0xf2, 0xeb, 0x0a, 0x7a, 0x90, 0xea, 0xea, 0x2c, 0x0d, 0x77, 0x35, 0x96, + 0x63, 0xc9, 0x8d, 0x9f, 0x8a, 0xee, 0x34, 0x2e, 0xdc, 0xb4, 0xf5, 0xdc, 0x84, 0x72, 0xd4, 0x73, + 0x1c, 0x2c, 0xdf, 0xc1, 0x56, 0x4c, 0x35, 0xbc, 0x10, 0x61, 0x8d, 0x6d, 0x58, 0x7a, 0x80, 0xf9, + 0xa7, 0xe3, 0x2c, 0x73, 0xe2, 0x07, 0xf0, 0xe5, 0xf7, 0xcb, 0xf8, 0xbe, 0x06, 0xcb, 0x23, 0xd3, + 0x4c, 0x5b, 0x33, 0x5f, 0x60, 0x97, 0x2f, 0xe5, 0x35, 0x92, 0xfc, 0x99, 0x69, 0x9f, 0x22, 0x5b, + 0xbf, 0x09, 0x45, 0xfe, 0x06, 0x1a, 0x01, 0x94, 0x0e, 0x30, 0xd9, 0xeb, 0x51, 0xfd, 0x8a, 0xfc, + 0xbd, 0x8d, 0x3d, 0x5d, 0x5b, 0xff, 0x1c, 0x40, 0x52, 0xcc, 0x64, 0x98, 0xc7, 0x01, 0xe9, 0xda, + 0x9e, 0x7e, 0x05, 0x95, 0x21, 0xbf, 0x1b, 0x3c, 0xd5, 0x35, 0x54, 0x81, 0xc2, 0x43, 0xb7, 0x73, + 0xac, 0xe7, 0xd6, 0x57, 0xa1, 0x91, 0xad, 0x60, 0xa2, 0x12, 0xe4, 0xf6, 0x77, 0xf4, 0x2b, 0xec, + 0xaf, 0xb9, 0xa5, 0x6b, 0xeb, 0x0e, 0xe4, 0x9e, 0x84, 0xec, 0x51, 0xb1, 0x52, 0x19, 0xf2, 0x7c, + 0x19, 0x36, 0x07, 0x53, 0x8d, 0x9e, 0x43, 0x33, 0x50, 0x51, 0x1f, 0xc5, 0xe8, 0x79, 0xb6, 0xe0, + 0x8e, 0xcf, 0xe2, 0x11, 0xbd, 0x80, 0xe6, 0x61, 0x76, 0xe8, 0xc3, 0x54, 0xbd, 0x88, 0x10, 0x34, + 0xf8, 0x95, 0xa7, 0x76, 0x35, 0xd2, 0x4b, 0xeb, 0x1b, 0x50, 0x8d, 0xe3, 0x19, 0x36, 0xf3, 0xe3, + 0xc0, 0xc7, 0xfa, 0x15, 0x54, 0x85, 0x22, 0x27, 0xd1, 0x35, 0xb6, 0x88, 0x7a, 0x40, 0xcf, 0xad, + 0xff, 0x85, 0x06, 0x25, 0xf1, 0x3d, 0xa8, 0x40, 0x88, 0xdf, 0xfa, 0x15, 0xb4, 0x08, 0x73, 0xad, + 0xd6, 0xae, 0x48, 0x86, 0x63, 0xa6, 0x34, 0xd4, 0x84, 0x05, 0xb6, 0xba, 0x9a, 0x21, 0xc6, 0xe4, + 0xd8, 0x03, 0x8f, 0xe2, 0xec, 0x75, 0x7f, 0xaf, 0x17, 0x1d, 0xe3, 0xb6, 0x9e, 0x47, 0xab, 0x70, + 0x3d, 0x9e, 0x67, 0xcc, 0xd7, 0xe6, 0x7a, 0x01, 0xad, 0xc0, 0x62, 0x7a, 0xca, 0xed, 0xe0, 0x71, + 0x40, 0x8f, 0x5d, 0xbf, 0xa3, 0x17, 0xd7, 0x6f, 0x43, 0xf9, 0x7e, 0x9f, 0x12, 0xfb, 0x49, 0x28, + 0x64, 0x09, 0x42, 0xfd, 0x0a, 0xd2, 0x61, 0x86, 0x79, 0xa2, 0x27, 0x5e, 0x9b, 0x1b, 0xa9, 0xae, + 0xdd, 0x7b, 0xf5, 0x3f, 0xfe, 0xb6, 0xa2, 0xfd, 0xf4, 0xd9, 0x0d, 0xed, 0x67, 0xcf, 0x6e, 0x68, + 0xff, 0xf3, 0xec, 0x86, 0xf6, 0xc3, 0xff, 0xbd, 0x71, 0x05, 0xf4, 0x80, 0x74, 0x36, 0xa8, 0x7b, + 0x72, 0xba, 0x71, 0x72, 0xca, 0xff, 0xc3, 0xcf, 0x61, 0x89, 0xff, 0xf9, 0xe2, 0xff, 0x07, 0x00, + 0x00, 0xff, 0xff, 0x00, 0xd5, 0x06, 0x73, 0x56, 0x48, 0x00, 0x00, } diff --git a/proto/deadlock.proto b/proto/deadlock.proto index 8cc09d4bd..da66a8c24 100644 --- a/proto/deadlock.proto +++ b/proto/deadlock.proto @@ -19,8 +19,8 @@ message WaitForEntry { uint64 key_hash = 3; // The key the current txn is trying to lock. bytes key = 4; - // The sql that needs to wait for the lock. - string sql_digest = 5; + // The tag came from the lock request's context. + bytes resource_group_tag = 5; // Milliseconds it has been waits. uint64 wait_time = 6; } diff --git a/proto/kvrpcpb.proto b/proto/kvrpcpb.proto index 3632e79ab..3dd9b6b8b 100644 --- a/proto/kvrpcpb.proto +++ b/proto/kvrpcpb.proto @@ -150,9 +150,6 @@ message PessimisticLockRequest { // If min_commit_ts > 0, this is large transaction proto, the final commit_ts // would be infered from min_commit_ts. uint64 min_commit_ts = 11; - - // The digest of the SQL that's acquiring the lock. - string sql_digest = 12; } message PessimisticLockResponse { @@ -783,6 +780,9 @@ message Context { // Not required to read the most up-to-date data, replicas with `safe_ts` >= `start_ts` // can handle read request directly bool stale_read = 17; + + // Any additional serialized information about the request. + bytes resource_group_tag = 18; } message LockInfo {