diff --git a/pkg/roachpb/api.go b/pkg/roachpb/api.go index 1412bba6e9d5..7c7e2c41a7b4 100644 --- a/pkg/roachpb/api.go +++ b/pkg/roachpb/api.go @@ -1500,3 +1500,13 @@ func (c *ContentionEvent) SafeFormat(w redact.SafePrinter, _ rune) { func (c *ContentionEvent) String() string { return redact.StringWithoutMarkers(c) } + +// SafeFormat implements redact.SafeFormatter. +func (s *ScanStats) SafeFormat(w redact.SafePrinter, _ rune) { + w.Printf("scan stats: skipped %d keys; sought %d times", s.NumMvccKeys, s.NumSeeks) +} + +// String implements fmt.Stringer. +func (s *ScanStats) String() string { + return redact.StringWithoutMarkers(s) +} diff --git a/pkg/roachpb/api.pb.go b/pkg/roachpb/api.pb.go index b96051d8a216..7a5e1fc32a5e 100644 --- a/pkg/roachpb/api.pb.go +++ b/pkg/roachpb/api.pb.go @@ -414,6 +414,9 @@ type ResponseHeader struct { // measures the bytes in the timestamps, keys, and values of the returned // rows. NumBytes int64 `protobuf:"varint,8,opt,name=num_bytes,json=numBytes,proto3" json:"num_bytes,omitempty"` + // The total number of keys that were read, including keys that were skipped + // because they were too old to care about MVCC-wise. + NumKeysRead int64 `protobuf:"varint,9,opt,name=num_keys_read,json=numKeysRead,proto3" json:"num_keys_read,omitempty"` } func (m *ResponseHeader) Reset() { *m = ResponseHeader{} } @@ -7171,6 +7174,41 @@ func (m *ContentionEvent) XXX_DiscardUnknown() { var xxx_messageInfo_ContentionEvent proto.InternalMessageInfo +// ScanStats is a message that will be attached to BatchResponses containing +// information about what happened during each scan and get in the request. +type ScanStats struct { + NumMvccKeys uint64 `protobuf:"varint,1,opt,name=num_mvcc_keys,json=numMvccKeys,proto3" json:"num_mvcc_keys,omitempty"` + NumSeeks uint64 `protobuf:"varint,2,opt,name=num_seeks,json=numSeeks,proto3" json:"num_seeks,omitempty"` +} + +func (m *ScanStats) Reset() { *m = ScanStats{} } +func (*ScanStats) ProtoMessage() {} +func (*ScanStats) Descriptor() ([]byte, []int) { + return fileDescriptor_e08772acc330f58b, []int{114} +} +func (m *ScanStats) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ScanStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *ScanStats) XXX_Merge(src proto.Message) { + xxx_messageInfo_ScanStats.Merge(m, src) +} +func (m *ScanStats) XXX_Size() int { + return m.Size() +} +func (m *ScanStats) XXX_DiscardUnknown() { + xxx_messageInfo_ScanStats.DiscardUnknown(m) +} + +var xxx_messageInfo_ScanStats proto.InternalMessageInfo + func init() { proto.RegisterEnum("cockroach.roachpb.ReadConsistencyType", ReadConsistencyType_name, ReadConsistencyType_value) proto.RegisterEnum("cockroach.roachpb.ScanFormat", ScanFormat_name, ScanFormat_value) @@ -7311,533 +7349,538 @@ func init() { proto.RegisterType((*JoinNodeRequest)(nil), "cockroach.roachpb.JoinNodeRequest") proto.RegisterType((*JoinNodeResponse)(nil), "cockroach.roachpb.JoinNodeResponse") proto.RegisterType((*ContentionEvent)(nil), "cockroach.roachpb.ContentionEvent") + proto.RegisterType((*ScanStats)(nil), "cockroach.roachpb.ScanStats") } func init() { proto.RegisterFile("roachpb/api.proto", fileDescriptor_e08772acc330f58b) } var fileDescriptor_e08772acc330f58b = []byte{ - // 8325 bytes of a gzipped FileDescriptorProto + // 8385 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x7d, 0x5d, 0x6c, 0x23, 0x59, 0x76, 0x9e, 0x8a, 0xa4, 0x24, 0xf2, 0xf0, 0x57, 0x57, 0xfd, 0xc3, 0xe1, 0xcc, 0xb4, 0xba, 0x6b, 0xa6, 0x7f, 0xa6, 0x77, 0x86, 0x9a, 0xee, 0xde, 0xc9, 0x8c, 0xa7, 0xc7, 0xb3, 0x96, 0x28, 0x76, 0x93, 0x52, 0x4b, 0xad, 0x2e, 0x52, 0xdd, 0x98, 0xf1, 0x3a, 0xe5, 0x52, 0xd5, 0x15, 0x55, 0x2b, 0xb2, 0x8a, 0x5d, 0x55, 0xd4, 0xcf, 0x00, 0x79, 0x70, 0x6c, 0x38, 0xfb, 0x64, 0x6c, 0x00, 0x03, 0xde, 0x85, 0x83, 0x78, 0x9d, 0x35, 0xe2, 0x87, 0x00, 0x49, 0x80, 0x04, 0xf9, 0x43, 0x62, 0xbf, - 0x04, 0xc8, 0x22, 0x70, 0xe2, 0xf5, 0x9b, 0x11, 0x20, 0x8a, 0xad, 0xcd, 0x43, 0x02, 0x03, 0x41, - 0x90, 0x17, 0x03, 0x03, 0x24, 0x08, 0xee, 0x4f, 0xfd, 0x91, 0x45, 0x8a, 0xea, 0xa9, 0x4d, 0x06, - 0xf0, 0x8b, 0xc4, 0x7b, 0xee, 0x3d, 0xa7, 0xee, 0x3d, 0xf7, 0xde, 0x73, 0xcf, 0x77, 0xeb, 0xdc, - 0x5b, 0xb0, 0x60, 0x99, 0x8a, 0xba, 0xdf, 0xdf, 0x5d, 0x56, 0xfa, 0x7a, 0xb5, 0x6f, 0x99, 0x8e, - 0x89, 0x16, 0x54, 0x53, 0x3d, 0xa0, 0xe4, 0x2a, 0xcf, 0xac, 0xdc, 0x3d, 0x38, 0x5c, 0x3e, 0x38, - 0xb4, 0xb1, 0x75, 0x88, 0xad, 0x65, 0xd5, 0x34, 0xd4, 0x81, 0x65, 0x61, 0x43, 0x3d, 0x59, 0xee, - 0x9a, 0xea, 0x01, 0xfd, 0xa3, 0x1b, 0x1d, 0xc6, 0x1e, 0x2e, 0x6b, 0x61, 0x45, 0xb3, 0x07, 0xbd, - 0x9e, 0x62, 0x9d, 0x2c, 0x5b, 0x76, 0x7f, 0x77, 0x99, 0x27, 0x78, 0x59, 0xe4, 0x3e, 0x5d, 0x53, - 0x1c, 0x85, 0xd3, 0x2e, 0xb9, 0x34, 0x6c, 0x59, 0xa6, 0x65, 0x73, 0xea, 0x15, 0x97, 0xda, 0xc3, - 0x8e, 0x12, 0x28, 0xfd, 0xba, 0xed, 0x98, 0x96, 0xd2, 0xc1, 0xcb, 0xd8, 0xe8, 0xe8, 0x06, 0x26, - 0x05, 0x0e, 0x55, 0x95, 0x67, 0xbe, 0x11, 0x99, 0xf9, 0x80, 0xe7, 0x96, 0x07, 0x8e, 0xde, 0x5d, - 0xde, 0xef, 0xaa, 0xcb, 0x8e, 0xde, 0xc3, 0xb6, 0xa3, 0xf4, 0xfa, 0x6e, 0x13, 0x68, 0x8e, 0x63, - 0x29, 0xaa, 0x6e, 0x74, 0xdc, 0xff, 0xfd, 0xdd, 0x65, 0x0b, 0xab, 0xa6, 0xa5, 0x61, 0x4d, 0xb6, - 0xfb, 0x8a, 0xe1, 0x56, 0xb7, 0x63, 0x76, 0x4c, 0xfa, 0x73, 0x99, 0xfc, 0xe2, 0xd4, 0x6b, 0x1d, - 0xd3, 0xec, 0x74, 0xf1, 0x32, 0x4d, 0xed, 0x0e, 0xf6, 0x96, 0xb5, 0x81, 0xa5, 0x38, 0xba, 0xc9, - 0xb9, 0xc4, 0x7f, 0x26, 0x40, 0x5e, 0xc2, 0x2f, 0x07, 0xd8, 0x76, 0x1a, 0x58, 0xd1, 0xb0, 0x85, - 0x5e, 0x83, 0xe4, 0x01, 0x3e, 0x29, 0x27, 0xaf, 0x0b, 0x77, 0x72, 0xab, 0xf3, 0x5f, 0x9e, 0x2e, - 0x25, 0x37, 0xf0, 0x89, 0x44, 0x68, 0xe8, 0x3a, 0xcc, 0x63, 0x43, 0x93, 0x49, 0x76, 0x2a, 0x9c, - 0x3d, 0x87, 0x0d, 0x6d, 0x03, 0x9f, 0xa0, 0x6f, 0x43, 0xda, 0x26, 0xd2, 0x0c, 0x15, 0x97, 0x67, - 0xaf, 0x0b, 0x77, 0x66, 0x57, 0x7f, 0xe1, 0xcb, 0xd3, 0xa5, 0x4f, 0x3a, 0xba, 0xb3, 0x3f, 0xd8, - 0xad, 0xaa, 0x66, 0x6f, 0xd9, 0xeb, 0x53, 0x6d, 0xd7, 0xff, 0xbd, 0xdc, 0x3f, 0xe8, 0x2c, 0x0f, - 0xeb, 0xa8, 0xda, 0x3e, 0x36, 0x5a, 0xf8, 0xa5, 0xe4, 0x49, 0x5c, 0x4f, 0xa5, 0x85, 0x52, 0x62, - 0x3d, 0x95, 0x4e, 0x94, 0x92, 0xe2, 0x1f, 0x27, 0xa0, 0x20, 0x61, 0xbb, 0x6f, 0x1a, 0x36, 0xe6, - 0x35, 0x7f, 0x1f, 0x92, 0xce, 0xb1, 0x41, 0x6b, 0x9e, 0xbd, 0x7f, 0xad, 0x3a, 0x32, 0x7a, 0xaa, - 0x6d, 0x4b, 0x31, 0x6c, 0x45, 0x25, 0xcd, 0x97, 0x48, 0x51, 0xf4, 0x11, 0x64, 0x2d, 0x6c, 0x0f, - 0x7a, 0x98, 0x2a, 0x92, 0x36, 0x2a, 0x7b, 0xff, 0x6a, 0x04, 0x67, 0xab, 0xaf, 0x18, 0x12, 0xb0, - 0xb2, 0xe4, 0x37, 0x6a, 0x41, 0x9e, 0x73, 0x5a, 0x58, 0xb1, 0x4d, 0xa3, 0x3c, 0x7f, 0x5d, 0xb8, - 0x53, 0xb8, 0x5f, 0x8d, 0xe0, 0x0d, 0xd7, 0x92, 0x24, 0x07, 0x3d, 0x2c, 0x51, 0x2e, 0x29, 0x67, - 0x05, 0x52, 0xe8, 0x35, 0x48, 0x1b, 0x83, 0x1e, 0xd1, 0xaf, 0x4d, 0xb5, 0x97, 0x94, 0xe6, 0x8d, - 0x41, 0x6f, 0x03, 0x9f, 0xd8, 0xe8, 0x75, 0xc8, 0x90, 0xac, 0xdd, 0x13, 0x07, 0xdb, 0xe5, 0x34, - 0xcd, 0x23, 0x65, 0x57, 0x49, 0x5a, 0xfc, 0x14, 0x72, 0x41, 0xa9, 0x08, 0x41, 0x41, 0xaa, 0xb7, - 0x76, 0x36, 0xeb, 0xf2, 0xce, 0xd6, 0xc6, 0xd6, 0xd3, 0x17, 0x5b, 0xa5, 0x19, 0x74, 0x09, 0x4a, - 0x9c, 0xb6, 0x51, 0xff, 0x4c, 0x7e, 0xd2, 0xdc, 0x6c, 0xb6, 0x4b, 0x42, 0x25, 0xf5, 0xdd, 0x1f, - 0x5d, 0x9b, 0x59, 0x4f, 0xa5, 0xe7, 0x4a, 0xf3, 0xe2, 0x8f, 0x04, 0x80, 0xc7, 0xd8, 0xe1, 0xa3, - 0x01, 0xad, 0xc2, 0xdc, 0x3e, 0xad, 0x71, 0x59, 0xa0, 0x6a, 0xb9, 0x1e, 0xd9, 0xb4, 0xc0, 0xc8, - 0x59, 0x4d, 0xff, 0xf8, 0x74, 0x69, 0xe6, 0x27, 0xa7, 0x4b, 0x82, 0xc4, 0x39, 0xd1, 0x33, 0xc8, - 0x1e, 0xe0, 0x13, 0x99, 0xcf, 0xcb, 0x72, 0x82, 0xea, 0xe8, 0xfd, 0x80, 0xa0, 0x83, 0xc3, 0xaa, - 0x3b, 0x45, 0xab, 0x81, 0xe9, 0x5c, 0x25, 0x1c, 0xd5, 0x96, 0x63, 0x61, 0xa3, 0xe3, 0xec, 0x4b, - 0x70, 0x80, 0x4f, 0x9e, 0x30, 0x19, 0xe2, 0x1f, 0x0a, 0x90, 0xa5, 0xb5, 0x64, 0x4a, 0x45, 0xb5, - 0xa1, 0x6a, 0xde, 0x38, 0xb7, 0x07, 0x22, 0xea, 0x59, 0x85, 0xd9, 0x43, 0xa5, 0x3b, 0xc0, 0xb4, - 0x86, 0xd9, 0xfb, 0xe5, 0x08, 0x19, 0xcf, 0x49, 0xbe, 0xc4, 0x8a, 0xa1, 0x87, 0x90, 0xd3, 0x0d, - 0x07, 0x1b, 0x8e, 0xcc, 0xd8, 0x92, 0xe7, 0xb0, 0x65, 0x59, 0x69, 0x9a, 0x10, 0xff, 0xa9, 0x00, - 0xb0, 0x3d, 0x88, 0x55, 0xcf, 0xdf, 0x9c, 0xb2, 0xfe, 0xab, 0x29, 0xc2, 0xea, 0xb6, 0xe2, 0x0a, - 0xcc, 0xe9, 0x46, 0x57, 0x37, 0x58, 0xfd, 0xd3, 0x12, 0x4f, 0xa1, 0x4b, 0x30, 0xbb, 0xdb, 0xd5, - 0x0d, 0x8d, 0xce, 0x87, 0xb4, 0xc4, 0x12, 0xa2, 0x04, 0x59, 0x5a, 0xeb, 0x18, 0xf5, 0x2e, 0x9e, - 0x26, 0xe0, 0x72, 0xcd, 0x34, 0x34, 0x9d, 0x4c, 0x49, 0xa5, 0xfb, 0xb5, 0xd0, 0xca, 0x3a, 0x5c, - 0xd2, 0x70, 0xdf, 0xc2, 0xaa, 0xe2, 0x60, 0x4d, 0xc6, 0xc7, 0xfd, 0x29, 0xfb, 0x18, 0xf9, 0x5c, - 0xf5, 0xe3, 0x3e, 0xa5, 0x91, 0x59, 0x4b, 0x04, 0xb0, 0x59, 0x3b, 0x47, 0x4c, 0xa6, 0x94, 0xc6, - 0xc7, 0x7d, 0x3a, 0x6b, 0xa3, 0xd5, 0x8c, 0xbe, 0x09, 0x57, 0x95, 0x6e, 0xd7, 0x3c, 0x92, 0xf5, - 0x3d, 0x59, 0x33, 0xb1, 0x2d, 0x1b, 0xa6, 0x23, 0xe3, 0x63, 0xdd, 0x76, 0xa8, 0x49, 0x48, 0x4b, - 0x8b, 0x34, 0xbb, 0xb9, 0xb7, 0x66, 0x62, 0x7b, 0xcb, 0x74, 0xea, 0x24, 0x2b, 0xd0, 0x95, 0xf3, - 0xc1, 0xae, 0x14, 0x7f, 0x09, 0xae, 0x0c, 0xeb, 0x37, 0xce, 0xfe, 0xfb, 0x23, 0x01, 0x0a, 0x4d, - 0x43, 0x77, 0xbe, 0x16, 0x1d, 0xe7, 0xe9, 0x33, 0x19, 0xd4, 0xe7, 0x5d, 0x28, 0xed, 0x29, 0x7a, - 0xf7, 0xa9, 0xd1, 0x36, 0x7b, 0xbb, 0xb6, 0x63, 0x1a, 0xd8, 0xe6, 0x0a, 0x1f, 0xa1, 0x8b, 0xcf, - 0xa1, 0xe8, 0xb5, 0x26, 0x4e, 0x35, 0x39, 0x50, 0x6a, 0x1a, 0xaa, 0x85, 0x7b, 0xd8, 0x88, 0x55, - 0x4f, 0x6f, 0x40, 0x46, 0x77, 0xe5, 0x52, 0x5d, 0x25, 0x25, 0x9f, 0x20, 0x0e, 0x60, 0x21, 0xf0, - 0xd4, 0x38, 0xcd, 0x25, 0x59, 0x8c, 0xf0, 0x91, 0xec, 0xf7, 0x11, 0x59, 0x8c, 0xf0, 0x11, 0x33, - 0x6f, 0x2d, 0xc8, 0xaf, 0xe1, 0x2e, 0x76, 0x70, 0x8c, 0x2d, 0x15, 0x77, 0xa0, 0xe0, 0x0a, 0x8d, - 0xb3, 0x63, 0x7e, 0x4b, 0x00, 0xc4, 0xe5, 0x2a, 0x46, 0x27, 0xce, 0x1a, 0xa3, 0x25, 0xe2, 0x5a, - 0x38, 0x03, 0xcb, 0x60, 0xcb, 0x39, 0x1b, 0x93, 0xc0, 0x48, 0x74, 0x45, 0xf7, 0xa7, 0x6c, 0x2a, - 0x38, 0x65, 0xb9, 0x7b, 0x73, 0x04, 0x8b, 0xa1, 0x8a, 0xc5, 0xdb, 0x7d, 0x29, 0x5a, 0xa7, 0xc4, - 0xf5, 0x64, 0xd0, 0x87, 0xa3, 0x44, 0xf1, 0xfb, 0x02, 0x2c, 0xd4, 0xba, 0x58, 0xb1, 0x62, 0xd7, - 0xc8, 0xb7, 0x20, 0xad, 0x61, 0x45, 0xa3, 0x4d, 0x66, 0x13, 0xfb, 0xcd, 0x80, 0x14, 0xe2, 0xe9, - 0x56, 0xf7, 0xbb, 0x6a, 0xb5, 0xed, 0xfa, 0xc0, 0x7c, 0x76, 0x7b, 0x4c, 0xe2, 0x67, 0x80, 0x82, - 0x35, 0x8b, 0x73, 0x20, 0xfc, 0x5e, 0x02, 0x90, 0x84, 0x0f, 0xb1, 0xe5, 0xc4, 0xde, 0xec, 0x35, - 0xc8, 0x3a, 0x8a, 0xd5, 0xc1, 0x8e, 0x4c, 0xbc, 0xfb, 0x8b, 0xb4, 0x1c, 0x18, 0x1f, 0x21, 0xa3, - 0x36, 0xdc, 0xc6, 0x86, 0xb2, 0xdb, 0xc5, 0x54, 0x8a, 0xbc, 0x6b, 0x0e, 0x0c, 0x4d, 0xd6, 0x1d, - 0x6c, 0x29, 0x8e, 0x69, 0xc9, 0x66, 0xdf, 0xd1, 0x7b, 0xfa, 0x17, 0xd4, 0xb1, 0xe7, 0x43, 0xed, - 0x2d, 0x56, 0x9c, 0x30, 0xaf, 0x92, 0xc2, 0x4d, 0x5e, 0xf6, 0x69, 0xa0, 0x28, 0xaa, 0xc2, 0xa2, - 0xde, 0x31, 0x4c, 0x0b, 0xcb, 0x1d, 0x55, 0x76, 0xf6, 0x2d, 0x6c, 0xef, 0x9b, 0x5d, 0x77, 0x41, - 0x5a, 0x60, 0x59, 0x8f, 0xd5, 0xb6, 0x9b, 0x21, 0x7e, 0x0e, 0x8b, 0x21, 0x2d, 0xc5, 0xd9, 0x05, - 0xff, 0x53, 0x80, 0x6c, 0x4b, 0x55, 0x8c, 0x38, 0x75, 0xff, 0x29, 0x64, 0x6d, 0x55, 0x31, 0xe4, - 0x3d, 0xd3, 0xea, 0x29, 0x0e, 0x6d, 0x57, 0x21, 0xa4, 0x7b, 0xcf, 0xbf, 0x57, 0x15, 0xe3, 0x11, - 0x2d, 0x24, 0x81, 0xed, 0xfd, 0x1e, 0xf6, 0x5f, 0x67, 0xbf, 0xba, 0xff, 0xca, 0xa6, 0xf7, 0x7a, - 0x2a, 0x9d, 0x2c, 0xa5, 0xc4, 0xbf, 0x14, 0x20, 0xc7, 0x9a, 0x1c, 0xe7, 0xf4, 0xfe, 0x00, 0x52, - 0x96, 0x79, 0xc4, 0xa6, 0x77, 0xf6, 0xfe, 0xeb, 0x11, 0x22, 0x36, 0xf0, 0x49, 0x70, 0xfd, 0xa4, - 0xc5, 0xd1, 0x2a, 0x70, 0x2f, 0x55, 0xa6, 0xdc, 0xc9, 0x69, 0xb9, 0x81, 0x71, 0x49, 0x44, 0xc6, - 0x6d, 0x28, 0xee, 0x2a, 0x8e, 0xba, 0x2f, 0x5b, 0xbc, 0x92, 0x64, 0xad, 0x4d, 0xde, 0xc9, 0x49, - 0x05, 0x4a, 0x76, 0xab, 0x6e, 0x93, 0x96, 0xb3, 0xf9, 0x66, 0xe3, 0xbf, 0x62, 0x7d, 0xfe, 0x7f, - 0x04, 0x3e, 0x87, 0xdc, 0x96, 0xff, 0x55, 0xeb, 0xfa, 0x1f, 0x24, 0xe0, 0x6a, 0x6d, 0x1f, 0xab, - 0x07, 0x35, 0xd3, 0xb0, 0x75, 0xdb, 0x21, 0xba, 0x8b, 0xb3, 0xff, 0x5f, 0x87, 0xcc, 0x91, 0xee, - 0xec, 0xcb, 0x9a, 0xbe, 0xb7, 0x47, 0xad, 0x6d, 0x5a, 0x4a, 0x13, 0xc2, 0x9a, 0xbe, 0xb7, 0x87, - 0x1e, 0x40, 0xaa, 0x67, 0x6a, 0xcc, 0x99, 0x2f, 0xdc, 0x5f, 0x8a, 0x10, 0x4f, 0xab, 0x66, 0x0f, - 0x7a, 0x9b, 0xa6, 0x86, 0x25, 0x5a, 0x18, 0x5d, 0x03, 0x50, 0x09, 0xb5, 0x6f, 0xea, 0x86, 0xc3, - 0x8d, 0x63, 0x80, 0x82, 0x1a, 0x90, 0x71, 0xb0, 0xd5, 0xd3, 0x0d, 0xc5, 0xc1, 0xe5, 0x59, 0xaa, - 0xbc, 0xb7, 0x23, 0x2b, 0xde, 0xef, 0xea, 0xaa, 0xb2, 0x86, 0x6d, 0xd5, 0xd2, 0xfb, 0x8e, 0x69, - 0x71, 0x2d, 0xfa, 0xcc, 0xe2, 0x6f, 0xa4, 0xa0, 0x3c, 0xaa, 0x9b, 0x38, 0x47, 0xc8, 0x36, 0xcc, - 0x59, 0xd8, 0x1e, 0x74, 0x1d, 0x3e, 0x46, 0xee, 0x8f, 0x53, 0x41, 0x44, 0x0d, 0xe8, 0xd6, 0x45, - 0xd7, 0xe1, 0xd5, 0xe6, 0x72, 0x2a, 0xff, 0x5a, 0x80, 0x39, 0x96, 0x81, 0xee, 0x41, 0xda, 0x22, - 0x0b, 0x83, 0xac, 0x6b, 0xb4, 0x8e, 0xc9, 0xd5, 0x2b, 0x67, 0xa7, 0x4b, 0xf3, 0x74, 0xb1, 0x68, - 0xae, 0x7d, 0xe9, 0xff, 0x94, 0xe6, 0x69, 0xb9, 0xa6, 0x46, 0x7a, 0xcb, 0x76, 0x14, 0xcb, 0xa1, - 0x9b, 0x4a, 0x09, 0x86, 0x90, 0x28, 0x61, 0x03, 0x9f, 0xa0, 0x75, 0x98, 0xb3, 0x1d, 0xc5, 0x19, - 0xd8, 0xbc, 0xbf, 0x2e, 0x54, 0xd9, 0x16, 0xe5, 0x94, 0xb8, 0x04, 0xe2, 0x6e, 0x69, 0xd8, 0x51, - 0xf4, 0x2e, 0xed, 0xc0, 0x8c, 0xc4, 0x53, 0xe2, 0x6f, 0x0b, 0x30, 0xc7, 0x8a, 0xa2, 0xab, 0xb0, - 0x28, 0xad, 0x6c, 0x3d, 0xae, 0xcb, 0xcd, 0xad, 0xb5, 0x7a, 0xbb, 0x2e, 0x6d, 0x36, 0xb7, 0x56, - 0xda, 0xf5, 0xd2, 0x0c, 0xba, 0x02, 0xc8, 0xcd, 0xa8, 0x3d, 0xdd, 0x6a, 0x35, 0x5b, 0xed, 0xfa, - 0x56, 0xbb, 0x24, 0xd0, 0x3d, 0x15, 0x4a, 0x0f, 0x50, 0x13, 0xe8, 0x6d, 0xb8, 0x3e, 0x4c, 0x95, - 0x5b, 0xed, 0x95, 0x76, 0x4b, 0xae, 0xb7, 0xda, 0xcd, 0xcd, 0x95, 0x76, 0x7d, 0xad, 0x94, 0x9c, - 0x50, 0x8a, 0x3c, 0x44, 0x92, 0xea, 0xb5, 0x76, 0x29, 0x25, 0x3a, 0x70, 0x59, 0xc2, 0xaa, 0xd9, - 0xeb, 0x0f, 0x1c, 0x4c, 0x6a, 0x69, 0xc7, 0x39, 0x53, 0xae, 0xc2, 0xbc, 0x66, 0x9d, 0xc8, 0xd6, - 0xc0, 0xe0, 0xf3, 0x64, 0x4e, 0xb3, 0x4e, 0xa4, 0x81, 0x21, 0xfe, 0x63, 0x01, 0xae, 0x0c, 0x3f, - 0x36, 0xce, 0x41, 0xf8, 0x0c, 0xb2, 0x8a, 0xa6, 0x61, 0x4d, 0xd6, 0x70, 0xd7, 0x51, 0xb8, 0x4b, - 0x74, 0x37, 0x20, 0x89, 0x6f, 0x05, 0x56, 0xbd, 0xad, 0xc0, 0xcd, 0xe7, 0xb5, 0x1a, 0xad, 0xc8, - 0x1a, 0xe1, 0x70, 0xcd, 0x0f, 0x15, 0x42, 0x29, 0xe2, 0x0f, 0x52, 0x90, 0xaf, 0x1b, 0x5a, 0xfb, - 0x38, 0xd6, 0xb5, 0xe4, 0x0a, 0xcc, 0xa9, 0x66, 0xaf, 0xa7, 0x3b, 0xae, 0x82, 0x58, 0x0a, 0xfd, - 0x5c, 0xc0, 0x95, 0x4d, 0x4e, 0xe1, 0xd0, 0xf9, 0x4e, 0x2c, 0xfa, 0x65, 0xb8, 0x4a, 0xac, 0xa6, - 0x65, 0x28, 0x5d, 0x99, 0x49, 0x93, 0x1d, 0x4b, 0xef, 0x74, 0xb0, 0xc5, 0xb7, 0x1f, 0xef, 0x44, - 0xd4, 0xb3, 0xc9, 0x39, 0x6a, 0x94, 0xa1, 0xcd, 0xca, 0x4b, 0x97, 0xf5, 0x28, 0x32, 0xfa, 0x04, - 0x80, 0x2c, 0x45, 0x74, 0x4b, 0xd3, 0xe6, 0xf6, 0x68, 0xdc, 0x9e, 0xa6, 0x6b, 0x82, 0x08, 0x03, - 0x49, 0xdb, 0xe8, 0x19, 0x94, 0x74, 0x43, 0xde, 0xeb, 0xea, 0x9d, 0x7d, 0x47, 0x3e, 0xb2, 0x74, - 0x07, 0xdb, 0xe5, 0x05, 0x2a, 0x23, 0xaa, 0xab, 0x5b, 0x7c, 0x6b, 0x56, 0x7b, 0x41, 0x4a, 0x72, - 0x69, 0x05, 0xdd, 0x78, 0x44, 0xf9, 0x29, 0xd1, 0x46, 0xcb, 0x04, 0x0a, 0xbd, 0x1c, 0xe8, 0x16, - 0x96, 0xef, 0xf5, 0x55, 0xba, 0x0f, 0x92, 0x5e, 0x2d, 0x9c, 0x9d, 0x2e, 0x81, 0xc4, 0xc8, 0xf7, - 0xb6, 0x6b, 0x04, 0x1a, 0xb1, 0xdf, 0x7d, 0x95, 0xa8, 0xbd, 0x6f, 0xea, 0xb6, 0x69, 0x94, 0x33, - 0x4c, 0xed, 0x2c, 0x85, 0xde, 0x81, 0x92, 0x73, 0x6c, 0xc8, 0xfb, 0x58, 0xb1, 0x9c, 0x5d, 0xac, - 0x38, 0x64, 0x7d, 0x06, 0x5a, 0xa2, 0xe8, 0x1c, 0x1b, 0x8d, 0x00, 0x79, 0x3d, 0x95, 0x9e, 0x2f, - 0xa5, 0xd7, 0x53, 0xe9, 0x74, 0x29, 0x23, 0xfe, 0x67, 0x01, 0x0a, 0xee, 0xd8, 0x88, 0x73, 0x18, - 0xdf, 0x81, 0x92, 0x69, 0x60, 0xb9, 0xbf, 0xaf, 0xd8, 0x98, 0xf7, 0x25, 0x5f, 0x1d, 0x0a, 0xa6, - 0x81, 0xb7, 0x09, 0x99, 0xf5, 0x0c, 0xda, 0x86, 0x05, 0xdb, 0x51, 0x3a, 0xba, 0xd1, 0x91, 0xbd, - 0x2d, 0x7e, 0xea, 0x59, 0x4c, 0x89, 0x04, 0x4a, 0x9c, 0xdb, 0xa3, 0x87, 0x5c, 0x8a, 0x3f, 0x11, - 0x60, 0x61, 0x45, 0xeb, 0xe9, 0x46, 0xab, 0xdf, 0xd5, 0x63, 0xdd, 0x60, 0x78, 0x1b, 0x32, 0x36, - 0x91, 0xe9, 0x5b, 0x67, 0x1f, 0x2e, 0xa6, 0x69, 0x0e, 0x31, 0xd3, 0x4f, 0xa0, 0x88, 0x8f, 0xfb, - 0x3a, 0x7b, 0xaf, 0xc0, 0x50, 0x4e, 0x6a, 0xfa, 0xb6, 0x15, 0x7c, 0x5e, 0x92, 0xc5, 0xdb, 0xf4, - 0x19, 0xa0, 0x60, 0x93, 0xe2, 0x04, 0x1a, 0x9f, 0xc1, 0x22, 0x15, 0xbd, 0x63, 0xd8, 0x31, 0xeb, - 0x4b, 0xfc, 0x45, 0xb8, 0x14, 0x16, 0x1d, 0x67, 0xbd, 0x5f, 0xf0, 0x5e, 0xde, 0xc4, 0x56, 0xac, - 0x08, 0xd5, 0xd3, 0x35, 0x17, 0x1c, 0x67, 0x9d, 0x7f, 0x4d, 0x80, 0xd7, 0xa8, 0x6c, 0xfa, 0xea, - 0x65, 0x0f, 0x5b, 0x4f, 0xb0, 0x62, 0xc7, 0x0a, 0xaf, 0xdf, 0x82, 0x39, 0x06, 0x93, 0xe9, 0xf8, - 0x9c, 0x5d, 0xcd, 0x12, 0x37, 0xa3, 0xe5, 0x98, 0x16, 0x71, 0x33, 0x78, 0x96, 0xa8, 0x40, 0x25, - 0xaa, 0x16, 0x71, 0xb6, 0xf4, 0xef, 0x0a, 0xb0, 0xc0, 0x3d, 0x3c, 0x32, 0x94, 0x6b, 0xfb, 0xc4, - 0xc1, 0x41, 0x75, 0xc8, 0xaa, 0xf4, 0x97, 0xec, 0x9c, 0xf4, 0x31, 0x95, 0x5f, 0x98, 0xe4, 0x1c, - 0x32, 0xb6, 0xf6, 0x49, 0x1f, 0x13, 0x0f, 0xd3, 0xfd, 0x4d, 0x14, 0x15, 0x68, 0xe4, 0x44, 0xf7, - 0x92, 0xce, 0x23, 0x5a, 0xd6, 0xf5, 0xd3, 0xb8, 0x0e, 0xfe, 0x49, 0x92, 0x2b, 0x81, 0x3d, 0x83, - 0x17, 0x8f, 0xd5, 0xa1, 0xf8, 0x1c, 0xae, 0x04, 0xb6, 0xce, 0x83, 0x0d, 0x4f, 0x5c, 0xa0, 0xe1, - 0x81, 0xed, 0x77, 0x9f, 0x8a, 0x3e, 0x83, 0xc0, 0x06, 0xbb, 0xcc, 0xda, 0xe4, 0x42, 0x95, 0x8b, - 0xa8, 0x63, 0xc1, 0x97, 0xc2, 0xe8, 0x36, 0xaa, 0x41, 0x1a, 0x1f, 0xf7, 0x65, 0x0d, 0xdb, 0x2a, - 0x37, 0x5c, 0x62, 0x94, 0x40, 0x52, 0x95, 0x11, 0xe7, 0x7d, 0x1e, 0x1f, 0xf7, 0x09, 0x11, 0xed, - 0x90, 0x75, 0xd3, 0x5d, 0xd7, 0x69, 0xb5, 0xed, 0xf3, 0xb1, 0x80, 0x3f, 0x52, 0xb8, 0xb8, 0xa2, - 0xb7, 0xa4, 0x33, 0x11, 0xe2, 0x0f, 0x05, 0x78, 0x3d, 0xb2, 0xd7, 0xe2, 0x5c, 0xc8, 0x3e, 0x81, - 0x14, 0x6d, 0x7c, 0xe2, 0x82, 0x8d, 0xa7, 0x5c, 0xe2, 0x77, 0x13, 0x7c, 0x8e, 0x4b, 0xb8, 0x6b, - 0x12, 0xc5, 0xc6, 0xbe, 0x85, 0xf6, 0x14, 0xf2, 0x87, 0xa6, 0x83, 0x2d, 0xaf, 0xdb, 0x13, 0x17, - 0xee, 0xf6, 0x1c, 0x15, 0xe0, 0xf6, 0xf8, 0x73, 0x58, 0x30, 0x4c, 0x43, 0x0e, 0x0b, 0xbd, 0xf8, - 0x58, 0x2a, 0x1a, 0xa6, 0xf1, 0x3c, 0x20, 0xd7, 0xb3, 0x33, 0x43, 0x9a, 0x88, 0xd3, 0xce, 0x7c, - 0x4f, 0x80, 0x45, 0xcf, 0xd3, 0x89, 0xd9, 0xdd, 0xfd, 0x00, 0x92, 0x86, 0x79, 0x74, 0x91, 0x2d, - 0x4a, 0x52, 0x9e, 0xac, 0x7a, 0xe1, 0x1a, 0xc5, 0xd9, 0xde, 0x7f, 0x93, 0x80, 0xcc, 0xe3, 0x5a, - 0x9c, 0xad, 0xfc, 0x84, 0x6f, 0x7f, 0xb3, 0xfe, 0x8e, 0x1a, 0xed, 0xde, 0xf3, 0xaa, 0x8f, 0x6b, - 0x1b, 0xf8, 0xc4, 0x1d, 0xed, 0x84, 0x0b, 0xad, 0x40, 0x26, 0xbc, 0x51, 0x3a, 0xa5, 0xa6, 0x7c, - 0xae, 0x0a, 0x86, 0x59, 0x2a, 0xd7, 0x0d, 0xb5, 0x10, 0x22, 0x42, 0x2d, 0xc8, 0x63, 0x3c, 0x4f, - 0x31, 0x71, 0x91, 0xc7, 0x04, 0x5c, 0xc4, 0xd9, 0xd2, 0x9c, 0xf8, 0x0c, 0x80, 0x34, 0x27, 0xce, - 0x2e, 0xf9, 0xf5, 0x24, 0x14, 0xb6, 0x07, 0xf6, 0x7e, 0xcc, 0xa3, 0xaf, 0x06, 0xd0, 0x1f, 0xd8, - 0xfb, 0x64, 0x46, 0x1e, 0x1b, 0xbc, 0xcd, 0xe7, 0x44, 0x71, 0xb8, 0x8d, 0x66, 0x7c, 0xed, 0x63, - 0x03, 0x35, 0xb8, 0x10, 0x2c, 0xfb, 0xa1, 0x20, 0x6f, 0x4d, 0x42, 0x96, 0xed, 0x63, 0x63, 0x13, - 0x7b, 0x90, 0x92, 0x49, 0xc2, 0x44, 0xd2, 0x27, 0x30, 0x4f, 0x12, 0xb2, 0x63, 0x5e, 0xa4, 0x9b, - 0xe7, 0x08, 0x4f, 0xdb, 0x44, 0x0f, 0x21, 0xc3, 0xb8, 0xc9, 0xea, 0x37, 0x47, 0x57, 0xbf, 0xa8, - 0xb6, 0x70, 0x35, 0xd2, 0x75, 0x2f, 0x4d, 0x59, 0xc9, 0x5a, 0x77, 0x09, 0x66, 0xf7, 0x4c, 0x4b, - 0x75, 0x5f, 0xe6, 0xb2, 0x04, 0xeb, 0x4f, 0x06, 0x69, 0xd6, 0x53, 0xe9, 0x4c, 0x09, 0xc4, 0xdf, - 0x16, 0xa0, 0xe8, 0x75, 0x44, 0x9c, 0x0b, 0x42, 0x2d, 0xa4, 0xc5, 0x8b, 0x77, 0x05, 0x51, 0xa0, - 0xf8, 0xef, 0xa8, 0x47, 0xa4, 0x9a, 0x87, 0xb4, 0x67, 0xe2, 0x1c, 0x29, 0x0f, 0x59, 0xa0, 0x4f, - 0xe2, 0xa2, 0xbd, 0x4b, 0x63, 0x7e, 0xee, 0xc1, 0x25, 0xbd, 0x47, 0xec, 0xb9, 0xee, 0x74, 0x4f, - 0x38, 0x6c, 0x73, 0xb0, 0xfb, 0xd6, 0x78, 0xd1, 0xcf, 0xab, 0xb9, 0x59, 0xe2, 0xef, 0xd1, 0xdd, - 0x6a, 0xbf, 0x25, 0x71, 0xaa, 0xba, 0x09, 0x79, 0x8b, 0x89, 0x26, 0x6e, 0xcd, 0x05, 0xb5, 0x9d, - 0xf3, 0x58, 0x89, 0xc2, 0x7f, 0x37, 0x01, 0xc5, 0x67, 0x03, 0x6c, 0x9d, 0x7c, 0x9d, 0xd4, 0x7d, - 0x0b, 0x8a, 0x47, 0x8a, 0xee, 0xc8, 0x7b, 0xa6, 0x25, 0x0f, 0xfa, 0x9a, 0xe2, 0xb8, 0xd1, 0x26, - 0x79, 0x42, 0x7e, 0x64, 0x5a, 0x3b, 0x94, 0x88, 0x30, 0xa0, 0x03, 0xc3, 0x3c, 0x32, 0x64, 0x42, - 0xa6, 0x40, 0xf9, 0xd8, 0xe0, 0x5b, 0xc8, 0xab, 0x1f, 0xfe, 0xa7, 0xd3, 0xa5, 0x07, 0x53, 0xc5, - 0x90, 0xd1, 0x78, 0xb9, 0xc1, 0x40, 0xd7, 0xaa, 0x3b, 0x3b, 0xcd, 0x35, 0xa9, 0x44, 0x45, 0xbe, - 0x60, 0x12, 0xdb, 0xc7, 0x86, 0x2d, 0xfe, 0xfd, 0x04, 0x94, 0x7c, 0x1d, 0xc5, 0xd9, 0x91, 0x75, - 0xc8, 0xbe, 0x1c, 0x60, 0x4b, 0x7f, 0x85, 0x6e, 0x04, 0xce, 0x48, 0xcc, 0xce, 0x5d, 0x58, 0x70, - 0x8e, 0x0d, 0x99, 0x45, 0xf8, 0xb1, 0xc0, 0x0f, 0x37, 0x60, 0xa1, 0xe8, 0x90, 0x3a, 0x13, 0x3a, - 0x0d, 0xfa, 0xb0, 0xd1, 0xe7, 0x90, 0x0b, 0x69, 0x2b, 0xf9, 0xd5, 0xb4, 0x95, 0x3d, 0x0a, 0x28, - 0xea, 0x0f, 0x05, 0x40, 0x54, 0x51, 0x4d, 0xb6, 0xc7, 0xff, 0x75, 0x19, 0x4f, 0x77, 0xa0, 0x44, - 0xe3, 0x31, 0x65, 0x7d, 0x4f, 0xee, 0xe9, 0xb6, 0xad, 0x1b, 0x1d, 0x3e, 0xa0, 0x0a, 0x94, 0xde, - 0xdc, 0xdb, 0x64, 0x54, 0xf1, 0x6f, 0xc0, 0x62, 0xa8, 0x01, 0x71, 0x76, 0xf6, 0x0d, 0xc8, 0xed, - 0xb1, 0x57, 0xb0, 0x54, 0x38, 0xdf, 0x1e, 0xcc, 0x52, 0x1a, 0x7b, 0x9e, 0xf8, 0x17, 0x09, 0xb8, - 0x24, 0x61, 0xdb, 0xec, 0x1e, 0xe2, 0xf8, 0x55, 0xd8, 0x00, 0xfe, 0xee, 0x45, 0x7e, 0x25, 0x4d, - 0x66, 0x18, 0x33, 0x5b, 0xe6, 0xc2, 0x7b, 0xec, 0x6f, 0x4f, 0x1e, 0xb1, 0xa3, 0xbb, 0xea, 0x7c, - 0xa7, 0x2e, 0x15, 0xda, 0xa9, 0x33, 0xa1, 0xc8, 0xde, 0x1e, 0x6b, 0xb2, 0x8d, 0x5f, 0x1a, 0x83, - 0x9e, 0x0b, 0x86, 0xaa, 0x93, 0x2a, 0xd9, 0x64, 0x2c, 0x2d, 0xfc, 0x72, 0x6b, 0xd0, 0xa3, 0xbe, - 0xf3, 0xea, 0x15, 0x52, 0xdf, 0xb3, 0xd3, 0xa5, 0x42, 0x28, 0xcf, 0x96, 0x0a, 0xba, 0x97, 0x26, - 0xd2, 0xc5, 0x6f, 0xc3, 0xe5, 0x21, 0x65, 0xc7, 0xe9, 0xf1, 0xfc, 0xab, 0x24, 0xbc, 0x16, 0x16, - 0x1f, 0x37, 0xc4, 0xf9, 0xba, 0x77, 0x68, 0x03, 0xf2, 0x3d, 0xdd, 0x78, 0xb5, 0xdd, 0xcb, 0x5c, - 0x4f, 0x37, 0x3c, 0x5a, 0xd4, 0xd0, 0x98, 0xfb, 0x99, 0x0e, 0x0d, 0x05, 0x2a, 0x51, 0x7d, 0x17, - 0xe7, 0xf8, 0xf8, 0xae, 0x00, 0xb9, 0xb8, 0xb7, 0xe5, 0x5e, 0x2d, 0x0a, 0x4e, 0x6c, 0x43, 0xfe, - 0x67, 0xb0, 0x8f, 0xf7, 0xbb, 0x02, 0xa0, 0xb6, 0x35, 0x30, 0x08, 0xa8, 0x7d, 0x62, 0x76, 0xe2, - 0x6c, 0xe6, 0x25, 0x98, 0xd5, 0x0d, 0x0d, 0x1f, 0xd3, 0x66, 0xa6, 0x24, 0x96, 0x08, 0xbd, 0x4a, - 0x4c, 0x4e, 0xf5, 0x2a, 0x51, 0xfc, 0x1c, 0x16, 0x43, 0x55, 0x8c, 0xb3, 0xfd, 0xff, 0x3d, 0x01, - 0x8b, 0xbc, 0x21, 0xb1, 0xef, 0x60, 0x7e, 0x13, 0x66, 0xbb, 0x44, 0xe6, 0x84, 0x7e, 0xa6, 0xcf, - 0x74, 0xfb, 0x99, 0x16, 0x46, 0x3f, 0x0f, 0xd0, 0xb7, 0xf0, 0xa1, 0xcc, 0x58, 0x93, 0x53, 0xb1, - 0x66, 0x08, 0x07, 0x25, 0xa0, 0xef, 0x0b, 0x50, 0x24, 0x13, 0xba, 0x6f, 0x99, 0x7d, 0xd3, 0x26, - 0x3e, 0x8b, 0x3d, 0x1d, 0xcc, 0x79, 0x76, 0x76, 0xba, 0x94, 0xdf, 0xd4, 0x8d, 0x6d, 0xce, 0xd8, - 0x6e, 0x4d, 0x1d, 0xe0, 0xef, 0x1e, 0x73, 0xa8, 0xd6, 0xba, 0xa6, 0x7a, 0xe0, 0xbf, 0x1c, 0x23, - 0x96, 0xc5, 0x13, 0x67, 0x8b, 0x7f, 0x2c, 0xc0, 0xa5, 0x9f, 0xd9, 0x76, 0xf1, 0xff, 0x0f, 0x65, - 0x8b, 0xcf, 0xa1, 0x44, 0x7f, 0x34, 0x8d, 0x3d, 0x33, 0xce, 0x8d, 0xfb, 0xff, 0x2d, 0xc0, 0x42, - 0x40, 0x70, 0x9c, 0x0e, 0xce, 0xab, 0xea, 0x29, 0xcf, 0xc2, 0x61, 0x9c, 0xe9, 0x54, 0x25, 0xe5, - 0x78, 0x71, 0x36, 0x28, 0xab, 0x90, 0xc3, 0xc4, 0x8a, 0xd1, 0x2d, 0xde, 0x5d, 0x76, 0xc8, 0x64, - 0x68, 0x47, 0x3f, 0xeb, 0x15, 0x58, 0x3d, 0x11, 0x7f, 0x91, 0x78, 0x58, 0xc1, 0x49, 0x19, 0xe7, - 0x94, 0xff, 0xe7, 0x09, 0xb8, 0x52, 0x63, 0xaf, 0xc0, 0xdd, 0x98, 0x90, 0x38, 0x07, 0x62, 0x19, - 0xe6, 0x0f, 0xb1, 0x65, 0xeb, 0x26, 0x5b, 0xed, 0xf3, 0x92, 0x9b, 0x44, 0x15, 0x48, 0xdb, 0x86, - 0xd2, 0xb7, 0xf7, 0x4d, 0xf7, 0x75, 0xa2, 0x97, 0xf6, 0xe2, 0x57, 0x66, 0x5f, 0x3d, 0x7e, 0x65, - 0x6e, 0x72, 0xfc, 0xca, 0xfc, 0x57, 0x88, 0x5f, 0xe1, 0xef, 0xee, 0xfe, 0xbd, 0x00, 0x57, 0x47, - 0x34, 0x17, 0xe7, 0xe0, 0xfc, 0x0e, 0x64, 0x55, 0x2e, 0x98, 0xac, 0x0f, 0xec, 0xc5, 0x64, 0x93, - 0x14, 0x7b, 0x45, 0xe8, 0x73, 0x76, 0xba, 0x04, 0x6e, 0x55, 0x9b, 0x6b, 0x5c, 0x39, 0xe4, 0xb7, - 0x26, 0xfe, 0x6a, 0x1e, 0x8a, 0xf5, 0x63, 0xb6, 0x29, 0xdf, 0x62, 0x5e, 0x09, 0x7a, 0x04, 0xe9, - 0xbe, 0x65, 0x1e, 0xea, 0x6e, 0x33, 0x0a, 0xa1, 0xe0, 0x05, 0xb7, 0x19, 0x43, 0x5c, 0xdb, 0x9c, - 0x43, 0xf2, 0x78, 0x51, 0x1b, 0x32, 0x4f, 0x4c, 0x55, 0xe9, 0x3e, 0xd2, 0xbb, 0xee, 0x44, 0x7b, - 0xff, 0x7c, 0x41, 0x55, 0x8f, 0x67, 0x5b, 0x71, 0xf6, 0xdd, 0x4e, 0xf0, 0x88, 0xa8, 0x09, 0xe9, - 0x86, 0xe3, 0xf4, 0x49, 0x26, 0x9f, 0x7f, 0xb7, 0xa7, 0x10, 0x4a, 0x58, 0xdc, 0x88, 0x5b, 0x97, - 0x1d, 0xb5, 0x61, 0xe1, 0x31, 0x3d, 0x3f, 0x56, 0xeb, 0x9a, 0x03, 0xad, 0x66, 0x1a, 0x7b, 0x7a, - 0x87, 0x2f, 0x13, 0xb7, 0xa6, 0x90, 0xf9, 0xb8, 0xd6, 0x92, 0x46, 0x05, 0xa0, 0x15, 0x48, 0xb7, - 0x1e, 0x70, 0x61, 0xcc, 0x8d, 0xbc, 0x39, 0x85, 0xb0, 0xd6, 0x03, 0xc9, 0x63, 0x43, 0xeb, 0x90, - 0x5d, 0xf9, 0x62, 0x60, 0x61, 0x2e, 0x65, 0x6e, 0x6c, 0xe4, 0xc4, 0xb0, 0x14, 0xca, 0x25, 0x05, - 0x99, 0x51, 0x0b, 0x0a, 0x2f, 0x4c, 0xeb, 0xa0, 0x6b, 0x2a, 0x6e, 0x0b, 0xe7, 0xa9, 0xb8, 0x6f, - 0x4c, 0x21, 0xce, 0x65, 0x94, 0x86, 0x44, 0xa0, 0x6f, 0x43, 0x91, 0x74, 0x46, 0x5b, 0xd9, 0xed, - 0xba, 0x95, 0x4c, 0x53, 0xa9, 0xef, 0x4e, 0x21, 0xd5, 0xe3, 0x74, 0xdf, 0x33, 0x0c, 0x89, 0xaa, - 0x48, 0x90, 0x0f, 0x0d, 0x02, 0x84, 0x20, 0xd5, 0x27, 0xfd, 0x2d, 0xd0, 0xd8, 0x26, 0xfa, 0x1b, - 0xbd, 0x07, 0xf3, 0x86, 0xa9, 0x61, 0x77, 0x86, 0xe4, 0x57, 0x2f, 0x9d, 0x9d, 0x2e, 0xcd, 0x6d, - 0x99, 0x1a, 0x73, 0xa0, 0xf8, 0x2f, 0x69, 0x8e, 0x14, 0x6a, 0x6a, 0x95, 0xeb, 0x90, 0x22, 0xfd, - 0x4e, 0x0c, 0xd3, 0xae, 0x62, 0xe3, 0x1d, 0x4b, 0xe7, 0xd2, 0xdc, 0x64, 0xe5, 0x1f, 0x25, 0x20, - 0xd1, 0x7a, 0x40, 0x20, 0xc2, 0xee, 0x40, 0x3d, 0xc0, 0x0e, 0xcf, 0xe7, 0x29, 0x0a, 0x1d, 0x2c, - 0xbc, 0xa7, 0x33, 0x4f, 0x2e, 0x23, 0xf1, 0x14, 0x7a, 0x13, 0x40, 0x51, 0x55, 0x6c, 0xdb, 0xb2, - 0x7b, 0xae, 0x30, 0x23, 0x65, 0x18, 0x65, 0x03, 0x9f, 0x10, 0x36, 0x1b, 0xab, 0x16, 0x76, 0xdc, - 0xc0, 0x2c, 0x96, 0x22, 0x6c, 0x0e, 0xee, 0xf5, 0x65, 0xc7, 0x3c, 0xc0, 0x06, 0x1d, 0x27, 0x19, - 0x62, 0x6a, 0x7a, 0xfd, 0x36, 0x21, 0x10, 0x2b, 0x89, 0x0d, 0xcd, 0x37, 0x69, 0x19, 0xc9, 0x4b, - 0x13, 0x91, 0x16, 0xee, 0xe8, 0xfc, 0x54, 0x5e, 0x46, 0xe2, 0x29, 0xa2, 0x25, 0x65, 0xe0, 0xec, - 0xd3, 0x9e, 0xc8, 0x48, 0xf4, 0x37, 0xba, 0x05, 0x45, 0x16, 0xcb, 0x29, 0x63, 0x43, 0x95, 0xa9, - 0x71, 0xcd, 0xd0, 0xec, 0x3c, 0x23, 0xd7, 0x0d, 0x95, 0x98, 0x52, 0xf4, 0x00, 0x38, 0x41, 0x3e, - 0xe8, 0xd9, 0x44, 0xa7, 0x40, 0x4a, 0xad, 0x16, 0xcf, 0x4e, 0x97, 0xb2, 0x2d, 0x9a, 0xb1, 0xb1, - 0xd9, 0x22, 0x0b, 0x14, 0x2b, 0xb5, 0xd1, 0xb3, 0x9b, 0x5a, 0xe5, 0x37, 0x05, 0x48, 0x3e, 0xae, - 0xb5, 0x2e, 0xac, 0x32, 0xb7, 0xa2, 0xc9, 0x40, 0x45, 0x6f, 0x43, 0x71, 0x57, 0xef, 0x76, 0x75, - 0xa3, 0x43, 0x9c, 0xb6, 0xef, 0x60, 0xd5, 0x55, 0x58, 0x81, 0x93, 0xb7, 0x19, 0x15, 0x5d, 0x87, - 0xac, 0x6a, 0x61, 0x0d, 0x1b, 0x8e, 0xae, 0x74, 0x6d, 0xae, 0xb9, 0x20, 0xa9, 0xf2, 0x2b, 0x02, - 0xcc, 0xd2, 0x19, 0x80, 0xde, 0x80, 0x8c, 0x6a, 0x1a, 0x8e, 0xa2, 0x1b, 0xdc, 0x94, 0x65, 0x24, - 0x9f, 0x30, 0xb6, 0x7a, 0x37, 0x20, 0xa7, 0xa8, 0xaa, 0x39, 0x30, 0x1c, 0xd9, 0x50, 0x7a, 0x98, - 0x57, 0x33, 0xcb, 0x69, 0x5b, 0x4a, 0x0f, 0xa3, 0x25, 0x70, 0x93, 0xde, 0x71, 0xd1, 0x8c, 0x04, - 0x9c, 0xb4, 0x81, 0x4f, 0x2a, 0xff, 0x56, 0x80, 0xb4, 0x3b, 0x67, 0x48, 0x35, 0x3a, 0xd8, 0x60, - 0x01, 0xea, 0x6e, 0x35, 0x3c, 0xc2, 0xf0, 0x52, 0x99, 0xf1, 0x97, 0xca, 0x4b, 0x30, 0xeb, 0x90, - 0x69, 0xc1, 0x6b, 0xc0, 0x12, 0x74, 0xfb, 0xbc, 0xab, 0x74, 0xd8, 0xee, 0x61, 0x46, 0x62, 0x09, - 0xd2, 0x18, 0x1e, 0x12, 0xcc, 0x34, 0xc2, 0x53, 0xa4, 0xa6, 0x2c, 0x70, 0x75, 0x17, 0x77, 0x74, - 0x83, 0x8e, 0xa5, 0xa4, 0x04, 0x94, 0xb4, 0x4a, 0x28, 0xe8, 0x75, 0xc8, 0xb0, 0x02, 0xd8, 0xd0, - 0xe8, 0x80, 0x4a, 0x4a, 0x69, 0x4a, 0xa8, 0x1b, 0x5a, 0x05, 0x43, 0xc6, 0x9b, 0x9c, 0xa4, 0xdb, - 0x06, 0xb6, 0xa7, 0x48, 0xfa, 0x1b, 0xbd, 0x0f, 0x97, 0x5e, 0x0e, 0x94, 0xae, 0xbe, 0x47, 0x37, - 0x06, 0x69, 0x04, 0x3f, 0xd5, 0x19, 0x6b, 0x09, 0xf2, 0xf2, 0xa8, 0x04, 0xaa, 0x3a, 0x77, 0x2e, - 0x27, 0xfd, 0xb9, 0x2c, 0xfe, 0xbe, 0x00, 0x0b, 0x2c, 0xc4, 0x8a, 0x05, 0xd3, 0xc6, 0xe7, 0x87, - 0x7c, 0x0c, 0x19, 0x4d, 0x71, 0x14, 0x76, 0x00, 0x36, 0x31, 0xf1, 0x00, 0xac, 0x77, 0x20, 0x43, - 0x71, 0x14, 0x7a, 0x08, 0x16, 0x41, 0x8a, 0xfc, 0x66, 0x67, 0x85, 0x25, 0xfa, 0x5b, 0xfc, 0x0c, - 0x50, 0xb0, 0xa2, 0x71, 0x7a, 0x64, 0xef, 0xc0, 0x65, 0xa2, 0xeb, 0xba, 0xa1, 0x5a, 0x27, 0x7d, - 0x47, 0x37, 0x8d, 0xa7, 0xf4, 0xaf, 0x8d, 0x4a, 0x81, 0xf7, 0x68, 0xf4, 0xf5, 0x99, 0xf8, 0x07, - 0x73, 0x90, 0xaf, 0x1f, 0xf7, 0x4d, 0x2b, 0xd6, 0x5d, 0xb7, 0x55, 0x98, 0xe7, 0x1b, 0x13, 0x13, - 0x5e, 0x95, 0x0f, 0x19, 0x73, 0x37, 0x4e, 0x80, 0x33, 0xa2, 0x55, 0x00, 0x16, 0xf0, 0x4a, 0xe3, - 0xa4, 0x92, 0x17, 0x78, 0xb3, 0x47, 0xd9, 0xe8, 0x61, 0x90, 0x2d, 0xc8, 0xf6, 0x0e, 0x55, 0x55, - 0xde, 0xd3, 0xbb, 0x0e, 0x8f, 0x1b, 0x8c, 0x0e, 0x71, 0xdf, 0x7c, 0x5e, 0xab, 0x3d, 0xa2, 0x85, - 0x58, 0xbc, 0x9d, 0x9f, 0x96, 0x80, 0x48, 0x60, 0xbf, 0xd1, 0xbb, 0xc0, 0x0f, 0x26, 0xc9, 0xb6, - 0x7b, 0xcc, 0x70, 0x35, 0x7f, 0x76, 0xba, 0x94, 0x91, 0x28, 0xb5, 0xd5, 0x6a, 0x4b, 0x19, 0x56, - 0xa0, 0x65, 0x3b, 0xe8, 0x2d, 0xc8, 0x9b, 0x3d, 0xdd, 0x91, 0x5d, 0x27, 0x89, 0x7b, 0x94, 0x39, - 0x42, 0x74, 0x9d, 0xa8, 0x8b, 0x9c, 0x57, 0x99, 0x9f, 0xfe, 0xbc, 0xca, 0xdf, 0x12, 0xe0, 0x0a, - 0x57, 0xa4, 0xbc, 0x4b, 0x63, 0xf4, 0x95, 0xae, 0xee, 0x9c, 0xc8, 0x07, 0x87, 0xe5, 0x34, 0xf5, - 0x5b, 0x7f, 0x2e, 0xb2, 0x43, 0x02, 0xe3, 0xa0, 0xea, 0x76, 0xcb, 0xc9, 0x13, 0xce, 0xbc, 0x71, - 0x58, 0x37, 0x1c, 0xeb, 0x64, 0xf5, 0xea, 0xd9, 0xe9, 0xd2, 0xe2, 0x68, 0xee, 0x73, 0x69, 0xd1, - 0x1e, 0x65, 0x41, 0x0d, 0x00, 0xec, 0x8d, 0x43, 0xba, 0x62, 0x44, 0xfb, 0x1f, 0x91, 0x03, 0x56, - 0x0a, 0xf0, 0xa2, 0x3b, 0x50, 0xe2, 0xe7, 0x83, 0xf6, 0xf4, 0x2e, 0x96, 0x6d, 0xfd, 0x0b, 0x4c, - 0xd7, 0x96, 0xa4, 0x54, 0x60, 0x74, 0x22, 0xa2, 0xa5, 0x7f, 0x81, 0x2b, 0xdf, 0x81, 0xf2, 0xb8, - 0xda, 0x07, 0xa7, 0x40, 0x86, 0xbd, 0x41, 0xfe, 0x28, 0xbc, 0x7d, 0x34, 0xc5, 0x50, 0xe5, 0x5b, - 0x48, 0x1f, 0x27, 0x3e, 0x12, 0xc4, 0x7f, 0x90, 0x80, 0xfc, 0xea, 0xa0, 0x7b, 0xf0, 0xb4, 0xdf, - 0x62, 0x17, 0x25, 0x10, 0x33, 0xc8, 0x0c, 0x05, 0xa9, 0xa0, 0xc0, 0xcc, 0x20, 0xb5, 0x04, 0xfa, - 0x17, 0x98, 0x2c, 0x4e, 0x81, 0xe8, 0x1c, 0x7e, 0x06, 0x81, 0xb6, 0xc1, 0x27, 0xd3, 0x63, 0x02, - 0x1f, 0x41, 0x39, 0x50, 0x90, 0xee, 0xf5, 0xc8, 0xd8, 0x70, 0x2c, 0x1d, 0xb3, 0xfd, 0xca, 0xa4, - 0x14, 0x08, 0x21, 0x6a, 0x92, 0xec, 0x3a, 0xcb, 0x45, 0x6d, 0xc8, 0x91, 0x82, 0x27, 0x32, 0x5d, - 0x42, 0xdc, 0xfd, 0xe4, 0x7b, 0x11, 0xcd, 0x0a, 0xd5, 0xbb, 0x4a, 0xf5, 0x53, 0xa3, 0x3c, 0xf4, - 0xa7, 0x94, 0xc5, 0x3e, 0xa5, 0xf2, 0x29, 0x94, 0x86, 0x0b, 0x04, 0x75, 0x99, 0x62, 0xba, 0xbc, - 0x14, 0xd4, 0x65, 0x32, 0xa0, 0xa7, 0xf5, 0x54, 0x3a, 0x55, 0x9a, 0x15, 0xff, 0x3c, 0x09, 0x05, - 0x77, 0x98, 0xc5, 0x09, 0x74, 0x56, 0x61, 0x96, 0x0c, 0x0a, 0x37, 0xe0, 0xe5, 0xd6, 0x84, 0xd1, - 0xcd, 0xa3, 0xde, 0xc9, 0x60, 0x71, 0x31, 0x39, 0x65, 0x8d, 0xc3, 0xe0, 0x54, 0x7e, 0x25, 0x01, - 0x29, 0x8a, 0x2d, 0xee, 0x41, 0x8a, 0x2e, 0x14, 0xc2, 0x34, 0x0b, 0x05, 0x2d, 0xea, 0x2d, 0x67, - 0x89, 0x80, 0x6b, 0x4a, 0x7c, 0xbe, 0x7d, 0xe5, 0x83, 0x7b, 0xf7, 0xa9, 0xb1, 0xc9, 0x49, 0x3c, - 0x85, 0x56, 0x69, 0x24, 0x96, 0x69, 0x39, 0x58, 0xe3, 0x3e, 0xfd, 0xf5, 0xf3, 0xfa, 0xd7, 0x5d, - 0x94, 0x5c, 0x3e, 0xf4, 0x1a, 0x24, 0x89, 0x15, 0x9b, 0x67, 0x41, 0x15, 0x67, 0xa7, 0x4b, 0x49, - 0x62, 0xbf, 0x08, 0x0d, 0x2d, 0x43, 0x36, 0x6c, 0x32, 0x88, 0x07, 0x47, 0x0d, 0x63, 0x60, 0xba, - 0x43, 0xd7, 0x9b, 0x5a, 0x0c, 0xcf, 0xf2, 0x3e, 0xfe, 0x1f, 0x29, 0xc8, 0x37, 0x7b, 0x71, 0x2f, - 0x29, 0x2b, 0xe1, 0x1e, 0x8e, 0x02, 0x42, 0xa1, 0x87, 0x46, 0x74, 0x70, 0x68, 0x05, 0x4f, 0x5e, - 0x6c, 0x05, 0xff, 0x94, 0x7a, 0xd1, 0x6c, 0x68, 0xcc, 0x4d, 0x3f, 0x34, 0xe6, 0xb1, 0xa1, 0xd1, - 0x95, 0xa8, 0x49, 0x3c, 0x6d, 0x7e, 0x5f, 0x45, 0x72, 0x0c, 0x66, 0x0a, 0xd7, 0x9f, 0xfa, 0x39, - 0x12, 0xe1, 0xf1, 0xcf, 0x91, 0xd0, 0xc0, 0x9a, 0xb0, 0x45, 0x9d, 0x7f, 0x75, 0x8b, 0x5a, 0x71, - 0xf8, 0x60, 0xfd, 0x18, 0x92, 0x9a, 0xee, 0x76, 0xce, 0xf4, 0x4b, 0x35, 0x61, 0x3a, 0x67, 0xd4, - 0xa6, 0x82, 0xa3, 0x96, 0x8d, 0x92, 0x4a, 0x13, 0xc0, 0x6f, 0x1b, 0xba, 0x0e, 0x73, 0x66, 0x57, - 0x73, 0x0f, 0xc2, 0xe4, 0x57, 0x33, 0x67, 0xa7, 0x4b, 0xb3, 0x4f, 0xbb, 0x5a, 0x73, 0x4d, 0x9a, - 0x35, 0xbb, 0x5a, 0x53, 0xa3, 0x97, 0x7d, 0xe0, 0x23, 0xd9, 0x0b, 0xbc, 0xcb, 0x49, 0xf3, 0x06, - 0x3e, 0x5a, 0xc3, 0xb6, 0xca, 0x07, 0xdc, 0xef, 0x08, 0x50, 0x70, 0x75, 0x17, 0xaf, 0x51, 0x49, - 0xeb, 0x3d, 0x3e, 0xc9, 0x92, 0x17, 0x9b, 0x64, 0x2e, 0x1f, 0x3f, 0xa4, 0xfc, 0x6b, 0x02, 0x0f, - 0xa5, 0x6e, 0xa9, 0x8a, 0x43, 0x9c, 0x8a, 0x18, 0x27, 0xc6, 0x3b, 0x50, 0xb2, 0x14, 0x43, 0x33, - 0x7b, 0xfa, 0x17, 0x98, 0x6d, 0x26, 0xda, 0xfc, 0x2d, 0x6b, 0xd1, 0xa3, 0xd3, 0x5d, 0x3f, 0x5b, - 0xfc, 0x6f, 0x02, 0x0f, 0xbb, 0xf6, 0xaa, 0x11, 0x6f, 0x2c, 0x4c, 0x96, 0xbf, 0x89, 0x30, 0xf6, - 0x4c, 0x37, 0x6a, 0xec, 0x8d, 0x71, 0x31, 0x92, 0x4d, 0x63, 0xcf, 0x74, 0xdf, 0xea, 0x5b, 0x2e, - 0xc1, 0xae, 0xfc, 0x02, 0xcc, 0xd2, 0xec, 0x57, 0x30, 0xa0, 0x5e, 0xa8, 0x3f, 0xd1, 0xf8, 0x9f, - 0x25, 0xe0, 0x6d, 0xda, 0xd4, 0xe7, 0xd8, 0xd2, 0xf7, 0x4e, 0xb6, 0x2d, 0xd3, 0xc1, 0xaa, 0x83, - 0x35, 0x7f, 0x33, 0x3d, 0xc6, 0x2e, 0xd0, 0x20, 0xc3, 0xc3, 0x10, 0x74, 0x8d, 0x5f, 0xf8, 0xf3, - 0xf8, 0xab, 0x6d, 0xb2, 0xa5, 0x59, 0xf8, 0x42, 0x73, 0x4d, 0x4a, 0x33, 0xc9, 0x4d, 0x0d, 0xad, - 0x40, 0xa6, 0xef, 0x36, 0xe3, 0x42, 0x91, 0x6e, 0x1e, 0x17, 0xda, 0x80, 0x22, 0xaf, 0xa8, 0xd2, - 0xd5, 0x0f, 0xb1, 0xac, 0x38, 0x17, 0x59, 0xe7, 0xf2, 0x8c, 0x77, 0x85, 0xb0, 0xae, 0x38, 0xe2, - 0xdf, 0x4e, 0xc1, 0xcd, 0x73, 0x54, 0x1c, 0xe7, 0xf0, 0xaa, 0x40, 0xfa, 0x90, 0x3c, 0x48, 0xe7, - 0xad, 0x4f, 0x4b, 0x5e, 0x1a, 0xed, 0x86, 0x9c, 0xa5, 0x3d, 0x45, 0xef, 0x12, 0xe7, 0x8a, 0xc5, - 0x16, 0x8f, 0x8f, 0x5e, 0x8c, 0x8e, 0xd5, 0x0d, 0xb8, 0x55, 0x8f, 0xa8, 0x20, 0x5a, 0xcc, 0x46, - 0xdf, 0x15, 0xa0, 0xc2, 0x1e, 0xc8, 0x02, 0x5c, 0x87, 0x1e, 0x93, 0xa2, 0x8f, 0x59, 0x8b, 0x78, - 0xcc, 0x54, 0x3a, 0xaa, 0x06, 0x9e, 0xc5, 0x2b, 0x52, 0x0e, 0x3e, 0x2d, 0x58, 0x95, 0xca, 0x6f, - 0x09, 0x90, 0x0d, 0x10, 0xd0, 0xad, 0x91, 0xe3, 0x84, 0xd9, 0xb3, 0xa8, 0x33, 0x84, 0x37, 0x47, - 0xce, 0x10, 0xae, 0xa6, 0xbf, 0x3c, 0x5d, 0x4a, 0x49, 0xec, 0x98, 0x8a, 0x7b, 0x9a, 0xf0, 0x86, - 0x7f, 0x7b, 0x55, 0x72, 0xa8, 0x90, 0x7b, 0x7d, 0x15, 0xdd, 0x38, 0x52, 0xdc, 0xb7, 0xdf, 0x74, - 0xe3, 0x88, 0xa4, 0xc4, 0x1f, 0x24, 0x60, 0x61, 0x45, 0xd3, 0x5a, 0x2d, 0x6e, 0xe1, 0xe3, 0x9b, - 0x63, 0x2e, 0x84, 0x4e, 0xf8, 0x10, 0x1a, 0xbd, 0x07, 0x48, 0xd3, 0x6d, 0x76, 0x0b, 0x8c, 0xbd, - 0xaf, 0x68, 0xe6, 0x91, 0x1f, 0xe4, 0xb2, 0xe0, 0xe6, 0xb4, 0xdc, 0x0c, 0xd4, 0x02, 0x8a, 0xe5, - 0x64, 0xdb, 0x51, 0xbc, 0x97, 0x78, 0x37, 0xa7, 0x3a, 0x4c, 0xc7, 0x40, 0x9e, 0x97, 0x94, 0x32, - 0x44, 0x0e, 0xfd, 0x49, 0x50, 0x89, 0x4e, 0x3a, 0xc5, 0x91, 0x15, 0xdb, 0x3d, 0x06, 0xc6, 0xee, - 0x9f, 0x29, 0x30, 0xfa, 0x8a, 0xcd, 0x4e, 0x77, 0xb1, 0xd3, 0x23, 0xbe, 0x6a, 0xe2, 0x04, 0xfc, - 0x7f, 0x4f, 0x80, 0x82, 0x84, 0xf7, 0x2c, 0x6c, 0xc7, 0xba, 0xe5, 0xf1, 0x08, 0x72, 0x16, 0x93, - 0x2a, 0xef, 0x59, 0x66, 0xef, 0x22, 0xb6, 0x22, 0xcb, 0x19, 0x1f, 0x59, 0x66, 0x8f, 0x9b, 0xe4, - 0xe7, 0x50, 0xf4, 0xea, 0x18, 0x67, 0xe3, 0x7f, 0x9f, 0x1e, 0x14, 0x67, 0x82, 0xe3, 0x8e, 0x36, - 0x89, 0x57, 0x03, 0xf4, 0x35, 0x5c, 0xb0, 0xa2, 0x71, 0xaa, 0xe1, 0xbf, 0x0a, 0x50, 0x68, 0x0d, - 0x76, 0xd9, 0xed, 0x66, 0xf1, 0x69, 0xa0, 0x0e, 0x99, 0x2e, 0xde, 0x73, 0xe4, 0x57, 0x3a, 0xf7, - 0x90, 0x26, 0xac, 0xf4, 0xd4, 0xc7, 0x63, 0x00, 0x8b, 0x9e, 0x94, 0xa4, 0x72, 0x92, 0x17, 0x94, - 0x93, 0xa1, 0xbc, 0x84, 0x4c, 0x56, 0x9d, 0xa2, 0xd7, 0xcc, 0x38, 0xd7, 0x97, 0x17, 0x21, 0xeb, - 0x90, 0xbc, 0x88, 0x75, 0x58, 0xe0, 0x01, 0x36, 0xd1, 0x16, 0xa2, 0x0a, 0x8b, 0xd4, 0x2d, 0x93, - 0x95, 0x7e, 0xbf, 0xab, 0xbb, 0x60, 0x9e, 0xda, 0x9f, 0x94, 0xb4, 0x40, 0xb3, 0x56, 0x58, 0x0e, - 0x85, 0xf1, 0xe8, 0xd7, 0x05, 0xc8, 0xed, 0x59, 0x18, 0x7f, 0x81, 0x65, 0x6a, 0x92, 0xa7, 0x8b, - 0x20, 0x5a, 0x23, 0x75, 0xf8, 0xca, 0x11, 0x06, 0x59, 0xf6, 0xe0, 0x16, 0x79, 0x2e, 0xda, 0x82, - 0x92, 0xda, 0x65, 0x31, 0x0f, 0x5e, 0x34, 0xd3, 0x05, 0xb0, 0x4f, 0x91, 0x31, 0xfb, 0x01, 0x4d, - 0xcf, 0xc8, 0x64, 0x52, 0x34, 0x99, 0xdf, 0x28, 0xc9, 0xa1, 0x4b, 0x75, 0xcc, 0x8d, 0x11, 0x81, - 0x8b, 0x28, 0xab, 0x12, 0x56, 0x34, 0xee, 0x61, 0x93, 0x79, 0xe5, 0x25, 0xf8, 0xbc, 0x7a, 0x01, - 0x0b, 0x74, 0xdc, 0xc4, 0x7d, 0xf0, 0x5b, 0xfc, 0x51, 0x02, 0x50, 0x50, 0xf2, 0xcf, 0x6e, 0xbc, - 0x25, 0xe2, 0x1b, 0x6f, 0xef, 0x02, 0x62, 0x61, 0xb2, 0xb6, 0xdc, 0xc7, 0x96, 0x6c, 0x63, 0xd5, - 0xe4, 0x77, 0x7d, 0x09, 0x52, 0x89, 0xe7, 0x6c, 0x63, 0xab, 0x45, 0xe9, 0x68, 0x05, 0xc0, 0xf7, - 0xda, 0xf9, 0xa2, 0x38, 0x8d, 0xd3, 0x9e, 0xf1, 0x9c, 0x76, 0xf1, 0x7b, 0x02, 0x14, 0x36, 0xf5, - 0x8e, 0xa5, 0xc4, 0x7a, 0x95, 0x15, 0xfa, 0x38, 0xfc, 0x36, 0x23, 0x7b, 0xbf, 0x12, 0x15, 0xd8, - 0xc5, 0x4a, 0xb8, 0x70, 0x9b, 0x33, 0x90, 0xb5, 0xc6, 0xab, 0x51, 0x9c, 0x46, 0xf6, 0x3f, 0x54, - 0x20, 0xc7, 0xeb, 0xbd, 0x63, 0xe8, 0xa6, 0x81, 0xee, 0x41, 0xb2, 0xc3, 0xdf, 0x56, 0x65, 0x23, - 0x77, 0x96, 0xfd, 0x8b, 0x22, 0x1b, 0x33, 0x12, 0x29, 0x4b, 0x58, 0xfa, 0x03, 0x27, 0xc2, 0x83, - 0xf7, 0xcf, 0x3a, 0x04, 0x59, 0xfa, 0x03, 0x07, 0xb5, 0xa0, 0xa8, 0xfa, 0xb7, 0xd3, 0xc9, 0x84, - 0x3d, 0x39, 0x16, 0xf7, 0x47, 0xde, 0x13, 0xd8, 0x98, 0x91, 0x0a, 0x6a, 0x28, 0x03, 0xd5, 0x82, - 0x97, 0xa2, 0xa5, 0x46, 0x02, 0x29, 0xfd, 0x23, 0xf5, 0xe1, 0x0b, 0xd9, 0x1a, 0x33, 0x81, 0xbb, - 0xd3, 0xd0, 0xc7, 0x30, 0xa7, 0xd1, 0xeb, 0xb7, 0xb8, 0x95, 0x8a, 0xea, 0xe8, 0xd0, 0x2d, 0x67, - 0x8d, 0x19, 0x89, 0x73, 0xa0, 0x75, 0xc8, 0xb1, 0x5f, 0xcc, 0x87, 0xe6, 0xb6, 0xe5, 0xe6, 0x78, - 0x09, 0x81, 0xd5, 0xbd, 0x31, 0x23, 0x65, 0x35, 0x9f, 0x8a, 0x1e, 0x43, 0x56, 0xed, 0x62, 0xc5, - 0xe2, 0xa2, 0x6e, 0x8d, 0x3d, 0xfd, 0x39, 0x72, 0x65, 0x57, 0x63, 0x46, 0x02, 0xd5, 0x23, 0x92, - 0x4a, 0x59, 0xf4, 0xe6, 0x26, 0x2e, 0xe9, 0xfd, 0xb1, 0x95, 0x1a, 0xbd, 0x06, 0xab, 0x41, 0x57, - 0x7d, 0x8f, 0x8a, 0xbe, 0x09, 0x29, 0x5b, 0x55, 0xdc, 0x3d, 0x9a, 0x6b, 0x63, 0xae, 0xd6, 0xf1, - 0x99, 0x69, 0x69, 0xf4, 0x90, 0xb9, 0xdf, 0xce, 0xb1, 0xbb, 0x5d, 0x1e, 0xa5, 0xd3, 0xd0, 0x15, - 0x0e, 0x44, 0xa7, 0x98, 0x12, 0x88, 0x1e, 0x14, 0x82, 0x37, 0x64, 0x7a, 0xae, 0x9a, 0xee, 0x8f, - 0x47, 0xeb, 0x61, 0xe4, 0x1c, 0x7c, 0x83, 0xde, 0x13, 0xe1, 0x12, 0xd1, 0x26, 0xe4, 0x99, 0xa0, - 0x01, 0x3b, 0xa2, 0x5d, 0x5e, 0x1e, 0x1b, 0xcd, 0x10, 0x71, 0x48, 0xbc, 0x31, 0x23, 0xe5, 0x94, - 0x00, 0xd9, 0xaf, 0x57, 0x0f, 0x5b, 0x1d, 0x5c, 0xce, 0x4e, 0xae, 0x57, 0x30, 0x44, 0xd4, 0xab, - 0x17, 0x25, 0xa2, 0x5f, 0x86, 0x4b, 0x4c, 0x90, 0xc3, 0x23, 0xdf, 0x78, 0x00, 0xd5, 0x9b, 0x63, - 0x83, 0x06, 0xc6, 0x1e, 0xab, 0x6e, 0xcc, 0x48, 0x48, 0x19, 0xc9, 0x44, 0x2a, 0x5c, 0x66, 0x4f, - 0xe0, 0xe7, 0x72, 0x2d, 0x7e, 0x94, 0xb4, 0xfc, 0x16, 0x7d, 0xc4, 0x7b, 0xe3, 0x1e, 0x11, 0x79, - 0x5c, 0xb8, 0x31, 0x23, 0x2d, 0x2a, 0xa3, 0xb9, 0x7e, 0x33, 0x2c, 0x7e, 0x02, 0x92, 0x0f, 0xb7, - 0xf7, 0x26, 0x37, 0x23, 0xea, 0xe4, 0xa8, 0xd7, 0x8c, 0x50, 0x26, 0xe9, 0x40, 0xef, 0xfe, 0x07, - 0x3a, 0x98, 0x72, 0x63, 0x3b, 0x30, 0xe2, 0x98, 0x24, 0xe9, 0xc0, 0xfd, 0x00, 0x19, 0x55, 0x21, - 0xd1, 0x51, 0xcb, 0xf9, 0xb1, 0xeb, 0x83, 0x77, 0x14, 0xb0, 0x31, 0x23, 0x25, 0x3a, 0x2a, 0xfa, - 0x14, 0xd2, 0xec, 0x5c, 0xd7, 0xb1, 0x51, 0x2e, 0x8c, 0x35, 0xb8, 0xe1, 0xd3, 0x71, 0x8d, 0x19, - 0x89, 0x1e, 0x25, 0xe3, 0x03, 0x99, 0x9f, 0xd9, 0xa1, 0x22, 0xaa, 0x13, 0x8e, 0x73, 0x0f, 0x9d, - 0x9c, 0x22, 0x03, 0xc6, 0xf2, 0x88, 0x68, 0x1b, 0x0a, 0x16, 0x8b, 0x6a, 0x76, 0xcf, 0x20, 0x94, - 0xc6, 0xc6, 0xfa, 0x44, 0x1d, 0x43, 0x68, 0xd0, 0x8d, 0x8f, 0x00, 0x9d, 0xf4, 0x5d, 0x58, 0x22, - 0xef, 0xbb, 0x85, 0xb1, 0x7d, 0x37, 0x36, 0x24, 0x9e, 0xf4, 0x9d, 0x35, 0x92, 0x89, 0x3e, 0x84, - 0x59, 0x36, 0x4f, 0x10, 0x15, 0x19, 0x15, 0xbe, 0x36, 0x34, 0x45, 0x58, 0x79, 0x62, 0xbd, 0x1c, - 0x1e, 0xda, 0x2b, 0x77, 0xcd, 0x4e, 0x79, 0x71, 0xac, 0xf5, 0x1a, 0x0d, 0x52, 0x26, 0xd6, 0xcb, - 0xf1, 0xa9, 0x64, 0x00, 0x59, 0x2c, 0x87, 0x4f, 0xb1, 0x4b, 0x63, 0x07, 0x50, 0x44, 0xc4, 0x6f, - 0x83, 0x1e, 0xba, 0xf2, 0xc9, 0x9e, 0x61, 0xb5, 0xb1, 0x4c, 0x8d, 0xe2, 0xe5, 0xc9, 0x86, 0x35, - 0x74, 0xdf, 0x99, 0x67, 0x58, 0x19, 0x15, 0x3d, 0x87, 0x12, 0xbf, 0x74, 0xc7, 0x7f, 0xb9, 0x7a, - 0x85, 0xca, 0x7b, 0x27, 0x72, 0x41, 0x8c, 0x0a, 0x4e, 0x6c, 0x10, 0x0f, 0x35, 0x9c, 0x83, 0x3e, - 0x83, 0x05, 0x2a, 0x4f, 0x56, 0xfd, 0x7b, 0x92, 0xca, 0xe5, 0x91, 0x5b, 0x77, 0xc6, 0x5f, 0xa9, - 0xe4, 0x4a, 0x2e, 0xa9, 0x43, 0x59, 0x64, 0x3e, 0xe8, 0x86, 0xee, 0xd0, 0xb5, 0xbb, 0x32, 0x76, - 0x3e, 0x84, 0xef, 0x88, 0x25, 0xf3, 0x41, 0x67, 0x14, 0x32, 0x8c, 0x87, 0x2c, 0xde, 0x1b, 0x63, - 0x87, 0xf1, 0x18, 0x63, 0x97, 0x77, 0x42, 0x76, 0x6e, 0x0d, 0x80, 0xe1, 0x12, 0xea, 0xf9, 0x5d, - 0x1b, 0xeb, 0x00, 0x0c, 0x47, 0xe4, 0x12, 0x07, 0xa0, 0xeb, 0xd2, 0xc8, 0x3c, 0xa5, 0xbb, 0x1e, - 0x32, 0x8d, 0xf4, 0x28, 0x2f, 0x8d, 0x9d, 0xa7, 0x23, 0x51, 0x19, 0x64, 0x9e, 0x1e, 0x79, 0x44, - 0xe2, 0x49, 0xb0, 0x57, 0x53, 0xe5, 0xeb, 0xe3, 0x57, 0xbd, 0xe0, 0x1b, 0x6a, 0xba, 0xea, 0x51, - 0x02, 0xe1, 0x65, 0x3b, 0xee, 0x65, 0x71, 0x2c, 0x6f, 0xe8, 0xed, 0x0a, 0xe1, 0x65, 0x1c, 0x68, - 0x05, 0x32, 0xc4, 0x29, 0x3e, 0xa1, 0x66, 0xe6, 0xc6, 0x58, 0x60, 0x3a, 0x74, 0x5e, 0xb0, 0x31, - 0x23, 0xa5, 0x5f, 0x72, 0x12, 0x19, 0xda, 0x4c, 0x04, 0x37, 0x30, 0x77, 0xc7, 0x0e, 0xed, 0xd1, - 0x83, 0x62, 0x64, 0x68, 0xbf, 0xf4, 0xa9, 0xfe, 0xba, 0x6b, 0xb3, 0x3d, 0xfa, 0xf2, 0xdb, 0x93, - 0xd7, 0xdd, 0xf0, 0x1b, 0x05, 0x6f, 0xdd, 0xe5, 0x64, 0xb6, 0xee, 0x6a, 0xb2, 0x6d, 0xb3, 0xf0, - 0x9f, 0x9b, 0x13, 0xd6, 0xdd, 0xa1, 0x5d, 0x3b, 0xb6, 0xee, 0x6a, 0x2d, 0xc6, 0x49, 0x5c, 0x50, - 0xcb, 0xbd, 0xe9, 0x8a, 0x63, 0x96, 0xdb, 0x63, 0x5d, 0xd0, 0xc8, 0xab, 0xb8, 0x88, 0x0b, 0x6a, - 0x85, 0x32, 0xd0, 0xcf, 0xc3, 0x3c, 0xdf, 0x25, 0x29, 0xdf, 0x99, 0xe0, 0x94, 0x07, 0x37, 0xb6, - 0xc8, 0x9c, 0xe0, 0x3c, 0xcc, 0x42, 0xb1, 0xdd, 0x19, 0x66, 0x81, 0xdf, 0x99, 0x60, 0xa1, 0x46, - 0x36, 0x88, 0x98, 0x85, 0xf2, 0xc9, 0xa4, 0x36, 0x36, 0xdb, 0x59, 0x28, 0x7f, 0x63, 0x6c, 0x6d, - 0xc2, 0x5b, 0x2c, 0xa4, 0x36, 0x9c, 0x87, 0xae, 0x58, 0xd4, 0x61, 0x60, 0xda, 0x79, 0x77, 0xfc, - 0x8a, 0x35, 0x8c, 0x55, 0x1b, 0xee, 0x3b, 0x10, 0xa6, 0x95, 0xbf, 0x29, 0xc0, 0x75, 0x36, 0x06, - 0xe8, 0x0e, 0xf0, 0x89, 0xec, 0x6d, 0xe0, 0x07, 0x80, 0xf8, 0x3d, 0x2a, 0xfe, 0xc3, 0x8b, 0xef, - 0x37, 0xbb, 0x4f, 0x7c, 0x53, 0x99, 0x54, 0x8e, 0x28, 0xa3, 0xc7, 0x10, 0x54, 0xf9, 0xfe, 0x58, - 0x65, 0x84, 0x51, 0x1f, 0x51, 0x06, 0xe7, 0x59, 0x9d, 0xe7, 0x81, 0x00, 0xde, 0x31, 0xec, 0x62, - 0xa9, 0xb4, 0x9e, 0x4a, 0x5f, 0x2d, 0x95, 0xd7, 0x53, 0xe9, 0xd7, 0x4a, 0x95, 0xf5, 0x54, 0xfa, - 0xf5, 0xd2, 0x1b, 0xe2, 0x3f, 0xac, 0x40, 0xde, 0x05, 0x5d, 0x0c, 0x50, 0xdd, 0x0f, 0x02, 0xaa, - 0x6b, 0xe3, 0x00, 0x15, 0x87, 0x69, 0x1c, 0x51, 0xdd, 0x0f, 0x22, 0xaa, 0x6b, 0xe3, 0x10, 0x95, - 0xcf, 0x43, 0x20, 0x55, 0x7b, 0x1c, 0xa4, 0x7a, 0x67, 0x0a, 0x48, 0xe5, 0x89, 0x1a, 0xc6, 0x54, - 0x6b, 0xa3, 0x98, 0xea, 0xed, 0xc9, 0x98, 0xca, 0x13, 0x15, 0x00, 0x55, 0x0f, 0x87, 0x40, 0xd5, - 0x8d, 0x09, 0xa0, 0xca, 0xe3, 0x77, 0x51, 0xd5, 0x46, 0x24, 0xaa, 0xba, 0x75, 0x1e, 0xaa, 0xf2, - 0xe4, 0x84, 0x60, 0x55, 0x23, 0x0a, 0x56, 0xdd, 0x3c, 0x07, 0x56, 0x79, 0xa2, 0x82, 0xb8, 0x6a, - 0x23, 0x12, 0x57, 0xdd, 0x3a, 0x0f, 0x57, 0xf9, 0xd5, 0x0a, 0x02, 0xab, 0x0f, 0x42, 0xc0, 0x6a, - 0x69, 0x2c, 0xb0, 0xf2, 0xb8, 0x19, 0xb2, 0xfa, 0x64, 0x18, 0x59, 0xdd, 0x98, 0x80, 0xac, 0x7c, - 0xc5, 0x72, 0x68, 0xd5, 0x88, 0x82, 0x56, 0x37, 0xcf, 0x81, 0x56, 0xbe, 0x2e, 0x02, 0xd8, 0x6a, - 0x2b, 0x1a, 0x5b, 0xdd, 0x3e, 0x17, 0x5b, 0x79, 0xd2, 0xc2, 0xe0, 0xaa, 0x11, 0x05, 0xae, 0x6e, - 0x9e, 0x03, 0xae, 0x86, 0x6a, 0xc6, 0xd0, 0x95, 0x32, 0x11, 0x5d, 0xbd, 0x37, 0x25, 0xba, 0xf2, - 0x44, 0x47, 0xc1, 0x2b, 0x6d, 0x32, 0xbc, 0xaa, 0x4e, 0x0b, 0xaf, 0xbc, 0x87, 0x44, 0xe2, 0x2b, - 0x65, 0x22, 0xbe, 0x7a, 0x6f, 0x4a, 0x7c, 0x35, 0xd4, 0x90, 0x30, 0xc0, 0xda, 0x8a, 0x06, 0x58, - 0xb7, 0xcf, 0x05, 0x58, 0x7e, 0x2f, 0x86, 0x10, 0xd6, 0x72, 0x00, 0x61, 0xbd, 0x39, 0x06, 0x61, - 0x79, 0xac, 0x04, 0x62, 0x7d, 0x6b, 0x04, 0x62, 0x89, 0x93, 0x20, 0x96, 0xc7, 0xeb, 0x61, 0xac, - 0x46, 0x14, 0xc6, 0xba, 0x79, 0x0e, 0xc6, 0xf2, 0xc7, 0x4d, 0x00, 0x64, 0x3d, 0x1b, 0x03, 0xb2, - 0xee, 0x9c, 0x0f, 0xb2, 0x3c, 0x79, 0x43, 0x28, 0x4b, 0x99, 0x88, 0xb2, 0xde, 0x9b, 0x12, 0x65, - 0xf9, 0x3d, 0x18, 0x01, 0xb3, 0x3e, 0x0a, 0xc3, 0xac, 0xeb, 0xe3, 0x61, 0x96, 0x27, 0x86, 0xe3, - 0xac, 0x8d, 0x48, 0x9c, 0x75, 0xeb, 0x3c, 0x9c, 0xe5, 0x5b, 0xb3, 0x20, 0xd0, 0xda, 0x8a, 0x06, - 0x5a, 0xb7, 0xcf, 0x05, 0x5a, 0xfe, 0x40, 0x0a, 0x21, 0xad, 0x8d, 0x48, 0xa4, 0x75, 0xeb, 0x3c, - 0xa4, 0x35, 0x64, 0x6a, 0x39, 0xd4, 0x7a, 0x31, 0x16, 0x6a, 0xdd, 0x9d, 0x06, 0x6a, 0x79, 0x42, - 0x47, 0xb0, 0xd6, 0xe7, 0xe3, 0xb1, 0xd6, 0x37, 0x2e, 0x70, 0x7d, 0x6d, 0x24, 0xd8, 0xfa, 0xd6, - 0x08, 0xd8, 0x12, 0x27, 0x81, 0x2d, 0x7f, 0x66, 0xb8, 0x68, 0xab, 0x1e, 0x81, 0x8d, 0xde, 0x9e, - 0x8c, 0x8d, 0xfc, 0x85, 0xdc, 0x07, 0x47, 0x8d, 0x28, 0x70, 0x74, 0xf3, 0x1c, 0x70, 0xe4, 0x4f, - 0xb0, 0x00, 0x3a, 0x7a, 0x38, 0x84, 0x8e, 0x6e, 0x9c, 0x1b, 0xe1, 0x18, 0x80, 0x47, 0x0f, 0x87, - 0xe0, 0xd1, 0x8d, 0x09, 0xf0, 0xc8, 0x67, 0xe6, 0xf8, 0x68, 0x75, 0x14, 0x1f, 0xbd, 0x35, 0x11, - 0x1f, 0x79, 0x12, 0x7c, 0x80, 0xb4, 0x11, 0x09, 0x90, 0x6e, 0x9d, 0x07, 0x90, 0xfc, 0x11, 0x19, - 0x44, 0x48, 0x5b, 0xd1, 0x08, 0xe9, 0xf6, 0xb9, 0x08, 0x69, 0x68, 0xf5, 0x74, 0x21, 0x52, 0x23, - 0x0a, 0x22, 0xdd, 0x3c, 0x07, 0x22, 0x05, 0x57, 0x4f, 0x0f, 0x23, 0xb5, 0xc7, 0x61, 0xa4, 0x77, - 0xa6, 0xc0, 0x48, 0xbe, 0x4f, 0x39, 0x04, 0x92, 0x3e, 0x1d, 0x06, 0x49, 0xe2, 0x24, 0x90, 0xe4, - 0x8f, 0x65, 0x17, 0x25, 0x6d, 0x45, 0xa3, 0xa4, 0xdb, 0xe7, 0xa2, 0xa4, 0xa0, 0x79, 0x09, 0xc0, - 0xa4, 0x4f, 0x87, 0x61, 0x92, 0x38, 0x09, 0x26, 0xf9, 0xf5, 0x71, 0x71, 0x52, 0x23, 0x0a, 0x27, - 0xdd, 0x3c, 0x07, 0x27, 0x05, 0x56, 0x1d, 0x1f, 0x28, 0xfd, 0xea, 0xf4, 0x40, 0xe9, 0xa3, 0x57, - 0x0d, 0xcc, 0x39, 0x1f, 0x29, 0x7d, 0x3a, 0x8c, 0x94, 0xc4, 0x49, 0x48, 0xc9, 0xd7, 0xc7, 0xc5, - 0xa0, 0xd2, 0x7a, 0x2a, 0xfd, 0x46, 0xe9, 0x4d, 0xf1, 0x2f, 0xe6, 0x60, 0xae, 0xe1, 0x46, 0xc4, - 0x06, 0x6e, 0x3e, 0x13, 0x5e, 0xe5, 0xe6, 0x33, 0xb4, 0x46, 0x86, 0x16, 0xf5, 0x98, 0xce, 0xbf, - 0x2f, 0x73, 0xf4, 0x46, 0x47, 0xce, 0xfa, 0x0a, 0x57, 0x10, 0xa0, 0x0f, 0x20, 0x3f, 0xb0, 0xb1, - 0x25, 0xf7, 0x2d, 0xdd, 0xb4, 0x74, 0x87, 0x9d, 0x7b, 0x12, 0x56, 0x4b, 0x5f, 0x9e, 0x2e, 0xe5, - 0x76, 0x6c, 0x6c, 0x6d, 0x73, 0xba, 0x94, 0x1b, 0x04, 0x52, 0xee, 0x87, 0xeb, 0x66, 0xa7, 0xff, - 0x70, 0xdd, 0x33, 0x28, 0xd1, 0x77, 0xce, 0xc1, 0x45, 0x86, 0xdd, 0x32, 0x16, 0xbd, 0x1e, 0xd2, - 0x73, 0x89, 0x6e, 0x49, 0x7a, 0xdb, 0x58, 0xd1, 0x0a, 0x13, 0x51, 0x0b, 0xe8, 0xfd, 0x3f, 0x72, - 0xdf, 0xec, 0xea, 0xea, 0x09, 0xf5, 0x1d, 0xc2, 0x37, 0xae, 0x4f, 0xfc, 0xee, 0xc1, 0x0b, 0x45, - 0x77, 0xb6, 0x29, 0xa7, 0x04, 0x47, 0xde, 0x6f, 0x74, 0x0f, 0x2e, 0xf7, 0x94, 0x63, 0x1a, 0x9a, - 0x2c, 0xbb, 0xce, 0x00, 0x0d, 0x17, 0x66, 0x9f, 0xb0, 0x43, 0x3d, 0xe5, 0x98, 0x7e, 0x5a, 0x8f, - 0x65, 0xd1, 0xef, 0xe2, 0xdc, 0x80, 0x1c, 0x3f, 0x0f, 0xc1, 0x3e, 0x9b, 0x55, 0xa4, 0x25, 0xf9, - 0x37, 0x54, 0xd8, 0x97, 0xb3, 0x6e, 0x42, 0x41, 0xd3, 0x6d, 0x47, 0x37, 0x54, 0x87, 0xdf, 0x72, - 0xcd, 0xee, 0x89, 0xce, 0xbb, 0x54, 0x76, 0x95, 0x75, 0x1b, 0x16, 0xd4, 0xae, 0xee, 0xb9, 0x58, - 0x6c, 0xd1, 0x5b, 0x18, 0x3b, 0x96, 0x6b, 0xb4, 0xec, 0xf0, 0x0b, 0xe1, 0xa2, 0x1a, 0x26, 0xa3, - 0x1a, 0x14, 0x3b, 0x8a, 0x83, 0x8f, 0x94, 0x13, 0xd9, 0x3d, 0x5e, 0x99, 0xa5, 0xe7, 0xd4, 0x5f, - 0x3f, 0x3b, 0x5d, 0xca, 0x3f, 0x66, 0x59, 0x23, 0xa7, 0x2c, 0xf3, 0x9d, 0x40, 0x86, 0x86, 0x6e, - 0x43, 0x51, 0xb1, 0x4f, 0x0c, 0x95, 0x76, 0x20, 0x36, 0xec, 0x81, 0x4d, 0x3d, 0xe4, 0xb4, 0x54, - 0xa0, 0xe4, 0x9a, 0x4b, 0x45, 0x0f, 0xa1, 0xc2, 0x3f, 0x66, 0x71, 0xa4, 0x58, 0x9a, 0x4c, 0x3b, - 0xdd, 0x9f, 0x1e, 0x25, 0xca, 0x73, 0x95, 0x7d, 0xbc, 0x82, 0x14, 0x20, 0x3d, 0x1d, 0xbc, 0x24, - 0x9a, 0x5d, 0x82, 0x0d, 0xa5, 0xec, 0x7a, 0x2a, 0x9d, 0x2b, 0xe5, 0xd7, 0x53, 0xe9, 0x42, 0xa9, - 0x28, 0xfe, 0xa6, 0x00, 0xb9, 0xd0, 0x41, 0xb2, 0x87, 0x43, 0x2f, 0x91, 0x5f, 0x8b, 0x76, 0xf6, - 0xc7, 0x85, 0xb0, 0xa7, 0x79, 0xd7, 0xba, 0x51, 0xec, 0x4b, 0xe3, 0x5d, 0x3c, 0xba, 0x1b, 0xe2, - 0x86, 0xd1, 0xb8, 0x6c, 0x1f, 0xa7, 0xbe, 0xff, 0xc3, 0xa5, 0x19, 0xf1, 0x2f, 0x53, 0x90, 0x0f, - 0x1f, 0x1b, 0x6b, 0x0e, 0xd5, 0x2b, 0xca, 0xb8, 0x87, 0x38, 0xaa, 0x13, 0x3e, 0xc3, 0x93, 0xf1, - 0xbf, 0x4c, 0xc1, 0xaa, 0x79, 0x7d, 0xc2, 0xab, 0xf2, 0x60, 0x3d, 0x7d, 0xc6, 0xca, 0x7f, 0x4c, - 0x7a, 0x76, 0xaa, 0x0a, 0xb3, 0xf4, 0xc2, 0x29, 0x5e, 0xb5, 0xf2, 0xf0, 0x4c, 0x21, 0x9e, 0x0b, - 0xc9, 0x97, 0x58, 0x31, 0x62, 0xd7, 0xda, 0xaf, 0x74, 0xa3, 0xa3, 0x6f, 0x92, 0x2f, 0xfe, 0x81, - 0xcb, 0x01, 0xbb, 0xd1, 0xf3, 0xff, 0x61, 0xa8, 0x0d, 0x79, 0x1e, 0xfa, 0x25, 0x28, 0xaa, 0x66, - 0xb7, 0xcb, 0xd6, 0x2c, 0x36, 0x43, 0x47, 0xef, 0xf8, 0xa1, 0x55, 0xe0, 0xdf, 0x34, 0xad, 0x7a, - 0xdf, 0x36, 0xad, 0x4a, 0xfc, 0xdb, 0xa6, 0x81, 0x38, 0xe8, 0x82, 0x27, 0x8c, 0x4d, 0xec, 0xa1, - 0x90, 0xec, 0xf9, 0x57, 0x09, 0xc9, 0x66, 0x41, 0xf6, 0x7c, 0xe4, 0xfd, 0x89, 0xc0, 0x03, 0x62, - 0x9e, 0x98, 0xe6, 0xc1, 0xc0, 0x0b, 0xa2, 0xae, 0x04, 0xef, 0xe7, 0xf4, 0xa3, 0x45, 0xe9, 0x91, - 0xa0, 0x28, 0x0b, 0x9c, 0xf8, 0x6a, 0x16, 0xf8, 0x06, 0xe4, 0xfa, 0x16, 0xde, 0xc3, 0x8e, 0xba, - 0x2f, 0x1b, 0x83, 0x1e, 0x3f, 0x0f, 0x95, 0x75, 0x69, 0x5b, 0x83, 0x1e, 0x7a, 0x07, 0x4a, 0x5e, - 0x11, 0x0e, 0x67, 0xdc, 0xcb, 0xe1, 0x5c, 0x3a, 0x07, 0x3f, 0xe2, 0xff, 0x12, 0x60, 0x31, 0xd4, - 0x26, 0x3e, 0xa7, 0xd6, 0x21, 0xab, 0x79, 0x6b, 0x9e, 0x5d, 0x16, 0x2e, 0x18, 0x47, 0x1c, 0x64, - 0x46, 0x32, 0x5c, 0x71, 0x1f, 0x4b, 0xbf, 0xe6, 0xe0, 0x8b, 0x4d, 0x5c, 0x50, 0xec, 0x65, 0x5f, - 0xce, 0x5a, 0xe0, 0x01, 0xde, 0x24, 0x4b, 0x4e, 0x35, 0xc9, 0xc4, 0xdf, 0x11, 0xa0, 0x44, 0x1f, - 0xf0, 0x08, 0x63, 0x2d, 0x16, 0xeb, 0xe6, 0x06, 0xec, 0x27, 0xa6, 0x3f, 0xf1, 0x14, 0xfa, 0x02, - 0x4d, 0x32, 0xfc, 0x05, 0x1a, 0xf1, 0x87, 0x02, 0x14, 0xbc, 0x1a, 0xb2, 0xaf, 0x44, 0x4e, 0xb8, - 0x06, 0xf6, 0xd5, 0xbe, 0x84, 0xe8, 0x5e, 0x57, 0x33, 0xd5, 0x87, 0x2b, 0x83, 0xd7, 0xd5, 0xb0, - 0x2f, 0xf8, 0xfd, 0x1d, 0x77, 0xe4, 0x90, 0x2a, 0xd6, 0xfc, 0x7b, 0x42, 0x5e, 0xe1, 0xf0, 0x97, - 0x44, 0x3f, 0xb0, 0x6b, 0x76, 0x0f, 0xd9, 0x0d, 0x43, 0x53, 0x99, 0x3d, 0xc4, 0xc3, 0xc0, 0x80, - 0x6f, 0x7c, 0x68, 0xed, 0x16, 0xfd, 0xf4, 0x2e, 0xfb, 0x6d, 0x8b, 0x8f, 0x02, 0x0a, 0xa4, 0x9d, - 0x4f, 0xb4, 0x34, 0x95, 0x29, 0x76, 0xb5, 0xc4, 0xc6, 0xca, 0x1f, 0x05, 0x7b, 0xa2, 0x7e, 0x48, - 0x30, 0xd8, 0x03, 0x48, 0x1e, 0x2a, 0xdd, 0x49, 0x91, 0x54, 0xa1, 0x9e, 0x93, 0x48, 0x69, 0xf4, - 0x28, 0x74, 0xbd, 0x4a, 0x62, 0xfc, 0xae, 0xc4, 0xa8, 0x4a, 0x43, 0xd7, 0xb0, 0x7c, 0x18, 0x1e, - 0xeb, 0x13, 0x1f, 0x1f, 0x1c, 0xf4, 0x1f, 0xa7, 0x7e, 0xfc, 0xc3, 0x25, 0x41, 0xfc, 0x04, 0x90, - 0x84, 0x6d, 0xec, 0x3c, 0x1b, 0x98, 0x96, 0x7f, 0x55, 0xcd, 0x70, 0x0c, 0xfd, 0x6c, 0x74, 0x0c, - 0xbd, 0x78, 0x19, 0x16, 0x43, 0xdc, 0xcc, 0x58, 0x88, 0x1f, 0xc2, 0x6b, 0x8f, 0x4d, 0xdb, 0xd6, - 0xfb, 0x04, 0xf8, 0xd0, 0x59, 0x49, 0x96, 0x16, 0xcf, 0x3c, 0xa6, 0xfb, 0x14, 0x6b, 0x1a, 0xcc, - 0x8c, 0x64, 0x24, 0x2f, 0x2d, 0xfe, 0x81, 0x00, 0x57, 0x47, 0x39, 0x99, 0x96, 0xa3, 0xce, 0xaa, - 0xce, 0xab, 0xa6, 0x7f, 0x93, 0xe2, 0xf9, 0xa3, 0xd5, 0x2d, 0x4e, 0x1c, 0x29, 0xfe, 0x4c, 0xb9, - 0xa7, 0x50, 0xf3, 0xc1, 0xcf, 0xcd, 0x17, 0x38, 0x79, 0x93, 0x51, 0x7d, 0x4b, 0x92, 0x9a, 0xce, - 0x92, 0xb4, 0xa1, 0xb8, 0x6e, 0xea, 0x06, 0xf1, 0xd7, 0xdc, 0xf6, 0xae, 0x40, 0x61, 0x57, 0x37, - 0x14, 0xeb, 0x44, 0x76, 0x03, 0xf8, 0x84, 0xf3, 0x02, 0xf8, 0xa4, 0x3c, 0xe3, 0xe0, 0x49, 0xf1, - 0x27, 0x02, 0x94, 0x7c, 0xb1, 0xdc, 0x22, 0xbf, 0x0b, 0xa0, 0x76, 0x07, 0xb6, 0x83, 0x2d, 0xb7, - 0x97, 0x72, 0x2c, 0x32, 0xbf, 0xc6, 0xa8, 0xcd, 0x35, 0x29, 0xc3, 0x0b, 0x34, 0x35, 0xf4, 0x56, - 0xf8, 0x5a, 0x8f, 0xd9, 0x55, 0x38, 0x1b, 0xb9, 0xcc, 0x83, 0x74, 0xbb, 0xed, 0x98, 0x96, 0x87, - 0x5d, 0x78, 0xb7, 0xbb, 0xb7, 0x28, 0xd1, 0xd3, 0xe8, 0x98, 0x1e, 0xbe, 0x29, 0x10, 0x77, 0xe1, - 0x10, 0x7b, 0x4d, 0x4a, 0x9d, 0xdf, 0x24, 0xc6, 0xe1, 0x36, 0xe9, 0x5f, 0x0a, 0x50, 0xac, 0xb1, - 0xde, 0xf0, 0x7a, 0x78, 0x82, 0x45, 0x5b, 0x83, 0xb4, 0x73, 0x6c, 0xc8, 0x3d, 0xec, 0x7d, 0xf8, - 0xe7, 0x02, 0xd7, 0x1c, 0xce, 0x3b, 0x2c, 0x49, 0xbf, 0x25, 0xc9, 0x3f, 0x64, 0xce, 0xa7, 0xcb, - 0x6b, 0x55, 0xf6, 0xa5, 0xf3, 0xaa, 0xfb, 0xa5, 0xf3, 0xea, 0x1a, 0x2f, 0xc0, 0x8c, 0xfa, 0xf7, - 0xff, 0xcb, 0x92, 0x20, 0x79, 0x4c, 0x6c, 0xdd, 0xbf, 0xdb, 0x22, 0xa3, 0x7e, 0x64, 0x65, 0x46, - 0x05, 0x80, 0xc0, 0x17, 0x9d, 0xf8, 0xb7, 0xb3, 0x57, 0xd6, 0xe4, 0x9d, 0xad, 0xda, 0xd3, 0xcd, - 0xcd, 0x66, 0xbb, 0x5d, 0x5f, 0x2b, 0x09, 0xa8, 0x04, 0xb9, 0xd0, 0xf7, 0xa0, 0x12, 0xec, 0x6b, - 0xda, 0x77, 0xff, 0x1a, 0x80, 0xff, 0x69, 0x39, 0x22, 0x6b, 0xa3, 0xfe, 0x99, 0xfc, 0x7c, 0xe5, - 0xc9, 0x4e, 0xbd, 0x55, 0x9a, 0x41, 0x08, 0x0a, 0xab, 0x2b, 0xed, 0x5a, 0x43, 0x96, 0xea, 0xad, - 0xed, 0xa7, 0x5b, 0xad, 0xba, 0xfb, 0x15, 0xee, 0xbb, 0x6b, 0x90, 0x0b, 0x5e, 0xde, 0x84, 0x16, - 0xa1, 0x58, 0x6b, 0xd4, 0x6b, 0x1b, 0xf2, 0xf3, 0xe6, 0x8a, 0xfc, 0x6c, 0xa7, 0xbe, 0x53, 0x2f, - 0xcd, 0xd0, 0xaa, 0x51, 0xe2, 0xa3, 0x9d, 0x27, 0x4f, 0x4a, 0x02, 0x2a, 0x42, 0x96, 0xa5, 0xe9, - 0xb7, 0xa3, 0x4a, 0x89, 0xbb, 0x9b, 0x90, 0x0d, 0x5c, 0x2a, 0x4d, 0x1e, 0xb7, 0xbd, 0xd3, 0x6a, - 0xc8, 0xed, 0xe6, 0x66, 0xbd, 0xd5, 0x5e, 0xd9, 0xdc, 0x66, 0x32, 0x28, 0x6d, 0x65, 0xf5, 0xa9, - 0xd4, 0x2e, 0x09, 0x5e, 0xba, 0xfd, 0x74, 0xa7, 0xd6, 0x70, 0x9b, 0x21, 0xa6, 0xd2, 0xc9, 0x52, - 0xf2, 0xee, 0x6f, 0x08, 0x70, 0x75, 0xcc, 0x45, 0x46, 0x28, 0x0b, 0xf3, 0x3b, 0x06, 0xbd, 0x61, - 0xb7, 0x34, 0x83, 0xf2, 0x81, 0xbb, 0x8c, 0x4a, 0x02, 0x4a, 0xb3, 0xdb, 0x64, 0x4a, 0x09, 0x34, - 0x07, 0x89, 0xd6, 0x83, 0x52, 0x92, 0xd4, 0x34, 0x70, 0x15, 0x50, 0x29, 0x85, 0x32, 0xfc, 0x12, - 0x92, 0xd2, 0x2c, 0xca, 0xf9, 0x77, 0x81, 0x94, 0xe6, 0x88, 0x28, 0xef, 0x4e, 0x8d, 0xd2, 0x3c, - 0xc9, 0xdc, 0x1a, 0x74, 0xbb, 0x2d, 0xdd, 0x38, 0x28, 0xa5, 0xef, 0xde, 0x80, 0xc0, 0x2d, 0x06, - 0x08, 0x60, 0xee, 0x89, 0xe2, 0x60, 0xdb, 0x29, 0xcd, 0xa0, 0x79, 0x48, 0xae, 0x74, 0xbb, 0x25, - 0xe1, 0xfe, 0xbf, 0x48, 0x41, 0xda, 0xfd, 0x62, 0x12, 0x7a, 0x02, 0xb3, 0x6c, 0xab, 0x71, 0x69, - 0x3c, 0x76, 0xa0, 0xd3, 0xbb, 0x72, 0xfd, 0x3c, 0x70, 0x21, 0xce, 0xa0, 0xbf, 0x0e, 0xd9, 0x80, - 0x4f, 0x85, 0xc6, 0x6e, 0xef, 0x84, 0xfc, 0xc8, 0xca, 0xad, 0xf3, 0x8a, 0x79, 0xf2, 0x5f, 0x40, - 0xc6, 0xb3, 0xf1, 0xe8, 0xad, 0x49, 0x2b, 0x80, 0x2b, 0x7b, 0xf2, 0x32, 0x41, 0x66, 0xa3, 0x38, - 0xf3, 0xbe, 0x80, 0x2c, 0x40, 0xa3, 0xe6, 0x18, 0x45, 0x05, 0x75, 0x8d, 0xb5, 0xf7, 0x95, 0xbb, - 0x53, 0x95, 0xf6, 0x9f, 0x49, 0x94, 0xe5, 0xaf, 0x29, 0xd1, 0xca, 0x1a, 0x59, 0xb1, 0xa2, 0x95, - 0x15, 0xb1, 0x34, 0xcd, 0xa0, 0x67, 0x90, 0x22, 0xb6, 0x14, 0x45, 0x79, 0x99, 0x43, 0xb6, 0xbb, - 0xf2, 0xd6, 0xc4, 0x32, 0xae, 0xc8, 0xd5, 0x77, 0x7e, 0xfc, 0xe7, 0xd7, 0x66, 0x7e, 0x7c, 0x76, - 0x4d, 0xf8, 0xc9, 0xd9, 0x35, 0xe1, 0x4f, 0xcf, 0xae, 0x09, 0x7f, 0x76, 0x76, 0x4d, 0xf8, 0xde, - 0x4f, 0xaf, 0xcd, 0xfc, 0xe4, 0xa7, 0xd7, 0x66, 0xfe, 0xf4, 0xa7, 0xd7, 0x66, 0x3e, 0x9f, 0xe7, - 0xdc, 0xbb, 0x73, 0xd4, 0xd0, 0x3c, 0xf8, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0xf0, 0xc8, 0xad, - 0xa8, 0xb9, 0x82, 0x00, 0x00, + 0x04, 0xc8, 0x22, 0x70, 0x92, 0xf5, 0x9b, 0x11, 0x20, 0x8a, 0xad, 0xcd, 0x43, 0x02, 0x03, 0x41, + 0x90, 0x3c, 0x18, 0x18, 0x20, 0x41, 0x70, 0x7f, 0xea, 0x8f, 0x2c, 0x52, 0x54, 0x4f, 0x6d, 0x32, + 0x80, 0x5f, 0x24, 0xd6, 0xb9, 0xf7, 0x9c, 0xba, 0xf7, 0xdc, 0x7b, 0xcf, 0x3d, 0xdf, 0xad, 0x73, + 0xef, 0x85, 0x05, 0xcb, 0x54, 0xd4, 0xfd, 0xfe, 0xee, 0xb2, 0xd2, 0xd7, 0xab, 0x7d, 0xcb, 0x74, + 0x4c, 0xb4, 0xa0, 0x9a, 0xea, 0x01, 0x25, 0x57, 0x79, 0x62, 0xe5, 0xee, 0xc1, 0xe1, 0xf2, 0xc1, + 0xa1, 0x8d, 0xad, 0x43, 0x6c, 0x2d, 0xab, 0xa6, 0xa1, 0x0e, 0x2c, 0x0b, 0x1b, 0xea, 0xc9, 0x72, + 0xd7, 0x54, 0x0f, 0xe8, 0x1f, 0xdd, 0xe8, 0x30, 0xf6, 0x70, 0x5e, 0x0b, 0x2b, 0x9a, 0x3d, 0xe8, + 0xf5, 0x14, 0xeb, 0x64, 0xd9, 0xb2, 0xfb, 0xbb, 0xcb, 0xfc, 0x81, 0xe7, 0x45, 0xee, 0xdb, 0x35, + 0xc5, 0x51, 0x38, 0xed, 0x92, 0x4b, 0xc3, 0x96, 0x65, 0x5a, 0x36, 0xa7, 0x5e, 0x71, 0xa9, 0x3d, + 0xec, 0x28, 0x81, 0xdc, 0xaf, 0xdb, 0x8e, 0x69, 0x29, 0x1d, 0xbc, 0x8c, 0x8d, 0x8e, 0x6e, 0x60, + 0x92, 0xe1, 0x50, 0x55, 0x79, 0xe2, 0x1b, 0x91, 0x89, 0x0f, 0x78, 0x6a, 0x79, 0xe0, 0xe8, 0xdd, + 0xe5, 0xfd, 0xae, 0xba, 0xec, 0xe8, 0x3d, 0x6c, 0x3b, 0x4a, 0xaf, 0xef, 0x56, 0x81, 0xa6, 0x38, + 0x96, 0xa2, 0xea, 0x46, 0xc7, 0xfd, 0xdf, 0xdf, 0x5d, 0xb6, 0xb0, 0x6a, 0x5a, 0x1a, 0xd6, 0x64, + 0xbb, 0xaf, 0x18, 0x6e, 0x71, 0x3b, 0x66, 0xc7, 0xa4, 0x3f, 0x97, 0xc9, 0x2f, 0x4e, 0xbd, 0xd6, + 0x31, 0xcd, 0x4e, 0x17, 0x2f, 0xd3, 0xa7, 0xdd, 0xc1, 0xde, 0xb2, 0x36, 0xb0, 0x14, 0x47, 0x37, + 0x39, 0x97, 0xf8, 0x4f, 0x04, 0xc8, 0x4b, 0xf8, 0xe5, 0x00, 0xdb, 0x4e, 0x03, 0x2b, 0x1a, 0xb6, + 0xd0, 0x6b, 0x90, 0x3c, 0xc0, 0x27, 0xe5, 0xe4, 0x75, 0xe1, 0x4e, 0x6e, 0x75, 0xfe, 0xcb, 0xd3, + 0xa5, 0xe4, 0x06, 0x3e, 0x91, 0x08, 0x0d, 0x5d, 0x87, 0x79, 0x6c, 0x68, 0x32, 0x49, 0x4e, 0x85, + 0x93, 0xe7, 0xb0, 0xa1, 0x6d, 0xe0, 0x13, 0xf4, 0x6d, 0x48, 0xdb, 0x44, 0x9a, 0xa1, 0xe2, 0xf2, + 0xec, 0x75, 0xe1, 0xce, 0xec, 0xea, 0x2f, 0x7c, 0x79, 0xba, 0xf4, 0x49, 0x47, 0x77, 0xf6, 0x07, + 0xbb, 0x55, 0xd5, 0xec, 0x2d, 0x7b, 0x6d, 0xaa, 0xed, 0xfa, 0xbf, 0x97, 0xfb, 0x07, 0x9d, 0xe5, + 0x61, 0x1d, 0x55, 0xdb, 0xc7, 0x46, 0x0b, 0xbf, 0x94, 0x3c, 0x89, 0xeb, 0xa9, 0xb4, 0x50, 0x4a, + 0xac, 0xa7, 0xd2, 0x89, 0x52, 0x52, 0xfc, 0x5f, 0x09, 0x28, 0x48, 0xd8, 0xee, 0x9b, 0x86, 0x8d, + 0x79, 0xc9, 0xdf, 0x87, 0xa4, 0x73, 0x6c, 0xd0, 0x92, 0x67, 0xef, 0x5f, 0xab, 0x8e, 0xf4, 0x9e, + 0x6a, 0xdb, 0x52, 0x0c, 0x5b, 0x51, 0x49, 0xf5, 0x25, 0x92, 0x15, 0x7d, 0x04, 0x59, 0x0b, 0xdb, + 0x83, 0x1e, 0xa6, 0x8a, 0xa4, 0x95, 0xca, 0xde, 0xbf, 0x1a, 0xc1, 0xd9, 0xea, 0x2b, 0x86, 0x04, + 0x2c, 0x2f, 0xf9, 0x8d, 0x5a, 0x90, 0xe7, 0x9c, 0x16, 0x56, 0x6c, 0xd3, 0x28, 0xcf, 0x5f, 0x17, + 0xee, 0x14, 0xee, 0x57, 0x23, 0x78, 0xc3, 0xa5, 0x24, 0x8f, 0x83, 0x1e, 0x96, 0x28, 0x97, 0x94, + 0xb3, 0x02, 0x4f, 0xe8, 0x35, 0x48, 0x1b, 0x83, 0x1e, 0xd1, 0xaf, 0x4d, 0xb5, 0x97, 0x94, 0xe6, + 0x8d, 0x41, 0x6f, 0x03, 0x9f, 0xd8, 0xe8, 0x75, 0xc8, 0x90, 0xa4, 0xdd, 0x13, 0x07, 0xdb, 0xe5, + 0x34, 0x4d, 0x23, 0x79, 0x57, 0xc9, 0x33, 0x12, 0x21, 0xef, 0xf2, 0x91, 0xe2, 0x68, 0xe5, 0x0c, + 0xcd, 0x90, 0xe5, 0xcc, 0x12, 0x56, 0x34, 0xf1, 0x53, 0xc8, 0x05, 0xdf, 0x8c, 0x10, 0x14, 0xa4, + 0x7a, 0x6b, 0x67, 0xb3, 0x2e, 0xef, 0x6c, 0x6d, 0x6c, 0x3d, 0x7d, 0xb1, 0x55, 0x9a, 0x41, 0x97, + 0xa0, 0xc4, 0x69, 0x1b, 0xf5, 0xcf, 0xe4, 0x27, 0xcd, 0xcd, 0x66, 0xbb, 0x24, 0x54, 0x52, 0xdf, + 0xfd, 0xd1, 0xb5, 0x99, 0xf5, 0x54, 0x7a, 0xae, 0x34, 0x2f, 0xfe, 0x48, 0x00, 0x78, 0x8c, 0x1d, + 0xde, 0x63, 0xd0, 0x2a, 0xcc, 0xed, 0xd3, 0x5a, 0x95, 0x05, 0xaa, 0xba, 0xeb, 0x91, 0xd5, 0x0f, + 0xf4, 0xae, 0xd5, 0xf4, 0x8f, 0x4f, 0x97, 0x66, 0x7e, 0x72, 0xba, 0x24, 0x48, 0x9c, 0x13, 0x3d, + 0x83, 0xec, 0x01, 0x3e, 0x91, 0xf9, 0xd8, 0x2d, 0x27, 0xa8, 0x1e, 0xdf, 0x0f, 0x08, 0x3a, 0x38, + 0xac, 0xba, 0xc3, 0xb8, 0x1a, 0x18, 0xf2, 0x55, 0xc2, 0x51, 0x6d, 0x39, 0x16, 0x36, 0x3a, 0xce, + 0xbe, 0x04, 0x07, 0xf8, 0xe4, 0x09, 0x93, 0x21, 0xfe, 0xa1, 0x00, 0x59, 0x5a, 0x4a, 0xa6, 0x78, + 0x54, 0x1b, 0x2a, 0xe6, 0x8d, 0x73, 0x5b, 0x29, 0xa2, 0x9c, 0x55, 0x98, 0x3d, 0x54, 0xba, 0x03, + 0x4c, 0x4b, 0x98, 0xbd, 0x5f, 0x8e, 0x90, 0xf1, 0x9c, 0xa4, 0x4b, 0x2c, 0x1b, 0x7a, 0x08, 0x39, + 0xdd, 0x70, 0xb0, 0xe1, 0xc8, 0x8c, 0x2d, 0x79, 0x0e, 0x5b, 0x96, 0xe5, 0xa6, 0x0f, 0xe2, 0x3f, + 0x16, 0x00, 0xb6, 0x07, 0xb1, 0xea, 0xf9, 0x9b, 0x53, 0x96, 0x7f, 0x35, 0x45, 0x58, 0xdd, 0x5a, + 0x5c, 0x81, 0x39, 0xdd, 0xe8, 0xea, 0x06, 0x2b, 0x7f, 0x5a, 0xe2, 0x4f, 0xe8, 0x12, 0xcc, 0xee, + 0x76, 0x75, 0x43, 0xa3, 0x63, 0x26, 0x2d, 0xb1, 0x07, 0x51, 0x82, 0x2c, 0x2d, 0x75, 0x8c, 0x7a, + 0x17, 0x4f, 0x13, 0x70, 0xb9, 0x66, 0x1a, 0x9a, 0x4e, 0x86, 0xad, 0xd2, 0xfd, 0x5a, 0x68, 0x65, + 0x1d, 0x2e, 0x69, 0xb8, 0x6f, 0x61, 0x55, 0x71, 0xb0, 0x26, 0xe3, 0xe3, 0xfe, 0x94, 0x6d, 0x8c, + 0x7c, 0xae, 0xfa, 0x71, 0x9f, 0xd2, 0xc8, 0xc8, 0x26, 0x02, 0xd8, 0xc8, 0x9e, 0x23, 0x66, 0x55, + 0x4a, 0xe3, 0xe3, 0x3e, 0x1b, 0xd9, 0x91, 0x6a, 0x46, 0xdf, 0x84, 0xab, 0x4a, 0xb7, 0x6b, 0x1e, + 0xc9, 0xfa, 0x9e, 0xac, 0x99, 0xd8, 0x96, 0x0d, 0xd3, 0x91, 0xf1, 0xb1, 0x6e, 0x3b, 0xd4, 0x6c, + 0xa4, 0xa5, 0x45, 0x9a, 0xdc, 0xdc, 0x5b, 0x33, 0xb1, 0xbd, 0x65, 0x3a, 0x75, 0x92, 0x14, 0x68, + 0xca, 0xf9, 0x60, 0x53, 0x8a, 0xbf, 0x04, 0x57, 0x86, 0xf5, 0x1b, 0x67, 0xfb, 0xfd, 0x91, 0x00, + 0x85, 0xa6, 0xa1, 0x3b, 0x5f, 0x8b, 0x86, 0xf3, 0xf4, 0x99, 0x0c, 0xea, 0xf3, 0x2e, 0x94, 0xf6, + 0x14, 0xbd, 0xfb, 0xd4, 0x68, 0x9b, 0xbd, 0x5d, 0xdb, 0x31, 0x0d, 0x6c, 0x73, 0x85, 0x8f, 0xd0, + 0xc5, 0xe7, 0x50, 0xf4, 0x6a, 0x13, 0xa7, 0x9a, 0x1c, 0x28, 0x35, 0x0d, 0xd5, 0xc2, 0x3d, 0x6c, + 0xc4, 0xaa, 0xa7, 0x37, 0x20, 0xa3, 0xbb, 0x72, 0xa9, 0xae, 0x92, 0x92, 0x4f, 0x10, 0x07, 0xb0, + 0x10, 0x78, 0x6b, 0x9c, 0xe6, 0x92, 0x4c, 0x58, 0xf8, 0x48, 0xf6, 0xdb, 0x88, 0x4c, 0x58, 0xf8, + 0x88, 0x99, 0xb7, 0x16, 0xe4, 0xd7, 0x70, 0x17, 0x3b, 0x38, 0xc6, 0x9a, 0x8a, 0x3b, 0x50, 0x70, + 0x85, 0xc6, 0xd9, 0x30, 0xbf, 0x25, 0x00, 0xe2, 0x72, 0x15, 0xa3, 0x13, 0x67, 0x89, 0xd1, 0x12, + 0x71, 0x3f, 0x9c, 0x81, 0x65, 0xb0, 0x29, 0x9f, 0xf5, 0x49, 0x60, 0x24, 0x3a, 0xeb, 0xfb, 0x43, + 0x36, 0x15, 0x1c, 0xb2, 0xdc, 0x05, 0x3a, 0x82, 0xc5, 0x50, 0xc1, 0xe2, 0x6d, 0xbe, 0x14, 0x2d, + 0x53, 0xe2, 0x7a, 0x32, 0xe8, 0xe7, 0x51, 0xa2, 0xf8, 0x7d, 0x01, 0x16, 0x6a, 0x5d, 0xac, 0x58, + 0xb1, 0x6b, 0xe4, 0x5b, 0x90, 0xd6, 0xb0, 0xa2, 0xd1, 0x2a, 0xb3, 0x81, 0xfd, 0x66, 0x40, 0x0a, + 0xf1, 0x86, 0xab, 0xfb, 0x5d, 0xb5, 0xda, 0x76, 0xfd, 0x64, 0x3e, 0xba, 0x3d, 0x26, 0xf1, 0x33, + 0x40, 0xc1, 0x92, 0xc5, 0xd9, 0x11, 0x7e, 0x2f, 0x01, 0x48, 0xc2, 0x87, 0xd8, 0x72, 0x62, 0xaf, + 0xf6, 0x1a, 0x64, 0x1d, 0xc5, 0xea, 0x60, 0x47, 0x26, 0x08, 0xe0, 0x22, 0x35, 0x07, 0xc6, 0x47, + 0xc8, 0xa8, 0x0d, 0xb7, 0xb1, 0xa1, 0xec, 0x76, 0x31, 0x95, 0x22, 0xef, 0x9a, 0x03, 0x43, 0x93, + 0x75, 0x07, 0x5b, 0x8a, 0x63, 0x5a, 0xb2, 0xd9, 0x77, 0xf4, 0x9e, 0xfe, 0x05, 0x75, 0xfe, 0x79, + 0x57, 0x7b, 0x8b, 0x65, 0x27, 0xcc, 0xab, 0x24, 0x73, 0x93, 0xe7, 0x7d, 0x1a, 0xc8, 0x8a, 0xaa, + 0xb0, 0xa8, 0x77, 0x0c, 0xd3, 0xc2, 0x72, 0x47, 0x95, 0x9d, 0x7d, 0x0b, 0xdb, 0xfb, 0x66, 0xd7, + 0x9d, 0x90, 0x16, 0x58, 0xd2, 0x63, 0xb5, 0xed, 0x26, 0x88, 0x9f, 0xc3, 0x62, 0x48, 0x4b, 0x71, + 0x36, 0xc1, 0xff, 0x10, 0x20, 0xdb, 0x52, 0x15, 0x23, 0x4e, 0xdd, 0x7f, 0x0a, 0x59, 0x5b, 0x55, + 0x0c, 0x79, 0xcf, 0xb4, 0x7a, 0x8a, 0x43, 0xeb, 0x55, 0x08, 0xe9, 0xde, 0xc3, 0x00, 0xaa, 0x62, + 0x3c, 0xa2, 0x99, 0x24, 0xb0, 0xbd, 0xdf, 0xc3, 0xfe, 0xeb, 0xec, 0x57, 0xf7, 0x5f, 0xd9, 0xf0, + 0x5e, 0x4f, 0xa5, 0x93, 0xa5, 0x94, 0xf8, 0x17, 0x02, 0xe4, 0x58, 0x95, 0xe3, 0x1c, 0xde, 0x1f, + 0x40, 0xca, 0x32, 0x8f, 0xd8, 0xf0, 0xce, 0xde, 0x7f, 0x3d, 0x42, 0xc4, 0x06, 0x3e, 0x09, 0xce, + 0x9f, 0x34, 0x3b, 0x5a, 0x05, 0xee, 0xa5, 0xca, 0x94, 0x3b, 0x39, 0x2d, 0x37, 0x30, 0x2e, 0x89, + 0xc8, 0xb8, 0x0d, 0xc5, 0x5d, 0xc5, 0x51, 0xf7, 0x65, 0x8b, 0x17, 0x92, 0xcc, 0xb5, 0xc9, 0x3b, + 0x39, 0xa9, 0x40, 0xc9, 0x6e, 0xd1, 0x6d, 0x52, 0x73, 0x36, 0xde, 0x6c, 0xfc, 0x97, 0xac, 0xcd, + 0xff, 0x8f, 0xc0, 0xc7, 0x90, 0x5b, 0xf3, 0xbf, 0x6c, 0x4d, 0xff, 0x83, 0x04, 0x5c, 0xad, 0xed, + 0x63, 0xf5, 0xa0, 0x66, 0x1a, 0xb6, 0x6e, 0x3b, 0x44, 0x77, 0x71, 0xb6, 0xff, 0xeb, 0x90, 0x39, + 0xd2, 0x9d, 0x7d, 0x59, 0xd3, 0xf7, 0xf6, 0xa8, 0xb5, 0x4d, 0x4b, 0x69, 0x42, 0x58, 0xd3, 0xf7, + 0xf6, 0xd0, 0x03, 0x48, 0xf5, 0x4c, 0x8d, 0x39, 0xf3, 0x85, 0xfb, 0x4b, 0x11, 0xe2, 0x69, 0xd1, + 0xec, 0x41, 0x6f, 0xd3, 0xd4, 0xb0, 0x44, 0x33, 0xa3, 0x6b, 0x00, 0x2a, 0xa1, 0xf6, 0x4d, 0xdd, + 0x70, 0xb8, 0x71, 0x0c, 0x50, 0x50, 0x03, 0x32, 0x0e, 0xb6, 0x7a, 0xba, 0xa1, 0x38, 0xb8, 0x3c, + 0x4b, 0x95, 0xf7, 0x76, 0x64, 0xc1, 0xfb, 0x5d, 0x5d, 0x55, 0xd6, 0xb0, 0xad, 0x5a, 0x7a, 0xdf, + 0x31, 0x2d, 0xae, 0x45, 0x9f, 0x59, 0xfc, 0x8d, 0x14, 0x94, 0x47, 0x75, 0x13, 0x67, 0x0f, 0xd9, + 0x86, 0x39, 0x0b, 0xdb, 0x83, 0xae, 0xc3, 0xfb, 0xc8, 0xfd, 0x71, 0x2a, 0x88, 0x28, 0x01, 0x5d, + 0xde, 0xe8, 0x3a, 0xbc, 0xd8, 0x5c, 0x4e, 0xe5, 0x5f, 0x0a, 0x30, 0xc7, 0x12, 0xd0, 0x3d, 0x48, + 0x5b, 0x64, 0x62, 0x90, 0x75, 0x8d, 0x96, 0x31, 0xb9, 0x7a, 0xe5, 0xec, 0x74, 0x69, 0x9e, 0x4e, + 0x16, 0xcd, 0xb5, 0x2f, 0xfd, 0x9f, 0xd2, 0x3c, 0xcd, 0xd7, 0xd4, 0x48, 0x6b, 0xd9, 0x8e, 0x62, + 0x39, 0x74, 0xe1, 0x29, 0xc1, 0x10, 0x12, 0x25, 0x6c, 0xe0, 0x13, 0xb4, 0x0e, 0x73, 0xb6, 0xa3, + 0x38, 0x03, 0x9b, 0xb7, 0xd7, 0x85, 0x0a, 0xdb, 0xa2, 0x9c, 0x12, 0x97, 0x40, 0xdc, 0x2d, 0x0d, + 0x3b, 0x8a, 0xde, 0xa5, 0x0d, 0x98, 0x91, 0xf8, 0x93, 0xf8, 0xdb, 0x02, 0xcc, 0xb1, 0xac, 0xe8, + 0x2a, 0x2c, 0x4a, 0x2b, 0x5b, 0x8f, 0xeb, 0x72, 0x73, 0x6b, 0xad, 0xde, 0xae, 0x4b, 0x9b, 0xcd, + 0xad, 0x95, 0x76, 0xbd, 0x34, 0x83, 0xae, 0x00, 0x72, 0x13, 0x6a, 0x4f, 0xb7, 0x5a, 0xcd, 0x56, + 0xbb, 0xbe, 0xd5, 0x2e, 0x09, 0x74, 0x4d, 0x85, 0xd2, 0x03, 0xd4, 0x04, 0x7a, 0x1b, 0xae, 0x0f, + 0x53, 0xe5, 0x56, 0x7b, 0xa5, 0xdd, 0x92, 0xeb, 0xad, 0x76, 0x73, 0x73, 0xa5, 0x5d, 0x5f, 0x2b, + 0x25, 0x27, 0xe4, 0x22, 0x2f, 0x91, 0xa4, 0x7a, 0xad, 0x5d, 0x4a, 0x89, 0x0e, 0x5c, 0x96, 0xb0, + 0x6a, 0xf6, 0xfa, 0x03, 0x07, 0x93, 0x52, 0xda, 0x71, 0x8e, 0x94, 0xab, 0x30, 0xaf, 0x59, 0x27, + 0xb2, 0x35, 0x30, 0xf8, 0x38, 0x99, 0xd3, 0xac, 0x13, 0x69, 0x60, 0x88, 0xff, 0x50, 0x80, 0x2b, + 0xc3, 0xaf, 0x8d, 0xb3, 0x13, 0x3e, 0x83, 0xac, 0xa2, 0x69, 0x58, 0x93, 0x35, 0xdc, 0x75, 0x14, + 0xee, 0x12, 0xdd, 0x0d, 0x48, 0xe2, 0xcb, 0x85, 0x55, 0x6f, 0xb9, 0x70, 0xf3, 0x79, 0xad, 0x46, + 0x0b, 0xb2, 0x46, 0x38, 0x5c, 0xf3, 0x43, 0x85, 0x50, 0x8a, 0xf8, 0x83, 0x14, 0xe4, 0xeb, 0x86, + 0xd6, 0x3e, 0x8e, 0x75, 0x2e, 0xb9, 0x02, 0x73, 0xaa, 0xd9, 0xeb, 0xe9, 0x8e, 0xab, 0x20, 0xf6, + 0x84, 0x7e, 0x2e, 0xe0, 0xca, 0x26, 0xa7, 0x70, 0xe8, 0x7c, 0x27, 0x16, 0xfd, 0x32, 0x5c, 0x25, + 0x56, 0xd3, 0x32, 0x94, 0xae, 0xcc, 0xa4, 0xc9, 0x8e, 0xa5, 0x77, 0x3a, 0xd8, 0xe2, 0x4b, 0x94, + 0x77, 0x22, 0xca, 0xd9, 0xe4, 0x1c, 0x35, 0xca, 0xd0, 0x66, 0xf9, 0xa5, 0xcb, 0x7a, 0x14, 0x19, + 0x7d, 0x02, 0x40, 0xa6, 0x22, 0xba, 0xec, 0x69, 0x73, 0x7b, 0x34, 0x6e, 0xdd, 0xd3, 0x35, 0x41, + 0x84, 0x81, 0x3c, 0xdb, 0xe8, 0x19, 0x94, 0x74, 0x43, 0xde, 0xeb, 0xea, 0x9d, 0x7d, 0x47, 0x3e, + 0xb2, 0x74, 0x07, 0xdb, 0xe5, 0x05, 0x2a, 0x23, 0xaa, 0xa9, 0x5b, 0x7c, 0xf9, 0x56, 0x7b, 0x41, + 0x72, 0x72, 0x69, 0x05, 0xdd, 0x78, 0x44, 0xf9, 0x29, 0xd1, 0x46, 0xcb, 0x04, 0x0a, 0xbd, 0x1c, + 0xe8, 0x16, 0x96, 0xef, 0xf5, 0x55, 0xba, 0x0e, 0x92, 0x5e, 0x2d, 0x9c, 0x9d, 0x2e, 0x81, 0xc4, + 0xc8, 0xf7, 0xb6, 0x6b, 0x04, 0x1a, 0xb1, 0xdf, 0x7d, 0x95, 0xa8, 0xbd, 0x6f, 0xea, 0xb6, 0x69, + 0xd0, 0xc5, 0xce, 0xb4, 0xc4, 0x9f, 0xd0, 0x3b, 0x50, 0x72, 0x8e, 0x0d, 0x79, 0x1f, 0x2b, 0x96, + 0xb3, 0x8b, 0x15, 0x87, 0xcc, 0xcf, 0x40, 0x73, 0x14, 0x9d, 0x63, 0xa3, 0x11, 0x20, 0xaf, 0xa7, + 0xd2, 0xf3, 0xa5, 0xf4, 0x7a, 0x2a, 0x9d, 0x2e, 0x65, 0xc4, 0xff, 0x24, 0x40, 0xc1, 0xed, 0x1b, + 0x71, 0x76, 0xe3, 0x3b, 0x50, 0x32, 0x0d, 0x2c, 0xf7, 0xf7, 0x15, 0x1b, 0xf3, 0xb6, 0xe4, 0xb3, + 0x43, 0xc1, 0x34, 0xf0, 0x36, 0x21, 0xb3, 0x96, 0x41, 0xdb, 0xb0, 0x60, 0x3b, 0x4a, 0x47, 0x37, + 0x3a, 0xb2, 0xf7, 0x19, 0x80, 0x7a, 0x16, 0x53, 0x22, 0x81, 0x12, 0xe7, 0xf6, 0xe8, 0x21, 0x97, + 0xe2, 0x8f, 0x05, 0x58, 0x58, 0xd1, 0x7a, 0xba, 0xd1, 0xea, 0x77, 0xf5, 0x58, 0x17, 0x18, 0xde, + 0x86, 0x8c, 0x4d, 0x64, 0xfa, 0xd6, 0xd9, 0x87, 0x8b, 0x69, 0x9a, 0x42, 0xcc, 0xf4, 0x13, 0x28, + 0xe2, 0xe3, 0xbe, 0xce, 0xbe, 0x3d, 0x30, 0x94, 0x93, 0x9a, 0xbe, 0x6e, 0x05, 0x9f, 0x97, 0x24, + 0xf1, 0x3a, 0x7d, 0x06, 0x28, 0x58, 0xa5, 0x38, 0x81, 0xc6, 0x67, 0xb0, 0x48, 0x45, 0xef, 0x18, + 0x76, 0xcc, 0xfa, 0x12, 0x7f, 0x11, 0x2e, 0x85, 0x45, 0xc7, 0x59, 0xee, 0x17, 0xbc, 0x95, 0x37, + 0xb1, 0x15, 0x2b, 0x42, 0xf5, 0x74, 0xcd, 0x05, 0xc7, 0x59, 0xe6, 0x5f, 0x13, 0xe0, 0x35, 0x2a, + 0x9b, 0x7e, 0x9e, 0xd9, 0xc3, 0xd6, 0x13, 0xac, 0xd8, 0xb1, 0xc2, 0xeb, 0xb7, 0x60, 0x8e, 0xc1, + 0x64, 0xda, 0x3f, 0x67, 0x57, 0xb3, 0xc4, 0xcd, 0x68, 0x39, 0xa6, 0x45, 0xdc, 0x0c, 0x9e, 0x24, + 0x2a, 0x50, 0x89, 0x2a, 0x45, 0x9c, 0x35, 0xfd, 0xdb, 0x02, 0x2c, 0x70, 0x0f, 0x8f, 0x74, 0xe5, + 0xda, 0x3e, 0x71, 0x70, 0x50, 0x1d, 0xb2, 0x2a, 0xfd, 0x25, 0x3b, 0x27, 0x7d, 0x4c, 0xe5, 0x17, + 0x26, 0x39, 0x87, 0x8c, 0xad, 0x7d, 0xd2, 0xc7, 0xc4, 0xc3, 0x74, 0x7f, 0x13, 0x45, 0x05, 0x2a, + 0x39, 0xd1, 0xbd, 0xa4, 0xe3, 0x88, 0xe6, 0x75, 0xfd, 0x34, 0xae, 0x83, 0x7f, 0x94, 0xe4, 0x4a, + 0x60, 0xef, 0xe0, 0xd9, 0x63, 0x75, 0x28, 0x3e, 0x87, 0x2b, 0x81, 0xa5, 0xf3, 0x60, 0xc5, 0x13, + 0x17, 0xa8, 0x78, 0x60, 0xf9, 0xdd, 0xa7, 0xa2, 0xcf, 0x20, 0xb0, 0xc0, 0x2e, 0xb3, 0x3a, 0xb9, + 0x50, 0xe5, 0x22, 0xea, 0x58, 0xf0, 0xa5, 0x30, 0xba, 0x8d, 0x6a, 0x90, 0xc6, 0xc7, 0x7d, 0x59, + 0xc3, 0xb6, 0xca, 0x0d, 0x97, 0x18, 0x25, 0x90, 0x14, 0x65, 0xc4, 0x79, 0x9f, 0xc7, 0xc7, 0x7d, + 0x42, 0x44, 0x3b, 0x64, 0xde, 0x74, 0xe7, 0x75, 0x5a, 0x6c, 0xfb, 0x7c, 0x2c, 0xe0, 0xf7, 0x14, + 0x2e, 0xae, 0xe8, 0x4d, 0xe9, 0x4c, 0x84, 0xf8, 0x43, 0x01, 0x5e, 0x8f, 0x6c, 0xb5, 0x38, 0x27, + 0xb2, 0x4f, 0x20, 0x45, 0x2b, 0x9f, 0xb8, 0x60, 0xe5, 0x29, 0x97, 0xf8, 0xdd, 0x04, 0x1f, 0xe3, + 0x12, 0xee, 0x9a, 0x44, 0xb1, 0xb1, 0x2f, 0xa1, 0x3d, 0x85, 0xfc, 0xa1, 0xe9, 0x60, 0xcb, 0x6b, + 0xf6, 0xc4, 0x85, 0x9b, 0x3d, 0x47, 0x05, 0xb8, 0x2d, 0xfe, 0x1c, 0x16, 0x0c, 0xd3, 0x90, 0xc3, + 0x42, 0x2f, 0xde, 0x97, 0x8a, 0x86, 0x69, 0x3c, 0x0f, 0xc8, 0xf5, 0xec, 0xcc, 0x90, 0x26, 0xe2, + 0xb4, 0x33, 0xdf, 0x13, 0x60, 0xd1, 0xf3, 0x74, 0x62, 0x76, 0x77, 0x3f, 0x80, 0xa4, 0x61, 0x1e, + 0x5d, 0x64, 0x89, 0x92, 0xe4, 0x27, 0xb3, 0x5e, 0xb8, 0x44, 0x71, 0xd6, 0xf7, 0x5f, 0x25, 0x20, + 0xf3, 0xb8, 0x16, 0x67, 0x2d, 0x3f, 0xe1, 0xcb, 0xdf, 0xac, 0xbd, 0xa3, 0x7a, 0xbb, 0xf7, 0xbe, + 0xea, 0xe3, 0xda, 0x06, 0x3e, 0x71, 0x7b, 0x3b, 0xe1, 0x42, 0x2b, 0x90, 0x09, 0x2f, 0x94, 0x4e, + 0xa9, 0x29, 0x9f, 0xab, 0x82, 0x61, 0x96, 0xca, 0x75, 0xc3, 0x31, 0x84, 0x88, 0x70, 0x0c, 0xf2, + 0x1a, 0xcf, 0x53, 0x4c, 0x5c, 0xe4, 0x35, 0x01, 0x17, 0x71, 0xb6, 0x34, 0x27, 0x3e, 0x03, 0x20, + 0xd5, 0x89, 0xb3, 0x49, 0x7e, 0x3d, 0x09, 0x85, 0xed, 0x81, 0xbd, 0x1f, 0x73, 0xef, 0xab, 0x01, + 0xf4, 0x07, 0xf6, 0x3e, 0x19, 0x91, 0xc7, 0x06, 0xaf, 0xf3, 0x39, 0x91, 0x1e, 0x6e, 0xa5, 0x19, + 0x5f, 0xfb, 0xd8, 0x40, 0x0d, 0x2e, 0x04, 0xcb, 0x7e, 0xb8, 0xc8, 0x5b, 0x93, 0x90, 0x65, 0xfb, + 0xd8, 0xd8, 0xc4, 0x1e, 0xa4, 0x64, 0x92, 0x30, 0x91, 0xf4, 0x09, 0xcc, 0x93, 0x07, 0xd9, 0x31, + 0x2f, 0xd2, 0xcc, 0x73, 0x84, 0xa7, 0x6d, 0xa2, 0x87, 0x90, 0x61, 0xdc, 0x64, 0xf6, 0x9b, 0xa3, + 0xb3, 0x5f, 0x54, 0x5d, 0xb8, 0x1a, 0xe9, 0xbc, 0x97, 0xa6, 0xac, 0x64, 0xae, 0xbb, 0x04, 0xb3, + 0x7b, 0xa6, 0xa5, 0xba, 0x1f, 0x73, 0xd9, 0x03, 0x6b, 0x4f, 0x06, 0x69, 0xd6, 0x53, 0xe9, 0x4c, + 0x09, 0xc4, 0xdf, 0x16, 0xa0, 0xe8, 0x35, 0x44, 0x9c, 0x13, 0x42, 0x2d, 0xa4, 0xc5, 0x8b, 0x37, + 0x05, 0x51, 0xa0, 0xf8, 0x6f, 0xa8, 0x47, 0xa4, 0x9a, 0x87, 0xb4, 0x65, 0xe2, 0xec, 0x29, 0x0f, + 0x59, 0x30, 0x50, 0xe2, 0xa2, 0xad, 0x4b, 0xe3, 0x82, 0xee, 0xc1, 0x25, 0xbd, 0x47, 0xec, 0xb9, + 0xee, 0x74, 0x4f, 0x38, 0x6c, 0x73, 0xb0, 0xfb, 0xd5, 0x78, 0xd1, 0x4f, 0xab, 0xb9, 0x49, 0xe2, + 0xef, 0xd1, 0xd5, 0x6a, 0xbf, 0x26, 0x71, 0xaa, 0xba, 0x09, 0x79, 0x8b, 0x89, 0x26, 0x6e, 0xcd, + 0x05, 0xb5, 0x9d, 0xf3, 0x58, 0x89, 0xc2, 0x7f, 0x37, 0x01, 0xc5, 0x67, 0x03, 0x6c, 0x9d, 0x7c, + 0x9d, 0xd4, 0x7d, 0x0b, 0x8a, 0x47, 0x8a, 0xee, 0xc8, 0x7b, 0xa6, 0x25, 0x0f, 0xfa, 0x9a, 0xe2, + 0xb8, 0xd1, 0x26, 0x79, 0x42, 0x7e, 0x64, 0x5a, 0x3b, 0x94, 0x88, 0x30, 0xa0, 0x03, 0xc3, 0x3c, + 0x32, 0x64, 0x42, 0xa6, 0x40, 0xf9, 0xd8, 0xe0, 0x4b, 0xc8, 0xab, 0x1f, 0xfe, 0xc7, 0xd3, 0xa5, + 0x07, 0x53, 0xc5, 0x99, 0xd1, 0x98, 0xba, 0xc1, 0x40, 0xd7, 0xaa, 0x3b, 0x3b, 0xcd, 0x35, 0xa9, + 0x44, 0x45, 0xbe, 0x60, 0x12, 0xdb, 0xc7, 0x86, 0x2d, 0xfe, 0xdd, 0x04, 0x94, 0x7c, 0x1d, 0xc5, + 0xd9, 0x90, 0x75, 0xc8, 0xbe, 0x1c, 0x60, 0x4b, 0x7f, 0x85, 0x66, 0x04, 0xce, 0x48, 0xcc, 0xce, + 0x5d, 0x58, 0x70, 0x8e, 0x0d, 0x99, 0x45, 0x01, 0xb2, 0xc0, 0x0f, 0x37, 0x60, 0xa1, 0xe8, 0x90, + 0x32, 0x13, 0x3a, 0x0d, 0xfa, 0xb0, 0xd1, 0xe7, 0x90, 0x0b, 0x69, 0x2b, 0xf9, 0xd5, 0xb4, 0x95, + 0x3d, 0x0a, 0x28, 0xea, 0x0f, 0x05, 0x40, 0x54, 0x51, 0x4d, 0xb6, 0xc6, 0xff, 0x75, 0xe9, 0x4f, + 0x77, 0xa0, 0x44, 0x63, 0x36, 0x65, 0x7d, 0x4f, 0xee, 0xe9, 0xb6, 0xad, 0x1b, 0x1d, 0xde, 0xa1, + 0x0a, 0x94, 0xde, 0xdc, 0xdb, 0x64, 0x54, 0xf1, 0xaf, 0xc1, 0x62, 0xa8, 0x02, 0x71, 0x36, 0xf6, + 0x0d, 0xc8, 0xed, 0xb1, 0x4f, 0xb0, 0x54, 0x38, 0x5f, 0x1e, 0xcc, 0x52, 0x1a, 0x7b, 0x9f, 0xf8, + 0xe7, 0x09, 0xb8, 0x24, 0x61, 0xdb, 0xec, 0x1e, 0xe2, 0xf8, 0x55, 0xd8, 0x00, 0xfe, 0xed, 0x45, + 0x7e, 0x25, 0x4d, 0x66, 0x18, 0x33, 0x9b, 0xe6, 0xc2, 0x6b, 0xec, 0x6f, 0x4f, 0xee, 0xb1, 0xa3, + 0xab, 0xea, 0x7c, 0xa5, 0x2e, 0x15, 0x5a, 0xa9, 0x33, 0xa1, 0xc8, 0xbe, 0x1e, 0x6b, 0xb2, 0x8d, + 0x5f, 0x1a, 0x83, 0x9e, 0x0b, 0x86, 0xaa, 0x93, 0x0a, 0xd9, 0x64, 0x2c, 0x2d, 0xfc, 0x72, 0x6b, + 0xd0, 0xa3, 0xbe, 0xf3, 0xea, 0x15, 0x52, 0xde, 0xb3, 0xd3, 0xa5, 0x42, 0x28, 0xcd, 0x96, 0x0a, + 0xba, 0xf7, 0x4c, 0xa4, 0x8b, 0xdf, 0x86, 0xcb, 0x43, 0xca, 0x8e, 0xd3, 0xe3, 0xf9, 0x17, 0x49, + 0x78, 0x2d, 0x2c, 0x3e, 0x6e, 0x88, 0xf3, 0x75, 0x6f, 0xd0, 0x06, 0xe4, 0x7b, 0xba, 0xf1, 0x6a, + 0xab, 0x97, 0xb9, 0x9e, 0x6e, 0x78, 0xb4, 0xa8, 0xae, 0x31, 0xf7, 0x33, 0xed, 0x1a, 0x0a, 0x54, + 0xa2, 0xda, 0x2e, 0xce, 0xfe, 0xf1, 0x5d, 0x01, 0x72, 0x71, 0x2f, 0xcb, 0xbd, 0x5a, 0x14, 0x9c, + 0xd8, 0x86, 0xfc, 0xcf, 0x60, 0x1d, 0xef, 0x77, 0x05, 0x40, 0x6d, 0x6b, 0x60, 0x10, 0x50, 0xfb, + 0xc4, 0xec, 0xc4, 0x59, 0xcd, 0x4b, 0x30, 0xab, 0x1b, 0x1a, 0x3e, 0xa6, 0xd5, 0x4c, 0x49, 0xec, + 0x21, 0xf4, 0x29, 0x31, 0x39, 0xd5, 0xa7, 0x44, 0xf1, 0x73, 0x58, 0x0c, 0x15, 0x31, 0xce, 0xfa, + 0xff, 0xb7, 0x04, 0x2c, 0xf2, 0x8a, 0xc4, 0xbe, 0x82, 0xf9, 0x4d, 0x98, 0xed, 0x12, 0x99, 0x13, + 0xda, 0x99, 0xbe, 0xd3, 0x6d, 0x67, 0x9a, 0x19, 0xfd, 0x3c, 0x40, 0xdf, 0xc2, 0x87, 0x32, 0x63, + 0x4d, 0x4e, 0xc5, 0x9a, 0x21, 0x1c, 0x94, 0x80, 0xbe, 0x2f, 0x40, 0x91, 0x0c, 0xe8, 0xbe, 0x65, + 0xf6, 0x4d, 0x9b, 0xf8, 0x2c, 0xf6, 0x74, 0x30, 0xe7, 0xd9, 0xd9, 0xe9, 0x52, 0x7e, 0x53, 0x37, + 0xb6, 0x39, 0x63, 0xbb, 0x35, 0xf5, 0x26, 0x00, 0x77, 0x2b, 0x44, 0xb5, 0xd6, 0x35, 0xd5, 0x03, + 0xff, 0xe3, 0x18, 0xb1, 0x2c, 0x9e, 0x38, 0x5b, 0xfc, 0x0f, 0x02, 0x5c, 0xfa, 0x99, 0x2d, 0x17, + 0xff, 0xff, 0x50, 0xb6, 0xf8, 0x1c, 0x4a, 0xf4, 0x47, 0xd3, 0xd8, 0x33, 0xe3, 0x5c, 0xb8, 0xff, + 0xdf, 0x02, 0x2c, 0x04, 0x04, 0xc7, 0xe9, 0xe0, 0xbc, 0xaa, 0x9e, 0xf2, 0x2c, 0x1c, 0xc6, 0x99, + 0x4e, 0x55, 0x52, 0x8e, 0x67, 0x67, 0x9d, 0xb2, 0x0a, 0x39, 0x4c, 0xac, 0x18, 0x5d, 0xe2, 0xdd, + 0x65, 0x1b, 0x51, 0x86, 0x56, 0xf4, 0xb3, 0x5e, 0x86, 0xd5, 0x13, 0xf1, 0x17, 0x89, 0x87, 0x15, + 0x1c, 0x94, 0x71, 0x0e, 0xf9, 0x7f, 0x9a, 0x80, 0x2b, 0x35, 0xf6, 0x09, 0xdc, 0x8d, 0x09, 0x89, + 0xb3, 0x23, 0x96, 0x61, 0xfe, 0x10, 0x5b, 0xb6, 0x6e, 0xb2, 0xd9, 0x3e, 0x2f, 0xb9, 0x8f, 0xa8, + 0x02, 0x69, 0xdb, 0x50, 0xfa, 0xf6, 0xbe, 0xe9, 0x7e, 0x4e, 0xf4, 0x9e, 0xbd, 0xf8, 0x95, 0xd9, + 0x57, 0x8f, 0x5f, 0x99, 0x9b, 0x1c, 0xbf, 0x32, 0xff, 0x15, 0xe2, 0x57, 0xf8, 0xb7, 0xbb, 0x7f, + 0x2b, 0xc0, 0xd5, 0x11, 0xcd, 0xc5, 0xd9, 0x39, 0xbf, 0x03, 0x59, 0x95, 0x0b, 0x26, 0xf3, 0x03, + 0xfb, 0x30, 0xd9, 0x24, 0xd9, 0x5e, 0x11, 0xfa, 0x9c, 0x9d, 0x2e, 0x81, 0x5b, 0xd4, 0xe6, 0x1a, + 0x57, 0x0e, 0xf9, 0xad, 0x89, 0xbf, 0x9a, 0x87, 0x62, 0xfd, 0x98, 0x2d, 0xca, 0xb7, 0x98, 0x57, + 0x82, 0x1e, 0x41, 0xba, 0x6f, 0x99, 0x87, 0xba, 0x5b, 0x8d, 0x42, 0x28, 0x78, 0xc1, 0xad, 0xc6, + 0x10, 0xd7, 0x36, 0xe7, 0x90, 0x3c, 0x5e, 0xd4, 0x86, 0xcc, 0x13, 0x53, 0x55, 0xba, 0x8f, 0xf4, + 0xae, 0x3b, 0xd0, 0xde, 0x3f, 0x5f, 0x50, 0xd5, 0xe3, 0xd9, 0x56, 0x9c, 0x7d, 0xb7, 0x11, 0x3c, + 0x22, 0x6a, 0x42, 0xba, 0xe1, 0x38, 0x7d, 0x92, 0xc8, 0xc7, 0xdf, 0xed, 0x29, 0x84, 0x12, 0x16, + 0x37, 0xe2, 0xd6, 0x65, 0x47, 0x6d, 0x58, 0x78, 0x4c, 0xf7, 0x98, 0xd5, 0xba, 0xe6, 0x40, 0xab, + 0x99, 0xc6, 0x9e, 0xde, 0xe1, 0xd3, 0xc4, 0xad, 0x29, 0x64, 0x3e, 0xae, 0xb5, 0xa4, 0x51, 0x01, + 0x68, 0x05, 0xd2, 0xad, 0x07, 0x5c, 0x18, 0x73, 0x23, 0x6f, 0x4e, 0x21, 0xac, 0xf5, 0x40, 0xf2, + 0xd8, 0xd0, 0x3a, 0x64, 0x57, 0xbe, 0x18, 0x58, 0x98, 0x4b, 0x99, 0x1b, 0x1b, 0x39, 0x31, 0x2c, + 0x85, 0x72, 0x49, 0x41, 0x66, 0xd4, 0x82, 0xc2, 0x0b, 0xd3, 0x3a, 0xe8, 0x9a, 0x8a, 0x5b, 0xc3, + 0x79, 0x2a, 0xee, 0x1b, 0x53, 0x88, 0x73, 0x19, 0xa5, 0x21, 0x11, 0xe8, 0xdb, 0x50, 0x24, 0x8d, + 0xd1, 0x56, 0x76, 0xbb, 0x6e, 0x21, 0xd3, 0x54, 0xea, 0xbb, 0x53, 0x48, 0xf5, 0x38, 0xdd, 0xef, + 0x0c, 0x43, 0xa2, 0x2a, 0x12, 0xe4, 0x43, 0x9d, 0x00, 0x21, 0x48, 0xf5, 0x49, 0x7b, 0x0b, 0x34, + 0xb6, 0x89, 0xfe, 0x46, 0xef, 0xc1, 0xbc, 0x61, 0x6a, 0xd8, 0x1d, 0x21, 0xf9, 0xd5, 0x4b, 0x67, + 0xa7, 0x4b, 0x73, 0x5b, 0xa6, 0xc6, 0x1c, 0x28, 0xfe, 0x4b, 0x9a, 0x23, 0x99, 0x9a, 0x5a, 0xe5, + 0x3a, 0xa4, 0x48, 0xbb, 0x13, 0xc3, 0xb4, 0xab, 0xd8, 0x78, 0xc7, 0xd2, 0xb9, 0x34, 0xf7, 0xb1, + 0xf2, 0x0f, 0x12, 0x90, 0x68, 0x3d, 0x20, 0x10, 0x61, 0x77, 0xa0, 0x1e, 0x60, 0x87, 0xa7, 0xf3, + 0x27, 0x0a, 0x1d, 0x2c, 0xbc, 0xa7, 0x33, 0x4f, 0x2e, 0x23, 0xf1, 0x27, 0xf4, 0x26, 0x80, 0xa2, + 0xaa, 0xd8, 0xb6, 0x65, 0x77, 0xef, 0x61, 0x46, 0xca, 0x30, 0xca, 0x06, 0x3e, 0x21, 0x6c, 0x36, + 0x56, 0x2d, 0xec, 0xb8, 0x81, 0x59, 0xec, 0x89, 0xb0, 0x39, 0xb8, 0xd7, 0x97, 0x1d, 0xf3, 0x00, + 0x1b, 0xb4, 0x9f, 0x64, 0x88, 0xa9, 0xe9, 0xf5, 0xdb, 0x84, 0x40, 0xac, 0x24, 0x36, 0x34, 0xdf, + 0xa4, 0x65, 0x24, 0xef, 0x99, 0x88, 0xb4, 0x70, 0x47, 0xe7, 0x3b, 0xf7, 0x32, 0x12, 0x7f, 0x22, + 0x5a, 0x52, 0x06, 0xce, 0x3e, 0x6d, 0x89, 0x8c, 0x44, 0x7f, 0xa3, 0x5b, 0x50, 0x64, 0xb1, 0x9c, + 0x32, 0x36, 0x54, 0x99, 0x1a, 0xd7, 0x0c, 0x4d, 0xce, 0x33, 0x72, 0xdd, 0x50, 0x89, 0x29, 0x45, + 0x0f, 0x80, 0x13, 0xe4, 0x83, 0x9e, 0x4d, 0x74, 0x0a, 0x24, 0xd7, 0x6a, 0xf1, 0xec, 0x74, 0x29, + 0xdb, 0xa2, 0x09, 0x1b, 0x9b, 0x2d, 0x32, 0x41, 0xb1, 0x5c, 0x1b, 0x3d, 0xbb, 0xa9, 0x55, 0x7e, + 0x53, 0x80, 0xe4, 0xe3, 0x5a, 0xeb, 0xc2, 0x2a, 0x73, 0x0b, 0x9a, 0x0c, 0x14, 0xf4, 0x36, 0x14, + 0x77, 0xf5, 0x6e, 0x57, 0x37, 0x3a, 0xc4, 0x69, 0xfb, 0x0e, 0x56, 0x5d, 0x85, 0x15, 0x38, 0x79, + 0x9b, 0x51, 0xd1, 0x75, 0xc8, 0xaa, 0x16, 0xd6, 0xb0, 0xe1, 0xe8, 0x4a, 0xd7, 0xe6, 0x9a, 0x0b, + 0x92, 0x2a, 0xbf, 0x22, 0xc0, 0x2c, 0x1d, 0x01, 0xe8, 0x0d, 0xc8, 0xa8, 0xa6, 0xe1, 0x28, 0xba, + 0xc1, 0x4d, 0x59, 0x46, 0xf2, 0x09, 0x63, 0x8b, 0x77, 0x03, 0x72, 0x8a, 0xaa, 0x9a, 0x03, 0xc3, + 0x91, 0x0d, 0xa5, 0x87, 0x79, 0x31, 0xb3, 0x9c, 0xb6, 0xa5, 0xf4, 0x30, 0x5a, 0x02, 0xf7, 0xd1, + 0xdb, 0x52, 0x9a, 0x91, 0x80, 0x93, 0x36, 0xf0, 0x49, 0xe5, 0x5f, 0x0b, 0x90, 0x76, 0xc7, 0x0c, + 0x29, 0x46, 0x07, 0x1b, 0x2c, 0x40, 0xdd, 0x2d, 0x86, 0x47, 0x18, 0x9e, 0x2a, 0x33, 0xfe, 0x54, + 0x79, 0x09, 0x66, 0x1d, 0x32, 0x2c, 0x78, 0x09, 0xd8, 0x03, 0x5d, 0x3e, 0xef, 0x2a, 0x1d, 0xb6, + 0x7a, 0x98, 0x91, 0xd8, 0x03, 0xa9, 0x0c, 0x0f, 0x09, 0x66, 0x1a, 0xe1, 0x4f, 0xa4, 0xa4, 0x2c, + 0x70, 0x75, 0x17, 0x77, 0x74, 0x83, 0xf6, 0xa5, 0xa4, 0x04, 0x94, 0xb4, 0x4a, 0x28, 0xe8, 0x75, + 0xc8, 0xb0, 0x0c, 0xd8, 0xd0, 0x68, 0x87, 0x4a, 0x4a, 0x69, 0x4a, 0xa8, 0x1b, 0x5a, 0x05, 0x43, + 0xc6, 0x1b, 0x9c, 0xa4, 0xd9, 0x06, 0xb6, 0xa7, 0x48, 0xfa, 0x1b, 0xbd, 0x0f, 0x97, 0x5e, 0x0e, + 0x94, 0xae, 0xbe, 0x47, 0x17, 0x06, 0x69, 0x04, 0x3f, 0xd5, 0x19, 0xab, 0x09, 0xf2, 0xd2, 0xa8, + 0x04, 0xaa, 0x3a, 0x77, 0x2c, 0x27, 0xfd, 0xb1, 0x2c, 0xfe, 0xbe, 0x00, 0x0b, 0x2c, 0xc4, 0x8a, + 0x05, 0xd3, 0xc6, 0xe7, 0x87, 0x7c, 0x0c, 0x19, 0x4d, 0x71, 0x14, 0xb6, 0x49, 0x36, 0x31, 0x71, + 0x93, 0xac, 0xb7, 0x21, 0x43, 0x71, 0x14, 0xba, 0x51, 0x16, 0x41, 0x8a, 0xfc, 0x66, 0xfb, 0x89, + 0x25, 0xfa, 0x5b, 0xfc, 0x0c, 0x50, 0xb0, 0xa0, 0x71, 0x7a, 0x64, 0xef, 0xc0, 0x65, 0xa2, 0xeb, + 0xba, 0xa1, 0x5a, 0x27, 0x7d, 0x47, 0x37, 0x8d, 0xa7, 0xf4, 0xaf, 0x8d, 0x4a, 0x81, 0xef, 0x68, + 0xf4, 0xf3, 0x99, 0xf8, 0x07, 0x73, 0x90, 0xaf, 0x1f, 0xf7, 0x4d, 0x2b, 0xd6, 0x55, 0xb7, 0x55, + 0x98, 0xe7, 0x0b, 0x13, 0x13, 0x3e, 0x95, 0x0f, 0x19, 0x73, 0x37, 0x4e, 0x80, 0x33, 0xa2, 0x55, + 0x00, 0x16, 0xf0, 0x4a, 0xe3, 0xa4, 0x92, 0x17, 0xf8, 0xb2, 0x47, 0xd9, 0xe8, 0x66, 0x90, 0x2d, + 0xc8, 0xf6, 0x0e, 0x55, 0x55, 0xde, 0xd3, 0xbb, 0x0e, 0x8f, 0x1b, 0x8c, 0x0e, 0x71, 0xdf, 0x7c, + 0x5e, 0xab, 0x3d, 0xa2, 0x99, 0x58, 0xbc, 0x9d, 0xff, 0x2c, 0x01, 0x91, 0xc0, 0x7e, 0xa3, 0x77, + 0x81, 0x6f, 0x4c, 0x92, 0x6d, 0x77, 0x9b, 0xe1, 0x6a, 0xfe, 0xec, 0x74, 0x29, 0x23, 0x51, 0x6a, + 0xab, 0xd5, 0x96, 0x32, 0x2c, 0x43, 0xcb, 0x76, 0xd0, 0x5b, 0x90, 0x37, 0x7b, 0xba, 0x23, 0xbb, + 0x4e, 0x12, 0xf7, 0x28, 0x73, 0x84, 0xe8, 0x3a, 0x51, 0x17, 0xd9, 0xaf, 0x32, 0x3f, 0xfd, 0x7e, + 0x95, 0xbf, 0x21, 0xc0, 0x15, 0xae, 0x48, 0x79, 0x97, 0xc6, 0xe8, 0x2b, 0x5d, 0xdd, 0x39, 0x91, + 0x0f, 0x0e, 0xcb, 0x69, 0xea, 0xb7, 0xfe, 0x5c, 0x64, 0x83, 0x04, 0xfa, 0x41, 0xd5, 0x6d, 0x96, + 0x93, 0x27, 0x9c, 0x79, 0xe3, 0xb0, 0x6e, 0x38, 0xd6, 0xc9, 0xea, 0xd5, 0xb3, 0xd3, 0xa5, 0xc5, + 0xd1, 0xd4, 0xe7, 0xd2, 0xa2, 0x3d, 0xca, 0x82, 0x1a, 0x00, 0xd8, 0xeb, 0x87, 0x74, 0xc6, 0x88, + 0xf6, 0x3f, 0x22, 0x3b, 0xac, 0x14, 0xe0, 0x45, 0x77, 0xa0, 0xc4, 0xf7, 0x07, 0xed, 0xe9, 0x5d, + 0x2c, 0xdb, 0xfa, 0x17, 0x98, 0xce, 0x2d, 0x49, 0xa9, 0xc0, 0xe8, 0x44, 0x44, 0x4b, 0xff, 0x02, + 0x57, 0xbe, 0x03, 0xe5, 0x71, 0xa5, 0x0f, 0x0e, 0x81, 0x0c, 0xfb, 0x82, 0xfc, 0x51, 0x78, 0xf9, + 0x68, 0x8a, 0xae, 0xca, 0x97, 0x90, 0x3e, 0x4e, 0x7c, 0x24, 0x88, 0x7f, 0x2f, 0x01, 0xf9, 0xd5, + 0x41, 0xf7, 0xe0, 0x69, 0xbf, 0xc5, 0x0e, 0x53, 0x20, 0x66, 0x90, 0x19, 0x0a, 0x52, 0x40, 0x81, + 0x99, 0x41, 0x6a, 0x09, 0xf4, 0x2f, 0x30, 0x99, 0x9c, 0x02, 0xd1, 0x39, 0x7c, 0x0f, 0x02, 0xad, + 0x83, 0x4f, 0xa6, 0xdb, 0x04, 0x3e, 0x82, 0x72, 0x20, 0x23, 0x5d, 0xeb, 0x91, 0xb1, 0xe1, 0x58, + 0x3a, 0x66, 0xeb, 0x95, 0x49, 0x29, 0x10, 0x42, 0xd4, 0x24, 0xc9, 0x75, 0x96, 0x8a, 0xda, 0x90, + 0x23, 0x19, 0x4f, 0x64, 0x3a, 0x85, 0xb8, 0xeb, 0xc9, 0xf7, 0x22, 0xaa, 0x15, 0x2a, 0x77, 0x95, + 0xea, 0xa7, 0x46, 0x79, 0xe8, 0x4f, 0x29, 0x8b, 0x7d, 0x4a, 0xe5, 0x53, 0x28, 0x0d, 0x67, 0x08, + 0xea, 0x32, 0xc5, 0x74, 0x79, 0x29, 0xa8, 0xcb, 0x64, 0x40, 0x4f, 0xeb, 0xa9, 0x74, 0xaa, 0x34, + 0x2b, 0xfe, 0x59, 0x12, 0x0a, 0x6e, 0x37, 0x8b, 0x13, 0xe8, 0xac, 0xc2, 0x2c, 0xe9, 0x14, 0x6e, + 0xc0, 0xcb, 0xad, 0x09, 0xbd, 0x9b, 0x47, 0xbd, 0x93, 0xce, 0xe2, 0x62, 0x72, 0xca, 0x1a, 0x87, + 0xc1, 0xa9, 0xfc, 0x4a, 0x02, 0x52, 0x14, 0x5b, 0xdc, 0x83, 0x14, 0x9d, 0x28, 0x84, 0x69, 0x26, + 0x0a, 0x9a, 0xd5, 0x9b, 0xce, 0x12, 0x01, 0xd7, 0x94, 0xf8, 0x7c, 0xfb, 0xca, 0x07, 0xf7, 0xee, + 0x53, 0x63, 0x93, 0x93, 0xf8, 0x13, 0x5a, 0xa5, 0x91, 0x58, 0xa6, 0xe5, 0x60, 0x8d, 0xfb, 0xf4, + 0xd7, 0xcf, 0x6b, 0x5f, 0x77, 0x52, 0x72, 0xf9, 0xd0, 0x6b, 0x90, 0x24, 0x56, 0x6c, 0x9e, 0x05, + 0x55, 0x9c, 0x9d, 0x2e, 0x25, 0x89, 0xfd, 0x22, 0x34, 0xb4, 0x0c, 0xd9, 0xb0, 0xc9, 0x20, 0x1e, + 0x1c, 0x35, 0x8c, 0x81, 0xe1, 0x0e, 0x5d, 0x6f, 0x68, 0x31, 0x3c, 0xcb, 0xdb, 0xf8, 0xbf, 0xa7, + 0x20, 0xdf, 0xec, 0xc5, 0x3d, 0xa5, 0xac, 0x84, 0x5b, 0x38, 0x0a, 0x08, 0x85, 0x5e, 0x1a, 0xd1, + 0xc0, 0xa1, 0x19, 0x3c, 0x79, 0xb1, 0x19, 0xfc, 0x53, 0xea, 0x45, 0xb3, 0xae, 0x31, 0x37, 0x7d, + 0xd7, 0x98, 0xc7, 0x86, 0x46, 0x67, 0xa2, 0x26, 0xf1, 0xb4, 0xf9, 0x99, 0x16, 0xc9, 0x31, 0x98, + 0x29, 0x5c, 0x7e, 0xea, 0xe7, 0x48, 0x84, 0xc7, 0xdf, 0x47, 0x42, 0x03, 0x6b, 0xc2, 0x16, 0x75, + 0xfe, 0xd5, 0x2d, 0x6a, 0xc5, 0xe1, 0x9d, 0xf5, 0x63, 0x48, 0x6a, 0xba, 0xdb, 0x38, 0xd3, 0x4f, + 0xd5, 0x84, 0xe9, 0x9c, 0x5e, 0x9b, 0x0a, 0xf6, 0x5a, 0xd6, 0x4b, 0x2a, 0x4d, 0x00, 0xbf, 0x6e, + 0xe8, 0x3a, 0xcc, 0x99, 0x5d, 0xcd, 0xdd, 0x08, 0x93, 0x5f, 0xcd, 0x9c, 0x9d, 0x2e, 0xcd, 0x3e, + 0xed, 0x6a, 0xcd, 0x35, 0x69, 0xd6, 0xec, 0x6a, 0x4d, 0x8d, 0x1e, 0x08, 0x82, 0x8f, 0x64, 0x2f, + 0xf0, 0x2e, 0x27, 0xcd, 0x1b, 0xf8, 0x68, 0x0d, 0xdb, 0x2a, 0xef, 0x70, 0xbf, 0x23, 0x40, 0xc1, + 0xd5, 0x5d, 0xbc, 0x46, 0x25, 0xad, 0xf7, 0xf8, 0x20, 0x4b, 0x5e, 0x6c, 0x90, 0xb9, 0x7c, 0x7c, + 0x93, 0xf2, 0xaf, 0x09, 0x3c, 0x94, 0xba, 0xa5, 0x2a, 0x0e, 0x71, 0x2a, 0x62, 0x1c, 0x18, 0xef, + 0x40, 0xc9, 0x52, 0x0c, 0xcd, 0xec, 0xe9, 0x5f, 0x60, 0xb6, 0x98, 0x68, 0xf3, 0xaf, 0xac, 0x45, + 0x8f, 0x4e, 0x57, 0xfd, 0x6c, 0xf1, 0xbf, 0x0a, 0x3c, 0xec, 0xda, 0x2b, 0x46, 0xbc, 0xb1, 0x30, + 0x59, 0xfe, 0x25, 0xc2, 0xd8, 0x33, 0xdd, 0xa8, 0xb1, 0x37, 0xc6, 0xc5, 0x48, 0x36, 0x8d, 0x3d, + 0xd3, 0xfd, 0xaa, 0x6f, 0xb9, 0x04, 0xbb, 0xf2, 0x0b, 0x30, 0x4b, 0x93, 0x5f, 0xc1, 0x80, 0x7a, + 0xa1, 0xfe, 0x44, 0xe3, 0x7f, 0x9a, 0x80, 0xb7, 0x69, 0x55, 0x9f, 0x63, 0x4b, 0xdf, 0x3b, 0xd9, + 0xb6, 0x4c, 0x07, 0xab, 0x0e, 0xd6, 0xfc, 0xc5, 0xf4, 0x18, 0x9b, 0x40, 0x83, 0x0c, 0x0f, 0x43, + 0xd0, 0x35, 0x7e, 0x28, 0xd0, 0xe3, 0xaf, 0xb6, 0xc8, 0x96, 0x66, 0xe1, 0x0b, 0xcd, 0x35, 0x29, + 0xcd, 0x24, 0x37, 0x35, 0xb4, 0x02, 0x99, 0xbe, 0x5b, 0x8d, 0x0b, 0x45, 0xba, 0x79, 0x5c, 0x68, + 0x03, 0x8a, 0xbc, 0xa0, 0x4a, 0x57, 0x3f, 0xc4, 0xb2, 0xe2, 0x5c, 0x64, 0x9e, 0xcb, 0x33, 0xde, + 0x15, 0xc2, 0xba, 0xe2, 0x88, 0x7f, 0x33, 0x05, 0x37, 0xcf, 0x51, 0x71, 0x9c, 0xdd, 0xab, 0x02, + 0xe9, 0x43, 0xf2, 0x22, 0x9d, 0xd7, 0x3e, 0x2d, 0x79, 0xcf, 0x68, 0x37, 0xe4, 0x2c, 0xed, 0x29, + 0x7a, 0x97, 0x38, 0x57, 0x2c, 0xb6, 0x78, 0x7c, 0xf4, 0x62, 0x74, 0xac, 0x6e, 0xc0, 0xad, 0x7a, + 0x44, 0x05, 0xd1, 0x6c, 0x36, 0xfa, 0xae, 0x00, 0x15, 0xf6, 0x42, 0x16, 0xe0, 0x3a, 0xf4, 0x9a, + 0x14, 0x7d, 0xcd, 0x5a, 0xc4, 0x6b, 0xa6, 0xd2, 0x51, 0x35, 0xf0, 0x2e, 0x5e, 0x90, 0x72, 0xf0, + 0x6d, 0xc1, 0xa2, 0x54, 0x7e, 0x4b, 0x80, 0x6c, 0x80, 0x80, 0x6e, 0x8d, 0x6c, 0x27, 0xcc, 0x9e, + 0x45, 0xed, 0x21, 0xbc, 0x39, 0xb2, 0x87, 0x70, 0x35, 0xfd, 0xe5, 0xe9, 0x52, 0x4a, 0x62, 0xdb, + 0x54, 0xdc, 0xdd, 0x84, 0x37, 0xfc, 0x13, 0xae, 0x92, 0x43, 0x99, 0xdc, 0x23, 0xae, 0xe8, 0xc2, + 0x91, 0xe2, 0x7e, 0xfd, 0xa6, 0x0b, 0x47, 0xe4, 0x49, 0xfc, 0x41, 0x02, 0x16, 0x56, 0x34, 0xad, + 0xd5, 0xe2, 0x16, 0x3e, 0xbe, 0x31, 0xe6, 0x42, 0xe8, 0x84, 0x0f, 0xa1, 0xd1, 0x7b, 0x80, 0x34, + 0xdd, 0x66, 0xa7, 0xc0, 0xd8, 0xfb, 0x8a, 0x66, 0x1e, 0xf9, 0x41, 0x2e, 0x0b, 0x6e, 0x4a, 0xcb, + 0x4d, 0x40, 0x2d, 0xa0, 0x58, 0x4e, 0xb6, 0x1d, 0xc5, 0xfb, 0x88, 0x77, 0x73, 0xaa, 0xcd, 0x74, + 0x0c, 0xe4, 0x79, 0x8f, 0x52, 0x86, 0xc8, 0xa1, 0x3f, 0x09, 0x2a, 0xd1, 0x49, 0xa3, 0x38, 0xb2, + 0x62, 0xbb, 0xdb, 0xc0, 0xd8, 0xf9, 0x33, 0x05, 0x46, 0x5f, 0xb1, 0xd9, 0xee, 0x2e, 0xb6, 0x7b, + 0xc4, 0x57, 0x4d, 0x9c, 0x80, 0xff, 0xef, 0x08, 0x50, 0x90, 0xf0, 0x9e, 0x85, 0xed, 0x58, 0x97, + 0x3c, 0x1e, 0x41, 0xce, 0x62, 0x52, 0xe5, 0x3d, 0xcb, 0xec, 0x5d, 0xc4, 0x56, 0x64, 0x39, 0xe3, + 0x23, 0xcb, 0xec, 0x71, 0x93, 0xfc, 0x1c, 0x8a, 0x5e, 0x19, 0xe3, 0xac, 0xfc, 0xef, 0xd3, 0x8d, + 0xe2, 0x4c, 0x70, 0xdc, 0xd1, 0x26, 0xf1, 0x6a, 0x80, 0x7e, 0x86, 0x0b, 0x16, 0x34, 0x4e, 0x35, + 0xfc, 0x17, 0x01, 0x0a, 0xad, 0xc1, 0x2e, 0x3b, 0xdd, 0x2c, 0x3e, 0x0d, 0xd4, 0x21, 0xd3, 0xc5, + 0x7b, 0x8e, 0xfc, 0x4a, 0xfb, 0x1e, 0xd2, 0x84, 0x95, 0xee, 0xfa, 0x78, 0x0c, 0x60, 0xd1, 0x9d, + 0x92, 0x54, 0x4e, 0xf2, 0x82, 0x72, 0x32, 0x94, 0x97, 0x90, 0xc9, 0xac, 0x53, 0xf4, 0xaa, 0x19, + 0xe7, 0xfc, 0xf2, 0x22, 0x64, 0x1d, 0x92, 0x17, 0xb1, 0x0e, 0x0b, 0x3c, 0xc0, 0x26, 0xda, 0x42, + 0x54, 0x61, 0x91, 0xba, 0x65, 0xb2, 0xd2, 0xef, 0x77, 0x75, 0x17, 0xcc, 0x53, 0xfb, 0x93, 0x92, + 0x16, 0x68, 0xd2, 0x0a, 0x4b, 0xa1, 0x30, 0x1e, 0xfd, 0xba, 0x00, 0xb9, 0x3d, 0x0b, 0xe3, 0x2f, + 0xb0, 0x4c, 0x4d, 0xf2, 0x74, 0x11, 0x44, 0x6b, 0xa4, 0x0c, 0x5f, 0x39, 0xc2, 0x20, 0xcb, 0x5e, + 0xdc, 0x22, 0xef, 0x45, 0x5b, 0x50, 0x52, 0xbb, 0x2c, 0xe6, 0xc1, 0x8b, 0x66, 0xba, 0x00, 0xf6, + 0x29, 0x32, 0x66, 0x3f, 0xa0, 0xe9, 0x19, 0x19, 0x4c, 0x8a, 0x26, 0xf3, 0x53, 0x27, 0x39, 0x74, + 0xa9, 0x8e, 0x39, 0x31, 0x22, 0x70, 0x58, 0x65, 0x55, 0xc2, 0x8a, 0xc6, 0x3d, 0x6c, 0x32, 0xae, + 0xbc, 0x07, 0x3e, 0xae, 0x5e, 0xc0, 0x02, 0xed, 0x37, 0x71, 0x6f, 0xfc, 0x16, 0x7f, 0x94, 0x00, + 0x14, 0x94, 0xfc, 0xb3, 0xeb, 0x6f, 0x89, 0xf8, 0xfa, 0xdb, 0xbb, 0x80, 0x58, 0x98, 0xac, 0x2d, + 0xf7, 0xb1, 0x25, 0xdb, 0x58, 0x35, 0xf9, 0x59, 0x5f, 0x82, 0x54, 0xe2, 0x29, 0xdb, 0xd8, 0x6a, + 0x51, 0x3a, 0x5a, 0x01, 0xf0, 0xbd, 0x76, 0x3e, 0x29, 0x4e, 0xe3, 0xb4, 0x67, 0x3c, 0xa7, 0x5d, + 0xfc, 0x9e, 0x00, 0x85, 0x4d, 0xbd, 0x63, 0x29, 0xb1, 0x1e, 0x65, 0x85, 0x3e, 0x0e, 0x7f, 0xcd, + 0xc8, 0xde, 0xaf, 0x44, 0x05, 0x76, 0xb1, 0x1c, 0x2e, 0xdc, 0xe6, 0x0c, 0x64, 0xae, 0xf1, 0x4a, + 0x14, 0xa7, 0x91, 0xfd, 0x77, 0x15, 0xc8, 0xf1, 0x72, 0xef, 0x18, 0xba, 0x69, 0xa0, 0x7b, 0x90, + 0xec, 0xf0, 0xaf, 0x55, 0xd9, 0xc8, 0x95, 0x65, 0xff, 0xa0, 0xc8, 0xc6, 0x8c, 0x44, 0xf2, 0x12, + 0x96, 0xfe, 0xc0, 0x89, 0xf0, 0xe0, 0xfd, 0xbd, 0x0e, 0x41, 0x96, 0xfe, 0xc0, 0x41, 0x2d, 0x28, + 0xaa, 0xfe, 0xe9, 0x74, 0x32, 0x61, 0x4f, 0x8e, 0xc5, 0xfd, 0x91, 0xe7, 0x04, 0x36, 0x66, 0xa4, + 0x82, 0x1a, 0x4a, 0x40, 0xb5, 0xe0, 0xa1, 0x68, 0xa9, 0x91, 0x40, 0x4a, 0x7f, 0x4b, 0x7d, 0xf8, + 0x40, 0xb6, 0xc6, 0x4c, 0xe0, 0xec, 0x34, 0xf4, 0x31, 0xcc, 0x69, 0xf4, 0xf8, 0x2d, 0x6e, 0xa5, + 0xa2, 0x1a, 0x3a, 0x74, 0xca, 0x59, 0x63, 0x46, 0xe2, 0x1c, 0x68, 0x1d, 0x72, 0xec, 0x17, 0xf3, + 0xa1, 0xb9, 0x6d, 0xb9, 0x39, 0x5e, 0x42, 0x60, 0x76, 0x6f, 0xcc, 0x48, 0x59, 0xcd, 0xa7, 0xa2, + 0xc7, 0x90, 0x55, 0xbb, 0x58, 0xb1, 0xb8, 0xa8, 0x5b, 0x63, 0x77, 0x7f, 0x8e, 0x1c, 0xd9, 0xd5, + 0x98, 0x91, 0x40, 0xf5, 0x88, 0xa4, 0x50, 0x16, 0x3d, 0xb9, 0x89, 0x4b, 0x7a, 0x7f, 0x6c, 0xa1, + 0x46, 0x8f, 0xc1, 0x6a, 0xd0, 0x59, 0xdf, 0xa3, 0xa2, 0x6f, 0x42, 0xca, 0x56, 0x15, 0x77, 0x8d, + 0xe6, 0xda, 0x98, 0xa3, 0x75, 0x7c, 0x66, 0x9a, 0x1b, 0x3d, 0x64, 0xee, 0xb7, 0x73, 0xec, 0x2e, + 0x97, 0x47, 0xe9, 0x34, 0x74, 0x84, 0x03, 0xd1, 0x29, 0xa6, 0x04, 0xa2, 0x07, 0x85, 0xe0, 0x0d, + 0x99, 0xee, 0xab, 0xa6, 0xeb, 0xe3, 0xd1, 0x7a, 0x18, 0xd9, 0x07, 0xdf, 0xa0, 0xe7, 0x44, 0xb8, + 0x44, 0xb4, 0x09, 0x79, 0x26, 0x68, 0xc0, 0xb6, 0x68, 0x97, 0x97, 0xc7, 0x46, 0x33, 0x44, 0x6c, + 0x12, 0x6f, 0xcc, 0x48, 0x39, 0x25, 0x40, 0xf6, 0xcb, 0xd5, 0xc3, 0x56, 0x07, 0x97, 0xb3, 0x93, + 0xcb, 0x15, 0x0c, 0x11, 0xf5, 0xca, 0x45, 0x89, 0xe8, 0x97, 0xe1, 0x12, 0x13, 0xe4, 0xf0, 0xc8, + 0x37, 0x1e, 0x40, 0xf5, 0xe6, 0xd8, 0xa0, 0x81, 0xb1, 0xdb, 0xaa, 0x1b, 0x33, 0x12, 0x52, 0x46, + 0x12, 0x91, 0x0a, 0x97, 0xd9, 0x1b, 0xf8, 0xbe, 0x5c, 0x8b, 0x6f, 0x25, 0x2d, 0xbf, 0x45, 0x5f, + 0xf1, 0xde, 0xb8, 0x57, 0x44, 0x6e, 0x17, 0x6e, 0xcc, 0x48, 0x8b, 0xca, 0x68, 0xaa, 0x5f, 0x0d, + 0x8b, 0xef, 0x80, 0xe4, 0xdd, 0xed, 0xbd, 0xc9, 0xd5, 0x88, 0xda, 0x39, 0xea, 0x55, 0x23, 0x94, + 0x48, 0x1a, 0xd0, 0x3b, 0xff, 0x81, 0x76, 0xa6, 0xdc, 0xd8, 0x06, 0x8c, 0xd8, 0x26, 0x49, 0x1a, + 0x70, 0x3f, 0x40, 0x46, 0x55, 0x48, 0x74, 0xd4, 0x72, 0x7e, 0xec, 0xfc, 0xe0, 0x6d, 0x05, 0x6c, + 0xcc, 0x48, 0x89, 0x8e, 0x8a, 0x3e, 0x85, 0x34, 0xdb, 0xd7, 0x75, 0x6c, 0x94, 0x0b, 0x63, 0x0d, + 0x6e, 0x78, 0x77, 0x5c, 0x63, 0x46, 0xa2, 0x5b, 0xc9, 0x78, 0x47, 0xe6, 0x7b, 0x76, 0xa8, 0x88, + 0xea, 0x84, 0xed, 0xdc, 0x43, 0x3b, 0xa7, 0x48, 0x87, 0xb1, 0x3c, 0x22, 0xda, 0x86, 0x82, 0xc5, + 0xa2, 0x9a, 0xdd, 0x3d, 0x08, 0xa5, 0xb1, 0xb1, 0x3e, 0x51, 0xdb, 0x10, 0x1a, 0x74, 0xe1, 0x23, + 0x40, 0x27, 0x6d, 0x17, 0x96, 0xc8, 0xdb, 0x6e, 0x61, 0x6c, 0xdb, 0x8d, 0x0d, 0x89, 0x27, 0x6d, + 0x67, 0x8d, 0x24, 0xa2, 0x0f, 0x61, 0x96, 0x8d, 0x13, 0x44, 0x45, 0x46, 0x85, 0xaf, 0x0d, 0x0d, + 0x11, 0x96, 0x9f, 0x58, 0x2f, 0x87, 0x87, 0xf6, 0xca, 0x5d, 0xb3, 0x53, 0x5e, 0x1c, 0x6b, 0xbd, + 0x46, 0x83, 0x94, 0x89, 0xf5, 0x72, 0x7c, 0x2a, 0xe9, 0x40, 0x16, 0x4b, 0xe1, 0x43, 0xec, 0xd2, + 0xd8, 0x0e, 0x14, 0x11, 0xf1, 0xdb, 0xa0, 0x9b, 0xae, 0x7c, 0xb2, 0x67, 0x58, 0x6d, 0x2c, 0x53, + 0xa3, 0x78, 0x79, 0xb2, 0x61, 0x0d, 0x9d, 0x77, 0xe6, 0x19, 0x56, 0x46, 0x45, 0xcf, 0xa1, 0xc4, + 0x0f, 0xdd, 0xf1, 0x3f, 0xae, 0x5e, 0xa1, 0xf2, 0xde, 0x89, 0x9c, 0x10, 0xa3, 0x82, 0x13, 0x1b, + 0xc4, 0x43, 0x0d, 0xa7, 0xa0, 0xcf, 0x60, 0x81, 0xca, 0x93, 0x55, 0xff, 0x9c, 0xa4, 0x72, 0x79, + 0xe4, 0xd4, 0x9d, 0xf1, 0x47, 0x2a, 0xb9, 0x92, 0x4b, 0xea, 0x50, 0x12, 0x19, 0x0f, 0xba, 0xa1, + 0x3b, 0x74, 0xee, 0xae, 0x8c, 0x1d, 0x0f, 0xe1, 0x33, 0x62, 0xc9, 0x78, 0xd0, 0x19, 0x85, 0x74, + 0xe3, 0x21, 0x8b, 0xf7, 0xc6, 0xd8, 0x6e, 0x3c, 0xc6, 0xd8, 0xe5, 0x9d, 0x90, 0x9d, 0x5b, 0x03, + 0x60, 0xb8, 0x84, 0x7a, 0x7e, 0xd7, 0xc6, 0x3a, 0x00, 0xc3, 0x11, 0xb9, 0xc4, 0x01, 0xe8, 0xba, + 0x34, 0x32, 0x4e, 0xe9, 0xaa, 0x87, 0x4c, 0x23, 0x3d, 0xca, 0x4b, 0x63, 0xc7, 0xe9, 0x48, 0x54, + 0x06, 0x19, 0xa7, 0x47, 0x1e, 0x91, 0x78, 0x12, 0xec, 0xd3, 0x54, 0xf9, 0xfa, 0xf8, 0x59, 0x2f, + 0xf8, 0x85, 0x9a, 0xce, 0x7a, 0x94, 0x40, 0x78, 0xd9, 0x8a, 0x7b, 0x59, 0x1c, 0xcb, 0x1b, 0xfa, + 0xba, 0x42, 0x78, 0x19, 0x07, 0x5a, 0x81, 0x0c, 0x71, 0x8a, 0x4f, 0xa8, 0x99, 0xb9, 0x31, 0x16, + 0x98, 0x0e, 0xed, 0x17, 0x6c, 0xcc, 0x48, 0xe9, 0x97, 0x9c, 0x44, 0xba, 0x36, 0x13, 0xc1, 0x0d, + 0xcc, 0xdd, 0xb1, 0x5d, 0x7b, 0x74, 0xa3, 0x18, 0xe9, 0xda, 0x2f, 0x7d, 0xaa, 0x3f, 0xef, 0xda, + 0x6c, 0x8d, 0xbe, 0xfc, 0xf6, 0xe4, 0x79, 0x37, 0xfc, 0x45, 0xc1, 0x9b, 0x77, 0x39, 0x99, 0xcd, + 0xbb, 0x9a, 0x6c, 0xdb, 0x2c, 0xfc, 0xe7, 0xe6, 0x84, 0x79, 0x77, 0x68, 0xd5, 0x8e, 0xcd, 0xbb, + 0x5a, 0x8b, 0x71, 0x12, 0x17, 0xd4, 0x72, 0x4f, 0xba, 0xe2, 0x98, 0xe5, 0xf6, 0x58, 0x17, 0x34, + 0xf2, 0x28, 0x2e, 0xe2, 0x82, 0x5a, 0xa1, 0x04, 0xf4, 0xf3, 0x30, 0xcf, 0x57, 0x49, 0xca, 0x77, + 0x26, 0x38, 0xe5, 0xc1, 0x85, 0x2d, 0x32, 0x26, 0x38, 0x0f, 0xb3, 0x50, 0x6c, 0x75, 0x86, 0x59, + 0xe0, 0x77, 0x26, 0x58, 0xa8, 0x91, 0x05, 0x22, 0x66, 0xa1, 0x7c, 0x32, 0x29, 0x8d, 0xcd, 0x56, + 0x16, 0xca, 0xdf, 0x18, 0x5b, 0x9a, 0xf0, 0x12, 0x0b, 0x29, 0x0d, 0xe7, 0xa1, 0x33, 0x16, 0x75, + 0x18, 0x98, 0x76, 0xde, 0x1d, 0x3f, 0x63, 0x0d, 0x63, 0xd5, 0x86, 0xfb, 0x0d, 0x84, 0x69, 0xe5, + 0xaf, 0x0b, 0x70, 0x9d, 0xf5, 0x01, 0xba, 0x02, 0x7c, 0x22, 0x7b, 0x0b, 0xf8, 0x01, 0x20, 0x7e, + 0x8f, 0x8a, 0xff, 0xf0, 0xe2, 0xeb, 0xcd, 0xee, 0x1b, 0xdf, 0x54, 0x26, 0xe5, 0x23, 0xca, 0xe8, + 0x31, 0x04, 0x55, 0xbe, 0x3f, 0x56, 0x19, 0x61, 0xd4, 0x47, 0x94, 0xc1, 0x79, 0x56, 0xe7, 0x79, + 0x20, 0x80, 0xb7, 0x0d, 0xbb, 0x58, 0x2a, 0xad, 0xa7, 0xd2, 0x57, 0x4b, 0xe5, 0xf5, 0x54, 0xfa, + 0xb5, 0x52, 0x65, 0x3d, 0x95, 0x7e, 0xbd, 0xf4, 0x86, 0xf8, 0xf7, 0x2b, 0x90, 0x77, 0x41, 0x17, + 0x03, 0x54, 0xf7, 0x83, 0x80, 0xea, 0xda, 0x38, 0x40, 0xc5, 0x61, 0x1a, 0x47, 0x54, 0xf7, 0x83, + 0x88, 0xea, 0xda, 0x38, 0x44, 0xe5, 0xf3, 0x10, 0x48, 0xd5, 0x1e, 0x07, 0xa9, 0xde, 0x99, 0x02, + 0x52, 0x79, 0xa2, 0x86, 0x31, 0xd5, 0xda, 0x28, 0xa6, 0x7a, 0x7b, 0x32, 0xa6, 0xf2, 0x44, 0x05, + 0x40, 0xd5, 0xc3, 0x21, 0x50, 0x75, 0x63, 0x02, 0xa8, 0xf2, 0xf8, 0x5d, 0x54, 0xb5, 0x11, 0x89, + 0xaa, 0x6e, 0x9d, 0x87, 0xaa, 0x3c, 0x39, 0x21, 0x58, 0xd5, 0x88, 0x82, 0x55, 0x37, 0xcf, 0x81, + 0x55, 0x9e, 0xa8, 0x20, 0xae, 0xda, 0x88, 0xc4, 0x55, 0xb7, 0xce, 0xc3, 0x55, 0x7e, 0xb1, 0x82, + 0xc0, 0xea, 0x83, 0x10, 0xb0, 0x5a, 0x1a, 0x0b, 0xac, 0x3c, 0x6e, 0x86, 0xac, 0x3e, 0x19, 0x46, + 0x56, 0x37, 0x26, 0x20, 0x2b, 0x5f, 0xb1, 0x1c, 0x5a, 0x35, 0xa2, 0xa0, 0xd5, 0xcd, 0x73, 0xa0, + 0x95, 0xaf, 0x8b, 0x00, 0xb6, 0xda, 0x8a, 0xc6, 0x56, 0xb7, 0xcf, 0xc5, 0x56, 0x9e, 0xb4, 0x30, + 0xb8, 0x6a, 0x44, 0x81, 0xab, 0x9b, 0xe7, 0x80, 0xab, 0xa1, 0x92, 0x31, 0x74, 0xa5, 0x4c, 0x44, + 0x57, 0xef, 0x4d, 0x89, 0xae, 0x3c, 0xd1, 0x51, 0xf0, 0x4a, 0x9b, 0x0c, 0xaf, 0xaa, 0xd3, 0xc2, + 0x2b, 0xef, 0x25, 0x91, 0xf8, 0x4a, 0x99, 0x88, 0xaf, 0xde, 0x9b, 0x12, 0x5f, 0x0d, 0x55, 0x24, + 0x0c, 0xb0, 0xb6, 0xa2, 0x01, 0xd6, 0xed, 0x73, 0x01, 0x96, 0xdf, 0x8a, 0x21, 0x84, 0xb5, 0x1c, + 0x40, 0x58, 0x6f, 0x8e, 0x41, 0x58, 0x1e, 0x2b, 0x81, 0x58, 0xdf, 0x1a, 0x81, 0x58, 0xe2, 0x24, + 0x88, 0xe5, 0xf1, 0x7a, 0x18, 0xab, 0x11, 0x85, 0xb1, 0x6e, 0x9e, 0x83, 0xb1, 0xfc, 0x7e, 0x13, + 0x00, 0x59, 0xcf, 0xc6, 0x80, 0xac, 0x3b, 0xe7, 0x83, 0x2c, 0x4f, 0xde, 0x10, 0xca, 0x52, 0x26, + 0xa2, 0xac, 0xf7, 0xa6, 0x44, 0x59, 0x7e, 0x0b, 0x46, 0xc0, 0xac, 0x8f, 0xc2, 0x30, 0xeb, 0xfa, + 0x78, 0x98, 0xe5, 0x89, 0xe1, 0x38, 0x6b, 0x23, 0x12, 0x67, 0xdd, 0x3a, 0x0f, 0x67, 0xf9, 0xd6, + 0x2c, 0x08, 0xb4, 0xb6, 0xa2, 0x81, 0xd6, 0xed, 0x73, 0x81, 0x96, 0xdf, 0x91, 0x42, 0x48, 0x6b, + 0x23, 0x12, 0x69, 0xdd, 0x3a, 0x0f, 0x69, 0x0d, 0x99, 0x5a, 0x0e, 0xb5, 0x5e, 0x8c, 0x85, 0x5a, + 0x77, 0xa7, 0x81, 0x5a, 0x9e, 0xd0, 0x11, 0xac, 0xf5, 0xf9, 0x78, 0xac, 0xf5, 0x8d, 0x0b, 0x1c, + 0x5f, 0x1b, 0x09, 0xb6, 0xbe, 0x35, 0x02, 0xb6, 0xc4, 0x49, 0x60, 0xcb, 0x1f, 0x19, 0x2e, 0xda, + 0xaa, 0x47, 0x60, 0xa3, 0xb7, 0x27, 0x63, 0x23, 0x7f, 0x22, 0xf7, 0xc1, 0x51, 0x23, 0x0a, 0x1c, + 0xdd, 0x3c, 0x07, 0x1c, 0xf9, 0x03, 0x2c, 0x80, 0x8e, 0x1e, 0x0e, 0xa1, 0xa3, 0x1b, 0xe7, 0x46, + 0x38, 0x06, 0xe0, 0xd1, 0xc3, 0x21, 0x78, 0x74, 0x63, 0x02, 0x3c, 0xf2, 0x99, 0x39, 0x3e, 0x5a, + 0x1d, 0xc5, 0x47, 0x6f, 0x4d, 0xc4, 0x47, 0x9e, 0x04, 0x1f, 0x20, 0x6d, 0x44, 0x02, 0xa4, 0x5b, + 0xe7, 0x01, 0x24, 0xbf, 0x47, 0x06, 0x11, 0xd2, 0x56, 0x34, 0x42, 0xba, 0x7d, 0x2e, 0x42, 0x1a, + 0x9a, 0x3d, 0x5d, 0x88, 0xd4, 0x88, 0x82, 0x48, 0x37, 0xcf, 0x81, 0x48, 0xc1, 0xd9, 0xd3, 0xc3, + 0x48, 0xed, 0x71, 0x18, 0xe9, 0x9d, 0x29, 0x30, 0x92, 0xef, 0x53, 0x0e, 0x81, 0xa4, 0x4f, 0x87, + 0x41, 0x92, 0x38, 0x09, 0x24, 0xf9, 0x7d, 0xd9, 0x45, 0x49, 0x5b, 0xd1, 0x28, 0xe9, 0xf6, 0xb9, + 0x28, 0x29, 0x68, 0x5e, 0x02, 0x30, 0xe9, 0xd3, 0x61, 0x98, 0x24, 0x4e, 0x82, 0x49, 0x7e, 0x79, + 0x5c, 0x9c, 0xd4, 0x88, 0xc2, 0x49, 0x37, 0xcf, 0xc1, 0x49, 0x81, 0x59, 0xc7, 0x07, 0x4a, 0xbf, + 0x3a, 0x3d, 0x50, 0xfa, 0xe8, 0x55, 0x03, 0x73, 0xce, 0x47, 0x4a, 0x9f, 0x0e, 0x23, 0x25, 0x71, + 0x12, 0x52, 0xf2, 0xf5, 0x71, 0x31, 0xa8, 0xb4, 0x9e, 0x4a, 0xbf, 0x51, 0x7a, 0x53, 0xfc, 0xf3, + 0x39, 0x98, 0x6b, 0xb8, 0x11, 0xb1, 0x81, 0x93, 0xcf, 0x84, 0x57, 0x39, 0xf9, 0x0c, 0xad, 0x91, + 0xae, 0x45, 0x3d, 0xa6, 0xf3, 0xcf, 0xcb, 0x1c, 0x3d, 0xd1, 0x91, 0xb3, 0xbe, 0xc2, 0x11, 0x04, + 0xe8, 0x03, 0xc8, 0x0f, 0x6c, 0x6c, 0xc9, 0x7d, 0x4b, 0x37, 0x2d, 0xdd, 0x61, 0xfb, 0x9e, 0x84, + 0xd5, 0xd2, 0x97, 0xa7, 0x4b, 0xb9, 0x1d, 0x1b, 0x5b, 0xdb, 0x9c, 0x2e, 0xe5, 0x06, 0x81, 0x27, + 0xf7, 0x72, 0xbb, 0xd9, 0xe9, 0x2f, 0xb7, 0x7b, 0x06, 0x25, 0xfa, 0xcd, 0x39, 0x38, 0xc9, 0xb0, + 0x53, 0xc6, 0xa2, 0xe7, 0x43, 0xba, 0x2f, 0xd1, 0xcd, 0x49, 0x4f, 0x1b, 0x2b, 0x5a, 0x61, 0x22, + 0x6a, 0x01, 0x3d, 0xff, 0x47, 0xee, 0x9b, 0x5d, 0x5d, 0x3d, 0xa1, 0xbe, 0x43, 0xf8, 0xc4, 0xf5, + 0x89, 0xf7, 0x1e, 0xbc, 0x50, 0x74, 0x67, 0x9b, 0x72, 0x4a, 0x70, 0xe4, 0xfd, 0x46, 0xf7, 0xe0, + 0x72, 0x4f, 0x39, 0xa6, 0xa1, 0xc9, 0xb2, 0xeb, 0x0c, 0xd0, 0x70, 0x61, 0x76, 0xcd, 0x1d, 0xea, + 0x29, 0xc7, 0xf4, 0xfa, 0x3d, 0x96, 0x44, 0xef, 0xc5, 0xb9, 0x01, 0x39, 0xbe, 0x1f, 0x82, 0x5d, + 0x9b, 0x55, 0x64, 0xf7, 0xdd, 0x31, 0x1a, 0xbb, 0x39, 0xeb, 0x26, 0x14, 0x34, 0xdd, 0x76, 0x74, + 0x43, 0x75, 0xf8, 0x29, 0xd7, 0xec, 0x9c, 0xe8, 0xbc, 0x4b, 0x65, 0x47, 0x59, 0xb7, 0x61, 0x41, + 0xed, 0xea, 0x9e, 0x8b, 0xc5, 0x26, 0xbd, 0x85, 0xb1, 0x7d, 0xb9, 0x46, 0xf3, 0x0e, 0x7f, 0x10, + 0x2e, 0xaa, 0x61, 0x32, 0xaa, 0x41, 0xb1, 0xa3, 0x38, 0xf8, 0x48, 0x39, 0x91, 0xdd, 0xed, 0x95, + 0x59, 0xba, 0x4f, 0xfd, 0xf5, 0xb3, 0xd3, 0xa5, 0xfc, 0x63, 0x96, 0x34, 0xb2, 0xcb, 0x32, 0xdf, + 0x09, 0x24, 0x68, 0xe8, 0x36, 0x14, 0x15, 0xfb, 0xc4, 0x50, 0x69, 0x03, 0x62, 0xc3, 0x1e, 0xd8, + 0xd4, 0x43, 0x4e, 0x4b, 0x05, 0x4a, 0xae, 0xb9, 0x54, 0xf4, 0x10, 0x2a, 0xfc, 0x32, 0x8b, 0x23, + 0xc5, 0xd2, 0xe8, 0x0d, 0x80, 0x01, 0x23, 0x50, 0xa2, 0x3c, 0x57, 0xd9, 0xe5, 0x15, 0x24, 0x03, + 0x69, 0xe9, 0xe0, 0x21, 0xd1, 0xec, 0x10, 0x6c, 0x28, 0x65, 0xd7, 0x53, 0xe9, 0x5c, 0x29, 0xbf, + 0x9e, 0x4a, 0x17, 0x4a, 0x45, 0xf1, 0x37, 0x05, 0xc8, 0x85, 0x36, 0x92, 0x3d, 0x1c, 0xfa, 0x88, + 0xfc, 0x5a, 0xb4, 0xb3, 0x3f, 0x2e, 0x84, 0x3d, 0xcd, 0x9b, 0xd6, 0x8d, 0x62, 0x5f, 0x1a, 0xef, + 0xe2, 0xd1, 0xd5, 0x10, 0x37, 0x8c, 0xc6, 0x65, 0xfb, 0x38, 0xf5, 0xfd, 0x1f, 0x2e, 0xcd, 0x88, + 0x7f, 0x91, 0x82, 0x7c, 0x78, 0xdb, 0x58, 0x73, 0xa8, 0x5c, 0x51, 0xc6, 0x3d, 0xc4, 0x51, 0x9d, + 0x70, 0x0d, 0x4f, 0xc6, 0xbf, 0x99, 0x82, 0x15, 0xf3, 0xfa, 0x84, 0x4f, 0xe5, 0xc1, 0x72, 0xfa, + 0x8c, 0x95, 0x7f, 0x9f, 0xf4, 0xec, 0x54, 0x15, 0x66, 0xe9, 0x81, 0x53, 0xbc, 0x68, 0xe5, 0xe1, + 0x91, 0x42, 0x3c, 0x17, 0x92, 0x2e, 0xb1, 0x6c, 0xc4, 0xae, 0xb5, 0x5f, 0xe9, 0x44, 0x47, 0xdf, + 0x24, 0x5f, 0xfc, 0x12, 0xcc, 0x01, 0x3b, 0xd1, 0xf3, 0xff, 0x61, 0xa8, 0x0d, 0x79, 0x1f, 0xfa, + 0x25, 0x28, 0xaa, 0x66, 0xb7, 0xcb, 0xe6, 0x2c, 0x36, 0x42, 0x47, 0xcf, 0xf8, 0xa1, 0x45, 0xe0, + 0xf7, 0x9e, 0x56, 0xbd, 0xfb, 0x4f, 0xab, 0x12, 0xbf, 0xff, 0x34, 0x10, 0x07, 0x5d, 0xf0, 0x84, + 0xb1, 0x81, 0x3d, 0x14, 0x92, 0x3d, 0xff, 0x2a, 0x21, 0xd9, 0x2c, 0xc8, 0x9e, 0xf7, 0xbc, 0x3f, + 0x16, 0x78, 0x40, 0xcc, 0x13, 0xd3, 0x3c, 0x18, 0x78, 0x41, 0xd4, 0x95, 0xe0, 0xf9, 0x9c, 0x7e, + 0xb4, 0x28, 0xdd, 0x12, 0x14, 0x65, 0x81, 0x13, 0x5f, 0xcd, 0x02, 0xdf, 0x80, 0x5c, 0xdf, 0xc2, + 0x7b, 0xd8, 0x51, 0xf7, 0x65, 0x63, 0xd0, 0xe3, 0xfb, 0xa1, 0xb2, 0x2e, 0x6d, 0x6b, 0xd0, 0x43, + 0xef, 0x40, 0xc9, 0xcb, 0xc2, 0xe1, 0x8c, 0x7b, 0x38, 0x9c, 0x4b, 0xe7, 0xe0, 0x47, 0xfc, 0x9f, + 0x02, 0x2c, 0x86, 0xea, 0xc4, 0xc7, 0xd4, 0x3a, 0x64, 0x35, 0x6f, 0xce, 0xb3, 0xcb, 0xc2, 0x05, + 0xe3, 0x88, 0x83, 0xcc, 0x48, 0x86, 0x2b, 0xee, 0x6b, 0xe9, 0x6d, 0x0e, 0xbe, 0xd8, 0xc4, 0x05, + 0xc5, 0x5e, 0xf6, 0xe5, 0xac, 0x05, 0x5e, 0xe0, 0x0d, 0xb2, 0xe4, 0x54, 0x83, 0x4c, 0xfc, 0x1d, + 0x01, 0x4a, 0xf4, 0x05, 0x8f, 0x30, 0xd6, 0x62, 0xb1, 0x6e, 0x6e, 0xc0, 0x7e, 0x62, 0xfa, 0x1d, + 0x4f, 0xa1, 0x1b, 0x68, 0x92, 0xe1, 0x1b, 0x68, 0xc4, 0x1f, 0x0a, 0x50, 0xf0, 0x4a, 0xc8, 0x6e, + 0x89, 0x9c, 0x70, 0x0c, 0xec, 0xab, 0xdd, 0x84, 0xe8, 0x1e, 0x57, 0x33, 0xd5, 0xc5, 0x95, 0xc1, + 0xe3, 0x6a, 0xd8, 0x0d, 0x7e, 0x7f, 0xcb, 0xed, 0x39, 0xa4, 0x88, 0x35, 0xff, 0x9c, 0x90, 0x57, + 0xd8, 0xfc, 0x25, 0xd1, 0x4b, 0x78, 0xcd, 0xee, 0x21, 0x3b, 0x61, 0x68, 0x2a, 0xb3, 0x87, 0x78, + 0x18, 0x18, 0xf0, 0x85, 0x0f, 0xad, 0xdd, 0xa2, 0xd7, 0xf3, 0xb2, 0xdf, 0xb6, 0xf8, 0x28, 0xa0, + 0x40, 0xda, 0xf8, 0x44, 0x4b, 0x53, 0x99, 0x62, 0x57, 0x4b, 0xac, 0xaf, 0xfc, 0x51, 0xb0, 0x25, + 0xea, 0x87, 0x04, 0x83, 0x3d, 0x80, 0xe4, 0xa1, 0xd2, 0x9d, 0x14, 0x49, 0x15, 0x6a, 0x39, 0x89, + 0xe4, 0x46, 0x8f, 0x42, 0xc7, 0xab, 0x24, 0xc6, 0xaf, 0x4a, 0x8c, 0xaa, 0x34, 0x74, 0x0c, 0xcb, + 0x87, 0xe1, 0xbe, 0x3e, 0xf1, 0xf5, 0xc1, 0x4e, 0xff, 0x71, 0xea, 0xc7, 0x3f, 0x5c, 0x12, 0xc4, + 0x4f, 0x00, 0x49, 0xd8, 0xc6, 0xce, 0xb3, 0x81, 0x69, 0xf9, 0x47, 0xd5, 0x0c, 0xc7, 0xd0, 0xcf, + 0x46, 0xc7, 0xd0, 0x8b, 0x97, 0x61, 0x31, 0xc4, 0xcd, 0x8c, 0x85, 0xf8, 0x21, 0xbc, 0xf6, 0xd8, + 0xb4, 0x6d, 0xbd, 0x4f, 0x80, 0x0f, 0x1d, 0x95, 0x64, 0x6a, 0xf1, 0xcc, 0x63, 0xba, 0x4f, 0xb1, + 0xa6, 0xc1, 0xcc, 0x48, 0x46, 0xf2, 0x9e, 0xc5, 0x3f, 0x10, 0xe0, 0xea, 0x28, 0x27, 0xd3, 0x72, + 0xd4, 0x5e, 0xd5, 0x79, 0xd5, 0xf4, 0x4f, 0x52, 0x3c, 0xbf, 0xb7, 0xba, 0xd9, 0x89, 0x23, 0xc5, + 0xdf, 0x29, 0xf7, 0x14, 0x6a, 0x3e, 0xf8, 0xbe, 0xf9, 0x02, 0x27, 0x6f, 0x32, 0xaa, 0x6f, 0x49, + 0x52, 0xd3, 0x59, 0x92, 0x36, 0x14, 0xd7, 0x4d, 0xdd, 0x20, 0xfe, 0x9a, 0x5b, 0xdf, 0x15, 0x28, + 0xec, 0xea, 0x86, 0x62, 0x9d, 0xc8, 0x6e, 0x00, 0x9f, 0x70, 0x5e, 0x00, 0x9f, 0x94, 0x67, 0x1c, + 0xfc, 0x51, 0xfc, 0x89, 0x00, 0x25, 0x5f, 0x2c, 0xb7, 0xc8, 0xef, 0x02, 0xa8, 0xdd, 0x81, 0xed, + 0x60, 0xcb, 0x6d, 0xa5, 0x1c, 0x8b, 0xcc, 0xaf, 0x31, 0x6a, 0x73, 0x4d, 0xca, 0xf0, 0x0c, 0x4d, + 0x0d, 0xbd, 0x15, 0x3e, 0xd6, 0x63, 0x76, 0x15, 0xce, 0x46, 0x0e, 0xf3, 0x20, 0xcd, 0x6e, 0x3b, + 0xa6, 0xe5, 0x61, 0x17, 0xde, 0xec, 0xee, 0x29, 0x4a, 0x74, 0x37, 0x3a, 0xa6, 0x9b, 0x6f, 0x0a, + 0xc4, 0x5d, 0x38, 0xc4, 0x5e, 0x95, 0x52, 0xe7, 0x57, 0x89, 0x71, 0xb8, 0x55, 0xfa, 0xe7, 0x02, + 0x14, 0x6b, 0xac, 0x35, 0xbc, 0x16, 0x9e, 0x60, 0xd1, 0xd6, 0x20, 0xed, 0x1c, 0x1b, 0x72, 0x0f, + 0x7b, 0x17, 0xff, 0x5c, 0xe0, 0x98, 0xc3, 0x79, 0x87, 0x3d, 0xd2, 0xbb, 0x24, 0xf9, 0x65, 0xe7, + 0x7c, 0xb8, 0xbc, 0x56, 0x65, 0xb7, 0xa1, 0x57, 0xdd, 0xdb, 0xd0, 0xab, 0x6b, 0x3c, 0x03, 0x33, + 0xea, 0xdf, 0xff, 0xcf, 0x4b, 0x82, 0xe4, 0x31, 0xf1, 0x79, 0x5f, 0x82, 0x4c, 0x4b, 0x55, 0x0c, + 0x06, 0xbb, 0xf9, 0x4d, 0xdb, 0x34, 0x7a, 0x95, 0x62, 0x14, 0xb6, 0x01, 0x38, 0x6b, 0x0c, 0x7a, + 0x9b, 0x87, 0xaa, 0x1a, 0xbc, 0xaa, 0xdb, 0xc6, 0xf8, 0xc0, 0xe6, 0x07, 0xd6, 0xa5, 0x8d, 0x41, + 0xaf, 0x45, 0x9e, 0x99, 0xcc, 0xbb, 0x2d, 0x32, 0x92, 0x46, 0x66, 0x7b, 0x54, 0x00, 0x08, 0xdc, + 0x12, 0xc5, 0xef, 0xe3, 0x5e, 0x59, 0x93, 0x77, 0xb6, 0x6a, 0x4f, 0x37, 0x37, 0x9b, 0xed, 0x76, + 0x7d, 0xad, 0x24, 0xa0, 0x12, 0xe4, 0x42, 0x77, 0x4c, 0x25, 0xd8, 0x0d, 0xdd, 0x77, 0xff, 0x0a, + 0x80, 0x7f, 0x5d, 0x1d, 0x91, 0xb5, 0x51, 0xff, 0x4c, 0x7e, 0xbe, 0xf2, 0x64, 0xa7, 0xde, 0x2a, + 0xcd, 0x20, 0x04, 0x85, 0xd5, 0x95, 0x76, 0xad, 0x21, 0x4b, 0xf5, 0xd6, 0xf6, 0xd3, 0xad, 0x56, + 0xdd, 0xbd, 0xd9, 0xfb, 0xee, 0x1a, 0xe4, 0x82, 0x07, 0x42, 0xa1, 0x45, 0x28, 0xd6, 0x1a, 0xf5, + 0xda, 0x86, 0xfc, 0xbc, 0xb9, 0x22, 0x3f, 0xdb, 0xa9, 0xef, 0xd4, 0x4b, 0x33, 0xb4, 0x68, 0x94, + 0xf8, 0x68, 0xe7, 0xc9, 0x93, 0x92, 0x80, 0x8a, 0x90, 0x65, 0xcf, 0xf4, 0x3e, 0xaa, 0x52, 0xe2, + 0xee, 0x26, 0x64, 0x03, 0x07, 0x55, 0x93, 0xd7, 0x6d, 0xef, 0xb4, 0x1a, 0x72, 0xbb, 0xb9, 0x59, + 0x6f, 0xb5, 0x57, 0x36, 0xb7, 0x99, 0x0c, 0x4a, 0x5b, 0x59, 0x7d, 0x2a, 0xb5, 0x4b, 0x82, 0xf7, + 0xdc, 0x7e, 0xba, 0x53, 0x6b, 0xb8, 0xd5, 0x10, 0x53, 0xe9, 0x64, 0x29, 0x79, 0xf7, 0x37, 0x04, + 0xb8, 0x3a, 0xe6, 0x70, 0x24, 0x94, 0x85, 0xf9, 0x1d, 0x83, 0x9e, 0xda, 0x5b, 0x9a, 0x41, 0xf9, + 0xc0, 0xf9, 0x48, 0x25, 0x01, 0xa5, 0xd9, 0x09, 0x35, 0xa5, 0x04, 0x9a, 0x83, 0x44, 0xeb, 0x41, + 0x29, 0x49, 0x4a, 0x1a, 0x38, 0x5e, 0xa8, 0x94, 0x42, 0x19, 0x7e, 0xb0, 0x49, 0x69, 0x16, 0xe5, + 0xfc, 0xf3, 0x45, 0x4a, 0x73, 0x44, 0x94, 0x77, 0x4e, 0x47, 0x69, 0x9e, 0x24, 0x6e, 0x0d, 0xba, + 0xdd, 0x96, 0x6e, 0x1c, 0x94, 0xd2, 0x77, 0x6f, 0x40, 0xe0, 0x64, 0x04, 0x04, 0x30, 0xf7, 0x44, + 0x71, 0xb0, 0xed, 0x94, 0x66, 0xd0, 0x3c, 0x24, 0x57, 0xba, 0xdd, 0x92, 0x70, 0xff, 0x9f, 0xa5, + 0x20, 0xed, 0xde, 0xc2, 0x84, 0x9e, 0xc0, 0x2c, 0x5b, 0xbe, 0x5c, 0x1a, 0x8f, 0x47, 0xa8, 0xc9, + 0xa8, 0x5c, 0x3f, 0x0f, 0xb0, 0x88, 0x33, 0xe8, 0xaf, 0x42, 0x36, 0xe0, 0xa7, 0xa1, 0xb1, 0x4b, + 0x46, 0x21, 0xdf, 0xb4, 0x72, 0xeb, 0xbc, 0x6c, 0x9e, 0xfc, 0x17, 0x90, 0xf1, 0xe6, 0x0d, 0xf4, + 0xd6, 0xa4, 0x59, 0xc5, 0x95, 0x3d, 0x79, 0xea, 0x21, 0x23, 0x5c, 0x9c, 0x79, 0x5f, 0x40, 0x16, + 0xa0, 0x51, 0x13, 0x8f, 0xa2, 0x02, 0xc5, 0xc6, 0xce, 0x21, 0x95, 0xbb, 0x53, 0xe5, 0xf6, 0xdf, + 0x49, 0x94, 0xe5, 0xcf, 0x53, 0xd1, 0xca, 0x1a, 0x99, 0x05, 0xa3, 0x95, 0x15, 0x31, 0xdd, 0xcd, + 0xa0, 0x67, 0x90, 0x22, 0xf6, 0x19, 0x45, 0x79, 0xae, 0x43, 0xf3, 0x41, 0xe5, 0xad, 0x89, 0x79, + 0x5c, 0x91, 0xab, 0xef, 0xfc, 0xf8, 0xcf, 0xae, 0xcd, 0xfc, 0xf8, 0xec, 0x9a, 0xf0, 0x93, 0xb3, + 0x6b, 0xc2, 0x9f, 0x9c, 0x5d, 0x13, 0xfe, 0xf4, 0xec, 0x9a, 0xf0, 0xbd, 0x9f, 0x5e, 0x9b, 0xf9, + 0xc9, 0x4f, 0xaf, 0xcd, 0xfc, 0xc9, 0x4f, 0xaf, 0xcd, 0x7c, 0x3e, 0xcf, 0xb9, 0x77, 0xe7, 0xa8, + 0xf1, 0x7a, 0xf0, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x54, 0xfd, 0x18, 0x7e, 0x31, 0x83, 0x00, + 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -8221,6 +8264,11 @@ func (m *ResponseHeader) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.NumKeysRead != 0 { + i = encodeVarintApi(dAtA, i, uint64(m.NumKeysRead)) + i-- + dAtA[i] = 0x48 + } if m.NumBytes != 0 { i = encodeVarintApi(dAtA, i, uint64(m.NumBytes)) i-- @@ -16685,6 +16733,39 @@ func (m *ContentionEvent) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *ScanStats) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ScanStats) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ScanStats) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.NumSeeks != 0 { + i = encodeVarintApi(dAtA, i, uint64(m.NumSeeks)) + i-- + dAtA[i] = 0x10 + } + if m.NumMvccKeys != 0 { + i = encodeVarintApi(dAtA, i, uint64(m.NumMvccKeys)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + func encodeVarintApi(dAtA []byte, offset int, v uint64) int { offset -= sovApi(v) base := offset @@ -16739,6 +16820,9 @@ func (m *ResponseHeader) Size() (n int) { if m.NumBytes != 0 { n += 1 + sovApi(uint64(m.NumBytes)) } + if m.NumKeysRead != 0 { + n += 1 + sovApi(uint64(m.NumKeysRead)) + } return n } @@ -20091,6 +20175,21 @@ func (m *ContentionEvent) Size() (n int) { return n } +func (m *ScanStats) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.NumMvccKeys != 0 { + n += 1 + sovApi(uint64(m.NumMvccKeys)) + } + if m.NumSeeks != 0 { + n += 1 + sovApi(uint64(m.NumSeeks)) + } + return n +} + func sovApi(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -20418,6 +20517,25 @@ func (m *ResponseHeader) Unmarshal(dAtA []byte) error { break } } + case 9: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field NumKeysRead", wireType) + } + m.NumKeysRead = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.NumKeysRead |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipApi(dAtA[iNdEx:]) @@ -41068,6 +41186,94 @@ func (m *ContentionEvent) Unmarshal(dAtA []byte) error { } return nil } +func (m *ScanStats) 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 ErrIntOverflowApi + } + 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: ScanStats: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ScanStats: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field NumMvccKeys", wireType) + } + m.NumMvccKeys = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.NumMvccKeys |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field NumSeeks", wireType) + } + m.NumSeeks = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.NumSeeks |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipApi(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApi + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipApi(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/pkg/roachpb/api.proto b/pkg/roachpb/api.proto index 2a61c72cda41..0d2d044b0946 100644 --- a/pkg/roachpb/api.proto +++ b/pkg/roachpb/api.proto @@ -105,6 +105,10 @@ message ResponseHeader { // measures the bytes in the timestamps, keys, and values of the returned // rows. int64 num_bytes = 8; + + // The total number of keys that were read, including keys that were skipped + // because they were too old to care about MVCC-wise. + int64 num_keys_read = 9; reserved 6; } @@ -2253,3 +2257,12 @@ message ContentionEvent { google.protobuf.Duration duration = 3 [(gogoproto.nullable) = false, (gogoproto.stdduration) = true]; } + +// ScanStats is a message that will be attached to BatchResponses containing +// information about what happened during each scan and get in the request. +message ScanStats { + option (gogoproto.goproto_stringer) = false; + + uint64 num_mvcc_keys = 1; + uint64 num_seeks = 2; +} diff --git a/pkg/sql/colexecop/operator.go b/pkg/sql/colexecop/operator.go index 9d94d5c8056d..14ac3e2424cc 100644 --- a/pkg/sql/colexecop/operator.go +++ b/pkg/sql/colexecop/operator.go @@ -73,6 +73,9 @@ type KVReader interface { // GetCumulativeContentionTime returns the amount of time KV reads spent // contending. It must be safe for concurrent use. GetCumulativeContentionTime() time.Duration + // GetScanStats returns statistics about the scan that happened during the + // KV reads. It must be safe for concurrent use. + GetScanStats() execinfra.ScanStats } // ZeroInputNode is an execinfra.OpNode with no inputs. diff --git a/pkg/sql/colfetcher/colbatch_scan.go b/pkg/sql/colfetcher/colbatch_scan.go index e712383cbd60..493abe6c1031 100644 --- a/pkg/sql/colfetcher/colbatch_scan.go +++ b/pkg/sql/colfetcher/colbatch_scan.go @@ -156,6 +156,11 @@ func (s *ColBatchScan) GetCumulativeContentionTime() time.Duration { return execinfra.GetCumulativeContentionTime(s.Ctx) } +// GetScanStats is part of the colexecop.KVReader interface. +func (s *ColBatchScan) GetScanStats() execinfra.ScanStats { + return execinfra.GetScanStats(s.Ctx) +} + var colBatchScanPool = sync.Pool{ New: func() interface{} { return &ColBatchScan{} diff --git a/pkg/sql/colflow/stats.go b/pkg/sql/colflow/stats.go index bd1e47b78d90..d5d7a071613e 100644 --- a/pkg/sql/colflow/stats.go +++ b/pkg/sql/colflow/stats.go @@ -212,6 +212,9 @@ func (vsc *vectorizedStatsCollectorImpl) GetStats() *execinfrapb.ComponentStats s.KV.TuplesRead.Set(uint64(vsc.kvReader.GetRowsRead())) s.KV.BytesRead.Set(uint64(vsc.kvReader.GetBytesRead())) s.KV.ContentionTime.Set(vsc.kvReader.GetCumulativeContentionTime()) + scanStats := vsc.kvReader.GetScanStats() + s.KV.NumMvccKeys.Set(scanStats.NumMVCCKeys) + s.KV.NumSeeks.Set(scanStats.NumSeeks) } else { s.Exec.ExecTime.Set(time) } diff --git a/pkg/sql/execinfra/stats.go b/pkg/sql/execinfra/stats.go index e89eeead8fc2..7d1b1844e691 100644 --- a/pkg/sql/execinfra/stats.go +++ b/pkg/sql/execinfra/stats.go @@ -50,3 +50,32 @@ func GetCumulativeContentionTime(ctx context.Context) time.Duration { } return cumulativeContentionTime } + +type ScanStats struct { + NumMVCCKeys uint64 + NumSeeks uint64 +} + +// GetScanStats is a helper function to calculate scan stats from the tracing +// span from the context. +func GetScanStats(ctx context.Context) (ss ScanStats) { + recording := GetTraceData(ctx) + if recording == nil { + return ScanStats{} + } + var ev roachpb.ScanStats + for i := range recording { + recording[i].Structured(func(any *pbtypes.Any) { + if !pbtypes.Is(any, &ev) { + return + } + if err := pbtypes.UnmarshalAny(any, &ev); err != nil { + return + } + + ss.NumMVCCKeys += ev.NumMvccKeys + ss.NumSeeks += ev.NumSeeks + }) + } + return ss +} diff --git a/pkg/sql/execinfrapb/component_stats.go b/pkg/sql/execinfrapb/component_stats.go index 75ab7df74c08..d65613130c91 100644 --- a/pkg/sql/execinfrapb/component_stats.go +++ b/pkg/sql/execinfrapb/component_stats.go @@ -142,6 +142,12 @@ func (s *ComponentStats) formatStats(fn func(suffix string, value interface{})) if s.KV.ContentionTime.HasValue() { fn("KV contention time", humanizeutil.Duration(s.KV.ContentionTime.Value())) } + if s.KV.NumMvccKeys.HasValue() { + fn("KV mvcc keys read", humanizeutil.Count(s.KV.NumMvccKeys.Value())) + } + if s.KV.NumSeeks.HasValue() { + fn("KV mvcc seeks", humanizeutil.Count(s.KV.NumSeeks.Value())) + } if s.KV.TuplesRead.HasValue() { fn("KV rows read", humanizeutil.Count(s.KV.TuplesRead.Value())) } @@ -214,6 +220,12 @@ func (s *ComponentStats) Union(other *ComponentStats) *ComponentStats { if !result.KV.ContentionTime.HasValue() { result.KV.ContentionTime = other.KV.ContentionTime } + if !result.KV.NumMvccKeys.HasValue() { + result.KV.NumMvccKeys = other.KV.NumMvccKeys + } + if !result.KV.NumSeeks.HasValue() { + result.KV.NumSeeks = other.KV.NumSeeks + } if !result.KV.TuplesRead.HasValue() { result.KV.TuplesRead = other.KV.TuplesRead } @@ -303,6 +315,8 @@ func (s *ComponentStats) MakeDeterministic() { // KV. timeVal(&s.KV.KVTime) timeVal(&s.KV.ContentionTime) + resetUint(&s.KV.NumMvccKeys) + resetUint(&s.KV.NumSeeks) if s.KV.BytesRead.HasValue() { // BytesRead is overridden to a useful value for tests. s.KV.BytesRead.Set(8 * s.KV.TuplesRead.Value()) diff --git a/pkg/sql/execinfrapb/component_stats.pb.go b/pkg/sql/execinfrapb/component_stats.pb.go index 9cc827378011..be670d0b7832 100644 --- a/pkg/sql/execinfrapb/component_stats.pb.go +++ b/pkg/sql/execinfrapb/component_stats.pb.go @@ -297,6 +297,8 @@ type KVStats struct { // ContentionTime is the cumulative time a KV request spent contending with // other transactions. This time accounts for a portion of KVTime above. ContentionTime optional.Duration `protobuf:"bytes,4,opt,name=contention_time,json=contentionTime" json:"contention_time"` + NumMvccKeys optional.Uint `protobuf:"bytes,5,opt,name=num_mvcc_keys,json=numMvccKeys" json:"num_mvcc_keys"` + NumSeeks optional.Uint `protobuf:"bytes,6,opt,name=num_seeks,json=numSeeks" json:"num_seeks"` } func (m *KVStats) Reset() { *m = KVStats{} } @@ -457,70 +459,73 @@ func init() { } var fileDescriptor_11ea9e8b662a649a = []byte{ - // 1005 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x96, 0x4f, 0x6f, 0xe2, 0xc6, - 0x1b, 0xc7, 0xb1, 0x21, 0x26, 0x3c, 0x2c, 0x84, 0x9d, 0xdf, 0x1e, 0x50, 0xf4, 0x2b, 0xc9, 0xd2, - 0xae, 0x84, 0x2a, 0x15, 0x54, 0x0e, 0xed, 0x69, 0x0f, 0x21, 0xb0, 0x5d, 0x36, 0xc9, 0x92, 0x35, - 0x24, 0x95, 0xf6, 0x62, 0x0d, 0xf6, 0x84, 0x58, 0xf8, 0x1f, 0xf6, 0x98, 0x38, 0x7d, 0x15, 0x3d, - 0xb5, 0xc7, 0xbe, 0x86, 0x5e, 0xfb, 0x0a, 0x72, 0xdc, 0x43, 0x0f, 0xab, 0x1e, 0xa2, 0x2e, 0xe9, - 0x5b, 0xe8, 0xa5, 0xa7, 0x6a, 0xc6, 0xc6, 0x38, 0xa9, 0xd0, 0xe2, 0xaa, 0xb7, 0xc1, 0x9e, 0xef, - 0x67, 0x9e, 0x79, 0x9e, 0xe7, 0xfb, 0x18, 0x78, 0xe6, 0xcd, 0x8c, 0x16, 0x09, 0x88, 0xaa, 0x5b, - 0x17, 0x2e, 0x76, 0xc6, 0x2d, 0xd5, 0x36, 0x1d, 0xdb, 0x22, 0x16, 0x55, 0x3c, 0x8a, 0xa9, 0xd7, - 0x74, 0x5c, 0x9b, 0xda, 0xa8, 0xaa, 0xda, 0xea, 0xd4, 0xb5, 0xb1, 0x7a, 0xd9, 0xf4, 0x66, 0x46, - 0x53, 0xd3, 0x3d, 0xea, 0xcd, 0x0c, 0xd7, 0xb7, 0x76, 0x9f, 0x4c, 0xec, 0x89, 0xcd, 0x37, 0xb5, - 0xd8, 0x2a, 0xdc, 0xbf, 0xfb, 0x7f, 0x9f, 0xea, 0x46, 0xcb, 0x76, 0xa8, 0x6e, 0x5b, 0x78, 0xb5, - 0x08, 0xdf, 0xd6, 0x7f, 0x15, 0xa1, 0x78, 0xb8, 0x3c, 0xa7, 0xdf, 0x45, 0x5f, 0x42, 0xfe, 0xc2, - 0xb0, 0xaf, 0x14, 0x5d, 0xab, 0x0a, 0xfb, 0x42, 0xe3, 0x51, 0xa7, 0x7a, 0x73, 0xbb, 0x97, 0xf9, - 0xed, 0x76, 0x4f, 0x7a, 0x61, 0xd8, 0x57, 0xfd, 0xee, 0x22, 0x5e, 0xc9, 0x12, 0xdb, 0xd8, 0xd7, - 0x50, 0x17, 0x72, 0xf4, 0xda, 0x21, 0x55, 0x71, 0x5f, 0x68, 0x94, 0xdb, 0x9f, 0x37, 0xd7, 0xc5, - 0xd7, 0x4c, 0x9c, 0xd3, 0x1c, 0x5d, 0x3b, 0xa4, 0x93, 0x63, 0x6c, 0x99, 0xab, 0xd1, 0x2e, 0x88, - 0xba, 0x56, 0xcd, 0xee, 0x0b, 0x8d, 0xad, 0x0e, 0xb0, 0xe7, 0x8b, 0xdb, 0x3d, 0xb1, 0xdf, 0x95, - 0x45, 0x5d, 0x43, 0x01, 0xec, 0x78, 0x33, 0x43, 0xd1, 0x2d, 0x8f, 0x62, 0x4b, 0x25, 0x2c, 0xb8, - 0x1c, 0xdf, 0x78, 0x1a, 0x6d, 0x2c, 0x0d, 0xdf, 0x1c, 0xf7, 0xa3, 0xb7, 0xfd, 0xee, 0x5f, 0xb7, - 0x7b, 0x5f, 0x4f, 0x74, 0x7a, 0xe9, 0x8f, 0x9b, 0xaa, 0x6d, 0xb6, 0xe2, 0x78, 0xb4, 0xf1, 0x6a, - 0xdd, 0x72, 0xa6, 0x93, 0xd6, 0x18, 0x7b, 0xa4, 0x79, 0x4f, 0x2a, 0x97, 0xbc, 0x99, 0x11, 0xff, - 0xd4, 0xea, 0x5f, 0x41, 0x8e, 0x45, 0x8a, 0x0a, 0xb0, 0x75, 0xf6, 0x7a, 0xd8, 0x1b, 0x55, 0x32, - 0xa8, 0x04, 0x85, 0x53, 0x79, 0x70, 0xd8, 0x1b, 0x0e, 0x07, 0x72, 0x45, 0x40, 0x00, 0xd2, 0x70, - 0x24, 0xf7, 0x0e, 0x4e, 0x2a, 0x22, 0xda, 0x86, 0xdc, 0x8b, 0xe3, 0xc1, 0xb7, 0x95, 0x6c, 0xfd, - 0x97, 0x1c, 0x94, 0xe3, 0xeb, 0x0e, 0x59, 0xf5, 0x50, 0x1f, 0x0a, 0x71, 0x41, 0x79, 0x6e, 0x8b, - 0xed, 0x67, 0x1b, 0xe5, 0x2a, 0x4a, 0xd3, 0x4a, 0x8d, 0x7a, 0x20, 0x59, 0x84, 0x2a, 0x6e, 0xc0, - 0x73, 0x5e, 0x6c, 0x37, 0xd6, 0x73, 0x5e, 0x13, 0x7a, 0x65, 0xbb, 0x53, 0x39, 0xe0, 0x41, 0x44, - 0xa8, 0x2d, 0x8b, 0x50, 0x39, 0x58, 0x62, 0x68, 0xc0, 0xd3, 0xbe, 0x09, 0x66, 0xf4, 0x0f, 0xcc, - 0x28, 0x40, 0xcf, 0x41, 0x9c, 0xce, 0x79, 0x41, 0x8a, 0xed, 0xa7, 0xeb, 0x11, 0x47, 0xe7, 0xa1, - 0x36, 0x2e, 0xee, 0xd1, 0xb9, 0x2c, 0x4e, 0xe7, 0xe8, 0x39, 0xe4, 0x58, 0xd3, 0x57, 0xb7, 0x38, - 0xe0, 0xd3, 0xf5, 0x80, 0x5e, 0x40, 0xd4, 0xe4, 0xf1, 0x5c, 0x86, 0x0e, 0x41, 0xb2, 0x7d, 0xea, - 0xf8, 0xb4, 0x2a, 0x7d, 0x2c, 0xa7, 0x03, 0xbe, 0x2f, 0x89, 0x88, 0xa4, 0xa8, 0x03, 0x92, 0x6e, - 0x39, 0x3e, 0xf5, 0xaa, 0xf9, 0xfd, 0x6c, 0xa3, 0xd8, 0xfe, 0x6c, 0x3d, 0xa4, 0x6f, 0x3d, 0x64, - 0x84, 0x4a, 0xf4, 0x12, 0x80, 0x3b, 0x87, 0x7b, 0xb5, 0xba, 0xfd, 0xb1, 0xdb, 0x30, 0x13, 0x25, - 0x31, 0x85, 0x8b, 0xe5, 0x83, 0xfa, 0x0f, 0x02, 0xc0, 0xea, 0x18, 0xd4, 0x01, 0xb0, 0x7c, 0x53, - 0xa1, 0xbe, 0x63, 0x10, 0x2f, 0xea, 0x9c, 0x4f, 0x12, 0x60, 0xe6, 0xef, 0x66, 0x6c, 0xeb, 0x33, - 0xdd, 0xa2, 0x4b, 0xa4, 0xe5, 0x9b, 0x23, 0xae, 0x42, 0x5d, 0x28, 0x5c, 0x61, 0x9d, 0x2a, 0x54, - 0x37, 0x49, 0xd4, 0x34, 0x4f, 0xd7, 0x22, 0xba, 0xbe, 0x8b, 0xd9, 0x32, 0xc2, 0x6c, 0x33, 0xe5, - 0x48, 0x37, 0x49, 0xfd, 0x43, 0x16, 0xca, 0xf7, 0x1b, 0x0a, 0x1d, 0x40, 0xde, 0xc0, 0x94, 0x58, - 0xea, 0x75, 0x14, 0xd9, 0xc6, 0xd8, 0xa5, 0xee, 0xbf, 0x89, 0x0d, 0xbd, 0x85, 0x27, 0x1a, 0xf1, - 0x88, 0xab, 0x63, 0x43, 0xff, 0x8e, 0x6f, 0x09, 0x81, 0xd9, 0x74, 0xc0, 0xff, 0x3d, 0x80, 0x70, - 0xf6, 0x31, 0xec, 0x84, 0xd9, 0x57, 0x5c, 0xa2, 0x12, 0x7d, 0x4e, 0xb4, 0xa8, 0xdd, 0x37, 0x2a, - 0x43, 0x39, 0xd4, 0xca, 0x91, 0x14, 0xbd, 0x82, 0xf2, 0xf8, 0x9a, 0x26, 0x61, 0x5b, 0x9b, 0xc3, - 0x4a, 0x5c, 0x1a, 0xb3, 0x4e, 0xe1, 0xb1, 0x49, 0x3c, 0x0f, 0x4f, 0x92, 0x38, 0x69, 0x73, 0x5c, - 0x65, 0xa9, 0x5e, 0x12, 0xeb, 0x7f, 0x08, 0x71, 0x8d, 0x23, 0xb7, 0xa3, 0x2e, 0x14, 0xa3, 0xeb, - 0x7b, 0xab, 0xd9, 0xb5, 0x11, 0x1e, 0x42, 0xdd, 0x90, 0x0d, 0xad, 0x0e, 0x40, 0x78, 0x6d, 0x0e, - 0x11, 0x53, 0xb4, 0x31, 0x97, 0x71, 0xc6, 0x4b, 0x28, 0xc5, 0xd7, 0xe5, 0x98, 0xec, 0xe6, 0x98, - 0x47, 0x4b, 0x25, 0x23, 0xd5, 0x7f, 0x16, 0x21, 0x1f, 0x4d, 0xa4, 0x55, 0x64, 0x2e, 0xc1, 0x5a, - 0x2a, 0x83, 0x45, 0xc5, 0xc0, 0x5a, 0x22, 0x47, 0x1c, 0x22, 0xa6, 0xce, 0x11, 0xa7, 0xbc, 0x82, - 0xfc, 0x74, 0x9e, 0xb2, 0x6f, 0xcb, 0xd1, 0x3c, 0x95, 0x8e, 0xce, 0x59, 0xb3, 0xca, 0xd2, 0x74, - 0xce, 0x9b, 0xf6, 0x14, 0x76, 0x54, 0xdb, 0xa2, 0xc4, 0x5a, 0x79, 0x21, 0x97, 0xce, 0x0b, 0xe5, - 0x95, 0x9e, 0xdb, 0xff, 0x4f, 0x01, 0x0a, 0xf1, 0x10, 0x66, 0xb6, 0x65, 0x03, 0x38, 0x24, 0xa7, - 0xf4, 0xfe, 0x36, 0x53, 0xf2, 0x28, 0x07, 0xf0, 0xd8, 0xc4, 0x81, 0x82, 0x0d, 0xc3, 0x56, 0x31, - 0x25, 0x9a, 0x62, 0x12, 0x33, 0x4d, 0xf6, 0x76, 0x4c, 0x1c, 0x1c, 0x2c, 0xc5, 0x27, 0xc4, 0x44, - 0x6f, 0x00, 0xdd, 0x07, 0x6a, 0xba, 0x37, 0x4d, 0xd3, 0x27, 0x95, 0x24, 0xb1, 0xab, 0x7b, 0xd3, - 0xfa, 0x8f, 0x02, 0x14, 0x13, 0xdf, 0x0e, 0x56, 0x6b, 0x36, 0x90, 0xc7, 0x98, 0xaa, 0x97, 0xe9, - 0x26, 0x32, 0x1b, 0xe4, 0x9d, 0x50, 0xf6, 0x60, 0xac, 0x8b, 0xff, 0x66, 0xac, 0xd7, 0x7f, 0x12, - 0xa0, 0x10, 0x7f, 0x48, 0xd0, 0x37, 0x50, 0x62, 0x57, 0x37, 0x89, 0xa9, 0xf8, 0xac, 0xd3, 0xd3, - 0x44, 0x56, 0x34, 0x71, 0x70, 0x42, 0xcc, 0x33, 0xa6, 0x43, 0x7d, 0x28, 0x33, 0x10, 0xcb, 0x5c, - 0x44, 0x12, 0xd3, 0xf8, 0x0c, 0x07, 0x2c, 0x6d, 0x1c, 0xd5, 0xf9, 0xe2, 0xe6, 0x43, 0x2d, 0x73, - 0xb3, 0xa8, 0x09, 0xef, 0x16, 0x35, 0xe1, 0xfd, 0xa2, 0x26, 0xfc, 0xbe, 0xa8, 0x09, 0xdf, 0xdf, - 0xd5, 0x32, 0xef, 0xee, 0x6a, 0x99, 0xf7, 0x77, 0xb5, 0xcc, 0xdb, 0x62, 0xe2, 0x2f, 0xef, 0xdf, - 0x01, 0x00, 0x00, 0xff, 0xff, 0xe0, 0x60, 0x3a, 0x85, 0x04, 0x0b, 0x00, 0x00, + // 1043 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x96, 0x4d, 0x6f, 0xe3, 0x44, + 0x18, 0xc7, 0x63, 0x27, 0x4d, 0x9b, 0x27, 0x9b, 0x34, 0x3b, 0xec, 0x21, 0x5a, 0x41, 0xda, 0x35, + 0xac, 0x54, 0x21, 0x91, 0x88, 0x1e, 0xe0, 0xb4, 0x12, 0x4d, 0xd3, 0x65, 0xb3, 0x6d, 0xb7, 0x5d, + 0x27, 0x2d, 0xd2, 0x5e, 0xac, 0x89, 0x3d, 0x6d, 0x2d, 0xbf, 0xd6, 0x33, 0x4e, 0x1d, 0x3e, 0x05, + 0x27, 0x38, 0xf2, 0x3d, 0x10, 0x1f, 0xa0, 0xc7, 0x3d, 0x70, 0x58, 0x71, 0xa8, 0xd8, 0x94, 0xaf, + 0xc0, 0x85, 0x13, 0x9a, 0xb1, 0xe3, 0xb8, 0x45, 0xd1, 0xc6, 0x88, 0xdb, 0x34, 0x9e, 0xff, 0x6f, + 0x9e, 0xf7, 0xa7, 0xf0, 0x94, 0x5e, 0xda, 0x1d, 0x12, 0x11, 0xdd, 0x74, 0xcf, 0x02, 0xec, 0x8f, + 0x3a, 0xba, 0xe7, 0xf8, 0x9e, 0x4b, 0x5c, 0xa6, 0x51, 0x86, 0x19, 0x6d, 0xfb, 0x81, 0xc7, 0x3c, + 0xd4, 0xd4, 0x3d, 0xdd, 0x0a, 0x3c, 0xac, 0x5f, 0xb4, 0xe9, 0xa5, 0xdd, 0x36, 0x4c, 0xca, 0xe8, + 0xa5, 0x1d, 0x84, 0xee, 0xe3, 0x47, 0xe7, 0xde, 0xb9, 0x27, 0x2e, 0x75, 0xf8, 0x29, 0xbe, 0xff, + 0xf8, 0xe3, 0x90, 0x99, 0x76, 0xc7, 0xf3, 0x99, 0xe9, 0xb9, 0x78, 0x7e, 0x88, 0xbf, 0x2a, 0xbf, + 0xc9, 0x50, 0xdd, 0x9d, 0xbd, 0xd3, 0xef, 0xa1, 0x2f, 0x61, 0xf5, 0xcc, 0xf6, 0xae, 0x34, 0xd3, + 0x68, 0x4a, 0x9b, 0xd2, 0xd6, 0x83, 0x6e, 0xf3, 0xfa, 0x66, 0xa3, 0xf0, 0xfb, 0xcd, 0x46, 0xf9, + 0xb9, 0xed, 0x5d, 0xf5, 0x7b, 0xd3, 0xf4, 0xa4, 0x96, 0xf9, 0xc5, 0xbe, 0x81, 0x7a, 0x50, 0x62, + 0x13, 0x9f, 0x34, 0xe5, 0x4d, 0x69, 0xab, 0xbe, 0xfd, 0x79, 0x7b, 0x91, 0x7d, 0xed, 0xcc, 0x3b, + 0xed, 0xe1, 0xc4, 0x27, 0xdd, 0x12, 0x67, 0xab, 0x42, 0x8d, 0x1e, 0x83, 0x6c, 0x1a, 0xcd, 0xe2, + 0xa6, 0xb4, 0xb5, 0xd2, 0x05, 0xfe, 0xfb, 0xf4, 0x66, 0x43, 0xee, 0xf7, 0x54, 0xd9, 0x34, 0x50, + 0x04, 0xeb, 0xf4, 0xd2, 0xd6, 0x4c, 0x97, 0x32, 0xec, 0xea, 0x84, 0x1b, 0x57, 0x12, 0x17, 0x8f, + 0x93, 0x8b, 0xb5, 0xc1, 0xeb, 0x83, 0x7e, 0xf2, 0xb5, 0xdf, 0xfb, 0xfb, 0x66, 0xe3, 0xeb, 0x73, + 0x93, 0x5d, 0x84, 0xa3, 0xb6, 0xee, 0x39, 0x9d, 0xd4, 0x1e, 0x63, 0x34, 0x3f, 0x77, 0x7c, 0xeb, + 0xbc, 0x33, 0xc2, 0x94, 0xb4, 0xef, 0x48, 0xd5, 0x1a, 0xbd, 0xb4, 0xd3, 0x3f, 0x0d, 0xe5, 0x2b, + 0x28, 0x71, 0x4b, 0x51, 0x05, 0x56, 0x4e, 0x5e, 0x0d, 0xf6, 0x86, 0x8d, 0x02, 0xaa, 0x41, 0xe5, + 0x58, 0x3d, 0xda, 0xdd, 0x1b, 0x0c, 0x8e, 0xd4, 0x86, 0x84, 0x00, 0xca, 0x83, 0xa1, 0xba, 0xb7, + 0x73, 0xd8, 0x90, 0xd1, 0x1a, 0x94, 0x9e, 0x1f, 0x1c, 0x7d, 0xd7, 0x28, 0x2a, 0xbf, 0x94, 0xa0, + 0x9e, 0xba, 0x3b, 0xe0, 0xd9, 0x43, 0x7d, 0xa8, 0xa4, 0x09, 0x15, 0xb1, 0xad, 0x6e, 0x3f, 0x5d, + 0x2a, 0x56, 0x49, 0x98, 0xe6, 0x6a, 0xb4, 0x07, 0x65, 0x97, 0x30, 0x2d, 0x88, 0x44, 0xcc, 0xab, + 0xdb, 0x5b, 0x8b, 0x39, 0xaf, 0x08, 0xbb, 0xf2, 0x02, 0x4b, 0x8d, 0x84, 0x11, 0x09, 0x6a, 0xc5, + 0x25, 0x4c, 0x8d, 0x66, 0x18, 0x16, 0x89, 0xb0, 0x2f, 0x83, 0x19, 0xfe, 0x0b, 0x33, 0x8c, 0xd0, + 0x33, 0x90, 0xad, 0xb1, 0x48, 0x48, 0x75, 0xfb, 0xc9, 0x62, 0xc4, 0xfe, 0x69, 0xac, 0x4d, 0x93, + 0xbb, 0x7f, 0xaa, 0xca, 0xd6, 0x18, 0x3d, 0x83, 0x12, 0x2f, 0xfa, 0xe6, 0x8a, 0x00, 0x7c, 0xba, + 0x18, 0xb0, 0x17, 0x11, 0x3d, 0xfb, 0xbc, 0x90, 0xa1, 0x5d, 0x28, 0x7b, 0x21, 0xf3, 0x43, 0xd6, + 0x2c, 0x7f, 0x28, 0xa6, 0x47, 0xe2, 0x5e, 0x16, 0x91, 0x48, 0x51, 0x17, 0xca, 0xa6, 0xeb, 0x87, + 0x8c, 0x36, 0x57, 0x37, 0x8b, 0x5b, 0xd5, 0xed, 0xcf, 0x16, 0x43, 0xfa, 0xee, 0x7d, 0x46, 0xac, + 0x44, 0x2f, 0x00, 0x44, 0xe7, 0x88, 0x5e, 0x6d, 0xae, 0x7d, 0xc8, 0x1b, 0xde, 0x44, 0x59, 0x4c, + 0xe5, 0x6c, 0xf6, 0x83, 0xf2, 0xa3, 0x04, 0x30, 0x7f, 0x06, 0x75, 0x01, 0xdc, 0xd0, 0xd1, 0x58, + 0xe8, 0xdb, 0x84, 0x26, 0x95, 0xf3, 0x49, 0x06, 0xcc, 0xfb, 0xbb, 0x9d, 0xb6, 0xf5, 0x89, 0xe9, + 0xb2, 0x19, 0xd2, 0x0d, 0x9d, 0xa1, 0x50, 0xa1, 0x1e, 0x54, 0xae, 0xb0, 0xc9, 0x34, 0x66, 0x3a, + 0x24, 0x29, 0x9a, 0x27, 0x0b, 0x11, 0xbd, 0x30, 0xc0, 0xfc, 0x98, 0x60, 0xd6, 0xb8, 0x72, 0x68, + 0x3a, 0x44, 0x79, 0x5f, 0x84, 0xfa, 0xdd, 0x82, 0x42, 0x3b, 0xb0, 0x6a, 0x63, 0x46, 0x5c, 0x7d, + 0x92, 0x58, 0xb6, 0x34, 0x76, 0xa6, 0xfb, 0x7f, 0x6c, 0x43, 0x6f, 0xe0, 0x91, 0x41, 0x28, 0x09, + 0x4c, 0x6c, 0x9b, 0xdf, 0x8b, 0x2b, 0x31, 0xb0, 0x98, 0x0f, 0xf8, 0xd1, 0x3d, 0x88, 0x60, 0x1f, + 0xc0, 0x7a, 0x1c, 0x7d, 0x2d, 0x20, 0x3a, 0x31, 0xc7, 0xc4, 0x48, 0xca, 0x7d, 0xa9, 0x34, 0xd4, + 0x63, 0xad, 0x9a, 0x48, 0xd1, 0x4b, 0xa8, 0x8f, 0x26, 0x2c, 0x0b, 0x5b, 0x59, 0x1e, 0x56, 0x13, + 0xd2, 0x94, 0x75, 0x0c, 0x0f, 0x1d, 0x42, 0x29, 0x3e, 0xcf, 0xe2, 0xca, 0xcb, 0xe3, 0x1a, 0x33, + 0xf5, 0x8c, 0xa8, 0xfc, 0x29, 0xa5, 0x39, 0x4e, 0xba, 0x1d, 0xf5, 0xa0, 0x9a, 0xb8, 0x4f, 0xe7, + 0xb3, 0x6b, 0x29, 0x3c, 0xc4, 0xba, 0x01, 0x1f, 0x5a, 0x5d, 0x80, 0xd8, 0x6d, 0x01, 0x91, 0x73, + 0x94, 0xb1, 0x90, 0x09, 0xc6, 0x0b, 0xa8, 0xa5, 0xee, 0x0a, 0x4c, 0x71, 0x79, 0xcc, 0x83, 0x99, + 0x92, 0x93, 0x94, 0x5f, 0x8b, 0xb0, 0x9a, 0x4c, 0xa4, 0xb9, 0x65, 0x01, 0xc1, 0x46, 0xae, 0x06, + 0x4b, 0x92, 0x81, 0x8d, 0x4c, 0x8c, 0x04, 0x44, 0xce, 0x1d, 0x23, 0x41, 0x79, 0x09, 0xab, 0xd6, + 0x38, 0x67, 0xdd, 0xd6, 0x93, 0x79, 0x5a, 0xde, 0x3f, 0xe5, 0xc5, 0xaa, 0x96, 0xad, 0xb1, 0x28, + 0xda, 0x63, 0x58, 0xd7, 0x3d, 0x97, 0x11, 0x77, 0xde, 0x0b, 0xa5, 0x7c, 0xbd, 0x50, 0x9f, 0xeb, + 0x05, 0xf1, 0x5b, 0xa8, 0xf1, 0x41, 0xe4, 0x8c, 0x75, 0x5d, 0xb3, 0xc8, 0x84, 0xe6, 0xa9, 0xdb, + 0xaa, 0x1b, 0x3a, 0x87, 0x63, 0x5d, 0xdf, 0x27, 0x13, 0x8a, 0xbe, 0x01, 0x3e, 0x9a, 0x34, 0x4a, + 0x88, 0x45, 0xf3, 0x54, 0xeb, 0x9a, 0x1b, 0x3a, 0x03, 0x2e, 0x52, 0xfe, 0x92, 0xa0, 0x92, 0xee, + 0x03, 0x3e, 0x41, 0xf8, 0x2e, 0x88, 0x9d, 0xcc, 0x39, 0x86, 0xd6, 0xb8, 0x52, 0xb8, 0x77, 0x04, + 0x0f, 0x1d, 0x1c, 0x69, 0xd8, 0xb6, 0x3d, 0x1d, 0x33, 0x62, 0x68, 0x0e, 0x71, 0xf2, 0x24, 0x72, + 0xdd, 0xc1, 0xd1, 0xce, 0x4c, 0x7c, 0x48, 0x1c, 0xf4, 0x1a, 0xd0, 0x5d, 0xa0, 0x61, 0x52, 0x2b, + 0x4f, 0xc9, 0x36, 0xb2, 0xc4, 0x9e, 0x49, 0x2d, 0xe5, 0x27, 0x09, 0xaa, 0x99, 0x35, 0xc6, 0xcb, + 0x8e, 0x47, 0x72, 0x84, 0x99, 0x7e, 0x91, 0x6f, 0x39, 0xf0, 0x9d, 0xd2, 0x8d, 0x65, 0xf7, 0x36, + 0x8c, 0xfc, 0x5f, 0x36, 0x8c, 0xf2, 0xb3, 0x04, 0x95, 0x74, 0xa7, 0xf1, 0x52, 0xe1, 0xae, 0x3b, + 0xc4, 0xd1, 0x42, 0xde, 0x74, 0x79, 0x2c, 0xab, 0x3a, 0x38, 0x3a, 0x24, 0xce, 0x09, 0xd7, 0xa1, + 0x3e, 0xd4, 0x39, 0x88, 0x47, 0x2e, 0x21, 0xc9, 0x79, 0x5a, 0x1e, 0x47, 0x3c, 0x6c, 0x02, 0xd5, + 0xfd, 0xe2, 0xfa, 0x7d, 0xab, 0x70, 0x3d, 0x6d, 0x49, 0x6f, 0xa7, 0x2d, 0xe9, 0xdd, 0xb4, 0x25, + 0xfd, 0x31, 0x6d, 0x49, 0x3f, 0xdc, 0xb6, 0x0a, 0x6f, 0x6f, 0x5b, 0x85, 0x77, 0xb7, 0xad, 0xc2, + 0x9b, 0x6a, 0xe6, 0xbf, 0xef, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x5b, 0x9b, 0x17, 0xe5, 0x8f, + 0x0b, 0x00, 0x00, } func (m *ComponentID) Marshal() (dAtA []byte, err error) { @@ -871,6 +876,26 @@ func (m *KVStats) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + { + size, err := m.NumSeeks.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintComponentStats(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + { + size, err := m.NumMvccKeys.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintComponentStats(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a { size, err := m.ContentionTime.MarshalToSizedBuffer(dAtA[:i]) if err != nil { @@ -1170,6 +1195,10 @@ func (m *KVStats) Size() (n int) { n += 1 + l + sovComponentStats(uint64(l)) l = m.ContentionTime.Size() n += 1 + l + sovComponentStats(uint64(l)) + l = m.NumMvccKeys.Size() + n += 1 + l + sovComponentStats(uint64(l)) + l = m.NumSeeks.Size() + n += 1 + l + sovComponentStats(uint64(l)) return n } @@ -2349,6 +2378,72 @@ func (m *KVStats) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NumMvccKeys", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowComponentStats + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthComponentStats + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthComponentStats + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.NumMvccKeys.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NumSeeks", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowComponentStats + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthComponentStats + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthComponentStats + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.NumSeeks.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipComponentStats(dAtA[iNdEx:]) diff --git a/pkg/sql/execinfrapb/component_stats.proto b/pkg/sql/execinfrapb/component_stats.proto index b98a023acfc5..5741cc3dd287 100644 --- a/pkg/sql/execinfrapb/component_stats.proto +++ b/pkg/sql/execinfrapb/component_stats.proto @@ -130,6 +130,9 @@ message KVStats { // ContentionTime is the cumulative time a KV request spent contending with // other transactions. This time accounts for a portion of KVTime above. optional util.optional.Duration contention_time = 4 [(gogoproto.nullable) = false]; + + optional util.optional.Uint num_mvcc_keys = 5 [(gogoproto.nullable) = false]; + optional util.optional.Uint num_seeks = 6 [(gogoproto.nullable) = false]; } // ExecStats contains statistics about the execution of a component. diff --git a/pkg/sql/instrumentation.go b/pkg/sql/instrumentation.go index 8ddc774a8f5a..983e24391195 100644 --- a/pkg/sql/instrumentation.go +++ b/pkg/sql/instrumentation.go @@ -535,6 +535,8 @@ func (m execNodeTraceMetadata) annotateExplain( nodeStats.RowCount.MaybeAdd(stats.Output.NumTuples) nodeStats.KVBytesRead.MaybeAdd(stats.KV.BytesRead) nodeStats.KVRowsRead.MaybeAdd(stats.KV.TuplesRead) + nodeStats.NumMVCCKeys.MaybeAdd(stats.KV.NumMvccKeys) + nodeStats.NumSeeks.MaybeAdd(stats.KV.NumSeeks) nodeStats.VectorizedBatchCount.MaybeAdd(stats.Output.NumBatches) } // If we didn't get statistics for all processors, we don't show the diff --git a/pkg/sql/logictest/testdata/logic_test/dist_vectorize b/pkg/sql/logictest/testdata/logic_test/dist_vectorize index fcdca5cee34f..4a9b501f1c66 100644 --- a/pkg/sql/logictest/testdata/logic_test/dist_vectorize +++ b/pkg/sql/logictest/testdata/logic_test/dist_vectorize @@ -68,11 +68,13 @@ network usage: actual row count: 5 KV rows read: 5 KV bytes read: 40 B + KV MVCC keys read: 0 + KV MVCC seeks: 0 missing stats table: kv@primary spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzsVd1u00wQvf-eYjVX7aeN_Js29VWhKlIFTVCSwgWKqq09MlacXbO7ThqiPBYvwJMh2zHESbGNEAoRvdwZH8-cc2Z3VqA-xeDB6PrN9dWY-CLl-uT_U_JqOLgl0zlQ4CLAPpuhAu8DWEDBBgoOUHCBQhcmFBIpfFRKyOyTVQ64CR7BMylEPEl1Fp5Q8IVE8FagIx0jeDBmDzEOkQUoDRMoBKhZFOdlpvPLREYzJpdAYZQwrjzSMbLCg1R7pC84AoXX74iOZugR8-sXVZx9wTVyHQm-l5JioYhEFnjEKiIPS41lqEdeAoUHpv2PqIhIdZIVytrKcWXAgsmaQnHa0FKahQietabtqb8IQ4kh00Ia3Srzq8Fdf3w_HLwfnZwCBXxEP92n8xt92j_t80d7KRcyQIlBpbfJup6JtWPi6O72_qY_Prm0_gwTp8LEaj9sVvOwGXbHcI5n3BrIb5l0dtBxs9ubZLcwyekY7vGY1EB-y6Tzg5rktDfJaWGS28nfuCMxqYH8lkm9g5rktjfJbWFSt3M8FjVQ37Lo4q_ZrU_0OUSVCK5wZ8c-_Wcz270YhFgsaiVS6eNbKfy8THEc5Lg8EKDSRdYqDje8SGUNboOtWrBdAVu7YLu-ckNppxbt1oPdX-k7VzEXFDjqhZBTEjON3F9-N72ML1ikq-MQoEIZsTj6zPZnpYRt5t_HaI6bO1CmyotQ5orLUGZnqBQLKx-YrWewKkm3VpKzej3PnvXcleS8VpJevZ69Zz13Jbmofy3Mhoeq_pn7NxSdrP_7FgAA__9xHjpe +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzslt9u0zAUxu95CutcbchV869bl6vBNKQJ1qK2gwtUTZ5zFKKmdrCdbmXqY_ECPBlKsoykG0kQQkNllz4nX87x7zu2fAv6Sww-TE_fnZ7MCJepMHsv98mbyficLFZAQcgAR2yJGvxPYAMFByi4QMEDCgOYU0iU5Ki1VNknt7ngLLgB36IQiSQ1WXhOgUuF4N-CiUyM4MOMXcU4QRag6ltAIUDDojgvs1gdJypaMrUGCtOECe2TXj8rPE6NT0ZSIFB4-4GYaIk-sb5_08WaS2FQmEiKB6nlinOywLUmClngE6sS1ogLfR9S8rr8yC4iV2uDZWhIXgOFK2b4Z9REpibJWsqkua4M2DDfUChWdwC0YSGCb29od0ivwlBhyIxU_UGd0cn4YjS7nIw_Tvf2gQLeIE8fbvwP-nR-2efP9lIhVYAKg1pv803zTuwtu6cX55dno9nesf13duLWdmJ3H0u7fSz7Tq_v7uJgtmCq2HnwpIPpdLfT6WCn2-t7u2hnC6aKnYdPaqfb3U63g51eL783d87OFkwVO4dPaqfX3U6vg52D3i6a2QKpYubRP_MGeKTPCepECo1bb4HH_2xlbwQMQiweFFqmiuN7JXlepliOc10eCFCbImsXizNRpLIGq2K7UezUxPa22Gmu3FLabVR7zWLvd_rOKeZAQaC5lmpBYmZQ8PW96WX8mkWmPg4BalQRi6Ov7OGslLK7-ecYrfDuDJSp8iCUueIwlNklas3C2gdW5xmsIxk0Ijlo5nnwzHMbyWEjkmEzz-Ezz20kR823hdVyUTVfc_8H0fnmxY8AAAD__0ZQeWU= query T EXPLAIN ANALYZE (DISTSQL) SELECT * FROM kv JOIN kw ON kv.k = kw.k @@ -97,6 +99,8 @@ network usage: │ actual row count: 5 │ KV rows read: 5 │ KV bytes read: 40 B +│ KV MVCC keys read: 0 +│ KV MVCC seeks: 0 │ missing stats │ table: kv@primary │ spans: FULL SCAN @@ -106,11 +110,13 @@ network usage: actual row count: 5 KV rows read: 5 KV bytes read: 40 B + KV MVCC keys read: 0 + KV MVCC seeks: 0 missing stats table: kw@primary spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzsmt1u2zYUx-_3FMS52la5MiU7TQQUMDZ0QLo1HtJiN4MvGOnMFiyLLknH8YI81l5gTzbImtv6Q19GG1Km7yLRlA5_-p-jv5jzCPJjAgG8f_Pbm58_kB_JL7fDd2R6T94Or2_IdEmGN2R6_3JKXpPp8uUUHEh5hDdshhKCP4GCAx444IMDPXCgDyMH5oKHKCUX2U8e1xOuowcIug7E6XyhstMjB0IuEIJHULFKEAL4wO4SvEUWoXC74ECEisXJ-jbT-8FcxDMmVuDA-zlLZUA6bnbjX_8gKp5hQLr__iPz45CnClMV83RvSPClJAJZFBCan7lbKdycuiQ_gQN3TIUTlIQv1HyhApKFsp63OUFh9ORAfpSvcLOCuxWZMDnZjn2Q_X7kgFRsjBDQJ-c4JBc7SJb7SFzaUiheIZTP1-EiQoHR7nVeZDeu9asDfN-hGONbHqcoXLqjuQT_Ut8P6IsfXot4PMn_BAeG2WoH1Bl4zsB3Bpno8QHDxT7aGXsgM5xxsSIsSXjIFEYB6a55ZmPyY0IUzuYkiuWULCQb42a4Me7PKP0aKBfpIUwHCd3wDp-7tL_NpmDFlWH3C8PubYVN66cFra4Urtdx_TamBT0WyqsataKtULxCKM9YK-gJ1gqvvr68Gknnd9xeG_VFj4VyWSPp2grFK4TyjEnnnWDS-fX15ddIul7H7bdRX_RYKFc1kq6tULxCKM-YdP4JJl2vvr56NZKu32mjuuixSPrVKddxKWFpRCjhaoKijXi8QjzPmHy9E0y-ii2PW5Rznkrc-TQ9fOVuRhCjMebPRfKFCPF3wcP1bfLD4Xre-kshQqnyUS8_uE43Q1IxVfZp-y3JdXO91I_-ojD6FNWSiylJmMI0XH0Kf3N-yWK1vbAIJYqYJfHfbH_Vm2n_52OI8f162V8MbRLz09h6zZvRGcoMxe7kr4_kSjMSWoLk8qsgoU2R0GKRWysT2reRCW1QCz3jamF59BeF0Vv7QK80I9FSC8uR0GKRWyuTnVpoCRNvl0n3Syb-9uthd7JfOplu16KucZW0d6QnPmE5lCMpNtpteKC6PbGBD9ROT1zBRLcn1uIX-kd64hOWSTmSYqNtRi0sj163JzbwgdrpiSuY6PbEWmrhRRNPbAeSV2er3AyJlXvS5UiK_bcZb8zy6LVbZQPzXrtV1qLyy7NVbobEyj3pciTF_tuMWlgevXarrKUWVjDRbZW1qPzqbJX3_stwbKvFCcukgolus2yiTqzcra5gUuLBzXhtVsVvpV-mx_Zb2MtEt2PWUxDNbuMwUSclRtyQgnjuuTgApVHThSXJv9dLYpRrNpGJbtesJ3fKmdjpmsuZaN-5NhJKsRU35M3ZpDvNFofYpD3NFjPRpOntzMSI7WsjoRRbcUMK4l6rioWuefT03X8BAAD__55xcPI= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzsmt1u2zYUx-_3FMS52la5MiU7TQwUMDZ0QLo1HtJiN4MvGOnMFiSLLknb8YI81l5gTzbIqtL6Q5_oQlbyXUSK0uGP53_0N8MHkB8jGMH7N7-9-fkD-ZH8cjt5R8I1eTu5viHhhkxuSLh-GZLXJNy8DMGCmPt4wxYoYfQnULDAAQtcsGAAFgxhasFScA-l5CK55WE34Nq_h1HfgiBerlTSPLXA4wJh9AAqUBHCCD6wuwhvkfko7D5Y4KNiQbR7TbgeL0WwYGILFrxfsliOSM9OXvzrH0QFCxyR_r__yPTa47HCWAU8PuparD2PhLiVRCDzR6T_RbNEDOVTk-Cb7CaattxtFWZNl-QnsOCOKW-OkvCVWq5UOnQ3LmugMH20IL1KWWRzvduSOZPz_VmOk_unFkjFZggj-mg1g3dxAG9zDM-mrcfn5OL7_BwufBToHz7nRfLiSnedWIl3KGb4lgcxCpse5HGEf6nvx_TFD69FMJunf4IFk2S2Y2qNHWvsWuNESHiP3up4ERbsnixwwcWWsCjiHlOYrMOOZ9InP0ZE4WJJ_ECGZCXZDLPu2rg_o3QroFzFpzCdJHTDe3xp0-E-m5wZl4Y9zA17sBc2rS4gWl59bKdnu-0WEG2K71WF-tN-fE4uvmesP7SF9cepnolOBSG7PXvQ7kykTfFdVhBy-_E5ufieUchOC4XsVs9Et4KQBz172O5MpE3xXVUQcvvxObn4nlHIbguFPKieiYMKQh722p2HtCm8YbmMezYlLPYJJVzNUbQbpJML8hkFPWihoEs2m25RLnks8eCn_ukn9xOC6M8wXRfJV8LD3wX3dq9JLye7cbtfST5KlfY66cV1nHVJxVTRVsH_Sa6f5kv16C9yo49RbbgIScQUxt72KfysfcMCtT8xHyWKgEXB3-x41tmwT3r0MFjjJ-FmXZkwn_p2c856FygTFIeDvz6SK81IaAGSy6-ChNZFQvOTvLNpQoddZEJr1ELHuFpYHP1FbvSdXdArzUi01MJiJDQ_yTubJge1sCNMnEMm_S-ZuPufh8PBbuFgul-L-sZV0kFDT9zidChGkm-0v4UF1e2JDVzQbnriEia6PbEWvzBs6IlbnCbFSPKNthm1sDh63Z7YwAXtpicuYaLbE2uphRd1PHE3kLw6W-V6SDq5J12MJN9_m_HFLI5eu1U2UPfarbKWLL88W-V6SDq5J12MJN9_m1ELi6PXbpW11MISJrqtspYsvzpb5aP_MjQ9atHiNClhotssm5gnndytLmFS4MHN-GyWxd9Jv0ybnrfoLhPdjllPQTT7GIeJeVJgxA0piOczFyeg1Dp00RHxH50lMco1m8hEt2vWo51iJt10zcVMtO9cGwkl34ob8uWsczqtKw6xzvG0rpiJOofezkyM2L42Ekq-FTekIB4dVemga54-fvdfAAAA___ZB-8A # Verify execution. statement ok diff --git a/pkg/sql/logictest/testdata/logic_test/explain_analyze b/pkg/sql/logictest/testdata/logic_test/explain_analyze index c78cf4994c74..f4cc37928ded 100644 --- a/pkg/sql/logictest/testdata/logic_test/explain_analyze +++ b/pkg/sql/logictest/testdata/logic_test/explain_analyze @@ -24,6 +24,8 @@ network usage: actual row count: 0 KV rows read: 0 KV bytes read: 0 B + KV MVCC keys read: 0 + KV MVCC seeks: 0 missing stats table: kv@primary spans: [/2 - ] @@ -47,6 +49,8 @@ network usage: actual row count: 3 KV rows read: 3 KV bytes read: 24 B + KV MVCC keys read: 0 + KV MVCC seeks: 0 missing stats table: kv@primary spans: [/2 - ] @@ -82,6 +86,8 @@ network usage: │ vectorized batch count: 0 │ KV rows read: 4 │ KV bytes read: 32 B +│ KV MVCC keys read: 0 +│ KV MVCC seeks: 0 │ estimated row count: 1,000 (missing stats) │ table: kv@primary │ spans: FULL SCAN @@ -93,6 +99,8 @@ network usage: vectorized batch count: 0 KV rows read: 3 KV bytes read: 24 B + KV MVCC keys read: 0 + KV MVCC seeks: 0 estimated row count: 1,000 (missing stats) table: ab@primary spans: FULL SCAN diff --git a/pkg/sql/logictest/testdata/logic_test/explain_analyze_plans b/pkg/sql/logictest/testdata/logic_test/explain_analyze_plans index e4bade8d4ee2..d1ca315812d0 100644 --- a/pkg/sql/logictest/testdata/logic_test/explain_analyze_plans +++ b/pkg/sql/logictest/testdata/logic_test/explain_analyze_plans @@ -86,6 +86,8 @@ network usage: │ actual row count: 5 │ KV rows read: 5 │ KV bytes read: 40 B + │ KV MVCC keys read: 0 + │ KV MVCC seeks: 0 │ missing stats │ table: kv@primary │ spans: FULL SCAN @@ -95,11 +97,13 @@ network usage: actual row count: 5 KV rows read: 5 KV bytes read: 40 B + KV MVCC keys read: 0 + KV MVCC seeks: 0 missing stats table: kw@primary spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzsm-9u2robx9__rsLyq04LC3ago0iT2Kb9jrqzwtQ_R5qOUOUSHxoBCXNMaU_Vyzo3cK7sKKGsQIidZF3txHnXxDF58vHXX8dPnt7D8PsUduHZpy-fPp6Dyc2biQXIzfhgsnwzeQX-fzo4AZMb8Hlw3AeTJRj040vAOxC1g99OBxdfwYdv8UloQT9waZ_MaAi7f0IELYihBR1owRa0YBsOLThnwYiGYcCiS-7jDsfuLew2Lej58wWPTg8tOAoYhd17yD0-pbALz8nVlJ5S4lJmN6EFXcqJN41vM7npzZk3I-wOWvBsTvywCxp2dOPBgndBLwrj9z8A92a0C5r__hOujkeBz6nPvcBPNLFgGQJGidsFj52v7jhdn-qAD9CCV4SPrmkIggWfR7eJgor7rU8gOHyw4Opo9azrZ7m6A9ckvN5-il50_dCCISdjCrvowSoG53AHzjIJx0alx4NT8Tz9TsBcyqi7-zuvoxtnumoP6RPKxvRz4PmU2WhHh1P6Fz_oodev3jFvfL3684my1YuQ01s6WiShzsgtmNFZwO4AmU6DEeHU7YJmTDJqC79PAaezOXC9cAIWIRnTdXNu0E8QnTwaez8eMzomPGA2aifGxoKDFcdHQb3vf7vsD84v-xdfvhz0UMTh7OLkoIejvz4OLvrnj3-nAPnF8mn9nHzEeHDz5_CcXZxcHkeAnOjolPouZbGCQA_bPecZoT0BaWcAsvD3IdlLox80grmNd3RSNOx2atiHW2Gj7C6J5EuIjRu2U26XREXxvM2wiJQfD07F84KLCKrUIiLR2OYiclitRSS3fCSLCCr7IoKz2w3O4MZOw26V225QUTydDG5cfjw4Fc8LujGulBtLNLbpxm-r5ca55SNxY1x2N3ay242TwY1bDbtdbrtBRfEcZXDj8uPBqXhe0I2dSrmxRGObbtyplhvnlo_EjZ2yu3Eru920Mrhxu1Fus0FF4bTlXtywESC-CxAI-DVl5QaFU0G9oCu3KuXKErVtuvJRtVw5t3wkrtwquytLvoCc0nAe-CHdSX_v_-VmRIu6Y7qiGwYLNqJfWTCKb7M6HMT94tSRS0O-asWrg2N_3RRywkXp8185iZor08gefSc1ep_yZcAmYEo49Ud3P8Jfn18Sj28_mEtDyjwy9f4myaded3s05RH1buLH3mhau_OPtviZ160zGkYodjs_PxLkKGaCBEw6z8IE5WZS6yQ58VXrRAkTlMMMsXZmKI6-kxq9sQO6Y4Yvz0SJGUqY1DqRmaEhTPAuk-Ymk20kzd3OjhBoS6fXyj1TRBw9apq4NkqYtGsmCduodZJkYqROWkIr3UGy27kt7IwPt41Yu7fSw4IJhgrLQYwkfTdahgFVnmDQcETNTDBIJr5qnSjZe70tmGCosEzESNJ3o3qYoTh65QkGDUfUzASDZOKr1okSM-wIX2yPxAmGo4IJhgprTIxEkLXQI-kiCd_IjaOYiZkJBgkTI3WCEl_zRBkGM5YXlOdrnik6yfONsGYiSWjosQWRxa96ULWc_KqzD2qUnvikV6cfJEyM3KxKmAiyGpo4oiR-1YOqxhElk191CkKN0hNfK7fem1FLnIRAiQ97dRZCwsTM4gkZlPQNmh65GUn8ZiYiZFBU77rVQBGXK6hmombprWsg8jIxc9Nal1bkh6J7uYxs8ps5qHUhRF4mZm5a6_qK_FB0r5mRTX4zB1VcDYEk5RCorodIIi1cEGEwFNUbNB2hCNIbmqRn6pqIPf-_VtdEJJnoXROhIxPVmQg1c6dwTYTBUGql5Epv6LEZwXrXRKhxxLomIi8TMzMRMii1UnKlNzRxRHFNBJbUROC6JiKJtK6JyA9F9QZNRyhmFlrIoOhePYPrmojhw_Dhf_8FAAD__2EN7jc= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzsm-9u4jgXxr-_V2H5U0cTJtiBDkUaiZnRvKvOtjDqn5VGK1SlyVkaAQkTGyhb9bL2BvbKVoHSAiF2wnRqF-dbiWNy8vPjx_j49A6zHwPcxOdfTr58vkD9ybu-hdxJ76A_fdd_g_5_1jlF_Qn62jluo_4UddrzW9AHlLSj3846l9_Qp-_zi9jCYeRD2x0Cw80_McEWptjCDrZwDVu4jrsWHsWRB4xFcXLL3bzDsX-Lm1ULB-FozJPLXQt7UQy4eYd5wAeAm_jCvR7AGbg-xHYVW9gH7gaD-WP6k9YoDoZuPMMWPh-5IWuiip08uDPmTdRKwvj9D8SDITRR9d9_2OKzF4UcQh5EYappOPE81IcZQzG4fhNVVy4zgD57vBRH0-VND4-5nnFYXmqgT9jC1y73boChaMxHSUBJ13m_5QWCu_cWXnxaUFm-9fUM3bjsZv19W8n9XQsz7vYAN8m9tRvGww2M0zRGmxgEkmaCfPqeKPYhBn_ze94mD85115YxOYW4B1-jIITYJhvaHsBf_KBF3r75EAe9m8WfT-NhtZLBgVvwxmn8Q_cWDWEYxTPkDgaR53JIRmBOMmljPwaIw3CE_ID10Zi5PVg2Fwb9BNEposaPvV4MPZdHsU3qqbGxcGfB8UF6H9vfr9qdi6v25cnJQYskHM4vTw9aNPnrc-eyffHwdwaQXyyf2s_JR4yHVn8Oz_nl6dVxAshJPp1B6EM8VxBqUbvlPCO0JyD1HEDG4TYkW2m0o0o0sumGTnYNu54Z9uFa2CS_nxL5smTTiu2Y4qdkV5DvcyxMJoGkmSBfcGEie7UwSdS4ujAd7tfCVFg-koWJvPaFieY3JprD4Z2KXTPFmMiuIBs5HN4kkDQT5As6PN0rh5eocdXh3--XwxeWj8Th6Wt3eCe_MTk5HL5WseumGBPZFeRRDoc3CSTNBPmCDu_slcNL1Ljq8I39cvjC8pE4vPPaHb6W35hqORy-XjHFlsiuGOtyf6_YBLmhjwiK-A3EpiClmUhf0Olre-X0El2uOv3Rfjl9YflInL722p1ecqJ0BmwUhQw2jhO2f3M1oQV-DxZ0WTSOPfgWR978MYuPnXm_edrMB8YXrXTx4ThcNjHuctFxxK-cRNWFaeSPvpEZfQh8GsV9NHA5hN7sMfzl9akb8PUX84FBHLiD4G83_dbLbg-m7EEwgQf3XjYt3fmxbf7Oy9YhsATFZufnR0IcxUyIgEnjWZiQwkxKnaQnvmqdKGFCCpgh1c4MxdE3MqM3dkA3zPDlmSgxQwmTUicyMzSECd1kUl1lso6kutnZEQKt6fSzcssUEUdPqiaujRIm9ZJJyjZKnaSZGKmTmtBKN5Bsdq4LO9PDdSPW7lfp4Y4Jhj2WgxhJ9m70NQyo8gSDhiNqZoJBMvFV60TJ3uv9jgmGPZaJGEn2blQPMxRHrzzBoOGImplgkEx81TpRYoYN4Q_bI3GC4WjHBMMea0yMRJC10CPpIgnfyI2jmImZCQYJEyN1QlKneaIMgxnLCylymmeKToqcEZZMJAkNPbYgsvhVD6qWk1919kGN0lNHemX6QcLEyM2qhIkgq6GJI0riVz2oahxRMvlVpyDUKD11Wrn2u5nUxEkIkjrYK7MQEiZmFk_IoGRv0PTIzUjiNzMRIYOietetBoq4XEE1EzVLb1kDUZSJmZvWsrSiOBTdy2Vkk9_MQS0LIYoyMXPTWtZXFIeie82MbPKbOajiaggiKYcgZT1EGunOBREGQ1G9QdMRiiC9oUl6pqyJ2PL_a2VNRJqJ3jUROjJRnYlQM3d2rokwGEqplELpDT02I1Tvmgg1jljWRBRlYmYmQgalVEqh9IYmjiiuiaCSmgha1kSkkZY1EcWhqN6g6QjFzEILGRTdq2doWRPRve_e_--_AAAA__8G7GxU # This query verifies stats collection for the hashJoiner, distinct and sorter. query T @@ -134,6 +138,8 @@ network usage: │ actual row count: 5 │ KV rows read: 5 │ KV bytes read: 40 B + │ KV MVCC keys read: 0 + │ KV MVCC seeks: 0 │ missing stats │ table: kv@primary │ spans: FULL SCAN @@ -143,11 +149,13 @@ network usage: actual row count: 5 KV rows read: 5 KV bytes read: 40 B + KV MVCC keys read: 0 + KV MVCC seeks: 0 missing stats table: kw@primary spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzsm99u27YXx-9_T0HwqsVPrkxKdhwDBYL-GZZui4ckGDAMvlAsLhZsS65Ix8mCPNZeYE82SK7qyLR4pKQLWdF3kRna5Occni_1pXSP-ec5HuKLjz9_fH-JPpxeXJ6evb9Er2brN-vX6Ifz0S9odoM-jU7P0GyNRmdodvNmht6irB2Nzj98PEfvfs-vsIPjJGRnwYJxPPwDE-xgih3sYQf72ME9PHbwMk0mjPMkzf7lPu9wGt7iYdfBUbxciezjsYMnScrw8B6LSMwZHuLL4GrOzlkQstTtYgeHTATRPP-Z2c3JMo0WQXqHHXyxDGI-RB03--HRSgzRSTaMn35DIlqwIer-8zffXE-SWLBYREksNaXJmqOUBeEQfel8dSdY8dEAvcMOvgrEZMo4SlZimf1MNqi8X_EBweMHB2-uNnMt5nJ1h6YBn5ZncZL9_9jBXATXDA_Jg_M0OP0dOGsZjkse46HfIx5aiWf7Pas4SUOWsrD0TeOsJ_Qvexj_GPDppySKWeqSnQScsz_FqxPy-m0aXU_zv0pw2S2brGSQi-AWLdgiSe9QMJ8nk0CwcIi6Ob2sjX-eI8EWSxRGfIZWPLhmRXNjuFtwXpO8-hBxEcUT4ZKeFA0j5tUsafxnJI2KDu2aSWc7816TqF8kqWCpS6WY_9-0afVrBHRfOPO57I3pWdJJlq63E9CKSYMj71WO_Kg0clK_vBNY-1zacb02qV8DPEc11K-EpwXqR15Y_Uhb1A_Iq6369c2s789Rv2ZJo1Q_YiadKvUDol6onxRzw9WP1i-StIaGeB3Xb5OGNMAzqKEhJTwt0BD6whpC26IhQF5tNeTIzCr5HA1pljRKDaFm0qnSECDqhYZIMTdcQ7z6RdKroSF-x-21SUMa4DmuoSElPC3QEO-FNcRri4YAebXVkIGZVfI5GtIsaZQa4plJp0pDgKgXGiLF3HAN8esXSb-GhvQ6bVKQBnB6sIJ0XIKCOEQEJWLK0jZpif_CWuK3RUuADNtqybGZ1fI5WtIsaZRa4ptJp0pLgKgXWiLF3HAtAQ6qzhlfJjFnu9Vg7zd3s4Cz8JptsoMnq3TCfk2TSf4zm8tR3i-3CEPGxaaVbi5O46KJi0CojoX-S3JdnFe7-qM_rhx9zMQ6SWdoHggWT-6-Dr_4fB1EojyxkHGWRsE8-iuQZ110-yIlExbd5NN-1FRoyte2fM5F64LxDMVu52-PhPQ0MyEKJoNvwoQ0ZULJIU8kJkc2MiENiiE1rhiqR39cOXprA7pTDF-eiZZiCCQ5OeQJUAwtYUJ3mXQfM_FKSLq7nT0lUN-kbeWeJaIePbFyvwAwsXK_oGZCvQMTiYmV92S-spT21KW0p-zcL_Pc7dxXF_FyJesat6U9eqI70eJcUiOpXl7fQ0C1uxMGRtROdwJgonu3oeXGbfBEd6LFaaJGUm15mFEM1aPX7k4YGFE73QmAiW53QksxPFZubElXvacmave72p9ocZYBTBSuhxmmDTR-3XsGE4Nqp0UBQbHSoyCSB16uqBSoqGq7uG_jhp0AXpiVaaZmYufSA7z1alfEjPsYKM91OxhGLn47tyOSE37wMAAmdj63oWaisEYMqYhAnuu2MfRURACKbh9DT6arj_dIH9h2Swd8ByMDYGLn4xsQlOrtiCHujnr8lhoZABQ776aks8NyRR0AFVVy2w9GBpHc9oORATDRvfRMzBM7H--AFo9R5ypPGL-VRgZt8t6cJbcyABPdRoaWiggwsfMZD2jxVLsjZlREaPxWGhlUfX5IgfNDKp0fHowMgImdRgYExc7tiBqKwh0xw92Bxq_7bkpPUKUTxHJF9YGKqn7rxEojg0puu1FGholM7Fx6aiZ2GhnQ4rFzOwJAMepcZd_4gSMEK2_a1Ux0Gxl68hw4P7TTyAAWj-7HPIyEUu2OGFIR1eeHFDg_pOq3dew0MoA33ezcOQBQ7DQygHfdrHzMA4Ji1Ev_-_ZT6pf1POBlPU-y2y00MsYP__s3AAD__3E8wN4= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzsm-9u6jYYxr_vKix_OkcLJ7ETKEU6UnX-TOvZVqa2mjRNfEgTr0RAwolNKat6WbuBXdmU0JSGEL9Je1Z7mG8lxsX-va_fx3mc3GH-dYoH-OLzz58_XqJPpxeXp2cfL9GbyfLd8i364Xz4C5rcoC_D0zM0WaLhGZrcvJug9yhrR8PzT5_P0Yff80_YwnESsjN_xjge_IEJtjDFFnaxhT1s4S4eWXieJgHjPEmzr9zlHU7DWzxwLBzF84XILo8sHCQpw4M7LCIxZXiAL_2rKTtnfshS28EWDpnwo2n-M5Obk3kazfx0hS18MfdjPkAdO_vh4UIM0Ek2jJ9-QyKasQFy_vmbrz8HSSxYLKIkrjTNboIATdiKo5T54QA5Ty5zxib88VKaLIsvPfzM1Uqw4lIffcAWvvJFMGYcJQsxzwaUdc37FRcIHt1beP1pTaWY9dUKjX0-Ls_3JPv-yMJc-NcMD8i99TyMvS2MyypGmzwFSfcbJK0Fufk_izhJQ5aysPSfRllP6Cs7ovGjz8dfkihmqU22knrK_hRvTsjb92l0Pc7_KoWB3bJgUUU-82_RjM2SdIX86TQJfMEy6jm9rI1_nSLBZnMURnyCFty_ZkVza7gbcG6bDPwUcRHFgbBJtxINLebVLmm8FySNjA519KSzmXm3TdQvklSw1KaVmH-v27R6DQK6K5z5XHbG9CzpJHPb3QpozaTBkXdrR35UGjlpLgQE1lObdmzXTEVtAfKogaKWQBqlqOSVFZXsi6ICGbhR1J6emvESRW2XNFJFJXrSqVNUIOqFolZirrmi0ubllDbQJbdje2bqUguQ_Qa6VAJplC7RV9Ylui-6BGTgRpeO9Ky8L9Gldkkj1SWqJ506XQKiXuhSJeaa65LbvJy6DXTJ69hdM3WpBcjjBrpUAmmULrmvrEvuvugSkIEbXerrWXlfokvtkkaqS66edOp0CYh6oUuVmGuuS17zcuo10KVux0xVaoGxC6tSxybIj0NEUCLGLDVTn7xX1idvX_QJyMWNPh3rWYFfok_tkkaqT56edOr0CYh6oU-VmGuuT8DB3znj8yTmbLsa7PzPThZwFl6zdXbwZJEG7Nc0CfKfWX8c5v1yezRkXKxb6frDaVw0ceEL2THbf0nOwXm1az7649rRx0wsk3SCpr5gcbB6HH5xfelHojyxkHGWRv40-suvzrro9iAlAYtu2IPmFE2Fpjy25XMuWmeMZyi2O397JKSrmAmRMOl_EyakLRNKDnlSYXJkIhPSohhS7YqhfPTHtaM3NqBbxfD1mSgphkCSk0OeAMXQECZ0m4nzlIlbQuJsd3alQD2dtpU7loh89MTI_QLAxMj9gpwJdQ9MKkyMvCfzpKW0Ky-lXWnnXpnndueevIiXK5mj3Zb26JnuxB7nkhxJ_fL6PwRUuTuhYUTNdCcAJqp3G0pu3PrPdCf2OE3kSOotDz2KoXz0yt0JDSNqpjsBMFHtTigphsfSjS1x5HtqIne_6_2JPc4ygInE9dDDtIHGr3rPoGNQzbQoIChGehSk4oGXKyoFKqrcLu6ZuGEngBdmZJrJmZi59ABvvd4V0eM-Bspz1Q6GlovfzO1IxQk_eBgAEzOf25AzkVgjmlREIM9V2xhqKiIARbWPoSbT5cd7pAdsuysHfAcjA2Bi5uMbEJT67Ygm7o58_IYaGQAUM--mKmeH5YraBypqxW0_GBmk4rYfjAyAieqlp2OemPl4B7R4tDpXecb4jTQyaJv35gy5lQGYqDYylFREgImZz3hAi6feHdGjIkLjN9LIoPLzQwqcH9LK-eHByACYmGlkQFDM3I7IoUjcET3cHWj8qu-m1AS1coJYrqgeUFHlb50YaWTQituulZGhIxMzl56ciZlGBrR4zNyOAFC0OlfZNX7gCMHIm3Y5E9VGhpo8B84PzTQygMWj-jEPLaHUuyOaVET5-SEFzg-p_G0dM40M4E03M3cOABQzjQzgXTcjH_OAoGj10v-u_ZT8ZT0XeFnPrdjtBhoZo_vv_g0AAP__Sg8--w== # This query verifies stats collection for WITH ORDINALITY and the hashJoiner. query T @@ -174,6 +182,8 @@ network usage: │ actual row count: 5 │ KV rows read: 5 │ KV bytes read: 40 B +│ KV MVCC keys read: 0 +│ KV MVCC seeks: 0 │ missing stats │ table: kv@primary │ spans: FULL SCAN @@ -187,11 +197,13 @@ network usage: actual row count: 5 KV rows read: 5 KV bytes read: 40 B + KV MVCC keys read: 0 + KV MVCC seeks: 0 missing stats table: kv@primary spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzUUcFu00AQvfMVozmiRYkdm8OeXKCohlKjJAIh5MPGO0pXsXfd3XVJFOWz-AG-DNkmokmblIA49Djv7dt5b94a3U2JHCfnl-evp_Ac3o6zD7C4hc_p9AKy8Zv06uwynX6BswkIdoCYIUNtJF2JihzyrxhgzrC2piDnjG2hdfcglUvkQ4ZK141v4ZxhYSwhX6NXviTkOBWzksYkJNnBEBlK8kKV3beL26S2qhJ2hQwntdCOwwtk-P4TeFURh-GP766fC6M9aa-MvkdZ882BJSE5xD0yW3naQtEQXiHDmfDFNTkwja8bz6F10gm3QIz5hmE__UrivJgT8mDD_jxtZqXSolR-NQh2w9KSiuZ-gH8wFp5i7G4N4VOsYfSXNYz-dw3RQWO__TTaWEmW5I6ZvFU-9uSBdBfCXb8zSpMdRLvpstZqErAkZMmIJRFLYpa8RHYodiWWUFFl7ApEWZpCeJIc-q5azt2U4KmqQSq3gMaJOW3pRy8WHj5ZfEqXY3K10Y72T_fgz8P2XiTn1N_fmcYW9NGaolvTj1mn6wBJzvds0A-p7qnW4F1xcFQc7YiDfXF4VDw6vnl0wuZwXxwdFcd7m_PNs58BAAD__1tGDfU= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzcUcGO0zAQvfMVozkioyZpyiGnLLBoC8sWtRUIoR5ce9S1kthZ2ymNqn4WP8CXoSQU2u62S0FcOM57fp43763R3eWY4OTy-vLlFJ7C6_HoHWRL-DicXsFo_Gp4c3E9nH6CiwlwdoSYI0NtJN3wghwmnzHEGcPSGkHOGdtA6_bBUK4wCRgqXVa-gWcMhbGEyRq98jlhglM-z2lMXJLtBchQkucqb7_NlmlpVcFtjQwnJdcugWfI8O0H8KqgBIJvX103C6M9aa-MvkcVSyEgo9qBJS4TCHZgR5S5n5A1X7aPBh0yrz1toTiAF8hwzr24JQem8mXlO20r3AIDnG0YdtOPm53nC8Ik3LDfz2VkpdI8V77uhfux0IpEdf_UvzAWnWNst7Do_y6s_4eF9f91YfFRY7_8VNpYSZbknplZo3zsyQPXXXF3-8YoTbYX7183aqymIUsjlvZZGrN0wNLnyI6dXfAVFFQYWwPPcyO4p6bktquGc3c5eCpKkMplUDm-oC39aGLR8cgG53Q5Jlca7egwugd_Dpq8SC6oy9-Zygp6b41o13TjqNW1gCTnOzbshqHuqMbgrjg8KY73xOGhODop7p_e3D9jc3Qojk-KBwebZ5sn3wMAAP__Ni4nKw== # Verify that EXPLAIN ANALYZE on an unsupported query doesn't return an error. statement ok @@ -235,11 +247,13 @@ network usage: actual row count: 5 KV rows read: 5 KV bytes read: 40 B + KV MVCC keys read: 0 + KV MVCC seeks: 0 missing stats table: kv@primary spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzslU1u2zwQhvffKYhZJQAN_X8ouEpbpEXQHxdOkC4KLxhx4BKWSIWk7LiBj9UL9GSFKMuN7KRWlwa8nBm-Hr7P0KNHsPcFMLi-_Hj59obwxexsfk7Gt5cTcnZO3k3Gn8h8ARSUFviZl2iBfYMIKMRAIQEKKVDIYEqhMjpHa7Vpjjx6wZV4ABZSkKqqXZOeUsi1QWCP4KQrEBjc8LsCJ8gFmiAECgIdl4VvM19cVEaW3KyAwnXFlWVkFDSNx7Vj5KK5xodb4mSJjIS_fto2zrVyqJzUaq9k9NISg1wwshHfrRx2qVfkDVC44y7_jpbo2lVNm-ZSXtclIpiuKbTRxpR1fIbAojV9wfgfv7XSRqBB0fM6XT-D5qtUQi_RBFmfy-vb92cX0fmWQ0PEd_L-GMm2sXW8KPoU8AHzeh9OyR9IiaU2K8KLQufcoWAk9ESamr0viMOyIkLaOaktn2FXPggsexFY3AMWDX8p0eGXEsSjIDmWtxIPtx4PsJ6MgvRYrCfDrScDrKcj_3c5CuvpcOvpAOvZ6FiMH_gmTNBWWlncWZHP_3LYrE4UM2z3rNW1yfGL0blv04Zjr_MJgda11agNrpQv-Qs-FUd_Ff_fE4e74vhfOnsr3hUodEtt5qTgDlW-2g6oyy-5dP3RCbRoJC_kD74_1062GW6OcoGbAXelbspdrZ10Vy3RNqv-6YFw8EPoI0lOSHaRpCcku0iyE5L1dP3f7wAAAP__nafZkw== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzslU1u2zwQhvffKYhZJQAN_X8otEpbpEXQHxdOkC4KLxhy4BKSSIWk7LiBj9UL9GSFKMuNnKRRt4aXMy9fD-eZsXgP9raEHC7PP56_vSJsuTgpTsn0-nxGTk7Ju9n0EymWQEFpgZ9ZhRbybxABhRgoJEAhBQoZzCnURnO0Vpv2yL03XIg7yEMKUtWNa9NzClwbhPwenHQlQg5X7KbEGTKBJgiBgkDHZOnLFMuz2siKmTVQuKyZsjmZBG3haeNyctZe48M1cbLCnIS_ftou5lo5VE5q9UiqlpyTAteWGGQiJ-GDtEUs7C5l9Ko_tC1zs3bYp16RN0Dhhjn-HS3RjavbC7VW7-sTEcw3FLpo2751bIGQRxv6DKI_ZBqljUCDYkBlvnkC4lephF6hCbIhwdfX70_OotMdsZadr-T7y0m2i61jZTnkhXfIm8cYK3ZHKqy0WRNWlpozhy1JT6TV7G1JHFY1EdIWpLFsgb38IrDsWWDxAFg0fqeil3cqiCdBcnhbFY-HFI-AlEyC9PAgJeMhJSMgpRP_FzwwSOl4SOkISNnk8BC98MrN0NZaWdz7lD_9y2H7iUexwO49sLoxHL8YzX2ZLpx6n08ItK5Toy64UF7yF3xojv5q_n9gDvfN8b9U9q34rkChW2lTkJI5VHy9G2WfXzHphkMWaNFIVsof7PEG9LbtcDnKJW4H3Ev9lHutm3SvVmjbJ-nhgXD0IgyRJEck-0jSI5J9JNkRyWa--e93AAAA__-kGRip # Very simple query to make it easier to spot regressions when rewriting results # in test files. @@ -258,11 +272,13 @@ network usage: actual row count: 0 KV rows read: 0 KV bytes read: 0 B + KV MVCC keys read: 0 + KV MVCC seeks: 0 missing stats table: kv@primary spans: [/0 - /0] · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyMkFFLwzAUhd_9FZfzHGn7GhCGUnFsbtLN-SB9yNrLLO2SmqTTMfqz_AP-MmkjiojgS-B8J_dczj3BPTeQWKXz9GpNNV1ny1uqD_Rwk2Yp1XRBMQS0KXmh9uwgH5EgF2itKdg5Ywd0Gj9My1fIWKDSbecHnAsUxjLkCb7yDUNirbYNZ6xKttEQXLJXVTPG1odJa6u9skcIrFqlnaQojuLz4YkW9_M5BJadlzRJIDDbkK_2LCl-f3NBF0Z71r4y-pdlzYsjy6qUY5_ZhrZHz1-ILiGwVb54Ykem8-2wZvg4zn2DvBcI6rOf82rHkEkv_n-DjF1rtOMf9f9KjvtcgMsdhzs709mC76wpxjVBLse5EZTsfHCTIKY6WH3en30EAAD___6pnbQ= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyMkcFO4zAQhu_7FKM5e5XkammlaldZUVFalBY4oBxcZ1SiJHbwOIWqymPxAjwZig1FgJC4RPq_-eeP_fuIfN-ixHW-yP9toIH_xeoCmj3cnOVFDg38gRQFGlvRUnXEKG8xw1Jg76wmZusmdAyGefWIMhVYm37wEy4FausI5RF97VtCiRu1bakgVZFLpuCKvKrbENvsZ72rO-UOKHDdK8MSkjRJf0-fZHm1WKDA1eAlzDIUeH4Nvu5IQvr8xFFrazwZX1vzZdTttYaGDgyOVCXDpd4wEzV8Qs4-fDJtD55OCP6iwK3y-o4Y7OD76UCTMey9g3IUGNVrE-zVjlBmo_h5WwVxbw3Th6K-S07HUiBVO4ovwnZwmi6d1eE3Ua7CXgAVsY_TLIq5iaOxHH-9BAAA___Gx6pP # Test a query that has a subquery and a postquery. statement ok @@ -308,6 +324,8 @@ network usage: │ actual row count: 1 │ KV rows read: 1 │ KV bytes read: 8 B +│ KV MVCC keys read: 0 +│ KV MVCC seeks: 0 │ missing stats │ table: parent@primary │ spans: LIMITED SCAN @@ -324,6 +342,8 @@ network usage: │ actual row count: 0 │ KV rows read: 1 │ KV bytes read: 8 B + │ KV MVCC keys read: 0 + │ KV MVCC seeks: 0 │ table: parent@primary │ equality: (column2) = (p) │ equality cols are key @@ -339,6 +359,6 @@ network usage: actual row count: 1 label: buffer 1 · -Diagram 1 (subquery): https://cockroachdb.github.io/distsqlplan/decode.html#eJysUtGK2zAQfO9XiH1KQEfsHIWip0tLCiGuUxJfoBRzKPLiE7UlV1o3l4Z8Vn-gX1Zsx-2Zo2lL71EzGmlmd47gPxcgYBFv5uuELeJkxdS9LjK2nUW38w0bhZyNNvNo_iZhpTajaszerlfvWCUdGhqPgYOxGcayRA_iI4TA4SWkHCpnFXpvXQMf20uL7AFEwEGbqqYGTjko6xDEEUhTgSAgtle2mkyBQ4YkddE-ig-oatLWMNIlChZ8_-aBw06SukfPbE1VTYIFwMHZ_S8ghPTEoTud__MkcwRxfeKPPIWXPSVyV-AaZYZuEgyddWO4qZwupTsAh00ljRfsCjhEutTEmoEst0Pjyy1T1hCap5mWW9ZGcCgz0Yt3B8IeesVe_1_08F-iz_LcYS7Jukk4TD6LP9zFq-Quvo2i0U3YFOH51zQdeP1DddboK2s8Dnz-7uXglHLALMeunt7WTuF7Z1X7TXdctboWyNBTx153h4XpqMbgY3F4UTy9LJ5eFAdDcRulTQUGaW_dJ1ZIQqMOPyff43upabiTDD06LQv9VT5dWC87F1Gh_oLnMvZU38ie61rZsyV6L_PBheBvi5CeXvwIAAD__2aUhTI= +Diagram 1 (subquery): https://cockroachdb.github.io/distsqlplan/decode.html#eJysUtGK2zAQfO9XLPuUgI7YOQrFT5eWFEJSpyS-QCnmUOTFJ2JLriRfLg35rP5Av6zYiq9njqYt7aNmd7Szs3NE-6XACGfxerpKYBYnSxD3sshgM1ncTtcwCBkM1tPF9F0CpVSDagjvV8sPUHFDyg2HyFDpjGJeksXoM4bI8DWmDCujBVmrTQMf26ZZ9ohRwFCqqnYNnDIU2hBGR3TSFYQRxvpKV6MxMszIcVm0n9IjidpJrcDJkiIIvn-zyHDLnbgnC7p2Ve0iCJCh0fufQIjpiaF_nedZx3PC6PrEnmkKL2tK-LagFfGMzCjoK_M23FRGltwckOG64spGcIUMF7KUDhpD5pu-8PkGhFaO1Mud5hsoH4SAHR0sGOKZX6uDLdHOPkHtsr7pPGZ7cNRBb-Dtv5kU_o1Jkzw3lHOnzSjsezSJP93Fy-Quvl0sBjdhE5n_f9BxT-tvQrYiW2llqafzVz8Hp5QhZTn5IFtdG0EfjRbtGP9ctrwWyMg6X732j5nypUbgc3J4kTy-TB5fJAd9crtKuxUqcnttdlBwR0ocnpzv8D2Xrn-TjCwZyQv5lb88WEc7B1GQfKBzGLtSl8iu5lPZVUuylue9huBPg5CeXv0IAAD__7cekc0= Diagram 2 (main-query): https://cockroachdb.github.io/distsqlplan/decode.html#eJyMj89K80AUxfffU1zOqoWBL9nOTiRCoLbSVjeSRZxc2oF0bpy5wULJY_kCPpk0I4gLweX53Tl_5oL02sOiXu-q7Z7q9X5D7uj7jp5uVo_VjhalocWuWlW3ezr5sBiWdLfd3NPQRg66XMIgSMfr9sQJ9hklGoMhiuOUJF7RZX5Qd2fYwsCHYdQrbgycRIa9QL32DIteXNuTkzEoFf8LGHSsre_nYD6zG9VLIPUntlR8vCcYvLTqjpxIRh1GtXR1RXn7BiWaySCrr96k7YFhy8n8fduW0yAh8Y9RvyUXU2PA3YHz_5OM0fFDFDfXZLmZfTPoOGm-llnUIZ-mZvr3GQAA__9Sm4hi -Diagram 3 (postquery): https://cockroachdb.github.io/distsqlplan/decode.html#eJy0k9Fu2jAUhu_3FEfnCiRLJNCLyVd0E0gpWTJBys3EhXEOrbdgZ7ajFSEeay-wJ5sSt9pY1Who6x3_b__Hn3-TI7qvFXJMstVsWUCSFTnIe1WVsL5Ob2crGMQMBqtZOntfwF7pQT2E-TL_ALWwpP1wiAy1KSkTe3LIP2GMG4a1NZKcM7a1jt2GpHxAHjFUum58a28YSmMJ-RG98hUhx8pIUYGTQsO22e3IQjSKkGFJXqiqG583nsN0jAzpgWTjldHg1Z44RD--O2S4FV7ekwPT-Lrd2-at-fbLiHFzYhjUI4fz4o6Qxyf296xzVXmyZEfxOWDwOUxjSFaQ5QVkt2n6KrzjS3hvjNJLEiXZ0ficuDjUxCGdzQu4zooEbvIkQ4bhgae1VXthD8gwNeZLU8NnozQY3d4Q2eN7tL-6w6FFb5mftPOiqs5vvFg_09JoT_p5OYt1NxAsiTJMXaxhe_D0ZL2Fd_9QbfRitZNLqg1_W7LWWFC7QByPJuct_3_Gq0sYl-Rqox2dQb00OTptGFJ5R-Hzdaaxkj5aI7tjgsy7XGeU5HxYjYNIdFhqAX8Px73hcX943Bue9IcnveGrP8Kb05ufAQAA__9GX6z9 +Diagram 3 (postquery): https://cockroachdb.github.io/distsqlplan/decode.html#eJy0k8GO2jAQhu99itGcQLJEAnuofGJbgZTdNKkgy6XiYJxh1yXYqe20ixCP1Rfok1WJl7Z0taio7S3ze3778_zxHt2nCjkm2XwyKyDJihzkg6pKWFynd5M59GIGvfkknbwtYKt0r-7DdJa_g1pY0r7fR4balJSJLTnkHzDGJcPaGknOGdtK-64hKR-RRwyVrhvfykuG0lhCvkevfEXIsTJSVOCk0LBq1muyEA0iZFiSF6rqts8bz2E8RIb0SLLxymjwakscom9fHTJcCS8fyIFpfN32tn5rvvwUYlweGIbqicN5cU_I4wP7c9apqjxZsoP4FDDoHMYxJHPI8gKyuzT9L7zDS3hvjNIzEiXZwfCUuNjVxCGdTAu4zooEbvIkQ4Yh4HFt1VbYHTJMjdk0NXw0SoPR7Q2RPeXRfnWHQ4veMh9r50VVnd74dvGslkZ70s-Hc7uA7WcpYUM7B5ZEGeZzlB3Rxv2QuqmFpjgoq52no_Qa3vxFCNGLIYwuCSH84GStsaDWgTgejE7z-PeMV5cwzsjVRjs6gXpp5-iwZEjlPYWH7kxjJb23RnbHhDLvfJ1QkvNhNQ5FosNSC_irOT5rHp43D8-aR-fNo7Pmq9_My8Or7wEAAP__Km-5mA== diff --git a/pkg/sql/logictest/testdata/logic_test/inverted_index_geospatial b/pkg/sql/logictest/testdata/logic_test/inverted_index_geospatial index f86efde51f83..b34b3f84dd5c 100644 --- a/pkg/sql/logictest/testdata/logic_test/inverted_index_geospatial +++ b/pkg/sql/logictest/testdata/logic_test/inverted_index_geospatial @@ -51,6 +51,8 @@ network usage: │ actual row count: 2 │ KV rows read: 2 │ KV bytes read: 16 B + │ KV MVCC keys read: 0 + │ KV MVCC seeks: 0 │ table: geo_table@primary │ └── • inverted filter @@ -64,11 +66,13 @@ network usage: actual row count: 4 KV rows read: 4 KV bytes read: 32 B + KV MVCC keys read: 0 + KV MVCC seeks: 0 missing stats table: geo_table@geom_index spans: 31 spans · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMleFO40YQx7_3KUbzBVBdZdc2adiqUgqYNm0hyIlaoTpCiz0NFrbX7G5aI5THuhe4JzvZJhwhirnc3YfLh41mxv_1zG9m149o7jMUOAn-DE6mcAdn4fgc5qSurbzJCP7-LQgDMPY6LSxpQ7E1-3uTcHT6s9s_4oOfLseji-m-zxhjHjR_zDvYE-LXYHweTMMrp94rP4BxeBqEcHwFd-hgoRK6kDkZFP8gx5mDpVYxGaN07XpsHhglFQrmYFqUC1u7Zw7GShOKR7SpzQgFTuscQ5IJ6R5DBxOyMs2abZ9LGNYJXKdFQhU6OCllYQT0IjyOourfJIoqzqKoYm8t-MOuGh4hyCIBj4Gyt6QNOvjHX2DTnASw9--e7FgVlgqbqmIjpNX_BjTJRIDfem4eLK1cngvH6OCNtPEtGVALWy6sgJpDI1w5fJwtHWytJ47Gyjmh4Evn01mPiv9IW0rO0sySJt3j68BX8aAqNagChlyAqWmDsVJb0dDzfjyMIuayKGLsrQWBimRXWQ19g_q4xjCs820KbLi2SFvbWJll6_Sponix2ZRcVpBTrvQDyCxTsbSUCGBNI-qYuc_AUl5Ckpo7WBg5p1X4zT65W_vk7tKn31VaPB0Jd9uRKHWaS_3wEY0zdF_RcbvofPYYu5tjzPsNni3Av4Catwu156n21pm1fvH6BmSc8fquc5nb7x-xl7-T_i984PPWGLABH_h-4PM98fJSHLoHW-eyk_zXx-TvgmmitCXd89chDfn339qROdylqpBMqQpDa1Vt25ktZw5SMqf2U2XUQsd0qVXcvKY1x42ucSRkbBvlrTEq2lCd4Esx7xS73WK3U-x1i71Osd8t9jvFh6_Es-V3HwIAAP___4y3QA== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMVeFu0zAQ_s9TWPdnmwiqnWSlC0Iq2zIosHVKK9BEqslLji5qYme2O1JNfSxegCdDSdbRrmpGBUL0h6v7zp97931n9w70TQoeDPyP_tGQTMhJ0D8lY5SXhl-lSD6_8wOfaHOZCINKY2T07s4g6B2_ttsHrPPqvN87G-66lFLqkOqLOns7nvfW75_6w-DCKs_K9kg_OPYDcnhBJmCBkDGe8Qw1eF-AwciCXMkItZaqhO6qDb24AI9akIh8akp4ZEEkFYJ3ByYxKYIHw7LGAHmMqkXBghgNT9Lq2IcWumUBl4mIsQALBjkX2iOtEA7DsPgah2HBaBgW9KkFXmzLYSEQLmLiUCLNNSoNFnz4REySoUfoj-_3cSSFQWESKdZS2W0UkQnONFHIY4_QJVgjTvQDpOS3xSa3Rq5mBheQY5NDsOCKm-gaNZFTk09Nza2IC8CF0dyCOrpXXBs-RvDY3Pp9V3riFpXB-CRJDSpULbZqzSLvF7kiUpAu84gufSHacGW8Smfn5X4YUpuGIaVPLUBQxNvSSnvW_OmXMnTLeqsGK11rSetYG56mqz5hgdF03b6MFyTDTKoZ4WkqI26wdLAyoszpm5QYzHISJ3pCppqPcZF-0id7o0_2Nj69l4m4vzz2psuTqyTjavZLGqtrP1LHblLnHwy8vT7wrF0JucGaP9DX2Ubfh_l3VtWtce_xq0oZZeX7aVO73T6gy5-j9hvWcVkddGiHdVzXd9mOt_zQdu29jRPc6NHfl8ndRqaBVAZVy10Vqcue_2-Xa3-brgLUuRQaV7radDKdjyzAeIz135-WUxXhuZJR9TN12K94FRCjNnWW1UFP1KmywGUyayTbzWS7kew0k51GsttMdhvJ-4_Io_mznwEAAP__bmPQdg== statement ok DROP TABLE geo_table @@ -127,6 +131,8 @@ network usage: │ actual row count: 2 │ KV rows read: 2 │ KV bytes read: 16 B + │ KV MVCC keys read: 0 + │ KV MVCC seeks: 0 │ table: geo_table@primary │ └── • inverted filter @@ -140,11 +146,13 @@ network usage: actual row count: 2 KV rows read: 2 KV bytes read: 16 B + KV MVCC keys read: 0 + KV MVCC seeks: 0 missing stats table: geo_table@geom_index spans: 31 spans · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMleFO40YQx7_3KUbzBVBdZdc2adiqUgqYNm0hyIlaoTpCiz0NFrbX7G7aIJTHuhe4JzutTTgCwncRd9Llw0bzH__XO7_ZXd-juS1Q4CT6Mzqawg2cxONTmJO6tPKqIPj7tyiOwNjLvLKkDaXW7O5M4tHxz37_gA9-Oh-Pzqa7IWOMBdD8sWBvR4hfo_FpNI0vPDdXuQfj-DiK4fACbtDDSmV0JksyKP5BjjMPa61SMkZpJ903D4yyJQrmYV7VC-vkmYep0oTiHm1uC0KBU7fGmGRGusfQw4yszItm2scShm4Bl3mV0RI9nNSyMgJ6CR4myfLfLEmWLHAD-8SAP2zr4QmCrDIIGCh7Tdqgh3_8BTYvSQB7_-4hTlVlqbK5ql6ktPrfgCaZCfBb5erO0lrifThED6-kTa_JgFrYemEFOA6NcS34OFt52EYPHI2Vc0LBV97nsx5V_5G2lJ3khSVNusc3ga_z0bLWoCoYcgHG0QZjpbaioRf8uJ8kzNFjDlLngEBVtq3NQX9BfewwDN16mwIbri3SNjZWFsUmfVpSunjZlFIuoaRS6TuQRaFSaSkTwJpGuJy5LcBSWUOWmxtYGDmndfoNffK36dPvKq8ejoT_2pGodV5KffcRjTf0t6HzFbbxK8DfQC3Yhtrjrg42mbW6eH4DMs64u-t85vf7B-zp76j_Cx-EvA0GbMAHYRiFfEc8vRSH_t4X3ZdvwBRug2mitCXdCzchDfn339qR2d-mqphMrSpDG1W9NjNbzTykbE7tp8qohU7pXKu0eU0bjhtfI2RkbJvlbTCq2pRb4FMz7zT73Wa_0xx0m4NOc9htDjvN-8_Ms9V3HwIAAP__EHC3Qg== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMVdFu0zAUfecrrPuyTQTVTrLSBSGVbRkU2DqlFWgi1eQlly5qYme2O1pN_Sx-gC9DTtbRblqgGhLkwdE918e59xzbuQF9lUMAg_BjeDAkE3IU9Y_JGOW54Rc5ks_vwigk2pxnwqDSmBi9vTWIeoev3fYe67w67fdOhts-pZR6pHpRb2crCN6G_eNwGJ05dq1ih_SjwzAi-2dkAg4ImeIJL1BD8AUYjBwolUxQa6ksdFNN6KUzCKgDmSinxsIjBxKpEIIbMJnJEQIY2hoj5CmqFgUHUjQ8y6tl71ro2gLOM5HiDBwYlFzogLRi2I_j2dc0jmfUswP9zQAvNuWwGAgXKfEokeYSlQYHPnwiJiswIPTH99s4kcKgMJkUD1LFdZKQCc41UcjTgNAVWCNO9B2k5LflJLdGLuYGlxBrk31w4IKb5BI1kVNTTk3NrYhLwIXRwoE6ulVcGz5GCNjC-XNXeuIalcH0KMsNKlQttm7NMh_OSkWkIF0WEG19IdpwZYJKZ-_lbhxTqzO1cjYOQFCkm9KsPQ_86VsZurbeqsFK11rSOtaG5_m6TzjDZPrQvoLPSIGFVHPC81wm3KB1sDLC5vRVTgwWJUkzPSFTzce4TD_BJ3cTn97LTNweHvexw1OqrOBq_ksap-tuos4_3fCPWPMEfb1N9L3b_966ujUe3L9VKaPM3p8uddvtPbr6HLTfsI7P6qBDO6zj-6HPtoLVi7br7vzVHfwEmfxNZBpIZVC1_HWRuuz5_3a4djfpKkJdSqFxravHVqaLkQOYjrH-_Wk5VQmeKplUn6nDfsWrgBS1qbOsDnqiTtkCV8mskew2k91GstdM9hrJfjPZbyTv3iOPFs9-BgAA__-ANNB4 # Also works when creating an index. statement ok @@ -179,6 +187,8 @@ network usage: │ actual row count: 2 │ KV rows read: 2 │ KV bytes read: 16 B + │ KV MVCC keys read: 0 + │ KV MVCC seeks: 0 │ table: geo_table@primary │ └── • inverted filter @@ -192,8 +202,10 @@ network usage: actual row count: 2 KV rows read: 2 KV bytes read: 16 B + KV MVCC keys read: 0 + KV MVCC seeks: 0 missing stats table: geo_table@geom_index spans: 31 spans · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMleFO40YQx7_3KUbzBVBdZdc2adiqUgqYNm0hyIlaoTpCiz0NFrbX7G7aIJTHuhe4JzutTTgCwncRd9Llw0bzH__XO7_ZXd-juS1Q4CT6Mzqawg2cxONTmJO6tPKqIPj7tyiOwNjLvLKkDaXW7O5M4tHxz37_gA9-Oh-Pzqa7IWOMBdD8sWBvR4hfo_FpNI0vPDdXuQfj-DiK4fACbtDDSmV0JksyKP5BjjMPa61SMkZpJ903D4yyJQrmYV7VC-vkmYep0oTiHm1uC0KBU7fGmGRGusfQw4yszItm2scShm4Bl3mV0RI9nNSyMgJ6CR4myfLfLEmWLHAD-8SAP2zr4QmCrDIIGCh7Tdqgh3_8BTYvSQB7_-4hTlVlqbK5ql6ktPrfgCaZCfBb5erO0lrifThED6-kTa_JgFrYemEFOA6NcS34OFt52EYPHI2Vc0LBV97nsx5V_5G2lJ3khSVNusc3ga_z0bLWoCoYcgHG0QZjpbaioRf8uJ8kzNFjDlLngEBVtq3NQX9BfewwDN16mwIbri3SNjZWFsUmfVpSunjZlFIuoaRS6TuQRaFSaSkTwJpGuJy5LcBSWUOWmxtYGDmndfoNffK36dPvKq8ejoT_2pGodV5KffcRjTf0t6HzFbbxK8DfQC3Yhtrjrg42mbW6eH4DMs64u-t85vf7B-zp76j_Cx-EvA0GbMAHYRiFfEc8vRSH_t4X3ZdvwBRug2mitCXdCzchDfn339qR2d-mqphMrSpDG1W9NjNbzTykbE7tp8qohU7pXKu0eU0bjhtfI2RkbJvlbTCq2pRb4FMz7zT73Wa_0xx0m4NOc9htDjvN-8_Ms9V3HwIAAP__EHC3Qg== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMVdFu0zAUfecrrPuyTQTVTrLSBSGVbRkU2DqlFWgi1eQlly5qYme2O1pN_Sx-gC9DTtbRblqgGhLkwdE918e59xzbuQF9lUMAg_BjeDAkE3IU9Y_JGOW54Rc5ks_vwigk2pxnwqDSmBi9vTWIeoev3fYe67w67fdOhts-pZR6pHpRb2crCN6G_eNwGJ05dq1ih_SjwzAi-2dkAg4ImeIJL1BD8AUYjBwolUxQa6ksdFNN6KUzCKgDmSinxsIjBxKpEIIbMJnJEQIY2hoj5CmqFgUHUjQ8y6tl71ro2gLOM5HiDBwYlFzogLRi2I_j2dc0jmfUswP9zQAvNuWwGAgXKfEokeYSlQYHPnwiJiswIPTH99s4kcKgMJkUD1LFdZKQCc41UcjTgNAVWCNO9B2k5LflJLdGLuYGlxBrk31w4IKb5BI1kVNTTk3NrYhLwIXRwoE6ulVcGz5GCNjC-XNXeuIalcH0KMsNKlQttm7NMh_OSkWkIF0WEG19IdpwZYJKZ-_lbhxTqzO1cjYOQFCkm9KsPQ_86VsZurbeqsFK11rSOtaG5_m6TzjDZPrQvoLPSIGFVHPC81wm3KB1sDLC5vRVTgwWJUkzPSFTzce4TD_BJ3cTn97LTNweHvexw1OqrOBq_ksap-tuos4_3fCPWPMEfb1N9L3b_966ujUe3L9VKaPM3p8uddvtPbr6HLTfsI7P6qBDO6zj-6HPtoLVi7br7vzVHfwEmfxNZBpIZVC1_HWRuuz5_3a4djfpKkJdSqFxravHVqaLkQOYjrH-_Wk5VQmeKplUn6nDfsWrgBS1qbOsDnqiTtkCV8mskew2k91GstdM9hrJfjPZbyTv3iOPFs9-BgAA__-ANNB4 diff --git a/pkg/sql/logictest/testdata/logic_test/vectorize_local b/pkg/sql/logictest/testdata/logic_test/vectorize_local index 79209deb98f8..b65c3660893e 100644 --- a/pkg/sql/logictest/testdata/logic_test/vectorize_local +++ b/pkg/sql/logictest/testdata/logic_test/vectorize_local @@ -51,11 +51,13 @@ network usage: actual row count: 2,001 KV rows read: 2,001 KV bytes read: 16 KiB + KV MVCC keys read: 0 + KV MVCC seeks: 0 missing stats table: a@primary spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyMkMFO8zAQhO__U1hz9i8SDhx8qkBFqgoUtRUXlIMbr4ql1A7ejaCK8li8AE-GErcHhJA4zjfeWe_04NcGBpv53fxmq6y6Xa_ulYVGiI4e7IEY5hklKo02xZqYYxpRPz1YuHeYQsOHtpMRVxp1TATTQ7w0BIOt3TW0JusoXRTQcCTWN1OsnbXJH2w6QmPT2sBG_YfGqhOjZiU0lk9K_IGMKj4_OOs6BqEgPoYfVopvrBJZZ9SlLopTwO4odMbllVr6a2jsrNQvxCp20o7bxo9N42eQA6pBI5PTcSx2TzDloP9ewJq4jYHp2-2_JRdDpUFuT7lkjl2q6THFelqT5Wqam4AjluyWWSxCtoZq-PcVAAD__yPumVo= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyMkcFKMzEUhff_U4Szzs8_8y9cZFWUCqVqpS1uZBZpcqmhM8mYm1FLmcfyBXwymUkrigguz3fuPTecHMCPNRRW06vpxVpocblcXAsNCR8s3eiGGOoeJSqJNgZDzCEO6DAOzOwLVCHhfNulAVcSJkSCOiC5VBMU1npT05K0pfivgISlpF09xupJG12j4x4Sq1Z7VuIvJBZdUmJSQmJ-J5JrSIni7ZWzNsEn8skF_81qnowRO9qziKStEsUnzEQ7_kAxPJ-G_suiOJ7a7BOdcHkm5u4cEhudzAOxCF1qh3cNCeP6CeSAqpfI5FgDJ70lqLKXv69qSdwGz_SlpZ-Si76SILul_B0cumjoNgYznslyMe6NwBKn7JZZzHy2-qr_8x4AAP__Wqil9Q== query T EXPLAIN ANALYZE (DISTSQL) SELECT c.a FROM c JOIN d ON d.b = c.b @@ -73,6 +75,8 @@ network usage: │ actual row count: 2 │ KV rows read: 1 │ KV bytes read: 8 B +│ KV MVCC keys read: 0 +│ KV MVCC seeks: 0 │ table: d@primary │ equality: (b) = (b) │ @@ -81,11 +85,13 @@ network usage: actual row count: 2 KV rows read: 2 KV bytes read: 16 B + KV MVCC keys read: 0 + KV MVCC seeks: 0 estimated row count: 1 (100% of the table; stats collected ago) table: c@sec spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJykkl-L00AUxd_9FJfzPNamDyIDQlFW6Lo20l18kTxMZi5rNJ0bZya4S-nH8gv4ySQzWbAWxT-P59ycufd3yAHxcw-N64uri5c3ZBeGXu3qN2Tpst5syVG9Jbdo6TnZRQsFL463Zs8R-j0qNApDEMsxSpisQ_5g4-6glwqdH8Y02Y2ClcDQB6Qu9QyNG9P2vGPjODxZQsFxMl2fn7XryBYK14PxUdNjKNRj0rSu1HoFhdfvKHV71rT89jUWbcUn9qkTfzYK8iVSYOM0zeH2PvGDVT2lF1BoTbIfOJKMaZhWTRfl4IOxQnNUKGomisncMnR1VH9OfSmdn6GrU2i3HkK3N-EeClcin8aBPkrnSbymTD1XgHlB5ipIRcdk-v6M_t-Kqs6LepZ74ju243n6P-pb_U19O46D-Mgn1f3q5eWxUWB3y-XHjDIGy2-D2LymyDrnsuE4pjKtitj4MpoO_DFc_Ta8-incHB99DwAA__8TeBlu +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0ktGKEzEYhe99ip9zHetML0QCQlFW6Lp2pLt4I3ORSX7WsdNkTDK6pfSxfAGfTCaZyq6DooiX5_w5Ofk_ckT41EHi-uLq4uUN6YWiV9vqDWm6rNYbMlRtyCwaek560UDAOsMbtecA-R4laoHeO80hOD9ax3Rgbe4gC4HW9kMc7VpAO8-QR8Q2dgyJG9V0vGVl2D8pIGA4qrZL1-pVYA2B617ZIOkxBKohSlqVYrWEwOt3FNs9Syq-fQ1Za2cj29g6OxvtP2tNOz4E8qyMpOKeHZh34Yfl3ZfzoammOUQ-W-VTegGBRkX9gQO5Ifbjo8ZsCp6NJeqTQFbT7iGqW4YsT-LP-Vy61k54yod4zKr37V75AwSunNsNPX10rSVnJSU-EyxMBWmvvFLWIaqum3H630jLOdJniSjfsR7mPf8Aevk3oLccemcDP4D8q5uLUy3A5pbzZw9u8JrfeqdTTZZVyiXDcIh5Wmaxtnk0PvB-uPxtePlTuD49-h4AAP__uzIypA== query T EXPLAIN (OPT, VERBOSE) SELECT c.a FROM c INNER MERGE JOIN d ON c.a = d.b @@ -155,6 +161,8 @@ network usage: │ actual row count: 2 │ KV rows read: 2 │ KV bytes read: 16 B +│ KV MVCC keys read: 0 +│ KV MVCC seeks: 0 │ estimated row count: 1 (100% of the table; stats collected ago) │ table: c@sec │ spans: FULL SCAN @@ -164,11 +172,13 @@ network usage: actual row count: 2 KV rows read: 2 KV bytes read: 16 B + KV MVCC keys read: 0 + KV MVCC seeks: 0 missing stats table: d@primary spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMk8GO0zAQhu88xWhOoDW7dbriYGmlChRQF5qgdMUF5eDaQzYisbO2I1pVfSxegCdDSajYdMtCxWVvmX_mt-ebcbbo7yoUuIw_xG9uQJ1LeJulC1AwT5I4g0WcvYvhOp0noCFN-oIr0OcrZGispkTW5FF8Ro45w8ZZRd5b10nbvmCu1ygmDEvTtKGTc4bKOkKxxVCGilDgjVxVlJHU5C4myFBTkGXVH6tmnhQyXDbSeAEvkWHaBgEzjgzff4JQ1iRg8uO7H2JlTSATSmsepJz95sGR1AKiQVltAu0l_gpeI8OVDOqWPNg2NN09XTu9cS9EmO8YDtEvHB9kQSj4jv078tK6QO6Cj2ln_AwZ0ppU-xChlmuoqbZuA7KqrJKBtIBJ33aX83cVBKob0KX_Cq2XBe3T_0EVnUJ1f5HRGE3PGlfW0m2OLTN6csuc_hH7N21rrNPkSI9I8875t5Ijs1uQK-jalobcxXQ8u4q-hOczfvbiypXF7fA5-hGe1Iu5POXFZOQbazwdjvDoyZNubqQLGvbgbesUfXRW9dcMYdr7ekGTD0OWD8HcDKmuwftm_qh5OjLzQ3N0gjk6NE8fNV8etJ3vnv0MAAD__xmY2Xc= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzUk8GO0zwQx-_fU4zm9KE12zpdcbC0UgUqqAttULrignJw7SEbNbGztgOtqj4WL8CToSQUmm5ZqLjALfOf-Tkz_7G36O8LFLiYvJm8uAV1KeFlEs9AwXQ-nyQwmySvJnATT-egIZ63BdegL5fI0FhNc1mSR_EeOaYMK2cVeW9dI23bgqleoxgyzE1Vh0ZOGSrrCMUWQx4KQoG3cllQQlKTGwyRoaYg86I9Vo09KWS4qKTxAp4iw7gOAsYcGb5-ByEvScDwy2ffxcqaQCbk1jxIlR-VghVtPDiSWsDwQPZEK_9dcvbTvijqlOUm0F7iz-A5MlzKoO7Ig61D1XTUsC24FyJMdwy76NvgPsiMUPAd-31zFtYFcgPe92XML5AhrUnVD4ct5RpKKq3bgCwKq2SgZt627Sbn7wsIVFagc7-C2suM9uk_mCo6Z6rDlUf90fS4cnkp3ebU2qN_eO2jnxr0w5faWKfJke55kjbkr0pOuDwjl9GNzQ25wajvckEfwv9jfvHk2uXZXffZe1x_1d26OuduJeQrazwdW3jy5GHjG-mMuj14WztFb51V7W-6MG65VtDkQ5flXTA1Xapp8BDmj8KjHsyP4egMODqGR4_CV0dtp7v_vgYAAP__MufyrQ== statement ok RESET vectorize; RESET distsql diff --git a/pkg/sql/opt/exec/execbuilder/testdata/prepare b/pkg/sql/opt/exec/execbuilder/testdata/prepare index 52569c1e6ac5..6cd4885ba677 100644 --- a/pkg/sql/opt/exec/execbuilder/testdata/prepare +++ b/pkg/sql/opt/exec/execbuilder/testdata/prepare @@ -124,6 +124,8 @@ network usage: actual row count: 1 KV rows read: 1 KV bytes read: 8 B + KV MVCC keys read: 0 + KV MVCC seeks: 0 estimated row count: 0 table: ab@primary spans: [/1 - /1] @@ -143,6 +145,8 @@ network usage: actual row count: 0 KV rows read: 0 KV bytes read: 0 B + KV MVCC keys read: 0 + KV MVCC seeks: 0 estimated row count: 0 table: ab@primary spans: [/2 - /2] diff --git a/pkg/sql/opt/exec/explain/emit.go b/pkg/sql/opt/exec/explain/emit.go index 15ed6f123096..0e69f5e4372f 100644 --- a/pkg/sql/opt/exec/explain/emit.go +++ b/pkg/sql/opt/exec/explain/emit.go @@ -350,6 +350,12 @@ func (e *emitter) emitNodeAttributes(n *Node) error { if s.KVBytesRead.HasValue() { e.ob.AddField("KV bytes read", humanize.IBytes(s.KVBytesRead.Value())) } + if s.NumMVCCKeys.HasValue() { + e.ob.AddField("KV MVCC keys read", humanizeutil.Count(s.NumMVCCKeys.Value())) + } + if s.NumSeeks.HasValue() { + e.ob.AddField("KV MVCC seeks", humanizeutil.Count(s.NumSeeks.Value())) + } } if stats, ok := n.annotations[exec.EstimatedStatsID]; ok { diff --git a/pkg/sql/opt/exec/factory.go b/pkg/sql/opt/exec/factory.go index f1b3c735d5b1..b4db411116c0 100644 --- a/pkg/sql/opt/exec/factory.go +++ b/pkg/sql/opt/exec/factory.go @@ -318,6 +318,9 @@ type ExecutionStats struct { KVBytesRead optional.Uint KVRowsRead optional.Uint + NumMVCCKeys optional.Uint + NumSeeks optional.Uint + // Nodes on which this operator was executed. Nodes []string } diff --git a/pkg/sql/rowexec/inverted_joiner.go b/pkg/sql/rowexec/inverted_joiner.go index 8b18d37fbed1..b89421d84c0e 100644 --- a/pkg/sql/rowexec/inverted_joiner.go +++ b/pkg/sql/rowexec/inverted_joiner.go @@ -39,7 +39,7 @@ import ( // scanned rows to disk. The spilling cost will probably be dominated by // the de-duping cost, since it incurs a read. var invertedJoinerBatchSize = util.ConstantWithMetamorphicTestValue( - "invered-joiner-batch-size", + "inverted-joiner-batch-size", 100, /* defaultValue */ 1, /* metamorphicValue */ ) @@ -159,6 +159,8 @@ type invertedJoiner struct { spanBuilder *span.Builder outputContinuationCol bool + + scanStats execinfra.ScanStats } var _ execinfra.Processor = &invertedJoiner{} @@ -770,6 +772,7 @@ func (ij *invertedJoiner) execStatsForTrace() *execinfrapb.ComponentStats { if !ok { return nil } + ij.scanStats = execinfra.GetScanStats(ij.Ctx) return &execinfrapb.ComponentStats{ Inputs: []execinfrapb.InputStats{is}, KV: execinfrapb.KVStats{ @@ -777,6 +780,8 @@ func (ij *invertedJoiner) execStatsForTrace() *execinfrapb.ComponentStats { TuplesRead: fis.NumTuples, KVTime: fis.WaitTime, ContentionTime: optional.MakeTimeValue(execinfra.GetCumulativeContentionTime(ij.Ctx)), + NumMvccKeys: optional.MakeUint(ij.scanStats.NumMVCCKeys), + NumSeeks: optional.MakeUint(ij.scanStats.NumSeeks), }, Exec: execinfrapb.ExecStats{ MaxAllocatedMem: optional.MakeUint(uint64(ij.MemMonitor.MaximumBytes())), diff --git a/pkg/sql/rowexec/joinreader.go b/pkg/sql/rowexec/joinreader.go index 626de07114e5..ee35598018ef 100644 --- a/pkg/sql/rowexec/joinreader.go +++ b/pkg/sql/rowexec/joinreader.go @@ -142,6 +142,10 @@ type joinReader struct { // detailed comment in the spec). This can never be true for index joins, // and requires that the spec has MaintainOrdering set to true. outputGroupContinuationForLeftRow bool + + // scanStats is collected from the trace after we finish doing work for this + // join. + scanStats execinfra.ScanStats } var _ execinfra.Processor = &joinReader{} @@ -709,6 +713,11 @@ func (jr *joinReader) ConsumerClosed() { } func (jr *joinReader) close() { + // Make sure to clone any tracing span so that stats can pick it up later. + // Stats are only collected after we finish closing the processor. + if !jr.Closed { + jr.scanStats = execinfra.GetScanStats(jr.Ctx) + } if jr.InternalClose() { if jr.fetcher != nil { jr.fetcher.Close(jr.Ctx) @@ -740,6 +749,8 @@ func (jr *joinReader) execStatsForTrace() *execinfrapb.ComponentStats { KV: execinfrapb.KVStats{ BytesRead: optional.MakeUint(uint64(jr.fetcher.GetBytesRead())), TuplesRead: fis.NumTuples, + NumMvccKeys: optional.MakeUint(jr.scanStats.NumMVCCKeys), + NumSeeks: optional.MakeUint(jr.scanStats.NumSeeks), KVTime: fis.WaitTime, ContentionTime: optional.MakeTimeValue(execinfra.GetCumulativeContentionTime(jr.Ctx)), }, diff --git a/pkg/sql/rowexec/zigzagjoiner.go b/pkg/sql/rowexec/zigzagjoiner.go index 36bd3f0f8d37..23ffddee5213 100644 --- a/pkg/sql/rowexec/zigzagjoiner.go +++ b/pkg/sql/rowexec/zigzagjoiner.go @@ -246,6 +246,8 @@ type zigzagJoiner struct { rowAlloc rowenc.EncDatumRowAlloc fetchedInititalRow bool + + scanStats execinfra.ScanStats } // zigzagJoinerBatchSize is a parameter which determines how many rows should @@ -990,9 +992,13 @@ func (z *zigzagJoiner) ConsumerClosed() { // execStatsForTrace implements ProcessorBase.ExecStatsForTrace. func (z *zigzagJoiner) execStatsForTrace() *execinfrapb.ComponentStats { + z.scanStats = execinfra.GetScanStats(z.Ctx) + kvStats := execinfrapb.KVStats{ BytesRead: optional.MakeUint(uint64(z.getBytesRead())), ContentionTime: optional.MakeTimeValue(execinfra.GetCumulativeContentionTime(z.Ctx)), + NumMvccKeys: optional.MakeUint(z.scanStats.NumMVCCKeys), + NumSeeks: optional.MakeUint(z.scanStats.NumSeeks), } for i := range z.infos { fis, ok := getFetcherInputStats(z.infos[i].fetcher) diff --git a/pkg/storage/mvcc.go b/pkg/storage/mvcc.go index 80247b975654..ec715d8b62d3 100644 --- a/pkg/storage/mvcc.go +++ b/pkg/storage/mvcc.go @@ -34,6 +34,7 @@ import ( "github.com/cockroachdb/cockroach/pkg/util/log" "github.com/cockroachdb/cockroach/pkg/util/protoutil" "github.com/cockroachdb/cockroach/pkg/util/timeutil" + "github.com/cockroachdb/cockroach/pkg/util/tracing" "github.com/cockroachdb/errors" "github.com/cockroachdb/errors/oserror" "github.com/dustin/go-humanize" @@ -885,6 +886,16 @@ func mvccGet( mvccScanner.init(opts.Txn, opts.LocalUncertaintyLimit) mvccScanner.get() + // If we have a trace, emit the scan stats that we produced. + traceSpan := tracing.SpanFromContext(ctx) + + if traceSpan != nil { + traceSpan.RecordStructured(&roachpb.ScanStats{ + NumMvccKeys: mvccScanner.numMVCCKeysRead, + NumSeeks: mvccScanner.numSeeks, + }) + } + if mvccScanner.err != nil { return optionalValue{}, nil, mvccScanner.err } @@ -2392,6 +2403,16 @@ func mvccScanToBytes( res.NumKeys = mvccScanner.results.count res.NumBytes = mvccScanner.results.bytes + // If we have a trace, emit the scan stats that we produced. + traceSpan := tracing.SpanFromContext(ctx) + + if traceSpan != nil { + traceSpan.RecordStructured(&roachpb.ScanStats{ + NumMvccKeys: mvccScanner.numMVCCKeysRead, + NumSeeks: mvccScanner.numSeeks, + }) + } + res.Intents, err = buildScanIntents(mvccScanner.intentsRepr()) if err != nil { return MVCCScanResult{}, err diff --git a/pkg/storage/pebble_mvcc_scanner.go b/pkg/storage/pebble_mvcc_scanner.go index a4a6cb9b555b..bff2b02e1c62 100644 --- a/pkg/storage/pebble_mvcc_scanner.go +++ b/pkg/storage/pebble_mvcc_scanner.go @@ -140,6 +140,14 @@ type pebbleMVCCScanner struct { curValue []byte results pebbleResults intents pebble.Batch + + // numMVCCKeysRead is the number of keys that this scanner had to read and then + // skip due to having too-old MVCC timestamps. + numMVCCKeysRead uint64 + // numSeeks is the number of times that this scanner had to seek due to + // exceeding its itersBeforeSeek configuration value for a given key. + numSeeks uint64 + // mostRecentTS stores the largest timestamp observed that is equal to or // above the scan timestamp. Only applicable if failOnMoreRecent is true. If // set and no other error is hit, a WriteToOld error will be returned from @@ -182,6 +190,7 @@ func (p *pebbleMVCCScanner) init(txn *roachpb.Transaction, localUncertaintyLimit // get iterates exactly once and adds one KV to the result set. func (p *pebbleMVCCScanner) get() { p.isGet = true + p.numSeeks++ p.parent.SeekGE(MVCCKey{Key: p.start}) if !p.updateCurrent() { return @@ -621,6 +630,7 @@ func (p *pebbleMVCCScanner) advanceKeyAtEnd() bool { // Iterating to the next key might have caused the iterator to reach the // end of the key space. If that happens, back up to the very last key. p.peeked = false + p.numSeeks++ p.parent.SeekLT(MVCCKey{Key: p.end}) if !p.updateCurrent() { return false @@ -711,6 +721,7 @@ func (p *pebbleMVCCScanner) seekVersion(seekTS hlc.Timestamp, uncertaintyCheck b return p.advanceKeyAtEnd() } for { + // While we have the same key that we looked at least time... if !bytes.Equal(p.curUnsafeKey.Key, origKey) { return p.advanceKeyAtNewKey(origKey) } @@ -761,6 +772,7 @@ func (p *pebbleMVCCScanner) iterValid() bool { // iterSeek seeks to the latest revision of the specified key (or a greater key). func (p *pebbleMVCCScanner) iterSeek(key MVCCKey) bool { p.clearPeeked() + p.numSeeks++ p.parent.SeekGE(key) return p.updateCurrent() } @@ -768,6 +780,7 @@ func (p *pebbleMVCCScanner) iterSeek(key MVCCKey) bool { // iterSeekReverse seeks to the latest revision of the key before the specified key. func (p *pebbleMVCCScanner) iterSeekReverse(key MVCCKey) bool { p.clearPeeked() + p.numSeeks++ p.parent.SeekLT(key) if !p.updateCurrent() { // We have seeked to before the start key. Return. @@ -785,6 +798,7 @@ func (p *pebbleMVCCScanner) iterSeekReverse(key MVCCKey) bool { // iterNext advances to the next MVCC key. func (p *pebbleMVCCScanner) iterNext() bool { + p.numMVCCKeysRead++ if p.reverse && p.peeked { // If we have peeked at the previous entry, we need to advance the iterator // twice. @@ -792,6 +806,7 @@ func (p *pebbleMVCCScanner) iterNext() bool { if !p.iterValid() { // We were peeked off the beginning of iteration. Seek to the first // entry, and then advance one step. + p.numSeeks++ p.parent.SeekGE(MVCCKey{Key: p.start}) if !p.iterValid() { return false