diff --git a/pkg/pb/plan/plan.pb.go b/pkg/pb/plan/plan.pb.go index 0fda6504e4f6a..d8ddc40ff584b 100644 --- a/pkg/pb/plan/plan.pb.go +++ b/pkg/pb/plan/plan.pb.go @@ -6090,10 +6090,18 @@ type AnalyzeInfo struct { S3Get int64 `protobuf:"varint,20,opt,name=s3_get,json=s3Get,proto3" json:"s3_get,omitempty"` S3Delete int64 `protobuf:"varint,21,opt,name=s3_delete,json=s3Delete,proto3" json:"s3_delete,omitempty"` S3DeleteMul int64 `protobuf:"varint,22,opt,name=s3_delete_mul,json=s3DeleteMul,proto3" json:"s3_delete_mul,omitempty"` + CacheRead int64 `protobuf:"varint,23,opt,name=cache_read,json=cacheRead,proto3" json:"cache_read,omitempty"` + CacheHit int64 `protobuf:"varint,24,opt,name=cache_hit,json=cacheHit,proto3" json:"cache_hit,omitempty"` + CacheMemoryRead int64 `protobuf:"varint,25,opt,name=cache_memory_read,json=cacheMemoryRead,proto3" json:"cache_memory_read,omitempty"` + CacheMemoryHit int64 `protobuf:"varint,26,opt,name=cache_memory_hit,json=cacheMemoryHit,proto3" json:"cache_memory_hit,omitempty"` + CacheDiskRead int64 `protobuf:"varint,27,opt,name=cache_disk_read,json=cacheDiskRead,proto3" json:"cache_disk_read,omitempty"` + CacheDiskHit int64 `protobuf:"varint,28,opt,name=cache_disk_hit,json=cacheDiskHit,proto3" json:"cache_disk_hit,omitempty"` + CacheRemoteRead int64 `protobuf:"varint,29,opt,name=cache_remote_read,json=cacheRemoteRead,proto3" json:"cache_remote_read,omitempty"` + CacheRemoteHit int64 `protobuf:"varint,30,opt,name=cache_remote_hit,json=cacheRemoteHit,proto3" json:"cache_remote_hit,omitempty"` // written_rows used to estimate S3input - WrittenRows int64 `protobuf:"varint,23,opt,name=written_rows,json=writtenRows,proto3" json:"written_rows,omitempty"` + WrittenRows int64 `protobuf:"varint,31,opt,name=written_rows,json=writtenRows,proto3" json:"written_rows,omitempty"` // deleted_rows used to estimate S3input - DeletedRows int64 `protobuf:"varint,24,opt,name=deleted_rows,json=deletedRows,proto3" json:"deleted_rows,omitempty"` + DeletedRows int64 `protobuf:"varint,32,opt,name=deleted_rows,json=deletedRows,proto3" json:"deleted_rows,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -6286,6 +6294,62 @@ func (m *AnalyzeInfo) GetS3DeleteMul() int64 { return 0 } +func (m *AnalyzeInfo) GetCacheRead() int64 { + if m != nil { + return m.CacheRead + } + return 0 +} + +func (m *AnalyzeInfo) GetCacheHit() int64 { + if m != nil { + return m.CacheHit + } + return 0 +} + +func (m *AnalyzeInfo) GetCacheMemoryRead() int64 { + if m != nil { + return m.CacheMemoryRead + } + return 0 +} + +func (m *AnalyzeInfo) GetCacheMemoryHit() int64 { + if m != nil { + return m.CacheMemoryHit + } + return 0 +} + +func (m *AnalyzeInfo) GetCacheDiskRead() int64 { + if m != nil { + return m.CacheDiskRead + } + return 0 +} + +func (m *AnalyzeInfo) GetCacheDiskHit() int64 { + if m != nil { + return m.CacheDiskHit + } + return 0 +} + +func (m *AnalyzeInfo) GetCacheRemoteRead() int64 { + if m != nil { + return m.CacheRemoteRead + } + return 0 +} + +func (m *AnalyzeInfo) GetCacheRemoteHit() int64 { + if m != nil { + return m.CacheRemoteHit + } + return 0 +} + func (m *AnalyzeInfo) GetWrittenRows() int64 { if m != nil { return m.WrittenRows @@ -12428,14 +12492,14 @@ func init() { func init() { proto.RegisterFile("plan.proto", fileDescriptor_2d655ab2f7683c23) } var fileDescriptor_2d655ab2f7683c23 = []byte{ - // 11722 bytes of a gzipped FileDescriptorProto + // 11847 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0xbd, 0x4d, 0x8c, 0x1b, 0xd7, 0x96, 0x18, 0xdc, 0x6c, 0xfe, 0x1f, 0xb2, 0xd9, 0xd5, 0x57, 0x2d, 0x89, 0x92, 0x65, 0xa9, 0x55, 0x96, 0x6d, 0x59, 0xb6, 0x65, 0x5b, 0xf2, 0x8f, 0xfc, 0xe6, 0xbd, 0x79, 0x66, 0xb3, 0xd9, 0x6a, 0x5a, 0x6c, 0xb2, 0x5f, 0x91, 0x2d, 0xd9, 0x6f, 0xf0, 0x7d, 0x85, 0x22, 0xab, 0xd8, 0x5d, 0xee, 0x62, 0x15, 0x5d, 0x55, 0x54, 0x77, 0x1b, 0x18, 0xe0, 0x25, 0x03, 0x4c, 0x32, 0xd9, 0x06, 0x98, - 0x55, 0x26, 0x78, 0x33, 0xab, 0x60, 0x90, 0x01, 0x02, 0x64, 0x80, 0x19, 0x04, 0xd9, 0x25, 0x8b, - 0xc9, 0x20, 0x08, 0x02, 0x64, 0x11, 0x24, 0x01, 0x26, 0xc1, 0xcb, 0x62, 0x56, 0xc9, 0x2c, 0x26, + 0x55, 0x26, 0x78, 0x33, 0xab, 0x60, 0x90, 0x01, 0x02, 0x64, 0x80, 0x09, 0x82, 0xec, 0x92, 0xc5, + 0x64, 0x10, 0x04, 0x01, 0xb2, 0x08, 0x92, 0x00, 0x93, 0xe0, 0x65, 0x31, 0xab, 0xcc, 0x2c, 0x26, 0x9b, 0x20, 0x9b, 0xe0, 0x9c, 0x7b, 0xab, 0xea, 0x16, 0xc9, 0xb6, 0x2c, 0xbf, 0x37, 0x48, 0xb2, 0xe9, 0xae, 0x7b, 0xce, 0xb9, 0xff, 0xf7, 0x9e, 0xbf, 0x7b, 0xee, 0x25, 0xc0, 0xd4, 0x31, 0xdc, 0xfb, 0x53, 0xdf, 0x0b, 0x3d, 0x96, 0xc3, 0xef, 0xeb, 0xef, 0x1e, 0xd9, 0xe1, 0xf1, 0x6c, 0x78, @@ -12509,114 +12573,114 @@ var fileDescriptor_2d655ab2f7683c23 = []byte{ 0xa9, 0x5d, 0x5d, 0x0c, 0x66, 0x3c, 0xf7, 0x15, 0x28, 0x90, 0x8e, 0x10, 0x44, 0x23, 0xce, 0x53, 0xea, 0xdf, 0x5b, 0x85, 0xd2, 0xee, 0xcc, 0x1d, 0x61, 0x93, 0xd9, 0x6b, 0x90, 0x1b, 0xcf, 0xdc, 0x11, 0x35, 0x37, 0x16, 0x19, 0xf1, 0x4a, 0xd1, 0x08, 0x89, 0x7b, 0xd0, 0xf0, 0x8f, 0x70, 0xef, - 0x2e, 0xec, 0x41, 0x84, 0xab, 0x7f, 0x9a, 0xe1, 0x25, 0xee, 0x3a, 0xc6, 0x11, 0x2b, 0x41, 0xae, - 0xdb, 0xeb, 0xb6, 0x94, 0x15, 0x56, 0x85, 0x52, 0xbb, 0x3b, 0x68, 0x69, 0xdd, 0x46, 0x47, 0xc9, - 0xd0, 0x82, 0x1e, 0x34, 0xb6, 0x3b, 0x2d, 0x65, 0x15, 0x31, 0x4f, 0x7b, 0x9d, 0xc6, 0xa0, 0xdd, - 0x69, 0x29, 0x39, 0x8e, 0xd1, 0xda, 0xcd, 0x81, 0x52, 0x62, 0x0a, 0x54, 0x0f, 0xb4, 0xde, 0xce, - 0x61, 0xb3, 0xa5, 0x77, 0x0f, 0x3b, 0x1d, 0x45, 0x61, 0x97, 0x60, 0x3d, 0x86, 0xf4, 0x38, 0x70, - 0x0b, 0xb3, 0x3c, 0x6d, 0x68, 0x0d, 0xed, 0xb1, 0xf2, 0x19, 0x2b, 0x41, 0xb6, 0xf1, 0xf8, 0xb1, - 0xf2, 0x33, 0xdc, 0x1b, 0xe5, 0x67, 0xed, 0xae, 0xfe, 0xb4, 0xd1, 0x39, 0x6c, 0x29, 0x3f, 0x5b, - 0x8d, 0xd2, 0x3d, 0x6d, 0xa7, 0xa5, 0x29, 0x3f, 0xcb, 0xb1, 0x0d, 0xa8, 0xfe, 0xb4, 0xd7, 0x6d, - 0xed, 0x37, 0x0e, 0x0e, 0xa8, 0x21, 0x3f, 0x2b, 0xa9, 0xff, 0x2d, 0x07, 0x39, 0xec, 0x09, 0x53, - 0x13, 0x3e, 0x10, 0x77, 0x11, 0x37, 0xe2, 0x76, 0xee, 0xcf, 0xfe, 0xe2, 0xd6, 0x0a, 0xe7, 0x00, - 0xb7, 0x21, 0xeb, 0xd8, 0x21, 0x4d, 0x60, 0xbc, 0x7a, 0x84, 0x6e, 0xb4, 0xb7, 0xa2, 0x21, 0x8e, - 0xdd, 0x84, 0x0c, 0x67, 0x05, 0x95, 0x07, 0x35, 0xb1, 0xbc, 0x84, 0x2c, 0xd9, 0x5b, 0xd1, 0x32, - 0x53, 0x76, 0x03, 0x32, 0xcf, 0x05, 0x5f, 0xa8, 0x72, 0x3c, 0x97, 0x26, 0x88, 0x7d, 0xce, 0xb6, - 0x20, 0x3b, 0xf2, 0xb8, 0xe6, 0x13, 0xe3, 0x39, 0x6f, 0xc5, 0xf2, 0x47, 0x9e, 0xc3, 0x5e, 0x83, - 0xac, 0x6f, 0x9c, 0xd2, 0x8c, 0xc6, 0xd3, 0x15, 0x33, 0x6f, 0x24, 0xf2, 0x8d, 0x53, 0x6c, 0xc4, - 0x98, 0x76, 0x52, 0xdc, 0x88, 0x68, 0xbe, 0xb1, 0x9a, 0x31, 0xdb, 0x82, 0xcc, 0x29, 0xed, 0xa5, - 0x58, 0xd8, 0x3f, 0xb3, 0x5d, 0xd3, 0x3b, 0xed, 0x4f, 0xad, 0x11, 0x52, 0x9c, 0xb2, 0xd7, 0x21, - 0x1b, 0xcc, 0x86, 0xb4, 0x97, 0x2a, 0x0f, 0x36, 0x16, 0xb8, 0x22, 0x56, 0x14, 0xcc, 0x86, 0xec, - 0x0d, 0xc8, 0x8d, 0x3c, 0xdf, 0x17, 0xfb, 0x49, 0x89, 0x1a, 0x1c, 0x09, 0x04, 0x54, 0x7e, 0x10, - 0x8f, 0x15, 0x86, 0xa4, 0x3b, 0xc5, 0x44, 0x09, 0x47, 0xc6, 0x0a, 0x43, 0x76, 0x47, 0xb0, 0xf9, - 0xaa, 0xdc, 0xea, 0x48, 0x08, 0x60, 0x39, 0x88, 0xc5, 0x49, 0x9a, 0x18, 0x67, 0xa4, 0x59, 0xc5, - 0x44, 0x11, 0xf7, 0xc7, 0x36, 0x4d, 0x8c, 0x33, 0x76, 0x07, 0xb2, 0xcf, 0xad, 0x11, 0x29, 0x59, - 0x71, 0x6d, 0x62, 0x92, 0x9e, 0x52, 0xf7, 0x10, 0x4d, 0xeb, 0xde, 0x73, 0x4c, 0xd2, 0xb7, 0xe2, - 0xb9, 0xdc, 0xf5, 0x1c, 0xf3, 0x29, 0xcd, 0x25, 0x21, 0x51, 0xe8, 0x19, 0xb3, 0x33, 0xdc, 0xb3, - 0x0a, 0x17, 0x4f, 0xc6, 0xec, 0xac, 0x6d, 0x22, 0xfb, 0x73, 0xcd, 0xe7, 0xa4, 0x65, 0x65, 0x34, - 0xfc, 0x44, 0x33, 0x20, 0xb0, 0x1c, 0x6b, 0x14, 0xda, 0xcf, 0xed, 0xf0, 0x9c, 0xf4, 0xa8, 0x8c, - 0x26, 0x83, 0xb6, 0x0b, 0x90, 0xb3, 0xce, 0xa6, 0xbe, 0xba, 0x07, 0x45, 0x51, 0xcb, 0x82, 0x2d, - 0x71, 0x0d, 0x4a, 0x76, 0xa0, 0x8f, 0x3c, 0x37, 0x08, 0x85, 0xf6, 0x50, 0xb4, 0x83, 0x26, 0x26, - 0x91, 0xa9, 0x98, 0x46, 0xc8, 0xd9, 0x70, 0x55, 0xa3, 0x6f, 0xf5, 0x01, 0x40, 0xd2, 0x2d, 0x6c, - 0x93, 0x63, 0xb9, 0x91, 0xa2, 0xe2, 0x58, 0x6e, 0x9c, 0x67, 0x55, 0xca, 0x73, 0x0d, 0xca, 0xb1, - 0x06, 0xc8, 0xaa, 0x90, 0x31, 0x84, 0x00, 0xc8, 0x18, 0xea, 0x5d, 0x54, 0xc8, 0x22, 0x1d, 0x2f, - 0x8d, 0xc3, 0x54, 0x24, 0x16, 0x32, 0x43, 0xf5, 0x87, 0x50, 0xd5, 0xac, 0x60, 0xe6, 0x84, 0x4d, - 0xcf, 0xd9, 0xb1, 0xc6, 0xec, 0x1d, 0x80, 0x38, 0x1d, 0x08, 0x39, 0x9d, 0xac, 0xdd, 0x1d, 0x6b, - 0xac, 0x49, 0x78, 0xf5, 0x1f, 0xe5, 0x48, 0xe3, 0xd9, 0xe1, 0xaa, 0x86, 0xd0, 0x29, 0x32, 0x92, - 0x4e, 0x11, 0x73, 0xd0, 0xd5, 0xb4, 0x5e, 0x75, 0x6c, 0x9b, 0xa6, 0xe5, 0x46, 0xfa, 0x13, 0x4f, - 0xe1, 0x64, 0x1b, 0xce, 0x11, 0x6d, 0xa8, 0xda, 0x03, 0x16, 0x55, 0x3a, 0x99, 0xfa, 0x56, 0x10, - 0x70, 0xc9, 0x6d, 0x38, 0x47, 0xd1, 0xde, 0xce, 0x7f, 0xdb, 0xde, 0xbe, 0x06, 0x25, 0xd7, 0x0b, - 0x75, 0xb2, 0x6e, 0x0a, 0x7c, 0xf4, 0x85, 0x19, 0xc7, 0xde, 0x84, 0xa2, 0xd0, 0x4b, 0xc5, 0xa6, - 0x12, 0xcb, 0x65, 0x87, 0x03, 0xb5, 0x08, 0xcb, 0xea, 0xa8, 0xe6, 0x4c, 0x26, 0x96, 0x1b, 0x46, - 0x92, 0x4a, 0x24, 0xd9, 0xdb, 0x50, 0xf6, 0x5c, 0x9d, 0x2b, 0xaf, 0x62, 0x57, 0x89, 0xe5, 0xdb, - 0x73, 0x0f, 0x09, 0xaa, 0x95, 0x3c, 0xf1, 0x85, 0x4d, 0x71, 0xbc, 0x53, 0x7d, 0x64, 0xf8, 0x26, - 0xed, 0xac, 0x92, 0x56, 0x74, 0xbc, 0xd3, 0xa6, 0xe1, 0x9b, 0x5c, 0x72, 0x7f, 0xed, 0xce, 0x26, - 0xb4, 0x9b, 0xd6, 0x34, 0x91, 0x62, 0x37, 0xa0, 0x3c, 0x72, 0x66, 0x41, 0x68, 0xf9, 0xdb, 0xe7, - 0xdc, 0x1c, 0xd1, 0x12, 0x00, 0xb6, 0x6b, 0xea, 0xdb, 0x13, 0xc3, 0x3f, 0xa7, 0xad, 0x53, 0xd2, - 0xa2, 0x24, 0x6a, 0x4c, 0xd3, 0x13, 0xdb, 0x3c, 0xe3, 0x36, 0x89, 0xc6, 0x13, 0x48, 0x7f, 0x4c, - 0x16, 0x63, 0x40, 0xfb, 0xa3, 0xa4, 0x45, 0x49, 0x9a, 0x07, 0xfa, 0xa4, 0x1d, 0x51, 0xd6, 0x44, - 0x2a, 0xa5, 0x76, 0x6e, 0x5c, 0xa8, 0x76, 0xb2, 0x79, 0xc9, 0xef, 0xf9, 0xf6, 0x91, 0x2d, 0xe4, - 0xf6, 0x25, 0x2e, 0xf9, 0x39, 0x88, 0xf4, 0xd2, 0xaf, 0xa1, 0x28, 0x86, 0x18, 0x25, 0x10, 0x6e, - 0x9f, 0x34, 0x7b, 0xe6, 0x12, 0x08, 0xe1, 0xec, 0x35, 0x58, 0x13, 0x65, 0x05, 0xa1, 0x6f, 0xbb, - 0x47, 0x62, 0xf1, 0x54, 0x39, 0xb0, 0x4f, 0x30, 0x14, 0xa7, 0x38, 0xbd, 0xba, 0x31, 0xb4, 0x1d, - 0xdc, 0xa6, 0x59, 0x61, 0xad, 0xcf, 0x1c, 0xa7, 0xc1, 0x41, 0x6a, 0x0f, 0x4a, 0xd1, 0x84, 0xfc, - 0x4a, 0xea, 0x54, 0x7f, 0x3b, 0x03, 0x95, 0xb6, 0x6b, 0x5a, 0x67, 0x3d, 0x52, 0x11, 0xd8, 0x3b, - 0xc0, 0x46, 0xbe, 0x65, 0x84, 0x96, 0x6e, 0x9d, 0x85, 0xbe, 0xa1, 0x73, 0x93, 0x9e, 0x9b, 0xd3, - 0x0a, 0xc7, 0xb4, 0x10, 0x31, 0x20, 0xeb, 0xfe, 0x16, 0x54, 0xa6, 0x86, 0x1f, 0x44, 0x6a, 0x15, - 0xaf, 0x00, 0x38, 0x48, 0x28, 0x35, 0x8a, 0x7b, 0xe4, 0x1b, 0x13, 0x3d, 0xf4, 0x4e, 0x2c, 0x97, - 0x2b, 0x94, 0x5c, 0x95, 0xae, 0x11, 0x7c, 0x80, 0x60, 0xd2, 0x2b, 0xff, 0x63, 0x06, 0xd6, 0x0e, - 0xf8, 0xac, 0x3f, 0xb1, 0xce, 0x77, 0xb8, 0xfd, 0x32, 0x8a, 0x76, 0x6c, 0x4e, 0xa3, 0x6f, 0x76, - 0x13, 0x2a, 0xd3, 0x13, 0xeb, 0x5c, 0x4f, 0xe9, 0xfa, 0x65, 0x04, 0x35, 0x69, 0x6f, 0xbe, 0x05, - 0x05, 0x8f, 0x3a, 0x22, 0x64, 0x9c, 0x10, 0x0d, 0x52, 0x0f, 0x35, 0x41, 0xc0, 0x54, 0x58, 0x8b, - 0x8b, 0x92, 0xb5, 0x17, 0x51, 0x18, 0x35, 0x7f, 0x13, 0xf2, 0x88, 0x0a, 0xea, 0xf9, 0xad, 0x2c, - 0x2a, 0xec, 0x94, 0x60, 0xef, 0xc3, 0xda, 0xc8, 0x9b, 0x4c, 0xf5, 0x28, 0xbb, 0x90, 0x76, 0x69, - 0x9e, 0x52, 0x41, 0x92, 0x03, 0x5e, 0x96, 0xfa, 0xbb, 0x59, 0x28, 0x51, 0x1b, 0x04, 0x5b, 0xb1, - 0xcd, 0xb3, 0x88, 0xad, 0x94, 0xb5, 0xbc, 0x6d, 0x22, 0xd7, 0x7e, 0x15, 0xc0, 0x46, 0x12, 0x79, - 0x28, 0xcb, 0x04, 0x89, 0x9a, 0x32, 0x35, 0xfc, 0x30, 0xa8, 0x67, 0x79, 0x53, 0x28, 0x81, 0xeb, - 0x7d, 0xe6, 0xda, 0x5f, 0xcf, 0x78, 0xeb, 0x4b, 0x9a, 0x48, 0xe1, 0xb8, 0xf3, 0xc2, 0x68, 0xfe, - 0x64, 0xf5, 0xab, 0x46, 0x70, 0x9a, 0xbe, 0x68, 0x95, 0x73, 0x1a, 0xeb, 0x0c, 0xe5, 0x1b, 0x67, - 0x2d, 0x40, 0xa0, 0x16, 0x42, 0x64, 0xa6, 0x51, 0x4c, 0x33, 0x8d, 0x3a, 0x14, 0x9f, 0xdb, 0x81, - 0x8d, 0x0b, 0xa4, 0xc4, 0xb7, 0xa1, 0x48, 0x4a, 0xd3, 0x50, 0x7e, 0xd1, 0x34, 0xc4, 0xdd, 0x36, - 0x9c, 0x23, 0xae, 0xf8, 0x46, 0xdd, 0x6e, 0x38, 0x47, 0x1e, 0xfb, 0x00, 0x2e, 0x27, 0x68, 0xd1, - 0x1b, 0x72, 0x03, 0x91, 0xa7, 0x43, 0x63, 0x31, 0x25, 0xf5, 0x88, 0x2c, 0x93, 0x7b, 0xb0, 0x21, - 0x65, 0x99, 0xa2, 0x7a, 0x13, 0x10, 0xcf, 0x29, 0x6b, 0xeb, 0x31, 0x39, 0x69, 0x3d, 0x81, 0xfa, - 0xaf, 0x56, 0x61, 0x6d, 0xd7, 0xf3, 0x2d, 0xfb, 0xc8, 0x4d, 0x56, 0xdd, 0x82, 0x7e, 0x1c, 0xad, - 0xc4, 0x55, 0x69, 0x25, 0xde, 0x82, 0xca, 0x98, 0x67, 0xd4, 0xc3, 0x21, 0x37, 0x9b, 0x73, 0x1a, - 0x08, 0xd0, 0x60, 0xe8, 0xe0, 0x6e, 0x8e, 0x08, 0x28, 0x73, 0x8e, 0x32, 0x47, 0x99, 0x50, 0xd6, - 0xb0, 0x1f, 0x10, 0xd7, 0x35, 0x2d, 0xc7, 0x0a, 0xf9, 0xf4, 0xd4, 0x1e, 0xbc, 0x1a, 0x49, 0x7a, - 0xa9, 0x4d, 0xf7, 0x35, 0x6b, 0xdc, 0x20, 0xf5, 0x08, 0x99, 0xf0, 0x0e, 0x91, 0x8b, 0xbc, 0x82, - 0x63, 0x17, 0xbe, 0x63, 0x5e, 0xce, 0x39, 0xd4, 0x01, 0x94, 0x63, 0x30, 0xea, 0xba, 0x5a, 0x4b, - 0xe8, 0xb7, 0x2b, 0xac, 0x02, 0xc5, 0x66, 0xa3, 0xdf, 0x6c, 0xec, 0xb4, 0x94, 0x0c, 0xa2, 0xfa, - 0xad, 0x01, 0xd7, 0x69, 0x57, 0xd9, 0x3a, 0x54, 0x30, 0xb5, 0xd3, 0xda, 0x6d, 0x1c, 0x76, 0x06, - 0x4a, 0x96, 0xad, 0x41, 0xb9, 0xdb, 0xd3, 0x1b, 0xcd, 0x41, 0xbb, 0xd7, 0x55, 0x72, 0xea, 0x67, - 0x50, 0x6a, 0x1e, 0x5b, 0xa3, 0x93, 0x8b, 0x46, 0x91, 0xcc, 0x4e, 0x6b, 0x74, 0x22, 0xf4, 0xd3, - 0x39, 0xb3, 0xd3, 0x1a, 0x9d, 0xa8, 0x4f, 0xa1, 0xda, 0x8c, 0x84, 0xc2, 0x45, 0xa5, 0x3c, 0x80, - 0x1a, 0x6d, 0xbe, 0xd1, 0x30, 0xda, 0x7d, 0xab, 0x4b, 0x76, 0x5f, 0x15, 0x69, 0x9a, 0x43, 0xb1, - 0xfd, 0x3e, 0x82, 0xca, 0x81, 0xef, 0x4d, 0x2d, 0x3f, 0xa4, 0x62, 0x15, 0xc8, 0x9e, 0x58, 0xe7, - 0xa2, 0x54, 0xfc, 0x4c, 0x0c, 0xf3, 0x55, 0xd9, 0x30, 0x7f, 0x00, 0xa5, 0x28, 0xdb, 0x77, 0xce, - 0xf3, 0x63, 0xe4, 0x62, 0x94, 0xc7, 0xb6, 0x02, 0xac, 0xec, 0x3e, 0xc0, 0x34, 0x06, 0x08, 0xed, - 0x23, 0xd2, 0xbc, 0x45, 0xe1, 0x9a, 0x44, 0xa1, 0xfe, 0x75, 0x16, 0x6a, 0x07, 0x86, 0x1f, 0xda, - 0x38, 0x39, 0x7c, 0x18, 0xde, 0x84, 0x1c, 0x2d, 0x79, 0xee, 0x03, 0xb8, 0x14, 0xab, 0xed, 0x9c, - 0x86, 0xd4, 0x08, 0x22, 0x60, 0x3f, 0x80, 0xda, 0x34, 0x02, 0xeb, 0x24, 0x1b, 0xf8, 0xd8, 0xcc, - 0x67, 0xa1, 0x31, 0x5f, 0x9b, 0xca, 0x49, 0xf6, 0x23, 0xd8, 0x4c, 0xe7, 0xb5, 0x82, 0x20, 0xe1, - 0xa3, 0xf2, 0x64, 0x5d, 0x4a, 0x65, 0xe4, 0x64, 0xac, 0x09, 0x1b, 0x49, 0xf6, 0x91, 0xe7, 0xcc, - 0x26, 0x6e, 0x20, 0xec, 0x88, 0x2b, 0x73, 0xb5, 0x37, 0x39, 0x56, 0x53, 0xa6, 0x73, 0x10, 0xa6, - 0x42, 0x35, 0x86, 0x75, 0x67, 0x13, 0xda, 0x12, 0x39, 0x2d, 0x05, 0x63, 0x0f, 0x01, 0xe2, 0x34, - 0x5a, 0x8e, 0xd9, 0x25, 0xfd, 0x6b, 0x87, 0xd6, 0x44, 0x93, 0xc8, 0x50, 0xfd, 0x40, 0x66, 0xe0, - 0xdb, 0xe1, 0xf1, 0x84, 0xb8, 0x58, 0x56, 0x4b, 0x00, 0xc4, 0x2c, 0x03, 0x1d, 0xcd, 0xd4, 0x38, - 0x8b, 0x60, 0x68, 0x35, 0x3b, 0xe8, 0xcf, 0x86, 0x71, 0xb9, 0x28, 0x52, 0x93, 0x5e, 0x4e, 0x82, - 0x23, 0x61, 0xcc, 0x27, 0x2d, 0xdc, 0x0f, 0x8e, 0xd8, 0x03, 0xb8, 0x9c, 0x10, 0x25, 0xfc, 0x37, - 0xa8, 0x03, 0x71, 0xee, 0x64, 0xf8, 0x62, 0x26, 0x1c, 0xa8, 0x9f, 0xc3, 0x5a, 0x6a, 0x76, 0x5e, - 0x28, 0xdc, 0xaf, 0x41, 0x09, 0xff, 0xa3, 0x68, 0x17, 0x0b, 0xb0, 0x88, 0xe9, 0x7e, 0xe8, 0xab, - 0x16, 0x28, 0xf3, 0x63, 0xcd, 0xee, 0x90, 0x83, 0x8b, 0x26, 0x65, 0xd1, 0x51, 0x15, 0xa1, 0xd8, - 0xdb, 0xcb, 0x26, 0x71, 0x95, 0x5a, 0xbd, 0x30, 0x59, 0xea, 0xef, 0xaf, 0x4a, 0x6d, 0xc6, 0x11, - 0x67, 0xaf, 0xcb, 0xcb, 0x4f, 0xda, 0xb8, 0xc9, 0x98, 0x91, 0xc4, 0x79, 0x0b, 0x14, 0xcf, 0x37, - 0x6d, 0xd7, 0x20, 0x87, 0x1b, 0x1f, 0xee, 0x55, 0xd2, 0x16, 0xd7, 0x05, 0xfc, 0x40, 0x80, 0xd1, - 0x6e, 0x31, 0xad, 0xd8, 0x7f, 0x21, 0xbc, 0x0f, 0x32, 0x48, 0x96, 0x4e, 0xb9, 0xb4, 0x74, 0x7a, - 0x13, 0xca, 0x8e, 0x15, 0x04, 0x7a, 0x78, 0x6c, 0xb8, 0x24, 0xbf, 0xd3, 0x9d, 0x2e, 0x21, 0x72, - 0x70, 0x6c, 0xb8, 0x48, 0x68, 0xbb, 0xba, 0x38, 0xa1, 0x28, 0x2c, 0x12, 0xda, 0x2e, 0xd9, 0x6f, - 0x28, 0xf7, 0x37, 0x97, 0x4d, 0xac, 0x10, 0x8b, 0x6c, 0x71, 0x5e, 0xd5, 0x57, 0xa1, 0xf8, 0xd4, - 0xb6, 0x4e, 0x05, 0x2f, 0x7b, 0x6e, 0x5b, 0xa7, 0x11, 0x2f, 0xc3, 0x6f, 0xf5, 0xbf, 0x97, 0xa0, + 0x2e, 0xec, 0x41, 0x84, 0xab, 0xff, 0x2c, 0xc3, 0x4b, 0xdc, 0x75, 0x8c, 0x23, 0x56, 0x82, 0x5c, + 0xb7, 0xd7, 0x6d, 0x29, 0x2b, 0xac, 0x0a, 0xa5, 0x76, 0x77, 0xd0, 0xd2, 0xba, 0x8d, 0x8e, 0x92, + 0xa1, 0x05, 0x3d, 0x68, 0x6c, 0x77, 0x5a, 0xca, 0x2a, 0x62, 0x9e, 0xf6, 0x3a, 0x8d, 0x41, 0xbb, + 0xd3, 0x52, 0x72, 0x1c, 0xa3, 0xb5, 0x9b, 0x03, 0xa5, 0xc4, 0x14, 0xa8, 0x1e, 0x68, 0xbd, 0x9d, + 0xc3, 0x66, 0x4b, 0xef, 0x1e, 0x76, 0x3a, 0x8a, 0xc2, 0x2e, 0xc1, 0x7a, 0x0c, 0xe9, 0x71, 0xe0, + 0x16, 0x66, 0x79, 0xda, 0xd0, 0x1a, 0xda, 0x63, 0xe5, 0x33, 0x56, 0x82, 0x6c, 0xe3, 0xf1, 0x63, + 0xe5, 0x67, 0xb8, 0x37, 0xca, 0xcf, 0xda, 0x5d, 0xfd, 0x69, 0xa3, 0x73, 0xd8, 0x52, 0x7e, 0xb6, + 0x1a, 0xa5, 0x7b, 0xda, 0x4e, 0x4b, 0x53, 0x7e, 0x96, 0x63, 0x1b, 0x50, 0xfd, 0x69, 0xaf, 0xdb, + 0xda, 0x6f, 0x1c, 0x1c, 0x50, 0x43, 0x7e, 0x56, 0x52, 0xff, 0x7b, 0x0e, 0x72, 0xd8, 0x13, 0xa6, + 0x26, 0x7c, 0x20, 0xee, 0x22, 0x6e, 0xc4, 0xed, 0xdc, 0x9f, 0xfe, 0xf9, 0xad, 0x15, 0xce, 0x01, + 0x6e, 0x43, 0xd6, 0xb1, 0x43, 0x9a, 0xc0, 0x78, 0xf5, 0x08, 0xdd, 0x68, 0x6f, 0x45, 0x43, 0x1c, + 0xbb, 0x09, 0x19, 0xce, 0x0a, 0x2a, 0x0f, 0x6a, 0x62, 0x79, 0x09, 0x59, 0xb2, 0xb7, 0xa2, 0x65, + 0xa6, 0xec, 0x06, 0x64, 0x9e, 0x0b, 0xbe, 0x50, 0xe5, 0x78, 0x2e, 0x4d, 0x10, 0xfb, 0x9c, 0x6d, + 0x41, 0x76, 0xe4, 0x71, 0xcd, 0x27, 0xc6, 0x73, 0xde, 0x8a, 0xe5, 0x8f, 0x3c, 0x87, 0xbd, 0x06, + 0x59, 0xdf, 0x38, 0xa5, 0x19, 0x8d, 0xa7, 0x2b, 0x66, 0xde, 0x48, 0xe4, 0x1b, 0xa7, 0xd8, 0x88, + 0x31, 0xed, 0xa4, 0xb8, 0x11, 0xd1, 0x7c, 0x63, 0x35, 0x63, 0xb6, 0x05, 0x99, 0x53, 0xda, 0x4b, + 0xb1, 0xb0, 0x7f, 0x66, 0xbb, 0xa6, 0x77, 0xda, 0x9f, 0x5a, 0x23, 0xa4, 0x38, 0x65, 0xaf, 0x43, + 0x36, 0x98, 0x0d, 0x69, 0x2f, 0x55, 0x1e, 0x6c, 0x2c, 0x70, 0x45, 0xac, 0x28, 0x98, 0x0d, 0xd9, + 0x1b, 0x90, 0x1b, 0x79, 0xbe, 0x2f, 0xf6, 0x93, 0x12, 0x35, 0x38, 0x12, 0x08, 0xa8, 0xfc, 0x20, + 0x1e, 0x2b, 0x0c, 0x49, 0x77, 0x8a, 0x89, 0x12, 0x8e, 0x8c, 0x15, 0x86, 0xec, 0x8e, 0x60, 0xf3, + 0x55, 0xb9, 0xd5, 0x91, 0x10, 0xc0, 0x72, 0x10, 0x8b, 0x93, 0x34, 0x31, 0xce, 0x48, 0xb3, 0x8a, + 0x89, 0x22, 0xee, 0x8f, 0x6d, 0x9a, 0x18, 0x67, 0xec, 0x0e, 0x64, 0x9f, 0x5b, 0x23, 0x52, 0xb2, + 0xe2, 0xda, 0xc4, 0x24, 0x3d, 0xa5, 0xee, 0x21, 0x9a, 0xd6, 0xbd, 0xe7, 0x98, 0xa4, 0x6f, 0xc5, + 0x73, 0xb9, 0xeb, 0x39, 0xe6, 0x53, 0x9a, 0x4b, 0x42, 0xa2, 0xd0, 0x33, 0x66, 0x67, 0xb8, 0x67, + 0x15, 0x2e, 0x9e, 0x8c, 0xd9, 0x59, 0xdb, 0x44, 0xf6, 0xe7, 0x9a, 0xcf, 0x49, 0xcb, 0xca, 0x68, + 0xf8, 0x89, 0x66, 0x40, 0x60, 0x39, 0xd6, 0x28, 0xb4, 0x9f, 0xdb, 0xe1, 0x39, 0xe9, 0x51, 0x19, + 0x4d, 0x06, 0x6d, 0x17, 0x20, 0x67, 0x9d, 0x4d, 0x7d, 0x75, 0x0f, 0x8a, 0xa2, 0x96, 0x05, 0x5b, + 0xe2, 0x1a, 0x94, 0xec, 0x40, 0x1f, 0x79, 0x6e, 0x10, 0x0a, 0xed, 0xa1, 0x68, 0x07, 0x4d, 0x4c, + 0x22, 0x53, 0x31, 0x8d, 0x90, 0xb3, 0xe1, 0xaa, 0x46, 0xdf, 0xea, 0x03, 0x80, 0xa4, 0x5b, 0xd8, + 0x26, 0xc7, 0x72, 0x23, 0x45, 0xc5, 0xb1, 0xdc, 0x38, 0xcf, 0xaa, 0x94, 0xe7, 0x1a, 0x94, 0x63, + 0x0d, 0x90, 0x55, 0x21, 0x63, 0x08, 0x01, 0x90, 0x31, 0xd4, 0xbb, 0xa8, 0x90, 0x45, 0x3a, 0x5e, + 0x1a, 0x87, 0xa9, 0x48, 0x2c, 0x64, 0x86, 0xea, 0x0f, 0xa1, 0xaa, 0x59, 0xc1, 0xcc, 0x09, 0x9b, + 0x9e, 0xb3, 0x63, 0x8d, 0xd9, 0x3b, 0x00, 0x71, 0x3a, 0x10, 0x72, 0x3a, 0x59, 0xbb, 0x3b, 0xd6, + 0x58, 0x93, 0xf0, 0xea, 0x3f, 0xca, 0x91, 0xc6, 0xb3, 0xc3, 0x55, 0x0d, 0xa1, 0x53, 0x64, 0x24, + 0x9d, 0x22, 0xe6, 0xa0, 0xab, 0x69, 0xbd, 0xea, 0xd8, 0x36, 0x4d, 0xcb, 0x8d, 0xf4, 0x27, 0x9e, + 0xc2, 0xc9, 0x36, 0x9c, 0x23, 0xda, 0x50, 0xb5, 0x07, 0x2c, 0xaa, 0x74, 0x32, 0xf5, 0xad, 0x20, + 0xe0, 0x92, 0xdb, 0x70, 0x8e, 0xa2, 0xbd, 0x9d, 0xff, 0xb6, 0xbd, 0x7d, 0x0d, 0x4a, 0xae, 0x17, + 0xea, 0x64, 0xdd, 0x14, 0xf8, 0xe8, 0x0b, 0x33, 0x8e, 0xbd, 0x09, 0x45, 0xa1, 0x97, 0x8a, 0x4d, + 0x25, 0x96, 0xcb, 0x0e, 0x07, 0x6a, 0x11, 0x96, 0xd5, 0x51, 0xcd, 0x99, 0x4c, 0x2c, 0x37, 0x8c, + 0x24, 0x95, 0x48, 0xb2, 0xb7, 0xa1, 0xec, 0xb9, 0x3a, 0x57, 0x5e, 0xc5, 0xae, 0x12, 0xcb, 0xb7, + 0xe7, 0x1e, 0x12, 0x54, 0x2b, 0x79, 0xe2, 0x0b, 0x9b, 0xe2, 0x78, 0xa7, 0xfa, 0xc8, 0xf0, 0x4d, + 0xda, 0x59, 0x25, 0xad, 0xe8, 0x78, 0xa7, 0x4d, 0xc3, 0x37, 0xb9, 0xe4, 0xfe, 0xda, 0x9d, 0x4d, + 0x68, 0x37, 0xad, 0x69, 0x22, 0xc5, 0x6e, 0x40, 0x79, 0xe4, 0xcc, 0x82, 0xd0, 0xf2, 0xb7, 0xcf, + 0xb9, 0x39, 0xa2, 0x25, 0x00, 0x6c, 0xd7, 0xd4, 0xb7, 0x27, 0x86, 0x7f, 0x4e, 0x5b, 0xa7, 0xa4, + 0x45, 0x49, 0xd4, 0x98, 0xa6, 0x27, 0xb6, 0x79, 0xc6, 0x6d, 0x12, 0x8d, 0x27, 0x90, 0xfe, 0x98, + 0x2c, 0xc6, 0x80, 0xf6, 0x47, 0x49, 0x8b, 0x92, 0x34, 0x0f, 0xf4, 0x49, 0x3b, 0xa2, 0xac, 0x89, + 0x54, 0x4a, 0xed, 0xdc, 0xb8, 0x50, 0xed, 0x64, 0xf3, 0x92, 0xdf, 0xf3, 0xed, 0x23, 0x5b, 0xc8, + 0xed, 0x4b, 0x5c, 0xf2, 0x73, 0x10, 0xe9, 0xa5, 0x5f, 0x43, 0x51, 0x0c, 0x31, 0x4a, 0x20, 0xdc, + 0x3e, 0x69, 0xf6, 0xcc, 0x25, 0x10, 0xc2, 0xd9, 0x6b, 0xb0, 0x26, 0xca, 0x0a, 0x42, 0xdf, 0x76, + 0x8f, 0xc4, 0xe2, 0xa9, 0x72, 0x60, 0x9f, 0x60, 0x28, 0x4e, 0x71, 0x7a, 0x75, 0x63, 0x68, 0x3b, + 0xb8, 0x4d, 0xb3, 0xc2, 0x5a, 0x9f, 0x39, 0x4e, 0x83, 0x83, 0xd4, 0x1e, 0x94, 0xa2, 0x09, 0xf9, + 0x95, 0xd4, 0xa9, 0xfe, 0x76, 0x06, 0x2a, 0x6d, 0xd7, 0xb4, 0xce, 0x7a, 0xa4, 0x22, 0xb0, 0x77, + 0x80, 0x8d, 0x7c, 0xcb, 0x08, 0x2d, 0xdd, 0x3a, 0x0b, 0x7d, 0x43, 0xe7, 0x26, 0x3d, 0x37, 0xa7, + 0x15, 0x8e, 0x69, 0x21, 0x62, 0x40, 0xd6, 0xfd, 0x2d, 0xa8, 0x4c, 0x0d, 0x3f, 0x88, 0xd4, 0x2a, + 0x5e, 0x01, 0x70, 0x90, 0x50, 0x6a, 0x14, 0xf7, 0xc8, 0x37, 0x26, 0x7a, 0xe8, 0x9d, 0x58, 0x2e, + 0x57, 0x28, 0xb9, 0x2a, 0x5d, 0x23, 0xf8, 0x00, 0xc1, 0xa4, 0x57, 0xfe, 0xa7, 0x0c, 0xac, 0x1d, + 0xf0, 0x59, 0x7f, 0x62, 0x9d, 0xef, 0x70, 0xfb, 0x65, 0x14, 0xed, 0xd8, 0x9c, 0x46, 0xdf, 0xec, + 0x26, 0x54, 0xa6, 0x27, 0xd6, 0xb9, 0x9e, 0xd2, 0xf5, 0xcb, 0x08, 0x6a, 0xd2, 0xde, 0x7c, 0x0b, + 0x0a, 0x1e, 0x75, 0x44, 0xc8, 0x38, 0x21, 0x1a, 0xa4, 0x1e, 0x6a, 0x82, 0x80, 0xa9, 0xb0, 0x16, + 0x17, 0x25, 0x6b, 0x2f, 0xa2, 0x30, 0x6a, 0xfe, 0x26, 0xe4, 0x11, 0x15, 0xd4, 0xf3, 0x5b, 0x59, + 0x54, 0xd8, 0x29, 0xc1, 0xde, 0x87, 0xb5, 0x91, 0x37, 0x99, 0xea, 0x51, 0x76, 0x21, 0xed, 0xd2, + 0x3c, 0xa5, 0x82, 0x24, 0x07, 0xbc, 0x2c, 0xf5, 0x77, 0xb3, 0x50, 0xa2, 0x36, 0x08, 0xb6, 0x62, + 0x9b, 0x67, 0x11, 0x5b, 0x29, 0x6b, 0x79, 0xdb, 0x44, 0xae, 0xfd, 0x2a, 0x80, 0x8d, 0x24, 0xf2, + 0x50, 0x96, 0x09, 0x12, 0x35, 0x65, 0x6a, 0xf8, 0x61, 0x50, 0xcf, 0xf2, 0xa6, 0x50, 0x02, 0xd7, + 0xfb, 0xcc, 0xb5, 0xbf, 0x9e, 0xf1, 0xd6, 0x97, 0x34, 0x91, 0xc2, 0x71, 0xe7, 0x85, 0xd1, 0xfc, + 0xc9, 0xea, 0x57, 0x8d, 0xe0, 0x34, 0x7d, 0xd1, 0x2a, 0xe7, 0x34, 0xd6, 0x19, 0xca, 0x37, 0xce, + 0x5a, 0x80, 0x40, 0x2d, 0x84, 0xc8, 0x4c, 0xa3, 0x98, 0x66, 0x1a, 0x75, 0x28, 0x3e, 0xb7, 0x03, + 0x1b, 0x17, 0x48, 0x89, 0x6f, 0x43, 0x91, 0x94, 0xa6, 0xa1, 0xfc, 0xa2, 0x69, 0x88, 0xbb, 0x6d, + 0x38, 0x47, 0x5c, 0xf1, 0x8d, 0xba, 0xdd, 0x70, 0x8e, 0x3c, 0xf6, 0x01, 0x5c, 0x4e, 0xd0, 0xa2, + 0x37, 0xe4, 0x06, 0x22, 0x4f, 0x87, 0xc6, 0x62, 0x4a, 0xea, 0x11, 0x59, 0x26, 0xf7, 0x60, 0x43, + 0xca, 0x32, 0x45, 0xf5, 0x26, 0x20, 0x9e, 0x53, 0xd6, 0xd6, 0x63, 0x72, 0xd2, 0x7a, 0x02, 0xf5, + 0x5f, 0xaf, 0xc2, 0xda, 0xae, 0xe7, 0x5b, 0xf6, 0x91, 0x9b, 0xac, 0xba, 0x05, 0xfd, 0x38, 0x5a, + 0x89, 0xab, 0xd2, 0x4a, 0xbc, 0x05, 0x95, 0x31, 0xcf, 0xa8, 0x87, 0x43, 0x6e, 0x36, 0xe7, 0x34, + 0x10, 0xa0, 0xc1, 0xd0, 0xc1, 0xdd, 0x1c, 0x11, 0x50, 0xe6, 0x1c, 0x65, 0x8e, 0x32, 0xa1, 0xac, + 0x61, 0x3f, 0x20, 0xae, 0x6b, 0x5a, 0x8e, 0x15, 0xf2, 0xe9, 0xa9, 0x3d, 0x78, 0x35, 0x92, 0xf4, + 0x52, 0x9b, 0xee, 0x6b, 0xd6, 0xb8, 0x41, 0xea, 0x11, 0x32, 0xe1, 0x1d, 0x22, 0x17, 0x79, 0x05, + 0xc7, 0x2e, 0x7c, 0xc7, 0xbc, 0x9c, 0x73, 0xa8, 0x03, 0x28, 0xc7, 0x60, 0xd4, 0x75, 0xb5, 0x96, + 0xd0, 0x6f, 0x57, 0x58, 0x05, 0x8a, 0xcd, 0x46, 0xbf, 0xd9, 0xd8, 0x69, 0x29, 0x19, 0x44, 0xf5, + 0x5b, 0x03, 0xae, 0xd3, 0xae, 0xb2, 0x75, 0xa8, 0x60, 0x6a, 0xa7, 0xb5, 0xdb, 0x38, 0xec, 0x0c, + 0x94, 0x2c, 0x5b, 0x83, 0x72, 0xb7, 0xa7, 0x37, 0x9a, 0x83, 0x76, 0xaf, 0xab, 0xe4, 0xd4, 0xcf, + 0xa0, 0xd4, 0x3c, 0xb6, 0x46, 0x27, 0x17, 0x8d, 0x22, 0x99, 0x9d, 0xd6, 0xe8, 0x44, 0xe8, 0xa7, + 0x73, 0x66, 0xa7, 0x35, 0x3a, 0x51, 0x9f, 0x42, 0xb5, 0x19, 0x09, 0x85, 0x8b, 0x4a, 0x79, 0x00, + 0x35, 0xda, 0x7c, 0xa3, 0x61, 0xb4, 0xfb, 0x56, 0x97, 0xec, 0xbe, 0x2a, 0xd2, 0x34, 0x87, 0x62, + 0xfb, 0x7d, 0x04, 0x95, 0x03, 0xdf, 0x9b, 0x5a, 0x7e, 0x48, 0xc5, 0x2a, 0x90, 0x3d, 0xb1, 0xce, + 0x45, 0xa9, 0xf8, 0x99, 0x18, 0xe6, 0xab, 0xb2, 0x61, 0xfe, 0x00, 0x4a, 0x51, 0xb6, 0xef, 0x9c, + 0xe7, 0xc7, 0xc8, 0xc5, 0x28, 0x8f, 0x6d, 0x05, 0x58, 0xd9, 0x7d, 0x80, 0x69, 0x0c, 0x10, 0xda, + 0x47, 0xa4, 0x79, 0x8b, 0xc2, 0x35, 0x89, 0x42, 0xfd, 0xeb, 0x2c, 0xd4, 0x0e, 0x0c, 0x3f, 0xb4, + 0x71, 0x72, 0xf8, 0x30, 0xbc, 0x09, 0x39, 0x5a, 0xf2, 0xdc, 0x07, 0x70, 0x29, 0x56, 0xdb, 0x39, + 0x0d, 0xa9, 0x11, 0x44, 0xc0, 0x7e, 0x00, 0xb5, 0x69, 0x04, 0xd6, 0x49, 0x36, 0xf0, 0xb1, 0x99, + 0xcf, 0x42, 0x63, 0xbe, 0x36, 0x95, 0x93, 0xec, 0x47, 0xb0, 0x99, 0xce, 0x6b, 0x05, 0x41, 0xc2, + 0x47, 0xe5, 0xc9, 0xba, 0x94, 0xca, 0xc8, 0xc9, 0x58, 0x13, 0x36, 0x92, 0xec, 0x23, 0xcf, 0x99, + 0x4d, 0xdc, 0x40, 0xd8, 0x11, 0x57, 0xe6, 0x6a, 0x6f, 0x72, 0xac, 0xa6, 0x4c, 0xe7, 0x20, 0x4c, + 0x85, 0x6a, 0x0c, 0xeb, 0xce, 0x26, 0xb4, 0x25, 0x72, 0x5a, 0x0a, 0xc6, 0x1e, 0x02, 0xc4, 0x69, + 0xb4, 0x1c, 0xb3, 0x4b, 0xfa, 0xd7, 0x0e, 0xad, 0x89, 0x26, 0x91, 0xa1, 0xfa, 0x81, 0xcc, 0xc0, + 0xb7, 0xc3, 0xe3, 0x09, 0x71, 0xb1, 0xac, 0x96, 0x00, 0x88, 0x59, 0x06, 0x3a, 0x9a, 0xa9, 0x71, + 0x16, 0xc1, 0xd0, 0x6a, 0x76, 0xd0, 0x9f, 0x0d, 0xe3, 0x72, 0x51, 0xa4, 0x26, 0xbd, 0x9c, 0x04, + 0x47, 0xc2, 0x98, 0x4f, 0x5a, 0xb8, 0x1f, 0x1c, 0xb1, 0x07, 0x70, 0x39, 0x21, 0x4a, 0xf8, 0x6f, + 0x50, 0x07, 0xe2, 0xdc, 0xc9, 0xf0, 0xc5, 0x4c, 0x38, 0x50, 0x3f, 0x87, 0xb5, 0xd4, 0xec, 0xbc, + 0x50, 0xb8, 0x5f, 0x83, 0x12, 0xfe, 0x47, 0xd1, 0x2e, 0x16, 0x60, 0x11, 0xd3, 0xfd, 0xd0, 0x57, + 0x2d, 0x50, 0xe6, 0xc7, 0x9a, 0xdd, 0x21, 0x07, 0x17, 0x4d, 0xca, 0xa2, 0xa3, 0x2a, 0x42, 0xb1, + 0xb7, 0x97, 0x4d, 0xe2, 0x2a, 0xb5, 0x7a, 0x61, 0xb2, 0xd4, 0xdf, 0x5f, 0x95, 0xda, 0x8c, 0x23, + 0xce, 0x5e, 0x97, 0x97, 0x9f, 0xb4, 0x71, 0x93, 0x31, 0x23, 0x89, 0xf3, 0x16, 0x28, 0x9e, 0x6f, + 0xda, 0xae, 0x41, 0x0e, 0x37, 0x3e, 0xdc, 0xab, 0xa4, 0x2d, 0xae, 0x0b, 0xf8, 0x81, 0x00, 0xa3, + 0xdd, 0x62, 0x5a, 0xb1, 0xff, 0x42, 0x78, 0x1f, 0x64, 0x90, 0x2c, 0x9d, 0x72, 0x69, 0xe9, 0xf4, + 0x26, 0x94, 0x1d, 0x2b, 0x08, 0xf4, 0xf0, 0xd8, 0x70, 0x49, 0x7e, 0xa7, 0x3b, 0x5d, 0x42, 0xe4, + 0xe0, 0xd8, 0x70, 0x91, 0xd0, 0x76, 0x75, 0x71, 0x42, 0x51, 0x58, 0x24, 0xb4, 0x5d, 0xb2, 0xdf, + 0x50, 0xee, 0x6f, 0x2e, 0x9b, 0x58, 0x21, 0x16, 0xd9, 0xe2, 0xbc, 0xaa, 0xaf, 0x42, 0xf1, 0xa9, + 0x6d, 0x9d, 0x0a, 0x5e, 0xf6, 0xdc, 0xb6, 0x4e, 0x23, 0x5e, 0x86, 0xdf, 0xea, 0x5f, 0x96, 0xa0, 0x44, 0xc4, 0x3b, 0x17, 0x3b, 0x36, 0x5f, 0xc6, 0xda, 0xd8, 0x12, 0x72, 0x2a, 0xb7, 0xc4, 0xc6, 0xe1, 0x52, 0xeb, 0x55, 0x00, 0x49, 0x86, 0x72, 0x8d, 0xa0, 0x1c, 0xc6, 0xa2, 0x13, 0xd5, 0x74, 0xd2, 0xf1, 0x82, 0xaf, 0x1d, 0xe1, 0x95, 0x49, 0x00, 0xec, 0x3e, 0x57, 0xa2, 0xc9, 0x1f, 0x53, @@ -12645,7 +12709,7 @@ var fileDescriptor_2d655ab2f7683c23 = []byte{ 0xf5, 0x4b, 0x5a, 0xc3, 0xde, 0x8a, 0xac, 0x13, 0x6c, 0xe7, 0x21, 0x6b, 0x5a, 0xe3, 0xeb, 0x9f, 0x01, 0x5b, 0x1c, 0xde, 0x17, 0x69, 0x26, 0x79, 0xa1, 0x99, 0xfc, 0x60, 0xf5, 0x51, 0x46, 0xfd, 0x14, 0xd6, 0x52, 0x7b, 0x75, 0xa9, 0x86, 0xc5, 0x2d, 0x0d, 0x63, 0x22, 0x3c, 0x33, 0x3c, 0xa1, - 0xfe, 0x9b, 0x2c, 0x54, 0xf7, 0x8c, 0xe0, 0x78, 0xdf, 0x98, 0xf6, 0x43, 0x23, 0x0c, 0x70, 0xc0, + 0xfe, 0xdb, 0x2c, 0x54, 0xf7, 0x8c, 0xe0, 0x78, 0xdf, 0x98, 0xf6, 0x43, 0x23, 0x0c, 0x70, 0xc0, 0x8f, 0x8d, 0xe0, 0x78, 0x62, 0x4c, 0xb9, 0x59, 0x97, 0xe1, 0x4e, 0x25, 0x01, 0x43, 0x9b, 0x0e, 0xa7, 0x1a, 0x93, 0x3d, 0xf7, 0xe0, 0x89, 0xf0, 0x18, 0xc5, 0x69, 0x64, 0x0e, 0xc1, 0xf1, 0x6c, 0x3c, 0x76, 0x2c, 0xc1, 0xc4, 0xa2, 0x24, 0xbb, 0x03, 0x6b, 0xe2, 0x93, 0x6c, 0xba, 0x33, 0x71, @@ -12667,13 +12731,13 @@ var fileDescriptor_2d655ab2f7683c23 = []byte{ 0x94, 0x35, 0x42, 0x83, 0xdd, 0x11, 0x5e, 0x4d, 0xae, 0x65, 0x09, 0xf7, 0x6e, 0x52, 0x87, 0xf0, 0x73, 0x76, 0xa2, 0x7a, 0x29, 0xcf, 0x6d, 0xc9, 0xd1, 0x11, 0x73, 0x6b, 0x51, 0xa0, 0x90, 0xdb, 0xaf, 0x40, 0x19, 0x9b, 0x46, 0xe7, 0x2a, 0x62, 0x5b, 0x97, 0x7c, 0xef, 0xb4, 0x89, 0x69, 0xf5, - 0x3f, 0x65, 0xa0, 0xd2, 0xf3, 0x4d, 0x14, 0x13, 0xfd, 0xa9, 0x35, 0x7a, 0xa1, 0xee, 0x88, 0x52, + 0x3f, 0x67, 0xa0, 0xd2, 0xf3, 0x4d, 0x14, 0x13, 0xfd, 0xa9, 0x35, 0x7a, 0xa1, 0xee, 0x88, 0x52, 0xde, 0x73, 0x1c, 0x23, 0xd6, 0xbc, 0x50, 0xca, 0x47, 0x00, 0xf6, 0x01, 0xe4, 0xc6, 0x8e, 0x71, 0x44, 0x53, 0x1b, 0xdb, 0x94, 0x52, 0xf1, 0xd1, 0xf7, 0xae, 0x63, 0x1c, 0x69, 0x44, 0xaa, 0xfe, 0x46, 0x5c, 0x3f, 0x9d, 0xb0, 0xc8, 0xe7, 0x2a, 0x2b, 0x74, 0xc6, 0xd7, 0x6f, 0x2a, 0x19, 0x56, 0x82, 0xdc, 0x4e, 0xab, 0xdf, 0xe4, 0x96, 0x24, 0xda, 0x94, 0x7d, 0x7d, 0xb7, 0xad, 0xf5, 0x07, 0x4a, 0x8e, 0x0e, 0x0d, 0x09, 0xd0, 0x69, 0xf4, 0x07, 0x4a, 0x89, 0x01, 0x14, 0x0e, 0xbb, 0xed, - 0x9f, 0x1c, 0xb6, 0x14, 0x45, 0xfd, 0x77, 0x19, 0x80, 0xc4, 0xfd, 0xcf, 0xde, 0x86, 0xca, 0x29, + 0x9f, 0x1c, 0xb6, 0x14, 0x45, 0xfd, 0xf7, 0x19, 0x80, 0xc4, 0xfd, 0xcf, 0xde, 0x86, 0xca, 0x29, 0xa5, 0x74, 0xe9, 0x5c, 0x48, 0xee, 0x23, 0x70, 0x34, 0x69, 0x20, 0xef, 0x4a, 0x06, 0x05, 0x4a, 0xda, 0xc5, 0x03, 0xa2, 0xca, 0x34, 0x11, 0xd2, 0xec, 0x1d, 0x28, 0x79, 0xd8, 0x0f, 0x24, 0xcd, 0xca, 0x62, 0x56, 0xea, 0xbe, 0x56, 0xf4, 0x78, 0x02, 0x25, 0xf2, 0xd8, 0x8f, 0x1c, 0x47, 0x31, @@ -12714,7 +12778,7 @@ var fileDescriptor_2d655ab2f7683c23 = []byte{ 0xb0, 0x81, 0x43, 0x9d, 0xe4, 0xe3, 0x8b, 0x19, 0xb7, 0xd5, 0xba, 0xe7, 0x98, 0x89, 0x73, 0xc2, 0x3c, 0x43, 0x5a, 0xd7, 0x3a, 0x9d, 0xa3, 0x2d, 0x70, 0x5a, 0xd7, 0x3a, 0x4d, 0xd1, 0x3e, 0x84, 0x4a, 0xb2, 0x5b, 0x83, 0x7a, 0xf1, 0xe2, 0x19, 0x8c, 0x37, 0x6f, 0x80, 0x99, 0xb8, 0x23, 0x97, - 0x67, 0x2a, 0x5d, 0x9c, 0x89, 0x93, 0xd1, 0x61, 0xe3, 0x3f, 0x5b, 0x85, 0x72, 0x9b, 0x97, 0x11, + 0x67, 0x2a, 0x5d, 0x9c, 0x89, 0x93, 0xd1, 0x61, 0xe3, 0x3f, 0x5f, 0x85, 0x72, 0x9b, 0x97, 0x11, 0x9e, 0xb1, 0xdb, 0x90, 0xfd, 0x96, 0x69, 0x40, 0x1c, 0x76, 0xc3, 0x30, 0x4d, 0xdd, 0x18, 0x8f, 0xad, 0x51, 0x68, 0x99, 0x3a, 0xea, 0x57, 0x82, 0xe9, 0xad, 0x1b, 0xa6, 0xd9, 0x10, 0x70, 0x12, 0x1e, 0xdc, 0xad, 0x15, 0xd9, 0x99, 0xfc, 0x20, 0x27, 0x1b, 0xb9, 0xb5, 0x84, 0x99, 0xc9, 0x8f, @@ -12724,7 +12788,7 @@ var fileDescriptor_2d655ab2f7683c23 = []byte{ 0xa4, 0x68, 0x49, 0x90, 0xf8, 0x5b, 0x3a, 0xbc, 0x85, 0x97, 0x1e, 0xde, 0xe2, 0x4b, 0x0c, 0x6f, 0x69, 0x71, 0x78, 0xd9, 0x67, 0xf0, 0xaa, 0x6f, 0x9d, 0xfa, 0x76, 0x68, 0xe9, 0x63, 0xdf, 0x9b, 0xe8, 0x29, 0x61, 0x80, 0xbc, 0xb2, 0x4c, 0xa3, 0x71, 0x4d, 0x10, 0xed, 0xfa, 0xde, 0x24, 0x2d, - 0x10, 0xd4, 0x3f, 0x2d, 0x40, 0xa5, 0xe1, 0x1a, 0xce, 0xf9, 0x37, 0x16, 0x05, 0x2b, 0xd1, 0x51, + 0x10, 0xd4, 0xbf, 0x2c, 0x41, 0xa5, 0xe1, 0x1a, 0xce, 0xf9, 0x37, 0x16, 0x05, 0x2b, 0xd1, 0x51, 0xcf, 0x74, 0x16, 0xf2, 0x71, 0xe7, 0xa7, 0xf7, 0x65, 0x82, 0xd0, 0x88, 0xdf, 0x82, 0x8a, 0x37, 0x0b, 0x63, 0x3c, 0x3f, 0xcf, 0x07, 0x0e, 0x22, 0x82, 0x38, 0x7f, 0x7c, 0x8c, 0x18, 0xe5, 0x27, 0x6b, 0x33, 0xc9, 0x1f, 0x5b, 0x20, 0x71, 0x7e, 0x22, 0x40, 0x01, 0x61, 0x4f, 0x68, 0xe4, 0x83, @@ -12744,424 +12808,432 @@ var fileDescriptor_2d655ab2f7683c23 = []byte{ 0xc8, 0xa3, 0x80, 0xb5, 0x7c, 0xf0, 0xf0, 0x60, 0x16, 0x0a, 0xf0, 0x91, 0x15, 0x52, 0xec, 0x2f, 0x81, 0x1f, 0x5b, 0x21, 0xea, 0x26, 0xc1, 0xc3, 0xe8, 0x48, 0xee, 0xb2, 0x18, 0xdb, 0x87, 0xe2, 0xcc, 0x4d, 0x85, 0xb5, 0x18, 0xa9, 0x4f, 0x66, 0x3c, 0xec, 0x37, 0xab, 0x55, 0x22, 0x82, 0xfd, - 0x19, 0x1d, 0xfb, 0xe1, 0x7e, 0x08, 0x2d, 0x97, 0x2f, 0xe3, 0xab, 0x9c, 0x44, 0xc0, 0x68, 0x1d, - 0xdf, 0x86, 0x2a, 0x2f, 0x43, 0x70, 0xa0, 0x3a, 0x27, 0x11, 0x30, 0x24, 0x51, 0x7d, 0xe9, 0x10, - 0xe8, 0xc0, 0x9f, 0xb9, 0x16, 0x77, 0x9b, 0xd1, 0xa7, 0x29, 0x8e, 0xe3, 0xe3, 0x34, 0xdb, 0x81, - 0x4b, 0xdc, 0x5a, 0xb6, 0x24, 0x69, 0x18, 0x85, 0xc3, 0x2d, 0x3d, 0x1c, 0x61, 0x11, 0x7d, 0x0c, - 0x0e, 0xd4, 0x9f, 0x65, 0xe0, 0x7a, 0x8f, 0x62, 0x03, 0x88, 0x55, 0xec, 0x5b, 0x41, 0x60, 0x1c, - 0x59, 0xbb, 0x9e, 0xbf, 0x3b, 0xfb, 0xe6, 0x9b, 0x73, 0x76, 0x17, 0xd6, 0x0f, 0x0c, 0xdf, 0x72, - 0xc3, 0x98, 0x91, 0x08, 0x6d, 0x69, 0x1e, 0xcc, 0x1e, 0xd1, 0x01, 0x84, 0xe5, 0x86, 0x87, 0xb1, - 0xde, 0x29, 0xda, 0x92, 0x76, 0x49, 0x2f, 0x50, 0xa9, 0xff, 0x6b, 0x0b, 0x72, 0x5d, 0xcf, 0xb4, - 0xd8, 0xfb, 0x50, 0xa6, 0x58, 0xd6, 0xc5, 0x73, 0x2f, 0x44, 0xd3, 0x1f, 0x32, 0x01, 0x4a, 0xae, - 0xf8, 0xba, 0x38, 0xfa, 0xf5, 0x36, 0x19, 0x33, 0x74, 0x70, 0x8e, 0xac, 0xb9, 0x22, 0x9c, 0x29, - 0xe4, 0x0d, 0xe0, 0x18, 0x1c, 0x5b, 0x72, 0x06, 0xfb, 0x96, 0x4b, 0xfa, 0x46, 0x5e, 0x8b, 0xd3, - 0x64, 0x42, 0xfa, 0x1e, 0x8a, 0x11, 0xbe, 0xea, 0xf2, 0x4b, 0x4c, 0x48, 0x8e, 0xa7, 0x65, 0xf8, - 0x3e, 0x94, 0xbf, 0xf2, 0x6c, 0x97, 0x37, 0xbc, 0xb0, 0xd0, 0x70, 0xd4, 0x12, 0x79, 0xc3, 0xbf, - 0x12, 0x5f, 0xec, 0x35, 0x28, 0x7a, 0x2e, 0x2f, 0xbb, 0xb8, 0x50, 0x76, 0xc1, 0x73, 0x3b, 0x3c, - 0xb0, 0x6c, 0x6d, 0x38, 0xb3, 0x1d, 0x13, 0xb9, 0xb0, 0x63, 0x8d, 0x43, 0x71, 0x3e, 0x55, 0x21, - 0x60, 0xcf, 0xed, 0x58, 0xe3, 0x10, 0x2d, 0xe3, 0xb1, 0xed, 0xa0, 0xb4, 0xa2, 0xc2, 0xca, 0x0b, - 0x85, 0x01, 0x47, 0x53, 0x81, 0xaf, 0x43, 0xe9, 0xc8, 0xf7, 0x66, 0x53, 0x34, 0x75, 0x61, 0xf1, - 0x44, 0x88, 0x70, 0xdb, 0xe7, 0xc8, 0x32, 0xe9, 0xd3, 0x76, 0x8f, 0x74, 0xf2, 0x0a, 0x54, 0xb6, - 0xb2, 0x77, 0x4b, 0x5a, 0x35, 0x02, 0x92, 0xbd, 0xff, 0x3a, 0x94, 0x8c, 0xa3, 0x23, 0x5d, 0xc4, - 0xc7, 0x2d, 0x94, 0x65, 0x1c, 0x1d, 0x51, 0x95, 0xf7, 0x61, 0xed, 0xd4, 0x76, 0xf5, 0x60, 0x6a, - 0x8d, 0x38, 0xed, 0xda, 0xe2, 0x50, 0x9e, 0xda, 0x2e, 0x1a, 0xc3, 0x44, 0x2f, 0x5b, 0xe3, 0xb5, - 0x17, 0x5a, 0xe3, 0x5b, 0x90, 0x77, 0xec, 0x89, 0x1d, 0x8a, 0x88, 0xb9, 0x94, 0xba, 0x4e, 0x08, - 0xa6, 0x42, 0x41, 0x38, 0x7d, 0x95, 0x05, 0x12, 0x81, 0x49, 0xcb, 0xf2, 0x8d, 0x17, 0xc8, 0x72, - 0x49, 0x75, 0x66, 0xdf, 0xae, 0x3a, 0x7f, 0x44, 0x27, 0x63, 0x96, 0x1b, 0xea, 0x51, 0x86, 0x4b, - 0xcb, 0x33, 0x54, 0x39, 0x59, 0x8f, 0x67, 0xfb, 0x00, 0x2a, 0x3e, 0xb9, 0x89, 0x74, 0xf2, 0x29, - 0x6d, 0xca, 0x76, 0x76, 0xe2, 0x3f, 0xd2, 0xc0, 0x4f, 0x7c, 0x49, 0xaf, 0xc1, 0x1a, 0x0f, 0xdc, - 0xe1, 0xe1, 0x15, 0x01, 0xb1, 0xa8, 0xb2, 0x56, 0x25, 0x20, 0x0f, 0xbd, 0x08, 0xd8, 0x7d, 0x80, - 0x48, 0x09, 0x09, 0xcf, 0x88, 0x43, 0xc5, 0x4d, 0xe1, 0x8c, 0xac, 0x19, 0x9e, 0x69, 0x65, 0x33, - 0xfa, 0x44, 0x86, 0x35, 0xb4, 0x5d, 0x13, 0x17, 0x41, 0x68, 0x1c, 0x21, 0xc3, 0xc2, 0x3d, 0x52, - 0x11, 0xb0, 0x81, 0x71, 0x14, 0xa0, 0xd9, 0x63, 0x70, 0x51, 0xcf, 0x23, 0x98, 0xaf, 0xc9, 0x3e, - 0x11, 0x49, 0x09, 0xd0, 0x2a, 0x86, 0xa4, 0x11, 0x7c, 0x02, 0x2c, 0x3a, 0x51, 0x92, 0xac, 0x98, - 0xeb, 0x0b, 0xeb, 0x62, 0x5d, 0x1c, 0x29, 0xc5, 0x51, 0xf7, 0x9f, 0xc0, 0x5a, 0x5a, 0x35, 0xbb, - 0xb1, 0xe4, 0x0c, 0x85, 0xa6, 0x4c, 0xab, 0x8e, 0x64, 0x65, 0xed, 0x35, 0x58, 0x73, 0xbd, 0x50, - 0x1f, 0x19, 0xa3, 0x63, 0x8b, 0x32, 0xf2, 0x73, 0x82, 0xaa, 0xeb, 0x85, 0xcd, 0x08, 0x86, 0xe3, - 0x13, 0x19, 0x00, 0xe1, 0x19, 0x1d, 0x11, 0xc4, 0xe3, 0x13, 0x6b, 0xeb, 0xa8, 0x79, 0x44, 0x8a, - 0x3b, 0xce, 0x13, 0x57, 0x44, 0x29, 0xc3, 0xad, 0xd4, 0x3c, 0xc5, 0x1a, 0xaa, 0x06, 0x7e, 0xa2, - 0xad, 0xde, 0x82, 0x4a, 0xe0, 0xcd, 0xfc, 0x91, 0xa5, 0x07, 0xa1, 0x35, 0xad, 0x6f, 0xd1, 0x88, - 0x02, 0x07, 0xf5, 0x43, 0x6b, 0xca, 0x1e, 0x41, 0x6d, 0xea, 0x5b, 0xba, 0x34, 0x4f, 0xb7, 0xe5, - 0x2e, 0x1e, 0xf8, 0x56, 0x32, 0x55, 0xd5, 0xa9, 0x94, 0x8a, 0x72, 0x4a, 0x3d, 0x50, 0xe7, 0x72, - 0x26, 0x9d, 0xc0, 0x9c, 0x89, 0x01, 0xf2, 0x63, 0xd8, 0x90, 0x72, 0xce, 0x4e, 0x28, 0xf3, 0x6b, - 0xa9, 0x23, 0xad, 0x88, 0xfc, 0xf0, 0x04, 0xb3, 0xd7, 0xa6, 0xa9, 0x34, 0x6b, 0xcc, 0x79, 0x17, - 0x50, 0x4d, 0xbc, 0x43, 0xf9, 0xaf, 0x5e, 0xe0, 0x32, 0x48, 0xb9, 0x1d, 0x9e, 0xf0, 0xc3, 0x8b, - 0x76, 0xd0, 0x72, 0xcd, 0xfa, 0xeb, 0xfc, 0x6a, 0x0c, 0x25, 0xd8, 0x43, 0xa8, 0x72, 0x85, 0x85, - 0xc2, 0x72, 0x83, 0xfa, 0x1b, 0xb2, 0x7b, 0x95, 0xb4, 0x16, 0x42, 0x68, 0x15, 0x27, 0xfe, 0x0e, - 0xd8, 0xc7, 0xb0, 0xc1, 0xfd, 0xda, 0x32, 0x5b, 0x7c, 0x73, 0x71, 0x71, 0x11, 0xd1, 0x6e, 0xc2, - 0x1b, 0x35, 0xb8, 0xe6, 0xcf, 0x5c, 0x52, 0x62, 0x44, 0xce, 0xa9, 0xef, 0x0d, 0x2d, 0x9e, 0xff, - 0x2e, 0xe5, 0x17, 0xdd, 0xd1, 0x38, 0x19, 0xcf, 0x4b, 0xfc, 0xe8, 0x8a, 0x2f, 0x83, 0x0e, 0x30, - 0xdf, 0x05, 0x65, 0x72, 0x7e, 0x4e, 0x65, 0xbe, 0xf5, 0x32, 0x65, 0x6e, 0x63, 0x3e, 0x2a, 0x93, - 0x41, 0x6e, 0x36, 0xb3, 0xcd, 0xfa, 0x3d, 0x1e, 0x41, 0x8b, 0xdf, 0xec, 0x75, 0xa8, 0xf9, 0xd6, - 0x68, 0xe6, 0x07, 0xf6, 0x73, 0x4b, 0x0f, 0x6c, 0xf7, 0xa4, 0xfe, 0x36, 0x8d, 0xe3, 0x5a, 0x0c, - 0xed, 0xdb, 0xee, 0x09, 0xae, 0x58, 0xeb, 0x2c, 0xb4, 0x7c, 0x57, 0x47, 0xc5, 0xb1, 0xfe, 0x8e, - 0xbc, 0x62, 0x5b, 0x84, 0xe8, 0x8f, 0x0c, 0x57, 0x03, 0x2b, 0xfe, 0x66, 0x3f, 0x82, 0xf5, 0xc4, - 0x68, 0x98, 0xa2, 0xe2, 0x51, 0x7f, 0x77, 0xe9, 0x69, 0x27, 0x29, 0x25, 0x5a, 0x12, 0x0a, 0xc0, - 0xf5, 0x97, 0xf4, 0xda, 0x0a, 0xf8, 0xda, 0xba, 0xff, 0x9d, 0xd6, 0x56, 0x9f, 0xd6, 0xd6, 0x1b, - 0x50, 0xb2, 0xdd, 0xd0, 0xf2, 0x9f, 0x1b, 0x4e, 0xfd, 0xbd, 0x05, 0x06, 0x1e, 0xe3, 0xd8, 0x1d, - 0x28, 0x06, 0x8e, 0x8d, 0x8c, 0xa9, 0xfe, 0xfe, 0x02, 0x59, 0x84, 0x62, 0x77, 0xa1, 0x1c, 0xdf, - 0x05, 0xab, 0x7f, 0xb0, 0x40, 0x97, 0x20, 0xd9, 0x4d, 0xc8, 0x9d, 0xe2, 0x7a, 0x7c, 0xb0, 0xe8, - 0x4d, 0x47, 0x38, 0x4a, 0xfc, 0xb1, 0xed, 0x38, 0x5c, 0xe2, 0x3f, 0x5c, 0x90, 0xf8, 0xbb, 0xb6, - 0xe3, 0x70, 0x89, 0x3f, 0x16, 0x5f, 0x28, 0x2f, 0x29, 0x07, 0xf6, 0xe4, 0xc3, 0x45, 0x79, 0x89, - 0xb8, 0xa7, 0x74, 0x6b, 0xae, 0x12, 0x90, 0x8b, 0x98, 0x7b, 0xba, 0x3f, 0x92, 0xc7, 0x2a, 0xed, - 0x3b, 0xd6, 0x20, 0x88, 0xd3, 0x68, 0x59, 0x08, 0x07, 0x39, 0x5a, 0x76, 0x1f, 0xf3, 0xcb, 0x1c, - 0x1c, 0x82, 0x66, 0xdd, 0xfb, 0xb0, 0x16, 0xc5, 0x81, 0x61, 0x75, 0x41, 0xfd, 0x93, 0x85, 0x16, - 0xa4, 0x09, 0xd8, 0x0e, 0x54, 0xc7, 0xa8, 0x01, 0x4e, 0xb8, 0x42, 0x58, 0x7f, 0x44, 0x0d, 0xd9, - 0x8a, 0x64, 0xf1, 0x45, 0x0a, 0xa3, 0x96, 0xca, 0xc5, 0xee, 0x03, 0xb3, 0xc7, 0x7c, 0x3e, 0xd1, - 0x54, 0xe4, 0x4a, 0x5f, 0xfd, 0x53, 0x5a, 0x9c, 0x4b, 0x30, 0xec, 0x21, 0xac, 0x05, 0x96, 0x6b, - 0xea, 0x93, 0x40, 0x68, 0x16, 0x3f, 0xa0, 0x76, 0x0a, 0x36, 0x1c, 0xdf, 0x19, 0xd5, 0x2a, 0x48, - 0xb5, 0x1f, 0x70, 0x15, 0xe3, 0x21, 0xe0, 0x3a, 0x7f, 0x9e, 0x64, 0xfa, 0xb5, 0x0b, 0x32, 0x21, - 0x55, 0x94, 0xe9, 0x11, 0xd4, 0x4c, 0xcb, 0x9c, 0x4d, 0x75, 0x52, 0xdc, 0x70, 0x59, 0xfe, 0x50, - 0xe6, 0x97, 0xb2, 0x77, 0x4f, 0xab, 0x9a, 0xb2, 0xaf, 0xef, 0x13, 0x58, 0x8f, 0xdc, 0x70, 0xa1, - 0xf0, 0xd8, 0xfd, 0x48, 0xae, 0x30, 0xf6, 0xb2, 0x69, 0x6b, 0xb3, 0xe8, 0x33, 0x6a, 0x27, 0x59, - 0x7f, 0x81, 0x6b, 0x4c, 0x83, 0x63, 0x2f, 0xac, 0xff, 0xba, 0xac, 0x6a, 0xf4, 0x05, 0x54, 0xab, - 0x22, 0x51, 0x94, 0x42, 0xd1, 0x95, 0x6c, 0xed, 0x51, 0x68, 0xd5, 0x7f, 0xcc, 0x45, 0x57, 0x0c, - 0x6c, 0x86, 0x38, 0x6c, 0x60, 0x4c, 0xa7, 0xce, 0x39, 0x5f, 0x8e, 0x9f, 0xd1, 0x72, 0xdc, 0x94, - 0x96, 0x63, 0x03, 0x91, 0xb4, 0x1e, 0xcb, 0x46, 0xf4, 0xc9, 0x1e, 0x40, 0x75, 0xea, 0x05, 0xa1, - 0x6e, 0x4e, 0x1c, 0xea, 0x7f, 0x43, 0x66, 0x07, 0x07, 0x5e, 0x10, 0xee, 0x4c, 0x1c, 0x12, 0x60, - 0xd3, 0xf8, 0x9b, 0x75, 0xe0, 0x52, 0x8a, 0xd5, 0x1b, 0x74, 0xa0, 0x5c, 0xdf, 0xa6, 0x1a, 0x6f, - 0x48, 0x35, 0x4a, 0x2c, 0x5f, 0x04, 0x22, 0x6e, 0x78, 0xf3, 0x20, 0xb4, 0x4a, 0xf9, 0x1c, 0xc4, - 0xd1, 0xb8, 0x4d, 0xae, 0xb7, 0x10, 0x34, 0x0a, 0xc7, 0x7d, 0x04, 0xeb, 0x09, 0x15, 0x76, 0x30, - 0xa8, 0xef, 0xc8, 0xab, 0x57, 0x8a, 0x99, 0x5f, 0x8b, 0x32, 0x22, 0x2c, 0x50, 0xff, 0x3c, 0x0f, - 0xa5, 0xc8, 0x68, 0x60, 0x15, 0x28, 0x1e, 0x76, 0x9f, 0x74, 0x7b, 0xcf, 0xba, 0xfc, 0xee, 0x5a, - 0xa3, 0xdf, 0x6f, 0x69, 0x03, 0xc5, 0x64, 0x35, 0x00, 0xba, 0x9b, 0xa3, 0xf7, 0x9b, 0x8d, 0x2e, - 0xbf, 0xcb, 0x46, 0x37, 0x82, 0x78, 0x7a, 0x95, 0x6d, 0xc0, 0xda, 0xee, 0x61, 0x97, 0xe2, 0x1d, - 0x39, 0x28, 0x8b, 0xa0, 0xd6, 0x17, 0xfc, 0xac, 0x8b, 0x83, 0x72, 0x08, 0xda, 0x6f, 0x0c, 0x5a, - 0x5a, 0x3b, 0x02, 0xe5, 0x29, 0x74, 0xb2, 0x77, 0xa8, 0x35, 0x45, 0x49, 0x05, 0x76, 0x19, 0x36, - 0xe2, 0x6c, 0x51, 0x91, 0x4a, 0x11, 0x5b, 0x76, 0xa0, 0xf5, 0x3e, 0x6f, 0x35, 0x07, 0x0a, 0xd0, - 0xc1, 0xd9, 0xe3, 0xc7, 0x4a, 0x85, 0x55, 0xa1, 0xb4, 0xd3, 0xee, 0x0f, 0xda, 0xdd, 0xe6, 0x40, - 0xa9, 0x62, 0x83, 0x77, 0xdb, 0x9d, 0x41, 0x4b, 0x53, 0xd6, 0x58, 0x09, 0x72, 0x9f, 0xf7, 0xda, - 0x5d, 0xa5, 0x46, 0x77, 0x94, 0x1a, 0xfb, 0x07, 0x9d, 0x96, 0xb2, 0x8e, 0xd0, 0x7e, 0x4f, 0x1b, - 0x28, 0x0a, 0x42, 0x9f, 0xb5, 0xbb, 0x3b, 0xbd, 0x67, 0xca, 0x06, 0x2b, 0x43, 0xfe, 0xb0, 0x8b, - 0xd5, 0x30, 0xb6, 0x06, 0x65, 0xfa, 0xd4, 0x1b, 0x9d, 0x8e, 0x72, 0x49, 0x3a, 0x6d, 0xdb, 0x44, - 0x14, 0x9d, 0xdd, 0xf5, 0xb1, 0x0d, 0x97, 0xb1, 0x2f, 0x71, 0x92, 0xa8, 0xaf, 0x60, 0x39, 0xfb, - 0xed, 0xee, 0x61, 0x5f, 0xb9, 0x8a, 0xc4, 0xf4, 0x49, 0x98, 0x3a, 0x96, 0xd3, 0xee, 0xd2, 0x50, - 0xde, 0xc4, 0xef, 0x9d, 0x56, 0xa7, 0x35, 0x68, 0x29, 0xb7, 0xb0, 0x57, 0x5a, 0xeb, 0xa0, 0xd3, - 0x68, 0xb6, 0x94, 0x2d, 0x4c, 0x74, 0x7a, 0xcd, 0x27, 0x7a, 0xef, 0x40, 0xb9, 0xcd, 0x36, 0x41, - 0xe9, 0x75, 0xf5, 0x9d, 0xc3, 0x83, 0x4e, 0xbb, 0xd9, 0x18, 0xb4, 0xf4, 0x27, 0xad, 0x2f, 0x15, - 0x15, 0x87, 0xfd, 0x40, 0x6b, 0xe9, 0xa2, 0xac, 0xd7, 0xa2, 0xb4, 0x28, 0xef, 0x0e, 0x53, 0xa0, - 0xba, 0x7b, 0xf8, 0xd3, 0x9f, 0x7e, 0xa9, 0x8b, 0x71, 0x78, 0x1d, 0x9b, 0x99, 0xe4, 0xd0, 0x0f, - 0x9f, 0x28, 0x6f, 0xcc, 0x81, 0xfa, 0x4f, 0x94, 0x37, 0x71, 0x1c, 0xa3, 0x89, 0x51, 0xee, 0x22, - 0x81, 0xd6, 0x6a, 0x1e, 0x6a, 0xfd, 0xf6, 0xd3, 0x96, 0xde, 0x1c, 0xb4, 0x94, 0xb7, 0x68, 0xe0, - 0xda, 0xdd, 0x27, 0xca, 0x3d, 0xec, 0x19, 0x7e, 0xf1, 0xe9, 0x7a, 0x9b, 0x31, 0xa8, 0x25, 0xb4, - 0x04, 0x7b, 0x07, 0x49, 0xb6, 0xb5, 0x5e, 0x63, 0xa7, 0xd9, 0xe8, 0x0f, 0x94, 0x77, 0x71, 0x58, - 0xfa, 0x07, 0x9d, 0xf6, 0x40, 0xb9, 0x8f, 0x7d, 0x7f, 0xdc, 0x18, 0xec, 0xb5, 0x34, 0xe5, 0x3d, - 0x9c, 0xf9, 0x41, 0x7b, 0xbf, 0xa5, 0x8b, 0x69, 0x78, 0x80, 0x75, 0xec, 0xb6, 0x3b, 0x1d, 0xe5, - 0x21, 0x1d, 0x30, 0x35, 0xb4, 0x41, 0x9b, 0xe6, 0xfe, 0x43, 0x2c, 0xa0, 0x71, 0x70, 0xd0, 0xf9, - 0x52, 0xf9, 0x08, 0x3b, 0xb8, 0x7f, 0xd8, 0x19, 0xb4, 0xf5, 0xc3, 0x83, 0x9d, 0xc6, 0xa0, 0xa5, - 0x7c, 0x4c, 0x0b, 0xa3, 0xd7, 0x1f, 0xec, 0xec, 0x77, 0x94, 0x4f, 0xd4, 0xdf, 0x84, 0x52, 0x64, - 0x47, 0x62, 0xae, 0x76, 0xb7, 0xdb, 0xd2, 0x94, 0x15, 0x2c, 0xb9, 0xd3, 0xda, 0x1d, 0x28, 0x19, - 0x3a, 0x5c, 0x6b, 0x3f, 0xde, 0x1b, 0x28, 0xab, 0xf8, 0xd9, 0x3b, 0xc4, 0x41, 0xca, 0x52, 0xef, - 0x5a, 0xfb, 0x6d, 0x25, 0x87, 0x5f, 0x8d, 0xee, 0xa0, 0xad, 0xe4, 0x69, 0xd9, 0xb4, 0xbb, 0x8f, - 0x3b, 0x2d, 0xa5, 0x80, 0xd0, 0xfd, 0x86, 0xf6, 0x44, 0x29, 0xf2, 0x42, 0x77, 0x5a, 0x5f, 0x28, - 0x25, 0x56, 0x80, 0xd5, 0xce, 0x03, 0xa5, 0x8c, 0xa0, 0x9d, 0xd6, 0xce, 0xe1, 0x81, 0x02, 0xea, - 0x5d, 0x28, 0x36, 0x8e, 0x8e, 0xf6, 0xd1, 0x4c, 0xc7, 0xce, 0x1c, 0x76, 0x3a, 0x7c, 0x1b, 0x6d, - 0xf7, 0x06, 0x83, 0xde, 0xbe, 0x92, 0xc1, 0x85, 0x3b, 0xe8, 0x1d, 0x28, 0xab, 0x6a, 0x1b, 0x4a, - 0x91, 0xf8, 0x93, 0xae, 0xdd, 0x95, 0x20, 0x77, 0xa0, 0xb5, 0x9e, 0xf2, 0x13, 0xe1, 0x6e, 0xeb, - 0x0b, 0x6c, 0x26, 0x7e, 0x61, 0x41, 0x59, 0xac, 0x88, 0xdf, 0x8f, 0xa3, 0x7b, 0x77, 0x9d, 0x76, - 0xb7, 0xd5, 0xd0, 0x94, 0xbc, 0xfa, 0x51, 0xea, 0xb0, 0x4d, 0x70, 0x0d, 0xac, 0xbe, 0xd1, 0x16, - 0xd5, 0xb7, 0x1f, 0x77, 0x7b, 0x5a, 0x8b, 0x5f, 0xe4, 0x13, 0xe3, 0xb6, 0xaa, 0xbe, 0x0d, 0xe5, - 0x98, 0xe3, 0xe1, 0x3a, 0x6a, 0x6a, 0xbd, 0x7e, 0x9f, 0x0f, 0xf3, 0x0a, 0xa6, 0x69, 0x6c, 0x78, - 0x3a, 0xa3, 0xfe, 0xff, 0x50, 0x8a, 0x99, 0xed, 0x1d, 0x58, 0x1d, 0xf4, 0x85, 0x33, 0x79, 0xf3, - 0x7e, 0xf2, 0xde, 0xc2, 0x20, 0xfa, 0xd2, 0x56, 0x07, 0x7d, 0xf6, 0x0e, 0x14, 0xf8, 0x6d, 0x4b, - 0x71, 0x1e, 0xb2, 0x99, 0x66, 0xe0, 0x03, 0xc2, 0x69, 0x82, 0x46, 0xed, 0x40, 0x2d, 0x8d, 0x61, - 0x37, 0x01, 0x38, 0x4e, 0x72, 0xa7, 0x48, 0x10, 0x76, 0x1d, 0xa2, 0xdb, 0x9c, 0x3b, 0x22, 0x44, - 0x32, 0x4e, 0xab, 0xff, 0x20, 0x0b, 0x90, 0xa8, 0x6a, 0xa8, 0x0c, 0xc6, 0xce, 0x92, 0xbc, 0x38, - 0x1a, 0x7d, 0x05, 0xca, 0x8e, 0x67, 0x98, 0xf2, 0xbb, 0x09, 0x25, 0x04, 0xd0, 0x68, 0xc8, 0x77, - 0xb6, 0xca, 0x3c, 0x2e, 0x81, 0x5d, 0x81, 0xc2, 0xd8, 0xf3, 0x27, 0x46, 0x14, 0x4c, 0x29, 0x52, - 0x28, 0x7a, 0xf8, 0x71, 0x1d, 0x2a, 0xac, 0x2e, 0xdd, 0x87, 0xa0, 0xc8, 0x5c, 0x01, 0xec, 0x20, - 0x0c, 0x4d, 0x1a, 0xcb, 0x1d, 0x39, 0x5e, 0x60, 0x99, 0x68, 0xb2, 0x17, 0x48, 0x2b, 0x85, 0x08, - 0xb4, 0x7d, 0xce, 0x7b, 0xeb, 0x4f, 0x6c, 0xd7, 0x08, 0x85, 0xc7, 0x94, 0x7a, 0x1b, 0x41, 0xb0, - 0xb9, 0x5f, 0x05, 0x9e, 0xf0, 0x9d, 0xf0, 0x93, 0xbf, 0x12, 0x02, 0xa8, 0xb9, 0xaf, 0x02, 0x58, - 0xc1, 0xc8, 0x98, 0xf2, 0xc2, 0xcb, 0x54, 0x78, 0x59, 0x40, 0xb6, 0xcf, 0x59, 0x07, 0x6a, 0x83, - 0x21, 0xb2, 0x7b, 0x0f, 0xcd, 0xe0, 0xa6, 0xe7, 0x08, 0xaf, 0xc6, 0x9d, 0x79, 0x9d, 0xf6, 0x7e, - 0x9a, 0x8c, 0x1f, 0x51, 0xce, 0xe5, 0xbd, 0xde, 0x80, 0x4b, 0x4b, 0xc8, 0x5e, 0x2a, 0xd4, 0xea, - 0x2f, 0x73, 0x00, 0x89, 0x61, 0x92, 0x3a, 0xb7, 0xcc, 0xa4, 0xcf, 0x2d, 0x1f, 0xc0, 0x15, 0x71, - 0xdd, 0x29, 0x3e, 0xfc, 0xb3, 0x5d, 0x7d, 0x68, 0x44, 0x47, 0xc4, 0x4c, 0x60, 0xf9, 0xf9, 0x5f, - 0xdb, 0xdd, 0x36, 0x50, 0x67, 0x59, 0x97, 0xf3, 0x84, 0xe7, 0xd3, 0xf4, 0x11, 0xb7, 0x2c, 0x09, - 0x93, 0xec, 0x83, 0xf3, 0x29, 0x7b, 0x1f, 0x2e, 0xfb, 0xd6, 0xd8, 0xb7, 0x82, 0x63, 0x3d, 0x0c, - 0xe4, 0xca, 0x78, 0x94, 0xd5, 0x86, 0x40, 0x0e, 0x82, 0xb8, 0xae, 0xf7, 0xe1, 0xb2, 0x30, 0x59, - 0xe6, 0x9a, 0xc7, 0x8f, 0xda, 0x36, 0x38, 0x52, 0x6e, 0xdd, 0xab, 0x00, 0xc2, 0x5a, 0x8b, 0xde, - 0x03, 0x29, 0x69, 0x65, 0x6e, 0x99, 0xa1, 0x79, 0xfd, 0x0e, 0x30, 0x3b, 0xd0, 0xe7, 0x4e, 0x2d, - 0xc4, 0x41, 0xb0, 0x62, 0x07, 0x07, 0xa9, 0x13, 0x8b, 0x8b, 0x0e, 0x44, 0x4a, 0x17, 0x1d, 0x88, - 0x6c, 0x42, 0x9e, 0x0c, 0x3a, 0x71, 0x3e, 0xc1, 0x13, 0x4c, 0x85, 0x1c, 0x72, 0x2c, 0xf2, 0xa5, - 0xd7, 0x1e, 0xd4, 0xee, 0xd3, 0x6b, 0x2a, 0x38, 0x3f, 0x08, 0xd5, 0x08, 0xc7, 0xde, 0x85, 0x4b, - 0xf2, 0xa0, 0x46, 0x4f, 0x05, 0x54, 0xa8, 0x9b, 0x4a, 0x32, 0x8c, 0x1a, 0x7f, 0x34, 0xe0, 0x6d, - 0x60, 0xd2, 0xb8, 0x44, 0xd4, 0x55, 0x7e, 0xa6, 0x18, 0x0f, 0x8a, 0x20, 0x7e, 0x13, 0x68, 0x00, - 0xb8, 0xc3, 0x77, 0x6d, 0xd1, 0x7c, 0x41, 0x24, 0x39, 0x87, 0xdf, 0x87, 0xcb, 0xc9, 0xd8, 0xe9, - 0x46, 0xa8, 0x87, 0xc7, 0x96, 0x6e, 0xb9, 0x26, 0xdd, 0x80, 0x2b, 0x69, 0x1b, 0xf1, 0x30, 0x36, - 0xc2, 0xc1, 0xb1, 0xd5, 0x72, 0x4d, 0xf5, 0xf7, 0x32, 0x50, 0x4b, 0xdb, 0x4e, 0x3c, 0x2a, 0x3a, - 0x09, 0xf7, 0xce, 0x27, 0x21, 0xde, 0xaf, 0x40, 0x79, 0x7a, 0x22, 0x62, 0xbb, 0x23, 0x96, 0x30, - 0x3d, 0xe1, 0x31, 0xdd, 0xec, 0x2d, 0x28, 0x4e, 0x4f, 0xf8, 0xf6, 0xbb, 0x68, 0x35, 0x15, 0xa6, - 0x3c, 0xdc, 0xf2, 0x2d, 0x28, 0xce, 0x04, 0x69, 0xee, 0x22, 0xd2, 0x19, 0x91, 0xaa, 0x5b, 0x50, - 0x95, 0xbd, 0x15, 0xb8, 0x8b, 0xd0, 0x32, 0xe1, 0x0d, 0xc3, 0x4f, 0xf5, 0xb7, 0x56, 0x89, 0xe4, - 0xa5, 0x4e, 0x42, 0x5f, 0xea, 0x34, 0x7a, 0x8b, 0xe2, 0xc3, 0x74, 0x8a, 0xfe, 0x1c, 0x79, 0xd1, - 0x23, 0x17, 0x70, 0x6c, 0x04, 0x8d, 0x59, 0xe8, 0x35, 0x3d, 0x47, 0xc4, 0x24, 0x88, 0xeb, 0x34, - 0xb9, 0xc8, 0xbf, 0x2e, 0x6e, 0xda, 0xbd, 0x2f, 0xee, 0x9c, 0xd0, 0x85, 0x2f, 0x8a, 0x83, 0xc8, - 0x2f, 0xcc, 0x60, 0x35, 0xba, 0xef, 0x45, 0x21, 0x0e, 0x0f, 0x60, 0x3d, 0x09, 0xf0, 0x8d, 0x42, - 0x27, 0xe6, 0xb3, 0xac, 0xc5, 0xd1, 0xbd, 0x98, 0x54, 0x7f, 0x27, 0x03, 0x1b, 0x0b, 0xc6, 0x3f, - 0x8e, 0x56, 0xf2, 0x1e, 0x0e, 0x7e, 0xb2, 0xdb, 0x50, 0x9d, 0x18, 0xe1, 0xe8, 0x58, 0x9f, 0xfa, - 0xd6, 0xd8, 0x3e, 0x8b, 0x1e, 0xf5, 0x21, 0xd8, 0x01, 0x81, 0x28, 0x0c, 0x64, 0x3a, 0x25, 0x97, - 0xc7, 0xc4, 0x0e, 0xc5, 0x8d, 0x3b, 0x20, 0x50, 0x87, 0x7c, 0xa1, 0x51, 0x88, 0x58, 0xee, 0x82, - 0x88, 0xb6, 0x1b, 0x50, 0x68, 0xc7, 0x4e, 0x86, 0x38, 0x8e, 0x21, 0x2b, 0xde, 0xb4, 0xf0, 0xa0, - 0xdc, 0xa4, 0xf7, 0x31, 0xf6, 0x8d, 0x29, 0xbb, 0x07, 0xd9, 0x89, 0x31, 0x15, 0x71, 0x0e, 0xf5, - 0xd8, 0xc1, 0xcf, 0xb1, 0xf7, 0xf7, 0x8d, 0x29, 0x67, 0xb1, 0x48, 0x74, 0xfd, 0x63, 0x28, 0x45, - 0x80, 0x97, 0x62, 0xa6, 0xff, 0x39, 0x0b, 0xe5, 0x1d, 0xd9, 0x1d, 0x89, 0xc6, 0x53, 0xe8, 0xcf, - 0x5c, 0x54, 0x06, 0xc4, 0x71, 0x48, 0x65, 0x64, 0xb8, 0x03, 0x01, 0x8a, 0x16, 0xd0, 0xea, 0xb7, - 0x2c, 0xa0, 0x1b, 0x00, 0x3e, 0x19, 0xc9, 0x64, 0x27, 0x67, 0xe3, 0x98, 0xba, 0xb6, 0x29, 0xe2, - 0x05, 0x16, 0x8f, 0x8a, 0x73, 0xdf, 0xfd, 0xa8, 0x38, 0xbf, 0xf4, 0xa8, 0xf8, 0xff, 0x9a, 0xc3, - 0xdd, 0x37, 0x12, 0xf9, 0x81, 0x6b, 0x1a, 0xc9, 0xca, 0x3c, 0xca, 0x76, 0x1a, 0x47, 0xe1, 0x23, - 0xdd, 0x0f, 0xa0, 0x16, 0x0d, 0xb3, 0xe8, 0x18, 0xa4, 0x02, 0xff, 0x05, 0x8e, 0x7b, 0x5a, 0xd7, - 0x42, 0x39, 0x99, 0xde, 0xa1, 0x95, 0x6f, 0xdf, 0xa1, 0xea, 0xef, 0x67, 0x80, 0x09, 0x4b, 0x73, - 0x77, 0xe6, 0x38, 0x03, 0xeb, 0x8c, 0x18, 0xc1, 0x3d, 0xd8, 0x10, 0x6e, 0x52, 0x29, 0x28, 0x48, - 0x1c, 0x3b, 0x71, 0x44, 0x72, 0xec, 0xb4, 0xec, 0xce, 0xe3, 0xea, 0xd2, 0x3b, 0x8f, 0xcb, 0xef, - 0x52, 0xde, 0x82, 0x8a, 0x7c, 0x63, 0x90, 0x6b, 0x40, 0x60, 0x24, 0x97, 0x05, 0xff, 0xc3, 0x2a, - 0x40, 0x62, 0x0d, 0xff, 0xaa, 0x03, 0x0e, 0x96, 0x4c, 0x49, 0x76, 0xd9, 0x94, 0xdc, 0x05, 0x45, - 0xa6, 0x93, 0xae, 0xae, 0xd6, 0x12, 0x42, 0xea, 0x26, 0xe7, 0x69, 0xd2, 0xf5, 0x42, 0xe2, 0x69, - 0xe2, 0x2c, 0x53, 0x04, 0x61, 0x11, 0xcb, 0x15, 0x22, 0xba, 0x64, 0x07, 0x9c, 0x05, 0xb3, 0x4f, - 0xe1, 0x5a, 0x9c, 0x53, 0x3f, 0xb5, 0xc3, 0x63, 0x6f, 0x16, 0x0a, 0xbf, 0x65, 0x20, 0x04, 0xf5, - 0x95, 0xa8, 0xa4, 0x67, 0x1c, 0xcd, 0x59, 0x56, 0xc0, 0x3e, 0x82, 0xf2, 0x78, 0xe6, 0x38, 0x7a, - 0x68, 0x9d, 0x85, 0x22, 0x0e, 0xb7, 0x9e, 0x72, 0x24, 0x48, 0xd3, 0xab, 0x95, 0xc6, 0x22, 0xa1, - 0xfe, 0xcf, 0x55, 0xc8, 0xff, 0x64, 0x66, 0xf9, 0xe7, 0xec, 0x63, 0x28, 0x07, 0xe1, 0x24, 0x94, - 0x8f, 0xfe, 0xae, 0xf1, 0x02, 0x08, 0x4f, 0x27, 0x77, 0xd6, 0xc4, 0x72, 0x43, 0xee, 0x55, 0x43, - 0x5a, 0x92, 0x48, 0x9b, 0x90, 0x0f, 0x42, 0x6b, 0x1a, 0x88, 0xa0, 0x29, 0x9e, 0x60, 0x5b, 0x90, - 0x77, 0x3d, 0xd3, 0x0a, 0xd2, 0xa1, 0x51, 0x5d, 0x14, 0xfa, 0x1c, 0xc1, 0x54, 0x28, 0xc4, 0x33, - 0xbe, 0x70, 0xfc, 0xc6, 0x31, 0x14, 0xc8, 0x6e, 0x19, 0xa6, 0xed, 0x1e, 0x45, 0x57, 0x81, 0xe3, - 0x34, 0xca, 0x5a, 0xd2, 0xa9, 0x8d, 0xa3, 0xe8, 0x5e, 0xbe, 0x48, 0xb2, 0x2d, 0xa8, 0xe0, 0xe7, - 0x33, 0xdf, 0x0e, 0xad, 0xfe, 0x43, 0x31, 0x6e, 0x32, 0x08, 0x35, 0x62, 0xd3, 0x0a, 0xad, 0x51, - 0xd8, 0xff, 0x5a, 0xc4, 0x0c, 0x51, 0x30, 0x48, 0x04, 0x51, 0x4d, 0x58, 0x4b, 0x75, 0x77, 0xc1, - 0x75, 0xd1, 0x6f, 0x75, 0xd0, 0x50, 0xcf, 0x48, 0xb6, 0xf7, 0xaa, 0x6c, 0x6f, 0x67, 0x25, 0x43, - 0x3c, 0x27, 0x59, 0x46, 0x79, 0x32, 0xe3, 0x5b, 0xda, 0xe3, 0x96, 0x52, 0x50, 0xff, 0x60, 0x15, - 0x36, 0x06, 0xbe, 0xe1, 0x06, 0x06, 0xbf, 0xdf, 0xe5, 0x86, 0xbe, 0xe7, 0xb0, 0x1f, 0x40, 0x29, - 0x1c, 0x39, 0xf2, 0x34, 0xdc, 0x8a, 0x36, 0xfd, 0x1c, 0xe9, 0xfd, 0xc1, 0x88, 0xbb, 0x38, 0x8b, - 0x21, 0xff, 0x60, 0xef, 0x42, 0x7e, 0x68, 0x1d, 0xd9, 0xae, 0x60, 0xc0, 0x97, 0xe7, 0x33, 0x6e, - 0x23, 0x72, 0x6f, 0x45, 0xe3, 0x54, 0xec, 0x7d, 0x28, 0x8c, 0xbc, 0x49, 0x24, 0xa9, 0x92, 0xab, - 0x28, 0x52, 0x45, 0x88, 0xdd, 0x5b, 0xd1, 0x04, 0x1d, 0xfb, 0x18, 0x4a, 0xbe, 0xe7, 0x38, 0x43, - 0x63, 0x74, 0x22, 0x64, 0x58, 0x7d, 0x3e, 0x8f, 0x26, 0xf0, 0x7b, 0x2b, 0x5a, 0x4c, 0xab, 0xde, - 0x87, 0xa2, 0x68, 0x2c, 0x0e, 0xc0, 0x76, 0xeb, 0x71, 0x5b, 0x0c, 0x64, 0xb3, 0xb7, 0xbf, 0xdf, - 0x1e, 0xf0, 0x3b, 0xaf, 0x5a, 0xaf, 0xd3, 0xd9, 0x6e, 0x34, 0x9f, 0x28, 0xab, 0xdb, 0x25, 0x28, - 0x70, 0xc7, 0x96, 0xfa, 0xdb, 0x19, 0x58, 0x9f, 0xeb, 0x00, 0x7b, 0x04, 0xb9, 0x09, 0x2a, 0x95, - 0x7c, 0x78, 0xee, 0x2c, 0xed, 0xa5, 0x94, 0xe6, 0xaa, 0x26, 0xe6, 0x50, 0x3f, 0x85, 0x5a, 0x1a, - 0x2e, 0xd9, 0xc7, 0x6b, 0x50, 0xd6, 0x5a, 0x8d, 0x1d, 0xbd, 0xd7, 0x45, 0xab, 0x14, 0xad, 0x54, - 0x4a, 0x3e, 0xd3, 0xda, 0x64, 0xd2, 0xfe, 0x06, 0x28, 0xf3, 0x03, 0xc3, 0x1e, 0xc3, 0x3a, 0xaa, - 0x1f, 0x8e, 0xc5, 0x05, 0x45, 0x32, 0x65, 0x37, 0x97, 0x8c, 0xa4, 0x20, 0xa3, 0x19, 0xab, 0x8d, - 0x52, 0x69, 0xf5, 0xff, 0x03, 0xb6, 0x38, 0x82, 0xbf, 0xba, 0xe2, 0xff, 0x47, 0x06, 0x72, 0x07, - 0x8e, 0xe1, 0xb2, 0xd7, 0x20, 0x4f, 0x6f, 0xb5, 0x08, 0xee, 0x59, 0x91, 0x36, 0x38, 0x2e, 0x0b, - 0xc2, 0xb1, 0xb7, 0x21, 0x1b, 0x8e, 0xa2, 0xfb, 0xbd, 0x57, 0x2f, 0x58, 0x7c, 0x7b, 0x2b, 0x1a, - 0x52, 0xb1, 0xbb, 0x90, 0x35, 0xcd, 0x28, 0xd0, 0x57, 0xd8, 0xe1, 0x68, 0xbc, 0xed, 0x58, 0x63, - 0xdb, 0xb5, 0xc5, 0xdb, 0x32, 0x48, 0xc2, 0x5e, 0x87, 0xac, 0x39, 0x72, 0xd2, 0x51, 0xdb, 0xdc, - 0xcc, 0x8b, 0x0b, 0x34, 0x47, 0x0e, 0x53, 0x61, 0x2d, 0xf4, 0xcf, 0x75, 0x7f, 0xe6, 0x52, 0x98, - 0x4c, 0x20, 0xcc, 0x9d, 0x0a, 0x2a, 0x33, 0x33, 0x8a, 0xb5, 0x09, 0xc4, 0x3d, 0xa1, 0xa9, 0x6f, - 0x4d, 0x0d, 0x3f, 0x36, 0x74, 0xec, 0xe0, 0x80, 0x03, 0xb6, 0x0b, 0x40, 0x4f, 0x3d, 0xaa, 0xef, - 0xd0, 0x43, 0x22, 0xa8, 0x61, 0xab, 0xd1, 0xd7, 0x92, 0x6b, 0x98, 0x02, 0xa3, 0xfe, 0x45, 0x16, - 0x2a, 0x52, 0x7b, 0xd8, 0x87, 0x50, 0x32, 0xd3, 0x1b, 0xf1, 0xda, 0x42, 0xa3, 0xef, 0xef, 0x44, - 0x5b, 0xd0, 0x14, 0xcb, 0xfb, 0x53, 0x58, 0x0b, 0xac, 0x50, 0x7f, 0x6e, 0xf8, 0x36, 0x7f, 0x64, - 0x69, 0x55, 0x76, 0x6a, 0xf7, 0xad, 0xf0, 0x69, 0x84, 0xd9, 0x5b, 0xd1, 0xaa, 0x81, 0x94, 0x26, - 0x33, 0x40, 0x74, 0x29, 0x9b, 0x7a, 0x88, 0x8a, 0x03, 0xf7, 0x56, 0xb4, 0x08, 0x8f, 0xa4, 0xd6, - 0x99, 0x35, 0x9a, 0x85, 0x91, 0x19, 0xb0, 0x16, 0x75, 0x88, 0x80, 0xf4, 0xe6, 0x1d, 0xff, 0x64, - 0x0f, 0x90, 0xd7, 0x19, 0x8e, 0xe3, 0x91, 0xce, 0x96, 0x97, 0x5d, 0xcc, 0x3b, 0x31, 0x9c, 0xbf, - 0xb1, 0x17, 0xa5, 0xd8, 0x1b, 0x90, 0xf7, 0xc2, 0x63, 0x2b, 0x52, 0x9e, 0xa3, 0x27, 0x49, 0x10, - 0xb4, 0xd3, 0xec, 0xe0, 0x4a, 0x21, 0xb4, 0xfa, 0xf3, 0x0c, 0x14, 0xc5, 0x08, 0xb0, 0x0d, 0x58, - 0xeb, 0xb7, 0x06, 0xfa, 0xd3, 0x86, 0xd6, 0x6e, 0x6c, 0x77, 0x5a, 0x22, 0xd8, 0xfc, 0xb1, 0xd6, - 0xe8, 0x0a, 0x3e, 0xa9, 0xb5, 0x9e, 0xf6, 0x9e, 0xb4, 0xb8, 0xd3, 0x69, 0xa7, 0xd5, 0xfd, 0x52, - 0xc9, 0x72, 0xbf, 0x6b, 0xeb, 0xa0, 0xa1, 0x21, 0x97, 0xac, 0x40, 0xb1, 0xf5, 0x45, 0xab, 0x79, - 0x48, 0x6c, 0xb2, 0x06, 0xb0, 0xd3, 0x6a, 0x74, 0x3a, 0xbd, 0x26, 0xb2, 0xcd, 0x02, 0x63, 0x50, - 0x6b, 0x6a, 0xad, 0xc6, 0xa0, 0xa5, 0x37, 0x9a, 0xcd, 0xde, 0x61, 0x77, 0xa0, 0x14, 0xb1, 0xc6, - 0x46, 0x67, 0xd0, 0xd2, 0x62, 0x10, 0x3d, 0x13, 0xb5, 0xa3, 0xf5, 0x0e, 0x62, 0x48, 0x79, 0xbb, - 0x8c, 0x26, 0x19, 0xcd, 0x95, 0xfa, 0x97, 0x35, 0xa8, 0xa5, 0x97, 0x26, 0xfb, 0x04, 0x4a, 0xa6, - 0x99, 0x9a, 0xe3, 0x1b, 0xcb, 0x96, 0xf0, 0xfd, 0x1d, 0x33, 0x9a, 0x66, 0xfe, 0xc1, 0x6e, 0x47, - 0x1b, 0x69, 0x75, 0x61, 0x23, 0x45, 0xdb, 0xe8, 0xc7, 0xb0, 0x2e, 0x9e, 0xf4, 0x30, 0x8d, 0xd0, - 0x18, 0x1a, 0x81, 0x95, 0xde, 0x25, 0x4d, 0x42, 0xee, 0x08, 0xdc, 0xde, 0x8a, 0x56, 0x1b, 0xa5, - 0x20, 0xec, 0x87, 0x50, 0x33, 0xc8, 0xce, 0x8d, 0xf3, 0xe7, 0x64, 0x25, 0xb0, 0x81, 0x38, 0x29, - 0xfb, 0x9a, 0x21, 0x03, 0x70, 0x21, 0x9a, 0xbe, 0x37, 0x4d, 0x32, 0xe7, 0x53, 0xa7, 0x2b, 0xbe, - 0x37, 0x95, 0xf2, 0x56, 0x4d, 0x29, 0xcd, 0x3e, 0x86, 0xaa, 0x68, 0x79, 0xe2, 0x49, 0x88, 0xb7, - 0x2c, 0x6f, 0x36, 0x29, 0x75, 0x7b, 0x2b, 0x5a, 0x65, 0x94, 0x24, 0xd9, 0x43, 0xd4, 0xe4, 0x12, - 0x5d, 0xbc, 0x28, 0xaf, 0x35, 0x6a, 0x6d, 0x94, 0x0b, 0x8c, 0x38, 0xc5, 0xde, 0x07, 0xa0, 0x76, - 0xf2, 0x3c, 0xa5, 0x54, 0x50, 0x84, 0xef, 0x4d, 0xa3, 0x2c, 0x65, 0x33, 0x4a, 0x48, 0xcd, 0xe3, - 0x37, 0x22, 0xcb, 0x8b, 0xcd, 0xa3, 0x7b, 0x7a, 0x49, 0xf3, 0xf8, 0x0d, 0xc8, 0xb8, 0x79, 0x3c, - 0x1b, 0x2c, 0x34, 0x2f, 0xca, 0xc5, 0x9b, 0xc7, 0x33, 0x45, 0xcd, 0xe3, 0x79, 0x2a, 0xf3, 0xcd, - 0x8b, 0xb2, 0x50, 0xf3, 0x78, 0x8e, 0x1f, 0x2e, 0xe8, 0xee, 0xd5, 0x0b, 0x75, 0x77, 0x9c, 0xb6, - 0xb4, 0xf6, 0xfe, 0x43, 0xa8, 0x05, 0xc7, 0xde, 0xa9, 0xc4, 0x40, 0xd6, 0xe4, 0xdc, 0xfd, 0x63, - 0xef, 0x54, 0xe6, 0x20, 0x6b, 0x81, 0x0c, 0xc0, 0xd6, 0xf2, 0x2e, 0xd2, 0x9d, 0xe7, 0x9a, 0xdc, - 0x5a, 0xea, 0xe1, 0x53, 0xdb, 0x3a, 0xc5, 0xd6, 0x1a, 0x51, 0x02, 0x07, 0x25, 0xf1, 0x7b, 0x04, - 0x22, 0x8a, 0x27, 0x75, 0xc0, 0x2f, 0x6a, 0x82, 0xd8, 0x03, 0x12, 0xe0, 0xda, 0x9a, 0xb9, 0x72, - 0x36, 0x45, 0x5e, 0x5b, 0x87, 0x6e, 0x2a, 0x63, 0x95, 0x93, 0x8a, 0xac, 0xc9, 0xae, 0x08, 0xac, - 0xaf, 0x67, 0x96, 0x3b, 0xb2, 0x44, 0xbc, 0x4f, 0x6a, 0x57, 0xf4, 0x05, 0x2e, 0xd9, 0x15, 0x11, - 0x24, 0x5e, 0xd7, 0x71, 0x76, 0x36, 0xbf, 0xae, 0xa5, 0xcc, 0xb4, 0xae, 0xe3, 0xac, 0xf1, 0x86, - 0x8a, 0xf3, 0x5e, 0x5a, 0xd8, 0x50, 0x52, 0x66, 0xbe, 0xa1, 0xe2, 0xdc, 0x0f, 0x41, 0xac, 0x26, - 0x3e, 0xb8, 0xa9, 0xa8, 0x20, 0xde, 0x6a, 0x31, 0xba, 0x30, 0x8a, 0x53, 0xb8, 0x56, 0x7d, 0x0b, - 0x6d, 0x05, 0xb1, 0x14, 0x2e, 0xcb, 0x6b, 0x55, 0x23, 0x4c, 0xbc, 0x95, 0xfc, 0x24, 0xa9, 0xfe, - 0x51, 0x1e, 0x8a, 0x82, 0xe9, 0xb0, 0x4b, 0xb0, 0x2e, 0x78, 0xdf, 0x4e, 0x63, 0xd0, 0xd8, 0x6e, - 0xf4, 0x51, 0x5b, 0x61, 0x50, 0xe3, 0xcc, 0x2f, 0x86, 0x65, 0x90, 0x21, 0x12, 0xf7, 0x8b, 0x41, - 0xab, 0xc8, 0x10, 0x45, 0x5e, 0xfe, 0xc6, 0x5e, 0x96, 0xad, 0x43, 0x85, 0x67, 0xe4, 0x00, 0xba, - 0x04, 0x46, 0xb9, 0x78, 0x3a, 0x2f, 0x65, 0xe1, 0x87, 0x11, 0x85, 0x24, 0x0b, 0x07, 0x14, 0xe3, - 0x2c, 0xd1, 0x69, 0x05, 0x83, 0xda, 0x40, 0x3b, 0xec, 0x36, 0x93, 0x7a, 0xca, 0x74, 0x71, 0x87, - 0x17, 0xf3, 0xb4, 0xdd, 0x7a, 0xa6, 0x00, 0x66, 0xe2, 0xa5, 0x50, 0xba, 0x82, 0xfa, 0x16, 0x15, - 0x42, 0xc9, 0x2a, 0xbb, 0x0a, 0x97, 0xfa, 0x7b, 0xbd, 0x67, 0x3a, 0xcf, 0x14, 0x77, 0x61, 0x8d, - 0x6d, 0x82, 0x22, 0x21, 0x78, 0xf1, 0x35, 0xac, 0x92, 0xa0, 0x11, 0x61, 0x5f, 0x59, 0xa7, 0xe3, - 0x3e, 0x84, 0x0d, 0xb8, 0x00, 0x52, 0xb0, 0x2b, 0x3c, 0x6b, 0xaf, 0x73, 0xb8, 0xdf, 0xed, 0x2b, - 0x1b, 0xd8, 0x08, 0x82, 0xf0, 0x96, 0xb3, 0xb8, 0x98, 0x44, 0x6c, 0x5d, 0x22, 0x49, 0x86, 0xb0, - 0x67, 0x0d, 0xad, 0xdb, 0xee, 0x3e, 0xee, 0x2b, 0x9b, 0x71, 0xc9, 0x2d, 0x4d, 0xeb, 0x69, 0x7d, - 0xe5, 0x72, 0x0c, 0xe8, 0x0f, 0x1a, 0x83, 0xc3, 0xbe, 0x72, 0x25, 0x6e, 0xe5, 0x81, 0xd6, 0x6b, - 0xb6, 0xfa, 0xfd, 0x4e, 0xbb, 0x3f, 0x50, 0xae, 0xb2, 0xcb, 0xb0, 0x91, 0xb4, 0x28, 0x22, 0xae, - 0x4b, 0x0d, 0xd5, 0x1e, 0xb7, 0x06, 0xca, 0xb5, 0xb8, 0x19, 0xcd, 0x5e, 0xa7, 0xd3, 0xa0, 0x83, - 0xa9, 0xeb, 0x48, 0x44, 0x27, 0x76, 0xa2, 0x37, 0xaf, 0x60, 0xbb, 0x0e, 0xbb, 0x32, 0xe8, 0x86, - 0xb4, 0x34, 0xfa, 0xad, 0x9f, 0x1c, 0xb6, 0xba, 0xcd, 0x96, 0xf2, 0x6a, 0xb2, 0x34, 0x62, 0xd8, - 0xcd, 0x78, 0x69, 0xc4, 0xa0, 0x5b, 0x71, 0x9d, 0x11, 0xa8, 0xaf, 0x6c, 0x61, 0x79, 0xa2, 0x1d, - 0xdd, 0x6e, 0xab, 0x39, 0xc0, 0xbe, 0xde, 0x8e, 0x47, 0xf1, 0xf0, 0xe0, 0xb1, 0xd6, 0xd8, 0x69, - 0x29, 0x2a, 0x42, 0xb4, 0x56, 0xb7, 0xb1, 0x1f, 0xcd, 0xf6, 0x6b, 0xdb, 0x55, 0x7a, 0xb7, 0x57, - 0x88, 0x4b, 0xf5, 0x73, 0x60, 0xf2, 0x03, 0x98, 0xe2, 0x8d, 0x2b, 0x06, 0xb9, 0xb1, 0xef, 0x4d, - 0xa2, 0x4b, 0xcf, 0xf8, 0x8d, 0xb6, 0xda, 0x74, 0x36, 0xa4, 0xd3, 0xa5, 0xe4, 0x56, 0xa4, 0x0c, - 0x52, 0xff, 0x28, 0x03, 0xb5, 0xb4, 0xa8, 0x44, 0x15, 0xd1, 0x1e, 0xeb, 0xae, 0x17, 0xf2, 0xc7, - 0x93, 0x82, 0xc8, 0x13, 0x65, 0x8f, 0xbb, 0x5e, 0x48, 0xaf, 0x27, 0x91, 0xe9, 0x18, 0x4b, 0x3e, - 0x5e, 0x6a, 0x9c, 0x66, 0x6d, 0xb8, 0x94, 0x7a, 0x1f, 0x34, 0xf5, 0x74, 0x55, 0x3d, 0x7e, 0xd5, - 0x70, 0xae, 0xfd, 0x1a, 0x0b, 0x16, 0xfb, 0xa4, 0x40, 0x36, 0xf8, 0xda, 0x11, 0x8e, 0x00, 0xfc, - 0x54, 0xf7, 0x60, 0x2d, 0x25, 0x99, 0xc9, 0xe2, 0x1f, 0xa7, 0x5b, 0x5a, 0xb2, 0xc7, 0x2f, 0x6e, - 0xa6, 0xfa, 0x87, 0x19, 0xa8, 0xca, 0x72, 0xfa, 0x7b, 0x97, 0x44, 0xb7, 0x1f, 0xc4, 0xb7, 0x6e, - 0x9b, 0xd1, 0xa3, 0x49, 0x11, 0xa8, 0x4d, 0xef, 0x95, 0x73, 0x1f, 0xec, 0xee, 0x49, 0x3f, 0xee, - 0x8e, 0x0c, 0x42, 0x93, 0x99, 0x6e, 0xc5, 0xed, 0x3e, 0x41, 0x02, 0x71, 0x7f, 0x22, 0x81, 0xa8, - 0xb7, 0xa0, 0xbc, 0x7b, 0x12, 0x05, 0x0c, 0xc8, 0x4f, 0x88, 0x95, 0xf9, 0x55, 0x5a, 0xf5, 0x4f, - 0x32, 0x50, 0x4b, 0x9e, 0x85, 0xa0, 0x30, 0x44, 0xfe, 0xae, 0x2c, 0x5f, 0x0e, 0xab, 0xe6, 0x30, - 0x79, 0xca, 0x7c, 0x55, 0x7e, 0xca, 0xfc, 0x35, 0x51, 0x58, 0x56, 0x96, 0x66, 0x71, 0x5d, 0xe2, - 0xa2, 0xee, 0x43, 0xa8, 0xe2, 0x7f, 0xcd, 0x1a, 0x5b, 0xbe, 0x6f, 0x45, 0x4f, 0xec, 0x2e, 0x10, - 0xa7, 0x88, 0xc8, 0x22, 0xb1, 0xc6, 0x42, 0x31, 0x5a, 0xfa, 0x72, 0x05, 0xe2, 0xd5, 0x7f, 0x9e, - 0x83, 0x8a, 0xa4, 0xf5, 0x7c, 0xa7, 0xe5, 0x77, 0x03, 0xca, 0xc9, 0x9b, 0x08, 0xe2, 0x76, 0x64, - 0x0c, 0x48, 0xcd, 0x55, 0x76, 0x6e, 0xae, 0xea, 0x50, 0x14, 0xf1, 0x8a, 0xc2, 0xef, 0x19, 0x25, - 0xd3, 0x8e, 0xbd, 0xfc, 0x0b, 0x5c, 0xef, 0x1f, 0x40, 0x55, 0xf2, 0xca, 0x45, 0x0f, 0xac, 0xcc, - 0xd3, 0x57, 0x12, 0x0f, 0x5d, 0xc0, 0x2e, 0x43, 0x61, 0x7c, 0xa2, 0x9b, 0xc3, 0xc8, 0xcd, 0x99, - 0x1f, 0x9f, 0xec, 0x0c, 0xe9, 0xe8, 0x62, 0x1c, 0x0b, 0x7a, 0xee, 0x2b, 0x29, 0x8d, 0x23, 0x71, - 0x7e, 0x17, 0x8a, 0xe3, 0x13, 0x7e, 0xf5, 0xaa, 0x2c, 0x87, 0xe0, 0x24, 0x43, 0x5e, 0x18, 0x9f, - 0xd0, 0x45, 0xad, 0x4f, 0x41, 0x99, 0xf3, 0xa9, 0x06, 0xe2, 0xac, 0x70, 0xbe, 0x51, 0xeb, 0x69, - 0xf7, 0x6a, 0xc0, 0xde, 0x83, 0x4d, 0x21, 0x79, 0x8d, 0x40, 0xe7, 0x11, 0xf4, 0xf4, 0xcc, 0x06, - 0x7f, 0x8b, 0x6c, 0x83, 0xe3, 0x1a, 0x41, 0x9f, 0x30, 0xb8, 0x58, 0x55, 0xa8, 0x4a, 0x6b, 0x97, - 0xbf, 0x61, 0x52, 0xd6, 0x52, 0x30, 0xf6, 0x08, 0xaa, 0xe3, 0x13, 0xbe, 0x16, 0x06, 0xde, 0xbe, - 0x25, 0xa2, 0xa2, 0x37, 0xe7, 0x57, 0x01, 0x05, 0xcf, 0xa6, 0x28, 0xd9, 0xbb, 0xc0, 0x7c, 0x2b, - 0xb4, 0x5c, 0xea, 0x89, 0x69, 0x19, 0xa6, 0x63, 0xbb, 0x16, 0x29, 0x5b, 0x59, 0x6d, 0x23, 0xc6, - 0xec, 0x08, 0x84, 0xfa, 0x2f, 0x32, 0x50, 0x4b, 0xb4, 0x5f, 0xdc, 0xd0, 0xec, 0x9e, 0xfc, 0xb8, - 0x74, 0x7d, 0x5e, 0x41, 0x46, 0x92, 0xfb, 0x83, 0xf3, 0x29, 0x7f, 0x80, 0x72, 0xd9, 0x43, 0x34, - 0xcb, 0x5c, 0xae, 0xd9, 0x65, 0x2e, 0x57, 0xf5, 0x31, 0x64, 0x07, 0xe7, 0x53, 0xee, 0x69, 0x41, - 0x19, 0xc8, 0xad, 0x32, 0x2e, 0xfd, 0x28, 0x62, 0xe0, 0x49, 0xeb, 0x4b, 0x7e, 0x33, 0xfc, 0x40, - 0x6b, 0xef, 0x37, 0xb4, 0x2f, 0x29, 0x16, 0x84, 0xb4, 0x84, 0xdd, 0x9e, 0xd6, 0x6a, 0x3f, 0xee, - 0x12, 0x20, 0x47, 0x7e, 0x98, 0xa4, 0x89, 0x0d, 0xd3, 0xdc, 0x3d, 0x91, 0xdf, 0xe3, 0xc8, 0xa4, - 0xde, 0xe3, 0x48, 0x5f, 0x26, 0x5d, 0x9d, 0xbf, 0x4c, 0xca, 0xe2, 0x1d, 0x1d, 0xb3, 0x07, 0xf6, - 0x26, 0xe4, 0xc6, 0x27, 0xd6, 0x79, 0xda, 0xc4, 0x49, 0x6f, 0x46, 0x22, 0x50, 0x7f, 0x91, 0x01, - 0x96, 0x6a, 0x08, 0xd7, 0xba, 0xbf, 0x6f, 0x5b, 0x3e, 0x81, 0xba, 0x78, 0xad, 0x91, 0x53, 0x49, - 0x3e, 0x5e, 0x31, 0xa4, 0x97, 0xbd, 0x24, 0xd6, 0x2e, 0x79, 0x2b, 0x87, 0xbd, 0x07, 0xfc, 0xb9, - 0x3c, 0x5c, 0x20, 0x69, 0xa7, 0x86, 0xc4, 0x2b, 0xb4, 0x84, 0x26, 0x79, 0x1f, 0x4f, 0x7e, 0xf7, - 0x8f, 0xbb, 0x87, 0xd7, 0x93, 0x59, 0x23, 0xfe, 0xa1, 0xfe, 0x6e, 0x06, 0x2e, 0xa5, 0x17, 0xc4, - 0x2f, 0xd7, 0xcb, 0xf4, 0x23, 0x87, 0xd9, 0xf9, 0x47, 0x0e, 0x97, 0xad, 0xa7, 0xdc, 0xd2, 0xf5, - 0xf4, 0x77, 0x32, 0xb0, 0x29, 0x8d, 0x7e, 0x62, 0x27, 0xfd, 0x0d, 0xb5, 0x4c, 0x7a, 0xeb, 0x30, - 0x97, 0x7a, 0xeb, 0x50, 0xfd, 0x83, 0x0c, 0x5c, 0x99, 0x6b, 0x89, 0x66, 0xfd, 0x8d, 0xb6, 0x25, - 0xfd, 0x26, 0x22, 0xb9, 0xa8, 0x79, 0xf0, 0x21, 0xbf, 0xf2, 0xc6, 0xd2, 0x8f, 0x1c, 0xd2, 0x9d, - 0xdf, 0x7f, 0x99, 0x6e, 0xa4, 0x99, 0xdc, 0xfb, 0x61, 0x1f, 0x41, 0x25, 0xd1, 0x98, 0xa2, 0x47, - 0x28, 0x96, 0x5e, 0x1a, 0x92, 0xe9, 0x96, 0xb2, 0xd1, 0xd5, 0xef, 0xc6, 0x46, 0x1f, 0x41, 0x35, - 0x2e, 0x78, 0xc7, 0x1a, 0xa7, 0xbd, 0x11, 0x73, 0x8f, 0x26, 0xa5, 0x28, 0xd5, 0x0f, 0x61, 0x23, - 0xe9, 0x45, 0x53, 0x3c, 0xf4, 0x75, 0x0b, 0x2a, 0xae, 0x75, 0xaa, 0x47, 0xcf, 0x80, 0x89, 0x28, - 0x1a, 0xd7, 0x3a, 0x15, 0x04, 0xea, 0xae, 0xcc, 0xf7, 0xe2, 0x37, 0xdb, 0x1d, 0x53, 0x9e, 0x99, - 0xa2, 0xe7, 0x98, 0x11, 0x0a, 0x4b, 0x93, 0x26, 0xa6, 0xe8, 0x5a, 0xa7, 0xb4, 0xe6, 0x4e, 0x45, - 0x39, 0x0d, 0xd3, 0x14, 0x07, 0xe6, 0xcb, 0x9e, 0xcf, 0xb9, 0x06, 0xa5, 0xa9, 0x9f, 0x9a, 0xd9, - 0xe2, 0xd4, 0xe7, 0xd5, 0xde, 0x11, 0x31, 0x3a, 0x17, 0x1d, 0xae, 0xf3, 0xa8, 0x1d, 0xf1, 0x9b, - 0x0e, 0xb9, 0xe4, 0x37, 0x1d, 0x3e, 0x12, 0x2c, 0x0f, 0xf7, 0x9f, 0xa8, 0x39, 0x3e, 0x44, 0xcf, - 0xdc, 0x5d, 0xa3, 0x43, 0x74, 0xd2, 0x00, 0xad, 0xaf, 0x45, 0x98, 0x10, 0x7e, 0xaa, 0xdb, 0x50, - 0x91, 0x2c, 0x3b, 0x54, 0x4d, 0x24, 0xaf, 0x48, 0x90, 0x7e, 0xa2, 0x24, 0x19, 0x20, 0xad, 0x92, - 0x38, 0x45, 0x02, 0xf5, 0xf7, 0x00, 0x20, 0xc1, 0xa5, 0x14, 0x86, 0xcc, 0x9c, 0xc2, 0xf0, 0x52, - 0x27, 0xf2, 0x1f, 0x42, 0x6d, 0xe4, 0x4d, 0xcf, 0xf5, 0x24, 0x47, 0x76, 0x69, 0x8e, 0x2a, 0x52, - 0x0d, 0x92, 0x1b, 0x37, 0x8b, 0x27, 0xad, 0xb9, 0xa5, 0x27, 0xad, 0x1f, 0x40, 0x91, 0x3b, 0xee, - 0x03, 0x71, 0x63, 0xeb, 0xea, 0x7c, 0x3f, 0xef, 0x8b, 0x68, 0xd4, 0x88, 0x8e, 0xb5, 0xd0, 0x2a, - 0x17, 0x6f, 0x02, 0xca, 0xf7, 0xb7, 0x6e, 0x2e, 0xe6, 0x8c, 0xc8, 0xf8, 0x43, 0x54, 0x86, 0x9c, - 0x94, 0x94, 0x84, 0x70, 0x22, 0xbc, 0x49, 0xa4, 0x24, 0x14, 0x65, 0x25, 0x61, 0x30, 0xe1, 0x3e, - 0x24, 0x54, 0x12, 0xde, 0x85, 0x4b, 0x22, 0x2a, 0x1e, 0x33, 0xe0, 0x70, 0x12, 0x3d, 0x0f, 0x80, - 0x12, 0xef, 0x46, 0x0c, 0x26, 0xa4, 0x7d, 0x23, 0xf9, 0x17, 0xb0, 0x39, 0x3a, 0x36, 0xdc, 0x23, - 0x4b, 0x0f, 0x87, 0x8e, 0x4e, 0x4f, 0x52, 0xeb, 0x13, 0x63, 0x2a, 0xd4, 0x9e, 0x37, 0x17, 0x1a, - 0xdb, 0x24, 0xe2, 0xc1, 0xd0, 0xa1, 0x08, 0x9d, 0xf8, 0x3c, 0x7e, 0x63, 0x34, 0x0f, 0x9f, 0x3b, - 0x8d, 0x82, 0xf9, 0xd3, 0xa8, 0x05, 0x6d, 0xa6, 0xb2, 0xa8, 0xcd, 0x5c, 0xff, 0xf7, 0x39, 0x28, - 0x88, 0xe8, 0xbc, 0x7b, 0x90, 0x33, 0x7d, 0x6f, 0x1a, 0x07, 0xd1, 0x2d, 0xd1, 0x2e, 0xe8, 0xf7, - 0x6b, 0x50, 0x11, 0xb9, 0x0f, 0x05, 0xc3, 0x34, 0xf5, 0xf1, 0x49, 0xfa, 0xc4, 0x68, 0x4e, 0xd0, - 0xef, 0xad, 0x68, 0x79, 0x83, 0x24, 0xfe, 0x27, 0x50, 0x46, 0x7a, 0xee, 0x0c, 0x4b, 0xd9, 0x4b, - 0x8b, 0x22, 0x79, 0x6f, 0x45, 0x2b, 0x19, 0x91, 0x78, 0xfe, 0x51, 0xda, 0xf7, 0xc6, 0xe5, 0xe5, - 0xf5, 0x85, 0xac, 0x17, 0x79, 0xe1, 0x7e, 0x1d, 0xb8, 0x33, 0x26, 0xe6, 0x36, 0x79, 0xf9, 0x70, - 0x62, 0x81, 0x37, 0xed, 0xad, 0x68, 0x7c, 0xcf, 0x45, 0xbc, 0xea, 0xa3, 0xc8, 0x2f, 0x16, 0xff, - 0xd2, 0xc4, 0x92, 0x91, 0x41, 0x5e, 0x11, 0x3b, 0xc7, 0x88, 0x71, 0x60, 0x36, 0xd3, 0x8c, 0xc2, - 0x76, 0x8a, 0x0b, 0xd9, 0x62, 0x8e, 0x44, 0xd9, 0x62, 0xf6, 0xf4, 0x08, 0x2a, 0xe4, 0xa2, 0x12, - 0xf9, 0x4a, 0x0b, 0x43, 0x9b, 0x30, 0x14, 0x72, 0xbc, 0x27, 0xec, 0xa5, 0x19, 0xf5, 0xd3, 0xb7, - 0x64, 0xdf, 0xe6, 0x8d, 0xa5, 0x03, 0xa5, 0xc5, 0x6e, 0x4e, 0xde, 0x59, 0x8d, 0xe7, 0x61, 0xdb, - 0x50, 0x35, 0x24, 0x49, 0x23, 0x1c, 0x9d, 0x37, 0x96, 0xcc, 0x53, 0x4c, 0x43, 0x65, 0x48, 0xe9, - 0xe4, 0x00, 0xee, 0xba, 0x06, 0x57, 0x96, 0x2f, 0x65, 0x39, 0x92, 0x24, 0xc7, 0x23, 0x49, 0xd4, - 0xf4, 0xdb, 0x1d, 0xe9, 0x6b, 0xa7, 0x52, 0x5c, 0xc9, 0x67, 0x68, 0x23, 0xcb, 0x9b, 0xb7, 0x02, - 0xc5, 0xe8, 0x7d, 0x5b, 0x0a, 0x54, 0x6d, 0xf6, 0x0e, 0xbe, 0x54, 0x32, 0x08, 0x6e, 0x77, 0xfb, - 0x83, 0x46, 0x57, 0x1c, 0xaf, 0xb6, 0xbb, 0xe2, 0x78, 0x55, 0xfd, 0xd7, 0x59, 0x28, 0xc7, 0xee, - 0xe1, 0xef, 0x6f, 0x18, 0xc7, 0x16, 0x67, 0x56, 0xb6, 0x38, 0xe7, 0x34, 0x35, 0xf9, 0x41, 0x8c, - 0xf5, 0xb4, 0x3e, 0x14, 0x2c, 0xde, 0x88, 0xcb, 0x7f, 0xc7, 0x1b, 0x71, 0x72, 0x64, 0x62, 0x21, - 0x1d, 0x99, 0x38, 0xf7, 0xc6, 0x71, 0x91, 0xc2, 0x54, 0xe4, 0x37, 0x8e, 0x2f, 0x8c, 0x4f, 0x29, - 0x5d, 0x1c, 0x9f, 0x42, 0x3f, 0xd2, 0xf5, 0xd4, 0xb6, 0x4e, 0x45, 0x80, 0x9e, 0x48, 0xa5, 0xc5, - 0x07, 0xbc, 0x40, 0x7c, 0x7c, 0x07, 0x56, 0xc4, 0x1e, 0xc0, 0xe6, 0xf8, 0x24, 0x7e, 0xcf, 0x31, - 0x31, 0xb0, 0xaa, 0xd4, 0x8d, 0xa5, 0x38, 0xf5, 0xef, 0x67, 0x00, 0x12, 0x1f, 0xea, 0x2f, 0xed, - 0xe0, 0x91, 0x6c, 0xe8, 0xec, 0xb7, 0xd8, 0xd0, 0x2f, 0x78, 0x34, 0x42, 0xfd, 0x1a, 0xca, 0xb1, - 0xd7, 0xfc, 0xfb, 0xaf, 0xb1, 0x97, 0xaa, 0xf2, 0x37, 0x23, 0x67, 0x57, 0xec, 0x76, 0xfe, 0x65, - 0xc7, 0x22, 0x55, 0x7d, 0xf6, 0x05, 0xd5, 0x9f, 0x71, 0x8f, 0x53, 0x5c, 0xf9, 0xaf, 0x78, 0x63, - 0xc9, 0x6b, 0x3e, 0x97, 0x5a, 0xf3, 0xea, 0x4c, 0xb8, 0xcd, 0x7e, 0xf9, 0xaa, 0x5f, 0xaa, 0xc3, - 0x7f, 0x95, 0x89, 0x7c, 0x3b, 0xf1, 0x2b, 0x99, 0x17, 0x2a, 0x5a, 0xcb, 0xdd, 0x53, 0x2f, 0x53, - 0xdd, 0xb7, 0x5a, 0x9b, 0xb9, 0x6f, 0xb3, 0x36, 0xdf, 0x84, 0x3c, 0x17, 0x08, 0xf9, 0x8b, 0x2c, - 0x4d, 0x8e, 0x7f, 0xe1, 0xbb, 0xf2, 0xaa, 0x2a, 0x14, 0x4b, 0xde, 0xdf, 0xcd, 0xa8, 0xdc, 0xe8, - 0x4d, 0x7c, 0x4c, 0xa0, 0xb1, 0x5f, 0x4e, 0x8c, 0xce, 0x97, 0x1f, 0x93, 0x5f, 0x99, 0xb9, 0xf9, - 0x4f, 0x57, 0x61, 0x2d, 0x75, 0x60, 0xf6, 0x3d, 0x1a, 0xb3, 0x94, 0x9b, 0x67, 0x97, 0x73, 0xf3, - 0xef, 0xf3, 0x1c, 0xd2, 0xff, 0x11, 0x09, 0x90, 0x8a, 0x31, 0x2b, 0xa5, 0x63, 0xcc, 0x90, 0x9b, - 0x56, 0x53, 0x5a, 0xf9, 0x32, 0xfd, 0x3d, 0xb3, 0x54, 0x7f, 0xbf, 0x19, 0xff, 0x24, 0x55, 0x7b, - 0x87, 0x1b, 0x96, 0x6b, 0x9a, 0x04, 0x61, 0x9f, 0xc2, 0x35, 0xae, 0xd5, 0x70, 0x45, 0x4e, 0xf7, - 0xc6, 0x7a, 0xfc, 0x83, 0x55, 0x22, 0x6e, 0xee, 0x0a, 0x27, 0xe0, 0x3f, 0x3a, 0x30, 0x6e, 0x44, - 0x58, 0xb5, 0x0d, 0x6b, 0xa9, 0xd3, 0x4b, 0xe9, 0xc7, 0xef, 0x32, 0xf2, 0x8f, 0xdf, 0xb1, 0x2d, - 0xc8, 0x9f, 0x1e, 0x5b, 0xbe, 0xb5, 0xe4, 0xd9, 0x40, 0x8e, 0x50, 0x7f, 0x08, 0x55, 0x39, 0x92, - 0x82, 0xbd, 0x03, 0x79, 0x3b, 0xb4, 0x26, 0x91, 0x6d, 0x75, 0x65, 0x31, 0xd8, 0x82, 0x0c, 0x69, - 0x4e, 0xa4, 0xfe, 0x3c, 0x03, 0xca, 0x3c, 0x4e, 0xfa, 0x85, 0xbe, 0xcc, 0x05, 0xbf, 0xd0, 0xb7, - 0x9a, 0x6a, 0xe4, 0xb2, 0x1f, 0xd9, 0x8b, 0x9f, 0x2e, 0xcb, 0x5d, 0xf0, 0x74, 0x19, 0x7b, 0x03, - 0x4a, 0xbe, 0x45, 0x3f, 0x7f, 0x66, 0x2e, 0x89, 0x65, 0x8e, 0x71, 0xea, 0xef, 0x64, 0xa0, 0x28, - 0xc2, 0x3e, 0x96, 0x1a, 0xbb, 0x6f, 0x41, 0x91, 0xff, 0x14, 0x5a, 0x64, 0xfc, 0x2f, 0xc4, 0x41, - 0x46, 0x78, 0x76, 0x93, 0x07, 0xc3, 0xa4, 0x8d, 0xdf, 0x03, 0xc7, 0x70, 0x35, 0x82, 0x8b, 0xdf, - 0x12, 0x31, 0x26, 0xe2, 0x62, 0x1f, 0x7f, 0x87, 0x03, 0x08, 0xc4, 0xef, 0xf0, 0xfd, 0x08, 0x8a, - 0x22, 0xac, 0x64, 0x69, 0x53, 0x5e, 0xf4, 0x23, 0x60, 0x5b, 0x00, 0x49, 0x9c, 0xc9, 0xb2, 0x12, - 0xd4, 0x7b, 0x50, 0x8a, 0x42, 0x4b, 0x70, 0xfd, 0x25, 0x55, 0x8b, 0x58, 0x75, 0xb9, 0x31, 0x8e, - 0x78, 0x49, 0xb7, 0xe3, 0x8d, 0x4e, 0xc8, 0xab, 0xf6, 0x1e, 0x50, 0x0c, 0xff, 0x60, 0xe1, 0xc1, - 0x92, 0xf4, 0xab, 0xc5, 0x31, 0x11, 0xbb, 0x07, 0x31, 0x3b, 0x7e, 0x91, 0xb5, 0xac, 0x36, 0xa2, - 0xbb, 0x24, 0xb4, 0xca, 0x1e, 0x0a, 0xef, 0x51, 0x87, 0x1e, 0xc9, 0x49, 0x39, 0x6c, 0x52, 0x6d, - 0xd2, 0x24, 0x32, 0xb5, 0x06, 0x55, 0xf9, 0x3c, 0x5c, 0x6d, 0xc0, 0xc6, 0xbe, 0x15, 0x1a, 0xc8, - 0xb3, 0xfa, 0x23, 0xc3, 0x45, 0x7a, 0xbe, 0x7e, 0xf1, 0x23, 0xbd, 0x7e, 0xe7, 0xe9, 0x34, 0x4e, - 0xa4, 0xfe, 0x3c, 0x07, 0xca, 0x3c, 0x0e, 0x99, 0x49, 0x7c, 0x87, 0x33, 0x13, 0xbd, 0xc8, 0xee, - 0xc4, 0x3f, 0xa8, 0x43, 0xeb, 0x22, 0xf5, 0x6b, 0x31, 0x1c, 0x24, 0x05, 0xac, 0xa6, 0x9e, 0x36, - 0x2f, 0xd9, 0xc1, 0x1e, 0x7f, 0xdc, 0xfc, 0x2a, 0x7f, 0x6d, 0xc3, 0xf1, 0x46, 0xb4, 0xac, 0xab, - 0xf4, 0xb8, 0x46, 0xc7, 0x1b, 0x61, 0xae, 0xc8, 0xe0, 0xe6, 0x41, 0x5a, 0x55, 0xad, 0x24, 0xac, - 0x6c, 0x3a, 0x34, 0x10, 0x61, 0xac, 0x61, 0x20, 0xae, 0x24, 0x95, 0x38, 0x60, 0x10, 0x44, 0x0f, - 0xbe, 0x8e, 0xc4, 0x4f, 0x9b, 0x64, 0xe9, 0xc1, 0xd7, 0xa6, 0x4b, 0xb7, 0x75, 0xe8, 0x97, 0x78, - 0x46, 0xe2, 0x97, 0x92, 0xc4, 0x73, 0xba, 0x88, 0x7a, 0x8d, 0xff, 0xf8, 0x8b, 0x6f, 0x05, 0x01, - 0x7f, 0x21, 0x8a, 0xbf, 0xdd, 0x54, 0x8d, 0x80, 0xf1, 0x53, 0x54, 0xe2, 0xa7, 0x77, 0x90, 0x04, - 0xc4, 0x53, 0x54, 0xfc, 0x87, 0x77, 0x90, 0xe0, 0x1a, 0x94, 0xbe, 0xf1, 0x5c, 0x8b, 0x0c, 0xf7, - 0x0a, 0xb5, 0xaa, 0x88, 0xe9, 0x7d, 0x63, 0xaa, 0xfe, 0x79, 0x06, 0x36, 0xe7, 0x47, 0x95, 0x16, - 0x4c, 0x15, 0x4a, 0xcd, 0x5e, 0x47, 0xef, 0x36, 0xf6, 0x5b, 0xca, 0x0a, 0x5b, 0x87, 0x4a, 0x6f, - 0xfb, 0xf3, 0x56, 0x73, 0xc0, 0x01, 0x19, 0xba, 0xb9, 0xd9, 0xd7, 0xf7, 0xda, 0x3b, 0x3b, 0xad, - 0x2e, 0xb7, 0x52, 0x7a, 0xdb, 0x9f, 0xeb, 0x9d, 0x5e, 0x93, 0xff, 0x52, 0x47, 0x74, 0xfa, 0xde, - 0x57, 0x72, 0x74, 0xe2, 0x4d, 0x31, 0xa1, 0x98, 0xcc, 0xf3, 0x90, 0xc7, 0x67, 0x7d, 0xbd, 0xd9, - 0x1d, 0x28, 0x05, 0x4c, 0x75, 0x0f, 0x3b, 0x1d, 0x4a, 0x51, 0x6c, 0x53, 0xb3, 0xb7, 0x7f, 0xa0, - 0xb5, 0xfa, 0x7d, 0xbd, 0xdf, 0xfe, 0x69, 0x4b, 0x29, 0x51, 0xcd, 0x5a, 0xfb, 0x71, 0xbb, 0xcb, - 0x01, 0x65, 0x56, 0x84, 0xec, 0x7e, 0xbb, 0xcb, 0x6f, 0xac, 0xee, 0x37, 0xbe, 0x50, 0x2a, 0xf8, - 0xd1, 0x3f, 0xdc, 0x57, 0xaa, 0xf7, 0x6e, 0x43, 0x55, 0xfe, 0xb9, 0x2b, 0x8a, 0x72, 0xf4, 0x5c, - 0x8b, 0x3f, 0x0b, 0xdb, 0xf9, 0xe6, 0x43, 0x25, 0x73, 0xef, 0x37, 0xa5, 0x9f, 0x11, 0x20, 0x1a, - 0x71, 0x18, 0x40, 0xf7, 0xf3, 0xf8, 0xfd, 0x3f, 0x72, 0xfd, 0xd3, 0x75, 0xc1, 0xbd, 0x46, 0x7f, - 0x8f, 0x1f, 0x13, 0x08, 0x0c, 0x01, 0xb2, 0xc9, 0x73, 0xa2, 0x74, 0xfd, 0x96, 0x3e, 0xe3, 0xc3, - 0xf6, 0x3c, 0xdd, 0x8c, 0x6c, 0xf7, 0xb1, 0x73, 0x0a, 0x54, 0xf1, 0x2b, 0xc6, 0x15, 0xef, 0xa9, - 0x50, 0x91, 0xde, 0x7b, 0xa6, 0x3a, 0x8c, 0xe0, 0x58, 0xbc, 0x50, 0x8a, 0xe6, 0xa6, 0x92, 0xb9, - 0xf7, 0x06, 0x4a, 0x0c, 0xf9, 0xb5, 0x65, 0x80, 0x42, 0xd7, 0xf3, 0x27, 0x86, 0x23, 0xe8, 0xac, - 0x59, 0x80, 0x74, 0xef, 0xc1, 0xe5, 0xa5, 0x6f, 0x47, 0x53, 0xa4, 0xae, 0x3d, 0x99, 0x3a, 0x16, - 0x0f, 0x36, 0xdd, 0x3b, 0x1f, 0xfa, 0xb6, 0xa9, 0x64, 0xee, 0x3d, 0x8a, 0xae, 0xf0, 0x45, 0x75, - 0x77, 0x7a, 0x8d, 0x1d, 0x3e, 0xb9, 0xf1, 0xf5, 0xe0, 0xc1, 0x36, 0x7f, 0x7d, 0x54, 0x6b, 0xf5, - 0x0f, 0x3b, 0x03, 0x71, 0x15, 0xf9, 0xde, 0x67, 0x50, 0xbf, 0x28, 0xea, 0x12, 0x5b, 0xd4, 0xdc, - 0x6b, 0x50, 0x64, 0x2b, 0x4e, 0x66, 0x4f, 0xe7, 0xa9, 0x0c, 0x0f, 0x0c, 0xee, 0xb4, 0x28, 0x22, - 0xe3, 0xde, 0xcf, 0x32, 0x12, 0x0b, 0x8b, 0x22, 0xe7, 0x62, 0x80, 0x98, 0x25, 0x19, 0xa4, 0x59, - 0x86, 0xa9, 0x64, 0xd8, 0x15, 0x60, 0x29, 0x50, 0xc7, 0x1b, 0x19, 0x8e, 0xb2, 0x4a, 0xb1, 0x17, - 0x11, 0x9c, 0xe2, 0x9b, 0x95, 0x2c, 0x7b, 0x15, 0xae, 0xc5, 0xb0, 0x8e, 0x77, 0x7a, 0xe0, 0xdb, - 0x68, 0x6b, 0x9f, 0x73, 0x74, 0x6e, 0xfb, 0xc7, 0x7f, 0xf6, 0x8b, 0x9b, 0x99, 0x7f, 0xfb, 0x8b, - 0x9b, 0x99, 0xff, 0xf2, 0x8b, 0x9b, 0x2b, 0x3f, 0xff, 0xaf, 0x37, 0x33, 0x3f, 0x95, 0x7f, 0x14, - 0x7b, 0x62, 0x84, 0xbe, 0x7d, 0xc6, 0x37, 0x4d, 0x94, 0x70, 0xad, 0xf7, 0xa6, 0x27, 0x47, 0xef, - 0x4d, 0x87, 0xef, 0x21, 0x67, 0x1a, 0x16, 0xe8, 0xe7, 0xaf, 0x1f, 0xfe, 0xef, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x37, 0x67, 0x1c, 0x49, 0x5e, 0x7b, 0x00, 0x00, + 0x99, 0x83, 0x13, 0x3b, 0x32, 0x46, 0xc7, 0x96, 0xee, 0x63, 0x53, 0xae, 0xf2, 0xa9, 0x23, 0x88, + 0x86, 0xad, 0x79, 0x05, 0x78, 0x42, 0x3f, 0xb6, 0x43, 0x72, 0xcf, 0x65, 0xb5, 0x12, 0x01, 0xf6, + 0xec, 0x10, 0xf9, 0x13, 0x47, 0x8a, 0x15, 0x48, 0x45, 0x5c, 0x23, 0xa2, 0x75, 0x42, 0xec, 0x13, + 0x9c, 0x0a, 0xba, 0x0b, 0x4a, 0x8a, 0x16, 0xcb, 0xbb, 0x4e, 0xa4, 0x35, 0x89, 0x14, 0x4b, 0x7d, + 0x03, 0x78, 0x66, 0x1d, 0x97, 0x1e, 0x2f, 0xf3, 0x15, 0xee, 0x7d, 0x20, 0xf0, 0x8e, 0x1d, 0x9c, + 0x50, 0x89, 0x77, 0xa0, 0x26, 0xd1, 0x61, 0x79, 0x37, 0xf8, 0xca, 0x88, 0xc9, 0x52, 0x6d, 0xf4, + 0xad, 0x89, 0x17, 0x8a, 0x6e, 0xbe, 0x2a, 0xb5, 0x51, 0x23, 0x78, 0xba, 0x8d, 0x82, 0x16, 0xcb, + 0xbc, 0x29, 0xb5, 0x91, 0x93, 0x62, 0xa9, 0xb7, 0xa1, 0x8a, 0x5c, 0x24, 0xb4, 0x5c, 0xbe, 0xf9, + 0x6f, 0xf1, 0x81, 0x15, 0x30, 0xda, 0xfd, 0xb7, 0xa1, 0xca, 0x47, 0x5e, 0xf0, 0xed, 0x2d, 0x4e, + 0x22, 0x60, 0x48, 0xa2, 0xfa, 0xd2, 0xd1, 0xd9, 0x81, 0x3f, 0x73, 0x2d, 0xee, 0x6c, 0xa4, 0x4f, + 0x53, 0x04, 0x31, 0xc4, 0x69, 0xb6, 0x03, 0x97, 0xb8, 0x8f, 0xc1, 0x92, 0x74, 0x88, 0x28, 0x88, + 0x70, 0xe9, 0x91, 0x12, 0x8b, 0xe8, 0x63, 0x70, 0xa0, 0xfe, 0x2c, 0x03, 0xd7, 0x7b, 0x14, 0x51, + 0x41, 0x0c, 0x76, 0xdf, 0x0a, 0x02, 0xe3, 0xc8, 0xda, 0xf5, 0xfc, 0xdd, 0xd9, 0x37, 0xdf, 0x9c, + 0xb3, 0xbb, 0xb0, 0x7e, 0x60, 0xf8, 0x96, 0x1b, 0xc6, 0xec, 0x57, 0xe8, 0x98, 0xf3, 0x60, 0xf6, + 0x88, 0x8e, 0x6d, 0x2c, 0x37, 0x3c, 0x8c, 0xb5, 0x75, 0xd1, 0x96, 0xb4, 0x23, 0x7f, 0x81, 0x4a, + 0xfd, 0x5f, 0x5b, 0x90, 0xeb, 0x7a, 0xa6, 0xc5, 0xde, 0x87, 0x32, 0x45, 0x00, 0x2f, 0x9e, 0x16, + 0x22, 0x9a, 0xfe, 0x90, 0xe1, 0x54, 0x72, 0xc5, 0xd7, 0xc5, 0x31, 0xc3, 0xb7, 0xc9, 0x04, 0xa4, + 0x70, 0x03, 0x14, 0x68, 0x15, 0xe1, 0x82, 0x22, 0x1f, 0x0a, 0xc7, 0xe0, 0xd8, 0x92, 0x0b, 0xdd, + 0xb7, 0x5c, 0xd2, 0xd2, 0xf2, 0x5a, 0x9c, 0x26, 0xc3, 0xdb, 0xf7, 0x50, 0xf8, 0xf2, 0xbd, 0x9a, + 0x5f, 0x62, 0x78, 0x73, 0x3c, 0x6d, 0xde, 0xf7, 0xa1, 0xfc, 0x95, 0x67, 0xbb, 0xbc, 0xe1, 0x85, + 0x85, 0x86, 0xa3, 0x6e, 0xcd, 0x1b, 0xfe, 0x95, 0xf8, 0x62, 0xaf, 0x41, 0xd1, 0x73, 0x79, 0xd9, + 0xc5, 0x85, 0xb2, 0x0b, 0x9e, 0xdb, 0xe1, 0xe1, 0x78, 0x6b, 0xc3, 0x99, 0xed, 0x98, 0x28, 0xbb, + 0x1c, 0x6b, 0x1c, 0x8a, 0x53, 0xbd, 0x0a, 0x01, 0x7b, 0x6e, 0xc7, 0x1a, 0x87, 0xec, 0x6d, 0xa8, + 0x8c, 0x6d, 0x07, 0x65, 0x3c, 0x15, 0x56, 0x5e, 0x28, 0x0c, 0x38, 0x9a, 0x0a, 0x7c, 0x1d, 0x4a, + 0x47, 0xbe, 0x37, 0x9b, 0xea, 0xc3, 0x73, 0x3a, 0xcd, 0x9b, 0x3b, 0x47, 0x23, 0xdc, 0xf6, 0x39, + 0x0a, 0x1a, 0xfa, 0xb4, 0xdd, 0x23, 0x9d, 0x7c, 0x29, 0x95, 0xad, 0xec, 0xdd, 0x92, 0x56, 0x8d, + 0x80, 0xe4, 0x25, 0x79, 0x1d, 0x4a, 0xc6, 0xd1, 0x91, 0x2e, 0xa2, 0x0a, 0x17, 0xca, 0x32, 0x8e, + 0x8e, 0xa8, 0xca, 0xfb, 0xb0, 0x76, 0x6a, 0xbb, 0x7a, 0x30, 0xb5, 0x46, 0x9c, 0x76, 0x6d, 0x71, + 0x28, 0x4f, 0x6d, 0xb7, 0x3f, 0xb5, 0x46, 0x44, 0x2f, 0xfb, 0x30, 0x6a, 0x2f, 0xf4, 0x61, 0x6c, + 0x41, 0xde, 0xb1, 0x27, 0x76, 0x28, 0xe2, 0x0c, 0x53, 0x46, 0x0e, 0x21, 0x98, 0x0a, 0x05, 0xe1, + 0x2a, 0x57, 0x16, 0x48, 0x04, 0x26, 0xad, 0x01, 0x6d, 0xbc, 0x40, 0x03, 0x92, 0x0c, 0x0e, 0xf6, + 0xed, 0x06, 0xc7, 0x47, 0x74, 0x9e, 0x68, 0xb9, 0xa1, 0x1e, 0x65, 0xb8, 0xb4, 0x3c, 0x43, 0x95, + 0x93, 0xf5, 0x78, 0xb6, 0x0f, 0xa0, 0xe2, 0x93, 0x73, 0x4d, 0x27, 0x4f, 0xdc, 0xa6, 0xec, 0x9d, + 0x48, 0xbc, 0x6e, 0x1a, 0xf8, 0x89, 0x07, 0xee, 0x35, 0x58, 0xe3, 0xe1, 0x4e, 0x3c, 0x28, 0x25, + 0x20, 0xc6, 0x5e, 0xd6, 0xaa, 0x04, 0xe4, 0x01, 0x2b, 0x01, 0xbb, 0x0f, 0x10, 0xa9, 0x6e, 0xe1, + 0x19, 0x71, 0xf6, 0xb8, 0x29, 0x9c, 0xfd, 0x37, 0xc3, 0x33, 0xad, 0x6c, 0x46, 0x9f, 0xc8, 0xb0, + 0x86, 0xb6, 0x6b, 0xe2, 0x22, 0x08, 0x8d, 0xa3, 0xa0, 0x5e, 0xa7, 0x3d, 0x52, 0x11, 0xb0, 0x81, + 0x71, 0x14, 0xa0, 0xb1, 0x68, 0x70, 0x05, 0x89, 0xc7, 0x7d, 0x5f, 0x93, 0x3d, 0x49, 0x92, 0xea, + 0xa4, 0x55, 0x0c, 0x49, 0x8f, 0xfa, 0x04, 0x58, 0x74, 0x0e, 0x27, 0xd9, 0x7e, 0xd7, 0x17, 0xd6, + 0xc5, 0xba, 0x38, 0x88, 0x8b, 0xef, 0x2a, 0x7c, 0x02, 0x6b, 0x69, 0x85, 0xf6, 0xc6, 0x92, 0x93, + 0x27, 0x9a, 0x32, 0xad, 0x3a, 0x92, 0x55, 0xdc, 0xd7, 0x60, 0xcd, 0xf5, 0x42, 0x9d, 0x98, 0x36, + 0x65, 0xe4, 0xa7, 0x2b, 0x55, 0xd7, 0x0b, 0x9b, 0x11, 0x0c, 0xc7, 0x27, 0x32, 0x9b, 0xc2, 0x33, + 0xe2, 0xf3, 0xf1, 0xf8, 0xc4, 0x36, 0x0e, 0xea, 0x6b, 0x91, 0xb9, 0x83, 0xf3, 0xc4, 0xd5, 0x77, + 0xca, 0x70, 0x2b, 0x35, 0x4f, 0xb1, 0x5e, 0xaf, 0x81, 0x9f, 0xe8, 0xf8, 0xb7, 0xa0, 0x12, 0x78, + 0x33, 0x7f, 0x64, 0xe9, 0x41, 0x68, 0x4d, 0xeb, 0x5b, 0x34, 0xa2, 0xc0, 0x41, 0xfd, 0xd0, 0x9a, + 0xb2, 0x47, 0x50, 0x9b, 0xfa, 0x96, 0x2e, 0xcd, 0xd3, 0x6d, 0xb9, 0x8b, 0x07, 0xbe, 0x95, 0x4c, + 0x55, 0x75, 0x2a, 0xa5, 0xa2, 0x9c, 0x52, 0x0f, 0xd4, 0xb9, 0x9c, 0x49, 0x27, 0x30, 0x67, 0x62, + 0xb6, 0xfd, 0x18, 0x36, 0xa4, 0x9c, 0xb3, 0x13, 0xca, 0xfc, 0x5a, 0xea, 0x20, 0x30, 0x22, 0x3f, + 0x3c, 0xc1, 0xec, 0xb5, 0x69, 0x2a, 0xcd, 0x1a, 0x73, 0x3e, 0x19, 0x54, 0xae, 0xef, 0x50, 0xfe, + 0xab, 0x17, 0x38, 0x5a, 0x52, 0xce, 0x9a, 0x27, 0xfc, 0xc8, 0xa7, 0x1d, 0xb4, 0x5c, 0xb3, 0xfe, + 0x3a, 0xbf, 0x50, 0x44, 0x09, 0xf6, 0x10, 0xaa, 0x5c, 0xcd, 0xa3, 0x60, 0xe6, 0xa0, 0xfe, 0x86, + 0xec, 0x94, 0x26, 0x5d, 0x8f, 0x10, 0x5a, 0xc5, 0x89, 0xbf, 0x03, 0xf6, 0x31, 0x6c, 0xf0, 0xd3, + 0x00, 0x99, 0x2d, 0xbe, 0xb9, 0xb8, 0xb8, 0x88, 0x68, 0x37, 0xe1, 0x8d, 0x1a, 0x5c, 0xf3, 0x67, + 0x2e, 0xa9, 0x7e, 0x22, 0xe7, 0xd4, 0xf7, 0x86, 0x16, 0xcf, 0x7f, 0x97, 0xf2, 0x8b, 0xee, 0x68, + 0x9c, 0x8c, 0xe7, 0x25, 0x7e, 0x74, 0xc5, 0x97, 0x41, 0x07, 0x98, 0xef, 0x82, 0x32, 0x39, 0x3f, + 0xa7, 0x32, 0xdf, 0x7a, 0x99, 0x32, 0xb7, 0x31, 0x1f, 0x95, 0xc9, 0x20, 0x37, 0x9b, 0xd9, 0x66, + 0xfd, 0x1e, 0x8f, 0x3b, 0xc6, 0x6f, 0xf6, 0x3a, 0xd4, 0x7c, 0x6b, 0x34, 0xf3, 0x03, 0xfb, 0xb9, + 0xa5, 0x07, 0xb6, 0x7b, 0x52, 0x7f, 0x9b, 0xc6, 0x71, 0x2d, 0x86, 0xf6, 0x6d, 0xf7, 0x04, 0x57, + 0xac, 0x75, 0x16, 0x5a, 0xbe, 0xab, 0xa3, 0xba, 0x5d, 0x7f, 0x47, 0x5e, 0xb1, 0x2d, 0x42, 0xf4, + 0x47, 0x86, 0xab, 0x81, 0x15, 0x7f, 0xb3, 0x1f, 0xc1, 0x7a, 0x62, 0x6a, 0x4d, 0x51, 0xf1, 0xa8, + 0xbf, 0xbb, 0xf4, 0x8c, 0x98, 0x94, 0x12, 0x2d, 0x09, 0xa0, 0xe0, 0xfa, 0x4b, 0x7a, 0x6d, 0x05, + 0x7c, 0x6d, 0xdd, 0xff, 0x4e, 0x6b, 0xab, 0x4f, 0x6b, 0xeb, 0x0d, 0x28, 0xd9, 0x6e, 0x68, 0xf9, + 0xcf, 0x0d, 0xa7, 0xfe, 0xde, 0x02, 0x03, 0x8f, 0x71, 0xec, 0x0e, 0x14, 0x03, 0xc7, 0x46, 0xc6, + 0x54, 0x7f, 0x7f, 0x81, 0x2c, 0x42, 0xb1, 0xbb, 0x50, 0x8e, 0x6f, 0xd0, 0xd5, 0x3f, 0x58, 0xa0, + 0x4b, 0x90, 0xec, 0x26, 0xe4, 0x4e, 0x71, 0x3d, 0x3e, 0x58, 0x3c, 0x83, 0x40, 0x38, 0x4a, 0xfc, + 0xb1, 0xed, 0x38, 0x5c, 0xe2, 0x3f, 0x5c, 0x90, 0xf8, 0xbb, 0xb6, 0xe3, 0x70, 0x89, 0x3f, 0x16, + 0x5f, 0x28, 0x2f, 0x29, 0x07, 0xf6, 0xe4, 0xc3, 0x45, 0x79, 0x89, 0xb8, 0xa7, 0x74, 0xd7, 0xb0, + 0x12, 0x90, 0x63, 0x9d, 0x9f, 0x0f, 0x7c, 0x24, 0x8f, 0x55, 0xda, 0xe3, 0xae, 0x41, 0x10, 0xa7, + 0x51, 0x6d, 0x17, 0xc7, 0x0a, 0x68, 0x0f, 0x7f, 0xcc, 0xaf, 0xc0, 0x70, 0x08, 0x1a, 0xc3, 0xef, + 0xc3, 0x5a, 0x14, 0x3d, 0x87, 0xd5, 0x05, 0xf5, 0x4f, 0x16, 0x5a, 0x90, 0x26, 0x60, 0x3b, 0x50, + 0x1d, 0xa3, 0x06, 0x38, 0xe1, 0x0a, 0x61, 0xfd, 0x11, 0x35, 0x64, 0x2b, 0x92, 0xc5, 0x17, 0x29, + 0x8c, 0x5a, 0x2a, 0x17, 0xbb, 0x0f, 0xcc, 0x1e, 0xf3, 0xf9, 0x44, 0x03, 0x9b, 0x2b, 0x7d, 0xf5, + 0x4f, 0x69, 0x71, 0x2e, 0xc1, 0xb0, 0x87, 0xb0, 0x16, 0x58, 0xae, 0xa9, 0x4f, 0x02, 0xa1, 0x59, + 0xfc, 0x80, 0xda, 0x29, 0xd8, 0x70, 0x7c, 0xd3, 0x56, 0xab, 0x20, 0xd5, 0x7e, 0xc0, 0x55, 0x8c, + 0x87, 0x80, 0xeb, 0xfc, 0x79, 0x92, 0xe9, 0xd7, 0x2e, 0xc8, 0x84, 0x54, 0x51, 0xa6, 0x47, 0x50, + 0x33, 0x2d, 0x73, 0x36, 0xd5, 0x49, 0x71, 0xc3, 0x65, 0xf9, 0x43, 0x99, 0x5f, 0xca, 0x3e, 0x51, + 0xad, 0x6a, 0xca, 0x1e, 0xd2, 0x4f, 0x60, 0x3d, 0x72, 0x5e, 0x86, 0xc2, 0xcf, 0xf9, 0x23, 0xb9, + 0xc2, 0xd8, 0x37, 0xa9, 0xad, 0xcd, 0xa2, 0xcf, 0xa8, 0x9d, 0x64, 0x33, 0x07, 0xae, 0x31, 0x0d, + 0x8e, 0xbd, 0xb0, 0xfe, 0xeb, 0xb2, 0xaa, 0xd1, 0x17, 0x50, 0xad, 0x8a, 0x44, 0x51, 0x0a, 0x45, + 0x57, 0xb2, 0xb5, 0x47, 0xa1, 0x55, 0xff, 0x31, 0x17, 0x5d, 0x31, 0xb0, 0x19, 0xe2, 0xb0, 0x81, + 0x31, 0x9d, 0x3a, 0xe7, 0x7c, 0x39, 0x7e, 0x46, 0xcb, 0x71, 0x53, 0x5a, 0x8e, 0x0d, 0x44, 0xd2, + 0x7a, 0x2c, 0x1b, 0xd1, 0x27, 0x7b, 0x00, 0xd5, 0xa9, 0x17, 0x84, 0xba, 0x39, 0x71, 0xa8, 0xff, + 0x0d, 0x99, 0x1d, 0x1c, 0x78, 0x41, 0xb8, 0x33, 0x71, 0x48, 0x80, 0x4d, 0xe3, 0x6f, 0xd6, 0x81, + 0x4b, 0x29, 0x56, 0x6f, 0xd0, 0x31, 0x7c, 0x7d, 0x9b, 0x6a, 0xbc, 0x21, 0xd5, 0x28, 0xb1, 0x7c, + 0x11, 0xbe, 0xb9, 0xe1, 0xcd, 0x83, 0xd0, 0x62, 0xe3, 0x73, 0x10, 0xc7, 0x30, 0x37, 0xb9, 0xde, + 0x42, 0xd0, 0x28, 0x88, 0xf9, 0x11, 0xac, 0x27, 0x54, 0xd8, 0xc1, 0xa0, 0xbe, 0x23, 0xaf, 0x5e, + 0xe9, 0xa6, 0xc1, 0x5a, 0x94, 0x11, 0x61, 0x81, 0xfa, 0x67, 0x79, 0x28, 0x45, 0x46, 0x03, 0xab, + 0x40, 0xf1, 0xb0, 0xfb, 0xa4, 0xdb, 0x7b, 0xd6, 0xe5, 0x37, 0xfe, 0x1a, 0xfd, 0x7e, 0x4b, 0x1b, + 0x28, 0x26, 0xab, 0x01, 0xd0, 0x8d, 0x26, 0xbd, 0xdf, 0x6c, 0x74, 0xf9, 0x0d, 0x40, 0xba, 0x47, + 0xc5, 0xd3, 0xab, 0x6c, 0x03, 0xd6, 0x76, 0x0f, 0xbb, 0x14, 0x25, 0xca, 0x41, 0x59, 0x04, 0xb5, + 0xbe, 0xe0, 0x27, 0x84, 0x1c, 0x94, 0x43, 0xd0, 0x7e, 0x63, 0xd0, 0xd2, 0xda, 0x11, 0x28, 0x4f, + 0x01, 0xa7, 0xbd, 0x43, 0xad, 0x29, 0x4a, 0x2a, 0xb0, 0xcb, 0xb0, 0x11, 0x67, 0x8b, 0x8a, 0x54, + 0x8a, 0xd8, 0xb2, 0x03, 0xad, 0xf7, 0x79, 0xab, 0x39, 0x50, 0x80, 0x8e, 0x1b, 0x1f, 0x3f, 0x56, + 0x2a, 0xac, 0x0a, 0xa5, 0x9d, 0x76, 0x7f, 0xd0, 0xee, 0x36, 0x07, 0x4a, 0x15, 0x1b, 0xbc, 0xdb, + 0xee, 0x0c, 0x5a, 0x9a, 0xb2, 0xc6, 0x4a, 0x90, 0xfb, 0xbc, 0xd7, 0xee, 0x2a, 0x35, 0xba, 0xd9, + 0xd5, 0xd8, 0x3f, 0xe8, 0xb4, 0x94, 0x75, 0x84, 0xf6, 0x7b, 0xda, 0x40, 0x51, 0x10, 0xfa, 0xac, + 0xdd, 0xdd, 0xe9, 0x3d, 0x53, 0x36, 0x58, 0x19, 0xf2, 0x87, 0x5d, 0xac, 0x86, 0xb1, 0x35, 0x28, + 0xd3, 0xa7, 0xde, 0xe8, 0x74, 0x94, 0x4b, 0xd2, 0x19, 0xe5, 0x26, 0xa2, 0xe8, 0xc4, 0xb3, 0x8f, + 0x6d, 0xb8, 0x8c, 0x7d, 0x89, 0x93, 0x44, 0x7d, 0x05, 0xcb, 0xd9, 0x6f, 0x77, 0x0f, 0xfb, 0xca, + 0x55, 0x24, 0xa6, 0x4f, 0xc2, 0xd4, 0xb1, 0x9c, 0x76, 0x97, 0x86, 0xf2, 0x26, 0x7e, 0xef, 0xb4, + 0x3a, 0xad, 0x41, 0x4b, 0xb9, 0x85, 0xbd, 0xd2, 0x5a, 0x07, 0x9d, 0x46, 0xb3, 0xa5, 0x6c, 0x61, + 0xa2, 0xd3, 0x6b, 0x3e, 0xd1, 0x7b, 0x07, 0xca, 0x6d, 0xb6, 0x09, 0x4a, 0xaf, 0xab, 0xef, 0x1c, + 0x1e, 0x74, 0xda, 0xcd, 0xc6, 0xa0, 0xa5, 0x3f, 0x69, 0x7d, 0xa9, 0xa8, 0x38, 0xec, 0x07, 0x5a, + 0x4b, 0x17, 0x65, 0xbd, 0x16, 0xa5, 0x45, 0x79, 0x77, 0x98, 0x02, 0xd5, 0xdd, 0xc3, 0x9f, 0xfe, + 0xf4, 0x4b, 0x5d, 0x8c, 0xc3, 0xeb, 0xd8, 0xcc, 0x24, 0x87, 0x7e, 0xf8, 0x44, 0x79, 0x63, 0x0e, + 0xd4, 0x7f, 0xa2, 0xbc, 0x89, 0xe3, 0x18, 0x4d, 0x8c, 0x72, 0x17, 0x09, 0xb4, 0x56, 0xf3, 0x50, + 0xeb, 0xb7, 0x9f, 0xb6, 0xf4, 0xe6, 0xa0, 0xa5, 0xbc, 0x45, 0x03, 0xd7, 0xee, 0x3e, 0x51, 0xee, + 0x61, 0xcf, 0xf0, 0x8b, 0x4f, 0xd7, 0xdb, 0x8c, 0x41, 0x2d, 0xa1, 0x25, 0xd8, 0x3b, 0x48, 0xb2, + 0xad, 0xf5, 0x1a, 0x3b, 0xcd, 0x46, 0x7f, 0xa0, 0xbc, 0x8b, 0xc3, 0xd2, 0x3f, 0xe8, 0xb4, 0x07, + 0xca, 0x7d, 0xec, 0xfb, 0xe3, 0xc6, 0x60, 0xaf, 0xa5, 0x29, 0xef, 0xe1, 0xcc, 0x0f, 0xda, 0xfb, + 0x2d, 0x5d, 0x4c, 0xc3, 0x03, 0xac, 0x63, 0xb7, 0xdd, 0xe9, 0x28, 0x0f, 0xe9, 0x58, 0xae, 0xa1, + 0x0d, 0xda, 0x34, 0xf7, 0x1f, 0x62, 0x01, 0x8d, 0x83, 0x83, 0xce, 0x97, 0xca, 0x47, 0xd8, 0xc1, + 0xfd, 0xc3, 0xce, 0xa0, 0xad, 0x1f, 0x1e, 0xec, 0x34, 0x06, 0x2d, 0xe5, 0x63, 0x5a, 0x18, 0xbd, + 0xfe, 0x60, 0x67, 0xbf, 0xa3, 0x7c, 0xa2, 0xfe, 0x26, 0x94, 0x22, 0x3b, 0x12, 0x73, 0xb5, 0xbb, + 0xdd, 0x96, 0xa6, 0xac, 0x60, 0xc9, 0x9d, 0xd6, 0xee, 0x40, 0xc9, 0xd0, 0x91, 0x64, 0xfb, 0xf1, + 0xde, 0x40, 0x59, 0xc5, 0xcf, 0xde, 0x21, 0x0e, 0x52, 0x96, 0x7a, 0xd7, 0xda, 0x6f, 0x2b, 0x39, + 0xfc, 0x6a, 0x74, 0x07, 0x6d, 0x25, 0x4f, 0xcb, 0xa6, 0xdd, 0x7d, 0xdc, 0x69, 0x29, 0x05, 0x84, + 0xee, 0x37, 0xb4, 0x27, 0x4a, 0x91, 0x17, 0xba, 0xd3, 0xfa, 0x42, 0x29, 0xb1, 0x02, 0xac, 0x76, + 0x1e, 0x28, 0x65, 0x04, 0xed, 0xb4, 0x76, 0x0e, 0x0f, 0x14, 0x50, 0xef, 0x42, 0xb1, 0x71, 0x74, + 0xb4, 0x8f, 0x66, 0x3a, 0x76, 0xe6, 0xb0, 0xd3, 0xe1, 0xdb, 0x68, 0xbb, 0x37, 0x18, 0xf4, 0xf6, + 0x95, 0x0c, 0x2e, 0xdc, 0x41, 0xef, 0x40, 0x59, 0x55, 0xdb, 0x50, 0x8a, 0xc4, 0x9f, 0x74, 0x59, + 0xb1, 0x04, 0xb9, 0x03, 0xad, 0xf5, 0x94, 0x9f, 0xa3, 0x77, 0x5b, 0x5f, 0x60, 0x33, 0xf1, 0x0b, + 0x0b, 0xca, 0x62, 0x45, 0xfc, 0x56, 0x21, 0xdd, 0x56, 0xec, 0xb4, 0xbb, 0xad, 0x86, 0xa6, 0xe4, + 0xd5, 0x8f, 0x52, 0x47, 0x94, 0x82, 0x6b, 0x60, 0xf5, 0x8d, 0xb6, 0xa8, 0xbe, 0xfd, 0xb8, 0xdb, + 0xd3, 0x5a, 0xfc, 0xfa, 0xa3, 0x18, 0xb7, 0x55, 0xf5, 0x6d, 0x28, 0xc7, 0x1c, 0x0f, 0xd7, 0x51, + 0x53, 0xeb, 0xf5, 0xfb, 0x7c, 0x98, 0x57, 0x30, 0x4d, 0x63, 0xc3, 0xd3, 0x19, 0xf5, 0xff, 0x87, + 0x52, 0xcc, 0x6c, 0xef, 0xc0, 0xea, 0xa0, 0x2f, 0x5c, 0xf0, 0x9b, 0xf7, 0x93, 0x57, 0x2a, 0x06, + 0xd1, 0x97, 0xb6, 0x3a, 0xe8, 0xb3, 0x77, 0xa0, 0xc0, 0xef, 0xa8, 0x8a, 0x53, 0xa4, 0xcd, 0x34, + 0x03, 0x1f, 0x10, 0x4e, 0x13, 0x34, 0x6a, 0x07, 0x6a, 0x69, 0x0c, 0xbb, 0x09, 0xc0, 0x71, 0x92, + 0x3b, 0x45, 0x82, 0xb0, 0xeb, 0x10, 0xdd, 0x81, 0xdd, 0x11, 0x81, 0xa5, 0x71, 0x5a, 0xfd, 0x07, + 0x59, 0x80, 0x44, 0x55, 0x43, 0x65, 0x30, 0x76, 0x96, 0xe4, 0xc5, 0x81, 0xf2, 0x2b, 0x50, 0x76, + 0x3c, 0xc3, 0x94, 0x5f, 0x9b, 0x28, 0x21, 0x80, 0x46, 0x43, 0xbe, 0xe9, 0x56, 0xe6, 0xd1, 0x1c, + 0xec, 0x0a, 0x14, 0xc6, 0x9e, 0x3f, 0x31, 0xa2, 0x10, 0x54, 0x91, 0x42, 0xd1, 0xc3, 0x0f, 0x39, + 0x51, 0x61, 0x75, 0xe9, 0x16, 0x09, 0xc5, 0x33, 0x0b, 0x60, 0x07, 0x61, 0x68, 0xd2, 0x58, 0xee, + 0xc8, 0xf1, 0x02, 0xcb, 0x44, 0x93, 0xbd, 0x40, 0x5a, 0x29, 0x44, 0xa0, 0xed, 0x73, 0xde, 0x5b, + 0x7f, 0x62, 0xbb, 0x46, 0x28, 0xfc, 0xcc, 0xd4, 0xdb, 0x08, 0x82, 0xcd, 0xfd, 0x2a, 0xf0, 0x84, + 0xef, 0x84, 0x9f, 0x97, 0x96, 0x10, 0x40, 0xcd, 0x7d, 0x15, 0xc0, 0x0a, 0x46, 0xc6, 0x94, 0x17, + 0x5e, 0xa6, 0xc2, 0xcb, 0x02, 0xb2, 0x7d, 0xce, 0x3a, 0x50, 0x1b, 0x0c, 0x91, 0xdd, 0x7b, 0x68, + 0x06, 0x37, 0x3d, 0x47, 0x78, 0x35, 0xee, 0xcc, 0xeb, 0xb4, 0xf7, 0xd3, 0x64, 0xfc, 0x60, 0x77, + 0x2e, 0xef, 0xf5, 0x06, 0x5c, 0x5a, 0x42, 0xf6, 0x52, 0x01, 0x6a, 0x7f, 0x91, 0x03, 0x48, 0x0c, + 0x93, 0xd4, 0x69, 0x6f, 0x26, 0x7d, 0xda, 0xfb, 0x00, 0xae, 0x88, 0x4b, 0x62, 0xf1, 0x91, 0xa9, + 0xed, 0xea, 0x43, 0x23, 0x3a, 0x58, 0x67, 0x02, 0xcb, 0x4f, 0x4d, 0xdb, 0xee, 0xb6, 0x81, 0x3a, + 0xcb, 0xba, 0x9c, 0x27, 0x3c, 0x9f, 0xa6, 0x03, 0x03, 0x64, 0x49, 0x98, 0x64, 0x1f, 0x9c, 0x4f, + 0xd9, 0xfb, 0x70, 0xd9, 0xb7, 0xc6, 0xbe, 0x15, 0x1c, 0xeb, 0x61, 0x20, 0x57, 0xc6, 0x63, 0xd3, + 0x36, 0x04, 0x72, 0x10, 0xc4, 0x75, 0xbd, 0x0f, 0x97, 0x85, 0xc9, 0x32, 0xd7, 0x3c, 0x7e, 0x40, + 0xb9, 0xc1, 0x91, 0x72, 0xeb, 0x5e, 0x05, 0x10, 0xd6, 0x5a, 0xf4, 0x8a, 0x4a, 0x49, 0x2b, 0x73, + 0xcb, 0x0c, 0xcd, 0xeb, 0x77, 0x80, 0xd9, 0x81, 0x3e, 0x77, 0xd6, 0x23, 0x8e, 0xcf, 0x15, 0x3b, + 0x38, 0x48, 0x9d, 0xf3, 0x5c, 0x74, 0x8c, 0x54, 0xba, 0xe8, 0x18, 0x69, 0x13, 0xf2, 0x64, 0xd0, + 0x89, 0x53, 0x1d, 0x9e, 0x60, 0x2a, 0xe4, 0x90, 0x63, 0xd1, 0x09, 0x44, 0xed, 0x41, 0xed, 0x3e, + 0xbd, 0x41, 0x83, 0xf3, 0x83, 0x50, 0x8d, 0x70, 0xec, 0x5d, 0xb8, 0x24, 0x0f, 0x6a, 0xf4, 0xc0, + 0x42, 0x85, 0xba, 0xa9, 0x24, 0xc3, 0xa8, 0xf1, 0xa7, 0x16, 0xde, 0x06, 0x26, 0x8d, 0x4b, 0x44, + 0x5d, 0xe5, 0x27, 0xb1, 0xf1, 0xa0, 0x08, 0xe2, 0x37, 0x81, 0x06, 0x80, 0x3b, 0x7c, 0xd7, 0x16, + 0xcd, 0x17, 0x44, 0x92, 0x73, 0xf8, 0x7d, 0xb8, 0x9c, 0x8c, 0x9d, 0x6e, 0x84, 0x7a, 0x78, 0x6c, + 0xe9, 0x96, 0x6b, 0xd2, 0xbd, 0xc1, 0x92, 0xb6, 0x11, 0x0f, 0x63, 0x23, 0x1c, 0x1c, 0x5b, 0x2d, + 0xd7, 0x54, 0x7f, 0x2f, 0x03, 0xb5, 0xb4, 0xed, 0xc4, 0x63, 0xc9, 0x93, 0x20, 0xf9, 0x7c, 0x12, + 0x18, 0xff, 0x0a, 0x94, 0xa7, 0x27, 0x22, 0x22, 0x3e, 0x62, 0x09, 0xd3, 0x13, 0x1e, 0x09, 0xcf, + 0xde, 0x82, 0xe2, 0xf4, 0x84, 0x6f, 0xbf, 0x8b, 0x56, 0x53, 0x61, 0xca, 0x83, 0x54, 0xdf, 0x82, + 0xe2, 0x4c, 0x90, 0xe6, 0x2e, 0x22, 0x9d, 0x11, 0xa9, 0xba, 0x05, 0x55, 0xd9, 0x5b, 0x81, 0xbb, + 0x08, 0x2d, 0x13, 0xde, 0x30, 0xfc, 0x54, 0x7f, 0x6b, 0x95, 0x48, 0x5e, 0xea, 0xfc, 0xf8, 0xa5, + 0xce, 0xf0, 0xb7, 0x28, 0xaa, 0x4e, 0xa7, 0x98, 0xd9, 0x91, 0x17, 0x3d, 0x0d, 0x02, 0xc7, 0x46, + 0xd0, 0x98, 0x85, 0x5e, 0xd3, 0x73, 0x44, 0x24, 0x87, 0xb8, 0x84, 0x94, 0x8b, 0xfc, 0xeb, 0xe2, + 0x7e, 0xe2, 0xfb, 0xe2, 0xa6, 0x0e, 0x5d, 0x93, 0xa3, 0xe8, 0x91, 0xfc, 0xc2, 0x0c, 0x56, 0xa3, + 0x5b, 0x72, 0x14, 0x18, 0xf2, 0x00, 0xd6, 0x93, 0xb0, 0xe8, 0x28, 0xe0, 0x64, 0x3e, 0xcb, 0x5a, + 0x1c, 0x13, 0x8d, 0x49, 0xf5, 0x77, 0x32, 0xb0, 0xb1, 0x60, 0xfc, 0xe3, 0x68, 0x25, 0xaf, 0x08, + 0xe1, 0x27, 0xbb, 0x0d, 0xd5, 0x89, 0x11, 0x8e, 0x8e, 0xf5, 0xa9, 0x6f, 0x8d, 0xed, 0xb3, 0xe8, + 0x29, 0x24, 0x82, 0x1d, 0x10, 0x88, 0x82, 0x67, 0xa6, 0x53, 0x72, 0x79, 0x4c, 0xec, 0x50, 0xdc, + 0x53, 0x04, 0x02, 0x75, 0xc8, 0x17, 0x1a, 0x05, 0xd6, 0xe5, 0x2e, 0x88, 0x03, 0xbc, 0x01, 0x85, + 0x76, 0xec, 0x64, 0x88, 0xa3, 0x3f, 0xb2, 0xe2, 0x25, 0x10, 0x0f, 0xca, 0x4d, 0x7a, 0x55, 0x64, + 0xdf, 0x98, 0xb2, 0x7b, 0x90, 0x9d, 0x18, 0x53, 0x11, 0x1d, 0x52, 0x8f, 0x1d, 0xfc, 0x1c, 0x7b, + 0x7f, 0xdf, 0x98, 0x72, 0x16, 0x8b, 0x44, 0xd7, 0x3f, 0x86, 0x52, 0x04, 0x78, 0x29, 0x66, 0xfa, + 0x5f, 0xb2, 0x50, 0xde, 0x91, 0xdd, 0x91, 0x68, 0x3c, 0x85, 0xfe, 0xcc, 0x45, 0x65, 0x40, 0x1c, + 0x87, 0x54, 0x46, 0x86, 0x3b, 0x10, 0xa0, 0x68, 0x01, 0xad, 0x7e, 0xcb, 0x02, 0xba, 0x01, 0xe0, + 0x93, 0x91, 0x4c, 0x76, 0x72, 0x36, 0x8e, 0x44, 0x6c, 0x9b, 0x22, 0xca, 0x62, 0xf1, 0x80, 0x3d, + 0xf7, 0xdd, 0x0f, 0xd8, 0xf3, 0x4b, 0x0f, 0xd8, 0xff, 0xaf, 0x39, 0x12, 0x7f, 0x23, 0x91, 0x1f, + 0xb8, 0xa6, 0x91, 0xac, 0xcc, 0x63, 0x93, 0xa7, 0xf1, 0xdd, 0x05, 0xa4, 0xfb, 0x01, 0xd4, 0xa2, + 0x61, 0x16, 0x1d, 0x83, 0xd4, 0x75, 0x09, 0x81, 0xe3, 0x9e, 0xd6, 0xb5, 0x50, 0x4e, 0xa6, 0x77, + 0x68, 0xe5, 0xdb, 0x77, 0xa8, 0xfa, 0xfb, 0x19, 0x60, 0xc2, 0xd2, 0xdc, 0x9d, 0x39, 0xce, 0xc0, + 0x3a, 0x23, 0x46, 0x70, 0x0f, 0x36, 0x84, 0x9b, 0x54, 0x0a, 0xa5, 0x12, 0xc7, 0x4e, 0x1c, 0x91, + 0x1c, 0x3b, 0x2d, 0xbb, 0x29, 0xba, 0xba, 0xf4, 0xa6, 0xe8, 0xf2, 0x1b, 0xa8, 0xb7, 0xa0, 0x22, + 0xdf, 0xb3, 0xe4, 0x1a, 0x10, 0x18, 0xc9, 0x15, 0xcb, 0xff, 0xb8, 0x0a, 0x90, 0x58, 0xc3, 0xbf, + 0xea, 0x30, 0x8d, 0x25, 0x53, 0x92, 0x5d, 0x36, 0x25, 0x77, 0x41, 0x91, 0xe9, 0xa4, 0x0b, 0xbf, + 0xb5, 0x84, 0x90, 0xba, 0xc9, 0x79, 0x9a, 0x74, 0x29, 0x93, 0x78, 0x9a, 0x38, 0x01, 0x16, 0xa1, + 0x6b, 0xc4, 0x72, 0x85, 0x88, 0x2e, 0xd9, 0x01, 0x67, 0xc1, 0xec, 0x53, 0xb8, 0x16, 0xe7, 0xd4, + 0x4f, 0xed, 0xf0, 0xd8, 0x9b, 0x85, 0xc2, 0x6f, 0x19, 0x08, 0x41, 0x7d, 0x25, 0x2a, 0xe9, 0x19, + 0x47, 0x73, 0x96, 0x15, 0xb0, 0x8f, 0xa0, 0x3c, 0x9e, 0x39, 0x8e, 0x1e, 0x5a, 0x67, 0xa1, 0x88, + 0x5e, 0xae, 0xa7, 0x1c, 0x09, 0xd2, 0xf4, 0x6a, 0xa5, 0xb1, 0x48, 0xa8, 0xff, 0x73, 0x15, 0xf2, + 0x3f, 0x99, 0x59, 0xfe, 0x39, 0xfb, 0x18, 0xca, 0x41, 0x38, 0x09, 0xe5, 0xa3, 0xbf, 0x6b, 0xbc, + 0x00, 0xc2, 0xd3, 0xc9, 0x9d, 0x35, 0xb1, 0xdc, 0x90, 0x7b, 0xd5, 0x90, 0x96, 0x24, 0xd2, 0x26, + 0xe4, 0x83, 0xd0, 0x9a, 0x06, 0x22, 0xd4, 0x8c, 0x27, 0xd8, 0x16, 0xe4, 0x5d, 0xcf, 0xb4, 0x82, + 0x74, 0x40, 0x59, 0x17, 0x85, 0x3e, 0x47, 0x30, 0x15, 0x0a, 0xf1, 0x8c, 0x2f, 0x1c, 0xbf, 0x71, + 0x0c, 0x85, 0xff, 0x5b, 0x86, 0x69, 0xbb, 0x47, 0xd1, 0x05, 0xea, 0x38, 0x8d, 0xb2, 0x96, 0x74, + 0x6a, 0xe3, 0x28, 0x7a, 0xcd, 0x40, 0x24, 0xd9, 0x16, 0x54, 0xf0, 0xf3, 0x99, 0x6f, 0x87, 0x56, + 0xff, 0xa1, 0x18, 0x37, 0x19, 0x84, 0x1a, 0xb1, 0x69, 0x85, 0xd6, 0x28, 0xec, 0x7f, 0x2d, 0x22, + 0xad, 0x28, 0x84, 0x26, 0x82, 0xa8, 0x26, 0xac, 0xa5, 0xba, 0xbb, 0xe0, 0xba, 0xe8, 0xb7, 0x3a, + 0x68, 0xa8, 0x67, 0x24, 0xdb, 0x7b, 0x55, 0xb6, 0xb7, 0xb3, 0x92, 0x21, 0x9e, 0x93, 0x2c, 0xa3, + 0x3c, 0x99, 0xf1, 0x2d, 0xed, 0x71, 0x4b, 0x29, 0xa8, 0x7f, 0xb0, 0x0a, 0x1b, 0x03, 0xdf, 0x70, + 0x03, 0x83, 0xdf, 0x8a, 0x73, 0x43, 0xdf, 0x73, 0xd8, 0x0f, 0xa0, 0x14, 0x8e, 0x1c, 0x79, 0x1a, + 0x6e, 0x45, 0x9b, 0x7e, 0x8e, 0xf4, 0xfe, 0x60, 0xc4, 0x5d, 0x9c, 0xc5, 0x90, 0x7f, 0xb0, 0x77, + 0x21, 0x3f, 0xb4, 0x8e, 0x6c, 0x57, 0x30, 0xe0, 0xcb, 0xf3, 0x19, 0xb7, 0x11, 0xb9, 0xb7, 0xa2, + 0x71, 0x2a, 0xf6, 0x3e, 0x14, 0x46, 0xde, 0x24, 0x92, 0x54, 0xc9, 0x05, 0x1e, 0xa9, 0x22, 0xc4, + 0xee, 0xad, 0x68, 0x82, 0x8e, 0x7d, 0x0c, 0x25, 0xdf, 0x73, 0x9c, 0xa1, 0x31, 0x3a, 0x11, 0x32, + 0xac, 0x3e, 0x9f, 0x47, 0x13, 0xf8, 0xbd, 0x15, 0x2d, 0xa6, 0x55, 0xef, 0x43, 0x51, 0x34, 0x16, + 0x07, 0x60, 0xbb, 0xf5, 0xb8, 0x2d, 0x06, 0xb2, 0xd9, 0xdb, 0xdf, 0x6f, 0x0f, 0xf8, 0x4d, 0x61, + 0xad, 0xd7, 0xe9, 0x6c, 0x37, 0x9a, 0x4f, 0x94, 0xd5, 0xed, 0x12, 0x14, 0xb8, 0x63, 0x4b, 0xfd, + 0xed, 0x0c, 0xac, 0xcf, 0x75, 0x80, 0x3d, 0x82, 0xdc, 0x04, 0x95, 0x4a, 0x3e, 0x3c, 0x77, 0x96, + 0xf6, 0x52, 0x4a, 0x73, 0x55, 0x13, 0x73, 0xa8, 0x9f, 0x42, 0x2d, 0x0d, 0x97, 0xec, 0xe3, 0x35, + 0x28, 0x6b, 0xad, 0xc6, 0x8e, 0xde, 0xeb, 0xa2, 0x55, 0x8a, 0x56, 0x2a, 0x25, 0x9f, 0x69, 0x6d, + 0x32, 0x69, 0x7f, 0x03, 0x94, 0xf9, 0x81, 0x61, 0x8f, 0x61, 0x1d, 0xd5, 0x0f, 0xc7, 0xe2, 0x82, + 0x22, 0x99, 0xb2, 0x9b, 0x4b, 0x46, 0x52, 0x90, 0xd1, 0x8c, 0xd5, 0x46, 0xa9, 0xb4, 0xfa, 0xff, + 0x01, 0x5b, 0x1c, 0xc1, 0x5f, 0x5d, 0xf1, 0xff, 0x23, 0x03, 0xb9, 0x03, 0xc7, 0x70, 0xd9, 0x6b, + 0x90, 0xa7, 0x17, 0x6e, 0x04, 0xf7, 0xac, 0x48, 0x1b, 0x1c, 0x97, 0x05, 0xe1, 0xd8, 0xdb, 0x90, + 0x0d, 0x47, 0xd1, 0xad, 0xe8, 0xab, 0x17, 0x2c, 0xbe, 0xbd, 0x15, 0x0d, 0xa9, 0xd8, 0x5d, 0xc8, + 0x9a, 0x66, 0x14, 0x1e, 0x2d, 0xec, 0x70, 0x34, 0xde, 0x76, 0xac, 0xb1, 0xed, 0xda, 0xe2, 0x45, + 0x1e, 0x24, 0x61, 0xaf, 0x43, 0xd6, 0x1c, 0x39, 0xe9, 0x58, 0x77, 0x6e, 0xe6, 0xc5, 0x05, 0x9a, + 0x23, 0x87, 0xa9, 0xb0, 0x16, 0xfa, 0xe7, 0xba, 0x3f, 0x73, 0x29, 0xb8, 0x28, 0x10, 0xe6, 0x4e, + 0x05, 0x95, 0x99, 0x19, 0x45, 0x28, 0x05, 0xe2, 0x76, 0xd5, 0xd4, 0xb7, 0xa6, 0x86, 0x1f, 0x1b, + 0x3a, 0x76, 0x70, 0xc0, 0x01, 0xdb, 0x05, 0xa0, 0x07, 0x32, 0xd5, 0x77, 0xe8, 0xf9, 0x15, 0xd4, + 0xb0, 0xd5, 0xe8, 0x6b, 0xc9, 0xe5, 0x55, 0x81, 0x51, 0xff, 0x3c, 0x0b, 0x15, 0xa9, 0x3d, 0xec, + 0x43, 0x28, 0x99, 0xe9, 0x8d, 0x78, 0x6d, 0xa1, 0xd1, 0xf7, 0x77, 0xa2, 0x2d, 0x68, 0x8a, 0xe5, + 0xfd, 0x29, 0xac, 0x05, 0x56, 0xa8, 0x3f, 0x37, 0x7c, 0x9b, 0x3f, 0x4d, 0xb5, 0x2a, 0x3b, 0xb5, + 0xfb, 0x56, 0xf8, 0x34, 0xc2, 0xec, 0xad, 0x68, 0xd5, 0x40, 0x4a, 0x93, 0x19, 0x20, 0xba, 0x94, + 0x4d, 0x3d, 0xdf, 0xc5, 0x81, 0x7b, 0x2b, 0x5a, 0x84, 0x47, 0x52, 0xeb, 0xcc, 0x1a, 0xcd, 0xc2, + 0xc8, 0x0c, 0x58, 0x8b, 0x3a, 0x44, 0x40, 0x7a, 0x29, 0x90, 0x7f, 0xb2, 0x07, 0xc8, 0xeb, 0x0c, + 0xc7, 0xf1, 0x48, 0x67, 0xcb, 0xcb, 0x2e, 0xe6, 0x9d, 0x18, 0xce, 0x5f, 0x26, 0x8c, 0x52, 0xec, + 0x0d, 0xc8, 0x7b, 0xe1, 0xb1, 0x15, 0x29, 0xcf, 0xd1, 0x43, 0x2e, 0x08, 0xda, 0x69, 0x76, 0x70, + 0xa5, 0x10, 0x5a, 0xfd, 0x79, 0x06, 0x8a, 0x62, 0x04, 0xd8, 0x06, 0xac, 0xf5, 0x5b, 0x03, 0xfd, + 0x69, 0x43, 0x6b, 0x37, 0xb6, 0x3b, 0x2d, 0x11, 0xa2, 0xff, 0x58, 0x6b, 0x74, 0x05, 0x9f, 0xd4, + 0x5a, 0x4f, 0x7b, 0x4f, 0x5a, 0xdc, 0xe9, 0xb4, 0xd3, 0xea, 0x7e, 0xa9, 0x64, 0xb9, 0xdf, 0xb5, + 0x75, 0xd0, 0xd0, 0x90, 0x4b, 0x56, 0xa0, 0xd8, 0xfa, 0xa2, 0xd5, 0x3c, 0x24, 0x36, 0x59, 0x03, + 0xd8, 0x69, 0x35, 0x3a, 0x9d, 0x5e, 0x13, 0xd9, 0x66, 0x81, 0x31, 0xa8, 0x35, 0xb5, 0x56, 0x63, + 0xd0, 0xd2, 0x1b, 0xcd, 0x66, 0xef, 0xb0, 0x3b, 0x50, 0x8a, 0x58, 0x63, 0xa3, 0x33, 0x68, 0x69, + 0x31, 0x88, 0x1e, 0xd7, 0xda, 0xd1, 0x7a, 0x07, 0x31, 0xa4, 0xbc, 0x5d, 0x46, 0x93, 0x8c, 0xe6, + 0x4a, 0xfd, 0x8b, 0x1a, 0xd4, 0xd2, 0x4b, 0x93, 0x7d, 0x02, 0x25, 0xd3, 0x4c, 0xcd, 0xf1, 0x8d, + 0x65, 0x4b, 0xf8, 0xfe, 0x8e, 0x19, 0x4d, 0x33, 0xff, 0x60, 0xb7, 0xa3, 0x8d, 0xb4, 0xba, 0xb0, + 0x91, 0xa2, 0x6d, 0xf4, 0x63, 0x58, 0x17, 0x0f, 0xa1, 0x98, 0x46, 0x68, 0x0c, 0x8d, 0xc0, 0x4a, + 0xef, 0x92, 0x26, 0x21, 0x77, 0x04, 0x6e, 0x6f, 0x45, 0xab, 0x8d, 0x52, 0x10, 0xf6, 0x43, 0xa8, + 0x19, 0x64, 0xe7, 0xc6, 0xf9, 0x73, 0xb2, 0x12, 0xd8, 0x40, 0x9c, 0x94, 0x7d, 0xcd, 0x90, 0x01, + 0xb8, 0x10, 0x4d, 0xdf, 0x9b, 0x26, 0x99, 0xf3, 0xa9, 0xd3, 0x15, 0xdf, 0x9b, 0x4a, 0x79, 0xab, + 0xa6, 0x94, 0x66, 0x1f, 0x43, 0x55, 0xb4, 0x3c, 0xf1, 0x24, 0xc4, 0x5b, 0x96, 0x37, 0x9b, 0x94, + 0xba, 0xbd, 0x15, 0xad, 0x32, 0x4a, 0x92, 0xec, 0x21, 0x6a, 0x72, 0x89, 0x2e, 0x5e, 0x94, 0xd7, + 0x1a, 0xb5, 0x36, 0xca, 0x05, 0x46, 0x9c, 0x62, 0xef, 0x03, 0x50, 0x3b, 0x79, 0x9e, 0x52, 0x2a, + 0x28, 0xc2, 0xf7, 0xa6, 0x51, 0x96, 0xb2, 0x19, 0x25, 0xa4, 0xe6, 0xf1, 0x7b, 0xa4, 0xe5, 0xc5, + 0xe6, 0xd1, 0xed, 0xc6, 0xa4, 0x79, 0xfc, 0xde, 0x68, 0xdc, 0x3c, 0x9e, 0x0d, 0x16, 0x9a, 0x17, + 0xe5, 0xe2, 0xcd, 0xe3, 0x99, 0xa2, 0xe6, 0xf1, 0x3c, 0x95, 0xf9, 0xe6, 0x45, 0x59, 0xa8, 0x79, + 0x3c, 0xc7, 0x0f, 0x17, 0x74, 0xf7, 0xea, 0x85, 0xba, 0x3b, 0x4e, 0x5b, 0x5a, 0x7b, 0xff, 0x21, + 0xd4, 0x82, 0x63, 0xef, 0x54, 0x62, 0x20, 0x6b, 0x72, 0xee, 0xfe, 0xb1, 0x77, 0x2a, 0x73, 0x90, + 0xb5, 0x40, 0x06, 0x60, 0x6b, 0x79, 0x17, 0xe9, 0xa6, 0x78, 0x4d, 0x6e, 0x2d, 0xf5, 0xf0, 0xa9, + 0x6d, 0x9d, 0x62, 0x6b, 0x8d, 0x28, 0x81, 0x83, 0x92, 0xf8, 0x3d, 0x02, 0x11, 0xc5, 0x93, 0x3a, + 0xe0, 0x17, 0x35, 0x41, 0xec, 0x01, 0x09, 0x70, 0x6d, 0xcd, 0x5c, 0x39, 0x9b, 0x22, 0xaf, 0xad, + 0x43, 0x37, 0x95, 0xb1, 0xca, 0x49, 0x45, 0xd6, 0x64, 0x57, 0x04, 0xd6, 0xd7, 0x33, 0xcb, 0x1d, + 0x59, 0x22, 0xde, 0x27, 0xb5, 0x2b, 0xfa, 0x02, 0x97, 0xec, 0x8a, 0x08, 0x12, 0xaf, 0xeb, 0x38, + 0x3b, 0x9b, 0x5f, 0xd7, 0x52, 0x66, 0x5a, 0xd7, 0x71, 0xd6, 0x78, 0x43, 0xc5, 0x79, 0x2f, 0x2d, + 0x6c, 0x28, 0x29, 0x33, 0xdf, 0x50, 0x71, 0xee, 0x87, 0x20, 0x56, 0x13, 0x1f, 0xdc, 0x54, 0x54, + 0x10, 0x6f, 0xb5, 0x18, 0x5d, 0x18, 0xc5, 0x29, 0x5c, 0xab, 0xbe, 0x85, 0xb6, 0x82, 0x58, 0x0a, + 0x97, 0xe5, 0xb5, 0xaa, 0x11, 0x26, 0xde, 0x4a, 0x7e, 0x92, 0x54, 0xff, 0x28, 0x0f, 0x45, 0xc1, + 0x74, 0xd8, 0x25, 0x58, 0x17, 0xbc, 0x6f, 0xa7, 0x31, 0x68, 0x6c, 0x37, 0xfa, 0xa8, 0xad, 0x30, + 0xa8, 0x71, 0xe6, 0x17, 0xc3, 0x32, 0xc8, 0x10, 0x89, 0xfb, 0xc5, 0xa0, 0x55, 0x64, 0x88, 0x22, + 0x2f, 0x7f, 0x99, 0x30, 0xcb, 0xd6, 0xa1, 0xc2, 0x33, 0x72, 0x00, 0x5d, 0x9d, 0xa3, 0x5c, 0x3c, + 0x9d, 0x97, 0xb2, 0xf0, 0xc3, 0x88, 0x42, 0x92, 0x85, 0x03, 0x8a, 0x71, 0x96, 0xe8, 0xb4, 0x82, + 0x41, 0x6d, 0xa0, 0x1d, 0x76, 0x9b, 0x49, 0x3d, 0x65, 0xba, 0xee, 0xc4, 0x8b, 0x79, 0xda, 0x6e, + 0x3d, 0x53, 0x00, 0x33, 0xf1, 0x52, 0x28, 0x5d, 0x41, 0x7d, 0x8b, 0x0a, 0xa1, 0x64, 0x95, 0x5d, + 0x85, 0x4b, 0xfd, 0xbd, 0xde, 0x33, 0x9d, 0x67, 0x8a, 0xbb, 0xb0, 0xc6, 0x36, 0x41, 0x91, 0x10, + 0xbc, 0xf8, 0x1a, 0x56, 0x49, 0xd0, 0x88, 0xb0, 0xaf, 0xac, 0xd3, 0x71, 0x1f, 0xc2, 0x06, 0x5c, + 0x00, 0x29, 0xd8, 0x15, 0x9e, 0xb5, 0xd7, 0x39, 0xdc, 0xef, 0xf6, 0x95, 0x0d, 0x6c, 0x04, 0x41, + 0x78, 0xcb, 0x59, 0x5c, 0x4c, 0x22, 0xb6, 0x2e, 0x91, 0x24, 0x43, 0xd8, 0xb3, 0x86, 0xd6, 0x6d, + 0x77, 0x1f, 0xf7, 0x95, 0xcd, 0xb8, 0xe4, 0x96, 0xa6, 0xf5, 0xb4, 0xbe, 0x72, 0x39, 0x06, 0xf4, + 0x07, 0x8d, 0xc1, 0x61, 0x5f, 0xb9, 0x12, 0xb7, 0xf2, 0x40, 0xeb, 0x35, 0x5b, 0xfd, 0x7e, 0xa7, + 0xdd, 0x1f, 0x28, 0x57, 0xd9, 0x65, 0xd8, 0x48, 0x5a, 0x14, 0x11, 0xd7, 0xa5, 0x86, 0x6a, 0x8f, + 0x5b, 0x03, 0xe5, 0x5a, 0xdc, 0x8c, 0x66, 0xaf, 0xd3, 0x69, 0xd0, 0xc1, 0xd4, 0x75, 0x24, 0xa2, + 0x13, 0x3b, 0xd1, 0x9b, 0x57, 0xb0, 0x5d, 0x87, 0x5d, 0x19, 0x74, 0x43, 0x5a, 0x1a, 0xfd, 0xd6, + 0x4f, 0x0e, 0x5b, 0xdd, 0x66, 0x4b, 0x79, 0x35, 0x59, 0x1a, 0x31, 0xec, 0x66, 0xbc, 0x34, 0x62, + 0xd0, 0xad, 0xb8, 0xce, 0x08, 0xd4, 0x57, 0xb6, 0xb0, 0x3c, 0xd1, 0x8e, 0x6e, 0xb7, 0xd5, 0x1c, + 0x60, 0x5f, 0x6f, 0xc7, 0xa3, 0x78, 0x78, 0xf0, 0x58, 0x6b, 0xec, 0xb4, 0x14, 0x15, 0x21, 0x5a, + 0xab, 0xdb, 0xd8, 0x8f, 0x66, 0xfb, 0xb5, 0xed, 0x2a, 0xbd, 0x76, 0x2c, 0xc4, 0xa5, 0xfa, 0x39, + 0x30, 0xf9, 0xd9, 0x50, 0xf1, 0x32, 0x18, 0x83, 0xdc, 0xd8, 0xf7, 0x26, 0xd1, 0x55, 0x71, 0xfc, + 0x46, 0x5b, 0x6d, 0x3a, 0x1b, 0xd2, 0xe9, 0x52, 0x72, 0x97, 0x54, 0x06, 0xa9, 0x7f, 0x94, 0x81, + 0x5a, 0x5a, 0x54, 0xa2, 0x8a, 0x68, 0x8f, 0x75, 0xd7, 0x0b, 0xf9, 0x93, 0x53, 0x41, 0xe4, 0x89, + 0xb2, 0xc7, 0x5d, 0x2f, 0xa4, 0x37, 0xa7, 0xc8, 0x74, 0x8c, 0x25, 0x1f, 0x2f, 0x35, 0x4e, 0xb3, + 0x36, 0x5c, 0x4a, 0xbd, 0xaa, 0x9a, 0x7a, 0xf0, 0xab, 0x1e, 0xbf, 0x05, 0x39, 0xd7, 0x7e, 0x8d, + 0x05, 0x8b, 0x7d, 0x52, 0x20, 0x1b, 0x7c, 0xed, 0x08, 0x47, 0x00, 0x7e, 0xaa, 0x7b, 0xb0, 0x96, + 0x92, 0xcc, 0x64, 0xf1, 0x8f, 0xd3, 0x2d, 0x2d, 0xd9, 0xe3, 0x17, 0x37, 0x53, 0xfd, 0xc3, 0x0c, + 0x54, 0x65, 0x39, 0xfd, 0xbd, 0x4b, 0xa2, 0x3b, 0x23, 0xe2, 0x5b, 0xb7, 0xcd, 0xe8, 0xa9, 0xa9, + 0x08, 0xd4, 0xa6, 0x57, 0xde, 0xb9, 0x0f, 0x76, 0xf7, 0xa4, 0x1f, 0x77, 0x47, 0x06, 0xa1, 0xc9, + 0x4c, 0x77, 0x09, 0x77, 0x9f, 0x20, 0x81, 0xb8, 0x75, 0x92, 0x40, 0xd4, 0x5b, 0x50, 0xde, 0x3d, + 0x89, 0x02, 0x06, 0xe4, 0x87, 0xd7, 0xca, 0xfc, 0x02, 0xb2, 0xfa, 0x27, 0x19, 0xa8, 0x25, 0x8f, + 0x69, 0x50, 0x18, 0x22, 0x7f, 0x8d, 0x97, 0x2f, 0x87, 0x55, 0x73, 0x98, 0x3c, 0x00, 0xbf, 0x2a, + 0x3f, 0x00, 0xff, 0x9a, 0x28, 0x2c, 0x2b, 0x4b, 0xb3, 0xb8, 0x2e, 0x71, 0xbd, 0xf9, 0x21, 0x54, + 0xf1, 0xbf, 0x66, 0x8d, 0x2d, 0xdf, 0xb7, 0xa2, 0x87, 0x89, 0x17, 0x88, 0x53, 0x44, 0x64, 0x91, + 0x58, 0x63, 0xa1, 0x18, 0x2d, 0x7d, 0xef, 0x03, 0xf1, 0xea, 0xbf, 0xc8, 0x41, 0x45, 0xd2, 0x7a, + 0xbe, 0xd3, 0xf2, 0xbb, 0x01, 0xe5, 0xe4, 0x25, 0x09, 0x71, 0xa7, 0x34, 0x06, 0xa4, 0xe6, 0x2a, + 0x3b, 0x37, 0x57, 0x75, 0x28, 0x8a, 0x78, 0x45, 0xe1, 0xf7, 0x8c, 0x92, 0x69, 0xc7, 0x5e, 0xfe, + 0x05, 0xae, 0xf7, 0x0f, 0xa0, 0x2a, 0x79, 0xe5, 0xa2, 0x67, 0x69, 0xe6, 0xe9, 0x2b, 0x89, 0x87, + 0x2e, 0x60, 0x97, 0xa1, 0x30, 0x3e, 0xd1, 0xcd, 0x61, 0xe4, 0xe6, 0xcc, 0x8f, 0x4f, 0x76, 0x86, + 0x74, 0x74, 0x31, 0x8e, 0x05, 0x3d, 0xf7, 0x95, 0x94, 0xc6, 0x91, 0x38, 0xbf, 0x0b, 0xc5, 0xf1, + 0x09, 0xbf, 0xb0, 0x56, 0x96, 0x43, 0x70, 0x92, 0x21, 0x2f, 0x8c, 0x4f, 0xe8, 0x7a, 0xdb, 0xa7, + 0xa0, 0xcc, 0xf9, 0x54, 0x03, 0x71, 0x56, 0x38, 0xdf, 0xa8, 0xf5, 0xb4, 0x7b, 0x35, 0x60, 0xef, + 0xc1, 0xa6, 0x90, 0xbc, 0x46, 0xa0, 0xf3, 0x08, 0x7a, 0x7a, 0x9c, 0x84, 0xbf, 0xe0, 0xb6, 0xc1, + 0x71, 0x8d, 0xa0, 0x4f, 0x18, 0x5c, 0xac, 0x2a, 0x54, 0xa5, 0xb5, 0xcb, 0x5f, 0x7e, 0x29, 0x6b, + 0x29, 0x18, 0x7b, 0x04, 0xd5, 0xf1, 0x09, 0x5f, 0x0b, 0x03, 0x6f, 0xdf, 0x12, 0x51, 0xd1, 0x9b, + 0xf3, 0xab, 0x80, 0x82, 0x67, 0x53, 0x94, 0xec, 0x5d, 0x60, 0xbe, 0x15, 0x5a, 0x2e, 0xf5, 0xc4, + 0xb4, 0x0c, 0xd3, 0xb1, 0x5d, 0x8b, 0x94, 0xad, 0xac, 0xb6, 0x11, 0x63, 0x76, 0x04, 0x42, 0xfd, + 0x97, 0x19, 0xa8, 0x25, 0xda, 0x2f, 0x6e, 0x68, 0x76, 0x4f, 0x7e, 0x92, 0xbb, 0x3e, 0xaf, 0x20, + 0x23, 0xc9, 0xfd, 0xc1, 0xf9, 0x94, 0x3f, 0xdb, 0xb9, 0xec, 0xf9, 0x9e, 0x65, 0x2e, 0xd7, 0xec, + 0x32, 0x97, 0xab, 0xfa, 0x18, 0xb2, 0x83, 0xf3, 0x29, 0xf7, 0xb4, 0xa0, 0x0c, 0xe4, 0x56, 0x19, + 0x97, 0x7e, 0x14, 0x31, 0xf0, 0xa4, 0xf5, 0x25, 0xbf, 0x4f, 0x7f, 0xa0, 0xb5, 0xf7, 0x1b, 0xda, + 0x97, 0x14, 0x0b, 0x42, 0x5a, 0xc2, 0x6e, 0x4f, 0x6b, 0xb5, 0x1f, 0x77, 0x09, 0x90, 0x23, 0x3f, + 0x4c, 0xd2, 0xc4, 0x86, 0x69, 0xee, 0x9e, 0xc8, 0xaf, 0x98, 0x64, 0x52, 0xaf, 0x98, 0xa4, 0xaf, + 0xe0, 0xae, 0xce, 0x5f, 0xc1, 0x65, 0xf1, 0x8e, 0x8e, 0xd9, 0x03, 0x7b, 0x13, 0x72, 0xe3, 0x13, + 0xeb, 0x3c, 0x6d, 0xe2, 0xa4, 0x37, 0x23, 0x11, 0xa8, 0xbf, 0xc8, 0x00, 0x4b, 0x35, 0x84, 0x6b, + 0xdd, 0xdf, 0xb7, 0x2d, 0x9f, 0x40, 0x5d, 0xbc, 0x71, 0xc9, 0xa9, 0x24, 0x1f, 0xaf, 0x18, 0xd2, + 0xcb, 0x5e, 0x12, 0x6b, 0x97, 0xbc, 0x30, 0xc4, 0xde, 0x03, 0xfe, 0xc8, 0x20, 0x2e, 0x90, 0xb4, + 0x53, 0x43, 0xe2, 0x15, 0x5a, 0x42, 0x93, 0xbc, 0x2a, 0x28, 0xbf, 0x96, 0xc8, 0xdd, 0xc3, 0xeb, + 0xc9, 0xac, 0x11, 0xff, 0x50, 0x7f, 0x37, 0x03, 0x97, 0xd2, 0x0b, 0xe2, 0x97, 0xeb, 0x65, 0xfa, + 0x69, 0xc8, 0xec, 0xfc, 0xd3, 0x90, 0xcb, 0xd6, 0x53, 0x6e, 0xe9, 0x7a, 0xfa, 0x3b, 0x19, 0xd8, + 0x94, 0x46, 0x3f, 0xb1, 0x93, 0xfe, 0x86, 0x5a, 0x26, 0xbd, 0x10, 0x99, 0x4b, 0xbd, 0x10, 0xa9, + 0xfe, 0x41, 0x06, 0xae, 0xcc, 0xb5, 0x44, 0xb3, 0xfe, 0x46, 0xdb, 0x92, 0x7e, 0x49, 0x92, 0x5c, + 0xd4, 0x3c, 0xf8, 0x90, 0x5f, 0x14, 0x64, 0xe9, 0xa7, 0x21, 0xe9, 0xa6, 0xf4, 0xbf, 0x4a, 0x37, + 0xd2, 0x4c, 0xee, 0xfd, 0xb0, 0x8f, 0xa0, 0x92, 0x68, 0x4c, 0xd1, 0xd3, 0x1d, 0x4b, 0x2f, 0x0d, + 0xc9, 0x74, 0x4b, 0xd9, 0xe8, 0xea, 0x77, 0x63, 0xa3, 0x8f, 0xa0, 0x1a, 0x17, 0xbc, 0x63, 0x8d, + 0xd3, 0xde, 0x88, 0xb9, 0xa7, 0xa6, 0x52, 0x94, 0xea, 0x87, 0xb0, 0x91, 0xf4, 0xa2, 0x29, 0x9e, + 0x47, 0xbb, 0x05, 0x15, 0xd7, 0x3a, 0xd5, 0xa3, 0xc7, 0xd3, 0x44, 0x14, 0x8d, 0x6b, 0x9d, 0x0a, + 0x02, 0x75, 0x57, 0xe6, 0x7b, 0xf1, 0x4b, 0xf7, 0x8e, 0x29, 0xcf, 0x4c, 0xd1, 0x73, 0xcc, 0x08, + 0x85, 0xa5, 0x49, 0x13, 0x53, 0x74, 0xad, 0x53, 0x5a, 0x73, 0xa7, 0xa2, 0x9c, 0x86, 0x69, 0x8a, + 0x03, 0xf3, 0x65, 0x8f, 0x0e, 0x5d, 0x83, 0xd2, 0xd4, 0x4f, 0xcd, 0x6c, 0x71, 0xea, 0xf3, 0x6a, + 0xef, 0x88, 0x18, 0x9d, 0x8b, 0x0e, 0xd7, 0x79, 0xd4, 0x8e, 0xf8, 0x25, 0x8c, 0x5c, 0xf2, 0x4b, + 0x18, 0x1f, 0x09, 0x96, 0x87, 0xfb, 0x4f, 0xd4, 0x1c, 0x1f, 0xa2, 0x67, 0xee, 0xae, 0xd1, 0x21, + 0x3a, 0x69, 0x80, 0xd6, 0xd7, 0x22, 0x4c, 0x08, 0x3f, 0xd5, 0x6d, 0xa8, 0x48, 0x96, 0x1d, 0xaa, + 0x26, 0x92, 0x57, 0x24, 0x48, 0x3f, 0xec, 0x92, 0x0c, 0x90, 0x56, 0x49, 0x9c, 0x22, 0x81, 0xfa, + 0x7b, 0x00, 0x90, 0xe0, 0x52, 0x0a, 0x43, 0x66, 0x4e, 0x61, 0x78, 0xa9, 0x13, 0xf9, 0x0f, 0xa1, + 0x36, 0xf2, 0xa6, 0xe7, 0x7a, 0x92, 0x23, 0xbb, 0x34, 0x47, 0x15, 0xa9, 0x06, 0xc9, 0x8d, 0x9b, + 0xc5, 0x93, 0xd6, 0xdc, 0xd2, 0x93, 0xd6, 0x0f, 0xa0, 0xc8, 0x1d, 0xf7, 0x81, 0xb8, 0xb1, 0x75, + 0x75, 0xbe, 0x9f, 0xf7, 0x45, 0x34, 0x6a, 0x44, 0xc7, 0x5a, 0x68, 0x95, 0x8b, 0x97, 0x14, 0xe5, + 0xfb, 0x5b, 0x37, 0x17, 0x73, 0x46, 0x64, 0xfc, 0xf9, 0x2e, 0x43, 0x4e, 0x4a, 0x4a, 0x42, 0x38, + 0x11, 0xde, 0x24, 0x52, 0x12, 0x8a, 0xb2, 0x92, 0x30, 0x98, 0x70, 0x1f, 0x12, 0x2a, 0x09, 0xef, + 0xc2, 0x25, 0x11, 0x15, 0x8f, 0x19, 0x70, 0x38, 0x89, 0x9e, 0x07, 0x40, 0x89, 0xd7, 0x36, 0x06, + 0x13, 0xd2, 0xbe, 0x91, 0xfc, 0x0b, 0xd8, 0x1c, 0x1d, 0x1b, 0xee, 0x91, 0xa5, 0x87, 0x43, 0x47, + 0xa7, 0x87, 0xbc, 0xf5, 0x89, 0x31, 0x15, 0x6a, 0xcf, 0x9b, 0x0b, 0x8d, 0x6d, 0x12, 0xf1, 0x60, + 0xe8, 0x50, 0x84, 0x4e, 0x7c, 0x1e, 0xbf, 0x31, 0x9a, 0x87, 0xcf, 0x9d, 0x46, 0xc1, 0xfc, 0x69, + 0xd4, 0x82, 0x36, 0x53, 0x59, 0xd4, 0x66, 0xae, 0xff, 0x87, 0x1c, 0x14, 0x44, 0x74, 0xde, 0x3d, + 0xc8, 0x99, 0xbe, 0x37, 0x8d, 0x83, 0xe8, 0x96, 0x68, 0x17, 0xf4, 0xab, 0x3f, 0xa8, 0x88, 0xdc, + 0x87, 0x82, 0x61, 0x9a, 0xfa, 0xf8, 0x24, 0x7d, 0x62, 0x34, 0x27, 0xe8, 0xf7, 0x56, 0xb4, 0xbc, + 0x41, 0x12, 0xff, 0x13, 0x28, 0x23, 0x3d, 0x77, 0x86, 0xa5, 0xec, 0xa5, 0x45, 0x91, 0xbc, 0xb7, + 0xa2, 0x95, 0x8c, 0x48, 0x3c, 0xff, 0x28, 0xed, 0x7b, 0xe3, 0xf2, 0xf2, 0xfa, 0x42, 0xd6, 0x8b, + 0xbc, 0x70, 0xbf, 0x0e, 0xdc, 0x19, 0x13, 0x73, 0x9b, 0xbc, 0x7c, 0x38, 0xb1, 0xc0, 0x9b, 0xf6, + 0x56, 0x34, 0xbe, 0xe7, 0x22, 0x5e, 0xf5, 0x51, 0xe4, 0x17, 0x8b, 0x7f, 0x9f, 0x63, 0xc9, 0xc8, + 0x20, 0xaf, 0x88, 0x9d, 0x63, 0xc4, 0x38, 0x30, 0x9b, 0x69, 0x46, 0x61, 0x3b, 0xc5, 0x85, 0x6c, + 0x31, 0x47, 0xa2, 0x6c, 0x31, 0x7b, 0x7a, 0x04, 0x15, 0x72, 0x51, 0x89, 0x7c, 0xa5, 0x85, 0xa1, + 0x4d, 0x18, 0x0a, 0x39, 0xde, 0x13, 0xf6, 0xd2, 0x8c, 0xfa, 0xe9, 0x5b, 0xb2, 0x6f, 0xf3, 0xc6, + 0xd2, 0x81, 0xd2, 0x62, 0x37, 0x27, 0xef, 0xac, 0xc6, 0xf3, 0xb0, 0x6d, 0xa8, 0x1a, 0x92, 0xa4, + 0x11, 0x8e, 0xce, 0x1b, 0x4b, 0xe6, 0x29, 0xa6, 0xa1, 0x32, 0xa4, 0x74, 0x72, 0x00, 0x77, 0x5d, + 0x83, 0x2b, 0xcb, 0x97, 0xb2, 0x1c, 0x49, 0x92, 0xe3, 0x91, 0x24, 0x6a, 0xfa, 0xc5, 0x93, 0xf4, + 0xb5, 0x53, 0x29, 0xae, 0xe4, 0x33, 0xb4, 0x91, 0xe5, 0xcd, 0x5b, 0x81, 0x62, 0xf4, 0x2a, 0x30, + 0x05, 0xaa, 0x36, 0x7b, 0x07, 0x5f, 0x2a, 0x19, 0x04, 0xb7, 0xbb, 0xfd, 0x41, 0xa3, 0x2b, 0x8e, + 0x57, 0xdb, 0x5d, 0x71, 0xbc, 0xaa, 0xfe, 0x9b, 0x2c, 0x94, 0x63, 0xf7, 0xf0, 0xf7, 0x37, 0x8c, + 0x63, 0x8b, 0x33, 0x2b, 0x5b, 0x9c, 0x73, 0x9a, 0x9a, 0xfc, 0x8c, 0xc8, 0x7a, 0x5a, 0x1f, 0x0a, + 0x16, 0x6f, 0xc4, 0xe5, 0xbf, 0xe3, 0x8d, 0x38, 0x39, 0x32, 0xb1, 0x90, 0x8e, 0x4c, 0x9c, 0x7b, + 0x19, 0xba, 0x48, 0x61, 0x2a, 0xf2, 0xcb, 0xd0, 0x17, 0xc6, 0xa7, 0x94, 0x2e, 0x8e, 0x4f, 0xa1, + 0x9f, 0x36, 0x7b, 0x6a, 0x5b, 0xa7, 0x22, 0x40, 0x4f, 0xa4, 0xd2, 0xe2, 0x03, 0x5e, 0x20, 0x3e, + 0xbe, 0x03, 0x2b, 0x62, 0x0f, 0x60, 0x73, 0x7c, 0x12, 0xbf, 0x82, 0x99, 0x18, 0x58, 0x55, 0xea, + 0xc6, 0x52, 0x9c, 0xfa, 0xf7, 0x33, 0x00, 0x89, 0x0f, 0xf5, 0x97, 0x76, 0xf0, 0x48, 0x36, 0x74, + 0xf6, 0x5b, 0x6c, 0xe8, 0x17, 0x3c, 0xb5, 0xa1, 0x7e, 0x0d, 0xe5, 0xd8, 0x6b, 0xfe, 0xfd, 0xd7, + 0xd8, 0x4b, 0x55, 0xf9, 0x9b, 0x91, 0xb3, 0x2b, 0x76, 0x3b, 0xff, 0xb2, 0x63, 0x91, 0xaa, 0x3e, + 0xfb, 0x82, 0xea, 0xcf, 0xb8, 0xc7, 0x29, 0xae, 0xfc, 0x57, 0xbc, 0xb1, 0xe4, 0x35, 0x9f, 0x4b, + 0xad, 0x79, 0x75, 0x26, 0xdc, 0x66, 0xbf, 0x7c, 0xd5, 0x2f, 0xd5, 0xe1, 0xbf, 0xca, 0x44, 0xbe, + 0x9d, 0xf8, 0x6d, 0xd1, 0x0b, 0x15, 0xad, 0xe5, 0xee, 0xa9, 0x97, 0xa9, 0xee, 0x5b, 0xad, 0xcd, + 0xdc, 0xb7, 0x59, 0x9b, 0x6f, 0x42, 0x9e, 0x0b, 0x84, 0xfc, 0x45, 0x96, 0x26, 0xc7, 0xbf, 0xf0, + 0x35, 0x7e, 0x55, 0x15, 0x8a, 0x25, 0xef, 0xef, 0x66, 0x54, 0x6e, 0xf4, 0x4b, 0x02, 0x98, 0x40, + 0x63, 0xbf, 0x9c, 0x18, 0x9d, 0x2f, 0x3f, 0x26, 0xbf, 0x32, 0x73, 0xf3, 0x9f, 0xae, 0xc2, 0x5a, + 0xea, 0xc0, 0xec, 0x7b, 0x34, 0x66, 0x29, 0x37, 0xcf, 0x2e, 0xe7, 0xe6, 0xdf, 0xe7, 0x11, 0xa9, + 0xff, 0x23, 0x12, 0x20, 0x15, 0x63, 0x56, 0x4a, 0xc7, 0x98, 0x21, 0x37, 0xad, 0xa6, 0xb4, 0xf2, + 0x65, 0xfa, 0x7b, 0x66, 0xa9, 0xfe, 0x7e, 0x33, 0xfe, 0x21, 0xaf, 0xf6, 0x0e, 0x37, 0x2c, 0xd7, + 0x34, 0x09, 0xc2, 0x3e, 0x85, 0x6b, 0x5c, 0xab, 0xe1, 0x8a, 0x9c, 0xee, 0x8d, 0xf5, 0xf8, 0x67, + 0xbe, 0x44, 0xdc, 0xdc, 0x15, 0x4e, 0xc0, 0x7f, 0xaa, 0x61, 0xdc, 0x88, 0xb0, 0x6a, 0x1b, 0xd6, + 0x52, 0xa7, 0x97, 0xd2, 0x4f, 0x06, 0x66, 0xe4, 0x9f, 0x0c, 0x64, 0x5b, 0x90, 0x3f, 0x3d, 0xb6, + 0x7c, 0x6b, 0xc9, 0x63, 0x8b, 0x1c, 0xa1, 0xfe, 0x10, 0xaa, 0x72, 0x24, 0x05, 0x7b, 0x07, 0xf2, + 0x76, 0x68, 0x4d, 0x22, 0xdb, 0xea, 0xca, 0x62, 0xb0, 0x05, 0x19, 0xd2, 0x9c, 0x48, 0xfd, 0x79, + 0x06, 0x94, 0x79, 0x9c, 0xf4, 0xbb, 0x86, 0x99, 0x0b, 0x7e, 0xd7, 0x70, 0x35, 0xd5, 0xc8, 0x65, + 0x3f, 0x4d, 0x18, 0x3f, 0xf8, 0x96, 0xbb, 0xe0, 0xc1, 0x37, 0xf6, 0x06, 0x94, 0x7c, 0x8b, 0x7e, + 0x34, 0xce, 0x5c, 0x12, 0xcb, 0x1c, 0xe3, 0xd4, 0xdf, 0xc9, 0x40, 0x51, 0x84, 0x7d, 0x2c, 0x35, + 0x76, 0xdf, 0x82, 0x22, 0xff, 0x01, 0xb9, 0xc8, 0xf8, 0x5f, 0x88, 0x83, 0x8c, 0xf0, 0xec, 0x26, + 0x0f, 0x86, 0x49, 0x1b, 0xbf, 0x07, 0x8e, 0xe1, 0x6a, 0x04, 0x17, 0xbf, 0xc0, 0x62, 0x4c, 0xc4, + 0xc5, 0x3e, 0xfe, 0x0e, 0x07, 0x10, 0x88, 0xdf, 0xe1, 0xfb, 0x11, 0x14, 0x45, 0x58, 0xc9, 0xd2, + 0xa6, 0xbc, 0xe8, 0xa7, 0xd3, 0xb6, 0x00, 0x92, 0x38, 0x93, 0x65, 0x25, 0xa8, 0xf7, 0xa0, 0x14, + 0x85, 0x96, 0xe0, 0xfa, 0x4b, 0xaa, 0x16, 0xb1, 0xea, 0x72, 0x63, 0x1c, 0xf1, 0xfe, 0x70, 0xc7, + 0x1b, 0x9d, 0x90, 0x57, 0xed, 0x3d, 0xa0, 0x18, 0xfe, 0xc1, 0xc2, 0x83, 0x25, 0xe9, 0xb7, 0x9e, + 0x63, 0x22, 0x76, 0x0f, 0x62, 0x76, 0xfc, 0x22, 0x6b, 0x59, 0x6d, 0x44, 0x77, 0x49, 0x68, 0x95, + 0x3d, 0x14, 0xde, 0xa3, 0x0e, 0x3d, 0x2d, 0x94, 0x72, 0xd8, 0xa4, 0xda, 0xa4, 0x49, 0x64, 0x6a, + 0x0d, 0xaa, 0xf2, 0x79, 0xb8, 0xda, 0x80, 0x8d, 0x7d, 0x2b, 0x34, 0x90, 0x67, 0xf5, 0x47, 0x86, + 0x8b, 0xf4, 0x7c, 0xfd, 0xe2, 0x47, 0x7a, 0xfd, 0xce, 0xd3, 0x69, 0x9c, 0x48, 0xfd, 0x79, 0x0e, + 0x94, 0x79, 0x1c, 0x32, 0x93, 0xf8, 0x0e, 0x67, 0x26, 0x7a, 0xc7, 0xde, 0x89, 0x7f, 0x86, 0x88, + 0xd6, 0x45, 0xea, 0x37, 0x76, 0x38, 0x48, 0x0a, 0x58, 0x4d, 0x3d, 0x08, 0x5f, 0xb2, 0x83, 0x3d, + 0xfe, 0x24, 0xfc, 0x55, 0xfe, 0xda, 0x86, 0xe3, 0x8d, 0x68, 0x59, 0x57, 0xe9, 0x71, 0x8d, 0x8e, + 0x37, 0xa2, 0x87, 0x88, 0x84, 0xc1, 0xcd, 0x83, 0xb4, 0xaa, 0x5a, 0x49, 0x58, 0xd9, 0x74, 0x68, + 0x20, 0xc2, 0x58, 0xc3, 0x40, 0x5c, 0x49, 0x2a, 0x71, 0xc0, 0x20, 0x88, 0x9e, 0xc9, 0x1d, 0x89, + 0x1f, 0x84, 0xc9, 0xd2, 0x33, 0xb9, 0x4d, 0x97, 0x6e, 0xeb, 0xd0, 0xef, 0x17, 0x8d, 0xc4, 0xef, + 0x4b, 0x89, 0x47, 0x88, 0x11, 0xf5, 0x1a, 0xff, 0xc9, 0x1c, 0xdf, 0x0a, 0x02, 0xfe, 0xae, 0x56, + 0x59, 0x3c, 0x2d, 0x24, 0x80, 0xf1, 0x03, 0x5e, 0xe2, 0x07, 0x8b, 0x90, 0x04, 0xc4, 0x03, 0x5e, + 0xfc, 0xe7, 0x8a, 0x90, 0xe0, 0x1a, 0x94, 0xbe, 0xf1, 0x5c, 0x8b, 0x0c, 0xf7, 0x0a, 0xb5, 0xaa, + 0x88, 0xe9, 0x7d, 0x63, 0xaa, 0xfe, 0x59, 0x06, 0x36, 0xe7, 0x47, 0x95, 0x16, 0x4c, 0x15, 0x4a, + 0xcd, 0x5e, 0x47, 0xef, 0x36, 0xf6, 0x5b, 0xca, 0x0a, 0x5b, 0x87, 0x4a, 0x6f, 0xfb, 0xf3, 0x56, + 0x73, 0xc0, 0x01, 0x19, 0xba, 0xb9, 0xd9, 0xd7, 0xf7, 0xda, 0x3b, 0x3b, 0xad, 0x2e, 0xb7, 0x52, + 0x7a, 0xdb, 0x9f, 0xeb, 0x9d, 0x5e, 0x93, 0xff, 0xbe, 0x49, 0x74, 0xfa, 0xde, 0x57, 0x72, 0x74, + 0xe2, 0x4d, 0x31, 0xa1, 0x98, 0xcc, 0xf3, 0x90, 0xc7, 0x67, 0x7d, 0xbd, 0xd9, 0x1d, 0x28, 0x05, + 0x4c, 0x75, 0x0f, 0x3b, 0x1d, 0x4a, 0x51, 0x6c, 0x53, 0xb3, 0xb7, 0x7f, 0xa0, 0xb5, 0xfa, 0x7d, + 0xbd, 0xdf, 0xfe, 0x69, 0x4b, 0x29, 0x51, 0xcd, 0x5a, 0xfb, 0x71, 0xbb, 0xcb, 0x01, 0x65, 0x56, + 0x84, 0xec, 0x7e, 0xbb, 0xcb, 0x6f, 0xac, 0xee, 0x37, 0xbe, 0x50, 0x2a, 0xf8, 0xd1, 0x3f, 0xdc, + 0x57, 0xaa, 0xf7, 0x6e, 0x43, 0x55, 0xfe, 0x91, 0x30, 0x8a, 0x72, 0xf4, 0x5c, 0x8b, 0x3f, 0xa6, + 0xdb, 0xf9, 0xe6, 0x43, 0x25, 0x73, 0xef, 0x37, 0xa5, 0x1f, 0x5f, 0x20, 0x1a, 0x71, 0x18, 0x40, + 0xf7, 0xf3, 0xf8, 0xfd, 0x3f, 0x72, 0xfd, 0xd3, 0x75, 0xc1, 0xbd, 0x46, 0x7f, 0x8f, 0x1f, 0x13, + 0x08, 0x0c, 0x01, 0xb2, 0xc9, 0x23, 0xac, 0x74, 0xfd, 0x96, 0x3e, 0xe3, 0xc3, 0xf6, 0x3c, 0xdd, + 0x8c, 0x6c, 0xf7, 0xb1, 0x73, 0x0a, 0x54, 0xf1, 0x2b, 0xc6, 0x15, 0xef, 0xa9, 0x50, 0x91, 0x5e, + 0xc9, 0xa6, 0x3a, 0x8c, 0xe0, 0x58, 0xbc, 0xeb, 0x8a, 0xe6, 0xa6, 0x92, 0xb9, 0xf7, 0x06, 0x4a, + 0x0c, 0xf9, 0x8d, 0x6a, 0x80, 0x42, 0xd7, 0xf3, 0x27, 0x86, 0x23, 0xe8, 0xac, 0x59, 0x80, 0x74, + 0xef, 0xc1, 0xe5, 0xa5, 0x2f, 0x6e, 0x53, 0xa4, 0xae, 0x3d, 0x99, 0x3a, 0x16, 0x0f, 0x36, 0xdd, + 0x3b, 0x1f, 0xfa, 0xb6, 0xa9, 0x64, 0xee, 0x3d, 0x8a, 0xae, 0xf0, 0x45, 0x75, 0x77, 0x7a, 0x8d, + 0x1d, 0x3e, 0xb9, 0xf1, 0xf5, 0xe0, 0xc1, 0x36, 0x7f, 0xb3, 0x55, 0x6b, 0xf5, 0x0f, 0x3b, 0x03, + 0x71, 0x15, 0xf9, 0xde, 0x67, 0x50, 0xbf, 0x28, 0xea, 0x12, 0x5b, 0xd4, 0xdc, 0x6b, 0x50, 0x64, + 0x2b, 0x4e, 0x66, 0x4f, 0xe7, 0xa9, 0x0c, 0x0f, 0x0c, 0xee, 0xb4, 0x28, 0x22, 0xe3, 0xde, 0xcf, + 0x32, 0x12, 0x0b, 0x8b, 0x22, 0xe7, 0x62, 0x80, 0x98, 0x25, 0x19, 0xa4, 0x59, 0x86, 0xa9, 0x64, + 0xd8, 0x15, 0x60, 0x29, 0x50, 0xc7, 0x1b, 0x19, 0x8e, 0xb2, 0x4a, 0xb1, 0x17, 0x11, 0x9c, 0xe2, + 0x9b, 0x95, 0x2c, 0x7b, 0x15, 0xae, 0xc5, 0xb0, 0x8e, 0x77, 0x7a, 0xe0, 0xdb, 0x68, 0x6b, 0x9f, + 0x73, 0x74, 0x6e, 0xfb, 0xc7, 0x7f, 0xfa, 0x8b, 0x9b, 0x99, 0x7f, 0xf7, 0x8b, 0x9b, 0x99, 0xff, + 0xfa, 0x8b, 0x9b, 0x2b, 0x3f, 0xff, 0x6f, 0x37, 0x33, 0x3f, 0x95, 0x7f, 0x4a, 0x7c, 0x62, 0x84, + 0xbe, 0x7d, 0xc6, 0x37, 0x4d, 0x94, 0x70, 0xad, 0xf7, 0xa6, 0x27, 0x47, 0xef, 0x4d, 0x87, 0xef, + 0x21, 0x67, 0x1a, 0x16, 0xe8, 0x47, 0xc3, 0x1f, 0xfe, 0xef, 0x00, 0x00, 0x00, 0xff, 0xff, 0xcf, + 0x7b, 0xfd, 0x0a, 0x94, 0x7c, 0x00, 0x00, } func (m *Type) Marshal() (dAtA []byte, err error) { @@ -17663,15 +17735,71 @@ func (m *AnalyzeInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { if m.DeletedRows != 0 { i = encodeVarintPlan(dAtA, i, uint64(m.DeletedRows)) i-- - dAtA[i] = 0x1 + dAtA[i] = 0x2 i-- - dAtA[i] = 0xc0 + dAtA[i] = 0x80 } if m.WrittenRows != 0 { i = encodeVarintPlan(dAtA, i, uint64(m.WrittenRows)) i-- dAtA[i] = 0x1 i-- + dAtA[i] = 0xf8 + } + if m.CacheRemoteHit != 0 { + i = encodeVarintPlan(dAtA, i, uint64(m.CacheRemoteHit)) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xf0 + } + if m.CacheRemoteRead != 0 { + i = encodeVarintPlan(dAtA, i, uint64(m.CacheRemoteRead)) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xe8 + } + if m.CacheDiskHit != 0 { + i = encodeVarintPlan(dAtA, i, uint64(m.CacheDiskHit)) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xe0 + } + if m.CacheDiskRead != 0 { + i = encodeVarintPlan(dAtA, i, uint64(m.CacheDiskRead)) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xd8 + } + if m.CacheMemoryHit != 0 { + i = encodeVarintPlan(dAtA, i, uint64(m.CacheMemoryHit)) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xd0 + } + if m.CacheMemoryRead != 0 { + i = encodeVarintPlan(dAtA, i, uint64(m.CacheMemoryRead)) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xc8 + } + if m.CacheHit != 0 { + i = encodeVarintPlan(dAtA, i, uint64(m.CacheHit)) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xc0 + } + if m.CacheRead != 0 { + i = encodeVarintPlan(dAtA, i, uint64(m.CacheRead)) + i-- + dAtA[i] = 0x1 + i-- dAtA[i] = 0xb8 } if m.S3DeleteMul != 0 { @@ -26005,6 +26133,30 @@ func (m *AnalyzeInfo) ProtoSize() (n int) { if m.S3DeleteMul != 0 { n += 2 + sovPlan(uint64(m.S3DeleteMul)) } + if m.CacheRead != 0 { + n += 2 + sovPlan(uint64(m.CacheRead)) + } + if m.CacheHit != 0 { + n += 2 + sovPlan(uint64(m.CacheHit)) + } + if m.CacheMemoryRead != 0 { + n += 2 + sovPlan(uint64(m.CacheMemoryRead)) + } + if m.CacheMemoryHit != 0 { + n += 2 + sovPlan(uint64(m.CacheMemoryHit)) + } + if m.CacheDiskRead != 0 { + n += 2 + sovPlan(uint64(m.CacheDiskRead)) + } + if m.CacheDiskHit != 0 { + n += 2 + sovPlan(uint64(m.CacheDiskHit)) + } + if m.CacheRemoteRead != 0 { + n += 2 + sovPlan(uint64(m.CacheRemoteRead)) + } + if m.CacheRemoteHit != 0 { + n += 2 + sovPlan(uint64(m.CacheRemoteHit)) + } if m.WrittenRows != 0 { n += 2 + sovPlan(uint64(m.WrittenRows)) } @@ -40590,6 +40742,158 @@ func (m *AnalyzeInfo) Unmarshal(dAtA []byte) error { } } case 23: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CacheRead", wireType) + } + m.CacheRead = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPlan + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.CacheRead |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 24: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CacheHit", wireType) + } + m.CacheHit = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPlan + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.CacheHit |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 25: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CacheMemoryRead", wireType) + } + m.CacheMemoryRead = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPlan + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.CacheMemoryRead |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 26: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CacheMemoryHit", wireType) + } + m.CacheMemoryHit = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPlan + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.CacheMemoryHit |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 27: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CacheDiskRead", wireType) + } + m.CacheDiskRead = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPlan + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.CacheDiskRead |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 28: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CacheDiskHit", wireType) + } + m.CacheDiskHit = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPlan + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.CacheDiskHit |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 29: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CacheRemoteRead", wireType) + } + m.CacheRemoteRead = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPlan + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.CacheRemoteRead |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 30: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CacheRemoteHit", wireType) + } + m.CacheRemoteHit = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPlan + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.CacheRemoteHit |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 31: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field WrittenRows", wireType) } @@ -40608,7 +40912,7 @@ func (m *AnalyzeInfo) Unmarshal(dAtA []byte) error { break } } - case 24: + case 32: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field DeletedRows", wireType) } diff --git a/pkg/perfcounter/counter_set.go b/pkg/perfcounter/counter_set.go index 47464386a5b46..179a20613800c 100644 --- a/pkg/perfcounter/counter_set.go +++ b/pkg/perfcounter/counter_set.go @@ -38,15 +38,15 @@ type FileServiceCounterSet struct { } Cache struct { - Read stats.Counter - Hit stats.Counter + Read stats.Counter // CacheRead + Hit stats.Counter // CacheHit Memory struct { - Read stats.Counter - Hit stats.Counter + Read stats.Counter // CacheMemoryRead + Hit stats.Counter // CacheMemoryHit } Disk struct { - Read stats.Counter - Hit stats.Counter + Read stats.Counter // CacheDiskRead + Hit stats.Counter // CacheDiskHit OpenIOEntryFile stats.Counter OpenFullFile stats.Counter CreateFile stats.Counter @@ -56,8 +56,8 @@ type FileServiceCounterSet struct { Evict stats.Counter } Remote struct { - Read stats.Counter - Hit stats.Counter + Read stats.Counter // CacheRemoteRead + Hit stats.Counter // CacheRemoteHit } } diff --git a/pkg/sql/colexec/deletion/deletion.go b/pkg/sql/colexec/deletion/deletion.go index d395182039236..47ae73941e809 100644 --- a/pkg/sql/colexec/deletion/deletion.go +++ b/pkg/sql/colexec/deletion/deletion.go @@ -262,6 +262,7 @@ func (deletion *Deletion) normalDelete(proc *process.Process) (vm.CallResult, er } analyzer.AddDeletedRows(int64(deletion.ctr.resBat.RowCount())) analyzer.AddS3RequestCount(crs) + analyzer.AddFileServiceCacheInfo(crs) analyzer.AddDiskIO(crs) } } @@ -281,6 +282,7 @@ func (deletion *Deletion) normalDelete(proc *process.Process) (vm.CallResult, er } analyzer.AddDeletedRows(int64(deletion.ctr.resBat.RowCount())) analyzer.AddS3RequestCount(crs) + analyzer.AddFileServiceCacheInfo(crs) analyzer.AddDiskIO(crs) } } diff --git a/pkg/sql/colexec/deletion/types.go b/pkg/sql/colexec/deletion/types.go index 1793c6a4e7e2b..5b5f81888e45a 100644 --- a/pkg/sql/colexec/deletion/types.go +++ b/pkg/sql/colexec/deletion/types.go @@ -287,6 +287,7 @@ func (ctr *container) flush(proc *process.Process, analyzer process.Analyzer) (u return 0, err } analyzer.AddS3RequestCount(crs) + analyzer.AddFileServiceCacheInfo(crs) analyzer.AddDiskIO(crs) bat := batch.New([]string{catalog.ObjectMeta_ObjectStats}) diff --git a/pkg/sql/colexec/external/external.go b/pkg/sql/colexec/external/external.go index 6f833cdf33ecc..8d323c7afcb00 100644 --- a/pkg/sql/colexec/external/external.go +++ b/pkg/sql/colexec/external/external.go @@ -1066,6 +1066,7 @@ func scanZonemapFile(ctx context.Context, param *ExternalParam, proc *process.Pr return err } analyzer.AddS3RequestCount(crs) + analyzer.AddFileServiceCacheInfo(crs) analyzer.AddDiskIO(crs) if param.Zoneparam.offset >= len(param.Zoneparam.bs) { diff --git a/pkg/sql/colexec/insert/insert.go b/pkg/sql/colexec/insert/insert.go index 12cfb3c706c0e..8f0b453b64ec8 100644 --- a/pkg/sql/colexec/insert/insert.go +++ b/pkg/sql/colexec/insert/insert.go @@ -237,6 +237,7 @@ func (insert *Insert) insert_table(proc *process.Process, analyzer process.Analy } analyzer.AddWrittenRows(int64(insert.ctr.buf.RowCount())) analyzer.AddS3RequestCount(crs) + analyzer.AddFileServiceCacheInfo(crs) analyzer.AddDiskIO(crs) } } else { @@ -261,6 +262,7 @@ func (insert *Insert) insert_table(proc *process.Process, analyzer process.Analy } analyzer.AddWrittenRows(int64(insert.ctr.buf.RowCount())) analyzer.AddS3RequestCount(crs) + analyzer.AddFileServiceCacheInfo(crs) analyzer.AddDiskIO(crs) } @@ -281,6 +283,7 @@ func writeBatch(proc *process.Process, writer *colexec.S3Writer, bat *batch.Batc return err } analyzer.AddS3RequestCount(crs) + analyzer.AddFileServiceCacheInfo(crs) analyzer.AddDiskIO(crs) err = writer.FillBlockInfoBat(blockInfos, stats, proc.GetMPool()) @@ -300,6 +303,7 @@ func flushTailBatch(proc *process.Process, writer *colexec.S3Writer, result *vm. return err } analyzer.AddS3RequestCount(crs) + analyzer.AddFileServiceCacheInfo(crs) analyzer.AddDiskIO(crs) // if stats is not zero, then the blockInfos must not be nil diff --git a/pkg/sql/colexec/lockop/lock_op.go b/pkg/sql/colexec/lockop/lock_op.go index 70cb9555fdd12..c2a118c868615 100644 --- a/pkg/sql/colexec/lockop/lock_op.go +++ b/pkg/sql/colexec/lockop/lock_op.go @@ -984,6 +984,7 @@ func hasNewVersionInRange( defer func() { if analyzer != nil { analyzer.AddS3RequestCount(crs) + analyzer.AddFileServiceCacheInfo(crs) analyzer.AddDiskIO(crs) } }() diff --git a/pkg/sql/colexec/mergeblock/mergeblock.go b/pkg/sql/colexec/mergeblock/mergeblock.go index 05b5d1c09b4cd..84df15ecc1787 100644 --- a/pkg/sql/colexec/mergeblock/mergeblock.go +++ b/pkg/sql/colexec/mergeblock/mergeblock.go @@ -94,6 +94,7 @@ func (mergeBlock *MergeBlock) Call(proc *process.Process) (vm.CallResult, error) } analyzer.AddWrittenRows(int64(mergeBlock.container.mp[i].RowCount())) analyzer.AddS3RequestCount(crs) + analyzer.AddFileServiceCacheInfo(crs) analyzer.AddDiskIO(crs) } @@ -106,6 +107,7 @@ func (mergeBlock *MergeBlock) Call(proc *process.Process) (vm.CallResult, error) } analyzer.AddWrittenRows(int64(bat.RowCount())) analyzer.AddS3RequestCount(crs) + analyzer.AddFileServiceCacheInfo(crs) analyzer.AddDiskIO(crs) bat.Clean(proc.GetMPool()) @@ -124,6 +126,7 @@ func (mergeBlock *MergeBlock) Call(proc *process.Process) (vm.CallResult, error) } analyzer.AddWrittenRows(int64(mergeBlock.container.mp[0].RowCount())) analyzer.AddS3RequestCount(crs) + analyzer.AddFileServiceCacheInfo(crs) analyzer.AddDiskIO(crs) } @@ -136,6 +139,7 @@ func (mergeBlock *MergeBlock) Call(proc *process.Process) (vm.CallResult, error) } analyzer.AddWrittenRows(int64(bat.RowCount())) analyzer.AddS3RequestCount(crs) + analyzer.AddFileServiceCacheInfo(crs) analyzer.AddDiskIO(crs) bat.Clean(proc.GetMPool()) diff --git a/pkg/sql/colexec/multi_update/delete.go b/pkg/sql/colexec/multi_update/delete.go index 09788b2bae400..4be361f802827 100644 --- a/pkg/sql/colexec/multi_update/delete.go +++ b/pkg/sql/colexec/multi_update/delete.go @@ -91,6 +91,7 @@ func (update *MultiUpdate) delete_table( } analyzer.AddDeletedRows(int64(deleteBatch.RowCount())) analyzer.AddS3RequestCount(crs) + analyzer.AddFileServiceCacheInfo(crs) analyzer.AddDiskIO(crs) } } @@ -137,6 +138,7 @@ func (update *MultiUpdate) delete_table( } analyzer.AddDeletedRows(int64(deleteBatch.RowCount())) analyzer.AddS3RequestCount(crs) + analyzer.AddFileServiceCacheInfo(crs) analyzer.AddDiskIO(crs) } } diff --git a/pkg/sql/colexec/multi_update/insert.go b/pkg/sql/colexec/multi_update/insert.go index 701158068b925..6596a438b600f 100644 --- a/pkg/sql/colexec/multi_update/insert.go +++ b/pkg/sql/colexec/multi_update/insert.go @@ -167,6 +167,7 @@ func (update *MultiUpdate) insert_table( } analyzer.AddWrittenRows(int64(insertBatch.RowCount())) analyzer.AddS3RequestCount(crs) + analyzer.AddFileServiceCacheInfo(crs) analyzer.AddDiskIO(crs) } } @@ -193,6 +194,7 @@ func (update *MultiUpdate) insert_table( } analyzer.AddWrittenRows(int64(insertBatch.RowCount())) analyzer.AddS3RequestCount(crs) + analyzer.AddFileServiceCacheInfo(crs) analyzer.AddDiskIO(crs) } } @@ -255,6 +257,7 @@ func (update *MultiUpdate) check_null_and_insert_table( } analyzer.AddWrittenRows(int64(insertBatch.RowCount())) analyzer.AddS3RequestCount(crs) + analyzer.AddFileServiceCacheInfo(crs) analyzer.AddDiskIO(crs) } @@ -291,6 +294,7 @@ func (update *MultiUpdate) check_null_and_insert_table( } analyzer.AddWrittenRows(int64(insertBatch.RowCount())) analyzer.AddS3RequestCount(crs) + analyzer.AddFileServiceCacheInfo(crs) analyzer.AddDiskIO(crs) } } diff --git a/pkg/sql/colexec/multi_update/multi_update.go b/pkg/sql/colexec/multi_update/multi_update.go index dc24e27305131..79827141ac92e 100644 --- a/pkg/sql/colexec/multi_update/multi_update.go +++ b/pkg/sql/colexec/multi_update/multi_update.go @@ -268,6 +268,7 @@ func (update *MultiUpdate) updateFlushS3Info(proc *process.Process, analyzer pro } analyzer.AddDeletedRows(int64(batBufs[actionDelete].RowCount())) analyzer.AddS3RequestCount(crs) + analyzer.AddFileServiceCacheInfo(crs) analyzer.AddDiskIO(crs) case actionInsert: @@ -292,6 +293,7 @@ func (update *MultiUpdate) updateFlushS3Info(proc *process.Process, analyzer pro } analyzer.AddWrittenRows(int64(batBufs[actionInsert].RowCount())) analyzer.AddS3RequestCount(crs) + analyzer.AddFileServiceCacheInfo(crs) analyzer.AddDiskIO(crs) case actionUpdate: diff --git a/pkg/sql/colexec/multi_update/s3writer.go b/pkg/sql/colexec/multi_update/s3writer.go index 81a6347b16720..4242cc37647c5 100644 --- a/pkg/sql/colexec/multi_update/s3writer.go +++ b/pkg/sql/colexec/multi_update/s3writer.go @@ -423,6 +423,7 @@ func (writer *s3Writer) sortAndSyncOneTable( return } analyzer.AddS3RequestCount(crs) + analyzer.AddFileServiceCacheInfo(crs) analyzer.AddDiskIO(crs) return writer.fillInsertBlockInfo(proc, idx, partitionIdx, blockInfos, objStats, rowCount) @@ -487,6 +488,7 @@ func (writer *s3Writer) sortAndSyncOneTable( return } analyzer.AddS3RequestCount(crs) + analyzer.AddFileServiceCacheInfo(crs) analyzer.AddDiskIO(crs) if isDelete { diff --git a/pkg/sql/colexec/output/output.go b/pkg/sql/colexec/output/output.go index d681e3b58b345..fae73963af2e0 100644 --- a/pkg/sql/colexec/output/output.go +++ b/pkg/sql/colexec/output/output.go @@ -73,6 +73,7 @@ func (output *Output) Call(proc *process.Process) (vm.CallResult, error) { return result, err } analyzer.AddS3RequestCount(crs) + analyzer.AddFileServiceCacheInfo(crs) analyzer.AddDiskIO(crs) // TODO: analyzer.Output(result.Batch) @@ -120,6 +121,7 @@ func (output *Output) Call(proc *process.Process) (vm.CallResult, error) { return result, err } analyzer.AddS3RequestCount(crs) + analyzer.AddFileServiceCacheInfo(crs) analyzer.AddDiskIO(crs) result.Batch = bat diff --git a/pkg/sql/colexec/table_function/metadata_scan.go b/pkg/sql/colexec/table_function/metadata_scan.go index f3cddbc6537cf..f12de766b50de 100644 --- a/pkg/sql/colexec/table_function/metadata_scan.go +++ b/pkg/sql/colexec/table_function/metadata_scan.go @@ -81,6 +81,7 @@ func (s *metadataScanState) start(tf *TableFunction, proc *process.Process, nthR return err } analyzer.AddS3RequestCount(crs) + analyzer.AddFileServiceCacheInfo(crs) analyzer.AddDiskIO(crs) for i := range metaInfos { diff --git a/pkg/sql/colexec/table_scan/table_scan.go b/pkg/sql/colexec/table_scan/table_scan.go index b3332193117b5..c321ce8237019 100644 --- a/pkg/sql/colexec/table_scan/table_scan.go +++ b/pkg/sql/colexec/table_scan/table_scan.go @@ -122,6 +122,7 @@ func (tableScan *TableScan) Call(proc *process.Process) (vm.CallResult, error) { return vm.CancelResult, err } analyzer.AddS3RequestCount(crs) + analyzer.AddFileServiceCacheInfo(crs) analyzer.AddDiskIO(crs) if isEnd { diff --git a/pkg/sql/compile/analyze_module.go b/pkg/sql/compile/analyze_module.go index 9fb88f3001738..f9c8eabd0be4d 100644 --- a/pkg/sql/compile/analyze_module.go +++ b/pkg/sql/compile/analyze_module.go @@ -171,6 +171,16 @@ func applyOpStatsToNode(op *models.PhyOperator, nodes []*plan.Node, scopeParalle node.AnalyzeInfo.S3Delete += op.OpStats.S3Delete node.AnalyzeInfo.S3DeleteMul += op.OpStats.S3DeleteMul node.AnalyzeInfo.DiskIO += op.OpStats.DiskIO + + node.AnalyzeInfo.CacheRead += op.OpStats.CacheRead + node.AnalyzeInfo.CacheHit += op.OpStats.CacheHit + node.AnalyzeInfo.CacheMemoryRead += op.OpStats.CacheMemoryRead + node.AnalyzeInfo.CacheMemoryHit += op.OpStats.CacheMemoryHit + node.AnalyzeInfo.CacheDiskRead += op.OpStats.CacheDiskRead + node.AnalyzeInfo.CacheDiskHit += op.OpStats.CacheDiskHit + node.AnalyzeInfo.CacheRemoteRead += op.OpStats.CacheRemoteRead + node.AnalyzeInfo.CacheRemoteHit += op.OpStats.CacheRemoteHit + node.AnalyzeInfo.WrittenRows += op.OpStats.WrittenRows node.AnalyzeInfo.DeletedRows += op.OpStats.DeletedRows diff --git a/pkg/sql/models/logic_plan.go b/pkg/sql/models/logic_plan.go index 57674de92db5e..4ce5778d2b5ca 100644 --- a/pkg/sql/models/logic_plan.go +++ b/pkg/sql/models/logic_plan.go @@ -42,6 +42,15 @@ const S3Get = "S3 Get Count" const S3Delete = "S3 Delete Count" const S3DeleteMul = "S3 DeleteMul Count" +const FSCacheRead = "FileService Cache Read" +const FSCacheHit = "FileService Cache Hit" +const FSCacheMemoryRead = "FileService Cache Memory Read" +const FSCacheMemoryHit = "FileService Cache Memory Hit" +const FSCacheDiskRead = "FileService Cache Disk Read" +const FSCacheDiskHit = "FileService Cache Disk Hit" +const FSCacheRemoteRead = "FileService Cache Remote Read" +const FSCacheRemoteHit = "FileService Cache Remote Hit" + const Network = "Network" type ExplainData struct { @@ -252,6 +261,15 @@ func (graphData *GraphData) StatisticsGlobalResource(ctx context.Context) error gS3DeleteCount := NewStatisticValue(S3Delete, "count") gS3DeleteMulCount := NewStatisticValue(S3DeleteMul, "count") + gFSCacheRead := NewStatisticValue(FSCacheRead, "count") + gFSCacheHit := NewStatisticValue(FSCacheHit, "count") + gFSCacheMemoryRead := NewStatisticValue(FSCacheMemoryRead, "count") + gFSCacheMemoryHit := NewStatisticValue(FSCacheMemoryHit, "count") + gFSCacheDiskRead := NewStatisticValue(FSCacheDiskRead, "count") + gFSCacheDiskHit := NewStatisticValue(FSCacheDiskHit, "count") + gFSCacheRemoteRead := NewStatisticValue(FSCacheRemoteRead, "count") + gFSCacheRemoteHit := NewStatisticValue(FSCacheRemoteHit, "count") + // network gNetwork := NewStatisticValue(Network, "byte") @@ -308,6 +326,22 @@ func (graphData *GraphData) StatisticsGlobalResource(ctx context.Context) error gS3DeleteCount.Value += ioValue.Value case S3DeleteMul: gS3DeleteMulCount.Value += ioValue.Value + case FSCacheRead: + gFSCacheRead.Value += ioValue.Value + case FSCacheHit: + gFSCacheHit.Value += ioValue.Value + case FSCacheMemoryRead: + gFSCacheMemoryRead.Value += ioValue.Value + case FSCacheMemoryHit: + gFSCacheMemoryHit.Value += ioValue.Value + case FSCacheDiskRead: + gFSCacheDiskRead.Value += ioValue.Value + case FSCacheDiskHit: + gFSCacheDiskHit.Value += ioValue.Value + case FSCacheRemoteRead: + gFSCacheRemoteRead.Value += ioValue.Value + case FSCacheRemoteHit: + gFSCacheRemoteHit.Value += ioValue.Value } } diff --git a/pkg/sql/plan/deepcopy.go b/pkg/sql/plan/deepcopy.go index 7ceef94526e80..5060870f7e480 100644 --- a/pkg/sql/plan/deepcopy.go +++ b/pkg/sql/plan/deepcopy.go @@ -1049,6 +1049,14 @@ func DeepCopyAnalyzeInfo(analyzeinfo *plan.AnalyzeInfo) *plan.AnalyzeInfo { S3Head: analyzeinfo.GetS3Head(), S3Delete: analyzeinfo.GetS3Delete(), S3DeleteMul: analyzeinfo.GetS3DeleteMul(), + CacheRead: analyzeinfo.GetCacheRead(), + CacheHit: analyzeinfo.GetCacheHit(), + CacheMemoryRead: analyzeinfo.GetCacheMemoryRead(), + CacheMemoryHit: analyzeinfo.GetCacheMemoryHit(), + CacheDiskRead: analyzeinfo.GetCacheDiskRead(), + CacheDiskHit: analyzeinfo.GetCacheDiskHit(), + CacheRemoteRead: analyzeinfo.GetCacheRemoteRead(), + CacheRemoteHit: analyzeinfo.GetCacheRemoteHit(), NetworkIO: analyzeinfo.GetNetworkIO(), ScanTime: analyzeinfo.GetScanTime(), InsertTime: analyzeinfo.GetInsertTime(), diff --git a/pkg/sql/plan/explain/marshal_query.go b/pkg/sql/plan/explain/marshal_query.go index 3afcf9b0413f6..9944a52d339b4 100644 --- a/pkg/sql/plan/explain/marshal_query.go +++ b/pkg/sql/plan/explain/marshal_query.go @@ -725,6 +725,14 @@ const S3Put = "S3 Put Count" const S3Get = "S3 Get Count" const S3Delete = "S3 Delete Count" const S3DeleteMul = "S3 DeleteMul Count" +const FSCacheRead = "FileService Cache Read" +const FSCacheHit = "FileService Cache Hit" +const FSCacheMemoryRead = "FileService Cache Memory Read" +const FSCacheMemoryHit = "FileService Cache Memory Hit" +const FSCacheDiskRead = "FileService Cache Disk Read" +const FSCacheDiskHit = "FileService Cache Disk Hit" +const FSCacheRemoteRead = "FileService Cache Remote Read" +const FSCacheRemoteHit = "FileService Cache Remote Hit" func GetStatistic4Trace(ctx context.Context, node *plan.Node, options *ExplainOptions) (s statistic.StatsArray) { s.Reset() @@ -858,6 +866,48 @@ func (m MarshalNodeImpl) GetStatistics(ctx context.Context, options *ExplainOpti Value: analyzeInfo.S3DeleteMul, Unit: Statistic_Unit_count, //"count", }, + //-------------------------------------------------------------------------------------- + { + Name: FSCacheRead, + Value: analyzeInfo.CacheRead, + Unit: Statistic_Unit_count, //"count", + }, + { + Name: FSCacheHit, + Value: analyzeInfo.CacheHit, + Unit: Statistic_Unit_count, //"count", + }, + { + Name: FSCacheMemoryRead, + Value: analyzeInfo.CacheMemoryRead, + Unit: Statistic_Unit_count, //"count", + }, + { + Name: FSCacheMemoryHit, + Value: analyzeInfo.CacheMemoryHit, + Unit: Statistic_Unit_count, //"count", + }, + { + Name: FSCacheDiskRead, + Value: analyzeInfo.CacheDiskRead, + Unit: Statistic_Unit_count, //"count", + }, + { + Name: FSCacheDiskHit, + Value: analyzeInfo.CacheDiskHit, + Unit: Statistic_Unit_count, //"count", + }, + { + Name: FSCacheRemoteRead, + Value: analyzeInfo.CacheRemoteRead, + Unit: Statistic_Unit_count, //"count", + }, + { + Name: FSCacheRemoteHit, + Value: analyzeInfo.CacheRemoteHit, + Unit: Statistic_Unit_count, //"count", + }, + //-------------------------------------------------------------------------------------- } nw := []models.StatisticValue{ diff --git a/pkg/sql/plan/function/func_mo_explain_phy_test.go b/pkg/sql/plan/function/func_mo_explain_phy_test.go index f6817b5ed54c4..11dea2fb56550 100644 --- a/pkg/sql/plan/function/func_mo_explain_phy_test.go +++ b/pkg/sql/plan/function/func_mo_explain_phy_test.go @@ -1001,11 +1001,11 @@ Scope 1 (Magic: Merge, mcpu: 1, Receiver: [0]) Physical Plan Deployment: LOCAL SCOPES: Scope 1 (Magic: Merge, mcpu: 1, Receiver: [0]) - Pipeline: └── Output (idx:-1, isFirst:false, isLast:false) CallNum:2 TimeCost:21883ns WaitTime:0ns InRows:0 OutRows:0 InSize:0bytes InBlock:0 OutSize:0bytes MemSize:0bytes ScanBytes:0bytes NetworkIO:0bytes DiskIO:0bytes WrittenRows:0 DeletedRows:0 S3List:0 S3Head:0 S3Put:0 S3Get:0 S3Delete:0 S3DeleteMul:0 - └── Projection (idx:2, isFirst:true, isLast:true) CallNum:2 TimeCost:15439ns WaitTime:0ns InRows:1 OutRows:1 InSize:8bytes InBlock:0 OutSize:8bytes MemSize:8bytes ScanBytes:0bytes NetworkIO:0bytes DiskIO:0bytes WrittenRows:0 DeletedRows:0 S3List:0 S3Head:0 S3Put:0 S3Get:0 S3Delete:0 S3DeleteMul:0 - └── Projection (idx:1, isFirst:false, isLast:true) CallNum:2 TimeCost:1094ns WaitTime:0ns InRows:0 OutRows:1 InSize:0bytes InBlock:0 OutSize:8bytes MemSize:8bytes ScanBytes:0bytes NetworkIO:0bytes DiskIO:0bytes WrittenRows:0 DeletedRows:0 S3List:0 S3Head:0 S3Put:0 S3Get:0 S3Delete:0 S3DeleteMul:0 - └── MergeGroup (idx:1, isFirst:false, isLast:false) CallNum:2 TimeCost:15712ns WaitTime:0ns InRows:0 OutRows:0 InSize:0bytes InBlock:0 OutSize:0bytes MemSize:8bytes ScanBytes:0bytes NetworkIO:0bytes DiskIO:0bytes WrittenRows:0 DeletedRows:0 S3List:0 S3Head:0 S3Put:0 S3Get:0 S3Delete:0 S3DeleteMul:0 - └── Merge (idx:1, isFirst:false, isLast:false) CallNum:5 TimeCost:29182ns WaitTime:81917495ns InRows:0 OutRows:0 InSize:0bytes InBlock:0 OutSize:0bytes MemSize:0bytes ScanBytes:0bytes NetworkIO:0bytes DiskIO:0bytes WrittenRows:0 DeletedRows:0 S3List:0 S3Head:0 S3Put:0 S3Get:0 S3Delete:0 S3DeleteMul:0 + Pipeline: └── Output (idx:-1, isFirst:false, isLast:false) CallNum:2 TimeCost:21883ns WaitTime:0ns InRows:0 OutRows:0 InSize:0bytes InBlock:0 OutSize:0bytes MemSize:0bytes ScanBytes:0bytes NetworkIO:0bytes DiskIO:0bytes + └── Projection (idx:2, isFirst:true, isLast:true) CallNum:2 TimeCost:15439ns WaitTime:0ns InRows:1 OutRows:1 InSize:8bytes InBlock:0 OutSize:8bytes MemSize:8bytes ScanBytes:0bytes NetworkIO:0bytes DiskIO:0bytes + └── Projection (idx:1, isFirst:false, isLast:true) CallNum:2 TimeCost:1094ns WaitTime:0ns InRows:0 OutRows:1 InSize:0bytes InBlock:0 OutSize:8bytes MemSize:8bytes ScanBytes:0bytes NetworkIO:0bytes DiskIO:0bytes + └── MergeGroup (idx:1, isFirst:false, isLast:false) CallNum:2 TimeCost:15712ns WaitTime:0ns InRows:0 OutRows:0 InSize:0bytes InBlock:0 OutSize:0bytes MemSize:8bytes ScanBytes:0bytes NetworkIO:0bytes DiskIO:0bytes + └── Merge (idx:1, isFirst:false, isLast:false) CallNum:5 TimeCost:29182ns WaitTime:81917495ns InRows:0 OutRows:0 InSize:0bytes InBlock:0 OutSize:0bytes MemSize:0bytes ScanBytes:0bytes NetworkIO:0bytes DiskIO:0bytes PreScopes: { Scope 1 (Magic: Remote, mcpu: 4, Receiver: []) DataSource: cloud_device.real_time_position[time_stamp distance] @@ -1019,32 +1019,32 @@ Scope 1 (Magic: Merge, mcpu: 1, Receiver: [0]) PreScopes: { Scope 1 (Magic: Normal, mcpu: 1, Receiver: []) DataSource: cloud_device.real_time_position[time_stamp distance] - Pipeline: └── Connector (idx:1, isFirst:false, isLast:false) CallNum:2 TimeCost:22677ns WaitTime:0ns InRows:0 OutRows:0 InSize:0bytes InBlock:0 OutSize:0bytes MemSize:0bytes ScanBytes:0bytes NetworkIO:0bytes DiskIO:0bytes WrittenRows:0 DeletedRows:0 S3List:0 S3Head:0 S3Put:0 S3Get:0 S3Delete:0 S3DeleteMul:0 to MergeReceiver 0 - └── Group (idx:1, isFirst:true, isLast:false) CallNum:2 TimeCost:338784ns WaitTime:0ns InRows:15593 OutRows:0 InSize:124744bytes InBlock:0 OutSize:0bytes MemSize:0bytes ScanBytes:0bytes NetworkIO:0bytes DiskIO:0bytes WrittenRows:0 DeletedRows:0 S3List:0 S3Head:0 S3Put:0 S3Get:0 S3Delete:0 S3DeleteMul:0 - └── Projection (idx:0, isFirst:false, isLast:true) CallNum:153 TimeCost:61454ns WaitTime:0ns InRows:0 OutRows:15593 InSize:0bytes InBlock:0 OutSize:124744bytes MemSize:29800bytes ScanBytes:0bytes NetworkIO:0bytes DiskIO:0bytes WrittenRows:0 DeletedRows:0 S3List:0 S3Head:0 S3Put:0 S3Get:0 S3Delete:0 S3DeleteMul:0 - └── Filter (idx:0, isFirst:false, isLast:false) CallNum:153 TimeCost:16747009ns WaitTime:0ns InRows:0 OutRows:0 InSize:0bytes InBlock:0 OutSize:0bytes MemSize:1245184bytes ScanBytes:0bytes NetworkIO:0bytes DiskIO:0bytes WrittenRows:0 DeletedRows:0 S3List:0 S3Head:0 S3Put:0 S3Get:0 S3Delete:0 S3DeleteMul:0 - └── TableScan (idx:0, isFirst:true, isLast:false) CallNum:153 TimeCost:58472333ns WaitTime:0ns InRows:1245184 OutRows:0 InSize:19922944bytes InBlock:0 OutSize:0bytes MemSize:131072bytes ScanBytes:0bytes NetworkIO:0bytes DiskIO:16491709bytes WrittenRows:0 DeletedRows:0 S3List:0 S3Head:0 S3Put:0 S3Get:0 S3Delete:0 S3DeleteMul:0 + Pipeline: └── Connector (idx:1, isFirst:false, isLast:false) CallNum:2 TimeCost:22677ns WaitTime:0ns InRows:0 OutRows:0 InSize:0bytes InBlock:0 OutSize:0bytes MemSize:0bytes ScanBytes:0bytes NetworkIO:0bytes DiskIO:0bytes to MergeReceiver 0 + └── Group (idx:1, isFirst:true, isLast:false) CallNum:2 TimeCost:338784ns WaitTime:0ns InRows:15593 OutRows:0 InSize:124744bytes InBlock:0 OutSize:0bytes MemSize:0bytes ScanBytes:0bytes NetworkIO:0bytes DiskIO:0bytes + └── Projection (idx:0, isFirst:false, isLast:true) CallNum:153 TimeCost:61454ns WaitTime:0ns InRows:0 OutRows:15593 InSize:0bytes InBlock:0 OutSize:124744bytes MemSize:29800bytes ScanBytes:0bytes NetworkIO:0bytes DiskIO:0bytes + └── Filter (idx:0, isFirst:false, isLast:false) CallNum:153 TimeCost:16747009ns WaitTime:0ns InRows:0 OutRows:0 InSize:0bytes InBlock:0 OutSize:0bytes MemSize:1245184bytes ScanBytes:0bytes NetworkIO:0bytes DiskIO:0bytes + └── TableScan (idx:0, isFirst:true, isLast:false) CallNum:153 TimeCost:58472333ns WaitTime:0ns InRows:1245184 OutRows:0 InSize:19922944bytes InBlock:0 OutSize:0bytes MemSize:131072bytes ScanBytes:0bytes NetworkIO:0bytes DiskIO:16491709bytes Scope 2 (Magic: Normal, mcpu: 1, Receiver: []) DataSource: cloud_device.real_time_position[time_stamp distance] - Pipeline: └── Connector (idx:1, isFirst:false, isLast:false) CallNum:2 TimeCost:9887ns WaitTime:0ns InRows:0 OutRows:0 InSize:0bytes InBlock:0 OutSize:0bytes MemSize:0bytes ScanBytes:0bytes NetworkIO:0bytes DiskIO:0bytes WrittenRows:0 DeletedRows:0 S3List:0 S3Head:0 S3Put:0 S3Get:0 S3Delete:0 S3DeleteMul:0 to MergeReceiver 0 - └── Group (idx:1, isFirst:true, isLast:false) CallNum:2 TimeCost:319777ns WaitTime:0ns InRows:15405 OutRows:0 InSize:123240bytes InBlock:0 OutSize:0bytes MemSize:0bytes ScanBytes:0bytes NetworkIO:0bytes DiskIO:0bytes WrittenRows:0 DeletedRows:0 S3List:0 S3Head:0 S3Put:0 S3Get:0 S3Delete:0 S3DeleteMul:0 - └── Projection (idx:0, isFirst:false, isLast:true) CallNum:154 TimeCost:66538ns WaitTime:0ns InRows:0 OutRows:15405 InSize:0bytes InBlock:0 OutSize:123240bytes MemSize:18864bytes ScanBytes:0bytes NetworkIO:0bytes DiskIO:0bytes WrittenRows:0 DeletedRows:0 S3List:0 S3Head:0 S3Put:0 S3Get:0 S3Delete:0 S3DeleteMul:0 - └── Filter (idx:0, isFirst:false, isLast:false) CallNum:154 TimeCost:18563940ns WaitTime:0ns InRows:0 OutRows:0 InSize:0bytes InBlock:0 OutSize:0bytes MemSize:1253376bytes ScanBytes:0bytes NetworkIO:0bytes DiskIO:0bytes WrittenRows:0 DeletedRows:0 S3List:0 S3Head:0 S3Put:0 S3Get:0 S3Delete:0 S3DeleteMul:0 - └── TableScan (idx:0, isFirst:true, isLast:false) CallNum:154 TimeCost:61209774ns WaitTime:0ns InRows:1253376 OutRows:0 InSize:20054016bytes InBlock:0 OutSize:0bytes MemSize:131072bytes ScanBytes:0bytes NetworkIO:0bytes DiskIO:16797879bytes WrittenRows:0 DeletedRows:0 S3List:0 S3Head:0 S3Put:0 S3Get:0 S3Delete:0 S3DeleteMul:0 + Pipeline: └── Connector (idx:1, isFirst:false, isLast:false) CallNum:2 TimeCost:9887ns WaitTime:0ns InRows:0 OutRows:0 InSize:0bytes InBlock:0 OutSize:0bytes MemSize:0bytes ScanBytes:0bytes NetworkIO:0bytes DiskIO:0bytes to MergeReceiver 0 + └── Group (idx:1, isFirst:true, isLast:false) CallNum:2 TimeCost:319777ns WaitTime:0ns InRows:15405 OutRows:0 InSize:123240bytes InBlock:0 OutSize:0bytes MemSize:0bytes ScanBytes:0bytes NetworkIO:0bytes DiskIO:0bytes + └── Projection (idx:0, isFirst:false, isLast:true) CallNum:154 TimeCost:66538ns WaitTime:0ns InRows:0 OutRows:15405 InSize:0bytes InBlock:0 OutSize:123240bytes MemSize:18864bytes ScanBytes:0bytes NetworkIO:0bytes DiskIO:0bytes + └── Filter (idx:0, isFirst:false, isLast:false) CallNum:154 TimeCost:18563940ns WaitTime:0ns InRows:0 OutRows:0 InSize:0bytes InBlock:0 OutSize:0bytes MemSize:1253376bytes ScanBytes:0bytes NetworkIO:0bytes DiskIO:0bytes + └── TableScan (idx:0, isFirst:true, isLast:false) CallNum:154 TimeCost:61209774ns WaitTime:0ns InRows:1253376 OutRows:0 InSize:20054016bytes InBlock:0 OutSize:0bytes MemSize:131072bytes ScanBytes:0bytes NetworkIO:0bytes DiskIO:16797879bytes Scope 3 (Magic: Normal, mcpu: 1, Receiver: []) DataSource: cloud_device.real_time_position[time_stamp distance] - Pipeline: └── Connector (idx:1, isFirst:false, isLast:false) CallNum:2 TimeCost:2950ns WaitTime:0ns InRows:0 OutRows:0 InSize:0bytes InBlock:0 OutSize:0bytes MemSize:0bytes ScanBytes:0bytes NetworkIO:0bytes DiskIO:0bytes WrittenRows:0 DeletedRows:0 S3List:0 S3Head:0 S3Put:0 S3Get:0 S3Delete:0 S3DeleteMul:0 to MergeReceiver 0 - └── Group (idx:1, isFirst:true, isLast:false) CallNum:2 TimeCost:396141ns WaitTime:0ns InRows:19167 OutRows:0 InSize:153336bytes InBlock:0 OutSize:0bytes MemSize:0bytes ScanBytes:0bytes NetworkIO:0bytes DiskIO:0bytes WrittenRows:0 DeletedRows:0 S3List:0 S3Head:0 S3Put:0 S3Get:0 S3Delete:0 S3DeleteMul:0 - └── Projection (idx:0, isFirst:false, isLast:true) CallNum:154 TimeCost:82273ns WaitTime:0ns InRows:0 OutRows:19167 InSize:0bytes InBlock:0 OutSize:153336bytes MemSize:24624bytes ScanBytes:0bytes NetworkIO:0bytes DiskIO:0bytes WrittenRows:0 DeletedRows:0 S3List:0 S3Head:0 S3Put:0 S3Get:0 S3Delete:0 S3DeleteMul:0 - └── Filter (idx:0, isFirst:false, isLast:false) CallNum:154 TimeCost:17764543ns WaitTime:0ns InRows:0 OutRows:0 InSize:0bytes InBlock:0 OutSize:0bytes MemSize:1253376bytes ScanBytes:0bytes NetworkIO:0bytes DiskIO:0bytes WrittenRows:0 DeletedRows:0 S3List:0 S3Head:0 S3Put:0 S3Get:0 S3Delete:0 S3DeleteMul:0 - └── TableScan (idx:0, isFirst:true, isLast:false) CallNum:154 TimeCost:58087865ns WaitTime:0ns InRows:1253376 OutRows:0 InSize:20054016bytes InBlock:0 OutSize:0bytes MemSize:131072bytes ScanBytes:0bytes NetworkIO:0bytes DiskIO:16717018bytes WrittenRows:0 DeletedRows:0 S3List:0 S3Head:0 S3Put:0 S3Get:0 S3Delete:0 S3DeleteMul:0 + Pipeline: └── Connector (idx:1, isFirst:false, isLast:false) CallNum:2 TimeCost:2950ns WaitTime:0ns InRows:0 OutRows:0 InSize:0bytes InBlock:0 OutSize:0bytes MemSize:0bytes ScanBytes:0bytes NetworkIO:0bytes DiskIO:0bytes to MergeReceiver 0 + └── Group (idx:1, isFirst:true, isLast:false) CallNum:2 TimeCost:396141ns WaitTime:0ns InRows:19167 OutRows:0 InSize:153336bytes InBlock:0 OutSize:0bytes MemSize:0bytes ScanBytes:0bytes NetworkIO:0bytes DiskIO:0bytes + └── Projection (idx:0, isFirst:false, isLast:true) CallNum:154 TimeCost:82273ns WaitTime:0ns InRows:0 OutRows:19167 InSize:0bytes InBlock:0 OutSize:153336bytes MemSize:24624bytes ScanBytes:0bytes NetworkIO:0bytes DiskIO:0bytes + └── Filter (idx:0, isFirst:false, isLast:false) CallNum:154 TimeCost:17764543ns WaitTime:0ns InRows:0 OutRows:0 InSize:0bytes InBlock:0 OutSize:0bytes MemSize:1253376bytes ScanBytes:0bytes NetworkIO:0bytes DiskIO:0bytes + └── TableScan (idx:0, isFirst:true, isLast:false) CallNum:154 TimeCost:58087865ns WaitTime:0ns InRows:1253376 OutRows:0 InSize:20054016bytes InBlock:0 OutSize:0bytes MemSize:131072bytes ScanBytes:0bytes NetworkIO:0bytes DiskIO:16717018bytes Scope 4 (Magic: Normal, mcpu: 1, Receiver: []) DataSource: cloud_device.real_time_position[time_stamp distance] - Pipeline: └── Connector (idx:1, isFirst:false, isLast:false) CallNum:2 TimeCost:6821ns WaitTime:0ns InRows:0 OutRows:0 InSize:0bytes InBlock:0 OutSize:0bytes MemSize:0bytes ScanBytes:0bytes NetworkIO:0bytes DiskIO:0bytes WrittenRows:0 DeletedRows:0 S3List:0 S3Head:0 S3Put:0 S3Get:0 S3Delete:0 S3DeleteMul:0 to MergeReceiver 0 - └── Group (idx:1, isFirst:true, isLast:false) CallNum:2 TimeCost:374224ns WaitTime:0ns InRows:19366 OutRows:0 InSize:154928bytes InBlock:0 OutSize:0bytes MemSize:0bytes ScanBytes:0bytes NetworkIO:0bytes DiskIO:0bytes WrittenRows:0 DeletedRows:0 S3List:0 S3Head:0 S3Put:0 S3Get:0 S3Delete:0 S3DeleteMul:0 - └── Projection (idx:0, isFirst:false, isLast:true) CallNum:154 TimeCost:59683ns WaitTime:0ns InRows:0 OutRows:19366 InSize:0bytes InBlock:0 OutSize:154928bytes MemSize:26360bytes ScanBytes:0bytes NetworkIO:0bytes DiskIO:0bytes WrittenRows:0 DeletedRows:0 S3List:0 S3Head:0 S3Put:0 S3Get:0 S3Delete:0 S3DeleteMul:0 - └── Filter (idx:0, isFirst:false, isLast:false) CallNum:154 TimeCost:17421140ns WaitTime:0ns InRows:0 OutRows:0 InSize:0bytes InBlock:0 OutSize:0bytes MemSize:1248064bytes ScanBytes:0bytes NetworkIO:0bytes DiskIO:0bytes WrittenRows:0 DeletedRows:0 S3List:0 S3Head:0 S3Put:0 S3Get:0 S3Delete:0 S3DeleteMul:0 - └── TableScan (idx:0, isFirst:true, isLast:false) CallNum:154 TimeCost:54582153ns WaitTime:0ns InRows:1248064 OutRows:0 InSize:19969024bytes InBlock:0 OutSize:0bytes MemSize:131072bytes ScanBytes:0bytes NetworkIO:0bytes DiskIO:16708516bytes WrittenRows:0 DeletedRows:0 S3List:0 S3Head:0 S3Put:0 S3Get:0 S3Delete:0 S3DeleteMul:0 + Pipeline: └── Connector (idx:1, isFirst:false, isLast:false) CallNum:2 TimeCost:6821ns WaitTime:0ns InRows:0 OutRows:0 InSize:0bytes InBlock:0 OutSize:0bytes MemSize:0bytes ScanBytes:0bytes NetworkIO:0bytes DiskIO:0bytes to MergeReceiver 0 + └── Group (idx:1, isFirst:true, isLast:false) CallNum:2 TimeCost:374224ns WaitTime:0ns InRows:19366 OutRows:0 InSize:154928bytes InBlock:0 OutSize:0bytes MemSize:0bytes ScanBytes:0bytes NetworkIO:0bytes DiskIO:0bytes + └── Projection (idx:0, isFirst:false, isLast:true) CallNum:154 TimeCost:59683ns WaitTime:0ns InRows:0 OutRows:19366 InSize:0bytes InBlock:0 OutSize:154928bytes MemSize:26360bytes ScanBytes:0bytes NetworkIO:0bytes DiskIO:0bytes + └── Filter (idx:0, isFirst:false, isLast:false) CallNum:154 TimeCost:17421140ns WaitTime:0ns InRows:0 OutRows:0 InSize:0bytes InBlock:0 OutSize:0bytes MemSize:1248064bytes ScanBytes:0bytes NetworkIO:0bytes DiskIO:0bytes + └── TableScan (idx:0, isFirst:true, isLast:false) CallNum:154 TimeCost:54582153ns WaitTime:0ns InRows:1248064 OutRows:0 InSize:19969024bytes InBlock:0 OutSize:0bytes MemSize:131072bytes ScanBytes:0bytes NetworkIO:0bytes DiskIO:16708516bytes } } }` diff --git a/pkg/vm/process/operator_analyzer.go b/pkg/vm/process/operator_analyzer.go index dd1b75a92de25..83c5c97d3b943 100644 --- a/pkg/vm/process/operator_analyzer.go +++ b/pkg/vm/process/operator_analyzer.go @@ -16,6 +16,7 @@ package process import ( "fmt" + "strings" "time" "github.com/matrixorigin/matrixone/pkg/container/batch" @@ -48,6 +49,7 @@ type Analyzer interface { AddIncrementTime(t time.Time) AddWaitLockTime(t time.Time) AddS3RequestCount(counter *perfcounter.CounterSet) + AddFileServiceCacheInfo(counter *perfcounter.CounterSet) AddDiskIO(counter *perfcounter.CounterSet) GetOpCounterSet() *perfcounter.CounterSet @@ -267,6 +269,21 @@ func (opAlyzr *operatorAnalyzer) AddS3RequestCount(counter *perfcounter.CounterS opAlyzr.opStats.S3DeleteMul += counter.FileService.S3.DeleteMulti.Load() } +func (opAlyzr *operatorAnalyzer) AddFileServiceCacheInfo(counter *perfcounter.CounterSet) { + if opAlyzr.opStats == nil { + panic("operatorAnalyzer.AddFileServiceCacheInfo: operatorAnalyzer.opStats is nil") + } + + opAlyzr.opStats.CacheRead += counter.FileService.Cache.Read.Load() + opAlyzr.opStats.CacheHit += counter.FileService.Cache.Hit.Load() + opAlyzr.opStats.CacheMemoryRead += counter.FileService.Cache.Memory.Read.Load() + opAlyzr.opStats.CacheMemoryHit += counter.FileService.Cache.Memory.Hit.Load() + opAlyzr.opStats.CacheDiskRead += counter.FileService.Cache.Disk.Read.Load() + opAlyzr.opStats.CacheDiskHit += counter.FileService.Cache.Disk.Hit.Load() + opAlyzr.opStats.CacheRemoteRead += counter.FileService.Cache.Remote.Read.Load() + opAlyzr.opStats.CacheRemoteHit += counter.FileService.Cache.Remote.Hit.Load() +} + func (opAlyzr *operatorAnalyzer) AddDiskIO(counter *perfcounter.CounterSet) { if opAlyzr.opStats == nil { panic("operatorAnalyzer.AddDiskIO: operatorAnalyzer.opStats is nil") @@ -284,28 +301,40 @@ func (opAlyzr *operatorAnalyzer) GetOpStats() *OperatorStats { } type OperatorStats struct { - OperatorName string `json:"-"` - CallNum int `json:"CallCount,omitempty"` - TimeConsumed int64 `json:"TimeConsumed,omitempty"` - WaitTimeConsumed int64 `json:"WaitTimeConsumed,omitempty"` - MemorySize int64 `json:"MemorySize,omitempty"` - InputRows int64 `json:"InputRows,omitempty"` - InputSize int64 `json:"InputSize,omitempty"` - OutputRows int64 `json:"OutputRows,omitempty"` - OutputSize int64 `json:"OutputSize,omitempty"` - NetworkIO int64 `json:"NetworkIO,omitempty"` - WrittenRows int64 `json:"WrittenRows,omitempty"` // WrittenRows Used to estimate S3input - DeletedRows int64 `json:"DeletedRows,omitempty"` // DeletedRows Used to estimate S3input - S3List int64 `json:"S3List,omitempty"` - S3Head int64 `json:"S3Head,omitempty"` - S3Put int64 `json:"S3Put,omitempty"` - S3Get int64 `json:"S3Get,omitempty"` - S3Delete int64 `json:"S3Delete,omitempty"` - S3DeleteMul int64 `json:"S3DeleteMul,omitempty"` - InputBlocks int64 `json:"-"` - ScanBytes int64 `json:"-"` - DiskIO int64 `json:"DiskIO,omitempty"` - OperatorMetrics map[MetricType]int64 `json:"OperatorMetrics,omitempty"` + OperatorName string `json:"-"` + CallNum int `json:"CallCount,omitempty"` + TimeConsumed int64 `json:"TimeConsumed,omitempty"` + WaitTimeConsumed int64 `json:"WaitTimeConsumed,omitempty"` + MemorySize int64 `json:"MemorySize,omitempty"` + InputRows int64 `json:"InputRows,omitempty"` + InputSize int64 `json:"InputSize,omitempty"` + OutputRows int64 `json:"OutputRows,omitempty"` + OutputSize int64 `json:"OutputSize,omitempty"` + NetworkIO int64 `json:"NetworkIO,omitempty"` + DiskIO int64 `json:"DiskIO,omitempty"` + + InputBlocks int64 `json:"-"` + ScanBytes int64 `json:"-"` + WrittenRows int64 `json:"WrittenRows,omitempty"` // WrittenRows Used to estimate S3input + DeletedRows int64 `json:"DeletedRows,omitempty"` // DeletedRows Used to estimate S3input + + S3List int64 `json:"S3List,omitempty"` + S3Head int64 `json:"S3Head,omitempty"` + S3Put int64 `json:"S3Put,omitempty"` + S3Get int64 `json:"S3Get,omitempty"` + S3Delete int64 `json:"S3Delete,omitempty"` + S3DeleteMul int64 `json:"S3DeleteMul,omitempty"` + + CacheRead int64 `json:"CacheRead,omitempty"` + CacheHit int64 `json:"CacheHit,omitempty"` + CacheMemoryRead int64 `json:"CacheMemoryRead,omitempty"` + CacheMemoryHit int64 `json:"CacheMemoryHit,omitempty"` + CacheDiskRead int64 `json:"CacheDiskRead,omitempty"` + CacheDiskHit int64 `json:"CacheDiskHit,omitempty"` + CacheRemoteRead int64 `json:"CacheRemoteRead,omitempty"` + CacheRemoteHit int64 `json:"CacheRemoteHit,omitempty"` + + OperatorMetrics map[MetricType]int64 `json:"OperatorMetrics,omitempty"` } func NewOperatorStats(operatorName string) *OperatorStats { @@ -333,27 +362,9 @@ func (ps *OperatorStats) Reset() { } func (ps *OperatorStats) String() string { - // Convert OperationMetrics map to a formatted string - var metricsStr string - if len(ps.OperatorMetrics) > 0 { - metricsStr = " " - for k, v := range ps.OperatorMetrics { - metricName := "Unknown" - switch k { - case OpScanTime: - metricName = "ScanTime" - case OpInsertTime: - metricName = "InsertTime" - case OpIncrementTime: - metricName = "IncrementTime" - case OpWaitLockTime: - metricName = "WaitLockTime" - } - metricsStr += fmt.Sprintf("%s:%dns ", metricName, v) - } - } - - return fmt.Sprintf(" CallNum:%d "+ + // Use strings.Builder for efficient string concatenation + var sb strings.Builder + sb.WriteString(fmt.Sprintf(" CallNum:%d "+ "TimeCost:%dns "+ "WaitTime:%dns "+ "InRows:%d "+ @@ -364,16 +375,7 @@ func (ps *OperatorStats) String() string { "MemSize:%dbytes "+ "ScanBytes:%dbytes "+ "NetworkIO:%dbytes "+ - "DiskIO:%dbytes "+ - "WrittenRows:%d "+ - "DeletedRows:%d "+ - "S3List:%d "+ - "S3Head:%d "+ - "S3Put:%d "+ - "S3Get:%d "+ - "S3Delete:%d "+ - "S3DeleteMul:%d"+ - "%s", + "DiskIO:%dbytes ", ps.CallNum, ps.TimeConsumed, ps.WaitTimeConsumed, @@ -385,14 +387,84 @@ func (ps *OperatorStats) String() string { ps.MemorySize, ps.ScanBytes, ps.NetworkIO, - ps.DiskIO, - ps.WrittenRows, - ps.DeletedRows, - ps.S3List, - ps.S3Head, - ps.S3Put, - ps.S3Get, - ps.S3Delete, - ps.S3DeleteMul, - metricsStr) + ps.DiskIO)) + + // Collect S3 stats in a slice for efficient concatenation + dynamicAttrs := []string{} + if ps.WrittenRows > 0 { + dynamicAttrs = append(dynamicAttrs, fmt.Sprintf("WrittenRows:%d ", ps.WrittenRows)) + } + if ps.DeletedRows > 0 { + dynamicAttrs = append(dynamicAttrs, fmt.Sprintf("DeletedRows:%d ", ps.DeletedRows)) + } + if ps.S3List > 0 { + dynamicAttrs = append(dynamicAttrs, fmt.Sprintf("S3List:%d ", ps.S3List)) + } + if ps.S3Head > 0 { + dynamicAttrs = append(dynamicAttrs, fmt.Sprintf("S3Head:%d ", ps.S3Head)) + } + if ps.S3Put > 0 { + dynamicAttrs = append(dynamicAttrs, fmt.Sprintf("S3Put:%d ", ps.S3Put)) + } + if ps.S3Get > 0 { + dynamicAttrs = append(dynamicAttrs, fmt.Sprintf("S3Get:%d ", ps.S3Get)) + } + if ps.S3Delete > 0 { + dynamicAttrs = append(dynamicAttrs, fmt.Sprintf("S3Delete:%d ", ps.S3Delete)) + } + if ps.S3DeleteMul > 0 { + dynamicAttrs = append(dynamicAttrs, fmt.Sprintf("S3DeleteMul:%d ", ps.S3DeleteMul)) + } + //--------------------------------------------------------------------------------------------- + if ps.CacheRead > 0 { + dynamicAttrs = append(dynamicAttrs, fmt.Sprintf("CacheRead:%d ", ps.CacheRead)) + } + if ps.CacheHit > 0 { + dynamicAttrs = append(dynamicAttrs, fmt.Sprintf("CacheHit:%d ", ps.CacheHit)) + } + if ps.CacheMemoryRead > 0 { + dynamicAttrs = append(dynamicAttrs, fmt.Sprintf("CacheMemoryRead:%d ", ps.CacheMemoryRead)) + } + if ps.CacheMemoryHit > 0 { + dynamicAttrs = append(dynamicAttrs, fmt.Sprintf("CacheMemoryHit:%d ", ps.CacheMemoryHit)) + } + if ps.CacheDiskRead > 0 { + dynamicAttrs = append(dynamicAttrs, fmt.Sprintf("CacheDiskRead:%d ", ps.CacheDiskRead)) + } + if ps.CacheDiskHit > 0 { + dynamicAttrs = append(dynamicAttrs, fmt.Sprintf("CacheDiskHit:%d ", ps.CacheDiskHit)) + } + if ps.CacheRemoteRead > 0 { + dynamicAttrs = append(dynamicAttrs, fmt.Sprintf("CacheRemoteRead:%d ", ps.CacheRemoteRead)) + } + if ps.CacheRemoteHit > 0 { + dynamicAttrs = append(dynamicAttrs, fmt.Sprintf("CacheRemoteHit:%d ", ps.CacheRemoteHit)) + } + + // Join and append S3 stats if any + if len(dynamicAttrs) > 0 { + sb.WriteString(strings.Join(dynamicAttrs, "")) + } + + // Convert OperationMetrics map to a formatted string + var metricsStr string + if len(ps.OperatorMetrics) > 0 { + for k, v := range ps.OperatorMetrics { + metricName := "Unknown" + switch k { + case OpScanTime: + metricName = "ScanTime" + case OpInsertTime: + metricName = "InsertTime" + case OpIncrementTime: + metricName = "IncrementTime" + case OpWaitLockTime: + metricName = "WaitLockTime" + } + metricsStr += fmt.Sprintf("%s:%dns ", metricName, v) + } + } + + sb.WriteString(metricsStr) + return sb.String() } diff --git a/pkg/vm/process/operator_analyzer_test.go b/pkg/vm/process/operator_analyzer_test.go index df9bbe626bfd0..6f9c63f170141 100644 --- a/pkg/vm/process/operator_analyzer_test.go +++ b/pkg/vm/process/operator_analyzer_test.go @@ -17,6 +17,8 @@ package process import ( "testing" "time" + + "github.com/stretchr/testify/assert" ) func Test_operatorAnalyzer_AddWaitLockTime(t *testing.T) { @@ -174,3 +176,120 @@ func Test_operatorAnalyzer_AddIncrementTime(t *testing.T) { }) } } + +func TestOperatorStats_String(t *testing.T) { + type fields struct { + OperatorName string + CallNum int + TimeConsumed int64 + WaitTimeConsumed int64 + MemorySize int64 + InputRows int64 + InputSize int64 + OutputRows int64 + OutputSize int64 + NetworkIO int64 + DiskIO int64 + InputBlocks int64 + ScanBytes int64 + WrittenRows int64 + DeletedRows int64 + S3List int64 + S3Head int64 + S3Put int64 + S3Get int64 + S3Delete int64 + S3DeleteMul int64 + CacheRead int64 + CacheHit int64 + CacheMemoryRead int64 + CacheMemoryHit int64 + CacheDiskRead int64 + CacheDiskHit int64 + CacheRemoteRead int64 + CacheRemoteHit int64 + OperatorMetrics map[MetricType]int64 + } + tests := []struct { + name string + fields fields + want string + }{ + { + // CallNum:154 TimeCost:54449492ns WaitTime:0ns InRows:1248064 OutRows:0 InSize:19969024bytes InBlock:153 OutSize:0bytes MemSize:131072bytes ScanBytes:19969024bytes NetworkIO:0bytes DiskIO:7888601bytes CacheRead:428 CacheMemoryRead:428 + name: "test01", + fields: fields{ + OperatorName: "testOp", + CallNum: 154, + TimeConsumed: 54449492, + WaitTimeConsumed: 0, + MemorySize: 131072, + InputRows: 1248064, + InputSize: 19969024, + OutputRows: 0, + OutputSize: 0, + NetworkIO: 0, + DiskIO: 7888601, + InputBlocks: 153, + ScanBytes: 19969024, + WrittenRows: 12, + DeletedRows: 12, + S3List: 2, + S3Head: 2, + S3Put: 2, + S3Get: 2, + S3Delete: 2, + S3DeleteMul: 2, + CacheRead: 428, + CacheHit: 428, + CacheMemoryRead: 428, + CacheMemoryHit: 428, + CacheDiskRead: 428, + CacheDiskHit: 428, + CacheRemoteRead: 428, + CacheRemoteHit: 428, + OperatorMetrics: map[MetricType]int64{ + OpScanTime: 452, + }, + }, + want: " CallNum:154 TimeCost:54449492ns WaitTime:0ns InRows:1248064 OutRows:0 InSize:19969024bytes InBlock:153 OutSize:0bytes MemSize:131072bytes ScanBytes:19969024bytes NetworkIO:0bytes DiskIO:7888601bytes WrittenRows:12 DeletedRows:12 S3List:2 S3Head:2 S3Put:2 S3Get:2 S3Delete:2 S3DeleteMul:2 CacheRead:428 CacheHit:428 CacheMemoryRead:428 CacheMemoryHit:428 CacheDiskRead:428 CacheDiskHit:428 CacheRemoteRead:428 CacheRemoteHit:428 ScanTime:452ns ", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + ps := &OperatorStats{ + OperatorName: tt.fields.OperatorName, + CallNum: tt.fields.CallNum, + TimeConsumed: tt.fields.TimeConsumed, + WaitTimeConsumed: tt.fields.WaitTimeConsumed, + MemorySize: tt.fields.MemorySize, + InputRows: tt.fields.InputRows, + InputSize: tt.fields.InputSize, + OutputRows: tt.fields.OutputRows, + OutputSize: tt.fields.OutputSize, + NetworkIO: tt.fields.NetworkIO, + DiskIO: tt.fields.DiskIO, + InputBlocks: tt.fields.InputBlocks, + ScanBytes: tt.fields.ScanBytes, + WrittenRows: tt.fields.WrittenRows, + DeletedRows: tt.fields.DeletedRows, + S3List: tt.fields.S3List, + S3Head: tt.fields.S3Head, + S3Put: tt.fields.S3Put, + S3Get: tt.fields.S3Get, + S3Delete: tt.fields.S3Delete, + S3DeleteMul: tt.fields.S3DeleteMul, + CacheRead: tt.fields.CacheRead, + CacheHit: tt.fields.CacheHit, + CacheMemoryRead: tt.fields.CacheMemoryRead, + CacheMemoryHit: tt.fields.CacheMemoryHit, + CacheDiskRead: tt.fields.CacheDiskRead, + CacheDiskHit: tt.fields.CacheDiskHit, + CacheRemoteRead: tt.fields.CacheRemoteRead, + CacheRemoteHit: tt.fields.CacheRemoteHit, + OperatorMetrics: tt.fields.OperatorMetrics, + } + assert.Equalf(t, tt.want, ps.String(), "String()") + }) + } +} diff --git a/proto/plan.proto b/proto/plan.proto index 87b8a506d7c54..b453209146892 100644 --- a/proto/plan.proto +++ b/proto/plan.proto @@ -678,10 +678,20 @@ message AnalyzeInfo { int64 s3_get = 20; int64 s3_delete = 21; int64 s3_delete_mul = 22; + + int64 cache_read = 23; + int64 cache_hit = 24; + int64 cache_memory_read = 25; + int64 cache_memory_hit = 26; + int64 cache_disk_read = 27; + int64 cache_disk_hit = 28; + int64 cache_remote_read = 29; + int64 cache_remote_hit = 30; + // written_rows used to estimate S3input - int64 written_rows = 23; + int64 written_rows = 31; // deleted_rows used to estimate S3input - int64 deleted_rows = 24; + int64 deleted_rows = 32; } message PartitionPrune {