Commit dd7fbd8c authored by harrylee's avatar harrylee

update broker

parent e664d86c
Pipeline #8222 failed with stages
in 0 seconds
...@@ -140,14 +140,15 @@ func (b *BrokerDB) updateIndex(payload *brokertypes.UpdateIndex) (*types.Receipt ...@@ -140,14 +140,15 @@ func (b *BrokerDB) updateIndex(payload *brokertypes.UpdateIndex) (*types.Receipt
receipt.Logs = append(receipt.Logs, receiptlog) receipt.Logs = append(receipt.Logs, receiptlog)
return receipt, nil return receipt, nil
} }
//TODO 重构跨链事件发布
func (b *BrokerDB) emitInterchainEvent(payload *brokertypes.InterchainEvent) (*types.Receipt, error) { func (b *BrokerDB) emitInterchainEvent(payload *brokertypes.InterchainEvent) (*types.Receipt, error) {
//FIXME 权限检查,是否需要设定指定账户拥有跨链的权限 //FIXME 权限检查,是否需要设定指定账户拥有跨链的权限
receipt := &types.Receipt{Ty: types.ExecOk} receipt := &types.Receipt{Ty: types.ExecOk}
//发布跨链事件分为 1.信息跨链 2.代币跨链,代币跨链需要在这步将所需金额冻结在broker下面 //发布跨链事件分为 1.信息跨链 2.代币跨链,代币跨链需要在这步将所需金额冻结在broker下面
if payload.Type == brokertypes.Req_Type_Storage { if payload.Type == brokertypes.Req_Type_Storage {
//校验存在交易是否存在 //校验存在交易是否存在
params := &storagetypes.QueryStorage{TxHash: payload.Args[0]} params := &storagetypes.QueryStorage{TxHash: payload.Args}
_, err := b.api.Query(storagetypes.StorageX, payload.GetFunc(), params) _, err := b.api.Query(storagetypes.StorageX, "QueryStorage", params)
if err != nil { if err != nil {
return nil, brokertypes.ErrBrokerStorageTx return nil, brokertypes.ErrBrokerStorageTx
} }
......
...@@ -47,8 +47,6 @@ func (m *InterchainEventRow) Get(key string) ([]byte, error) { ...@@ -47,8 +47,6 @@ func (m *InterchainEventRow) Get(key string) ([]byte, error) {
return []byte(fmt.Sprintf("%018d", m.Index)), nil return []byte(fmt.Sprintf("%018d", m.Index)), nil
} else if key == "dstServiceID" { } else if key == "dstServiceID" {
return []byte(fmt.Sprintf("%s", m.GetDstServiceID())), nil return []byte(fmt.Sprintf("%s", m.GetDstServiceID())), nil
} else if key == "status" {
return []byte(fmt.Sprintf("%d", m.GetStatus())), nil
}else if key == "type" { }else if key == "type" {
return []byte(fmt.Sprintf("%d", m.GetType())), nil return []byte(fmt.Sprintf("%d", m.GetType())), nil
} }
......
...@@ -52,7 +52,6 @@ message UpdateIndex { ...@@ -52,7 +52,6 @@ message UpdateIndex {
//响应信息 //响应信息
Response response = 5; Response response = 5;
} }
// 跨链事件 // 跨链事件
message InterchainEvent { message InterchainEvent {
//索引值,这个有系统自动生成 //索引值,这个有系统自动生成
...@@ -63,12 +62,16 @@ message InterchainEvent { ...@@ -63,12 +62,16 @@ message InterchainEvent {
string srcServiceID = 3; string srcServiceID = 3;
//跨链交易类型 0表示storage,1表示coins,2表示token...... //跨链交易类型 0表示storage,1表示coins,2表示token......
uint64 type =4; uint64 type =4;
//调用方法 //方法集合分别表示 当前,回调,回滚方法 用,号分割 比如: "interchainGet,interchainSet,interchainRollback"
string func = 5; string func = 5;
//参数列表 //参数列表
repeated string args = 6; string args = 6;
//回调参数
string argscb =7;
//回滚参数
string argsrb =8;
//状态 0表示开始处理 1表示跨链成功 2表示跨链失败 //状态 0表示开始处理 1表示跨链成功 2表示跨链失败
int32 status = 7; // int32 status = 7;
} }
//ReceiptBrokerLog //ReceiptBrokerLog
message ReceiptBrokerLog{ message ReceiptBrokerLog{
...@@ -95,23 +98,6 @@ message InterChainEventList{ ...@@ -95,23 +98,6 @@ message InterChainEventList{
repeated InterchainEvent list =1; repeated InterchainEvent list =1;
} }
////根据状态查看跨链事件
//message QueryInterchainEventList {
// //事件状态必填(默认是0,只查询待处理状态的事件)
// int32 status = 1;
// // 主键索引
// string primaryKey = 2;
// //单页返回多少条记录,默认返回10条,为了系统安全最多单次只能返回20条
// int32 count = 3;
// // 0降序,1升序,默认降序
// int32 direction = 4;
//}
////跨链事件列表
//message InterchainEventList {
// repeated InterchainEvent list = 1;
// string primaryKey = 2;
//}
message QueryNilParam{ message QueryNilParam{
} }
......
...@@ -424,9 +424,11 @@ type InterchainEvent struct { ...@@ -424,9 +424,11 @@ type InterchainEvent struct {
//调用方法 //调用方法
Func string `protobuf:"bytes,5,opt,name=func,proto3" json:"func,omitempty"` Func string `protobuf:"bytes,5,opt,name=func,proto3" json:"func,omitempty"`
//参数列表 //参数列表
Args []string `protobuf:"bytes,6,rep,name=args,proto3" json:"args,omitempty"` Args string `protobuf:"bytes,6,opt,name=args,proto3" json:"args,omitempty"`
//状态 0表示开始处理 1表示跨链成功 2表示跨链失败 //回调参数
Status int32 `protobuf:"varint,7,opt,name=status,proto3" json:"status,omitempty"` Argscb string `protobuf:"bytes,7,opt,name=argscb,proto3" json:"argscb,omitempty"`
//回滚参数
Argsrb string `protobuf:"bytes,8,opt,name=argsrb,proto3" json:"argsrb,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
...@@ -492,18 +494,25 @@ func (m *InterchainEvent) GetFunc() string { ...@@ -492,18 +494,25 @@ func (m *InterchainEvent) GetFunc() string {
return "" return ""
} }
func (m *InterchainEvent) GetArgs() []string { func (m *InterchainEvent) GetArgs() string {
if m != nil { if m != nil {
return m.Args return m.Args
} }
return nil return ""
} }
func (m *InterchainEvent) GetStatus() int32 { func (m *InterchainEvent) GetArgscb() string {
if m != nil { if m != nil {
return m.Status return m.Argscb
} }
return 0 return ""
}
func (m *InterchainEvent) GetArgsrb() string {
if m != nil {
return m.Argsrb
}
return ""
} }
//ReceiptBrokerLog //ReceiptBrokerLog
...@@ -1083,52 +1092,53 @@ func init() { ...@@ -1083,52 +1092,53 @@ func init() {
} }
var fileDescriptor_f209535e190f2bed = []byte{ var fileDescriptor_f209535e190f2bed = []byte{
// 718 bytes of a gzipped FileDescriptorProto // 732 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x55, 0xcf, 0x6e, 0xd3, 0x4e, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x55, 0xdd, 0x4e, 0xe3, 0x46,
0x10, 0x8e, 0x1d, 0x3b, 0x4d, 0x26, 0x69, 0xd3, 0xdf, 0xb6, 0xbf, 0xca, 0xe2, 0x00, 0xc1, 0xea, 0x14, 0x8e, 0x1d, 0x3b, 0x24, 0x27, 0x81, 0xd0, 0x81, 0x22, 0xab, 0x17, 0x2d, 0xb5, 0xb8, 0xa0,
0xa1, 0x80, 0x94, 0x4a, 0xad, 0x04, 0x08, 0x71, 0x49, 0x4a, 0xa5, 0x04, 0xb5, 0xa5, 0x2c, 0x7f, 0xad, 0x14, 0x24, 0x90, 0xda, 0xaa, 0xea, 0x4d, 0x42, 0x91, 0x92, 0x0a, 0x28, 0x9d, 0xfd, 0xd1,
0x04, 0xdc, 0xb6, 0xce, 0x34, 0x5d, 0x9a, 0xd8, 0xee, 0x7a, 0x5d, 0xd5, 0x8f, 0xc2, 0x9b, 0x70, 0xee, 0xde, 0x4d, 0x9c, 0x43, 0x98, 0x25, 0xb1, 0xcd, 0x78, 0x8c, 0xf0, 0xa3, 0xec, 0x9b, 0xec,
0xe2, 0xc2, 0x8b, 0xa1, 0x5d, 0x6f, 0x12, 0x27, 0x2d, 0x42, 0x54, 0x15, 0x97, 0x68, 0xe7, 0x9b, 0xd5, 0xbe, 0xc8, 0xbe, 0xcc, 0x6a, 0x7e, 0x92, 0x38, 0x81, 0xd5, 0x6a, 0x11, 0xda, 0x1b, 0x98,
0xd9, 0x9d, 0xc9, 0x37, 0xf3, 0x8d, 0xa1, 0x71, 0x22, 0xa2, 0x73, 0x14, 0xed, 0x58, 0x44, 0x32, 0xf3, 0x9d, 0x33, 0x73, 0xbe, 0x7c, 0xe7, 0xc7, 0xd0, 0x1a, 0x8a, 0xe4, 0x1a, 0x45, 0x27, 0x15,
0x22, 0xae, 0xcc, 0x62, 0x4c, 0xfc, 0xef, 0x36, 0x34, 0xba, 0x1a, 0xef, 0x04, 0x92, 0x47, 0x21, 0x89, 0x4c, 0x88, 0x2f, 0x8b, 0x14, 0xb3, 0xf0, 0xbd, 0x0b, 0xad, 0x9e, 0xc6, 0xbb, 0x91, 0xe4,
0x79, 0x08, 0x0e, 0x0f, 0xb9, 0xf4, 0xac, 0x96, 0xb5, 0x55, 0xdf, 0xa9, 0xb7, 0x75, 0x58, 0xbb, 0x49, 0x4c, 0x7e, 0x06, 0x8f, 0xc7, 0x5c, 0x06, 0xce, 0xae, 0xb3, 0xdf, 0x3c, 0x6c, 0x76, 0x74,
0x1f, 0x72, 0xd9, 0x2b, 0x51, 0xed, 0x22, 0x5d, 0x68, 0x0a, 0x1c, 0xf2, 0x44, 0xa2, 0xd8, 0xbf, 0x58, 0x67, 0x10, 0x73, 0xd9, 0xaf, 0x50, 0xed, 0x22, 0x3d, 0x68, 0x0b, 0x1c, 0xf3, 0x4c, 0xa2,
0xc2, 0x40, 0x46, 0xc2, 0xb3, 0x75, 0xf4, 0x86, 0x89, 0xa6, 0xf3, 0xde, 0x5e, 0x89, 0x2e, 0x5e, 0x38, 0xb9, 0xc3, 0x48, 0x26, 0x22, 0x70, 0x75, 0xf4, 0x8e, 0x8d, 0xa6, 0xcb, 0xde, 0x7e, 0x85,
0x20, 0x9b, 0xe0, 0xb2, 0x74, 0xc0, 0xa5, 0x57, 0xd6, 0x37, 0x1b, 0xe6, 0x66, 0x47, 0x61, 0xbd, 0xae, 0x5e, 0x20, 0x7b, 0xe0, 0xb3, 0x7c, 0xc4, 0x65, 0x50, 0xd5, 0x37, 0x5b, 0xf6, 0x66, 0x57,
0x12, 0xcd, 0x9d, 0xe4, 0x35, 0xac, 0xe1, 0x98, 0xcb, 0x7e, 0x28, 0x51, 0x04, 0x67, 0x8c, 0x87, 0x61, 0xfd, 0x0a, 0x35, 0x4e, 0xf2, 0x2f, 0x6c, 0xe1, 0x94, 0xcb, 0x41, 0x2c, 0x51, 0x44, 0x57,
0xfb, 0x97, 0x18, 0x4a, 0xcf, 0x99, 0xcb, 0xb6, 0xe0, 0xed, 0x95, 0xe8, 0x4d, 0x97, 0xc8, 0x53, 0x8c, 0xc7, 0x27, 0xb7, 0x18, 0xcb, 0xc0, 0x5b, 0xca, 0xb6, 0xe2, 0xed, 0x57, 0xe8, 0x43, 0x97,
0xa8, 0xa7, 0xf1, 0x80, 0x49, 0xec, 0x87, 0x03, 0xbc, 0xf2, 0x5c, 0xfd, 0x06, 0x31, 0x6f, 0x7c, 0xc8, 0xef, 0xd0, 0xcc, 0xd3, 0x11, 0x93, 0x38, 0x88, 0x47, 0x78, 0x17, 0xf8, 0xfa, 0x0d, 0x62,
0x98, 0x79, 0x7a, 0x25, 0x5a, 0x0c, 0x24, 0x2b, 0x60, 0xcb, 0xcc, 0xab, 0xb4, 0xac, 0x2d, 0x97, 0xdf, 0x78, 0xb1, 0xf0, 0xf4, 0x2b, 0xb4, 0x1c, 0x48, 0x36, 0xc0, 0x95, 0x45, 0x50, 0xdb, 0x75,
0xda, 0x32, 0xeb, 0x2e, 0x81, 0x7b, 0xc9, 0x46, 0x29, 0xfa, 0x2f, 0xc1, 0x51, 0xb4, 0x90, 0x75, 0xf6, 0x7d, 0xea, 0xca, 0xa2, 0xb7, 0x06, 0xfe, 0x2d, 0x9b, 0xe4, 0x18, 0xfe, 0x0d, 0x9e, 0x92,
0x70, 0x4f, 0xae, 0xce, 0xfa, 0x03, 0x4d, 0x59, 0x8d, 0xe6, 0x06, 0xb9, 0x0f, 0xc0, 0xe2, 0x78, 0x85, 0x6c, 0x83, 0x3f, 0xbc, 0xbb, 0x1a, 0x8c, 0xb4, 0x64, 0x0d, 0x6a, 0x0c, 0xf2, 0x23, 0x00,
0x4f, 0xe5, 0xef, 0x0f, 0x34, 0x3f, 0x35, 0x5a, 0x40, 0xfc, 0x5d, 0x68, 0x2e, 0xd0, 0x44, 0x5a, 0x4b, 0xd3, 0x63, 0x95, 0x7f, 0x30, 0xd2, 0xfa, 0x34, 0x68, 0x09, 0x09, 0x8f, 0xa0, 0xbd, 0x22,
0x50, 0xc7, 0xfc, 0x78, 0xc4, 0xc6, 0x68, 0x9e, 0x2b, 0x42, 0x7e, 0x07, 0x5c, 0xcd, 0xd0, 0x9f, 0x13, 0xd9, 0x85, 0x26, 0x9a, 0xe3, 0x39, 0x9b, 0xa2, 0x7d, 0xae, 0x0c, 0x85, 0x5d, 0xf0, 0xb5,
0x43, 0xc9, 0x06, 0x54, 0x12, 0xc9, 0x64, 0x9a, 0x98, 0xdc, 0xc6, 0xf2, 0xb7, 0xa1, 0x71, 0x1c, 0x42, 0x5f, 0x0e, 0x25, 0x3b, 0x50, 0xcb, 0x24, 0x93, 0x79, 0x66, 0x73, 0x5b, 0x2b, 0x3c, 0x80,
0x8d, 0x46, 0x3c, 0x1c, 0xe6, 0xb4, 0x3c, 0x00, 0x67, 0x8c, 0x92, 0x2d, 0xf4, 0xfb, 0x10, 0x25, 0xd6, 0x45, 0x32, 0x99, 0xf0, 0x78, 0x6c, 0x64, 0xf9, 0x09, 0xbc, 0x29, 0x4a, 0xb6, 0x52, 0xef,
0xa3, 0xda, 0xe1, 0xff, 0xb0, 0xa0, 0x5e, 0xa0, 0x47, 0xa5, 0x4e, 0xf0, 0x22, 0xc5, 0x30, 0xc0, 0x33, 0x94, 0x8c, 0x6a, 0x47, 0xf8, 0xc1, 0x81, 0x66, 0x49, 0x1e, 0x95, 0x3a, 0xc3, 0x9b, 0x1c,
0xa3, 0x74, 0xac, 0xef, 0x39, 0xb4, 0x08, 0x11, 0x1f, 0x1a, 0x83, 0x44, 0xbe, 0x43, 0x71, 0xc9, 0xe3, 0x08, 0xcf, 0xf3, 0xa9, 0xbe, 0xe7, 0xd1, 0x32, 0x44, 0x42, 0x68, 0x8d, 0x32, 0xf9, 0x0c,
0x03, 0xec, 0xbf, 0x32, 0x05, 0xcc, 0x61, 0x2a, 0x26, 0x11, 0xc1, 0x2c, 0xa6, 0x9c, 0xc7, 0x14, 0xc5, 0x2d, 0x8f, 0x70, 0xf0, 0x8f, 0x25, 0xb0, 0x84, 0xa9, 0x98, 0x4c, 0x44, 0x8b, 0x98, 0xaa,
0x31, 0xe2, 0xc1, 0x92, 0xc0, 0x8b, 0xf7, 0x59, 0x8c, 0xba, 0xe3, 0x0e, 0x9d, 0x98, 0xe4, 0x09, 0x89, 0x29, 0x63, 0x24, 0x80, 0x35, 0x81, 0x37, 0xcf, 0x8b, 0x14, 0x75, 0xc5, 0x3d, 0x3a, 0x33,
0x54, 0x05, 0x26, 0x71, 0x14, 0x26, 0x68, 0x1a, 0xd9, 0x9c, 0x8e, 0x5e, 0x0e, 0xd3, 0x69, 0x80, 0xc9, 0x6f, 0x50, 0x17, 0x98, 0xa5, 0x49, 0x9c, 0xa1, 0x2d, 0x64, 0x7b, 0xde, 0x7a, 0x06, 0xa6,
0xff, 0xd3, 0x82, 0xe6, 0xe2, 0x30, 0xac, 0x83, 0xcb, 0xf5, 0x18, 0xe4, 0xe5, 0xe7, 0xc6, 0x9d, 0xf3, 0x80, 0xf0, 0xa3, 0x03, 0xed, 0xd5, 0x66, 0xd8, 0x06, 0x9f, 0xeb, 0x36, 0x30, 0xf4, 0x8d,
0x15, 0x4e, 0xc0, 0x91, 0xb3, 0xaa, 0xf5, 0x59, 0x61, 0xa7, 0x69, 0x18, 0xe8, 0x72, 0x6b, 0x54, 0xf1, 0x64, 0xc4, 0x09, 0x78, 0x72, 0xc1, 0x5a, 0x9f, 0x15, 0x76, 0x99, 0xc7, 0x91, 0xa6, 0xdb,
0x9f, 0x15, 0xc6, 0xc4, 0x30, 0xf1, 0x2a, 0xad, 0xb2, 0xc2, 0xd4, 0xb9, 0xd0, 0xb7, 0x25, 0x3d, 0xa0, 0xfa, 0xac, 0x30, 0x26, 0xc6, 0x99, 0x6e, 0xae, 0x06, 0xd5, 0x67, 0x55, 0x37, 0xf5, 0x3f,
0x72, 0x93, 0xbe, 0x7d, 0xb3, 0x61, 0x95, 0x62, 0x80, 0x3c, 0x96, 0xb9, 0x5e, 0x0f, 0xa2, 0xe1, 0x1a, 0x06, 0x6b, 0xa6, 0x6e, 0xc6, 0x9a, 0xe1, 0x62, 0x18, 0xd4, 0x17, 0xb8, 0x18, 0x86, 0xef,
0x4d, 0x4a, 0xb4, 0x6e, 0xad, 0x44, 0xfb, 0x16, 0x4a, 0x2c, 0xdf, 0x81, 0x12, 0x9d, 0xbf, 0x53, 0x5c, 0xd8, 0xa4, 0x18, 0x21, 0x4f, 0xa5, 0x99, 0xe3, 0xd3, 0x64, 0xfc, 0xd0, 0x84, 0x3a, 0x8f,
0xa2, 0x7b, 0x5d, 0x89, 0x12, 0xd6, 0xdf, 0xa6, 0x28, 0xb2, 0x7f, 0xda, 0x65, 0xbf, 0x03, 0x6b, 0x9e, 0x50, 0xf7, 0x11, 0x13, 0x5a, 0x7d, 0x82, 0x09, 0xf5, 0xbe, 0x6e, 0x42, 0xfd, 0xfb, 0x13,
0x3a, 0xe1, 0xde, 0x34, 0xe1, 0x01, 0x4f, 0x24, 0x79, 0x0c, 0xce, 0x88, 0x27, 0x6a, 0x81, 0x96, 0x2a, 0x61, 0xfb, 0xff, 0x1c, 0x45, 0xf1, 0x4d, 0xab, 0x1f, 0x76, 0x61, 0x4b, 0x27, 0x3c, 0x9e,
0x7f, 0x4f, 0x0d, 0xd5, 0x31, 0x7e, 0x13, 0x96, 0x75, 0xe1, 0x47, 0x7c, 0x74, 0xcc, 0x04, 0x1b, 0x27, 0x3c, 0xe5, 0x99, 0x24, 0xbf, 0x82, 0x37, 0xe1, 0x99, 0x5a, 0xac, 0xd5, 0xcf, 0x4b, 0x43,
0xfb, 0xff, 0x41, 0x53, 0x03, 0x6f, 0x52, 0x29, 0x51, 0x28, 0x15, 0xfa, 0xab, 0xb0, 0x62, 0xfe, 0x75, 0x4c, 0xd8, 0x86, 0x75, 0x4d, 0xfc, 0x9c, 0x4f, 0x2e, 0x98, 0x60, 0xd3, 0xf0, 0x3b, 0x68,
0x5c, 0x68, 0x90, 0x4f, 0x53, 0xe4, 0x10, 0x93, 0x84, 0x0d, 0x91, 0x6c, 0xc2, 0x32, 0x0f, 0x4d, 0x6b, 0xe0, 0xbf, 0x5c, 0x4a, 0x14, 0x6a, 0x3a, 0xc3, 0x4d, 0xd8, 0xb0, 0x3f, 0x2e, 0xb6, 0xc8,
0x65, 0xc7, 0x8c, 0x0b, 0xb3, 0x10, 0xe6, 0xc1, 0x45, 0xe5, 0xda, 0xd7, 0x94, 0xeb, 0x7f, 0x9e, 0xab, 0x39, 0x72, 0x86, 0x59, 0xc6, 0xc6, 0x48, 0xf6, 0x60, 0x9d, 0xc7, 0x96, 0xd9, 0x05, 0xe3,
0xa5, 0xbf, 0xeb, 0xa7, 0xbb, 0x00, 0xf9, 0xdc, 0xf6, 0xc3, 0xd3, 0xe8, 0x96, 0x3b, 0xf3, 0x2b, 0xc2, 0x2e, 0x8a, 0x65, 0x70, 0x75, 0xa2, 0xdd, 0x7b, 0x13, 0x1d, 0xbe, 0x5e, 0xa4, 0x7f, 0xea,
0x38, 0x8a, 0x00, 0xf2, 0x68, 0xba, 0xb3, 0x14, 0xc5, 0xff, 0x17, 0x76, 0x96, 0xfe, 0xd9, 0x0f, 0xa7, 0x7b, 0x00, 0xa6, 0x6f, 0x07, 0xf1, 0x65, 0xf2, 0xc8, 0x5d, 0xfa, 0x16, 0x3c, 0x25, 0x00,
0xa5, 0xc8, 0xf2, 0xed, 0x75, 0xef, 0x19, 0xd4, 0xa6, 0x10, 0x59, 0x85, 0xf2, 0x39, 0x66, 0x26, 0xf9, 0x65, 0xbe, 0xcb, 0x94, 0xc4, 0xdf, 0x97, 0x76, 0x99, 0xfe, 0x73, 0x12, 0x4b, 0x51, 0x98,
0xa7, 0x3a, 0xaa, 0x3a, 0xf4, 0x08, 0x99, 0x8a, 0x73, 0xe3, 0x85, 0xfd, 0xdc, 0xf2, 0x3f, 0x42, 0xad, 0xf6, 0xc3, 0x1f, 0xd0, 0x98, 0x43, 0x64, 0x13, 0xaa, 0xd7, 0x58, 0xd8, 0x9c, 0xea, 0xa8,
0x75, 0xb2, 0x4b, 0x0a, 0x9a, 0xb4, 0x8a, 0x9a, 0x54, 0x0b, 0x6a, 0x9c, 0xd3, 0x64, 0x8a, 0x9d, 0x78, 0xe8, 0x16, 0xb2, 0x8c, 0x8d, 0xf1, 0x97, 0xfb, 0xa7, 0x13, 0xbe, 0x84, 0xfa, 0x6c, 0xc7,
0x98, 0xca, 0x13, 0xb3, 0x6c, 0x14, 0xb1, 0x81, 0x1e, 0x9d, 0x06, 0x9d, 0x98, 0x3b, 0x55, 0xa8, 0x94, 0x76, 0xac, 0xa3, 0x9b, 0xcf, 0x5a, 0x6a, 0x71, 0x4d, 0x8d, 0x4c, 0x96, 0xec, 0xcc, 0x54,
0xe4, 0xdf, 0xe1, 0x2e, 0x7c, 0xa9, 0xb6, 0xdb, 0xdb, 0xba, 0xf6, 0x93, 0x8a, 0xfe, 0x28, 0xef, 0x9e, 0x94, 0x15, 0x93, 0x84, 0x8d, 0x74, 0xeb, 0xb4, 0xe8, 0xcc, 0x3c, 0xac, 0x43, 0xcd, 0x7c,
0xfe, 0x0a, 0x00, 0x00, 0xff, 0xff, 0x68, 0xa7, 0x77, 0x2e, 0xa4, 0x07, 0x00, 0x00, 0x9f, 0x7b, 0xf0, 0xa6, 0xde, 0xe9, 0x1c, 0x68, 0xee, 0xc3, 0x9a, 0xfe, 0x58, 0x1f, 0x7d, 0x0a,
0x00, 0x00, 0xff, 0xff, 0xb2, 0x03, 0x83, 0x52, 0xbc, 0x07, 0x00, 0x00,
} }
// Reference imports to suppress errors if they are not otherwise used. // Reference imports to suppress errors if they are not otherwise used.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment