Commit 568c72d2 authored by QM's avatar QM

merge

parents 5aeea35f 0d9f6f30
......@@ -24,7 +24,7 @@ const (
maxRcvTxCount = 100 //channel buffer, max 100 nodes, 1 height tx or 1 txgroup per node
leaderSyncInt = 15 //15s heartbeat sync interval
defLeaderSwitchInt = 100 //每隔100个共识高度切换一次leader,大约6小时(按50个空块间隔计算)
delaySubP2pTopic = 30 //30s to sub p2p topic
delaySubP2pTopic = 10 //30s to sub p2p topic
paraBlsSignTopic = "PARA-BLS-SIGN-TOPIC"
)
......
......@@ -541,8 +541,8 @@ paracross_testBind() {
chain33_SignAndSendTxWait "$rawtx" "${priv1q9}" "${para_ip}"
echo "2. get bind"
chain33_Http '{"method":"Chain33.Query","params":[{ "execer":"paracross", "funcName":"GetNodeBindMinerList","payload":{"data":"1KSBd17H7ZK8iT37aJztFB22XGwsPTdwE4"}}]}' "${para_ip}" '(.error|not) and (.result.List.SuperNode| [has("1KSBd17H7Z"),true])' "$FUNCNAME" '(.result.List)'
chain33_Http '{"method":"Chain33.Query","params":[{ "execer":"paracross", "funcName":"GetNodeBindMinerList","payload":{"data":"1KSBd17H7ZK8iT37aJztFB22XGwsPTdwE4"}}]}' "${para_ip}" '(.error|not) and (.result.List.Miners| [has("1Q9sQw"),true])' "$FUNCNAME" '(.result.List)'
chain33_Http '{"method":"Chain33.Query","params":[{ "execer":"paracross", "funcName":"GetNodeBindMinerList","payload":{"superNode":"1KSBd17H7ZK8iT37aJztFB22XGwsPTdwE4"}}]}' "${para_ip}" '(.error|not) and (.result.List| [has("1KSBd17H7Z"),true])' "$FUNCNAME" '(.result.List)'
chain33_Http '{"method":"Chain33.Query","params":[{ "execer":"paracross", "funcName":"GetNodeBindMinerList","payload":{"superNode":"1KSBd17H7ZK8iT37aJztFB22XGwsPTdwE4"}}]}' "${para_ip}" '(.error|not) and (.result.List| [has("1Q9sQw"),true])' "$FUNCNAME" '(.result.List)'
}
paracross_testUnBind() {
......@@ -561,8 +561,8 @@ paracross_testUnBind() {
# superNode=$(jq -r ".result.List.SuperNode" <<<"$resp")
# miners=$(jq -r ".result.List.Miners" <<<"$resp")
chain33_Http '{"method":"Chain33.Query","params":[{ "execer":"paracross", "funcName":"GetNodeBindMinerList","payload":{"data":"1KSBd17H7ZK8iT37aJztFB22XGwsPTdwE4"}}]}' "${para_ip}" '(.error|not) and (.result.List.SuperNode| [has("1KSBd17H7Z"),true])' "$FUNCNAME" '(.result.List)'
chain33_Http '{"method":"Chain33.Query","params":[{ "execer":"paracross", "funcName":"GetNodeBindMinerList","payload":{"data":"1KSBd17H7ZK8iT37aJztFB22XGwsPTdwE4"}}]}' "${para_ip}" '(.error|not) and (.result.List.Miners| [has("1Q9sQw"),false])' "$FUNCNAME" '(.result.List)'
chain33_Http '{"method":"Chain33.Query","params":[{ "execer":"paracross", "funcName":"GetNodeBindMinerList","payload":{"superNode":"1KSBd17H7ZK8iT37aJztFB22XGwsPTdwE4"}}]}' "${para_ip}" '(.error|not) and (.result.List| [has("1KSBd17H7Z"),true])' "$FUNCNAME" '(.result.List)'
chain33_Http '{"method":"Chain33.Query","params":[{ "execer":"paracross", "funcName":"GetNodeBindMinerList","payload":{"superNode":"1KSBd17H7ZK8iT37aJztFB22XGwsPTdwE4"}}]}' "${para_ip}" '(.error|not) and (.result.List| [has("1Q9sQw"),false])' "$FUNCNAME" '(.result.List)'
}
paracross_testBindMiner() {
......
......@@ -582,19 +582,19 @@ func getNodeBindListCmd() *cobra.Command {
func addNodeBindCmdFlags(cmd *cobra.Command) {
cmd.Flags().StringP("node", "n", "", "super node addr to bind miner")
_ = cmd.MarkFlagRequired("node")
cmd.Flags().StringP("miner", "m", "", "bind miner addr")
}
func nodeBindInfo(cmd *cobra.Command, args []string) {
rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr")
addr, _ := cmd.Flags().GetString("node")
node, _ := cmd.Flags().GetString("node")
miner, _ := cmd.Flags().GetString("miner")
var params rpctypes.Query4Jrpc
params.Execer = pt.ParaX
params.FuncName = "GetNodeBindMinerList"
params.Payload = types.MustPBToJSON(&types.ReqString{Data: addr})
params.Payload = types.MustPBToJSON(&pt.ParaNodeBindOne{SuperNode: node, Miner: miner})
var res pt.RespParaNodeBindList
ctx := jsonclient.NewRPCCtx(rpcLaddr, "Chain33.Query", params, &res)
......
......@@ -222,8 +222,8 @@ func calcParaBindMinerAddr(node, bind string) []byte {
return []byte(fmt.Sprintf(paraBindMinderAddr+"%s-%s", node, bind))
}
func calcParaBindMinerNode(node string) []byte {
return []byte(paraBindMinderNode + node)
func calcParaBindMinerNode() []byte {
return []byte(paraBindMinderNode)
}
func calcParaSupervisionNodeGroupAddrsKey(title string) []byte {
......
......@@ -629,29 +629,63 @@ func (p *Paracross) Query_GetHeight(req *types.ReqString) (*pt.ParacrossConsensu
return nil, types.ErrDecode
}
func getMinerListResp(db dbm.KV, list *pt.ParaNodeBindList) (types.Message, error) {
var resp pt.RespParaNodeBindList
resp.List = list
for _, n := range list.Miners {
info, err := getBindAddrInfo(db, n.SuperNode, n.Miner)
if err != nil {
clog.Error("Query_GetNodeBindMinerList get addr", "err", err, "node", n.SuperNode, "addr", n.Miner)
return nil, errors.Cause(err)
}
resp.Details = append(resp.Details, info)
}
return &resp, nil
}
// Query_GetNodeBindMinerList query get super node bind miner list
func (p *Paracross) Query_GetNodeBindMinerList(in *types.ReqString) (types.Message, error) {
if in == nil || len(in.Data) == 0 {
func (p *Paracross) Query_GetNodeBindMinerList(in *pt.ParaNodeBindOne) (types.Message, error) {
if in == nil {
return nil, types.ErrInvalidParam
}
list, err := getBindNodeInfo(p.GetStateDB(), in.Data)
list, err := getBindNodeInfo(p.GetStateDB())
if err != nil {
clog.Error("Query_GetNodeBindMinerList get node", "err", err, "req", in.Data)
clog.Error("Query_GetNodeBindMinerList get node", "err", err)
return nil, errors.Cause(err)
}
var resp pt.RespParaNodeBindList
resp.List = list
var newList pt.ParaNodeBindList
//按node query
if len(in.SuperNode) != 0 && len(in.Miner) == 0 {
for _, n := range list.Miners {
if n.SuperNode == in.SuperNode {
newList.Miners = append(newList.Miners, n)
}
}
return getMinerListResp(p.GetStateDB(), &newList)
}
for _, addr := range list.Miners {
info, err := getBindAddrInfo(p.GetStateDB(), in.Data, addr)
if err != nil {
clog.Error("Query_GetNodeBindMinerList get addr", "err", err, "node", in.Data, "addr", addr)
return nil, errors.Cause(err)
//按miner query
if len(in.SuperNode) == 0 && len(in.Miner) != 0 {
for _, n := range list.Miners {
if n.Miner == in.Miner {
newList.Miners = append(newList.Miners, n)
}
}
resp.Details = append(resp.Details, info)
return getMinerListResp(p.GetStateDB(), &newList)
}
//按唯一绑定查询
if len(in.SuperNode) != 0 && len(in.Miner) != 0 {
for _, n := range list.Miners {
if n.SuperNode == in.SuperNode && n.Miner == in.Miner {
newList.Miners = append(newList.Miners, n)
}
}
return getMinerListResp(p.GetStateDB(), &newList)
}
return &resp, nil
//获取所有
return getMinerListResp(p.GetStateDB(), list)
}
......@@ -8,6 +8,7 @@ import (
dbm "github.com/33cn/chain33/common/db"
"github.com/33cn/chain33/types"
pt "github.com/33cn/plugin/plugin/dapp/paracross/types"
"github.com/golang/protobuf/proto"
)
const (
......@@ -15,36 +16,28 @@ const (
opUnBind = 2
)
//根据挖矿节点地址 获取委托挖矿地址
func (a *action) getBindAddrs(nodes []string, statusHeight int64) []*pt.ParaNodeBindList {
var lists []*pt.ParaNodeBindList
for _, m := range nodes {
list, err := getBindNodeInfo(a.db, m)
if isNotFound(errors.Cause(err)) {
continue
}
if err != nil {
clog.Error("paracross getBindAddrs err", "height", statusHeight, "node", m)
continue
}
lists = append(lists, list)
//根据挖矿共识节点地址 过滤整体共识节点映射列表, 获取委托挖矿地址
func (a *action) getBindAddrs(nodes []string, statusHeight int64) (*pt.ParaNodeBindList, error) {
nodesMap := make(map[string]bool)
for _, n := range nodes {
nodesMap[n] = true
}
return lists
}
func isBindAddrFound(bindAddrs []*pt.ParaNodeBindList) bool {
if len(bindAddrs) <= 0 {
return false
var newLists pt.ParaNodeBindList
list, err := getBindNodeInfo(a.db)
if err != nil {
clog.Error("paracross getBindAddrs err", "height", statusHeight)
return nil, err
}
for _, addr := range bindAddrs {
if len(addr.Miners) > 0 {
return true
//这样检索是按照list的映射顺序,不是按照nodes的顺序(需要循环嵌套)
for _, m := range list.Miners {
if nodesMap[m.SuperNode] {
newLists.Miners = append(newLists.Miners, m)
}
}
return false
return &newLists, nil
}
func (a *action) rewardSuperNode(coinReward int64, miners []string, statusHeight int64) (*types.Receipt, int64, error) {
......@@ -70,21 +63,19 @@ func (a *action) rewardSuperNode(coinReward int64, miners []string, statusHeight
}
//奖励委托挖矿账户
func (a *action) rewardBindAddr(coinReward int64, bindList []*pt.ParaNodeBindList, statusHeight int64) (*types.Receipt, int64, error) {
func (a *action) rewardBindAddr(coinReward int64, bindList *pt.ParaNodeBindList, statusHeight int64) (*types.Receipt, int64, error) {
if coinReward <= 0 {
return nil, 0, nil
}
//有可能一个bindAddr 在多个node绑定,这里会累计上去
var bindAddrList []*pt.ParaBindMinerInfo
for _, node := range bindList {
for _, miner := range node.Miners {
info, err := getBindAddrInfo(a.db, node.SuperNode, miner)
if err != nil {
return nil, 0, err
}
bindAddrList = append(bindAddrList, info)
for _, node := range bindList.Miners {
info, err := getBindAddrInfo(a.db, node.SuperNode, node.Miner)
if err != nil {
return nil, 0, err
}
bindAddrList = append(bindAddrList, info)
}
var totalCoins int64
......@@ -127,18 +118,21 @@ func (a *action) reward(nodeStatus *pt.ParacrossNodeStatus, stat *pt.ParacrossHe
}
//超级节点地址
minerAddrs := getMiners(stat.Details, nodeStatus.BlockHash)
nodeAddrs := getSuperNodes(stat.Details, nodeStatus.BlockHash)
//委托地址
bindAddrs := a.getBindAddrs(minerAddrs, nodeStatus.Height)
bindAddrs, err := a.getBindAddrs(nodeAddrs, nodeStatus.Height)
if err != nil {
return nil, err
}
//奖励超级节点
minderRewards := coinReward
//如果有委托挖矿地址,则超级节点分baseReward部分,否则全部
if isBindAddrFound(bindAddrs) {
if len(bindAddrs.Miners) > 0 {
minderRewards = coinBaseReward
}
receipt := &types.Receipt{Ty: types.ExecOk}
r, change, err := a.rewardSuperNode(minderRewards, minerAddrs, nodeStatus.Height)
r, change, err := a.rewardSuperNode(minderRewards, nodeAddrs, nodeStatus.Height)
if err != nil {
return nil, err
}
......@@ -167,8 +161,8 @@ func (a *action) reward(nodeStatus *pt.ParacrossNodeStatus, stat *pt.ParacrossHe
return receipt, nil
}
// getMiners 获取提交共识消息的矿工地址
func getMiners(detail *pt.ParacrossStatusDetails, blockHash []byte) []string {
// getSuperNodes 获取提交共识消息的矿工地址
func getSuperNodes(detail *pt.ParacrossStatusDetails, blockHash []byte) []string {
addrs := make([]string, 0)
for i, hash := range detail.BlockHash {
if bytes.Equal(hash, blockHash) {
......@@ -210,8 +204,8 @@ func makeAddrBindReceipt(node, addr string, prev, current *pt.ParaBindMinerInfo)
}
}
func makeNodeBindReceipt(addr string, prev, current *pt.ParaNodeBindList) *types.Receipt {
key := calcParaBindMinerNode(addr)
func makeNodeBindReceipt(prev, current *pt.ParaNodeBindList) *types.Receipt {
key := calcParaBindMinerNode()
log := &pt.ReceiptParaNodeBindListUpdate{
Prev: prev,
Current: current,
......@@ -233,51 +227,56 @@ func makeNodeBindReceipt(addr string, prev, current *pt.ParaNodeBindList) *types
//绑定到超级节点
func (a *action) bind2Node(node string) (*types.Receipt, error) {
info, err := getBindNodeInfo(a.db, node)
if err != nil && !isNotFound(errors.Cause(err)) {
list, err := getBindNodeInfo(a.db)
if err != nil {
return nil, errors.Wrap(err, "bind2Node")
}
//found
if info != nil {
listCopy := *info
info.Miners = append(info.Miners, a.fromaddr)
return makeNodeBindReceipt(node, &listCopy, info), nil
//由于kvmvcc内存架构,如果存储结构为nil,将回溯查找,这样在只有一个绑定时候,unbind后,有可能会回溯到更早状态,是错误的,title这里就是占位使用
if len(list.Title) <= 0 {
list.Title = a.api.GetConfig().GetTitle()
}
//unfound
var list pt.ParaNodeBindList
list.SuperNode = node
list.Miners = append(list.Miners, a.fromaddr)
return makeNodeBindReceipt(node, nil, &list), nil
old := proto.Clone(list).(*pt.ParaNodeBindList)
list.Miners = append(list.Miners, &pt.ParaNodeBindOne{SuperNode: node, Miner: a.fromaddr})
return makeNodeBindReceipt(old, list), nil
}
//从超级节点解绑
func (a *action) unbind2Node(node string) (*types.Receipt, error) {
list, err := getBindNodeInfo(a.db, node)
list, err := getBindNodeInfo(a.db)
if err != nil {
return nil, errors.Wrap(err, "unbind2Node")
}
newList := &pt.ParaNodeBindList{SuperNode: list.SuperNode}
newList := &pt.ParaNodeBindList{Title: a.api.GetConfig().GetTitle()}
old := proto.Clone(list).(*pt.ParaNodeBindList)
for _, m := range list.Miners {
if m != a.fromaddr {
newList.Miners = append(newList.Miners, m)
if m.SuperNode == node && m.Miner == a.fromaddr {
continue
}
newList.Miners = append(newList.Miners, m)
}
return makeNodeBindReceipt(node, list, newList), nil
return makeNodeBindReceipt(old, newList), nil
}
func getBindNodeInfo(db dbm.KV, node string) (*pt.ParaNodeBindList, error) {
key := calcParaBindMinerNode(node)
func getBindNodeInfo(db dbm.KV) (*pt.ParaNodeBindList, error) {
var list pt.ParaNodeBindList
key := calcParaBindMinerNode()
data, err := db.Get(key)
if isNotFound(err) {
return &list, nil
}
if err != nil {
return nil, errors.Wrapf(err, "get key failed node=%s", node)
return nil, errors.Wrapf(err, "get key failed")
}
var list pt.ParaNodeBindList
err = types.Decode(data, &list)
if err != nil {
return nil, errors.Wrapf(err, "decode failed node=%s", node)
return nil, errors.Wrapf(err, "decode failed")
}
return &list, nil
}
......@@ -380,6 +379,10 @@ func (a *action) unBindOp(cmd *pt.ParaBindMinerCmd) (*types.Receipt, error) {
return nil, errors.Wrapf(types.ErrNotAllow, "unBindOp unbind time=%d less %d hours than bind time =%d", a.blocktime, unBindHours, acct.BlockTime)
}
if acct.BindStatus != opBind {
return nil, errors.Wrapf(types.ErrNotAllow, "unBindOp,current addr is unbind status")
}
//unfrozen
receipt, err := a.coinsAccount.ExecActive(a.fromaddr, a.execaddr, acct.BindCoins*types.Coin)
if err != nil {
......
# 平行链共识节点挖矿奖励规则
>平行链共识节点是参与平行链共识安全的节点,发送共识交易,同时享受平行链挖矿奖励
## 共识节点资格
1. 共识节点需要加入共识节点账户组才具有发送共识交易的资格,不然即使发送也不会被接受
1. 新的共识节点需要共识节点账户组成员超过2/3投票通过才可以加入共识节点账户组
## 共识节点挖矿奖励
1. 共识节点根据本地计算的区块哈希发送共识交易参与共识,共识达成后促使达成共识的节点享受挖矿奖励
1. 比如共识账户组有4个挖矿账户A,B,C,D,其中A,B,C,D都依次发送共识交易,基于超过2/3的规则,在C的共识交易收到后即达成共识,那么奖励将分给A,B,C,而D是在达成共识后发送的,不享受挖矿奖励
## 绑定共识节点挖矿(矿池的概念)
1. 如果账户不是共识节点,但是想参与挖矿奖励,可以锁定平行链基础coins到paracross合约,并绑定到共识节点参与挖矿
1. 绑定账户可以绑定到一个或多个共识节点参与挖矿
1. 挖矿奖励按锁定coins数量的权重来分配挖矿奖励
1. 如果绑定的共识节点在某高度没有得到挖矿奖励,对应的绑定账户也得不到相应奖励
1. 绑定账户可以通过bind命令的coins 数量的修改来增加或减少锁定coins数量,可以通过unbind命令解除对某个共识节点的绑定
## 奖励规则和金额
>奖励规则和金额可配置
```
[mver.consensus.paracross]
#超级节点挖矿奖励
coinReward=18
#发展基金奖励
coinDevFund=12
#如果超级节点上绑定了委托账户,则奖励超级节点coinBaseReward,其余部分(coinReward-coinBaseReward)按权重分给委托账户
coinBaseReward=3
#委托账户最少解绑定时间(按小时)
unBindTime=24
```
1. 每个区块产生的挖矿总奖励如配置项是coinDevFund+coinReward=30,共识达成后,发展基金账户分走12,剩余的18个coin平均分给达成共识的节点
1. 如果有绑定挖矿的账户绑定了共识节点进行挖矿,则共识节点平分基础的coinBaseReward,剩余部分(coinReward-coinBaseReward)按绑定挖矿锁定币的权重数量分给绑定挖矿的节点。
## 绑定挖矿命令
1. 生成 绑定/解绑定 挖矿 的交易(未签名)
```
{
"method" : "Chain33.CreateTransaction",
"params" : [
{
"execer" : "{user.p.para}.paracross",
"actionName" : "ParaBindMiner",
"payload" : {
       "bindAction":"1"
"bindCoins" : 5,
"targetNode" : "1KSBd17H7ZK8iT37aJztFB22XGwsPTdwE4",
}
}
],
}
```
**参数说明:**
|参数|类型|说明|
|----|----|----|
|method|string|Chain33.CreateTransaction|
|execer|string|必须是平行链的执行器user.p.para.paracross,title:user.p.para.按需调整|
|actionName|string|ParaBindMiner|
|bindAction|string|绑定:1,解绑定:2|
|bindCoins|int|绑定挖矿冻结币的份额,需冻结平行链原生代币,解绑定不需要此配置|
|targetNode|string|绑定目标共识节点,需要是共识账户组的成员|
......@@ -83,14 +83,14 @@ func (suite *RewardTestSuite) TestRewardBindAddr() {
key = calcParaBindMinerAddr(node, addr2)
suite.stateDB.Set(key, data)
list := &pt.ParaNodeBindList{
SuperNode: node,
Miners: []string{addr, addr2},
}
node1 := &pt.ParaNodeBindOne{SuperNode: node, Miner: addr}
node2 := &pt.ParaNodeBindOne{SuperNode: node, Miner: addr2}
lists := []*pt.ParaNodeBindList{list}
list := &pt.ParaNodeBindList{}
list.Miners = append(list.Miners, node1)
list.Miners = append(list.Miners, node2)
recp, change, err := suite.action.rewardBindAddr(50000005, lists, 1)
recp, change, err := suite.action.rewardBindAddr(50000005, list, 1)
suite.Nil(err)
suite.Equal(int64(5), change)
suite.Equal(int32(types.ExecOk), recp.Ty)
......
......@@ -181,9 +181,14 @@ message ReceiptParaBindMinerInfo{
ParaBindMinerInfo current = 3;
}
message ParaNodeBindList{
message ParaNodeBindOne{
string superNode = 1;
repeated string miners = 2;
string miner = 2;
}
message ParaNodeBindList{
string title = 1;
repeated ParaNodeBindOne miners = 2;
}
message ReceiptParaNodeBindListUpdate{
......
......@@ -1545,19 +1545,66 @@ func (m *ReceiptParaBindMinerInfo) GetCurrent() *ParaBindMinerInfo {
return nil
}
type ParaNodeBindList struct {
type ParaNodeBindOne struct {
SuperNode string `protobuf:"bytes,1,opt,name=superNode,proto3" json:"superNode,omitempty"`
Miners []string `protobuf:"bytes,2,rep,name=miners,proto3" json:"miners,omitempty"`
Miner string `protobuf:"bytes,2,opt,name=miner,proto3" json:"miner,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ParaNodeBindOne) Reset() { *m = ParaNodeBindOne{} }
func (m *ParaNodeBindOne) String() string { return proto.CompactTextString(m) }
func (*ParaNodeBindOne) ProtoMessage() {}
func (*ParaNodeBindOne) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{22}
}
func (m *ParaNodeBindOne) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ParaNodeBindOne.Unmarshal(m, b)
}
func (m *ParaNodeBindOne) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ParaNodeBindOne.Marshal(b, m, deterministic)
}
func (m *ParaNodeBindOne) XXX_Merge(src proto.Message) {
xxx_messageInfo_ParaNodeBindOne.Merge(m, src)
}
func (m *ParaNodeBindOne) XXX_Size() int {
return xxx_messageInfo_ParaNodeBindOne.Size(m)
}
func (m *ParaNodeBindOne) XXX_DiscardUnknown() {
xxx_messageInfo_ParaNodeBindOne.DiscardUnknown(m)
}
var xxx_messageInfo_ParaNodeBindOne proto.InternalMessageInfo
func (m *ParaNodeBindOne) GetSuperNode() string {
if m != nil {
return m.SuperNode
}
return ""
}
func (m *ParaNodeBindOne) GetMiner() string {
if m != nil {
return m.Miner
}
return ""
}
type ParaNodeBindList struct {
Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"`
Miners []*ParaNodeBindOne `protobuf:"bytes,2,rep,name=miners,proto3" json:"miners,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ParaNodeBindList) Reset() { *m = ParaNodeBindList{} }
func (m *ParaNodeBindList) String() string { return proto.CompactTextString(m) }
func (*ParaNodeBindList) ProtoMessage() {}
func (*ParaNodeBindList) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{22}
return fileDescriptor_6a397e38c9ea6747, []int{23}
}
func (m *ParaNodeBindList) XXX_Unmarshal(b []byte) error {
......@@ -1578,14 +1625,14 @@ func (m *ParaNodeBindList) XXX_DiscardUnknown() {
var xxx_messageInfo_ParaNodeBindList proto.InternalMessageInfo
func (m *ParaNodeBindList) GetSuperNode() string {
func (m *ParaNodeBindList) GetTitle() string {
if m != nil {
return m.SuperNode
return m.Title
}
return ""
}
func (m *ParaNodeBindList) GetMiners() []string {
func (m *ParaNodeBindList) GetMiners() []*ParaNodeBindOne {
if m != nil {
return m.Miners
}
......@@ -1604,7 +1651,7 @@ func (m *ReceiptParaNodeBindListUpdate) Reset() { *m = ReceiptParaNodeBi
func (m *ReceiptParaNodeBindListUpdate) String() string { return proto.CompactTextString(m) }
func (*ReceiptParaNodeBindListUpdate) ProtoMessage() {}
func (*ReceiptParaNodeBindListUpdate) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{23}
return fileDescriptor_6a397e38c9ea6747, []int{24}
}
func (m *ReceiptParaNodeBindListUpdate) XXX_Unmarshal(b []byte) error {
......@@ -1651,7 +1698,7 @@ func (m *RespParaNodeBindList) Reset() { *m = RespParaNodeBindList{} }
func (m *RespParaNodeBindList) String() string { return proto.CompactTextString(m) }
func (*RespParaNodeBindList) ProtoMessage() {}
func (*RespParaNodeBindList) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{24}
return fileDescriptor_6a397e38c9ea6747, []int{25}
}
func (m *RespParaNodeBindList) XXX_Unmarshal(b []byte) error {
......@@ -1700,7 +1747,7 @@ func (m *ParaBlock2MainMap) Reset() { *m = ParaBlock2MainMap{} }
func (m *ParaBlock2MainMap) String() string { return proto.CompactTextString(m) }
func (*ParaBlock2MainMap) ProtoMessage() {}
func (*ParaBlock2MainMap) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{25}
return fileDescriptor_6a397e38c9ea6747, []int{26}
}
func (m *ParaBlock2MainMap) XXX_Unmarshal(b []byte) error {
......@@ -1760,7 +1807,7 @@ func (m *ParaBlock2MainInfo) Reset() { *m = ParaBlock2MainInfo{} }
func (m *ParaBlock2MainInfo) String() string { return proto.CompactTextString(m) }
func (*ParaBlock2MainInfo) ProtoMessage() {}
func (*ParaBlock2MainInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{26}
return fileDescriptor_6a397e38c9ea6747, []int{27}
}
func (m *ParaBlock2MainInfo) XXX_Unmarshal(b []byte) error {
......@@ -1813,7 +1860,7 @@ func (m *ParacrossNodeStatus) Reset() { *m = ParacrossNodeStatus{} }
func (m *ParacrossNodeStatus) String() string { return proto.CompactTextString(m) }
func (*ParacrossNodeStatus) ProtoMessage() {}
func (*ParacrossNodeStatus) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{27}
return fileDescriptor_6a397e38c9ea6747, []int{28}
}
func (m *ParacrossNodeStatus) XXX_Unmarshal(b []byte) error {
......@@ -1943,7 +1990,7 @@ func (m *SelfConsensStages) Reset() { *m = SelfConsensStages{} }
func (m *SelfConsensStages) String() string { return proto.CompactTextString(m) }
func (*SelfConsensStages) ProtoMessage() {}
func (*SelfConsensStages) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{28}
return fileDescriptor_6a397e38c9ea6747, []int{29}
}
func (m *SelfConsensStages) XXX_Unmarshal(b []byte) error {
......@@ -1983,7 +2030,7 @@ func (m *SelfConsensStage) Reset() { *m = SelfConsensStage{} }
func (m *SelfConsensStage) String() string { return proto.CompactTextString(m) }
func (*SelfConsensStage) ProtoMessage() {}
func (*SelfConsensStage) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{29}
return fileDescriptor_6a397e38c9ea6747, []int{30}
}
func (m *SelfConsensStage) XXX_Unmarshal(b []byte) error {
......@@ -2034,7 +2081,7 @@ func (m *SelfConsensStageInfo) Reset() { *m = SelfConsensStageInfo{} }
func (m *SelfConsensStageInfo) String() string { return proto.CompactTextString(m) }
func (*SelfConsensStageInfo) ProtoMessage() {}
func (*SelfConsensStageInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{30}
return fileDescriptor_6a397e38c9ea6747, []int{31}
}
func (m *SelfConsensStageInfo) XXX_Unmarshal(b []byte) error {
......@@ -2109,7 +2156,7 @@ func (m *LocalSelfConsStageInfo) Reset() { *m = LocalSelfConsStageInfo{}
func (m *LocalSelfConsStageInfo) String() string { return proto.CompactTextString(m) }
func (*LocalSelfConsStageInfo) ProtoMessage() {}
func (*LocalSelfConsStageInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{31}
return fileDescriptor_6a397e38c9ea6747, []int{32}
}
func (m *LocalSelfConsStageInfo) XXX_Unmarshal(b []byte) error {
......@@ -2157,7 +2204,7 @@ func (m *ConfigVoteInfo) Reset() { *m = ConfigVoteInfo{} }
func (m *ConfigVoteInfo) String() string { return proto.CompactTextString(m) }
func (*ConfigVoteInfo) ProtoMessage() {}
func (*ConfigVoteInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{32}
return fileDescriptor_6a397e38c9ea6747, []int{33}
}
func (m *ConfigVoteInfo) XXX_Unmarshal(b []byte) error {
......@@ -2203,7 +2250,7 @@ func (m *ConfigCancelInfo) Reset() { *m = ConfigCancelInfo{} }
func (m *ConfigCancelInfo) String() string { return proto.CompactTextString(m) }
func (*ConfigCancelInfo) ProtoMessage() {}
func (*ConfigCancelInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{33}
return fileDescriptor_6a397e38c9ea6747, []int{34}
}
func (m *ConfigCancelInfo) XXX_Unmarshal(b []byte) error {
......@@ -2250,7 +2297,7 @@ func (m *ParaStageConfig) Reset() { *m = ParaStageConfig{} }
func (m *ParaStageConfig) String() string { return proto.CompactTextString(m) }
func (*ParaStageConfig) ProtoMessage() {}
func (*ParaStageConfig) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{34}
return fileDescriptor_6a397e38c9ea6747, []int{35}
}
func (m *ParaStageConfig) XXX_Unmarshal(b []byte) error {
......@@ -2356,7 +2403,7 @@ func (m *ReceiptSelfConsStageConfig) Reset() { *m = ReceiptSelfConsStage
func (m *ReceiptSelfConsStageConfig) String() string { return proto.CompactTextString(m) }
func (*ReceiptSelfConsStageConfig) ProtoMessage() {}
func (*ReceiptSelfConsStageConfig) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{35}
return fileDescriptor_6a397e38c9ea6747, []int{36}
}
func (m *ReceiptSelfConsStageConfig) XXX_Unmarshal(b []byte) error {
......@@ -2407,7 +2454,7 @@ func (m *ReceiptSelfConsStageVoteDone) Reset() { *m = ReceiptSelfConsSta
func (m *ReceiptSelfConsStageVoteDone) String() string { return proto.CompactTextString(m) }
func (*ReceiptSelfConsStageVoteDone) ProtoMessage() {}
func (*ReceiptSelfConsStageVoteDone) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{36}
return fileDescriptor_6a397e38c9ea6747, []int{37}
}
func (m *ReceiptSelfConsStageVoteDone) XXX_Unmarshal(b []byte) error {
......@@ -2482,7 +2529,7 @@ func (m *ReceiptSelfConsStagesUpdate) Reset() { *m = ReceiptSelfConsStag
func (m *ReceiptSelfConsStagesUpdate) String() string { return proto.CompactTextString(m) }
func (*ReceiptSelfConsStagesUpdate) ProtoMessage() {}
func (*ReceiptSelfConsStagesUpdate) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{37}
return fileDescriptor_6a397e38c9ea6747, []int{38}
}
func (m *ReceiptSelfConsStagesUpdate) XXX_Unmarshal(b []byte) error {
......@@ -2534,7 +2581,7 @@ func (m *ReqQuerySelfStages) Reset() { *m = ReqQuerySelfStages{} }
func (m *ReqQuerySelfStages) String() string { return proto.CompactTextString(m) }
func (*ReqQuerySelfStages) ProtoMessage() {}
func (*ReqQuerySelfStages) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{38}
return fileDescriptor_6a397e38c9ea6747, []int{39}
}
func (m *ReqQuerySelfStages) XXX_Unmarshal(b []byte) error {
......@@ -2608,7 +2655,7 @@ func (m *ReplyQuerySelfStages) Reset() { *m = ReplyQuerySelfStages{} }
func (m *ReplyQuerySelfStages) String() string { return proto.CompactTextString(m) }
func (*ReplyQuerySelfStages) ProtoMessage() {}
func (*ReplyQuerySelfStages) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{39}
return fileDescriptor_6a397e38c9ea6747, []int{40}
}
func (m *ReplyQuerySelfStages) XXX_Unmarshal(b []byte) error {
......@@ -2649,7 +2696,7 @@ func (m *ParacrossCommitBlsInfo) Reset() { *m = ParacrossCommitBlsInfo{}
func (m *ParacrossCommitBlsInfo) String() string { return proto.CompactTextString(m) }
func (*ParacrossCommitBlsInfo) ProtoMessage() {}
func (*ParacrossCommitBlsInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{40}
return fileDescriptor_6a397e38c9ea6747, []int{41}
}
func (m *ParacrossCommitBlsInfo) XXX_Unmarshal(b []byte) error {
......@@ -2703,7 +2750,7 @@ func (m *ParacrossCommitAction) Reset() { *m = ParacrossCommitAction{} }
func (m *ParacrossCommitAction) String() string { return proto.CompactTextString(m) }
func (*ParacrossCommitAction) ProtoMessage() {}
func (*ParacrossCommitAction) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{41}
return fileDescriptor_6a397e38c9ea6747, []int{42}
}
func (m *ParacrossCommitAction) XXX_Unmarshal(b []byte) error {
......@@ -2750,7 +2797,7 @@ func (m *ParacrossMinerAction) Reset() { *m = ParacrossMinerAction{} }
func (m *ParacrossMinerAction) String() string { return proto.CompactTextString(m) }
func (*ParacrossMinerAction) ProtoMessage() {}
func (*ParacrossMinerAction) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{42}
return fileDescriptor_6a397e38c9ea6747, []int{43}
}
func (m *ParacrossMinerAction) XXX_Unmarshal(b []byte) error {
......@@ -2801,7 +2848,7 @@ func (m *CrossAssetTransfer) Reset() { *m = CrossAssetTransfer{} }
func (m *CrossAssetTransfer) String() string { return proto.CompactTextString(m) }
func (*CrossAssetTransfer) ProtoMessage() {}
func (*CrossAssetTransfer) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{43}
return fileDescriptor_6a397e38c9ea6747, []int{44}
}
func (m *CrossAssetTransfer) XXX_Unmarshal(b []byte) error {
......@@ -2883,7 +2930,7 @@ func (m *ParacrossAction) Reset() { *m = ParacrossAction{} }
func (m *ParacrossAction) String() string { return proto.CompactTextString(m) }
func (*ParacrossAction) ProtoMessage() {}
func (*ParacrossAction) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{44}
return fileDescriptor_6a397e38c9ea6747, []int{45}
}
func (m *ParacrossAction) XXX_Unmarshal(b []byte) error {
......@@ -3125,7 +3172,7 @@ func (m *ReceiptParacrossCommit) Reset() { *m = ReceiptParacrossCommit{}
func (m *ReceiptParacrossCommit) String() string { return proto.CompactTextString(m) }
func (*ReceiptParacrossCommit) ProtoMessage() {}
func (*ReceiptParacrossCommit) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{45}
return fileDescriptor_6a397e38c9ea6747, []int{46}
}
func (m *ReceiptParacrossCommit) XXX_Unmarshal(b []byte) error {
......@@ -3185,7 +3232,7 @@ func (m *ReceiptParacrossMiner) Reset() { *m = ReceiptParacrossMiner{} }
func (m *ReceiptParacrossMiner) String() string { return proto.CompactTextString(m) }
func (*ReceiptParacrossMiner) ProtoMessage() {}
func (*ReceiptParacrossMiner) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{46}
return fileDescriptor_6a397e38c9ea6747, []int{47}
}
func (m *ReceiptParacrossMiner) XXX_Unmarshal(b []byte) error {
......@@ -3238,7 +3285,7 @@ func (m *ReceiptParacrossDone) Reset() { *m = ReceiptParacrossDone{} }
func (m *ReceiptParacrossDone) String() string { return proto.CompactTextString(m) }
func (*ReceiptParacrossDone) ProtoMessage() {}
func (*ReceiptParacrossDone) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{47}
return fileDescriptor_6a397e38c9ea6747, []int{48}
}
func (m *ReceiptParacrossDone) XXX_Unmarshal(b []byte) error {
......@@ -3376,7 +3423,7 @@ func (m *ReceiptParacrossRecord) Reset() { *m = ReceiptParacrossRecord{}
func (m *ReceiptParacrossRecord) String() string { return proto.CompactTextString(m) }
func (*ReceiptParacrossRecord) ProtoMessage() {}
func (*ReceiptParacrossRecord) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{48}
return fileDescriptor_6a397e38c9ea6747, []int{49}
}
func (m *ReceiptParacrossRecord) XXX_Unmarshal(b []byte) error {
......@@ -3424,7 +3471,7 @@ func (m *ParacrossTx) Reset() { *m = ParacrossTx{} }
func (m *ParacrossTx) String() string { return proto.CompactTextString(m) }
func (*ParacrossTx) ProtoMessage() {}
func (*ParacrossTx) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{49}
return fileDescriptor_6a397e38c9ea6747, []int{50}
}
func (m *ParacrossTx) XXX_Unmarshal(b []byte) error {
......@@ -3465,7 +3512,7 @@ func (m *ReqParacrossTitleHeight) Reset() { *m = ReqParacrossTitleHeight
func (m *ReqParacrossTitleHeight) String() string { return proto.CompactTextString(m) }
func (*ReqParacrossTitleHeight) ProtoMessage() {}
func (*ReqParacrossTitleHeight) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{50}
return fileDescriptor_6a397e38c9ea6747, []int{51}
}
func (m *ReqParacrossTitleHeight) XXX_Unmarshal(b []byte) error {
......@@ -3520,7 +3567,7 @@ func (m *RespParacrossDone) Reset() { *m = RespParacrossDone{} }
func (m *RespParacrossDone) String() string { return proto.CompactTextString(m) }
func (*RespParacrossDone) ProtoMessage() {}
func (*RespParacrossDone) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{51}
return fileDescriptor_6a397e38c9ea6747, []int{52}
}
func (m *RespParacrossDone) XXX_Unmarshal(b []byte) error {
......@@ -3615,7 +3662,7 @@ func (m *RespParacrossTitles) Reset() { *m = RespParacrossTitles{} }
func (m *RespParacrossTitles) String() string { return proto.CompactTextString(m) }
func (*RespParacrossTitles) ProtoMessage() {}
func (*RespParacrossTitles) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{52}
return fileDescriptor_6a397e38c9ea6747, []int{53}
}
func (m *RespParacrossTitles) XXX_Unmarshal(b []byte) error {
......@@ -3655,7 +3702,7 @@ func (m *ReqParacrossTitleHash) Reset() { *m = ReqParacrossTitleHash{} }
func (m *ReqParacrossTitleHash) String() string { return proto.CompactTextString(m) }
func (*ReqParacrossTitleHash) ProtoMessage() {}
func (*ReqParacrossTitleHash) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{53}
return fileDescriptor_6a397e38c9ea6747, []int{54}
}
func (m *ReqParacrossTitleHash) XXX_Unmarshal(b []byte) error {
......@@ -3717,7 +3764,7 @@ func (m *ParacrossAsset) Reset() { *m = ParacrossAsset{} }
func (m *ParacrossAsset) String() string { return proto.CompactTextString(m) }
func (*ParacrossAsset) ProtoMessage() {}
func (*ParacrossAsset) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{54}
return fileDescriptor_6a397e38c9ea6747, []int{55}
}
func (m *ParacrossAsset) XXX_Unmarshal(b []byte) error {
......@@ -3838,7 +3885,7 @@ func (m *ParaLocalDbBlock) Reset() { *m = ParaLocalDbBlock{} }
func (m *ParaLocalDbBlock) String() string { return proto.CompactTextString(m) }
func (*ParaLocalDbBlock) ProtoMessage() {}
func (*ParaLocalDbBlock) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{55}
return fileDescriptor_6a397e38c9ea6747, []int{56}
}
func (m *ParaLocalDbBlock) XXX_Unmarshal(b []byte) error {
......@@ -3917,7 +3964,7 @@ func (m *ParaLocalDbBlockInfo) Reset() { *m = ParaLocalDbBlockInfo{} }
func (m *ParaLocalDbBlockInfo) String() string { return proto.CompactTextString(m) }
func (*ParaLocalDbBlockInfo) ProtoMessage() {}
func (*ParaLocalDbBlockInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{56}
return fileDescriptor_6a397e38c9ea6747, []int{57}
}
func (m *ParaLocalDbBlockInfo) XXX_Unmarshal(b []byte) error {
......@@ -3994,7 +4041,7 @@ func (m *ParaBlsSignSumDetails) Reset() { *m = ParaBlsSignSumDetails{} }
func (m *ParaBlsSignSumDetails) String() string { return proto.CompactTextString(m) }
func (*ParaBlsSignSumDetails) ProtoMessage() {}
func (*ParaBlsSignSumDetails) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{57}
return fileDescriptor_6a397e38c9ea6747, []int{58}
}
func (m *ParaBlsSignSumDetails) XXX_Unmarshal(b []byte) error {
......@@ -4056,7 +4103,7 @@ func (m *ParaBlsSignSumDetailsShow) Reset() { *m = ParaBlsSignSumDetails
func (m *ParaBlsSignSumDetailsShow) String() string { return proto.CompactTextString(m) }
func (*ParaBlsSignSumDetailsShow) ProtoMessage() {}
func (*ParaBlsSignSumDetailsShow) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{58}
return fileDescriptor_6a397e38c9ea6747, []int{59}
}
func (m *ParaBlsSignSumDetailsShow) XXX_Unmarshal(b []byte) error {
......@@ -4110,7 +4157,7 @@ func (m *ParaBlsSignSumInfo) Reset() { *m = ParaBlsSignSumInfo{} }
func (m *ParaBlsSignSumInfo) String() string { return proto.CompactTextString(m) }
func (*ParaBlsSignSumInfo) ProtoMessage() {}
func (*ParaBlsSignSumInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{59}
return fileDescriptor_6a397e38c9ea6747, []int{60}
}
func (m *ParaBlsSignSumInfo) XXX_Unmarshal(b []byte) error {
......@@ -4158,7 +4205,7 @@ func (m *LeaderSyncInfo) Reset() { *m = LeaderSyncInfo{} }
func (m *LeaderSyncInfo) String() string { return proto.CompactTextString(m) }
func (*LeaderSyncInfo) ProtoMessage() {}
func (*LeaderSyncInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{60}
return fileDescriptor_6a397e38c9ea6747, []int{61}
}
func (m *LeaderSyncInfo) XXX_Unmarshal(b []byte) error {
......@@ -4215,7 +4262,7 @@ func (m *ParaP2PSubMsg) Reset() { *m = ParaP2PSubMsg{} }
func (m *ParaP2PSubMsg) String() string { return proto.CompactTextString(m) }
func (*ParaP2PSubMsg) ProtoMessage() {}
func (*ParaP2PSubMsg) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{61}
return fileDescriptor_6a397e38c9ea6747, []int{62}
}
func (m *ParaP2PSubMsg) XXX_Unmarshal(b []byte) error {
......@@ -4301,7 +4348,7 @@ func (m *ElectionStatus) Reset() { *m = ElectionStatus{} }
func (m *ElectionStatus) String() string { return proto.CompactTextString(m) }
func (*ElectionStatus) ProtoMessage() {}
func (*ElectionStatus) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{62}
return fileDescriptor_6a397e38c9ea6747, []int{63}
}
func (m *ElectionStatus) XXX_Unmarshal(b []byte) error {
......@@ -4347,7 +4394,7 @@ func (m *BlsPubKey) Reset() { *m = BlsPubKey{} }
func (m *BlsPubKey) String() string { return proto.CompactTextString(m) }
func (*BlsPubKey) ProtoMessage() {}
func (*BlsPubKey) Descriptor() ([]byte, []int) {
return fileDescriptor_6a397e38c9ea6747, []int{63}
return fileDescriptor_6a397e38c9ea6747, []int{64}
}
func (m *BlsPubKey) XXX_Unmarshal(b []byte) error {
......@@ -4398,6 +4445,7 @@ func init() {
proto.RegisterType((*ParaBindMinerCmd)(nil), "types.ParaBindMinerCmd")
proto.RegisterType((*ParaBindMinerInfo)(nil), "types.ParaBindMinerInfo")
proto.RegisterType((*ReceiptParaBindMinerInfo)(nil), "types.ReceiptParaBindMinerInfo")
proto.RegisterType((*ParaNodeBindOne)(nil), "types.ParaNodeBindOne")
proto.RegisterType((*ParaNodeBindList)(nil), "types.ParaNodeBindList")
proto.RegisterType((*ReceiptParaNodeBindListUpdate)(nil), "types.ReceiptParaNodeBindListUpdate")
proto.RegisterType((*RespParaNodeBindList)(nil), "types.RespParaNodeBindList")
......@@ -4447,192 +4495,192 @@ func init() {
}
var fileDescriptor_6a397e38c9ea6747 = []byte{
// 2950 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x3a, 0x4d, 0x6c, 0x24, 0x47,
0xd5, 0xee, 0xf9, 0xf3, 0xcc, 0xb3, 0xc7, 0x3f, 0x1d, 0xaf, 0x33, 0x71, 0x92, 0x95, 0xd5, 0xca,
0x17, 0xf9, 0x23, 0x9b, 0xdd, 0xac, 0x13, 0x82, 0x22, 0x84, 0x20, 0xf6, 0x6e, 0x32, 0x56, 0xd6,
0xd1, 0xa6, 0xec, 0xc0, 0x21, 0x02, 0xd1, 0x9e, 0x29, 0xdb, 0xad, 0xcc, 0x74, 0xcf, 0x76, 0xf5,
0x64, 0x6d, 0x84, 0x14, 0x0e, 0xc0, 0x0d, 0x89, 0x0b, 0x12, 0x5c, 0xb8, 0xc0, 0x0d, 0x89, 0x13,
0x67, 0x0e, 0x48, 0x5c, 0x22, 0x2e, 0xe1, 0xc8, 0x8d, 0x1b, 0x88, 0x23, 0x37, 0x4e, 0xe8, 0xbd,
0xaa, 0xea, 0xae, 0xaa, 0xe9, 0x69, 0x3b, 0xd9, 0xbd, 0x70, 0xeb, 0x7a, 0xfd, 0xaa, 0xea, 0xfd,
0xff, 0x75, 0xc3, 0xea, 0x24, 0x4c, 0xc3, 0x41, 0x9a, 0x08, 0x71, 0x7b, 0x92, 0x26, 0x59, 0xe2,
0x37, 0xb3, 0xcb, 0x09, 0x17, 0x5b, 0xeb, 0x59, 0x1a, 0xc6, 0x22, 0x1c, 0x64, 0x51, 0x12, 0xcb,
0x37, 0x5b, 0xcb, 0x83, 0x64, 0x3c, 0xce, 0x57, 0x6b, 0x27, 0xa3, 0x64, 0xf0, 0xf1, 0xe0, 0x3c,
0x8c, 0x14, 0x24, 0x78, 0x00, 0x9b, 0x0f, 0xf5, 0x61, 0x47, 0x59, 0x98, 0x4d, 0xc5, 0x3d, 0x9e,
0x85, 0xd1, 0x48, 0xf8, 0x1b, 0xd0, 0x0c, 0x87, 0xc3, 0x54, 0xf4, 0xbc, 0xed, 0xfa, 0x4e, 0x87,
0xc9, 0x85, 0xff, 0x02, 0x74, 0xe8, 0x8c, 0x7e, 0x28, 0xce, 0x7b, 0xb5, 0xed, 0xfa, 0xce, 0x32,
0x2b, 0x00, 0xc1, 0x47, 0xf0, 0xbc, 0x73, 0xda, 0x1e, 0xbe, 0xd3, 0x47, 0xde, 0x04, 0xc8, 0x71,
0xe5, 0xb9, 0xcb, 0xcc, 0x80, 0xe0, 0xe1, 0xd9, 0x05, 0xe3, 0x62, 0x3a, 0xca, 0x84, 0x3e, 0x3c,
0x07, 0x04, 0xff, 0xac, 0xc1, 0x8d, 0xfc, 0xf4, 0x3e, 0x8f, 0xce, 0xce, 0x33, 0x79, 0x87, 0xbf,
0x09, 0x2d, 0x41, 0x4f, 0x3d, 0x6f, 0xdb, 0xdb, 0x69, 0x32, 0xb5, 0x42, 0x16, 0xb2, 0x28, 0x1b,
0xf1, 0x5e, 0x6d, 0xdb, 0x43, 0x16, 0x68, 0x81, 0xd8, 0xe7, 0xb4, 0xbb, 0x57, 0xdf, 0xf6, 0x76,
0xea, 0x4c, 0xad, 0xfc, 0xaf, 0xc1, 0xe2, 0x50, 0x12, 0xda, 0x6b, 0x6c, 0x7b, 0x3b, 0x4b, 0xbb,
0x2f, 0xde, 0x26, 0xb1, 0xde, 0x2e, 0x17, 0x10, 0xd3, 0xd8, 0xfe, 0x21, 0xf8, 0x62, 0x3a, 0xe1,
0xe9, 0x27, 0x91, 0x88, 0x92, 0x58, 0xbd, 0xee, 0x35, 0xaf, 0x73, 0x46, 0xc9, 0x46, 0x94, 0xd2,
0x38, 0x8c, 0x62, 0xc9, 0x61, 0xaf, 0x45, 0x34, 0x1a, 0x10, 0x7f, 0x0b, 0xda, 0xb4, 0x42, 0x0d,
0x2c, 0x6e, 0x7b, 0x3b, 0xcb, 0x2c, 0x5f, 0xfb, 0xef, 0xc0, 0xf2, 0x89, 0x21, 0xf1, 0x5e, 0x9b,
0x88, 0x08, 0xca, 0x89, 0x30, 0x75, 0xc3, 0xac, 0x7d, 0xc1, 0x3f, 0x3c, 0xe8, 0x95, 0xca, 0x9a,
0x89, 0xc9, 0x53, 0x12, 0xb7, 0xcd, 0x66, 0xa3, 0x92, 0xcd, 0x26, 0x1d, 0x58, 0xb0, 0xb9, 0x0d,
0x4b, 0x68, 0xd7, 0x51, 0xf6, 0x36, 0x59, 0x68, 0x8b, 0x2c, 0xd4, 0x04, 0xf9, 0x3b, 0xb0, 0x2a,
0x97, 0x7b, 0xb9, 0xb5, 0x2e, 0x12, 0x96, 0x0b, 0x0e, 0x7e, 0xe5, 0xc1, 0xaa, 0x23, 0x98, 0x82,
0x13, 0xaf, 0x9c, 0x93, 0x9a, 0xc5, 0x89, 0xe5, 0x13, 0x75, 0xd2, 0x48, 0x01, 0xf8, 0xc2, 0x7c,
0x1a, 0xea, 0x0c, 0x7e, 0x6b, 0xaa, 0x61, 0x3f, 0x89, 0x05, 0x8f, 0xc5, 0xb4, 0x9a, 0x48, 0x14,
0xcd, 0x79, 0x71, 0x9f, 0xa4, 0xd4, 0x04, 0xf9, 0x2f, 0x41, 0x77, 0x20, 0x8f, 0xea, 0x9b, 0x7a,
0xb1, 0x81, 0xfe, 0x57, 0x60, 0x4d, 0x01, 0x0a, 0x09, 0x36, 0xe8, 0xa2, 0x19, 0x78, 0xf0, 0x07,
0x0f, 0x7c, 0x24, 0xf3, 0xfd, 0x64, 0xc8, 0x51, 0xfc, 0xfb, 0x49, 0x7c, 0x1a, 0x9d, 0xcd, 0x21,
0x70, 0x05, 0x6a, 0xc9, 0x84, 0xe8, 0xea, 0xb2, 0x5a, 0x32, 0xc1, 0x75, 0x34, 0x24, 0x1a, 0x3a,
0xac, 0x16, 0x0d, 0x7d, 0x1f, 0x1a, 0x18, 0x6a, 0xd4, 0x65, 0xf4, 0x8c, 0x27, 0x7d, 0x12, 0x8e,
0xa6, 0x9c, 0x04, 0xd4, 0x65, 0x72, 0x21, 0xad, 0x20, 0x8a, 0xc5, 0x3b, 0x69, 0xf2, 0x03, 0x1e,
0x2b, 0x4f, 0x31, 0x41, 0x52, 0x33, 0xe2, 0xe1, 0xf4, 0xe4, 0x3d, 0x7e, 0x49, 0xbe, 0xd2, 0x61,
0x05, 0x20, 0xf8, 0x56, 0x41, 0xf5, 0xb7, 0x93, 0x8c, 0x4b, 0xdb, 0x9f, 0x13, 0xf7, 0x90, 0x82,
0x24, 0xe3, 0x32, 0x2c, 0x75, 0x98, 0x5c, 0x04, 0xbf, 0xf7, 0x60, 0xc3, 0x64, 0xfc, 0x60, 0xa8,
0x74, 0xa3, 0x99, 0xf0, 0x0c, 0x26, 0x6e, 0x02, 0x4c, 0xd2, 0x64, 0x92, 0x88, 0x70, 0x74, 0x30,
0x54, 0x3e, 0x62, 0x40, 0xd0, 0xbc, 0x1e, 0x4d, 0xa3, 0xec, 0x40, 0x0b, 0x43, 0xad, 0x0c, 0x77,
0x6b, 0x94, 0xbb, 0x5b, 0xd3, 0x14, 0xaf, 0xc5, 0x72, 0xcb, 0x65, 0xf9, 0x17, 0x35, 0x58, 0xd3,
0x04, 0xe7, 0xc4, 0x4a, 0x0d, 0x78, 0xb9, 0x06, 0x8a, 0x0b, 0x6b, 0xe5, 0x17, 0xd6, 0xcd, 0x0b,
0x6f, 0x02, 0x64, 0x61, 0x7a, 0xc6, 0xc9, 0xf1, 0x94, 0xd6, 0x0c, 0x88, 0xab, 0xa5, 0xe6, 0xac,
0x96, 0xee, 0x68, 0xd9, 0xb6, 0x28, 0x5a, 0x3d, 0x67, 0x44, 0x2b, 0x5b, 0x37, 0x4a, 0xec, 0xe8,
0x32, 0xa7, 0x69, 0x32, 0xa6, 0x0b, 0xa5, 0x56, 0xf3, 0xb5, 0xe1, 0xa4, 0xed, 0x59, 0x27, 0xd5,
0x72, 0xe9, 0xb8, 0x72, 0xf9, 0xa3, 0x07, 0x37, 0x18, 0x1f, 0xf0, 0x68, 0x92, 0xe9, 0x6b, 0x95,
0x11, 0x97, 0x69, 0xf2, 0x2e, 0xb4, 0x06, 0xf4, 0x96, 0x04, 0x34, 0x4b, 0x71, 0xe1, 0x03, 0x4c,
0x21, 0xfa, 0xaf, 0x40, 0x63, 0x92, 0xf2, 0x4f, 0x48, 0x74, 0x4b, 0xbb, 0xcf, 0x3a, 0x1b, 0xb4,
0x2a, 0x18, 0x21, 0xf9, 0x77, 0x61, 0x71, 0x30, 0x4d, 0x53, 0x1e, 0x67, 0x2a, 0x13, 0xcd, 0xc5,
0xd7, 0x78, 0xc1, 0x6f, 0x3c, 0x78, 0xd1, 0x61, 0x00, 0xa9, 0x40, 0xb4, 0x0f, 0x27, 0xc3, 0x30,
0xe3, 0x96, 0xd0, 0x3c, 0x47, 0x68, 0x77, 0x14, 0x75, 0x92, 0x9d, 0xe7, 0x4b, 0xd8, 0x71, 0x28,
0xfc, 0x6a, 0x41, 0x61, 0xfd, 0xea, 0x3d, 0x39, 0x95, 0xff, 0xf6, 0xe0, 0x59, 0x87, 0x4a, 0xd2,
0x6e, 0x12, 0xf3, 0x19, 0x2b, 0x2c, 0xcf, 0x26, 0xb6, 0xb5, 0xd5, 0x67, 0xac, 0x0d, 0xdf, 0x27,
0x59, 0x38, 0xc2, 0xa3, 0xb5, 0xc3, 0x18, 0x10, 0x2a, 0x31, 0x70, 0x85, 0xd7, 0x92, 0x2d, 0x36,
0x59, 0x01, 0xa0, 0x58, 0x9c, 0x88, 0x8c, 0x5e, 0xb6, 0xe8, 0x65, 0xbe, 0xf6, 0x7b, 0xb0, 0x88,
0xd6, 0xc7, 0x44, 0xa6, 0x6c, 0x4e, 0x2f, 0xf1, 0xce, 0x61, 0x12, 0x73, 0xc9, 0x2c, 0x99, 0x5d,
0x93, 0x19, 0x10, 0xd4, 0xcd, 0x33, 0x9a, 0xdd, 0x77, 0xd3, 0x64, 0x3a, 0x79, 0xa2, 0xf8, 0x98,
0xc7, 0x27, 0xe9, 0x6a, 0x2a, 0x3e, 0x5d, 0xed, 0x65, 0x54, 0x7c, 0x29, 0x7b, 0x17, 0x2a, 0x32,
0x18, 0x90, 0xe0, 0x5f, 0x2e, 0x95, 0x4f, 0x25, 0x3a, 0x6c, 0xc3, 0x52, 0xa1, 0x1d, 0x4d, 0xb3,
0x09, 0xba, 0x06, 0xe5, 0xa6, 0xe5, 0xb6, 0xe6, 0xba, 0xfb, 0xa2, 0x5b, 0x5d, 0x18, 0xdc, 0xb6,
0x67, 0xb8, 0xfd, 0xcc, 0x83, 0x2d, 0xc7, 0x12, 0x4d, 0xd5, 0x94, 0x79, 0xfd, 0xae, 0xe3, 0xf5,
0x5b, 0x8e, 0xc9, 0x1b, 0xfb, 0x73, 0xb7, 0xbf, 0x6d, 0xb9, 0x7d, 0xe9, 0x0e, 0xcb, 0xaf, 0xde,
0x70, 0x3d, 0xbf, 0x6a, 0x4b, 0xee, 0x56, 0x3f, 0xf5, 0x60, 0x83, 0xf1, 0x47, 0x79, 0xa5, 0x40,
0x21, 0x22, 0x3e, 0x4d, 0xe6, 0x5b, 0x58, 0xa4, 0x13, 0x90, 0x99, 0x71, 0xeb, 0x06, 0xb3, 0xf3,
0x92, 0x8e, 0x15, 0x46, 0x9b, 0x6e, 0x18, 0xdd, 0x87, 0x4d, 0xc6, 0xc5, 0xc4, 0x22, 0x44, 0x6a,
0xf9, 0xff, 0xa1, 0x1e, 0x0d, 0x65, 0x4e, 0xad, 0x08, 0x67, 0x88, 0x13, 0xbc, 0x8b, 0x31, 0xc2,
0x39, 0x84, 0xd8, 0x16, 0xfe, 0x2d, 0xf3, 0x94, 0x2a, 0xd1, 0xd0, 0x41, 0x13, 0x99, 0xeb, 0xf6,
0xa2, 0x78, 0x78, 0x18, 0xc5, 0x3c, 0xdd, 0x1f, 0x0f, 0xc9, 0x2e, 0xa2, 0x78, 0xf8, 0x36, 0xf5,
0x48, 0xaa, 0x7e, 0x35, 0x20, 0xc4, 0x5f, 0x14, 0x0f, 0xf7, 0xd1, 0xfc, 0x54, 0xf1, 0x54, 0x00,
0x8a, 0xe8, 0x83, 0xf7, 0xd9, 0xd1, 0x07, 0x21, 0xc1, 0x9f, 0x3d, 0x58, 0xb7, 0xae, 0x24, 0x2d,
0xcc, 0x29, 0x06, 0xf0, 0xd8, 0x23, 0xd3, 0x93, 0x0c, 0x88, 0x4d, 0x47, 0xbd, 0x9a, 0x8e, 0x86,
0x4b, 0x47, 0x5e, 0x91, 0x1e, 0x47, 0x63, 0xae, 0x3c, 0xaa, 0x00, 0xa0, 0xc7, 0xc9, 0xf2, 0xd4,
0xec, 0x30, 0x4c, 0x50, 0xf0, 0x73, 0x0f, 0x7a, 0x86, 0x77, 0x5c, 0xcd, 0xce, 0x2d, 0x2b, 0x81,
0xf4, 0x0c, 0xcd, 0x58, 0x7b, 0x95, 0x95, 0xef, 0xba, 0xd9, 0x63, 0xfe, 0x86, 0xdc, 0xc6, 0xfb,
0x45, 0xe1, 0x82, 0x18, 0x0f, 0x22, 0x41, 0x39, 0x9d, 0xfa, 0x27, 0x92, 0x82, 0x24, 0xa7, 0x00,
0xa0, 0x09, 0x8f, 0xf1, 0x1c, 0x5d, 0xb3, 0xa9, 0x55, 0xf0, 0xe9, 0x4c, 0xa6, 0xd4, 0x07, 0xaa,
0x4c, 0xa9, 0x73, 0xb5, 0x57, 0x9a, 0x7b, 0x35, 0xf2, 0x6c, 0xae, 0xae, 0x55, 0xe3, 0xe7, 0xac,
0x3c, 0x46, 0x6f, 0x95, 0x06, 0x6e, 0xb1, 0xf3, 0x0a, 0x34, 0x46, 0x91, 0xc8, 0xae, 0xbc, 0x17,
0x91, 0x50, 0x86, 0xba, 0x5b, 0xad, 0x91, 0x3b, 0x54, 0xc8, 0x50, 0x21, 0x06, 0x3f, 0xd1, 0xe6,
0x89, 0xaa, 0xde, 0x3d, 0x0c, 0xa3, 0xf8, 0x30, 0x9c, 0x18, 0x21, 0xd4, 0x9b, 0xdf, 0xd6, 0xd4,
0xb4, 0xab, 0x97, 0xb7, 0x35, 0xf5, 0xca, 0xb6, 0xa6, 0x61, 0xb7, 0x6f, 0xc1, 0x3d, 0x59, 0x78,
0x17, 0x64, 0x90, 0x5d, 0xdd, 0x86, 0x66, 0x94, 0xf1, 0xb1, 0x76, 0x6f, 0x8b, 0x1f, 0x93, 0x60,
0x26, 0xd1, 0x82, 0xbf, 0xd7, 0x65, 0xc2, 0xca, 0x83, 0x84, 0x72, 0x9d, 0x97, 0xa0, 0x8b, 0x37,
0x15, 0x6d, 0x8b, 0x47, 0x5d, 0x95, 0x0d, 0xc4, 0x06, 0xb1, 0x00, 0x98, 0xbd, 0x92, 0x0b, 0x9e,
0x93, 0xd8, 0x0a, 0xa9, 0x35, 0x2c, 0xa9, 0x05, 0xb0, 0x3c, 0x49, 0x79, 0x71, 0xb9, 0x6c, 0xe9,
0x2c, 0x98, 0x2d, 0xd9, 0x96, 0xdb, 0x30, 0xca, 0x13, 0x90, 0x19, 0x6e, 0xf4, 0xf8, 0x16, 0x8c,
0x2c, 0x3f, 0x47, 0x68, 0xcb, 0x13, 0x72, 0x00, 0xca, 0x3e, 0xbb, 0xd8, 0x4f, 0xa6, 0x71, 0x26,
0xa8, 0xd4, 0xed, 0xb2, 0x7c, 0x2d, 0xdf, 0xc9, 0x91, 0x4a, 0x0f, 0x64, 0xbb, 0xa9, 0xd7, 0x58,
0xe2, 0x64, 0x17, 0x72, 0x38, 0xb3, 0x44, 0xd3, 0x17, 0xbd, 0xa4, 0x9e, 0x11, 0xc5, 0x7c, 0xac,
0xb7, 0x2e, 0x4b, 0x99, 0x5a, 0x40, 0xa4, 0x5c, 0x01, 0xe4, 0x21, 0x5d, 0x3a, 0xc4, 0x82, 0xf9,
0xb7, 0x60, 0x3d, 0x4e, 0xe2, 0x7d, 0x6a, 0xc2, 0x8f, 0x35, 0x91, 0x2b, 0x44, 0xe4, 0xec, 0x8b,
0x60, 0x0f, 0xd6, 0x8f, 0xf8, 0xe8, 0x54, 0xb5, 0xbe, 0x47, 0x59, 0x78, 0xc6, 0x85, 0xff, 0xaa,
0x6d, 0x28, 0xda, 0x51, 0x5c, 0x44, 0x6d, 0x27, 0x0f, 0x60, 0xcd, 0x7d, 0x85, 0x21, 0x50, 0x64,
0x61, 0x9a, 0xf5, 0x4d, 0xc3, 0x37, 0x41, 0xa8, 0x5f, 0x1e, 0x87, 0x27, 0xaa, 0xfe, 0xec, 0x32,
0xb5, 0x0a, 0xfe, 0xe6, 0xc1, 0x86, 0x7b, 0x1c, 0x99, 0x6f, 0x75, 0x9d, 0xd4, 0xcd, 0x33, 0xe8,
0xab, 0xd0, 0x14, 0xb8, 0xc9, 0x69, 0x05, 0x66, 0xa9, 0x27, 0x2c, 0xab, 0xf8, 0x69, 0x38, 0xc5,
0xcf, 0x4d, 0x00, 0x7e, 0xc1, 0x07, 0x8a, 0x09, 0x19, 0xe7, 0x0d, 0xc8, 0x17, 0x6e, 0xac, 0x02,
0x0e, 0x9b, 0x0f, 0x92, 0x41, 0x38, 0xd2, 0xc4, 0x14, 0xdc, 0xdd, 0xd5, 0x54, 0x7b, 0x56, 0xb9,
0x5f, 0x26, 0x09, 0x4d, 0x39, 0x59, 0xd3, 0x41, 0x3c, 0xe4, 0x17, 0x2a, 0x7a, 0xe8, 0x65, 0xf0,
0x26, 0xac, 0xc8, 0x3a, 0x09, 0x29, 0x28, 0x15, 0x5e, 0xde, 0xf0, 0xd7, 0x8c, 0x86, 0x3f, 0x08,
0x60, 0x4d, 0xee, 0xdb, 0x0f, 0xe3, 0x01, 0x1f, 0x95, 0xed, 0x0c, 0x3e, 0x57, 0xe3, 0x1c, 0x22,
0xe7, 0xaa, 0x42, 0x3b, 0xbb, 0xd4, 0x85, 0x76, 0x76, 0x89, 0xd2, 0x92, 0x2c, 0x42, 0xa5, 0x62,
0xfa, 0x0b, 0x9a, 0xc1, 0x57, 0xa0, 0x81, 0x62, 0xeb, 0x2d, 0x11, 0xfe, 0x0d, 0x85, 0x6f, 0x73,
0xd6, 0x5f, 0x60, 0x84, 0x44, 0x3d, 0x23, 0x51, 0x4d, 0xae, 0x53, 0x1c, 0xef, 0x32, 0xd4, 0x5f,
0x60, 0x0a, 0x71, 0x6f, 0x51, 0x09, 0x21, 0xf8, 0x71, 0x51, 0xac, 0x5a, 0x9a, 0x51, 0xec, 0xdd,
0xb1, 0xf2, 0x55, 0xa5, 0x6a, 0x66, 0xba, 0xb7, 0xda, 0xd5, 0x7b, 0xf2, 0xbc, 0xf5, 0xb9, 0x07,
0x2f, 0x94, 0x91, 0x31, 0xb7, 0x85, 0xcb, 0x4d, 0xbd, 0x76, 0x2d, 0x53, 0xb7, 0x7b, 0xb7, 0x7a,
0x75, 0xef, 0xd6, 0xa8, 0xea, 0xdd, 0x9a, 0xf3, 0x7b, 0xb7, 0x96, 0xd5, 0xbb, 0x05, 0x9f, 0xc2,
0xf3, 0x65, 0x2c, 0x09, 0x55, 0x0a, 0xdc, 0xb2, 0x44, 0xdb, 0x9b, 0xc3, 0x80, 0x98, 0xad, 0x6b,
0x6a, 0x57, 0x6c, 0xc8, 0x85, 0xfa, 0x6b, 0x0f, 0x7c, 0xc6, 0x1f, 0x7d, 0x30, 0xe5, 0xe9, 0x25,
0xa2, 0xa9, 0x18, 0x67, 0xcf, 0x58, 0x8b, 0xe8, 0xe1, 0xd6, 0xee, 0x1b, 0xd0, 0x1c, 0x60, 0xa8,
0x54, 0xe2, 0x92, 0x0b, 0x94, 0xd4, 0x30, 0x4a, 0xb9, 0x2c, 0x72, 0x95, 0xa4, 0x72, 0x80, 0x91,
0xba, 0x9a, 0x56, 0xea, 0xda, 0x80, 0x66, 0x44, 0xee, 0x2a, 0x5b, 0x5f, 0xb9, 0x08, 0x3e, 0xc0,
0x6a, 0x65, 0x32, 0xba, 0x74, 0x29, 0x7c, 0x8b, 0x52, 0x90, 0xb4, 0x11, 0x15, 0x89, 0x2b, 0xcd,
0xa8, 0xc0, 0x0e, 0xbe, 0x67, 0x7c, 0x74, 0xd8, 0x57, 0xe3, 0x58, 0xa1, 0x6b, 0x4b, 0x11, 0x9d,
0xc5, 0x2a, 0x65, 0xd3, 0x33, 0x2a, 0x96, 0x7a, 0xdc, 0xc3, 0x50, 0xb6, 0xc5, 0xcb, 0x2c, 0x5f,
0x17, 0xcd, 0x70, 0xdd, 0x18, 0xd6, 0x05, 0x3f, 0x34, 0x3e, 0x14, 0xc8, 0xf3, 0x55, 0x75, 0xbf,
0x6b, 0x49, 0xd5, 0x6e, 0x21, 0x9c, 0x32, 0x22, 0x97, 0xf8, 0x1d, 0xa8, 0x9f, 0x8c, 0x84, 0x52,
0xe8, 0xcc, 0x38, 0xdf, 0x22, 0x9f, 0x21, 0x66, 0x90, 0xc9, 0x99, 0x20, 0xbd, 0xa6, 0x22, 0xec,
0x09, 0x2e, 0xdf, 0x81, 0xd5, 0x48, 0x18, 0xe2, 0x54, 0xd9, 0xa4, 0xcd, 0x5c, 0x70, 0xf0, 0x4b,
0x0f, 0xfc, 0x7d, 0x3c, 0xe5, 0x6d, 0x21, 0x78, 0x76, 0x9c, 0x86, 0xb1, 0x38, 0xe5, 0x29, 0x5a,
0x42, 0x88, 0x80, 0xfb, 0x17, 0x7c, 0xa0, 0x4b, 0xe4, 0x1c, 0x80, 0x69, 0x90, 0x16, 0x47, 0x97,
0xe3, 0x93, 0x64, 0xa4, 0xcc, 0xca, 0x04, 0xa1, 0xad, 0x84, 0xe3, 0xdc, 0xc0, 0xea, 0x4c, 0xad,
0x10, 0x9e, 0x25, 0x46, 0x52, 0x52, 0x2b, 0x54, 0x60, 0xac, 0x3d, 0xb0, 0xc3, 0xe8, 0x39, 0xf8,
0x4f, 0xcb, 0x98, 0xb0, 0x2b, 0x61, 0xbc, 0x89, 0xcd, 0x34, 0x8a, 0x4e, 0x09, 0xe3, 0x85, 0x72,
0xc1, 0x4a, 0x6c, 0x8a, 0x89, 0xb4, 0xf6, 0x5f, 0x87, 0x26, 0x95, 0xf1, 0x25, 0x63, 0x27, 0x57,
0xe0, 0x18, 0xa8, 0x09, 0xd7, 0xff, 0x06, 0x74, 0x43, 0x53, 0x2a, 0xaa, 0xb7, 0xd6, 0x11, 0x9b,
0x24, 0x26, 0xf4, 0xcb, 0xfe, 0x02, 0xb3, 0xb1, 0xf3, 0xed, 0xdf, 0x89, 0xb2, 0xf3, 0x61, 0x1a,
0x3e, 0x56, 0x9f, 0x76, 0xec, 0xed, 0xfa, 0x65, 0xbe, 0x5d, 0x03, 0xfc, 0xd7, 0xa1, 0x9d, 0xe9,
0x8b, 0x5b, 0xd5, 0x17, 0xe7, 0x88, 0xb8, 0xe9, 0xb1, 0xbe, 0x6e, 0xb1, 0xfa, 0xba, 0x1c, 0xd1,
0xbf, 0x0f, 0x2b, 0xfa, 0x80, 0xe3, 0x84, 0x34, 0xde, 0xb6, 0xa4, 0x64, 0xdf, 0x27, 0x51, 0xfa,
0x0b, 0xcc, 0xd9, 0xe4, 0x7f, 0x1d, 0x20, 0xce, 0x07, 0xa0, 0x54, 0x40, 0x56, 0x8d, 0x38, 0xfb,
0x0b, 0xcc, 0x40, 0xf7, 0xdf, 0x81, 0xd5, 0xd8, 0x1e, 0x86, 0xa8, 0x7c, 0x5a, 0x31, 0x2e, 0xe9,
0x2f, 0x30, 0x77, 0x93, 0xbf, 0x07, 0xab, 0x42, 0x07, 0x1b, 0x75, 0x8e, 0xcc, 0xb3, 0x9b, 0xc6,
0x39, 0xc6, 0x5b, 0x3c, 0xc3, 0xd9, 0xe0, 0xbf, 0x07, 0xfe, 0x60, 0xc6, 0x25, 0x54, 0xfe, 0xd5,
0x0c, 0xcd, 0xfa, 0x4c, 0x7f, 0x81, 0x95, 0x6c, 0xf3, 0xbf, 0x09, 0xdd, 0x89, 0xd9, 0x5a, 0xf5,
0xba, 0x33, 0x6d, 0x9a, 0x39, 0x69, 0x40, 0x3b, 0xb0, 0xf0, 0xfd, 0x8f, 0x60, 0xcb, 0xf8, 0xda,
0xe7, 0x88, 0x80, 0x4a, 0xe0, 0x2b, 0xc4, 0x5c, 0xb1, 0xdd, 0x28, 0x66, 0x9a, 0x58, 0xcc, 0x14,
0xb5, 0xc3, 0x67, 0x1e, 0x6c, 0x1a, 0xed, 0xae, 0xe1, 0x5b, 0xf3, 0x86, 0x5c, 0x46, 0xd5, 0x7a,
0xbd, 0x20, 0xf5, 0x9a, 0x35, 0xe4, 0x9a, 0xf1, 0x64, 0xeb, 0xf3, 0xa1, 0x4c, 0x94, 0x6f, 0xba,
0x63, 0xae, 0xea, 0x4d, 0x79, 0xb2, 0x7c, 0xcf, 0x9a, 0xd2, 0x17, 0x0e, 0xff, 0x65, 0x62, 0x6b,
0xf0, 0xa3, 0x06, 0x66, 0x36, 0xfb, 0x34, 0x2a, 0x63, 0xec, 0x3a, 0xc4, 0x9b, 0xa9, 0x43, 0xb6,
0x61, 0x89, 0x56, 0x52, 0x8c, 0x4a, 0xe8, 0x26, 0xc8, 0x7f, 0x19, 0x56, 0xb0, 0xf6, 0x38, 0x0a,
0xc7, 0x5c, 0x21, 0xc9, 0xf4, 0xec, 0x40, 0x8b, 0xc2, 0xb4, 0x51, 0xde, 0x5a, 0x36, 0xdd, 0x86,
0xbc, 0x68, 0xfa, 0x5a, 0x55, 0x4d, 0xdf, 0x62, 0x45, 0xd3, 0xd7, 0x76, 0x9a, 0x3e, 0xab, 0x19,
0xed, 0xb8, 0xcd, 0xa8, 0xd1, 0x12, 0xc2, 0x15, 0x2d, 0xe1, 0xd2, 0x75, 0x5a, 0xc2, 0xe5, 0x92,
0x96, 0x70, 0xa6, 0x61, 0xef, 0x5e, 0xb3, 0x61, 0x5f, 0x29, 0x6f, 0xd8, 0x77, 0x60, 0x95, 0xbe,
0x77, 0xde, 0x2f, 0x7a, 0xa3, 0x55, 0x89, 0xe9, 0x80, 0x83, 0xef, 0xcf, 0xfa, 0x06, 0xe3, 0x83,
0x24, 0x1d, 0x3e, 0x2d, 0xdf, 0x08, 0xfe, 0x0f, 0x96, 0xf2, 0xd7, 0xc7, 0x17, 0x94, 0x36, 0x2f,
0xf2, 0xa1, 0x04, 0xa6, 0x4d, 0x5a, 0xc9, 0x99, 0x67, 0x31, 0xc0, 0x3d, 0x46, 0x3b, 0x70, 0xc7,
0x0f, 0xd7, 0xf9, 0x16, 0x1d, 0xfc, 0xae, 0x06, 0xeb, 0xd6, 0xf4, 0xf4, 0x7f, 0xcb, 0xa2, 0x3b,
0x5f, 0xd6, 0xa2, 0x3b, 0x86, 0x45, 0x97, 0xe8, 0xbf, 0x53, 0xae, 0xff, 0x77, 0xe1, 0x19, 0x4b,
0x58, 0x24, 0x77, 0x0c, 0x68, 0x2d, 0xa2, 0xdb, 0x1d, 0x45, 0xcd, 0x08, 0x96, 0x29, 0x3c, 0x19,
0x98, 0x5c, 0xfd, 0x21, 0x0f, 0xe5, 0xda, 0x9b, 0x19, 0xad, 0x59, 0x7f, 0xd1, 0xfc, 0xa5, 0x06,
0x2b, 0x45, 0xbd, 0x84, 0x49, 0x08, 0xcd, 0x11, 0xbb, 0x7e, 0x6d, 0x8e, 0xf8, 0x4c, 0x21, 0x3f,
0xd1, 0xad, 0x40, 0x96, 0xa0, 0x92, 0xa3, 0xbc, 0x2e, 0x20, 0xf5, 0xb4, 0x99, 0x01, 0x31, 0x6c,
0xaf, 0x61, 0xda, 0x9e, 0x51, 0xe2, 0x35, 0xad, 0x12, 0xcf, 0x87, 0x06, 0xc7, 0x1a, 0x42, 0xea,
0x85, 0x9e, 0xa9, 0x2d, 0x91, 0xb5, 0xa2, 0xfc, 0x06, 0xa6, 0x56, 0xc8, 0x90, 0x64, 0xfc, 0x72,
0xc2, 0x49, 0x1f, 0x5d, 0x56, 0x00, 0x0c, 0xf5, 0x83, 0xa5, 0x7e, 0xfa, 0xc7, 0x00, 0xcd, 0x06,
0x65, 0xa9, 0x34, 0x75, 0x83, 0x30, 0x66, 0xe0, 0xf4, 0xf5, 0x3c, 0x4c, 0x43, 0x85, 0xb5, 0x29,
0x67, 0x1d, 0x05, 0x04, 0x03, 0x95, 0x98, 0x0e, 0x06, 0x5c, 0x88, 0xde, 0xb3, 0xc4, 0xba, 0x5e,
0x06, 0x7f, 0xf5, 0xe4, 0xe8, 0x98, 0x26, 0x1b, 0xf7, 0x4e, 0x28, 0x52, 0xcc, 0x1d, 0x7a, 0x9a,
0x63, 0xcb, 0x9a, 0xf3, 0x73, 0xcd, 0x55, 0x23, 0xcf, 0x97, 0x61, 0x65, 0x12, 0x62, 0x9e, 0x3a,
0x34, 0x07, 0x9f, 0xcb, 0xcc, 0x81, 0x5e, 0x31, 0x9d, 0x7f, 0x09, 0xea, 0xd9, 0x85, 0xfc, 0xa7,
0x65, 0x69, 0xd7, 0x57, 0x96, 0x77, 0x5c, 0xfc, 0xd8, 0xc5, 0xf0, 0x75, 0xf0, 0x27, 0xf5, 0xe7,
0x81, 0xc9, 0x14, 0x75, 0x50, 0xd7, 0x65, 0xac, 0xf3, 0xc4, 0x8c, 0x75, 0xbe, 0x20, 0x63, 0x6b,
0x05, 0x63, 0x1d, 0xc9, 0x44, 0x22, 0xfb, 0xb4, 0xbd, 0x91, 0x38, 0x8a, 0xce, 0xe2, 0xa3, 0xe9,
0x58, 0xff, 0x02, 0x35, 0x8f, 0x89, 0xbc, 0xdd, 0xab, 0x99, 0xff, 0x66, 0xf8, 0xd0, 0x18, 0x8b,
0x33, 0xd9, 0x03, 0x2e, 0x33, 0x7a, 0x46, 0x4c, 0x6c, 0x1e, 0x45, 0xaf, 0x41, 0x40, 0xb9, 0x08,
0xbe, 0x0b, 0xcf, 0x95, 0x5e, 0x78, 0x74, 0x9e, 0x3c, 0x7e, 0x82, 0x4b, 0x3b, 0xf2, 0xd2, 0xe0,
0x44, 0xcf, 0xb5, 0xf5, 0xf1, 0xa4, 0x91, 0x37, 0xa0, 0x11, 0x15, 0x3d, 0xf2, 0xb6, 0x35, 0xd6,
0x2e, 0xa1, 0x83, 0x11, 0xb6, 0x6c, 0xb0, 0x26, 0xd1, 0x20, 0xff, 0x7a, 0x21, 0x57, 0x01, 0x83,
0x95, 0x07, 0x3c, 0x1c, 0xf2, 0xf4, 0xe8, 0x32, 0x1e, 0xe8, 0x09, 0xd8, 0xc1, 0x3d, 0x3d, 0x75,
0x39, 0xb8, 0x87, 0x9e, 0x70, 0x12, 0x0a, 0x7e, 0x30, 0xbc, 0x50, 0x81, 0x5c, 0x2f, 0xf1, 0xcc,
0xe4, 0xf4, 0x54, 0x70, 0x1d, 0xbc, 0xd5, 0x2a, 0xf8, 0x99, 0x07, 0x5d, 0xa4, 0xe7, 0xe1, 0xee,
0xc3, 0xa3, 0xe9, 0xc9, 0xa1, 0xd0, 0xe5, 0xa4, 0xa7, 0xcb, 0x49, 0xff, 0x35, 0x68, 0x0f, 0xd4,
0x64, 0x56, 0x95, 0xf3, 0x25, 0x96, 0x89, 0xbd, 0x88, 0xc6, 0xf2, 0xef, 0xc2, 0xa2, 0xb8, 0x8c,
0x07, 0x87, 0xe2, 0xcc, 0x99, 0x8f, 0xd9, 0xd4, 0xf7, 0x17, 0x98, 0xc6, 0x2b, 0x6a, 0xd6, 0x8f,
0x60, 0xe5, 0xfe, 0x48, 0x0e, 0x2b, 0xd4, 0x4c, 0x7f, 0x0b, 0xda, 0x91, 0x90, 0x3b, 0x89, 0xaa,
0x36, 0xcb, 0xd7, 0xfe, 0xab, 0xd0, 0x1a, 0xc9, 0x37, 0xb5, 0x8a, 0x8b, 0x98, 0x42, 0x0a, 0x5e,
0x84, 0xce, 0x9e, 0xfe, 0x60, 0x89, 0x36, 0xf9, 0x31, 0xbf, 0x54, 0xc2, 0xc3, 0xc7, 0xdd, 0xb7,
0xa0, 0x93, 0xff, 0x5d, 0xe9, 0xdf, 0x82, 0xd6, 0x81, 0xc0, 0x13, 0xfc, 0x6e, 0x9e, 0x02, 0x1e,
0xbd, 0x1f, 0x8d, 0xb6, 0xd6, 0xd5, 0xf2, 0x40, 0xec, 0x87, 0xd3, 0xb3, 0xf3, 0xec, 0xc3, 0x49,
0xb0, 0x70, 0xd2, 0xa2, 0x5f, 0x2a, 0x5f, 0xff, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x53, 0x14,
0x42, 0xef, 0x9f, 0x29, 0x00, 0x00,
// 2946 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x3a, 0xcd, 0x6f, 0x24, 0x47,
0xf5, 0xee, 0xf9, 0xf2, 0xcc, 0xb3, 0xc7, 0x5e, 0x77, 0xbc, 0xce, 0xc4, 0x49, 0x56, 0x56, 0x2b,
0xbf, 0xc8, 0x3f, 0xb2, 0xf1, 0x66, 0x9d, 0x10, 0x14, 0x21, 0x04, 0xb1, 0x77, 0x93, 0xb1, 0xb2,
0x0e, 0x9b, 0xb2, 0x03, 0x48, 0x11, 0x88, 0xf6, 0x4c, 0xd9, 0x6e, 0x65, 0xa6, 0x7b, 0xb6, 0xab,
0x27, 0x6b, 0x23, 0xa4, 0x70, 0x00, 0x6e, 0x48, 0x5c, 0x90, 0x00, 0x09, 0x2e, 0x70, 0x43, 0xe2,
0xc4, 0x99, 0x03, 0x12, 0x97, 0x88, 0x4b, 0x38, 0x72, 0xe3, 0x86, 0xc4, 0x91, 0x7f, 0x00, 0xbd,
0x57, 0x55, 0xdd, 0x55, 0xd5, 0x3d, 0x63, 0x27, 0x9b, 0x0b, 0xb7, 0xae, 0xd7, 0xaf, 0xaa, 0xde,
0xf7, 0x57, 0x37, 0xac, 0x4e, 0xc2, 0x34, 0x1c, 0xa4, 0x89, 0x10, 0x3b, 0x93, 0x34, 0xc9, 0x12,
0xbf, 0x99, 0x5d, 0x4e, 0xb8, 0xd8, 0x5c, 0xcb, 0xd2, 0x30, 0x16, 0xe1, 0x20, 0x8b, 0x92, 0x58,
0xbe, 0xd9, 0x5c, 0x1e, 0x24, 0xe3, 0x71, 0xbe, 0xba, 0x71, 0x32, 0x4a, 0x06, 0x1f, 0x0e, 0xce,
0xc3, 0x48, 0x41, 0x82, 0x07, 0xb0, 0xf1, 0x50, 0x1f, 0x76, 0x94, 0x85, 0xd9, 0x54, 0xdc, 0xe3,
0x59, 0x18, 0x8d, 0x84, 0xbf, 0x0e, 0xcd, 0x70, 0x38, 0x4c, 0x45, 0xcf, 0xdb, 0xaa, 0x6f, 0x77,
0x98, 0x5c, 0xf8, 0xcf, 0x41, 0x87, 0xce, 0xe8, 0x87, 0xe2, 0xbc, 0x57, 0xdb, 0xaa, 0x6f, 0x2f,
0xb3, 0x02, 0x10, 0x7c, 0x00, 0xcf, 0x3a, 0xa7, 0xed, 0xe1, 0x3b, 0x7d, 0xe4, 0x2d, 0x80, 0x1c,
0x57, 0x9e, 0xbb, 0xcc, 0x0c, 0x08, 0x1e, 0x9e, 0x5d, 0x30, 0x2e, 0xa6, 0xa3, 0x4c, 0xe8, 0xc3,
0x73, 0x40, 0xf0, 0xeb, 0x1a, 0xdc, 0xcc, 0x4f, 0xef, 0xf3, 0xe8, 0xec, 0x3c, 0x93, 0x77, 0xf8,
0x1b, 0xd0, 0x12, 0xf4, 0xd4, 0xf3, 0xb6, 0xbc, 0xed, 0x26, 0x53, 0x2b, 0x64, 0x21, 0x8b, 0xb2,
0x11, 0xef, 0xd5, 0xb6, 0x3c, 0x64, 0x81, 0x16, 0x88, 0x7d, 0x4e, 0xbb, 0x7b, 0xf5, 0x2d, 0x6f,
0xbb, 0xce, 0xd4, 0xca, 0xff, 0x0a, 0x2c, 0x0e, 0x25, 0xa1, 0xbd, 0xc6, 0x96, 0xb7, 0xbd, 0xb4,
0xfb, 0xfc, 0x0e, 0x89, 0x75, 0xa7, 0x5a, 0x40, 0x4c, 0x63, 0x23, 0x5b, 0xe3, 0x30, 0x8a, 0x25,
0x49, 0xbd, 0x26, 0x1d, 0x6a, 0x40, 0xfc, 0x4d, 0x68, 0xd3, 0x0a, 0x45, 0xd6, 0xda, 0xf2, 0xb6,
0x97, 0x59, 0xbe, 0xf6, 0xdf, 0x82, 0xe5, 0x13, 0x43, 0x44, 0xbd, 0x45, 0xba, 0x39, 0xa8, 0xbe,
0xd9, 0x14, 0x26, 0xb3, 0xf6, 0x05, 0xff, 0xf2, 0xa0, 0x57, 0x29, 0x1c, 0x26, 0x26, 0x5f, 0x90,
0x7c, 0x6c, 0x36, 0x1b, 0x73, 0xd9, 0x6c, 0xd2, 0x81, 0x05, 0x9b, 0x5b, 0xb0, 0x84, 0x86, 0x18,
0x65, 0x6f, 0x92, 0x49, 0xb5, 0xc8, 0xa4, 0x4c, 0x90, 0xbf, 0x0d, 0xab, 0x72, 0xb9, 0x97, 0x9b,
0xd7, 0x22, 0x61, 0xb9, 0xe0, 0xe0, 0x57, 0x1e, 0xac, 0x3a, 0x82, 0x29, 0x38, 0xf1, 0xaa, 0x39,
0xa9, 0x59, 0x9c, 0x58, 0x46, 0x5c, 0x27, 0x8d, 0x14, 0x80, 0xcf, 0xcc, 0xa7, 0xa1, 0xce, 0xe0,
0xf7, 0xa6, 0x1a, 0xf6, 0x93, 0x58, 0xf0, 0x58, 0x4c, 0xe7, 0x13, 0x89, 0xa2, 0x39, 0x2f, 0xee,
0x93, 0x94, 0x9a, 0x20, 0xff, 0x05, 0xe8, 0x0e, 0xe4, 0x51, 0x7d, 0x53, 0x2f, 0x36, 0xd0, 0xff,
0x12, 0xdc, 0x50, 0x80, 0x42, 0x82, 0x0d, 0xba, 0xa8, 0x04, 0x0f, 0xfe, 0xe4, 0x81, 0x8f, 0x64,
0xbe, 0x9b, 0x0c, 0x39, 0x8a, 0x7f, 0x3f, 0x89, 0x4f, 0xa3, 0xb3, 0x19, 0x04, 0xae, 0x40, 0x2d,
0x99, 0x10, 0x5d, 0x5d, 0x56, 0x4b, 0x26, 0xb8, 0x8e, 0x86, 0x44, 0x43, 0x87, 0xd5, 0xa2, 0xa1,
0xef, 0x43, 0x03, 0x63, 0x83, 0xba, 0x8c, 0x9e, 0xf1, 0xa4, 0x8f, 0xc2, 0xd1, 0x94, 0x93, 0x80,
0xba, 0x4c, 0x2e, 0xa4, 0x15, 0x44, 0xb1, 0x78, 0x2b, 0x4d, 0x7e, 0xc0, 0x63, 0xf2, 0x05, 0x64,
0xb5, 0x00, 0x49, 0xcd, 0x88, 0x87, 0xd3, 0x93, 0x77, 0xf8, 0x25, 0xf9, 0x42, 0x87, 0x15, 0x80,
0xe0, 0x1b, 0x05, 0xd5, 0xdf, 0x4a, 0x32, 0x2e, 0x6d, 0x7f, 0x46, 0xa0, 0x42, 0x0a, 0x92, 0x8c,
0xcb, 0x38, 0xd2, 0x61, 0x72, 0x11, 0xfc, 0xd1, 0x83, 0x75, 0x93, 0xf1, 0x83, 0xa1, 0xd2, 0x8d,
0x66, 0xc2, 0x33, 0x98, 0xb8, 0x05, 0x30, 0x49, 0x93, 0x49, 0x22, 0xc2, 0xd1, 0xc1, 0x50, 0xf9,
0x88, 0x01, 0x41, 0xf3, 0x7a, 0x34, 0x8d, 0xb2, 0x03, 0x2d, 0x0c, 0xb5, 0x32, 0xdc, 0xad, 0x51,
0xed, 0x6e, 0x4d, 0x53, 0xbc, 0x16, 0xcb, 0x2d, 0x97, 0xe5, 0x5f, 0xd4, 0xe0, 0x86, 0x26, 0x38,
0x27, 0x56, 0x6a, 0xc0, 0xcb, 0x35, 0x50, 0x5c, 0x58, 0xab, 0xbe, 0xb0, 0x6e, 0x5e, 0x78, 0x0b,
0x20, 0x0b, 0xd3, 0x33, 0x4e, 0x8e, 0xa7, 0xb4, 0x66, 0x40, 0x5c, 0x2d, 0x35, 0xcb, 0x5a, 0xba,
0xa3, 0x65, 0xdb, 0xa2, 0x68, 0xf5, 0x8c, 0x11, 0xad, 0x6c, 0xdd, 0x28, 0xb1, 0xa3, 0xcb, 0x9c,
0xa6, 0xc9, 0x98, 0x2e, 0x94, 0x5a, 0xcd, 0xd7, 0x86, 0x93, 0xb6, 0xcb, 0x4e, 0xaa, 0xe5, 0xd2,
0x71, 0xe5, 0xf2, 0x67, 0x0f, 0x6e, 0x32, 0x3e, 0xe0, 0xd1, 0x24, 0xd3, 0xd7, 0x2a, 0x23, 0xae,
0xd2, 0xe4, 0x5d, 0x68, 0x0d, 0xe8, 0x2d, 0x09, 0xa8, 0x4c, 0x71, 0xe1, 0x03, 0x4c, 0x21, 0xfa,
0x2f, 0x41, 0x63, 0x92, 0xf2, 0x8f, 0x48, 0x74, 0x4b, 0xbb, 0x4f, 0x3b, 0x1b, 0xb4, 0x2a, 0x18,
0x21, 0xf9, 0x77, 0x61, 0x71, 0x30, 0x4d, 0x53, 0x1e, 0x67, 0x2a, 0x75, 0xcc, 0xc4, 0xd7, 0x78,
0xc1, 0xef, 0x3c, 0x78, 0xde, 0x61, 0x00, 0xa9, 0x40, 0xb4, 0xf7, 0x27, 0xc3, 0x30, 0xe3, 0x96,
0xd0, 0x3c, 0x47, 0x68, 0x77, 0x14, 0x75, 0x92, 0x9d, 0x67, 0x2b, 0xd8, 0x71, 0x28, 0xfc, 0x72,
0x41, 0x61, 0xfd, 0xea, 0x3d, 0x39, 0x95, 0xff, 0xf1, 0xe0, 0x69, 0x87, 0x4a, 0xd2, 0x6e, 0x12,
0xf3, 0x92, 0x15, 0x56, 0x67, 0x13, 0xdb, 0xda, 0xea, 0x25, 0x6b, 0xc3, 0xf7, 0x49, 0x16, 0x8e,
0xf0, 0x68, 0xed, 0x30, 0x06, 0x84, 0x6a, 0x02, 0x5c, 0xe1, 0xb5, 0x64, 0x8b, 0x4d, 0x56, 0x00,
0x28, 0x16, 0x27, 0x22, 0xa3, 0x97, 0x2d, 0x7a, 0x99, 0xaf, 0xfd, 0x1e, 0x2c, 0xa2, 0xf5, 0x31,
0x91, 0x29, 0x9b, 0xd3, 0x4b, 0xbc, 0x73, 0x98, 0xc4, 0x5c, 0x32, 0x4b, 0x66, 0xd7, 0x64, 0x06,
0x04, 0x75, 0xf3, 0x94, 0x66, 0xf7, 0xed, 0x34, 0x99, 0x4e, 0x9e, 0x28, 0x3e, 0xe6, 0xf1, 0x49,
0xba, 0x9a, 0x8a, 0x4f, 0x57, 0x7b, 0x19, 0x55, 0x4b, 0xca, 0xde, 0x85, 0x8a, 0x0c, 0x06, 0x24,
0xf8, 0xb7, 0x4b, 0xe5, 0x17, 0x12, 0x1d, 0xb6, 0x60, 0xa9, 0xd0, 0x8e, 0xa6, 0xd9, 0x04, 0x5d,
0x83, 0x72, 0xd3, 0x72, 0x5b, 0x33, 0xdd, 0x7d, 0xd1, 0xad, 0x2e, 0x0c, 0x6e, 0xdb, 0x25, 0x6e,
0x3f, 0xf1, 0x60, 0xd3, 0xb1, 0x44, 0x53, 0x35, 0x55, 0x5e, 0xbf, 0xeb, 0x78, 0xfd, 0xa6, 0x63,
0xf2, 0xc6, 0xfe, 0xdc, 0xed, 0x77, 0x2c, 0xb7, 0xaf, 0xdc, 0x61, 0xf9, 0xd5, 0x6b, 0xae, 0xe7,
0xcf, 0xdb, 0x92, 0xbb, 0xd5, 0x4f, 0x3d, 0x58, 0x67, 0xfc, 0x51, 0x5e, 0x29, 0x50, 0x88, 0x88,
0x4f, 0x93, 0xd9, 0x16, 0x16, 0xe9, 0x04, 0x64, 0x66, 0xdc, 0xba, 0xc1, 0xec, 0xac, 0xa4, 0x63,
0x85, 0xd1, 0xa6, 0x1b, 0x46, 0xf7, 0x61, 0x83, 0x71, 0x31, 0xb1, 0x08, 0x91, 0x5a, 0xfe, 0x7f,
0xa8, 0x47, 0x43, 0x99, 0x53, 0xe7, 0x84, 0x33, 0xc4, 0x09, 0xde, 0xc6, 0x18, 0xe1, 0x1c, 0x42,
0x6c, 0x0b, 0xff, 0xb6, 0x79, 0xca, 0x3c, 0xd1, 0xd0, 0x41, 0x13, 0x99, 0xeb, 0xf6, 0xa2, 0x78,
0x78, 0x18, 0xc5, 0x3c, 0xdd, 0x1f, 0x0f, 0xc9, 0x2e, 0xa2, 0x78, 0xf8, 0x26, 0x35, 0x35, 0xaa,
0x7e, 0x35, 0x20, 0xc4, 0x5f, 0x14, 0x0f, 0xf7, 0xd1, 0xfc, 0x54, 0xf1, 0x54, 0x00, 0x8a, 0xe8,
0x83, 0xf7, 0xd9, 0xd1, 0x07, 0x21, 0xc1, 0x5f, 0x3d, 0x58, 0xb3, 0xae, 0x24, 0x2d, 0xcc, 0x28,
0x06, 0xf0, 0xd8, 0x23, 0xd3, 0x93, 0x0c, 0x88, 0x4d, 0x47, 0x7d, 0x3e, 0x1d, 0x0d, 0x97, 0x8e,
0xbc, 0x22, 0x3d, 0x8e, 0xc6, 0x5c, 0x79, 0x54, 0x01, 0x40, 0x8f, 0x93, 0xe5, 0xa9, 0x74, 0x1c,
0x55, 0x37, 0x19, 0xa0, 0xe0, 0xe7, 0x1e, 0xf4, 0x0c, 0xef, 0xb8, 0x9a, 0x9d, 0xdb, 0x56, 0x02,
0xe9, 0x19, 0x9a, 0xb1, 0xf6, 0x2a, 0x2b, 0xdf, 0x75, 0xb3, 0xc7, 0xec, 0x0d, 0xb9, 0x8d, 0xdf,
0x97, 0x55, 0x3a, 0xb2, 0x87, 0x18, 0xdf, 0x8c, 0x89, 0x4b, 0x31, 0x9d, 0xf0, 0x94, 0x84, 0x20,
0xa9, 0x29, 0x00, 0x68, 0xfb, 0x63, 0x3c, 0x46, 0xe7, 0x0f, 0x5a, 0x04, 0xdf, 0x29, 0xea, 0x1f,
0x3c, 0xe6, 0x41, 0x24, 0xb2, 0x19, 0x5e, 0xb2, 0x03, 0x2d, 0xda, 0x22, 0x4b, 0xbe, 0xa5, 0xdd,
0x0d, 0xc7, 0xdc, 0x14, 0x15, 0x4c, 0x61, 0x05, 0x1f, 0x97, 0x12, 0xb0, 0xbe, 0x40, 0x25, 0x60,
0x5d, 0x02, 0x78, 0x95, 0x29, 0x5d, 0x23, 0x97, 0x4b, 0x80, 0xda, 0x7c, 0xfc, 0x5c, 0x42, 0x8f,
0x31, 0x08, 0x48, 0xbf, 0xb1, 0xd8, 0x7b, 0x09, 0x1a, 0xa3, 0x48, 0x64, 0x57, 0xde, 0x8b, 0x48,
0xa8, 0x1a, 0xdd, 0xb5, 0x4a, 0xb6, 0xe7, 0xa8, 0x46, 0x21, 0x06, 0x3f, 0xd1, 0x56, 0x8f, 0x16,
0xb4, 0x7b, 0x18, 0x46, 0xf1, 0x61, 0x38, 0x31, 0x22, 0xb3, 0x37, 0xbb, 0x5b, 0xaa, 0xe9, 0x08,
0x52, 0xdd, 0x2d, 0xd5, 0xe7, 0x76, 0x4b, 0x0d, 0xbb, 0x2b, 0x0c, 0xee, 0xc9, 0x7a, 0xbe, 0x20,
0x83, 0xcc, 0x75, 0x07, 0x9a, 0x51, 0xc6, 0xc7, 0x3a, 0x6a, 0x58, 0xfc, 0x98, 0x04, 0x33, 0x89,
0x16, 0xfc, 0xb3, 0x2e, 0xf3, 0x60, 0x1e, 0x7b, 0x94, 0x47, 0xbe, 0x00, 0x5d, 0xbc, 0xa9, 0xe8,
0x86, 0x3c, 0x6a, 0xd6, 0x6c, 0x20, 0xf6, 0x9d, 0x05, 0xc0, 0x6c, 0xc1, 0x5c, 0xf0, 0x8c, 0x7c,
0x59, 0x48, 0xad, 0x61, 0x49, 0x2d, 0x80, 0xe5, 0x49, 0xca, 0x8b, 0xcb, 0x65, 0xa7, 0x68, 0xc1,
0x6c, 0xc9, 0xb6, 0xdc, 0x3e, 0x54, 0x9e, 0x80, 0xcc, 0x70, 0xd5, 0x0e, 0xeb, 0x13, 0x72, 0x18,
0x79, 0x54, 0x8e, 0xd0, 0x96, 0x27, 0xe4, 0x00, 0x94, 0x7d, 0x76, 0xb1, 0x9f, 0x4c, 0xe3, 0x4c,
0x50, 0x05, 0xdd, 0x65, 0xf9, 0x5a, 0xbe, 0x93, 0xa3, 0x95, 0x1e, 0xc8, 0x2e, 0x56, 0xaf, 0xb1,
0x72, 0xca, 0x2e, 0xe4, 0x90, 0x66, 0x89, 0xa6, 0x30, 0x7a, 0x49, 0xad, 0x28, 0x8a, 0xf9, 0x58,
0x6f, 0x5d, 0x96, 0x32, 0xb5, 0x80, 0x48, 0xb9, 0x02, 0xc8, 0x43, 0xba, 0x74, 0x88, 0x05, 0xf3,
0x6f, 0xc3, 0x5a, 0x9c, 0xc4, 0xfb, 0xd4, 0xdb, 0x1f, 0x6b, 0x22, 0x57, 0x88, 0xc8, 0xf2, 0x8b,
0x60, 0x0f, 0xd6, 0x8e, 0xf8, 0xe8, 0x54, 0x75, 0xd4, 0x47, 0x59, 0x78, 0xc6, 0x85, 0xff, 0xb2,
0x6d, 0x28, 0xda, 0x51, 0x5c, 0x44, 0x6d, 0x27, 0x0f, 0xe0, 0x86, 0xfb, 0x0a, 0x23, 0xab, 0xc8,
0xc2, 0x34, 0xeb, 0x9b, 0x86, 0x6f, 0x82, 0x50, 0xbf, 0x3c, 0x0e, 0x4f, 0x54, 0x59, 0xdb, 0x65,
0x6a, 0x15, 0xfc, 0xc3, 0x83, 0x75, 0xf7, 0x38, 0x32, 0xdf, 0xf9, 0xe5, 0x57, 0x37, 0x4f, 0xcc,
0x2f, 0x43, 0x53, 0xe0, 0x26, 0xa7, 0xc3, 0x28, 0x53, 0x4f, 0x58, 0x56, 0x4d, 0xd5, 0x70, 0x6a,
0xaa, 0x5b, 0x00, 0xfc, 0x82, 0x0f, 0xec, 0x01, 0x54, 0x01, 0xf9, 0xcc, 0xfd, 0x5a, 0xc0, 0x61,
0xe3, 0x41, 0x32, 0x08, 0x47, 0x9a, 0x98, 0x82, 0xbb, 0xbb, 0x9a, 0x6a, 0xcf, 0xea, 0x22, 0xaa,
0x24, 0xa1, 0x29, 0x27, 0x6b, 0x3a, 0x88, 0x87, 0xfc, 0x42, 0x45, 0x0f, 0xbd, 0x0c, 0x5e, 0x87,
0x15, 0x59, 0x7e, 0x21, 0x05, 0x95, 0xc2, 0xcb, 0xe7, 0x08, 0x35, 0x63, 0x8e, 0x10, 0x04, 0x70,
0x43, 0xee, 0xdb, 0x0f, 0xe3, 0x01, 0x1f, 0x55, 0xed, 0x0c, 0x3e, 0x55, 0x53, 0x22, 0x22, 0xe7,
0xaa, 0xfa, 0x3d, 0xbb, 0xd4, 0xf5, 0x7b, 0x76, 0x89, 0xd2, 0x92, 0x2c, 0xc2, 0x5c, 0xc5, 0xf4,
0x17, 0x34, 0x83, 0x2f, 0x41, 0x03, 0xc5, 0xd6, 0x5b, 0x22, 0xfc, 0x9b, 0x0a, 0xdf, 0xe6, 0xac,
0xbf, 0xc0, 0x08, 0x89, 0x5a, 0x51, 0xa2, 0x9a, 0x5c, 0xa7, 0x38, 0xde, 0x65, 0xa8, 0xbf, 0xc0,
0x14, 0xe2, 0xde, 0xa2, 0x12, 0x42, 0xf0, 0xe3, 0xa2, 0x06, 0xb6, 0x34, 0xa3, 0xd8, 0xbb, 0x63,
0xe5, 0xab, 0xb9, 0xaa, 0x29, 0x35, 0x85, 0xb5, 0xab, 0xf7, 0xe4, 0x79, 0xeb, 0x53, 0x0f, 0x9e,
0xab, 0x22, 0x63, 0x66, 0x67, 0x98, 0x9b, 0x7a, 0xed, 0x5a, 0xa6, 0x6e, 0xb7, 0x84, 0xf5, 0xf9,
0x2d, 0x61, 0x63, 0x5e, 0x4b, 0xd8, 0x9c, 0xdd, 0x12, 0xb6, 0xac, 0x96, 0x30, 0xf8, 0x18, 0x9e,
0xad, 0x62, 0x49, 0xa8, 0x52, 0xe0, 0xb6, 0x25, 0xda, 0xde, 0x0c, 0x06, 0x44, 0xb9, 0x5c, 0xaa,
0x5d, 0xb1, 0x21, 0x17, 0xea, 0x6f, 0x3d, 0xf0, 0x19, 0x7f, 0xf4, 0xde, 0x94, 0xa7, 0x97, 0x88,
0xa6, 0x62, 0x9c, 0x3d, 0xba, 0x2d, 0xa2, 0x87, 0xdb, 0x12, 0xac, 0x43, 0x73, 0x80, 0xa1, 0x52,
0x89, 0x4b, 0x2e, 0x50, 0x52, 0xc3, 0x28, 0xe5, 0xb2, 0x76, 0x56, 0x92, 0xca, 0x01, 0x46, 0xea,
0x6a, 0x5a, 0xa9, 0x6b, 0x1d, 0x9a, 0x11, 0xb9, 0xab, 0xec, 0xa8, 0xe5, 0x22, 0x78, 0x0f, 0xab,
0x95, 0xc9, 0xe8, 0xd2, 0xa5, 0xf0, 0x0d, 0x4a, 0x41, 0xd2, 0x46, 0x54, 0x24, 0x9e, 0x6b, 0x46,
0x05, 0x76, 0xf0, 0x3d, 0xe3, 0xe3, 0xc3, 0xbe, 0x9a, 0xf2, 0x0a, 0x5d, 0xb2, 0x8a, 0xe8, 0x2c,
0x56, 0x29, 0x9b, 0x9e, 0x51, 0xb1, 0xd4, 0x3a, 0x1f, 0x86, 0xb2, 0xdb, 0x5e, 0x66, 0xf9, 0xba,
0xe8, 0xb1, 0xeb, 0xc6, 0x0c, 0x30, 0xf8, 0xa1, 0xf1, 0xc1, 0x40, 0x9e, 0xaf, 0x9a, 0x86, 0x5d,
0x4b, 0xaa, 0x76, 0x67, 0xe2, 0x94, 0x11, 0xb9, 0xc4, 0xef, 0x40, 0xfd, 0x64, 0x24, 0x94, 0x42,
0x4b, 0x9f, 0x06, 0x2c, 0xf2, 0x19, 0x62, 0x06, 0x99, 0x1c, 0x35, 0xd2, 0x6b, 0x2a, 0xc2, 0x9e,
0xe0, 0xf2, 0x6d, 0x58, 0x8d, 0x84, 0x21, 0x4e, 0x95, 0x4d, 0xda, 0xcc, 0x05, 0x07, 0xbf, 0xf4,
0xc0, 0xdf, 0xc7, 0x53, 0xde, 0x14, 0x82, 0x67, 0xc7, 0x69, 0x18, 0x8b, 0x53, 0x9e, 0xa2, 0x25,
0x84, 0x08, 0xb8, 0x7f, 0xc1, 0x07, 0xba, 0xf4, 0xce, 0x01, 0x98, 0x06, 0x69, 0x71, 0x74, 0x39,
0x3e, 0x49, 0x46, 0xca, 0xac, 0x4c, 0x10, 0xda, 0x4a, 0x38, 0xce, 0x0d, 0xac, 0xce, 0xd4, 0x0a,
0xe1, 0x59, 0x62, 0x24, 0x25, 0xb5, 0x42, 0x05, 0xc6, 0xda, 0x03, 0x3b, 0x8c, 0x9e, 0x83, 0xdf,
0xb4, 0x8c, 0xc1, 0xbd, 0x12, 0xc6, 0xeb, 0xd8, 0xa3, 0xa3, 0xe8, 0x94, 0x30, 0x9e, 0xab, 0x16,
0xac, 0xc4, 0xa6, 0x98, 0x48, 0x6b, 0xff, 0x55, 0xdd, 0x2c, 0x94, 0xa7, 0x59, 0xae, 0xc0, 0x31,
0x50, 0x13, 0xae, 0xff, 0x35, 0xe8, 0x86, 0xa6, 0x54, 0x54, 0xcb, 0xae, 0x23, 0x36, 0x49, 0x4c,
0xe8, 0x97, 0xfd, 0x05, 0x66, 0x63, 0xe7, 0xdb, 0xbf, 0x1d, 0x65, 0xe7, 0xc3, 0x34, 0x7c, 0x4c,
0xcc, 0xb9, 0xdb, 0xf5, 0xcb, 0x7c, 0xbb, 0x06, 0xf8, 0xaf, 0x42, 0x3b, 0xd3, 0x17, 0xb7, 0xe6,
0x5f, 0x9c, 0x23, 0xe2, 0xa6, 0xc7, 0xfa, 0xba, 0xc5, 0xf9, 0xd7, 0xe5, 0x88, 0xfe, 0x7d, 0x58,
0xd1, 0x07, 0x1c, 0x27, 0xa4, 0xf1, 0xb6, 0x25, 0x25, 0xfb, 0x3e, 0x89, 0xd2, 0x5f, 0x60, 0xce,
0x26, 0xff, 0xab, 0x00, 0x71, 0x3e, 0x57, 0xa5, 0x02, 0x72, 0xde, 0xe4, 0xb4, 0xbf, 0xc0, 0x0c,
0x74, 0xff, 0x2d, 0x58, 0x8d, 0xed, 0x19, 0x8b, 0xca, 0xa7, 0x73, 0xa6, 0x30, 0xfd, 0x05, 0xe6,
0x6e, 0xf2, 0xf7, 0x60, 0x55, 0xe8, 0x60, 0xa3, 0xce, 0x91, 0x79, 0xd6, 0x6c, 0xef, 0x8c, 0xb7,
0x78, 0x86, 0xb3, 0xc1, 0x7f, 0x07, 0xfc, 0x41, 0xc9, 0x25, 0x54, 0xfe, 0xd5, 0x0c, 0x95, 0x7d,
0xa6, 0xbf, 0xc0, 0x2a, 0xb6, 0xf9, 0x5f, 0x87, 0xee, 0xc4, 0x6c, 0xad, 0x7a, 0xdd, 0x52, 0x9b,
0x66, 0x0e, 0x30, 0xd0, 0x0e, 0x2c, 0x7c, 0xa3, 0xde, 0x68, 0x62, 0xbd, 0x51, 0xa4, 0xf7, 0x4f,
0x3c, 0xd8, 0x30, 0x3a, 0x52, 0xc3, 0xfc, 0x67, 0x8d, 0xb7, 0x8c, 0xc2, 0xf2, 0x7a, 0x71, 0xe4,
0x15, 0x6b, 0xbc, 0x55, 0x72, 0x36, 0xeb, 0xc3, 0xa1, 0xcc, 0x65, 0xaf, 0xbb, 0x03, 0xae, 0xf9,
0x9b, 0xf2, 0x7c, 0xf6, 0x8e, 0x35, 0x9f, 0x2f, 0x7c, 0xf2, 0xf3, 0x84, 0xbf, 0xe0, 0x47, 0x0d,
0x4c, 0x3e, 0xf6, 0x69, 0x54, 0x69, 0xd8, 0xa5, 0x82, 0x57, 0x2a, 0x15, 0xb6, 0x60, 0x89, 0x56,
0x52, 0x8c, 0x4a, 0xe8, 0x26, 0xc8, 0x7f, 0x11, 0x56, 0xb0, 0x3c, 0x38, 0x0a, 0xc7, 0x5c, 0x21,
0xc9, 0x0c, 0xea, 0x40, 0x8b, 0xda, 0xb1, 0x51, 0xdd, 0xfd, 0x35, 0xdd, 0x9e, 0xb9, 0xe8, 0xcb,
0x5a, 0xf3, 0xfa, 0xb2, 0xc5, 0x39, 0x7d, 0x59, 0xdb, 0xe9, 0xcb, 0xac, 0x7e, 0xb1, 0xe3, 0xf6,
0x8b, 0x46, 0xd7, 0x06, 0x57, 0x74, 0x6d, 0x4b, 0xd7, 0xe9, 0xda, 0x96, 0x2b, 0xba, 0xb6, 0x52,
0x4f, 0xdd, 0xbd, 0x66, 0x4f, 0xbd, 0x52, 0xdd, 0x53, 0x6f, 0xc3, 0x2a, 0x7d, 0xe9, 0xbc, 0x5f,
0xb4, 0x2f, 0xab, 0x12, 0xd3, 0x01, 0x07, 0xdf, 0x2f, 0xfb, 0x06, 0xe3, 0x83, 0x24, 0x1d, 0x7e,
0x51, 0xbe, 0x11, 0xfc, 0x1f, 0x2c, 0xe5, 0xaf, 0x8f, 0x2f, 0x28, 0xb3, 0x5d, 0xe4, 0x73, 0x03,
0xcc, 0x6c, 0xb4, 0x92, 0xd3, 0xce, 0x62, 0x74, 0x7b, 0x8c, 0x76, 0xe0, 0x4e, 0x08, 0xae, 0xf3,
0x15, 0x3a, 0xf8, 0x43, 0x0d, 0xd6, 0xac, 0xb9, 0xe9, 0xff, 0x96, 0x45, 0x77, 0x3e, 0xaf, 0x45,
0x77, 0x0c, 0x8b, 0xae, 0xd0, 0x7f, 0xa7, 0x5a, 0xff, 0x6f, 0xc3, 0x53, 0x96, 0xb0, 0x48, 0xee,
0x18, 0xd0, 0x5a, 0x44, 0xb7, 0x3b, 0x2d, 0x2a, 0x09, 0x96, 0x29, 0x3c, 0x19, 0x98, 0x5c, 0xfd,
0x21, 0x0f, 0xd5, 0xda, 0x2b, 0x4d, 0xbf, 0xac, 0x1f, 0x5e, 0xfe, 0x56, 0x83, 0x95, 0xa2, 0xa4,
0xc1, 0x3c, 0x81, 0xe6, 0x88, 0x8d, 0xb9, 0x36, 0x47, 0x7c, 0xa6, 0x90, 0x9f, 0xe8, 0x6a, 0x3d,
0x4b, 0x50, 0xc9, 0x51, 0x9e, 0xba, 0x49, 0x3d, 0x6d, 0x66, 0x40, 0x0c, 0xdb, 0x6b, 0x98, 0xb6,
0x67, 0x54, 0x61, 0x4d, 0xab, 0x0a, 0xf3, 0xa1, 0x81, 0xed, 0xbe, 0xd2, 0x0b, 0x3d, 0x53, 0xe7,
0x20, 0xcb, 0x39, 0xf9, 0xf5, 0x4b, 0xad, 0x90, 0x21, 0xc9, 0xf8, 0xe5, 0x84, 0x93, 0x3e, 0xba,
0xac, 0x00, 0x18, 0xea, 0x07, 0x4b, 0xfd, 0xf4, 0x77, 0x01, 0x9a, 0x0d, 0xca, 0x52, 0x69, 0xea,
0x26, 0x61, 0x94, 0xe0, 0xf4, 0xdd, 0x3c, 0x4c, 0x43, 0x85, 0xb5, 0x21, 0xc7, 0x11, 0x05, 0x04,
0x03, 0x95, 0x98, 0x0e, 0x06, 0x5c, 0x88, 0xde, 0xd3, 0xc4, 0xba, 0x5e, 0x06, 0x7f, 0xf7, 0xe4,
0xb4, 0x97, 0x86, 0x0f, 0xf7, 0x4e, 0x28, 0x52, 0xcc, 0x9c, 0x4b, 0x9a, 0x93, 0xc5, 0x9a, 0xf3,
0x5b, 0xcd, 0x55, 0x53, 0xc9, 0x17, 0x61, 0x65, 0x12, 0x62, 0x9e, 0x3a, 0x34, 0x67, 0x93, 0xcb,
0xcc, 0x81, 0x5e, 0x31, 0x97, 0x7f, 0x01, 0xea, 0xd9, 0x85, 0xfc, 0x9b, 0x65, 0x69, 0xd7, 0x57,
0x96, 0x77, 0x5c, 0xfc, 0x83, 0xc5, 0xf0, 0x75, 0xf0, 0x17, 0xf5, 0xcf, 0x81, 0xc9, 0x14, 0x35,
0x39, 0xd7, 0x65, 0xac, 0xf3, 0xc4, 0x8c, 0x75, 0x3e, 0x23, 0x63, 0x37, 0x0a, 0xc6, 0x3a, 0x92,
0x89, 0x44, 0xb6, 0x52, 0x7b, 0x23, 0x71, 0x14, 0x9d, 0xc5, 0x47, 0xd3, 0xb1, 0xfe, 0xa7, 0x6b,
0x16, 0x13, 0x79, 0x47, 0x56, 0x33, 0xff, 0xca, 0xf0, 0xa1, 0x31, 0x16, 0x67, 0xb2, 0x4d, 0x5b,
0x66, 0xf4, 0x8c, 0x98, 0xd8, 0xdf, 0x89, 0x5e, 0x83, 0x80, 0x72, 0x11, 0x7c, 0x17, 0x9e, 0xa9,
0xbc, 0xf0, 0xe8, 0x3c, 0x79, 0xfc, 0x04, 0x97, 0x76, 0xe4, 0xa5, 0xc1, 0x89, 0x1e, 0x3d, 0xeb,
0xe3, 0x49, 0x23, 0xaf, 0x41, 0x23, 0x2a, 0xda, 0xd8, 0x2d, 0x6b, 0xf2, 0x5c, 0x41, 0x07, 0x23,
0x6c, 0xd9, 0x03, 0x4d, 0xa2, 0x81, 0xbe, 0x56, 0xad, 0x02, 0x06, 0x2b, 0x0f, 0x78, 0x38, 0xe4,
0xe9, 0xd1, 0x65, 0x3c, 0xd0, 0x43, 0xaa, 0x83, 0x7b, 0x7a, 0x30, 0x72, 0x70, 0x0f, 0x3d, 0xe1,
0x24, 0x14, 0xfc, 0x60, 0x78, 0xa1, 0x02, 0xb9, 0x5e, 0xe2, 0x99, 0xc9, 0xe9, 0xa9, 0xe0, 0x3a,
0x78, 0xab, 0x55, 0xf0, 0x33, 0x0f, 0xba, 0x48, 0xcf, 0xc3, 0xdd, 0x87, 0x47, 0xd3, 0x93, 0x43,
0x71, 0xa6, 0xca, 0x49, 0x4f, 0x97, 0x93, 0xfe, 0x2b, 0xd0, 0x1e, 0xa8, 0xe1, 0xa9, 0xaa, 0xb8,
0x2b, 0x2c, 0x13, 0xdb, 0x05, 0x8d, 0xe5, 0xdf, 0x85, 0x45, 0x71, 0x19, 0x0f, 0x0e, 0xc5, 0x99,
0x33, 0xc2, 0xb2, 0xa9, 0xef, 0x2f, 0x30, 0x8d, 0x57, 0xd4, 0xac, 0x1f, 0xc0, 0xca, 0xfd, 0x91,
0x9c, 0x27, 0xa8, 0xb1, 0xfb, 0x26, 0xb4, 0x23, 0x21, 0x77, 0x12, 0x55, 0x6d, 0x96, 0xaf, 0xfd,
0x97, 0xa1, 0x35, 0x92, 0x6f, 0x6a, 0x73, 0x2e, 0x62, 0x0a, 0x29, 0x78, 0x1e, 0x3a, 0x7b, 0xfa,
0x53, 0x25, 0xda, 0xe4, 0x87, 0xfc, 0x52, 0x09, 0x0f, 0x1f, 0x77, 0xdf, 0x80, 0x4e, 0xfe, 0x23,
0xa4, 0x7f, 0x1b, 0x5a, 0x07, 0x02, 0x4f, 0xf0, 0xbb, 0x79, 0x0a, 0x78, 0xf4, 0x6e, 0x34, 0xda,
0x5c, 0x53, 0xcb, 0x03, 0xb1, 0x1f, 0x4e, 0xcf, 0xce, 0xb3, 0xf7, 0x27, 0xc1, 0xc2, 0x49, 0x8b,
0xfe, 0x7e, 0x7c, 0xf5, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0xa1, 0x27, 0x7c, 0x4a, 0x4a, 0x29,
0x00, 0x00,
}
// 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